@gramatr/mcp 0.13.78 → 0.13.80
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/gramatr-mcp.d.ts +1 -0
- package/dist/bin/gramatr-mcp.d.ts.map +1 -1
- package/dist/bin/gramatr-mcp.js +12 -0
- package/dist/bin/gramatr-mcp.js.map +1 -1
- package/dist/bin/setup-platforms.d.ts.map +1 -1
- package/dist/bin/setup-platforms.js +24 -6
- package/dist/bin/setup-platforms.js.map +1 -1
- package/dist/bin/setup-shared.d.ts +7 -0
- package/dist/bin/setup-shared.d.ts.map +1 -1
- package/dist/bin/setup-shared.js +18 -0
- package/dist/bin/setup-shared.js.map +1 -1
- package/dist/bin/setup.d.ts +1 -1
- package/dist/bin/setup.d.ts.map +1 -1
- package/dist/bin/setup.js +97 -22
- package/dist/bin/setup.js.map +1 -1
- package/dist/hooks/lib/client-runtime.d.ts +3 -3
- package/dist/hooks/lib/client-runtime.d.ts.map +1 -1
- package/dist/hooks/lib/client-runtime.js +10 -1
- package/dist/hooks/lib/client-runtime.js.map +1 -1
- package/dist/setup/examples/gramatr-opencode-plugin.d.ts +20 -38
- package/dist/setup/examples/gramatr-opencode-plugin.d.ts.map +1 -1
- package/dist/setup/examples/gramatr-opencode-plugin.js +192 -121
- package/dist/setup/examples/gramatr-opencode-plugin.js.map +1 -1
- package/dist/setup/instructions.d.ts +2 -0
- package/dist/setup/instructions.d.ts.map +1 -1
- package/dist/setup/instructions.js +32 -2
- package/dist/setup/instructions.js.map +1 -1
- package/dist/setup/integrations.d.ts.map +1 -1
- package/dist/setup/integrations.js +0 -3
- package/dist/setup/integrations.js.map +1 -1
- package/dist/setup/targets.d.ts +18 -8
- package/dist/setup/targets.d.ts.map +1 -1
- package/dist/setup/targets.js +193 -2
- package/dist/setup/targets.js.map +1 -1
- package/package.json +1 -1
|
@@ -188,8 +188,38 @@ After non-trivial work, call classification_feedback to train the classifier. In
|
|
|
188
188
|
|
|
189
189
|
Entity types are validated server-side. Call list_entity_types for valid types. Required fields: task/milestone need status, decision needs status + project_id.
|
|
190
190
|
|
|
191
|
-
For continuity questions ("what were we doing?"), call load_handoff then search_semantic for detail.
|
|
191
|
+
For continuity questions ("what were we doing?"), call load_handoff then search_semantic for detail.
|
|
192
192
|
|
|
193
|
-
For common retrieval, prefer execute_intent over chaining low-level tools.`;
|
|
193
|
+
For common retrieval, prefer execute_intent over chaining low-level tools.`;
|
|
194
194
|
}
|
|
195
|
+
export function buildOpenCodeInstructions() {
|
|
196
|
+
return `# gramatr (OpenCode)
|
|
197
|
+
|
|
198
|
+
gramatr is installed. Call \`gramatr_route_request\` before responding to any user message.
|
|
199
|
+
Follow the returned \`gmtr.intelligence.contract.v2\` packet as authoritative.
|
|
200
|
+
Use gramatr MCP tools for memory (search_semantic, create_entity, add_observation) — not local files.
|
|
201
|
+
|
|
202
|
+
${CONTRACT_RULES}
|
|
203
|
+
|
|
204
|
+
${ENTITY_TYPES}
|
|
205
|
+
|
|
206
|
+
${REQUIRED_FIELDS}
|
|
207
|
+
|
|
208
|
+
${QUALITY_GATE_REQUIREMENT}
|
|
209
|
+
|
|
210
|
+
${FEEDBACK_RULES}
|
|
211
|
+
|
|
212
|
+
${SUBAGENT_RULES}
|
|
213
|
+
|
|
214
|
+
${EFFORT_PHASES}
|
|
215
|
+
|
|
216
|
+
${PROJECT_UNRESOLVED}
|
|
217
|
+
|
|
218
|
+
${PROJECT_NEW}
|
|
219
|
+
|
|
220
|
+
${PROJECT_RESUMED}
|
|
221
|
+
|
|
222
|
+
${DEGRADED_MODE}`;
|
|
223
|
+
}
|
|
224
|
+
export const OPENCODE_GUIDANCE = buildOpenCodeInstructions();
|
|
195
225
|
//# sourceMappingURL=instructions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/setup/instructions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/setup/instructions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/setup/integrations.ts"],"names":[],"mappings":"AASA,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":"AASA,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;AAgEnD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAExE;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM9D;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMvE;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;AAMD,wBAAgB,yBAAyB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAGhF"}
|
|
@@ -33,9 +33,6 @@ const CODEX_HOOKS = platformToHookSpecs(CODEX_PLATFORM);
|
|
|
33
33
|
function buildHookCommand(clientDir, spec) {
|
|
34
34
|
if (spec.mcpHookName) {
|
|
35
35
|
const args = spec.hookArgs?.length ? ` ${spec.hookArgs.join(' ')}` : '';
|
|
36
|
-
// gramatr-hook is a thin OS wrapper in $GRAMATR_DIR/bin/ that calls
|
|
37
|
-
// `node $GRAMATR_DIR/mcp/dist/bin/gramatr-mcp.js hook ...`
|
|
38
|
-
// No npx — routes through the running daemon without spawning fresh processes.
|
|
39
36
|
return `gramatr-hook ${spec.mcpHookName}${args}`;
|
|
40
37
|
}
|
|
41
38
|
if (!spec.relativeCommand) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/setup/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,IAAI,oBAAoB,EACzC,kBAAkB,IAAI,qBAAqB,EAC3C,WAAW,IAAI,cAAc,GAG9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA4B3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC,CAAC,4CAA4C;AAEhG,MAAM,SAAS,GAAG,SAAS,CAAC;AAE5B;;;GAGG;AACH,SAAS,mBAAmB,CAAC,QAAwB;IACnD,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtF,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,KAAK,MAAM,KAAK,IAAI,OAA8B,EAAE,CAAC;YACnD,MAAM,IAAI,GAAa;gBACrB,KAAK;gBACL,WAAW,EAAE,KAAK,CAAC,IAAI;gBACvB,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;aAChD,CAAC;YACF,IAAI,KAAK,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAChD,IAAI,KAAK,CAAC,aAAa;gBAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;YAClE,IAAI,KAAK,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,YAAY,GAAe,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;AAE3E,MAAM,kBAAkB,GAAe,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;AAElF,MAAM,WAAW,GAAe,mBAAmB,CAAC,cAAc,CAAC,CAAC;AAEpE,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,
|
|
1
|
+
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/setup/integrations.ts"],"names":[],"mappings":"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"}
|
package/dist/setup/targets.d.ts
CHANGED
|
@@ -5,8 +5,23 @@ export interface McpCommandServerEntry {
|
|
|
5
5
|
}
|
|
6
6
|
export interface McpJsonConfig {
|
|
7
7
|
mcpServers?: Record<string, unknown>;
|
|
8
|
+
mcp?: Record<string, unknown>;
|
|
8
9
|
[key: string]: unknown;
|
|
9
10
|
}
|
|
11
|
+
export interface OpenCodeMcpEntry {
|
|
12
|
+
type: 'local';
|
|
13
|
+
command: string[];
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
env?: Record<string, string>;
|
|
16
|
+
}
|
|
17
|
+
export declare function getClaudeDesktopConfigPath(home: string, platform?: string): string;
|
|
18
|
+
export declare function getChatgptDesktopConfigPath(home: string, platform?: string): string;
|
|
19
|
+
export declare function getCursorConfigPath(home: string): string;
|
|
20
|
+
export declare function getWindsurfConfigPath(home: string): string;
|
|
21
|
+
export declare function getVscodeConfigPath(home: string): string;
|
|
22
|
+
export declare function getOpenCodeConfigPath(home: string): string;
|
|
23
|
+
export declare function getOpenCodeProjectConfigPath(): string;
|
|
24
|
+
export declare function buildOpenCodeMcpServerEntry(home: string, serverUrl: string, _platform?: string): OpenCodeMcpEntry;
|
|
10
25
|
export interface GeminiExtensionManifest {
|
|
11
26
|
name: string;
|
|
12
27
|
version: string;
|
|
@@ -33,19 +48,14 @@ export interface GeminiHooksFileEntry {
|
|
|
33
48
|
export interface GeminiHooksFile {
|
|
34
49
|
hooks: Record<string, GeminiHooksFileEntry[]>;
|
|
35
50
|
}
|
|
36
|
-
export declare function getClaudeDesktopConfigPath(home: string, platform?: string): string;
|
|
37
|
-
export declare function getChatgptDesktopConfigPath(home: string, platform?: string): string;
|
|
38
|
-
export declare function getCursorConfigPath(home: string): string;
|
|
39
|
-
export declare function getWindsurfConfigPath(home: string): string;
|
|
40
|
-
export declare function getVscodeConfigPath(home: string): string;
|
|
41
|
-
export declare function getOpenCodeConfigPath(home: string): string;
|
|
42
|
-
export declare function getOpenCodeProjectConfigPath(): string;
|
|
43
|
-
export declare function buildOpenCodeMcpServerEntry(home: string, serverUrl: string, _platform?: string): McpCommandServerEntry;
|
|
44
51
|
export declare function getGeminiExtensionDir(home: string): string;
|
|
45
52
|
export declare function getGeminiHooksPath(home: string): string;
|
|
46
53
|
export declare function getGeminiManifestPath(home: string): string;
|
|
47
54
|
export declare function buildLocalMcpServerEntry(home: string, serverUrl: string, _platform?: string): McpCommandServerEntry;
|
|
48
55
|
export declare function mergeMcpServerConfig(existing: McpJsonConfig, entry: McpCommandServerEntry): McpJsonConfig;
|
|
56
|
+
export declare function mergeOpenCodeMcpConfig(existing: McpJsonConfig, entry: OpenCodeMcpEntry): McpJsonConfig;
|
|
49
57
|
export declare function buildGeminiExtensionManifest(home: string, serverUrl: string): GeminiExtensionManifest;
|
|
58
|
+
export declare function getOpenCodePluginPath(home: string): string;
|
|
59
|
+
export declare function buildOpenCodePlugin(): string;
|
|
50
60
|
export declare function buildGeminiHooksFile(_home: string, _platform?: string): GeminiHooksFile;
|
|
51
61
|
//# sourceMappingURL=targets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../src/setup/targets.ts"],"names":[],"mappings":"AAGA,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,
|
|
1
|
+
{"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../src/setup/targets.ts"],"names":[],"mappings":"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"}
|
package/dist/setup/targets.js
CHANGED
|
@@ -30,8 +30,9 @@ export function getOpenCodeProjectConfigPath() {
|
|
|
30
30
|
export function buildOpenCodeMcpServerEntry(home, serverUrl, _platform = process.platform) {
|
|
31
31
|
const { command, args } = resolveBinaryPath();
|
|
32
32
|
return {
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
type: 'local',
|
|
34
|
+
command: [command, ...args],
|
|
35
|
+
enabled: true,
|
|
35
36
|
env: {
|
|
36
37
|
GRAMATR_DIR: join(home, '.gramatr'),
|
|
37
38
|
GRAMATR_URL: serverUrl,
|
|
@@ -67,6 +68,15 @@ export function mergeMcpServerConfig(existing, entry) {
|
|
|
67
68
|
},
|
|
68
69
|
};
|
|
69
70
|
}
|
|
71
|
+
export function mergeOpenCodeMcpConfig(existing, entry) {
|
|
72
|
+
return {
|
|
73
|
+
...existing,
|
|
74
|
+
mcp: {
|
|
75
|
+
...(existing.mcp || {}),
|
|
76
|
+
gramatr: entry,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
70
80
|
export function buildGeminiExtensionManifest(home, serverUrl) {
|
|
71
81
|
return {
|
|
72
82
|
name: 'gramatr',
|
|
@@ -80,6 +90,187 @@ export function buildGeminiExtensionManifest(home, serverUrl) {
|
|
|
80
90
|
},
|
|
81
91
|
};
|
|
82
92
|
}
|
|
93
|
+
export function getOpenCodePluginPath(home) {
|
|
94
|
+
return join(home, '.config', 'opencode', 'plugins', 'gramatr.ts');
|
|
95
|
+
}
|
|
96
|
+
export function buildOpenCodePlugin() {
|
|
97
|
+
return `/**
|
|
98
|
+
* gramatr OpenCode Plugin — Deployed Implementation
|
|
99
|
+
*
|
|
100
|
+
* This is the deployed plugin written to ~/.config/opencode/plugins/gramatr.ts
|
|
101
|
+
* by \`gramatr setup opencode\`. It maps OpenCode's plugin lifecycle events to
|
|
102
|
+
* gramatr hook invocations using the canonical \`gramatr-hook\` shell wrapper at
|
|
103
|
+
* ~/.gramatr/bin/gramatr-hook (resolves gramatr binary → global > local > npx).
|
|
104
|
+
*
|
|
105
|
+
* Do NOT use Bun's $ API or npx directly — always invoke via gramatr-hook.
|
|
106
|
+
*/
|
|
107
|
+
|
|
108
|
+
import { execSync } from 'node:child_process';
|
|
109
|
+
import { homedir } from 'node:os';
|
|
110
|
+
import type { Plugin } from '@opencode-ai/plugin';
|
|
111
|
+
|
|
112
|
+
const GRAMATR_DIR = process.env['GRAMATR_DIR'] ?? \`\${homedir()}/.gramatr\`;
|
|
113
|
+
const HOOK_BIN = \`\${GRAMATR_DIR}/bin/gramatr-hook\`;
|
|
114
|
+
|
|
115
|
+
function hook(name: string, stdinPayload: Record<string, unknown>): string {
|
|
116
|
+
try {
|
|
117
|
+
const result = execSync(\`\${HOOK_BIN} \${name} --opencode\`, {
|
|
118
|
+
input: JSON.stringify(stdinPayload),
|
|
119
|
+
env: { ...process.env, GRAMATR_DIR },
|
|
120
|
+
timeout: 15_000,
|
|
121
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
122
|
+
});
|
|
123
|
+
return result.toString().trim();
|
|
124
|
+
} catch (err: unknown) {
|
|
125
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
126
|
+
process.stderr.write(\`[gramatr] hook \${name} error: \${msg}\\n\`);
|
|
127
|
+
return '';
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function parseJson(raw: string): Record<string, unknown> | null {
|
|
132
|
+
if (!raw || raw === '{}') return null;
|
|
133
|
+
try {
|
|
134
|
+
return JSON.parse(raw) as Record<string, unknown>;
|
|
135
|
+
} catch {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export const GramatrPlugin: Plugin = async ({ project, client, directory }) => {
|
|
141
|
+
let sessionId = 'unknown';
|
|
142
|
+
const seenMessageIds = new Set<string>();
|
|
143
|
+
|
|
144
|
+
return {
|
|
145
|
+
'session.created': async (event) => {
|
|
146
|
+
const evtSessionId = (event as { sessionId?: string }).sessionId ?? 'unknown';
|
|
147
|
+
sessionId = evtSessionId;
|
|
148
|
+
const stdout = hook('session-start', {
|
|
149
|
+
session_id: sessionId,
|
|
150
|
+
project_dir: (project as { dir?: string } | undefined)?.dir ?? directory ?? '',
|
|
151
|
+
});
|
|
152
|
+
if (stdout && stdout !== '{}') {
|
|
153
|
+
try {
|
|
154
|
+
await (client as {
|
|
155
|
+
session: {
|
|
156
|
+
prompt: (opts: {
|
|
157
|
+
path: { id: string };
|
|
158
|
+
body: { noReply: boolean; parts: Array<{ type: string; text: string }> };
|
|
159
|
+
}) => Promise<unknown>;
|
|
160
|
+
};
|
|
161
|
+
}).session.prompt({
|
|
162
|
+
path: { id: sessionId },
|
|
163
|
+
body: { noReply: true, parts: [{ type: 'text', text: stdout }] },
|
|
164
|
+
});
|
|
165
|
+
} catch {
|
|
166
|
+
process.stderr.write('[gramatr] session.created injection failed\\n');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
'message.updated': async (event) => {
|
|
172
|
+
const evt = event as {
|
|
173
|
+
properties?: { role?: string; id?: string; parts?: Array<{ type: string; text?: string }> };
|
|
174
|
+
};
|
|
175
|
+
if (evt.properties?.role !== 'user') return;
|
|
176
|
+
const msgId = evt.properties?.id;
|
|
177
|
+
if (msgId) {
|
|
178
|
+
if (seenMessageIds.has(msgId)) return;
|
|
179
|
+
seenMessageIds.add(msgId);
|
|
180
|
+
}
|
|
181
|
+
const parts = evt.properties?.parts ?? [];
|
|
182
|
+
const messageText = parts.filter((p) => p.type === 'text').map((p) => p.text ?? '').join('\\n').trim();
|
|
183
|
+
if (!messageText) return;
|
|
184
|
+
const stdout = hook('user-prompt-submit', { prompt: messageText, session_id: sessionId });
|
|
185
|
+
if (stdout && stdout !== '{}') {
|
|
186
|
+
try {
|
|
187
|
+
await (client as {
|
|
188
|
+
session: {
|
|
189
|
+
prompt: (opts: {
|
|
190
|
+
path: { id: string };
|
|
191
|
+
body: { noReply: boolean; parts: Array<{ type: string; text: string }> };
|
|
192
|
+
}) => Promise<unknown>;
|
|
193
|
+
};
|
|
194
|
+
}).session.prompt({
|
|
195
|
+
path: { id: sessionId },
|
|
196
|
+
body: { noReply: true, parts: [{ type: 'text', text: stdout }] },
|
|
197
|
+
});
|
|
198
|
+
} catch {
|
|
199
|
+
process.stderr.write('[gramatr] message.updated injection failed\\n');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
|
|
204
|
+
'tool.execute.before': async (input, _output) => {
|
|
205
|
+
const inp = input as { tool?: string; args?: Record<string, unknown> };
|
|
206
|
+
const toolName = inp.tool ?? '';
|
|
207
|
+
const toolInput = inp.args ?? {};
|
|
208
|
+
const payload = { tool_name: toolName, tool_input: toolInput };
|
|
209
|
+
const dispatch: string[] = [];
|
|
210
|
+
if (toolName === 'bash' || toolName === 'shell') {
|
|
211
|
+
dispatch.push('git-gate', 'input-validator');
|
|
212
|
+
} else if (toolName === 'edit' || toolName === 'write') {
|
|
213
|
+
dispatch.push('input-validator', 'edit-tracker');
|
|
214
|
+
} else if (toolName === 'agent') {
|
|
215
|
+
dispatch.push('agent-gate');
|
|
216
|
+
} else if (toolName.includes('gramatr')) {
|
|
217
|
+
dispatch.push('input-validator');
|
|
218
|
+
}
|
|
219
|
+
for (const hookName of dispatch) {
|
|
220
|
+
const stdout = hook(hookName, payload);
|
|
221
|
+
const parsed = parseJson(stdout);
|
|
222
|
+
if (parsed?.decision === 'block') {
|
|
223
|
+
const reason = typeof parsed.reason === 'string' ? parsed.reason : \`Blocked by \${hookName}\`;
|
|
224
|
+
// gramatr-allow: B1 — deployed plugin file, no @gramatr/core dependency
|
|
225
|
+
throw new Error(reason);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
|
|
230
|
+
'tool.execute.after': async (input, output) => {
|
|
231
|
+
const inp = input as { tool?: string; args?: Record<string, unknown> };
|
|
232
|
+
const toolName = inp.tool ?? '';
|
|
233
|
+
const payload = { tool_name: toolName, tool_input: inp.args ?? {}, tool_output: output };
|
|
234
|
+
if (toolName === 'agent') {
|
|
235
|
+
hook('agent-verify', payload);
|
|
236
|
+
} else if (toolName.includes('gramatr')) {
|
|
237
|
+
hook('tool-tracker', payload);
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
|
|
241
|
+
'session.idle': async (_event) => {
|
|
242
|
+
const payload = { session_id: sessionId };
|
|
243
|
+
hook('stop', payload);
|
|
244
|
+
hook('session-end', payload);
|
|
245
|
+
},
|
|
246
|
+
|
|
247
|
+
'session.compacted': async (_event) => {
|
|
248
|
+
hook('compact', { session_id: sessionId });
|
|
249
|
+
},
|
|
250
|
+
|
|
251
|
+
'experimental.session.compacting': async (_input, output) => {
|
|
252
|
+
const out = output as { context?: string };
|
|
253
|
+
const continuationBlock = [
|
|
254
|
+
'',
|
|
255
|
+
'## gramatr session continuity',
|
|
256
|
+
'Preserve the following gramatr state across this compaction:',
|
|
257
|
+
'- Active session ID and project_id (do not reset)',
|
|
258
|
+
'- Open tasks and their statuses (open/in_progress/blocked/review)',
|
|
259
|
+
'- Recent decisions and their rationale',
|
|
260
|
+
'- Classification feedback state for the current session',
|
|
261
|
+
'- Any pending Quality Gate criteria not yet verified',
|
|
262
|
+
'Resume the gramatr intelligence contract (gmtr.intelligence.contract.v2) on the next turn.',
|
|
263
|
+
].join('\\n');
|
|
264
|
+
if (typeof out.context === 'string') {
|
|
265
|
+
out.context += continuationBlock;
|
|
266
|
+
} else {
|
|
267
|
+
out.context = continuationBlock;
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
`;
|
|
273
|
+
}
|
|
83
274
|
export function buildGeminiHooksFile(_home, _platform = process.platform) {
|
|
84
275
|
const { command, args } = resolveBinaryPath();
|
|
85
276
|
const hookBase = args.length > 0 ? 'npx -y @gramatr/mcp hook' : `${command} hook`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/setup/targets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/setup/targets.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.13.
|
|
3
|
+
"version": "0.13.80",
|
|
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": {
|