@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.
Files changed (252) hide show
  1. package/AGENTS.md +176 -0
  2. package/README.md +428 -0
  3. package/assets/agent-acp-kit-architecture.png +0 -0
  4. package/dist/core/capabilities.d.ts +23 -0
  5. package/dist/core/capabilities.d.ts.map +1 -0
  6. package/dist/core/capabilities.js +2 -0
  7. package/dist/core/capabilities.js.map +1 -0
  8. package/dist/core/detection.d.ts +8 -0
  9. package/dist/core/detection.d.ts.map +1 -0
  10. package/dist/core/detection.js +2 -0
  11. package/dist/core/detection.js.map +1 -0
  12. package/dist/core/errors.d.ts +6 -0
  13. package/dist/core/errors.d.ts.map +1 -0
  14. package/dist/core/errors.js +9 -0
  15. package/dist/core/errors.js.map +1 -0
  16. package/dist/core/events.d.ts +51 -0
  17. package/dist/core/events.d.ts.map +1 -0
  18. package/dist/core/events.js +2 -0
  19. package/dist/core/events.js.map +1 -0
  20. package/dist/core/index.d.ts +14 -0
  21. package/dist/core/index.d.ts.map +1 -0
  22. package/dist/core/index.js +4 -0
  23. package/dist/core/index.js.map +1 -0
  24. package/dist/core/launch-plan.d.ts +22 -0
  25. package/dist/core/launch-plan.d.ts.map +1 -0
  26. package/dist/core/launch-plan.js +2 -0
  27. package/dist/core/launch-plan.js.map +1 -0
  28. package/dist/core/mcp.d.ts +31 -0
  29. package/dist/core/mcp.d.ts.map +1 -0
  30. package/dist/core/mcp.js +37 -0
  31. package/dist/core/mcp.js.map +1 -0
  32. package/dist/core/provider-plugin.d.ts +84 -0
  33. package/dist/core/provider-plugin.d.ts.map +1 -0
  34. package/dist/core/provider-plugin.js +2 -0
  35. package/dist/core/provider-plugin.js.map +1 -0
  36. package/dist/core/redaction.d.ts +2 -0
  37. package/dist/core/redaction.d.ts.map +1 -0
  38. package/dist/core/redaction.js +9 -0
  39. package/dist/core/redaction.js.map +1 -0
  40. package/dist/core/registry.d.ts +4 -0
  41. package/dist/core/registry.d.ts.map +1 -0
  42. package/dist/core/registry.js +10 -0
  43. package/dist/core/registry.js.map +1 -0
  44. package/dist/core/run-input.d.ts +30 -0
  45. package/dist/core/run-input.d.ts.map +1 -0
  46. package/dist/core/run-input.js +2 -0
  47. package/dist/core/run-input.js.map +1 -0
  48. package/dist/core/skills.d.ts +13 -0
  49. package/dist/core/skills.d.ts.map +1 -0
  50. package/dist/core/skills.js +2 -0
  51. package/dist/core/skills.js.map +1 -0
  52. package/dist/core/transport.d.ts +17 -0
  53. package/dist/core/transport.d.ts.map +1 -0
  54. package/dist/core/transport.js +2 -0
  55. package/dist/core/transport.js.map +1 -0
  56. package/dist/index.d.ts +13 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +9 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/process/cancellation.d.ts +7 -0
  61. package/dist/process/cancellation.d.ts.map +1 -0
  62. package/dist/process/cancellation.js +36 -0
  63. package/dist/process/cancellation.js.map +1 -0
  64. package/dist/process/command-resolver.d.ts +13 -0
  65. package/dist/process/command-resolver.d.ts.map +1 -0
  66. package/dist/process/command-resolver.js +63 -0
  67. package/dist/process/command-resolver.js.map +1 -0
  68. package/dist/process/env.d.ts +2 -0
  69. package/dist/process/env.d.ts.map +1 -0
  70. package/dist/process/env.js +7 -0
  71. package/dist/process/env.js.map +1 -0
  72. package/dist/process/stderr-buffer.d.ts +11 -0
  73. package/dist/process/stderr-buffer.d.ts.map +1 -0
  74. package/dist/process/stderr-buffer.js +23 -0
  75. package/dist/process/stderr-buffer.js.map +1 -0
  76. package/dist/process/supervisor.d.ts +27 -0
  77. package/dist/process/supervisor.d.ts.map +1 -0
  78. package/dist/process/supervisor.js +76 -0
  79. package/dist/process/supervisor.js.map +1 -0
  80. package/dist/providers/acp-presets/index.d.ts +3 -0
  81. package/dist/providers/acp-presets/index.d.ts.map +1 -0
  82. package/dist/providers/acp-presets/index.js +2 -0
  83. package/dist/providers/acp-presets/index.js.map +1 -0
  84. package/dist/providers/acp-presets/provider.d.ts +114 -0
  85. package/dist/providers/acp-presets/provider.d.ts.map +1 -0
  86. package/dist/providers/acp-presets/provider.js +172 -0
  87. package/dist/providers/acp-presets/provider.js.map +1 -0
  88. package/dist/providers/claude/detect.d.ts +35 -0
  89. package/dist/providers/claude/detect.d.ts.map +1 -0
  90. package/dist/providers/claude/detect.js +159 -0
  91. package/dist/providers/claude/detect.js.map +1 -0
  92. package/dist/providers/claude/index.d.ts +4 -0
  93. package/dist/providers/claude/index.d.ts.map +1 -0
  94. package/dist/providers/claude/index.js +206 -0
  95. package/dist/providers/claude/index.js.map +1 -0
  96. package/dist/providers/claude/launch-plan.d.ts +5 -0
  97. package/dist/providers/claude/launch-plan.d.ts.map +1 -0
  98. package/dist/providers/claude/launch-plan.js +38 -0
  99. package/dist/providers/claude/launch-plan.js.map +1 -0
  100. package/dist/providers/claude/parser.d.ts +3 -0
  101. package/dist/providers/claude/parser.d.ts.map +1 -0
  102. package/dist/providers/claude/parser.js +41 -0
  103. package/dist/providers/claude/parser.js.map +1 -0
  104. package/dist/providers/codex/detect.d.ts +31 -0
  105. package/dist/providers/codex/detect.d.ts.map +1 -0
  106. package/dist/providers/codex/detect.js +280 -0
  107. package/dist/providers/codex/detect.js.map +1 -0
  108. package/dist/providers/codex/index.d.ts +4 -0
  109. package/dist/providers/codex/index.d.ts.map +1 -0
  110. package/dist/providers/codex/index.js +383 -0
  111. package/dist/providers/codex/index.js.map +1 -0
  112. package/dist/providers/codex/launch-plan.d.ts +3 -0
  113. package/dist/providers/codex/launch-plan.d.ts.map +1 -0
  114. package/dist/providers/codex/launch-plan.js +40 -0
  115. package/dist/providers/codex/launch-plan.js.map +1 -0
  116. package/dist/providers/codex/parser.d.ts +32 -0
  117. package/dist/providers/codex/parser.d.ts.map +1 -0
  118. package/dist/providers/codex/parser.js +187 -0
  119. package/dist/providers/codex/parser.js.map +1 -0
  120. package/dist/providers/codex/reasoning.d.ts +2 -0
  121. package/dist/providers/codex/reasoning.d.ts.map +1 -0
  122. package/dist/providers/codex/reasoning.js +12 -0
  123. package/dist/providers/codex/reasoning.js.map +1 -0
  124. package/dist/providers/fake/index.d.ts +2 -0
  125. package/dist/providers/fake/index.d.ts.map +1 -0
  126. package/dist/providers/fake/index.js +2 -0
  127. package/dist/providers/fake/index.js.map +1 -0
  128. package/dist/providers/fake/provider.d.ts +8 -0
  129. package/dist/providers/fake/provider.d.ts.map +1 -0
  130. package/dist/providers/fake/provider.js +73 -0
  131. package/dist/providers/fake/provider.js.map +1 -0
  132. package/dist/providers/generic-acp/index.d.ts +2 -0
  133. package/dist/providers/generic-acp/index.d.ts.map +1 -0
  134. package/dist/providers/generic-acp/index.js +2 -0
  135. package/dist/providers/generic-acp/index.js.map +1 -0
  136. package/dist/providers/generic-acp/provider.d.ts +8 -0
  137. package/dist/providers/generic-acp/provider.d.ts.map +1 -0
  138. package/dist/providers/generic-acp/provider.js +93 -0
  139. package/dist/providers/generic-acp/provider.js.map +1 -0
  140. package/dist/providers/hermes/index.d.ts +2 -0
  141. package/dist/providers/hermes/index.d.ts.map +1 -0
  142. package/dist/providers/hermes/index.js +2 -0
  143. package/dist/providers/hermes/index.js.map +1 -0
  144. package/dist/providers/hermes/provider.d.ts +2 -0
  145. package/dist/providers/hermes/provider.d.ts.map +1 -0
  146. package/dist/providers/hermes/provider.js +2 -0
  147. package/dist/providers/hermes/provider.js.map +1 -0
  148. package/dist/providers/install.d.ts +87 -0
  149. package/dist/providers/install.d.ts.map +1 -0
  150. package/dist/providers/install.js +289 -0
  151. package/dist/providers/install.js.map +1 -0
  152. package/dist/providers/kimi/index.d.ts +2 -0
  153. package/dist/providers/kimi/index.d.ts.map +1 -0
  154. package/dist/providers/kimi/index.js +2 -0
  155. package/dist/providers/kimi/index.js.map +1 -0
  156. package/dist/providers/kimi/provider.d.ts +2 -0
  157. package/dist/providers/kimi/provider.d.ts.map +1 -0
  158. package/dist/providers/kimi/provider.js +2 -0
  159. package/dist/providers/kimi/provider.js.map +1 -0
  160. package/dist/providers/kiro/index.d.ts +2 -0
  161. package/dist/providers/kiro/index.d.ts.map +1 -0
  162. package/dist/providers/kiro/index.js +2 -0
  163. package/dist/providers/kiro/index.js.map +1 -0
  164. package/dist/providers/kiro/provider.d.ts +2 -0
  165. package/dist/providers/kiro/provider.d.ts.map +1 -0
  166. package/dist/providers/kiro/provider.js +2 -0
  167. package/dist/providers/kiro/provider.js.map +1 -0
  168. package/dist/runtime/control-plane.d.ts +4 -0
  169. package/dist/runtime/control-plane.d.ts.map +1 -0
  170. package/dist/runtime/control-plane.js +2 -0
  171. package/dist/runtime/control-plane.js.map +1 -0
  172. package/dist/runtime/create-runtime.d.ts +44 -0
  173. package/dist/runtime/create-runtime.d.ts.map +1 -0
  174. package/dist/runtime/create-runtime.js +445 -0
  175. package/dist/runtime/create-runtime.js.map +1 -0
  176. package/dist/runtime/detection-cache.d.ts +6 -0
  177. package/dist/runtime/detection-cache.d.ts.map +1 -0
  178. package/dist/runtime/detection-cache.js +15 -0
  179. package/dist/runtime/detection-cache.js.map +1 -0
  180. package/dist/runtime/provider-registry.d.ts +7 -0
  181. package/dist/runtime/provider-registry.d.ts.map +1 -0
  182. package/dist/runtime/provider-registry.js +19 -0
  183. package/dist/runtime/provider-registry.js.map +1 -0
  184. package/dist/skills/cleanup.d.ts +2 -0
  185. package/dist/skills/cleanup.d.ts.map +1 -0
  186. package/dist/skills/cleanup.js +5 -0
  187. package/dist/skills/cleanup.js.map +1 -0
  188. package/dist/skills/materialize.d.ts +3 -0
  189. package/dist/skills/materialize.d.ts.map +1 -0
  190. package/dist/skills/materialize.js +38 -0
  191. package/dist/skills/materialize.js.map +1 -0
  192. package/dist/skills/prompt-injection.d.ts +13 -0
  193. package/dist/skills/prompt-injection.d.ts.map +1 -0
  194. package/dist/skills/prompt-injection.js +34 -0
  195. package/dist/skills/prompt-injection.js.map +1 -0
  196. package/dist/testing/conformance.d.ts +12 -0
  197. package/dist/testing/conformance.d.ts.map +1 -0
  198. package/dist/testing/conformance.js +55 -0
  199. package/dist/testing/conformance.js.map +1 -0
  200. package/dist/testing/fake-acp-peer.d.ts +13 -0
  201. package/dist/testing/fake-acp-peer.d.ts.map +1 -0
  202. package/dist/testing/fake-acp-peer.js +72 -0
  203. package/dist/testing/fake-acp-peer.js.map +1 -0
  204. package/dist/testing/fake-provider.d.ts +8 -0
  205. package/dist/testing/fake-provider.d.ts.map +1 -0
  206. package/dist/testing/fake-provider.js +12 -0
  207. package/dist/testing/fake-provider.js.map +1 -0
  208. package/dist/testing/fixtures.d.ts +3 -0
  209. package/dist/testing/fixtures.d.ts.map +1 -0
  210. package/dist/testing/fixtures.js +6 -0
  211. package/dist/testing/fixtures.js.map +1 -0
  212. package/dist/testing/index.d.ts +6 -0
  213. package/dist/testing/index.d.ts.map +1 -0
  214. package/dist/testing/index.js +5 -0
  215. package/dist/testing/index.js.map +1 -0
  216. package/dist/transports/acp/acp-client.d.ts +4 -0
  217. package/dist/transports/acp/acp-client.d.ts.map +1 -0
  218. package/dist/transports/acp/acp-client.js +283 -0
  219. package/dist/transports/acp/acp-client.js.map +1 -0
  220. package/dist/transports/acp/acp-jsonrpc.d.ts +7 -0
  221. package/dist/transports/acp/acp-jsonrpc.d.ts.map +1 -0
  222. package/dist/transports/acp/acp-jsonrpc.js +27 -0
  223. package/dist/transports/acp/acp-jsonrpc.js.map +1 -0
  224. package/dist/transports/acp/acp-models.d.ts +11 -0
  225. package/dist/transports/acp/acp-models.d.ts.map +1 -0
  226. package/dist/transports/acp/acp-models.js +95 -0
  227. package/dist/transports/acp/acp-models.js.map +1 -0
  228. package/dist/transports/acp/acp-permissions.d.ts +5 -0
  229. package/dist/transports/acp/acp-permissions.d.ts.map +1 -0
  230. package/dist/transports/acp/acp-permissions.js +7 -0
  231. package/dist/transports/acp/acp-permissions.js.map +1 -0
  232. package/dist/transports/acp/acp-session.d.ts +7 -0
  233. package/dist/transports/acp/acp-session.d.ts.map +1 -0
  234. package/dist/transports/acp/acp-session.js +27 -0
  235. package/dist/transports/acp/acp-session.js.map +1 -0
  236. package/dist/transports/acp/acp-types.d.ts +28 -0
  237. package/dist/transports/acp/acp-types.d.ts.map +1 -0
  238. package/dist/transports/acp/acp-types.js +2 -0
  239. package/dist/transports/acp/acp-types.js.map +1 -0
  240. package/dist/transports/jsonl/jsonl-parser.d.ts +5 -0
  241. package/dist/transports/jsonl/jsonl-parser.d.ts.map +1 -0
  242. package/dist/transports/jsonl/jsonl-parser.js +27 -0
  243. package/dist/transports/jsonl/jsonl-parser.js.map +1 -0
  244. package/dist/transports/jsonl/jsonl-transport.d.ts +4 -0
  245. package/dist/transports/jsonl/jsonl-transport.d.ts.map +1 -0
  246. package/dist/transports/jsonl/jsonl-transport.js +81 -0
  247. package/dist/transports/jsonl/jsonl-transport.js.map +1 -0
  248. package/dist/transports/plain/plain-transport.d.ts +4 -0
  249. package/dist/transports/plain/plain-transport.d.ts.map +1 -0
  250. package/dist/transports/plain/plain-transport.js +52 -0
  251. package/dist/transports/plain/plain-transport.js.map +1 -0
  252. 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,11 @@
