@warble/codex-local 0.4.0
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 +211 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +4113 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +981 -0
- package/dist/index.js +4213 -0
- package/dist/index.js.map +1 -0
- package/dist/request_mcp.d.ts +1 -0
- package/dist/request_mcp.js +86 -0
- package/dist/request_mcp.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/request_mcp.ts
|
|
4
|
+
import { readFileSync } from "fs";
|
|
5
|
+
import { isAbsolute } from "path";
|
|
6
|
+
import { createInterface } from "readline";
|
|
7
|
+
import { parseArgs } from "util";
|
|
8
|
+
|
|
9
|
+
// src/request_transport.ts
|
|
10
|
+
var REQUEST_TRANSPORT_TOOL = "get_original_request";
|
|
11
|
+
var STEP_TRANSPORT_TOOL = "get_step_request";
|
|
12
|
+
|
|
13
|
+
// src/request_mcp.ts
|
|
14
|
+
var { values } = parseArgs({
|
|
15
|
+
options: { "request-file": { type: "string" }, "step-file": { type: "string" } }
|
|
16
|
+
});
|
|
17
|
+
var requestFile = values["request-file"];
|
|
18
|
+
var stepFile = values["step-file"];
|
|
19
|
+
if (!requestFile || !isAbsolute(requestFile) || !stepFile || !isAbsolute(stepFile)) {
|
|
20
|
+
process.stderr.write("request transport requires absolute --request-file and --step-file\n");
|
|
21
|
+
process.exit(2);
|
|
22
|
+
}
|
|
23
|
+
function send(message) {
|
|
24
|
+
process.stdout.write(`${JSON.stringify(message)}
|
|
25
|
+
`);
|
|
26
|
+
}
|
|
27
|
+
var input = createInterface({ input: process.stdin });
|
|
28
|
+
input.on("line", (line) => {
|
|
29
|
+
if (!line.trim()) return;
|
|
30
|
+
const message = JSON.parse(line);
|
|
31
|
+
if (message.method === "initialize") {
|
|
32
|
+
send({
|
|
33
|
+
jsonrpc: "2.0",
|
|
34
|
+
id: message.id,
|
|
35
|
+
result: {
|
|
36
|
+
protocolVersion: "2025-06-18",
|
|
37
|
+
capabilities: { tools: {} },
|
|
38
|
+
serverInfo: { name: "warble-request-transport", version: "0.1.0" }
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (message.method === "tools/list") {
|
|
44
|
+
send({
|
|
45
|
+
jsonrpc: "2.0",
|
|
46
|
+
id: message.id,
|
|
47
|
+
result: {
|
|
48
|
+
tools: [
|
|
49
|
+
{
|
|
50
|
+
name: REQUEST_TRANSPORT_TOOL,
|
|
51
|
+
description: "Return the authoritative original request for this Warble turn exactly as received by the dispatcher.",
|
|
52
|
+
inputSchema: { type: "object", properties: {}, additionalProperties: false }
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: STEP_TRANSPORT_TOOL,
|
|
56
|
+
description: "Return the authoritative host-marshalled Warble step and inputs for this child.",
|
|
57
|
+
inputSchema: { type: "object", properties: {}, additionalProperties: false }
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (message.method === "tools/call") {
|
|
65
|
+
if (message.params?.name !== REQUEST_TRANSPORT_TOOL && message.params?.name !== STEP_TRANSPORT_TOOL) {
|
|
66
|
+
send({ jsonrpc: "2.0", id: message.id, error: { code: -32601, message: "unknown request transport tool" } });
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
const request = readFileSync(
|
|
71
|
+
message.params.name === REQUEST_TRANSPORT_TOOL ? requestFile : stepFile,
|
|
72
|
+
"utf8"
|
|
73
|
+
);
|
|
74
|
+
send({
|
|
75
|
+
jsonrpc: "2.0",
|
|
76
|
+
id: message.id,
|
|
77
|
+
result: { content: [{ type: "text", text: request }] }
|
|
78
|
+
});
|
|
79
|
+
} catch {
|
|
80
|
+
send({ jsonrpc: "2.0", id: message.id, error: { code: -32e3, message: "request transport input is unavailable" } });
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (message.id !== void 0) send({ jsonrpc: "2.0", id: message.id, result: {} });
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=request_mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/request_mcp.ts","../src/request_transport.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { readFileSync } from \"node:fs\";\nimport { isAbsolute } from \"node:path\";\nimport { createInterface } from \"node:readline\";\nimport { parseArgs } from \"node:util\";\n\nimport { REQUEST_TRANSPORT_TOOL, STEP_TRANSPORT_TOOL } from \"./request_transport.js\";\n\nconst { values } = parseArgs({\n options: { \"request-file\": { type: \"string\" }, \"step-file\": { type: \"string\" } },\n});\nconst requestFile = values[\"request-file\"];\nconst stepFile = values[\"step-file\"];\nif (!requestFile || !isAbsolute(requestFile) || !stepFile || !isAbsolute(stepFile)) {\n process.stderr.write(\"request transport requires absolute --request-file and --step-file\\n\");\n process.exit(2);\n}\n\nfunction send(message: unknown): void {\n process.stdout.write(`${JSON.stringify(message)}\\n`);\n}\n\nconst input = createInterface({ input: process.stdin });\ninput.on(\"line\", (line) => {\n if (!line.trim()) return;\n const message = JSON.parse(line) as {\n id?: unknown;\n method?: unknown;\n params?: { name?: unknown };\n };\n if (message.method === \"initialize\") {\n send({\n jsonrpc: \"2.0\",\n id: message.id,\n result: {\n protocolVersion: \"2025-06-18\",\n capabilities: { tools: {} },\n serverInfo: { name: \"warble-request-transport\", version: \"0.1.0\" },\n },\n });\n return;\n }\n if (message.method === \"tools/list\") {\n send({\n jsonrpc: \"2.0\",\n id: message.id,\n result: {\n tools: [\n {\n name: REQUEST_TRANSPORT_TOOL,\n description: \"Return the authoritative original request for this Warble turn exactly as received by the dispatcher.\",\n inputSchema: { type: \"object\", properties: {}, additionalProperties: false },\n },\n {\n name: STEP_TRANSPORT_TOOL,\n description: \"Return the authoritative host-marshalled Warble step and inputs for this child.\",\n inputSchema: { type: \"object\", properties: {}, additionalProperties: false },\n },\n ],\n },\n });\n return;\n }\n if (message.method === \"tools/call\") {\n if (message.params?.name !== REQUEST_TRANSPORT_TOOL && message.params?.name !== STEP_TRANSPORT_TOOL) {\n send({ jsonrpc: \"2.0\", id: message.id, error: { code: -32601, message: \"unknown request transport tool\" } });\n return;\n }\n try {\n const request = readFileSync(\n message.params.name === REQUEST_TRANSPORT_TOOL ? requestFile : stepFile,\n \"utf8\",\n );\n send({\n jsonrpc: \"2.0\",\n id: message.id,\n result: { content: [{ type: \"text\", text: request }] },\n });\n } catch {\n send({ jsonrpc: \"2.0\", id: message.id, error: { code: -32000, message: \"request transport input is unavailable\" } });\n }\n return;\n }\n if (message.id !== undefined) send({ jsonrpc: \"2.0\", id: message.id, result: {} });\n});\n","export const REQUEST_TRANSPORT_SERVER = \"warble_request_transport\";\nexport const REQUEST_TRANSPORT_TOOL = \"get_original_request\";\nexport const STEP_TRANSPORT_TOOL = \"get_step_request\";\n"],"mappings":";;;AACA,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,iBAAiB;;;ACHnB,IAAM,yBAAyB;AAC/B,IAAM,sBAAsB;;;ADMnC,IAAM,EAAE,OAAO,IAAI,UAAU;AAAA,EAC3B,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,GAAG,aAAa,EAAE,MAAM,SAAS,EAAE;AACjF,CAAC;AACD,IAAM,cAAc,OAAO,cAAc;AACzC,IAAM,WAAW,OAAO,WAAW;AACnC,IAAI,CAAC,eAAe,CAAC,WAAW,WAAW,KAAK,CAAC,YAAY,CAAC,WAAW,QAAQ,GAAG;AAClF,UAAQ,OAAO,MAAM,sEAAsE;AAC3F,UAAQ,KAAK,CAAC;AAChB;AAEA,SAAS,KAAK,SAAwB;AACpC,UAAQ,OAAO,MAAM,GAAG,KAAK,UAAU,OAAO,CAAC;AAAA,CAAI;AACrD;AAEA,IAAM,QAAQ,gBAAgB,EAAE,OAAO,QAAQ,MAAM,CAAC;AACtD,MAAM,GAAG,QAAQ,CAAC,SAAS;AACzB,MAAI,CAAC,KAAK,KAAK,EAAG;AAClB,QAAM,UAAU,KAAK,MAAM,IAAI;AAK/B,MAAI,QAAQ,WAAW,cAAc;AACnC,SAAK;AAAA,MACH,SAAS;AAAA,MACT,IAAI,QAAQ;AAAA,MACZ,QAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,cAAc,EAAE,OAAO,CAAC,EAAE;AAAA,QAC1B,YAAY,EAAE,MAAM,4BAA4B,SAAS,QAAQ;AAAA,MACnE;AAAA,IACF,CAAC;AACD;AAAA,EACF;AACA,MAAI,QAAQ,WAAW,cAAc;AACnC,SAAK;AAAA,MACH,SAAS;AAAA,MACT,IAAI,QAAQ;AAAA,MACZ,QAAQ;AAAA,QACN,OAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,aAAa,EAAE,MAAM,UAAU,YAAY,CAAC,GAAG,sBAAsB,MAAM;AAAA,UAC7E;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,aAAa;AAAA,YACb,aAAa,EAAE,MAAM,UAAU,YAAY,CAAC,GAAG,sBAAsB,MAAM;AAAA,UAC7E;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AACD;AAAA,EACF;AACA,MAAI,QAAQ,WAAW,cAAc;AACnC,QAAI,QAAQ,QAAQ,SAAS,0BAA0B,QAAQ,QAAQ,SAAS,qBAAqB;AACnG,WAAK,EAAE,SAAS,OAAO,IAAI,QAAQ,IAAI,OAAO,EAAE,MAAM,QAAQ,SAAS,iCAAiC,EAAE,CAAC;AAC3G;AAAA,IACF;AACA,QAAI;AACF,YAAM,UAAU;AAAA,QACd,QAAQ,OAAO,SAAS,yBAAyB,cAAc;AAAA,QAC/D;AAAA,MACF;AACA,WAAK;AAAA,QACH,SAAS;AAAA,QACT,IAAI,QAAQ;AAAA,QACZ,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,QAAQ,CAAC,EAAE;AAAA,MACvD,CAAC;AAAA,IACH,QAAQ;AACN,WAAK,EAAE,SAAS,OAAO,IAAI,QAAQ,IAAI,OAAO,EAAE,MAAM,OAAQ,SAAS,yCAAyC,EAAE,CAAC;AAAA,IACrH;AACA;AAAA,EACF;AACA,MAAI,QAAQ,OAAO,OAAW,MAAK,EAAE,SAAS,OAAO,IAAI,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC;AACnF,CAAC;","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@warble/codex-local",
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"license": "Apache-2.0",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"description": "Warble back-end: isolated local Codex CLI dispatcher",
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"module": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"import": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./package.json": "./package.json"
|
|
19
|
+
},
|
|
20
|
+
"bin": {
|
|
21
|
+
"warble-codex-local": "./dist/cli.js"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist"
|
|
25
|
+
],
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/Canner/Warble",
|
|
29
|
+
"directory": "dispatcher/codex-local"
|
|
30
|
+
},
|
|
31
|
+
"homepage": "https://github.com/Canner/Warble/tree/main/dispatcher/codex-local#readme",
|
|
32
|
+
"bugs": {
|
|
33
|
+
"url": "https://github.com/Canner/Warble/issues"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"warble",
|
|
37
|
+
"codex",
|
|
38
|
+
"dispatcher",
|
|
39
|
+
"agent",
|
|
40
|
+
"llm",
|
|
41
|
+
"cli"
|
|
42
|
+
],
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=18"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "tsup",
|
|
48
|
+
"check-types": "tsc --noEmit",
|
|
49
|
+
"test": "node --import tsx --test --test-concurrency=1 tests/*.test.ts",
|
|
50
|
+
"dispatch": "tsx src/cli.ts",
|
|
51
|
+
"smoke:live": "tsx tests/live-smoke.ts",
|
|
52
|
+
"smoke:session-live": "tsx tests/live-session-smoke.ts",
|
|
53
|
+
"smoke:ask-live": "tsx tests/live-ask-smoke.ts",
|
|
54
|
+
"smoke:dashboard-live": "tsx tests/live-dashboard-smoke.ts"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@types/node": "^22",
|
|
58
|
+
"tsup": "^8",
|
|
59
|
+
"tsx": "^4",
|
|
60
|
+
"typescript": "^5"
|
|
61
|
+
}
|
|
62
|
+
}
|