@minicor/mcp-server 3.3.3 → 3.3.5
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/README.md +67 -11
- package/dist/__tests__/codemode.test.d.ts +2 -0
- package/dist/__tests__/codemode.test.d.ts.map +1 -0
- package/dist/__tests__/codemode.test.js +129 -0
- package/dist/__tests__/codemode.test.js.map +1 -0
- package/dist/codemode.d.ts +60 -0
- package/dist/codemode.d.ts.map +1 -0
- package/dist/codemode.js +727 -0
- package/dist/codemode.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -2
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +2 -0
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +17 -2
- package/dist/lib.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,20 +19,25 @@ Build, deploy, and debug VM-based browser and desktop automations from **Cursor*
|
|
|
19
19
|
}
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
**Claude Code
|
|
22
|
+
**Claude Code** — no global install needed (npx always runs the latest):
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
|
-
|
|
26
|
-
claude mcp add minicor -- minicor-mcp
|
|
25
|
+
claude mcp add minicor -- npx -y @minicor/mcp-server
|
|
27
26
|
```
|
|
28
27
|
|
|
29
28
|
### 2. Authenticate
|
|
30
29
|
|
|
31
30
|
```bash
|
|
32
|
-
npx @minicor/mcp-server-setup
|
|
31
|
+
npx -y -p @minicor/mcp-server minicor-mcp-setup
|
|
33
32
|
```
|
|
34
33
|
|
|
35
|
-
Opens a browser to sign in. Tokens stored at `~/.minicor/tokens.json` with auto-refresh. For headless
|
|
34
|
+
Opens a browser to sign in. Tokens are stored at `~/.minicor/tokens.json` with auto-refresh. For headless / SSH:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx -y -p @minicor/mcp-server minicor-mcp-setup --cli
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
> The package ships multiple commands. Always use `npx -p @minicor/mcp-server <command>` to run a specific one (`minicor-mcp-setup`, `minicor-bootstrap`, …). Running `npx @minicor/mcp-server` alone only starts the MCP server and ignores trailing arguments.
|
|
36
41
|
|
|
37
42
|
### 3. Bootstrap Workspace (optional)
|
|
38
43
|
|
|
@@ -40,22 +45,74 @@ After cloning a workspace, generate harness-specific config files:
|
|
|
40
45
|
|
|
41
46
|
```bash
|
|
42
47
|
# For Claude Code — creates CLAUDE.md + .claude/settings.local.json
|
|
43
|
-
npx @minicor/mcp-server minicor-bootstrap claude-code --dir ./my-workspace
|
|
48
|
+
npx -y -p @minicor/mcp-server minicor-bootstrap claude-code --dir ./my-workspace
|
|
44
49
|
|
|
45
50
|
# For Cursor — creates .cursor/rules/workspace.mdc
|
|
46
|
-
npx @minicor/mcp-server minicor-bootstrap cursor --dir ./my-workspace
|
|
51
|
+
npx -y -p @minicor/mcp-server minicor-bootstrap cursor --dir ./my-workspace
|
|
47
52
|
|
|
48
53
|
# All harnesses at once
|
|
49
|
-
npx @minicor/mcp-server minicor-bootstrap all --dir ./my-workspace
|
|
54
|
+
npx -y -p @minicor/mcp-server minicor-bootstrap all --dir ./my-workspace
|
|
50
55
|
```
|
|
51
56
|
|
|
52
57
|
### 4. Update
|
|
53
58
|
|
|
54
59
|
`npx` users: restart your editor (auto-fetches latest). Global: `npm update -g @minicor/mcp-server`.
|
|
55
60
|
|
|
61
|
+
## Code Mode (experimental, opt-in)
|
|
62
|
+
|
|
63
|
+
By default the server exposes every Minicor operation as its own MCP tool. As an **experimental** alternative, you can enable a code-mode surface: a single `codemode` tool that runs JavaScript and provides Minicor methods as async functions on the `minicor` global.
|
|
64
|
+
|
|
65
|
+
Enable it by setting the environment variable before launching the server:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
EXPERIMENTAL_USE_CODE_MODE=1 minicor-mcp
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
In Cursor, add it to the server's `env` block in `~/.cursor/mcp.json`:
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"mcpServers": {
|
|
76
|
+
"minicor": {
|
|
77
|
+
"command": "npx",
|
|
78
|
+
"args": ["-y", "@minicor/mcp-server"],
|
|
79
|
+
"env": { "EXPERIMENTAL_USE_CODE_MODE": "1" }
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Once enabled:
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
const workspaces = await minicor.list_workspaces({});
|
|
89
|
+
const matches = await codemode.search("workflow");
|
|
90
|
+
const docs = await codemode.describe("minicor.create_rpa_flow");
|
|
91
|
+
return { workspaces, matches, docs };
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
This follows Cloudflare's Code Mode pattern: the model writes code that chains tool calls, branches, loops, and composes results locally instead of making one model round trip per operation.
|
|
95
|
+
|
|
96
|
+
Inside `codemode`:
|
|
97
|
+
|
|
98
|
+
- `await minicor.tool_name({ ... })` calls a Minicor MCP operation.
|
|
99
|
+
- `await codemode.search("query")` discovers relevant methods.
|
|
100
|
+
- `await codemode.describe("minicor.tool_name")` returns TypeScript-style parameter docs.
|
|
101
|
+
- `await codemode.list()` lists all available methods.
|
|
102
|
+
|
|
103
|
+
Unset `EXPERIMENTAL_USE_CODE_MODE` to return to the default one-tool-per-operation surface.
|
|
104
|
+
|
|
56
105
|
## Session Lifecycle
|
|
57
106
|
|
|
58
|
-
The MCP server sends **instructions** to every client on connect, telling agents to
|
|
107
|
+
The MCP server sends **instructions** to every client on connect, telling agents to start a session first when in a workspace clone. Call the `session_start` tool with the workspace directory:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
session_start({ directory: "/path/to/workspace" })
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
(With experimental code mode enabled, run the same call as `await minicor.session_start({ ... })` through the `codemode` tool.)
|
|
114
|
+
|
|
115
|
+
This works across all harnesses, including Claude Code, Cursor, and Bedrock.
|
|
59
116
|
|
|
60
117
|
### Session Tools
|
|
61
118
|
|
|
@@ -394,7 +451,7 @@ The `build-rpa-workflow` prompt accepts a `mode` parameter:
|
|
|
394
451
|
|
|
395
452
|
## Auth
|
|
396
453
|
|
|
397
|
-
- **Sign in**: `minicor-mcp-setup` (browser) or
|
|
454
|
+
- **Sign in**: `npx -y -p @minicor/mcp-server minicor-mcp-setup` (browser) or append `--cli` for headless
|
|
398
455
|
- **Token storage**: `~/.minicor/tokens.json`
|
|
399
456
|
- **Auto-refresh**: tokens refresh before expiry
|
|
400
457
|
- **Regions**: US (default) or Canada
|
|
@@ -431,4 +488,3 @@ src/
|
|
|
431
488
|
skills/
|
|
432
489
|
general/ — Bundled skill files (shipped with npm package)
|
|
433
490
|
```
|
|
434
|
-
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemode.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/codemode.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { CodeModeToolRegistry, compactToolDocs } from "../codemode.js";
|
|
4
|
+
import { ok, text } from "../helpers.js";
|
|
5
|
+
function createFakeServer() {
|
|
6
|
+
const exposed = new Map();
|
|
7
|
+
const server = {
|
|
8
|
+
tool: vi.fn((name, ...args) => {
|
|
9
|
+
exposed.set(name, args[args.length - 1]);
|
|
10
|
+
}),
|
|
11
|
+
prompt: vi.fn(),
|
|
12
|
+
};
|
|
13
|
+
return { server, exposed };
|
|
14
|
+
}
|
|
15
|
+
function parseCodeModeResult(response) {
|
|
16
|
+
return JSON.parse(response.content[0].text);
|
|
17
|
+
}
|
|
18
|
+
describe("CodeModeToolRegistry", () => {
|
|
19
|
+
it("captures legacy tools and exposes a single codemode tool", async () => {
|
|
20
|
+
const { server, exposed } = createFakeServer();
|
|
21
|
+
const registry = new CodeModeToolRegistry(server);
|
|
22
|
+
registry.tool("add_numbers", "Add two numbers.", {
|
|
23
|
+
a: z.number().describe("First number"),
|
|
24
|
+
b: z.number().describe("Second number"),
|
|
25
|
+
}, async ({ a, b }) => ok({ sum: a + b }));
|
|
26
|
+
registry.registerCodeModeTool();
|
|
27
|
+
expect(exposed.has("add_numbers")).toBe(false);
|
|
28
|
+
expect(exposed.has("codemode")).toBe(true);
|
|
29
|
+
const response = await exposed.get("codemode")({
|
|
30
|
+
code: `
|
|
31
|
+
const added = await minicor.add_numbers({ a: 2, b: 3 });
|
|
32
|
+
return added;
|
|
33
|
+
`,
|
|
34
|
+
});
|
|
35
|
+
const result = parseCodeModeResult(response);
|
|
36
|
+
expect(result.status).toBe("completed");
|
|
37
|
+
expect(result.result).toEqual({ sum: 5 });
|
|
38
|
+
});
|
|
39
|
+
it("supports in-sandbox search and describe", async () => {
|
|
40
|
+
const { server, exposed } = createFakeServer();
|
|
41
|
+
const registry = new CodeModeToolRegistry(server);
|
|
42
|
+
registry.tool("list_workspaces", "List all workspaces the user has access to.", {
|
|
43
|
+
region: z.enum(["us", "ca"]).optional().describe("Region filter"),
|
|
44
|
+
}, async () => ok([]));
|
|
45
|
+
registry.registerCodeModeTool();
|
|
46
|
+
const response = await exposed.get("codemode")({
|
|
47
|
+
code: `
|
|
48
|
+
const matches = await codemode.search("workspace");
|
|
49
|
+
const docs = await codemode.describe("minicor.list_workspaces");
|
|
50
|
+
return { matches, docs };
|
|
51
|
+
`,
|
|
52
|
+
});
|
|
53
|
+
const result = parseCodeModeResult(response);
|
|
54
|
+
expect(result.status).toBe("completed");
|
|
55
|
+
expect(result.result.matches[0].name).toBe("minicor.list_workspaces");
|
|
56
|
+
expect(result.result.docs.signature).toContain("interface ListWorkspacesInput");
|
|
57
|
+
expect(result.result.docs.signature).toContain("region?");
|
|
58
|
+
});
|
|
59
|
+
it("passes text tool results through as strings when they are not JSON", async () => {
|
|
60
|
+
const { server, exposed } = createFakeServer();
|
|
61
|
+
const registry = new CodeModeToolRegistry(server);
|
|
62
|
+
registry.tool("say_hello", "Say hello.", {}, async () => text("hello"));
|
|
63
|
+
registry.registerCodeModeTool();
|
|
64
|
+
const response = await exposed.get("codemode")({
|
|
65
|
+
code: `return await minicor.say_hello({});`,
|
|
66
|
+
});
|
|
67
|
+
const result = parseCodeModeResult(response);
|
|
68
|
+
expect(result.status).toBe("completed");
|
|
69
|
+
expect(result.result).toBe("hello");
|
|
70
|
+
});
|
|
71
|
+
it("executes parenthesized async arrow functions", async () => {
|
|
72
|
+
const { server, exposed } = createFakeServer();
|
|
73
|
+
const registry = new CodeModeToolRegistry(server);
|
|
74
|
+
registry.tool("say_hello", "Say hello.", {}, async () => text("hello"));
|
|
75
|
+
registry.registerCodeModeTool();
|
|
76
|
+
const response = await exposed.get("codemode")({
|
|
77
|
+
code: `(async () => {
|
|
78
|
+
return await minicor.say_hello({});
|
|
79
|
+
})`,
|
|
80
|
+
});
|
|
81
|
+
const result = parseCodeModeResult(response);
|
|
82
|
+
expect(result.status).toBe("completed");
|
|
83
|
+
expect(result.result).toBe("hello");
|
|
84
|
+
});
|
|
85
|
+
it("keeps renderable content out of the JSON text payload", async () => {
|
|
86
|
+
const { server, exposed } = createFakeServer();
|
|
87
|
+
const registry = new CodeModeToolRegistry(server);
|
|
88
|
+
registry.tool("screenshot", "Return an image.", {}, async () => ({
|
|
89
|
+
content: [
|
|
90
|
+
{
|
|
91
|
+
type: "image",
|
|
92
|
+
data: "abc123",
|
|
93
|
+
mimeType: "image/png",
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
}));
|
|
97
|
+
registry.registerCodeModeTool();
|
|
98
|
+
const response = await exposed.get("codemode")({
|
|
99
|
+
code: `return await minicor.screenshot({});`,
|
|
100
|
+
});
|
|
101
|
+
const result = parseCodeModeResult(response);
|
|
102
|
+
expect(result.result.content[0].data).toBe("[6 base64 chars omitted from text summary]");
|
|
103
|
+
expect(response.content[1]).toMatchObject({
|
|
104
|
+
type: "image",
|
|
105
|
+
data: "abc123",
|
|
106
|
+
mimeType: "image/png",
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
it("can still expose legacy tools when requested", () => {
|
|
110
|
+
const { server } = createFakeServer();
|
|
111
|
+
const registry = new CodeModeToolRegistry(server, { exposeLegacyTools: true });
|
|
112
|
+
registry.tool("legacy_tool", "Legacy tool.", {}, async () => ok({ ok: true }));
|
|
113
|
+
expect(server.tool.mock.calls[0][0]).toBe("legacy_tool");
|
|
114
|
+
});
|
|
115
|
+
it("builds compact docs from captured tools", () => {
|
|
116
|
+
const { server } = createFakeServer();
|
|
117
|
+
const registry = new CodeModeToolRegistry(server);
|
|
118
|
+
registry.tool("create-workflow", "Create a workflow.", {
|
|
119
|
+
name: z.string().describe("Workflow name"),
|
|
120
|
+
}, async () => ok({ id: 1 }));
|
|
121
|
+
const docs = compactToolDocs(registry.docs());
|
|
122
|
+
expect(docs[0]).toMatchObject({
|
|
123
|
+
name: "minicor.create_workflow",
|
|
124
|
+
tool: "create-workflow",
|
|
125
|
+
description: "Create a workflow.",
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
//# sourceMappingURL=codemode.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemode.test.js","sourceRoot":"","sources":["../../src/__tests__/codemode.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
interface ToolDoc {
|
|
3
|
+
name: string;
|
|
4
|
+
apiName: string;
|
|
5
|
+
qualifiedName: string;
|
|
6
|
+
description: string;
|
|
7
|
+
parameters: Array<{
|
|
8
|
+
name: string;
|
|
9
|
+
optional: boolean;
|
|
10
|
+
type: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
}>;
|
|
13
|
+
signature: string;
|
|
14
|
+
}
|
|
15
|
+
interface CodeModeOptions {
|
|
16
|
+
exposeLegacyTools?: boolean;
|
|
17
|
+
defaultTimeoutMs?: number;
|
|
18
|
+
maxTimeoutMs?: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class CodeModeToolRegistry {
|
|
21
|
+
private readonly server;
|
|
22
|
+
private readonly tools;
|
|
23
|
+
private readonly byApiName;
|
|
24
|
+
private readonly exposeLegacyTools;
|
|
25
|
+
private readonly defaultTimeoutMs;
|
|
26
|
+
private readonly maxTimeoutMs;
|
|
27
|
+
constructor(server: McpServer, options?: CodeModeOptions);
|
|
28
|
+
tool(name: string, ...args: any[]): any;
|
|
29
|
+
prompt(...args: any[]): any;
|
|
30
|
+
registerCodeModeTool(): void;
|
|
31
|
+
docs(): ToolDoc[];
|
|
32
|
+
execute(code: string, timeoutMs?: number): Promise<{
|
|
33
|
+
status: "completed" | "error";
|
|
34
|
+
executionMs: number;
|
|
35
|
+
result?: unknown;
|
|
36
|
+
error?: string;
|
|
37
|
+
logs: Array<{
|
|
38
|
+
level: string;
|
|
39
|
+
message: string;
|
|
40
|
+
}>;
|
|
41
|
+
}>;
|
|
42
|
+
private invoke;
|
|
43
|
+
private uniqueApiName;
|
|
44
|
+
}
|
|
45
|
+
export declare function shouldUseCodeMode(): boolean;
|
|
46
|
+
export declare function buildCodeModeInstructions(baseInstructions: string): string;
|
|
47
|
+
export declare function asMcpServer(registry: CodeModeToolRegistry): McpServer;
|
|
48
|
+
export declare function compactToolDocs(tools: ToolDoc[]): {
|
|
49
|
+
name: string;
|
|
50
|
+
tool: string;
|
|
51
|
+
description: string;
|
|
52
|
+
parameters: {
|
|
53
|
+
name: string;
|
|
54
|
+
type: string;
|
|
55
|
+
optional: boolean;
|
|
56
|
+
description: string | undefined;
|
|
57
|
+
}[];
|
|
58
|
+
}[];
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=codemode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemode.d.ts","sourceRoot":"","sources":["../src/codemode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyBzE,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAigBD,qBAAa,oBAAoB;IAQ7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGnB,MAAM,EAAE,SAAS,EAClC,OAAO,GAAE,eAAoB;IAO/B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAgCjC,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAIrB,oBAAoB;IAoDpB,IAAI,IAAI,OAAO,EAAE;IAIX,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;gBAMlC,WAAW,GAAG,OAAO;qBAChB,MAAM;iBACV,OAAO;gBACR,MAAM;cACR,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;;YAkGrC,MAAM;IAWpB,OAAO,CAAC,aAAa;CAUtB;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C;AAED,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAgB1E;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,CAErE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE;;;;;;;;;;IAE/C"}
|
package/dist/codemode.js
ADDED
|
@@ -0,0 +1,727 @@
|
|
|
1
|
+
import { Worker } from "node:worker_threads";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { json } from "./helpers.js";
|
|
4
|
+
const RESERVED_WORDS = new Set([
|
|
5
|
+
"abstract",
|
|
6
|
+
"arguments",
|
|
7
|
+
"await",
|
|
8
|
+
"boolean",
|
|
9
|
+
"break",
|
|
10
|
+
"byte",
|
|
11
|
+
"case",
|
|
12
|
+
"catch",
|
|
13
|
+
"char",
|
|
14
|
+
"class",
|
|
15
|
+
"const",
|
|
16
|
+
"continue",
|
|
17
|
+
"debugger",
|
|
18
|
+
"default",
|
|
19
|
+
"delete",
|
|
20
|
+
"do",
|
|
21
|
+
"double",
|
|
22
|
+
"else",
|
|
23
|
+
"enum",
|
|
24
|
+
"eval",
|
|
25
|
+
"export",
|
|
26
|
+
"extends",
|
|
27
|
+
"false",
|
|
28
|
+
"final",
|
|
29
|
+
"finally",
|
|
30
|
+
"float",
|
|
31
|
+
"for",
|
|
32
|
+
"function",
|
|
33
|
+
"goto",
|
|
34
|
+
"if",
|
|
35
|
+
"implements",
|
|
36
|
+
"import",
|
|
37
|
+
"in",
|
|
38
|
+
"instanceof",
|
|
39
|
+
"int",
|
|
40
|
+
"interface",
|
|
41
|
+
"let",
|
|
42
|
+
"long",
|
|
43
|
+
"native",
|
|
44
|
+
"new",
|
|
45
|
+
"null",
|
|
46
|
+
"package",
|
|
47
|
+
"private",
|
|
48
|
+
"protected",
|
|
49
|
+
"public",
|
|
50
|
+
"return",
|
|
51
|
+
"short",
|
|
52
|
+
"static",
|
|
53
|
+
"super",
|
|
54
|
+
"switch",
|
|
55
|
+
"synchronized",
|
|
56
|
+
"this",
|
|
57
|
+
"throw",
|
|
58
|
+
"throws",
|
|
59
|
+
"transient",
|
|
60
|
+
"true",
|
|
61
|
+
"try",
|
|
62
|
+
"typeof",
|
|
63
|
+
"var",
|
|
64
|
+
"void",
|
|
65
|
+
"volatile",
|
|
66
|
+
"while",
|
|
67
|
+
"with",
|
|
68
|
+
"yield",
|
|
69
|
+
]);
|
|
70
|
+
function sanitizeToolName(name) {
|
|
71
|
+
let sanitized = name.replace(/[^A-Za-z0-9_$]/g, "_");
|
|
72
|
+
if (!sanitized || /^[0-9]/.test(sanitized))
|
|
73
|
+
sanitized = `_${sanitized}`;
|
|
74
|
+
if (RESERVED_WORDS.has(sanitized))
|
|
75
|
+
sanitized = `${sanitized}_`;
|
|
76
|
+
return sanitized;
|
|
77
|
+
}
|
|
78
|
+
function getDef(schema) {
|
|
79
|
+
return schema?._def ?? schema?.def;
|
|
80
|
+
}
|
|
81
|
+
function getTypeName(schema) {
|
|
82
|
+
const def = getDef(schema);
|
|
83
|
+
const typeName = def?.typeName ?? def?.type;
|
|
84
|
+
return typeof typeName === "string" ? typeName : "";
|
|
85
|
+
}
|
|
86
|
+
function isOptionalSchema(schema) {
|
|
87
|
+
const typeName = getTypeName(schema);
|
|
88
|
+
return (typeName === "optional" ||
|
|
89
|
+
typeName === "default" ||
|
|
90
|
+
typeName === "ZodOptional" ||
|
|
91
|
+
typeName === "ZodDefault" ||
|
|
92
|
+
typeof schema?.isOptional === "function" && schema.isOptional());
|
|
93
|
+
}
|
|
94
|
+
function unwrapSchema(schema) {
|
|
95
|
+
let current = schema;
|
|
96
|
+
for (let i = 0; i < 8; i += 1) {
|
|
97
|
+
const typeName = getTypeName(current);
|
|
98
|
+
const def = getDef(current);
|
|
99
|
+
if (typeName === "optional" ||
|
|
100
|
+
typeName === "nullable" ||
|
|
101
|
+
typeName === "default" ||
|
|
102
|
+
typeName === "catch" ||
|
|
103
|
+
typeName === "ZodOptional" ||
|
|
104
|
+
typeName === "ZodNullable" ||
|
|
105
|
+
typeName === "ZodDefault" ||
|
|
106
|
+
typeName === "ZodCatch") {
|
|
107
|
+
current = def?.innerType ?? def?.type ?? def?.schema ?? current;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
return current;
|
|
111
|
+
}
|
|
112
|
+
return current;
|
|
113
|
+
}
|
|
114
|
+
function literalValue(schema) {
|
|
115
|
+
const def = getDef(schema);
|
|
116
|
+
if ("value" in (def ?? {}))
|
|
117
|
+
return def.value;
|
|
118
|
+
if (Array.isArray(def?.values))
|
|
119
|
+
return def.values[0];
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
function enumValues(schema) {
|
|
123
|
+
const def = getDef(schema);
|
|
124
|
+
if (Array.isArray(def?.values))
|
|
125
|
+
return def.values.map(String);
|
|
126
|
+
if (Array.isArray(def?.options))
|
|
127
|
+
return def.options.map(String);
|
|
128
|
+
if (def?.entries && typeof def.entries === "object") {
|
|
129
|
+
return Object.values(def.entries).map(String);
|
|
130
|
+
}
|
|
131
|
+
if (schema?.enum && typeof schema.enum === "object") {
|
|
132
|
+
return Object.values(schema.enum).map(String);
|
|
133
|
+
}
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
function objectShape(schema) {
|
|
137
|
+
const def = getDef(schema);
|
|
138
|
+
const shape = def?.shape;
|
|
139
|
+
if (typeof shape === "function")
|
|
140
|
+
return shape();
|
|
141
|
+
if (shape && typeof shape === "object")
|
|
142
|
+
return shape;
|
|
143
|
+
return {};
|
|
144
|
+
}
|
|
145
|
+
function schemaToType(schema) {
|
|
146
|
+
const rawTypeName = getTypeName(schema);
|
|
147
|
+
const unwrapped = unwrapSchema(schema);
|
|
148
|
+
const typeName = getTypeName(unwrapped) || rawTypeName;
|
|
149
|
+
const def = getDef(unwrapped);
|
|
150
|
+
switch (typeName) {
|
|
151
|
+
case "string":
|
|
152
|
+
case "ZodString":
|
|
153
|
+
return "string";
|
|
154
|
+
case "number":
|
|
155
|
+
case "ZodNumber":
|
|
156
|
+
return "number";
|
|
157
|
+
case "boolean":
|
|
158
|
+
case "ZodBoolean":
|
|
159
|
+
return "boolean";
|
|
160
|
+
case "bigint":
|
|
161
|
+
case "ZodBigInt":
|
|
162
|
+
return "bigint";
|
|
163
|
+
case "date":
|
|
164
|
+
case "ZodDate":
|
|
165
|
+
return "Date";
|
|
166
|
+
case "unknown":
|
|
167
|
+
case "any":
|
|
168
|
+
case "ZodUnknown":
|
|
169
|
+
case "ZodAny":
|
|
170
|
+
return "unknown";
|
|
171
|
+
case "never":
|
|
172
|
+
case "ZodNever":
|
|
173
|
+
return "never";
|
|
174
|
+
case "null":
|
|
175
|
+
case "ZodNull":
|
|
176
|
+
return "null";
|
|
177
|
+
case "literal":
|
|
178
|
+
case "ZodLiteral":
|
|
179
|
+
return JSON.stringify(literalValue(unwrapped));
|
|
180
|
+
case "enum":
|
|
181
|
+
case "nativeEnum":
|
|
182
|
+
case "ZodEnum": {
|
|
183
|
+
const values = enumValues(unwrapped);
|
|
184
|
+
return values.length > 0 ? values.map((v) => JSON.stringify(v)).join(" | ") : "string";
|
|
185
|
+
}
|
|
186
|
+
case "array":
|
|
187
|
+
case "ZodArray": {
|
|
188
|
+
const item = def?.element ?? def?.type ?? def?.items;
|
|
189
|
+
return `${schemaToType(item)}[]`;
|
|
190
|
+
}
|
|
191
|
+
case "record":
|
|
192
|
+
case "ZodRecord": {
|
|
193
|
+
const valueType = def?.valueType ?? def?.valueSchema;
|
|
194
|
+
return `Record<string, ${valueType ? schemaToType(valueType) : "unknown"}>`;
|
|
195
|
+
}
|
|
196
|
+
case "object":
|
|
197
|
+
case "ZodObject": {
|
|
198
|
+
const entries = Object.entries(objectShape(unwrapped));
|
|
199
|
+
if (entries.length === 0)
|
|
200
|
+
return "Record<string, unknown>";
|
|
201
|
+
const props = entries.map(([key, value]) => {
|
|
202
|
+
const optional = isOptionalSchema(value);
|
|
203
|
+
return `${key}${optional ? "?" : ""}: ${schemaToType(value)}`;
|
|
204
|
+
});
|
|
205
|
+
return `{ ${props.join("; ")} }`;
|
|
206
|
+
}
|
|
207
|
+
case "union":
|
|
208
|
+
case "ZodUnion": {
|
|
209
|
+
const options = Array.isArray(def?.options) ? def.options : [];
|
|
210
|
+
return options.length > 0
|
|
211
|
+
? options.map((option) => schemaToType(option)).join(" | ")
|
|
212
|
+
: "unknown";
|
|
213
|
+
}
|
|
214
|
+
case "intersection":
|
|
215
|
+
case "ZodIntersection":
|
|
216
|
+
return `${schemaToType(def?.left)} & ${schemaToType(def?.right)}`;
|
|
217
|
+
case "tuple":
|
|
218
|
+
case "ZodTuple": {
|
|
219
|
+
const items = Array.isArray(def?.items) ? def.items : [];
|
|
220
|
+
return `[${items.map((item) => schemaToType(item)).join(", ")}]`;
|
|
221
|
+
}
|
|
222
|
+
default:
|
|
223
|
+
return "unknown";
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
function getDescription(schema) {
|
|
227
|
+
const description = schema?.description ?? getDef(schema)?.description;
|
|
228
|
+
return typeof description === "string" && description.length > 0
|
|
229
|
+
? description
|
|
230
|
+
: undefined;
|
|
231
|
+
}
|
|
232
|
+
function buildToolDoc(tool) {
|
|
233
|
+
const parameters = Object.entries(tool.inputSchema ?? {}).map(([name, schema]) => ({
|
|
234
|
+
name,
|
|
235
|
+
optional: isOptionalSchema(schema),
|
|
236
|
+
type: schemaToType(schema),
|
|
237
|
+
description: getDescription(schema),
|
|
238
|
+
}));
|
|
239
|
+
const inputTypeName = `${toPascalCase(tool.apiName)}Input`;
|
|
240
|
+
const lines = [
|
|
241
|
+
`interface ${inputTypeName} {`,
|
|
242
|
+
...parameters.map((param) => {
|
|
243
|
+
const comment = param.description ? ` /** ${param.description.replace(/\*\//g, "* /")} */\n` : "";
|
|
244
|
+
return `${comment} ${param.name}${param.optional ? "?" : ""}: ${param.type};`;
|
|
245
|
+
}),
|
|
246
|
+
"}",
|
|
247
|
+
`declare const minicor: { ${tool.apiName}: (input: ${inputTypeName}) => Promise<unknown>; };`,
|
|
248
|
+
];
|
|
249
|
+
return {
|
|
250
|
+
name: tool.name,
|
|
251
|
+
apiName: tool.apiName,
|
|
252
|
+
qualifiedName: `minicor.${tool.apiName}`,
|
|
253
|
+
description: tool.description,
|
|
254
|
+
parameters,
|
|
255
|
+
signature: lines.join("\n"),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
function toPascalCase(value) {
|
|
259
|
+
return value
|
|
260
|
+
.split(/[^A-Za-z0-9]+|_/g)
|
|
261
|
+
.filter(Boolean)
|
|
262
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
263
|
+
.join("") || "Tool";
|
|
264
|
+
}
|
|
265
|
+
function compactDoc(doc) {
|
|
266
|
+
return {
|
|
267
|
+
name: doc.qualifiedName,
|
|
268
|
+
tool: doc.name,
|
|
269
|
+
description: doc.description,
|
|
270
|
+
parameters: doc.parameters.map((param) => ({
|
|
271
|
+
name: param.name,
|
|
272
|
+
type: param.type,
|
|
273
|
+
optional: param.optional,
|
|
274
|
+
description: param.description,
|
|
275
|
+
})),
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
function parseTextValue(value) {
|
|
279
|
+
const trimmed = value.trim();
|
|
280
|
+
if ((trimmed.startsWith("{") && trimmed.endsWith("}")) ||
|
|
281
|
+
(trimmed.startsWith("[") && trimmed.endsWith("]")) ||
|
|
282
|
+
trimmed === "null" ||
|
|
283
|
+
trimmed === "true" ||
|
|
284
|
+
trimmed === "false") {
|
|
285
|
+
try {
|
|
286
|
+
return JSON.parse(trimmed);
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
return value;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return value;
|
|
293
|
+
}
|
|
294
|
+
function toolResultToValue(result) {
|
|
295
|
+
if (!result || typeof result !== "object")
|
|
296
|
+
return result;
|
|
297
|
+
const maybeTool = result;
|
|
298
|
+
if (!Array.isArray(maybeTool.content))
|
|
299
|
+
return result;
|
|
300
|
+
const textItems = maybeTool.content.filter((item) => item.type === "text" && typeof item.text === "string");
|
|
301
|
+
if (maybeTool.content.length === 1 && textItems.length === 1) {
|
|
302
|
+
return parseTextValue(textItems[0].text ?? "");
|
|
303
|
+
}
|
|
304
|
+
if (textItems.length === maybeTool.content.length) {
|
|
305
|
+
return textItems.map((item) => item.text ?? "").join("\n");
|
|
306
|
+
}
|
|
307
|
+
return result;
|
|
308
|
+
}
|
|
309
|
+
function extractRenderableContent(result) {
|
|
310
|
+
if (!result || typeof result !== "object")
|
|
311
|
+
return [];
|
|
312
|
+
const maybeTool = result;
|
|
313
|
+
if (!Array.isArray(maybeTool.content))
|
|
314
|
+
return [];
|
|
315
|
+
return maybeTool.content.filter((item) => item.type !== "text");
|
|
316
|
+
}
|
|
317
|
+
function sanitizeForText(value, seen = new WeakSet()) {
|
|
318
|
+
if (!value || typeof value !== "object")
|
|
319
|
+
return value;
|
|
320
|
+
if (seen.has(value))
|
|
321
|
+
return "[Circular]";
|
|
322
|
+
seen.add(value);
|
|
323
|
+
if (Array.isArray(value)) {
|
|
324
|
+
return value.map((item) => sanitizeForText(item, seen));
|
|
325
|
+
}
|
|
326
|
+
const record = value;
|
|
327
|
+
const copy = {};
|
|
328
|
+
for (const [key, item] of Object.entries(record)) {
|
|
329
|
+
if (key === "data" &&
|
|
330
|
+
typeof item === "string" &&
|
|
331
|
+
(record.type === "image" || record.type === "audio" || record.type === "resource")) {
|
|
332
|
+
copy[key] = `[${item.length} base64 chars omitted from text summary]`;
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
copy[key] = sanitizeForText(item, seen);
|
|
336
|
+
}
|
|
337
|
+
return copy;
|
|
338
|
+
}
|
|
339
|
+
const WORKER_SOURCE = `
|
|
340
|
+
const { parentPort, workerData } = require("node:worker_threads");
|
|
341
|
+
const vm = require("node:vm");
|
|
342
|
+
|
|
343
|
+
const pending = new Map();
|
|
344
|
+
let seq = 0;
|
|
345
|
+
|
|
346
|
+
function serializeError(error) {
|
|
347
|
+
if (!error) return "Unknown error";
|
|
348
|
+
if (error && typeof error.stack === "string") return error.stack;
|
|
349
|
+
if (error && typeof error.message === "string") return error.message;
|
|
350
|
+
return String(error);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
function send(type, payload) {
|
|
354
|
+
parentPort.postMessage({ type, ...payload });
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
function hostCall(tool, args) {
|
|
358
|
+
return new Promise((resolve, reject) => {
|
|
359
|
+
const id = ++seq;
|
|
360
|
+
pending.set(id, { resolve, reject });
|
|
361
|
+
send("toolCall", { id, tool, args: args ?? {} });
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
parentPort.on("message", (message) => {
|
|
366
|
+
const entry = pending.get(message.id);
|
|
367
|
+
if (!entry) return;
|
|
368
|
+
pending.delete(message.id);
|
|
369
|
+
if (message.type === "toolResult") {
|
|
370
|
+
entry.resolve(message.result);
|
|
371
|
+
} else if (message.type === "toolError") {
|
|
372
|
+
entry.reject(new Error(message.error));
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
|
|
376
|
+
function searchTools(query, limit = 12) {
|
|
377
|
+
const q = String(query ?? "").toLowerCase();
|
|
378
|
+
const terms = q.split(/\\s+/).filter(Boolean);
|
|
379
|
+
const scored = workerData.tools.map((tool) => {
|
|
380
|
+
const haystack = [tool.qualifiedName, tool.name, tool.description, ...tool.parameters.map((p) => [p.name, p.description, p.type].filter(Boolean).join(" "))].join(" ").toLowerCase();
|
|
381
|
+
const score = terms.length === 0 ? 1 : terms.reduce((sum, term) => sum + (haystack.includes(term) ? 1 : 0), 0);
|
|
382
|
+
return { tool, score };
|
|
383
|
+
}).filter((entry) => entry.score > 0);
|
|
384
|
+
scored.sort((a, b) => b.score - a.score || a.tool.qualifiedName.localeCompare(b.tool.qualifiedName));
|
|
385
|
+
return scored.slice(0, limit).map((entry) => ({
|
|
386
|
+
name: entry.tool.qualifiedName,
|
|
387
|
+
tool: entry.tool.name,
|
|
388
|
+
description: entry.tool.description,
|
|
389
|
+
parameters: entry.tool.parameters
|
|
390
|
+
}));
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
function describeTool(name) {
|
|
394
|
+
const needle = String(name ?? "");
|
|
395
|
+
const normalized = needle.startsWith("minicor.") ? needle.slice("minicor.".length) : needle;
|
|
396
|
+
const tool = workerData.tools.find((candidate) => candidate.qualifiedName === needle || candidate.apiName === normalized || candidate.name === normalized);
|
|
397
|
+
if (!tool) {
|
|
398
|
+
return {
|
|
399
|
+
error: "Tool not found",
|
|
400
|
+
query: needle,
|
|
401
|
+
hint: "Call await codemode.search(query) to find available tools."
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
return tool;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
function makeConnector(includeDiscovery) {
|
|
408
|
+
return new Proxy({}, {
|
|
409
|
+
get(_target, prop) {
|
|
410
|
+
if (typeof prop !== "string") return undefined;
|
|
411
|
+
if (prop === "then") return undefined;
|
|
412
|
+
if (includeDiscovery) {
|
|
413
|
+
if (prop === "search") return (query, limit) => Promise.resolve(searchTools(query, limit));
|
|
414
|
+
if (prop === "describe") return (name) => Promise.resolve(describeTool(name));
|
|
415
|
+
if (prop === "list") return () => Promise.resolve(workerData.tools.map((tool) => ({
|
|
416
|
+
name: tool.qualifiedName,
|
|
417
|
+
tool: tool.name,
|
|
418
|
+
description: tool.description
|
|
419
|
+
})));
|
|
420
|
+
}
|
|
421
|
+
return (args = {}) => hostCall(prop, args);
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
function normalizeCode(code) {
|
|
427
|
+
const trimmed = String(code ?? "").trim();
|
|
428
|
+
const unwrapped = trimmed.startsWith("(") && trimmed.endsWith(")")
|
|
429
|
+
? trimmed.slice(1, -1).trim()
|
|
430
|
+
: trimmed;
|
|
431
|
+
if (/^(async\\s*)?\\(?\\s*(?:[A-Za-z_$][\\w$]*\\s*)?\\)?\\s*=>/.test(unwrapped) || unwrapped.startsWith("async function") || unwrapped.startsWith("function")) {
|
|
432
|
+
return "__codemodeRun((" + trimmed + ")());";
|
|
433
|
+
}
|
|
434
|
+
return "__codemodeRun((async () => {\\n" + code + "\\n})());";
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
const logs = [];
|
|
438
|
+
const consoleProxy = {};
|
|
439
|
+
for (const level of ["log", "info", "warn", "error"]) {
|
|
440
|
+
consoleProxy[level] = (...args) => {
|
|
441
|
+
const rendered = args.map((arg) => {
|
|
442
|
+
if (typeof arg === "string") return arg;
|
|
443
|
+
try {
|
|
444
|
+
return JSON.stringify(arg);
|
|
445
|
+
} catch {
|
|
446
|
+
return String(arg);
|
|
447
|
+
}
|
|
448
|
+
}).join(" ");
|
|
449
|
+
logs.push({ level, message: rendered });
|
|
450
|
+
send("log", { level, message: rendered });
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
const context = vm.createContext({
|
|
455
|
+
console: consoleProxy,
|
|
456
|
+
codemode: makeConnector(true),
|
|
457
|
+
minicor: makeConnector(false),
|
|
458
|
+
setTimeout,
|
|
459
|
+
clearTimeout,
|
|
460
|
+
Promise,
|
|
461
|
+
JSON,
|
|
462
|
+
Math,
|
|
463
|
+
Date,
|
|
464
|
+
RegExp,
|
|
465
|
+
String,
|
|
466
|
+
Number,
|
|
467
|
+
Boolean,
|
|
468
|
+
Array,
|
|
469
|
+
Object,
|
|
470
|
+
Map,
|
|
471
|
+
Set,
|
|
472
|
+
URL,
|
|
473
|
+
URLSearchParams,
|
|
474
|
+
TextEncoder,
|
|
475
|
+
TextDecoder,
|
|
476
|
+
__codemodeRun: async (promise) => {
|
|
477
|
+
try {
|
|
478
|
+
const result = await promise;
|
|
479
|
+
send("result", { result, logs });
|
|
480
|
+
} catch (error) {
|
|
481
|
+
send("error", { error: serializeError(error), logs });
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}, {
|
|
485
|
+
codeGeneration: { strings: false, wasm: false }
|
|
486
|
+
});
|
|
487
|
+
|
|
488
|
+
try {
|
|
489
|
+
const script = new vm.Script(normalizeCode(workerData.code), {
|
|
490
|
+
filename: "minicor-codemode.js",
|
|
491
|
+
displayErrors: true,
|
|
492
|
+
});
|
|
493
|
+
script.runInContext(context, { timeout: workerData.syncTimeoutMs });
|
|
494
|
+
} catch (error) {
|
|
495
|
+
send("error", { error: serializeError(error), logs });
|
|
496
|
+
}
|
|
497
|
+
`;
|
|
498
|
+
export class CodeModeToolRegistry {
|
|
499
|
+
server;
|
|
500
|
+
tools = [];
|
|
501
|
+
byApiName = new Map();
|
|
502
|
+
exposeLegacyTools;
|
|
503
|
+
defaultTimeoutMs;
|
|
504
|
+
maxTimeoutMs;
|
|
505
|
+
constructor(server, options = {}) {
|
|
506
|
+
this.server = server;
|
|
507
|
+
this.exposeLegacyTools = options.exposeLegacyTools ?? false;
|
|
508
|
+
this.defaultTimeoutMs = options.defaultTimeoutMs ?? 30_000;
|
|
509
|
+
this.maxTimeoutMs = options.maxTimeoutMs ?? 120_000;
|
|
510
|
+
}
|
|
511
|
+
tool(name, ...args) {
|
|
512
|
+
const handler = args[args.length - 1];
|
|
513
|
+
if (typeof handler !== "function") {
|
|
514
|
+
throw new Error(`Tool ${name} did not provide a handler.`);
|
|
515
|
+
}
|
|
516
|
+
let description = "";
|
|
517
|
+
let inputSchema = {};
|
|
518
|
+
if (typeof args[0] === "string") {
|
|
519
|
+
description = args[0];
|
|
520
|
+
inputSchema = args[1] && typeof args[1] === "object" ? args[1] : {};
|
|
521
|
+
}
|
|
522
|
+
else if (args[0] && typeof args[0] === "object") {
|
|
523
|
+
inputSchema = args[0];
|
|
524
|
+
}
|
|
525
|
+
const apiName = this.uniqueApiName(name);
|
|
526
|
+
const tool = {
|
|
527
|
+
name,
|
|
528
|
+
apiName,
|
|
529
|
+
description,
|
|
530
|
+
inputSchema,
|
|
531
|
+
handler,
|
|
532
|
+
};
|
|
533
|
+
this.tools.push(tool);
|
|
534
|
+
this.byApiName.set(apiName, tool);
|
|
535
|
+
if (this.exposeLegacyTools) {
|
|
536
|
+
return this.server.tool(name, ...args);
|
|
537
|
+
}
|
|
538
|
+
return undefined;
|
|
539
|
+
}
|
|
540
|
+
prompt(...args) {
|
|
541
|
+
return this.server.prompt(...args);
|
|
542
|
+
}
|
|
543
|
+
registerCodeModeTool() {
|
|
544
|
+
const description = [
|
|
545
|
+
"Run JavaScript code that orchestrates the Minicor MCP API.",
|
|
546
|
+
"Inside the sandbox, call Minicor tools as async functions on the `minicor` global, for example:",
|
|
547
|
+
"`const workspaces = await minicor.list_workspaces({});`",
|
|
548
|
+
"Use `await codemode.search(\"workflow\")` to discover methods and `await codemode.describe(\"minicor.create_rpa_flow\")` for parameter docs.",
|
|
549
|
+
"Return a small JSON-serializable value or use console.log for progress. Tool calls should be awaited sequentially when actions depend on previous results.",
|
|
550
|
+
"The sandbox has no require/process/fetch access; effects go through Minicor tool methods.",
|
|
551
|
+
].join("\n");
|
|
552
|
+
this.server.tool("codemode", description, {
|
|
553
|
+
code: z
|
|
554
|
+
.string()
|
|
555
|
+
.describe("JavaScript code to run. It is wrapped in an async function, so top-level await and return are supported. Example: `const ws = await minicor.list_workspaces({}); return ws;`"),
|
|
556
|
+
timeoutMs: z
|
|
557
|
+
.number()
|
|
558
|
+
.int()
|
|
559
|
+
.positive()
|
|
560
|
+
.max(this.maxTimeoutMs)
|
|
561
|
+
.optional()
|
|
562
|
+
.describe(`Optional execution timeout in milliseconds. Default ${this.defaultTimeoutMs}.`),
|
|
563
|
+
}, async ({ code, timeoutMs }) => {
|
|
564
|
+
const result = await this.execute(code, timeoutMs);
|
|
565
|
+
const renderable = extractRenderableContent(result.result);
|
|
566
|
+
const textResult = {
|
|
567
|
+
...result,
|
|
568
|
+
...(result.result !== undefined
|
|
569
|
+
? { result: sanitizeForText(result.result) }
|
|
570
|
+
: {}),
|
|
571
|
+
};
|
|
572
|
+
return {
|
|
573
|
+
content: [
|
|
574
|
+
{
|
|
575
|
+
type: "text",
|
|
576
|
+
text: json(textResult),
|
|
577
|
+
},
|
|
578
|
+
...renderable.map((item) => ({
|
|
579
|
+
...item,
|
|
580
|
+
type: item.type,
|
|
581
|
+
})),
|
|
582
|
+
],
|
|
583
|
+
};
|
|
584
|
+
});
|
|
585
|
+
}
|
|
586
|
+
docs() {
|
|
587
|
+
return this.tools.map(buildToolDoc);
|
|
588
|
+
}
|
|
589
|
+
async execute(code, timeoutMs) {
|
|
590
|
+
const timeout = Math.min(timeoutMs ?? this.defaultTimeoutMs, this.maxTimeoutMs);
|
|
591
|
+
const logs = [];
|
|
592
|
+
const startedAt = Date.now();
|
|
593
|
+
return new Promise((resolve) => {
|
|
594
|
+
let settled = false;
|
|
595
|
+
const worker = new Worker(WORKER_SOURCE, {
|
|
596
|
+
eval: true,
|
|
597
|
+
workerData: {
|
|
598
|
+
code,
|
|
599
|
+
tools: this.docs(),
|
|
600
|
+
syncTimeoutMs: Math.min(timeout, 5_000),
|
|
601
|
+
},
|
|
602
|
+
});
|
|
603
|
+
const finish = (payload) => {
|
|
604
|
+
if (settled)
|
|
605
|
+
return;
|
|
606
|
+
settled = true;
|
|
607
|
+
clearTimeout(timer);
|
|
608
|
+
void worker.terminate();
|
|
609
|
+
resolve({
|
|
610
|
+
status: payload.status,
|
|
611
|
+
executionMs: Date.now() - startedAt,
|
|
612
|
+
...(payload.result !== undefined ? { result: payload.result } : {}),
|
|
613
|
+
...(payload.error ? { error: payload.error } : {}),
|
|
614
|
+
logs: payload.logs ?? logs,
|
|
615
|
+
});
|
|
616
|
+
};
|
|
617
|
+
const timer = setTimeout(() => {
|
|
618
|
+
finish({
|
|
619
|
+
status: "error",
|
|
620
|
+
error: `Code mode execution timed out after ${timeout}ms.`,
|
|
621
|
+
logs,
|
|
622
|
+
});
|
|
623
|
+
}, timeout);
|
|
624
|
+
worker.on("message", (message) => {
|
|
625
|
+
if (message?.type === "log") {
|
|
626
|
+
logs.push({ level: message.level, message: message.message });
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
if (message?.type === "toolCall") {
|
|
630
|
+
void this.invoke(message.tool, message.args)
|
|
631
|
+
.then((result) => {
|
|
632
|
+
worker.postMessage({ type: "toolResult", id: message.id, result });
|
|
633
|
+
})
|
|
634
|
+
.catch((error) => {
|
|
635
|
+
worker.postMessage({
|
|
636
|
+
type: "toolError",
|
|
637
|
+
id: message.id,
|
|
638
|
+
error: error?.message ?? String(error),
|
|
639
|
+
});
|
|
640
|
+
});
|
|
641
|
+
return;
|
|
642
|
+
}
|
|
643
|
+
if (message?.type === "result") {
|
|
644
|
+
finish({
|
|
645
|
+
status: "completed",
|
|
646
|
+
result: message.result,
|
|
647
|
+
logs: message.logs ?? logs,
|
|
648
|
+
});
|
|
649
|
+
return;
|
|
650
|
+
}
|
|
651
|
+
if (message?.type === "error") {
|
|
652
|
+
finish({
|
|
653
|
+
status: "error",
|
|
654
|
+
error: message.error,
|
|
655
|
+
logs: message.logs ?? logs,
|
|
656
|
+
});
|
|
657
|
+
}
|
|
658
|
+
});
|
|
659
|
+
worker.on("error", (error) => {
|
|
660
|
+
finish({
|
|
661
|
+
status: "error",
|
|
662
|
+
error: error.stack ?? error.message,
|
|
663
|
+
logs,
|
|
664
|
+
});
|
|
665
|
+
});
|
|
666
|
+
worker.on("exit", (codeValue) => {
|
|
667
|
+
if (!settled && codeValue !== 0) {
|
|
668
|
+
finish({
|
|
669
|
+
status: "error",
|
|
670
|
+
error: `Code mode worker exited with code ${codeValue}.`,
|
|
671
|
+
logs,
|
|
672
|
+
});
|
|
673
|
+
}
|
|
674
|
+
});
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
async invoke(apiName, args) {
|
|
678
|
+
const tool = this.byApiName.get(apiName);
|
|
679
|
+
if (!tool) {
|
|
680
|
+
throw new Error(`Unknown Minicor code-mode method "${apiName}". Use await codemode.search("...") to discover available methods.`);
|
|
681
|
+
}
|
|
682
|
+
const result = await tool.handler(args ?? {});
|
|
683
|
+
return toolResultToValue(result);
|
|
684
|
+
}
|
|
685
|
+
uniqueApiName(name) {
|
|
686
|
+
const base = sanitizeToolName(name);
|
|
687
|
+
let candidate = base;
|
|
688
|
+
let suffix = 2;
|
|
689
|
+
while (this.byApiName.has(candidate)) {
|
|
690
|
+
candidate = `${base}_${suffix}`;
|
|
691
|
+
suffix += 1;
|
|
692
|
+
}
|
|
693
|
+
return candidate;
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
export function shouldUseCodeMode() {
|
|
697
|
+
// Code mode is experimental and OFF by default. Opt in with
|
|
698
|
+
// EXPERIMENTAL_USE_CODE_MODE=1 (legacy aliases kept for back-compat).
|
|
699
|
+
const flag = process.env.EXPERIMENTAL_USE_CODE_MODE ??
|
|
700
|
+
process.env.MINICOR_MCP_CODE_MODE ??
|
|
701
|
+
"";
|
|
702
|
+
return ["1", "true", "on", "yes"].includes(flag.toLowerCase());
|
|
703
|
+
}
|
|
704
|
+
export function buildCodeModeInstructions(baseInstructions) {
|
|
705
|
+
return `${baseInstructions}
|
|
706
|
+
|
|
707
|
+
CODE MODE (EXPERIMENTAL):
|
|
708
|
+
This MCP is running with the experimental code-mode surface enabled. Use the \`codemode\` tool to run JavaScript that calls Minicor methods as \`await minicor.tool_name({ ... })\`.
|
|
709
|
+
|
|
710
|
+
If the server starts unauthenticated and only exposes \`setup_account\`, call \`setup_account\` directly, authenticate, and restart the MCP server.
|
|
711
|
+
|
|
712
|
+
Discovery inside code mode:
|
|
713
|
+
- \`await codemode.search("workflow")\` finds relevant Minicor methods.
|
|
714
|
+
- \`await codemode.describe("minicor.session_start")\` returns TypeScript-style parameter docs.
|
|
715
|
+
- \`await codemode.list()\` lists all available methods.
|
|
716
|
+
|
|
717
|
+
If the current directory contains a minicor.json file, your first MCP action should be a \`codemode\` call whose code invokes \`await minicor.session_start({ directory: "<current directory>" })\`. Before ending work, invoke \`await minicor.session_end(...)\` through code mode.
|
|
718
|
+
|
|
719
|
+
Code mode is opt-in: unset EXPERIMENTAL_USE_CODE_MODE to return to the default one-tool-per-operation MCP surface.`;
|
|
720
|
+
}
|
|
721
|
+
export function asMcpServer(registry) {
|
|
722
|
+
return registry;
|
|
723
|
+
}
|
|
724
|
+
export function compactToolDocs(tools) {
|
|
725
|
+
return tools.map(compactDoc);
|
|
726
|
+
}
|
|
727
|
+
//# sourceMappingURL=codemode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemode.js","sourceRoot":"","sources":["../src/codemode.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAOH,OAAO,EAKL,KAAK,MAAM,EACZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAOH,OAAO,EAKL,KAAK,MAAM,EACZ,MAAM,YAAY,CAAC;AAqFpB,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAOlD"}
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,7 @@ import path from "node:path";
|
|
|
15
15
|
import { LaminarClient } from "./laminar-client.js";
|
|
16
16
|
import { getTokenPath, getWriteTokenPath, regionToApiBase, apiBaseToRegion, } from "./paths.js";
|
|
17
17
|
import { TokenProvider } from "./token-provider.js";
|
|
18
|
+
import { CodeModeToolRegistry, asMcpServer, buildCodeModeInstructions, shouldUseCodeMode, } from "./codemode.js";
|
|
18
19
|
import { register as registerCore } from "./tools/core.js";
|
|
19
20
|
import { register as registerWorkflowOps } from "./tools/workflow-ops.js";
|
|
20
21
|
import { register as registerConfigStores } from "./tools/config-stores.js";
|
|
@@ -163,7 +164,11 @@ Before ending your session, call session_end() to persist your progress. Other a
|
|
|
163
164
|
machines, scheduled, or human-triggered) depend on this to resume where you left off.
|
|
164
165
|
|
|
165
166
|
If you are NOT in a workspace clone, use the tools freely — list_workspaces, clone_workspace, etc.`;
|
|
166
|
-
const server = new McpServer({ name: "minicor", version: "3.0.0" }, {
|
|
167
|
+
const server = new McpServer({ name: "minicor", version: "3.0.0" }, {
|
|
168
|
+
instructions: shouldUseCodeMode()
|
|
169
|
+
? buildCodeModeInstructions(MINICOR_INSTRUCTIONS)
|
|
170
|
+
: MINICOR_INSTRUCTIONS,
|
|
171
|
+
});
|
|
167
172
|
function scheduleTokenRefresh(region) {
|
|
168
173
|
const tokens = readRegionTokens(region);
|
|
169
174
|
if (!tokens?.refresh_token)
|
|
@@ -211,8 +216,15 @@ function getDefaultRegion() {
|
|
|
211
216
|
return "us";
|
|
212
217
|
}
|
|
213
218
|
function registerAll() {
|
|
219
|
+
const codeModeEnabled = shouldUseCodeMode();
|
|
220
|
+
const codeModeRegistry = codeModeEnabled
|
|
221
|
+
? new CodeModeToolRegistry(server)
|
|
222
|
+
: null;
|
|
223
|
+
const registrationServer = codeModeRegistry
|
|
224
|
+
? asMcpServer(codeModeRegistry)
|
|
225
|
+
: server;
|
|
214
226
|
const deps = {
|
|
215
|
-
server,
|
|
227
|
+
server: registrationServer,
|
|
216
228
|
client: (region) => {
|
|
217
229
|
const r = region ?? getDefaultRegion();
|
|
218
230
|
const c = clients.get(r);
|
|
@@ -242,6 +254,13 @@ function registerAll() {
|
|
|
242
254
|
registerBuildRpa(deps);
|
|
243
255
|
registerTfaGuide(deps);
|
|
244
256
|
registerWorkspaceSession(deps);
|
|
257
|
+
if (codeModeRegistry) {
|
|
258
|
+
codeModeRegistry.registerCodeModeTool();
|
|
259
|
+
console.error(`Experimental code mode enabled: ${codeModeRegistry.docs().length} Minicor methods exposed through codemode.`);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
console.error("Standard MCP tool surface enabled (set EXPERIMENTAL_USE_CODE_MODE=1 for code mode).");
|
|
263
|
+
}
|
|
245
264
|
return deps;
|
|
246
265
|
}
|
|
247
266
|
// ─── Main ────────────────────────────────────────────────────
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib.d.ts
CHANGED
|
@@ -31,6 +31,8 @@ export interface MinicorServerOptions {
|
|
|
31
31
|
}>>;
|
|
32
32
|
/** VM Manager service base URL. Defaults to the Cloud Run instance. */
|
|
33
33
|
vmServiceBaseUrl?: string;
|
|
34
|
+
/** Expose the experimental single code-mode tool instead of the default one-tool-per-operation surface. Defaults to false (opt in via EXPERIMENTAL_USE_CODE_MODE=1). */
|
|
35
|
+
codeMode?: boolean;
|
|
34
36
|
}
|
|
35
37
|
/**
|
|
36
38
|
* Create and connect a Minicor MCP server on the given transport.
|
package/dist/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE/E,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE/E,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AA8B1D,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACrF,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wKAAwK;IACxK,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAoFD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAkG5D;AAED,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/lib.js
CHANGED
|
@@ -16,6 +16,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
16
16
|
import { LaminarClient } from "./laminar-client.js";
|
|
17
17
|
import { regionToApiBase } from "./paths.js";
|
|
18
18
|
import { TokenProvider } from "./token-provider.js";
|
|
19
|
+
import { CodeModeToolRegistry, asMcpServer, buildCodeModeInstructions, shouldUseCodeMode, } from "./codemode.js";
|
|
19
20
|
import { register as registerCore } from "./tools/core.js";
|
|
20
21
|
import { register as registerWorkflowOps } from "./tools/workflow-ops.js";
|
|
21
22
|
import { register as registerConfigStores } from "./tools/config-stores.js";
|
|
@@ -100,7 +101,12 @@ function buildProvider(creds, apiBase, onUpdate) {
|
|
|
100
101
|
* Returns a handle with a `close()` method for cleanup.
|
|
101
102
|
*/
|
|
102
103
|
export async function createMinicorServer(transport, opts = {}) {
|
|
103
|
-
const
|
|
104
|
+
const codeModeEnabled = opts.codeMode ?? shouldUseCodeMode();
|
|
105
|
+
const server = new McpServer({ name: "minicor", version: "3.0.0" }, {
|
|
106
|
+
instructions: codeModeEnabled
|
|
107
|
+
? buildCodeModeInstructions(MINICOR_INSTRUCTIONS)
|
|
108
|
+
: MINICOR_INSTRUCTIONS,
|
|
109
|
+
});
|
|
104
110
|
const clients = new Map();
|
|
105
111
|
const tokens = new Map();
|
|
106
112
|
const baseUrls = new Map();
|
|
@@ -137,8 +143,14 @@ export async function createMinicorServer(transport, opts = {}) {
|
|
|
137
143
|
return "ca";
|
|
138
144
|
return "us";
|
|
139
145
|
}
|
|
146
|
+
const codeModeRegistry = codeModeEnabled
|
|
147
|
+
? new CodeModeToolRegistry(server)
|
|
148
|
+
: null;
|
|
149
|
+
const registrationServer = codeModeRegistry
|
|
150
|
+
? asMcpServer(codeModeRegistry)
|
|
151
|
+
: server;
|
|
140
152
|
const deps = {
|
|
141
|
-
server,
|
|
153
|
+
server: registrationServer,
|
|
142
154
|
client: (region) => {
|
|
143
155
|
const r = region ?? getDefaultRegion();
|
|
144
156
|
const c = clients.get(r);
|
|
@@ -156,6 +168,9 @@ export async function createMinicorServer(transport, opts = {}) {
|
|
|
156
168
|
availableRegions: () => [...clients.keys()],
|
|
157
169
|
};
|
|
158
170
|
registerAllTools(deps);
|
|
171
|
+
if (codeModeRegistry) {
|
|
172
|
+
codeModeRegistry.registerCodeModeTool();
|
|
173
|
+
}
|
|
159
174
|
await server.connect(transport);
|
|
160
175
|
transport.onclose = async () => {
|
|
161
176
|
await autoCheckpoint(deps);
|
package/dist/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@minicor/mcp-server",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.5",
|
|
4
4
|
"description": "Desktop and browser RPA automation, workflow management, and AI-powered debugging for the Minicor platform. Formerly Laminar.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/lib.js",
|