@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.
- package/dist/bin/setup.d.ts +2 -1
- 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.map +1 -1
- package/dist/hooks/agent-gate.js +3 -2
- package/dist/hooks/agent-gate.js.map +1 -1
- package/dist/hooks/agent-verify.d.ts.map +1 -1
- package/dist/hooks/agent-verify.js +2 -1
- package/dist/hooks/agent-verify.js.map +1 -1
- package/dist/hooks/edit-tracker.d.ts.map +1 -1
- package/dist/hooks/edit-tracker.js +2 -1
- package/dist/hooks/edit-tracker.js.map +1 -1
- package/dist/hooks/generated/hook-timeouts.d.ts +41 -0
- package/dist/hooks/generated/hook-timeouts.d.ts.map +1 -0
- package/dist/hooks/generated/hook-timeouts.js +41 -0
- package/dist/hooks/generated/hook-timeouts.js.map +1 -0
- package/dist/hooks/generated/schema-constants.d.ts +46 -0
- package/dist/hooks/generated/schema-constants.d.ts.map +1 -1
- package/dist/hooks/generated/schema-constants.js +88 -11
- package/dist/hooks/generated/schema-constants.js.map +1 -1
- package/dist/hooks/git-gate.d.ts.map +1 -1
- package/dist/hooks/git-gate.js +14 -13
- package/dist/hooks/git-gate.js.map +1 -1
- package/dist/hooks/input-validator.d.ts.map +1 -1
- package/dist/hooks/input-validator.js +2 -1
- package/dist/hooks/input-validator.js.map +1 -1
- package/dist/hooks/lib/gramatr-hook-utils.d.ts.map +1 -1
- package/dist/hooks/lib/gramatr-hook-utils.js +2 -1
- package/dist/hooks/lib/gramatr-hook-utils.js.map +1 -1
- package/dist/hooks/lib/hook-state.d.ts.map +1 -1
- package/dist/hooks/lib/hook-state.js +2 -1
- package/dist/hooks/lib/hook-state.js.map +1 -1
- package/dist/hooks/lib/routing.d.ts.map +1 -1
- package/dist/hooks/lib/routing.js +8 -7
- package/dist/hooks/lib/routing.js.map +1 -1
- package/dist/hooks/lib/version-check.d.ts +1 -1
- package/dist/hooks/lib/version-check.d.ts.map +1 -1
- package/dist/hooks/lib/version-check.js +4 -5
- package/dist/hooks/lib/version-check.js.map +1 -1
- package/dist/hooks/rating-capture.d.ts.map +1 -1
- package/dist/hooks/rating-capture.js +3 -3
- package/dist/hooks/rating-capture.js.map +1 -1
- package/dist/hooks/stop.d.ts.map +1 -1
- package/dist/hooks/stop.js +1 -1
- package/dist/hooks/stop.js.map +1 -1
- package/dist/hooks/tool-tracker.d.ts.map +1 -1
- package/dist/hooks/tool-tracker.js +2 -1
- package/dist/hooks/tool-tracker.js.map +1 -1
- package/dist/hooks/user-prompt-submit.d.ts.map +1 -1
- package/dist/hooks/user-prompt-submit.js +15 -50
- package/dist/hooks/user-prompt-submit.js.map +1 -1
- package/dist/proxy/local-client.d.ts +12 -6
- package/dist/proxy/local-client.d.ts.map +1 -1
- package/dist/proxy/local-client.js +35 -7
- package/dist/proxy/local-client.js.map +1 -1
- package/dist/setup/examples/gramatr-opencode-plugin.d.ts +45 -0
- package/dist/setup/examples/gramatr-opencode-plugin.d.ts.map +1 -0
- package/dist/setup/examples/gramatr-opencode-plugin.js +129 -0
- package/dist/setup/examples/gramatr-opencode-plugin.js.map +1 -0
- package/dist/setup/generated/platform-hooks.d.ts +64 -0
- package/dist/setup/generated/platform-hooks.d.ts.map +1 -0
- package/dist/setup/generated/platform-hooks.js +526 -0
- package/dist/setup/generated/platform-hooks.js.map +1 -0
- package/dist/setup/instructions.d.ts +3 -3
- package/dist/setup/instructions.d.ts.map +1 -1
- package/dist/setup/instructions.js +50 -16
- package/dist/setup/instructions.js.map +1 -1
- package/dist/setup/integrations.d.ts.map +1 -1
- package/dist/setup/integrations.js +31 -42
- package/dist/setup/integrations.js.map +1 -1
- package/dist/setup/targets.d.ts +3 -0
- package/dist/setup/targets.d.ts.map +1 -1
- package/dist/setup/targets.js +16 -0
- package/dist/setup/targets.js.map +1 -1
- package/package.json +3 -1
- package/scripts/postinstall.mjs +115 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ENTITY_TYPES as ENTITY_TYPE_LIST } from '../hooks/generated/schema-constants.js';
|
|
1
2
|
export const CLAUDE_BLOCK_START = '<!-- GRAMATR-START -->';
|
|
2
3
|
export const CLAUDE_BLOCK_END = '<!-- GRAMATR-END -->';
|
|
3
4
|
export const CODEX_BLOCK_START = '<!-- GRAMATR-CODEX-START -->';
|
|
@@ -14,14 +15,9 @@ const CONTRACT_RULES = `**Mandatory contract fields — treat as execution requi
|
|
|
14
15
|
- \`enrichment.data.reasoning\` — RE + ISC scaffold when present (MUST consume)`;
|
|
15
16
|
const MEMORY_RULES = `**Memory:** Use gramatr MCP tools (\`search_semantic\`, \`create_entity\`,
|
|
16
17
|
\`add_observation\`), not local markdown files. Never write to MEMORY.md.`;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
skill, agent_definition, playbook, standard, reference, blog_idea,
|
|
21
|
-
agent_diary, session, conversation, turn, classification_record,
|
|
22
|
-
agent_execution, intelligence_packet, learning_signal, learning_reflection,
|
|
23
|
-
learning_pattern, learning_correction, attachment, execution_record,
|
|
24
|
-
model_evaluation, benchmark, external_connection, infrastructure, audit_log.
|
|
18
|
+
/** Composed from generated ENTITY_TYPES constant — stays in sync automatically */
|
|
19
|
+
const ENTITY_TYPES = `**Entity types (${ENTITY_TYPE_LIST.length}-type taxonomy):** \`create_entity\` requires \`entity_type\`
|
|
20
|
+
from: ${ENTITY_TYPE_LIST.join(', ')}.
|
|
25
21
|
Invalid types are blocked by the PreToolUse hook.`;
|
|
26
22
|
const REQUIRED_FIELDS = `**Required fields:** task/milestone: status (open|in_progress|blocked|review|done).
|
|
27
23
|
Decision: status + project_id. Session: status + project_id.`;
|
|
@@ -33,9 +29,13 @@ const FEEDBACK_RULES = `**Feedback loop (MANDATORY — trains the classifier fly
|
|
|
33
29
|
Skipping these breaks the training flywheel.`;
|
|
34
30
|
const SUBAGENT_RULES = `**Sub-agent composition (MANDATORY for non-trivial sub-agents):**
|
|
35
31
|
Before launching any sub-agent, call \`gramatr_route_request\` with the task
|
|
36
|
-
prompt.
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
prompt. Pass the returned packet VERBATIM to the agent — do not rewrite or
|
|
33
|
+
paraphrase: \`orchestration.agents.composed\` → agent system prompt,
|
|
34
|
+
\`enrichment.data.reasoning.isc_scaffold\` → acceptance criteria,
|
|
35
|
+
\`enrichment.data.reasoning.reverse_engineering\` → task context,
|
|
36
|
+
\`directives.hard_gates\` → constraints. If you disagree with the packet's
|
|
37
|
+
framing, state the disagreement before overriding — never silently replace.
|
|
38
|
+
Use \`isolation: "worktree"\` for code-modifying agents.
|
|
39
39
|
|
|
40
40
|
**Sub-agent audit briefs must include:**
|
|
41
41
|
1. Static check — is the config/code correct?
|
|
@@ -110,7 +110,11 @@ export function buildInstallPromptSuggestion(target) {
|
|
|
110
110
|
case 'claude-code':
|
|
111
111
|
case 'codex':
|
|
112
112
|
case 'gemini-cli':
|
|
113
|
+
case 'opencode':
|
|
113
114
|
return buildHookedPromptSuggestion(target);
|
|
115
|
+
case 'chatgpt-web':
|
|
116
|
+
return buildCompactPromptSuggestion('ChatGPT Web');
|
|
117
|
+
case 'claude-web':
|
|
114
118
|
case 'claude-desktop':
|
|
115
119
|
case 'chatgpt-desktop':
|
|
116
120
|
case 'cursor':
|
|
@@ -122,11 +126,13 @@ export function buildInstallPromptSuggestion(target) {
|
|
|
122
126
|
}
|
|
123
127
|
}
|
|
124
128
|
function buildHookedPromptSuggestion(target) {
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
:
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
const platformMap = {
|
|
130
|
+
'claude-code': 'Claude Code',
|
|
131
|
+
codex: 'Codex',
|
|
132
|
+
'gemini-cli': 'Gemini CLI',
|
|
133
|
+
opencode: 'OpenCode',
|
|
134
|
+
};
|
|
135
|
+
const platform = platformMap[target];
|
|
130
136
|
return `# gramatr (${platform})
|
|
131
137
|
|
|
132
138
|
gramatr is installed locally. Hooks inject a \`gmtr.intelligence.contract.v2\`
|
|
@@ -152,7 +158,9 @@ Use gramatr tools for memory and project state. Never maintain local notes.`;
|
|
|
152
158
|
}
|
|
153
159
|
function buildHooklessLocalPromptSuggestion(target) {
|
|
154
160
|
const platformMap = {
|
|
161
|
+
'claude-web': 'Claude Web',
|
|
155
162
|
'claude-desktop': 'Claude Desktop',
|
|
163
|
+
'chatgpt-web': 'ChatGPT Web',
|
|
156
164
|
'chatgpt-desktop': 'ChatGPT Desktop',
|
|
157
165
|
cursor: 'Cursor',
|
|
158
166
|
windsurf: 'Windsurf',
|
|
@@ -185,4 +193,30 @@ ${SUBAGENT_RULES}
|
|
|
185
193
|
|
|
186
194
|
For continuity questions, call \`gramatr_load_handoff\` then \`search_semantic\`.`;
|
|
187
195
|
}
|
|
196
|
+
// ── Compact variant (<1500 chars) for platforms with character limits ──
|
|
197
|
+
function buildCompactPromptSuggestion(displayName) {
|
|
198
|
+
return `# gramatr (${displayName})
|
|
199
|
+
|
|
200
|
+
You have gramatr connected as an MCP server.
|
|
201
|
+
|
|
202
|
+
Before responding to any message, call gramatr_route_request with the user's prompt. This returns a gmtr.intelligence.contract.v2 packet with classification, directives, memory, and phase templates.
|
|
203
|
+
|
|
204
|
+
Follow the packet as authoritative. Key fields:
|
|
205
|
+
- directives.hard_gates — non-negotiable constraints
|
|
206
|
+
- directives.behavioral_directives — per-turn instructions
|
|
207
|
+
- process.phase_template — phase sequence to follow (instant→RESPOND, fast→OBSERVE/RESPOND, standard→OBSERVE/PLAN/BUILD/VERIFY, extended+→full 7-phase)
|
|
208
|
+
- enrichment.data.reasoning — RE + ISC scaffold when present
|
|
209
|
+
- classification.effort_level — determines depth of response
|
|
210
|
+
- memory.search_results — pre-loaded context from knowledge graph
|
|
211
|
+
|
|
212
|
+
Use gramatr MCP tools for memory (search_semantic, create_entity, add_observation). Never maintain local notes or files.
|
|
213
|
+
|
|
214
|
+
After non-trivial work, call gramatr_classification_feedback to train the classifier. In LEARN phase, call gramatr_save_reflection to capture what worked and what didn't.
|
|
215
|
+
|
|
216
|
+
Entity types are validated server-side. Call gramatr_list_entity_types for valid types. Required fields: task/milestone need status, decision needs status + project_id.
|
|
217
|
+
|
|
218
|
+
For continuity questions ("what were we doing?"), call gramatr_load_handoff then search_semantic for detail.
|
|
219
|
+
|
|
220
|
+
For common retrieval, prefer gramatr_execute_intent over chaining low-level tools.`;
|
|
221
|
+
}
|
|
188
222
|
//# 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;
|
|
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":"
|
|
1
|
+
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/setup/integrations.ts"],"names":[],"mappings":"AAOA,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;AA8DnD,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;AAMD,wBAAgB,yBAAyB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAIhF"}
|
|
@@ -1,47 +1,33 @@
|
|
|
1
|
+
import { CLAUDE_CODE_HOOKS as CLAUDE_CODE_PLATFORM, CODEX_HOOKS as CODEX_PLATFORM, } from './generated/platform-hooks.js';
|
|
1
2
|
export const MCP_HOOK_BIN_RELATIVE = 'bin/gramatr';
|
|
2
3
|
const TS_RUNNER = 'npx tsx';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
{
|
|
31
|
-
event: 'UserPromptSubmit',
|
|
32
|
-
mcpHookName: 'user-prompt-submit',
|
|
33
|
-
hookArgs: ['--codex'],
|
|
34
|
-
statusMessage: 'Routing request through gramatr',
|
|
35
|
-
timeout: 15,
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
event: 'Stop',
|
|
39
|
-
mcpHookName: 'stop',
|
|
40
|
-
hookArgs: ['--codex'],
|
|
41
|
-
statusMessage: 'Submitting gramatr classification feedback',
|
|
42
|
-
timeout: 10,
|
|
43
|
-
},
|
|
44
|
-
];
|
|
4
|
+
/**
|
|
5
|
+
* Converts a generated PlatformConfig into the HookSpec[] format used by buildHooksFile.
|
|
6
|
+
* The client_flag from the platform config becomes the hookArgs (e.g. "--claude-code").
|
|
7
|
+
*/
|
|
8
|
+
function platformToHookSpecs(platform) {
|
|
9
|
+
const specs = [];
|
|
10
|
+
const clientFlag = platform.client_flag !== 'none' ? platform.client_flag : undefined;
|
|
11
|
+
for (const [event, entries] of Object.entries(platform.hooks)) {
|
|
12
|
+
for (const entry of entries) {
|
|
13
|
+
const spec = {
|
|
14
|
+
event,
|
|
15
|
+
mcpHookName: entry.hook,
|
|
16
|
+
hookArgs: clientFlag ? [clientFlag] : undefined,
|
|
17
|
+
};
|
|
18
|
+
if (entry.matcher)
|
|
19
|
+
spec.matcher = entry.matcher;
|
|
20
|
+
if (entry.statusMessage)
|
|
21
|
+
spec.statusMessage = entry.statusMessage;
|
|
22
|
+
if (entry.timeout)
|
|
23
|
+
spec.timeout = entry.timeout;
|
|
24
|
+
specs.push(spec);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return specs;
|
|
28
|
+
}
|
|
29
|
+
const CLAUDE_HOOKS = platformToHookSpecs(CLAUDE_CODE_PLATFORM);
|
|
30
|
+
const CODEX_HOOKS = platformToHookSpecs(CODEX_PLATFORM);
|
|
45
31
|
function buildHookCommand(clientDir, spec) {
|
|
46
32
|
if (spec.mcpHookName) {
|
|
47
33
|
const args = spec.hookArgs?.length ? ` ${spec.hookArgs.join(' ')}` : '';
|
|
@@ -113,6 +99,9 @@ export function ensureCodexHooksFeature(configToml) {
|
|
|
113
99
|
const prefix = text ? `${text}\n\n` : '';
|
|
114
100
|
return `${prefix}[features]\ncodex_hooks = true\n`;
|
|
115
101
|
}
|
|
102
|
+
// OpenCode uses a plugin-based architecture instead of hooks.json files.
|
|
103
|
+
// The gramatr plugin scaffold lives at setup/examples/gramatr-opencode-plugin.ts.
|
|
104
|
+
// No OPENCODE_HOOKS array is needed here — lifecycle events are handled by the plugin.
|
|
116
105
|
export function buildClaudeMcpServerEntry() {
|
|
117
106
|
return {
|
|
118
107
|
command: '~/.gramatr/bin/gramatr',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/setup/integrations.ts"],"names":[],"mappings":"
|
|
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
|
@@ -38,6 +38,9 @@ export declare function getChatgptDesktopConfigPath(home: string, platform?: str
|
|
|
38
38
|
export declare function getCursorConfigPath(home: string): string;
|
|
39
39
|
export declare function getWindsurfConfigPath(home: string): string;
|
|
40
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;
|
|
41
44
|
export declare function getGeminiExtensionDir(home: string): string;
|
|
42
45
|
export declare function getGeminiHooksPath(home: string): string;
|
|
43
46
|
export declare function getGeminiManifestPath(home: string): string;
|
|
@@ -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,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"}
|
|
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,4BAA4B,IAAI,MAAM,CAErD;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,qBAAqB,CASvI;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
|
@@ -20,6 +20,22 @@ export function getWindsurfConfigPath(home) {
|
|
|
20
20
|
export function getVscodeConfigPath(home) {
|
|
21
21
|
return join(home, '.vscode', 'mcp.json');
|
|
22
22
|
}
|
|
23
|
+
export function getOpenCodeConfigPath(home) {
|
|
24
|
+
return join(home, '.config', 'opencode', 'config.json');
|
|
25
|
+
}
|
|
26
|
+
export function getOpenCodeProjectConfigPath() {
|
|
27
|
+
return 'opencode.json';
|
|
28
|
+
}
|
|
29
|
+
export function buildOpenCodeMcpServerEntry(home, serverUrl, platform = process.platform) {
|
|
30
|
+
const binaryName = platform === 'win32' ? 'gramatr.exe' : 'gramatr';
|
|
31
|
+
return {
|
|
32
|
+
command: join(home, '.gramatr', 'bin', binaryName),
|
|
33
|
+
env: {
|
|
34
|
+
GRAMATR_DIR: join(home, '.gramatr'),
|
|
35
|
+
GRAMATR_URL: serverUrl,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
23
39
|
export function getGeminiExtensionDir(home) {
|
|
24
40
|
return join(home, '.gemini', 'extensions', 'gramatr');
|
|
25
41
|
}
|
|
@@ -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.
|
|
3
|
+
"version": "0.8.1",
|
|
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": {
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"files": [
|
|
47
47
|
"dist",
|
|
48
|
+
"scripts/postinstall.mjs",
|
|
48
49
|
"LICENSE"
|
|
49
50
|
],
|
|
50
51
|
"dependencies": {
|
|
@@ -58,6 +59,7 @@
|
|
|
58
59
|
"vitest": "^4.0.18"
|
|
59
60
|
},
|
|
60
61
|
"scripts": {
|
|
62
|
+
"postinstall": "node scripts/postinstall.mjs",
|
|
61
63
|
"build": "tsc --build && node ./scripts/build-binary.mjs",
|
|
62
64
|
"build:types": "tsc --build",
|
|
63
65
|
"build:binary": "bun build --compile src/bin/gramatr-mcp.ts --define __GRAMATR_VERSION__=\\\"${npm_package_version}\\\" --outfile dist/gramatr",
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* postinstall.mjs — Auto-download the pre-compiled gramatr binary for the user's platform.
|
|
3
|
+
*
|
|
4
|
+
* Runs on `npm install @gramatr/client`. Detects platform + arch, downloads
|
|
5
|
+
* the matching binary from the GitHub Release, and installs it to
|
|
6
|
+
* ~/.gramatr/bin/gramatr.
|
|
7
|
+
*
|
|
8
|
+
* Design constraints:
|
|
9
|
+
* - Pure Node.js (no external dependencies, no bun)
|
|
10
|
+
* - Node 18+ (native fetch)
|
|
11
|
+
* - Graceful failure: logs a warning but always exits 0
|
|
12
|
+
* - ISC-A: npm install must not fail if GitHub is unreachable
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { createWriteStream } from "node:fs";
|
|
16
|
+
import { chmod, mkdir, rename, unlink } from "node:fs/promises";
|
|
17
|
+
import { homedir } from "node:os";
|
|
18
|
+
import { dirname, join } from "node:path";
|
|
19
|
+
import { pipeline } from "node:stream/promises";
|
|
20
|
+
import { Readable } from "node:stream";
|
|
21
|
+
import { createRequire } from "node:module";
|
|
22
|
+
import { fileURLToPath } from "node:url";
|
|
23
|
+
|
|
24
|
+
// Download from the PUBLIC repo (gramatr/mcp), not the private monorepo (gramatr/gramatr).
|
|
25
|
+
const GITHUB_RELEASE_BASE =
|
|
26
|
+
"https://github.com/gramatr/mcp/releases/download";
|
|
27
|
+
|
|
28
|
+
/** Map (platform, arch) to the binary asset name. */
|
|
29
|
+
function getBinaryName(platform, arch) {
|
|
30
|
+
const map = {
|
|
31
|
+
"linux-x64": "gramatr-linux-x64",
|
|
32
|
+
"linux-arm64": "gramatr-linux-arm64",
|
|
33
|
+
"darwin-x64": "gramatr-darwin-x64",
|
|
34
|
+
"darwin-arm64": "gramatr-darwin-arm64",
|
|
35
|
+
"win32-x64": "gramatr-windows-x64.exe",
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const key = `${platform}-${arch}`;
|
|
39
|
+
return map[key] ?? null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Read version from the package's own package.json. */
|
|
43
|
+
function getVersion() {
|
|
44
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
45
|
+
const require = createRequire(import.meta.url);
|
|
46
|
+
const pkg = require(join(__dirname, "..", "package.json"));
|
|
47
|
+
return pkg.version;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Download a file from `url` to `dest`, following redirects (fetch handles them). */
|
|
51
|
+
async function downloadBinary(url, dest) {
|
|
52
|
+
const response = await fetch(url, { redirect: "follow" });
|
|
53
|
+
|
|
54
|
+
if (!response.ok) {
|
|
55
|
+
throw new Error(
|
|
56
|
+
`Download failed: HTTP ${response.status} ${response.statusText}`,
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const tempDest = `${dest}.tmp`;
|
|
61
|
+
const body = Readable.fromWeb(response.body);
|
|
62
|
+
const fileStream = createWriteStream(tempDest);
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
await pipeline(body, fileStream);
|
|
66
|
+
await rename(tempDest, dest);
|
|
67
|
+
} catch (err) {
|
|
68
|
+
// Clean up partial download
|
|
69
|
+
await unlink(tempDest).catch(() => {});
|
|
70
|
+
throw err;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async function main() {
|
|
75
|
+
const platform = process.platform;
|
|
76
|
+
const arch = process.arch;
|
|
77
|
+
|
|
78
|
+
const binaryName = getBinaryName(platform, arch);
|
|
79
|
+
if (!binaryName) {
|
|
80
|
+
console.warn(
|
|
81
|
+
`[gramatr] Unsupported platform: ${platform}-${arch}. ` +
|
|
82
|
+
"Skipping binary download. You can install manually from " +
|
|
83
|
+
"https://github.com/gramatr/gramatr/releases",
|
|
84
|
+
);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const version = getVersion();
|
|
89
|
+
const url = `${GITHUB_RELEASE_BASE}/v${version}/${binaryName}`;
|
|
90
|
+
|
|
91
|
+
const installDir = join(homedir(), ".gramatr", "bin");
|
|
92
|
+
const isWindows = platform === "win32";
|
|
93
|
+
const installPath = join(installDir, isWindows ? "gramatr.exe" : "gramatr");
|
|
94
|
+
|
|
95
|
+
console.log(`[gramatr] Downloading ${binaryName} v${version}...`);
|
|
96
|
+
|
|
97
|
+
await mkdir(installDir, { recursive: true });
|
|
98
|
+
await downloadBinary(url, installPath);
|
|
99
|
+
|
|
100
|
+
if (!isWindows) {
|
|
101
|
+
await chmod(installPath, 0o755);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
console.log(`[gramatr] Installed to ${installPath}`);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
main().catch((err) => {
|
|
108
|
+
console.warn(
|
|
109
|
+
`[gramatr] Binary download failed: ${err.message}. ` +
|
|
110
|
+
"This is non-fatal — you can install manually from " +
|
|
111
|
+
"https://github.com/gramatr/gramatr/releases",
|
|
112
|
+
);
|
|
113
|
+
// Always exit 0 — never break npm install
|
|
114
|
+
process.exit(0);
|
|
115
|
+
});
|