@tutti-os/agent-acp-kit 0.1.10
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/AGENTS.md +176 -0
- package/README.md +428 -0
- package/assets/agent-acp-kit-architecture.png +0 -0
- package/dist/core/capabilities.d.ts +23 -0
- package/dist/core/capabilities.d.ts.map +1 -0
- package/dist/core/capabilities.js +2 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/detection.d.ts +8 -0
- package/dist/core/detection.d.ts.map +1 -0
- package/dist/core/detection.js +2 -0
- package/dist/core/detection.js.map +1 -0
- package/dist/core/errors.d.ts +6 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +9 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/events.d.ts +51 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +2 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/index.d.ts +14 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/launch-plan.d.ts +22 -0
- package/dist/core/launch-plan.d.ts.map +1 -0
- package/dist/core/launch-plan.js +2 -0
- package/dist/core/launch-plan.js.map +1 -0
- package/dist/core/mcp.d.ts +31 -0
- package/dist/core/mcp.d.ts.map +1 -0
- package/dist/core/mcp.js +37 -0
- package/dist/core/mcp.js.map +1 -0
- package/dist/core/provider-plugin.d.ts +84 -0
- package/dist/core/provider-plugin.d.ts.map +1 -0
- package/dist/core/provider-plugin.js +2 -0
- package/dist/core/provider-plugin.js.map +1 -0
- package/dist/core/redaction.d.ts +2 -0
- package/dist/core/redaction.d.ts.map +1 -0
- package/dist/core/redaction.js +9 -0
- package/dist/core/redaction.js.map +1 -0
- package/dist/core/registry.d.ts +4 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +10 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/run-input.d.ts +30 -0
- package/dist/core/run-input.d.ts.map +1 -0
- package/dist/core/run-input.js +2 -0
- package/dist/core/run-input.js.map +1 -0
- package/dist/core/skills.d.ts +13 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +2 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/transport.d.ts +17 -0
- package/dist/core/transport.d.ts.map +1 -0
- package/dist/core/transport.js +2 -0
- package/dist/core/transport.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/process/cancellation.d.ts +7 -0
- package/dist/process/cancellation.d.ts.map +1 -0
- package/dist/process/cancellation.js +36 -0
- package/dist/process/cancellation.js.map +1 -0
- package/dist/process/command-resolver.d.ts +13 -0
- package/dist/process/command-resolver.d.ts.map +1 -0
- package/dist/process/command-resolver.js +63 -0
- package/dist/process/command-resolver.js.map +1 -0
- package/dist/process/env.d.ts +2 -0
- package/dist/process/env.d.ts.map +1 -0
- package/dist/process/env.js +7 -0
- package/dist/process/env.js.map +1 -0
- package/dist/process/stderr-buffer.d.ts +11 -0
- package/dist/process/stderr-buffer.d.ts.map +1 -0
- package/dist/process/stderr-buffer.js +23 -0
- package/dist/process/stderr-buffer.js.map +1 -0
- package/dist/process/supervisor.d.ts +27 -0
- package/dist/process/supervisor.d.ts.map +1 -0
- package/dist/process/supervisor.js +76 -0
- package/dist/process/supervisor.js.map +1 -0
- package/dist/providers/acp-presets/index.d.ts +3 -0
- package/dist/providers/acp-presets/index.d.ts.map +1 -0
- package/dist/providers/acp-presets/index.js +2 -0
- package/dist/providers/acp-presets/index.js.map +1 -0
- package/dist/providers/acp-presets/provider.d.ts +114 -0
- package/dist/providers/acp-presets/provider.d.ts.map +1 -0
- package/dist/providers/acp-presets/provider.js +172 -0
- package/dist/providers/acp-presets/provider.js.map +1 -0
- package/dist/providers/claude/detect.d.ts +35 -0
- package/dist/providers/claude/detect.d.ts.map +1 -0
- package/dist/providers/claude/detect.js +159 -0
- package/dist/providers/claude/detect.js.map +1 -0
- package/dist/providers/claude/index.d.ts +4 -0
- package/dist/providers/claude/index.d.ts.map +1 -0
- package/dist/providers/claude/index.js +206 -0
- package/dist/providers/claude/index.js.map +1 -0
- package/dist/providers/claude/launch-plan.d.ts +5 -0
- package/dist/providers/claude/launch-plan.d.ts.map +1 -0
- package/dist/providers/claude/launch-plan.js +38 -0
- package/dist/providers/claude/launch-plan.js.map +1 -0
- package/dist/providers/claude/parser.d.ts +3 -0
- package/dist/providers/claude/parser.d.ts.map +1 -0
- package/dist/providers/claude/parser.js +41 -0
- package/dist/providers/claude/parser.js.map +1 -0
- package/dist/providers/codex/detect.d.ts +31 -0
- package/dist/providers/codex/detect.d.ts.map +1 -0
- package/dist/providers/codex/detect.js +280 -0
- package/dist/providers/codex/detect.js.map +1 -0
- package/dist/providers/codex/index.d.ts +4 -0
- package/dist/providers/codex/index.d.ts.map +1 -0
- package/dist/providers/codex/index.js +383 -0
- package/dist/providers/codex/index.js.map +1 -0
- package/dist/providers/codex/launch-plan.d.ts +3 -0
- package/dist/providers/codex/launch-plan.d.ts.map +1 -0
- package/dist/providers/codex/launch-plan.js +40 -0
- package/dist/providers/codex/launch-plan.js.map +1 -0
- package/dist/providers/codex/parser.d.ts +32 -0
- package/dist/providers/codex/parser.d.ts.map +1 -0
- package/dist/providers/codex/parser.js +187 -0
- package/dist/providers/codex/parser.js.map +1 -0
- package/dist/providers/codex/reasoning.d.ts +2 -0
- package/dist/providers/codex/reasoning.d.ts.map +1 -0
- package/dist/providers/codex/reasoning.js +12 -0
- package/dist/providers/codex/reasoning.js.map +1 -0
- package/dist/providers/fake/index.d.ts +2 -0
- package/dist/providers/fake/index.d.ts.map +1 -0
- package/dist/providers/fake/index.js +2 -0
- package/dist/providers/fake/index.js.map +1 -0
- package/dist/providers/fake/provider.d.ts +8 -0
- package/dist/providers/fake/provider.d.ts.map +1 -0
- package/dist/providers/fake/provider.js +73 -0
- package/dist/providers/fake/provider.js.map +1 -0
- package/dist/providers/generic-acp/index.d.ts +2 -0
- package/dist/providers/generic-acp/index.d.ts.map +1 -0
- package/dist/providers/generic-acp/index.js +2 -0
- package/dist/providers/generic-acp/index.js.map +1 -0
- package/dist/providers/generic-acp/provider.d.ts +8 -0
- package/dist/providers/generic-acp/provider.d.ts.map +1 -0
- package/dist/providers/generic-acp/provider.js +93 -0
- package/dist/providers/generic-acp/provider.js.map +1 -0
- package/dist/providers/hermes/index.d.ts +2 -0
- package/dist/providers/hermes/index.d.ts.map +1 -0
- package/dist/providers/hermes/index.js +2 -0
- package/dist/providers/hermes/index.js.map +1 -0
- package/dist/providers/hermes/provider.d.ts +2 -0
- package/dist/providers/hermes/provider.d.ts.map +1 -0
- package/dist/providers/hermes/provider.js +2 -0
- package/dist/providers/hermes/provider.js.map +1 -0
- package/dist/providers/install.d.ts +87 -0
- package/dist/providers/install.d.ts.map +1 -0
- package/dist/providers/install.js +289 -0
- package/dist/providers/install.js.map +1 -0
- package/dist/providers/kimi/index.d.ts +2 -0
- package/dist/providers/kimi/index.d.ts.map +1 -0
- package/dist/providers/kimi/index.js +2 -0
- package/dist/providers/kimi/index.js.map +1 -0
- package/dist/providers/kimi/provider.d.ts +2 -0
- package/dist/providers/kimi/provider.d.ts.map +1 -0
- package/dist/providers/kimi/provider.js +2 -0
- package/dist/providers/kimi/provider.js.map +1 -0
- package/dist/providers/kiro/index.d.ts +2 -0
- package/dist/providers/kiro/index.d.ts.map +1 -0
- package/dist/providers/kiro/index.js +2 -0
- package/dist/providers/kiro/index.js.map +1 -0
- package/dist/providers/kiro/provider.d.ts +2 -0
- package/dist/providers/kiro/provider.d.ts.map +1 -0
- package/dist/providers/kiro/provider.js +2 -0
- package/dist/providers/kiro/provider.js.map +1 -0
- package/dist/runtime/control-plane.d.ts +4 -0
- package/dist/runtime/control-plane.d.ts.map +1 -0
- package/dist/runtime/control-plane.js +2 -0
- package/dist/runtime/control-plane.js.map +1 -0
- package/dist/runtime/create-runtime.d.ts +44 -0
- package/dist/runtime/create-runtime.d.ts.map +1 -0
- package/dist/runtime/create-runtime.js +445 -0
- package/dist/runtime/create-runtime.js.map +1 -0
- package/dist/runtime/detection-cache.d.ts +6 -0
- package/dist/runtime/detection-cache.d.ts.map +1 -0
- package/dist/runtime/detection-cache.js +15 -0
- package/dist/runtime/detection-cache.js.map +1 -0
- package/dist/runtime/provider-registry.d.ts +7 -0
- package/dist/runtime/provider-registry.d.ts.map +1 -0
- package/dist/runtime/provider-registry.js +19 -0
- package/dist/runtime/provider-registry.js.map +1 -0
- package/dist/skills/cleanup.d.ts +2 -0
- package/dist/skills/cleanup.d.ts.map +1 -0
- package/dist/skills/cleanup.js +5 -0
- package/dist/skills/cleanup.js.map +1 -0
- package/dist/skills/materialize.d.ts +3 -0
- package/dist/skills/materialize.d.ts.map +1 -0
- package/dist/skills/materialize.js +38 -0
- package/dist/skills/materialize.js.map +1 -0
- package/dist/skills/prompt-injection.d.ts +13 -0
- package/dist/skills/prompt-injection.d.ts.map +1 -0
- package/dist/skills/prompt-injection.js +34 -0
- package/dist/skills/prompt-injection.js.map +1 -0
- package/dist/testing/conformance.d.ts +12 -0
- package/dist/testing/conformance.d.ts.map +1 -0
- package/dist/testing/conformance.js +55 -0
- package/dist/testing/conformance.js.map +1 -0
- package/dist/testing/fake-acp-peer.d.ts +13 -0
- package/dist/testing/fake-acp-peer.d.ts.map +1 -0
- package/dist/testing/fake-acp-peer.js +72 -0
- package/dist/testing/fake-acp-peer.js.map +1 -0
- package/dist/testing/fake-provider.d.ts +8 -0
- package/dist/testing/fake-provider.d.ts.map +1 -0
- package/dist/testing/fake-provider.js +12 -0
- package/dist/testing/fake-provider.js.map +1 -0
- package/dist/testing/fixtures.d.ts +3 -0
- package/dist/testing/fixtures.d.ts.map +1 -0
- package/dist/testing/fixtures.js +6 -0
- package/dist/testing/fixtures.js.map +1 -0
- package/dist/testing/index.d.ts +6 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/transports/acp/acp-client.d.ts +4 -0
- package/dist/transports/acp/acp-client.d.ts.map +1 -0
- package/dist/transports/acp/acp-client.js +283 -0
- package/dist/transports/acp/acp-client.js.map +1 -0
- package/dist/transports/acp/acp-jsonrpc.d.ts +7 -0
- package/dist/transports/acp/acp-jsonrpc.d.ts.map +1 -0
- package/dist/transports/acp/acp-jsonrpc.js +27 -0
- package/dist/transports/acp/acp-jsonrpc.js.map +1 -0
- package/dist/transports/acp/acp-models.d.ts +11 -0
- package/dist/transports/acp/acp-models.d.ts.map +1 -0
- package/dist/transports/acp/acp-models.js +95 -0
- package/dist/transports/acp/acp-models.js.map +1 -0
- package/dist/transports/acp/acp-permissions.d.ts +5 -0
- package/dist/transports/acp/acp-permissions.d.ts.map +1 -0
- package/dist/transports/acp/acp-permissions.js +7 -0
- package/dist/transports/acp/acp-permissions.js.map +1 -0
- package/dist/transports/acp/acp-session.d.ts +7 -0
- package/dist/transports/acp/acp-session.d.ts.map +1 -0
- package/dist/transports/acp/acp-session.js +27 -0
- package/dist/transports/acp/acp-session.js.map +1 -0
- package/dist/transports/acp/acp-types.d.ts +28 -0
- package/dist/transports/acp/acp-types.d.ts.map +1 -0
- package/dist/transports/acp/acp-types.js +2 -0
- package/dist/transports/acp/acp-types.js.map +1 -0
- package/dist/transports/jsonl/jsonl-parser.d.ts +5 -0
- package/dist/transports/jsonl/jsonl-parser.d.ts.map +1 -0
- package/dist/transports/jsonl/jsonl-parser.js +27 -0
- package/dist/transports/jsonl/jsonl-parser.js.map +1 -0
- package/dist/transports/jsonl/jsonl-transport.d.ts +4 -0
- package/dist/transports/jsonl/jsonl-transport.d.ts.map +1 -0
- package/dist/transports/jsonl/jsonl-transport.js +81 -0
- package/dist/transports/jsonl/jsonl-transport.js.map +1 -0
- package/dist/transports/plain/plain-transport.d.ts +4 -0
- package/dist/transports/plain/plain-transport.d.ts.map +1 -0
- package/dist/transports/plain/plain-transport.js +52 -0
- package/dist/transports/plain/plain-transport.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-jsonrpc.js","sourceRoot":"","sources":["../../../src/transports/acp/acp-jsonrpc.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CACrC,SAA6C;IAE7C,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,OAAO;QACL,IAAI,CAAC,KAAa;YAChB,MAAM,IAAI,KAAK,CAAC;YAChB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO;oBAAE,SAAS;gBACvB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QACD,KAAK;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC,CAAC;YAClD,MAAM,GAAG,EAAE,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,QAA+B,EAC/B,QAAyB;IAEzB,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-models.d.ts","sourceRoot":"","sources":["../../../src/transports/acp/acp-models.ts"],"names":[],"mappings":"AAoCA,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;QAEsC,MAAM;WAAS,MAAM;KAuE3D"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { createJsonRpcLineParser, sendJsonRpc } from "./acp-jsonrpc.js";
|
|
3
|
+
import { buildAcpSessionNewParams } from "./acp-session.js";
|
|
4
|
+
const DEFAULT_MODEL_OPTION = { id: "default", label: "Default (CLI config)" };
|
|
5
|
+
function normalizeAcpModels(models, defaultModelOption = DEFAULT_MODEL_OPTION) {
|
|
6
|
+
const payload = (models ?? {});
|
|
7
|
+
const available = Array.isArray(payload.availableModels)
|
|
8
|
+
? payload.availableModels
|
|
9
|
+
: [];
|
|
10
|
+
const currentModelId = typeof payload.currentModelId === "string" ? payload.currentModelId : null;
|
|
11
|
+
const seen = new Set([defaultModelOption.id]);
|
|
12
|
+
const out = [defaultModelOption];
|
|
13
|
+
for (const model of available) {
|
|
14
|
+
const record = (model ?? {});
|
|
15
|
+
const id = typeof record.modelId === "string" ? record.modelId.trim() : "";
|
|
16
|
+
if (!id || seen.has(id))
|
|
17
|
+
continue;
|
|
18
|
+
seen.add(id);
|
|
19
|
+
const name = typeof record.name === "string" ? record.name.trim() : "";
|
|
20
|
+
const labelBase = name && name !== id ? `${name} (${id})` : id;
|
|
21
|
+
out.push({
|
|
22
|
+
id,
|
|
23
|
+
label: id === currentModelId ? `${labelBase} (current)` : labelBase,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
export async function detectAcpModels(input) {
|
|
29
|
+
const timeoutMs = input.timeoutMs ?? 15_000;
|
|
30
|
+
return await new Promise((resolve, reject) => {
|
|
31
|
+
const child = spawn(input.bin, input.args, {
|
|
32
|
+
cwd: input.cwd,
|
|
33
|
+
env: input.env,
|
|
34
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
35
|
+
});
|
|
36
|
+
child.stdout.setEncoding("utf8");
|
|
37
|
+
let settled = false;
|
|
38
|
+
let expectedId = 1;
|
|
39
|
+
function finish(fn, value) {
|
|
40
|
+
if (settled)
|
|
41
|
+
return;
|
|
42
|
+
settled = true;
|
|
43
|
+
fn(value);
|
|
44
|
+
}
|
|
45
|
+
function fail(error) {
|
|
46
|
+
finish(reject, error);
|
|
47
|
+
child.kill("SIGTERM");
|
|
48
|
+
}
|
|
49
|
+
const parser = createJsonRpcLineParser((message) => {
|
|
50
|
+
if (message.error) {
|
|
51
|
+
fail(new Error(message.error.message ?? "ACP detection failed"));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (message.id !== expectedId)
|
|
55
|
+
return;
|
|
56
|
+
if (expectedId === 1) {
|
|
57
|
+
expectedId = 2;
|
|
58
|
+
sendJsonRpc(child.stdin, {
|
|
59
|
+
jsonrpc: "2.0",
|
|
60
|
+
id: 2,
|
|
61
|
+
method: "session/new",
|
|
62
|
+
params: buildAcpSessionNewParams(input.cwd),
|
|
63
|
+
});
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const result = (message.result ?? {});
|
|
67
|
+
const models = normalizeAcpModels(result.models);
|
|
68
|
+
finish(resolve, models);
|
|
69
|
+
child.kill("SIGTERM");
|
|
70
|
+
});
|
|
71
|
+
child.stdout.on("data", (chunk) => parser.feed(chunk));
|
|
72
|
+
child.on("error", (error) => fail(error));
|
|
73
|
+
child.on("close", (code) => {
|
|
74
|
+
if (settled)
|
|
75
|
+
return;
|
|
76
|
+
if (code !== 0) {
|
|
77
|
+
fail(new Error(`ACP model detection exited with code ${code}`));
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
const timer = setTimeout(() => {
|
|
81
|
+
fail(new Error(`ACP model detection timed out after ${timeoutMs}ms`));
|
|
82
|
+
}, timeoutMs);
|
|
83
|
+
sendJsonRpc(child.stdin, {
|
|
84
|
+
jsonrpc: "2.0",
|
|
85
|
+
id: 1,
|
|
86
|
+
method: "initialize",
|
|
87
|
+
params: {
|
|
88
|
+
clientInfo: { name: "agent-acp-kit", version: "0.0.0" },
|
|
89
|
+
protocolVersion: 1,
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
child.once("close", () => clearTimeout(timer));
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=acp-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-models.js","sourceRoot":"","sources":["../../../src/transports/acp/acp-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,oBAAoB,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;AAE9E,SAAS,kBAAkB,CACzB,MAAe,EACf,kBAAkB,GAAG,oBAAoB;IAEzC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;IAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;QACtD,CAAC,CAAC,OAAO,CAAC,eAAe;QACzB,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,cAAc,GAClB,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;QACxD,MAAM,EAAE,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QAClC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,SAAS,GAAG,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC;YACP,EAAE;YACF,KAAK,EAAE,EAAE,KAAK,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,YAAY,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAMrC;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC;IAC5C,OAAO,MAAM,IAAI,OAAO,CACtB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE;YACzC,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,SAAS,MAAM,CAAI,EAAsB,EAAE,KAAQ;YACjD,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,EAAE,CAAC,KAAK,CAAC,CAAC;QACZ,CAAC;QAED,SAAS,IAAI,CAAC,KAAY;YACxB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,CAAC,OAAO,EAAE,EAAE;YACjD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC,CAAC;gBACjE,OAAO;YACT,CAAC;YACD,IAAI,OAAO,CAAC,EAAE,KAAK,UAAU;gBAAE,OAAO;YACtC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACrB,UAAU,GAAG,CAAC,CAAC;gBACf,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE;oBACvB,OAAO,EAAE,KAAK;oBACd,EAAE,EAAE,CAAC;oBACL,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC;iBAC5C,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;YACjE,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,IAAI,KAAK,CAAC,uCAAuC,SAAS,IAAI,CAAC,CAAC,CAAC;QACxE,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE;YACvB,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,CAAC;YACL,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE;gBACN,UAAU,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE;gBACvD,eAAe,EAAE,CAAC;aACnB;SACF,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-permissions.d.ts","sourceRoot":"","sources":["../../../src/transports/acp/acp-permissions.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,KAAK,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAM,iBAQ1D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function choosePermissionOutcome(options = []) {
|
|
2
|
+
return (options.find((option) => option.optionId === "approve_for_session")?.optionId ??
|
|
3
|
+
options.find((option) => option.kind === "allow_always")?.optionId ??
|
|
4
|
+
options.find((option) => option.kind === "allow_once")?.optionId ??
|
|
5
|
+
null);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=acp-permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-permissions.js","sourceRoot":"","sources":["../../../src/transports/acp/acp-permissions.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,uBAAuB,CACrC,UAAuD,EAAE;IAEzD,OAAO,CACL,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,qBAAqB,CAAC,EAAE,QAAQ;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,QAAQ;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,QAAQ;QAChE,IAAI,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type LocalAgentMcpServerConfig } from "../../core/mcp.js";
|
|
2
|
+
import type { AcpSessionNewParams } from "./acp-types.js";
|
|
3
|
+
export declare function buildAcpSessionNewParams(cwd: string, options?: {
|
|
4
|
+
mcpServers?: LocalAgentMcpServerConfig[];
|
|
5
|
+
resume?: AcpSessionNewParams["resume"];
|
|
6
|
+
}): AcpSessionNewParams;
|
|
7
|
+
//# sourceMappingURL=acp-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-session.d.ts","sourceRoot":"","sources":["../../../src/transports/acp/acp-session.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACzC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;CACxC,GACA,mBAAmB,CAyBrB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { normalizeMcpServerConfigs } from "../../core/mcp.js";
|
|
3
|
+
export function buildAcpSessionNewParams(cwd, options) {
|
|
4
|
+
return {
|
|
5
|
+
cwd: path.resolve(cwd),
|
|
6
|
+
mcpServers: normalizeMcpServerConfigs(options?.mcpServers ?? []).map((server) => {
|
|
7
|
+
if (server.type === "http") {
|
|
8
|
+
return {
|
|
9
|
+
type: "http",
|
|
10
|
+
name: server.name,
|
|
11
|
+
url: server.url,
|
|
12
|
+
...(server.headers ? { headers: server.headers } : {}),
|
|
13
|
+
env: server.env,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
type: "stdio",
|
|
18
|
+
name: server.name,
|
|
19
|
+
command: server.command,
|
|
20
|
+
args: server.args ?? [],
|
|
21
|
+
env: server.env,
|
|
22
|
+
};
|
|
23
|
+
}),
|
|
24
|
+
...(options?.resume ? { resume: options.resume } : {}),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=acp-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-session.js","sourceRoot":"","sources":["../../../src/transports/acp/acp-session.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,yBAAyB,EAAkC,MAAM,mBAAmB,CAAC;AAG9F,MAAM,UAAU,wBAAwB,CACtC,GAAW,EACX,OAGC;IAED,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QACtB,UAAU,EAAE,yBAAyB,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAClE,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,OAAO;oBACL,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtD,GAAG,EAAE,MAAM,CAAC,GAAG;iBAChB,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;gBACvB,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC;QACJ,CAAC,CACF;QACD,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { LocalAgentMcpEnvEntry, NormalizedLocalAgentMcpHttpServerConfig, NormalizedLocalAgentMcpStdioServerConfig } from "../../core/mcp.js";
|
|
2
|
+
export type AcpSessionNewParams = {
|
|
3
|
+
cwd: string;
|
|
4
|
+
mcpServers: Array<(NormalizedLocalAgentMcpStdioServerConfig & {
|
|
5
|
+
type: "stdio";
|
|
6
|
+
env: LocalAgentMcpEnvEntry[];
|
|
7
|
+
}) | (NormalizedLocalAgentMcpHttpServerConfig & {
|
|
8
|
+
type: "http";
|
|
9
|
+
env: LocalAgentMcpEnvEntry[];
|
|
10
|
+
})>;
|
|
11
|
+
resume?: {
|
|
12
|
+
mode: "native" | "provider" | "fresh";
|
|
13
|
+
providerSessionId?: string;
|
|
14
|
+
resumeToken?: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export type JsonRpcEnvelope = {
|
|
18
|
+
id?: number | string;
|
|
19
|
+
jsonrpc: "2.0";
|
|
20
|
+
method?: string;
|
|
21
|
+
params?: unknown;
|
|
22
|
+
result?: unknown;
|
|
23
|
+
error?: {
|
|
24
|
+
code?: number;
|
|
25
|
+
message?: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=acp-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-types.d.ts","sourceRoot":"","sources":["../../../src/transports/acp/acp-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,uCAAuC,EACvC,wCAAwC,EACzC,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,KAAK,CACb,CAAC,wCAAwC,GAAG;QAC1C,IAAI,EAAE,OAAO,CAAC;QACd,GAAG,EAAE,qBAAqB,EAAE,CAAC;KAC9B,CAAC,GACF,CAAC,uCAAuC,GAAG;QACzC,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,qBAAqB,EAAE,CAAC;KAC9B,CAAC,CACL,CAAC;IACF,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;QACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-types.js","sourceRoot":"","sources":["../../../src/transports/acp/acp-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl-parser.d.ts","sourceRoot":"","sources":["../../../src/transports/jsonl/jsonl-parser.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,MAAM,EACtC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI;gBAYnC,MAAM;;EAcrB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export function createJsonlParser(onMessage) {
|
|
2
|
+
let buffer = "";
|
|
3
|
+
const feedLine = (line) => {
|
|
4
|
+
const trimmed = line.trim();
|
|
5
|
+
if (!trimmed)
|
|
6
|
+
return;
|
|
7
|
+
const parsed = JSON.parse(trimmed);
|
|
8
|
+
onMessage(parsed, trimmed);
|
|
9
|
+
};
|
|
10
|
+
return {
|
|
11
|
+
feed(chunk) {
|
|
12
|
+
buffer += chunk;
|
|
13
|
+
const lines = buffer.split("\n");
|
|
14
|
+
buffer = lines.pop() ?? "";
|
|
15
|
+
for (const line of lines) {
|
|
16
|
+
feedLine(line);
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
flush() {
|
|
20
|
+
if (!buffer.trim())
|
|
21
|
+
return;
|
|
22
|
+
feedLine(buffer);
|
|
23
|
+
buffer = "";
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=jsonl-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl-parser.js","sourceRoot":"","sources":["../../../src/transports/jsonl/jsonl-parser.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAC/B,SAAiD;IAEjD,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAW,CAAC;QAC7C,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,CAAC,KAAa;YAChB,MAAM,IAAI,KAAK,CAAC;YAChB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QACD,KAAK;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;gBAAE,OAAO;YAC3B,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,MAAM,GAAG,EAAE,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AgentEvent } from "../../core/events.js";
|
|
2
|
+
import type { ProviderLaunchPlan } from "../../core/provider-plugin.js";
|
|
3
|
+
export declare function runJsonlTransport<TItem>(plan: ProviderLaunchPlan, mapItem: (item: TItem) => AgentEvent[], signal?: AbortSignal): AsyncGenerator<AgentEvent>;
|
|
4
|
+
//# sourceMappingURL=jsonl-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl-transport.d.ts","sourceRoot":"","sources":["../../../src/transports/jsonl/jsonl-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAIxE,wBAAuB,iBAAiB,CAAC,KAAK,EAC5C,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,UAAU,EAAE,EACtC,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,UAAU,CAAC,CA8E5B"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { spawnSupervisedProcess } from "../../process/supervisor.js";
|
|
2
|
+
import { createJsonlParser } from "./jsonl-parser.js";
|
|
3
|
+
export async function* runJsonlTransport(plan, mapItem, signal) {
|
|
4
|
+
const processHandle = spawnSupervisedProcess({
|
|
5
|
+
...plan,
|
|
6
|
+
...(signal ? { signal } : {}),
|
|
7
|
+
});
|
|
8
|
+
const queue = [];
|
|
9
|
+
let done = false;
|
|
10
|
+
let transportError;
|
|
11
|
+
const parser = createJsonlParser((item) => {
|
|
12
|
+
queue.push(...mapItem(item));
|
|
13
|
+
});
|
|
14
|
+
processHandle.child.stdout.on("data", (chunk) => {
|
|
15
|
+
try {
|
|
16
|
+
parser.feed(chunk);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
transportError = error;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
void processHandle.waitForExit().then(({ code, signal, timedOut }) => {
|
|
23
|
+
try {
|
|
24
|
+
parser.flush();
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
transportError = error;
|
|
28
|
+
}
|
|
29
|
+
const canceled = signal != null;
|
|
30
|
+
if (timedOut) {
|
|
31
|
+
queue.push({
|
|
32
|
+
type: "error",
|
|
33
|
+
code: "process_timeout",
|
|
34
|
+
message: `Process timed out after ${plan.timeoutMs}ms.`,
|
|
35
|
+
});
|
|
36
|
+
queue.push({ type: "done", status: "failed", reason: "error", exitCode: code });
|
|
37
|
+
}
|
|
38
|
+
else if (canceled) {
|
|
39
|
+
queue.push({ type: "done", status: "canceled", reason: "cancelled", exitCode: code });
|
|
40
|
+
}
|
|
41
|
+
else if (transportError) {
|
|
42
|
+
queue.push({
|
|
43
|
+
type: "error",
|
|
44
|
+
code: "jsonl_parse_failed",
|
|
45
|
+
message: transportError instanceof Error
|
|
46
|
+
? transportError.message
|
|
47
|
+
: String(transportError),
|
|
48
|
+
});
|
|
49
|
+
queue.push({ type: "done", status: "failed", reason: "error", exitCode: code });
|
|
50
|
+
}
|
|
51
|
+
else if (code && code !== 0) {
|
|
52
|
+
const stderrTail = processHandle.stderr.tail().trim();
|
|
53
|
+
queue.push({
|
|
54
|
+
type: "error",
|
|
55
|
+
code: "process_exit_nonzero",
|
|
56
|
+
message: stderrTail.length > 0
|
|
57
|
+
? stderrTail
|
|
58
|
+
: `Process exited with code ${code}.`,
|
|
59
|
+
});
|
|
60
|
+
queue.push({ type: "done", status: "failed", reason: "error", exitCode: code });
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
queue.push({
|
|
64
|
+
type: "done",
|
|
65
|
+
status: code === 0 ? "completed" : "failed",
|
|
66
|
+
reason: code === 0 ? "completed" : "error",
|
|
67
|
+
exitCode: code,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
done = true;
|
|
71
|
+
});
|
|
72
|
+
while (!done || queue.length > 0) {
|
|
73
|
+
const next = queue.shift();
|
|
74
|
+
if (next) {
|
|
75
|
+
yield next;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=jsonl-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl-transport.js","sourceRoot":"","sources":["../../../src/transports/jsonl/jsonl-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AgentEvent } from "../../core/events.js";
|
|
2
|
+
import type { ProviderLaunchPlan } from "../../core/provider-plugin.js";
|
|
3
|
+
export declare function runPlainTransport(plan: ProviderLaunchPlan, signal?: AbortSignal): AsyncGenerator<AgentEvent>;
|
|
4
|
+
//# sourceMappingURL=plain-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-transport.d.ts","sourceRoot":"","sources":["../../../src/transports/plain/plain-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,wBAAuB,iBAAiB,CACtC,IAAI,EAAE,kBAAkB,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,UAAU,CAAC,CAqD5B"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { spawnSupervisedProcess } from "../../process/supervisor.js";
|
|
2
|
+
export async function* runPlainTransport(plan, signal) {
|
|
3
|
+
const processHandle = spawnSupervisedProcess({
|
|
4
|
+
...plan,
|
|
5
|
+
...(signal ? { signal } : {}),
|
|
6
|
+
});
|
|
7
|
+
const queue = [];
|
|
8
|
+
let done = false;
|
|
9
|
+
processHandle.child.stdout.on("data", (chunk) => {
|
|
10
|
+
queue.push({ type: "text_delta", text: chunk });
|
|
11
|
+
});
|
|
12
|
+
processHandle.child.stderr.on("data", (chunk) => {
|
|
13
|
+
queue.push({ type: "stderr", text: processHandle.stderr.redact(chunk) });
|
|
14
|
+
});
|
|
15
|
+
void processHandle.waitForExit().then(({ code, signal, timedOut }) => {
|
|
16
|
+
if (timedOut) {
|
|
17
|
+
queue.push({
|
|
18
|
+
type: "error",
|
|
19
|
+
code: "process_timeout",
|
|
20
|
+
message: `Process timed out after ${plan.timeoutMs}ms.`,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
else if (code && code !== 0) {
|
|
24
|
+
const stderrTail = processHandle.stderr.tail().trim();
|
|
25
|
+
queue.push({
|
|
26
|
+
type: "error",
|
|
27
|
+
code: "process_exit_nonzero",
|
|
28
|
+
message: stderrTail.length > 0
|
|
29
|
+
? stderrTail
|
|
30
|
+
: `Process exited with code ${code}.`,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const canceled = signal != null;
|
|
34
|
+
const failed = timedOut || (code != null && code !== 0);
|
|
35
|
+
queue.push({
|
|
36
|
+
type: "done",
|
|
37
|
+
status: canceled ? "canceled" : failed ? "failed" : "completed",
|
|
38
|
+
reason: canceled ? "cancelled" : failed ? "error" : "completed",
|
|
39
|
+
exitCode: code,
|
|
40
|
+
});
|
|
41
|
+
done = true;
|
|
42
|
+
});
|
|
43
|
+
while (!done || queue.length > 0) {
|
|
44
|
+
const next = queue.shift();
|
|
45
|
+
if (next) {
|
|
46
|
+
yield next;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=plain-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-transport.js","sourceRoot":"","sources":["../../../src/transports/plain/plain-transport.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tutti-os/agent-acp-kit",
|
|
3
|
+
"version": "0.1.10",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "ACP-oriented toolkit for detecting, launching, and streaming local coding agents.",
|
|
6
|
+
"packageManager": "pnpm@10.26.2",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./runtime-control-plane": {
|
|
15
|
+
"types": "./dist/runtime/control-plane.d.ts",
|
|
16
|
+
"import": "./dist/runtime/control-plane.js"
|
|
17
|
+
},
|
|
18
|
+
"./testing": {
|
|
19
|
+
"types": "./dist/testing/index.d.ts",
|
|
20
|
+
"import": "./dist/testing/index.js"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"assets",
|
|
25
|
+
"dist",
|
|
26
|
+
"README.md",
|
|
27
|
+
"AGENTS.md"
|
|
28
|
+
],
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"access": "public"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@anthropic-ai/claude-agent-sdk": "0.2.101",
|
|
34
|
+
"zod": "^4.0.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/node": "^22.13.10",
|
|
38
|
+
"typescript": "^5.7.3",
|
|
39
|
+
"vitest": "^3.2.4"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "rm -rf dist && tsc --build tsconfig.json --force",
|
|
43
|
+
"pack:check": "npm pack --dry-run",
|
|
44
|
+
"test": "vitest run tests",
|
|
45
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
46
|
+
}
|
|
47
|
+
}
|