@pellux/goodvibes-sdk 0.33.38 → 0.34.1

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 (199) hide show
  1. package/dist/contracts/artifacts/operator-contract.json +1383 -4
  2. package/dist/events/workflows.d.ts +4 -0
  3. package/dist/events/workflows.d.ts.map +1 -1
  4. package/dist/platform/agents/message-bus-core.d.ts +11 -0
  5. package/dist/platform/agents/message-bus-core.d.ts.map +1 -1
  6. package/dist/platform/agents/message-bus-core.js +28 -21
  7. package/dist/platform/agents/orchestrator-runner.d.ts.map +1 -1
  8. package/dist/platform/agents/orchestrator-runner.js +6 -4
  9. package/dist/platform/agents/wrfc-config.d.ts.map +1 -1
  10. package/dist/platform/agents/wrfc-config.js +16 -10
  11. package/dist/platform/agents/wrfc-controller.d.ts +26 -0
  12. package/dist/platform/agents/wrfc-controller.d.ts.map +1 -1
  13. package/dist/platform/agents/wrfc-controller.js +134 -138
  14. package/dist/platform/agents/wrfc-runtime-events.d.ts +1 -0
  15. package/dist/platform/agents/wrfc-runtime-events.d.ts.map +1 -1
  16. package/dist/platform/agents/wrfc-runtime-events.js +4 -1
  17. package/dist/platform/automation/delivery-manager.d.ts.map +1 -1
  18. package/dist/platform/automation/delivery-manager.js +1 -6
  19. package/dist/platform/batch/manager.d.ts.map +1 -1
  20. package/dist/platform/batch/manager.js +1 -3
  21. package/dist/platform/channels/policy-manager.d.ts.map +1 -1
  22. package/dist/platform/channels/policy-manager.js +1 -3
  23. package/dist/platform/channels/reply-pipeline.d.ts.map +1 -1
  24. package/dist/platform/channels/reply-pipeline.js +4 -0
  25. package/dist/platform/config/schema-domain-core.d.ts +1 -1
  26. package/dist/platform/config/schema-domain-core.d.ts.map +1 -1
  27. package/dist/platform/config/schema-domain-core.js +12 -12
  28. package/dist/platform/config/schema-domain-runtime.d.ts +1 -1
  29. package/dist/platform/config/schema-domain-runtime.d.ts.map +1 -1
  30. package/dist/platform/config/schema-domain-runtime.js +19 -18
  31. package/dist/platform/config/schema-domain-surfaces.d.ts +1 -1
  32. package/dist/platform/config/schema-domain-surfaces.d.ts.map +1 -1
  33. package/dist/platform/config/schema-domain-surfaces.js +4 -3
  34. package/dist/platform/config/schema-shared.d.ts +6 -0
  35. package/dist/platform/config/schema-shared.d.ts.map +1 -1
  36. package/dist/platform/config/schema-shared.js +21 -1
  37. package/dist/platform/control-plane/approval-broker.d.ts.map +1 -1
  38. package/dist/platform/control-plane/approval-broker.js +1 -3
  39. package/dist/platform/control-plane/method-catalog-calendar.d.ts +9 -0
  40. package/dist/platform/control-plane/method-catalog-calendar.d.ts.map +1 -0
  41. package/dist/platform/control-plane/method-catalog-calendar.js +117 -0
  42. package/dist/platform/control-plane/method-catalog-channels.d.ts.map +1 -1
  43. package/dist/platform/control-plane/method-catalog-channels.js +174 -0
  44. package/dist/platform/control-plane/method-catalog-email.d.ts +9 -0
  45. package/dist/platform/control-plane/method-catalog-email.d.ts.map +1 -0
  46. package/dist/platform/control-plane/method-catalog-email.js +101 -0
  47. package/dist/platform/control-plane/method-catalog.d.ts.map +1 -1
  48. package/dist/platform/control-plane/method-catalog.js +4 -0
  49. package/dist/platform/control-plane/session-broker-state.d.ts.map +1 -1
  50. package/dist/platform/control-plane/session-broker-state.js +1 -3
  51. package/dist/platform/core/compaction-sections.d.ts +5 -1
  52. package/dist/platform/core/compaction-sections.d.ts.map +1 -1
  53. package/dist/platform/core/compaction-sections.js +73 -66
  54. package/dist/platform/core/context-compaction.d.ts.map +1 -1
  55. package/dist/platform/core/context-compaction.js +9 -16
  56. package/dist/platform/core/orchestrator-context-runtime.d.ts +2 -2
  57. package/dist/platform/core/orchestrator-context-runtime.d.ts.map +1 -1
  58. package/dist/platform/core/orchestrator-context-runtime.js +24 -21
  59. package/dist/platform/core/orchestrator-tool-runtime.d.ts.map +1 -1
  60. package/dist/platform/core/orchestrator-tool-runtime.js +2 -1
  61. package/dist/platform/core/session-lineage.d.ts +2 -5
  62. package/dist/platform/core/session-lineage.d.ts.map +1 -1
  63. package/dist/platform/core/session-lineage.js +4 -16
  64. package/dist/platform/core/wrfc-routing.d.ts.map +1 -1
  65. package/dist/platform/core/wrfc-routing.js +1 -3
  66. package/dist/platform/daemon/http/mcp-routes.d.ts.map +1 -1
  67. package/dist/platform/daemon/http/mcp-routes.js +1 -3
  68. package/dist/platform/daemon/http/openai-compatible-routes.d.ts.map +1 -1
  69. package/dist/platform/daemon/http/openai-compatible-routes.js +1 -3
  70. package/dist/platform/daemon/http/runtime-routes.d.ts.map +1 -1
  71. package/dist/platform/daemon/http/runtime-routes.js +1 -3
  72. package/dist/platform/hooks/runners/http.d.ts.map +1 -1
  73. package/dist/platform/hooks/runners/http.js +9 -19
  74. package/dist/platform/integrations/webhooks.js +2 -11
  75. package/dist/platform/knowledge/semantic/self-improvement.d.ts.map +1 -1
  76. package/dist/platform/knowledge/semantic/self-improvement.js +2 -21
  77. package/dist/platform/mcp/client.d.ts.map +1 -1
  78. package/dist/platform/mcp/client.js +1 -3
  79. package/dist/platform/mcp/config.d.ts.map +1 -1
  80. package/dist/platform/mcp/config.js +1 -3
  81. package/dist/platform/media/builtin-generation-providers.d.ts.map +1 -1
  82. package/dist/platform/media/builtin-generation-providers.js +1 -6
  83. package/dist/platform/providers/anthropic-compat.d.ts.map +1 -1
  84. package/dist/platform/providers/anthropic-compat.js +11 -131
  85. package/dist/platform/providers/anthropic-sdk-provider.d.ts.map +1 -1
  86. package/dist/platform/providers/anthropic-sdk-provider.js +8 -42
  87. package/dist/platform/providers/anthropic-sse-assembler.d.ts +80 -0
  88. package/dist/platform/providers/anthropic-sse-assembler.d.ts.map +1 -0
  89. package/dist/platform/providers/anthropic-sse-assembler.js +146 -0
  90. package/dist/platform/providers/anthropic-stream.d.ts +30 -0
  91. package/dist/platform/providers/anthropic-stream.d.ts.map +1 -0
  92. package/dist/platform/providers/anthropic-stream.js +44 -0
  93. package/dist/platform/providers/anthropic-vertex.d.ts.map +1 -1
  94. package/dist/platform/providers/anthropic-vertex.js +1 -3
  95. package/dist/platform/providers/anthropic.d.ts.map +1 -1
  96. package/dist/platform/providers/anthropic.js +15 -151
  97. package/dist/platform/providers/capabilities.d.ts.map +1 -1
  98. package/dist/platform/providers/capabilities.js +11 -7
  99. package/dist/platform/providers/context-discovery.d.ts.map +1 -1
  100. package/dist/platform/providers/context-discovery.js +9 -16
  101. package/dist/platform/providers/context-window-fallback.d.ts +24 -0
  102. package/dist/platform/providers/context-window-fallback.d.ts.map +1 -0
  103. package/dist/platform/providers/context-window-fallback.js +48 -0
  104. package/dist/platform/providers/gemini.d.ts.map +1 -1
  105. package/dist/platform/providers/gemini.js +3 -6
  106. package/dist/platform/providers/json-ttl-cache.d.ts +35 -0
  107. package/dist/platform/providers/json-ttl-cache.d.ts.map +1 -0
  108. package/dist/platform/providers/json-ttl-cache.js +52 -0
  109. package/dist/platform/providers/llama-cpp.d.ts.map +1 -1
  110. package/dist/platform/providers/llama-cpp.js +2 -23
  111. package/dist/platform/providers/lm-studio-helpers.d.ts +1 -1
  112. package/dist/platform/providers/lm-studio-helpers.d.ts.map +1 -1
  113. package/dist/platform/providers/lm-studio-helpers.js +5 -25
  114. package/dist/platform/providers/model-benchmarks.d.ts.map +1 -1
  115. package/dist/platform/providers/model-benchmarks.js +11 -34
  116. package/dist/platform/providers/model-catalog-cache.d.ts.map +1 -1
  117. package/dist/platform/providers/model-catalog-cache.js +15 -38
  118. package/dist/platform/providers/model-catalog-synthetic.d.ts.map +1 -1
  119. package/dist/platform/providers/model-catalog-synthetic.js +3 -2
  120. package/dist/platform/providers/model-catalog.d.ts.map +1 -1
  121. package/dist/platform/providers/model-catalog.js +3 -2
  122. package/dist/platform/providers/model-limits.d.ts.map +1 -1
  123. package/dist/platform/providers/model-limits.js +18 -42
  124. package/dist/platform/providers/ollama.d.ts.map +1 -1
  125. package/dist/platform/providers/ollama.js +3 -24
  126. package/dist/platform/providers/openai-codex.d.ts.map +1 -1
  127. package/dist/platform/providers/openai-codex.js +8 -9
  128. package/dist/platform/providers/openai-compat.d.ts.map +1 -1
  129. package/dist/platform/providers/openai-compat.js +13 -40
  130. package/dist/platform/providers/openai-stream-helpers.d.ts +62 -0
  131. package/dist/platform/providers/openai-stream-helpers.d.ts.map +1 -0
  132. package/dist/platform/providers/openai-stream-helpers.js +73 -0
  133. package/dist/platform/providers/openai.d.ts.map +1 -1
  134. package/dist/platform/providers/openai.js +13 -41
  135. package/dist/platform/providers/provider-error.d.ts +17 -0
  136. package/dist/platform/providers/provider-error.d.ts.map +1 -0
  137. package/dist/platform/providers/provider-error.js +33 -0
  138. package/dist/platform/providers/provider-stop-reason.d.ts +15 -0
  139. package/dist/platform/providers/provider-stop-reason.d.ts.map +1 -0
  140. package/dist/platform/providers/provider-stop-reason.js +15 -0
  141. package/dist/platform/providers/sse-line-buffer.d.ts +13 -0
  142. package/dist/platform/providers/sse-line-buffer.d.ts.map +1 -0
  143. package/dist/platform/providers/sse-line-buffer.js +23 -0
  144. package/dist/platform/providers/tool-formats.d.ts +5 -0
  145. package/dist/platform/providers/tool-formats.d.ts.map +1 -1
  146. package/dist/platform/providers/tool-formats.js +14 -0
  147. package/dist/platform/runtime/bootstrap-runtime-events.d.ts.map +1 -1
  148. package/dist/platform/runtime/bootstrap-runtime-events.js +6 -0
  149. package/dist/platform/runtime/bootstrap-services.d.ts.map +1 -1
  150. package/dist/platform/runtime/bootstrap-services.js +4 -5
  151. package/dist/platform/runtime/emitters/workflows.d.ts +4 -0
  152. package/dist/platform/runtime/emitters/workflows.d.ts.map +1 -1
  153. package/dist/platform/runtime/emitters/workflows.js +3 -0
  154. package/dist/platform/runtime/remote/distributed-runtime-store.d.ts.map +1 -1
  155. package/dist/platform/runtime/remote/distributed-runtime-store.js +1 -3
  156. package/dist/platform/runtime/retention/pruner.js +2 -5
  157. package/dist/platform/runtime/store/helpers/reducers/lifecycle.d.ts.map +1 -1
  158. package/dist/platform/runtime/store/helpers/reducers/lifecycle.js +15 -14
  159. package/dist/platform/runtime/store/helpers/reducers/shared.d.ts +6 -0
  160. package/dist/platform/runtime/store/helpers/reducers/shared.d.ts.map +1 -1
  161. package/dist/platform/runtime/store/helpers/reducers/shared.js +8 -1
  162. package/dist/platform/runtime/telemetry/exporters/queue.d.ts.map +1 -1
  163. package/dist/platform/runtime/telemetry/exporters/queue.js +1 -7
  164. package/dist/platform/runtime/transports/http-helpers.d.ts +0 -1
  165. package/dist/platform/runtime/transports/http-helpers.d.ts.map +1 -1
  166. package/dist/platform/runtime/transports/http-helpers.js +1 -3
  167. package/dist/platform/runtime/ui-read-model-helpers.d.ts +2 -0
  168. package/dist/platform/runtime/ui-read-model-helpers.d.ts.map +1 -1
  169. package/dist/platform/runtime/ui-read-model-helpers.js +8 -0
  170. package/dist/platform/runtime/ui-read-models-core.d.ts.map +1 -1
  171. package/dist/platform/runtime/ui-read-models-core.js +3 -5
  172. package/dist/platform/runtime/ui-read-models-observability-remote.d.ts.map +1 -1
  173. package/dist/platform/runtime/ui-read-models-observability-remote.js +2 -4
  174. package/dist/platform/runtime/ui-read-models-operations.d.ts.map +1 -1
  175. package/dist/platform/runtime/ui-read-models-operations.js +8 -26
  176. package/dist/platform/scheduler/scheduler.d.ts.map +1 -1
  177. package/dist/platform/scheduler/scheduler.js +1 -3
  178. package/dist/platform/tools/exec/runtime.d.ts.map +1 -1
  179. package/dist/platform/tools/exec/runtime.js +1 -7
  180. package/dist/platform/tools/fetch/runtime.d.ts.map +1 -1
  181. package/dist/platform/tools/fetch/runtime.js +9 -20
  182. package/dist/platform/tools/shared/process-manager.d.ts.map +1 -1
  183. package/dist/platform/tools/shared/process-manager.js +1 -6
  184. package/dist/platform/utils/concurrency.d.ts +1 -0
  185. package/dist/platform/utils/concurrency.d.ts.map +1 -1
  186. package/dist/platform/utils/concurrency.js +1 -0
  187. package/dist/platform/utils/error-display.d.ts +9 -0
  188. package/dist/platform/utils/error-display.d.ts.map +1 -1
  189. package/dist/platform/utils/error-display.js +11 -0
  190. package/dist/platform/utils/fetch-with-timeout.d.ts +22 -2
  191. package/dist/platform/utils/fetch-with-timeout.d.ts.map +1 -1
  192. package/dist/platform/utils/fetch-with-timeout.js +33 -15
  193. package/dist/platform/utils/record-coerce.d.ts +5 -0
  194. package/dist/platform/utils/record-coerce.d.ts.map +1 -1
  195. package/dist/platform/utils/record-coerce.js +7 -0
  196. package/dist/platform/utils/retry.d.ts.map +1 -1
  197. package/dist/platform/utils/retry.js +2 -4
  198. package/dist/platform/version.js +1 -1
  199. package/package.json +9 -9
