@poping/yome 0.0.3 → 0.0.5

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 (168) hide show
  1. package/README.md +5 -7
  2. package/README.zh-CN.md +5 -7
  3. package/bin/yome-calwatch +0 -0
  4. package/dist/commands/mesh.d.ts +15 -0
  5. package/dist/commands/mesh.js +282 -0
  6. package/dist/commands/mesh.js.map +1 -0
  7. package/dist/context.js +6 -3
  8. package/dist/context.js.map +1 -1
  9. package/dist/daemon/calendarPermission.d.ts +10 -0
  10. package/dist/daemon/calendarPermission.js +68 -0
  11. package/dist/daemon/calendarPermission.js.map +1 -0
  12. package/dist/daemon/cronCli.d.ts +19 -0
  13. package/dist/daemon/cronCli.js +403 -0
  14. package/dist/daemon/cronCli.js.map +1 -0
  15. package/dist/daemon/envHint.d.ts +5 -0
  16. package/dist/daemon/envHint.js +139 -0
  17. package/dist/daemon/envHint.js.map +1 -0
  18. package/dist/daemon/humanCron.d.ts +1 -0
  19. package/dist/daemon/humanCron.js +72 -0
  20. package/dist/daemon/humanCron.js.map +1 -0
  21. package/dist/daemon/humanOnce.d.ts +1 -0
  22. package/dist/daemon/humanOnce.js +54 -0
  23. package/dist/daemon/humanOnce.js.map +1 -0
  24. package/dist/daemon/index.d.ts +5 -0
  25. package/dist/daemon/index.js +173 -0
  26. package/dist/daemon/index.js.map +1 -0
  27. package/dist/daemon/launchd.d.ts +7 -0
  28. package/dist/daemon/launchd.js +93 -0
  29. package/dist/daemon/launchd.js.map +1 -0
  30. package/dist/daemon/log.d.ts +17 -0
  31. package/dist/daemon/log.js +57 -0
  32. package/dist/daemon/log.js.map +1 -0
  33. package/dist/daemon/paths.d.ts +11 -0
  34. package/dist/daemon/paths.js +27 -0
  35. package/dist/daemon/paths.js.map +1 -0
  36. package/dist/daemon/runTaskEntry.d.ts +1 -0
  37. package/dist/daemon/runTaskEntry.js +67 -0
  38. package/dist/daemon/runTaskEntry.js.map +1 -0
  39. package/dist/daemon/runner.d.ts +21 -0
  40. package/dist/daemon/runner.js +175 -0
  41. package/dist/daemon/runner.js.map +1 -0
  42. package/dist/daemon/scheduler.d.ts +5 -0
  43. package/dist/daemon/scheduler.js +162 -0
  44. package/dist/daemon/scheduler.js.map +1 -0
  45. package/dist/daemon/systemd.d.ts +7 -0
  46. package/dist/daemon/systemd.js +87 -0
  47. package/dist/daemon/systemd.js.map +1 -0
  48. package/dist/daemon/taskStore.d.ts +62 -0
  49. package/dist/daemon/taskStore.js +88 -0
  50. package/dist/daemon/taskStore.js.map +1 -0
  51. package/dist/daemon/triggers/calendar.d.ts +8 -0
  52. package/dist/daemon/triggers/calendar.js +248 -0
  53. package/dist/daemon/triggers/calendar.js.map +1 -0
  54. package/dist/daemon/triggers/childRunner.d.ts +14 -0
  55. package/dist/daemon/triggers/childRunner.js +111 -0
  56. package/dist/daemon/triggers/childRunner.js.map +1 -0
  57. package/dist/daemon/triggers/cron.d.ts +14 -0
  58. package/dist/daemon/triggers/cron.js +91 -0
  59. package/dist/daemon/triggers/cron.js.map +1 -0
  60. package/dist/daemon/triggers/file.d.ts +7 -0
  61. package/dist/daemon/triggers/file.js +123 -0
  62. package/dist/daemon/triggers/file.js.map +1 -0
  63. package/dist/daemon/triggers/once.d.ts +10 -0
  64. package/dist/daemon/triggers/once.js +80 -0
  65. package/dist/daemon/triggers/once.js.map +1 -0
  66. package/dist/index.js +120 -9
  67. package/dist/index.js.map +1 -1
  68. package/dist/llm.d.ts +14 -2
  69. package/dist/llm.js +266 -201
  70. package/dist/llm.js.map +1 -1
  71. package/dist/mesh/capabilities.d.ts +6 -0
  72. package/dist/mesh/capabilities.js +66 -0
  73. package/dist/mesh/capabilities.js.map +1 -0
  74. package/dist/mesh/device-id.d.ts +28 -0
  75. package/dist/mesh/device-id.js +105 -0
  76. package/dist/mesh/device-id.js.map +1 -0
  77. package/dist/mesh/device-registrar.d.ts +33 -0
  78. package/dist/mesh/device-registrar.js +131 -0
  79. package/dist/mesh/device-registrar.js.map +1 -0
  80. package/dist/mesh/index.d.ts +28 -0
  81. package/dist/mesh/index.js +71 -0
  82. package/dist/mesh/index.js.map +1 -0
  83. package/dist/mesh/partykit-client.d.ts +43 -0
  84. package/dist/mesh/partykit-client.js +195 -0
  85. package/dist/mesh/partykit-client.js.map +1 -0
  86. package/dist/mesh/rpc-handler.d.ts +28 -0
  87. package/dist/mesh/rpc-handler.js +201 -0
  88. package/dist/mesh/rpc-handler.js.map +1 -0
  89. package/dist/mesh/thread-stream.d.ts +109 -0
  90. package/dist/mesh/thread-stream.js +110 -0
  91. package/dist/mesh/thread-stream.js.map +1 -0
  92. package/dist/mesh/ticket.d.ts +33 -0
  93. package/dist/mesh/ticket.js +127 -0
  94. package/dist/mesh/ticket.js.map +1 -0
  95. package/dist/mesh/types.d.ts +83 -0
  96. package/dist/mesh/types.js +9 -0
  97. package/dist/mesh/types.js.map +1 -0
  98. package/dist/skills/runner/dispatcher.d.ts +74 -3
  99. package/dist/skills/runner/dispatcher.js +258 -48
  100. package/dist/skills/runner/dispatcher.js.map +1 -1
  101. package/dist/skills/runner/dispatcher.test.d.ts +1 -0
  102. package/dist/skills/runner/dispatcher.test.js +141 -0
  103. package/dist/skills/runner/dispatcher.test.js.map +1 -0
  104. package/dist/skills/runner/kernel.js +0 -1
  105. package/dist/skills/runner/kernel.js.map +1 -1
  106. package/dist/skills/runner/nodeBackend.d.ts +32 -0
  107. package/dist/skills/runner/nodeBackend.js +147 -0
  108. package/dist/skills/runner/nodeBackend.js.map +1 -0
  109. package/dist/state/todos.d.ts +12 -0
  110. package/dist/state/todos.js +32 -0
  111. package/dist/state/todos.js.map +1 -0
  112. package/dist/tools/askUser.d.ts +20 -0
  113. package/dist/tools/askUser.js +126 -0
  114. package/dist/tools/askUser.js.map +1 -0
  115. package/dist/tools/bash.js +13 -19
  116. package/dist/tools/bash.js.map +1 -1
  117. package/dist/tools/index.d.ts +2 -0
  118. package/dist/tools/index.js +18 -5
  119. package/dist/tools/index.js.map +1 -1
  120. package/dist/tools/todoWrite.d.ts +2 -0
  121. package/dist/tools/todoWrite.js +141 -0
  122. package/dist/tools/todoWrite.js.map +1 -0
  123. package/dist/tools/yome.d.ts +2 -0
  124. package/dist/tools/yome.js +87 -0
  125. package/dist/tools/yome.js.map +1 -0
  126. package/dist/ui/App.js +52 -3
  127. package/dist/ui/App.js.map +1 -1
  128. package/dist/ui/AskUserPrompt.d.ts +7 -0
  129. package/dist/ui/AskUserPrompt.js +78 -0
  130. package/dist/ui/AskUserPrompt.js.map +1 -0
  131. package/dist/ui/InputBar.js +20 -34
  132. package/dist/ui/InputBar.js.map +1 -1
  133. package/dist/ui/MeshApp.d.ts +9 -0
  134. package/dist/ui/MeshApp.js +226 -0
  135. package/dist/ui/MeshApp.js.map +1 -0
  136. package/dist/ui/MessageList.d.ts +8 -0
  137. package/dist/ui/MessageList.js +2 -2
  138. package/dist/ui/MessageList.js.map +1 -1
  139. package/dist/ui/MultilineTextInput.d.ts +31 -0
  140. package/dist/ui/MultilineTextInput.js +393 -0
  141. package/dist/ui/MultilineTextInput.js.map +1 -0
  142. package/dist/ui/MultilineTextInput.test.d.ts +1 -0
  143. package/dist/ui/MultilineTextInput.test.js +30 -0
  144. package/dist/ui/MultilineTextInput.test.js.map +1 -0
  145. package/dist/ui/TodoPanel.d.ts +7 -0
  146. package/dist/ui/TodoPanel.js +36 -0
  147. package/dist/ui/TodoPanel.js.map +1 -0
  148. package/dist/withRetry.d.ts +14 -0
  149. package/dist/withRetry.js +106 -0
  150. package/dist/withRetry.js.map +1 -0
  151. package/dist/yomeSkills/cli.d.ts +8 -0
  152. package/dist/yomeSkills/cli.js +155 -8
  153. package/dist/yomeSkills/cli.js.map +1 -1
  154. package/dist/yomeSkills/deprecate.d.ts +29 -0
  155. package/dist/yomeSkills/deprecate.js +99 -0
  156. package/dist/yomeSkills/deprecate.js.map +1 -0
  157. package/dist/yomeSkills/installFromHubTarball.d.ts +26 -0
  158. package/dist/yomeSkills/installFromHubTarball.js +161 -0
  159. package/dist/yomeSkills/installFromHubTarball.js.map +1 -0
  160. package/dist/yomeSkills/installGithub.d.ts +7 -0
  161. package/dist/yomeSkills/installGithub.js +42 -21
  162. package/dist/yomeSkills/installGithub.js.map +1 -1
  163. package/dist/yomeSkills/invoke.js +50 -18
  164. package/dist/yomeSkills/invoke.js.map +1 -1
  165. package/dist/yomeSkills/publish.d.ts +2 -0
  166. package/dist/yomeSkills/publish.js +6 -1
  167. package/dist/yomeSkills/publish.js.map +1 -1
  168. package/package.json +13 -3
