@pellux/goodvibes-sdk 0.21.29 → 0.21.33

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 (323) hide show
  1. package/dist/_internal/contracts/zod-schemas/accounts.d.ts +9 -9
  2. package/dist/_internal/contracts/zod-schemas/auth.d.ts +1 -1
  3. package/dist/_internal/daemon/context.d.ts +1 -0
  4. package/dist/_internal/daemon/context.d.ts.map +1 -1
  5. package/dist/_internal/daemon/error-response.js +22 -22
  6. package/dist/_internal/daemon/integration-route-types.d.ts +2 -1
  7. package/dist/_internal/daemon/integration-route-types.d.ts.map +1 -1
  8. package/dist/_internal/daemon/knowledge-routes.js +5 -5
  9. package/dist/_internal/daemon/media-routes.d.ts.map +1 -1
  10. package/dist/_internal/daemon/media-routes.js +4 -3
  11. package/dist/_internal/daemon/operator.d.ts +1 -1
  12. package/dist/_internal/daemon/operator.d.ts.map +1 -1
  13. package/dist/_internal/daemon/operator.js +2 -0
  14. package/dist/_internal/daemon/runtime-route-types.d.ts +2 -1
  15. package/dist/_internal/daemon/runtime-route-types.d.ts.map +1 -1
  16. package/dist/_internal/daemon/runtime-routes.d.ts +1 -1
  17. package/dist/_internal/daemon/runtime-routes.d.ts.map +1 -1
  18. package/dist/_internal/daemon/runtime-routes.js +1 -0
  19. package/dist/_internal/daemon/telemetry-routes.d.ts.map +1 -1
  20. package/dist/_internal/daemon/telemetry-routes.js +13 -12
  21. package/dist/_internal/errors/daemon-error-contract.d.ts +17 -0
  22. package/dist/_internal/errors/daemon-error-contract.d.ts.map +1 -1
  23. package/dist/_internal/errors/daemon-error-contract.js +17 -1
  24. package/dist/_internal/errors/index.d.ts +2 -1
  25. package/dist/_internal/errors/index.d.ts.map +1 -1
  26. package/dist/_internal/errors/index.js +1 -0
  27. package/dist/_internal/platform/artifacts/store.d.ts.map +1 -1
  28. package/dist/_internal/platform/artifacts/store.js +2 -1
  29. package/dist/_internal/platform/automation/scheduler-capacity.d.ts +29 -0
  30. package/dist/_internal/platform/automation/scheduler-capacity.d.ts.map +1 -0
  31. package/dist/_internal/platform/automation/scheduler-capacity.js +31 -0
  32. package/dist/_internal/platform/channels/delivery/shared.d.ts.map +1 -1
  33. package/dist/_internal/platform/channels/delivery/shared.js +3 -2
  34. package/dist/_internal/platform/channels/delivery/strategies-bridge.d.ts.map +1 -1
  35. package/dist/_internal/platform/channels/delivery/strategies-bridge.js +3 -2
  36. package/dist/_internal/platform/channels/delivery/strategies-core.d.ts.map +1 -1
  37. package/dist/_internal/platform/channels/delivery/strategies-core.js +5 -4
  38. package/dist/_internal/platform/channels/delivery/strategies-enterprise.d.ts.map +1 -1
  39. package/dist/_internal/platform/channels/delivery/strategies-enterprise.js +4 -3
  40. package/dist/_internal/platform/companion/companion-chat-rate-limiter.d.ts +7 -0
  41. package/dist/_internal/platform/companion/companion-chat-rate-limiter.d.ts.map +1 -1
  42. package/dist/_internal/platform/companion/companion-chat-rate-limiter.js +16 -0
  43. package/dist/_internal/platform/config/manager.d.ts.map +1 -1
  44. package/dist/_internal/platform/config/manager.js +2 -1
  45. package/dist/_internal/platform/config/schema-domain-runtime.d.ts +6 -0
  46. package/dist/_internal/platform/config/schema-domain-runtime.d.ts.map +1 -1
  47. package/dist/_internal/platform/config/schema-domain-runtime.js +22 -0
  48. package/dist/_internal/platform/config/schema-types.d.ts +16 -2
  49. package/dist/_internal/platform/config/schema-types.d.ts.map +1 -1
  50. package/dist/_internal/platform/config/schema.d.ts.map +1 -1
  51. package/dist/_internal/platform/config/schema.js +1 -0
  52. package/dist/_internal/platform/config/service-registry.d.ts.map +1 -1
  53. package/dist/_internal/platform/config/service-registry.js +2 -1
  54. package/dist/_internal/platform/control-plane/gateway-web-ui.d.ts +0 -1
  55. package/dist/_internal/platform/control-plane/gateway-web-ui.d.ts.map +1 -1
  56. package/dist/_internal/platform/control-plane/gateway-web-ui.js +7 -6
  57. package/dist/_internal/platform/control-plane/gateway.d.ts.map +1 -1
  58. package/dist/_internal/platform/control-plane/gateway.js +7 -0
  59. package/dist/_internal/platform/control-plane/session-broker.d.ts.map +1 -1
  60. package/dist/_internal/platform/control-plane/session-broker.js +38 -5
  61. package/dist/_internal/platform/core/orchestrator-tool-runtime.d.ts.map +1 -1
  62. package/dist/_internal/platform/core/orchestrator-tool-runtime.js +6 -6
  63. package/dist/_internal/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
  64. package/dist/_internal/platform/core/orchestrator-turn-loop.js +10 -2
  65. package/dist/_internal/platform/core/orchestrator.d.ts.map +1 -1
  66. package/dist/_internal/platform/core/orchestrator.js +2 -0
  67. package/dist/_internal/platform/daemon/facade-composition.d.ts +4 -131
  68. package/dist/_internal/platform/daemon/facade-composition.d.ts.map +1 -1
  69. package/dist/_internal/platform/daemon/facade-composition.js +9 -10
  70. package/dist/_internal/platform/daemon/facade-types.d.ts +141 -0
  71. package/dist/_internal/platform/daemon/facade-types.d.ts.map +1 -0
  72. package/dist/_internal/platform/daemon/facade-types.js +1 -0
  73. package/dist/_internal/platform/daemon/http/rate-limiter.d.ts +23 -0
  74. package/dist/_internal/platform/daemon/http/rate-limiter.d.ts.map +1 -0
  75. package/dist/_internal/platform/daemon/http/rate-limiter.js +71 -0
  76. package/dist/_internal/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
  77. package/dist/_internal/platform/daemon/http/router-route-contexts.js +2 -1
  78. package/dist/_internal/platform/daemon/http/router.d.ts.map +1 -1
  79. package/dist/_internal/platform/daemon/http/router.js +90 -66
  80. package/dist/_internal/platform/daemon/http/runtime-route-types.d.ts.map +1 -1
  81. package/dist/_internal/platform/daemon/http-listener.d.ts +14 -0
  82. package/dist/_internal/platform/daemon/http-listener.d.ts.map +1 -1
  83. package/dist/_internal/platform/daemon/http-listener.js +92 -86
  84. package/dist/_internal/platform/daemon/surface-delivery.d.ts.map +1 -1
  85. package/dist/_internal/platform/daemon/surface-delivery.js +6 -5
  86. package/dist/_internal/platform/discovery/mcp-scanner.d.ts.map +1 -1
  87. package/dist/_internal/platform/discovery/mcp-scanner.js +28 -22
  88. package/dist/_internal/platform/discovery/scanner.d.ts.map +1 -1
  89. package/dist/_internal/platform/discovery/scanner.js +38 -22
  90. package/dist/_internal/platform/export/session-export.d.ts +0 -1
  91. package/dist/_internal/platform/export/session-export.d.ts.map +1 -1
  92. package/dist/_internal/platform/export/session-export.js +1 -33
  93. package/dist/_internal/platform/hooks/runners/http.d.ts.map +1 -1
  94. package/dist/_internal/platform/hooks/runners/http.js +15 -1
  95. package/dist/_internal/platform/hooks/types.d.ts +7 -0
  96. package/dist/_internal/platform/hooks/types.d.ts.map +1 -1
  97. package/dist/_internal/platform/integrations/delivery.d.ts +3 -1
  98. package/dist/_internal/platform/integrations/delivery.d.ts.map +1 -1
  99. package/dist/_internal/platform/integrations/delivery.js +3 -2
  100. package/dist/_internal/platform/integrations/discord.d.ts.map +1 -1
  101. package/dist/_internal/platform/integrations/discord.js +6 -5
  102. package/dist/_internal/platform/integrations/ntfy.d.ts.map +1 -1
  103. package/dist/_internal/platform/integrations/ntfy.js +3 -2
  104. package/dist/_internal/platform/integrations/webhooks.d.ts.map +1 -1
  105. package/dist/_internal/platform/integrations/webhooks.js +12 -1
  106. package/dist/_internal/platform/intelligence/lsp/binary-downloader.d.ts.map +1 -1
  107. package/dist/_internal/platform/intelligence/lsp/binary-downloader.js +4 -3
  108. package/dist/_internal/platform/knowledge/store.d.ts.map +1 -1
  109. package/dist/_internal/platform/knowledge/store.js +50 -25
  110. package/dist/_internal/platform/mcp/client.d.ts.map +1 -1
  111. package/dist/_internal/platform/mcp/client.js +3 -2
  112. package/dist/_internal/platform/media/builtin-generation-providers.d.ts.map +1 -1
  113. package/dist/_internal/platform/media/builtin-generation-providers.js +4 -3
  114. package/dist/_internal/platform/media/builtin-image-understanding.d.ts.map +1 -1
  115. package/dist/_internal/platform/media/builtin-image-understanding.js +5 -4
  116. package/dist/_internal/platform/providers/anthropic-compat.d.ts.map +1 -1
  117. package/dist/_internal/platform/providers/anthropic-compat.js +5 -3
  118. package/dist/_internal/platform/providers/anthropic.d.ts.map +1 -1
  119. package/dist/_internal/platform/providers/anthropic.js +10 -7
  120. package/dist/_internal/platform/providers/builtin-catalog.d.ts.map +1 -1
  121. package/dist/_internal/platform/providers/builtin-catalog.js +3 -2
  122. package/dist/_internal/platform/providers/catalogue.d.ts +56 -0
  123. package/dist/_internal/platform/providers/catalogue.d.ts.map +1 -0
  124. package/dist/_internal/platform/providers/catalogue.js +111 -0
  125. package/dist/_internal/platform/providers/context-discovery.d.ts.map +1 -1
  126. package/dist/_internal/platform/providers/context-discovery.js +2 -1
  127. package/dist/_internal/platform/providers/credentials.d.ts +12 -0
  128. package/dist/_internal/platform/providers/credentials.d.ts.map +1 -0
  129. package/dist/_internal/platform/providers/credentials.js +54 -0
  130. package/dist/_internal/platform/providers/gemini.d.ts.map +1 -1
  131. package/dist/_internal/platform/providers/gemini.js +6 -5
  132. package/dist/_internal/platform/providers/github-copilot.d.ts.map +1 -1
  133. package/dist/_internal/platform/providers/github-copilot.js +2 -1
  134. package/dist/_internal/platform/providers/health.d.ts +15 -0
  135. package/dist/_internal/platform/providers/health.d.ts.map +1 -0
  136. package/dist/_internal/platform/providers/health.js +32 -0
  137. package/dist/_internal/platform/providers/llama-cpp.d.ts.map +1 -1
  138. package/dist/_internal/platform/providers/llama-cpp.js +5 -3
  139. package/dist/_internal/platform/providers/lm-studio.d.ts.map +1 -1
  140. package/dist/_internal/platform/providers/lm-studio.js +5 -3
  141. package/dist/_internal/platform/providers/model-benchmarks.d.ts.map +1 -1
  142. package/dist/_internal/platform/providers/model-benchmarks.js +2 -1
  143. package/dist/_internal/platform/providers/model-catalog-cache.d.ts.map +1 -1
  144. package/dist/_internal/platform/providers/model-catalog-cache.js +2 -1
  145. package/dist/_internal/platform/providers/model-limits.d.ts.map +1 -1
  146. package/dist/_internal/platform/providers/model-limits.js +2 -1
  147. package/dist/_internal/platform/providers/ollama.d.ts.map +1 -1
  148. package/dist/_internal/platform/providers/ollama.js +5 -3
  149. package/dist/_internal/platform/providers/openai-codex.d.ts.map +1 -1
  150. package/dist/_internal/platform/providers/openai-codex.js +4 -2
  151. package/dist/_internal/platform/providers/openai-compat.d.ts.map +1 -1
  152. package/dist/_internal/platform/providers/openai-compat.js +3 -2
  153. package/dist/_internal/platform/providers/provider-not-found-error.d.ts +3 -1
  154. package/dist/_internal/platform/providers/provider-not-found-error.d.ts.map +1 -1
  155. package/dist/_internal/platform/providers/provider-not-found-error.js +3 -4
  156. package/dist/_internal/platform/providers/well-known-endpoints.d.ts +53 -0
  157. package/dist/_internal/platform/providers/well-known-endpoints.d.ts.map +1 -0
  158. package/dist/_internal/platform/providers/well-known-endpoints.js +52 -0
  159. package/dist/_internal/platform/runtime/auth/oauth-core.d.ts.map +1 -1
  160. package/dist/_internal/platform/runtime/auth/oauth-core.js +2 -1
  161. package/dist/_internal/platform/runtime/bootstrap-runtime-events.d.ts.map +1 -1
  162. package/dist/_internal/platform/runtime/bootstrap-runtime-events.js +2 -0
  163. package/dist/_internal/platform/runtime/contracts/index.d.ts.map +1 -1
  164. package/dist/_internal/platform/runtime/contracts/index.js +1 -5
  165. package/dist/_internal/platform/runtime/contracts/migrations/schemas.d.ts +57 -0
  166. package/dist/_internal/platform/runtime/contracts/migrations/schemas.d.ts.map +1 -0
  167. package/dist/_internal/platform/runtime/contracts/migrations/schemas.js +157 -0
  168. package/dist/_internal/platform/runtime/correlation.d.ts +44 -0
  169. package/dist/_internal/platform/runtime/correlation.d.ts.map +1 -0
  170. package/dist/_internal/platform/runtime/correlation.js +40 -0
  171. package/dist/_internal/platform/runtime/emitters/security.d.ts +32 -0
  172. package/dist/_internal/platform/runtime/emitters/security.d.ts.map +1 -1
  173. package/dist/_internal/platform/runtime/emitters/security.js +26 -0
  174. package/dist/_internal/platform/runtime/emitters/tools.d.ts +11 -2
  175. package/dist/_internal/platform/runtime/emitters/tools.d.ts.map +1 -1
  176. package/dist/_internal/platform/runtime/emitters/tools.js +27 -0
  177. package/dist/_internal/platform/runtime/emitters/transport.d.ts +27 -0
  178. package/dist/_internal/platform/runtime/emitters/transport.d.ts.map +1 -1
  179. package/dist/_internal/platform/runtime/emitters/transport.js +19 -0
  180. package/dist/_internal/platform/runtime/emitters/turn.d.ts +22 -1
  181. package/dist/_internal/platform/runtime/emitters/turn.d.ts.map +1 -1
  182. package/dist/_internal/platform/runtime/emitters/turn.js +9 -0
  183. package/dist/_internal/platform/runtime/events/index.d.ts +45 -0
  184. package/dist/_internal/platform/runtime/events/index.d.ts.map +1 -1
  185. package/dist/_internal/platform/runtime/events/index.js +130 -22
  186. package/dist/_internal/platform/runtime/events/ops.d.ts +8 -0
  187. package/dist/_internal/platform/runtime/events/ops.d.ts.map +1 -1
  188. package/dist/_internal/platform/runtime/events/security.d.ts +47 -0
  189. package/dist/_internal/platform/runtime/events/security.d.ts.map +1 -1
  190. package/dist/_internal/platform/runtime/events/tools.d.ts +14 -2
  191. package/dist/_internal/platform/runtime/events/tools.d.ts.map +1 -1
  192. package/dist/_internal/platform/runtime/events/transport.d.ts +31 -0
  193. package/dist/_internal/platform/runtime/events/transport.d.ts.map +1 -1
  194. package/dist/_internal/platform/runtime/events/turn.d.ts +25 -1
  195. package/dist/_internal/platform/runtime/events/turn.d.ts.map +1 -1
  196. package/dist/_internal/platform/runtime/events/workspace.d.ts +16 -0
  197. package/dist/_internal/platform/runtime/events/workspace.d.ts.map +1 -1
  198. package/dist/_internal/platform/runtime/integration/helpers.d.ts.map +1 -1
  199. package/dist/_internal/platform/runtime/integration/helpers.js +5 -0
  200. package/dist/_internal/platform/runtime/llm-observability.d.ts +43 -0
  201. package/dist/_internal/platform/runtime/llm-observability.d.ts.map +1 -0
  202. package/dist/_internal/platform/runtime/llm-observability.js +107 -0
  203. package/dist/_internal/platform/runtime/metrics.d.ts +49 -0
  204. package/dist/_internal/platform/runtime/metrics.d.ts.map +1 -0
  205. package/dist/_internal/platform/runtime/metrics.js +114 -0
  206. package/dist/_internal/platform/runtime/ops/control-plane.d.ts +5 -2
  207. package/dist/_internal/platform/runtime/ops/control-plane.d.ts.map +1 -1
  208. package/dist/_internal/platform/runtime/ops/control-plane.js +5 -4
  209. package/dist/_internal/platform/runtime/perf/slo-collector.d.ts.map +1 -1
  210. package/dist/_internal/platform/runtime/perf/slo-collector.js +2 -0
  211. package/dist/_internal/platform/runtime/permissions/divergence-dashboard.d.ts +3 -1
  212. package/dist/_internal/platform/runtime/permissions/divergence-dashboard.d.ts.map +1 -1
  213. package/dist/_internal/platform/runtime/permissions/divergence-dashboard.js +3 -2
  214. package/dist/_internal/platform/runtime/permissions/policy-loader.d.ts +3 -1
  215. package/dist/_internal/platform/runtime/permissions/policy-loader.d.ts.map +1 -1
  216. package/dist/_internal/platform/runtime/permissions/policy-loader.js +3 -2
  217. package/dist/_internal/platform/runtime/permissions/policy-signer.d.ts.map +1 -1
  218. package/dist/_internal/platform/runtime/permissions/policy-signer.js +7 -2
  219. package/dist/_internal/platform/runtime/permissions/simulation.d.ts +3 -1
  220. package/dist/_internal/platform/runtime/permissions/simulation.d.ts.map +1 -1
  221. package/dist/_internal/platform/runtime/permissions/simulation.js +3 -2
  222. package/dist/_internal/platform/runtime/remote/transport-contract.d.ts +14 -2
  223. package/dist/_internal/platform/runtime/remote/transport-contract.d.ts.map +1 -1
  224. package/dist/_internal/platform/runtime/remote/transport-contract.js +7 -5
  225. package/dist/_internal/platform/runtime/store/helpers/reducers/sync.d.ts.map +1 -1
  226. package/dist/_internal/platform/runtime/store/helpers/reducers/sync.js +12 -1
  227. package/dist/_internal/platform/runtime/tasks/manager.d.ts +7 -3
  228. package/dist/_internal/platform/runtime/tasks/manager.d.ts.map +1 -1
  229. package/dist/_internal/platform/runtime/tasks/manager.js +7 -6
  230. package/dist/_internal/platform/runtime/telemetry/api-helpers.d.ts +14 -0
  231. package/dist/_internal/platform/runtime/telemetry/api-helpers.d.ts.map +1 -1
  232. package/dist/_internal/platform/runtime/telemetry/api-helpers.js +59 -0
  233. package/dist/_internal/platform/runtime/telemetry/api.d.ts.map +1 -1
  234. package/dist/_internal/platform/runtime/telemetry/api.js +19 -4
  235. package/dist/_internal/platform/runtime/telemetry/exporters/otlp.d.ts.map +1 -1
  236. package/dist/_internal/platform/runtime/telemetry/exporters/otlp.js +19 -6
  237. package/dist/_internal/platform/runtime/telemetry/exporters/queue.d.ts.map +1 -1
  238. package/dist/_internal/platform/runtime/telemetry/exporters/queue.js +11 -4
  239. package/dist/_internal/platform/runtime/telemetry/meter.d.ts.map +1 -1
  240. package/dist/_internal/platform/runtime/telemetry/meter.js +7 -3
  241. package/dist/_internal/platform/runtime/telemetry/redaction-config.d.ts +9 -0
  242. package/dist/_internal/platform/runtime/telemetry/redaction-config.d.ts.map +1 -0
  243. package/dist/_internal/platform/runtime/telemetry/redaction-config.js +52 -0
  244. package/dist/_internal/platform/runtime/tools/phases/budget.d.ts.map +1 -1
  245. package/dist/_internal/platform/runtime/tools/phases/budget.js +3 -2
  246. package/dist/_internal/platform/runtime/transports/daemon-http-client.d.ts.map +1 -1
  247. package/dist/_internal/platform/runtime/transports/daemon-http-client.js +138 -17
  248. package/dist/_internal/platform/scheduler/scheduler.d.ts +19 -2
  249. package/dist/_internal/platform/scheduler/scheduler.d.ts.map +1 -1
  250. package/dist/_internal/platform/scheduler/scheduler.js +65 -25
  251. package/dist/_internal/platform/sessions/manager.d.ts.map +1 -1
  252. package/dist/_internal/platform/sessions/manager.js +6 -2
  253. package/dist/_internal/platform/state/memory-embedding-http.d.ts.map +1 -1
  254. package/dist/_internal/platform/state/memory-embedding-http.js +3 -2
  255. package/dist/_internal/platform/state/project-index.d.ts.map +1 -1
  256. package/dist/_internal/platform/state/project-index.js +6 -4
  257. package/dist/_internal/platform/tools/agent/index.d.ts.map +1 -1
  258. package/dist/_internal/platform/tools/agent/index.js +2 -1
  259. package/dist/_internal/platform/tools/analyze/git-modes.d.ts.map +1 -1
  260. package/dist/_internal/platform/tools/analyze/git-modes.js +2 -1
  261. package/dist/_internal/platform/tools/edit/core.d.ts.map +1 -1
  262. package/dist/_internal/platform/tools/edit/core.js +2 -1
  263. package/dist/_internal/platform/tools/exec/runtime.d.ts.map +1 -1
  264. package/dist/_internal/platform/tools/exec/runtime.js +3 -2
  265. package/dist/_internal/platform/tools/fetch/runtime.d.ts.map +1 -1
  266. package/dist/_internal/platform/tools/fetch/runtime.js +4 -2
  267. package/dist/_internal/platform/tools/read/index.d.ts.map +1 -1
  268. package/dist/_internal/platform/tools/read/index.js +2 -1
  269. package/dist/_internal/platform/tools/registry-tool/index.d.ts.map +1 -1
  270. package/dist/_internal/platform/tools/registry-tool/index.js +2 -1
  271. package/dist/_internal/platform/tools/state/index.d.ts.map +1 -1
  272. package/dist/_internal/platform/tools/state/index.js +2 -1
  273. package/dist/_internal/platform/tools/task/index.d.ts.map +1 -1
  274. package/dist/_internal/platform/tools/task/index.js +2 -1
  275. package/dist/_internal/platform/tools/team/index.d.ts.map +1 -1
  276. package/dist/_internal/platform/tools/team/index.js +2 -1
  277. package/dist/_internal/platform/tools/web-search/index.d.ts.map +1 -1
  278. package/dist/_internal/platform/tools/web-search/index.js +2 -1
  279. package/dist/_internal/platform/tools/worklist/index.d.ts.map +1 -1
  280. package/dist/_internal/platform/tools/worklist/index.js +2 -1
  281. package/dist/_internal/platform/types/errors.d.ts +12 -10
  282. package/dist/_internal/platform/types/errors.d.ts.map +1 -1
  283. package/dist/_internal/platform/types/errors.js +21 -20
  284. package/dist/_internal/platform/utils/error-display.d.ts.map +1 -1
  285. package/dist/_internal/platform/utils/error-display.js +6 -4
  286. package/dist/_internal/platform/utils/fetch-with-timeout.d.ts +17 -0
  287. package/dist/_internal/platform/utils/fetch-with-timeout.d.ts.map +1 -1
  288. package/dist/_internal/platform/utils/fetch-with-timeout.js +59 -0
  289. package/dist/_internal/platform/utils/record-coerce.d.ts +11 -0
  290. package/dist/_internal/platform/utils/record-coerce.d.ts.map +1 -0
  291. package/dist/_internal/platform/utils/record-coerce.js +12 -0
  292. package/dist/_internal/platform/utils/redaction.js +1 -1
  293. package/dist/_internal/platform/utils/ring-buffer.d.ts +54 -0
  294. package/dist/_internal/platform/utils/ring-buffer.d.ts.map +1 -0
  295. package/dist/_internal/platform/utils/ring-buffer.js +96 -0
  296. package/dist/_internal/platform/utils/shell-split.d.ts +11 -0
  297. package/dist/_internal/platform/utils/shell-split.d.ts.map +1 -0
  298. package/dist/_internal/platform/utils/shell-split.js +83 -0
  299. package/dist/_internal/platform/version.js +1 -1
  300. package/dist/_internal/platform/voice/providers/deepgram.d.ts.map +1 -1
  301. package/dist/_internal/platform/voice/providers/deepgram.js +2 -1
  302. package/dist/_internal/platform/voice/providers/elevenlabs.d.ts.map +1 -1
  303. package/dist/_internal/platform/voice/providers/elevenlabs.js +5 -4
  304. package/dist/_internal/platform/voice/providers/google.d.ts.map +1 -1
  305. package/dist/_internal/platform/voice/providers/google.js +5 -4
  306. package/dist/_internal/platform/voice/providers/microsoft.d.ts.map +1 -1
  307. package/dist/_internal/platform/voice/providers/microsoft.js +2 -1
  308. package/dist/_internal/platform/voice/providers/openai.d.ts.map +1 -1
  309. package/dist/_internal/platform/voice/providers/openai.js +4 -3
  310. package/dist/_internal/platform/voice/providers/shared.d.ts.map +1 -1
  311. package/dist/_internal/platform/voice/providers/shared.js +2 -1
  312. package/dist/_internal/platform/voice/providers/vydra.d.ts.map +1 -1
  313. package/dist/_internal/platform/voice/providers/vydra.js +3 -2
  314. package/dist/_internal/platform/watchers/registry.d.ts.map +1 -1
  315. package/dist/_internal/platform/watchers/registry.js +3 -2
  316. package/dist/_internal/platform/workflow/trigger-executor.d.ts.map +1 -1
  317. package/dist/_internal/platform/workflow/trigger-executor.js +5 -3
  318. package/dist/_internal/platform/workspace/daemon-home.d.ts.map +1 -1
  319. package/dist/_internal/platform/workspace/daemon-home.js +6 -2
  320. package/dist/_internal/platform/workspace/workspace-swap-manager.d.ts +1 -0
  321. package/dist/_internal/platform/workspace/workspace-swap-manager.d.ts.map +1 -1
  322. package/dist/_internal/platform/workspace/workspace-swap-manager.js +14 -2
  323. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import { VERSION } from '../../version.js';
