@geminilight/mindos 1.0.10 → 1.1.3

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 (209) hide show
  1. package/README_zh.md +3 -3
  2. package/bin/mindos-shim.cjs +318 -7
  3. package/dist/agent/prompts.d.ts +1 -1
  4. package/dist/agent/prompts.d.ts.map +1 -1
  5. package/dist/agent/prompts.js +14 -0
  6. package/dist/agent/prompts.js.map +1 -1
  7. package/dist/agent-runtime/claude-code-cli.d.ts +34 -0
  8. package/dist/agent-runtime/claude-code-cli.d.ts.map +1 -0
  9. package/dist/agent-runtime/claude-code-cli.js +259 -0
  10. package/dist/agent-runtime/claude-code-cli.js.map +1 -0
  11. package/dist/agent-runtime/claude-code-sdk.d.ts +41 -0
  12. package/dist/agent-runtime/claude-code-sdk.d.ts.map +1 -0
  13. package/dist/agent-runtime/claude-code-sdk.js +553 -0
  14. package/dist/agent-runtime/claude-code-sdk.js.map +1 -0
  15. package/dist/agent-runtime/codex-app-server.d.ts +154 -0
  16. package/dist/agent-runtime/codex-app-server.d.ts.map +1 -0
  17. package/dist/agent-runtime/codex-app-server.js +628 -0
  18. package/dist/agent-runtime/codex-app-server.js.map +1 -0
  19. package/dist/agent-runtime/codex-env.d.ts +41 -0
  20. package/dist/agent-runtime/codex-env.d.ts.map +1 -0
  21. package/dist/agent-runtime/codex-env.js +278 -0
  22. package/dist/agent-runtime/codex-env.js.map +1 -0
  23. package/dist/agent-runtime/index.d.ts +7 -0
  24. package/dist/agent-runtime/index.d.ts.map +1 -0
  25. package/dist/agent-runtime/index.js +7 -0
  26. package/dist/agent-runtime/index.js.map +1 -0
  27. package/dist/agent-runtime/run.d.ts +111 -0
  28. package/dist/agent-runtime/run.d.ts.map +1 -0
  29. package/dist/agent-runtime/run.js +681 -0
  30. package/dist/agent-runtime/run.js.map +1 -0
  31. package/dist/agent-runtime/runtime-env.d.ts +28 -0
  32. package/dist/agent-runtime/runtime-env.d.ts.map +1 -0
  33. package/dist/agent-runtime/runtime-env.js +66 -0
  34. package/dist/agent-runtime/runtime-env.js.map +1 -0
  35. package/dist/agent-runtime.d.ts +2 -0
  36. package/dist/agent-runtime.d.ts.map +1 -0
  37. package/dist/agent-runtime.js +2 -0
  38. package/dist/agent-runtime.js.map +1 -0
  39. package/dist/client.d.ts +8 -1
  40. package/dist/client.d.ts.map +1 -1
  41. package/dist/client.js.map +1 -1
  42. package/dist/foundation/config/schema.d.ts +30 -141
  43. package/dist/foundation/config/schema.d.ts.map +1 -1
  44. package/dist/foundation/config/schema.js +18 -4
  45. package/dist/foundation/config/schema.js.map +1 -1
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/knowledge/audit/index.d.ts +4 -0
  51. package/dist/knowledge/audit/index.d.ts.map +1 -1
  52. package/dist/knowledge/audit/index.js +92 -8
  53. package/dist/knowledge/audit/index.js.map +1 -1
  54. package/dist/knowledge/git/index.d.ts.map +1 -1
  55. package/dist/knowledge/git/index.js +43 -2
  56. package/dist/knowledge/git/index.js.map +1 -1
  57. package/dist/protocols/acp/agent-descriptors.d.ts.map +1 -1
  58. package/dist/protocols/acp/agent-descriptors.js +7 -4
  59. package/dist/protocols/acp/agent-descriptors.js.map +1 -1
  60. package/dist/protocols/acp/index.js +39 -28
  61. package/dist/protocols/acp/session.d.ts.map +1 -1
  62. package/dist/protocols/acp/session.js +11 -14
  63. package/dist/protocols/acp/session.js.map +1 -1
  64. package/dist/protocols/acp/subprocess.d.ts +4 -1
  65. package/dist/protocols/acp/subprocess.d.ts.map +1 -1
  66. package/dist/protocols/acp/subprocess.js +37 -10
  67. package/dist/protocols/acp/subprocess.js.map +1 -1
  68. package/dist/protocols/mcp-server/index.cjs +80 -68
  69. package/dist/server/channel-contract.d.ts +13 -0
  70. package/dist/server/channel-contract.d.ts.map +1 -0
  71. package/dist/server/channel-contract.js +115 -0
  72. package/dist/server/channel-contract.js.map +1 -0
  73. package/dist/server/contract.d.ts.map +1 -1
  74. package/dist/server/contract.js +12 -0
  75. package/dist/server/contract.js.map +1 -1
  76. package/dist/server/handlers/a2a.d.ts +7 -0
  77. package/dist/server/handlers/a2a.d.ts.map +1 -1
  78. package/dist/server/handlers/a2a.js +5 -1
  79. package/dist/server/handlers/a2a.js.map +1 -1
  80. package/dist/server/handlers/agent-capabilities.d.ts +60 -0
  81. package/dist/server/handlers/agent-capabilities.d.ts.map +1 -0
  82. package/dist/server/handlers/agent-capabilities.js +178 -0
  83. package/dist/server/handlers/agent-capabilities.js.map +1 -0
  84. package/dist/server/handlers/agent-runtime-codex.d.ts +29 -0
  85. package/dist/server/handlers/agent-runtime-codex.d.ts.map +1 -0
  86. package/dist/server/handlers/agent-runtime-codex.js +198 -0
  87. package/dist/server/handlers/agent-runtime-codex.js.map +1 -0
  88. package/dist/server/handlers/agent-runtimes.d.ts +136 -0
  89. package/dist/server/handlers/agent-runtimes.d.ts.map +1 -0
  90. package/dist/server/handlers/agent-runtimes.js +712 -0
  91. package/dist/server/handlers/agent-runtimes.js.map +1 -0
  92. package/dist/server/handlers/agents.d.ts +6 -0
  93. package/dist/server/handlers/agents.d.ts.map +1 -1
  94. package/dist/server/handlers/agents.js +41 -6
  95. package/dist/server/handlers/agents.js.map +1 -1
  96. package/dist/server/handlers/ask.d.ts +18 -0
  97. package/dist/server/handlers/ask.d.ts.map +1 -1
  98. package/dist/server/handlers/ask.js +70 -0
  99. package/dist/server/handlers/ask.js.map +1 -1
  100. package/dist/server/handlers/channels-verify.d.ts +1 -1
  101. package/dist/server/handlers/channels-verify.d.ts.map +1 -1
  102. package/dist/server/handlers/channels-verify.js +1 -63
  103. package/dist/server/handlers/channels-verify.js.map +1 -1
  104. package/dist/server/handlers/extract-docx.d.ts +42 -0
  105. package/dist/server/handlers/extract-docx.d.ts.map +1 -0
  106. package/dist/server/handlers/extract-docx.js +101 -0
  107. package/dist/server/handlers/extract-docx.js.map +1 -0
  108. package/dist/server/handlers/extract-pdf.d.ts +32 -0
  109. package/dist/server/handlers/extract-pdf.d.ts.map +1 -0
  110. package/dist/server/handlers/extract-pdf.js +116 -0
  111. package/dist/server/handlers/extract-pdf.js.map +1 -0
  112. package/dist/server/handlers/im-activity.d.ts.map +1 -1
  113. package/dist/server/handlers/im-activity.js +26 -1
  114. package/dist/server/handlers/im-activity.js.map +1 -1
  115. package/dist/server/handlers/im-config.d.ts +1 -1
  116. package/dist/server/handlers/im-config.d.ts.map +1 -1
  117. package/dist/server/handlers/im-config.js +69 -59
  118. package/dist/server/handlers/im-config.js.map +1 -1
  119. package/dist/server/handlers/im-feishu-oauth.d.ts +55 -0
  120. package/dist/server/handlers/im-feishu-oauth.d.ts.map +1 -0
  121. package/dist/server/handlers/im-feishu-oauth.js +218 -0
  122. package/dist/server/handlers/im-feishu-oauth.js.map +1 -0
  123. package/dist/server/handlers/im-status.d.ts +15 -0
  124. package/dist/server/handlers/im-status.d.ts.map +1 -1
  125. package/dist/server/handlers/im-status.js +41 -24
  126. package/dist/server/handlers/im-status.js.map +1 -1
  127. package/dist/server/handlers/inbox-source.d.ts +18 -0
  128. package/dist/server/handlers/inbox-source.d.ts.map +1 -0
  129. package/dist/server/handlers/inbox-source.js +108 -0
  130. package/dist/server/handlers/inbox-source.js.map +1 -0
  131. package/dist/server/handlers/inbox.d.ts +2 -0
  132. package/dist/server/handlers/inbox.d.ts.map +1 -1
  133. package/dist/server/handlers/inbox.js +34 -2
  134. package/dist/server/handlers/inbox.js.map +1 -1
  135. package/dist/server/handlers/mcp-agents.d.ts +16 -1
  136. package/dist/server/handlers/mcp-agents.d.ts.map +1 -1
  137. package/dist/server/handlers/mcp-agents.js +174 -44
  138. package/dist/server/handlers/mcp-agents.js.map +1 -1
  139. package/dist/server/handlers/mcp-install.d.ts +5 -0
  140. package/dist/server/handlers/mcp-install.d.ts.map +1 -1
  141. package/dist/server/handlers/mcp-install.js +68 -20
  142. package/dist/server/handlers/mcp-install.js.map +1 -1
  143. package/dist/server/handlers/mcp-restart.js +1 -1
  144. package/dist/server/handlers/mcp-restart.js.map +1 -1
  145. package/dist/server/handlers/mcp-status.d.ts +7 -1
  146. package/dist/server/handlers/mcp-status.d.ts.map +1 -1
  147. package/dist/server/handlers/mcp-status.js +14 -1
  148. package/dist/server/handlers/mcp-status.js.map +1 -1
  149. package/dist/server/handlers/settings-list-models.d.ts +1 -1
  150. package/dist/server/handlers/settings-list-models.d.ts.map +1 -1
  151. package/dist/server/handlers/settings-list-models.js +6 -5
  152. package/dist/server/handlers/settings-list-models.js.map +1 -1
  153. package/dist/server/handlers/settings-test-key.d.ts.map +1 -1
  154. package/dist/server/handlers/settings-test-key.js +17 -7
  155. package/dist/server/handlers/settings-test-key.js.map +1 -1
  156. package/dist/server/handlers/settings.d.ts +5 -1
  157. package/dist/server/handlers/settings.d.ts.map +1 -1
  158. package/dist/server/handlers/settings.js +54 -5
  159. package/dist/server/handlers/settings.js.map +1 -1
  160. package/dist/server/handlers/skills.d.ts +1 -0
  161. package/dist/server/handlers/skills.d.ts.map +1 -1
  162. package/dist/server/handlers/skills.js +7 -5
  163. package/dist/server/handlers/skills.js.map +1 -1
  164. package/dist/server/handlers/sync.d.ts +15 -4
  165. package/dist/server/handlers/sync.d.ts.map +1 -1
  166. package/dist/server/handlers/sync.js +552 -81
  167. package/dist/server/handlers/sync.js.map +1 -1
  168. package/dist/server/handlers/uninstall.js +1 -0
  169. package/dist/server/handlers/uninstall.js.map +1 -1
  170. package/dist/server/handlers/update.js +1 -0
  171. package/dist/server/handlers/update.js.map +1 -1
  172. package/dist/server/http.d.ts +20 -0
  173. package/dist/server/http.d.ts.map +1 -1
  174. package/dist/server/http.js +228 -25
  175. package/dist/server/http.js.map +1 -1
  176. package/dist/server/index.d.ts +14 -5
  177. package/dist/server/index.d.ts.map +1 -1
  178. package/dist/server/index.js +11 -2
  179. package/dist/server/index.js.map +1 -1
  180. package/dist/server/mcp-agent-registry.d.ts +184 -0
  181. package/dist/server/mcp-agent-registry.d.ts.map +1 -1
  182. package/dist/server/mcp-agent-registry.js +100 -9
  183. package/dist/server/mcp-agent-registry.js.map +1 -1
  184. package/dist/server/provider-settings.d.ts +38 -0
  185. package/dist/server/provider-settings.d.ts.map +1 -0
  186. package/dist/server/provider-settings.js +286 -0
  187. package/dist/server/provider-settings.js.map +1 -0
  188. package/dist/server/route-ownership.d.ts.map +1 -1
  189. package/dist/server/route-ownership.js +18 -2
  190. package/dist/server/route-ownership.js.map +1 -1
  191. package/dist/server/runtime.d.ts +1 -0
  192. package/dist/server/runtime.d.ts.map +1 -1
  193. package/dist/server/runtime.js.map +1 -1
  194. package/dist/session/index.d.ts +96 -15
  195. package/dist/session/index.d.ts.map +1 -1
  196. package/dist/session/index.js +162 -30
  197. package/dist/session/index.js.map +1 -1
  198. package/dist/session/pi-coding-agent-runtime.js +3 -3
  199. package/dist/session/pi-coding-agent-runtime.js.map +1 -1
  200. package/dist/session/redaction.d.ts +3 -0
  201. package/dist/session/redaction.d.ts.map +1 -0
  202. package/dist/session/redaction.js +47 -0
  203. package/dist/session/redaction.js.map +1 -0
  204. package/dist/setup/index.d.ts +1 -0
  205. package/dist/setup/index.d.ts.map +1 -1
  206. package/dist/setup/index.js +13 -0
  207. package/dist/setup/index.js.map +1 -1
  208. package/package.json +18 -12
  209. package/src/cli.js +1 -0