package/dist/llm.js CHANGED
@@ -1,5 +1,55 @@
1
- const MAX_RETRIES = 3;
2
- const RETRY_DELAYS = [1000, 3000, 8000];
1
+ import { withRetry } from './withRetry.js';
2
+ // Abort the stream when no SSE chunks have arrived for this long. Without
3
+ // this a silently half-closed TCP connection from the upstream gateway can
4
+ // hang the CLI indefinitely. Override via YOME_STREAM_IDLE_MS.
5
+ const STREAM_IDLE_MS = parseInt(process.env.YOME_STREAM_IDLE_MS ?? '', 10) || 60_000;
6
+ const STREAM_WARN_MS = Math.max(5_000, Math.floor(STREAM_IDLE_MS / 2));
7
+ class StreamIdleTimeoutError extends Error {
8
+ constructor(ms) {
9
+ super(`Stream idle timeout: no chunks received for ${Math.round(ms / 1000)}s`);
10
+ this.name = 'StreamIdleTimeoutError';
11
+ }
12
+ }
13
+ function createIdleWatchdog(outerSignal) {
14
+ const ctrl = new AbortController();
15
+ let idleTimer = null;
16
+ let warnTimer = null;
17
+ const clear = () => {
18
+ if (idleTimer) {
19
+ clearTimeout(idleTimer);
20
+ idleTimer = null;
21
+ }
22
+ if (warnTimer) {
23
+ clearTimeout(warnTimer);
24
+ warnTimer = null;
25
+ }
26
+ };
27
+ const reset = () => {
28
+ clear();
29
+ warnTimer = setTimeout(() => {
30
+ console.warn(`[yome-llm] stream idle warning: no chunks for ${STREAM_WARN_MS / 1000}s`);
31
+ }, STREAM_WARN_MS);
32
+ idleTimer = setTimeout(() => {
33
+ ctrl.abort(new StreamIdleTimeoutError(STREAM_IDLE_MS));
34
+ }, STREAM_IDLE_MS);
35
+ };
36
+ const onOuterAbort = () => ctrl.abort(outerSignal?.reason ?? new Error('aborted'));
37
+ if (outerSignal) {
38
+ if (outerSignal.aborted)
39
+ ctrl.abort(outerSignal.reason);
40
+ else
41
+ outerSignal.addEventListener('abort', onOuterAbort, { once: true });
42
+ }
43
+ return {
44
+ signal: ctrl.signal,
45
+ reset,
46
+ dispose: () => {
47
+ clear();
48
+ if (outerSignal)
49
+ outerSignal.removeEventListener('abort', onOuterAbort);
50
+ },
51
+ };
52
+ }
3
53
  // ── Context window management ───────────────────────────────────────
