@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.
Files changed (87) hide show
  1. package/dist/bin/hook-dispatcher.d.ts.map +1 -1
  2. package/dist/bin/hook-dispatcher.js +20 -0
  3. package/dist/bin/hook-dispatcher.js.map +1 -1
  4. package/dist/bin/setup.d.ts +11 -0
  5. package/dist/bin/setup.d.ts.map +1 -1
  6. package/dist/bin/setup.js +35 -1
  7. package/dist/bin/setup.js.map +1 -1
  8. package/dist/gramatr +0 -0
  9. package/dist/hooks/agent-gate.d.ts +14 -0
  10. package/dist/hooks/agent-gate.d.ts.map +1 -0
  11. package/dist/hooks/agent-gate.js +75 -0
  12. package/dist/hooks/agent-gate.js.map +1 -0
  13. package/dist/hooks/agent-verify.d.ts +9 -0
  14. package/dist/hooks/agent-verify.d.ts.map +1 -0
  15. package/dist/hooks/agent-verify.js +53 -0
  16. package/dist/hooks/agent-verify.js.map +1 -0
  17. package/dist/hooks/edit-tracker.d.ts +10 -0
  18. package/dist/hooks/edit-tracker.d.ts.map +1 -0
  19. package/dist/hooks/edit-tracker.js +65 -0
  20. package/dist/hooks/edit-tracker.js.map +1 -0
  21. package/dist/hooks/git-gate.d.ts +20 -0
  22. package/dist/hooks/git-gate.d.ts.map +1 -0
  23. package/dist/hooks/git-gate.js +109 -0
  24. package/dist/hooks/git-gate.js.map +1 -0
  25. package/dist/hooks/index.d.ts +4 -0
  26. package/dist/hooks/index.d.ts.map +1 -1
  27. package/dist/hooks/index.js +4 -0
  28. package/dist/hooks/index.js.map +1 -1
  29. package/dist/hooks/lib/client-runtime.d.ts +1 -1
  30. package/dist/hooks/lib/client-runtime.d.ts.map +1 -1
  31. package/dist/hooks/lib/client-runtime.js +9 -5
  32. package/dist/hooks/lib/client-runtime.js.map +1 -1
  33. package/dist/hooks/lib/feedback.d.ts.map +1 -1
  34. package/dist/hooks/lib/feedback.js +4 -2
  35. package/dist/hooks/lib/feedback.js.map +1 -1
  36. package/dist/hooks/lib/intelligence.d.ts.map +1 -1
  37. package/dist/hooks/lib/intelligence.js +4 -1
  38. package/dist/hooks/lib/intelligence.js.map +1 -1
  39. package/dist/hooks/lib/packet-debug-log.d.ts +31 -0
  40. package/dist/hooks/lib/packet-debug-log.d.ts.map +1 -0
  41. package/dist/hooks/lib/packet-debug-log.js +50 -0
  42. package/dist/hooks/lib/packet-debug-log.js.map +1 -0
  43. package/dist/hooks/lib/routing.d.ts +1 -0
  44. package/dist/hooks/lib/routing.d.ts.map +1 -1
  45. package/dist/hooks/lib/routing.js +1 -0
  46. package/dist/hooks/lib/routing.js.map +1 -1
  47. package/dist/hooks/lib/types.d.ts +20 -0
  48. package/dist/hooks/lib/types.d.ts.map +1 -1
  49. package/dist/hooks/manifest.d.ts +12 -0
  50. package/dist/hooks/manifest.d.ts.map +1 -1
  51. package/dist/hooks/manifest.js +16 -0
  52. package/dist/hooks/manifest.js.map +1 -1
  53. package/dist/hooks/rating-capture.d.ts.map +1 -1
  54. package/dist/hooks/rating-capture.js +23 -2
  55. package/dist/hooks/rating-capture.js.map +1 -1
  56. package/dist/hooks/session-end.d.ts.map +1 -1
  57. package/dist/hooks/session-end.js +11 -1
  58. package/dist/hooks/session-end.js.map +1 -1
  59. package/dist/hooks/stop.d.ts.map +1 -1
  60. package/dist/hooks/stop.js +3 -2
  61. package/dist/hooks/stop.js.map +1 -1
  62. package/dist/hooks/user-prompt-submit.d.ts.map +1 -1
  63. package/dist/hooks/user-prompt-submit.js +44 -17
  64. package/dist/hooks/user-prompt-submit.js.map +1 -1
  65. package/dist/proxy/local-client.d.ts +15 -36
  66. package/dist/proxy/local-client.d.ts.map +1 -1
  67. package/dist/proxy/local-client.js +18 -116
  68. package/dist/proxy/local-client.js.map +1 -1
  69. package/dist/setup/instructions.d.ts +2 -2
  70. package/dist/setup/instructions.d.ts.map +1 -1
  71. package/dist/setup/instructions.js +87 -54
  72. package/dist/setup/instructions.js.map +1 -1
  73. package/dist/setup/integrations.d.ts.map +1 -1
  74. package/dist/setup/integrations.js +36 -17
  75. package/dist/setup/integrations.js.map +1 -1
  76. package/dist/setup/platform.d.ts +47 -0
  77. package/dist/setup/platform.d.ts.map +1 -0
  78. package/dist/setup/platform.js +96 -0
  79. package/dist/setup/platform.js.map +1 -0
  80. package/dist/setup/targets.d.ts +2 -2
  81. package/dist/setup/targets.d.ts.map +1 -1
  82. package/dist/setup/targets.js +6 -4
  83. package/dist/setup/targets.js.map +1 -1
  84. package/dist/setup/web-connector.d.ts.map +1 -1
  85. package/dist/setup/web-connector.js +7 -3
  86. package/dist/setup/web-connector.js.map +1 -1
  87. package/package.json +1 -1
