@fingerskier/augment 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -201
- package/README.md +494 -467
- package/dist/cli.js +5 -4
- package/dist/cli.js.map +1 -1
- package/dist/daemon/lifetime-lock.js +12 -12
- package/dist/db.js +107 -107
- package/dist/hooks.d.ts +8 -5
- package/dist/hooks.js +49 -20
- package/dist/hooks.js.map +1 -1
- package/dist/install.d.ts +14 -2
- package/dist/install.js +189 -1
- package/dist/install.js.map +1 -1
- package/dist/mcp/apps.js +480 -480
- package/dist/pi/extension.js +20 -20
- package/docs/FEATURES.md +771 -758
- package/docs/verify-memory-flow.md +132 -132
- package/integrations/claude/skills/augment-context/SKILL.md +74 -74
- package/integrations/claude/skills/augment-decoction/SKILL.md +36 -36
- package/integrations/claude/skills/augment-dream/SKILL.md +34 -34
- package/integrations/claude/skills/augment-dream/agents/openai.yaml +4 -4
- package/integrations/claude/skills/augment-sleep/SKILL.md +26 -26
- package/integrations/codex/SKILL.md +107 -107
- package/integrations/examples/claude-mcp-config.json +17 -17
- package/integrations/examples/codex-mcp-config.json +17 -17
- package/integrations/examples/grok-mcp-config.toml +18 -0
- package/integrations/grok/AGENTS.md +61 -0
- package/integrations/pi/skills/augment-decoction/SKILL.md +37 -37
- package/integrations/pi/skills/augment-dream/SKILL.md +36 -36
- package/package.json +85 -85
package/dist/cli.js
CHANGED
|
@@ -85,11 +85,11 @@ export function helpText() {
|
|
|
85
85
|
" augment recall \"<task text>\" [--project ORG/REPO] [--cwd PATH]",
|
|
86
86
|
" [--limit N] [--max-chars N] [--min-score F]",
|
|
87
87
|
"",
|
|
88
|
-
"HOOK (wired into Claude Code / Codex by `install`; reads hook JSON on stdin)",
|
|
88
|
+
"HOOK (wired into Claude Code / Codex / Grok Build by `install`; reads hook JSON on stdin)",
|
|
89
89
|
" augment hook session-start | user-prompt-submit | pre-tool-use | stop",
|
|
90
90
|
"",
|
|
91
91
|
"INSTALL",
|
|
92
|
-
" augment install <codex|claude|all> [options]",
|
|
92
|
+
" augment install <codex|claude|grok|all> [options]",
|
|
93
93
|
"",
|
|
94
94
|
" Options:",
|
|
95
95
|
" --scope user|repo Install for the user (home) or the current repo. Default: user.",
|
|
@@ -100,6 +100,7 @@ export function helpText() {
|
|
|
100
100
|
"",
|
|
101
101
|
"RUN FROM npm (outside this repo)",
|
|
102
102
|
" npx -y @fingerskier/augment install claude --scope user --memory-root \"C:\\Users\\you\\Dropbox\\augment-memories\"",
|
|
103
|
+
" npx -y @fingerskier/augment install grok --scope user --memory-root \"C:\\Users\\you\\Dropbox\\augment-memories\"",
|
|
103
104
|
" npm exec --yes --package @fingerskier/augment -- augment install codex --scope repo",
|
|
104
105
|
" npm exec --yes --package @fingerskier/augment -- augment install all --scope user --dry-run",
|
|
105
106
|
"",
|
|
@@ -183,8 +184,8 @@ async function readStdin() {
|
|
|
183
184
|
}
|
|
184
185
|
export function parseInstallArgs(args) {
|
|
185
186
|
const target = args[0];
|
|
186
|
-
if (!target || !["codex", "claude", "all"].includes(target)) {
|
|
187
|
-
throw new Error("Usage: augment install <codex|claude|all> [--scope user|repo] [--memory-root PATH] [--dry-run] " +
|
|
187
|
+
if (!target || !["codex", "claude", "grok", "all"].includes(target)) {
|
|
188
|
+
throw new Error("Usage: augment install <codex|claude|grok|all> [--scope user|repo] [--memory-root PATH] [--dry-run] " +
|
|
188
189
|
"[--no-plugin] [--force]");
|
|
189
190
|
}
|
|
190
191
|
let scope = "user";
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAyC,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,MAAM,IAAI,aAAa,EAAsB,MAAM,aAAa,CAAC;AAe1E,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc,EAAE,OAAmB,EAAE;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAEpC,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAClH,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,IAAI,6BAA6B,CAAC;QAC7E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,GAAG,QAAQ,YAAY,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;QACzC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QACxF,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACnC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,QAAQ;IACtB,OAAO;QACL,8CAA8C;QAC9C,EAAE;QACF,OAAO;QACP,+BAA+B;QAC/B,EAAE;QACF,UAAU;QACV,yEAAyE;QACzE,uCAAuC;QACvC,+DAA+D;QAC/D,uFAAuF;QACvF,gFAAgF;QAChF,mFAAmF;QACnF,uDAAuD;QACvD,EAAE;QACF,WAAW;QACX,qFAAqF;QACrF,8FAA8F;QAC9F,EAAE;QACF,QAAQ;QACR,oEAAoE;QACpE,2EAA2E;QAC3E,EAAE;QACF,2FAA2F;QAC3F,yEAAyE;QACzE,EAAE;QACF,SAAS;QACT,qDAAqD;QACrD,EAAE;QACF,YAAY;QACZ,2FAA2F;QAC3F,mFAAmF;QACnF,0EAA0E;QAC1E,4FAA4F;QAC5F,uFAAuF;QACvF,EAAE;QACF,kCAAkC;QAClC,uHAAuH;QACvH,qHAAqH;QACrH,uFAAuF;QACvF,+FAA+F;QAC/F,EAAE;QACF,6DAA6D;QAC7D,2EAA2E;QAC3E,EAAE;QACF,0DAA0D;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAc;IACxC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,6BAA6B;IAC1C,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAW;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;IAC3F,6FAA6F;IAC7F,MAAM,WAAW,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/E,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,IAAc;IACrC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,OAAO,GAAkB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAE7C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,uBAAuB,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACjC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACjC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAyB,EAAE,OAAe;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAyB,EAAE,IAAY;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,oBAAoB,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAQ7C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAA8B,CAAC;IACpD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,sGAAsG;YACpG,yBAAyB,CAC5B,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,GAAiB,MAAM,CAAC;IACjC,IAAI,UAA8B,CAAC;IACnC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,KAAK,CAA6B,CAAC;YACxD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YACD,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,UAAU,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACjC,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM;QACN,KAAK;QACL,UAAU;QACV,MAAM;QACN,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -33,21 +33,21 @@ export async function acquireDaemonLifetimeLock(stateDir) {
|
|
|
33
33
|
let transaction;
|
|
34
34
|
try {
|
|
35
35
|
await client.execute("PRAGMA busy_timeout = 0");
|
|
36
|
-
await client.execute(`
|
|
37
|
-
CREATE TABLE IF NOT EXISTS lifetime_lock (
|
|
38
|
-
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
39
|
-
pid INTEGER NOT NULL,
|
|
40
|
-
state_dir TEXT NOT NULL,
|
|
41
|
-
acquired_at TEXT NOT NULL
|
|
42
|
-
)
|
|
36
|
+
await client.execute(`
|
|
37
|
+
CREATE TABLE IF NOT EXISTS lifetime_lock (
|
|
38
|
+
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
39
|
+
pid INTEGER NOT NULL,
|
|
40
|
+
state_dir TEXT NOT NULL,
|
|
41
|
+
acquired_at TEXT NOT NULL
|
|
42
|
+
)
|
|
43
43
|
`);
|
|
44
44
|
transaction = await client.transaction("write");
|
|
45
45
|
await transaction.execute({
|
|
46
|
-
sql: `INSERT INTO lifetime_lock (id, pid, state_dir, acquired_at)
|
|
47
|
-
VALUES (1, ?, ?, ?)
|
|
48
|
-
ON CONFLICT(id) DO UPDATE SET
|
|
49
|
-
pid = excluded.pid,
|
|
50
|
-
state_dir = excluded.state_dir,
|
|
46
|
+
sql: `INSERT INTO lifetime_lock (id, pid, state_dir, acquired_at)
|
|
47
|
+
VALUES (1, ?, ?, ?)
|
|
48
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
49
|
+
pid = excluded.pid,
|
|
50
|
+
state_dir = excluded.state_dir,
|
|
51
51
|
acquired_at = excluded.acquired_at`,
|
|
52
52
|
args: [process.pid, canonicalStateDir, new Date().toISOString()],
|
|
53
53
|
});
|
package/dist/db.js
CHANGED
|
@@ -31,51 +31,51 @@ export class AugmentDatabase {
|
|
|
31
31
|
await this.execute(`PRAGMA busy_timeout = 5000`);
|
|
32
32
|
await this.execute(`PRAGMA foreign_keys = ON`);
|
|
33
33
|
await this.batch([
|
|
34
|
-
`CREATE TABLE IF NOT EXISTS projects (
|
|
35
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
36
|
-
name TEXT NOT NULL UNIQUE,
|
|
37
|
-
org TEXT NOT NULL,
|
|
38
|
-
repo TEXT NOT NULL,
|
|
39
|
-
source TEXT NOT NULL,
|
|
40
|
-
created_at TEXT NOT NULL,
|
|
41
|
-
updated_at TEXT NOT NULL
|
|
34
|
+
`CREATE TABLE IF NOT EXISTS projects (
|
|
35
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
36
|
+
name TEXT NOT NULL UNIQUE,
|
|
37
|
+
org TEXT NOT NULL,
|
|
38
|
+
repo TEXT NOT NULL,
|
|
39
|
+
source TEXT NOT NULL,
|
|
40
|
+
created_at TEXT NOT NULL,
|
|
41
|
+
updated_at TEXT NOT NULL
|
|
42
42
|
)`,
|
|
43
|
-
`CREATE TABLE IF NOT EXISTS memories (
|
|
44
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
45
|
-
project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
46
|
-
kind TEXT NOT NULL,
|
|
47
|
-
name TEXT NOT NULL,
|
|
48
|
-
relative_path TEXT NOT NULL UNIQUE,
|
|
49
|
-
content_hash TEXT NOT NULL,
|
|
50
|
-
frontmatter_hash TEXT NOT NULL,
|
|
51
|
-
size INTEGER NOT NULL,
|
|
52
|
-
density REAL NOT NULL,
|
|
53
|
-
mtime REAL NOT NULL,
|
|
54
|
-
tags_json TEXT NOT NULL,
|
|
55
|
-
links_json TEXT NOT NULL,
|
|
56
|
-
body TEXT NOT NULL,
|
|
57
|
-
created_at TEXT NOT NULL,
|
|
58
|
-
updated_at TEXT NOT NULL,
|
|
59
|
-
archived INTEGER NOT NULL DEFAULT 0,
|
|
60
|
-
consolidated_into TEXT,
|
|
61
|
-
derived_from_json TEXT
|
|
43
|
+
`CREATE TABLE IF NOT EXISTS memories (
|
|
44
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
45
|
+
project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
46
|
+
kind TEXT NOT NULL,
|
|
47
|
+
name TEXT NOT NULL,
|
|
48
|
+
relative_path TEXT NOT NULL UNIQUE,
|
|
49
|
+
content_hash TEXT NOT NULL,
|
|
50
|
+
frontmatter_hash TEXT NOT NULL,
|
|
51
|
+
size INTEGER NOT NULL,
|
|
52
|
+
density REAL NOT NULL,
|
|
53
|
+
mtime REAL NOT NULL,
|
|
54
|
+
tags_json TEXT NOT NULL,
|
|
55
|
+
links_json TEXT NOT NULL,
|
|
56
|
+
body TEXT NOT NULL,
|
|
57
|
+
created_at TEXT NOT NULL,
|
|
58
|
+
updated_at TEXT NOT NULL,
|
|
59
|
+
archived INTEGER NOT NULL DEFAULT 0,
|
|
60
|
+
consolidated_into TEXT,
|
|
61
|
+
derived_from_json TEXT
|
|
62
62
|
)`,
|
|
63
|
-
`CREATE TABLE IF NOT EXISTS memory_embeddings (
|
|
64
|
-
memory_id INTEGER PRIMARY KEY REFERENCES memories(id) ON DELETE CASCADE,
|
|
65
|
-
model_id TEXT NOT NULL,
|
|
66
|
-
model_version TEXT NOT NULL,
|
|
67
|
-
dimensions INTEGER NOT NULL,
|
|
68
|
-
vector_json TEXT NOT NULL,
|
|
69
|
-
embedded_hash TEXT NOT NULL,
|
|
70
|
-
embedded_at TEXT NOT NULL
|
|
63
|
+
`CREATE TABLE IF NOT EXISTS memory_embeddings (
|
|
64
|
+
memory_id INTEGER PRIMARY KEY REFERENCES memories(id) ON DELETE CASCADE,
|
|
65
|
+
model_id TEXT NOT NULL,
|
|
66
|
+
model_version TEXT NOT NULL,
|
|
67
|
+
dimensions INTEGER NOT NULL,
|
|
68
|
+
vector_json TEXT NOT NULL,
|
|
69
|
+
embedded_hash TEXT NOT NULL,
|
|
70
|
+
embedded_at TEXT NOT NULL
|
|
71
71
|
)`,
|
|
72
|
-
`CREATE TABLE IF NOT EXISTS links (
|
|
73
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
74
|
-
from_memory_id INTEGER NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
|
|
75
|
-
to_memory_id INTEGER NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
|
|
76
|
-
type TEXT NOT NULL,
|
|
77
|
-
created_at TEXT NOT NULL,
|
|
78
|
-
UNIQUE(from_memory_id, to_memory_id, type)
|
|
72
|
+
`CREATE TABLE IF NOT EXISTS links (
|
|
73
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
74
|
+
from_memory_id INTEGER NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
|
|
75
|
+
to_memory_id INTEGER NOT NULL REFERENCES memories(id) ON DELETE CASCADE,
|
|
76
|
+
type TEXT NOT NULL,
|
|
77
|
+
created_at TEXT NOT NULL,
|
|
78
|
+
UNIQUE(from_memory_id, to_memory_id, type)
|
|
79
79
|
)`,
|
|
80
80
|
`CREATE INDEX IF NOT EXISTS idx_memories_project_id ON memories(project_id)`,
|
|
81
81
|
`CREATE INDEX IF NOT EXISTS idx_memories_kind ON memories(kind)`,
|
|
@@ -118,12 +118,12 @@ export class AugmentDatabase {
|
|
|
118
118
|
async upsertProject(name, source = "git") {
|
|
119
119
|
const parts = projectParts(name);
|
|
120
120
|
const now = new Date().toISOString();
|
|
121
|
-
await this.execute(`INSERT INTO projects (name, org, repo, source, created_at, updated_at)
|
|
122
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
123
|
-
ON CONFLICT(name) DO UPDATE SET
|
|
124
|
-
org = excluded.org,
|
|
125
|
-
repo = excluded.repo,
|
|
126
|
-
source = excluded.source,
|
|
121
|
+
await this.execute(`INSERT INTO projects (name, org, repo, source, created_at, updated_at)
|
|
122
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
123
|
+
ON CONFLICT(name) DO UPDATE SET
|
|
124
|
+
org = excluded.org,
|
|
125
|
+
repo = excluded.repo,
|
|
126
|
+
source = excluded.source,
|
|
127
127
|
updated_at = excluded.updated_at`, [name, parts.org, parts.repo, source, now, now]);
|
|
128
128
|
const project = await this.getProjectByName(name);
|
|
129
129
|
if (!project) {
|
|
@@ -148,27 +148,27 @@ export class AugmentDatabase {
|
|
|
148
148
|
async upsertMemory(memory) {
|
|
149
149
|
const project = await this.upsertProject(memory.frontmatter.project);
|
|
150
150
|
const now = new Date().toISOString();
|
|
151
|
-
await this.execute(`INSERT INTO memories (
|
|
152
|
-
project_id, kind, name, relative_path, content_hash, frontmatter_hash,
|
|
153
|
-
size, density, mtime, tags_json, links_json, body, created_at, updated_at,
|
|
154
|
-
archived, consolidated_into, derived_from_json
|
|
155
|
-
)
|
|
156
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
157
|
-
ON CONFLICT(relative_path) DO UPDATE SET
|
|
158
|
-
project_id = excluded.project_id,
|
|
159
|
-
kind = excluded.kind,
|
|
160
|
-
name = excluded.name,
|
|
161
|
-
content_hash = excluded.content_hash,
|
|
162
|
-
frontmatter_hash = excluded.frontmatter_hash,
|
|
163
|
-
size = excluded.size,
|
|
164
|
-
density = excluded.density,
|
|
165
|
-
mtime = excluded.mtime,
|
|
166
|
-
tags_json = excluded.tags_json,
|
|
167
|
-
links_json = excluded.links_json,
|
|
168
|
-
body = excluded.body,
|
|
169
|
-
updated_at = excluded.updated_at,
|
|
170
|
-
archived = excluded.archived,
|
|
171
|
-
consolidated_into = excluded.consolidated_into,
|
|
151
|
+
await this.execute(`INSERT INTO memories (
|
|
152
|
+
project_id, kind, name, relative_path, content_hash, frontmatter_hash,
|
|
153
|
+
size, density, mtime, tags_json, links_json, body, created_at, updated_at,
|
|
154
|
+
archived, consolidated_into, derived_from_json
|
|
155
|
+
)
|
|
156
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
157
|
+
ON CONFLICT(relative_path) DO UPDATE SET
|
|
158
|
+
project_id = excluded.project_id,
|
|
159
|
+
kind = excluded.kind,
|
|
160
|
+
name = excluded.name,
|
|
161
|
+
content_hash = excluded.content_hash,
|
|
162
|
+
frontmatter_hash = excluded.frontmatter_hash,
|
|
163
|
+
size = excluded.size,
|
|
164
|
+
density = excluded.density,
|
|
165
|
+
mtime = excluded.mtime,
|
|
166
|
+
tags_json = excluded.tags_json,
|
|
167
|
+
links_json = excluded.links_json,
|
|
168
|
+
body = excluded.body,
|
|
169
|
+
updated_at = excluded.updated_at,
|
|
170
|
+
archived = excluded.archived,
|
|
171
|
+
consolidated_into = excluded.consolidated_into,
|
|
172
172
|
derived_from_json = excluded.derived_from_json`, [
|
|
173
173
|
project.id,
|
|
174
174
|
memory.frontmatter.kind,
|
|
@@ -230,7 +230,7 @@ export class AugmentDatabase {
|
|
|
230
230
|
continue;
|
|
231
231
|
}
|
|
232
232
|
statements.push({
|
|
233
|
-
sql: `INSERT OR IGNORE INTO links (from_memory_id, to_memory_id, type, created_at)
|
|
233
|
+
sql: `INSERT OR IGNORE INTO links (from_memory_id, to_memory_id, type, created_at)
|
|
234
234
|
VALUES (?, ?, ?, ?)`,
|
|
235
235
|
args: [memory.id, target.id, link.type, now],
|
|
236
236
|
});
|
|
@@ -257,36 +257,36 @@ export class AugmentDatabase {
|
|
|
257
257
|
return result.rows.map((row) => memoryFromRow(row));
|
|
258
258
|
}
|
|
259
259
|
async listLinks(memoryId) {
|
|
260
|
-
const result = await this.execute(`SELECT
|
|
261
|
-
links.*,
|
|
262
|
-
from_memory.relative_path AS from_relative_path,
|
|
263
|
-
to_memory.relative_path AS to_relative_path
|
|
264
|
-
FROM links
|
|
265
|
-
JOIN memories AS from_memory ON from_memory.id = links.from_memory_id
|
|
266
|
-
JOIN memories AS to_memory ON to_memory.id = links.to_memory_id
|
|
267
|
-
WHERE links.from_memory_id = ? OR links.to_memory_id = ?
|
|
260
|
+
const result = await this.execute(`SELECT
|
|
261
|
+
links.*,
|
|
262
|
+
from_memory.relative_path AS from_relative_path,
|
|
263
|
+
to_memory.relative_path AS to_relative_path
|
|
264
|
+
FROM links
|
|
265
|
+
JOIN memories AS from_memory ON from_memory.id = links.from_memory_id
|
|
266
|
+
JOIN memories AS to_memory ON to_memory.id = links.to_memory_id
|
|
267
|
+
WHERE links.from_memory_id = ? OR links.to_memory_id = ?
|
|
268
268
|
ORDER BY links.id`, [memoryId, memoryId]);
|
|
269
269
|
return result.rows.map((row) => linkFromRow(row));
|
|
270
270
|
}
|
|
271
271
|
async getLinkById(id) {
|
|
272
|
-
const result = await this.execute(`SELECT
|
|
273
|
-
links.*,
|
|
274
|
-
from_memory.relative_path AS from_relative_path,
|
|
275
|
-
to_memory.relative_path AS to_relative_path
|
|
276
|
-
FROM links
|
|
277
|
-
JOIN memories AS from_memory ON from_memory.id = links.from_memory_id
|
|
278
|
-
JOIN memories AS to_memory ON to_memory.id = links.to_memory_id
|
|
272
|
+
const result = await this.execute(`SELECT
|
|
273
|
+
links.*,
|
|
274
|
+
from_memory.relative_path AS from_relative_path,
|
|
275
|
+
to_memory.relative_path AS to_relative_path
|
|
276
|
+
FROM links
|
|
277
|
+
JOIN memories AS from_memory ON from_memory.id = links.from_memory_id
|
|
278
|
+
JOIN memories AS to_memory ON to_memory.id = links.to_memory_id
|
|
279
279
|
WHERE links.id = ?`, [id]);
|
|
280
280
|
return result.rows[0] ? linkFromRow(result.rows[0]) : undefined;
|
|
281
281
|
}
|
|
282
282
|
async getAllLinks() {
|
|
283
|
-
const result = await this.execute(`SELECT
|
|
284
|
-
links.*,
|
|
285
|
-
from_memory.relative_path AS from_relative_path,
|
|
286
|
-
to_memory.relative_path AS to_relative_path
|
|
287
|
-
FROM links
|
|
288
|
-
JOIN memories AS from_memory ON from_memory.id = links.from_memory_id
|
|
289
|
-
JOIN memories AS to_memory ON to_memory.id = links.to_memory_id
|
|
283
|
+
const result = await this.execute(`SELECT
|
|
284
|
+
links.*,
|
|
285
|
+
from_memory.relative_path AS from_relative_path,
|
|
286
|
+
to_memory.relative_path AS to_relative_path
|
|
287
|
+
FROM links
|
|
288
|
+
JOIN memories AS from_memory ON from_memory.id = links.from_memory_id
|
|
289
|
+
JOIN memories AS to_memory ON to_memory.id = links.to_memory_id
|
|
290
290
|
ORDER BY links.id`);
|
|
291
291
|
return result.rows.map((row) => linkFromRow(row));
|
|
292
292
|
}
|
|
@@ -312,16 +312,16 @@ export class AugmentDatabase {
|
|
|
312
312
|
if (!record) {
|
|
313
313
|
throw new Error(`Cannot store embedding for missing memory`);
|
|
314
314
|
}
|
|
315
|
-
await this.execute(`INSERT INTO memory_embeddings (
|
|
316
|
-
memory_id, model_id, model_version, dimensions, vector_json, embedded_hash, embedded_at
|
|
317
|
-
)
|
|
318
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
319
|
-
ON CONFLICT(memory_id) DO UPDATE SET
|
|
320
|
-
model_id = excluded.model_id,
|
|
321
|
-
model_version = excluded.model_version,
|
|
322
|
-
dimensions = excluded.dimensions,
|
|
323
|
-
vector_json = excluded.vector_json,
|
|
324
|
-
embedded_hash = excluded.embedded_hash,
|
|
315
|
+
await this.execute(`INSERT INTO memory_embeddings (
|
|
316
|
+
memory_id, model_id, model_version, dimensions, vector_json, embedded_hash, embedded_at
|
|
317
|
+
)
|
|
318
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
319
|
+
ON CONFLICT(memory_id) DO UPDATE SET
|
|
320
|
+
model_id = excluded.model_id,
|
|
321
|
+
model_version = excluded.model_version,
|
|
322
|
+
dimensions = excluded.dimensions,
|
|
323
|
+
vector_json = excluded.vector_json,
|
|
324
|
+
embedded_hash = excluded.embedded_hash,
|
|
325
325
|
embedded_at = excluded.embedded_at`, [
|
|
326
326
|
record.id,
|
|
327
327
|
provider.modelId,
|
|
@@ -405,11 +405,11 @@ export class AugmentDatabase {
|
|
|
405
405
|
}
|
|
406
406
|
}
|
|
407
407
|
function memorySelectSql(suffix) {
|
|
408
|
-
return `SELECT
|
|
409
|
-
memories.*,
|
|
410
|
-
projects.name AS project_name
|
|
411
|
-
FROM memories
|
|
412
|
-
JOIN projects ON projects.id = memories.project_id
|
|
408
|
+
return `SELECT
|
|
409
|
+
memories.*,
|
|
410
|
+
projects.name AS project_name
|
|
411
|
+
FROM memories
|
|
412
|
+
JOIN projects ON projects.id = memories.project_id
|
|
413
413
|
${suffix}`;
|
|
414
414
|
}
|
|
415
415
|
function projectFromRow(row) {
|
package/dist/hooks.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { type RecallOptions } from "./recall.js";
|
|
2
2
|
/**
|
|
3
|
-
* Host-agnostic hook handlers. Claude Code
|
|
4
|
-
* lifecycle-hook
|
|
5
|
-
* envelopes
|
|
6
|
-
*
|
|
7
|
-
* Codex
|
|
3
|
+
* Host-agnostic hook handlers. Claude Code, Codex CLI, and Grok Build share the
|
|
4
|
+
* same lifecycle-hook event names; Codex and Grok largely copied Claude's
|
|
5
|
+
* envelopes. Field-name differences are normalized below:
|
|
6
|
+
* - prompt: Claude `user_input`, Codex `prompt` (Grok may send either)
|
|
7
|
+
* - tool fields: Claude/Codex snake_case (`tool_name`, `tool_input`, `session_id`);
|
|
8
|
+
* Grok camelCase (`toolName`, `toolInput`, `sessionId`, `workspaceRoot`)
|
|
9
|
+
* - tool names: Grok's real names (`run_terminal_command`, `search_replace`, …)
|
|
10
|
+
* plus Claude aliases already accepted by Grok matchers
|
|
8
11
|
*
|
|
9
12
|
* Every handler is **fail-open**: a hook runs on every prompt and every turn
|
|
10
13
|
* boundary, so any failure must degrade to "do nothing" (empty stdout, exit 0)
|
package/dist/hooks.js
CHANGED
|
@@ -7,11 +7,14 @@ import { connectOrStartDaemon } from "./daemon/client.js";
|
|
|
7
7
|
import { inferProjectName } from "./memory/project.js";
|
|
8
8
|
import { recall as defaultRecall } from "./recall.js";
|
|
9
9
|
/**
|
|
10
|
-
* Host-agnostic hook handlers. Claude Code
|
|
11
|
-
* lifecycle-hook
|
|
12
|
-
* envelopes
|
|
13
|
-
*
|
|
14
|
-
* Codex
|
|
10
|
+
* Host-agnostic hook handlers. Claude Code, Codex CLI, and Grok Build share the
|
|
11
|
+
* same lifecycle-hook event names; Codex and Grok largely copied Claude's
|
|
12
|
+
* envelopes. Field-name differences are normalized below:
|
|
13
|
+
* - prompt: Claude `user_input`, Codex `prompt` (Grok may send either)
|
|
14
|
+
* - tool fields: Claude/Codex snake_case (`tool_name`, `tool_input`, `session_id`);
|
|
15
|
+
* Grok camelCase (`toolName`, `toolInput`, `sessionId`, `workspaceRoot`)
|
|
16
|
+
* - tool names: Grok's real names (`run_terminal_command`, `search_replace`, …)
|
|
17
|
+
* plus Claude aliases already accepted by Grok matchers
|
|
15
18
|
*
|
|
16
19
|
* Every handler is **fail-open**: a hook runs on every prompt and every turn
|
|
17
20
|
* boundary, so any failure must degrade to "do nothing" (empty stdout, exit 0)
|
|
@@ -33,29 +36,55 @@ function asString(value) {
|
|
|
33
36
|
function asRecord(value) {
|
|
34
37
|
return value && typeof value === "object" ? value : {};
|
|
35
38
|
}
|
|
36
|
-
/** Claude uses `user_input`; Codex uses `prompt`. Accept either. */
|
|
39
|
+
/** Claude uses `user_input`; Codex uses `prompt`. Accept either (and common aliases). */
|
|
37
40
|
function readPrompt(payload) {
|
|
38
|
-
return (asString(payload.user_input) ??
|
|
41
|
+
return (asString(payload.user_input) ??
|
|
42
|
+
asString(payload.prompt) ??
|
|
43
|
+
asString(payload.promptText) ??
|
|
44
|
+
asString(payload.message) ??
|
|
45
|
+
"").trim();
|
|
46
|
+
}
|
|
47
|
+
/** Claude/Codex snake_case or Grok camelCase. */
|
|
48
|
+
function readToolName(payload) {
|
|
49
|
+
return asString(payload.tool_name) ?? asString(payload.toolName) ?? "";
|
|
50
|
+
}
|
|
51
|
+
/** Claude/Codex snake_case or Grok camelCase. */
|
|
52
|
+
function readToolInput(payload) {
|
|
53
|
+
return payload.tool_input ?? payload.toolInput;
|
|
54
|
+
}
|
|
55
|
+
/** Prefer `cwd`, then Grok's `workspaceRoot`. */
|
|
56
|
+
function readCwd(payload) {
|
|
57
|
+
return asString(payload.cwd) ?? asString(payload.workspaceRoot);
|
|
58
|
+
}
|
|
59
|
+
/** Claude/Codex `session_id` or Grok `sessionId`. */
|
|
60
|
+
function readSessionId(payload) {
|
|
61
|
+
return asString(payload.session_id) ?? asString(payload.sessionId) ?? "";
|
|
39
62
|
}
|
|
40
63
|
/**
|
|
41
64
|
* Derives the recall query for a PreToolUse hook from the tool name + its input — the
|
|
42
|
-
* highest-signal text naming what the tool is about to touch: the command for Bash/
|
|
43
|
-
* the file path for Edit/Write/Read.
|
|
44
|
-
*
|
|
45
|
-
*
|
|
65
|
+
* highest-signal text naming what the tool is about to touch: the command for Bash/shell,
|
|
66
|
+
* the file path for Edit/Write/Read. Accepts Claude names and Grok's real tool names.
|
|
67
|
+
* Returns "" for tools (or empty inputs) we don't key on, which short-circuits the handler
|
|
68
|
+
* before it pays for a search on the hot path.
|
|
46
69
|
*/
|
|
47
70
|
function deriveToolQuery(toolName, rawInput) {
|
|
48
71
|
const input = asRecord(rawInput);
|
|
49
72
|
switch (toolName) {
|
|
50
73
|
case "Bash":
|
|
51
74
|
case "apply_patch":
|
|
75
|
+
case "run_terminal_command":
|
|
52
76
|
return (asString(input.command) ?? "").trim();
|
|
53
77
|
case "Edit":
|
|
54
78
|
case "Write":
|
|
55
79
|
case "Read":
|
|
56
|
-
|
|
80
|
+
case "search_replace":
|
|
81
|
+
case "read_file":
|
|
82
|
+
return (asString(input.file_path) ?? asString(input.target_file) ?? "").trim();
|
|
57
83
|
default:
|
|
58
|
-
return (asString(input.command) ??
|
|
84
|
+
return (asString(input.command) ??
|
|
85
|
+
asString(input.file_path) ??
|
|
86
|
+
asString(input.target_file) ??
|
|
87
|
+
"").trim();
|
|
59
88
|
}
|
|
60
89
|
}
|
|
61
90
|
/**
|
|
@@ -76,7 +105,7 @@ export async function handleUserPromptSubmit(payload, deps) {
|
|
|
76
105
|
return OK;
|
|
77
106
|
}
|
|
78
107
|
const recall = deps.recall ?? defaultRecall;
|
|
79
|
-
const text = await recall({ query, cwd:
|
|
108
|
+
const text = await recall({ query, cwd: readCwd(payload), surface: "user-prompt-submit" });
|
|
80
109
|
if (!text) {
|
|
81
110
|
return OK;
|
|
82
111
|
}
|
|
@@ -112,7 +141,7 @@ const PRE_TOOL_RECALL_MIN_SCORE = 0.45;
|
|
|
112
141
|
* tool still runs), so this is purely additive over the guaranteed UserPromptSubmit path.
|
|
113
142
|
*/
|
|
114
143
|
export async function handlePreToolUse(payload, deps) {
|
|
115
|
-
const query = deriveToolQuery(
|
|
144
|
+
const query = deriveToolQuery(readToolName(payload), readToolInput(payload));
|
|
116
145
|
if (!query) {
|
|
117
146
|
// Nothing actionable to recall against (or a tool we don't key on) — stay off the hot path.
|
|
118
147
|
return OK;
|
|
@@ -121,7 +150,7 @@ export async function handlePreToolUse(payload, deps) {
|
|
|
121
150
|
// re-injects the same memories, so suppress repeats before paying for the search. Without a
|
|
122
151
|
// session_id there is no safe turn key — a global marker would suppress across sessions — so
|
|
123
152
|
// skip the guard. A broken guard also fails open: losing dedupe must not lose the injection.
|
|
124
|
-
const sessionId =
|
|
153
|
+
const sessionId = readSessionId(payload);
|
|
125
154
|
if (sessionId) {
|
|
126
155
|
try {
|
|
127
156
|
const markerSeen = deps.markerSeen ?? defaultMarkerSeen;
|
|
@@ -137,7 +166,7 @@ export async function handlePreToolUse(payload, deps) {
|
|
|
137
166
|
const recall = deps.recall ?? defaultRecall;
|
|
138
167
|
const text = await recall({
|
|
139
168
|
query,
|
|
140
|
-
cwd:
|
|
169
|
+
cwd: readCwd(payload),
|
|
141
170
|
limit: PRE_TOOL_RECALL_LIMIT,
|
|
142
171
|
maxChars: PRE_TOOL_RECALL_MAX_CHARS,
|
|
143
172
|
minScore: PRE_TOOL_RECALL_MIN_SCORE,
|
|
@@ -159,7 +188,7 @@ export async function handlePreToolUse(payload, deps) {
|
|
|
159
188
|
export async function handleSessionStart(payload, deps) {
|
|
160
189
|
const initProject = deps.initProject ?? defaultInitProject;
|
|
161
190
|
try {
|
|
162
|
-
await initProject(
|
|
191
|
+
await initProject(readCwd(payload));
|
|
163
192
|
}
|
|
164
193
|
catch {
|
|
165
194
|
// Daemon may be down; warming the project is best-effort. Stay silent.
|
|
@@ -168,8 +197,8 @@ export async function handleSessionStart(payload, deps) {
|
|
|
168
197
|
}
|
|
169
198
|
export async function handleStop(payload, deps) {
|
|
170
199
|
try {
|
|
171
|
-
const sessionId =
|
|
172
|
-
const promptId = asString(payload.prompt_id) ?? "";
|
|
200
|
+
const sessionId = readSessionId(payload);
|
|
201
|
+
const promptId = asString(payload.prompt_id) ?? asString(payload.promptId) ?? "";
|
|
173
202
|
const markerSeen = deps.markerSeen ?? defaultMarkerSeen;
|
|
174
203
|
const alreadyBlocked = await markerSeen(`${sessionId}__${promptId}`);
|
|
175
204
|
if (alreadyBlocked) {
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,MAAM,IAAI,aAAa,EAAsB,MAAM,aAAa,CAAC;AAE1E
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/install.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type InstallTarget = "codex" | "claude" | "all";
|
|
1
|
+
export type InstallTarget = "codex" | "claude" | "grok" | "all";
|
|
2
2
|
export type InstallScope = "user" | "repo";
|
|
3
3
|
export interface ClaudeCommandResult {
|
|
4
4
|
/** Whether the `claude` executable was found on PATH. */
|
|
@@ -6,7 +6,7 @@ export interface ClaudeCommandResult {
|
|
|
6
6
|
/** Whether the command exited successfully (exit code 0). */
|
|
7
7
|
ok: boolean;
|
|
8
8
|
}
|
|
9
|
-
/** Runs a `claude`
|
|
9
|
+
/** Runs a host CLI command (`claude`, `npm`, …). Injected so installs stay side-effect-free in tests. */
|
|
10
10
|
export type ClaudeCommandRunner = (command: string, args: string[]) => Promise<ClaudeCommandResult>;
|
|
11
11
|
export interface InstallOptions {
|
|
12
12
|
target: InstallTarget;
|
|
@@ -29,9 +29,21 @@ export interface InstallPlan {
|
|
|
29
29
|
files: string[];
|
|
30
30
|
}
|
|
31
31
|
export declare function installIntegration(options: InstallOptions): Promise<InstallPlan>;
|
|
32
|
+
/**
|
|
33
|
+
* Idempotent merge of the augment MCP server into a Grok `config.toml`. Removes any existing
|
|
34
|
+
* `[mcp_servers.augment]` / nested tables first, then appends a fresh section so re-installs
|
|
35
|
+
* update command/args/env without duplicating keys or clobbering unrelated config.
|
|
36
|
+
*/
|
|
37
|
+
export declare function upsertGrokMcpToml(existing: string | undefined, server: McpServerConfig): string;
|
|
32
38
|
/**
|
|
33
39
|
* Real `claude` CLI runner used by the command line. Detects availability with which/where so
|
|
34
40
|
* "not found" is distinguishable from "ran but failed", then runs through a shell on Windows so
|
|
35
41
|
* `.cmd`/`.ps1` shims resolve. Output is suppressed; only availability + exit status matter.
|
|
36
42
|
*/
|
|
37
43
|
export declare const defaultClaudeRunner: ClaudeCommandRunner;
|
|
44
|
+
interface McpServerConfig {
|
|
45
|
+
command: string;
|
|
46
|
+
args: string[];
|
|
47
|
+
env: Record<string, string>;
|
|
48
|
+
}
|
|
49
|
+
export {};
|