@gramatr/mcp 0.7.21 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/bin/setup.d.ts +2 -1
  2. package/dist/bin/setup.d.ts.map +1 -1
  3. package/dist/bin/setup.js +35 -1
  4. package/dist/bin/setup.js.map +1 -1
  5. package/dist/gramatr +0 -0
  6. package/dist/hooks/agent-gate.d.ts.map +1 -1
  7. package/dist/hooks/agent-gate.js +3 -2
  8. package/dist/hooks/agent-gate.js.map +1 -1
  9. package/dist/hooks/agent-verify.d.ts.map +1 -1
  10. package/dist/hooks/agent-verify.js +2 -1
  11. package/dist/hooks/agent-verify.js.map +1 -1
  12. package/dist/hooks/edit-tracker.d.ts.map +1 -1
  13. package/dist/hooks/edit-tracker.js +2 -1
  14. package/dist/hooks/edit-tracker.js.map +1 -1
  15. package/dist/hooks/generated/hook-timeouts.d.ts +41 -0
  16. package/dist/hooks/generated/hook-timeouts.d.ts.map +1 -0
  17. package/dist/hooks/generated/hook-timeouts.js +41 -0
  18. package/dist/hooks/generated/hook-timeouts.js.map +1 -0
  19. package/dist/hooks/generated/schema-constants.d.ts +46 -0
  20. package/dist/hooks/generated/schema-constants.d.ts.map +1 -1
  21. package/dist/hooks/generated/schema-constants.js +88 -11
  22. package/dist/hooks/generated/schema-constants.js.map +1 -1
  23. package/dist/hooks/git-gate.d.ts.map +1 -1
  24. package/dist/hooks/git-gate.js +14 -13
  25. package/dist/hooks/git-gate.js.map +1 -1
  26. package/dist/hooks/input-validator.d.ts.map +1 -1
  27. package/dist/hooks/input-validator.js +2 -1
  28. package/dist/hooks/input-validator.js.map +1 -1
  29. package/dist/hooks/lib/gramatr-hook-utils.d.ts.map +1 -1
  30. package/dist/hooks/lib/gramatr-hook-utils.js +2 -1
  31. package/dist/hooks/lib/gramatr-hook-utils.js.map +1 -1
  32. package/dist/hooks/lib/hook-state.d.ts.map +1 -1
  33. package/dist/hooks/lib/hook-state.js +2 -1
  34. package/dist/hooks/lib/hook-state.js.map +1 -1
  35. package/dist/hooks/lib/routing.d.ts.map +1 -1
  36. package/dist/hooks/lib/routing.js +8 -7
  37. package/dist/hooks/lib/routing.js.map +1 -1
  38. package/dist/hooks/lib/version-check.d.ts +1 -1
  39. package/dist/hooks/lib/version-check.d.ts.map +1 -1
  40. package/dist/hooks/lib/version-check.js +4 -5
  41. package/dist/hooks/lib/version-check.js.map +1 -1
  42. package/dist/hooks/rating-capture.d.ts.map +1 -1
  43. package/dist/hooks/rating-capture.js +3 -3
  44. package/dist/hooks/rating-capture.js.map +1 -1
  45. package/dist/hooks/stop.d.ts.map +1 -1
  46. package/dist/hooks/stop.js +1 -1
  47. package/dist/hooks/stop.js.map +1 -1
  48. package/dist/hooks/tool-tracker.d.ts.map +1 -1
  49. package/dist/hooks/tool-tracker.js +2 -1
  50. package/dist/hooks/tool-tracker.js.map +1 -1
  51. package/dist/hooks/user-prompt-submit.d.ts.map +1 -1
  52. package/dist/hooks/user-prompt-submit.js +15 -50
  53. package/dist/hooks/user-prompt-submit.js.map +1 -1
  54. package/dist/proxy/local-client.d.ts +12 -6
  55. package/dist/proxy/local-client.d.ts.map +1 -1
  56. package/dist/proxy/local-client.js +35 -7
  57. package/dist/proxy/local-client.js.map +1 -1
  58. package/dist/setup/examples/gramatr-opencode-plugin.d.ts +45 -0
  59. package/dist/setup/examples/gramatr-opencode-plugin.d.ts.map +1 -0
  60. package/dist/setup/examples/gramatr-opencode-plugin.js +129 -0
  61. package/dist/setup/examples/gramatr-opencode-plugin.js.map +1 -0
  62. package/dist/setup/generated/platform-hooks.d.ts +64 -0
  63. package/dist/setup/generated/platform-hooks.d.ts.map +1 -0
  64. package/dist/setup/generated/platform-hooks.js +526 -0
  65. package/dist/setup/generated/platform-hooks.js.map +1 -0
  66. package/dist/setup/instructions.d.ts +3 -3
  67. package/dist/setup/instructions.d.ts.map +1 -1
  68. package/dist/setup/instructions.js +50 -16
  69. package/dist/setup/instructions.js.map +1 -1
  70. package/dist/setup/integrations.d.ts.map +1 -1
  71. package/dist/setup/integrations.js +31 -42
  72. package/dist/setup/integrations.js.map +1 -1
  73. package/dist/setup/targets.d.ts +3 -0
  74. package/dist/setup/targets.d.ts.map +1 -1
  75. package/dist/setup/targets.js +16 -0
  76. package/dist/setup/targets.js.map +1 -1
  77. package/package.json +3 -1
  78. package/scripts/postinstall.mjs +115 -0
