@gramatr/mcp 0.7.10 → 0.7.14
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/__mocks__/bun-sqlite.d.ts +35 -0
- package/dist/__mocks__/bun-sqlite.d.ts.map +1 -0
- package/dist/__mocks__/bun-sqlite.js +89 -0
- package/dist/__mocks__/bun-sqlite.js.map +1 -0
- package/dist/bin/build-mcpb.d.ts +2 -5
- package/dist/bin/build-mcpb.d.ts.map +1 -1
- package/dist/bin/build-mcpb.js +20 -43
- package/dist/bin/build-mcpb.js.map +1 -1
- package/dist/bin/gramatr-mcp.d.ts +10 -2
- package/dist/bin/gramatr-mcp.d.ts.map +1 -1
- package/dist/bin/gramatr-mcp.js +73 -15
- package/dist/bin/gramatr-mcp.js.map +1 -1
- package/dist/bin/login.d.ts.map +1 -1
- package/dist/bin/login.js +5 -0
- package/dist/bin/login.js.map +1 -1
- package/dist/bin/setup.d.ts +13 -10
- package/dist/bin/setup.d.ts.map +1 -1
- package/dist/bin/setup.js +88 -42
- package/dist/bin/setup.js.map +1 -1
- package/dist/cache/lru-cache.js +1 -1
- package/dist/config-runtime.d.ts +13 -0
- package/dist/config-runtime.d.ts.map +1 -1
- package/dist/config-runtime.js +24 -0
- package/dist/config-runtime.js.map +1 -1
- package/dist/gramatr +0 -0
- package/dist/hooks/input-validator.d.ts.map +1 -1
- package/dist/hooks/input-validator.js +27 -9
- package/dist/hooks/input-validator.js.map +1 -1
- package/dist/hooks/lib/client-runtime.d.ts +7 -0
- package/dist/hooks/lib/client-runtime.d.ts.map +1 -0
- package/dist/hooks/lib/client-runtime.js +22 -0
- package/dist/hooks/lib/client-runtime.js.map +1 -0
- package/dist/hooks/lib/hook-state.d.ts +7 -2
- package/dist/hooks/lib/hook-state.d.ts.map +1 -1
- package/dist/hooks/lib/hook-state.js +56 -35
- package/dist/hooks/lib/hook-state.js.map +1 -1
- package/dist/hooks/lib/intelligence.d.ts.map +1 -1
- package/dist/hooks/lib/intelligence.js +281 -427
- package/dist/hooks/lib/intelligence.js.map +1 -1
- package/dist/hooks/lib/routing.d.ts +6 -1
- package/dist/hooks/lib/routing.d.ts.map +1 -1
- package/dist/hooks/lib/routing.js +35 -11
- package/dist/hooks/lib/routing.js.map +1 -1
- package/dist/hooks/lib/session.d.ts.map +1 -1
- package/dist/hooks/lib/session.js +3 -4
- package/dist/hooks/lib/session.js.map +1 -1
- package/dist/hooks/lib/tool-envelope.d.ts +9 -0
- package/dist/hooks/lib/tool-envelope.d.ts.map +1 -0
- package/dist/hooks/lib/tool-envelope.js +24 -0
- package/dist/hooks/lib/tool-envelope.js.map +1 -0
- package/dist/hooks/lib/types.d.ts +7 -0
- package/dist/hooks/lib/types.d.ts.map +1 -1
- package/dist/hooks/lib/version.d.ts.map +1 -1
- package/dist/hooks/lib/version.js +3 -0
- package/dist/hooks/lib/version.js.map +1 -1
- package/dist/hooks/rating-capture.d.ts.map +1 -1
- package/dist/hooks/rating-capture.js +7 -2
- package/dist/hooks/rating-capture.js.map +1 -1
- package/dist/hooks/session-end.d.ts.map +1 -1
- package/dist/hooks/session-end.js +8 -6
- package/dist/hooks/session-end.js.map +1 -1
- package/dist/hooks/session-start.d.ts.map +1 -1
- package/dist/hooks/session-start.js +39 -13
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/hooks/stop.d.ts.map +1 -1
- package/dist/hooks/stop.js +18 -6
- package/dist/hooks/stop.js.map +1 -1
- package/dist/hooks/user-prompt-submit.d.ts.map +1 -1
- package/dist/hooks/user-prompt-submit.js +24 -11
- package/dist/hooks/user-prompt-submit.js.map +1 -1
- package/dist/intelligence/packet2-fetcher.d.ts +2 -2
- package/dist/intelligence/packet2-fetcher.d.ts.map +1 -1
- package/dist/intelligence/packet2-fetcher.js +24 -5
- package/dist/intelligence/packet2-fetcher.js.map +1 -1
- package/dist/intelligence/session-manager.d.ts.map +1 -1
- package/dist/intelligence/session-manager.js +25 -1
- package/dist/intelligence/session-manager.js.map +1 -1
- package/dist/proxy/tool-proxy.d.ts.map +1 -1
- package/dist/proxy/tool-proxy.js +57 -11
- package/dist/proxy/tool-proxy.js.map +1 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +8 -9
- package/dist/server/server.js.map +1 -1
- package/dist/setup/instructions.d.ts +2 -2
- package/dist/setup/instructions.d.ts.map +1 -1
- package/dist/setup/instructions.js +35 -11
- package/dist/setup/instructions.js.map +1 -1
- package/dist/setup/integrations.d.ts +1 -1
- package/dist/setup/integrations.d.ts.map +1 -1
- package/dist/setup/integrations.js +7 -4
- package/dist/setup/integrations.js.map +1 -1
- package/dist/setup/targets.d.ts +1 -1
- package/dist/setup/targets.d.ts.map +1 -1
- package/dist/setup/targets.js +2 -3
- package/dist/setup/targets.js.map +1 -1
- package/dist/setup/web-connector.d.ts.map +1 -1
- package/dist/setup/web-connector.js +3 -1
- package/dist/setup/web-connector.js.map +1 -1
- package/package.json +10 -7
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bun-sqlite.ts — Vitest compatibility shim for bun:sqlite.
|
|
3
|
+
*
|
|
4
|
+
* In production, hook-state.ts imports from 'bun:sqlite' and runs inside the
|
|
5
|
+
* compiled Bun binary. In the Node/vitest test environment, 'bun:sqlite' is
|
|
6
|
+
* unavailable. This shim maps the bun:sqlite API surface to better-sqlite3
|
|
7
|
+
* so the 54 test files can keep running under Node without changes.
|
|
8
|
+
*
|
|
9
|
+
* Key differences handled here:
|
|
10
|
+
* - bun:sqlite named params require @-prefixed keys ({ '@session_id': val });
|
|
11
|
+
* better-sqlite3 requires plain keys ({ session_id: val }). Shim strips the prefix.
|
|
12
|
+
* - bun:sqlite positional params are passed as individual args or an array.
|
|
13
|
+
* better-sqlite3 accepts the same. Scalars pass through unchanged.
|
|
14
|
+
* - bun:sqlite .run() returns void; changes() must be queried via SELECT changes().
|
|
15
|
+
* better-sqlite3 returns a RunResult with .changes — handled transparently.
|
|
16
|
+
*/
|
|
17
|
+
import BetterSqlite3 from 'better-sqlite3';
|
|
18
|
+
type ScalarParam = string | number | bigint | boolean | null | undefined;
|
|
19
|
+
type Params = Record<string, ScalarParam> | ScalarParam[] | ScalarParam;
|
|
20
|
+
declare class Statement<T = unknown> {
|
|
21
|
+
private stmt;
|
|
22
|
+
constructor(stmt: BetterSqlite3.Statement);
|
|
23
|
+
run(...args: Params[]): void;
|
|
24
|
+
get(...args: Params[]): T | null;
|
|
25
|
+
all(...args: Params[]): T[];
|
|
26
|
+
}
|
|
27
|
+
export declare class Database {
|
|
28
|
+
private db;
|
|
29
|
+
constructor(path: string);
|
|
30
|
+
exec(sql: string): void;
|
|
31
|
+
query<T = unknown>(sql: string): Statement<T>;
|
|
32
|
+
close(): void;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=bun-sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bun-sqlite.d.ts","sourceRoot":"","sources":["../../src/__mocks__/bun-sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAE3C,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AACzE,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,WAAW,EAAE,GAAG,WAAW,CAAC;AAcxE,cAAM,SAAS,CAAC,CAAC,GAAG,OAAO;IACb,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa,CAAC,SAAS;IAEjD,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAW5B,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAahC,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;CAY5B;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAAyB;gBAEvB,IAAI,EAAE,MAAM;IAIxB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAI7C,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bun-sqlite.ts — Vitest compatibility shim for bun:sqlite.
|
|
3
|
+
*
|
|
4
|
+
* In production, hook-state.ts imports from 'bun:sqlite' and runs inside the
|
|
5
|
+
* compiled Bun binary. In the Node/vitest test environment, 'bun:sqlite' is
|
|
6
|
+
* unavailable. This shim maps the bun:sqlite API surface to better-sqlite3
|
|
7
|
+
* so the 54 test files can keep running under Node without changes.
|
|
8
|
+
*
|
|
9
|
+
* Key differences handled here:
|
|
10
|
+
* - bun:sqlite named params require @-prefixed keys ({ '@session_id': val });
|
|
11
|
+
* better-sqlite3 requires plain keys ({ session_id: val }). Shim strips the prefix.
|
|
12
|
+
* - bun:sqlite positional params are passed as individual args or an array.
|
|
13
|
+
* better-sqlite3 accepts the same. Scalars pass through unchanged.
|
|
14
|
+
* - bun:sqlite .run() returns void; changes() must be queried via SELECT changes().
|
|
15
|
+
* better-sqlite3 returns a RunResult with .changes — handled transparently.
|
|
16
|
+
*/
|
|
17
|
+
import BetterSqlite3 from 'better-sqlite3';
|
|
18
|
+
function normaliseParams(params) {
|
|
19
|
+
if (params === undefined || params === null)
|
|
20
|
+
return undefined;
|
|
21
|
+
if (Array.isArray(params))
|
|
22
|
+
return params;
|
|
23
|
+
if (typeof params !== 'object')
|
|
24
|
+
return [params]; // scalar → positional array
|
|
25
|
+
// Named param object: strip @, $, : prefix from each key
|
|
26
|
+
return Object.fromEntries(Object.entries(params).map(([k, v]) => [k.replace(/^[@$:]/, ''), v]));
|
|
27
|
+
}
|
|
28
|
+
class Statement {
|
|
29
|
+
stmt;
|
|
30
|
+
constructor(stmt) {
|
|
31
|
+
this.stmt = stmt;
|
|
32
|
+
}
|
|
33
|
+
run(...args) {
|
|
34
|
+
const params = args.length === 0 ? undefined : args.length === 1 ? normaliseParams(args[0]) : args;
|
|
35
|
+
if (params === undefined) {
|
|
36
|
+
this.stmt.run();
|
|
37
|
+
}
|
|
38
|
+
else if (Array.isArray(params)) {
|
|
39
|
+
this.stmt.run(...params);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.stmt.run(params);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
get(...args) {
|
|
46
|
+
const params = args.length === 0 ? undefined : args.length === 1 ? normaliseParams(args[0]) : args;
|
|
47
|
+
let result;
|
|
48
|
+
if (params === undefined) {
|
|
49
|
+
result = this.stmt.get();
|
|
50
|
+
}
|
|
51
|
+
else if (Array.isArray(params)) {
|
|
52
|
+
result = this.stmt.get(...params);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
result = this.stmt.get(params);
|
|
56
|
+
}
|
|
57
|
+
return (result ?? null);
|
|
58
|
+
}
|
|
59
|
+
all(...args) {
|
|
60
|
+
const params = args.length === 0 ? undefined : args.length === 1 ? normaliseParams(args[0]) : args;
|
|
61
|
+
let result;
|
|
62
|
+
if (params === undefined) {
|
|
63
|
+
result = this.stmt.all();
|
|
64
|
+
}
|
|
65
|
+
else if (Array.isArray(params)) {
|
|
66
|
+
result = this.stmt.all(...params);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
result = this.stmt.all(params);
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export class Database {
|
|
75
|
+
db;
|
|
76
|
+
constructor(path) {
|
|
77
|
+
this.db = new BetterSqlite3(path);
|
|
78
|
+
}
|
|
79
|
+
exec(sql) {
|
|
80
|
+
this.db.exec(sql);
|
|
81
|
+
}
|
|
82
|
+
query(sql) {
|
|
83
|
+
return new Statement(this.db.prepare(sql));
|
|
84
|
+
}
|
|
85
|
+
close() {
|
|
86
|
+
this.db.close();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=bun-sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bun-sqlite.js","sourceRoot":"","sources":["../../src/__mocks__/bun-sqlite.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/build-mcpb.d.ts
CHANGED
|
@@ -20,10 +20,10 @@ interface McpbManifest {
|
|
|
20
20
|
keywords: string[];
|
|
21
21
|
icon?: string;
|
|
22
22
|
server: {
|
|
23
|
-
type: '
|
|
23
|
+
type: 'binary';
|
|
24
24
|
entry_point: string;
|
|
25
25
|
mcp_config: {
|
|
26
|
-
command:
|
|
26
|
+
command: string;
|
|
27
27
|
args: string[];
|
|
28
28
|
env: Record<string, string>;
|
|
29
29
|
};
|
|
@@ -38,9 +38,6 @@ interface McpbManifest {
|
|
|
38
38
|
compatibility: {
|
|
39
39
|
claude_desktop: string;
|
|
40
40
|
platforms: string[];
|
|
41
|
-
runtimes: {
|
|
42
|
-
node: string;
|
|
43
|
-
};
|
|
44
41
|
};
|
|
45
42
|
privacy_policies: string[];
|
|
46
43
|
tools_generated: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-mcpb.d.ts","sourceRoot":"","sources":["../../src/bin/build-mcpb.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"build-mcpb.d.ts","sourceRoot":"","sources":["../../src/bin/build-mcpb.ts"],"names":[],"mappings":";AAqBA,UAAU,YAAY;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE;YACV,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,EAAE,MAAM,EAAE,CAAC;YACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC7B,CAAC;KACH,CAAC;IACF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC1H,aAAa,EAAE;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAgBD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAkD3D;AAqDD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,CAa7H"}
|
package/dist/bin/build-mcpb.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { chmodSync, copyFileSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync, } from 'node:fs';
|
|
3
3
|
import { execFileSync } from 'node:child_process';
|
|
4
4
|
import { dirname, join, resolve } from 'node:path';
|
|
5
|
-
import { createRequire } from 'node:module';
|
|
6
5
|
import { fileURLToPath } from 'node:url';
|
|
7
6
|
import { getGramatrUrlFromEnv } from '../config-runtime.js';
|
|
8
7
|
const currentFile = fileURLToPath(import.meta.url);
|
|
9
8
|
const binDir = dirname(currentFile);
|
|
10
9
|
const packageDir = dirname(dirname(binDir));
|
|
11
10
|
const repoRoot = dirname(dirname(packageDir));
|
|
12
|
-
const require = createRequire(import.meta.url);
|
|
13
11
|
function readPackageJson(path) {
|
|
14
12
|
return JSON.parse(readFileSync(path, 'utf8'));
|
|
15
13
|
}
|
|
@@ -44,11 +42,11 @@ export function buildManifest(version) {
|
|
|
44
42
|
keywords: ['ai', 'mcp', 'routing', 'memory', 'gramatr', 'claude-desktop'],
|
|
45
43
|
icon: 'icon.png',
|
|
46
44
|
server: {
|
|
47
|
-
type: '
|
|
48
|
-
entry_point: '
|
|
45
|
+
type: 'binary',
|
|
46
|
+
entry_point: 'bin/gramatr',
|
|
49
47
|
mcp_config: {
|
|
50
|
-
command: '
|
|
51
|
-
args: [
|
|
48
|
+
command: '${__dirname}/bin/gramatr',
|
|
49
|
+
args: [],
|
|
52
50
|
env: {
|
|
53
51
|
GRAMATR_API_KEY: '${user_config.api_key}',
|
|
54
52
|
GRAMATR_URL: mcpUrl,
|
|
@@ -67,7 +65,6 @@ export function buildManifest(version) {
|
|
|
67
65
|
compatibility: {
|
|
68
66
|
claude_desktop: '>=1.0.0',
|
|
69
67
|
platforms: ['darwin', 'win32'],
|
|
70
|
-
runtimes: { node: '>=20.0.0' },
|
|
71
68
|
},
|
|
72
69
|
privacy_policies: ['https://gramatr.com/privacy'],
|
|
73
70
|
tools_generated: true,
|
|
@@ -77,42 +74,19 @@ export function buildManifest(version) {
|
|
|
77
74
|
function ensureDir(path) {
|
|
78
75
|
mkdirSync(path, { recursive: true });
|
|
79
76
|
}
|
|
80
|
-
function resolvePackageRoot(packageName) {
|
|
81
|
-
return realpathSync(join(repoRoot, 'node_modules', ...packageName.split('/')));
|
|
82
|
-
}
|
|
83
|
-
function copyPackageRecursive(packageName, nodeModulesDir, seen = new Set()) {
|
|
84
|
-
if (seen.has(packageName))
|
|
85
|
-
return;
|
|
86
|
-
seen.add(packageName);
|
|
87
|
-
const packageRoot = resolvePackageRoot(packageName);
|
|
88
|
-
const packageJson = readPackageJson(join(packageRoot, 'package.json'));
|
|
89
|
-
const destination = join(nodeModulesDir, ...packageName.split('/'));
|
|
90
|
-
ensureDir(dirname(destination));
|
|
91
|
-
cpSync(packageRoot, destination, { recursive: true });
|
|
92
|
-
const dependencies = Object.keys(packageJson.dependencies || {});
|
|
93
|
-
const peerDependencies = Object.entries(packageJson.peerDependencies || {})
|
|
94
|
-
.filter(([name]) => !packageJson.peerDependenciesMeta?.[name]?.optional)
|
|
95
|
-
.map(([name]) => name);
|
|
96
|
-
for (const dependency of [...dependencies, ...peerDependencies]) {
|
|
97
|
-
copyPackageRecursive(dependency, nodeModulesDir, seen);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
function writeRuntimePackageJson(bundleDir, version) {
|
|
101
|
-
const runtimePackage = {
|
|
102
|
-
name: 'gramatr-mcpb-runtime',
|
|
103
|
-
version,
|
|
104
|
-
private: true,
|
|
105
|
-
type: 'module',
|
|
106
|
-
};
|
|
107
|
-
writeFileSync(join(bundleDir, 'package.json'), `${JSON.stringify(runtimePackage, null, 2)}\n`, 'utf8');
|
|
108
|
-
}
|
|
109
77
|
function writeManifest(bundleDir, manifest) {
|
|
110
78
|
writeFileSync(join(bundleDir, 'manifest.json'), `${JSON.stringify(manifest, null, 2)}\n`, 'utf8');
|
|
111
79
|
}
|
|
112
|
-
function copyRuntimeFiles(bundleDir
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
80
|
+
function copyRuntimeFiles(bundleDir) {
|
|
81
|
+
const binDestDir = join(bundleDir, 'bin');
|
|
82
|
+
ensureDir(binDestDir);
|
|
83
|
+
const binaryName = process.platform === 'win32' ? 'gramatr.exe' : 'gramatr';
|
|
84
|
+
const binarySrc = join(packageDir, 'dist', binaryName);
|
|
85
|
+
const binaryDest = join(binDestDir, binaryName);
|
|
86
|
+
copyFileSync(binarySrc, binaryDest);
|
|
87
|
+
if (process.platform !== 'win32') {
|
|
88
|
+
chmodSync(binaryDest, 0o755);
|
|
89
|
+
}
|
|
116
90
|
const licensePath = join(repoRoot, 'LICENSE');
|
|
117
91
|
if (existsSync(licensePath)) {
|
|
118
92
|
copyFileSync(licensePath, join(bundleDir, 'LICENSE'));
|
|
@@ -141,7 +115,7 @@ export function buildMcpb(outDir, version) {
|
|
|
141
115
|
rmSync(stagingDir, { recursive: true, force: true });
|
|
142
116
|
ensureDir(stagingDir);
|
|
143
117
|
writeManifest(stagingDir, manifest);
|
|
144
|
-
copyRuntimeFiles(stagingDir
|
|
118
|
+
copyRuntimeFiles(stagingDir);
|
|
145
119
|
buildArchive(stagingDir, archivePath);
|
|
146
120
|
return { bundleDir: stagingDir, archivePath, manifest };
|
|
147
121
|
}
|
|
@@ -159,5 +133,8 @@ function main() {
|
|
|
159
133
|
process.stdout.write(` Version: ${version}\n`);
|
|
160
134
|
process.stdout.write(` Entry: ${result.manifest.server.entry_point}\n`);
|
|
161
135
|
}
|
|
162
|
-
|
|
136
|
+
const invokedAsScript = process.argv[1] ? resolve(process.argv[1]) === currentFile : false;
|
|
137
|
+
if (invokedAsScript) {
|
|
138
|
+
main();
|
|
139
|
+
}
|
|
163
140
|
//# sourceMappingURL=build-mcpb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-mcpb.js","sourceRoot":"","sources":["../../src/bin/build-mcpb.ts"],"names":[],"mappings":";AAEA,OAAO,EACL,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"build-mcpb.js","sourceRoot":"","sources":["../../src/bin/build-mcpb.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,12 +14,20 @@
|
|
|
14
14
|
* gramatr-mcp setup claude-desktop Auto-configure Claude Desktop MCP settings
|
|
15
15
|
* gramatr-mcp setup chatgpt-desktop Auto-configure ChatGPT Desktop MCP settings
|
|
16
16
|
* gramatr-mcp setup gemini Auto-configure Gemini CLI extension files
|
|
17
|
+
* gramatr-mcp setup cursor Auto-configure Cursor MCP settings
|
|
18
|
+
* gramatr-mcp setup windsurf Auto-configure Windsurf MCP settings
|
|
19
|
+
* gramatr-mcp setup vscode Auto-configure VS Code MCP settings
|
|
20
|
+
* gramatr-mcp setup all Configure all supported local clients
|
|
17
21
|
* gramatr-mcp setup auto Auto-detect and install detected local clients
|
|
22
|
+
* gramatr-mcp setup auto --list List detected install targets only
|
|
23
|
+
* gramatr-mcp setup auto --yes Install all detected targets (non-interactive)
|
|
18
24
|
* gramatr-mcp setup web Show web connector instructions + prompt suggestion
|
|
19
25
|
* gramatr-mcp setup web chatgpt Show ChatGPT web connector instructions
|
|
20
26
|
* gramatr-mcp setup web gemini Show Gemini web connector instructions
|
|
21
|
-
* gramatr-mcp setup clean-install Clean
|
|
22
|
-
* gramatr-mcp setup verify
|
|
27
|
+
* gramatr-mcp setup clean-install Clean artifacts, then reinstall all supported local clients
|
|
28
|
+
* gramatr-mcp setup verify [target] Verify local MCP/hook install health
|
|
29
|
+
* gramatr-mcp setup verify --json Emit verification results as JSON
|
|
30
|
+
* gramatr-mcp setup verify --show-prompts Include install guidance prompts in verify output
|
|
23
31
|
* gramatr-mcp build-mcpb Build a Claude Desktop .mcpb manifest bundle
|
|
24
32
|
* gramatr-mcp hook <name> [args...] Run a hook (session-start, ...)
|
|
25
33
|
* gramatr-mcp hook --list List registered hooks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gramatr-mcp.d.ts","sourceRoot":"","sources":["../../src/bin/gramatr-mcp.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"gramatr-mcp.d.ts","sourceRoot":"","sources":["../../src/bin/gramatr-mcp.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAkBH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,EAAE,GAAG,IAAI,CAqBjB;AAqBD,wBAAgB,SAAS,IAAI,IAAI,CAwEhC;AAED,wBAAsB,OAAO,CAAC,OAAO,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CA6NtF"}
|
package/dist/bin/gramatr-mcp.js
CHANGED
|
@@ -14,12 +14,20 @@
|
|
|
14
14
|
* gramatr-mcp setup claude-desktop Auto-configure Claude Desktop MCP settings
|
|
15
15
|
* gramatr-mcp setup chatgpt-desktop Auto-configure ChatGPT Desktop MCP settings
|
|
16
16
|
* gramatr-mcp setup gemini Auto-configure Gemini CLI extension files
|
|
17
|
+
* gramatr-mcp setup cursor Auto-configure Cursor MCP settings
|
|
18
|
+
* gramatr-mcp setup windsurf Auto-configure Windsurf MCP settings
|
|
19
|
+
* gramatr-mcp setup vscode Auto-configure VS Code MCP settings
|
|
20
|
+
* gramatr-mcp setup all Configure all supported local clients
|
|
17
21
|
* gramatr-mcp setup auto Auto-detect and install detected local clients
|
|
22
|
+
* gramatr-mcp setup auto --list List detected install targets only
|
|
23
|
+
* gramatr-mcp setup auto --yes Install all detected targets (non-interactive)
|
|
18
24
|
* gramatr-mcp setup web Show web connector instructions + prompt suggestion
|
|
19
25
|
* gramatr-mcp setup web chatgpt Show ChatGPT web connector instructions
|
|
20
26
|
* gramatr-mcp setup web gemini Show Gemini web connector instructions
|
|
21
|
-
* gramatr-mcp setup clean-install Clean
|
|
22
|
-
* gramatr-mcp setup verify
|
|
27
|
+
* gramatr-mcp setup clean-install Clean artifacts, then reinstall all supported local clients
|
|
28
|
+
* gramatr-mcp setup verify [target] Verify local MCP/hook install health
|
|
29
|
+
* gramatr-mcp setup verify --json Emit verification results as JSON
|
|
30
|
+
* gramatr-mcp setup verify --show-prompts Include install guidance prompts in verify output
|
|
23
31
|
* gramatr-mcp build-mcpb Build a Claude Desktop .mcpb manifest bundle
|
|
24
32
|
* gramatr-mcp hook <name> [args...] Run a hook (session-start, ...)
|
|
25
33
|
* gramatr-mcp hook --list List registered hooks
|
|
@@ -39,6 +47,16 @@
|
|
|
39
47
|
import { VERSION } from '../hooks/lib/version.js';
|
|
40
48
|
import { fileURLToPath } from 'node:url';
|
|
41
49
|
import { createInterface } from 'node:readline/promises';
|
|
50
|
+
const ALL_LOCAL_SETUP_TARGETS = [
|
|
51
|
+
'claude',
|
|
52
|
+
'codex',
|
|
53
|
+
'gemini',
|
|
54
|
+
'claude-desktop',
|
|
55
|
+
'chatgpt-desktop',
|
|
56
|
+
'cursor',
|
|
57
|
+
'windsurf',
|
|
58
|
+
'vscode',
|
|
59
|
+
];
|
|
42
60
|
export function parseAutoTargetSelection(raw, detected) {
|
|
43
61
|
const normalized = raw.trim().toLowerCase();
|
|
44
62
|
if (!normalized)
|
|
@@ -99,12 +117,23 @@ export function printHelp() {
|
|
|
99
117
|
gramatr-mcp setup claude-desktop Configure Claude Desktop to use this server
|
|
100
118
|
gramatr-mcp setup chatgpt-desktop Configure ChatGPT Desktop to use this server
|
|
101
119
|
gramatr-mcp setup gemini Configure Gemini CLI extension files
|
|
120
|
+
gramatr-mcp setup cursor Configure Cursor MCP wiring
|
|
121
|
+
gramatr-mcp setup windsurf Configure Windsurf MCP wiring
|
|
122
|
+
gramatr-mcp setup vscode Configure VS Code MCP wiring
|
|
123
|
+
gramatr-mcp setup all Configure all supported local clients
|
|
102
124
|
gramatr-mcp setup auto Detect and install supported local clients
|
|
125
|
+
gramatr-mcp setup auto --list List detected setup targets only
|
|
126
|
+
gramatr-mcp setup auto --yes Install all detected targets non-interactively
|
|
103
127
|
gramatr-mcp setup web Show claude.ai web connector setup + prompt
|
|
104
128
|
gramatr-mcp setup web chatgpt Show ChatGPT web connector setup + prompt
|
|
105
129
|
gramatr-mcp setup web gemini Show Gemini web connector setup + prompt
|
|
106
|
-
gramatr-mcp setup clean-install
|
|
130
|
+
gramatr-mcp setup clean-install Clean stale artifacts + reinstall all supported local clients
|
|
131
|
+
gramatr-mcp setup <target> --show-prompts
|
|
132
|
+
Print optional prompt suggestions after setup writes files
|
|
107
133
|
gramatr-mcp setup verify [target] Verify install wiring (all|claude|codex|...)
|
|
134
|
+
gramatr-mcp setup verify --json Emit verify output as JSON
|
|
135
|
+
gramatr-mcp setup verify --show-prompts
|
|
136
|
+
Include install prompt guidance in verify output
|
|
108
137
|
gramatr-mcp build-mcpb Build a Claude Desktop .mcpb bundle
|
|
109
138
|
gramatr-mcp hook <name> [args...] Run a hook (stdin → stdout contract)
|
|
110
139
|
gramatr-mcp hook --list List registered hooks
|
|
@@ -123,9 +152,20 @@ export function printHelp() {
|
|
|
123
152
|
gramatr-mcp setup claude-desktop Write Claude Desktop config
|
|
124
153
|
gramatr-mcp setup chatgpt-desktop Write ChatGPT Desktop config
|
|
125
154
|
gramatr-mcp setup gemini Write Gemini extension manifest/hooks
|
|
155
|
+
gramatr-mcp setup cursor Write Cursor MCP config
|
|
156
|
+
gramatr-mcp setup windsurf Write Windsurf MCP config
|
|
157
|
+
gramatr-mcp setup vscode Write VS Code MCP config
|
|
158
|
+
gramatr-mcp setup all Configure all supported local clients
|
|
126
159
|
gramatr-mcp setup auto Detect and install supported local clients
|
|
127
|
-
gramatr-mcp setup
|
|
160
|
+
gramatr-mcp setup auto --list List detected setup targets only
|
|
161
|
+
gramatr-mcp setup auto --yes Install all detected targets non-interactively
|
|
162
|
+
gramatr-mcp setup clean-install Clean stale artifacts, then reinstall all supported local clients
|
|
163
|
+
gramatr-mcp setup <target> --show-prompts
|
|
164
|
+
Print optional prompt suggestions after setup writes files
|
|
128
165
|
gramatr-mcp setup verify Verify setup wiring + managed guidance blocks
|
|
166
|
+
gramatr-mcp setup verify --json Emit verify output as JSON
|
|
167
|
+
gramatr-mcp setup verify --show-prompts
|
|
168
|
+
Include install guidance prompts in verify output
|
|
129
169
|
gramatr-mcp setup claude --dry Preview without writing
|
|
130
170
|
`);
|
|
131
171
|
}
|
|
@@ -176,7 +216,7 @@ export async function cliMain(cliArgs = process.argv.slice(2)) {
|
|
|
176
216
|
const json = cliArgs.includes('--json');
|
|
177
217
|
if (target === 'claude') {
|
|
178
218
|
const { setupClaude } = await import('./setup.js');
|
|
179
|
-
setupClaude(dryRun, cleanInstall);
|
|
219
|
+
setupClaude(dryRun, cleanInstall, showPrompts);
|
|
180
220
|
return;
|
|
181
221
|
}
|
|
182
222
|
if (target === 'codex') {
|
|
@@ -185,7 +225,7 @@ export async function cliMain(cliArgs = process.argv.slice(2)) {
|
|
|
185
225
|
runCleanInstall(dryRun);
|
|
186
226
|
}
|
|
187
227
|
const { setupCodex } = await import('./setup.js');
|
|
188
|
-
setupCodex(dryRun);
|
|
228
|
+
setupCodex(dryRun, showPrompts);
|
|
189
229
|
return;
|
|
190
230
|
}
|
|
191
231
|
if (target === 'claude-desktop') {
|
|
@@ -194,7 +234,7 @@ export async function cliMain(cliArgs = process.argv.slice(2)) {
|
|
|
194
234
|
runCleanInstall(dryRun);
|
|
195
235
|
}
|
|
196
236
|
const { setupClaudeDesktop } = await import('./setup.js');
|
|
197
|
-
setupClaudeDesktop(dryRun);
|
|
237
|
+
setupClaudeDesktop(dryRun, showPrompts);
|
|
198
238
|
return;
|
|
199
239
|
}
|
|
200
240
|
if (target === 'chatgpt-desktop') {
|
|
@@ -203,7 +243,7 @@ export async function cliMain(cliArgs = process.argv.slice(2)) {
|
|
|
203
243
|
runCleanInstall(dryRun);
|
|
204
244
|
}
|
|
205
245
|
const { setupChatgptDesktop } = await import('./setup.js');
|
|
206
|
-
setupChatgptDesktop(dryRun);
|
|
246
|
+
setupChatgptDesktop(dryRun, showPrompts);
|
|
207
247
|
return;
|
|
208
248
|
}
|
|
209
249
|
if (target === 'gemini') {
|
|
@@ -212,7 +252,7 @@ export async function cliMain(cliArgs = process.argv.slice(2)) {
|
|
|
212
252
|
runCleanInstall(dryRun);
|
|
213
253
|
}
|
|
214
254
|
const { setupGemini } = await import('./setup.js');
|
|
215
|
-
setupGemini(dryRun);
|
|
255
|
+
setupGemini(dryRun, showPrompts);
|
|
216
256
|
return;
|
|
217
257
|
}
|
|
218
258
|
if (target === 'cursor') {
|
|
@@ -221,7 +261,7 @@ export async function cliMain(cliArgs = process.argv.slice(2)) {
|
|
|
221
261
|
runCleanInstall(dryRun);
|
|
222
262
|
}
|
|
223
263
|
const { setupCursor } = await import('./setup.js');
|
|
224
|
-
setupCursor(dryRun);
|
|
264
|
+
setupCursor(dryRun, showPrompts);
|
|
225
265
|
return;
|
|
226
266
|
}
|
|
227
267
|
if (target === 'windsurf') {
|
|
@@ -230,7 +270,7 @@ export async function cliMain(cliArgs = process.argv.slice(2)) {
|
|
|
230
270
|
runCleanInstall(dryRun);
|
|
231
271
|
}
|
|
232
272
|
const { setupWindsurf } = await import('./setup.js');
|
|
233
|
-
setupWindsurf(dryRun);
|
|
273
|
+
setupWindsurf(dryRun, showPrompts);
|
|
234
274
|
return;
|
|
235
275
|
}
|
|
236
276
|
if (target === 'vscode') {
|
|
@@ -239,7 +279,7 @@ export async function cliMain(cliArgs = process.argv.slice(2)) {
|
|
|
239
279
|
runCleanInstall(dryRun);
|
|
240
280
|
}
|
|
241
281
|
const { setupVscode } = await import('./setup.js');
|
|
242
|
-
setupVscode(dryRun);
|
|
282
|
+
setupVscode(dryRun, showPrompts);
|
|
243
283
|
return;
|
|
244
284
|
}
|
|
245
285
|
if (target === 'web') {
|
|
@@ -275,12 +315,30 @@ export async function cliMain(cliArgs = process.argv.slice(2)) {
|
|
|
275
315
|
cleanInstall,
|
|
276
316
|
listOnly,
|
|
277
317
|
selectedTargets,
|
|
318
|
+
showPrompts,
|
|
319
|
+
});
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
if (target === 'all') {
|
|
323
|
+
const { setupAutoInstall } = await import('./setup.js');
|
|
324
|
+
setupAutoInstall({
|
|
325
|
+
dryRun,
|
|
326
|
+
cleanInstall,
|
|
327
|
+
listOnly: false,
|
|
328
|
+
selectedTargets: ALL_LOCAL_SETUP_TARGETS,
|
|
329
|
+
showPrompts,
|
|
278
330
|
});
|
|
279
331
|
return;
|
|
280
332
|
}
|
|
281
333
|
if (target === 'clean-install') {
|
|
282
|
-
const {
|
|
283
|
-
|
|
334
|
+
const { setupAutoInstall } = await import('./setup.js');
|
|
335
|
+
setupAutoInstall({
|
|
336
|
+
dryRun,
|
|
337
|
+
cleanInstall: true,
|
|
338
|
+
listOnly: false,
|
|
339
|
+
selectedTargets: ALL_LOCAL_SETUP_TARGETS,
|
|
340
|
+
showPrompts,
|
|
341
|
+
});
|
|
284
342
|
return;
|
|
285
343
|
}
|
|
286
344
|
if (target === 'verify') {
|
|
@@ -290,7 +348,7 @@ export async function cliMain(cliArgs = process.argv.slice(2)) {
|
|
|
290
348
|
process.exit(verifySetupInstall(verifyTarget, { json, showPrompts }));
|
|
291
349
|
}
|
|
292
350
|
process.stderr.write(`[gramatr-mcp] Unknown setup target: ${target}\n`);
|
|
293
|
-
process.stderr.write(' Supported: claude | codex | claude-desktop | chatgpt-desktop | gemini | cursor | windsurf | vscode | auto | web | clean-install | verify\n');
|
|
351
|
+
process.stderr.write(' Supported: claude | codex | claude-desktop | chatgpt-desktop | gemini | cursor | windsurf | vscode | all | auto | web | clean-install | verify\n');
|
|
294
352
|
process.exit(1);
|
|
295
353
|
}
|
|
296
354
|
// Default: start the stdio server. Lazy-loaded so the `hook` and `setup`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gramatr-mcp.js","sourceRoot":"","sources":["../../src/bin/gramatr-mcp.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"gramatr-mcp.js","sourceRoot":"","sources":["../../src/bin/gramatr-mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/login.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/bin/login.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAmLH,wBAAgB,UAAU,CAAC,SAAS,GAAE,OAAe,GAAG,OAAO,CAe9D;AAID,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAMhD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAE7D;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAIrF;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAWpG;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8CzG;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CA6BD;AAED,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBjF;AAID,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAiChD;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ5C;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjE;AAED,wBAAsB,YAAY,CAAC,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/bin/login.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAmLH,wBAAgB,UAAU,CAAC,SAAS,GAAE,OAAe,GAAG,OAAO,CAe9D;AAID,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAMhD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAE7D;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAIrF;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAWpG;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8CzG;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CA6BD;AAED,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBjF;AAID,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAiChD;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ5C;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjE;AAED,wBAAsB,YAAY,CAAC,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqQxF;AAWD,wBAAsB,IAAI,CAAC,OAAO,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkEnF"}
|
package/dist/bin/login.js
CHANGED
|
@@ -390,6 +390,7 @@ export async function loginBrowser(opts = {}) {
|
|
|
390
390
|
console.log(` ✗ Server unreachable: ${health.error}`);
|
|
391
391
|
console.log(' Cannot authenticate. Is the server running?\n');
|
|
392
392
|
process.exit(1);
|
|
393
|
+
return;
|
|
393
394
|
}
|
|
394
395
|
console.log(` Health: ✓ v${health.version || 'unknown'}`);
|
|
395
396
|
console.log('');
|
|
@@ -441,6 +442,7 @@ export async function loginBrowser(opts = {}) {
|
|
|
441
442
|
console.log(` ✗ Device login failed: ${e.message}`);
|
|
442
443
|
console.log(' Fallback: gramatr-mcp login --token\n');
|
|
443
444
|
process.exit(1);
|
|
445
|
+
return;
|
|
444
446
|
}
|
|
445
447
|
}
|
|
446
448
|
// ── Browser environments use OAuth 2.0 authorization-code grant + PKCE ──
|
|
@@ -494,6 +496,7 @@ export async function loginBrowser(opts = {}) {
|
|
|
494
496
|
callbackServer.close();
|
|
495
497
|
console.log(` ✗ Dynamic client registration failed: ${e.message}\n`);
|
|
496
498
|
process.exit(1);
|
|
499
|
+
return;
|
|
497
500
|
}
|
|
498
501
|
// 3. PKCE: generate verifier + S256 challenge
|
|
499
502
|
const codeVerifier = randomBytes(32).toString('base64url');
|
|
@@ -578,6 +581,7 @@ export async function loginBrowser(opts = {}) {
|
|
|
578
581
|
clearTimeout(codeTimeoutHandle);
|
|
579
582
|
console.log(`\n ✗ Authentication failed: ${e.message}\n`);
|
|
580
583
|
process.exit(1);
|
|
584
|
+
return;
|
|
581
585
|
}
|
|
582
586
|
if (codeTimeoutHandle)
|
|
583
587
|
clearTimeout(codeTimeoutHandle);
|
|
@@ -608,6 +612,7 @@ export async function loginBrowser(opts = {}) {
|
|
|
608
612
|
catch (e) {
|
|
609
613
|
console.log(`\n ✗ Token exchange failed: ${e.message}\n`);
|
|
610
614
|
process.exit(1);
|
|
615
|
+
return;
|
|
611
616
|
}
|
|
612
617
|
// 7. Save the opaque token — same shape as the device flow
|
|
613
618
|
const updated = readConfig();
|