@gramatr/mcp 0.13.79 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"setup-platforms.d.ts","sourceRoot":"","sources":["../../src/bin/setup-platforms.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,OAAO,EAIL,4BAA4B,EAC7B,MAAM,0BAA0B,CAAC;AAkDlC,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAsBrE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAM5G;AAED,wBAAgB,UAAU,CAAC,MAAM,UAAQ,EAAE,WAAW,UAAQ,GAAG,IAAI,CA+CpE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAkB5F;AAED,wBAAgB,WAAW,CAAC,MAAM,UAAQ,EAAE,WAAW,UAAQ,GAAG,IAAI,CA2BrE;AAED,wBAAgB,aAAa,CAAC,MAAM,UAAQ,EAAE,WAAW,UAAQ,GAAG,IAAI,CAyBvE;AAED,wBAAsB,QAAQ,CAAC,MAAM,GAAE,YAAY,GAAG,aAAa,GAAG,YAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChH"}
1
+ {"version":3,"file":"setup-platforms.d.ts","sourceRoot":"","sources":["../../src/bin/setup-platforms.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,OAAO,EAIL,4BAA4B,EAC7B,MAAM,0BAA0B,CAAC;AAoDlC,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAsBrE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAM5G;AAED,wBAAgB,UAAU,CAAC,MAAM,UAAQ,EAAE,WAAW,UAAQ,GAAG,IAAI,CA+CpE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAkB5F;AAED,wBAAgB,WAAW,CAAC,MAAM,UAAQ,EAAE,WAAW,UAAQ,GAAG,IAAI,CA2BrE;AAED,wBAAgB,aAAa,CAAC,MAAM,UAAQ,EAAE,WAAW,UAAQ,GAAG,IAAI,CAgCvE;AAED,wBAAsB,QAAQ,CAAC,MAAM,GAAE,YAAY,GAAG,aAAa,GAAG,YAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChH"}
@@ -9,7 +9,7 @@ import { join, dirname } from 'node:path';
9
9
  import { getGramatrDirFromEnv, getGramatrUrlFromEnv } from '../config-runtime.js';
10
10
  import { buildCodexHooksFile, ensureCodexHooksFeature, mergeManagedHooks, } from '../setup/integrations.js';
11
11
  import { CODEX_BLOCK_END, CODEX_BLOCK_START, CODEX_GUIDANCE, buildInstallPromptSuggestion, } from '../setup/instructions.js';
12
- import { buildGeminiExtensionManifest, buildGeminiHooksFile, buildLocalMcpServerEntry, buildOpenCodeMcpServerEntry, getGeminiExtensionDir, getGeminiHooksPath, getGeminiManifestPath, getOpenCodeConfigPath, mergeMcpServerConfig, mergeOpenCodeMcpConfig, } from '../setup/targets.js';
12
+ import { buildGeminiExtensionManifest, buildGeminiHooksFile, buildLocalMcpServerEntry, buildOpenCodeMcpServerEntry, buildOpenCodePlugin, getGeminiExtensionDir, getGeminiHooksPath, getGeminiManifestPath, getOpenCodeConfigPath, getOpenCodePluginPath, mergeMcpServerConfig, mergeOpenCodeMcpConfig, } from '../setup/targets.js';
13
13
  import { buildConnectorInstructions, buildPromptSuggestion, validateServerReachability, } from '../setup/web-connector.js';
14
14
  import { deployPlatformBinary, resolveBinaryPath, writeHookWrappers } from './setup-shared.js';
15
15
  import { readJsonFile, readClaudeConfig, escapeRegExp, upsertManagedBlock, ensureLocalSettings, getCodexHooksPath, getCodexConfigPath, getCodexAgentsPath, HOME, } from './setup-config-io.js';
@@ -144,18 +144,24 @@ export function setupOpenCode(dryRun = false, showPrompts = false) {
144
144
  // OpenCode stores its config as JSON with an mcp section (similar to Cursor/VS Code)
145
145
  const current = readJsonFile(configPath, {});
146
146
  const next = mergeOpenCodeMcpConfig(current, mcpEntry);
147
+ const pluginSource = buildOpenCodePlugin();
148
+ const pluginPath = getOpenCodePluginPath(HOME);
147
149
  if (dryRun) {
148
150
  process.stderr.write('[gramatr] Dry run — would write OpenCode config to: ' + configPath + '\n');
149
151
  process.stderr.write(JSON.stringify(next, null, 2) + '\n');
152
+ process.stderr.write(`[gramatr] Dry run — would write OpenCode plugin to: ${pluginPath}\n`);
153
+ process.stderr.write(pluginSource.split('\n').slice(0, 10).join('\n') + '\n');
150
154
  if (showPrompts)
151
155
  emitInstallPromptSuggestion('opencode');
152
156
  return;
153
157
  }
154
158
  mkdirSync(dirname(configPath), { recursive: true });
159
+ mkdirSync(dirname(pluginPath), { recursive: true });
155
160
  ensureLocalSettings();
156
161
  writeFileSync(configPath, JSON.stringify(next, null, 2) + '\n', 'utf8');
162
+ writeFileSync(pluginPath, pluginSource, 'utf8');
157
163
  process.stderr.write(`[gramatr] Configured OpenCode MCP server in ${configPath}\n`);
158
- process.stderr.write('[gramatr] Copy the plugin scaffold from packages/mcp/src/setup/examples/gramatr-opencode-plugin.ts\n');
164
+ process.stderr.write(`[gramatr] Deployed OpenCode plugin to ${pluginPath}\n`);
159
165
  process.stderr.write('[gramatr] Restart OpenCode to pick up the change.\n');
160
166
  if (showPrompts)
161
167
  emitInstallPromptSuggestion('opencode');
@@ -1 +1 @@
1
- {"version":3,"file":"setup-platforms.js","sourceRoot":"","sources":["../../src/bin/setup-platforms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-platforms.js","sourceRoot":"","sources":["../../src/bin/setup-platforms.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export interface HookClientRuntime {
2
- clientType: 'claude_code' | 'codex' | 'gemini_cli';
3
- agentName: 'Claude Code' | 'Codex' | 'Gemini CLI';
4
- modeFlag: '--claude-code' | '--codex' | '--gemini';
2
+ clientType: 'claude_code' | 'codex' | 'gemini_cli' | 'opencode';
3
+ agentName: 'Claude Code' | 'Codex' | 'Gemini CLI' | 'OpenCode';
4
+ modeFlag: '--claude-code' | '--codex' | '--gemini' | '--opencode';
5
5
  /** Slash command to clear context in this client, or null if unsupported. */
6
6
  clearCommand: '/clear' | null;
7
7
  /** True when the client supports a hook-driven clear cycle (inject message → user runs clearCommand). */
@@ -1 +1 @@
1
- {"version":3,"file":"client-runtime.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/client-runtime.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,aAAa,GAAG,OAAO,GAAG,YAAY,CAAC;IACnD,SAAS,EAAE,aAAa,GAAG,OAAO,GAAG,YAAY,CAAC;IAClD,QAAQ,EAAE,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;IACnD,6EAA6E;IAC7E,YAAY,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,yGAAyG;IACzG,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,iBAAiB,CAgC/E"}
1
+ {"version":3,"file":"client-runtime.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/client-runtime.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,aAAa,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC;IAChE,SAAS,EAAE,aAAa,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC;IAC/D,QAAQ,EAAE,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAClE,6EAA6E;IAC7E,YAAY,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,yGAAyG;IACzG,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,iBAAiB,CAyC/E"}
@@ -26,7 +26,16 @@ export function resolveHookClientRuntime(args = []) {
26
26
  supportsHookedClear: true,
27
27
  };
28
28
  }
29
+ if (args.includes('--opencode')) {
30
+ return {
31
+ clientType: 'opencode',
32
+ agentName: 'OpenCode',
33
+ modeFlag: '--opencode',
34
+ clearCommand: null,
35
+ supportsHookedClear: false,
36
+ };
37
+ }
29
38
  // gramatr-allow: B1 — hook entry point, no @gramatr/core dependency in thin CLI shim
30
- throw new Error('Missing client runtime flag. Pass --claude-code, --codex, or --gemini to identify the calling agent.');
39
+ throw new Error('Missing client runtime flag. Pass --claude-code, --codex, --gemini, or --opencode to identify the calling agent.');
31
40
  }
32
41
  //# sourceMappingURL=client-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-runtime.js","sourceRoot":"","sources":["../../../src/hooks/lib/client-runtime.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,wBAAwB,CAAC,OAAiB,EAAE;IAC1D,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,QAAQ;YACtB,mBAAmB,EAAE,IAAI;SAC1B,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,UAAU;YACpB,YAAY,EAAE,IAAI;YAClB,mBAAmB,EAAE,KAAK;SAC3B,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,UAAU,EAAE,aAAa;YACzB,SAAS,EAAE,aAAa;YACxB,QAAQ,EAAE,eAAe;YACzB,YAAY,EAAE,QAAQ;YACtB,mBAAmB,EAAE,IAAI;SAC1B,CAAC;IACJ,CAAC;IACD,qFAAqF;IACrF,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"client-runtime.js","sourceRoot":"","sources":["../../../src/hooks/lib/client-runtime.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,wBAAwB,CAAC,OAAiB,EAAE;IAC1D,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,QAAQ;YACtB,mBAAmB,EAAE,IAAI;SAC1B,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,UAAU;YACpB,YAAY,EAAE,IAAI;YAClB,mBAAmB,EAAE,KAAK;SAC3B,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,UAAU,EAAE,aAAa;YACzB,SAAS,EAAE,aAAa;YACxB,QAAQ,EAAE,eAAe;YACzB,YAAY,EAAE,QAAQ;YACtB,mBAAmB,EAAE,IAAI;SAC1B,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,UAAU,EAAE,UAAU;YACtB,SAAS,EAAE,UAAU;YACrB,QAAQ,EAAE,YAAY;YACtB,YAAY,EAAE,IAAI;YAClB,mBAAmB,EAAE,KAAK;SAC3B,CAAC;IACJ,CAAC;IACD,qFAAqF;IACrF,MAAM,IAAI,KAAK,CACb,kHAAkH,CACnH,CAAC;AACJ,CAAC"}
@@ -1,45 +1,27 @@
1
1
  /**
2
- * gramatr OpenCode Plugin Scaffold
2
+ * gramatr OpenCode Plugin — Deployed Implementation
3
3
  *
4
- * Maps OpenCode's plugin lifecycle events to gramatr hook logic.
5
- * OpenCode uses a plugin-based architecture instead of hooks.json files.
4
+ * This is the deployed plugin written to ~/.config/opencode/plugins/gramatr.ts
5
+ * by `gramatr setup opencode`. It maps OpenCode's plugin lifecycle events to
6
+ * gramatr hook invocations using the canonical `gramatr-hook` shell wrapper at
7
+ * ~/.gramatr/bin/gramatr-hook (resolves gramatr binary → global > local > npx).
6
8
  *
7
- * Install: Place this file in your OpenCode plugins directory or reference
8
- * it in your opencode.json config.
9
- *
10
- * This is a scaffold with TODO comments — not a full implementation.
11
- * Each event handler shows which gramatr hook logic to invoke.
9
+ * Do NOT use Bun's $ API or npx directly always invoke via gramatr-hook.
12
10
  */
13
- interface OpenCodePluginContext {
14
- sessionId: string;
15
- projectDir: string;
16
- config: Record<string, unknown>;
17
- }
18
- interface OpenCodeToolCall {
19
- name: string;
20
- input: Record<string, unknown>;
21
- output?: unknown;
22
- }
23
- interface OpenCodePlugin {
24
- name: string;
25
- version: string;
26
- description: string;
27
- 'session.created'?: (ctx: OpenCodePluginContext) => Promise<void>;
28
- 'session.updated'?: (ctx: OpenCodePluginContext) => Promise<void>;
29
- 'session.idle'?: (ctx: OpenCodePluginContext) => Promise<void>;
30
- 'tool.execute.before'?: (ctx: OpenCodePluginContext, tool: OpenCodeToolCall) => Promise<OpenCodeToolCall>;
31
- 'tool.execute.after'?: (ctx: OpenCodePluginContext, tool: OpenCodeToolCall) => Promise<void>;
32
- }
33
11
  /**
34
- * gramatr plugin for OpenCode.
35
- *
36
- * Event mapping:
37
- * session.created -> gramatr session-start (restore session context + handoff)
38
- * tool.execute.before -> gramatr agent-gate + input-validator (pre-tool checks)
39
- * tool.execute.after -> gramatr tool-tracker (post-tool telemetry)
40
- * session.idle -> gramatr stop (classification feedback on idle)
41
- * session.updated -> gramatr session-end (persist session state)
12
+ * Minimal Plugin type shape from @opencode-ai/plugin.
13
+ * Defined locally so this file compiles without the external package installed.
14
+ * When deployed to ~/.config/opencode/plugins/gramatr.ts, OpenCode resolves the
15
+ * real type from its own runtime.
42
16
  */
43
- declare const gramatrPlugin: OpenCodePlugin;
44
- export default gramatrPlugin;
17
+ type PluginContext = {
18
+ project?: unknown;
19
+ client?: unknown;
20
+ directory?: string;
21
+ worktree?: unknown;
22
+ $?: unknown;
23
+ };
24
+ type Plugin = (ctx: PluginContext) => Promise<Record<string, ((...args: unknown[]) => Promise<unknown>) | undefined>>;
25
+ export declare const GramatrPlugin: Plugin;
26
+ export {};
45
27
  //# sourceMappingURL=gramatr-opencode-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gramatr-opencode-plugin.d.ts","sourceRoot":"","sources":["../../../src/setup/examples/gramatr-opencode-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,UAAU,qBAAqB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IAEpB,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1G,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9F;AAED;;;;;;;;;GASG;AACH,QAAA,MAAM,aAAa,EAAE,cAgHpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"gramatr-opencode-plugin.d.ts","sourceRoot":"","sources":["../../../src/setup/examples/gramatr-opencode-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH;;;;;GAKG;AACH,KAAK,aAAa,GAAG;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,CAAC,EAAE,OAAO,CAAC;CACb,CAAC;AACF,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAoCtH,eAAO,MAAM,aAAa,EAAE,MA4K3B,CAAC"}
@@ -1,129 +1,200 @@
1
1
  /**
2
- * gramatr OpenCode Plugin Scaffold
2
+ * gramatr OpenCode Plugin — Deployed Implementation
3
3
  *
4
- * Maps OpenCode's plugin lifecycle events to gramatr hook logic.
5
- * OpenCode uses a plugin-based architecture instead of hooks.json files.
4
+ * This is the deployed plugin written to ~/.config/opencode/plugins/gramatr.ts
5
+ * by `gramatr setup opencode`. It maps OpenCode's plugin lifecycle events to
6
+ * gramatr hook invocations using the canonical `gramatr-hook` shell wrapper at
7
+ * ~/.gramatr/bin/gramatr-hook (resolves gramatr binary → global > local > npx).
6
8
  *
7
- * Install: Place this file in your OpenCode plugins directory or reference
8
- * it in your opencode.json config.
9
- *
10
- * This is a scaffold with TODO comments — not a full implementation.
11
- * Each event handler shows which gramatr hook logic to invoke.
9
+ * Do NOT use Bun's $ API or npx directly always invoke via gramatr-hook.
12
10
  */
11
+ import { execSync } from 'node:child_process';
12
+ import { homedir } from 'node:os';
13
+ const GRAMATR_DIR = process.env['GRAMATR_DIR'] ?? `${homedir()}/.gramatr`;
14
+ const HOOK_BIN = `${GRAMATR_DIR}/bin/gramatr-hook`;
13
15
  /**
14
- * gramatr plugin for OpenCode.
15
- *
16
- * Event mapping:
17
- * session.created -> gramatr session-start (restore session context + handoff)
18
- * tool.execute.before -> gramatr agent-gate + input-validator (pre-tool checks)
19
- * tool.execute.after -> gramatr tool-tracker (post-tool telemetry)
20
- * session.idle -> gramatr stop (classification feedback on idle)
21
- * session.updated -> gramatr session-end (persist session state)
16
+ * Invoke a gramatr hook by name, passing JSON as stdin.
17
+ * Returns the hook's stdout (trimmed) or empty string on error/no output.
18
+ * Errors are caught and logged to stderr — hooks never throw and block OpenCode.
22
19
  */
23
- const gramatrPlugin = {
24
- name: 'gramatr',
25
- version: '0.1.0',
26
- description: 'gramatr intelligence layer for OpenCode — session, routing, and tool lifecycle',
27
- /**
28
- * session.created — Initialize gramatr session context.
29
- *
30
- * Equivalent to the SessionStart hook in Claude Code / Codex / Gemini.
31
- * Calls session_start to restore session context and load handoff.
32
- */
33
- 'session.created': async (ctx) => {
34
- // TODO: Call gramatr session-start hook logic
35
- // - Load or create a gramatr session for ctx.sessionId
36
- // - Restore handoff state from previous sessions
37
- // - Inject the v2 intelligence packet into the session context
38
- //
39
- // Example using the gramatr binary:
40
- // execSync(`npx -y @gramatr/mcp hook session-start --opencode`, {
41
- // env: { ...process.env, GRAMATR_SESSION_ID: ctx.sessionId },
42
- // });
43
- void ctx;
44
- },
45
- /**
46
- * tool.execute.before — Pre-tool validation gate.
47
- *
48
- * Equivalent to PreToolUse hooks (agent-gate, input-validator) in Claude Code.
49
- * Validates tool inputs and enforces safety constraints before execution.
50
- */
51
- 'tool.execute.before': async (ctx, tool) => {
52
- // TODO: Call gramatr agent-gate logic
53
- // - Check if the tool call is allowed by hard_gates
54
- // - Validate tool inputs against schema constraints
55
- //
56
- // TODO: Call gramatr input-validator logic
57
- // - Sanitize inputs (strip secrets, validate paths)
58
- // - Enforce user isolation rules
59
- //
60
- // Example:
61
- // const result = execSync(
62
- // `npx -y @gramatr/mcp hook input-validator --opencode`,
63
- // { input: JSON.stringify({ tool_name: tool.name, tool_input: tool.input }) },
64
- // );
65
- // const validated = JSON.parse(result.toString());
66
- // if (validated.blocked) throw new Error(validated.reason);
67
- void ctx;
68
- return tool;
69
- },
70
- /**
71
- * tool.execute.afterPost-tool telemetry tracking.
72
- *
73
- * Equivalent to PostToolUse (tool-tracker) in Claude Code.
74
- * Records tool execution metadata for the intelligence flywheel.
75
- */
76
- 'tool.execute.after': async (ctx, tool) => {
77
- // TODO: Call gramatr tool-tracker logic
78
- // - Record tool name, execution time, result summary
79
- // - Feed execution data into the pattern learner
80
- // - Update session state with tool usage
81
- //
82
- // Example:
83
- // execSync(`npx -y @gramatr/mcp hook tool-tracker --opencode`, {
84
- // input: JSON.stringify({
85
- // tool_name: tool.name,
86
- // tool_input: tool.input,
87
- // tool_output: tool.output,
88
- // }),
89
- // });
90
- void ctx;
91
- void tool;
92
- },
93
- /**
94
- * session.idle — Submit classification feedback on idle.
95
- *
96
- * Equivalent to the Stop hook in Claude Code / Codex.
97
- * Submits classification feedback to train the classifier flywheel.
98
- */
99
- 'session.idle': async (ctx) => {
100
- // TODO: Call gramatr stop hook logic
101
- // - Submit classification_feedback for the current session
102
- // - Evaluate if effort, intent, and skills were classified correctly
103
- //
104
- // Example:
105
- // execSync(`npx -y @gramatr/mcp hook stop --opencode`, {
106
- // env: { ...process.env, GRAMATR_SESSION_ID: ctx.sessionId },
107
- // });
108
- void ctx;
109
- },
110
- /**
111
- * session.updated — Persist session state on update.
112
- *
113
- * Equivalent to SessionEnd hook in Claude Code.
114
- * Saves session state and handoff for continuity across sessions.
115
- */
116
- 'session.updated': async (ctx) => {
117
- // TODO: Call gramatr session-end hook logic
118
- // - Persist current session state
119
- // - Save handoff summary for next session resumption
120
- //
121
- // Example:
122
- // execSync(`npx -y @gramatr/mcp hook session-end --opencode`, {
123
- // env: { ...process.env, GRAMATR_SESSION_ID: ctx.sessionId },
124
- // });
125
- void ctx;
126
- },
20
+ function hook(name, stdinPayload) {
21
+ try {
22
+ const result = execSync(`${HOOK_BIN} ${name} --opencode`, {
23
+ input: JSON.stringify(stdinPayload),
24
+ env: { ...process.env, GRAMATR_DIR },
25
+ timeout: 15_000,
26
+ stdio: ['pipe', 'pipe', 'pipe'],
27
+ });
28
+ return result.toString().trim();
29
+ }
30
+ catch (err) {
31
+ const msg = err instanceof Error ? err.message : String(err);
32
+ process.stderr.write(`[gramatr] hook ${name} error: ${msg}\n`);
33
+ return '';
34
+ }
35
+ }
36
+ /** Parse a hook stdout string as JSON, returning null on failure. */
37
+ function parseJson(raw) {
38
+ if (!raw || raw === '{}')
39
+ return null;
40
+ try {
41
+ return JSON.parse(raw);
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ }
47
+ export const GramatrPlugin = async ({ project, client, directory }) => {
48
+ // Session ID captured once session.created fires; used by all subsequent handlers.
49
+ let sessionId = 'unknown';
50
+ // Track seen message IDs to avoid re-firing user-prompt-submit on edits.
51
+ const seenMessageIds = new Set();
52
+ /** Inject text into the session via client.session.prompt if client supports it. */
53
+ async function injectText(text) {
54
+ if (!text || text === '{}')
55
+ return;
56
+ try {
57
+ await client.session.prompt({
58
+ path: { id: sessionId },
59
+ body: { noReply: true, parts: [{ type: 'text', text }] },
60
+ });
61
+ }
62
+ catch {
63
+ process.stderr.write(`[gramatr] injection failed\n`);
64
+ }
65
+ }
66
+ return {
67
+ /**
68
+ * session.createdInitialize gramatr session context.
69
+ * Equivalent to SessionStart hook in Claude Code / Codex.
70
+ */
71
+ 'session.created': async (event) => {
72
+ const evtSessionId = event.sessionId ?? 'unknown';
73
+ sessionId = evtSessionId;
74
+ const stdout = hook('session-start', {
75
+ session_id: sessionId,
76
+ project_dir: project?.dir ?? directory ?? '',
77
+ });
78
+ await injectText(stdout);
79
+ },
80
+ /**
81
+ * message.updated — Route new user messages through gramatr intelligence.
82
+ * Equivalent to UserPromptSubmit hook.
83
+ * Only fires for user-role messages and only once per message ID (dedup).
84
+ */
85
+ 'message.updated': async (event) => {
86
+ const evt = event;
87
+ const role = evt.properties?.role;
88
+ if (role !== 'user')
89
+ return;
90
+ const msgId = evt.properties?.id;
91
+ if (msgId) {
92
+ if (seenMessageIds.has(msgId))
93
+ return;
94
+ seenMessageIds.add(msgId);
95
+ }
96
+ // Extract text content from message parts.
97
+ const parts = evt.properties?.parts ?? [];
98
+ const messageText = parts
99
+ .filter((p) => p.type === 'text')
100
+ .map((p) => p.text ?? '')
101
+ .join('\n')
102
+ .trim();
103
+ if (!messageText)
104
+ return;
105
+ const stdout = hook('user-prompt-submit', {
106
+ prompt: messageText,
107
+ session_id: sessionId,
108
+ });
109
+ await injectText(stdout);
110
+ },
111
+ /**
112
+ * tool.execute.before — Pre-tool validation and gate checks.
113
+ * Equivalent to PreToolUse hooks (agent-gate, input-validator, git-gate, edit-tracker).
114
+ */
115
+ 'tool.execute.before': async (input, _output) => {
116
+ const inp = input;
117
+ const toolName = inp.tool ?? '';
118
+ const toolInput = inp.args ?? {};
119
+ const payload = { tool_name: toolName, tool_input: toolInput };
120
+ const dispatch = [];
121
+ if (toolName === 'bash' || toolName === 'shell') {
122
+ dispatch.push('git-gate', 'input-validator');
123
+ }
124
+ else if (toolName === 'edit' || toolName === 'write') {
125
+ dispatch.push('input-validator', 'edit-tracker');
126
+ }
127
+ else if (toolName === 'agent') {
128
+ dispatch.push('agent-gate');
129
+ }
130
+ else if (toolName.includes('gramatr')) {
131
+ dispatch.push('input-validator');
132
+ }
133
+ for (const hookName of dispatch) {
134
+ const stdout = hook(hookName, payload);
135
+ const parsed = parseJson(stdout);
136
+ if (parsed?.['decision'] === 'block') {
137
+ const reason = typeof parsed['reason'] === 'string' ? parsed['reason'] : `Blocked by ${hookName}`;
138
+ // gramatr-allow: B1 — deployed plugin file, no @gramatr/core dependency
139
+ throw new Error(reason);
140
+ }
141
+ }
142
+ },
143
+ /**
144
+ * tool.execute.after — Post-tool telemetry.
145
+ * Equivalent to PostToolUse hook (tool-tracker, agent-verify).
146
+ */
147
+ 'tool.execute.after': async (input, output) => {
148
+ const inp = input;
149
+ const toolName = inp.tool ?? '';
150
+ const toolInput = inp.args ?? {};
151
+ const payload = { tool_name: toolName, tool_input: toolInput, tool_output: output };
152
+ if (toolName === 'agent') {
153
+ hook('agent-verify', payload);
154
+ }
155
+ else if (toolName.includes('gramatr')) {
156
+ hook('tool-tracker', payload);
157
+ }
158
+ },
159
+ /**
160
+ * session.idle — Submit classification feedback and end session.
161
+ * Equivalent to Stop + SessionEnd hooks.
162
+ */
163
+ 'session.idle': async (_event) => {
164
+ const payload = { session_id: sessionId };
165
+ hook('stop', payload);
166
+ hook('session-end', payload);
167
+ },
168
+ /**
169
+ * session.compacted — Notify gramatr of context compaction.
170
+ */
171
+ 'session.compacted': async (_event) => {
172
+ hook('compact', { session_id: sessionId });
173
+ },
174
+ /**
175
+ * experimental.session.compacting — Inject gramatr continuation context.
176
+ * Appends an instruction block to preserve gramatr state across compaction.
177
+ */
178
+ 'experimental.session.compacting': async (_input, output) => {
179
+ const out = output;
180
+ const continuationBlock = [
181
+ '',
182
+ '## gramatr session continuity',
183
+ 'Preserve the following gramatr state across this compaction:',
184
+ '- Active session ID and project_id (do not reset)',
185
+ '- Open tasks and their statuses (open/in_progress/blocked/review)',
186
+ '- Recent decisions and their rationale',
187
+ '- Classification feedback state for the current session',
188
+ '- Any pending Quality Gate criteria not yet verified',
189
+ 'Resume the gramatr intelligence contract (gmtr.intelligence.contract.v2) on the next turn.',
190
+ ].join('\n');
191
+ if (typeof out.context === 'string') {
192
+ out.context += continuationBlock;
193
+ }
194
+ else {
195
+ out.context = continuationBlock;
196
+ }
197
+ },
198
+ };
127
199
  };
128
- export default gramatrPlugin;
129
200
  //# sourceMappingURL=gramatr-opencode-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gramatr-opencode-plugin.js","sourceRoot":"","sources":["../../../src/setup/examples/gramatr-opencode-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA6BH;;;;;;;;;GASG;AACH,MAAM,aAAa,GAAmB;IACpC,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,gFAAgF;IAE7F;;;;;OAKG;IACH,iBAAiB,EAAE,KAAK,EAAE,GAA0B,EAAiB,EAAE;QACrE,8CAA8C;QAC9C,uDAAuD;QACvD,iDAAiD;QACjD,+DAA+D;QAC/D,EAAE;QACF,oCAAoC;QACpC,oEAAoE;QACpE,kEAAkE;QAClE,QAAQ;QACR,KAAK,GAAG,CAAC;IACX,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,EAAE,KAAK,EAC1B,GAA0B,EAC1B,IAAsB,EACK,EAAE;QAC7B,sCAAsC;QACtC,oDAAoD;QACpD,oDAAoD;QACpD,EAAE;QACF,2CAA2C;QAC3C,oDAAoD;QACpD,iCAAiC;QACjC,EAAE;QACF,WAAW;QACX,6BAA6B;QAC7B,6DAA6D;QAC7D,mFAAmF;QACnF,OAAO;QACP,qDAAqD;QACrD,8DAA8D;QAC9D,KAAK,GAAG,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,EAAE,KAAK,EAAE,GAA0B,EAAE,IAAsB,EAAiB,EAAE;QAChG,wCAAwC;QACxC,qDAAqD;QACrD,iDAAiD;QACjD,yCAAyC;QACzC,EAAE;QACF,WAAW;QACX,mEAAmE;QACnE,8BAA8B;QAC9B,8BAA8B;QAC9B,gCAAgC;QAChC,kCAAkC;QAClC,UAAU;QACV,QAAQ;QACR,KAAK,GAAG,CAAC;QACT,KAAK,IAAI,CAAC;IACZ,CAAC;IAED;;;;;OAKG;IACH,cAAc,EAAE,KAAK,EAAE,GAA0B,EAAiB,EAAE;QAClE,qCAAqC;QACrC,2DAA2D;QAC3D,qEAAqE;QACrE,EAAE;QACF,WAAW;QACX,2DAA2D;QAC3D,kEAAkE;QAClE,QAAQ;QACR,KAAK,GAAG,CAAC;IACX,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,EAAE,KAAK,EAAE,GAA0B,EAAiB,EAAE;QACrE,4CAA4C;QAC5C,kCAAkC;QAClC,qDAAqD;QACrD,EAAE;QACF,WAAW;QACX,kEAAkE;QAClE,kEAAkE;QAClE,QAAQ;QACR,KAAK,GAAG,CAAC;IACX,CAAC;CACF,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"gramatr-opencode-plugin.js","sourceRoot":"","sources":["../../../src/setup/examples/gramatr-opencode-plugin.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,6 @@ export type InstallPromptTarget = 'claude-code' | 'codex' | 'gemini-cli' | 'open
6
6
  export declare const CLAUDE_CODE_GUIDANCE: string;
7
7
  export declare const CODEX_GUIDANCE: string;
8
8
  export declare function buildInstallPromptSuggestion(target: InstallPromptTarget): string;
9
+ export declare function buildOpenCodeInstructions(): string;
10
+ export declare const OPENCODE_GUIDANCE: string;
9
11
  //# sourceMappingURL=instructions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/setup/instructions.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,kBAAkB,0BAAkC,CAAC;AAClE,eAAO,MAAM,gBAAgB,wBAAkC,CAAC;AAChE,eAAO,MAAM,iBAAiB,gCAA8B,CAAC;AAC7D,eAAO,MAAM,eAAe,8BAA2B,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,OAAO,GACP,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,gBAAgB,GAChB,aAAa,GACb,iBAAiB,GACjB,QAAQ,GACR,UAAU,GACV,QAAQ,CAAC;AAab,eAAO,MAAM,oBAAoB,QAiChC,CAAC;AAEF,eAAO,MAAM,cAAc,QA2B1B,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAmBhF"}
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/setup/instructions.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,kBAAkB,0BAAkC,CAAC;AAClE,eAAO,MAAM,gBAAgB,wBAAkC,CAAC;AAChE,eAAO,MAAM,iBAAiB,gCAA8B,CAAC;AAC7D,eAAO,MAAM,eAAe,8BAA2B,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,OAAO,GACP,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,gBAAgB,GAChB,aAAa,GACb,iBAAiB,GACjB,QAAQ,GACR,UAAU,GACV,QAAQ,CAAC;AAab,eAAO,MAAM,oBAAoB,QAiChC,CAAC;AAEF,eAAO,MAAM,cAAc,QA2B1B,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAmBhF;AAwGD,wBAAgB,yBAAyB,IAAI,MAAM,CA4BlD;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAoC,CAAC"}
@@ -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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"}
@@ -55,5 +55,7 @@ export declare function buildLocalMcpServerEntry(home: string, serverUrl: string
55
55
  export declare function mergeMcpServerConfig(existing: McpJsonConfig, entry: McpCommandServerEntry): McpJsonConfig;
56
56
  export declare function mergeOpenCodeMcpConfig(existing: McpJsonConfig, entry: OpenCodeMcpEntry): McpJsonConfig;
57
57
  export declare function buildGeminiExtensionManifest(home: string, serverUrl: string): GeminiExtensionManifest;
58
+ export declare function getOpenCodePluginPath(home: string): string;
59
+ export declare function buildOpenCodePlugin(): string;
58
60
  export declare function buildGeminiHooksFile(_home: string, _platform?: string): GeminiHooksFile;
59
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,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;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,4BAA4B,IAAI,MAAM,CAErD;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,MAAyB,GAAG,gBAAgB,CAWnI;AAGD,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,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,SAAS,GAAE,MAAyB,GAAG,qBAAqB,CAUrI;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,qBAAqB,GAAG,aAAa,CAQzG;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,GAAG,aAAa,CAQtG;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAYrG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,MAAyB,GAAG,eAAe,CA8CzG"}
1
+ {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../src/setup/targets.ts"],"names":[],"mappings":"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"}
@@ -90,6 +90,187 @@ export function buildGeminiExtensionManifest(home, serverUrl) {
90
90
  },
91
91
  };
92
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
+ }
93
274
  export function buildGeminiHooksFile(_home, _platform = process.platform) {
94
275
  const { command, args } = resolveBinaryPath();
95
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":"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"}
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.79",
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": {