4
54
  //
5
55
  // As a session grows the message history is sent in full on every
@@ -41,25 +91,16 @@ function trimMessageHistory(messages) {
41
91
  };
42
92
  return [head, elision, ...tail];
43
93
  }
44
- async function fetchWithRetry(url, init, retries = MAX_RETRIES) {
45
- for (let attempt = 0; attempt <= retries; attempt++) {
46
- const response = await fetch(url, init);
47
- if (response.ok)
48
- return response;
49
- const status = response.status;
50
- const isRetryable = status === 429 || status === 500 || status === 502 || status === 503;
51
- if (!isRetryable || attempt === retries) {
52
- const error = await response.text();
53
- throw new Error(`API error ${status}: ${error}`);
54
- }
55
- // Respect Retry-After header or use exponential backoff
56
- const retryAfter = response.headers.get('retry-after');
57
- const delay = retryAfter
58
- ? parseInt(retryAfter, 10) * 1000
59
- : RETRY_DELAYS[attempt] ?? 8000;
60
- await new Promise((r) => setTimeout(r, delay));
94
+ // HTTP layer is intentionally dumb now — retry lives in `withRetry`, which
95
+ // also understands stream-idle timeouts and network-layer errors that a
96
+ // status-code-only wrapper could never see.
97
+ async function postJson(url, init) {
98
+ const response = await fetch(url, init);
99
+ if (!response.ok) {
100
+ const error = await response.text();
101
+ throw new Error(`API error ${response.status}: ${error}`);
61
102
  }
62
- throw new Error('Unreachable');
103
+ return response;
63
104
  }
64
105
  // ── OpenAI-compatible format conversion ──
65
106
  function toOpenAITools(tools) {
@@ -129,7 +170,7 @@ function toOpenAIMessages(systemPrompt, messages) {
129
170
  return result;
130
171
  }
131
172
  // ── OpenAI stream parser ──
132
- async function callOpenAIStream(config, systemPrompt, messages, tools, onEvent) {
173
+ async function callOpenAIStream(config, systemPrompt, messages, tools, onEvent, signal) {
133
174
  const trimmed = trimMessageHistory(messages);
134
175
  const body = {
135
176
  model: config.model ?? 'qwen-plus',
@@ -139,93 +180,102 @@ async function callOpenAIStream(config, systemPrompt, messages, tools, onEvent)
139
180
  };
140
181
  if (tools.length > 0)
141
182
  body.tools = toOpenAITools(tools);
142
- const response = await fetchWithRetry(`${config.baseUrl}/chat/completions`, {
143
- method: 'POST',
144
- headers: {
145
- 'Content-Type': 'application/json',
146
- 'Authorization': `Bearer ${config.apiKey}`,
147
- },
148
- body: JSON.stringify(body),
149
- });
150
- let textContent = '';
151
- const toolCalls = new Map();
152
- let inputTokens = 0;
153
- let outputTokens = 0;
154
- const reader = response.body.getReader();
155
- const decoder = new TextDecoder();
156
- let buffer = '';
157
- while (true) {
158
- const { done, value } = await reader.read();
159
- if (done)
160
- break;
161
- buffer += decoder.decode(value, { stream: true });
162
- const lines = buffer.split('\n');
163
- buffer = lines.pop() || '';
164
- for (const line of lines) {
165
- if (!line.startsWith('data:'))
166
- continue;
167
- const data = line.slice(line.startsWith('data: ') ? 6 : 5).trim();
168
- if (data === '[DONE]')
169
- continue;
170
- let chunk;
171
- try {
172
- chunk = JSON.parse(data);
173
- }
174
- catch {
175
- continue;
176
- }
177
- if (chunk.usage) {
178
- inputTokens = chunk.usage.prompt_tokens ?? 0;
179
- outputTokens = chunk.usage.completion_tokens ?? 0;
180
- }
181
- const delta = chunk.choices?.[0]?.delta;
182
- if (!delta)
183
- continue;
184
- if (delta.content) {
185
- textContent += delta.content;
186
- onEvent({ type: 'text_delta', text: delta.content });
187
- }
188
- if (delta.tool_calls) {
189
- for (const tc of delta.tool_calls) {
190
- const idx = tc.index ?? 0;
191
- if (!toolCalls.has(idx)) {
192
- toolCalls.set(idx, { id: tc.id || '', name: tc.function?.name || '', arguments: '' });
193
- if (tc.id) {
194
- onEvent({ type: 'tool_use_start', index: idx, toolUseId: tc.id, toolName: tc.function?.name });
183
+ const watchdog = createIdleWatchdog(signal);
184
+ try {
185
+ const response = await postJson(`${config.baseUrl}/chat/completions`, {
186
+ method: 'POST',
187
+ headers: {
188
+ 'Content-Type': 'application/json',
189
+ 'Authorization': `Bearer ${config.apiKey}`,
190
+ },
191
+ body: JSON.stringify(body),
192
+ signal: watchdog.signal,
193
+ });
194
+ let textContent = '';
195
+ const toolCalls = new Map();
196
+ let inputTokens = 0;
197
+ let outputTokens = 0;
198
+ watchdog.reset();
199
+ const reader = response.body.getReader();
200
+ const decoder = new TextDecoder();
201
+ let buffer = '';
202
+ while (true) {
203
+ const { done, value } = await reader.read();
204
+ if (done)
205
+ break;
206
+ watchdog.reset();
207
+ buffer += decoder.decode(value, { stream: true });
208
+ const lines = buffer.split('\n');
209
+ buffer = lines.pop() || '';
210
+ for (const line of lines) {
211
+ if (!line.startsWith('data:'))
212
+ continue;
213
+ const data = line.slice(line.startsWith('data: ') ? 6 : 5).trim();
214
+ if (data === '[DONE]')
215
+ continue;
216
+ let chunk;
217
+ try {
218
+ chunk = JSON.parse(data);
219
+ }
220
+ catch {
221
+ continue;
222
+ }
223
+ if (chunk.usage) {
224
+ inputTokens = chunk.usage.prompt_tokens ?? 0;
225
+ outputTokens = chunk.usage.completion_tokens ?? 0;
226
+ }
227
+ const delta = chunk.choices?.[0]?.delta;
228
+ if (!delta)
229
+ continue;
230
+ if (delta.content) {
231
+ textContent += delta.content;
232
+ onEvent({ type: 'text_delta', text: delta.content });
233
+ }
234
+ if (delta.tool_calls) {
235
+ for (const tc of delta.tool_calls) {
236
+ const idx = tc.index ?? 0;
237
+ if (!toolCalls.has(idx)) {
238
+ toolCalls.set(idx, { id: tc.id || '', name: tc.function?.name || '', arguments: '' });
239
+ if (tc.id) {
240
+ onEvent({ type: 'tool_use_start', index: idx, toolUseId: tc.id, toolName: tc.function?.name });
241
+ }
195
242
  }
243
+ const existing = toolCalls.get(idx);
244
+ if (tc.id)
245
+ existing.id = tc.id;
246
+ if (tc.function?.name)
247
+ existing.name = tc.function.name;
248
+ if (tc.function?.arguments)
249
+ existing.arguments += tc.function.arguments;
196
250
  }
197
- const existing = toolCalls.get(idx);
198
- if (tc.id)
199
- existing.id = tc.id;
200
- if (tc.function?.name)
201
- existing.name = tc.function.name;
202
- if (tc.function?.arguments)
203
- existing.arguments += tc.function.arguments;
204
251
  }
205
252
  }
206
253
  }
207
- }
208
- onEvent({ type: 'message_stop' });
209
- const contentBlocks = [];
210
- if (textContent)
211
- contentBlocks.push({ type: 'text', text: textContent });
212
- for (const [, tc] of toolCalls) {
213
- let parsedInput = {};
214
- try {
215
- parsedInput = JSON.parse(tc.arguments || '{}');
254
+ onEvent({ type: 'message_stop' });
255
+ const contentBlocks = [];
256
+ if (textContent)
257
+ contentBlocks.push({ type: 'text', text: textContent });
258
+ for (const [, tc] of toolCalls) {
259
+ let parsedInput = {};
260
+ try {
261
+ parsedInput = JSON.parse(tc.arguments || '{}');
262
+ }
263
+ catch { /* */ }
264
+ contentBlocks.push({ type: 'tool_use', id: tc.id, name: tc.name, input: parsedInput });
216
265
  }
217
- catch { /* */ }
218
- contentBlocks.push({ type: 'tool_use', id: tc.id, name: tc.name, input: parsedInput });
266
+ return {
267
+ id: '',
268
+ content: contentBlocks,
269
+ stop_reason: toolCalls.size > 0 ? 'tool_use' : 'end_turn',
270
+ usage: { input_tokens: inputTokens, output_tokens: outputTokens },
271
+ };
272
+ }
273
+ finally {
274
+ watchdog.dispose();
219
275
  }
220
- return {
221
- id: '',
222
- content: contentBlocks,
223
- stop_reason: toolCalls.size > 0 ? 'tool_use' : 'end_turn',
224
- usage: { input_tokens: inputTokens, output_tokens: outputTokens },
225
- };
226
276
  }
227
277
  // ── Anthropic stream parser ──
228
- async function callAnthropicNativeStream(config, systemPrompt, messages, tools, onEvent) {
278
+ async function callAnthropicNativeStream(config, systemPrompt, messages, tools, onEvent, signal) {
229
279
  const trimmed = trimMessageHistory(messages);
230
280
  const body = {
231
281
  model: config.model ?? 'anthropic/claude-sonnet-4-20250514',
@@ -236,120 +286,135 @@ async function callAnthropicNativeStream(config, systemPrompt, messages, tools,
236
286
  };
237
287
  if (tools.length > 0)
238
288
  body.tools = tools;
239
- const response = await fetchWithRetry(`${config.baseUrl}/v1/messages`, {
240
- method: 'POST',
241
- headers: {
242
- 'Content-Type': 'application/json',
243
- 'x-api-key': config.apiKey,
244
- 'anthropic-version': '2023-06-01',
245
- },
246
- body: JSON.stringify(body),
247
- });
248
- const contentBlocks = [];
249
- let stopReason = 'end_turn';
250
- let inputTokens = 0;
251
- let outputTokens = 0;
252
- const toolInputBuffers = new Map();
253
- const reader = response.body.getReader();
254
- const decoder = new TextDecoder();
255
- let buffer = '';
256
- while (true) {
257
- const { done, value } = await reader.read();
258
- if (done)
259
- break;
260
- buffer += decoder.decode(value, { stream: true });
261
- const lines = buffer.split('\n');
262
- buffer = lines.pop() || '';
263
- for (const line of lines) {
264
- if (!line.startsWith('data:'))
265
- continue;
266
- const data = line.slice(line.startsWith('data: ') ? 6 : 5).trim();
267
- if (data === '[DONE]')
268
- continue;
269
- let event;
270
- try {
271
- event = JSON.parse(data);
272
- }
273
- catch {
274
- continue;
275
- }
276
- switch (event.type) {
277
- case 'content_block_start': {
278
- const block = event.content_block;
279
- if (block.type === 'text') {
280
- contentBlocks[event.index] = { type: 'text', text: '' };
281
- }
282
- else if (block.type === 'tool_use') {
283
- contentBlocks[event.index] = {
284
- type: 'tool_use', id: block.id, name: block.name, input: {},
285
- };
286
- toolInputBuffers.set(event.index, { id: block.id, name: block.name, input: '' });
287
- onEvent({ type: 'tool_use_start', index: event.index, toolUseId: block.id, toolName: block.name });
288
- }
289
- break;
289
+ const watchdog = createIdleWatchdog(signal);
290
+ try {
291
+ const response = await postJson(`${config.baseUrl}/v1/messages`, {
292
+ method: 'POST',
293
+ headers: {
294
+ 'Content-Type': 'application/json',
295
+ 'x-api-key': config.apiKey,
296
+ 'anthropic-version': '2023-06-01',
297
+ },
298
+ body: JSON.stringify(body),
299
+ signal: watchdog.signal,
300
+ });
301
+ const contentBlocks = [];
302
+ let stopReason = 'end_turn';
303
+ let inputTokens = 0;
304
+ let outputTokens = 0;
305
+ const toolInputBuffers = new Map();
306
+ watchdog.reset();
307
+ const reader = response.body.getReader();
308
+ const decoder = new TextDecoder();
309
+ let buffer = '';
310
+ while (true) {
311
+ const { done, value } = await reader.read();
312
+ if (done)
313
+ break;
314
+ watchdog.reset();
315
+ buffer += decoder.decode(value, { stream: true });
316
+ const lines = buffer.split('\n');
317
+ buffer = lines.pop() || '';
318
+ for (const line of lines) {
319
+ if (!line.startsWith('data:'))
320
+ continue;
321
+ const data = line.slice(line.startsWith('data: ') ? 6 : 5).trim();
322
+ if (data === '[DONE]')
323
+ continue;
324
+ let event;
325
+ try {
326
+ event = JSON.parse(data);
290
327
  }
291
- case 'content_block_delta': {
292
- const delta = event.delta;
293
- if (delta.type === 'text_delta') {
294
- const block = contentBlocks[event.index];
295
- if (block?.type === 'text')
296
- block.text += delta.text;
297
- onEvent({ type: 'text_delta', text: delta.text, index: event.index });
298
- }
299
- else if (delta.type === 'input_json_delta') {
300
- const buf = toolInputBuffers.get(event.index);
301
- if (buf)
302
- buf.input += delta.partial_json;
303
- }
304
- break;
328
+ catch {
329
+ continue;
305
330
  }
306
- case 'content_block_stop': {
307
- const buf = toolInputBuffers.get(event.index);
308
- if (buf) {
309
- try {
331
+ switch (event.type) {
332
+ case 'content_block_start': {
333
+ const block = event.content_block;
334
+ if (block.type === 'text') {
335
+ contentBlocks[event.index] = { type: 'text', text: '' };
336
+ }
337
+ else if (block.type === 'tool_use') {
338
+ contentBlocks[event.index] = {
339
+ type: 'tool_use', id: block.id, name: block.name, input: {},
340
+ };
341
+ toolInputBuffers.set(event.index, { id: block.id, name: block.name, input: '' });
342
+ onEvent({ type: 'tool_use_start', index: event.index, toolUseId: block.id, toolName: block.name });
343
+ }
344
+ break;
345
+ }
346
+ case 'content_block_delta': {
347
+ const delta = event.delta;
348
+ if (delta.type === 'text_delta') {
310
349
  const block = contentBlocks[event.index];
311
- if (block?.type === 'tool_use')
312
- block.input = JSON.parse(buf.input || '{}');
350
+ if (block?.type === 'text')
351
+ block.text += delta.text;
352
+ onEvent({ type: 'text_delta', text: delta.text, index: event.index });
313
353
  }
314
- catch { /* invalid JSON */ }
315
- toolInputBuffers.delete(event.index);
354
+ else if (delta.type === 'input_json_delta') {
355
+ const buf = toolInputBuffers.get(event.index);
356
+ if (buf)
357
+ buf.input += delta.partial_json;
358
+ }
359
+ break;
360
+ }
361
+ case 'content_block_stop': {
362
+ const buf = toolInputBuffers.get(event.index);
363
+ if (buf) {
364
+ try {
365
+ const block = contentBlocks[event.index];
366
+ if (block?.type === 'tool_use')
367
+ block.input = JSON.parse(buf.input || '{}');
368
+ }
369
+ catch { /* invalid JSON */ }
370
+ toolInputBuffers.delete(event.index);
371
+ }
372
+ onEvent({ type: 'content_block_stop', index: event.index });
373
+ break;
374
+ }
375
+ case 'message_delta': {
376
+ if (event.delta?.stop_reason)
377
+ stopReason = event.delta.stop_reason;
378
+ if (event.usage)
379
+ outputTokens = event.usage.output_tokens;
380
+ break;
381
+ }
382
+ case 'message_start': {
383
+ if (event.message?.usage)
384
+ inputTokens = event.message.usage.input_tokens;
385
+ break;
316
386
  }
317
- onEvent({ type: 'content_block_stop', index: event.index });
318
- break;
319
- }
320
- case 'message_delta': {
321
- if (event.delta?.stop_reason)
322
- stopReason = event.delta.stop_reason;
323
- if (event.usage)
324
- outputTokens = event.usage.output_tokens;
325
- break;
326
- }
327
- case 'message_start': {
328
- if (event.message?.usage)
329
- inputTokens = event.message.usage.input_tokens;
330
- break;
331
387
  }
332
388
  }
333
389
  }
390
+ onEvent({ type: 'message_stop' });
391
+ return {
392
+ id: '',
393
+ content: contentBlocks,
394
+ stop_reason: stopReason,
395
+ usage: { input_tokens: inputTokens, output_tokens: outputTokens },
396
+ };
334
397
  }
335
- onEvent({ type: 'message_stop' });
336
- return {
337
- id: '',
338
- content: contentBlocks,
339
- stop_reason: stopReason,
340
- usage: { input_tokens: inputTokens, output_tokens: outputTokens },
341
- };
342
- }
343
- // ── Public API: auto-routes by provider ──
344
- export function callLLMStream(config, systemPrompt, messages, tools, onEvent) {
345
- if (config.provider === 'openai') {
346
- return callOpenAIStream(config, systemPrompt, messages, tools, onEvent);
398
+ finally {
399
+ watchdog.dispose();
347
400
  }
348
- return callAnthropicNativeStream(config, systemPrompt, messages, tools, onEvent);
349
401
  }
350
- export function callLLM(config, systemPrompt, messages, tools = []) {
402
+ export function callLLMStream(config, systemPrompt, messages, tools, onEvent, options = {}) {
403
+ return withRetry(() => {
404
+ if (config.provider === 'openai') {
405
+ return callOpenAIStream(config, systemPrompt, messages, tools, onEvent, options.signal);
406
+ }
407
+ return callAnthropicNativeStream(config, systemPrompt, messages, tools, onEvent, options.signal);
408
+ }, {
409
+ signal: options.signal,
410
+ maxRetries: options.maxRetries,
411
+ label: config.provider === 'openai' ? 'cli-openai' : 'cli-anthropic',
412
+ onRetryNotice: options.onRetryNotice,
413
+ });
414
+ }
415
+ export function callLLM(config, systemPrompt, messages, tools = [], options = {}) {
351
416
  const noop = () => { };
352
- return callLLMStream(config, systemPrompt, messages, tools, noop);
417
+ return callLLMStream(config, systemPrompt, messages, tools, noop, options);
353
418
  }
354
419
  export function extractText(response) {
355
420
  return response.content
package/dist/llm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"llm.js","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAU3C,0EAA0E;AAC1E,2EAA2E;AAC3E,+DAA+D;AAC/D,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC;AACrF,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;AAEvE,MAAM,sBAAuB,SAAQ,KAAK;IACxC,YAAY,EAAU;QACpB,KAAK,CAAC,+CAA+C,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/E,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAQD,SAAS,kBAAkB,CAAC,WAAyB;IACnD,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;IACnC,IAAI,SAAS,GAAyC,IAAI,CAAC;IAC3D,IAAI,SAAS,GAAyC,IAAI,CAAC;IAC3D,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,SAAS,EAAE,CAAC;YAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;QAC7D,IAAI,SAAS,EAAE,CAAC;YAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;IAC/D,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,KAAK,EAAE,CAAC;QACR,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,OAAO,CAAC,IAAI,CAAC,iDAAiD,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC;QAC1F,CAAC,EAAE,cAAc,CAAC,CAAC;QACnB,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,cAAc,CAAC,CAAC,CAAC;QACzD,CAAC,EAAE,cAAc,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACnF,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,OAAO;YAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;YACnD,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK;QACL,OAAO,EAAE,GAAG,EAAE;YACZ,KAAK,EAAE,CAAC;YACR,IAAI,WAAW;gBAAE,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC1E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,EAAE;AACF,kEAAkE;AAClE,sEAAsE;AACtE,+DAA+D;AAC/D,6CAA6C;AAC7C,+CAA+C;AAC/C,qEAAqE;AACrE,mEAAmE;AACnE,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,SAAS,kBAAkB,CAAC,QAAwB;IAClD,IAAI,QAAQ,CAAC,MAAM,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE1D,oEAAoE;IACpE,uEAAuE;IACvE,mEAAmE;IACnE,mDAAmD;IACnD,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC;IAC/C,mEAAmE;IACnE,iDAAiD;IACjD,OAAO,QAAQ,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,eAAe,GACnB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAClD,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,eAAe;YAAE,MAAM;QAC5B,QAAQ,EAAE,CAAC;IACb,CAAC;IACD,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEnC,mEAAmE;IACnE,2BAA2B;IAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ,GAAG,CAAC,CAAC;IAClC,MAAM,OAAO,GAAiB;QAC5B,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,MAAM,YAAY,uDAAuD;KACnF,CAAC;IACF,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,2EAA2E;AAC3E,wEAAwE;AACxE,4CAA4C;AAC5C,KAAK,UAAU,QAAQ,CACrB,GAAW,EACX,IAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,4CAA4C;AAE5C,SAAS,aAAa,CAAC,KAAsB;IAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,YAAY,EAAE;KACnF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,gBAAgB,CAAC,YAAoB,EAAE,QAAwB;IACtE,MAAM,MAAM,GAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;IAEtE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,SAAS;QACX,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAS,CAAC,IAAI,CAAC,CAAC;YAC3F,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO;iBAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;iBACpC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAChB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;aAC/D,CAAC,CAAC,CAAC;YACN,MAAM,KAAK,GAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YACzC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;YACxE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,MAAM;wBACZ,YAAY,EAAG,EAAU,CAAC,WAAW;wBACrC,OAAO,EAAE,OAAQ,EAAU,CAAC,OAAO,KAAK,QAAQ;4BAC9C,CAAC,CAAE,EAAU,CAAC,OAAO;4BACrB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAE,EAAU,CAAC,OAAO,CAAC;qBACxC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAS,CAAC,IAAI,CAAC,CAAC;gBAC3F,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;gBACjE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,KAAK,GAAc,EAAE,CAAC;oBAC5B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;wBAC7B,MAAM,GAAG,GAAI,GAAW,CAAC,MAAM,CAAC;wBAChC,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,WAAW;4BACjB,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,UAAU,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE;yBAChE,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC3D,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6BAA6B;AAE7B,KAAK,UAAU,gBAAgB,CAC7B,MAAkB,EAClB,YAAoB,EACpB,QAAwB,EACxB,KAAsB,EACtB,OAAuB,EACvB,MAAoB;IAEpB,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,IAAI,GAA4B;QACpC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,WAAW;QAClC,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC;KAClD,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAC,OAAO,mBAAmB,EAAE;YACpE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;aAC3C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;QAEH,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2D,CAAC;QACrF,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAK,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;oBAAE,SAAS;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClE,IAAI,IAAI,KAAK,QAAQ;oBAAE,SAAS;gBAEhC,IAAI,KAAU,CAAC;gBACf,IAAI,CAAC;oBAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAErD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;oBAC7C,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;gBACpD,CAAC;gBAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;gBACxC,IAAI,CAAC,KAAK;oBAAE,SAAS;gBAErB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC;oBAC7B,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvD,CAAC;gBAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;oBACrB,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;wBAClC,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;wBAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;4BACxB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;4BACtF,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gCACV,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;4BACjG,CAAC;wBACH,CAAC;wBACD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;wBACrC,IAAI,EAAE,CAAC,EAAE;4BAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;wBAC/B,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI;4BAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;wBACxD,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS;4BAAE,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC1E,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAEC,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAElC,MAAM,aAAa,GAAmB,EAAE,CAAC;QACzC,IAAI,WAAW;YAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACzE,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YAC/B,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC;gBAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;YACvE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,OAAO;YACL,EAAE,EAAE,EAAE;YACN,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;YACzD,KAAK,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE;SAClE,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,gCAAgC;AAEhC,KAAK,UAAU,yBAAyB,CACtC,MAAkB,EAClB,YAAoB,EACpB,QAAwB,EACxB,KAAsB,EACtB,OAAuB,EACvB,MAAoB;IAEpB,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,IAAI,GAA4B;QACpC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,oCAAoC;QAC3D,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KACrE,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAEzC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAC,OAAO,cAAc,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,MAAM,CAAC,MAAM;gBAC1B,mBAAmB,EAAE,YAAY;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;QAEH,MAAM,aAAa,GAAmB,EAAE,CAAC;QACzC,IAAI,UAAU,GAA2C,UAAU,CAAC;QACpE,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAuD,CAAC;QAExF,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAK,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;oBAAE,SAAS;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClE,IAAI,IAAI,KAAK,QAAQ;oBAAE,SAAS;gBAEhC,IAAI,KAAU,CAAC;gBACf,IAAI,CAAC;oBAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAErD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,qBAAqB,CAAC,CAAC,CAAC;wBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;wBAClC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC1B,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;wBAC1D,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACrC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG;gCAC3B,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;6BAC5D,CAAC;4BACF,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;4BACjF,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;wBACrG,CAAC;wBACD,MAAM;oBACR,CAAC;oBACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;wBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;wBAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;4BAChC,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BACzC,IAAI,KAAK,EAAE,IAAI,KAAK,MAAM;gCAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;4BACrD,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;wBACxE,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;4BAC7C,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BAC9C,IAAI,GAAG;gCAAE,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC;wBAC3C,CAAC;wBACD,MAAM;oBACR,CAAC;oBACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC9C,IAAI,GAAG,EAAE,CAAC;4BACR,IAAI,CAAC;gCACH,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gCACzC,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU;oCAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;4BAC9E,CAAC;4BAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;4BAC9B,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACvC,CAAC;wBACD,OAAO,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;wBAC5D,MAAM;oBACR,CAAC;oBACD,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW;4BAAE,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;wBACnE,IAAI,KAAK,CAAC,KAAK;4BAAE,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;wBAC1D,MAAM;oBACR,CAAC;oBACD,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK;4BAAE,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;wBACzE,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAEC,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAElC,OAAO;YACL,EAAE,EAAE,EAAE;YACN,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,UAAU;YACvB,KAAK,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE;SAClE,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAYD,MAAM,UAAU,aAAa,CAC3B,MAAkB,EAClB,YAAoB,EACpB,QAAwB,EACxB,KAAsB,EACtB,OAAuB,EACvB,UAA0B,EAAE;IAE5B,OAAO,SAAS,CACd,GAAG,EAAE;QACH,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACnG,CAAC,EACD;QACE,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe;QACpE,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,MAAkB,EAClB,YAAoB,EACpB,QAAwB,EACxB,QAAyB,EAAE,EAC3B,UAA0B,EAAE;IAE5B,MAAM,IAAI,GAAmB,GAAG,EAAE,GAAE,CAAC,CAAC;IACtC,OAAO,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAA2B;IACrD,OAAO,QAAQ,CAAC,OAAO;SACpB,MAAM,CAAC,CAAC,CAAC,EAAwC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SACtE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Run all probes once and return the union of always-on caps + detected
3
+ * caps. Called at registrar startup and on demand if the user invokes
4
+ * `yome mesh refresh-caps` (todo).
5
+ */
6
+ export declare function detectCapabilities(): string[];