@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,159 @@
1
+ import { execFile } from "node:child_process";
2
+ import { homedir } from "node:os";
3
+ import path from "node:path";
4
+ import { promisify } from "node:util";
5
+ import { resolveCommandExecutable } from "../../process/command-resolver.js";
6
+ const execFileAsync = promisify(execFile);
7
+ const CLAUDE_MODEL_DISCOVERY_TIMEOUT_MS = 8_000;
8
+ const CLAUDE_DEFAULT_MODELS = [
9
+ { id: "default", label: "Default (CLI config)" },
10
+ ];
11
+ function resolveClaudeConfigDir(env) {
12
+ const configured = env?.CLAUDE_CONFIG_DIR?.trim();
13
+ return configured || path.join(homedir(), ".claude");
14
+ }
15
+ async function* idleClaudePrompt() {
16
+ await new Promise(() => {
17
+ // Keep streaming input open until the SDK initialization response is read.
18
+ });
19
+ }
20
+ function normalizeClaudeSdkModels(sdkModels) {
21
+ const models = Array.isArray(sdkModels) ? sdkModels : [];
22
+ const normalized = [];
23
+ const seen = new Set();
24
+ function append(model) {
25
+ if (!model.id || seen.has(model.id))
26
+ return;
27
+ seen.add(model.id);
28
+ normalized.push(model);
29
+ }
30
+ for (const entry of models) {
31
+ if (!entry || typeof entry !== "object" || Array.isArray(entry))
32
+ continue;
33
+ const record = entry;
34
+ const id = typeof record.value === "string" && record.value.trim()
35
+ ? record.value.trim()
36
+ : undefined;
37
+ if (!id)
38
+ continue;
39
+ const label = typeof record.displayName === "string" && record.displayName.trim()
40
+ ? record.displayName.trim()
41
+ : id;
42
+ const description = typeof record.description === "string" && record.description.trim()
43
+ ? record.description.trim()
44
+ : undefined;
45
+ append({
46
+ id,
47
+ label,
48
+ ...(description ? { description } : {}),
49
+ });
50
+ }
51
+ if (!seen.has("default")) {
52
+ normalized.unshift(CLAUDE_DEFAULT_MODELS[0]);
53
+ }
54
+ return normalized.length > 0 ? normalized : CLAUDE_DEFAULT_MODELS;
55
+ }
56
+ async function withTimeout(promise, timeoutMs) {
57
+ let timer;
58
+ try {
59
+ return await Promise.race([
60
+ promise,
61
+ new Promise((_, reject) => {
62
+ timer = setTimeout(() => reject(new Error("Claude SDK model discovery timed out.")), timeoutMs);
63
+ }),
64
+ ]);
65
+ }
66
+ finally {
67
+ if (timer)
68
+ clearTimeout(timer);
69
+ }
70
+ }
71
+ async function discoverClaudeSdkModels(input) {
72
+ const sdk = await import("@anthropic-ai/claude-agent-sdk");
73
+ const queryHandle = sdk.query({
74
+ prompt: idleClaudePrompt(),
75
+ options: {
76
+ cwd: input.cwd,
77
+ env: input.env,
78
+ includePartialMessages: true,
79
+ pathToClaudeCodeExecutable: input.executablePath,
80
+ settingSources: ["user", "project", "local"],
81
+ },
82
+ });
83
+ try {
84
+ const models = await withTimeout(queryHandle.supportedModels(), CLAUDE_MODEL_DISCOVERY_TIMEOUT_MS);
85
+ return normalizeClaudeSdkModels(models);
86
+ }
87
+ finally {
88
+ queryHandle.close();
89
+ }
90
+ }
91
+ export async function detectClaude(options) {
92
+ const command = options?.command ?? "claude";
93
+ const configDir = resolveClaudeConfigDir(options?.env);
94
+ const fallbackModels = CLAUDE_DEFAULT_MODELS;
95
+ let executablePath;
96
+ try {
97
+ executablePath = await resolveCommandExecutable({
98
+ command,
99
+ ...(options?.env ? { env: options.env } : {}),
100
+ fallbackCommands: ["openclaude"],
101
+ ...(options?.overridePath ? { overridePath: options.overridePath } : {}),
102
+ });
103
+ }
104
+ catch (error) {
105
+ return {
106
+ authState: "missing",
107
+ configDir,
108
+ executablePath: command,
109
+ models: fallbackModels,
110
+ skillsDir: path.join(configDir, "skills"),
111
+ supported: false,
112
+ unsupportedReason: error instanceof Error
113
+ ? error.message
114
+ : "Executable not found on PATH: claude, openclaude",
115
+ version: "not-installed",
116
+ };
117
+ }
118
+ let stdout;
119
+ try {
120
+ ({ stdout } = await execFileAsync(executablePath, ["--version"], {
121
+ env: options?.env,
122
+ }));
123
+ }
124
+ catch (error) {
125
+ return {
126
+ authState: "unknown",
127
+ configDir,
128
+ executablePath,
129
+ models: fallbackModels,
130
+ skillsDir: path.join(configDir, "skills"),
131
+ supported: false,
132
+ unsupportedReason: error instanceof Error
133
+ ? `Unable to run ${command} --version: ${error.message}`
134
+ : `Unable to run ${command} --version`,
135
+ version: "unknown",
136
+ };
137
+ }
138
+ let models = fallbackModels;
139
+ try {
140
+ models = await discoverClaudeSdkModels({
141
+ cwd: options?.cwd ?? process.cwd(),
142
+ ...(options?.env ? { env: options.env } : {}),
143
+ executablePath,
144
+ });
145
+ }
146
+ catch {
147
+ models = fallbackModels;
148
+ }
149
+ return {
150
+ authState: "unknown",
151
+ configDir,
152
+ executablePath,
153
+ models,
154
+ skillsDir: path.join(configDir, "skills"),
155
+ supported: true,
156
+ version: stdout.trim() || "unknown",
157
+ };
158
+ }
159
+ //# sourceMappingURL=detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../../src/providers/claude/detect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { LocalAgentProviderPlugin } from "../../core/provider-plugin.js";
2
+ export declare function createClaudeProvider(): LocalAgentProviderPlugin<"local-agent", "claude">;
3
+ export declare const claudeProvider: LocalAgentProviderPlugin<"local-agent", "claude">;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AA8H9E,wBAAgB,oBAAoB,IAAI,wBAAwB,CAC9D,aAAa,EACb,QAAQ,CACT,CAsHA;AAED,eAAO,MAAM,cAAc,mDAAyB,CAAC"}
@@ -0,0 +1,206 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { normalizeMcpServerConfigs, } from "../../core/mcp.js";
4
+ import { materializeSkills } from "../../skills/materialize.js";
5
+ import { cleanupPaths } from "../../skills/cleanup.js";
6
+ import { composePromptWithSkills } from "../../skills/prompt-injection.js";
7
+ import { runJsonlTransport } from "../../transports/jsonl/jsonl-transport.js";
8
+ import { detectClaude } from "./detect.js";
9
+ import { buildClaudeLaunchPlan } from "./launch-plan.js";
10
+ import { parseClaudeStreamEvent } from "./parser.js";
11
+ async function* parseClaudeRawEvents(stream) {
12
+ let sessionId;
13
+ for await (const item of stream) {
14
+ const record = item && typeof item === "object" && !Array.isArray(item)
15
+ ? item
16
+ : undefined;
17
+ if (record?.type === "system" && record.subtype === "init") {
18
+ const candidate = record.session_id ?? record.sessionId;
19
+ if (typeof candidate === "string" && candidate.trim()) {
20
+ sessionId = candidate;
21
+ }
22
+ }
23
+ if (item && typeof item === "object" && "type" in item) {
24
+ const candidate = item;
25
+ if (candidate.type === "done" && sessionId && !candidate.sessionId) {
26
+ yield { ...candidate, sessionId };
27
+ continue;
28
+ }
29
+ if (candidate.type === "done" ||
30
+ candidate.type === "error" ||
31
+ candidate.type === "status" ||
32
+ candidate.type === "text_delta" ||
33
+ candidate.type === "thinking_delta" ||
34
+ candidate.type === "tool_call" ||
35
+ candidate.type === "tool_result") {
36
+ yield candidate;
37
+ continue;
38
+ }
39
+ }
40
+ yield* parseClaudeStreamEvent(item);
41
+ }
42
+ }
43
+ function envEntriesToObject(env) {
44
+ return Object.fromEntries(env.map((entry) => [entry.key, entry.value]));
45
+ }
46
+ function buildClaudeMcpConfig(servers) {
47
+ const mcpServers = {};
48
+ for (const server of servers) {
49
+ if (server.type === "http") {
50
+ mcpServers[server.name] = {
51
+ type: "http",
52
+ url: server.url,
53
+ ...(server.headers ? { headers: server.headers } : {}),
54
+ ...(server.env.length > 0 ? { env: envEntriesToObject(server.env) } : {}),
55
+ };
56
+ continue;
57
+ }
58
+ mcpServers[server.name] = {
59
+ type: "stdio",
60
+ command: server.command,
61
+ ...(server.args ? { args: server.args } : {}),
62
+ ...(server.env.length > 0 ? { env: envEntriesToObject(server.env) } : {}),
63
+ };
64
+ }
65
+ return { mcpServers };
66
+ }
67
+ function collectMcpRedactionSecrets(servers) {
68
+ const secrets = [];
69
+ for (const server of servers) {
70
+ for (const entry of server.env) {
71
+ secrets.push(entry.value);
72
+ }
73
+ if (server.type === "http" && server.headers) {
74
+ secrets.push(...Object.values(server.headers));
75
+ }
76
+ }
77
+ return secrets.filter((secret) => secret.length > 0);
78
+ }
79
+ async function materializeClaudeMcpConfig(params) {
80
+ const normalizedServers = normalizeMcpServerConfigs(params.mcpServers ?? []);
81
+ if (normalizedServers.length === 0) {
82
+ return {
83
+ cleanupTargets: [],
84
+ redactionSecrets: [],
85
+ };
86
+ }
87
+ const configDir = join(params.cwd, ".local-agent", "claude");
88
+ await mkdir(configDir, { recursive: true });
89
+ const configPath = join(configDir, `${params.runId}-mcp.json`);
90
+ await writeFile(configPath, JSON.stringify(buildClaudeMcpConfig(normalizedServers)), "utf8");
91
+ return {
92
+ cleanupTargets: [configPath],
93
+ mcpConfigPath: configPath,
94
+ redactionSecrets: collectMcpRedactionSecrets(normalizedServers),
95
+ };
96
+ }
97
+ export function createClaudeProvider() {
98
+ const cleanupByRunId = new Map();
99
+ async function prepareLaunchPlan(params) {
100
+ const materialized = await materializeSkills(params.cwd, params.skillManifest ?? []);
101
+ const prompt = composePromptWithSkills({
102
+ prompt: params.prompt,
103
+ ...(params.history ? { history: params.history } : {}),
104
+ skills: materialized,
105
+ ...(params.systemPrompt ? { systemPrompt: params.systemPrompt } : {}),
106
+ });
107
+ const cleanupTargets = materialized
108
+ .map((skill) => skill.materializedPath)
109
+ .filter((path) => Boolean(path));
110
+ const mcpConfig = await materializeClaudeMcpConfig({
111
+ cwd: params.cwd,
112
+ ...(params.mcpServers ? { mcpServers: params.mcpServers } : {}),
113
+ runId: params.runId,
114
+ });
115
+ const allCleanupTargets = [
116
+ ...cleanupTargets,
117
+ ...mcpConfig.cleanupTargets,
118
+ ];
119
+ if (allCleanupTargets.length > 0) {
120
+ cleanupByRunId.set(params.runId, allCleanupTargets);
121
+ }
122
+ return {
123
+ ...buildClaudeLaunchPlan({
124
+ ...params,
125
+ prompt,
126
+ }, "claude", mcpConfig.mcpConfigPath
127
+ ? { mcpConfigPath: mcpConfig.mcpConfigPath }
128
+ : undefined),
129
+ ...(mcpConfig.redactionSecrets.length > 0
130
+ ? { redactionSecrets: mcpConfig.redactionSecrets }
131
+ : {}),
132
+ };
133
+ }
134
+ async function cleanupRun(runId) {
135
+ const cleanupTargets = cleanupByRunId.get(runId) ?? [];
136
+ cleanupByRunId.delete(runId);
137
+ await cleanupPaths(cleanupTargets);
138
+ }
139
+ const plugin = {
140
+ id: "claude",
141
+ displayName: "Claude Code",
142
+ kind: "local-agent",
143
+ async detect() {
144
+ return detectClaude();
145
+ },
146
+ capabilities() {
147
+ return {
148
+ cancel: true,
149
+ nativeResume: true,
150
+ streaming: true,
151
+ toolGateway: true,
152
+ maxConcurrentRuns: Number.MAX_SAFE_INTEGER,
153
+ };
154
+ },
155
+ async buildLaunchPlan(params) {
156
+ return {
157
+ ...(await prepareLaunchPlan(params)),
158
+ ...(params.model ? { model: params.model } : {}),
159
+ runId: params.runId,
160
+ transport: "jsonl",
161
+ };
162
+ },
163
+ createAdapter() {
164
+ let adapterRunId;
165
+ return {
166
+ buildLaunchPlan: async (params) => {
167
+ adapterRunId = params.runId;
168
+ return {
169
+ ...(await prepareLaunchPlan(params)),
170
+ ...(params.model ? { model: params.model } : {}),
171
+ runId: params.runId,
172
+ transport: "jsonl",
173
+ };
174
+ },
175
+ capabilities: () => plugin.capabilities(),
176
+ parseEvents: async function* (stream) {
177
+ try {
178
+ yield* parseClaudeRawEvents(stream);
179
+ }
180
+ finally {
181
+ if (adapterRunId) {
182
+ await cleanupRun(adapterRunId);
183
+ }
184
+ }
185
+ },
186
+ };
187
+ },
188
+ async *run(params) {
189
+ const plan = {
190
+ ...(await prepareLaunchPlan(params)),
191
+ ...(params.model ? { model: params.model } : {}),
192
+ runId: params.runId,
193
+ transport: "jsonl",
194
+ };
195
+ try {
196
+ yield* runJsonlTransport(plan, parseClaudeStreamEvent, params.signal);
197
+ }
198
+ finally {
199
+ await cleanupRun(params.runId);
200
+ }
201
+ },
202
+ };
203
+ return plugin;
204
+ }
205
+ export const claudeProvider = createClaudeProvider();
206
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/claude/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { AgentRunParams, ProviderLaunchPlan } from "../../core/provider-plugin.js";
2
+ export declare function buildClaudeLaunchPlan(params: AgentRunParams<"local-agent", "claude">, executablePath?: string, options?: {
3
+ mcpConfigPath?: string;
4
+ }): ProviderLaunchPlan;
5
+ //# sourceMappingURL=launch-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch-plan.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/launch-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAcxF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,EAC/C,cAAc,SAAW,EACzB,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACnC,kBAAkB,CAyBpB"}
@@ -0,0 +1,38 @@
1
+ function normalizeClaudeModel(model) {
2
+ if (model?.startsWith("claude:"))
3
+ return model.slice("claude:".length);
4
+ return model;
5
+ }
6
+ function resolveProviderResumeId(resume) {
7
+ if (!resume || resume.mode === "fresh")
8
+ return undefined;
9
+ return (resume.providerSessionId ?? resume.resumeToken)?.trim() || undefined;
10
+ }
11
+ export function buildClaudeLaunchPlan(params, executablePath = "claude", options) {
12
+ const args = ["-p", "--output-format", "stream-json", "--verbose"];
13
+ const model = normalizeClaudeModel(params.model);
14
+ if (model && model !== "default") {
15
+ args.push("--model", model);
16
+ }
17
+ const resumeId = resolveProviderResumeId(params.resume);
18
+ if (resumeId) {
19
+ args.push("--resume", resumeId);
20
+ }
21
+ if (options?.mcpConfigPath) {
22
+ args.push("--mcp-config", options.mcpConfigPath, "--strict-mcp-config");
23
+ }
24
+ for (const dir of params.extraAllowedDirs ?? []) {
25
+ if (dir)
26
+ args.push("--add-dir", dir);
27
+ }
28
+ args.push("--permission-mode", "bypassPermissions");
29
+ return {
30
+ args,
31
+ command: executablePath,
32
+ cwd: params.cwd,
33
+ ...(params.env ? { env: params.env } : {}),
34
+ prompt: params.prompt,
35
+ promptInput: "stdin",
36
+ };
37
+ }
38
+ //# sourceMappingURL=launch-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch-plan.js","sourceRoot":"","sources":["../../../src/providers/claude/launch-plan.ts"],"names":[],"mappings":"AAEA,SAAS,oBAAoB,CAAC,KAAyB;IACrD,IAAI,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAAyD;IAEzD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACzD,OAAO,CAAC,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAA+C,EAC/C,cAAc,GAAG,QAAQ,EACzB,OAAoC;IAEpC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;QAChD,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IACpD,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,cAAc;QACvB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,OAAO;KACrB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AgentEvent } from "../../core/events.js";
2
+ export declare function parseClaudeStreamEvent(item: Record<string, unknown>): AgentEvent[];
3
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,UAAU,EAAE,CAuCd"}
@@ -0,0 +1,41 @@
1
+ export function parseClaudeStreamEvent(item) {
2
+ const type = typeof item.type === "string" ? item.type : "";
3
+ if (type === "assistant" && typeof item.text === "string") {
4
+ return [{ type: "text_delta", text: item.text }];
5
+ }
6
+ if (type === "thinking" && typeof item.text === "string") {
7
+ return [{ type: "thinking", text: item.text }];
8
+ }
9
+ if (type === "tool_use") {
10
+ return [
11
+ {
12
+ type: "tool_call",
13
+ id: String(item.id ?? ""),
14
+ name: String(item.name ?? "tool"),
15
+ input: item.input,
16
+ },
17
+ ];
18
+ }
19
+ if (type === "tool_result") {
20
+ return [
21
+ {
22
+ type: "tool_result",
23
+ id: String(item.id ?? ""),
24
+ name: String(item.name ?? "tool"),
25
+ output: item.output,
26
+ status: "completed",
27
+ },
28
+ ];
29
+ }
30
+ if (type === "error") {
31
+ return [
32
+ {
33
+ type: "error",
34
+ code: "claude_error",
35
+ message: String(item.message ?? "Claude run failed"),
36
+ },
37
+ ];
38
+ }
39
+ return [];
40
+ }
41
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/providers/claude/parser.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CACpC,IAA6B;IAE7B,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,IAAI,IAAI,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO;YACL;gBACE,IAAI,EAAE,WAAW;gBACjB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;gBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB;SACF,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,OAAO;YACL;gBACE,IAAI,EAAE,aAAa;gBACnB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;gBACjC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,WAAW;aACpB;SACF,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO;YACL;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,mBAAmB,CAAC;aACrD;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { AgentModelOption } from "../../core/provider-plugin.js";
2
+ export declare function discoverCodexModels(options: {
3
+ env?: NodeJS.ProcessEnv;
4
+ executablePath: string;
5
+ }): Promise<AgentModelOption[]>;
6
+ export declare function detectCodex(options?: {
7
+ command?: string;
8
+ env?: NodeJS.ProcessEnv;
9
+ minimumVersion?: string;
10
+ overridePath?: string;
11
+ }): Promise<{
12
+ authState: "missing";
13
+ configDir: string;
14
+ executablePath: string;
15
+ models: AgentModelOption[];
16
+ skillsDir: string;
17
+ supported: boolean;
18
+ unsupportedReason: string;
19
+ version: string;
20
+ } | {
21
+ version: string;
22
+ unsupportedReason?: string | undefined;
23
+ minimumVersion?: string | undefined;
24
+ authState: "unknown";
25
+ configDir: string;
26
+ executablePath: string;
27
+ models: AgentModelOption[];
28
+ skillsDir: string;
29
+ supported: boolean;
30
+ }>;
31
+ //# sourceMappingURL=detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../src/providers/codex/detect.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAsOtE,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB,+BAgBA;AAED,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;;;;;;;;;;;;;;;;;;;GAoEA"}