@@ -0,0 +1,129 @@
1
+ /**
2
+ * gramatr OpenCode Plugin Scaffold
3
+ *
4
+ * Maps OpenCode's plugin lifecycle events to gramatr hook logic.
5
+ * OpenCode uses a plugin-based architecture instead of hooks.json files.
6
+ *
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.
12
+ */
13
+ /**
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)
22
+ */
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 gramatr_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(`~/.gramatr/bin/gramatr 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
+ // `~/.gramatr/bin/gramatr 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.after — Post-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(`~/.gramatr/bin/gramatr 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 gramatr_classification_feedback for the current session
102
+ // - Evaluate if effort, intent, and skills were classified correctly
103
+ //
104
+ // Example:
105
+ // execSync(`~/.gramatr/bin/gramatr 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(`~/.gramatr/bin/gramatr hook session-end --opencode`, {
123
+ // env: { ...process.env, GRAMATR_SESSION_ID: ctx.sessionId },
124
+ // });
125
+ void ctx;
126
+ },
127
+ };
128
+ export default gramatrPlugin;
129
+ //# sourceMappingURL=gramatr-opencode-plugin.js.map
@@ -0,0 +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,uEAAuE;QACvE,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,gEAAgE;QAChE,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,sEAAsE;QACtE,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,mEAAmE;QACnE,qEAAqE;QACrE,EAAE;QACF,WAAW;QACX,8DAA8D;QAC9D,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,qEAAqE;QACrE,kEAAkE;QAClE,QAAQ;QACR,KAAK,GAAG,CAAC;IACX,CAAC;CACF,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * AUTO-GENERATED — do not edit manually.
3
+ * Source: contracts/platforms/*.yaml
4
+ * Generator: contracts/generator/generate.ts
5
+ * Generated: 2026-04-15T04:10:43.912Z
6
+ */
7
+ export interface PlatformHookEntry {
8
+ hook: string;
9
+ matcher?: string;
10
+ name?: string;
11
+ statusMessage?: string;
12
+ timeout?: number;
13
+ description?: string;
14
+ }
15
+ export interface PlatformMcpServer {
16
+ command: string;
17
+ timeout?: number;
18
+ env?: Record<string, string>;
19
+ }
20
+ export interface PlatformConfig {
21
+ name: string;
22
+ display_name: string;
23
+ description: string;
24
+ client_flag: string;
25
+ config_file: string;
26
+ hooks: Record<string, PlatformHookEntry[]>;
27
+ mcp_server: PlatformMcpServer;
28
+ instruction_blocks: string[];
29
+ }
30
+ /** ChatGPT Approved Add-on — ChatGPT official plugin/add-on — sandbox environment, OAuth auth, OpenAPI manifest */
31
+ export declare const CHATGPT_ADDON_HOOKS: PlatformConfig;
32
+ /** ChatGPT Desktop — ChatGPT Desktop app integration via MCP server config (hookless) */
33
+ export declare const CHATGPT_DESKTOP_HOOKS: PlatformConfig;
34
+ /** ChatGPT Custom GPT — ChatGPT Custom GPT instructions — ~8000 char budget, MCP pre-wired at GPT level, shareable link */
35
+ export declare const CHATGPT_GPT_HOOKS: PlatformConfig;
36
+ /** ChatGPT Project — ChatGPT Project instructions — 5000 char budget, MCP connected at project level */
37
+ export declare const CHATGPT_PROJECT_HOOKS: PlatformConfig;
38
+ /** ChatGPT Web — ChatGPT Web (chat.openai.com) integration via MCP — hookless, paste into personal prompt or custom GPT */
39
+ export declare const CHATGPT_WEB_HOOKS: PlatformConfig;
40
+ /** Claude Add-on — Claude.ai official MCP add-on — Anthropic partner program, sandbox environment */
41
+ export declare const CLAUDE_ADDON_HOOKS: PlatformConfig;
42
+ /** Claude Code — Claude Code CLI integration with full hook lifecycle */
43
+ export declare const CLAUDE_CODE_HOOKS: PlatformConfig;
44
+ /** Claude Desktop — Claude Desktop app integration via MCP server config (hookless) */
45
+ export declare const CLAUDE_DESKTOP_HOOKS: PlatformConfig;
46
+ /** Claude Project — Claude.ai Project instructions — larger budget than personal, MCP connected at project level */
47
+ export declare const CLAUDE_PROJECT_HOOKS: PlatformConfig;
48
+ /** Claude Web — Claude Web (claude.ai) integration via MCP — hookless, paste instructions into personal prompt */
49
+ export declare const CLAUDE_WEB_HOOKS: PlatformConfig;
50
+ /** Codex — OpenAI Codex CLI integration with session and prompt hooks */
51
+ export declare const CODEX_HOOKS: PlatformConfig;
52
+ /** Cursor — Cursor IDE integration via MCP server config (hookless, uses route_request) */
53
+ export declare const CURSOR_HOOKS: PlatformConfig;
54
+ /** Gemini CLI — Gemini CLI integration via extension manifest and hooks */
55
+ export declare const GEMINI_CLI_HOOKS: PlatformConfig;
56
+ /** OpenCode — OpenCode plugin-based integration (no hooks file, uses plugin architecture) */
57
+ export declare const OPENCODE_HOOKS: PlatformConfig;
58
+ /** VS Code — VS Code integration with Copilot/Continue via MCP server config (hookless) */
59
+ export declare const VSCODE_HOOKS: PlatformConfig;
60
+ /** Windsurf — Windsurf IDE integration via MCP server config (hookless) */
61
+ export declare const WINDSURF_HOOKS: PlatformConfig;
62
+ /** All platform configs keyed by platform name */
63
+ export declare const PLATFORM_HOOKS: Record<string, PlatformConfig>;
64
+ //# sourceMappingURL=platform-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-hooks.d.ts","sourceRoot":"","sources":["../../../src/setup/generated/platform-hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC3C,UAAU,EAAE,iBAAiB,CAAC;IAC9B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,mHAAmH;AACnH,eAAO,MAAM,mBAAmB,EAAE,cAwBxB,CAAC;AAEX,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,EAAE,cAsB1B,CAAC;AAEX,2HAA2H;AAC3H,eAAO,MAAM,iBAAiB,EAAE,cAuBtB,CAAC;AAEX,wGAAwG;AACxG,eAAO,MAAM,qBAAqB,EAAE,cAsB1B,CAAC;AAEX,2HAA2H;AAC3H,eAAO,MAAM,iBAAiB,EAAE,cAkBtB,CAAC;AAEX,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,EAAE,cAwBvB,CAAC;AAEX,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,EAAE,cA4FtB,CAAC;AAEX,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,EAAE,cAsBzB,CAAC;AAEX,oHAAoH;AACpH,eAAO,MAAM,oBAAoB,EAAE,cAuBzB,CAAC;AAEX,kHAAkH;AAClH,eAAO,MAAM,gBAAgB,EAAE,cAsBrB,CAAC;AAEX,yEAAyE;AACzE,eAAO,MAAM,WAAW,EAAE,cA2ChB,CAAC;AAEX,2FAA2F;AAC3F,eAAO,MAAM,YAAY,EAAE,cAsBjB,CAAC;AAEX,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,EAAE,cA8CrB,CAAC;AAEX,6FAA6F;AAC7F,eAAO,MAAM,cAAc,EAAE,cAqBnB,CAAC;AAEX,2FAA2F;AAC3F,eAAO,MAAM,YAAY,EAAE,cAsBjB,CAAC;AAEX,2EAA2E;AAC3E,eAAO,MAAM,cAAc,EAAE,cAsBnB,CAAC;AAEX,kDAAkD;AAClD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAiBhD,CAAC"}