@gramatr/mcp 0.7.16 → 0.7.20
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 +20 -0
- package/dist/bin/hook-dispatcher.js.map +1 -1
- package/dist/bin/setup.d.ts +11 -0
- package/dist/bin/setup.d.ts.map +1 -1
- package/dist/bin/setup.js +35 -1
- package/dist/bin/setup.js.map +1 -1
- package/dist/gramatr +0 -0
- package/dist/hooks/agent-gate.d.ts +14 -0
- package/dist/hooks/agent-gate.d.ts.map +1 -0
- package/dist/hooks/agent-gate.js +75 -0
- package/dist/hooks/agent-gate.js.map +1 -0
- package/dist/hooks/agent-verify.d.ts +9 -0
- package/dist/hooks/agent-verify.d.ts.map +1 -0
- package/dist/hooks/agent-verify.js +53 -0
- package/dist/hooks/agent-verify.js.map +1 -0
- package/dist/hooks/edit-tracker.d.ts +10 -0
- package/dist/hooks/edit-tracker.d.ts.map +1 -0
- package/dist/hooks/edit-tracker.js +65 -0
- package/dist/hooks/edit-tracker.js.map +1 -0
- package/dist/hooks/git-gate.d.ts +20 -0
- package/dist/hooks/git-gate.d.ts.map +1 -0
- package/dist/hooks/git-gate.js +109 -0
- package/dist/hooks/git-gate.js.map +1 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/lib/client-runtime.d.ts +1 -1
- package/dist/hooks/lib/client-runtime.d.ts.map +1 -1
- package/dist/hooks/lib/client-runtime.js +9 -5
- package/dist/hooks/lib/client-runtime.js.map +1 -1
- package/dist/hooks/lib/feedback.d.ts.map +1 -1
- package/dist/hooks/lib/feedback.js +4 -2
- package/dist/hooks/lib/feedback.js.map +1 -1
- package/dist/hooks/lib/intelligence.d.ts.map +1 -1
- package/dist/hooks/lib/intelligence.js +4 -1
- package/dist/hooks/lib/intelligence.js.map +1 -1
- package/dist/hooks/lib/packet-debug-log.d.ts +31 -0
- package/dist/hooks/lib/packet-debug-log.d.ts.map +1 -0
- package/dist/hooks/lib/packet-debug-log.js +50 -0
- package/dist/hooks/lib/packet-debug-log.js.map +1 -0
- package/dist/hooks/lib/routing.d.ts +1 -0
- package/dist/hooks/lib/routing.d.ts.map +1 -1
- package/dist/hooks/lib/routing.js +1 -0
- package/dist/hooks/lib/routing.js.map +1 -1
- package/dist/hooks/lib/types.d.ts +20 -0
- package/dist/hooks/lib/types.d.ts.map +1 -1
- package/dist/hooks/manifest.d.ts +12 -0
- package/dist/hooks/manifest.d.ts.map +1 -1
- package/dist/hooks/manifest.js +16 -0
- package/dist/hooks/manifest.js.map +1 -1
- package/dist/hooks/rating-capture.d.ts.map +1 -1
- package/dist/hooks/rating-capture.js +23 -2
- package/dist/hooks/rating-capture.js.map +1 -1
- package/dist/hooks/session-end.d.ts.map +1 -1
- package/dist/hooks/session-end.js +11 -1
- package/dist/hooks/session-end.js.map +1 -1
- package/dist/hooks/stop.d.ts.map +1 -1
- package/dist/hooks/stop.js +3 -2
- 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 +44 -17
- package/dist/hooks/user-prompt-submit.js.map +1 -1
- package/dist/proxy/local-client.d.ts +15 -36
- package/dist/proxy/local-client.d.ts.map +1 -1
- package/dist/proxy/local-client.js +18 -116
- package/dist/proxy/local-client.js.map +1 -1
- package/dist/setup/instructions.d.ts +2 -2
- package/dist/setup/instructions.d.ts.map +1 -1
- package/dist/setup/instructions.js +87 -54
- package/dist/setup/instructions.js.map +1 -1
- package/dist/setup/integrations.d.ts.map +1 -1
- package/dist/setup/integrations.js +36 -17
- package/dist/setup/integrations.js.map +1 -1
- package/dist/setup/platform.d.ts +47 -0
- package/dist/setup/platform.d.ts.map +1 -0
- package/dist/setup/platform.js +96 -0
- package/dist/setup/platform.js.map +1 -0
- package/dist/setup/targets.d.ts +2 -2
- package/dist/setup/targets.d.ts.map +1 -1
- package/dist/setup/targets.js +6 -4
- package/dist/setup/targets.js.map +1 -1
- package/dist/setup/web-connector.d.ts.map +1 -1
- package/dist/setup/web-connector.js +7 -3
- package/dist/setup/web-connector.js.map +1 -1
- package/package.json +1 -1
package/dist/hooks/manifest.js
CHANGED
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
export const HOOK_MANIFEST = [
|
|
2
|
+
{
|
|
3
|
+
name: 'agent-gate',
|
|
4
|
+
description: 'Deny Agent launches without a fresh gramatr_route_request classification.',
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
name: 'agent-verify',
|
|
8
|
+
description: 'Emit ISC verification reminder after sub-agent completion.',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: 'edit-tracker',
|
|
12
|
+
description: 'Track modified files for lint awareness.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'git-gate',
|
|
16
|
+
description: 'Enforce behavioral gates on dangerous git operations.',
|
|
17
|
+
},
|
|
2
18
|
{
|
|
3
19
|
name: 'input-validator',
|
|
4
20
|
description: 'Validate MCP tool inputs before they are sent.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/hooks/manifest.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,kDAAkD;KAChE;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,wDAAwD;KACtE;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,sDAAsD;KACpE;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,2DAA2D;KACzE;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/hooks/manifest.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,2EAA2E;KACzF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,4DAA4D;KAC1E;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,0CAA0C;KACxD;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,uDAAuD;KACrE;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,kDAAkD;KAChE;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,wDAAwD;KACtE;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,sDAAsD;KACpE;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,2DAA2D;KACzE;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rating-capture.d.ts","sourceRoot":"","sources":["../../src/hooks/rating-capture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rating-capture.d.ts","sourceRoot":"","sources":["../../src/hooks/rating-capture.ts"],"names":[],"mappings":"AAyBA,wBAAsB,oBAAoB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA8EhF"}
|
|
@@ -3,6 +3,8 @@ import { spawn } from 'node:child_process';
|
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import { getGramatrDirFromEnv, getHomeDir } from '../config-runtime.js';
|
|
5
5
|
import { readHookInput } from './lib/gramatr-hook-utils.js';
|
|
6
|
+
import { submitPendingClassificationFeedback } from './lib/feedback.js';
|
|
7
|
+
import { resolveHookClientRuntime } from './lib/client-runtime.js';
|
|
6
8
|
function parseExplicitRating(prompt) {
|
|
7
9
|
const trimmed = prompt.trim();
|
|
8
10
|
const match = trimmed.match(/^(10|[1-9])(?:\s*[-:]\s*|\s+)?(.*)$/);
|
|
@@ -19,9 +21,27 @@ function parseExplicitRating(prompt) {
|
|
|
19
21
|
}
|
|
20
22
|
return { rating, comment };
|
|
21
23
|
}
|
|
24
|
+
const FEEDBACK_TIMEOUT_MS = 5000;
|
|
22
25
|
export async function runRatingCaptureHook(_args = []) {
|
|
26
|
+
const runtime = resolveHookClientRuntime(_args);
|
|
23
27
|
try {
|
|
24
28
|
const data = await readHookInput();
|
|
29
|
+
const sessionId = data.session_id || 'unknown';
|
|
30
|
+
// Submit classification feedback for the PREVIOUS turn before processing this prompt.
|
|
31
|
+
try {
|
|
32
|
+
await Promise.race([
|
|
33
|
+
submitPendingClassificationFeedback({
|
|
34
|
+
sessionId,
|
|
35
|
+
clientType: runtime.clientType,
|
|
36
|
+
agentName: runtime.agentName,
|
|
37
|
+
}),
|
|
38
|
+
new Promise((resolve) => setTimeout(() => resolve(null), FEEDBACK_TIMEOUT_MS)),
|
|
39
|
+
]);
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
43
|
+
process.stderr.write(`[gramatr] rating-capture feedback error: ${detail}\n`);
|
|
44
|
+
}
|
|
25
45
|
const prompt = data.prompt || data.message || '';
|
|
26
46
|
if (!prompt.trim()) {
|
|
27
47
|
process.stdout.write(JSON.stringify({}));
|
|
@@ -72,8 +92,9 @@ export async function runRatingCaptureHook(_args = []) {
|
|
|
72
92
|
catch { }
|
|
73
93
|
}
|
|
74
94
|
}
|
|
75
|
-
catch {
|
|
76
|
-
|
|
95
|
+
catch (err) {
|
|
96
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
97
|
+
process.stderr.write(`[gramatr] rating-capture hook error: ${detail}\n`);
|
|
77
98
|
}
|
|
78
99
|
process.stdout.write(JSON.stringify({}));
|
|
79
100
|
return 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rating-capture.js","sourceRoot":"","sources":["../../src/hooks/rating-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"rating-capture.js","sourceRoot":"","sources":["../../src/hooks/rating-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.d.ts","sourceRoot":"","sources":["../../src/hooks/session-end.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-end.d.ts","sourceRoot":"","sources":["../../src/hooks/session-end.ts"],"names":[],"mappings":"AA4BA,wBAAsB,iBAAiB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAqJ7E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { deriveProjectId, getCommitCountSince, getCommitLogSince, getCommitsSince, getFilesChanged, getGitContext, log, now, readGmtrConfig, readHookInput, resolveAuthToken, writeGmtrConfig, } from './lib/gramatr-hook-utils.js';
|
|
2
2
|
import { endRemoteSession, flushTurns } from './lib/session-end.js';
|
|
3
3
|
import { isLocalHooksServerAvailable } from '../proxy/local-client.js';
|
|
4
|
-
import { appendSessionLog, flushOpHistory, flushTurns as flushTurnsDb, getSessionContext, hydrateSessionContextFromServer, isFilesystemAvailable, markSessionSynced, } from './lib/hook-state.js';
|
|
4
|
+
import { appendSessionLog, flushOpHistory, flushTurns as flushTurnsDb, getLatestClassification, getSessionContext, hydrateSessionContextFromServer, isFilesystemAvailable, markSessionSynced, } from './lib/hook-state.js';
|
|
5
5
|
import { resolveHookClientRuntime } from './lib/client-runtime.js';
|
|
6
6
|
export async function runSessionEndHook(_args = []) {
|
|
7
7
|
const runtime = resolveHookClientRuntime(_args);
|
|
@@ -96,6 +96,16 @@ export async function runSessionEndHook(_args = []) {
|
|
|
96
96
|
if (topTools)
|
|
97
97
|
summary += ` Top tools: ${topTools}.`;
|
|
98
98
|
}
|
|
99
|
+
// Check feedback loop health — warn if classifier feedback was never submitted
|
|
100
|
+
try {
|
|
101
|
+
const lastClassification = getLatestClassification(sessionId);
|
|
102
|
+
if (lastClassification?.pending_feedback) {
|
|
103
|
+
process.stderr.write('[gramatr] WARNING: classification feedback was never submitted this session. The classifier flywheel is not receiving training signal.\n');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Non-critical
|
|
108
|
+
}
|
|
99
109
|
// Persist session log entry to SQLite (replaces session-history.log + last-session-commits.txt)
|
|
100
110
|
try {
|
|
101
111
|
appendSessionLog({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../src/hooks/session-end.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../src/hooks/session-end.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/stop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":"AAeA,wBAAsB,WAAW,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":"AAeA,wBAAsB,WAAW,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAevE"}
|
package/dist/hooks/stop.js
CHANGED
|
@@ -20,8 +20,9 @@ export async function runStopHook(_args = []) {
|
|
|
20
20
|
agentName: runtime.agentName,
|
|
21
21
|
}), STOP_FEEDBACK_TIMEOUT_MS);
|
|
22
22
|
}
|
|
23
|
-
catch {
|
|
24
|
-
|
|
23
|
+
catch (err) {
|
|
24
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
25
|
+
process.stderr.write(`[gramatr] stop hook error: ${detail}\n`);
|
|
25
26
|
}
|
|
26
27
|
process.stdout.write(JSON.stringify({}));
|
|
27
28
|
return 0;
|
package/dist/hooks/stop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,SAAS,WAAW,CAAI,OAAmB,EAAE,SAAiB;IAC5D,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,OAAO;QACP,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5B,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAkB,EAAE;IACpD,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;QACpC,MAAM,WAAW,CAAC,mCAAmC,CAAC;YACpD,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;YACxC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,EAAE,wBAAwB,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,SAAS,WAAW,CAAI,OAAmB,EAAE,SAAiB;IAC5D,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,OAAO;QACP,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5B,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAkB,EAAE;IACpD,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;QACpC,MAAM,WAAW,CAAC,mCAAmC,CAAC;YACpD,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;YACxC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,EAAE,wBAAwB,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,MAAM,IAAI,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-prompt-submit.d.ts","sourceRoot":"","sources":["../../src/hooks/user-prompt-submit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"user-prompt-submit.d.ts","sourceRoot":"","sources":["../../src/hooks/user-prompt-submit.ts"],"names":[],"mappings":"AAuFA,wBAAsB,uBAAuB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA6LnF"}
|
|
@@ -4,14 +4,15 @@ import { emitStatus, formatFailureWarning, formatIntelligence, mergeEnrichmentIn
|
|
|
4
4
|
import { fetchEnrichment, persistClassificationResult, routePrompt, shouldSkipPromptRouting, } from './lib/routing.js';
|
|
5
5
|
import { appendOpHistory, appendTurn, getSessionContext, hydrateSessionContextFromServer, isFilesystemAvailable, setLatestClassification, } from './lib/hook-state.js';
|
|
6
6
|
import { resolveHookClientRuntime } from './lib/client-runtime.js';
|
|
7
|
+
import { appendPacketDebugLog } from './lib/packet-debug-log.js';
|
|
7
8
|
let turnCounter = 0;
|
|
8
|
-
const TIMEOUT_MS = getGramatrTimeoutFromEnv(
|
|
9
|
+
const TIMEOUT_MS = getGramatrTimeoutFromEnv(60000);
|
|
9
10
|
const ENABLED = isGramatrEnrichEnabledFromEnv();
|
|
10
11
|
const PACKET_MODE = getGramatrPacketModeFromEnv();
|
|
11
12
|
const PACKET2_WAIT_MS = getGramatrPacket2WaitMsFromEnv(20000);
|
|
12
|
-
const HOOK_ROUTE_TIMEOUT_CAP_MS =
|
|
13
|
-
const HOOK_PACKET2_TIMEOUT_CAP_MS =
|
|
14
|
-
const HOOK_PACKET2_WAIT_CAP_MS =
|
|
13
|
+
const HOOK_ROUTE_TIMEOUT_CAP_MS = 60000;
|
|
14
|
+
const HOOK_PACKET2_TIMEOUT_CAP_MS = 15000;
|
|
15
|
+
const HOOK_PACKET2_WAIT_CAP_MS = 20000;
|
|
15
16
|
const HOOK_PACKET2_POLL_MS = 500;
|
|
16
17
|
function persistLastClassification(prompt, sessionId, route, downstreamModel, clientType, agentName) {
|
|
17
18
|
try {
|
|
@@ -73,39 +74,63 @@ export async function runUserPromptSubmitHook(_args = []) {
|
|
|
73
74
|
sessionContext = getSessionContext(sessionId);
|
|
74
75
|
}
|
|
75
76
|
const projectId = sessionContext?.project_id || (git ? deriveProjectId(git.remote, git.projectName) : null) || undefined;
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
const gramatrSessionId =
|
|
77
|
+
// gramatr interaction_id is the cross-agent session key — use it for
|
|
78
|
+
// both session_id (server history) and interaction_id (explicit resolution).
|
|
79
|
+
const gramatrInteractionId = sessionContext?.interaction_id || null;
|
|
80
|
+
const gramatrSessionId = gramatrInteractionId || sessionId;
|
|
80
81
|
process.stderr.write('[gramatr] classifying...\n');
|
|
81
82
|
const t0 = Date.now();
|
|
82
83
|
const routed = await routePrompt({
|
|
83
84
|
prompt,
|
|
84
85
|
projectId,
|
|
85
86
|
sessionId: gramatrSessionId,
|
|
87
|
+
interactionId: gramatrInteractionId || undefined,
|
|
86
88
|
timeoutMs: Math.min(TIMEOUT_MS, HOOK_ROUTE_TIMEOUT_CAP_MS),
|
|
87
89
|
});
|
|
88
90
|
const result = routed.route;
|
|
89
91
|
const elapsed = Date.now() - t0;
|
|
92
|
+
const isV2 = result?.schema === 'gmtr.intelligence.contract.v2';
|
|
90
93
|
let lastFailure = null;
|
|
91
94
|
if (!result && routed.error) {
|
|
92
95
|
lastFailure = mapRoutingFailure(routed.error.reason, routed.error.detail);
|
|
93
96
|
}
|
|
97
|
+
// Debug log — rolling 100-entry JSONL at ~/.gramatr/debug/packets.jsonl
|
|
98
|
+
appendPacketDebugLog({
|
|
99
|
+
ts: new Date().toISOString(),
|
|
100
|
+
project_id: projectId ?? null,
|
|
101
|
+
session_id: gramatrSessionId,
|
|
102
|
+
client_type: runtime.clientType,
|
|
103
|
+
agent_name: runtime.agentName,
|
|
104
|
+
downstream_model: downstreamModel,
|
|
105
|
+
status: !result && routed.error
|
|
106
|
+
? (routed.error.reason === 'timeout' ? 'timeout' : 'error')
|
|
107
|
+
: result ? 'ok' : 'skipped',
|
|
108
|
+
elapsed_ms: elapsed,
|
|
109
|
+
packet: result ?? null,
|
|
110
|
+
error: routed.error ? { reason: routed.error.reason, detail: routed.error.detail } : null,
|
|
111
|
+
});
|
|
94
112
|
let enrichment = null;
|
|
95
113
|
const packet1 = result?.packet_1;
|
|
96
|
-
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
114
|
+
// v2: manifest is a top-level field; v1: it's nested under packet_1
|
|
115
|
+
const manifest = isV2 ? result?.manifest : (packet1?.manifest || result);
|
|
116
|
+
// v2: token_savings lives under result.execution; v1: under packet_1 or result directly
|
|
117
|
+
const packetTokenSavings = packet1?.token_savings
|
|
118
|
+
|| (isV2 ? result?.execution?.token_savings : result?.token_savings)
|
|
119
|
+
|| {};
|
|
120
|
+
const packet2Required = Boolean(
|
|
121
|
+
// v2: enrichment.required is the canonical signal
|
|
122
|
+
result?.enrichment?.required === true
|
|
123
|
+
// v1 fallbacks
|
|
100
124
|
|| result?.packet_2?.required === true
|
|
101
|
-
||
|
|
102
|
-
|
|
125
|
+
|| manifest?.packet_2_status === 'required'
|
|
126
|
+
|| manifest?.packet_2_required === true);
|
|
127
|
+
const enrichmentId = result?.enrichment?.enrichment_id
|
|
103
128
|
|| result?.packet_2?.enrichment_id
|
|
104
|
-
||
|
|
129
|
+
|| manifest?.enrichment_id;
|
|
105
130
|
if (result && packet2Required && enrichmentId) {
|
|
106
131
|
enrichment = await fetchEnrichment(enrichmentId, {
|
|
107
132
|
mode: PACKET_MODE,
|
|
108
|
-
timeoutMs:
|
|
133
|
+
timeoutMs: HOOK_PACKET2_TIMEOUT_CAP_MS,
|
|
109
134
|
waitMs: Math.min(PACKET2_WAIT_MS, HOOK_PACKET2_WAIT_CAP_MS),
|
|
110
135
|
pollMs: HOOK_PACKET2_POLL_MS,
|
|
111
136
|
});
|
|
@@ -128,7 +153,9 @@ export async function runUserPromptSubmitHook(_args = []) {
|
|
|
128
153
|
effort: cl.effort_level || null,
|
|
129
154
|
intent: cl.intent_type || null,
|
|
130
155
|
confidence: cl.confidence ?? null,
|
|
131
|
-
memory_delivered:
|
|
156
|
+
memory_delivered: isV2
|
|
157
|
+
? (result?.memory?.search_results?.length ?? null)
|
|
158
|
+
: ((packet1?.memory_context || result?.memory_context)?.results?.length ?? null),
|
|
132
159
|
downstream_model: downstreamModel || null,
|
|
133
160
|
server_version: es.server_version || null,
|
|
134
161
|
stage_timing: es.stage_timing ? JSON.stringify(es.stage_timing) : null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-prompt-submit.js","sourceRoot":"","sources":["../../src/hooks/user-prompt-submit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,GAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,WAAW,EACX,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,+BAA+B,EAC/B,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"user-prompt-submit.js","sourceRoot":"","sources":["../../src/hooks/user-prompt-submit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,49 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* local-client.ts — Hook-side client for
|
|
2
|
+
* local-client.ts — Hook-side client for gramatr tool calls.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* MCP server when it is running, falling back to direct remote calls otherwise.
|
|
4
|
+
* Hooks call gramatr tools directly through the remote API via callRemoteTool.
|
|
5
|
+
* The compiled binary owns auth resolution — no port-based local HTTP server needed.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* → data shape validated before any remote call
|
|
12
|
-
* 2. Direct remote (callRemoteTool from remote-client.ts)
|
|
13
|
-
* → hooks resolve their own auth token as before
|
|
14
|
-
*
|
|
15
|
-
* The local server's port file is read once per hook process lifetime and
|
|
16
|
-
* cached. Stale port files (server crashed without cleanup) are caught by a
|
|
17
|
-
* connection error on first use, which clears the cache and falls through to
|
|
18
|
-
* direct remote.
|
|
7
|
+
* Session context (project_id, interaction_id) is managed locally via SQLite
|
|
8
|
+
* in hook-state.ts. pushSessionContextToLocal / pullSessionContextFromLocal
|
|
9
|
+
* are retained as no-ops for call-site compatibility while the port IPC is removed.
|
|
19
10
|
*/
|
|
20
|
-
/**
|
|
11
|
+
/** Always false — port-based local server is no longer used. */
|
|
21
12
|
export declare function isLocalHooksServerAvailable(): boolean;
|
|
22
13
|
/**
|
|
23
|
-
* Call a gramatr tool
|
|
24
|
-
*
|
|
25
|
-
* The local server injects auth and enforces data shapes before forwarding to
|
|
26
|
-
* the remote API. If the local server is unavailable or returns an error,
|
|
27
|
-
* falls back to a direct remote call via callRemoteTool.
|
|
14
|
+
* Call a gramatr tool via the remote API.
|
|
15
|
+
* Auth is resolved by the compiled binary's auth module.
|
|
28
16
|
*/
|
|
29
17
|
export declare function callTool(name: string, args: Record<string, unknown>): Promise<unknown>;
|
|
30
18
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* Called by the session-start hook after setSessionContext() so later hook
|
|
34
|
-
* processes (user-prompt-submit, session-end) can read the context without
|
|
35
|
-
* hitting the SQLite file or the remote REST API.
|
|
36
|
-
*
|
|
37
|
-
* Returns true if the write was acknowledged. A false return is non-fatal —
|
|
38
|
-
* later hooks fall back to SQLite → remote REST.
|
|
19
|
+
* No-op — session context is persisted to SQLite via setSessionContext in hook-state.ts.
|
|
20
|
+
* Retained for call-site compatibility.
|
|
39
21
|
*/
|
|
40
|
-
export declare function pushSessionContextToLocal(
|
|
22
|
+
export declare function pushSessionContextToLocal(_ctx: unknown): Promise<boolean>;
|
|
41
23
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* Returns the stored context for the given session_id, or the most recently
|
|
45
|
-
* written context as a fallback. Returns null if the local server is
|
|
46
|
-
* unavailable or has no context for this session.
|
|
24
|
+
* No-op — callers fall through to remote REST hydration via hydrateSessionContextFromServer.
|
|
25
|
+
* Retained for call-site compatibility.
|
|
47
26
|
*/
|
|
48
|
-
export declare function pullSessionContextFromLocal(
|
|
27
|
+
export declare function pullSessionContextFromLocal(_sessionId: string): Promise<Record<string, unknown> | null>;
|
|
49
28
|
//# sourceMappingURL=local-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-client.d.ts","sourceRoot":"","sources":["../../src/proxy/local-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"local-client.d.ts","sourceRoot":"","sources":["../../src/proxy/local-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,gEAAgE;AAChE,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/E;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAEzC"}
|
|
@@ -1,135 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* local-client.ts — Hook-side client for
|
|
2
|
+
* local-client.ts — Hook-side client for gramatr tool calls.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* MCP server when it is running, falling back to direct remote calls otherwise.
|
|
4
|
+
* Hooks call gramatr tools directly through the remote API via callRemoteTool.
|
|
5
|
+
* The compiled binary owns auth resolution — no port-based local HTTP server needed.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* → data shape validated before any remote call
|
|
12
|
-
* 2. Direct remote (callRemoteTool from remote-client.ts)
|
|
13
|
-
* → hooks resolve their own auth token as before
|
|
14
|
-
*
|
|
15
|
-
* The local server's port file is read once per hook process lifetime and
|
|
16
|
-
* cached. Stale port files (server crashed without cleanup) are caught by a
|
|
17
|
-
* connection error on first use, which clears the cache and falls through to
|
|
18
|
-
* direct remote.
|
|
7
|
+
* Session context (project_id, interaction_id) is managed locally via SQLite
|
|
8
|
+
* in hook-state.ts. pushSessionContextToLocal / pullSessionContextFromLocal
|
|
9
|
+
* are retained as no-ops for call-site compatibility while the port IPC is removed.
|
|
19
10
|
*/
|
|
20
|
-
import { readFileSync } from 'node:fs';
|
|
21
|
-
import { join } from 'node:path';
|
|
22
|
-
import { getGramatrDirFromEnv, getHomeDir } from '../config-runtime.js';
|
|
23
11
|
import { callRemoteTool } from './remote-client.js';
|
|
24
|
-
|
|
25
|
-
function getPortFilePath() {
|
|
26
|
-
const dir = getGramatrDirFromEnv() || join(getHomeDir(), '.gramatr');
|
|
27
|
-
return join(dir, '.hooks-port');
|
|
28
|
-
}
|
|
29
|
-
// undefined = not yet read; null = not available; number = available
|
|
30
|
-
let _cachedPort = undefined;
|
|
31
|
-
function getLocalPort() {
|
|
32
|
-
if (_cachedPort !== undefined)
|
|
33
|
-
return _cachedPort;
|
|
34
|
-
try {
|
|
35
|
-
const raw = readFileSync(getPortFilePath(), 'utf8').trim();
|
|
36
|
-
const port = parseInt(raw, 10);
|
|
37
|
-
_cachedPort = Number.isFinite(port) && port > 0 ? port : null;
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
_cachedPort = null;
|
|
41
|
-
}
|
|
42
|
-
return _cachedPort;
|
|
43
|
-
}
|
|
44
|
-
/** True when the local hooks server port file exists and contains a valid port. */
|
|
12
|
+
/** Always false — port-based local server is no longer used. */
|
|
45
13
|
export function isLocalHooksServerAvailable() {
|
|
46
|
-
return
|
|
14
|
+
return false;
|
|
47
15
|
}
|
|
48
|
-
// ── Tool call proxy ──
|
|
49
16
|
/**
|
|
50
|
-
* Call a gramatr tool
|
|
51
|
-
*
|
|
52
|
-
* The local server injects auth and enforces data shapes before forwarding to
|
|
53
|
-
* the remote API. If the local server is unavailable or returns an error,
|
|
54
|
-
* falls back to a direct remote call via callRemoteTool.
|
|
17
|
+
* Call a gramatr tool via the remote API.
|
|
18
|
+
* Auth is resolved by the compiled binary's auth module.
|
|
55
19
|
*/
|
|
56
20
|
export async function callTool(name, args) {
|
|
57
|
-
const port = getLocalPort();
|
|
58
|
-
if (port !== null) {
|
|
59
|
-
try {
|
|
60
|
-
const res = await fetch(`http://127.0.0.1:${port}/hooks/tool`, {
|
|
61
|
-
method: 'POST',
|
|
62
|
-
headers: { 'Content-Type': 'application/json' },
|
|
63
|
-
body: JSON.stringify({ name, args }),
|
|
64
|
-
signal: AbortSignal.timeout(30000),
|
|
65
|
-
});
|
|
66
|
-
// gramatr-allow: B1 — HTTP transport sentinel, caught immediately in the enclosing try/catch
|
|
67
|
-
if (!res.ok)
|
|
68
|
-
throw new Error(`HTTP ${res.status}`);
|
|
69
|
-
const data = await res.json();
|
|
70
|
-
// gramatr-allow: B1 — error string forwarded from local server, caught immediately in the enclosing try/catch
|
|
71
|
-
if (data.error)
|
|
72
|
-
throw new Error(data.error);
|
|
73
|
-
return data.result;
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
// Local server failed (stale port file, crash, etc.) — invalidate cache
|
|
77
|
-
// and fall through to direct remote.
|
|
78
|
-
_cachedPort = null;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
21
|
return callRemoteTool(name, args);
|
|
82
22
|
}
|
|
83
|
-
// ── Session context IPC ──
|
|
84
23
|
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* Called by the session-start hook after setSessionContext() so later hook
|
|
88
|
-
* processes (user-prompt-submit, session-end) can read the context without
|
|
89
|
-
* hitting the SQLite file or the remote REST API.
|
|
90
|
-
*
|
|
91
|
-
* Returns true if the write was acknowledged. A false return is non-fatal —
|
|
92
|
-
* later hooks fall back to SQLite → remote REST.
|
|
24
|
+
* No-op — session context is persisted to SQLite via setSessionContext in hook-state.ts.
|
|
25
|
+
* Retained for call-site compatibility.
|
|
93
26
|
*/
|
|
94
|
-
export async function pushSessionContextToLocal(
|
|
95
|
-
|
|
96
|
-
if (port === null)
|
|
97
|
-
return false;
|
|
98
|
-
try {
|
|
99
|
-
const res = await fetch(`http://127.0.0.1:${port}/hooks/session`, {
|
|
100
|
-
method: 'POST',
|
|
101
|
-
headers: { 'Content-Type': 'application/json' },
|
|
102
|
-
body: JSON.stringify(ctx),
|
|
103
|
-
signal: AbortSignal.timeout(3000),
|
|
104
|
-
});
|
|
105
|
-
return res.ok;
|
|
106
|
-
}
|
|
107
|
-
catch {
|
|
108
|
-
_cachedPort = null; // Invalidate on connection failure
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
27
|
+
export async function pushSessionContextToLocal(_ctx) {
|
|
28
|
+
return false;
|
|
111
29
|
}
|
|
112
30
|
/**
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* Returns the stored context for the given session_id, or the most recently
|
|
116
|
-
* written context as a fallback. Returns null if the local server is
|
|
117
|
-
* unavailable or has no context for this session.
|
|
31
|
+
* No-op — callers fall through to remote REST hydration via hydrateSessionContextFromServer.
|
|
32
|
+
* Retained for call-site compatibility.
|
|
118
33
|
*/
|
|
119
|
-
export async function pullSessionContextFromLocal(
|
|
120
|
-
|
|
121
|
-
if (port === null)
|
|
122
|
-
return null;
|
|
123
|
-
try {
|
|
124
|
-
const res = await fetch(`http://127.0.0.1:${port}/hooks/session?session_id=${encodeURIComponent(sessionId)}`, { signal: AbortSignal.timeout(3000) });
|
|
125
|
-
if (!res.ok)
|
|
126
|
-
return null;
|
|
127
|
-
const data = await res.json();
|
|
128
|
-
return data.ctx;
|
|
129
|
-
}
|
|
130
|
-
catch {
|
|
131
|
-
_cachedPort = null;
|
|
132
|
-
return null;
|
|
133
|
-
}
|
|
34
|
+
export async function pullSessionContextFromLocal(_sessionId) {
|
|
35
|
+
return null;
|
|
134
36
|
}
|
|
135
37
|
//# sourceMappingURL=local-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-client.js","sourceRoot":"","sources":["../../src/proxy/local-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"local-client.js","sourceRoot":"","sources":["../../src/proxy/local-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,gEAAgE;AAChE,MAAM,UAAU,2BAA2B;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAY,EACZ,IAA6B;IAE7B,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAa;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAAkB;IAElB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -3,7 +3,7 @@ export declare const CLAUDE_BLOCK_END = "<!-- GRAMATR-END -->";
|
|
|
3
3
|
export declare const CODEX_BLOCK_START = "<!-- GRAMATR-CODEX-START -->";
|
|
4
4
|
export declare const CODEX_BLOCK_END = "<!-- GRAMATR-CODEX-END -->";
|
|
5
5
|
export type InstallPromptTarget = 'claude-code' | 'codex' | 'gemini-cli' | 'claude-desktop' | 'chatgpt-desktop' | 'cursor' | 'windsurf' | 'vscode';
|
|
6
|
-
export declare const CLAUDE_CODE_GUIDANCE = "<!-- GRAMATR-START -->\n# gramatr\n\nYou have gramatr installed.
|
|
7
|
-
export declare const CODEX_GUIDANCE = "<!-- GRAMATR-CODEX-START -->\n# gramatr codex guidance\n\n## Repo Expectations\n\n- Prefer gramatr memory and project handoff context over ad hoc local summaries.\n- Treat Codex hook augmentation as authoritative when a gramatr
|
|
6
|
+
export declare const CLAUDE_CODE_GUIDANCE = "<!-- GRAMATR-START -->\n# gramatr\n\nYou have gramatr installed. Hooks inject a `gmtr.intelligence.contract.v2`\npacket into your context on every prompt.\n\n**Follow the packet.** It contains classification, behavioral directives,\nphase templates, capability audit, quality gates, memory/search results,\nagent suggestions, and enrichment (RE + ISC scaffold).\n\n**Mandatory fields:**\n- `directives.hard_gates` \u2014 non-negotiable behavioral constraints\n- `directives.behavioral_rules` \u2014 algorithm phases, code rules, safety rules\n- `process.phase_template` \u2014 effort-gated phase sequence\n- `process.quality_gate_config` \u2014 ISC verification rules\n- `enrichment.data.reasoning` \u2014 RE + ISC when present\n\n**Memory:** Use gramatr MCP tools (`search_semantic`, `create_entity`,\n`add_observation`), not local markdown files.\n\n**Sub-agent composition:** Before launching any sub-agent for non-trivial work,\ncall `gramatr_route_request` with the task prompt first. Use the returned\npacket to compose the brief: RE \u2192 task description, ISC scaffold \u2192 acceptance\ncriteria, orchestration.agents.composed \u2192 agent system prompt, hard_gates \u2192\nconstraints.\n\n**Effort-gated phases:**\n- instant: RESPOND only\n- fast: OBSERVE \u2192 RESPOND\n- standard: OBSERVE \u2192 PLAN \u2192 BUILD \u2192 VERIFY\n- extended+: OBSERVE \u2192 THINK \u2192 PLAN \u2192 BUILD \u2192 EXECUTE \u2192 VERIFY \u2192 LEARN\n\n**Identity:** Read from `~/.gramatr/settings.json` \u2014 `daidentity` for your\nname, `principal` for the user's name.\n\n**If the server is unavailable:** Degrade cleanly and keep working. Use the\n7-phase structure. Create ISC before work. Never combine phases.\n<!-- GRAMATR-END -->\n";
|
|
7
|
+
export declare const CODEX_GUIDANCE = "<!-- GRAMATR-CODEX-START -->\n# gramatr codex guidance\n\n## Repo Expectations\n\n- Prefer gramatr memory and project handoff context over ad hoc local summaries.\n- Treat Codex hook augmentation as authoritative when a gramatr intelligence block is present.\n- If gramatr augmentation is missing, query gramatr memory before relying on stale local notes.\n- Prefer TypeScript implementations over shell scripts for client integration code unless the platform requires shell.\n- Maintain test coverage for new hook and utility logic.\n\n## Codex Integration\n\n- Repo-local Codex hooks are configured in `.codex/hooks.json`.\n- `UserPromptSubmit` is responsible for prompt enrichment.\n- `SessionStart` is responsible for session restore and continuity.\n- Hook failures must degrade cleanly and never block the user session.\n- The contract is always `gmtr.intelligence.contract.v2`. There is no\n `unified_packet`, `packet_1`, or `packet_2` \u2014 the v2 packet is the only format.\n- Treat `directives.hard_gates` and `directives.behavioral_rules` as mandatory.\n- Follow `process.phase_template` for effort-gated phase sequencing.\n- Use `process.quality_gate_config` for ISC verification.\n- Consume `enrichment.data.reasoning` for RE and ISC when present.\n- `gramatr_route_request` is mandatory when hook injection is missing/stale.\n- `search_semantic` remains available for follow-up memory expansion.\n<!-- GRAMATR-CODEX-END -->\n";
|
|
8
8
|
export declare function buildInstallPromptSuggestion(target: InstallPromptTarget): string;
|
|
9
9
|
//# sourceMappingURL=instructions.d.ts.map
|