@gramatr/mcp 0.7.16 → 0.7.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/hook-dispatcher.d.ts.map +1 -1
- package/dist/bin/hook-dispatcher.js +20 -0
- package/dist/bin/hook-dispatcher.js.map +1 -1
- package/dist/bin/setup.d.ts +11 -0
- package/dist/bin/setup.d.ts.map +1 -1
- package/dist/bin/setup.js +35 -1
- package/dist/bin/setup.js.map +1 -1
- package/dist/gramatr +0 -0
- package/dist/hooks/agent-gate.d.ts +14 -0
- package/dist/hooks/agent-gate.d.ts.map +1 -0
- package/dist/hooks/agent-gate.js +75 -0
- package/dist/hooks/agent-gate.js.map +1 -0
- package/dist/hooks/agent-verify.d.ts +9 -0
- package/dist/hooks/agent-verify.d.ts.map +1 -0
- package/dist/hooks/agent-verify.js +53 -0
- package/dist/hooks/agent-verify.js.map +1 -0
- package/dist/hooks/edit-tracker.d.ts +10 -0
- package/dist/hooks/edit-tracker.d.ts.map +1 -0
- package/dist/hooks/edit-tracker.js +65 -0
- package/dist/hooks/edit-tracker.js.map +1 -0
- package/dist/hooks/git-gate.d.ts +20 -0
- package/dist/hooks/git-gate.d.ts.map +1 -0
- package/dist/hooks/git-gate.js +109 -0
- package/dist/hooks/git-gate.js.map +1 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/lib/client-runtime.d.ts +1 -1
- package/dist/hooks/lib/client-runtime.d.ts.map +1 -1
- package/dist/hooks/lib/client-runtime.js +9 -5
- package/dist/hooks/lib/client-runtime.js.map +1 -1
- package/dist/hooks/lib/feedback.d.ts.map +1 -1
- package/dist/hooks/lib/feedback.js +4 -2
- package/dist/hooks/lib/feedback.js.map +1 -1
- package/dist/hooks/lib/intelligence.d.ts.map +1 -1
- package/dist/hooks/lib/intelligence.js +4 -1
- package/dist/hooks/lib/intelligence.js.map +1 -1
- package/dist/hooks/lib/packet-debug-log.d.ts +31 -0
- package/dist/hooks/lib/packet-debug-log.d.ts.map +1 -0
- package/dist/hooks/lib/packet-debug-log.js +50 -0
- package/dist/hooks/lib/packet-debug-log.js.map +1 -0
- package/dist/hooks/lib/routing.d.ts +1 -0
- package/dist/hooks/lib/routing.d.ts.map +1 -1
- package/dist/hooks/lib/routing.js +1 -0
- package/dist/hooks/lib/routing.js.map +1 -1
- package/dist/hooks/lib/types.d.ts +20 -0
- package/dist/hooks/lib/types.d.ts.map +1 -1
- package/dist/hooks/manifest.d.ts +12 -0
- package/dist/hooks/manifest.d.ts.map +1 -1
- package/dist/hooks/manifest.js +16 -0
- package/dist/hooks/manifest.js.map +1 -1
- package/dist/hooks/rating-capture.d.ts.map +1 -1
- package/dist/hooks/rating-capture.js +23 -2
- package/dist/hooks/rating-capture.js.map +1 -1
- package/dist/hooks/session-end.d.ts.map +1 -1
- package/dist/hooks/session-end.js +11 -1
- package/dist/hooks/session-end.js.map +1 -1
- package/dist/hooks/stop.d.ts.map +1 -1
- package/dist/hooks/stop.js +3 -2
- package/dist/hooks/stop.js.map +1 -1
- package/dist/hooks/user-prompt-submit.d.ts.map +1 -1
- package/dist/hooks/user-prompt-submit.js +44 -17
- package/dist/hooks/user-prompt-submit.js.map +1 -1
- package/dist/proxy/local-client.d.ts +15 -36
- package/dist/proxy/local-client.d.ts.map +1 -1
- package/dist/proxy/local-client.js +18 -116
- package/dist/proxy/local-client.js.map +1 -1
- package/dist/setup/instructions.d.ts +2 -2
- package/dist/setup/instructions.d.ts.map +1 -1
- package/dist/setup/instructions.js +87 -54
- package/dist/setup/instructions.js.map +1 -1
- package/dist/setup/integrations.d.ts.map +1 -1
- package/dist/setup/integrations.js +36 -17
- package/dist/setup/integrations.js.map +1 -1
- package/dist/setup/platform.d.ts +47 -0
- package/dist/setup/platform.d.ts.map +1 -0
- package/dist/setup/platform.js +96 -0
- package/dist/setup/platform.js.map +1 -0
- package/dist/setup/targets.d.ts +2 -2
- package/dist/setup/targets.d.ts.map +1 -1
- package/dist/setup/targets.js +6 -4
- package/dist/setup/targets.js.map +1 -1
- package/dist/setup/web-connector.d.ts.map +1 -1
- package/dist/setup/web-connector.js +7 -3
- package/dist/setup/web-connector.js.map +1 -1
- package/package.json +1 -1
|
@@ -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,
|
|
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.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Follow the
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
|
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
|
-
-
|
|
46
|
-
|
|
47
|
-
-
|
|
48
|
-
- \`
|
|
49
|
-
- \`
|
|
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
|
|
77
|
-
|
|
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
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
\`
|
|
88
|
-
\`
|
|
89
|
-
|
|
90
|
-
|
|
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
|
|
117
|
-
user's
|
|
118
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
|
|
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
|
|
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;
|
|
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: '
|
|
5
|
-
{ event: 'PreToolUse', matcher: '
|
|
6
|
-
{ event: 'PreToolUse', matcher: '
|
|
7
|
-
{ event: 'PreToolUse', matcher: '
|
|
8
|
-
{ event: 'PreToolUse', matcher: '
|
|
9
|
-
{ event: '
|
|
10
|
-
{ event: '
|
|
11
|
-
{ event: '
|
|
12
|
-
{ event: '
|
|
13
|
-
{ event: '
|
|
14
|
-
{ event: '
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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":"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,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE;
|
|
1
|
+
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/setup/integrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"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"}
|
package/dist/setup/targets.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/setup/targets.js
CHANGED
|
@@ -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',
|
|
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
|
|
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":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA2CjC,MAAM,UAAU,0BAA0B,CAAC,IAAY,EAAE,WAAmB,OAAO,CAAC,QAAQ;IAC1F,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAE,WAAmB,OAAO,CAAC,QAAQ;IAC3F,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,SAAiB;
|
|
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,
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AACzD,MAAM,uBAAuB,GAAG,KAAK,CAAC;AA2CtC,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,MAAM,UAAU,0BAA0B,CACxC,UAAwC,EAAE;IAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC;IAC9C,MAAM,aAAa,GAAG,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE5D,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAEhF,OAAO;QACL,SAAS;QACT,UAAU;QACV,MAAM;QACN,KAAK;QACL,aAAa,EAAE,kBAAkB,CAAC,SAAS,CAAC;QAC5C,aAAa;KACd,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAc,EACd,SAAiB,EACjB,UAAsB,EACtB,aAAqB;IAErB,MAAM,SAAS,GAAG,UAAU,KAAK,OAAO;QACtC,CAAC,CAAC,CAAC,gDAAgD,CAAC;QACpD,CAAC,CAAC;YACA,iEAAiE;YACjE,yEAAyE;SAC1E,CAAC;IAEJ,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,aAAa;YAChB,OAAO;gBACL,oCAAoC;gBACpC,GAAG,SAAS;gBACZ,4DAA4D;gBAC5D,yBAAyB,SAAS,EAAE;gBACpC,qBAAqB,aAAa,EAAE;aACrC,CAAC;QACJ,KAAK,YAAY;YACf,OAAO;gBACL,oCAAoC;gBACpC,GAAG,SAAS;gBACZ,gEAAgE;gBAChE,yBAAyB,SAAS,EAAE;gBACpC,qBAAqB,aAAa,EAAE;aACrC,CAAC;QACJ,KAAK,YAAY,CAAC;QAClB;YACE,OAAO;gBACL,oCAAoC;gBACpC,GAAG,SAAS;gBACZ,oDAAoD;gBACpD,yBAAyB,SAAS,EAAE;gBACpC,qBAAqB,aAAa,EAAE;aACrC,CAAC;IACN,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAE9E,MAAM,UAAU,qBAAqB,CAAC,SAAiB,YAAY;IACjE,MAAM,YAAY,GAAG,MAAM,KAAK,aAAa;QAC3C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,KAAK,YAAY;YACvB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,QAAQ,CAAC;IAEf,OAAO,cAAc,YAAY
|
|
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.
|
|
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": {
|