1
+ export declare function detectAcpModels(input: {
2
+ args: string[];
3
+ bin: string;
4
+ cwd: string;
5
+ env?: NodeJS.ProcessEnv;
6
+ timeoutMs?: number;
7
+ }): Promise<{
8
+ id: string;
9
+ label: string;
10
+ }[]>;
11
+ //# sourceMappingURL=acp-models.d.ts.map
@@ -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":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function choosePermissionOutcome(options?: Array<{
2
+ kind?: string;
3
+ optionId?: string;
4
+ }>): string | null;
5
+ //# sourceMappingURL=acp-permissions.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=acp-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-types.js","sourceRoot":"","sources":["../../../src/transports/acp/acp-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export declare function createJsonlParser<TEvent>(onMessage: (message: TEvent, raw: string) => void): {
2
+ feed(chunk: string): void;
3
+ flush(): void;
4
+ };
5
+ //# sourceMappingURL=jsonl-parser.d.ts.map
@@ -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":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,iBAAiB,CACtC,IAAwB,EACxB,OAAsC,EACtC,MAAoB;IAEpB,MAAM,aAAa,GAAG,sBAAsB,CAAC;QAC3C,GAAG,IAAI;QACP,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IAEH,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,cAAuB,CAAC;IAE5B,MAAM,MAAM,GAAG,iBAAiB,CAAQ,CAAC,IAAI,EAAE,EAAE;QAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QACnE,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,GAAG,KAAK,CAAC;QACzB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,IAAI,CAAC;QAChC,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,2BAA2B,IAAI,CAAC,SAAS,KAAK;aACxD,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EACL,cAAc,YAAY,KAAK;oBAC7B,CAAC,CAAC,cAAc,CAAC,OAAO;oBACxB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;aAC7B,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;aAAM,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EACL,UAAU,CAAC,MAAM,GAAG,CAAC;oBACnB,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,4BAA4B,IAAI,GAAG;aAC1C,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBAC3C,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO;gBAC1C,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;QACD,IAAI,GAAG,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,IAAI,CAAC;YACX,SAAS;QACX,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,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 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":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,iBAAiB,CACtC,IAAwB,EACxB,MAAoB;IAEpB,MAAM,aAAa,GAAG,sBAAsB,CAAC;QAC3C,GAAG,IAAI;QACP,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACtD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACtD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QACnE,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,2BAA2B,IAAI,CAAC,SAAS,KAAK;aACxD,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EACL,UAAU,CAAC,MAAM,GAAG,CAAC;oBACnB,CAAC,CAAC,UAAU;oBACd,CAAC,CAAC,4BAA4B,IAAI,GAAG;aACxC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,IAAI,CAAC;QAChC,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;YAC/D,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW;YAC/D,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,IAAI,GAAG,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,IAAI,CAAC;YACX,SAAS;QACX,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
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
+ }