2
+ import { sseSubscribers, telemetryBufferFill } from '../metrics.js';
2
3
  import { normalizeError } from '../../utils/error-display.js';
3
4
  import { SpanKind as SpanKinds, SpanStatusCode } from './types.js';
4
5
  import { ALL_DOMAINS, appendBounded, buildAttributes, buildListResponse, buildOtlpLogDocumentFromRecords, buildOtlpMetricDocumentFromState, buildOtlpTraceDocumentFromSpans, buildRecordId, buildSpanCursor, buildSpanId, clampLimit, DEFAULT_ERROR_LIMIT, DEFAULT_EVENT_LIMIT, DEFAULT_SPAN_LIMIT, extractErrorCandidate, extractProvider, extractRecordSequence, inferErrorSource, inferSeverity, isErrorEventType, normalizePayload, normalizeTraceId, sanitizeRecord, sanitizeSpan, SERVICE_NAME, summarizePayload, toAttributeValue, toObjectMap, } from './api-helpers.js';
@@ -153,6 +154,8 @@ export class TelemetryApiService {
153
154
  if (requestedCursor) {
154
155
  this.resolveCursor(this.records, requestedCursor);
155
156
  }
157
+ // Shared teardown closure — called from both abort and cancel paths (PERF-04).
158
+ let teardown = () => { };
156
159
  const stream = new ReadableStream({
157
160
  start: (controller) => {
158
161
  if (requestedCursor) {
@@ -171,12 +174,21 @@ export class TelemetryApiService {
171
174
  const projected = sanitizeRecord(record, view);
172
175
  controller.enqueue(encoder.encode(`id: ${projected.id}\nevent: telemetry\ndata: ${JSON.stringify(projected)}\n\n`));
173
176
  });
177
+ // C-1: update SSE subscriber gauge on open
178
+ sseSubscribers.set(this.subscribers.size, { stream_type: 'telemetry' });
174
179
  const heartbeat = setInterval(() => {
175
180
  controller.enqueue(encoder.encode(': heartbeat\n\n'));
176
181
  }, 15_000);
177
- request.signal.addEventListener('abort', () => {
182
+ // Don't block clean process exit (PERF-07).
183
+ heartbeat.unref?.();
184
+ teardown = () => {
178
185
  clearInterval(heartbeat);
179
186
  unsub();
187
+ // C-1: update SSE subscriber gauge on close
188
+ sseSubscribers.set(this.subscribers.size, { stream_type: 'telemetry' });
189
+ };
190
+ request.signal.addEventListener('abort', () => {
191
+ teardown();
180
192
  controller.close();
181
193
  }, { once: true });
182
194
  controller.enqueue(encoder.encode(`event: ready\ndata: ${JSON.stringify({
@@ -188,7 +200,8 @@ export class TelemetryApiService {
188
200
  })}\n\n`));
189
201
  },
190
202
  cancel: () => {
191
- unsub();
203
+ // PERF-04: cancel() path must also clear the heartbeat interval.
204
+ teardown();
192
205
  },
193
206
  });
194
207
  return new Response(stream, {
@@ -249,6 +262,8 @@ export class TelemetryApiService {
249
262
  appendBounded(this.errors, record, this.errorLimit);
250
263
  this.errorCountsByCategory.set(normalizedError.category, (this.errorCountsByCategory.get(normalizedError.category) ?? 0) + 1);
251
264
  }
265
+ // C-1: update telemetry buffer fill gauge
266
+ telemetryBufferFill.set(this.records.length / this.eventLimit);
252
267
  this.captureSyntheticSpan(record);
253
268
  this.notify(record);
254
269
  }
@@ -428,7 +443,7 @@ export class TelemetryApiService {
428
443
  return attributes;
429
444
  }
430
445
  applyRecordFilter(records, filter, view) {
431
- const filtered = [...records].filter((record) => this.recordMatches(record, filter));
446
+ const filtered = records.filter((record) => this.recordMatches(record, filter));
432
447
  filtered.sort((left, right) => {
433
448
  const timestampDelta = right.timestamp - left.timestamp;
434
449
  if (timestampDelta !== 0)
@@ -452,7 +467,7 @@ export class TelemetryApiService {
452
467
  }
453
468
  applySpanFilter(filter, view) {
454
469
  const normalizedTraceId = filter.traceId ? normalizeTraceId(filter.traceId) : undefined;
455
- const filtered = [...this.spans].filter((span) => {
470
+ const filtered = this.spans.filter((span) => {
456
471
  if (filter.since !== undefined && span.startTimeMs < filter.since)
457
472
  return false;
458
473
  if (filter.until !== undefined && span.endTimeMs > filter.until)
@@ -1 +1 @@
1
- {"version":3,"file":"otlp.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/telemetry/exporters/otlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAkF3D;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,YAAa,YAAW,YAAY;IAC/C,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAEtB;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;gBAEnC,MAAM,EAAE,UAAU;IAyB9B;;;;;;;;OAQG;IACG,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B;;;OAGG;YACW,WAAW;IA6BzB;;OAEG;IACH,OAAO,CAAC,eAAe;CAWxB"}
1
+ {"version":3,"file":"otlp.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/telemetry/exporters/otlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAoF3D;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,YAAa,YAAW,YAAY;IAC/C,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAEtB;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;gBAEnC,MAAM,EAAE,UAAU;IAyB9B;;;;;;;;OAQG;IACG,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAalD;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAe/B;;;OAGG;YACW,WAAW;IA6BzB;;OAEG;IACH,OAAO,CAAC,eAAe;CAexB"}
@@ -1,5 +1,7 @@
1
1
  import { DEFAULT_OTLP_CONFIG, DEFAULT_QUEUE_CONFIG } from './types.js';
2
2
  import { ExportQueue } from './queue.js';
3
+ import { logger } from '../../../utils/logger.js';
4
+ import { instrumentedFetch } from '../../../utils/fetch-with-timeout.js';
3
5
  /**
4
6
  * Serialises a ReadableSpan[] into OTLP/HTTP JSON format (simplified).
5
7
  *
@@ -137,7 +139,8 @@ export class OtlpExporter {
137
139
  }
138
140
  }
139
141
  catch (err) {
140
- console.error('[OtlpExporter] export() error (non-fatal):', err);
142
+ // OBS-07: use structured logger, not console
143
+ logger.error('[OtlpExporter] export() error (non-fatal)', { error: err instanceof Error ? err.message : String(err) });
141
144
  }
142
145
  }
143
146
  /**
@@ -153,7 +156,8 @@ export class OtlpExporter {
153
156
  await this._queue.drain();
154
157
  }
155
158
  catch (err) {
156
- console.error('[OtlpExporter] flush() error (non-fatal):', err);
159
+ // OBS-07: use structured logger, not console
160
+ logger.error('[OtlpExporter] flush() error (non-fatal)', { error: err instanceof Error ? err.message : String(err) });
157
161
  }
158
162
  }
159
163
  /**
@@ -170,7 +174,8 @@ export class OtlpExporter {
170
174
  await this._queue.shutdown();
171
175
  }
172
176
  catch (err) {
173
- console.error('[OtlpExporter] shutdown() error (non-fatal):', err);
177
+ // OBS-07: use structured logger, not console
178
+ logger.error('[OtlpExporter] shutdown() error (non-fatal)', { error: err instanceof Error ? err.message : String(err) });
174
179
  }
175
180
  }
176
181
  // ── Private HTTP transport ────────────────────────────────────────────────
@@ -183,7 +188,7 @@ export class OtlpExporter {
183
188
  const timer = setTimeout(() => controller.abort(), this._config.timeoutMs);
184
189
  try {
185
190
  const body = serialiseSpans(batch);
186
- const response = await fetch(this._config.endpoint, {
191
+ const response = await instrumentedFetch(this._config.endpoint, {
187
192
  method: 'POST',
188
193
  headers: {
189
194
  'Content-Type': 'application/json',
@@ -205,10 +210,18 @@ export class OtlpExporter {
205
210
  */
206
211
  _onExportResult(result) {
207
212
  if (result.code === 'failure') {
208
- console.error(`[OtlpExporter] Export failed permanently ${result.spanCount} span(s) lost after ${result.attempts} attempt(s): ${result.error}`);
213
+ // OBS-07: use structured logger so OTLP exporter failures appear in activity log
214
+ logger.error('[OtlpExporter] Export failed permanently — spans lost', {
215
+ spanCount: result.spanCount,
216
+ attempts: result.attempts,
217
+ error: result.error,
218
+ });
209
219
  }
210
220
  else if (result.code === 'dropped') {
211
- console.warn(`[OtlpExporter] Dropped ${result.spanCount} span(s) due to queue overflow`);
221
+ // OBS-07: use structured logger
222
+ logger.warn('[OtlpExporter] Dropped spans due to queue overflow', {
223
+ spanCount: result.spanCount,
224
+ });
212
225
  }
213
226
  }
214
227
  }
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/telemetry/exporters/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,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,CAAuB;IAElD,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;IA6BpC;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,0DAA0D;IAC1D,OAAO,CAAC,eAAe;IAOvB,4DAA4D;YAC9C,UAAU;IAgBxB,oEAAoE;IACpE,OAAO,CAAC,QAAQ;IAShB;;;OAGG;YACW,aAAa;IAyC3B,2DAA2D;IAC3D,OAAO,CAAC,WAAW;CAQpB"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/telemetry/exporters/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EACV,iBAAiB,EAEjB,oBAAoB,EACpB,QAAQ,EAET,MAAM,YAAY,CAAC;AA4BpB;;;;;;;;;;;;;;;;;;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,CAAuB;IAElD,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;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,0DAA0D;IAC1D,OAAO,CAAC,eAAe;IAOvB,4DAA4D;YAC9C,UAAU;IAgBxB,oEAAoE;IACpE,OAAO,CAAC,QAAQ;IAShB;;;OAGG;YACW,aAAa;IA0C3B,2DAA2D;IAC3D,OAAO,CAAC,WAAW;CAQpB"}
@@ -1,5 +1,6 @@
1
1
  import { DEFAULT_QUEUE_CONFIG } from './types.js';
2
2
  import { summarizeError } from '../../../utils/error-display.js';
3
+ import { logger } from '../../../utils/logger.js';
3
4
  /**
4
5
  * Computes the delay in milliseconds for a given retry attempt using
5
6
  * exponential backoff with jitter (±10%).
@@ -95,7 +96,8 @@ export class ExportQueue {
95
96
  completedAt: Date.now(),
96
97
  });
97
98
  }
98
- console.warn(`[ExportQueue] Queue overflow dropped oldest batch (size=${this._config.maxSize})`);
99
+ // OBS-07: structured logger, not console
100
+ logger.warn('[ExportQueue] Queue overflow — dropped oldest batch', { maxSize: this._config.maxSize });
99
101
  }
100
102
  this._ring[this._tail] = { batch, enqueuedAt: Date.now() };
101
103
  this._tail = (this._tail + 1) % this._config.maxSize;
@@ -183,13 +185,18 @@ export class ExportQueue {
183
185
  lastError = summarizeError(err);
184
186
  if (attempt < maxRetries) {
185
187
  const delay = computeDelay(attempt, this._config.retry);
186
- console.warn(`[ExportQueue] Export attempt ${attempt + 1} failed — retrying in ${delay}ms: ${lastError}`);
188
+ // OBS-07: structured logger, not console
189
+ logger.warn('[ExportQueue] Export attempt failed — retrying', { attempt: attempt + 1, delayMs: delay, error: lastError });
187
190
  await sleep(delay);
188
191
  }
189
192
  }
190
193
  }
191
- // All retries exhausted
192
- console.error(`[ExportQueue] Export failed after ${attempts} attempt(s)dropping batch of ${entry.batch.length} span(s): ${lastError}`);
194
+ // All retries exhausted — OBS-07: structured logger
195
+ logger.error('[ExportQueue] Export failed after all retries — batch dropped', {
196
+ attempts,
197
+ spanCount: entry.batch.length,
198
+ error: lastError,
199
+ });
193
200
  this._emitResult({
194
201
  code: 'failure',
195
202
  spanCount: entry.batch.length,
@@ -1 +1 @@
1
- {"version":3,"file":"meter.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/telemetry/meter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,SAAS,EAET,WAAW,EAEZ,MAAM,YAAY,CAAC;AAwFpB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;gBAExC,MAAM,EAAE,WAAW;IAI/B,qDAAqD;IACrD,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAS9B;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IASlC;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;CAQ3B"}
1
+ {"version":3,"file":"meter.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/telemetry/meter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,SAAS,EAET,WAAW,EAEZ,MAAM,YAAY,CAAC;AA4FpB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;gBAExC,MAAM,EAAE,WAAW;IAI/B,qDAAqD;IACrD,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAS9B;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IASlC;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;CAQ3B"}
@@ -1,3 +1,4 @@
1
+ import { filterMetricLabels } from './api-helpers.js';
1
2
  // ── Label key serialisation ─────────────────────────────────────────────────────
2
3
  /**
3
4
  * Serialise a label set to a stable, deterministic string key.
@@ -17,7 +18,8 @@ class CounterImpl {
17
18
  add(delta = 1, labels) {
18
19
  if (delta < 0)
19
20
  return; // Counters are monotonically increasing
20
- const key = labelKey(labels);
21
+ const filtered = labels ? filterMetricLabels(labels) : labels;
22
+ const key = labelKey(filtered);
21
23
  this._values.set(key, (this._values.get(key) ?? 0) + delta);
22
24
  }
23
25
  value(labels) {
@@ -27,7 +29,8 @@ class CounterImpl {
27
29
  class HistogramImpl {
28
30
  _accumulators = new Map();
29
31
  record(value, labels) {
30
- const key = labelKey(labels);
32
+ const filtered = labels ? filterMetricLabels(labels) : labels;
33
+ const key = labelKey(filtered);
31
34
  const acc = this._accumulators.get(key);
32
35
  if (acc === undefined) {
33
36
  this._accumulators.set(key, { count: 1, sum: value, min: value, max: value });
@@ -59,7 +62,8 @@ class HistogramImpl {
59
62
  class GaugeImpl {
60
63
  _values = new Map();
61
64
  set(value, labels) {
62
- this._values.set(labelKey(labels), value);
65
+ const filtered = labels ? filterMetricLabels(labels) : labels;
66
+ this._values.set(labelKey(filtered), value);
63
67
  }
64
68
  value(labels) {
65
69
  return this._values.get(labelKey(labels)) ?? 0;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Configure telemetry redaction behavior. Called once at daemon bootstrap from
3
+ * config.telemetry.includeRawPrompts. When true, a WARN log is emitted so ops
4
+ * can see the opt-in is active.
5
+ */
6
+ export declare function setTelemetryIncludeRawPrompts(value: boolean): void;
7
+ /** Read the current flag. Reserved for future view='raw' gating. */
8
+ export declare function getTelemetryIncludeRawPrompts(): boolean;
9
+ //# sourceMappingURL=redaction-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction-config.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/telemetry/redaction-config.ts"],"names":[],"mappings":"AAsCA;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAQlE;AAED,oEAAoE;AACpE,wBAAgB,6BAA6B,IAAI,OAAO,CAEvD"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * OBS-06: Telemetry prompt/response redaction configuration.
3
+ *
4
+ * Privacy model (what actually ships):
5
+ *
6
+ * - Internal RuntimeEventBus carries RAW prompt/response strings. Internal
7
+ * consumers (conversation reducer, channel reply pipeline, stream UI)
8
+ * require raw content to render and advance state.
9
+ *
10
+ * - TelemetryApiService ring buffer stores raw payloads.
11
+ *
12
+ * - Egress boundary: `listEvents({view: 'safe'})` (the default) runs records
13
+ * through `sanitizeRecord` → `redactStructuredData` (see
14
+ * `utils/redaction.ts`). Any string value whose key matches
15
+ * `CONTENT_KEY_PATTERN` (prompt, response, content, accumulated, reasoning,
16
+ * body, text, stdout, stderr, output, input, transcript, command,
17
+ * arguments, query, detail, summary, message) is replaced with
18
+ * `[REDACTED_TEXT length=N]`. Values carrying specific secret shapes
19
+ * (API keys, tokens) are pattern-redacted regardless of key.
20
+ *
21
+ * - `listEvents({view: 'raw'})` skips redaction and is gated at the HTTP
22
+ * boundary on the `admin` or `read:telemetry-sensitive` scope (see
23
+ * daemon/telemetry-routes.ts).
24
+ *
25
+ * This module owns the `telemetry.includeRawPrompts` config flag. The flag
26
+ * is wired at daemon bootstrap by `facade-composition.ts` via
27
+ * `setTelemetryIncludeRawPrompts(configManager.get('telemetry.includeRawPrompts'))`.
28
+ * Opt-in (true) emits a startup WARN so operators can see the configuration.
29
+ *
30
+ * Known gap: `listEvents({view: 'raw'})` does not yet consult the flag — raw
31
+ * view access is gated by scope only. The flag is available for future
32
+ * hardening (e.g. refuse raw view regardless of scope when the flag is off).
33
+ */
34
+ import { logger } from '../../utils/logger.js';
35
+ /** Module-scoped flag. Wired once at daemon bootstrap. */
36
+ let _includeRawPrompts = false;
37
+ /**
38
+ * Configure telemetry redaction behavior. Called once at daemon bootstrap from
39
+ * config.telemetry.includeRawPrompts. When true, a WARN log is emitted so ops
40
+ * can see the opt-in is active.
41
+ */
42
+ export function setTelemetryIncludeRawPrompts(value) {
43
+ _includeRawPrompts = value;
44
+ if (value) {
45
+ logger.warn('telemetry.includeRawPrompts is ENABLED — raw prompt/response content will appear in telemetry events. '
46
+ + 'This setting is for debugging only. Disable in production to avoid PII/secret exfiltration.');
47
+ }
48
+ }
49
+ /** Read the current flag. Reserved for future view='raw' gating. */
50
+ export function getTelemetryIncludeRawPrompts() {
51
+ return _includeRawPrompts;
52
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/tools/phases/budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAsB,WAAW,EAAsB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE5G;;;;;;;;;;;;;GAaG;AAEH,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,WAAW,CAAC,CA8CtB"}
1
+ {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/runtime/tools/phases/budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAsB,WAAW,EAAsB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE5G;;;;;;;;;;;;;GAaG;AAEH,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,WAAW,CAAC,CA8CtB"}
@@ -1,3 +1,4 @@
1
+ import { toRecord } from '../../../utils/record-coerce.js';
1
2
  export async function budgetPhase(_call, _tool, context, record, checkpoint) {
2
3
  const start = performance.now();
3
4
  const phaseName = checkpoint === 'entry' ? 'budget-entry' : 'budget-exit';
@@ -71,7 +72,7 @@ function getTokenCount(record) {
71
72
  return undefined;
72
73
  // Double cast needed: ToolResult has no index signature, but tool implementations
73
74
  // may annotate results with extra numeric fields like `tokenCount`.
74
- const raw = record.result['tokenCount'];
75
+ const raw = toRecord(record.result)['tokenCount'];
75
76
  return typeof raw === 'number' ? raw : undefined;
76
77
  }
77
78
  /**
@@ -82,6 +83,6 @@ function getCostUsd(record) {
82
83
  if (!record.result)
83
84
  return undefined;
84
85
  // Double cast needed: same reason as getTokenCount above.
85
- const raw = record.result['costUsd'];
86
+ const raw = toRecord(record.result)['costUsd'];
86
87
  return typeof raw === 'number' ? raw : undefined;
87
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-http-client.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/transports/daemon-http-client.ts"],"names":[],"mappings":"AAiDA,OAAO,KAAK,EAoBV,aAAa,EAEb,oBAAoB,EAKrB,MAAM,iBAAiB,CAAC;AA0fzB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA8ChF"}
1
+ {"version":3,"file":"daemon-http-client.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/transports/daemon-http-client.ts"],"names":[],"mappings":"AAiDA,OAAO,KAAK,EAoBV,aAAa,EAEb,oBAAoB,EAKrB,MAAM,iBAAiB,CAAC;AAupBzB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA8ChF"}
@@ -26,6 +26,114 @@ async function withNullOnNotFound(run) {
26
26
  function asContractInput(input) {
27
27
  return input;
28
28
  }
29
+ // ---------------------------------------------------------------------------
30
+ // Runtime validators — replace `as unknown as X` casts with checked coercions
31
+ // ---------------------------------------------------------------------------
32
+ function assertObjectField(container, field, endpoint) {
33
+ if (container === null
34
+ || typeof container !== 'object'
35
+ || !(field in container)
36
+ || container[field] === null
37
+ || typeof container[field] !== 'object') {
38
+ throw new Error(`[${endpoint}] Expected response to contain object field "${field}"`);
39
+ }
40
+ return container[field];
41
+ }
42
+ function assertObjectOrNullField(container, field, endpoint) {
43
+ if (container === null || typeof container !== 'object') {
44
+ throw new Error(`[${endpoint}] Expected response to be an object`);
45
+ }
46
+ const value = container[field];
47
+ if (value === null || value === undefined)
48
+ return null;
49
+ if (typeof value !== 'object') {
50
+ throw new Error(`[${endpoint}] Expected field "${field}" to be an object or null`);
51
+ }
52
+ return value;
53
+ }
54
+ function assertArrayField(container, field, endpoint) {
55
+ if (container === null || typeof container !== 'object') {
56
+ throw new Error(`[${endpoint}] Expected response to be an object`);
57
+ }
58
+ const value = container[field];
59
+ if (!Array.isArray(value)) {
60
+ throw new Error(`[${endpoint}] Expected field "${field}" to be an array`);
61
+ }
62
+ return value;
63
+ }
64
+ function assertRuntimeTaskArray(tasks, endpoint) {
65
+ if (!Array.isArray(tasks)) {
66
+ throw new Error(`[${endpoint}] Expected "tasks" to be an array`);
67
+ }
68
+ for (const task of tasks) {
69
+ if (task === null || typeof task !== 'object' || typeof task.id !== 'string') {
70
+ throw new Error(`[${endpoint}] Task entry missing required "id" field`);
71
+ }
72
+ }
73
+ return tasks;
74
+ }
75
+ function assertSharedApprovalArray(approvals, endpoint) {
76
+ if (!Array.isArray(approvals)) {
77
+ throw new Error(`[${endpoint}] Expected "approvals" to be an array`);
78
+ }
79
+ return approvals;
80
+ }
81
+ function assertProviderRuntimeSnapshotArray(providers, endpoint) {
82
+ if (!Array.isArray(providers)) {
83
+ throw new Error(`[${endpoint}] Expected "providers" to be an array`);
84
+ }
85
+ for (const provider of providers) {
86
+ if (provider === null
87
+ || typeof provider !== 'object'
88
+ || typeof provider.providerId !== 'string') {
89
+ throw new Error(`[${endpoint}] Provider entry missing required "providerId" field`);
90
+ }
91
+ }
92
+ return providers;
93
+ }
94
+ function assertProviderRuntimeSnapshot(value, endpoint) {
95
+ if (value === null
96
+ || typeof value !== 'object'
97
+ || typeof value.providerId !== 'string') {
98
+ throw new Error(`[${endpoint}] Expected ProviderRuntimeSnapshot with "providerId" field`);
99
+ }
100
+ return value;
101
+ }
102
+ function assertProviderUsageSnapshot(value, endpoint) {
103
+ if (value === null
104
+ || typeof value !== 'object'
105
+ || typeof value.providerId !== 'string') {
106
+ throw new Error(`[${endpoint}] Expected ProviderUsageSnapshot with "providerId" field`);
107
+ }
108
+ return value;
109
+ }
110
+ function assertTelemetrySnapshot(value, endpoint) {
111
+ if (value === null
112
+ || typeof value !== 'object'
113
+ || value.version !== 1
114
+ || typeof value.generatedAt !== 'number') {
115
+ throw new Error(`[${endpoint}] Expected TelemetrySnapshot with version=1 and numeric "generatedAt"`);
116
+ }
117
+ return value;
118
+ }
119
+ function assertTelemetryListResponse(value, endpoint) {
120
+ if (value === null
121
+ || typeof value !== 'object'
122
+ || value.version !== 1
123
+ || !Array.isArray(value.items)) {
124
+ throw new Error(`[${endpoint}] Expected TelemetryListResponse with version=1 and "items" array`);
125
+ }
126
+ return value;
127
+ }
128
+ function assertTelemetryMetricsSnapshot(value, endpoint) {
129
+ if (value === null
130
+ || typeof value !== 'object'
131
+ || value.version !== 1
132
+ || typeof value.generatedAt !== 'number') {
133
+ throw new Error(`[${endpoint}] Expected HttpTransportTelemetryMetricsSnapshot with version=1 and numeric "generatedAt"`);
134
+ }
135
+ return value;
136
+ }
29
137
  function normalizeSharedSessionRecord(record) {
30
138
  const candidate = record;
31
139
  return {
@@ -133,7 +241,7 @@ function createOperatorClient(transport, events) {
133
241
  const response = await operatorApi.invoke('sessions.inputs.list', { sessionId, limit });
134
242
  return (response.inputs ?? []).map((entry) => normalizeSharedSessionInput(entry));
135
243
  },
136
- ensureSession: async (input = {}) => normalizeSharedSessionRecord((await operatorApi.sessions.create(buildSessionEnsureBody(input))).session),
244
+ ensureSession: async (input = {}) => normalizeSharedSessionRecord(assertObjectField(await operatorApi.sessions.create(buildSessionEnsureBody(input)), 'session', 'sessions.create')),
137
245
  close: async (sessionId) => {
138
246
  const response = await withNullOnNotFound(() => operatorApi.sessions.close(sessionId));
139
247
  return response?.session ? normalizeSharedSessionRecord(response.session) : null;
@@ -153,23 +261,25 @@ function createOperatorClient(transport, events) {
153
261
  tasks: {
154
262
  snapshot: async () => {
155
263
  const { tasks } = await operatorApi.tasks.list();
156
- return { tasks: tasks };
264
+ return { tasks: assertRuntimeTaskArray(tasks, 'tasks.list') };
157
265
  },
158
- list: async (limit = 100) => (await operatorApi.tasks.list({ limit })).tasks,
266
+ list: async (limit = 100) => assertRuntimeTaskArray((await operatorApi.tasks.list({ limit })).tasks, 'tasks.list'),
159
267
  get: async (taskId) => {
160
268
  const response = await withNullOnNotFound(() => operatorApi.tasks.get(taskId));
161
- return (response?.task ?? null);
269
+ if (response?.task == null)
270
+ return null;
271
+ return assertRuntimeTaskArray([response.task], 'tasks.get')[0] ?? null;
162
272
  },
163
- running: async () => (await operatorApi.tasks.list()).tasks.filter((task) => task.status === 'running'),
273
+ running: async () => assertRuntimeTaskArray((await operatorApi.tasks.list()).tasks, 'tasks.list').filter((task) => task.status === 'running'),
164
274
  submit: async (input) => await operatorApi.invoke('tasks.create', buildTaskSubmitBody(input)),
165
275
  cancel: async (taskId) => await operatorApi.invoke('tasks.cancel', { taskId }),
166
276
  retry: async (taskId) => await operatorApi.invoke('tasks.retry', { taskId }),
167
277
  },
168
278
  approvals: {
169
- list: async (limit = 100) => (await operatorApi.approvals.list({ limit })).approvals,
279
+ list: async (limit = 100) => assertSharedApprovalArray((await operatorApi.approvals.list({ limit })).approvals, 'approvals.list'),
170
280
  get: async (approvalId) => {
171
281
  const approvals = await operatorApi.approvals.list({ limit: 200 });
172
- return (approvals.approvals.find((entry) => entry.id === approvalId) ?? null);
282
+ return (assertSharedApprovalArray(approvals.approvals, 'approvals.list').find((entry) => entry.id === approvalId) ?? null);
173
283
  },
174
284
  claim: async (approvalId, actor, actorSurface = 'transport', note) => {
175
285
  const response = await withNullOnNotFound(() => operatorApi.invoke('approvals.claim', { approvalId, actor, actorSurface, ...(note ? { note } : {}) }));
@@ -189,10 +299,21 @@ function createOperatorClient(transport, events) {
189
299
  },
190
300
  },
191
301
  providers: {
192
- listIds: async () => (await operatorApi.providers.list()).providers.map((provider) => provider.providerId),
193
- runtimeSnapshots: async () => (await operatorApi.providers.list()).providers,
194
- runtimeSnapshot: async (providerId) => await withNullOnNotFound(() => operatorApi.providers.get(providerId)),
195
- usageSnapshot: async (providerId) => await withNullOnNotFound(() => operatorApi.providers.usage(providerId)),
302
+ listIds: async () => assertProviderRuntimeSnapshotArray((await operatorApi.providers.list()).providers, 'providers.list')
303
+ .map((provider) => provider.providerId),
304
+ runtimeSnapshots: async () => assertProviderRuntimeSnapshotArray((await operatorApi.providers.list()).providers, 'providers.list'),
305
+ runtimeSnapshot: async (providerId) => {
306
+ const response = await withNullOnNotFound(() => operatorApi.providers.get(providerId));
307
+ if (response == null)
308
+ return null;
309
+ return assertProviderRuntimeSnapshot(response, 'providers.get');
310
+ },
311
+ usageSnapshot: async (providerId) => {
312
+ const response = await withNullOnNotFound(() => operatorApi.providers.usage(providerId));
313
+ if (response == null)
314
+ return null;
315
+ return assertProviderUsageSnapshot(response, 'providers.usage');
316
+ },
196
317
  accountSnapshot: async () => await operatorApi.accounts.snapshot(),
197
318
  localAuthSnapshot: async () => await operatorApi.localAuth.status(),
198
319
  snapshot: async () => {
@@ -201,7 +322,7 @@ function createOperatorClient(transport, events) {
201
322
  operatorApi.accounts.snapshot(),
202
323
  operatorApi.localAuth.status(),
203
324
  ]);
204
- const runtimeSnapshots = providerResponse.providers;
325
+ const runtimeSnapshots = assertProviderRuntimeSnapshotArray(providerResponse.providers, 'providers.list');
205
326
  return {
206
327
  providerIds: runtimeSnapshots.map((provider) => provider.providerId),
207
328
  runtimeSnapshots,
@@ -216,11 +337,11 @@ function createOperatorClient(transport, events) {
216
337
  recentEvents: async (limit = 6) => (await operatorApi.invoke('control.messages.list', { limit })).messages ?? [],
217
338
  },
218
339
  telemetry: {
219
- snapshot: async (query = 20) => await operatorApi.telemetry.snapshot(normalizeTelemetryQueryForSdk(query, 20)),
220
- events: async (query = 100) => await operatorApi.telemetry.events(normalizeTelemetryQueryForSdk(query, 100)),
221
- errors: async (query = 100) => await operatorApi.telemetry.errors(normalizeTelemetryQueryForSdk(query, 100)),
222
- traces: async (query = 100) => await operatorApi.telemetry.traces(normalizeTelemetryQueryForSdk(query, 100)),
223
- metrics: async (query = 100) => await operatorApi.telemetry.metrics(normalizeTelemetryQueryForSdk(query, 100)),
340
+ snapshot: async (query = 20) => assertTelemetrySnapshot(await operatorApi.telemetry.snapshot(normalizeTelemetryQueryForSdk(query, 20)), 'telemetry.snapshot'),
341
+ events: async (query = 100) => assertTelemetryListResponse(await operatorApi.telemetry.events(normalizeTelemetryQueryForSdk(query, 100)), 'telemetry.events'),
342
+ errors: async (query = 100) => assertTelemetryListResponse(await operatorApi.telemetry.errors(normalizeTelemetryQueryForSdk(query, 100)), 'telemetry.errors'),
343
+ traces: async (query = 100) => assertTelemetryListResponse(await operatorApi.telemetry.traces(normalizeTelemetryQueryForSdk(query, 100)), 'telemetry.traces'),
344
+ metrics: async (query = 100) => assertTelemetryMetricsSnapshot(await operatorApi.telemetry.metrics(normalizeTelemetryQueryForSdk(query, 100)), 'telemetry.metrics'),
224
345
  otlpTraces: async (query = 100) => await operatorApi.telemetry.otlp.traces(normalizeTelemetryQueryForSdk(query, 100)),
225
346
  otlpLogs: async (query = 100) => await operatorApi.telemetry.otlp.logs(normalizeTelemetryQueryForSdk(query, 100)),
226
347
  otlpMetrics: async (query = 100) => await operatorApi.telemetry.otlp.metrics(normalizeTelemetryQueryForSdk(query, 100)),
@@ -37,10 +37,16 @@ interface TaskSchedulerConfig {
37
37
  export declare class TaskScheduler {
38
38
  private tasks;
39
39
  private timers;
40
- private history;
40
+ /**
41
+ * Per-task run history indexed by taskId — O(1) push + trim per task run.
42
+ * The flat `history` array is derived from this on persist (PERF-03).
43
+ */
44
+ private historyByTask;
41
45
  private store;
42
46
  private readonly spawnTask?;
43
47
  private running;
48
+ /** Debounce handle for coalescing rapid successive save() calls (PERF-03). */
49
+ private _saveDebounceTimer;
44
50
  constructor(config: string | TaskSchedulerConfig);
45
51
  /** Load tasks from disk and start timers. */
46
52
  start(): Promise<void>;
@@ -54,7 +60,7 @@ export declare class TaskScheduler {
54
60
  setEnabled(taskId: string, enabled: boolean): boolean;
55
61
  /** Return all tasks as an array. */
56
62
  list(): ScheduledTask[];
57
- /** Return the run history for a given task (up to MAX_HISTORY_PER_TASK). */
63
+ /** Return the run history for a given task (up to MAX_HISTORY_PER_TASK). O(1) via Map index. */
58
64
  getHistory(taskId: string): TaskRunRecord[];
59
65
  /** Return all run history records. */
60
66
  getAllHistory(): TaskRunRecord[];
@@ -77,8 +83,19 @@ export declare class TaskScheduler {
77
83
  * Returns the spawned agent ID.
78
84
  */
79
85
  private executeTask;
86
+ /**
87
+ * O(1) per-task history push + trim (PERF-03).
88
+ * The Map index makes both the push and the cap check O(1) instead of O(n) global filter.
89
+ */
80
90
  private pushHistory;
91
+ /** Flatten historyByTask Map into a single array for serialisation. */
92
+ private flatHistory;
81
93
  private save;
94
+ /**
95
+ * Debounced save: coalesces multiple rapid calls into a single disk write
96
+ * that fires SAVE_DEBOUNCE_MS after the last call (PERF-03).
97
+ */
98
+ private scheduleSave;
82
99
  private load;
83
100
  }
84
101
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/scheduler/scheduler.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsBD,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC5B,KAAK,MAAM,CAAC;CACd;AAiVD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,MAAM,CAAyD;IACvE,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAId;IACb,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAehD,6CAA6C;IACvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,uBAAuB;IACvB,IAAI,IAAI,IAAI;IAaZ,4EAA4E;IAC5E,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC,GAAG,aAAa;IA+B9F,8DAA8D;IAC9D,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQ/B,gCAAgC;IAChC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAerD,oCAAoC;IACpC,IAAI,IAAI,aAAa,EAAE;IAIvB,4EAA4E;IAC5E,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE;IAI3C,sCAAsC;IACtC,aAAa,IAAI,aAAa,EAAE;IAIhC;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9D,oDAAoD;IACpD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIrC,2DAA2D;IAC3D,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIzC,sDAAsD;IAChD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB7C,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,WAAW;IAQnB;;;;OAIG;YACW,WAAW;IA+CzB,OAAO,CAAC,WAAW;YAsBL,IAAI;YAOJ,IAAI;CAuDnB"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/scheduler/scheduler.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsBD,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC5B,KAAK,MAAM,CAAC;CACd;AAuVD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,MAAM,CAAyD;IACvE;;;OAGG;IACH,OAAO,CAAC,aAAa,CAA2C;IAChE,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAId;IACb,OAAO,CAAC,OAAO,CAAS;IACxB,8EAA8E;IAC9E,OAAO,CAAC,kBAAkB,CAA8C;gBAE5D,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAehD,6CAA6C;IACvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,uBAAuB;IACvB,IAAI,IAAI,IAAI;IAaZ,4EAA4E;IAC5E,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC,GAAG,aAAa;IA+B9F,8DAA8D;IAC9D,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQ/B,gCAAgC;IAChC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAerD,oCAAoC;IACpC,IAAI,IAAI,aAAa,EAAE;IAIvB,gGAAgG;IAChG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE;IAI3C,sCAAsC;IACtC,aAAa,IAAI,aAAa,EAAE;IAIhC;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9D,oDAAoD;IACpD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIrC,2DAA2D;IAC3D,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIzC,sDAAsD;IAChD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB7C,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,WAAW;IAQnB;;;;OAIG;YACW,WAAW;IA+CzB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAcnB,uEAAuE;IACvE,OAAO,CAAC,WAAW;YAUL,IAAI;IAOlB;;;OAGG;IACH,OAAO,CAAC,YAAY;YASN,IAAI;CAgEnB"}