diff --git a/plugin/scripts/notification.mjs b/plugin/scripts/notification.mjs index 3967158c9..33cc55959 100755 --- a/plugin/scripts/notification.mjs +++ b/plugin/scripts/notification.mjs @@ -1,7 +1,14 @@ #!/usr/bin/env node import { execSync } from "node:child_process"; -import { basename } from "node:path"; - +import { basename, join } from "node:path"; +import dotenv from "dotenv"; +import { homedir } from "node:os"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/_project.ts function resolveProject(cwd) { const explicit = process.env["AGENTMEMORY_PROJECT_NAME"]; @@ -21,7 +28,6 @@ function resolveProject(cwd) { } catch {} return basename(dir); } - //#endregion //#region src/hooks/notification.ts function isSdkChildContext(payload) { @@ -70,7 +76,7 @@ async function main() { setTimeout(() => process.exit(0), 500).unref(); } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=notification.mjs.map \ No newline at end of file diff --git a/plugin/scripts/post-commit.mjs b/plugin/scripts/post-commit.mjs index 8552cd614..256b575c3 100755 --- a/plugin/scripts/post-commit.mjs +++ b/plugin/scripts/post-commit.mjs @@ -1,7 +1,15 @@ #!/usr/bin/env node +import dotenv from "dotenv"; +import { homedir } from "node:os"; +import { join } from "node:path"; import { execFile } from "node:child_process"; import { promisify } from "node:util"; - +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/post-commit.ts const exec = promisify(execFile); function isSdkChildContext(payload) { @@ -96,7 +104,7 @@ async function main() { } catch {} } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=post-commit.mjs.map \ No newline at end of file diff --git a/plugin/scripts/post-tool-failure.mjs b/plugin/scripts/post-tool-failure.mjs index 6fdad8d9d..5be4a3c5d 100755 --- a/plugin/scripts/post-tool-failure.mjs +++ b/plugin/scripts/post-tool-failure.mjs @@ -1,7 +1,14 @@ #!/usr/bin/env node import { execSync } from "node:child_process"; -import { basename } from "node:path"; - +import { basename, join } from "node:path"; +import dotenv from "dotenv"; +import { homedir } from "node:os"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/_project.ts function resolveProject(cwd) { const explicit = process.env["AGENTMEMORY_PROJECT_NAME"]; @@ -21,7 +28,6 @@ function resolveProject(cwd) { } catch {} return basename(dir); } - //#endregion //#region src/hooks/post-tool-failure.ts function isSdkChildContext(payload) { @@ -71,7 +77,7 @@ async function main() { setTimeout(() => process.exit(0), 500).unref(); } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=post-tool-failure.mjs.map \ No newline at end of file diff --git a/plugin/scripts/post-tool-use.mjs b/plugin/scripts/post-tool-use.mjs index b4aef9c94..4ca76af3d 100755 --- a/plugin/scripts/post-tool-use.mjs +++ b/plugin/scripts/post-tool-use.mjs @@ -1,7 +1,14 @@ #!/usr/bin/env node import { execSync } from "node:child_process"; -import { basename } from "node:path"; - +import { basename, join } from "node:path"; +import dotenv from "dotenv"; +import { homedir } from "node:os"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/_project.ts function resolveProject(cwd) { const explicit = process.env["AGENTMEMORY_PROJECT_NAME"]; @@ -21,7 +28,6 @@ function resolveProject(cwd) { } catch {} return basename(dir); } - //#endregion //#region src/hooks/post-tool-use.ts function isSdkChildContext(payload) { @@ -116,7 +122,7 @@ function truncate(value, max) { return value; } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=post-tool-use.mjs.map \ No newline at end of file diff --git a/plugin/scripts/pre-compact.mjs b/plugin/scripts/pre-compact.mjs index 0afdcb0b4..2d8a524ee 100755 --- a/plugin/scripts/pre-compact.mjs +++ b/plugin/scripts/pre-compact.mjs @@ -1,7 +1,14 @@ #!/usr/bin/env node import { execSync } from "node:child_process"; -import { basename } from "node:path"; - +import { basename, join } from "node:path"; +import dotenv from "dotenv"; +import { homedir } from "node:os"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/_project.ts function resolveProject(cwd) { const explicit = process.env["AGENTMEMORY_PROJECT_NAME"]; @@ -21,7 +28,6 @@ function resolveProject(cwd) { } catch {} return basename(dir); } - //#endregion //#region src/hooks/pre-compact.ts function isSdkChildContext(payload) { @@ -74,7 +80,7 @@ async function main() { } catch {} } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=pre-compact.mjs.map \ No newline at end of file diff --git a/plugin/scripts/pre-tool-use.mjs b/plugin/scripts/pre-tool-use.mjs index d70c166ed..19e210580 100755 --- a/plugin/scripts/pre-tool-use.mjs +++ b/plugin/scripts/pre-tool-use.mjs @@ -1,4 +1,13 @@ #!/usr/bin/env node +import dotenv from "dotenv"; +import { homedir } from "node:os"; +import { join } from "node:path"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/pre-tool-use.ts function isSdkChildContext(payload) { if (process.env["AGENTMEMORY_SDK_CHILD"] === "1") return true; @@ -78,7 +87,7 @@ async function main() { } catch {} } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=pre-tool-use.mjs.map \ No newline at end of file diff --git a/plugin/scripts/prompt-submit.mjs b/plugin/scripts/prompt-submit.mjs index 1a4147e6a..56874ea92 100755 --- a/plugin/scripts/prompt-submit.mjs +++ b/plugin/scripts/prompt-submit.mjs @@ -1,7 +1,14 @@ #!/usr/bin/env node import { execSync } from "node:child_process"; -import { basename } from "node:path"; - +import { basename, join } from "node:path"; +import dotenv from "dotenv"; +import { homedir } from "node:os"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/_project.ts function resolveProject(cwd) { const explicit = process.env["AGENTMEMORY_PROJECT_NAME"]; @@ -21,7 +28,6 @@ function resolveProject(cwd) { } catch {} return basename(dir); } - //#endregion //#region src/hooks/prompt-submit.ts function isSdkChildContext(payload) { @@ -63,7 +69,7 @@ async function main() { setTimeout(() => process.exit(0), 500).unref(); } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=prompt-submit.mjs.map \ No newline at end of file diff --git a/plugin/scripts/session-end.mjs b/plugin/scripts/session-end.mjs index 019149c30..0295ef8aa 100755 --- a/plugin/scripts/session-end.mjs +++ b/plugin/scripts/session-end.mjs @@ -1,4 +1,13 @@ #!/usr/bin/env node +import dotenv from "dotenv"; +import { homedir } from "node:os"; +import { join } from "node:path"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/session-end.ts function isSdkChildContext(payload) { if (process.env["AGENTMEMORY_SDK_CHILD"] === "1") return true; @@ -54,7 +63,7 @@ async function main() { setTimeout(() => process.exit(0), 1500).unref(); } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=session-end.mjs.map \ No newline at end of file diff --git a/plugin/scripts/session-start.mjs b/plugin/scripts/session-start.mjs index 51b70eb4c..dbd59a435 100755 --- a/plugin/scripts/session-start.mjs +++ b/plugin/scripts/session-start.mjs @@ -1,7 +1,14 @@ #!/usr/bin/env node import { execSync } from "node:child_process"; -import { basename } from "node:path"; - +import { basename, join } from "node:path"; +import dotenv from "dotenv"; +import { homedir } from "node:os"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/_project.ts function resolveProject(cwd) { const explicit = process.env["AGENTMEMORY_PROJECT_NAME"]; @@ -21,7 +28,6 @@ function resolveProject(cwd) { } catch {} return basename(dir); } - //#endregion //#region src/hooks/session-start.ts function isSdkChildContext(payload) { @@ -81,7 +87,7 @@ async function main() { } catch {} } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=session-start.mjs.map \ No newline at end of file diff --git a/plugin/scripts/stop.mjs b/plugin/scripts/stop.mjs index 03d30c64f..abd10f78e 100755 --- a/plugin/scripts/stop.mjs +++ b/plugin/scripts/stop.mjs @@ -1,4 +1,13 @@ #!/usr/bin/env node +import dotenv from "dotenv"; +import { homedir } from "node:os"; +import { join } from "node:path"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/stop.ts function isSdkChildContext(payload) { if (process.env["AGENTMEMORY_SDK_CHILD"] === "1") return true; @@ -38,7 +47,7 @@ async function main() { setTimeout(() => process.exit(0), 1500).unref(); } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=stop.mjs.map \ No newline at end of file diff --git a/plugin/scripts/subagent-start.mjs b/plugin/scripts/subagent-start.mjs index 2359a1c62..eeb0c6916 100755 --- a/plugin/scripts/subagent-start.mjs +++ b/plugin/scripts/subagent-start.mjs @@ -1,7 +1,14 @@ #!/usr/bin/env node import { execSync } from "node:child_process"; -import { basename } from "node:path"; - +import { basename, join } from "node:path"; +import dotenv from "dotenv"; +import { homedir } from "node:os"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/_project.ts function resolveProject(cwd) { const explicit = process.env["AGENTMEMORY_PROJECT_NAME"]; @@ -21,7 +28,6 @@ function resolveProject(cwd) { } catch {} return basename(dir); } - //#endregion //#region src/hooks/subagent-start.ts function isSdkChildContext(payload) { @@ -69,7 +75,7 @@ async function main() { setTimeout(() => process.exit(0), 500).unref(); } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=subagent-start.mjs.map \ No newline at end of file diff --git a/plugin/scripts/subagent-stop.mjs b/plugin/scripts/subagent-stop.mjs index 2ba1b002c..9ecaf3444 100755 --- a/plugin/scripts/subagent-stop.mjs +++ b/plugin/scripts/subagent-stop.mjs @@ -1,7 +1,14 @@ #!/usr/bin/env node import { execSync } from "node:child_process"; -import { basename } from "node:path"; - +import { basename, join } from "node:path"; +import dotenv from "dotenv"; +import { homedir } from "node:os"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/_project.ts function resolveProject(cwd) { const explicit = process.env["AGENTMEMORY_PROJECT_NAME"]; @@ -21,7 +28,6 @@ function resolveProject(cwd) { } catch {} return basename(dir); } - //#endregion //#region src/hooks/subagent-stop.ts function isSdkChildContext(payload) { @@ -70,7 +76,7 @@ async function main() { setTimeout(() => process.exit(0), 500).unref(); } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=subagent-stop.mjs.map \ No newline at end of file diff --git a/plugin/scripts/task-completed.mjs b/plugin/scripts/task-completed.mjs index 478f0688e..c32019f4e 100755 --- a/plugin/scripts/task-completed.mjs +++ b/plugin/scripts/task-completed.mjs @@ -1,7 +1,14 @@ #!/usr/bin/env node import { execSync } from "node:child_process"; -import { basename } from "node:path"; - +import { basename, join } from "node:path"; +import dotenv from "dotenv"; +import { homedir } from "node:os"; +//#region src/hooks/_env.ts +dotenv.config({ + path: join(homedir(), ".agentmemory", ".env"), + quiet: true +}); +//#endregion //#region src/hooks/_project.ts function resolveProject(cwd) { const explicit = process.env["AGENTMEMORY_PROJECT_NAME"]; @@ -21,7 +28,6 @@ function resolveProject(cwd) { } catch {} return basename(dir); } - //#endregion //#region src/hooks/task-completed.ts function isSdkChildContext(payload) { @@ -69,7 +75,7 @@ async function main() { setTimeout(() => process.exit(0), 500).unref(); } main(); - //#endregion -export { }; +export {}; + //# sourceMappingURL=task-completed.mjs.map \ No newline at end of file diff --git a/src/hooks/_env.ts b/src/hooks/_env.ts new file mode 100644 index 000000000..d66f91154 --- /dev/null +++ b/src/hooks/_env.ts @@ -0,0 +1,8 @@ +import dotenv from "dotenv"; +import { homedir } from "node:os"; +import { join } from "node:path"; + +// Load ~/.agentmemory/.env into process.env before any hook reads env vars. +// Keys already set in the environment (e.g. via Claude Code settings.json or +// the shell) take priority — dotenv.config() does not override by default. +dotenv.config({ path: join(homedir(), ".agentmemory", ".env"), quiet: true }); diff --git a/src/hooks/_project.ts b/src/hooks/_project.ts index 35364ea3b..66f1c46d5 100644 --- a/src/hooks/_project.ts +++ b/src/hooks/_project.ts @@ -1,5 +1,6 @@ import { execSync } from "node:child_process"; import { basename } from "node:path"; +import "./_env.js"; // Resolution order: AGENTMEMORY_PROJECT_NAME env → git toplevel basename → cwd basename. export function resolveProject(cwd?: string): string { diff --git a/src/hooks/post-commit.ts b/src/hooks/post-commit.ts index 30c54a9ac..a7cdf6d12 100644 --- a/src/hooks/post-commit.ts +++ b/src/hooks/post-commit.ts @@ -1,4 +1,5 @@ #!/usr/bin/env node +import "./_env.js"; import { execFile } from "node:child_process"; import { promisify } from "node:util"; diff --git a/src/hooks/pre-tool-use.ts b/src/hooks/pre-tool-use.ts index 277d7799b..6aff4a7dc 100644 --- a/src/hooks/pre-tool-use.ts +++ b/src/hooks/pre-tool-use.ts @@ -1,4 +1,5 @@ #!/usr/bin/env node +import "./_env.js"; function isSdkChildContext(payload: unknown): boolean { if (process.env["AGENTMEMORY_SDK_CHILD"] === "1") return true; diff --git a/src/hooks/session-end.ts b/src/hooks/session-end.ts index 6a9fc429c..76cfb4166 100644 --- a/src/hooks/session-end.ts +++ b/src/hooks/session-end.ts @@ -1,4 +1,5 @@ #!/usr/bin/env node +import "./_env.js"; function isSdkChildContext(payload: unknown): boolean { if (process.env["AGENTMEMORY_SDK_CHILD"] === "1") return true; diff --git a/src/hooks/stop.ts b/src/hooks/stop.ts index 4103796e0..d4d2d2a1e 100644 --- a/src/hooks/stop.ts +++ b/src/hooks/stop.ts @@ -1,4 +1,5 @@ #!/usr/bin/env node +import "./_env.js"; // Inlined — see src/hooks/sdk-guard.ts for canonical version. Kept local // per-hook so tsdown does not emit a shared hashed chunk that would churn