@@ -1,4 +1,4 @@
1
- import { now, uniq, updateDomainMetadata } from './shared.js';
1
+ import { now, uniq, updateDomainMetadata, isTerminalLifecycleState, computeActiveIds } from './shared.js';
2
2
  function permissionMachineStateForEvent(event) {
3
3
  switch (event.type) {
4
4
  case 'PERMISSION_REQUESTED':
@@ -104,7 +104,7 @@ function updateTaskIndexes(tasks) {
104
104
  return { queuedIds, runningIds, blockedIds };
105
105
  }
106
106
  function isTerminalTaskStatus(status) {
107
- return status === 'completed' || status === 'failed' || status === 'cancelled';
107
+ return isTerminalLifecycleState(status);
108
108
  }
109
109
  function countTaskTransition(domain, previous, task) {
110
110
  let { totalCreated, totalCompleted, totalFailed, totalCancelled } = domain;
@@ -220,7 +220,7 @@ function assertNeverAgentEvent(event) {
220
220
  throw new Error(`Unhandled agent event type: ${String(event.type)}`);
221
221
  }
222
222
  function isTerminalAgentStatus(status) {
223
- return status === 'completed' || status === 'failed' || status === 'cancelled';
223
+ return isTerminalLifecycleState(status);
224
224
  }
225
225
  function isWrfcOwnerRevivalEvent(event) {
226
226
  return ((event.type === 'AGENT_RUNNING' || event.type === 'AGENT_PROGRESS')
@@ -228,6 +228,15 @@ function isWrfcOwnerRevivalEvent(event) {
228
228
  && typeof event.wrfcId === 'string'
229
229
  && event.wrfcId.length > 0);
230
230
  }
231
+ function applyAgentDomainAggregates(domain, agents, prevStatus, nextStatus, completedCorrection, failedCorrection) {
232
+ const activeAgentIds = computeActiveIds(agents);
233
+ return {
234
+ activeAgentIds,
235
+ totalCompleted: Math.max(0, domain.totalCompleted + completedCorrection + (prevStatus !== 'completed' && nextStatus === 'completed' ? 1 : 0)),
236
+ totalFailed: Math.max(0, domain.totalFailed + failedCorrection + (prevStatus !== 'failed' && nextStatus === 'failed' ? 1 : 0)),
237
+ peakConcurrency: Math.max(domain.peakConcurrency, activeAgentIds.length),
238
+ };
239
+ }
231
240
  export function updateAgentState(domain, event) {
232
241
  const agents = new Map(domain.agents);
233
242
  const timestamp = now();
@@ -293,17 +302,13 @@ export function updateAgentState(domain, event) {
293
302
  }
294
303
  : revivedWrfcOwner ? undefined : agent.result,
295
304
  });
296
- const activeAgentIds = [...agents.values()].filter((value) => !['completed', 'failed', 'cancelled'].includes(value.status)).map((value) => value.id);
297
305
  const completedCorrection = revivedWrfcOwner && existing?.status === 'completed' ? -1 : 0;
298
306
  const failedCorrection = revivedWrfcOwner && existing?.status === 'failed' ? -1 : 0;
299
307
  return {
300
308
  ...updateDomainMetadata(domain, event.type),
301
309
  agents,
302
- activeAgentIds,
303
310
  totalSpawned: domain.totalSpawned + (!existing && event.type === 'AGENT_SPAWNING' ? 1 : 0),
304
- totalCompleted: Math.max(0, domain.totalCompleted + completedCorrection + (existing?.status !== 'completed' && nextStatus === 'completed' ? 1 : 0)),
305
- totalFailed: Math.max(0, domain.totalFailed + failedCorrection + (existing?.status !== 'failed' && nextStatus === 'failed' ? 1 : 0)),
306
- peakConcurrency: Math.max(domain.peakConcurrency, activeAgentIds.length),
311
+ ...applyAgentDomainAggregates(domain, agents, existing?.status, nextStatus, completedCorrection, failedCorrection),
307
312
  };
308
313
  }
309
314
  function transitionAgentDomainRecord(domain, agentId, status, patch, source) {
@@ -312,14 +317,10 @@ function transitionAgentDomainRecord(domain, agentId, status, patch, source) {
312
317
  return domain;
313
318
  const agents = new Map(domain.agents);
314
319
  agents.set(agentId, { ...existing, ...patch, status });
315
- const activeAgentIds = [...agents.values()].filter((value) => !['completed', 'failed', 'cancelled'].includes(value.status)).map((value) => value.id);
316
320
  return {
317
321
  ...updateDomainMetadata(domain, source),
318
322
  agents,
319
- activeAgentIds,
320
- totalCompleted: domain.totalCompleted + (existing.status !== 'completed' && status === 'completed' ? 1 : 0),
321
- totalFailed: domain.totalFailed + (existing.status !== 'failed' && status === 'failed' ? 1 : 0),
322
- peakConcurrency: Math.max(domain.peakConcurrency, activeAgentIds.length),
323
+ ...applyAgentDomainAggregates(domain, agents, existing.status, status, 0, 0),
323
324
  };
324
325
  }
325
326
  function orchestrationGraphStatus(graph) {
@@ -438,7 +439,7 @@ export function updateOrchestrationState(domain, event) {
438
439
  break;
439
440
  }
440
441
  }
441
- const activeGraphIds = [...graphs.values()].filter((graph) => !['completed', 'failed', 'cancelled'].includes(graph.status)).map((graph) => graph.id);
442
+ const activeGraphIds = computeActiveIds(graphs);
442
443
  return {
443
444
  ...updateDomainMetadata(domain, event.type),
444
445
  graphs,
@@ -1,5 +1,11 @@
1
1
  import type { PartialToolCall } from '../../../../providers/interface.js';
2
2
  import type { ConversationDomainState } from '../../domains/conversation.js';
3
+ export declare const TERMINAL_LIFECYCLE_STATES: readonly ["completed", "failed", "cancelled"];
4
+ export declare function isTerminalLifecycleState(s: string): boolean;
5
+ export declare function computeActiveIds<T extends {
6
+ id: string;
7
+ status: string;
8
+ }>(map: Map<string, T>): string[];
3
9
  export declare function uniq<T>(items: T[]): T[];
4
10
  export declare function now(): number;
5
11
  export declare function updateDomainMetadata<T extends {
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../../src/platform/runtime/store/helpers/reducers/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEvC;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACxG,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,GACb,CAAC,CAOH;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,CAAC,WAAW,CAAC,GAAG,OAAO,CAExF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAExE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3F;AAED,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,GAAG,MAAM,GAAG,SAAS,CAa1F;AAED,wBAAgB,gBAAgB,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CASpE"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../../src/platform/runtime/store/helpers/reducers/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E,eAAO,MAAM,yBAAyB,+CAAgD,CAAC;AAEvF,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,CAExG;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEvC;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACxG,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,GACb,CAAC,CAOH;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,CAAC,WAAW,CAAC,GAAG,OAAO,CAExF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAExE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3F;AAED,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,GAAG,MAAM,GAAG,SAAS,CAa1F;AAED,wBAAgB,gBAAgB,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CASpE"}
@@ -1,3 +1,10 @@
1
+ export const TERMINAL_LIFECYCLE_STATES = ['completed', 'failed', 'cancelled'];
2
+ export function isTerminalLifecycleState(s) {
3
+ return TERMINAL_LIFECYCLE_STATES.includes(s);
4
+ }
5
+ export function computeActiveIds(map) {
6
+ return [...map.values()].filter((v) => !isTerminalLifecycleState(v.status)).map((v) => v.id);
7
+ }
1
8
  export function uniq(items) {
2
9
  return [...new Set(items)];
3
10
  }
@@ -13,7 +20,7 @@ export function updateDomainMetadata(domain, source) {
13
20
  };
14
21
  }
15
22
  export function isTerminalTurnState(state) {
16
- return state === 'completed' || state === 'failed' || state === 'cancelled';
23
+ return isTerminalLifecycleState(state);
17
24
  }
18
25
  export function canStartNewTurn(domain) {
19
26
  return domain.turnState === 'idle' || isTerminalTurnState(domain.turnState);
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../src/platform/runtime/telemetry/exporters/queue.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EACV,iBAAiB,EAEjB,oBAAoB,EACpB,QAAQ,EAET,MAAM,YAAY,CAAC;AAgCpB;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAmC;IAE9D,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,KAAK,CAAK;IAElB,0CAA0C;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,kEAAkE;IAClE,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;OAIG;gBAED,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACnC,QAAQ,CAAC,EAAE,oBAAoB;IAYjC,gDAAgD;IAChD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,+CAA+C;IAC/C,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IA4BpC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,0DAA0D;IAC1D,OAAO,CAAC,eAAe;IAWvB,4DAA4D;YAC9C,UAAU;IAgBxB,oEAAoE;IACpE,OAAO,CAAC,QAAQ;IAShB;;;OAGG;YACW,aAAa;IA0C3B,2DAA2D;IAC3D,OAAO,CAAC,WAAW;CAUpB"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../src/platform/runtime/telemetry/exporters/queue.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EACV,iBAAiB,EAEjB,oBAAoB,EACpB,QAAQ,EAET,MAAM,YAAY,CAAC;AA2BpB;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAmC;IAE9D,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,KAAK,CAAK;IAElB,0CAA0C;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,kEAAkE;IAClE,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;OAIG;gBAED,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACnC,QAAQ,CAAC,EAAE,oBAAoB;IAYjC,gDAAgD;IAChD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,+CAA+C;IAC/C,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IA4BpC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,0DAA0D;IAC1D,OAAO,CAAC,eAAe;IAWvB,4DAA4D;YAC9C,UAAU;IAgBxB,oEAAoE;IACpE,OAAO,CAAC,QAAQ;IAShB;;;OAGG;YACW,aAAa;IA0C3B,2DAA2D;IAC3D,OAAO,CAAC,WAAW;CAUpB"}
@@ -11,6 +11,7 @@ import { randomInt } from 'node:crypto';
11
11
  import { DEFAULT_QUEUE_CONFIG } from './types.js';
12
12
  import { summarizeError } from '../../../utils/error-display.js';
13
13
  import { logger } from '../../../utils/logger.js';
14
+ import { sleep } from '../../../utils/concurrency.js';
14
15
  /**
15
16
  * Computes the delay in milliseconds for a given retry attempt using
16
17
  * exponential backoff with jitter (±10%).
@@ -23,13 +24,6 @@ function computeDelay(attempt, config) {
23
24
  const jitter = randomInt(-jitterWindow, jitterWindow + 1);
24
25
  return Math.max(0, Math.round(capped + jitter));
25
26
  }
26
- /** Awaitable sleep. */
27
- function sleep(ms) {
28
- return new Promise((resolve) => {
29
- const timer = setTimeout(resolve, ms);
30
- timer.unref?.();
31
- });
32
- }
33
27
  /**
34
28
  * Bounded in-memory export queue with retry and overflow protection.
35
29
  *
@@ -4,7 +4,6 @@ import type { TransportPaths } from './transport-paths.js';
4
4
  import type { HttpSessionEnsureInput, HttpSessionMessageInput, HttpSteerSessionMessageInput, HttpTaskSubmitInput, HttpTransportTelemetryQuery, HttpTransportTelemetryStreamHandlers } from './http-types.js';
5
5
  export declare function createJsonRequestInit(token: string | null | undefined, body?: unknown, method?: string): RequestInit;
6
6
  export declare function maybeObject<T extends object>(value: unknown): T | null;
7
- export declare function isRecord(value: unknown): value is Record<string, unknown>;
8
7
  export declare function readArrayResponse<T>(body: unknown, key: string): readonly T[];
9
8
  export declare function readControlPlaneSnapshot(fetchImpl: typeof fetch, paths: TransportPaths, token: string | null | undefined): Promise<UiControlPlaneSnapshot>;
10
9
  export declare function buildSessionEnsureBody(input?: HttpSessionEnsureInput): Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"http-helpers.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/transports/http-helpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,mBAAmB,EACnB,2BAA2B,EAC3B,oCAAoC,EAErC,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,SAAQ,GAAG,WAAW,CAEnH;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,CAEtE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,CAO7E;AAwBD,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,OAAO,KAAK,EACvB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAoCjC;AAED,wBAAgB,sBAAsB,CAAC,KAAK,GAAE,sBAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBlG;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc/F;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,4BAA4B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBvF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,2BAA2B,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,eAAe,CAQ7H;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAc3E;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,OAAO,KAAK,EACvB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,QAAQ,EAAE,oCAAoC,GAC7C,OAAO,CAAC,MAAM,IAAI,CAAC,CAerB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvE"}
1
+ {"version":3,"file":"http-helpers.d.ts","sourceRoot":"","sources":["../../../../src/platform/runtime/transports/http-helpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,mBAAmB,EACnB,2BAA2B,EAC3B,oCAAoC,EAErC,MAAM,iBAAiB,CAAC;AAGzB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,SAAQ,GAAG,WAAW,CAEnH;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,CAEtE;AAID,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,CAO7E;AAwBD,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,OAAO,KAAK,EACvB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAoCjC;AAED,wBAAgB,sBAAsB,CAAC,KAAK,GAAE,sBAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBlG;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc/F;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,4BAA4B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBvF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,2BAA2B,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,eAAe,CAQ7H;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAc3E;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,OAAO,KAAK,EACvB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,QAAQ,EAAE,oCAAoC,GAC7C,OAAO,CAAC,MAAM,IAAI,CAAC,CAerB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvE"}
@@ -1,15 +1,13 @@
1
1
  import { buildUrl } from './transport-paths.js';
2
2
  import { createJsonInit, requestJsonRaw } from './http-json-transport.js';
3
3
  import { openServerSentEventStream } from './sse-stream.js';
4
+ import { isRecord } from '../../utils/record-coerce.js';
4
5
  export function createJsonRequestInit(token, body, method = 'GET') {
5
6
  return createJsonInit(token, body, method);
6
7
  }
7
8
  export function maybeObject(value) {
8
9
  return typeof value === 'object' && value !== null ? value : null;
9
10
  }
10
- export function isRecord(value) {
11
- return typeof value === 'object' && value !== null;
12
- }
13
11
  export function readArrayResponse(body, key) {
14
12
  if (Array.isArray(body))
15
13
  return body;
@@ -2,5 +2,7 @@ import type { RuntimeServices } from './services.js';
2
2
  import type { UiReadModel } from './ui-read-models-base.js';
3
3
  export declare function combineSubscriptions(...teardowns: Array<() => void>): () => void;
4
4
  export declare function createStoreBackedReadModel<TSnapshot>(runtimeServices: RuntimeServices, getSnapshot: () => TSnapshot): UiReadModel<TSnapshot>;
5
+ export declare function projectRecords<T>(ids: readonly string[], map: ReadonlyMap<string, T>, compare?: (a: T, b: T) => number): T[];
6
+ export declare function projectValues<T>(map: ReadonlyMap<string, T>, compare?: (a: T, b: T) => number): T[];
5
7
  export declare function listProviderIds(runtimeServices: RuntimeServices): readonly string[];
6
8
  //# sourceMappingURL=ui-read-model-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui-read-model-helpers.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/ui-read-model-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,wBAAgB,oBAAoB,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,IAAI,CAMhF;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAClD,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,MAAM,SAAS,GAC3B,WAAW,CAAC,SAAS,CAAC,CAOxB;AAED,wBAAgB,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,SAAS,MAAM,EAAE,CAQnF"}
1
+ {"version":3,"file":"ui-read-model-helpers.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/ui-read-model-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,wBAAgB,oBAAoB,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,IAAI,CAMhF;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAClD,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,MAAM,SAAS,GAC3B,WAAW,CAAC,SAAS,CAAC,CAOxB;AAED,wBAAgB,cAAc,CAAC,CAAC,EAC9B,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAC/B,CAAC,EAAE,CAGL;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAC/B,CAAC,EAAE,CAGL;AAED,wBAAgB,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,SAAS,MAAM,EAAE,CAQnF"}
@@ -13,6 +13,14 @@ export function createStoreBackedReadModel(runtimeServices, getSnapshot) {
13
13
  },
14
14
  };
15
15
  }
16
+ export function projectRecords(ids, map, compare) {
17
+ const items = ids.map((id) => map.get(id)).filter((v) => v !== undefined);
18
+ return compare ? items.sort(compare) : items;
19
+ }
20
+ export function projectValues(map, compare) {
21
+ const items = [...map.values()];
22
+ return compare ? items.sort(compare) : items;
23
+ }
16
24
  export function listProviderIds(runtimeServices) {
17
25
  const providerIds = new Set(runtimeServices.providerRegistry.listProviders().map((provider) => provider.name));
18
26
  for (const model of runtimeServices.providerRegistry.listModels()) {
@@ -1 +1 @@
1
- {"version":3,"file":"ui-read-models-core.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/ui-read-models-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;CAC9C;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,GAAG,gBAAgB,CAmDvF"}
1
+ {"version":3,"file":"ui-read-models-core.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/ui-read-models-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;CAC9C;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,GAAG,gBAAgB,CAiDvF"}
@@ -1,4 +1,4 @@
1
- import { createStoreBackedReadModel, listProviderIds } from './ui-read-model-helpers.js';
1
+ import { createStoreBackedReadModel, listProviderIds, projectRecords, projectValues } from './ui-read-model-helpers.js';
2
2
  export function createCoreReadModels(runtimeServices) {
3
3
  const { runtimeStore } = runtimeServices;
4
4
  return {
@@ -29,9 +29,7 @@ export function createCoreReadModels(runtimeServices) {
29
29
  }),
30
30
  agents: createStoreBackedReadModel(runtimeServices, () => {
31
31
  const state = runtimeStore.getState().agents;
32
- const active = state.activeAgentIds
33
- .map((id) => state.agents.get(id))
34
- .filter((agent) => agent !== undefined);
32
+ const active = projectRecords(state.activeAgentIds, state.agents);
35
33
  return {
36
34
  active,
37
35
  totalSpawned: state.totalSpawned,
@@ -41,7 +39,7 @@ export function createCoreReadModels(runtimeServices) {
41
39
  }),
42
40
  tasks: createStoreBackedReadModel(runtimeServices, () => {
43
41
  const tasksState = runtimeStore.getState().tasks;
44
- const tasks = [...tasksState.tasks.values()].sort((a, b) => {
42
+ const tasks = projectValues(tasksState.tasks, (a, b) => {
45
43
  const aTime = a.startedAt ?? a.queuedAt;
46
44
  const bTime = b.startedAt ?? b.queuedAt;
47
45
  return bTime - aTime || a.title.localeCompare(b.title);
@@ -1 +1 @@
1
- {"version":3,"file":"ui-read-models-observability-remote.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/ui-read-models-observability-remote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAE1I,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACzC,CAAC;IACF,QAAQ,CAAC,GAAG,EAAE;QACZ,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,OAAO,wBAAwB,EAAE,aAAa,EAAE,CAAC;KACvF,CAAC;IACF,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACjF,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACzF,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACzF,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,YAAY,EAAE,SAAS,6BAA6B,EAAE,CAAC;QAChE,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;QACjD,QAAQ,CAAC,IAAI,EAAE,SAAS,sBAAsB,EAAE,CAAC;KAClD,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;CAChD;AAED,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,eAAe,GAAG,kBAAkB,CAsC3F"}
1
+ {"version":3,"file":"ui-read-models-observability-remote.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/ui-read-models-observability-remote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAE1I,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACzC,CAAC;IACF,QAAQ,CAAC,GAAG,EAAE;QACZ,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,OAAO,wBAAwB,EAAE,aAAa,EAAE,CAAC;KACvF,CAAC;IACF,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACjF,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACzF,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACzF,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,YAAY,EAAE,SAAS,6BAA6B,EAAE,CAAC;QAChE,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;QACjD,QAAQ,CAAC,IAAI,EAAE,SAAS,sBAAsB,EAAE,CAAC;KAClD,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;CAChD;AAED,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,eAAe,GAAG,kBAAkB,CAoC3F"}
@@ -1,4 +1,4 @@
1
- import { createStoreBackedReadModel } from './ui-read-model-helpers.js';
1
+ import { createStoreBackedReadModel, projectRecords } from './ui-read-model-helpers.js';
2
2
  export function createRemoteReadModels(runtimeServices) {
3
3
  const { runtimeStore } = runtimeServices;
4
4
  return {
@@ -16,9 +16,7 @@ export function createRemoteReadModels(runtimeServices) {
16
16
  acp: {
17
17
  transportState: state.acp.managerTransportState,
18
18
  totalMessages: state.acp.totalMessages,
19
- activeConnections: state.acp.activeConnectionIds
20
- .map((id) => state.acp.connections.get(id))
21
- .filter((connection) => connection !== undefined),
19
+ activeConnections: projectRecords(state.acp.activeConnectionIds, state.acp.connections),
22
20
  },
23
21
  pools: runtimeServices.remoteRunnerRegistry.listPools(),
24
22
  contracts: runtimeServices.remoteRunnerRegistry.listContracts(),
@@ -1 +1 @@
1
- {"version":3,"file":"ui-read-models-operations.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/ui-read-models-operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui-read-models-operations.d.ts","sourceRoot":"","sources":["../../../src/platform/runtime/ui-read-models-operations.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,11 @@
1
- import { combineSubscriptions, createStoreBackedReadModel } from './ui-read-model-helpers.js';
1
+ import { combineSubscriptions, createStoreBackedReadModel, projectRecords, projectValues } from './ui-read-model-helpers.js';
2
2
  export function createOperationsReadModels(runtimeServices, options = {}) {
3
3
  const { runtimeStore } = runtimeServices;
4
4
  return {
5
5
  automation: createStoreBackedReadModel(runtimeServices, () => {
6
6
  const state = runtimeStore.getState();
7
- const jobs = state.automation.jobIds
8
- .map((id) => state.automation.jobs.get(id))
9
- .filter((job) => job !== undefined)
10
- .sort((a, b) => (b.nextRunAt ?? 0) - (a.nextRunAt ?? 0) || a.name.localeCompare(b.name));
11
- const runs = state.automation.runIds
12
- .map((id) => state.automation.runs.get(id))
13
- .filter((run) => run !== undefined)
14
- .sort((a, b) => b.queuedAt - a.queuedAt || a.id.localeCompare(b.id));
7
+ const jobs = projectRecords(state.automation.jobIds, state.automation.jobs, (a, b) => (b.nextRunAt ?? 0) - (a.nextRunAt ?? 0) || a.name.localeCompare(b.name));
8
+ const runs = projectRecords(state.automation.runIds, state.automation.runs, (a, b) => b.queuedAt - a.queuedAt || a.id.localeCompare(b.id));
15
9
  return {
16
10
  jobs,
17
11
  runs,
@@ -29,10 +23,7 @@ export function createOperationsReadModels(runtimeServices, options = {}) {
29
23
  }),
30
24
  routes: createStoreBackedReadModel(runtimeServices, () => {
31
25
  const state = runtimeStore.getState().routes;
32
- const bindings = state.bindingIds
33
- .map((id) => state.bindings.get(id))
34
- .filter((binding) => binding !== undefined)
35
- .sort((a, b) => b.lastSeenAt - a.lastSeenAt || a.id.localeCompare(b.id));
26
+ const bindings = projectRecords(state.bindingIds, state.bindings, (a, b) => b.lastSeenAt - a.lastSeenAt || a.id.localeCompare(b.id));
36
27
  return {
37
28
  bindings,
38
29
  bindingIdsBySurface: state.bindingIdsBySurface,
@@ -44,10 +35,7 @@ export function createOperationsReadModels(runtimeServices, options = {}) {
44
35
  }),
45
36
  watchers: createStoreBackedReadModel(runtimeServices, () => {
46
37
  const state = runtimeStore.getState().watchers;
47
- const watchers = state.watcherIds
48
- .map((id) => state.watchers.get(id))
49
- .filter((watcher) => watcher !== undefined)
50
- .sort((a, b) => (b.lastHeartbeatAt ?? 0) - (a.lastHeartbeatAt ?? 0) || a.id.localeCompare(b.id));
38
+ const watchers = projectRecords(state.watcherIds, state.watchers, (a, b) => (b.lastHeartbeatAt ?? 0) - (a.lastHeartbeatAt ?? 0) || a.id.localeCompare(b.id));
51
39
  return {
52
40
  watchers,
53
41
  totalWatchers: state.watcherIds.length,
@@ -58,7 +46,7 @@ export function createOperationsReadModels(runtimeServices, options = {}) {
58
46
  }),
59
47
  orchestration: createStoreBackedReadModel(runtimeServices, () => {
60
48
  const state = runtimeStore.getState().orchestration;
61
- const graphs = [...state.graphs.values()].sort((a, b) => b.createdAt - a.createdAt);
49
+ const graphs = projectValues(state.graphs, (a, b) => b.createdAt - a.createdAt);
62
50
  return {
63
51
  graphs,
64
52
  totalGraphs: state.totalGraphs,
@@ -70,10 +58,7 @@ export function createOperationsReadModels(runtimeServices, options = {}) {
70
58
  }),
71
59
  communication: createStoreBackedReadModel(runtimeServices, () => {
72
60
  const state = runtimeStore.getState().communication;
73
- const records = state.recentRecordIds
74
- .map((id) => state.records.get(id))
75
- .filter((record) => record !== undefined)
76
- .sort((a, b) => b.timestamp - a.timestamp);
61
+ const records = projectRecords(state.recentRecordIds, state.records, (a, b) => b.timestamp - a.timestamp);
77
62
  return {
78
63
  records,
79
64
  totalSent: state.totalSent,
@@ -84,10 +69,7 @@ export function createOperationsReadModels(runtimeServices, options = {}) {
84
69
  controlPlane: {
85
70
  getSnapshot() {
86
71
  const state = runtimeStore.getState().controlPlane;
87
- const clients = state.clientIds
88
- .map((id) => state.clients.get(id))
89
- .filter((client) => client !== undefined)
90
- .sort((a, b) => (b.lastSeenAt ?? 0) - (a.lastSeenAt ?? 0) || a.id.localeCompare(b.id));
72
+ const clients = projectRecords(state.clientIds, state.clients, (a, b) => (b.lastSeenAt ?? 0) - (a.lastSeenAt ?? 0) || a.id.localeCompare(b.id));
91
73
  return {
92
74
  connectionState: state.connectionState,
93
75
  activeClientIds: state.activeClientIds,
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/platform/scheduler/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/platform/scheduler/scheduler.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,8 @@
1
1
  import { PersistentStore } from '../state/persistent-store.js';
2
2
  import { logger } from '../utils/logger.js';
3
3
  import { summarizeError } from '../utils/error-display.js';
4
+ import { isRecord } from '../utils/record-coerce.js';
4
5
  const TASK_RUN_STATUSES = new Set(['running', 'completed', 'failed']);
5
- function isRecord(value) {
6
- return typeof value === 'object' && value !== null && !Array.isArray(value);
7
- }
8
6
  function isFiniteNumber(value) {
9
7
  return typeof value === 'number' && Number.isFinite(value);
10
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/platform/tools/exec/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAqB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAA+B,iBAAiB,EAAiB,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AA2e/E;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,GAC3D,OAAO,CA2CT;AA8ID,wBAAgB,cAAc,CAC5B,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE;IACP,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACjF,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CACnD,GACL,IAAI,CAmFN"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/platform/tools/exec/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAqB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAA+B,iBAAiB,EAAiB,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAse/E;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,GAC3D,OAAO,CA2CT;AA8ID,wBAAgB,cAAc,CAC5B,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE;IACP,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACjF,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CACnD,GACL,IAAI,CAmFN"}
@@ -7,7 +7,7 @@ import { ProcessManager } from '../shared/process-manager.js';
7
7
  import { guardExecCommand, formatDenialResponse } from './ast-guard.js';
8
8
  import { executeFileOperations } from './file-ops.js';
9
9
  import { DEFAULT_ALLOWED_CLASSES } from '../../runtime/permissions/normalization/verdict.js';
10
- import { mapWithConcurrency } from '../../utils/concurrency.js';
10
+ import { mapWithConcurrency, sleep } from '../../utils/concurrency.js';
11
11
  import { compileSafeRegExp, safeRegExpTest } from '../../utils/safe-regex.js';
12
12
  const DEFAULT_TIMEOUT_MS = 120_000;
13
13
  const PROGRESS_AUTO_THRESHOLD_MS = 30_000;
@@ -78,12 +78,6 @@ function resolveCwd(cwd, workingDirectory) {
78
78
  return effective;
79
79
  return resolve(workingDirectory, effective);
80
80
  }
81
- function sleep(ms) {
82
- return new Promise((resolve) => {
83
- const timer = setTimeout(resolve, ms);
84
- timer.unref?.();
85
- });
86
- }
87
81
  function computeRetryDelay(attempt, delayMs, backoff, maxDelayMs = 30_000) {
88
82
  if (backoff === 'fixed')
89
83
  return delayMs;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/platform/tools/fetch/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAsF,MAAM,aAAa,CAAC;AAClI,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAUxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAM/E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACnF,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CAClF;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AASD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAC/D,OAAO,CAAC,eAAe,CAAK;IAE5B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAOtE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAiBxC,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;CAkFpF;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAE5G;AAgfD,wBAAgB,eAAe,CAC7B,IAAI,GAAE,gBAAqB,EAC3B,OAAO,sBAA4B,GAClC,IAAI,CAiCN"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/platform/tools/fetch/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAsF,MAAM,aAAa,CAAC;AAClI,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAUxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAM/E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACnF,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CAClF;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AASD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAC/D,OAAO,CAAC,eAAe,CAAK;IAE5B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAOtE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAiBxC,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;CAkFpF;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAE5G;AAseD,wBAAgB,eAAe,CAC7B,IAAI,GAAE,gBAAqB,EAC3B,OAAO,sBAA4B,GAClC,IAAI,CAiCN"}
@@ -4,9 +4,9 @@ import { applySanitizer, resolveSanitizeMode } from './sanitizer.js';
4
4
  import { classifyHostTrustTier, emitSsrfDeny, emitHostTrustTier, extractHostname, } from './trust-tiers.js';
5
5
  import { applyExtract, sniffContentType } from './extract.js';
6
6
  import { summarizeError } from '../../utils/error-display.js';
7
- import { instrumentedFetch } from '../../utils/fetch-with-timeout.js';
7
+ import { instrumentedFetch, createTimeoutController } from '../../utils/fetch-with-timeout.js';
8
8
  import { toRecord } from '../../utils/record-coerce.js';
9
- import { mapWithConcurrency } from '../../utils/concurrency.js';
9
+ import { mapWithConcurrency, sleep } from '../../utils/concurrency.js';
10
10
  const MAX_CACHE_SIZE = 500;
11
11
  const MAX_FETCH_URLS = 20;
12
12
  const MAX_PARALLEL_FETCHES = 5;
@@ -88,7 +88,7 @@ export class FetchRuntimeService {
88
88
  results = [];
89
89
  for (let i = 0; i < input.urls.length; i++) {
90
90
  if (i > 0 && rateLimitMs > 0) {
91
- await delay(rateLimitMs);
91
+ await sleep(rateLimitMs);
92
92
  }
93
93
  results.push(await fetchOne(input.urls[i], fetchOpts, this));
94
94
  }
@@ -135,12 +135,6 @@ function cacheKey(url, params, extract, verbosity) {
135
135
  : url;
136
136
  return `${base}|${extract}|${verbosity}`;
137
137
  }
138
- function delay(ms) {
139
- return new Promise((r) => {
140
- const timer = setTimeout(r, ms);
141
- timer.unref?.();
142
- });
143
- }
144
138
  function applyAuthHeaders(headers, auth) {
145
139
  switch (auth.type) {
146
140
  case 'bearer':
@@ -172,31 +166,26 @@ function encodeFormBodyData(bodyData) {
172
166
  return params.toString();
173
167
  }
174
168
  async function fetchOneRaw(urlInput, headers, method, body, effectiveUrl, trustTierConfig, sanitizationEnabled) {
175
- const controller = new AbortController();
176
- const timer = setTimeout(() => controller.abort(), urlInput.timeout_ms ?? DEFAULT_TIMEOUT_MS);
177
- timer.unref?.();
169
+ const { signal, dispose } = createTimeoutController(urlInput.timeout_ms ?? DEFAULT_TIMEOUT_MS);
178
170
  try {
179
- const response = sanitizationEnabled
171
+ return sanitizationEnabled
180
172
  ? await fetchWithValidatedRedirects({
181
173
  url: effectiveUrl,
182
174
  method,
183
175
  headers,
184
176
  body,
185
- signal: controller.signal,
177
+ signal,
186
178
  trustTierConfig,
187
179
  })
188
180
  : await instrumentedFetch(effectiveUrl, {
189
181
  method,
190
182
  ...(Object.keys(headers).length > 0 ? { headers: headers } : {}),
191
183
  ...(body !== undefined ? { body } : {}),
192
- signal: controller.signal,
184
+ signal,
193
185
  });
194
- clearTimeout(timer);
195
- return response;
196
186
  }
197
- catch (err) {
198
- clearTimeout(timer);
199
- throw err;
187
+ finally {
188
+ dispose();
200
189
  }
201
190
  }
202
191
  async function fetchWithValidatedRedirects(input) {
@@ -1 +1 @@
1
- {"version":3,"file":"process-manager.d.ts","sourceRoot":"","sources":["../../../../src/platform/tools/shared/process-manager.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAKrF;;;;;GAKG;AAIH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAQD,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAID,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAID,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,MAAM,CAAmD;IAIjE,OAAO,CAAC,KAAK;IAMb;;;;;;;;;;OAUG;IACG,KAAK,CACT,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACvC,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC,eAAe,CAAC;IA2G3B,iFAAiF;IACjF,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAKpD,kEAAkE;IAClE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAUrE;;;OAGG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAczB,yEAAyE;IACzE,IAAI,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAUvE;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAqDlD,OAAO,CAAC,uBAAuB;CAWhC"}
1
+ {"version":3,"file":"process-manager.d.ts","sourceRoot":"","sources":["../../../../src/platform/tools/shared/process-manager.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAMrF;;;;;GAKG;AAIH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAQD,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAID,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAID,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,MAAM,CAAmD;IAIjE,OAAO,CAAC,KAAK;IAMb;;;;;;;;;;OAUG;IACG,KAAK,CACT,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACvC,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC,eAAe,CAAC;IA2G3B,iFAAiF;IACjF,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAKpD,kEAAkE;IAClE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAUrE;;;OAGG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAczB,yEAAyE;IACzE,IAAI,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAUvE;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAqDlD,OAAO,CAAC,uBAAuB;CAWhC"}
@@ -1,6 +1,7 @@
1
1
  /** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
2
2
  import { summarizeError } from '../../utils/error-display.js';
3
3
  import { logger } from '../../utils/logger.js';
4
+ import { sleep } from '../../utils/concurrency.js';
4
5
  const MAX_PROCESS_OUTPUT_BYTES = 256 * 1024;
5
6
  const MAX_COMPLETED_PROCESSES = 100;
6
7
  const COMPLETED_PROCESS_TTL_MS = 30 * 60 * 1000;
@@ -272,9 +273,3 @@ async function readProcessStream(stream) {
272
273
  reader.releaseLock();
273
274
  }
274
275
  }
275
- function sleep(ms) {
276
- return new Promise((resolve) => {
277
- const timer = setTimeout(resolve, ms);
278
- timer.unref?.();
279
- });
280
- }
@@ -1,3 +1,4 @@
1
+ export { sleep } from '../knowledge/cooperative.js';
1
2
  /** Run async work with a fixed concurrency cap while preserving input order. */
2
3
  export declare function mapWithConcurrency<T, R>(items: readonly T[], limit: number, worker: (item: T, index: number) => Promise<R>): Promise<R[]>;
3
4
  //# sourceMappingURL=concurrency.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/concurrency.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAC3C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAC7C,OAAO,CAAC,CAAC,EAAE,CAAC,CAmBd"}
1
+ {"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/concurrency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,gFAAgF;AAChF,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAC3C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAC7C,OAAO,CAAC,CAAC,EAAE,CAAC,CAmBd"}
@@ -1,3 +1,4 @@
1
+ export { sleep } from '../knowledge/cooperative.js';
1
2
  /** Run async work with a fixed concurrency cap while preserving input order. */
2
3
  export async function mapWithConcurrency(items, limit, worker) {
3
4
  const concurrency = Math.max(1, Math.floor(limit));
@@ -26,6 +26,15 @@ export interface ErrorNormalizationOptions {
26
26
  export interface ProviderErrorNormalizationOptions extends ProviderErrorOptions {
27
27
  readonly fallbackMessage?: string | undefined;
28
28
  }
29
+ /**
30
+ * redactedErrorMessage — extracts and redacts a human-readable message from any thrown value.
31
+ *
32
+ * Use for user-facing error output where the raw message should never leak
33
+ * bearer tokens, API keys, or other sensitive data. Do NOT use for logger
34
+ * fields, structured result/error fields, or diagnostic context — use
35
+ * `summarizeError` or the structured `normalizeError` for those.
36
+ */
37
+ export declare function redactedErrorMessage(error: unknown): string;
29
38
  export declare function normalizeError(error: unknown, options?: ErrorNormalizationOptions): NormalizedError;
30
39
  export declare function summarizeError(error: unknown, options?: ErrorNormalizationOptions): string;
31
40
  export declare function formatError(error: unknown, options?: ErrorNormalizationOptions): string;
@@ -1 +1 @@
1
- {"version":3,"file":"error-display.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/error-display.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAE,KAAK,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9I,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAuBnF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACnD;AAED,MAAM,WAAW,iCAAkC,SAAQ,oBAAoB;IAC7E,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C;AAmJD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,eAAe,CA6CvG;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,MAAM,CAE9F;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,MAAM,CAU3F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,yBAAyB,CAkBzH;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,iCAAsC,GAAG,aAAa,CA0D9G;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnF"}
1
+ {"version":3,"file":"error-display.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/error-display.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAE,KAAK,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9I,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAuBnF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACnD;AAED,MAAM,WAAW,iCAAkC,SAAQ,oBAAoB;IAC7E,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C;AAmJD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,eAAe,CA6CvG;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,MAAM,CAE9F;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,MAAM,CAU3F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,yBAAyB,CAkBzH;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,iCAAsC,GAAG,aAAa,CA0D9G;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnF"}