@gramatr/mcp 0.12.33 → 0.13.9
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/dist/bin/hook-dispatcher.d.ts.map +1 -1
- package/dist/bin/hook-dispatcher.js +6 -1
- package/dist/bin/hook-dispatcher.js.map +1 -1
- package/dist/config-runtime.d.ts +18 -3
- package/dist/config-runtime.d.ts.map +1 -1
- package/dist/config-runtime.js +33 -5
- package/dist/config-runtime.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +38 -2
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/project-id-cleanup.d.ts +37 -0
- package/dist/daemon/project-id-cleanup.d.ts.map +1 -0
- package/dist/daemon/project-id-cleanup.js +113 -0
- package/dist/daemon/project-id-cleanup.js.map +1 -0
- package/dist/hooks/agent-gate.d.ts.map +1 -1
- package/dist/hooks/agent-gate.js +16 -6
- package/dist/hooks/agent-gate.js.map +1 -1
- package/dist/hooks/compact.d.ts +2 -0
- package/dist/hooks/compact.d.ts.map +1 -0
- package/dist/hooks/compact.js +27 -0
- package/dist/hooks/compact.js.map +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/lib/compact-writer.d.ts +0 -2
- package/dist/hooks/lib/compact-writer.d.ts.map +1 -1
- package/dist/hooks/lib/compact-writer.js +9 -16
- package/dist/hooks/lib/compact-writer.js.map +1 -1
- package/dist/hooks/lib/hook-state.d.ts +15 -0
- package/dist/hooks/lib/hook-state.d.ts.map +1 -1
- package/dist/hooks/lib/hook-state.js +37 -0
- package/dist/hooks/lib/hook-state.js.map +1 -1
- package/dist/hooks/lib/intelligence.d.ts +6 -0
- package/dist/hooks/lib/intelligence.d.ts.map +1 -1
- package/dist/hooks/lib/intelligence.js +106 -25
- package/dist/hooks/lib/intelligence.js.map +1 -1
- package/dist/hooks/session-start.d.ts.map +1 -1
- package/dist/hooks/session-start.js +15 -19
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/hooks/stop.d.ts.map +1 -1
- package/dist/hooks/stop.js +21 -0
- package/dist/hooks/stop.js.map +1 -1
- package/dist/hooks/user-prompt-submit.d.ts.map +1 -1
- package/dist/hooks/user-prompt-submit.js +75 -28
- package/dist/hooks/user-prompt-submit.js.map +1 -1
- package/dist/types/generated/rest-api-types.d.ts +275 -0
- package/dist/types/generated/rest-api-types.d.ts.map +1 -0
- package/dist/types/generated/rest-api-types.js +48 -0
- package/dist/types/generated/rest-api-types.js.map +1 -0
- package/package.json +5 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-dispatcher.d.ts","sourceRoot":"","sources":["../../src/bin/hook-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"hook-dispatcher.d.ts","sourceRoot":"","sources":["../../src/bin/hook-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2GvF"}
|
|
@@ -34,9 +34,14 @@ export async function runHook(name, args) {
|
|
|
34
34
|
}
|
|
35
35
|
return 0;
|
|
36
36
|
}
|
|
37
|
+
// compact is a CLI utility, not an event hook — handle before registry check.
|
|
38
|
+
if (name === 'compact') {
|
|
39
|
+
const mod = await import('../hooks/compact.js');
|
|
40
|
+
return mod.runCompactHook(args);
|
|
41
|
+
}
|
|
37
42
|
if (!isKnownHook(name)) {
|
|
38
43
|
process.stderr.write(`[gramatr-mcp] hook: unknown hook: ${name}\n`);
|
|
39
|
-
process.stderr.write(` Known hooks: ${HOOK_NAMES.join(', ')}\n`);
|
|
44
|
+
process.stderr.write(` Known hooks: ${HOOK_NAMES.join(', ')}, compact\n`);
|
|
40
45
|
return 2;
|
|
41
46
|
}
|
|
42
47
|
let runner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-dispatcher.js","sourceRoot":"","sources":["../../src/bin/hook-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAkC,MAAM,mBAAmB,CAAC;AAE/E,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAQ,UAAgC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAwB,EAAE,IAAc;IACpE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1D,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,IAAI,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"hook-dispatcher.js","sourceRoot":"","sources":["../../src/bin/hook-dispatcher.ts"],"names":[],"mappings":"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"}
|
package/dist/config-runtime.d.ts
CHANGED
|
@@ -69,11 +69,26 @@ export declare function getGramatrTimeoutFromEnv(defaultMs: number): number;
|
|
|
69
69
|
* Returns false only when explicitly disabled with `GRAMATR_ENRICH=0`.
|
|
70
70
|
*/
|
|
71
71
|
export declare function isGramatrEnrichEnabledFromEnv(): boolean;
|
|
72
|
+
export interface CompactConfig {
|
|
73
|
+
/** How many turns between compact checks (default 15). */
|
|
74
|
+
every_turns: number;
|
|
75
|
+
/**
|
|
76
|
+
* When true: compact fires silently in the background — no user-facing injection.
|
|
77
|
+
* When false (default): compact does NOT fire automatically; user receives
|
|
78
|
+
* escalating reminder hints until they act.
|
|
79
|
+
*/
|
|
80
|
+
auto: boolean;
|
|
81
|
+
/** When auto=false, how often to re-remind after the first threshold (default 5). */
|
|
82
|
+
remind_every: number;
|
|
83
|
+
}
|
|
72
84
|
/**
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
85
|
+
* Full compact config. Priority:
|
|
86
|
+
* 1. ~/.gramatr/settings.json auto_compact.*
|
|
87
|
+
* 2. GRAMATR_COMPACT_TURNS env var (every_turns only)
|
|
88
|
+
* 3. Defaults: every_turns=15, auto=false, remind_every=5
|
|
76
89
|
*/
|
|
90
|
+
export declare function getCompactConfig(): CompactConfig;
|
|
91
|
+
/** Back-compat shim — callers that only need the turn threshold. */
|
|
77
92
|
export declare function getCompactTurnThresholdFromEnv(): number;
|
|
78
93
|
/**
|
|
79
94
|
* Override path for the daemon Unix socket.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-runtime.d.ts","sourceRoot":"","sources":["../src/config-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"config-runtime.d.ts","sourceRoot":"","sources":["../src/config-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAMtD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAGpD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAGpD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAMnC;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,OAAO,CAEvD;AAED,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAmBhD;AAED,oEAAoE;AACpE,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,GAAG,IAAI,CAG7D;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,GAAG,IAAI,CAG9D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAMrD;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,GAAG,SAAS,CAIhE;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,SAAS,SAAQ,GAAG,MAAM,CAKxE"}
|
package/dist/config-runtime.js
CHANGED
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
* `USERPROFILE`, matching the cross-platform contract the legacy
|
|
23
23
|
* client hooks assumed.
|
|
24
24
|
*/
|
|
25
|
+
import { readFileSync } from 'node:fs';
|
|
26
|
+
import { join } from 'node:path';
|
|
25
27
|
/**
|
|
26
28
|
* Gramatr auth token resolved from environment variables.
|
|
27
29
|
*
|
|
@@ -100,13 +102,39 @@ export function isGramatrEnrichEnabledFromEnv() {
|
|
|
100
102
|
return process.env.GRAMATR_ENRICH !== '0';
|
|
101
103
|
}
|
|
102
104
|
/**
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
105
|
+
* Full compact config. Priority:
|
|
106
|
+
* 1. ~/.gramatr/settings.json auto_compact.*
|
|
107
|
+
* 2. GRAMATR_COMPACT_TURNS env var (every_turns only)
|
|
108
|
+
* 3. Defaults: every_turns=15, auto=false, remind_every=5
|
|
106
109
|
*/
|
|
110
|
+
export function getCompactConfig() {
|
|
111
|
+
let every_turns = 15;
|
|
112
|
+
let auto = false;
|
|
113
|
+
let remind_every = 5;
|
|
114
|
+
try {
|
|
115
|
+
const home = getHomeDir();
|
|
116
|
+
const gmtrDir = getGramatrDirFromEnv() || join(home, '.gramatr');
|
|
117
|
+
const raw = readFileSync(join(gmtrDir, 'settings.json'), 'utf8');
|
|
118
|
+
const cfg = JSON.parse(raw);
|
|
119
|
+
const ac = cfg?.auto_compact;
|
|
120
|
+
if (typeof ac?.every_turns === 'number' && ac.every_turns > 0)
|
|
121
|
+
every_turns = ac.every_turns;
|
|
122
|
+
if (typeof ac?.auto === 'boolean')
|
|
123
|
+
auto = ac.auto;
|
|
124
|
+
if (typeof ac?.remind_every === 'number' && ac.remind_every > 0)
|
|
125
|
+
remind_every = ac.remind_every;
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// settings.json absent or unparseable — fall through
|
|
129
|
+
}
|
|
130
|
+
const env = Number.parseInt(process.env.GRAMATR_COMPACT_TURNS ?? '', 10);
|
|
131
|
+
if (Number.isFinite(env) && env > 0)
|
|
132
|
+
every_turns = env;
|
|
133
|
+
return { every_turns, auto, remind_every };
|
|
134
|
+
}
|
|
135
|
+
/** Back-compat shim — callers that only need the turn threshold. */
|
|
107
136
|
export function getCompactTurnThresholdFromEnv() {
|
|
108
|
-
|
|
109
|
-
return Number.isFinite(v) && v > 0 ? v : 15;
|
|
137
|
+
return getCompactConfig().every_turns;
|
|
110
138
|
}
|
|
111
139
|
/**
|
|
112
140
|
* Override path for the daemon Unix socket.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-runtime.js","sourceRoot":"","sources":["../src/config-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACpC,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACpC,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC5C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC;IAC9D,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,GAAG,CAAC;AAC5C,CAAC;
|
|
1
|
+
{"version":3,"file":"config-runtime.js","sourceRoot":"","sources":["../src/config-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsDH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmGjD"}
|
package/dist/daemon/index.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* daemon.active sentinel for cross-process signaling.
|
|
10
10
|
* Sprint 3: projectCache.load() / .save() for in-process project identity.
|
|
11
11
|
*/
|
|
12
|
-
import { unlinkSync, writeFileSync } from 'node:fs';
|
|
12
|
+
import { chmodSync, existsSync, mkdirSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
13
13
|
import { join } from 'node:path';
|
|
14
14
|
import { createDaemonServer, dispatchRpcRequest } from './server.js';
|
|
15
15
|
import { startHttpFallback } from './http-server.js';
|
|
@@ -20,6 +20,8 @@ import { closeDb } from '../hooks/lib/hook-state.js';
|
|
|
20
20
|
import { getGramatrDirFromEnv, getGramatrStateDatabaseFromEnv, getHomeDir } from '../config-runtime.js';
|
|
21
21
|
import { getStateDatabasePath } from './db-path.js';
|
|
22
22
|
import { projectCache, getProjectCachePath } from './project-cache.js';
|
|
23
|
+
import { runProjectIdCleanup } from './project-id-cleanup.js';
|
|
24
|
+
import { callRemoteTool } from '../proxy/remote-client.js';
|
|
23
25
|
function getGramatrDir() {
|
|
24
26
|
return getGramatrDirFromEnv() ?? join(getHomeDir(), '.gramatr');
|
|
25
27
|
}
|
|
@@ -48,6 +50,14 @@ function removeSentinel() {
|
|
|
48
50
|
let _httpServer = null;
|
|
49
51
|
export async function startDaemon() {
|
|
50
52
|
const sockPath = getDaemonSocketPath();
|
|
53
|
+
// Ensure ~/.gramatr/ is 0700 — world-traversable dir exposes the socket path (#1453).
|
|
54
|
+
const gramatrDir = join(sockPath, '..');
|
|
55
|
+
if (!existsSync(gramatrDir))
|
|
56
|
+
mkdirSync(gramatrDir, { recursive: true, mode: 0o700 });
|
|
57
|
+
try {
|
|
58
|
+
chmodSync(gramatrDir, 0o700);
|
|
59
|
+
}
|
|
60
|
+
catch { /* non-fatal on read-only fs */ }
|
|
51
61
|
// Generate shared auth token once — used by both the Unix socket and HTTP fallback.
|
|
52
62
|
// Write to disk immediately so it's available to hook processes as soon as the
|
|
53
63
|
// lock file is removed (before the HTTP fallback has started).
|
|
@@ -57,7 +67,13 @@ export async function startDaemon() {
|
|
|
57
67
|
const server = createDaemonServer(authToken);
|
|
58
68
|
// Start listening on the Unix socket
|
|
59
69
|
await new Promise((resolve, reject) => {
|
|
60
|
-
server.listen(sockPath, () =>
|
|
70
|
+
server.listen(sockPath, () => {
|
|
71
|
+
try {
|
|
72
|
+
chmodSync(sockPath, 0o600);
|
|
73
|
+
}
|
|
74
|
+
catch { /* non-fatal */ }
|
|
75
|
+
resolve();
|
|
76
|
+
});
|
|
61
77
|
server.once('error', reject);
|
|
62
78
|
});
|
|
63
79
|
writePidFile();
|
|
@@ -88,6 +104,26 @@ export async function startDaemon() {
|
|
|
88
104
|
}
|
|
89
105
|
// Write daemon.active sentinel so hook processes know the daemon owns the DB.
|
|
90
106
|
writeSentinel();
|
|
107
|
+
// Fire-and-forget: resolve slug project_id values in state.db tables.
|
|
108
|
+
// Non-blocking — cleanup runs in background, failures are logged not thrown.
|
|
109
|
+
if (getGramatrStateDatabaseFromEnv() !== ':memory:') {
|
|
110
|
+
const db = sqliteOwner.getDb();
|
|
111
|
+
if (db) {
|
|
112
|
+
runProjectIdCleanup(db, callRemoteTool).then((r) => {
|
|
113
|
+
const total = r.session_context.updated + r.session_log.updated + r.orchestration_tasks.updated;
|
|
114
|
+
if (total > 0) {
|
|
115
|
+
process.stderr.write(`[gramatr-daemon] project_id cleanup: ${total} slugs resolved to UUIDs` +
|
|
116
|
+
` (session_context=${r.session_context.updated}` +
|
|
117
|
+
`, session_log=${r.session_log.updated}` +
|
|
118
|
+
`, orchestration_tasks=${r.orchestration_tasks.updated})\n`);
|
|
119
|
+
}
|
|
120
|
+
if (r.skipped_slugs.length > 0) {
|
|
121
|
+
process.stderr.write(`[gramatr-daemon] project_id cleanup: ${r.skipped_slugs.length} slugs unresolvable — ` +
|
|
122
|
+
`${r.skipped_slugs.slice(0, 5).join(', ')}${r.skipped_slugs.length > 5 ? '…' : ''}\n`);
|
|
123
|
+
}
|
|
124
|
+
}).catch(() => { });
|
|
125
|
+
}
|
|
126
|
+
}
|
|
91
127
|
// Graceful shutdown when the last session releases (+ 30s grace)
|
|
92
128
|
sessionRegistry.setOnEmpty(() => {
|
|
93
129
|
gracefulShutdown(server, 'idle');
|
package/dist/daemon/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* project-id-cleanup.ts — Resolve slug-format project_id values in state.db.
|
|
3
|
+
*
|
|
4
|
+
* Issue #1504 — the PostgreSQL entities table is clean (project-id-cleanup.ts
|
|
5
|
+
* in @gramatr/persistence handles that). This module handles the client-side
|
|
6
|
+
* SQLite store (state.db): session_context, session_log, and orchestration
|
|
7
|
+
* tables that were written before or during the UUID migration and may still
|
|
8
|
+
* carry slug-format project_id values.
|
|
9
|
+
*
|
|
10
|
+
* Runs once at daemon startup, fire-and-forget. Safe to interrupt.
|
|
11
|
+
* Idempotent — UUID rows are skipped; only slugs are processed.
|
|
12
|
+
*/
|
|
13
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
14
|
+
interface CleanupResult {
|
|
15
|
+
session_context: {
|
|
16
|
+
checked: number;
|
|
17
|
+
updated: number;
|
|
18
|
+
};
|
|
19
|
+
session_log: {
|
|
20
|
+
checked: number;
|
|
21
|
+
updated: number;
|
|
22
|
+
};
|
|
23
|
+
orchestration_tasks: {
|
|
24
|
+
checked: number;
|
|
25
|
+
updated: number;
|
|
26
|
+
};
|
|
27
|
+
skipped_slugs: string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Scan state.db tables for slug project_id values and resolve them to UUIDs.
|
|
31
|
+
*
|
|
32
|
+
* Uses the daemon's owned DB connection (passed in) to avoid competing with
|
|
33
|
+
* the hook-state.ts connection.
|
|
34
|
+
*/
|
|
35
|
+
export declare function runProjectIdCleanup(db: DatabaseSync, callRemote: (name: string, args: Record<string, unknown>) => Promise<unknown>): Promise<CleanupResult>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=project-id-cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-id-cleanup.d.ts","sourceRoot":"","sources":["../../src/daemon/project-id-cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA+BhD,UAAU,aAAa;IACrB,eAAe,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,WAAW,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,mBAAmB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,YAAY,EAChB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAC5E,OAAO,CAAC,aAAa,CAAC,CA4ExB"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* project-id-cleanup.ts — Resolve slug-format project_id values in state.db.
|
|
3
|
+
*
|
|
4
|
+
* Issue #1504 — the PostgreSQL entities table is clean (project-id-cleanup.ts
|
|
5
|
+
* in @gramatr/persistence handles that). This module handles the client-side
|
|
6
|
+
* SQLite store (state.db): session_context, session_log, and orchestration
|
|
7
|
+
* tables that were written before or during the UUID migration and may still
|
|
8
|
+
* carry slug-format project_id values.
|
|
9
|
+
*
|
|
10
|
+
* Runs once at daemon startup, fire-and-forget. Safe to interrupt.
|
|
11
|
+
* Idempotent — UUID rows are skipped; only slugs are processed.
|
|
12
|
+
*/
|
|
13
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
14
|
+
function isSlug(value) {
|
|
15
|
+
return typeof value === 'string' && value.length > 0 && !UUID_RE.test(value);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolve a project slug to a UUID via the remote gramatr server.
|
|
19
|
+
* Returns the UUID string, or null if resolution fails.
|
|
20
|
+
*/
|
|
21
|
+
async function resolveSlug(slug, callRemote) {
|
|
22
|
+
try {
|
|
23
|
+
const result = await callRemote('gramatr_resolve_project', { action: 'resolve', slug });
|
|
24
|
+
const uuid = result?.project_id;
|
|
25
|
+
return uuid && UUID_RE.test(uuid) ? uuid : null;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Scan state.db tables for slug project_id values and resolve them to UUIDs.
|
|
33
|
+
*
|
|
34
|
+
* Uses the daemon's owned DB connection (passed in) to avoid competing with
|
|
35
|
+
* the hook-state.ts connection.
|
|
36
|
+
*/
|
|
37
|
+
export async function runProjectIdCleanup(db, callRemote) {
|
|
38
|
+
const result = {
|
|
39
|
+
session_context: { checked: 0, updated: 0 },
|
|
40
|
+
session_log: { checked: 0, updated: 0 },
|
|
41
|
+
orchestration_tasks: { checked: 0, updated: 0 },
|
|
42
|
+
skipped_slugs: [],
|
|
43
|
+
};
|
|
44
|
+
// Build a cache so we only resolve each slug once
|
|
45
|
+
const resolved = new Map();
|
|
46
|
+
async function getUuid(slug) {
|
|
47
|
+
if (resolved.has(slug))
|
|
48
|
+
return resolved.get(slug);
|
|
49
|
+
const uuid = await resolveSlug(slug, callRemote);
|
|
50
|
+
resolved.set(slug, uuid);
|
|
51
|
+
if (!uuid)
|
|
52
|
+
result.skipped_slugs.push(slug);
|
|
53
|
+
return uuid;
|
|
54
|
+
}
|
|
55
|
+
// ── session_context ──────────────────────────────────────────────────────
|
|
56
|
+
try {
|
|
57
|
+
const rows = db
|
|
58
|
+
.prepare('SELECT session_id, project_id FROM session_context WHERE project_id IS NOT NULL')
|
|
59
|
+
.all();
|
|
60
|
+
for (const row of rows) {
|
|
61
|
+
result.session_context.checked++;
|
|
62
|
+
if (!isSlug(row.project_id))
|
|
63
|
+
continue;
|
|
64
|
+
const uuid = await getUuid(row.project_id);
|
|
65
|
+
if (!uuid)
|
|
66
|
+
continue;
|
|
67
|
+
db.prepare('UPDATE session_context SET project_id = ? WHERE session_id = ?')
|
|
68
|
+
.run(uuid, row.session_id);
|
|
69
|
+
result.session_context.updated++;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// Non-fatal — table may not exist on very old installs
|
|
74
|
+
}
|
|
75
|
+
// ── session_log ──────────────────────────────────────────────────────────
|
|
76
|
+
try {
|
|
77
|
+
const rows = db
|
|
78
|
+
.prepare('SELECT id, project_id FROM session_log WHERE project_id IS NOT NULL')
|
|
79
|
+
.all();
|
|
80
|
+
for (const row of rows) {
|
|
81
|
+
result.session_log.checked++;
|
|
82
|
+
if (!isSlug(row.project_id))
|
|
83
|
+
continue;
|
|
84
|
+
const uuid = await getUuid(row.project_id);
|
|
85
|
+
if (!uuid)
|
|
86
|
+
continue;
|
|
87
|
+
db.prepare('UPDATE session_log SET project_id = ? WHERE id = ?')
|
|
88
|
+
.run(uuid, row.id);
|
|
89
|
+
result.session_log.updated++;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch { /* non-fatal */ }
|
|
93
|
+
// ── orchestration_tasks ──────────────────────────────────────────────────
|
|
94
|
+
try {
|
|
95
|
+
const rows = db
|
|
96
|
+
.prepare('SELECT id, project_id FROM orchestration_tasks WHERE project_id IS NOT NULL')
|
|
97
|
+
.all();
|
|
98
|
+
for (const row of rows) {
|
|
99
|
+
result.orchestration_tasks.checked++;
|
|
100
|
+
if (!isSlug(row.project_id))
|
|
101
|
+
continue;
|
|
102
|
+
const uuid = await getUuid(row.project_id);
|
|
103
|
+
if (!uuid)
|
|
104
|
+
continue;
|
|
105
|
+
db.prepare('UPDATE orchestration_tasks SET project_id = ? WHERE id = ?')
|
|
106
|
+
.run(uuid, row.id);
|
|
107
|
+
result.orchestration_tasks.updated++;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch { /* table may not exist yet */ }
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=project-id-cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-id-cleanup.js","sourceRoot":"","sources":["../../src/daemon/project-id-cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-gate.d.ts","sourceRoot":"","sources":["../../src/hooks/agent-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"agent-gate.d.ts","sourceRoot":"","sources":["../../src/hooks/agent-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8DH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAmB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA4B/H;AAID,wBAAsB,gBAAgB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B5E"}
|
package/dist/hooks/agent-gate.js
CHANGED
|
@@ -38,10 +38,12 @@ function buildPreToolUseOutput(allow, reason) {
|
|
|
38
38
|
},
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
|
+
// Effort levels that indicate a full specification was done upfront.
|
|
42
|
+
// Standard+ means TaskCreate + QG criteria were required before this turn,
|
|
43
|
+
// so the sub-agent is pre-authorized by the specification.
|
|
44
|
+
const SPECIFICATION_EFFORTS = new Set(['standard', 'extended', 'advanced', 'deep', 'comprehensive']);
|
|
41
45
|
export function checkClassificationFreshness(sessionId, nowMs = Date.now()) {
|
|
42
46
|
// Sessions executing an orchestration task are pre-scoped at dispatch time.
|
|
43
|
-
// The task assignment was set by the daemon IPC (not user-writable from MCP tools),
|
|
44
|
-
// so bypassing reclassification here is safe.
|
|
45
47
|
const sessionCtx = getSessionContext(sessionId);
|
|
46
48
|
if (sessionCtx?.orchestration_task_id) {
|
|
47
49
|
return { allow: true };
|
|
@@ -54,14 +56,18 @@ export function checkClassificationFreshness(sessionId, nowMs = Date.now()) {
|
|
|
54
56
|
if (ageMs > FRESHNESS_THRESHOLD_MS) {
|
|
55
57
|
return { allow: false, reason: DENY_REASON };
|
|
56
58
|
}
|
|
57
|
-
// Degraded mode —
|
|
58
|
-
// Allow through with a warning rather than hard-blocking sub-agent launch.
|
|
59
|
+
// Degraded mode — allow through with a warning.
|
|
59
60
|
if (record.effort === 'degraded') {
|
|
60
61
|
return {
|
|
61
62
|
allow: true,
|
|
62
63
|
reason: 'gramatr routing degraded — sub-agent launching without pre-classification. Pass task context manually.',
|
|
63
64
|
};
|
|
64
65
|
}
|
|
66
|
+
// Standard+ effort means a full specification was done upfront (TaskCreate + QG).
|
|
67
|
+
// Pre-authorized — no need to re-route before spawning.
|
|
68
|
+
if (record.effort && SPECIFICATION_EFFORTS.has(record.effort)) {
|
|
69
|
+
return { allow: true };
|
|
70
|
+
}
|
|
65
71
|
return { allow: true };
|
|
66
72
|
}
|
|
67
73
|
// ── Hook runner ──
|
|
@@ -77,10 +83,14 @@ export async function runAgentGateHook(_args = []) {
|
|
|
77
83
|
process.stdout.write(JSON.stringify(buildPreToolUseOutput(true)));
|
|
78
84
|
return 0;
|
|
79
85
|
}
|
|
80
|
-
// Derive project_id from git context, then look up active session
|
|
86
|
+
// Derive project_id from git context, then look up active session.
|
|
87
|
+
// user-prompt-submit resolves project_id as a UUID (via localUuid) but
|
|
88
|
+
// deriveProjectId returns a slug — getSessionContextByProject does an exact
|
|
89
|
+
// match, so it misses when a UUID was stored. Fall back to the most-recent
|
|
90
|
+
// session context in the DB (safe: only one Claude Code session per terminal).
|
|
81
91
|
const git = getGitContext();
|
|
82
92
|
const projectId = git ? deriveProjectId(git.remote, git.projectName) : null;
|
|
83
|
-
const ctx = projectId ? getSessionContextByProject(projectId) : null;
|
|
93
|
+
const ctx = (projectId ? getSessionContextByProject(projectId) : null) ?? getSessionContext();
|
|
84
94
|
const interactionId = ctx?.interaction_id || ctx?.session_id || 'unknown';
|
|
85
95
|
const result = checkClassificationFreshness(interactionId);
|
|
86
96
|
process.stdout.write(JSON.stringify(buildPreToolUseOutput(result.allow, result.reason)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-gate.js","sourceRoot":"","sources":["../../src/hooks/agent-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,iCAAiC,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAiBhH,cAAc;AAEd,SAAS,SAAS,CAAC,SAAiB;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,yBAAyB;AAEzB,MAAM,sBAAsB,GAAG,iCAAiC,CAAC;AAEjE,MAAM,WAAW,GACf,0DAA0D;IAC1D,2FAA2F;IAC3F,qEAAqE,CAAC;AAExE,SAAS,qBAAqB,CAAC,KAAc,EAAE,MAAe;IAC5D,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAAC;IAC9F,CAAC;IACD,OAAO;QACL,kBAAkB,EAAE;YAClB,aAAa,EAAE,YAAY;YAC3B,kBAAkB,EAAE,MAAM;YAC1B,wBAAwB,EAAE,MAAM,IAAI,uCAAuC;SAC5E;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,SAAiB,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE;IACxF,4EAA4E;IAC5E,
|
|
1
|
+
{"version":3,"file":"agent-gate.js","sourceRoot":"","sources":["../../src/hooks/agent-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/hooks/compact.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB1E"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { writeCompact } from './lib/compact-writer.js';
|
|
2
|
+
import { getGitContext } from './lib/gramatr-hook-utils.js';
|
|
3
|
+
import { getSessionContext } from './lib/hook-state.js';
|
|
4
|
+
import { resolveLocalProjectUuid } from './lib/session.js';
|
|
5
|
+
export async function runCompactHook(_args = []) {
|
|
6
|
+
try {
|
|
7
|
+
const git = getGitContext();
|
|
8
|
+
if (!git) {
|
|
9
|
+
process.stderr.write('[gramatr] compact: no git context found\n');
|
|
10
|
+
return 1;
|
|
11
|
+
}
|
|
12
|
+
const sessionCtx = getSessionContext();
|
|
13
|
+
const sessionId = sessionCtx?.session_id ?? 'unknown';
|
|
14
|
+
const projectId = sessionCtx?.project_id
|
|
15
|
+
?? resolveLocalProjectUuid({ directory: git.root, projectName: git.projectName })
|
|
16
|
+
?? null;
|
|
17
|
+
const result = writeCompact({ sessionId, projectId, projectSlug: git.projectName, gitRoot: git.root });
|
|
18
|
+
process.stderr.write(`[gramatr] compact saved: ${result.id} (${result.turnCount} turns)\n`);
|
|
19
|
+
process.stdout.write(`${result.summary}\n`);
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
process.stderr.write(`[gramatr] compact error: ${String(err)}\n`);
|
|
24
|
+
return 1;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=compact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/hooks/compact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAkB,EAAE;IACvD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAClE,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,UAAU,EAAE,UAAU,IAAI,SAAS,CAAC;QACtD,MAAM,SAAS,GAAG,UAAU,EAAE,UAAU;eACnC,uBAAuB,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;eAC9E,IAAI,CAAC;QAEV,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAEvG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS,WAAW,CAAC,CAAC;QAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClE,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export { runSubagentRouteHook } from './subagent-route.js';
|
|
|
22
22
|
export { runTaskQualityGateHook } from './task-quality-gate.js';
|
|
23
23
|
export { runToolTrackerHook } from './tool-tracker.js';
|
|
24
24
|
export { runRatingCaptureHook } from './rating-capture.js';
|
|
25
|
+
export { runCompactHook } from './compact.js';
|
|
25
26
|
export { runUserPromptSubmitHook } from './user-prompt-submit.js';
|
|
26
27
|
export { HOOK_MANIFEST, HOOK_NAMES, type HookName } from './manifest.js';
|
|
27
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -22,6 +22,7 @@ export { runSubagentRouteHook } from './subagent-route.js';
|
|
|
22
22
|
export { runTaskQualityGateHook } from './task-quality-gate.js';
|
|
23
23
|
export { runToolTrackerHook } from './tool-tracker.js';
|
|
24
24
|
export { runRatingCaptureHook } from './rating-capture.js';
|
|
25
|
+
export { runCompactHook } from './compact.js';
|
|
25
26
|
export { runUserPromptSubmitHook } from './user-prompt-submit.js';
|
|
26
27
|
export { HOOK_MANIFEST, HOOK_NAMES } from './manifest.js';
|
|
27
28
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C;;;;;;;;;GASG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAiB,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C;;;;;;;;;GASG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAiB,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact-writer.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/compact-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,GAAG,aAAa,CAwDhB;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"compact-writer.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/compact-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,GAAG,aAAa,CAwDhB;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAST"}
|