@@ -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":"AAqBA,wBAAsB,oBAAoB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2DhF"}
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
- // best effort
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":"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"}
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":"AA2BA,wBAAsB,iBAAiB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2I7E"}
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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"}
@@ -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,CAcvE"}
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"}
@@ -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
- // best effort
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;
@@ -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;QACP,cAAc;IAChB,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC;AACX,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":"AAsFA,wBAAsB,uBAAuB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAmKnF"}
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(30000);
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 = 9000;
13
- const HOOK_PACKET2_TIMEOUT_CAP_MS = 2500;
14
- const HOOK_PACKET2_WAIT_CAP_MS = 4000;
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
- // Pass gramatr interaction_id as session_id so route_request can load
77
- // conversation history. Fall back to the Claude session_id only if no
78
- // interaction has been registered yet (e.g. server was down at SessionStart).
79
- const gramatrSessionId = sessionContext?.interaction_id || sessionId;
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
- const manifest = packet1?.manifest || result;
97
- const packetTokenSavings = packet1?.token_savings || result?.token_savings || {};
98
- const packet2Required = Boolean(manifest?.packet_2_status === 'required'
99
- || manifest?.packet_2_required === true
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
- || result?.enrichment?.required === true);
102
- const enrichmentId = manifest?.enrichment_id
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
- || result?.enrichment?.enrichment_id;
129
+ || manifest?.enrichment_id;
105
130
  if (result && packet2Required && enrichmentId) {
106
131
  enrichment = await fetchEnrichment(enrichmentId, {
107
132
  mode: PACKET_MODE,
108
- timeoutMs: Math.min(5000, HOOK_PACKET2_TIMEOUT_CAP_MS),
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: (packet1?.memory_context || result?.memory_context)?.results?.length || null,
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":"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"}
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 the local MCP hooks listener.
2
+ * local-client.ts — Hook-side client for gramatr tool calls.
3
3
  *
4
- * Phase IV: Hook subprocesses call this module instead of remote-client.ts.
5
- * Routes all tool calls and session-context reads/writes through the local
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
- * Priority:
9
- * 1. Local hooks server (localhost:PORT from ~/.gramatr/.hooks-port)
10
- * auth already loaded in server process, no token resolution needed
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
- /** True when the local hooks server port file exists and contains a valid port. */
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, routing through the local hooks server when available.
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
- * Push session context to the local server's in-memory store.
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(ctx: unknown): Promise<boolean>;
22
+ export declare function pushSessionContextToLocal(_ctx: unknown): Promise<boolean>;
41
23
  /**
42
- * Pull session context from the local server's in-memory store.
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(sessionId: string): Promise<Record<string, unknown> | null>;
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;;;;;;;;;;;;;;;;;;GAkBG;AA6BH,mFAAmF;AACnF,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAID;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAID;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAe9E;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAezC"}
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 the local MCP hooks listener.
2
+ * local-client.ts — Hook-side client for gramatr tool calls.
3
3
  *
4
- * Phase IV: Hook subprocesses call this module instead of remote-client.ts.
5
- * Routes all tool calls and session-context reads/writes through the local
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
- * Priority:
9
- * 1. Local hooks server (localhost:PORT from ~/.gramatr/.hooks-port)
10
- * auth already loaded in server process, no token resolution needed
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
- // ── Port discovery ──
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 getLocalPort() !== null;
14
+ return false;
47
15
  }
48
- // ── Tool call proxy ──
49
16
  /**
50
- * Call a gramatr tool, routing through the local hooks server when available.
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
- * Push session context to the local server's in-memory store.
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(ctx) {
95
- const port = getLocalPort();
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
- * Pull session context from the local server's in-memory store.
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(sessionId) {
120
- const port = getLocalPort();
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;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,uBAAuB;AAEvB,SAAS,eAAe;IACtB,MAAM,GAAG,GAAG,oBAAoB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;IACrE,OAAO,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAClC,CAAC;AAED,qEAAqE;AACrE,IAAI,WAAW,GAA8B,SAAS,CAAC;AAEvD,SAAS,YAAY;IACnB,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/B,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,2BAA2B;IACzC,OAAO,YAAY,EAAE,KAAK,IAAI,CAAC;AACjC,CAAC;AAED,wBAAwB;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAY,EACZ,IAA6B;IAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,aAAa,EAAE;gBAC7D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACpC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAC,CAAC;YACH,6FAA6F;YAC7F,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA0C,CAAC;YACtE,8GAA8G;YAC9G,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,qCAAqC;YACrC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,4BAA4B;AAE5B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,GAAY;IAC1D,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,gBAAgB,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACzB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,GAAG,IAAI,CAAC,CAAC,mCAAmC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,SAAiB;IAEjB,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,oBAAoB,IAAI,6BAA6B,kBAAkB,CAAC,SAAS,CAAC,EAAE,EACpF,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CACtC,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6C,CAAC;QACzE,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
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. Local hooks and the local MCP server inject\nintelligence as `[gramatr intelligence \u2014 ...]` into your context.\n\nFollow the injected JSON contract. Prefer `unified_packet` when present.\nIt is the canonical complete contract. Fall back to `packet_1` /`packet_2`\nonly when `unified_packet` is absent.\n\nUse gramatr tools and packet data instead of stale local markdown. Prefer\npacket memory/search results when present. Use `search_semantic` only for\nfollow-up expansion, not as a replacement for the injected packet.\n\nWhen the contract includes behavioral rules, directives, phase templates,\nISC/quality-gate data, or formatting constraints, treat those fields as\nexecution requirements rather than optional suggestions. Do not reconstruct\nthem from local prose when the structured fields are present.\n\nIf the server is unavailable, degrade cleanly and keep working, but do not\npretend intelligence was delivered.\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 JSON 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- Prefer `unified_packet` as the canonical complete contract. When it is absent, treat `packet_1` as mandatory deterministic input and `packet_2` as mandatory when required.\n- If `packet_2.required === true`, call `gramatr_get_packet_two` with `enrichment_id` before deep execution.\n- Consume structured JSON fields as source of truth. Do not replace packet-provided behavioral rules, ISC gates, quality gates, or format constraints with local prose summaries.\n- `gramatr_route_request` is mandatory when hook injection is missing/stale for the current user prompt.\n- `search_semantic` remains available for follow-up memory expansion, not as a replacement for packet flow.\n<!-- GRAMATR-CODEX-END -->\n";
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