@@ -0,0 +1,553 @@
1
+ import { redactSensitiveText, sanitizeToolArgs, sanitizeToolOutput, } from '../session/index.js';
2
+ import { existsSync } from 'node:fs';
3
+ import { createRequire } from 'node:module';
4
+ export const CLAUDE_CODE_SDK_BINARY_SENTINEL = 'sdk:@anthropic-ai/claude-agent-sdk';
5
+ const requireFromHere = createRequire(import.meta.url);
6
+ export async function loadClaudeCodeSdkModule() {
7
+ return import('@anthropic-ai/claude-agent-sdk');
8
+ }
9
+ export function resolveClaudeCodeSdkNativeBinaryPath(input = {}) {
10
+ const platform = input.platform ?? process.platform;
11
+ const arch = input.arch ?? process.arch;
12
+ const isMusl = input.isMusl ?? isMuslRuntime(platform);
13
+ const candidates = claudeCodeSdkNativeBinaryCandidates(platform, arch, isMusl);
14
+ const requireResolve = input.requireResolve ?? createClaudeCodeSdkPackageRequireResolve();
15
+ const exists = input.exists ?? existsSync;
16
+ const platformKey = platform === 'linux' && isMusl ? `${platform}-${arch}-musl` : `${platform}-${arch}`;
17
+ if (candidates.length === 0) {
18
+ return {
19
+ platformKey,
20
+ candidates,
21
+ reason: `Claude Agent SDK does not publish a native CLI binary for ${platformKey}.`,
22
+ };
23
+ }
24
+ for (const candidate of candidates) {
25
+ try {
26
+ const resolved = requireResolve(candidate);
27
+ if (exists(resolved)) {
28
+ return { platformKey, candidates, path: resolved };
29
+ }
30
+ }
31
+ catch {
32
+ // Try the next platform package candidate.
33
+ }
34
+ }
35
+ return {
36
+ platformKey,
37
+ candidates,
38
+ reason: `Claude Agent SDK native CLI binary for ${platformKey} was not found. Install the local Claude Code CLI or pass options.pathToClaudeCodeExecutable.`,
39
+ };
40
+ }
41
+ function createClaudeCodeSdkPackageRequireResolve() {
42
+ try {
43
+ const sdkUrl = import.meta.resolve('@anthropic-ai/claude-agent-sdk');
44
+ const requireFromSdk = createRequire(sdkUrl);
45
+ return requireFromSdk.resolve.bind(requireFromSdk);
46
+ }
47
+ catch {
48
+ return requireFromHere.resolve.bind(requireFromHere);
49
+ }
50
+ }
51
+ export function isClaudeCodeSdkNativeBinaryError(error) {
52
+ const message = error instanceof Error ? error.message : String(error ?? '');
53
+ return /Native CLI binary for .+ not found/i.test(message)
54
+ || /Claude Code native binary .*not found/i.test(message)
55
+ || /pathToClaudeCodeExecutable/i.test(message);
56
+ }
57
+ function claudeCodeSdkNativeBinaryCandidates(platform, arch, isMusl) {
58
+ if (arch !== 'x64' && arch !== 'arm64')
59
+ return [];
60
+ const suffix = platform === 'win32' ? '/claude.exe' : '/claude';
61
+ if (platform === 'darwin')
62
+ return [`@anthropic-ai/claude-agent-sdk-darwin-${arch}${suffix}`];
63
+ if (platform === 'win32')
64
+ return [`@anthropic-ai/claude-agent-sdk-win32-${arch}${suffix}`];
65
+ if (platform === 'linux') {
66
+ const glibc = `@anthropic-ai/claude-agent-sdk-linux-${arch}${suffix}`;
67
+ const musl = `@anthropic-ai/claude-agent-sdk-linux-${arch}-musl${suffix}`;
68
+ return isMusl ? [musl, glibc] : [glibc, musl];
69
+ }
70
+ return [];
71
+ }
72
+ function isMuslRuntime(platform) {
73
+ if (platform !== 'linux')
74
+ return false;
75
+ try {
76
+ const report = typeof process.report?.getReport === 'function'
77
+ ? process.report.getReport()
78
+ : null;
79
+ const header = report && typeof report === 'object' && 'header' in report && report.header && typeof report.header === 'object'
80
+ ? report.header
81
+ : undefined;
82
+ return header?.glibcVersionRuntime === undefined;
83
+ }
84
+ catch {
85
+ return false;
86
+ }
87
+ }
88
+ export function createClaudeCodeSdkClient(services) {
89
+ let queryHandle = null;
90
+ return {
91
+ async *startTurn(input) {
92
+ const state = { emittedText: false, emittedDone: false };
93
+ let lastSessionId = null;
94
+ queryHandle = services.sdk.query({
95
+ prompt: input.prompt,
96
+ options: {
97
+ cwd: input.cwd,
98
+ outputFormat: 'stream-json',
99
+ permissionMode: input.permissionMode ?? 'default',
100
+ ...(services.pathToClaudeCodeExecutable ? { pathToClaudeCodeExecutable: services.pathToClaudeCodeExecutable } : {}),
101
+ ...(services.env ? { env: services.env } : {}),
102
+ ...(input.sessionId ? { resume: input.sessionId } : {}),
103
+ canUseTool: createClaudeCodeSdkPermissionHandler(services),
104
+ },
105
+ });
106
+ const abort = () => {
107
+ void queryHandle?.interrupt?.().catch(() => { });
108
+ queryHandle?.close?.();
109
+ };
110
+ input.signal?.addEventListener('abort', abort, { once: true });
111
+ const queryIterator = queryHandle[Symbol.asyncIterator]();
112
+ let completed = false;
113
+ try {
114
+ while (true) {
115
+ const next = await nextClaudeSdkQueryMessage(queryIterator, input.signal);
116
+ if (next.done) {
117
+ completed = true;
118
+ break;
119
+ }
120
+ const message = next.value;
121
+ const sessionId = getStringField(message, 'session_id');
122
+ if (sessionId && sessionId !== lastSessionId) {
123
+ lastSessionId = sessionId;
124
+ yield { type: 'session_id', sessionId };
125
+ }
126
+ for (const event of mapClaudeCodeSdkMessageToSseEvents(message, state)) {
127
+ yield event;
128
+ }
129
+ }
130
+ if (!state.emittedDone) {
131
+ yield { type: 'done' };
132
+ }
133
+ }
134
+ finally {
135
+ input.signal?.removeEventListener('abort', abort);
136
+ if (!completed) {
137
+ settleClaudeSdkIteratorReturn(queryIterator);
138
+ }
139
+ }
140
+ },
141
+ close() {
142
+ queryHandle?.close?.();
143
+ },
144
+ };
145
+ }
146
+ function claudeSdkAbortError(signal) {
147
+ const reason = signal.reason;
148
+ if (reason instanceof Error)
149
+ return reason;
150
+ return new Error(reason ? String(reason) : 'Claude Agent SDK query aborted.');
151
+ }
152
+ function throwIfClaudeSdkAborted(signal) {
153
+ if (signal?.aborted) {
154
+ throw claudeSdkAbortError(signal);
155
+ }
156
+ }
157
+ function settleClaudeSdkIteratorReturn(iterator) {
158
+ const result = iterator.return?.();
159
+ if (result && typeof result.then === 'function') {
160
+ void Promise.resolve(result).catch(() => { });
161
+ }
162
+ }
163
+ async function nextClaudeSdkQueryMessage(iterator, signal) {
164
+ throwIfClaudeSdkAborted(signal);
165
+ const nextPromise = Promise.resolve(iterator.next());
166
+ nextPromise.catch(() => { });
167
+ if (!signal)
168
+ return nextPromise;
169
+ let removeAbortListener = () => { };
170
+ const abortPromise = new Promise((_resolve, reject) => {
171
+ const abort = () => reject(claudeSdkAbortError(signal));
172
+ removeAbortListener = () => signal.removeEventListener('abort', abort);
173
+ signal.addEventListener('abort', abort, { once: true });
174
+ });
175
+ try {
176
+ return await Promise.race([nextPromise, abortPromise]);
177
+ }
178
+ catch (error) {
179
+ if (signal.aborted)
180
+ throw claudeSdkAbortError(signal);
181
+ throw error;
182
+ }
183
+ finally {
184
+ removeAbortListener();
185
+ }
186
+ }
187
+ function createClaudeCodeSdkPermissionHandler(services) {
188
+ return async (toolName, input, options) => {
189
+ if (isAskUserQuestionToolName(toolName)) {
190
+ const result = services.requestUserQuestion
191
+ ? await services.requestUserQuestion(buildClaudeSdkUserQuestionRequest(toolName, input, options), { signal: options.signal })
192
+ : { answers: [], cancelled: true, error: 'no_bridge' };
193
+ return claudeSdkAskUserQuestionPermissionResult(input, result, options.toolUseID);
194
+ }
195
+ const permissionRequest = buildClaudeSdkPermissionRequest(toolName, input, options);
196
+ const result = services.requestRuntimePermission
197
+ ? await services.requestRuntimePermission(permissionRequest, { signal: options.signal })
198
+ : { decision: 'cancel', cancelled: true };
199
+ return claudeSdkPermissionResult(result, input, options);
200
+ };
201
+ }
202
+ function buildClaudeSdkPermissionRequest(toolName, input, options) {
203
+ const hasSessionSuggestion = Array.isArray(options.suggestions) && options.suggestions.length > 0;
204
+ return {
205
+ runtime: 'claude',
206
+ toolCallId: options.toolUseID,
207
+ toolName,
208
+ input: {
209
+ ...input,
210
+ ...(options.agentID ? { agentID: options.agentID } : {}),
211
+ ...(options.blockedPath ? { blockedPath: options.blockedPath } : {}),
212
+ ...(options.displayName ? { displayName: options.displayName } : {}),
213
+ ...(options.description ? { description: options.description } : {}),
214
+ },
215
+ reason: options.title ?? options.description ?? options.decisionReason,
216
+ options: [
217
+ { id: 'accept', label: 'Allow once', description: 'Run this action one time.', intent: 'allow' },
218
+ ...(hasSessionSuggestion ? [{
219
+ id: 'acceptForSession',
220
+ label: 'Allow for session',
221
+ description: 'Allow matching Claude Code actions for the rest of this session.',
222
+ intent: 'allow',
223
+ }] : []),
224
+ { id: 'decline', label: 'Deny', description: 'Reject this action.', intent: 'deny' },
225
+ ],
226
+ };
227
+ }
228
+ function claudeSdkPermissionResult(result, input, options) {
229
+ if (result.cancelled || result.decision === 'cancel' || result.decision === 'decline') {
230
+ return {
231
+ behavior: 'deny',
232
+ message: 'Denied in MindOS.',
233
+ toolUseID: options.toolUseID,
234
+ decisionClassification: 'user_reject',
235
+ };
236
+ }
237
+ return {
238
+ behavior: 'allow',
239
+ updatedInput: input,
240
+ toolUseID: options.toolUseID,
241
+ decisionClassification: result.decision === 'acceptForSession' ? 'user_permanent' : 'user_temporary',
242
+ ...(result.decision === 'acceptForSession' && Array.isArray(options.suggestions) && options.suggestions.length > 0
243
+ ? { updatedPermissions: options.suggestions }
244
+ : {}),
245
+ };
246
+ }
247
+ function buildClaudeSdkUserQuestionRequest(toolName, input, options) {
248
+ const questions = normalizeClaudeSdkUserQuestions(input);
249
+ return {
250
+ runtime: 'claude',
251
+ toolCallId: options.toolUseID,
252
+ questions: questions.length > 0 ? questions : [{
253
+ header: options.title ?? 'Claude Code question',
254
+ question: options.description ?? 'Claude Code needs your input to continue.',
255
+ options: [
256
+ { label: 'Continue', description: 'Continue this Claude Code run.' },
257
+ { label: 'Cancel', description: 'Cancel this request.' },
258
+ ],
259
+ }],
260
+ };
261
+ }
262
+ function claudeSdkAskUserQuestionPermissionResult(input, result, toolUseID) {
263
+ if (result.cancelled || result.error) {
264
+ return {
265
+ behavior: 'deny',
266
+ message: result.error ?? 'The user did not answer the questions.',
267
+ toolUseID,
268
+ decisionClassification: 'user_reject',
269
+ };
270
+ }
271
+ const questions = normalizeClaudeSdkUserQuestions(input);
272
+ const answers = answersByQuestion(questions, result.answers);
273
+ if (Object.keys(answers).length === 0) {
274
+ return {
275
+ behavior: 'deny',
276
+ message: 'The user did not answer the questions.',
277
+ toolUseID,
278
+ decisionClassification: 'user_reject',
279
+ };
280
+ }
281
+ return {
282
+ behavior: 'allow',
283
+ updatedInput: {
284
+ questions,
285
+ answers,
286
+ },
287
+ toolUseID,
288
+ decisionClassification: 'user_temporary',
289
+ };
290
+ }
291
+ function normalizeClaudeSdkUserQuestions(input) {
292
+ const rawQuestions = Array.isArray(input.questions)
293
+ ? input.questions
294
+ : isRecord(input.input) && Array.isArray(input.input.questions)
295
+ ? input.input.questions
296
+ : [];
297
+ return rawQuestions.filter(isRecord).map((question, index) => ({
298
+ question: getStringField(question, 'question')
299
+ ?? getStringField(question, 'text')
300
+ ?? getStringField(question, 'message')
301
+ ?? `Question ${index + 1}`,
302
+ header: getStringField(question, 'header')
303
+ ?? getStringField(question, 'title')
304
+ ?? `Question ${index + 1}`,
305
+ multiSelect: question.multiSelect === true || question.multiselect === true,
306
+ options: normalizeClaudeSdkUserQuestionOptions(question.options),
307
+ }));
308
+ }
309
+ function normalizeClaudeSdkUserQuestionOptions(value) {
310
+ if (!Array.isArray(value))
311
+ return [];
312
+ return value.flatMap((option) => {
313
+ if (typeof option === 'string' && option.trim()) {
314
+ return [{ label: option, description: option }];
315
+ }
316
+ if (!isRecord(option))
317
+ return [];
318
+ const label = getStringField(option, 'label')
319
+ ?? getStringField(option, 'value')
320
+ ?? getStringField(option, 'title');
321
+ if (!label)
322
+ return [];
323
+ return [{
324
+ label,
325
+ description: getStringField(option, 'description') ?? getStringField(option, 'hint') ?? label,
326
+ ...(getStringField(option, 'preview') ? { preview: getStringField(option, 'preview') } : {}),
327
+ }];
328
+ });
329
+ }
330
+ function answersByQuestion(questions, answers) {
331
+ const output = {};
332
+ for (const answer of answers) {
333
+ const question = questions[answer.questionIndex];
334
+ const questionText = question?.question ?? answer.question;
335
+ if (!questionText)
336
+ continue;
337
+ if (Array.isArray(answer.selected) && answer.selected.length > 0) {
338
+ output[questionText] = answer.selected;
339
+ continue;
340
+ }
341
+ if (typeof answer.answer === 'string' && answer.answer.trim()) {
342
+ output[questionText] = answer.answer;
343
+ continue;
344
+ }
345
+ if (typeof answer.notes === 'string' && answer.notes.trim()) {
346
+ output[questionText] = answer.notes;
347
+ }
348
+ }
349
+ return output;
350
+ }
351
+ function mapClaudeCodeSdkMessageToSseEvents(message, state) {
352
+ if (message.type === 'assistant' || message.type === 'user') {
353
+ return contentBlocksFromRecord(message).flatMap((block) => mapClaudeContentBlock(block, state));
354
+ }
355
+ if (message.type === 'system' && message.subtype === 'api_retry') {
356
+ return mapClaudeApiRetryRecord(message);
357
+ }
358
+ if (message.type === 'system' && message.subtype === 'permission_denied') {
359
+ return mapClaudePermissionDeniedRecord(message);
360
+ }
361
+ if (message.type === 'system' && message.subtype === 'status') {
362
+ return mapClaudeStatusRecord(message);
363
+ }
364
+ if (message.type === 'rate_limit_event') {
365
+ return mapClaudeRateLimitRecord(message);
366
+ }
367
+ if (message.type === 'tool_progress') {
368
+ const toolName = getStringField(message, 'tool_name') ?? 'tool';
369
+ const elapsed = getNumberField(message, 'elapsed_time_seconds');
370
+ return [{
371
+ type: 'status',
372
+ visible: true,
373
+ runtime: 'claude',
374
+ message: elapsed !== undefined
375
+ ? `Claude Code is still running ${toolName} (${Math.round(elapsed)}s).`
376
+ : `Claude Code is still running ${toolName}.`,
377
+ }];
378
+ }
379
+ if (message.type === 'result') {
380
+ state.emittedDone = true;
381
+ if (message.is_error === true || message.subtype !== 'success') {
382
+ return [{ type: 'error', message: redactSensitiveText(getResultErrorText(message) || 'Claude Code turn failed') }];
383
+ }
384
+ const resultText = getStringField(message, 'result');
385
+ return [
386
+ ...(!state.emittedText && resultText ? [{ type: 'text_delta', delta: resultText }] : []),
387
+ { type: 'done' },
388
+ ];
389
+ }
390
+ return [];
391
+ }
392
+ function mapClaudeApiRetryRecord(record) {
393
+ const attempt = getNumberField(record, 'attempt');
394
+ const maxRetries = getNumberField(record, 'max_retries');
395
+ const retryDelayMs = getNumberField(record, 'retry_delay_ms');
396
+ const errorStatus = getNumberField(record, 'error_status');
397
+ const error = getStringField(record, 'error');
398
+ const retrySeconds = retryDelayMs !== undefined ? Math.max(1, Math.round(retryDelayMs / 1000)) : null;
399
+ const attemptText = attempt !== undefined && maxRetries !== undefined
400
+ ? ` (${attempt}/${maxRetries})`
401
+ : '';
402
+ const statusText = errorStatus ? `HTTP ${errorStatus}` : (error ?? 'API request failed');
403
+ const delayText = retrySeconds ? ` Retrying in ${retrySeconds}s.` : ' Retrying.';
404
+ return [{
405
+ type: 'status',
406
+ visible: true,
407
+ runtime: 'claude',
408
+ message: `Claude Code ${statusText}; retrying${attemptText}.${delayText}`,
409
+ }];
410
+ }
411
+ function mapClaudeStatusRecord(record) {
412
+ const status = getStringField(record, 'status');
413
+ if (status === 'compacting') {
414
+ return [{ type: 'status', visible: true, runtime: 'claude', message: 'Claude Code is compacting context.' }];
415
+ }
416
+ if (status === 'requesting') {
417
+ return [{ type: 'status', visible: true, runtime: 'claude', message: 'Claude Code is contacting Claude.' }];
418
+ }
419
+ return [];
420
+ }
421
+ function mapClaudeRateLimitRecord(record) {
422
+ const info = isRecord(record.rate_limit_info) ? record.rate_limit_info : null;
423
+ const status = getStringField(info, 'status');
424
+ if (!status || status === 'allowed')
425
+ return [];
426
+ const reset = getNumberField(info, 'resetsAt');
427
+ const resetText = reset ? ` Resets ${new Date(reset).toLocaleString()}.` : '';
428
+ return [{
429
+ type: 'status',
430
+ visible: true,
431
+ runtime: 'claude',
432
+ message: `Claude Code rate limit is ${status.replace(/_/g, ' ')}.${resetText}`,
433
+ }];
434
+ }
435
+ function mapClaudePermissionDeniedRecord(record) {
436
+ const toolCallId = getStringField(record, 'tool_use_id')
437
+ ?? getStringField(record, 'toolUseID')
438
+ ?? getStringField(record, 'toolUseId')
439
+ ?? getStringField(record, 'tool_call_id')
440
+ ?? getStringField(record, 'id')
441
+ ?? `claude-permission-denied-${Date.now().toString(36)}`;
442
+ const toolName = getStringField(record, 'tool_name')
443
+ ?? getStringField(record, 'toolName')
444
+ ?? getStringField(record, 'name')
445
+ ?? 'permission_denied';
446
+ const message = getStringField(record, 'message')
447
+ ?? getStringField(record, 'reason')
448
+ ?? getStringField(record, 'decision_reason')
449
+ ?? 'Claude Code denied this tool call.';
450
+ return [
451
+ {
452
+ type: 'tool_start',
453
+ toolCallId,
454
+ toolName,
455
+ args: sanitizeToolArgs(toolName, {
456
+ ...(getStringField(record, 'decision_reason') ? { reason: getStringField(record, 'decision_reason') } : {}),
457
+ }),
458
+ runtime: 'claude',
459
+ },
460
+ {
461
+ type: 'tool_end',
462
+ toolCallId,
463
+ output: sanitizeToolOutput(message),
464
+ isError: true,
465
+ runtime: 'claude',
466
+ },
467
+ ];
468
+ }
469
+ function mapClaudeContentBlock(block, state) {
470
+ if (block.type === 'text') {
471
+ const text = getStringField(block, 'text');
472
+ if (!text)
473
+ return [];
474
+ state.emittedText = true;
475
+ return [{ type: 'text_delta', delta: text }];
476
+ }
477
+ if (block.type === 'thinking') {
478
+ const text = getStringField(block, 'thinking') ?? getStringField(block, 'text');
479
+ return text ? [{ type: 'thinking_delta', delta: text }] : [];
480
+ }
481
+ if (block.type === 'tool_use') {
482
+ const toolCallId = getStringField(block, 'id');
483
+ const toolName = getStringField(block, 'name');
484
+ if (!toolCallId || !toolName)
485
+ return [];
486
+ return [{
487
+ type: 'tool_start',
488
+ toolCallId,
489
+ toolName,
490
+ args: sanitizeToolArgs(toolName, block.input),
491
+ runtime: 'claude',
492
+ }];
493
+ }
494
+ if (block.type === 'tool_result') {
495
+ const toolCallId = getStringField(block, 'tool_use_id');
496
+ if (!toolCallId)
497
+ return [];
498
+ return [{
499
+ type: 'tool_end',
500
+ toolCallId,
501
+ output: sanitizeToolOutput(stringifyClaudeToolResult(block.content)),
502
+ isError: block.is_error === true,
503
+ runtime: 'claude',
504
+ }];
505
+ }
506
+ return [];
507
+ }
508
+ function contentBlocksFromRecord(record) {
509
+ const message = isRecord(record.message) ? record.message : null;
510
+ const content = Array.isArray(message?.content) ? message.content : record.content;
511
+ if (typeof content === 'string' && content) {
512
+ return [{ type: 'text', text: content }];
513
+ }
514
+ if (!Array.isArray(content))
515
+ return [];
516
+ return content.flatMap((item) => {
517
+ const block = isRecord(item) ? item : null;
518
+ return block ? [block] : [];
519
+ });
520
+ }
521
+ function stringifyClaudeToolResult(value) {
522
+ if (typeof value === 'string')
523
+ return value;
524
+ if (Array.isArray(value)) {
525
+ return value.map((item) => {
526
+ const block = isRecord(item) ? item : null;
527
+ return getStringField(block, 'text') ?? JSON.stringify(item);
528
+ }).join('\n');
529
+ }
530
+ return value === undefined ? '' : JSON.stringify(value);
531
+ }
532
+ function getResultErrorText(record) {
533
+ const errors = Array.isArray(record.errors)
534
+ ? record.errors.filter((item) => typeof item === 'string' && item.trim().length > 0)
535
+ : [];
536
+ return errors.join('\n') || getStringField(record, 'result') || getStringField(record, 'message') || '';
537
+ }
538
+ function isAskUserQuestionToolName(toolName) {
539
+ const shortName = toolName.split('__').pop() ?? toolName;
540
+ return shortName === 'AskUserQuestion';
541
+ }
542
+ function isRecord(value) {
543
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
544
+ }
545
+ function getStringField(record, field) {
546
+ const value = record?.[field];
547
+ return typeof value === 'string' && value ? value : undefined;
548
+ }
549
+ function getNumberField(record, field) {
550
+ const value = record?.[field];
551
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
552
+ }
553
+ //# sourceMappingURL=claude-code-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-sdk.js","sourceRoot":"","sources":["../../src/agent-runtime/claude-code-sdk.ts"],"names":[],"mappings":"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"}