@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 +1 @@
1
- {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/setup/instructions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AACvD,eAAO,MAAM,iBAAiB,iCAAiC,CAAC;AAChE,eAAO,MAAM,eAAe,+BAA+B,CAAC;AAE5D,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,OAAO,GACP,YAAY,GACZ,gBAAgB,GAChB,iBAAiB,GACjB,QAAQ,GACR,UAAU,GACV,QAAQ,CAAC;AAEb,eAAO,MAAM,oBAAoB,igCAsBhC,CAAC;AAEF,eAAO,MAAM,cAAc,wgDAuB1B,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAehF"}
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/setup/instructions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AACvD,eAAO,MAAM,iBAAiB,iCAAiC,CAAC;AAChE,eAAO,MAAM,eAAe,+BAA+B,CAAC;AAE5D,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,OAAO,GACP,YAAY,GACZ,gBAAgB,GAChB,iBAAiB,GACjB,QAAQ,GACR,UAAU,GACV,QAAQ,CAAC;AAEb,eAAO,MAAM,oBAAoB,4sDAsChC,CAAC;AAEF,eAAO,MAAM,cAAc,s6CA0B1B,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAehF"}
@@ -5,24 +5,40 @@ export const CODEX_BLOCK_END = '<!-- GRAMATR-CODEX-END -->';
5
5
  export const CLAUDE_CODE_GUIDANCE = `${CLAUDE_BLOCK_START}
6
6
  # gramatr
7
7
 
8
- You have gramatr installed. Local hooks and the local MCP server inject
9
- intelligence as \`[gramatr intelligence ...]\` into your context.
10
-
11
- Follow the injected JSON contract. Prefer \`unified_packet\` when present.
12
- It is the canonical complete contract. Fall back to \`packet_1\` /\`packet_2\`
13
- only when \`unified_packet\` is absent.
14
-
15
- Use gramatr tools and packet data instead of stale local markdown. Prefer
16
- packet memory/search results when present. Use \`search_semantic\` only for
17
- follow-up expansion, not as a replacement for the injected packet.
18
-
19
- When the contract includes behavioral rules, directives, phase templates,
20
- ISC/quality-gate data, or formatting constraints, treat those fields as
21
- execution requirements rather than optional suggestions. Do not reconstruct
22
- them from local prose when the structured fields are present.
23
-
24
- If the server is unavailable, degrade cleanly and keep working, but do not
25
- pretend intelligence was delivered.
8
+ You have gramatr installed. Hooks inject a \`gmtr.intelligence.contract.v2\`
9
+ packet into your context on every prompt.
10
+
11
+ **Follow the packet.** It contains classification, behavioral directives,
12
+ phase templates, capability audit, quality gates, memory/search results,
13
+ agent suggestions, and enrichment (RE + ISC scaffold).
14
+
15
+ **Mandatory fields:**
16
+ - \`directives.hard_gates\` non-negotiable behavioral constraints
17
+ - \`directives.behavioral_rules\` algorithm phases, code rules, safety rules
18
+ - \`process.phase_template\` — effort-gated phase sequence
19
+ - \`process.quality_gate_config\` ISC verification rules
20
+ - \`enrichment.data.reasoning\` RE + ISC when present
21
+
22
+ **Memory:** Use gramatr MCP tools (\`search_semantic\`, \`create_entity\`,
23
+ \`add_observation\`), not local markdown files.
24
+
25
+ **Sub-agent composition:** Before launching any sub-agent for non-trivial work,
26
+ call \`gramatr_route_request\` with the task prompt first. Use the returned
27
+ packet to compose the brief: RE → task description, ISC scaffold → acceptance
28
+ criteria, orchestration.agents.composed → agent system prompt, hard_gates →
29
+ constraints.
30
+
31
+ **Effort-gated phases:**
32
+ - instant: RESPOND only
33
+ - fast: OBSERVE → RESPOND
34
+ - standard: OBSERVE → PLAN → BUILD → VERIFY
35
+ - extended+: OBSERVE → THINK → PLAN → BUILD → EXECUTE → VERIFY → LEARN
36
+
37
+ **Identity:** Read from \`~/.gramatr/settings.json\` — \`daidentity\` for your
38
+ name, \`principal\` for the user's name.
39
+
40
+ **If the server is unavailable:** Degrade cleanly and keep working. Use the
41
+ 7-phase structure. Create ISC before work. Never combine phases.
26
42
  ${CLAUDE_BLOCK_END}
27
43
  `;
28
44
  export const CODEX_GUIDANCE = `${CODEX_BLOCK_START}
@@ -31,7 +47,7 @@ export const CODEX_GUIDANCE = `${CODEX_BLOCK_START}
31
47
  ## Repo Expectations
32
48
 
33
49
  - Prefer gramatr memory and project handoff context over ad hoc local summaries.
34
- - Treat Codex hook augmentation as authoritative when a gramatr JSON intelligence block is present.
50
+ - Treat Codex hook augmentation as authoritative when a gramatr intelligence block is present.
35
51
  - If gramatr augmentation is missing, query gramatr memory before relying on stale local notes.
36
52
  - Prefer TypeScript implementations over shell scripts for client integration code unless the platform requires shell.
37
53
  - Maintain test coverage for new hook and utility logic.
@@ -42,11 +58,14 @@ export const CODEX_GUIDANCE = `${CODEX_BLOCK_START}
42
58
  - \`UserPromptSubmit\` is responsible for prompt enrichment.
43
59
  - \`SessionStart\` is responsible for session restore and continuity.
44
60
  - Hook failures must degrade cleanly and never block the user session.
45
- - 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.
46
- - If \`packet_2.required === true\`, call \`gramatr_get_packet_two\` with \`enrichment_id\` before deep execution.
47
- - 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.
48
- - \`gramatr_route_request\` is mandatory when hook injection is missing/stale for the current user prompt.
49
- - \`search_semantic\` remains available for follow-up memory expansion, not as a replacement for packet flow.
61
+ - The contract is always \`gmtr.intelligence.contract.v2\`. There is no
62
+ \`unified_packet\`, \`packet_1\`, or \`packet_2\` the v2 packet is the only format.
63
+ - Treat \`directives.hard_gates\` and \`directives.behavioral_rules\` as mandatory.
64
+ - Follow \`process.phase_template\` for effort-gated phase sequencing.
65
+ - Use \`process.quality_gate_config\` for ISC verification.
66
+ - Consume \`enrichment.data.reasoning\` for RE and ISC when present.
67
+ - \`gramatr_route_request\` is mandatory when hook injection is missing/stale.
68
+ - \`search_semantic\` remains available for follow-up memory expansion.
50
69
  ${CODEX_BLOCK_END}
51
70
  `;
52
71
  export function buildInstallPromptSuggestion(target) {
@@ -73,31 +92,32 @@ function buildHookedPromptSuggestion(target) {
73
92
  : 'Codex';
74
93
  return `# gramatr (${platform})
75
94
 
76
- gramatr is installed locally. Hooks and the local MCP runtime usually inject
77
- the intelligence packet automatically at session start and prompt submit time.
95
+ gramatr is installed locally. Hooks inject a \`gmtr.intelligence.contract.v2\`
96
+ packet into your context at session start and on every user prompt.
78
97
 
79
- When a \`[gramatr intelligence]\` block is present, follow it as authoritative.
98
+ When a gramatr intelligence block is present, follow it as authoritative.
80
99
  When the packet is missing or clearly stale, call \`gramatr_route_request\`
81
100
  with the user's request before answering.
82
101
 
83
- Treat \`unified_packet\` as the canonical complete contract when present.
84
- Otherwise treat \`packet_1\` as the canonical fast contract envelope. All
85
- intelligence data should be consumed from JSON blocks (not prose). Read from
86
- \`unified_packet\` first, then \`packet_1.manifest\`,
87
- \`packet_1.classification\`, \`packet_1.search_results\` /
88
- \`packet_1.memory_context\`, and any packet-provided behavioral rules,
89
- quality gates, phase templates, or format constraints when present.
90
- Treat \`required_actions\` and \`contract_enforcement.hard_gates\` as mandatory.
102
+ The packet contains classification (effort, intent, confidence), behavioral
103
+ directives, phase templates, capability audit, quality gates, memory/search
104
+ results, agent suggestions, and enrichment (reverse engineering + ISC scaffold).
105
+
106
+ Treat \`directives.hard_gates\` and \`directives.behavioral_rules\` as mandatory.
107
+ Follow \`process.phase_template\` for effort-gated phase sequencing.
108
+ Use \`process.quality_gate_config\` for ISC verification.
109
+ Consume \`enrichment.data.reasoning\` for RE and ISC when present.
110
+
91
111
  If responses are wrapped with \`schema: "gmtr.tool.result.v1"\`, parse the
92
112
  \`data\` field as the canonical tool payload.
93
113
 
94
- If \`packet_1.manifest.packet_2_status === "required"\`, call
95
- \`gramatr_get_packet_two\` with \`packet_1.manifest.enrichment_id\` before
96
- proceeding. Packet 2 is mandatory whenever it is required.
97
-
98
114
  For continuity questions like "what were we doing?" or "what changed?",
99
115
  call \`gramatr_load_handoff\` first, then \`search_semantic\` for detail.
100
116
 
117
+ **Feedback loop (MANDATORY):** After completing non-trivial work, you MUST:
118
+ 1. Call \`gramatr_classification_feedback\` — trains the classifier.
119
+ 2. Call \`gramatr_save_reflection\` — feeds the learning pipeline.
120
+
101
121
  Use gramatr tools for memory and project state. Do not maintain separate
102
122
  notes when gramatr state is available.`;
103
123
  }
@@ -113,25 +133,38 @@ function buildHooklessLocalPromptSuggestion(target) {
113
133
 
114
134
  You have gramatr connected as an MCP server.
115
135
 
116
- Before responding to any user message, call \`gramatr_route_request\` with the
117
- user's request. This returns the current project context, memory, behavioral
118
- guidance, and effort classification needed for a grounded response.
136
+ **Before responding to any user message,** call \`gramatr_route_request\` with
137
+ the user's prompt. This returns a \`gmtr.intelligence.contract.v2\` packet.
138
+
139
+ **Follow the packet.** It contains classification, behavioral directives,
140
+ phase templates, capability audit, quality gates, memory/search results,
141
+ agent suggestions, and enrichment (RE + ISC scaffold).
142
+
143
+ **Mandatory fields:**
144
+ - \`directives.hard_gates\` — non-negotiable behavioral constraints
145
+ - \`directives.behavioral_rules\` — algorithm phases, code rules, safety rules
146
+ - \`process.phase_template\` — effort-gated phase sequence
147
+ - \`process.quality_gate_config\` — ISC verification rules
148
+ - \`enrichment.data.reasoning\` — RE + ISC when present
149
+
150
+ **Memory:** Use gramatr MCP tools (\`search_semantic\`, \`create_entity\`,
151
+ \`add_observation\`) as the source of truth — not local notes.
152
+
153
+ **Effort-gated phases:**
154
+ - instant: RESPOND only
155
+ - fast: OBSERVE → RESPOND
156
+ - standard: OBSERVE → PLAN → BUILD → VERIFY
157
+ - extended+: OBSERVE → THINK → PLAN → BUILD → EXECUTE → VERIFY → LEARN
119
158
 
120
- Use \`unified_packet\` as the canonical complete response when present.
121
- Otherwise use \`packet_1\` as the canonical response envelope. If
122
- \`packet_1.manifest.packet_2_status === "required"\`, call
123
- \`gramatr_get_packet_two\` with the returned \`enrichment_id\` and treat Packet 2
124
- as mandatory before full execution.
125
159
  If responses are wrapped with \`schema: "gmtr.tool.result.v1"\`, use
126
160
  \`data\` as the canonical payload.
127
- Consume packet-provided behavioral rules, ISC/quality-gate fields, and
128
- format constraints directly from the JSON contract when present.
129
- Treat \`required_actions\` and \`contract_enforcement.hard_gates\` as mandatory.
130
161
 
131
- For continuity questions like "what were we doing?" or "what changed?",
132
- call \`gramatr_load_handoff\` before answering, then \`search_semantic\`
133
- for additional detail.
162
+ **Feedback loop (MANDATORY):** After completing non-trivial work, you MUST:
163
+ 1. Call \`gramatr_classification_feedback\` with the original prompt — evaluates if effort, intent, and skills were classified correctly. This trains the classifier.
164
+ 2. Call \`gramatr_save_reflection\` — captures what worked, what didn't, what a smarter AI would do differently. This feeds the learning pipeline.
165
+ Skipping these breaks the training flywheel. Without feedback, the classifier never improves.
134
166
 
135
- Use gramatr as the source of truth for memory and project state.`;
167
+ For continuity questions ("what were we doing?", "what changed?"),
168
+ call \`gramatr_load_handoff\` before answering, then \`search_semantic\`.`;
136
169
  }
137
170
  //# sourceMappingURL=instructions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/setup/instructions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,4BAA4B,CAAC;AAY5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,kBAAkB;;;;;;;;;;;;;;;;;;;;;EAqBvD,gBAAgB;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,iBAAiB;;;;;;;;;;;;;;;;;;;;;;EAsBhD,eAAe;CAChB,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAAC,MAA2B;IACtE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,aAAa,CAAC;QACnB,KAAK,OAAO,CAAC;QACb,KAAK,YAAY;YACf,OAAO,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,gBAAgB,CAAC;QACtB,KAAK,iBAAiB,CAAC;QACvB,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,kCAAkC,CAAC,MAAM,CAAC,CAAC;QACpD;YACE,OAAO,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,MAA8C;IACjF,MAAM,QAAQ,GAAG,MAAM,KAAK,aAAa;QACvC,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,MAAM,KAAK,YAAY;YACvB,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,OAAO,CAAC;IAEd,OAAO,cAAc,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA4BQ,CAAC;AACxC,CAAC;AAED,SAAS,kCAAkC,CACzC,MAA+E;IAE/E,MAAM,WAAW,GAAkC;QACjD,gBAAgB,EAAE,gBAAgB;QAClC,iBAAiB,EAAE,iBAAiB;QACpC,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,OAAO,cAAc,WAAW,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;iEAuBuB,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/setup/instructions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,4BAA4B,CAAC;AAY5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCvD,gBAAgB;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;EAyBhD,eAAe;CAChB,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAAC,MAA2B;IACtE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,aAAa,CAAC;QACnB,KAAK,OAAO,CAAC;QACb,KAAK,YAAY;YACf,OAAO,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,gBAAgB,CAAC;QACtB,KAAK,iBAAiB,CAAC;QACvB,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,kCAAkC,CAAC,MAAM,CAAC,CAAC;QACpD;YACE,OAAO,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,MAA8C;IACjF,MAAM,QAAQ,GAAG,MAAM,KAAK,aAAa;QACvC,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,MAAM,KAAK,YAAY;YACvB,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,OAAO,CAAC;IAEd,OAAO,cAAc,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA6BQ,CAAC;AACxC,CAAC;AAED,SAAS,kCAAkC,CACzC,MAA+E;IAE/E,MAAM,WAAW,GAAkC;QACjD,gBAAgB,EAAE,gBAAgB;QAClC,iBAAiB,EAAE,iBAAiB;QACpC,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,OAAO,cAAc,WAAW,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0EAoCgC,CAAC;AAC3E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/setup/integrations.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;CAClD;AAYD,eAAO,MAAM,qBAAqB,gBAAgB,CAAC;AAwEnD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAExE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAEvE;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpD,OAAO,EAAE,gBAAgB,GACxB,gBAAgB,CAQlB;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAalE;AAED,wBAAgB,yBAAyB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAIhF"}
1
+ {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/setup/integrations.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;CAClD;AAYD,eAAO,MAAM,qBAAqB,gBAAgB,CAAC;AA6EnD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAExE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAEvE;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpD,OAAO,EAAE,gBAAgB,GACxB,gBAAgB,CAyBlB;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAalE;AAED,wBAAgB,yBAAyB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAIhF"}
@@ -1,17 +1,22 @@
1
1
  export const MCP_HOOK_BIN_RELATIVE = 'bin/gramatr';
2
2
  const TS_RUNNER = 'npx tsx';
3
3
  const CLAUDE_HOOKS = [
4
- { event: 'PreToolUse', matcher: 'Bash', mcpHookName: 'input-validator' },
5
- { event: 'PreToolUse', matcher: 'Edit', mcpHookName: 'input-validator' },
6
- { event: 'PreToolUse', matcher: 'Write', mcpHookName: 'input-validator' },
7
- { event: 'PreToolUse', matcher: 'Read', mcpHookName: 'input-validator' },
8
- { event: 'PreToolUse', matcher: 'mcp__.*gramatr.*__', mcpHookName: 'input-validator' },
9
- { event: 'PostToolUse', matcher: 'mcp__.*gramatr.*__', mcpHookName: 'tool-tracker' },
10
- { event: 'UserPromptSubmit', mcpHookName: 'rating-capture' },
11
- { event: 'UserPromptSubmit', mcpHookName: 'user-prompt-submit' },
12
- { event: 'SessionStart', mcpHookName: 'session-start', statusMessage: 'Loading grāmatr session context' },
13
- { event: 'SessionEnd', mcpHookName: 'session-end', statusMessage: 'Saving grāmatr session' },
14
- { event: 'Stop', mcpHookName: 'stop', statusMessage: 'Submitting grāmatr classification feedback' },
4
+ { event: 'PreToolUse', matcher: 'Agent', mcpHookName: 'agent-gate', hookArgs: ['--claude-code'] },
5
+ { event: 'PreToolUse', matcher: 'Bash', mcpHookName: 'git-gate', hookArgs: ['--claude-code'] },
6
+ { event: 'PreToolUse', matcher: 'Bash', mcpHookName: 'input-validator', hookArgs: ['--claude-code'] },
7
+ { event: 'PreToolUse', matcher: 'Edit', mcpHookName: 'input-validator', hookArgs: ['--claude-code'] },
8
+ { event: 'PreToolUse', matcher: 'Edit', mcpHookName: 'edit-tracker', hookArgs: ['--claude-code'] },
9
+ { event: 'PreToolUse', matcher: 'Write', mcpHookName: 'input-validator', hookArgs: ['--claude-code'] },
10
+ { event: 'PreToolUse', matcher: 'Write', mcpHookName: 'edit-tracker', hookArgs: ['--claude-code'] },
11
+ { event: 'PreToolUse', matcher: 'Read', mcpHookName: 'input-validator', hookArgs: ['--claude-code'] },
12
+ { event: 'PreToolUse', matcher: 'mcp__.*gramatr.*__', mcpHookName: 'input-validator', hookArgs: ['--claude-code'] },
13
+ { event: 'PostToolUse', matcher: 'Agent', mcpHookName: 'agent-verify', hookArgs: ['--claude-code'] },
14
+ { event: 'PostToolUse', matcher: 'mcp__.*gramatr.*__', mcpHookName: 'tool-tracker', hookArgs: ['--claude-code'] },
15
+ { event: 'UserPromptSubmit', mcpHookName: 'rating-capture', hookArgs: ['--claude-code'] },
16
+ { event: 'UserPromptSubmit', mcpHookName: 'user-prompt-submit', hookArgs: ['--claude-code'] },
17
+ { event: 'SessionStart', mcpHookName: 'session-start', hookArgs: ['--claude-code'], statusMessage: 'Loading grāmatr session context' },
18
+ { event: 'SessionEnd', mcpHookName: 'session-end', hookArgs: ['--claude-code'], statusMessage: 'Saving grāmatr session' },
19
+ { event: 'Stop', mcpHookName: 'stop', hookArgs: ['--claude-code'], statusMessage: 'Submitting grāmatr classification feedback' },
15
20
  ];
16
21
  const CODEX_HOOKS = [
17
22
  {
@@ -73,12 +78,26 @@ export function buildCodexHooksFile(clientDir) {
73
78
  }
74
79
  export function mergeManagedHooks(existing, managed) {
75
80
  const existingHooks = existing.hooks || {};
76
- return {
77
- hooks: {
78
- ...existingHooks,
79
- ...managed.hooks,
80
- },
81
- };
81
+ const merged = {};
82
+ const managedEvents = new Set(Object.keys(managed.hooks));
83
+ // For managed events, replace entirely (we own all entries)
84
+ for (const event of managedEvents) {
85
+ merged[event] = managed.hooks[event];
86
+ }
87
+ // For non-managed events, keep existing but filter out stale gramatr hooks
88
+ for (const [event, entries] of Object.entries(existingHooks)) {
89
+ if (managedEvents.has(event))
90
+ continue;
91
+ merged[event] = entries.filter((entry) => {
92
+ const cmds = entry.hooks ?? [];
93
+ return !cmds.some((h) => /gramatr/i.test(h.command));
94
+ });
95
+ // Drop the event key entirely if filtering removed all entries
96
+ if (merged[event].length === 0) {
97
+ delete merged[event];
98
+ }
99
+ }
100
+ return { hooks: merged };
82
101
  }
83
102
  export function ensureCodexHooksFeature(configToml) {
84
103
  const text = configToml.trimEnd();
@@ -1 +1 @@
1
- {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/setup/integrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/setup/integrations.ts"],"names":[],"mappings":"AA0BA,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAEnD,MAAM,SAAS,GAAG,SAAS,CAAC;AAE5B,MAAM,YAAY,GAAe;IAC/B,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACjG,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IAC9F,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACrG,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACrG,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IAClG,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACtG,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACnG,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACrG,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACnH,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACpG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACjH,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACzF,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IAC7F,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,iCAAiC,EAAE;IACtI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,wBAAwB,EAAE;IACzH,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,4CAA4C,EAAE;CACjI,CAAC;AAEF,MAAM,WAAW,GAAe;IAC9B;QACE,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,eAAe;QAC5B,QAAQ,EAAE,CAAC,SAAS,CAAC;QACrB,aAAa,EAAE,iCAAiC;QAChD,OAAO,EAAE,EAAE;KACZ;IACD;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,CAAC,SAAS,CAAC;QACrB,aAAa,EAAE,iCAAiC;QAChD,OAAO,EAAE,EAAE;KACZ;IACD;QACE,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,CAAC,SAAS,CAAC;QACrB,aAAa,EAAE,4CAA4C;QAC3D,OAAO,EAAE,EAAE;KACZ;CACF,CAAC;AAEF,SAAS,gBAAgB,CAAC,SAAiB,EAAE,IAAc;IACzD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,SAAS,IAAI,qBAAqB,UAAU,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,GAAG,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,KAAiB;IAC1D,MAAM,KAAK,GAA8C,EAAE,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAA4B;YACrC,KAAK,EAAE,CAAC;oBACN,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC;oBAC1C,aAAa,EAAE,IAAI,CAAC,aAAa;oBACjC,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC;SACH,CAAC;QACF,IAAI,IAAI,CAAC,OAAO;YAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,OAAO,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAoD,EACpD,OAAyB;IAEzB,MAAM,aAAa,GAAI,QAA6B,CAAC,KAAK,IAAI,EAAE,CAAC;IACjE,MAAM,MAAM,GAA8C,EAAE,CAAC;IAE7D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAE1D,4DAA4D;IAC5D,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,2EAA2E;IAC3E,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7D,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QACvC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,+DAA+D;QAC/D,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,UAAkB;IACxD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAClC,IAAI,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvF,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IACD,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,IAAI,CAAC;QAC9E,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,gCAAgC,CAAC,IAAI,CAAC;IACxF,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,OAAO,GAAG,MAAM,kCAAkC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,OAAO,EAAE,wBAAwB;KAClC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Platform-specific binary resolution for gramatr setup.
3
+ *
4
+ * build-all-targets.mjs compiles 5 platform binaries into dist/.
5
+ * This module detects the current OS/arch and maps it to the correct
6
+ * pre-compiled binary name so `gramatr setup` installs the right one.
7
+ */
8
+ export interface PlatformBinaryResult {
9
+ /** Filename of the pre-compiled binary (e.g. 'gramatr-linux-x64') */
10
+ sourceName: string;
11
+ /** Destination filename (e.g. 'gramatr' or 'gramatr.exe') */
12
+ destName: string;
13
+ }
14
+ /**
15
+ * Map process.platform + process.arch to the pre-compiled binary filename
16
+ * produced by build-all-targets.mjs.
17
+ *
18
+ * Returns null if the current platform/arch combination is not supported.
19
+ */
20
+ export declare function getPlatformBinaryName(platform?: string, arch?: string): PlatformBinaryResult | null;
21
+ export interface InstallBinaryOptions {
22
+ /** Directory containing pre-compiled binaries (e.g. packages/mcp/dist/) */
23
+ distDir: string;
24
+ /** Target directory (e.g. ~/.gramatr/bin/) */
25
+ destDir: string;
26
+ /** Override platform detection for testing */
27
+ platform?: string;
28
+ /** Override arch detection for testing */
29
+ arch?: string;
30
+ /** If true, log actions but do not write */
31
+ dryRun?: boolean;
32
+ }
33
+ export interface InstallBinaryResult {
34
+ status: 'installed' | 'fallback' | 'skipped';
35
+ message: string;
36
+ }
37
+ /**
38
+ * Install the correct pre-compiled binary for the current platform.
39
+ *
40
+ * 1. Resolves the platform-specific binary name
41
+ * 2. Checks if it exists in distDir
42
+ * 3. Copies it atomically (write .new, then rename) to destDir
43
+ * 4. Returns 'fallback' if the binary is not found (caller should
44
+ * fall back to local bun build --compile)
45
+ */
46
+ export declare function installPlatformBinary(options: InstallBinaryOptions): InstallBinaryResult;
47
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/setup/platform.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,GAAE,MAAyB,EACnC,IAAI,GAAE,MAAqB,GAC1B,oBAAoB,GAAG,IAAI,CAmB7B;AAED,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CA4BxF"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Platform-specific binary resolution for gramatr setup.
3
+ *
4
+ * build-all-targets.mjs compiles 5 platform binaries into dist/.
5
+ * This module detects the current OS/arch and maps it to the correct
6
+ * pre-compiled binary name so `gramatr setup` installs the right one.
7
+ */
8
+ import { existsSync, copyFileSync, renameSync, mkdirSync, chmodSync } from 'node:fs';
9
+ import { join } from 'node:path';
10
+ /**
11
+ * Map process.platform + process.arch to the pre-compiled binary filename
12
+ * produced by build-all-targets.mjs.
13
+ *
14
+ * Returns null if the current platform/arch combination is not supported.
15
+ */
16
+ export function getPlatformBinaryName(platform = process.platform, arch = process.arch) {
17
+ const isWindows = platform === 'win32';
18
+ const destName = isWindows ? 'gramatr.exe' : 'gramatr';
19
+ switch (platform) {
20
+ case 'darwin':
21
+ if (arch === 'arm64')
22
+ return { sourceName: 'gramatr-darwin-arm64', destName };
23
+ if (arch === 'x64')
24
+ return { sourceName: 'gramatr-darwin-x64', destName };
25
+ return null;
26
+ case 'linux':
27
+ if (arch === 'x64')
28
+ return { sourceName: 'gramatr-linux-x64', destName };
29
+ if (arch === 'arm64')
30
+ return { sourceName: 'gramatr-linux-arm64', destName };
31
+ return null;
32
+ case 'win32':
33
+ if (arch === 'x64')
34
+ return { sourceName: 'gramatr-windows-x64.exe', destName };
35
+ return null;
36
+ default:
37
+ return null;
38
+ }
39
+ }
40
+ /**
41
+ * Install the correct pre-compiled binary for the current platform.
42
+ *
43
+ * 1. Resolves the platform-specific binary name
44
+ * 2. Checks if it exists in distDir
45
+ * 3. Copies it atomically (write .new, then rename) to destDir
46
+ * 4. Returns 'fallback' if the binary is not found (caller should
47
+ * fall back to local bun build --compile)
48
+ */
49
+ export function installPlatformBinary(options) {
50
+ const { distDir, destDir, dryRun = false } = options;
51
+ const platform = options.platform ?? process.platform;
52
+ const arch = options.arch ?? process.arch;
53
+ const binaryInfo = getPlatformBinaryName(platform, arch);
54
+ if (!binaryInfo) {
55
+ return {
56
+ status: 'fallback',
57
+ message: `Unsupported platform/arch: ${platform}/${arch}`,
58
+ };
59
+ }
60
+ const sourcePath = join(distDir, binaryInfo.sourceName);
61
+ if (!existsSync(sourcePath)) {
62
+ // Also check for the generic 'gramatr' binary (from build-binary.mjs single-platform build)
63
+ const genericPath = join(distDir, binaryInfo.destName);
64
+ if (!existsSync(genericPath)) {
65
+ return {
66
+ status: 'fallback',
67
+ message: `Binary not found: ${sourcePath} (and no generic ${genericPath})`,
68
+ };
69
+ }
70
+ // Use the generic binary
71
+ return copyBinaryAtomic(genericPath, destDir, binaryInfo.destName, dryRun, platform);
72
+ }
73
+ return copyBinaryAtomic(sourcePath, destDir, binaryInfo.destName, dryRun, platform);
74
+ }
75
+ function copyBinaryAtomic(sourcePath, destDir, destName, dryRun, platform) {
76
+ const destPath = join(destDir, destName);
77
+ const tempPath = `${destPath}.new`;
78
+ if (dryRun) {
79
+ return {
80
+ status: 'installed',
81
+ message: `Dry run: would copy ${sourcePath} -> ${destPath}`,
82
+ };
83
+ }
84
+ mkdirSync(destDir, { recursive: true });
85
+ copyFileSync(sourcePath, tempPath);
86
+ // Set executable permission on non-Windows
87
+ if (platform !== 'win32') {
88
+ chmodSync(tempPath, 0o755);
89
+ }
90
+ renameSync(tempPath, destPath);
91
+ return {
92
+ status: 'installed',
93
+ message: `Installed ${sourcePath} -> ${destPath}`,
94
+ };
95
+ }
96
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/setup/platform.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAC;AAS1C;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,OAAO,CAAC,QAAQ,EACnC,OAAe,OAAO,CAAC,IAAI;IAE3B,MAAM,SAAS,GAAG,QAAQ,KAAK,OAAO,CAAC;IACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC;YAC9E,IAAI,IAAI,KAAK,KAAK;gBAAE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,IAAI,IAAI,KAAK,KAAK;gBAAE,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC;YACzE,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC;YAC7E,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,IAAI,IAAI,KAAK,KAAK;gBAAE,OAAO,EAAE,UAAU,EAAE,yBAAyB,EAAE,QAAQ,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC;QACd;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAoBD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA6B;IACjE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1C,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,8BAA8B,QAAQ,IAAI,IAAI,EAAE;SAC1D,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,4FAA4F;QAC5F,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,qBAAqB,UAAU,oBAAoB,WAAW,GAAG;aAC3E,CAAC;QACJ,CAAC;QACD,yBAAyB;QACzB,OAAO,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,gBAAgB,CACvB,UAAkB,EAClB,OAAe,EACf,QAAgB,EAChB,MAAe,EACf,QAAgB;IAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,QAAQ,MAAM,CAAC;IAEnC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,uBAAuB,UAAU,OAAO,QAAQ,EAAE;SAC5D,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEnC,2CAA2C;IAC3C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE/B,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,aAAa,UAAU,OAAO,QAAQ,EAAE;KAClD,CAAC;AACJ,CAAC"}
@@ -41,8 +41,8 @@ export declare function getVscodeConfigPath(home: string): string;
41
41
  export declare function getGeminiExtensionDir(home: string): string;
42
42
  export declare function getGeminiHooksPath(home: string): string;
43
43
  export declare function getGeminiManifestPath(home: string): string;
44
- export declare function buildLocalMcpServerEntry(home: string, serverUrl: string): McpCommandServerEntry;
44
+ export declare function buildLocalMcpServerEntry(home: string, serverUrl: string, platform?: string): McpCommandServerEntry;
45
45
  export declare function mergeMcpServerConfig(existing: McpJsonConfig, entry: McpCommandServerEntry): McpJsonConfig;
46
46
  export declare function buildGeminiExtensionManifest(home: string, serverUrl: string): GeminiExtensionManifest;
47
- export declare function buildGeminiHooksFile(home: string): GeminiHooksFile;
47
+ export declare function buildGeminiHooksFile(home: string, platform?: string): GeminiHooksFile;
48
48
  //# sourceMappingURL=targets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../src/setup/targets.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;CAC/C;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,MAAM,CAKpG;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,MAAM,CAKrG;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,qBAAqB,CAQ/F;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,qBAAqB,GAAG,aAAa,CAQzG;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAYrG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CA6ClE"}
1
+ {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../src/setup/targets.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;CAC/C;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,MAAM,CAKpG;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,MAAM,CAKrG;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,qBAAqB,CASpI;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,qBAAqB,GAAG,aAAa,CAQzG;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAYrG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,eAAe,CA8CvG"}
@@ -29,9 +29,10 @@ export function getGeminiHooksPath(home) {
29
29
  export function getGeminiManifestPath(home) {
30
30
  return join(getGeminiExtensionDir(home), 'gemini-extension.json');
31
31
  }
32
- export function buildLocalMcpServerEntry(home, serverUrl) {
32
+ export function buildLocalMcpServerEntry(home, serverUrl, platform = process.platform) {
33
+ const binaryName = platform === 'win32' ? 'gramatr.exe' : 'gramatr';
33
34
  return {
34
- command: join(home, '.gramatr', 'bin', 'gramatr'),
35
+ command: join(home, '.gramatr', 'bin', binaryName),
35
36
  env: {
36
37
  GRAMATR_DIR: join(home, '.gramatr'),
37
38
  GRAMATR_URL: serverUrl,
@@ -60,8 +61,9 @@ export function buildGeminiExtensionManifest(home, serverUrl) {
60
61
  },
61
62
  };
62
63
  }
63
- export function buildGeminiHooksFile(home) {
64
- const hookBase = `"${join(home, '.gramatr', 'bin', 'gramatr')}" hook`;
64
+ export function buildGeminiHooksFile(home, platform = process.platform) {
65
+ const binaryName = platform === 'win32' ? 'gramatr.exe' : 'gramatr';
66
+ const hookBase = `"${join(home, '.gramatr', 'bin', binaryName)}" hook`;
65
67
  return {
66
68
  hooks: {
67
69
  SessionStart: [
@@ -1 +1 @@
1
- {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/setup/targets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/setup/targets.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"web-connector.d.ts","sourceRoot":"","sources":["../../src/setup/web-connector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C,MAAM,WAAW,4BAA4B;IAC3C,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iDAAiD;IACjD,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC;CACtD;AAED,MAAM,WAAW,qBAAqB;IACpC,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,UAAU,EAAE,UAAU,CAAC;IACvB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CAgBvB;AAgDD,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,MAAqB,GAAG,MAAM,CAiC3E;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,MAAM,CAGR;AAMD,wBAAsB,0BAA0B,CAC9C,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAuB7B"}
1
+ {"version":3,"file":"web-connector.d.ts","sourceRoot":"","sources":["../../src/setup/web-connector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C,MAAM,WAAW,4BAA4B;IAC3C,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iDAAiD;IACjD,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC;CACtD;AAED,MAAM,WAAW,qBAAqB;IACpC,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,UAAU,EAAE,UAAU,CAAC;IACvB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CAgBvB;AAgDD,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,MAAqB,GAAG,MAAM,CAqC3E;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,MAAM,CAGR;AAMD,wBAAsB,0BAA0B,CAC9C,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAuB7B"}
@@ -86,9 +86,10 @@ the user's prompt. This returns essential context:
86
86
  - Effort level classification
87
87
  - Matched capabilities and phase templates
88
88
 
89
- Treat packet_1 as the canonical response envelope. If
90
- packet_1.manifest.packet_2_status is "required", call gramatr_get_packet_two
91
- with packet_1.manifest.enrichment_id before proceeding.
89
+ The response is a gmtr.intelligence.contract.v2 packet containing classification,
90
+ behavioral directives, phase templates, quality gates, and enrichment data.
91
+ Treat directives.hard_gates and directives.behavioral_rules as mandatory.
92
+ Follow process.phase_template for effort-gated phase sequencing.
92
93
  If a tool response includes schema "gmtr.tool.result.v1", consume the
93
94
  payload from its data field.
94
95
 
@@ -98,6 +99,9 @@ critical context. With it, you deliver targeted, personalized answers.
98
99
  For continuity questions ("what were we doing?", "what changed?"), call
99
100
  gramatr_load_handoff before answering, then search_semantic for detail.
100
101
 
102
+ After completing non-trivial work, you MUST call gramatr_classification_feedback
103
+ (trains the classifier) and gramatr_save_reflection (feeds the learning pipeline).
104
+
101
105
  Use gramatr tools for memory — do not maintain your own notes.`;
102
106
  }
103
107
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"web-connector.js","sourceRoot":"","sources":["../../src/setup/web-connector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-connector.js","sourceRoot":"","sources":["../../src/setup/web-connector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gramatr/mcp",
3
- "version": "0.7.16",
3
+ "version": "0.7.20",
4
4
  "description": "grāmatr — Intelligence middleware for AI agents. Pre-classifies every request, injects relevant memory and behavioral context, enforces data quality, and maintains session continuity across Claude, ChatGPT, Codex, Cursor, Gemini, and any MCP-compatible client.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "publishConfig": {