comisai 1.0.34 → 1.0.37

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 (448) hide show
  1. package/node_modules/@comis/agent/dist/background/auto-background-middleware.d.ts +11 -1
  2. package/node_modules/@comis/agent/dist/background/auto-background-middleware.js +30 -4
  3. package/node_modules/@comis/agent/dist/background/background-task-manager.d.ts +22 -2
  4. package/node_modules/@comis/agent/dist/background/background-task-manager.js +88 -40
  5. package/node_modules/@comis/agent/dist/background/background-task-persistence.js +34 -4
  6. package/node_modules/@comis/agent/dist/background/background-task-types.d.ts +59 -3
  7. package/node_modules/@comis/agent/dist/background/background-task-types.js +1 -1
  8. package/node_modules/@comis/agent/dist/background/completion-dispatcher.d.ts +130 -0
  9. package/node_modules/@comis/agent/dist/background/completion-dispatcher.js +215 -0
  10. package/node_modules/@comis/agent/dist/background/completion-formatter.d.ts +39 -0
  11. package/node_modules/@comis/agent/dist/background/completion-formatter.js +77 -0
  12. package/node_modules/@comis/agent/dist/background/completion-runner.d.ts +62 -0
  13. package/node_modules/@comis/agent/dist/background/completion-runner.js +234 -0
  14. package/node_modules/@comis/agent/dist/background/index.d.ts +10 -1
  15. package/node_modules/@comis/agent/dist/background/index.js +4 -0
  16. package/node_modules/@comis/agent/dist/background/session-resolver.d.ts +85 -0
  17. package/node_modules/@comis/agent/dist/background/session-resolver.js +78 -0
  18. package/node_modules/@comis/agent/dist/bootstrap/sections/messaging-sections.js +1 -0
  19. package/node_modules/@comis/agent/dist/bootstrap/sections/tool-descriptions.js +3 -3
  20. package/node_modules/@comis/agent/dist/bootstrap/sections/tooling-sections.d.ts +30 -2
  21. package/node_modules/@comis/agent/dist/bootstrap/sections/tooling-sections.js +51 -2
  22. package/node_modules/@comis/agent/dist/bootstrap/system-prompt-assembler.d.ts +22 -0
  23. package/node_modules/@comis/agent/dist/bootstrap/system-prompt-assembler.js +2 -2
  24. package/node_modules/@comis/agent/dist/bridge/bridge-event-handlers.d.ts +1 -5
  25. package/node_modules/@comis/agent/dist/bridge/bridge-event-handlers.js +2 -14
  26. package/node_modules/@comis/agent/dist/bridge/bridge-metrics.d.ts +43 -2
  27. package/node_modules/@comis/agent/dist/bridge/bridge-metrics.js +17 -2
  28. package/node_modules/@comis/agent/dist/bridge/pi-event-bridge.d.ts +32 -23
  29. package/node_modules/@comis/agent/dist/bridge/pi-event-bridge.js +145 -62
  30. package/node_modules/@comis/agent/dist/bridge/thinking-block-hash-invariant.d.ts +6 -7
  31. package/node_modules/@comis/agent/dist/bridge/thinking-block-hash-invariant.js +24 -25
  32. package/node_modules/@comis/agent/dist/budget/cost-tracker.d.ts +1 -1
  33. package/node_modules/@comis/agent/dist/context-engine/constants.d.ts +5 -5
  34. package/node_modules/@comis/agent/dist/context-engine/constants.js +12 -12
  35. package/node_modules/@comis/agent/dist/context-engine/context-engine.js +13 -4
  36. package/node_modules/@comis/agent/dist/context-engine/dag-annotator.d.ts +1 -2
  37. package/node_modules/@comis/agent/dist/context-engine/dag-annotator.js +1 -2
  38. package/node_modules/@comis/agent/dist/context-engine/llm-compaction.js +20 -16
  39. package/node_modules/@comis/agent/dist/context-engine/rehydration.js +6 -6
  40. package/node_modules/@comis/agent/dist/context-engine/signature-replay-scrubber.d.ts +12 -12
  41. package/node_modules/@comis/agent/dist/context-engine/signature-replay-scrubber.js +36 -22
  42. package/node_modules/@comis/agent/dist/context-engine/signature-surrogate-guard.d.ts +10 -10
  43. package/node_modules/@comis/agent/dist/context-engine/signature-surrogate-guard.js +14 -14
  44. package/node_modules/@comis/agent/dist/context-engine/thinking-block-cleaner.d.ts +11 -13
  45. package/node_modules/@comis/agent/dist/context-engine/thinking-block-cleaner.js +14 -15
  46. package/node_modules/@comis/agent/dist/context-engine/types-core.d.ts +15 -0
  47. package/node_modules/@comis/agent/dist/executor/cache-break-detection.d.ts +6 -6
  48. package/node_modules/@comis/agent/dist/executor/cache-break-detection.js +8 -8
  49. package/node_modules/@comis/agent/dist/executor/capability-index-context.d.ts +72 -0
  50. package/node_modules/@comis/agent/dist/executor/capability-index-context.js +329 -0
  51. package/node_modules/@comis/agent/dist/executor/drain-helper.d.ts +122 -0
  52. package/node_modules/@comis/agent/dist/executor/drain-helper.js +173 -0
  53. package/node_modules/@comis/agent/dist/executor/error-classifier.js +2 -2
  54. package/node_modules/@comis/agent/dist/executor/executor-context-engine-setup.d.ts +16 -0
  55. package/node_modules/@comis/agent/dist/executor/executor-context-engine-setup.js +46 -5
  56. package/node_modules/@comis/agent/dist/executor/executor-post-execution.d.ts +78 -4
  57. package/node_modules/@comis/agent/dist/executor/executor-post-execution.js +150 -31
  58. package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.d.ts +7 -0
  59. package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.js +26 -5
  60. package/node_modules/@comis/agent/dist/executor/executor-response-filter.d.ts +7 -6
  61. package/node_modules/@comis/agent/dist/executor/executor-response-filter.js +9 -42
  62. package/node_modules/@comis/agent/dist/executor/executor-tool-assembly.d.ts +18 -1
  63. package/node_modules/@comis/agent/dist/executor/executor-tool-assembly.js +20 -18
  64. package/node_modules/@comis/agent/dist/executor/gemini-cache-injector.d.ts +2 -2
  65. package/node_modules/@comis/agent/dist/executor/gemini-cache-injector.js +4 -4
  66. package/node_modules/@comis/agent/dist/executor/jit-guide-injector.d.ts +11 -2
  67. package/node_modules/@comis/agent/dist/executor/jit-guide-injector.js +16 -2
  68. package/node_modules/@comis/agent/dist/executor/phase-filter.d.ts +2 -2
  69. package/node_modules/@comis/agent/dist/executor/phase-filter.js +5 -7
  70. package/node_modules/@comis/agent/dist/executor/pi-executor.d.ts +21 -2
  71. package/node_modules/@comis/agent/dist/executor/pi-executor.js +96 -18
  72. package/node_modules/@comis/agent/dist/executor/post-batch-continuation.js +7 -7
  73. package/node_modules/@comis/agent/dist/executor/prompt-assembly.d.ts +9 -1
  74. package/node_modules/@comis/agent/dist/executor/prompt-assembly.js +15 -1
  75. package/node_modules/@comis/agent/dist/executor/stream-wrappers/request-body-injector.d.ts +1 -1
  76. package/node_modules/@comis/agent/dist/executor/stream-wrappers/request-body-injector.js +1 -1
  77. package/node_modules/@comis/agent/dist/executor/tool-deferral.d.ts +18 -27
  78. package/node_modules/@comis/agent/dist/executor/tool-deferral.js +34 -43
  79. package/node_modules/@comis/agent/dist/index.d.ts +17 -0
  80. package/node_modules/@comis/agent/dist/index.js +32 -11
  81. package/node_modules/@comis/agent/dist/model/auth-provider.d.ts +25 -2
  82. package/node_modules/@comis/agent/dist/model/auth-provider.js +6 -0
  83. package/node_modules/@comis/agent/dist/model/compaction-model-resolver.d.ts +3 -3
  84. package/node_modules/@comis/agent/dist/model/compaction-model-resolver.js +3 -3
  85. package/node_modules/@comis/agent/dist/model/model-registry-adapter.js +1 -1
  86. package/node_modules/@comis/agent/dist/model/model-scanner.js +1 -1
  87. package/node_modules/@comis/agent/dist/model/oauth-credential-store-file.d.ts +37 -0
  88. package/node_modules/@comis/agent/dist/model/oauth-credential-store-file.js +279 -0
  89. package/node_modules/@comis/agent/dist/model/oauth-credential-store-selector.d.ts +49 -0
  90. package/node_modules/@comis/agent/dist/model/oauth-credential-store-selector.js +50 -0
  91. package/node_modules/@comis/agent/dist/model/oauth-device-code.d.ts +57 -0
  92. package/node_modules/@comis/agent/dist/model/oauth-device-code.js +302 -0
  93. package/node_modules/@comis/agent/dist/model/oauth-env.d.ts +33 -0
  94. package/node_modules/@comis/agent/dist/model/oauth-env.js +38 -0
  95. package/node_modules/@comis/agent/dist/model/oauth-errors.d.ts +41 -0
  96. package/node_modules/@comis/agent/dist/model/oauth-errors.js +88 -0
  97. package/node_modules/@comis/agent/dist/model/oauth-identity.d.ts +53 -0
  98. package/node_modules/@comis/agent/dist/model/oauth-identity.js +141 -0
  99. package/node_modules/@comis/agent/dist/model/oauth-login-runner.d.ts +99 -0
  100. package/node_modules/@comis/agent/dist/model/oauth-login-runner.js +374 -0
  101. package/node_modules/@comis/agent/dist/model/oauth-tls-preflight.d.ts +58 -0
  102. package/node_modules/@comis/agent/dist/model/oauth-tls-preflight.js +82 -0
  103. package/node_modules/@comis/agent/dist/model/oauth-token-manager.d.ts +86 -16
  104. package/node_modules/@comis/agent/dist/model/oauth-token-manager.js +961 -66
  105. package/node_modules/@comis/agent/dist/model/operation-model-defaults.d.ts +9 -4
  106. package/node_modules/@comis/agent/dist/model/operation-model-defaults.js +36 -9
  107. package/node_modules/@comis/agent/dist/model/resolve-provider-api-key.d.ts +48 -0
  108. package/node_modules/@comis/agent/dist/model/resolve-provider-api-key.js +66 -0
  109. package/node_modules/@comis/agent/dist/provider/capabilities.d.ts +5 -5
  110. package/node_modules/@comis/agent/dist/provider/capabilities.js +10 -23
  111. package/node_modules/@comis/agent/dist/safety/tool-output-safety.js +3 -3
  112. package/node_modules/@comis/agent/dist/safety/tool-retry-breaker.d.ts +11 -1
  113. package/node_modules/@comis/agent/dist/safety/tool-retry-breaker.js +19 -22
  114. package/node_modules/@comis/agent/dist/session/comis-session-manager.d.ts +17 -3
  115. package/node_modules/@comis/agent/dist/session/comis-session-manager.js +1 -1
  116. package/node_modules/@comis/agent/dist/spawn/narrative-caster.d.ts +10 -0
  117. package/node_modules/@comis/agent/dist/spawn/narrative-caster.js +5 -1
  118. package/node_modules/@comis/agent/dist/spawn/pi-mono-adapters.d.ts +1 -1
  119. package/node_modules/@comis/agent/dist/spawn/pi-mono-adapters.js +5 -5
  120. package/node_modules/@comis/agent/dist/workspace/data-env.d.ts +38 -0
  121. package/node_modules/@comis/agent/dist/workspace/data-env.js +56 -0
  122. package/node_modules/@comis/agent/dist/workspace/index.d.ts +1 -0
  123. package/node_modules/@comis/agent/dist/workspace/index.js +1 -0
  124. package/node_modules/@comis/agent/dist/workspace/templates.js +5 -1
  125. package/node_modules/@comis/agent/package.json +1 -1
  126. package/node_modules/@comis/channels/dist/email/email-adapter.js +6 -6
  127. package/node_modules/@comis/channels/dist/email/imap-lifecycle.js +7 -7
  128. package/node_modules/@comis/channels/dist/index.d.ts +1 -1
  129. package/node_modules/@comis/channels/dist/index.js +1 -1
  130. package/node_modules/@comis/channels/dist/shared/channel-manager.d.ts +9 -3
  131. package/node_modules/@comis/channels/dist/shared/deliver-to-channel.js +12 -10
  132. package/node_modules/@comis/channels/dist/shared/inbound-gate.d.ts +1 -1
  133. package/node_modules/@comis/channels/dist/shared/inbound-gate.js +22 -7
  134. package/node_modules/@comis/channels/dist/shared/inbound-pipeline.d.ts +10 -3
  135. package/node_modules/@comis/channels/dist/shared/inbound-route.d.ts +1 -1
  136. package/node_modules/@comis/channels/dist/shared/inbound-route.js +13 -2
  137. package/node_modules/@comis/channels/dist/shared/response-filter.d.ts +11 -24
  138. package/node_modules/@comis/channels/dist/shared/response-filter.js +25 -53
  139. package/node_modules/@comis/channels/dist/telegram/telegram-adapter.js +1 -1
  140. package/node_modules/@comis/channels/package.json +1 -1
  141. package/node_modules/@comis/cli/dist/cli.js +2 -0
  142. package/node_modules/@comis/cli/dist/commands/agent.d.ts +3 -3
  143. package/node_modules/@comis/cli/dist/commands/agent.js +46 -3
  144. package/node_modules/@comis/cli/dist/commands/auth.d.ts +37 -0
  145. package/node_modules/@comis/cli/dist/commands/auth.js +433 -0
  146. package/node_modules/@comis/cli/dist/commands/doctor.d.ts +4 -1
  147. package/node_modules/@comis/cli/dist/commands/doctor.js +20 -5
  148. package/node_modules/@comis/cli/dist/commands/providers.d.ts +1 -2
  149. package/node_modules/@comis/cli/dist/commands/providers.js +5 -6
  150. package/node_modules/@comis/cli/dist/doctor/checks/oauth-health.d.ts +39 -0
  151. package/node_modules/@comis/cli/dist/doctor/checks/oauth-health.js +399 -0
  152. package/node_modules/@comis/cli/dist/doctor/types.d.ts +19 -0
  153. package/node_modules/@comis/cli/dist/index.d.ts +1 -0
  154. package/node_modules/@comis/cli/dist/index.js +10 -4
  155. package/node_modules/@comis/cli/dist/output/relative-time.d.ts +23 -0
  156. package/node_modules/@comis/cli/dist/output/relative-time.js +36 -0
  157. package/node_modules/@comis/cli/dist/wizard/non-interactive.js +17 -8
  158. package/node_modules/@comis/cli/dist/wizard/steps/03-provider.js +2 -1
  159. package/node_modules/@comis/cli/dist/wizard/steps/04-credentials.js +223 -34
  160. package/node_modules/@comis/cli/dist/wizard/steps/10-write-config.js +14 -0
  161. package/node_modules/@comis/cli/dist/wizard/steps/11-daemon-start.js +3 -3
  162. package/node_modules/@comis/cli/dist/wizard/types.d.ts +7 -0
  163. package/node_modules/@comis/cli/package.json +1 -1
  164. package/node_modules/@comis/core/dist/bootstrap.d.ts +1 -1
  165. package/node_modules/@comis/core/dist/config/env-substitution.d.ts +66 -0
  166. package/node_modules/@comis/core/dist/config/env-substitution.js +115 -0
  167. package/node_modules/@comis/core/dist/config/field-metadata.js +2 -0
  168. package/node_modules/@comis/core/dist/config/immutable-keys.js +4 -1
  169. package/node_modules/@comis/core/dist/config/index.d.ts +7 -1
  170. package/node_modules/@comis/core/dist/config/index.js +4 -1
  171. package/node_modules/@comis/core/dist/config/loader.js +61 -0
  172. package/node_modules/@comis/core/dist/config/managed-sections.d.ts +3 -3
  173. package/node_modules/@comis/core/dist/config/managed-sections.js +10 -5
  174. package/node_modules/@comis/core/dist/config/schema-agent.d.ts +4 -792
  175. package/node_modules/@comis/core/dist/config/schema-agent.js +16 -1
  176. package/node_modules/@comis/core/dist/config/schema-approvals.d.ts +0 -14
  177. package/node_modules/@comis/core/dist/config/schema-auto-reply-engine.d.ts +0 -6
  178. package/node_modules/@comis/core/dist/config/schema-background-tasks.d.ts +1 -6
  179. package/node_modules/@comis/core/dist/config/schema-background-tasks.js +7 -0
  180. package/node_modules/@comis/core/dist/config/schema-browser.d.ts +0 -18
  181. package/node_modules/@comis/core/dist/config/schema-channel.d.ts +0 -158
  182. package/node_modules/@comis/core/dist/config/schema-coalescer.d.ts +0 -5
  183. package/node_modules/@comis/core/dist/config/schema-daemon.d.ts +0 -32
  184. package/node_modules/@comis/core/dist/config/schema-delivery.d.ts +1 -17
  185. package/node_modules/@comis/core/dist/config/schema-delivery.js +2 -0
  186. package/node_modules/@comis/core/dist/config/schema-documentation.d.ts +0 -12
  187. package/node_modules/@comis/core/dist/config/schema-embedding.d.ts +0 -20
  188. package/node_modules/@comis/core/dist/config/schema-envelope.d.ts +0 -15
  189. package/node_modules/@comis/core/dist/config/schema-gateway.d.ts +0 -37
  190. package/node_modules/@comis/core/dist/config/schema-gemini-cache.d.ts +0 -4
  191. package/node_modules/@comis/core/dist/config/schema-gemini-cache.js +0 -2
  192. package/node_modules/@comis/core/dist/config/schema-integrations.d.ts +0 -318
  193. package/node_modules/@comis/core/dist/config/schema-lifecycle-reactions.d.ts +0 -18
  194. package/node_modules/@comis/core/dist/config/schema-memory-review.d.ts +0 -7
  195. package/node_modules/@comis/core/dist/config/schema-memory.d.ts +0 -16
  196. package/node_modules/@comis/core/dist/config/schema-messages.d.ts +0 -8
  197. package/node_modules/@comis/core/dist/config/schema-models.d.ts +0 -15
  198. package/node_modules/@comis/core/dist/config/schema-notification.d.ts +0 -5
  199. package/node_modules/@comis/core/dist/config/schema-oauth.d.ts +18 -0
  200. package/node_modules/@comis/core/dist/config/schema-oauth.js +19 -0
  201. package/node_modules/@comis/core/dist/config/schema-observability.d.ts +0 -38
  202. package/node_modules/@comis/core/dist/config/schema-output-retention.d.ts +34 -0
  203. package/node_modules/@comis/core/dist/config/schema-output-retention.js +48 -0
  204. package/node_modules/@comis/core/dist/config/schema-plugins.d.ts +0 -8
  205. package/node_modules/@comis/core/dist/config/schema-providers.d.ts +0 -64
  206. package/node_modules/@comis/core/dist/config/schema-queue.d.ts +0 -58
  207. package/node_modules/@comis/core/dist/config/schema-response-prefix.d.ts +0 -2
  208. package/node_modules/@comis/core/dist/config/schema-retry.d.ts +0 -6
  209. package/node_modules/@comis/core/dist/config/schema-scheduler.d.ts +0 -39
  210. package/node_modules/@comis/core/dist/config/schema-secrets.d.ts +0 -3
  211. package/node_modules/@comis/core/dist/config/schema-security.d.ts +0 -18
  212. package/node_modules/@comis/core/dist/config/schema-send-policy.d.ts +0 -13
  213. package/node_modules/@comis/core/dist/config/schema-sender-trust-display.d.ts +0 -5
  214. package/node_modules/@comis/core/dist/config/schema-serializer.js +2 -0
  215. package/node_modules/@comis/core/dist/config/schema-skills.d.ts +0 -63
  216. package/node_modules/@comis/core/dist/config/schema-skills.js +3 -4
  217. package/node_modules/@comis/core/dist/config/schema-streaming.d.ts +0 -38
  218. package/node_modules/@comis/core/dist/config/schema-telegram-file-guard.d.ts +0 -3
  219. package/node_modules/@comis/core/dist/config/schema-tooling.d.ts +87 -0
  220. package/node_modules/@comis/core/dist/config/schema-tooling.js +152 -0
  221. package/node_modules/@comis/core/dist/config/schema-verbosity.d.ts +0 -12
  222. package/node_modules/@comis/core/dist/config/schema-webhooks.d.ts +0 -40
  223. package/node_modules/@comis/core/dist/config/schema.d.ts +50 -37
  224. package/node_modules/@comis/core/dist/config/schema.js +9 -0
  225. package/node_modules/@comis/core/dist/context/context.d.ts +0 -4
  226. package/node_modules/@comis/core/dist/domain/approval-request.d.ts +0 -17
  227. package/node_modules/@comis/core/dist/domain/background-task-origin.d.ts +29 -0
  228. package/node_modules/@comis/core/dist/domain/background-task-origin.js +39 -0
  229. package/node_modules/@comis/core/dist/domain/delivery-origin.d.ts +0 -5
  230. package/node_modules/@comis/core/dist/domain/execution-graph.d.ts +0 -48
  231. package/node_modules/@comis/core/dist/domain/memory-entry.d.ts +0 -3
  232. package/node_modules/@comis/core/dist/domain/model-compat.d.ts +0 -4
  233. package/node_modules/@comis/core/dist/domain/normalized-message.d.ts +0 -15
  234. package/node_modules/@comis/core/dist/domain/provider-capabilities.d.ts +0 -6
  235. package/node_modules/@comis/core/dist/domain/rich-message.d.ts +0 -14
  236. package/node_modules/@comis/core/dist/domain/subagent-context-config.d.ts +0 -22
  237. package/node_modules/@comis/core/dist/domain/subagent-context-types.d.ts +0 -8
  238. package/node_modules/@comis/core/dist/event-bus/events-agent.d.ts +31 -0
  239. package/node_modules/@comis/core/dist/event-bus/events-infra.d.ts +76 -2
  240. package/node_modules/@comis/core/dist/exports/config.d.ts +2 -2
  241. package/node_modules/@comis/core/dist/exports/config.js +3 -1
  242. package/node_modules/@comis/core/dist/exports/domain.d.ts +2 -0
  243. package/node_modules/@comis/core/dist/exports/domain.js +1 -0
  244. package/node_modules/@comis/core/dist/exports/hooks.d.ts +1 -1
  245. package/node_modules/@comis/core/dist/exports/ports.d.ts +2 -2
  246. package/node_modules/@comis/core/dist/exports/ports.js +1 -1
  247. package/node_modules/@comis/core/dist/ports/channel-plugin.d.ts +0 -13
  248. package/node_modules/@comis/core/dist/ports/delivery-queue.d.ts +23 -0
  249. package/node_modules/@comis/core/dist/ports/delivery-queue.js +2 -0
  250. package/node_modules/@comis/core/dist/ports/index.d.ts +4 -0
  251. package/node_modules/@comis/core/dist/ports/index.js +5 -0
  252. package/node_modules/@comis/core/dist/ports/no-op-tool-capability.d.ts +30 -0
  253. package/node_modules/@comis/core/dist/ports/no-op-tool-capability.js +47 -0
  254. package/node_modules/@comis/core/dist/ports/oauth-credential-store.d.ts +64 -0
  255. package/node_modules/@comis/core/dist/ports/oauth-credential-store.js +37 -0
  256. package/node_modules/@comis/core/dist/ports/tool-capability.d.ts +165 -0
  257. package/node_modules/@comis/core/dist/ports/tool-capability.js +15 -0
  258. package/node_modules/@comis/core/dist/security/audit.d.ts +0 -11
  259. package/node_modules/@comis/core/dist/tool-metadata.d.ts +41 -1
  260. package/node_modules/@comis/core/dist/tool-metadata.js +1 -1
  261. package/node_modules/@comis/core/package.json +1 -1
  262. package/node_modules/@comis/daemon/bundled-skills/skill-creator/scripts/validate-skill.py +1 -1
  263. package/node_modules/@comis/daemon/dist/daemon-types.d.ts +23 -3
  264. package/node_modules/@comis/daemon/dist/daemon.js +168 -30
  265. package/node_modules/@comis/daemon/dist/index.d.ts +2 -0
  266. package/node_modules/@comis/daemon/dist/index.js +5 -0
  267. package/node_modules/@comis/daemon/dist/observability/channel-health-logger.js +3 -3
  268. package/node_modules/@comis/daemon/dist/observability/delivery-queue-logger.js +1 -1
  269. package/node_modules/@comis/daemon/dist/rpc/agent-handlers.d.ts +22 -1
  270. package/node_modules/@comis/daemon/dist/rpc/agent-handlers.js +84 -21
  271. package/node_modules/@comis/daemon/dist/rpc/agent-inline-workspace.d.ts +1 -1
  272. package/node_modules/@comis/daemon/dist/rpc/agent-inline-workspace.js +3 -3
  273. package/node_modules/@comis/daemon/dist/rpc/builtin-provider-guard.js +2 -2
  274. package/node_modules/@comis/daemon/dist/rpc/config-handlers.d.ts +9 -1
  275. package/node_modules/@comis/daemon/dist/rpc/config-handlers.js +104 -23
  276. package/node_modules/@comis/daemon/dist/rpc/credential-resolver.d.ts +30 -1
  277. package/node_modules/@comis/daemon/dist/rpc/credential-resolver.js +74 -11
  278. package/node_modules/@comis/daemon/dist/rpc/mcp-handlers.d.ts +8 -0
  279. package/node_modules/@comis/daemon/dist/rpc/mcp-handlers.js +22 -8
  280. package/node_modules/@comis/daemon/dist/rpc/model-handlers.d.ts +1 -1
  281. package/node_modules/@comis/daemon/dist/rpc/model-handlers.js +2 -2
  282. package/node_modules/@comis/daemon/dist/rpc/provider-handlers.js +9 -12
  283. package/node_modules/@comis/daemon/dist/rpc/rpc-dispatch.d.ts +1 -0
  284. package/node_modules/@comis/daemon/dist/rpc/rpc-dispatch.js +27 -2
  285. package/node_modules/@comis/daemon/dist/setup-docker-restart-warn.js +0 -1
  286. package/node_modules/@comis/daemon/dist/sub-agent-runner.d.ts +18 -0
  287. package/node_modules/@comis/daemon/dist/sub-agent-runner.js +41 -9
  288. package/node_modules/@comis/daemon/dist/wiring/index.d.ts +4 -0
  289. package/node_modules/@comis/daemon/dist/wiring/index.js +2 -0
  290. package/node_modules/@comis/daemon/dist/wiring/oauth-preflight.d.ts +21 -0
  291. package/node_modules/@comis/daemon/dist/wiring/oauth-preflight.js +134 -0
  292. package/node_modules/@comis/daemon/dist/wiring/setup-agents.d.ts +81 -2
  293. package/node_modules/@comis/daemon/dist/wiring/setup-agents.js +164 -3
  294. package/node_modules/@comis/daemon/dist/wiring/setup-background-completion-runner.d.ts +58 -0
  295. package/node_modules/@comis/daemon/dist/wiring/setup-background-completion-runner.js +59 -0
  296. package/node_modules/@comis/daemon/dist/wiring/setup-background-tasks.d.ts +10 -3
  297. package/node_modules/@comis/daemon/dist/wiring/setup-background-tasks.js +13 -7
  298. package/node_modules/@comis/daemon/dist/wiring/setup-channels.d.ts +9 -2
  299. package/node_modules/@comis/daemon/dist/wiring/setup-channels.js +35 -10
  300. package/node_modules/@comis/daemon/dist/wiring/setup-cross-session.d.ts +20 -5
  301. package/node_modules/@comis/daemon/dist/wiring/setup-cross-session.js +21 -16
  302. package/node_modules/@comis/daemon/dist/wiring/setup-delivery.d.ts +14 -5
  303. package/node_modules/@comis/daemon/dist/wiring/setup-delivery.js +65 -20
  304. package/node_modules/@comis/daemon/dist/wiring/setup-gateway.d.ts +4 -6
  305. package/node_modules/@comis/daemon/dist/wiring/setup-gateway.js +3 -5
  306. package/node_modules/@comis/daemon/dist/wiring/setup-heartbeat.d.ts +20 -5
  307. package/node_modules/@comis/daemon/dist/wiring/setup-heartbeat.js +11 -2
  308. package/node_modules/@comis/daemon/dist/wiring/setup-output-retention.d.ts +89 -0
  309. package/node_modules/@comis/daemon/dist/wiring/setup-output-retention.js +212 -0
  310. package/node_modules/@comis/daemon/dist/wiring/setup-schedulers.js +4 -0
  311. package/node_modules/@comis/daemon/dist/wiring/setup-tools.d.ts +18 -4
  312. package/node_modules/@comis/daemon/dist/wiring/setup-tools.js +29 -10
  313. package/node_modules/@comis/daemon/dist/wiring/tool-capability-adapter.d.ts +75 -0
  314. package/node_modules/@comis/daemon/dist/wiring/tool-capability-adapter.js +253 -0
  315. package/node_modules/@comis/daemon/package.json +1 -1
  316. package/node_modules/@comis/gateway/dist/index.d.ts +2 -0
  317. package/node_modules/@comis/gateway/dist/index.js +2 -0
  318. package/node_modules/@comis/gateway/dist/oauth/oauth-callback-route.d.ts +66 -0
  319. package/node_modules/@comis/gateway/dist/oauth/oauth-callback-route.js +212 -0
  320. package/node_modules/@comis/gateway/dist/server/hono-server.d.ts +14 -0
  321. package/node_modules/@comis/gateway/dist/server/hono-server.js +10 -0
  322. package/node_modules/@comis/gateway/dist/webhook/webhook-endpoint.d.ts +0 -4
  323. package/node_modules/@comis/gateway/package.json +1 -1
  324. package/node_modules/@comis/infra/dist/logging/log-fields.d.ts +23 -0
  325. package/node_modules/@comis/infra/package.json +1 -1
  326. package/node_modules/@comis/memory/dist/compaction.d.ts +3 -5
  327. package/node_modules/@comis/memory/dist/compaction.js +2 -3
  328. package/node_modules/@comis/memory/dist/delivery-queue-adapter.d.ts +2 -2
  329. package/node_modules/@comis/memory/dist/delivery-queue-adapter.js +49 -1
  330. package/node_modules/@comis/memory/dist/index.d.ts +2 -0
  331. package/node_modules/@comis/memory/dist/index.js +3 -0
  332. package/node_modules/@comis/memory/dist/memory-api.d.ts +1 -1
  333. package/node_modules/@comis/memory/dist/memory-api.js +1 -1
  334. package/node_modules/@comis/memory/dist/oauth-profile-schema.d.ts +17 -0
  335. package/node_modules/@comis/memory/dist/oauth-profile-schema.js +33 -0
  336. package/node_modules/@comis/memory/dist/oauth-profile-store-encrypted.d.ts +27 -0
  337. package/node_modules/@comis/memory/dist/oauth-profile-store-encrypted.js +144 -0
  338. package/node_modules/@comis/memory/dist/session-store.d.ts +1 -1
  339. package/node_modules/@comis/memory/dist/session-store.js +1 -1
  340. package/node_modules/@comis/memory/dist/sqlite-secret-store.d.ts +29 -3
  341. package/node_modules/@comis/memory/dist/sqlite-secret-store.js +11 -3
  342. package/node_modules/@comis/memory/package.json +1 -1
  343. package/node_modules/@comis/scheduler/dist/cron/cron-types.d.ts +0 -42
  344. package/node_modules/@comis/scheduler/dist/execution/execution-lock.d.ts +13 -0
  345. package/node_modules/@comis/scheduler/dist/execution/execution-lock.js +1 -1
  346. package/node_modules/@comis/scheduler/dist/execution/index.d.ts +2 -0
  347. package/node_modules/@comis/scheduler/dist/execution/index.js +2 -0
  348. package/node_modules/@comis/scheduler/dist/heartbeat/agent-heartbeat-source.d.ts +29 -8
  349. package/node_modules/@comis/scheduler/dist/heartbeat/agent-heartbeat-source.js +20 -8
  350. package/node_modules/@comis/scheduler/dist/index.d.ts +2 -0
  351. package/node_modules/@comis/scheduler/dist/index.js +2 -0
  352. package/node_modules/@comis/scheduler/dist/system-events/system-event-types.d.ts +0 -3
  353. package/node_modules/@comis/scheduler/dist/tasks/task-types.d.ts +0 -17
  354. package/node_modules/@comis/scheduler/package.json +1 -1
  355. package/node_modules/@comis/shared/dist/index.d.ts +3 -0
  356. package/node_modules/@comis/shared/dist/index.js +4 -0
  357. package/node_modules/@comis/shared/dist/mcp-tool-name.d.ts +78 -0
  358. package/node_modules/@comis/shared/dist/mcp-tool-name.js +92 -0
  359. package/node_modules/@comis/shared/dist/silent-tokens.d.ts +38 -0
  360. package/node_modules/@comis/shared/dist/silent-tokens.js +51 -0
  361. package/node_modules/@comis/shared/dist/visible-delivery.d.ts +28 -0
  362. package/node_modules/@comis/shared/dist/visible-delivery.js +16 -0
  363. package/node_modules/@comis/shared/package.json +1 -1
  364. package/node_modules/@comis/skills/dist/bridge/mcp-tool-bridge.d.ts +2 -13
  365. package/node_modules/@comis/skills/dist/bridge/mcp-tool-bridge.js +3 -21
  366. package/node_modules/@comis/skills/dist/bridge/schema-validator.d.ts +38 -0
  367. package/node_modules/@comis/skills/dist/bridge/schema-validator.js +169 -0
  368. package/node_modules/@comis/skills/dist/bridge/tool-metadata-enforcement.js +12 -0
  369. package/node_modules/@comis/skills/dist/bridge/tool-metadata-registry.js +133 -3
  370. package/node_modules/@comis/skills/dist/builtin/exec-diagnostics.d.ts +32 -0
  371. package/node_modules/@comis/skills/dist/builtin/exec-diagnostics.js +127 -0
  372. package/node_modules/@comis/skills/dist/builtin/exec-security.js +38 -0
  373. package/node_modules/@comis/skills/dist/builtin/exec-tool.d.ts +55 -9
  374. package/node_modules/@comis/skills/dist/builtin/exec-tool.js +392 -19
  375. package/node_modules/@comis/skills/dist/builtin/file-tools/grep-tool.js +6 -6
  376. package/node_modules/@comis/skills/dist/builtin/install-detour.d.ts +67 -0
  377. package/node_modules/@comis/skills/dist/builtin/install-detour.js +342 -0
  378. package/node_modules/@comis/skills/dist/builtin/platform/admin-manage-factory.js +5 -5
  379. package/node_modules/@comis/skills/dist/builtin/platform/agents-manage-tool.d.ts +7 -6
  380. package/node_modules/@comis/skills/dist/builtin/platform/agents-manage-tool.js +40 -29
  381. package/node_modules/@comis/skills/dist/builtin/platform/background-tasks-tool.d.ts +4 -1
  382. package/node_modules/@comis/skills/dist/builtin/platform/background-tasks-tool.js +3 -3
  383. package/node_modules/@comis/skills/dist/builtin/platform/cron-tool.js +1 -1
  384. package/node_modules/@comis/skills/dist/builtin/platform/gateway-tool.js +6 -6
  385. package/node_modules/@comis/skills/dist/builtin/platform/mcp-manage-tool.d.ts +1 -1
  386. package/node_modules/@comis/skills/dist/builtin/platform/mcp-manage-tool.js +9 -9
  387. package/node_modules/@comis/skills/dist/builtin/platform/message-tool.js +18 -0
  388. package/node_modules/@comis/skills/dist/builtin/platform/messaging-factory.d.ts +18 -1
  389. package/node_modules/@comis/skills/dist/builtin/platform/messaging-factory.js +18 -2
  390. package/node_modules/@comis/skills/dist/builtin/platform/models-manage-tool.js +3 -3
  391. package/node_modules/@comis/skills/dist/builtin/process-registry.d.ts +14 -0
  392. package/node_modules/@comis/skills/dist/builtin/process-tool.d.ts +24 -4
  393. package/node_modules/@comis/skills/dist/builtin/process-tool.js +25 -7
  394. package/node_modules/@comis/skills/dist/builtin/sandbox/bwrap-provider.d.ts +11 -0
  395. package/node_modules/@comis/skills/dist/builtin/sandbox/bwrap-provider.js +123 -1
  396. package/node_modules/@comis/skills/dist/builtin/sandbox/detect-provider.js +40 -15
  397. package/node_modules/@comis/skills/dist/index.d.ts +4 -1
  398. package/node_modules/@comis/skills/dist/index.js +3 -1
  399. package/node_modules/@comis/skills/dist/manifest/capability-parser.d.ts +44 -0
  400. package/node_modules/@comis/skills/dist/manifest/capability-parser.js +68 -0
  401. package/node_modules/@comis/skills/dist/manifest/schema.d.ts +44 -37
  402. package/node_modules/@comis/skills/dist/manifest/schema.js +35 -0
  403. package/node_modules/@comis/skills/dist/media/ssrf-fetcher.d.ts +7 -0
  404. package/node_modules/@comis/skills/dist/media/ssrf-fetcher.js +9 -2
  405. package/node_modules/@comis/skills/dist/registry/discovery.d.ts +8 -0
  406. package/node_modules/@comis/skills/dist/registry/discovery.js +10 -3
  407. package/node_modules/@comis/skills/dist/registry/skill-registry.d.ts +45 -1
  408. package/node_modules/@comis/skills/dist/registry/skill-registry.js +70 -7
  409. package/node_modules/@comis/skills/package.json +1 -1
  410. package/node_modules/@comis/web/dist/assets/{agent-detail-71BSbSfD.js → agent-detail-q8t1NB7w.js} +1 -1
  411. package/node_modules/@comis/web/dist/assets/{agent-editor-CTSDZhwT.js → agent-editor-B46io5gv.js} +1 -1
  412. package/node_modules/@comis/web/dist/assets/{agent-list-BEhni2ea.js → agent-list-DQ6g2Rcx.js} +1 -1
  413. package/node_modules/@comis/web/dist/assets/{billing-view-DVP1IvVs.js → billing-view-IWPR8LgF.js} +1 -1
  414. package/node_modules/@comis/web/dist/assets/{channel-detail-N_YK74xC.js → channel-detail-DlNNZuuC.js} +1 -1
  415. package/node_modules/@comis/web/dist/assets/{channel-list-DRk6ZJaF.js → channel-list-DhGwxiMc.js} +1 -1
  416. package/node_modules/@comis/web/dist/assets/{chat-console-Dm-GtSf9.js → chat-console-Nv6fM3Rc.js} +1 -1
  417. package/node_modules/@comis/web/dist/assets/{config-editor-CIferYX6.js → config-editor-BYKuJF76.js} +1 -1
  418. package/node_modules/@comis/web/dist/assets/{context-dag-browser-CL84rXXM.js → context-dag-browser-ClNEtzYE.js} +1 -1
  419. package/node_modules/@comis/web/dist/assets/{context-engine-B1HOTEZv.js → context-engine-BZJ6HChd.js} +1 -1
  420. package/node_modules/@comis/web/dist/assets/{delivery-view-Y6JKYVFw.js → delivery-view-Cb7I3vGu.js} +1 -1
  421. package/node_modules/@comis/web/dist/assets/{diagnostics-view-DWV1UQjz.js → diagnostics-view-9u9Lyu5a.js} +1 -1
  422. package/node_modules/@comis/web/dist/assets/{ic-chat-message-DfSERzzg.js → ic-chat-message-BFt3cVpx.js} +1 -1
  423. package/node_modules/@comis/web/dist/assets/{ic-connection-dot-CXyhlJup.js → ic-connection-dot-y77LZ3Gu.js} +1 -1
  424. package/node_modules/@comis/web/dist/assets/{ic-tool-call-DNmwTjek.js → ic-tool-call-qt6w1NQl.js} +1 -1
  425. package/node_modules/@comis/web/dist/assets/{index-CBr0Tm9_.js → index-8Tg9oc-C.js} +2 -2
  426. package/node_modules/@comis/web/dist/assets/{mcp-management-BaH2-vox.js → mcp-management-69dtH_kY.js} +2 -2
  427. package/node_modules/@comis/web/dist/assets/{media-config-CZLshJoN.js → media-config-BdjLj5c1.js} +1 -1
  428. package/node_modules/@comis/web/dist/assets/{media-test-C9NUWgo_.js → media-test-DuPqrixi.js} +1 -1
  429. package/node_modules/@comis/web/dist/assets/{memory-inspector-D_fmTcRN.js → memory-inspector-B-Pepbq-.js} +1 -1
  430. package/node_modules/@comis/web/dist/assets/{message-center-BBFlNCZn.js → message-center-B7l0yNYY.js} +1 -1
  431. package/node_modules/@comis/web/dist/assets/{models-BytGLm99.js → models-JHFHuv5S.js} +1 -1
  432. package/node_modules/@comis/web/dist/assets/{observe-view-VXtHqaqq.js → observe-view-r8mqhy4O.js} +1 -1
  433. package/node_modules/@comis/web/dist/assets/{pipeline-builder-CfXczlfJ.js → pipeline-builder-XjkiZRcR.js} +1 -1
  434. package/node_modules/@comis/web/dist/assets/{pipeline-history-CPmXFnbe.js → pipeline-history-CZqJv_Hj.js} +1 -1
  435. package/node_modules/@comis/web/dist/assets/{pipeline-history-detail-DcueTMs9.js → pipeline-history-detail-BEFGMoDy.js} +1 -1
  436. package/node_modules/@comis/web/dist/assets/{pipeline-list-B-xG5WZh.js → pipeline-list-B6q5LvO1.js} +1 -1
  437. package/node_modules/@comis/web/dist/assets/{pipeline-monitor-pnIOYaSY.js → pipeline-monitor-BNomXjVL.js} +1 -1
  438. package/node_modules/@comis/web/dist/assets/{scheduler-BtUIFHhA.js → scheduler-BJEjcGKA.js} +1 -1
  439. package/node_modules/@comis/web/dist/assets/{security-C8mWRq2y.js → security-2G1jhBfV.js} +1 -1
  440. package/node_modules/@comis/web/dist/assets/{session-detail-DgdkO5ka.js → session-detail-DmVPzFBR.js} +1 -1
  441. package/node_modules/@comis/web/dist/assets/{session-list-DcylcfTn.js → session-list-CsqMQoHs.js} +1 -1
  442. package/node_modules/@comis/web/dist/assets/{setup-wizard-BP5yjsuL.js → setup-wizard-CAdM-gSP.js} +1 -1
  443. package/node_modules/@comis/web/dist/assets/{skills-DXt1bX8Z.js → skills-2ODqKaWr.js} +1 -1
  444. package/node_modules/@comis/web/dist/assets/{subagents-C7YbUHXY.js → subagents-BFlwfTbD.js} +1 -1
  445. package/node_modules/@comis/web/dist/assets/{workspace-manager-DP6pW4wa.js → workspace-manager--CbOx_dI.js} +1 -1
  446. package/node_modules/@comis/web/dist/index.html +1 -1
  447. package/node_modules/@comis/web/package.json +1 -1
  448. package/package.json +25 -24
@@ -14,7 +14,9 @@
14
14
  import { ok, err } from "@comis/shared";
15
15
  import * as fs from "node:fs";
16
16
  import { emitSkillAudit } from "../audit/skill-audit.js";
17
- import { parseFrontmatter, parseSkillManifest } from "../manifest/parser.js";
17
+ import { parseComisCapabilityDefensively } from "../manifest/capability-parser.js";
18
+ import { parseFrontmatter } from "../manifest/parser.js";
19
+ import { SkillManifestSchema } from "../manifest/schema.js";
18
20
  import { formatAvailableSkillsXml } from "../prompt/processor.js";
19
21
  import { sanitizeSkillBody } from "../prompt/sanitizer.js";
20
22
  import { scanSkillContent } from "../prompt/content-scanner.js";
@@ -161,7 +163,10 @@ export function createSkillRegistry(config, eventBus, auditContext, logger, elig
161
163
  catch (e) {
162
164
  return err(new Error(`Failed to read prompt skill file for ${name}: ${e instanceof Error ? e.message : String(e)}`));
163
165
  }
164
- // Parse frontmatter to extract body
166
+ // Parse frontmatter; defensively strip a malformed comis.capability
167
+ // block before strict validation so a typo in capability does NOT hide
168
+ // the skill at load time. Mirrors the discovery-side enrichment in
169
+ // discovery.ts.
165
170
  const fmResult = parseFrontmatter(fileContent);
166
171
  if (!fmResult.ok) {
167
172
  return err(fmResult.error);
@@ -171,11 +176,28 @@ export function createSkillRegistry(config, eventBus, auditContext, logger, elig
171
176
  if (!rawBody.trim()) {
172
177
  return err(new Error(`Prompt skill "${name}" has no body content`));
173
178
  }
174
- // Parse full manifest for allowedTools
175
- const manifestResult = parseSkillManifest(fileContent);
176
- if (!manifestResult.ok) {
177
- return err(manifestResult.error);
179
+ const frontmatter = fmResult.value.frontmatter;
180
+ const ns = typeof frontmatter["comis"] === "object" &&
181
+ frontmatter["comis"] !== null &&
182
+ !Array.isArray(frontmatter["comis"])
183
+ ? frontmatter["comis"]
184
+ : undefined;
185
+ if (ns && ns["capability"] !== undefined) {
186
+ // Logger omitted: discovery enrichment already emitted the WARN for
187
+ // this file; a second identical line at load time is just noise.
188
+ const cap = parseComisCapabilityDefensively(ns["capability"], name, undefined);
189
+ if (cap === undefined) {
190
+ delete ns["capability"];
191
+ }
192
+ }
193
+ const manifestValidation = SkillManifestSchema.safeParse(frontmatter);
194
+ if (!manifestValidation.success) {
195
+ const issues = manifestValidation.error.issues
196
+ .map((issue) => `${issue.path.join(".")}: ${issue.message}`)
197
+ .join("; ");
198
+ return err(new Error(`Manifest validation failed: ${issues}`));
178
199
  }
200
+ const manifest = manifestValidation.data;
179
201
  // Sanitize body content
180
202
  const sanitized = sanitizeSkillBody(rawBody, config.promptSkills.maxBodyLength);
181
203
  // Validate sanitized body is non-empty
@@ -250,7 +272,7 @@ export function createSkillRegistry(config, eventBus, auditContext, logger, elig
250
272
  location: metadata.path,
251
273
  userInvocable: metadata.userInvocable,
252
274
  disableModelInvocation: metadata.disableModelInvocation,
253
- allowedTools: manifestResult.value.allowedTools,
275
+ allowedTools: manifest.allowedTools,
254
276
  argumentHint: metadata.argumentHint,
255
277
  source: metadata.source,
256
278
  };
@@ -360,6 +382,41 @@ export function createSkillRegistry(config, eventBus, auditContext, logger, elig
360
382
  }
361
383
  return names;
362
384
  },
385
+ getPromptSkillCapabilities(getOperatorHint) {
386
+ const out = [];
387
+ for (const metadata of metadataMap.values()) {
388
+ // Filter chain -- mirrors getPromptSkillDescriptions PLUS the extra
389
+ // disableModelInvocation filter (skills hidden from the model are
390
+ // not capability-index entries).
391
+ if (!isSkillEligible(metadata.name, config.promptSkills))
392
+ continue;
393
+ if (!checkRuntimeEligibility(metadata))
394
+ continue;
395
+ if (metadata.disableModelInvocation)
396
+ continue;
397
+ // Precedence:
398
+ // operator(skillKey) > operator(skillName) > comis.capability > fallback.
399
+ const opByKey = metadata.skillKey
400
+ ? getOperatorHint(metadata.name, metadata.skillKey)
401
+ : undefined;
402
+ const opByName = !opByKey ? getOperatorHint(metadata.name) : undefined;
403
+ const operatorHint = opByKey ?? opByName;
404
+ const comisHint = metadata.capability;
405
+ const cluster = operatorHint?.cluster ?? comisHint?.cluster;
406
+ const summary = operatorHint?.description ?? comisHint?.summary ?? metadata.description;
407
+ const rawReplaces = operatorHint?.replacesPackages ?? comisHint?.replacesPackages ?? [];
408
+ out.push(Object.freeze({
409
+ name: metadata.name,
410
+ skillKey: metadata.skillKey,
411
+ description: metadata.description,
412
+ cluster,
413
+ summary,
414
+ replacesPackages: Object.freeze([...rawReplaces]),
415
+ source: metadata.source,
416
+ }));
417
+ }
418
+ return Object.freeze(out);
419
+ },
363
420
  initFromSdkSkills(sdkSkills) {
364
421
  const prevMetadataCount = metadataMap.size;
365
422
  const prevCacheCount = promptCache.size;
@@ -379,6 +436,7 @@ export function createSkillRegistry(config, eventBus, auditContext, logger, elig
379
436
  let skillKey;
380
437
  let primaryEnv;
381
438
  let commandDispatch;
439
+ let capability;
382
440
  // Enrichment: read comis: namespace from skill file frontmatter
383
441
  try {
384
442
  const content = fs.readFileSync(sdkSkill.filePath, "utf-8");
@@ -441,6 +499,10 @@ export function createSkillRegistry(config, eventBus, auditContext, logger, elig
441
499
  if (typeof rawCommandDispatch === "string") {
442
500
  commandDispatch = rawCommandDispatch;
443
501
  }
502
+ // Capability layer -- defensive parse. A typo or type mismatch
503
+ // in the inner block returns undefined + emits a WARN; the skill
504
+ // itself is NEVER hidden by malformed capability metadata.
505
+ capability = parseComisCapabilityDefensively(ns?.["capability"], sdkSkill.name, logger);
444
506
  }
445
507
  }
446
508
  catch {
@@ -462,6 +524,7 @@ export function createSkillRegistry(config, eventBus, auditContext, logger, elig
462
524
  skillKey,
463
525
  primaryEnv,
464
526
  commandDispatch,
527
+ capability,
465
528
  };
466
529
  // Apply eligibility filtering during population
467
530
  if (!isSkillEligible(metadata.name, config.promptSkills))
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@comis/skills",
3
3
  "private": true,
4
- "version": "1.0.34",
4
+ "version": "1.0.37",
5
5
  "author": "Moshe Anconina",
6
6
  "license": "Apache-2.0",
7
7
  "description": "Skill system, MCP integration, and tool sandbox for Comis agents",
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u,i as d}from"./index-CBr0Tm9_.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";function f(e){return e.toLocaleString(`en-US`)}var p=class extends r{constructor(...e){super(...e),this.label=``,this.used=0,this.total=0,this.warnThreshold=70,this.dangerThreshold=90}static{this.styles=[o,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u,i as d}from"./index-8Tg9oc-C.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";function f(e){return e.toLocaleString(`en-US`)}var p=class extends r{constructor(...e){super(...e),this.label=``,this.used=0,this.total=0,this.warnThreshold=70,this.dangerThreshold=90}static{this.styles=[o,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-CBr0Tm9_.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-tag-CvMVQFRR.js";import"./ic-array-editor-BLoEyeLS.js";function d(e,t=0){let n=[],r=` `.repeat(t);for(let[i,a]of Object.entries(e))if(!(a==null||a===``))if(Array.isArray(a)){if(a.length===0)continue;n.push(`${r}${i}:`);for(let e of a)if(typeof e==`object`&&e&&!Array.isArray(e)){let i=d(e,t+2).split(`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-8Tg9oc-C.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-tag-CvMVQFRR.js";import"./ic-array-editor-BLoEyeLS.js";function d(e,t=0){let n=[],r=` `.repeat(t);for(let[i,a]of Object.entries(e))if(!(a==null||a===``))if(Array.isArray(a)){if(a.length===0)continue;n.push(`${r}${i}:`);for(let e of a)if(typeof e==`object`&&e&&!Array.isArray(e)){let i=d(e,t+2).split(`
2
2
  `).filter(Boolean);if(i.length>0){n.push(`${r} - ${i[0].trimStart()}`);for(let e=1;e<i.length;e++)n.push(`${r} ${i[e].trimStart()}`)}}else n.push(`${r} - ${f(e)}`)}else if(typeof a==`object`){let e=d(a,t+1);e.trim()&&(n.push(`${r}${i}:`),n.push(e))}else n.push(`${r}${i}: ${f(a)}`);return n.join(`
3
3
  `)}function f(e){return typeof e==`string`?/[:#{}[\],&*?|>!%@`'"]/.test(e)||e.includes(`
4
4
  `)?`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`:e:typeof e==`boolean`?e?`true`:`false`:String(e)}function p(){let e=new Set,t=t=>{e.size>0&&t.preventDefault()};return{get isDirty(){return e.size>0},markDirty(t=`_default`){e.add(t)},markClean(){e.clear()},confirmNavigation(){return e.size===0?!0:window.confirm(`You have unsaved changes. Discard and leave?`)},attach(){window.addEventListener(`beforeunload`,t)},detach(){window.removeEventListener(`beforeunload`,t)},dirtyFields(){return[...e]}}}function m(e,t,n){return e[t]??n}function h(e,n,r,i,a){let o=m(e,n,void 0),s=a?.step??`1`,c=s.includes(`.`)?s.split(`.`)[1].length:0,l=o===void 0?``:(c>0?Number(Number(o).toFixed(c)):o).toString(),u=a?.id??`field-${n.replace(/\./g,`-`)}`;return t`
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u,i as d}from"./index-CBr0Tm9_.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-data-table-CKIvr-ag.js";import"./ic-search-input-B02AGw1i.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";var f={active:`success`,idle:`info`,suspended:`warning`,error:`error`},p={active:`Active`,idle:`Idle`,suspended:`Suspended`,error:`Error`},m=[{value:`active`,label:`Active`,color:`var(--ic-success)`},{value:`idle`,label:`Idle`,color:`var(--ic-info)`},{value:`suspended`,label:`Suspended`,color:`var(--ic-warning)`},{value:`error`,label:`Error`,color:`var(--ic-error)`}],h=new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}),g={minimal:`Read and write only. Safest option for restricted environments.`,coding:`Common tools including web, memory, and file operations.`,messaging:`Optimized for chat and messaging workflows.`,supervisor:`Extended tools for agent orchestration and oversight.`,full:`All available tools. Best for autonomous agents with broad capabilities.`},_=class extends r{constructor(...e){super(...e),this.apiClient=null,this.rpcClient=null,this.eventDispatcher=null,this._sse=null,this._reloadDebounce=null,this._agents=[],this._loadState=`loading`,this._error=``,this._deleteTarget=null,this._actionPending=``,this._searchQuery=``,this._statusFilters=new Set,this._wizardOpen=!1,this._wizardStep=1,this._wizardError=``,this._wizardCreating=!1,this._wizardAgentId=``,this._wizardAgentName=``,this._wizardProvider=`anthropic`,this._wizardModel=``,this._wizardToolProfile=`full`,this._catalogProviders=[]}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u,i as d}from"./index-8Tg9oc-C.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-data-table-CKIvr-ag.js";import"./ic-search-input-B02AGw1i.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";var f={active:`success`,idle:`info`,suspended:`warning`,error:`error`},p={active:`Active`,idle:`Idle`,suspended:`Suspended`,error:`Error`},m=[{value:`active`,label:`Active`,color:`var(--ic-success)`},{value:`idle`,label:`Idle`,color:`var(--ic-info)`},{value:`suspended`,label:`Suspended`,color:`var(--ic-warning)`},{value:`error`,label:`Error`,color:`var(--ic-error)`}],h=new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}),g={minimal:`Read and write only. Safest option for restricted environments.`,coding:`Common tools including web, memory, and file operations.`,messaging:`Optimized for chat and messaging workflows.`,supervisor:`Extended tools for agent orchestration and oversight.`,full:`All available tools. Best for autonomous agents with broad capabilities.`},_=class extends r{constructor(...e){super(...e),this.apiClient=null,this.rpcClient=null,this.eventDispatcher=null,this._sse=null,this._reloadDebounce=null,this._agents=[],this._loadState=`loading`,this._error=``,this._deleteTarget=null,this._actionPending=``,this._searchQuery=``,this._statusFilters=new Set,this._wizardOpen=!1,this._wizardStep=1,this._wizardError=``,this._wizardCreating=!1,this._wizardAgentId=``,this._wizardAgentName=``,this._wizardProvider=`anthropic`,this._wizardModel=``,this._wizardToolProfile=`full`,this._catalogProviders=[]}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{i as u}from"./index-CBr0Tm9_.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-time-range-picker-DXbYeBmY.js";var d=class extends r{constructor(...e){super(...e),this.segments=[],this.total=0,this.currency=`$`}static{this.styles=[o,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{i as u}from"./index-8Tg9oc-C.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-time-range-picker-DXbYeBmY.js";var d=class extends r{constructor(...e){super(...e),this.segments=[],this.total=0,this.currency=`$`}static{this.styles=[o,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u,i as d}from"./index-CBr0Tm9_.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-tag-CvMVQFRR.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-tabs-yBjkWKJH.js";import"./ic-connection-dot-CXyhlJup.js";var f=[{key:`transcribeAudio`,label:`Voice Transcription`,description:`Transcribe inbound audio/voice attachments to text (STT)`},{key:`analyzeImages`,label:`Image Analysis`,description:`Analyze inbound images using vision AI`},{key:`describeVideos`,label:`Video Description`,description:`Generate text descriptions of inbound video attachments`},{key:`extractDocuments`,label:`Document Extraction`,description:`Extract text from PDF, CSV, and other document attachments`},{key:`understandLinks`,label:`Link Understanding`,description:`Fetch and inject content from URLs in message text`}],p={telegram:[{key:`botToken`,label:`Bot Token`,type:`secret`},{key:`webhookUrl`,label:`Webhook URL`,type:`text`,placeholder:`https://...`},{key:`ackReaction.enabled`,label:`Ack Reaction`,type:`toggle`},{key:`ackReaction.emoji`,label:`Ack Emoji`,type:`text`,placeholder:`👀`}],discord:[{key:`botToken`,label:`Bot Token`,type:`secret`},{key:`guildId`,label:`Guild ID`,type:`text`}],slack:[{key:`botToken`,label:`Bot Token`,type:`secret`},{key:`appToken`,label:`App Token`,type:`secret`},{key:`signingSecret`,label:`Signing Secret`,type:`secret`},{key:`mode`,label:`Mode`,type:`select`,options:[`socket`,`http`]}],whatsapp:[{key:`authDir`,label:`Auth Directory`,type:`text`},{key:`printQR`,label:`Print QR Code`,type:`toggle`}],line:[{key:`channelSecret`,label:`Channel Secret`,type:`secret`},{key:`webhookPath`,label:`Webhook Path`,type:`text`,placeholder:`/webhooks/line`}],signal:[{key:`baseUrl`,label:`Base URL`,type:`text`,placeholder:`http://127.0.0.1:8080`},{key:`account`,label:`Account`,type:`text`},{key:`cliPath`,label:`CLI Path`,type:`text`}],irc:[{key:`host`,label:`Host`,type:`text`},{key:`port`,label:`Port`,type:`text`},{key:`nick`,label:`Nick`,type:`text`},{key:`tls`,label:`TLS`,type:`toggle`},{key:`nickservPassword`,label:`NickServ Password`,type:`secret`},{key:`channels`,label:`Channels`,type:`list`}],imessage:[{key:`binaryPath`,label:`Binary Path`,type:`text`},{key:`account`,label:`Account`,type:`text`}]};function m(e){return e?e.charAt(0).toUpperCase()+e.slice(1):``}function h(e,t){return t.split(`.`).reduce((e,t)=>typeof e==`object`&&e?e[t]:void 0,e)}var g=class extends r{constructor(...e){super(...e),this.apiClient=null,this.rpcClient=null,this.eventDispatcher=null,this.channelType=``,this._loadState=`loading`,this._error=``,this._config={},this._enabled=!1,this._status=`disconnected`,this._deliveryTrace=[],this._activityData=[],this._channelLastActiveAt=0,this._channelMessagesSent=0,this._channelMessagesReceived=0,this._connectionMode=``,this._lastError=``,this._actionPending=!1,this._queueStatus=null,this._capabilities=null,this._mediaProcessing={transcribeAudio:!0,analyzeImages:!0,describeVideos:!0,extractDocuments:!0,understandLinks:!0},this._sse=null,this._reloadDebounce=null,this._hasLoaded=!1,this._previousChannelType=``}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u,i as d}from"./index-8Tg9oc-C.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-tag-CvMVQFRR.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-tabs-yBjkWKJH.js";import"./ic-connection-dot-y77LZ3Gu.js";var f=[{key:`transcribeAudio`,label:`Voice Transcription`,description:`Transcribe inbound audio/voice attachments to text (STT)`},{key:`analyzeImages`,label:`Image Analysis`,description:`Analyze inbound images using vision AI`},{key:`describeVideos`,label:`Video Description`,description:`Generate text descriptions of inbound video attachments`},{key:`extractDocuments`,label:`Document Extraction`,description:`Extract text from PDF, CSV, and other document attachments`},{key:`understandLinks`,label:`Link Understanding`,description:`Fetch and inject content from URLs in message text`}],p={telegram:[{key:`botToken`,label:`Bot Token`,type:`secret`},{key:`webhookUrl`,label:`Webhook URL`,type:`text`,placeholder:`https://...`},{key:`ackReaction.enabled`,label:`Ack Reaction`,type:`toggle`},{key:`ackReaction.emoji`,label:`Ack Emoji`,type:`text`,placeholder:`👀`}],discord:[{key:`botToken`,label:`Bot Token`,type:`secret`},{key:`guildId`,label:`Guild ID`,type:`text`}],slack:[{key:`botToken`,label:`Bot Token`,type:`secret`},{key:`appToken`,label:`App Token`,type:`secret`},{key:`signingSecret`,label:`Signing Secret`,type:`secret`},{key:`mode`,label:`Mode`,type:`select`,options:[`socket`,`http`]}],whatsapp:[{key:`authDir`,label:`Auth Directory`,type:`text`},{key:`printQR`,label:`Print QR Code`,type:`toggle`}],line:[{key:`channelSecret`,label:`Channel Secret`,type:`secret`},{key:`webhookPath`,label:`Webhook Path`,type:`text`,placeholder:`/webhooks/line`}],signal:[{key:`baseUrl`,label:`Base URL`,type:`text`,placeholder:`http://127.0.0.1:8080`},{key:`account`,label:`Account`,type:`text`},{key:`cliPath`,label:`CLI Path`,type:`text`}],irc:[{key:`host`,label:`Host`,type:`text`},{key:`port`,label:`Port`,type:`text`},{key:`nick`,label:`Nick`,type:`text`},{key:`tls`,label:`TLS`,type:`toggle`},{key:`nickservPassword`,label:`NickServ Password`,type:`secret`},{key:`channels`,label:`Channels`,type:`list`}],imessage:[{key:`binaryPath`,label:`Binary Path`,type:`text`},{key:`account`,label:`Account`,type:`text`}]};function m(e){return e?e.charAt(0).toUpperCase()+e.slice(1):``}function h(e,t){return t.split(`.`).reduce((e,t)=>typeof e==`object`&&e?e[t]:void 0,e)}var g=class extends r{constructor(...e){super(...e),this.apiClient=null,this.rpcClient=null,this.eventDispatcher=null,this.channelType=``,this._loadState=`loading`,this._error=``,this._config={},this._enabled=!1,this._status=`disconnected`,this._deliveryTrace=[],this._activityData=[],this._channelLastActiveAt=0,this._channelMessagesSent=0,this._channelMessagesReceived=0,this._connectionMode=``,this._lastError=``,this._actionPending=!1,this._queueStatus=null,this._capabilities=null,this._mediaProcessing={transcribeAudio:!0,analyzeImages:!0,describeVideos:!0,extractDocuments:!0,understandLinks:!0},this._sse=null,this._reloadDebounce=null,this._hasLoaded=!1,this._previousChannelType=``}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u,i as d,n as f,r as p,t as m}from"./index-CBr0Tm9_.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-empty-state-CM3Wbj2f.js";var h=class extends r{constructor(...e){super(...e),this.channelType=``,this.name=``,this.status=`disconnected`,this.enabled=!1,this.isStale=!1,this.messageCount=0,this.uptime=0,this.lastActivity=0}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u,i as d,n as f,r as p,t as m}from"./index-8Tg9oc-C.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-empty-state-CM3Wbj2f.js";var h=class extends r{constructor(...e){super(...e),this.channelType=``,this.name=``,this.status=`disconnected`,this.enabled=!1,this.isStale=!1,this.messageCount=0,this.uptime=0,this.lastActivity=0}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  min-width: 280px;
@@ -1,4 +1,4 @@
1
- import{a as e,c as t,f as n,h as r,l as i,n as a,o,r as s,s as c,t as l,u}from"./decorate-BvWYovGE.js";import{a as d}from"./index-CBr0Tm9_.js";import"./ic-tag-CvMVQFRR.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-search-input-B02AGw1i.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";import{n as f,r as p}from"./session-key-parser-Dkqcj2Ss.js";import{n as m,r as h}from"./ic-tool-call-DNmwTjek.js";import"./ic-chat-message-DfSERzzg.js";import"./ic-budget-segment-bar-zLsMzjDO.js";var g=class extends i{constructor(...e){super(...e),this.sessions=[],this.selectedKey=``,this.filter=``,this.open=!1}static{this.styles=[s,a,r`
1
+ import{a as e,c as t,f as n,h as r,l as i,n as a,o,r as s,s as c,t as l,u}from"./decorate-BvWYovGE.js";import{a as d}from"./index-8Tg9oc-C.js";import"./ic-tag-CvMVQFRR.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-search-input-B02AGw1i.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";import{n as f,r as p}from"./session-key-parser-Dkqcj2Ss.js";import{n as m,r as h}from"./ic-tool-call-qt6w1NQl.js";import"./ic-chat-message-BFt3cVpx.js";import"./ic-budget-segment-bar-zLsMzjDO.js";var g=class extends i{constructor(...e){super(...e),this.sessions=[],this.selectedKey=``,this.filter=``,this.open=!1}static{this.styles=[s,a,r`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-CBr0Tm9_.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-array-editor-BLoEyeLS.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-tabs-yBjkWKJH.js";import"./ic-select-BqfZISjw.js";function d(e,t){let n=e.split(`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-8Tg9oc-C.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-array-editor-BLoEyeLS.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-tabs-yBjkWKJH.js";import"./ic-select-BqfZISjw.js";function d(e,t){let n=e.split(`
2
2
  `),r=t.split(`
3
3
  `),i=n.length,a=r.length,o=Array.from({length:i+1},()=>Array(a+1).fill(0));for(let e=1;e<=i;e++)for(let t=1;t<=a;t++)n[e-1]===r[t-1]?o[e][t]=o[e-1][t-1]+1:o[e][t]=Math.max(o[e-1][t],o[e][t-1]);let s=i,c=a,l=[],u=[];for(;s>0||c>0;)s>0&&c>0&&n[s-1]===r[c-1]?(l.push({text:n[s-1],status:`unchanged`}),u.push({text:r[c-1],status:`unchanged`}),s--,c--):c>0&&(s===0||o[s][c-1]>=o[s-1][c])?(u.push({text:r[c-1],status:`added`}),l.push({text:``,status:`unchanged`}),c--):(l.push({text:n[s-1],status:`removed`}),u.push({text:``,status:`unchanged`}),s--);return l.reverse(),u.reverse(),{oldLines:l,newLines:u}}var f=class extends r{constructor(...e){super(...e),this.oldText=``,this.newText=``,this.oldLabel=`Current`,this.newLabel=`Pending`,this._syncing=!1}static{this.styles=[o,i,n`
4
4
  :host {
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import"./index-CBr0Tm9_.js";import"./ic-tag-CvMVQFRR.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-search-input-B02AGw1i.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-detail-panel-DiCe4hLr.js";var u=class extends r{constructor(...e){super(...e),this.rpcClient=null,this._loadState=`loading`,this._conversations=[],this._selectedConvId=null,this._treeNodes=[],this._treeMessageCount=0,this._expanded=new Set,this._searchQuery=``,this._searchResults=[],this._inspectedNode=null,this._detailOpen=!1,this._treeLoading=!1,this._searchLoading=!1,this._errorMsg=``,this._searchTimeout=null,this._rpcClientInitialized=!1}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import"./index-8Tg9oc-C.js";import"./ic-tag-CvMVQFRR.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-search-input-B02AGw1i.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-detail-panel-DiCe4hLr.js";var u=class extends r{constructor(...e){super(...e),this.rpcClient=null,this._loadState=`loading`,this._conversations=[],this._selectedConvId=null,this._treeNodes=[],this._treeMessageCount=0,this._expanded=new Set,this._searchQuery=``,this._searchResults=[],this._inspectedNode=null,this._detailOpen=!1,this._treeLoading=!1,this._searchLoading=!1,this._errorMsg=``,this._searchTimeout=null,this._rpcClientInitialized=!1}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{i as u}from"./index-CBr0Tm9_.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-budget-segment-bar-zLsMzjDO.js";import"./ic-layer-waterfall-WkaFyu-l.js";var d={file_read:`var(--ic-accent)`,exec:`var(--ic-success)`,web:`var(--ic-info, #3b82f6)`,image:`var(--ic-warning)`,error:`var(--ic-error)`},f=`var(--ic-text-dim)`,p=class extends r{constructor(...e){super(...e),this.categories={},this.showLegend=!0}static{this.styles=[o,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{i as u}from"./index-8Tg9oc-C.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-budget-segment-bar-zLsMzjDO.js";import"./ic-layer-waterfall-WkaFyu-l.js";var d={file_read:`var(--ic-accent)`,exec:`var(--ic-success)`,web:`var(--ic-info, #3b82f6)`,image:`var(--ic-warning)`,error:`var(--ic-error)`},f=`var(--ic-text-dim)`,p=class extends r{constructor(...e){super(...e),this.categories={},this.showLegend=!0}static{this.styles=[o,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import"./index-CBr0Tm9_.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-time-range-picker-DXbYeBmY.js";import"./ic-detail-panel-DiCe4hLr.js";import"./ic-delivery-row-B3YwjjuM.js";function u(e){return e>=1e3?`${(e/1e3).toFixed(1)}s`:`${e}ms`}var d=class extends r{constructor(...e){super(...e),this.steps=[],this.totalDurationMs=0}static{this.styles=[o,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import"./index-8Tg9oc-C.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-time-range-picker-DXbYeBmY.js";import"./ic-detail-panel-DiCe4hLr.js";import"./ic-delivery-row-B3YwjjuM.js";function u(e){return e>=1e3?`${(e/1e3).toFixed(1)}s`:`${e}ms`}var d=class extends r{constructor(...e){super(...e),this.steps=[],this.totalDurationMs=0}static{this.styles=[o,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{n as u,t as d}from"./observability-types-D0tkwElU.js";import{i as f}from"./index-CBr0Tm9_.js";import"./ic-tag-CvMVQFRR.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-time-range-picker-DXbYeBmY.js";var p=3e4,m=6048e5,h={info:`var(--ic-text-dim)`,warn:`var(--ic-warning)`,error:`var(--ic-error)`},g=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.eventDispatcher=null,this._sse=null,this._reloadDebounce=null,this._loadState=`loading`,this._sinceMs=m,this._selectedRange=`7d`,this._events=[],this._selectedCategories=new Set,this._selectedSeverities=new Set,this._eventCounts={},this._refreshInterval=null,this._rpcStatusUnsub=null}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{n as u,t as d}from"./observability-types-D0tkwElU.js";import{i as f}from"./index-8Tg9oc-C.js";import"./ic-tag-CvMVQFRR.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-time-range-picker-DXbYeBmY.js";var p=3e4,m=6048e5,h={info:`var(--ic-text-dim)`,warn:`var(--ic-warning)`,error:`var(--ic-error)`},g=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.eventDispatcher=null,this._sse=null,this._reloadDebounce=null,this._loadState=`loading`,this._sinceMs=m,this._selectedRange=`7d`,this._events=[],this._selectedCategories=new Set,this._selectedSeverities=new Set,this._eventCounts={},this._refreshInterval=null,this._rpcStatusUnsub=null}static{this.styles=[o,i,n`
2
2
  :host { display: block; }
3
3
 
4
4
  .diagnostics-view { padding: 0; }
@@ -1,4 +1,4 @@
1
- import{c as e,d as t,f as n,h as r,l as i,n as a,o,r as s,s as c,t as l,u}from"./decorate-BvWYovGE.js";import{a as d}from"./index-CBr0Tm9_.js";import"./ic-icon-BGNCCPpZ.js";import{n as f,r as p,t as m}from"./directive-BOYXJ-K-.js";var h=class extends f{constructor(e){if(super(e),this.it=u,e.type!==p.CHILD)throw Error(this.constructor.directiveName+`() can only be used in child bindings`)}render(e){if(e===u||e==null)return this._t=void 0,this.it=e;if(e===t)return e;if(typeof e!=`string`)throw Error(this.constructor.directiveName+`() called with a non-string value`);if(e===this.it)return this._t;this.it=e;let n=[e];return n.raw=n,this._t={_$litType$:this.constructor.resultType,strings:n,values:[]}}};h.directiveName=`unsafeHTML`,h.resultType=1;var g=m(h),_=new Set(`const.let.var.function.return.if.else.for.while.import.export.from.true.false.null.undefined.class.new.this.async.await.throw.try.catch.switch.case.break.continue.default.typeof.instanceof.void.delete.in.of.yield.static.extends.implements.interface.type.enum.abstract.readonly`.split(`.`));function v(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}function y(e,t){if(!t)return v(e);let n=t.toLowerCase(),r=v(e);return r=r.replace(/\/\*[\s\S]*?\*\//g,e=>`<span class="hl-comment">${e}</span>`),r=r.replace(/\/\/[^\n]*/g,e=>e.includes(`hl-comment`)?e:`<span class="hl-comment">${e}</span>`),(n===`yaml`||n===`yml`||n===`bash`||n===`sh`||n===`python`||n===`py`)&&(r=r.replace(/(?:^|(?<=\n))(\s*#[^\n]*)/g,e=>`<span class="hl-comment">${e}</span>`)),r=r.replace(/(?<!<span class=")(&quot;(?:[^&]|&(?!quot;))*?&quot;)/g,e=>e.includes(`hl-`)?e:`<span class="hl-string">${e}</span>`),r=r.replace(/(?<![=\w])('[^'\\]*(?:\\.[^'\\]*)*')/g,e=>e.includes(`hl-`)?e:`<span class="hl-string">${e}</span>`),r=r.replace(/\b(\d+(?:\.\d+)?)\b/g,e=>e.includes(`hl-`)?e:`<span class="hl-number">${e}</span>`),(n===`json`||n===`yaml`||n===`yml`)&&(r=r.replace(/(?:^|(?<=\n))(\s*)(&quot;[\w.-]+&quot;)(\s*:)/gm,(e,t,n,r)=>`${t}<span class="hl-property">${n}</span>${r}`),(n===`yaml`||n===`yml`)&&(r=r.replace(/(?:^|(?<=\n))(\s*)([\w.-]+)(\s*:)/gm,(e,t,n,r)=>n.includes(`hl-`)?e:`${t}<span class="hl-property">${n}</span>${r}`))),(n===`javascript`||n===`js`||n===`typescript`||n===`ts`||n===`jsx`||n===`tsx`)&&(r=r.replace(/\b([a-z]+)\b/g,e=>_.has(e)?`<span class="hl-keyword">${e}</span>`:e)),r}var b=class extends i{constructor(...e){super(...e),this.code=``,this.language=``,this.copyable=!0,this._copied=!1,this._copyTimer=null}static{this.styles=[s,a,r`
1
+ import{c as e,d as t,f as n,h as r,l as i,n as a,o,r as s,s as c,t as l,u}from"./decorate-BvWYovGE.js";import{a as d}from"./index-8Tg9oc-C.js";import"./ic-icon-BGNCCPpZ.js";import{n as f,r as p,t as m}from"./directive-BOYXJ-K-.js";var h=class extends f{constructor(e){if(super(e),this.it=u,e.type!==p.CHILD)throw Error(this.constructor.directiveName+`() can only be used in child bindings`)}render(e){if(e===u||e==null)return this._t=void 0,this.it=e;if(e===t)return e;if(typeof e!=`string`)throw Error(this.constructor.directiveName+`() called with a non-string value`);if(e===this.it)return this._t;this.it=e;let n=[e];return n.raw=n,this._t={_$litType$:this.constructor.resultType,strings:n,values:[]}}};h.directiveName=`unsafeHTML`,h.resultType=1;var g=m(h),_=new Set(`const.let.var.function.return.if.else.for.while.import.export.from.true.false.null.undefined.class.new.this.async.await.throw.try.catch.switch.case.break.continue.default.typeof.instanceof.void.delete.in.of.yield.static.extends.implements.interface.type.enum.abstract.readonly`.split(`.`));function v(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}function y(e,t){if(!t)return v(e);let n=t.toLowerCase(),r=v(e);return r=r.replace(/\/\*[\s\S]*?\*\//g,e=>`<span class="hl-comment">${e}</span>`),r=r.replace(/\/\/[^\n]*/g,e=>e.includes(`hl-comment`)?e:`<span class="hl-comment">${e}</span>`),(n===`yaml`||n===`yml`||n===`bash`||n===`sh`||n===`python`||n===`py`)&&(r=r.replace(/(?:^|(?<=\n))(\s*#[^\n]*)/g,e=>`<span class="hl-comment">${e}</span>`)),r=r.replace(/(?<!<span class=")(&quot;(?:[^&]|&(?!quot;))*?&quot;)/g,e=>e.includes(`hl-`)?e:`<span class="hl-string">${e}</span>`),r=r.replace(/(?<![=\w])('[^'\\]*(?:\\.[^'\\]*)*')/g,e=>e.includes(`hl-`)?e:`<span class="hl-string">${e}</span>`),r=r.replace(/\b(\d+(?:\.\d+)?)\b/g,e=>e.includes(`hl-`)?e:`<span class="hl-number">${e}</span>`),(n===`json`||n===`yaml`||n===`yml`)&&(r=r.replace(/(?:^|(?<=\n))(\s*)(&quot;[\w.-]+&quot;)(\s*:)/gm,(e,t,n,r)=>`${t}<span class="hl-property">${n}</span>${r}`),(n===`yaml`||n===`yml`)&&(r=r.replace(/(?:^|(?<=\n))(\s*)([\w.-]+)(\s*:)/gm,(e,t,n,r)=>n.includes(`hl-`)?e:`${t}<span class="hl-property">${n}</span>${r}`))),(n===`javascript`||n===`js`||n===`typescript`||n===`ts`||n===`jsx`||n===`tsx`)&&(r=r.replace(/\b([a-z]+)\b/g,e=>_.has(e)?`<span class="hl-keyword">${e}</span>`:e)),r}var b=class extends i{constructor(...e){super(...e),this.code=``,this.language=``,this.copyable=!0,this._copied=!1,this._copyTimer=null}static{this.styles=[s,a,r`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,r as i,s as a,t as o}from"./decorate-BvWYovGE.js";import{t as s}from"./index-CBr0Tm9_.js";import"./ic-icon-BGNCCPpZ.js";var c=class extends r{constructor(...e){super(...e),this.status=`disconnected`,this.size=`8px`,this.showLabel=!0}static{this.styles=[i,n`
1
+ import{c as e,f as t,h as n,l as r,r as i,s as a,t as o}from"./decorate-BvWYovGE.js";import{t as s}from"./index-8Tg9oc-C.js";import"./ic-icon-BGNCCPpZ.js";var c=class extends r{constructor(...e){super(...e),this.status=`disconnected`,this.size=`8px`,this.showLabel=!0}static{this.styles=[i,n`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  align-items: center;
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import"./index-CBr0Tm9_.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-chat-message-DfSERzzg.js";function u(e){return e.replace(/\b(?:NO_REPLY|HEARTBEAT_OK)\b/g,``).trim()}function d(e){if(!e.includes(`[System context]`)&&!e.includes(`[End system context]`))return e;let t=e.lastIndexOf(`[End system context]`);if(t===-1)return e;let n=e.slice(t+20),r=n.match(/\s*\[[\w-]+\]\s+\S+\s+\([^)]*\):\s*/);if(r){let e=n.indexOf(r[0])+r[0].length;return n.slice(e).trim()}return n.trim()}function f(e,t){return t===`assistant`?u(e):t===`user`?d(e):e}function p(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}var m=class extends r{constructor(...e){super(...e),this.toolName=``,this.input=null,this.output=null,this.expanded=!1,this.status=`success`,this._showFullOutput=!1}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import"./index-8Tg9oc-C.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-chat-message-BFt3cVpx.js";function u(e){return e.replace(/\b(?:NO_REPLY|HEARTBEAT_OK)\b/g,``).trim()}function d(e){if(!e.includes(`[System context]`)&&!e.includes(`[End system context]`))return e;let t=e.lastIndexOf(`[End system context]`);if(t===-1)return e;let n=e.slice(t+20),r=n.match(/\s*\[[\w-]+\]\s+\S+\s+\([^)]*\):\s*/);if(r){let e=n.indexOf(r[0])+r[0].length;return n.slice(e).trim()}return n.trim()}function f(e,t){return t===`assistant`?u(e):t===`user`?d(e):e}function p(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}var m=class extends r{constructor(...e){super(...e),this.toolName=``,this.input=null,this.output=null,this.expanded=!1,this.status=`success`,this._showFullOutput=!1}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chat-console-Dm-GtSf9.js","assets/decorate-BvWYovGE.js","assets/ic-chat-message-DfSERzzg.js","assets/directive-BOYXJ-K-.js","assets/ic-icon-BGNCCPpZ.js","assets/ic-budget-segment-bar-zLsMzjDO.js","assets/ic-relative-time-B3UAnTqg.js","assets/ic-tag-CvMVQFRR.js","assets/ic-tool-call-DNmwTjek.js","assets/ic-empty-state-CM3Wbj2f.js","assets/ic-search-input-B02AGw1i.js","assets/session-key-parser-Dkqcj2Ss.js","assets/memory-inspector-D_fmTcRN.js","assets/ic-data-table-CKIvr-ag.js","assets/ic-confirm-dialog-DGlPbV1T.js","assets/ic-detail-panel-DiCe4hLr.js","assets/agent-list-BEhni2ea.js","assets/agent-detail-71BSbSfD.js","assets/ic-breadcrumb-DqN6G3gc.js","assets/agent-editor-CTSDZhwT.js","assets/ic-array-editor-BLoEyeLS.js","assets/workspace-manager-DP6pW4wa.js","assets/skills-DXt1bX8Z.js","assets/ic-tabs-yBjkWKJH.js","assets/mcp-management-BaH2-vox.js","assets/models-BytGLm99.js","assets/ic-connection-dot-CXyhlJup.js","assets/channel-list-DRk6ZJaF.js","assets/channel-detail-N_YK74xC.js","assets/message-center-BBFlNCZn.js","assets/scheduler-BtUIFHhA.js","assets/session-list-DcylcfTn.js","assets/session-detail-DgdkO5ka.js","assets/ic-layer-waterfall-WkaFyu-l.js","assets/observe-view-VXtHqaqq.js","assets/observability-types-D0tkwElU.js","assets/ic-delivery-row-B3YwjjuM.js","assets/context-engine-B1HOTEZv.js","assets/billing-view-DVP1IvVs.js","assets/ic-time-range-picker-DXbYeBmY.js","assets/delivery-view-Y6JKYVFw.js","assets/diagnostics-view-DWV1UQjz.js","assets/subagents-C7YbUHXY.js","assets/security-C8mWRq2y.js","assets/ic-select-BqfZISjw.js","assets/approvals-C-K6hN2U.js","assets/config-editor-CIferYX6.js","assets/setup-wizard-BP5yjsuL.js","assets/pipeline-list-B-xG5WZh.js","assets/extract-variables-B7-Doo7l.js","assets/pipeline-builder-CfXczlfJ.js","assets/ic-graph-canvas-ByRjij68.js","assets/pipeline-monitor-pnIOYaSY.js","assets/pipeline-history-CPmXFnbe.js","assets/pipeline-history-detail-DcueTMs9.js","assets/context-dag-browser-CL84rXXM.js","assets/media-test-C9NUWgo_.js","assets/media-config-CZLshJoN.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chat-console-Nv6fM3Rc.js","assets/decorate-BvWYovGE.js","assets/ic-chat-message-BFt3cVpx.js","assets/directive-BOYXJ-K-.js","assets/ic-icon-BGNCCPpZ.js","assets/ic-budget-segment-bar-zLsMzjDO.js","assets/ic-relative-time-B3UAnTqg.js","assets/ic-tag-CvMVQFRR.js","assets/ic-tool-call-qt6w1NQl.js","assets/ic-empty-state-CM3Wbj2f.js","assets/ic-search-input-B02AGw1i.js","assets/session-key-parser-Dkqcj2Ss.js","assets/memory-inspector-B-Pepbq-.js","assets/ic-data-table-CKIvr-ag.js","assets/ic-confirm-dialog-DGlPbV1T.js","assets/ic-detail-panel-DiCe4hLr.js","assets/agent-list-DQ6g2Rcx.js","assets/agent-detail-q8t1NB7w.js","assets/ic-breadcrumb-DqN6G3gc.js","assets/agent-editor-B46io5gv.js","assets/ic-array-editor-BLoEyeLS.js","assets/workspace-manager--CbOx_dI.js","assets/skills-2ODqKaWr.js","assets/ic-tabs-yBjkWKJH.js","assets/mcp-management-69dtH_kY.js","assets/models-JHFHuv5S.js","assets/ic-connection-dot-y77LZ3Gu.js","assets/channel-list-DhGwxiMc.js","assets/channel-detail-DlNNZuuC.js","assets/message-center-B7l0yNYY.js","assets/scheduler-BJEjcGKA.js","assets/session-list-CsqMQoHs.js","assets/session-detail-DmVPzFBR.js","assets/ic-layer-waterfall-WkaFyu-l.js","assets/observe-view-r8mqhy4O.js","assets/observability-types-D0tkwElU.js","assets/ic-delivery-row-B3YwjjuM.js","assets/context-engine-BZJ6HChd.js","assets/billing-view-IWPR8LgF.js","assets/ic-time-range-picker-DXbYeBmY.js","assets/delivery-view-Cb7I3vGu.js","assets/diagnostics-view-9u9Lyu5a.js","assets/subagents-BFlwfTbD.js","assets/security-2G1jhBfV.js","assets/ic-select-BqfZISjw.js","assets/approvals-C-K6hN2U.js","assets/config-editor-BYKuJF76.js","assets/setup-wizard-CAdM-gSP.js","assets/pipeline-list-B6q5LvO1.js","assets/extract-variables-B7-Doo7l.js","assets/pipeline-builder-XjkiZRcR.js","assets/ic-graph-canvas-ByRjij68.js","assets/pipeline-monitor-BNomXjVL.js","assets/pipeline-history-CZqJv_Hj.js","assets/pipeline-history-detail-BEFGMoDy.js","assets/context-dag-browser-ClNEtzYE.js","assets/media-test-DuPqrixi.js","assets/media-config-BdjLj5c1.js"])))=>i.map(i=>d[i]);
2
2
  import{c as e,f as t,h as n,i as r,l as i,m as a,n as o,o as s,r as c,s as l,t as u,u as d}from"./decorate-BvWYovGE.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function f(e,t,n){let r={Authorization:`Bearer ${t}`,"Content-Type":`application/json`};async function i(t,n){let i=`${e}${t}`,a=await fetch(i,{...n,headers:{...r,...n?.headers}});if(!a.ok){let e=await a.text(),t=(e.length>200?e.slice(0,200)+`...`:e).replace(/https?:\/\/[^\s"')]+/g,`[URL]`).replace(/[A-Za-z0-9_-]{20,}/g,`[REDACTED]`);throw Error(`Request failed (${a.status}): ${t}`)}return a.json()}async function a(t,n){let i=`${e}${t}`,a=await fetch(i,{...n,headers:{...r,...n?.headers}});if(!a.ok){let e=await a.text(),t=(e.length>200?e.slice(0,200)+`...`:e).replace(/https?:\/\/[^\s"')]+/g,`[URL]`).replace(/[A-Za-z0-9_-]{20,}/g,`[REDACTED]`);throw Error(`Request failed (${a.status}): ${t}`)}return a.text()}return{async getAgents(){let e=await i(`/api/agents`),t=e.agents??e.routing?.agents??[];return Array.isArray(t)?t:Object.entries(e).map(([e,t])=>({id:e,provider:t.provider??`unknown`,model:t.model??`unknown`,status:`active`}))},async getChannels(){let e=await i(`/api/channels`),t=e.channels??[];return Array.isArray(t)?t:Object.entries(e).map(([e,t])=>({type:t.type??e,name:e,enabled:t.enabled??!1,status:t.enabled?`healthy`:`disconnected`}))},async getActivity(e=50){return(await i(`/api/activity?limit=${e}`)).entries??[]},async searchMemory(e,t=10){return(await i(`/api/memory/search?q=${encodeURIComponent(e)}&limit=${t}`)).results??[]},async getMemoryStats(){return i(`/api/memory/stats`)},async chat(e,t,n){return i(`/api/chat`,{method:`POST`,body:JSON.stringify({message:e,agentId:t,sessionKey:n})})},async getChatHistory(){return(await i(`/api/chat/history`)).messages??[]},async health(){return(await fetch(`${e}/api/health`)).json()},subscribeEvents(n){let r=`${e}/api/events?token=${encodeURIComponent(t)}`,i=new EventSource(r);i.onmessage=e=>{try{n(`message`,JSON.parse(e.data))}catch{n(`message`,e.data)}};for(let e of[`message:received`,`message:sent`,`message:streaming`,`session:created`,`session:expired`,`audit:event`,`skill:executed`,`scheduler:job_completed`,`scheduler:heartbeat_check`,`system:error`,`ping`])i.addEventListener(e,(t=>{try{n(e,t.data?JSON.parse(t.data):{})}catch{n(e,t.data)}}));return i.onerror=()=>{n(`error`,{message:`SSE connection error`})},()=>{i.close()}},async browseMemory(e){if(n)return n(`memory.browse`,e);let t=new URLSearchParams;e.offset!==void 0&&t.set(`offset`,String(e.offset)),e.limit!==void 0&&t.set(`limit`,String(e.limit)),e.type&&t.set(`type`,e.type),e.trust&&t.set(`trust`,e.trust),e.agentId&&t.set(`agentId`,e.agentId),e.from!==void 0&&t.set(`from`,String(e.from)),e.to!==void 0&&t.set(`to`,String(e.to));let r=t.toString();return i(`/api/memory/browse${r?`?${r}`:``}`)},async deleteMemory(e){if(n){await n(`memory.delete`,{id:e});return}await i(`/api/memory/${encodeURIComponent(e)}`,{method:`DELETE`})},async deleteMemoryBulk(e){return n?n(`memory.delete`,{ids:e}):i(`/api/memory/bulk-delete`,{method:`POST`,body:JSON.stringify({ids:e})})},async exportMemory(e){return n?n(`memory.export`,e?{ids:e}:{}):a(`/api/memory/export`,{method:`POST`,body:JSON.stringify({ids:e})})},async listSessions(e){if(n)return((await n(`session.list`,e??{})).sessions??[]).map(e=>{let t=String(e.sessionKey??e.key??``),n=`unknown`,r=t.split(`:`);return r[0]===`agent`&&r.length>=3&&(n=r[1]??`unknown`),{key:t,agentId:String(e.agentId??n),channelType:String(e.kind??e.channelType??`unknown`),messageCount:Number(e.messageCount??0),totalTokens:Number(e.totalTokens??0),inputTokens:Number(e.inputTokens??0),outputTokens:Number(e.outputTokens??0),toolCalls:Number(e.toolCalls??0),compactions:Number(e.compactions??0),resetCount:Number(e.resetCount??0),createdAt:Number(e.createdAt??Date.now()),lastActiveAt:Number(e.updatedAt??e.lastActiveAt??Date.now())}});let t=new URLSearchParams;e?.agentId&&t.set(`agentId`,e.agentId),e?.channelType&&t.set(`channelType`,e.channelType),e?.search&&t.set(`search`,e.search);let r=t.toString();return i(`/api/sessions${r?`?${r}`:``}`)},async getSessionDetail(e){return n?n(`session.history`,{session_key:e}):i(`/api/sessions/${encodeURIComponent(e)}`)},async resetSession(e){if(n){await n(`session.reset`,{session_key:e});return}await i(`/api/sessions/${encodeURIComponent(e)}/reset`,{method:`POST`})},async compactSession(e){if(n){await n(`session.compact`,{session_key:e});return}await i(`/api/sessions/${encodeURIComponent(e)}/compact`,{method:`POST`})},async deleteSession(e){if(n){await n(`session.delete`,{session_key:e});return}await i(`/api/sessions/${encodeURIComponent(e)}`,{method:`DELETE`})},async exportSession(e){return n?n(`session.export`,{session_key:e}):a(`/api/sessions/${encodeURIComponent(e)}/export`)},async resetSessionsBulk(e){return n?n(`session.reset`,{keys:e}):i(`/api/sessions/bulk-reset`,{method:`POST`,body:JSON.stringify({keys:e})})},async exportSessionsBulk(e){return n?n(`session.export`,{keys:e}):a(`/api/sessions/bulk-export`,{method:`POST`,body:JSON.stringify({keys:e})})},async deleteSessionsBulk(e){return n?n(`session.delete`,{keys:e}):i(`/api/sessions/bulk-delete`,{method:`POST`,body:JSON.stringify({keys:e})})}}}var p=[{pattern:`dashboard`,view:`ic-dashboard`},{pattern:`agents`,view:`ic-agent-list`},{pattern:`agents/:id`,view:`ic-agent-detail`},{pattern:`agents/:id/edit`,view:`ic-agent-editor`},{pattern:`agents/:id/workspace`,view:`ic-workspace-manager`},{pattern:`channels`,view:`ic-channel-list`},{pattern:`channels/:type`,view:`ic-channel-detail`},{pattern:`messages`,view:`ic-message-center`},{pattern:`messages/:type`,view:`ic-message-center`},{pattern:`skills`,view:`ic-skills-view`},{pattern:`mcp`,view:`ic-mcp-management`},{pattern:`chat`,view:`ic-chat-console`},{pattern:`chat/:sessionKey`,view:`ic-chat-console`},{pattern:`memory`,view:`ic-memory-inspector`},{pattern:`sessions`,view:`ic-session-list-view`},{pattern:`sessions/:key`,view:`ic-session-detail`},{pattern:`scheduler`,view:`ic-scheduler-view`},{pattern:`scheduler/:jobId`,view:`ic-scheduler-view`},{pattern:`models`,view:`ic-models-view`},{pattern:`observe/overview`,view:`ic-observe-dashboard`},{pattern:`observe/context`,view:`ic-context-engine-view`},{pattern:`observe/billing`,view:`ic-billing-view`},{pattern:`observe/delivery`,view:`ic-delivery-view`},{pattern:`observe/diagnostics`,view:`ic-diagnostics-view`},{pattern:`context`,view:`ic-context-dag-browser`},{pattern:`subagents`,view:`ic-subagents-view`},{pattern:`media`,view:`ic-media-test-view`},{pattern:`media/config`,view:`ic-media-config-view`},{pattern:`security`,view:`ic-security-view`},{pattern:`approvals`,view:`ic-approvals-view`},{pattern:`config`,view:`ic-config-editor`},{pattern:`setup`,view:`ic-setup-wizard`},{pattern:`pipelines`,view:`ic-pipeline-list`},{pattern:`pipelines/new`,view:`ic-pipeline-builder`},{pattern:`pipelines/history`,view:`ic-pipeline-history`},{pattern:`pipelines/history/:graphId`,view:`ic-pipeline-history-detail`},{pattern:`pipelines/:graphId`,view:`ic-pipeline-monitor`},{pattern:`pipelines/:graphId/edit`,view:`ic-pipeline-builder`}];function m(){return p.map(e=>{let t=e.pattern.split(`/`);return{pattern:e.pattern,view:e.view,segments:t,segmentCount:t.length}}).sort((e,t)=>t.segmentCount-e.segmentCount)}var h={view:`ic-dashboard`,route:`dashboard`,params:{},query:{}};function g(e,t){let n=e.split(`/`);for(let e of t){if(n.length!==e.segmentCount)continue;let t={},r=!0;for(let i=0;i<e.segments.length;i++){let a=e.segments[i],o=n[i];if(a.startsWith(`:`))t[a.slice(1)]=o;else if(a!==o){r=!1;break}}if(r)return{view:e.view,route:e.pattern,params:t,query:{}}}return null}var _=[{from:`observe`,to:`observe/overview`}];function v(e,t=`dashboard`){let n=m();function r(){let e=window.location.hash.replace(/^#\/?/,``);if(!e)return{...h};let t=e.indexOf(`?`),r=t>=0?e.slice(0,t):e,i=t>=0?e.slice(t+1):``,a={};if(i)for(let e of i.split(`&`)){let t=e.indexOf(`=`);if(t>=0){let n=decodeURIComponent(e.slice(0,t)),r=decodeURIComponent(e.slice(t+1));n&&(a[n]=r)}else e&&(a[decodeURIComponent(e)]=``)}for(let e of _)if(r===e.from){let t=i?`#/${e.to}?${i}`:`#/${e.to}`;history.replaceState(null,``,t);let r=g(e.to,n);return r?{...r,query:a}:{...h,query:a}}let o=g(r,n);return o?{...o,query:a}:{...h,query:a}}function i(){e(r())}return{navigate(e){window.location.hash=`#/${e}`},current(){return r()},start(){window.addEventListener(`hashchange`,i),i()},stop(){window.removeEventListener(`hashchange`,i)},setQuery(e){let t=r(),n={...t.query,...e},i=Object.entries(n).filter(([,e])=>e!==``).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join(`&`),a=i?`#/${t.route}?${i}`:`#/${t.route}`;history.replaceState(null,``,a)}}}var y=3e4,ee=3e4,te=1e4,ne=1e3,re=3e4,ie=10;function b(){let e=null,t=`disconnected`,n=1,r=0,i=null,a=null,o=null,s=``,c=``,l=!1,u=new Map,d=new Set,f=new Set;function p(e){if(t!==e){t=e;for(let t of d)t(e)}}function m(){a!==null&&(clearInterval(a),a=null),o!==null&&(clearTimeout(o),o=null)}function h(){i!==null&&(clearTimeout(i),i=null)}function g(e){for(let[t,n]of u)clearTimeout(n.timer),n.reject(Error(e)),u.delete(t)}function _(){m(),a=setInterval(()=>{if(e===null||e.readyState!==globalThis.WebSocket.OPEN)return;let t=n++;e.send(JSON.stringify({jsonrpc:`2.0`,method:`system.ping`,id:t})),o=setTimeout(()=>{u.delete(t),e!==null&&e.close()},te),u.set(t,{resolve:()=>{o!==null&&(clearTimeout(o),o=null)},reject:()=>{o!==null&&(clearTimeout(o),o=null)},timer:setTimeout(()=>{u.delete(t)},y)})},ee)}function v(){if(l)return;if(r>=ie){p(`disconnected`);return}p(`reconnecting`);let e=Math.min(ne*2**r,re);r++,i=setTimeout(()=>{b(s,c)},e)}function b(t,n){let i=`${t}?token=${encodeURIComponent(n)}`;e=new globalThis.WebSocket(i),e.onopen=()=>{r=0,p(`connected`),_()},e.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}if(!(t.method===`heartbeat`&&t.id==null)){if(t.method&&t.id==null){console.debug(`[rpc] notification received:`,t.method);for(let e of f)try{e(t.method,t.params)}catch(e){console.warn(`[rpc] notification handler error:`,e)}return}if(t.id!=null){let e=u.get(t.id);e&&(clearTimeout(e.timer),u.delete(t.id),t.error?e.reject(Error(`RPC error (${t.error.code}): ${t.error.message}`)):e.resolve(t.result))}}},e.onclose=t=>{if(m(),e=null,t.code>=4e3&&t.code<5e3){g(`Connection rejected: `+(t.reason||`auth error`)),p(`disconnected`);return}l||v()},e.onerror=()=>{}}return{get status(){return t},connect(e,t){l=!1,s=e,c=t,r=0,b(e,t)},disconnect(){l=!0,h(),m(),g(`Client disconnected`),p(`disconnected`),e!==null&&(e.close(),e=null)},call(t,r){return new Promise((i,a)=>{if(e===null||e.readyState!==globalThis.WebSocket.OPEN){a(Error(`Not connected`));return}let o=n++,s=setTimeout(()=>{u.delete(o),a(Error(`RPC request timed out after ${y}ms`))},y);u.set(o,{resolve:i,reject:a,timer:s});let c=JSON.stringify({jsonrpc:`2.0`,method:t,...r===void 0?{}:{params:r},id:o});try{e.send(c)}catch(e){clearTimeout(s),u.delete(o),a(Error(`Send failed: `+(e instanceof Error?e.message:String(e))))}})},onStatusChange(e){return d.add(e),()=>{d.delete(e)}},onNotification(e){return f.add(e),()=>{f.delete(e)}}}}function ae(){let e={connectionStatus:`disconnected`,pendingApprovals:0,errorCount:0,agentCount:0,channelCount:0,sessionCount:0,systemHealth:null,activeAgents:[],activeChannels:[]},t=new Set;function n(){for(let e of t)e()}return{get connectionStatus(){return e.connectionStatus},get pendingApprovals(){return e.pendingApprovals},get errorCount(){return e.errorCount},get agentCount(){return e.agentCount},get channelCount(){return e.channelCount},get sessionCount(){return e.sessionCount},get systemHealth(){return e.systemHealth},get activeAgents(){return e.activeAgents},get activeChannels(){return e.activeChannels},subscribe(e){return t.add(e),()=>{t.delete(e)}},getSnapshot(){return Object.freeze({...e})},update(t){e={...e,...t},n()}}}var oe=`message:received.message:sent.message:streaming.session:created.session:expired.audit:event.skill:executed.skill:rejected.observability:metrics.observability:token_usage.scheduler:job_started.scheduler:job_completed.scheduler:heartbeat_check.scheduler:heartbeat_alert.scheduler:heartbeat_delivered.scheduler:task_extracted.system:error.approval:requested.approval:resolved.graph:started.graph:node_updated.graph:completed.config:patched.diagnostic:channel_health.diagnostic:billing_snapshot.skill:loaded.skill:registry_reset.model:catalog_loaded.observability:reset.channel:registered.channel:deregistered.agent:hot_added.agent:hot_removed.security:injection_detected.security:injection_rate_exceeded.security:memory_tainted.security:warn.secret:accessed.secret:modified.model:fallback_attempt.model:fallback_exhausted.model:auth_cooldown.provider:degraded.provider:recovered.session:sub_agent_spawned.session:sub_agent_completed.session:sub_agent_archived.session:sub_agent_spawn_rejected.session:sub_agent_spawn_started.session:sub_agent_spawn_queued.session:sub_agent_lifecycle_ended.ping`.split(`.`);function se(){let e=null,t=!1,n=new Map;function r(e){if(!e)return{};try{return JSON.parse(e)}catch{return e}}function i(e,t){let r=n.get(e);if(r)for(let e of r)e(t);document.dispatchEvent(new CustomEvent(e,{detail:t}))}return{get connected(){return t},start(n,a){e!==null&&e.close();let o=`${n}/api/events?token=${encodeURIComponent(a)}`;e=new EventSource(o),e.onopen=()=>{t=!0},e.onerror=()=>{t=!1};for(let t of oe)e.addEventListener(t,(e=>{i(t,r(e.data))}));e.onmessage=e=>{i(`message`,r(e.data))}},stop(){e!==null&&(e.close(),e=null),t=!1,n.clear()},addEventListener(e,t){return n.has(e)||n.set(e,new Set),n.get(e).add(t),()=>{let r=n.get(e);r&&(r.delete(t),r.size===0&&n.delete(e))}}}}var ce=class{constructor(e,t,n,r=3e4){this._timer=null,this._host=e,this._rpcClient=t,this._onData=n,this._intervalMs=r,this._host.addController(this)}hostConnected(){this._poll(),this._timer=setInterval(()=>this._poll(),this._intervalMs)}hostDisconnected(){this._timer!==null&&(clearInterval(this._timer),this._timer=null)}async _poll(){try{let[e,t,n]=await Promise.all([this._rpcClient.call(`agent.list`),this._rpcClient.call(`channel.list`),this._rpcClient.call(`session.list`,{})]);this._onData({agents:e.agents.length,channels:t.channels.length,sessions:n.total,agentIds:e.agents,sessionEntries:n.sessions?.slice(0,20)??[]}),this._host.requestUpdate()}catch{}}},x=[{id:`home`,label:`Home`,items:[{route:`dashboard`,label:`Dashboard`,icon:`▣`}]},{id:`operate`,label:`Operate`,items:[{route:`agents`,label:`Agents`,icon:`⬤`,badge:`agentCount`},{route:`channels`,label:`Channels`,icon:`◎`,badge:`channelCount`},{route:`messages`,label:`Messages`,icon:`○`},{route:`chat`,label:`Chat`,icon:`▬`},{route:`sessions`,label:`Sessions`,icon:`◷`,badge:`sessionCount`},{route:`subagents`,label:`Sub-Agents`,icon:`◔`},{route:`pipelines`,label:`Pipelines`,icon:`◈`}]},{id:`observe`,label:`Observe`,items:[{route:`observe`,label:`Overview`,icon:`△`,badge:`errorCount`},{route:`observe/context`,label:`Context Engine`,icon:`◥`},{route:`context`,label:`Context DAG`,icon:`◖`},{route:`observe/billing`,label:`Billing`,icon:`◇`},{route:`observe/delivery`,label:`Delivery`,icon:`▷`},{route:`observe/diagnostics`,label:`Diagnostics`,icon:`□`}]},{id:`configure`,label:`Configure`,items:[{route:`skills`,label:`Skills`,icon:`⚒`},{route:`mcp`,label:`MCP Servers`,icon:`⚖`},{route:`models`,label:`Models`,icon:`⌸`},{route:`memory`,label:`Memory`,icon:`◉`},{route:`scheduler`,label:`Scheduler`,icon:`▨`},{route:`security`,label:`Security`,icon:`☖`},{route:`media`,label:`Media`,icon:`▶`},{route:`approvals`,label:`Approvals`,icon:`✓`,badge:`pendingApprovals`},{route:`config`,label:`Config`,icon:`⚙`}]}],le={route:`setup`,label:`Setup`,icon:`▶`},S=`ic_sidebar_collapsed`,C=class extends i{constructor(...e){super(...e),this.currentRoute=`dashboard`,this.pendingApprovals=0,this.errorCount=0,this.agentCount=0,this.channelCount=0,this.sessionCount=0,this.open=!1,this._collapsed=!1}static{this.styles=[c,o,n`
3
3
  :host {
4
4
  display: block;
@@ -2507,7 +2507,7 @@ import{c as e,f as t,h as n,i as r,l as i,m as a,n as o,o as s,r as c,s as l,t a
2507
2507
  ></ic-activity-feed>
2508
2508
  </div>
2509
2509
  </div>
2510
- `}};u([l({attribute:!1})],Y.prototype,`apiClient`,void 0),u([l({attribute:!1})],Y.prototype,`rpcClient`,void 0),u([l({attribute:!1})],Y.prototype,`eventDispatcher`,void 0),u([s()],Y.prototype,`_loadState`,void 0),u([s()],Y.prototype,`_error`,void 0),u([s()],Y.prototype,`_agents`,void 0),u([s()],Y.prototype,`_channels`,void 0),u([s()],Y.prototype,`_activity`,void 0),u([s()],Y.prototype,`_systemHealth`,void 0),u([s()],Y.prototype,`_deliveryStats`,void 0),u([s()],Y.prototype,`_messagesToday`,void 0),u([s()],Y.prototype,`_tokenUsageToday`,void 0),u([s()],Y.prototype,`_sessionCount`,void 0),u([s()],Y.prototype,`_errorCount`,void 0),u([s()],Y.prototype,`_totalCost`,void 0),u([s()],Y.prototype,`_prevMessages`,void 0),u([s()],Y.prototype,`_prevTokens`,void 0),u([s()],Y.prototype,`_prevCost`,void 0),u([s()],Y.prototype,`_mcpStatus`,void 0),u([s()],Y.prototype,`_contextSummary`,void 0),u([s()],Y.prototype,`_tokenSparklineData`,void 0),u([s()],Y.prototype,`_costSparklineData`,void 0),u([s()],Y.prototype,`_agentBilling`,void 0),Y=u([e(`ic-dashboard`)],Y);var Me=`modulepreload`,Ne=function(e){return`/app/`+e},X={},Z=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Ne(t,n),t in X)return;X[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Me,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Pe={"ic-chat-console":()=>Z(()=>import(`./chat-console-Dm-GtSf9.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),"ic-memory-inspector":()=>Z(()=>import(`./memory-inspector-D_fmTcRN.js`),__vite__mapDeps([12,1,13,6,7,14,10,15])),"ic-agent-list":()=>Z(()=>import(`./agent-list-BEhni2ea.js`),__vite__mapDeps([16,1,13,7,4,14,9,10])),"ic-agent-detail":()=>Z(()=>import(`./agent-detail-71BSbSfD.js`),__vite__mapDeps([17,1,6,7,14,18])),"ic-agent-editor":()=>Z(()=>import(`./agent-editor-CTSDZhwT.js`),__vite__mapDeps([19,1,7,20,18])),"ic-workspace-manager":()=>Z(()=>import(`./workspace-manager-DP6pW4wa.js`),__vite__mapDeps([21,1,6,7,14,9,4,18])),"ic-skills-view":()=>Z(()=>import(`./skills-DXt1bX8Z.js`),__vite__mapDeps([22,1,7,14,9,4,10,23])),"ic-mcp-management":()=>Z(()=>import(`./mcp-management-BaH2-vox.js`),__vite__mapDeps([24,1,6,7,14,9,4])),"ic-models-view":()=>Z(()=>import(`./models-BytGLm99.js`),__vite__mapDeps([25,1,7,26,4,9,10,23])),"ic-channel-list":()=>Z(()=>import(`./channel-list-DRk6ZJaF.js`),__vite__mapDeps([27,1,14,9,4])),"ic-channel-detail":()=>Z(()=>import(`./channel-detail-N_YK74xC.js`),__vite__mapDeps([28,1,6,7,26,4,9,18,23])),"ic-message-center":()=>Z(()=>import(`./message-center-BBFlNCZn.js`),__vite__mapDeps([29,1,6,14,9,4,18])),"ic-scheduler-view":()=>Z(()=>import(`./scheduler-BtUIFHhA.js`),__vite__mapDeps([30,1,6,7,4,9,23])),"ic-session-list-view":()=>Z(()=>import(`./session-list-DcylcfTn.js`),__vite__mapDeps([31,1,13,6,7,14,9,4,10,11])),"ic-session-detail":()=>Z(()=>import(`./session-detail-DgdkO5ka.js`),__vite__mapDeps([32,1,2,3,4,5,33,6,7,8,14,9,18,11])),"ic-observe-dashboard":()=>Z(()=>import(`./observe-view-VXtHqaqq.js`),__vite__mapDeps([34,1,35,6,7,36,9,4,23])),"ic-context-engine-view":()=>Z(()=>import(`./context-engine-B1HOTEZv.js`),__vite__mapDeps([37,1,5,33,6,9,4])),"ic-billing-view":()=>Z(()=>import(`./billing-view-DVP1IvVs.js`),__vite__mapDeps([38,1,39,9,4])),"ic-delivery-view":()=>Z(()=>import(`./delivery-view-Y6JKYVFw.js`),__vite__mapDeps([40,1,6,39,36,7,9,4,15])),"ic-diagnostics-view":()=>Z(()=>import(`./diagnostics-view-DWV1UQjz.js`),__vite__mapDeps([41,1,35,6,7,39,9,4])),"ic-subagents-view":()=>Z(()=>import(`./subagents-C7YbUHXY.js`),__vite__mapDeps([42,1,6,7,14,9,4])),"ic-security-view":()=>Z(()=>import(`./security-C8mWRq2y.js`),__vite__mapDeps([43,1,6,7,26,4,9,20,44,23])),"ic-approvals-view":()=>Z(()=>import(`./approvals-C-K6hN2U.js`),__vite__mapDeps([45,1])),"ic-config-editor":()=>Z(()=>import(`./config-editor-CIferYX6.js`),__vite__mapDeps([46,1,6,7,14,9,4,20,44,23])),"ic-setup-wizard":()=>Z(()=>import(`./setup-wizard-BP5yjsuL.js`),__vite__mapDeps([47,1,4])),"ic-pipeline-list":()=>Z(()=>import(`./pipeline-list-B-xG5WZh.js`),__vite__mapDeps([48,1,4,14,9,49,18])),"ic-pipeline-builder":()=>Z(()=>import(`./pipeline-builder-CfXczlfJ.js`),__vite__mapDeps([50,1,51,3,14,49,18])),"ic-pipeline-monitor":()=>Z(()=>import(`./pipeline-monitor-pnIOYaSY.js`),__vite__mapDeps([52,1,51,3,14,18])),"ic-pipeline-history":()=>Z(()=>import(`./pipeline-history-CPmXFnbe.js`),__vite__mapDeps([53,1,4,14,9,18])),"ic-pipeline-history-detail":()=>Z(()=>import(`./pipeline-history-detail-DcueTMs9.js`),__vite__mapDeps([54,1,2,3,4,14,18])),"ic-context-dag-browser":()=>Z(()=>import(`./context-dag-browser-CL84rXXM.js`),__vite__mapDeps([55,1,6,7,9,4,10,15])),"ic-media-test-view":()=>Z(()=>import(`./media-test-C9NUWgo_.js`),__vite__mapDeps([56,1,9,4,23])),"ic-media-config-view":()=>Z(()=>import(`./media-config-CZLshJoN.js`),__vite__mapDeps([57,1]))},Q=`comis_token`,$=class extends i{constructor(...e){super(...e),this._authenticated=!1,this._authError=``,this._currentView=`ic-dashboard`,this._currentRoute=`dashboard`,this._routeParams={},this._connectionStatus=`disconnected`,this._pendingApprovals=0,this._errorCount=0,this._agentCount=0,this._channelCount=0,this._sessionCount=0,this._sidebarOpen=!1,this._viewLoading=!1,this._commandPaletteOpen=!1,this._shortcutsHelpOpen=!1,this._agentList=[],this._sessionList=[],this._loadedViews=new Set,this._pendingGotoKey=null,this._apiClient=null,this._router=null,this._rpcClient=null,this._globalState=null,this._eventDispatcher=null,this._stateUnsubscribe=null,this._approvalUnsub=null,this._approvalResolvedUnsub=null,this._errorUnsub=null,this._pollingController=null,this._token=``,this._boundKeyHandler=this._handleGlobalKeydown.bind(this),this._gotoWaiting=!1}static{this.styles=n`
2510
+ `}};u([l({attribute:!1})],Y.prototype,`apiClient`,void 0),u([l({attribute:!1})],Y.prototype,`rpcClient`,void 0),u([l({attribute:!1})],Y.prototype,`eventDispatcher`,void 0),u([s()],Y.prototype,`_loadState`,void 0),u([s()],Y.prototype,`_error`,void 0),u([s()],Y.prototype,`_agents`,void 0),u([s()],Y.prototype,`_channels`,void 0),u([s()],Y.prototype,`_activity`,void 0),u([s()],Y.prototype,`_systemHealth`,void 0),u([s()],Y.prototype,`_deliveryStats`,void 0),u([s()],Y.prototype,`_messagesToday`,void 0),u([s()],Y.prototype,`_tokenUsageToday`,void 0),u([s()],Y.prototype,`_sessionCount`,void 0),u([s()],Y.prototype,`_errorCount`,void 0),u([s()],Y.prototype,`_totalCost`,void 0),u([s()],Y.prototype,`_prevMessages`,void 0),u([s()],Y.prototype,`_prevTokens`,void 0),u([s()],Y.prototype,`_prevCost`,void 0),u([s()],Y.prototype,`_mcpStatus`,void 0),u([s()],Y.prototype,`_contextSummary`,void 0),u([s()],Y.prototype,`_tokenSparklineData`,void 0),u([s()],Y.prototype,`_costSparklineData`,void 0),u([s()],Y.prototype,`_agentBilling`,void 0),Y=u([e(`ic-dashboard`)],Y);var Me=`modulepreload`,Ne=function(e){return`/app/`+e},X={},Z=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Ne(t,n),t in X)return;X[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Me,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Pe={"ic-chat-console":()=>Z(()=>import(`./chat-console-Nv6fM3Rc.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),"ic-memory-inspector":()=>Z(()=>import(`./memory-inspector-B-Pepbq-.js`),__vite__mapDeps([12,1,13,6,7,14,10,15])),"ic-agent-list":()=>Z(()=>import(`./agent-list-DQ6g2Rcx.js`),__vite__mapDeps([16,1,13,7,4,14,9,10])),"ic-agent-detail":()=>Z(()=>import(`./agent-detail-q8t1NB7w.js`),__vite__mapDeps([17,1,6,7,14,18])),"ic-agent-editor":()=>Z(()=>import(`./agent-editor-B46io5gv.js`),__vite__mapDeps([19,1,7,20,18])),"ic-workspace-manager":()=>Z(()=>import(`./workspace-manager--CbOx_dI.js`),__vite__mapDeps([21,1,6,7,14,9,4,18])),"ic-skills-view":()=>Z(()=>import(`./skills-2ODqKaWr.js`),__vite__mapDeps([22,1,7,14,9,4,10,23])),"ic-mcp-management":()=>Z(()=>import(`./mcp-management-69dtH_kY.js`),__vite__mapDeps([24,1,6,7,14,9,4])),"ic-models-view":()=>Z(()=>import(`./models-JHFHuv5S.js`),__vite__mapDeps([25,1,7,26,4,9,10,23])),"ic-channel-list":()=>Z(()=>import(`./channel-list-DhGwxiMc.js`),__vite__mapDeps([27,1,14,9,4])),"ic-channel-detail":()=>Z(()=>import(`./channel-detail-DlNNZuuC.js`),__vite__mapDeps([28,1,6,7,26,4,9,18,23])),"ic-message-center":()=>Z(()=>import(`./message-center-B7l0yNYY.js`),__vite__mapDeps([29,1,6,14,9,4,18])),"ic-scheduler-view":()=>Z(()=>import(`./scheduler-BJEjcGKA.js`),__vite__mapDeps([30,1,6,7,4,9,23])),"ic-session-list-view":()=>Z(()=>import(`./session-list-CsqMQoHs.js`),__vite__mapDeps([31,1,13,6,7,14,9,4,10,11])),"ic-session-detail":()=>Z(()=>import(`./session-detail-DmVPzFBR.js`),__vite__mapDeps([32,1,2,3,4,5,33,6,7,8,14,9,18,11])),"ic-observe-dashboard":()=>Z(()=>import(`./observe-view-r8mqhy4O.js`),__vite__mapDeps([34,1,35,6,7,36,9,4,23])),"ic-context-engine-view":()=>Z(()=>import(`./context-engine-BZJ6HChd.js`),__vite__mapDeps([37,1,5,33,6,9,4])),"ic-billing-view":()=>Z(()=>import(`./billing-view-IWPR8LgF.js`),__vite__mapDeps([38,1,39,9,4])),"ic-delivery-view":()=>Z(()=>import(`./delivery-view-Cb7I3vGu.js`),__vite__mapDeps([40,1,6,39,36,7,9,4,15])),"ic-diagnostics-view":()=>Z(()=>import(`./diagnostics-view-9u9Lyu5a.js`),__vite__mapDeps([41,1,35,6,7,39,9,4])),"ic-subagents-view":()=>Z(()=>import(`./subagents-BFlwfTbD.js`),__vite__mapDeps([42,1,6,7,14,9,4])),"ic-security-view":()=>Z(()=>import(`./security-2G1jhBfV.js`),__vite__mapDeps([43,1,6,7,26,4,9,20,44,23])),"ic-approvals-view":()=>Z(()=>import(`./approvals-C-K6hN2U.js`),__vite__mapDeps([45,1])),"ic-config-editor":()=>Z(()=>import(`./config-editor-BYKuJF76.js`),__vite__mapDeps([46,1,6,7,14,9,4,20,44,23])),"ic-setup-wizard":()=>Z(()=>import(`./setup-wizard-CAdM-gSP.js`),__vite__mapDeps([47,1,4])),"ic-pipeline-list":()=>Z(()=>import(`./pipeline-list-B6q5LvO1.js`),__vite__mapDeps([48,1,4,14,9,49,18])),"ic-pipeline-builder":()=>Z(()=>import(`./pipeline-builder-XjkiZRcR.js`),__vite__mapDeps([50,1,51,3,14,49,18])),"ic-pipeline-monitor":()=>Z(()=>import(`./pipeline-monitor-BNomXjVL.js`),__vite__mapDeps([52,1,51,3,14,18])),"ic-pipeline-history":()=>Z(()=>import(`./pipeline-history-CZqJv_Hj.js`),__vite__mapDeps([53,1,4,14,9,18])),"ic-pipeline-history-detail":()=>Z(()=>import(`./pipeline-history-detail-BEFGMoDy.js`),__vite__mapDeps([54,1,2,3,4,14,18])),"ic-context-dag-browser":()=>Z(()=>import(`./context-dag-browser-ClNEtzYE.js`),__vite__mapDeps([55,1,6,7,9,4,10,15])),"ic-media-test-view":()=>Z(()=>import(`./media-test-DuPqrixi.js`),__vite__mapDeps([56,1,9,4,23])),"ic-media-config-view":()=>Z(()=>import(`./media-config-BdjLj5c1.js`),__vite__mapDeps([57,1]))},Q=`comis_token`,$=class extends i{constructor(...e){super(...e),this._authenticated=!1,this._authError=``,this._currentView=`ic-dashboard`,this._currentRoute=`dashboard`,this._routeParams={},this._connectionStatus=`disconnected`,this._pendingApprovals=0,this._errorCount=0,this._agentCount=0,this._channelCount=0,this._sessionCount=0,this._sidebarOpen=!1,this._viewLoading=!1,this._commandPaletteOpen=!1,this._shortcutsHelpOpen=!1,this._agentList=[],this._sessionList=[],this._loadedViews=new Set,this._pendingGotoKey=null,this._apiClient=null,this._router=null,this._rpcClient=null,this._globalState=null,this._eventDispatcher=null,this._stateUnsubscribe=null,this._approvalUnsub=null,this._approvalResolvedUnsub=null,this._errorUnsub=null,this._pollingController=null,this._token=``,this._boundKeyHandler=this._handleGlobalKeydown.bind(this),this._gotoWaiting=!1}static{this.styles=n`
2511
2511
  :host {
2512
2512
  display: block;
2513
2513
  min-height: 100vh;
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-CBr0Tm9_.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";var d=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.apiClient=null,this.eventDispatcher=null,this._loadState=`loading`,this._servers=[],this._mcpConfig=[],this._expandedServer=null,this._serverDetail=null,this._showAddForm=!1,this._disconnectTarget=null,this._deleteTarget=null,this._detailLoading=!1,this._showInstructions=!1,this._testingServer=null,this._testResult=null,this._newServerName=``,this._newServerTransport=`stdio`,this._newServerCommand=``,this._newServerUrl=``,this._newServerHeaders=``,this._newServerEnv=``,this._rpcStatusUnsub=null}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-8Tg9oc-C.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";var d=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.apiClient=null,this.eventDispatcher=null,this._loadState=`loading`,this._servers=[],this._mcpConfig=[],this._expandedServer=null,this._serverDetail=null,this._showAddForm=!1,this._disconnectTarget=null,this._deleteTarget=null,this._detailLoading=!1,this._showInstructions=!1,this._testingServer=null,this._testResult=null,this._newServerName=``,this._newServerTransport=`stdio`,this._newServerCommand=``,this._newServerUrl=``,this._newServerHeaders=``,this._newServerEnv=``,this._rpcStatusUnsub=null}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -372,7 +372,7 @@ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./d
372
372
  max-height: 12rem;
373
373
  overflow-y: auto;
374
374
  }
375
- `]}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback(),this._rpcStatusUnsub?.(),this._rpcStatusUnsub=null}willUpdate(e){e.has(`rpcClient`)&&this.rpcClient&&this._tryLoad()}_tryLoad(){if(!this.rpcClient){this._loadState=`loaded`;return}this._rpcStatusUnsub?.(),this.rpcClient.status===`connected`?this._loadData():this._rpcStatusUnsub=this.rpcClient.onStatusChange(e=>{e===`connected`&&this._loadData()})}async _loadData(){if(this.rpcClient)try{let[e,t]=await Promise.all([this.rpcClient.call(`mcp.list`),this.rpcClient.call(`config.read`)]);this._servers=e.servers??[],this._mcpConfig=t.config?.integrations?.mcp?.servers??[],this._loadState=`loaded`}catch{this._loadState=`error`}}async _loadServerDetail(e){if(this.rpcClient){this._detailLoading=!0;try{let t=await this.rpcClient.call(`mcp.status`,{name:e});this._serverDetail=t,this._expandedServer=e}catch{u.show(`Failed to load tools for ${e}`,`error`),this._expandedServer=null,this._serverDetail=null}finally{this._detailLoading=!1}}}async _patchConfig(e,t,n){if(!this.rpcClient)return!1;try{return await this.rpcClient.call(`config.patch`,{section:e,key:t,value:n}),!0}catch(e){let t=e instanceof Error?e.message:`Failed to update configuration`;return u.show(t,`error`),!1}}_stripRedactedEnv(e){return e.map(e=>{if(!e.env||!Object.values(e.env).some(e=>e===`[REDACTED]`))return e;let{env:t,...n}=e;return n})}_requestDisconnect(e){this._disconnectTarget=e}async _confirmDisconnect(){let e=this._disconnectTarget;if(this._disconnectTarget=null,!(!e||!this.rpcClient))try{await this.rpcClient.call(`mcp.disconnect`,{name:e}),u.show(`Disconnected ${e}`,`success`),this._expandedServer===e&&(this._expandedServer=null,this._serverDetail=null),this._loadData()}catch{u.show(`Failed to disconnect ${e}`,`error`)}}_cancelDisconnect(){this._disconnectTarget=null}async _handleReconnect(e){if(this.rpcClient)try{await this.rpcClient.call(`mcp.reconnect`,{name:e}),u.show(`Reconnected ${e}`,`success`),this._loadData()}catch{u.show(`Failed to reconnect ${e}`,`error`)}}async _handleTest(e){if(this.rpcClient)try{let t=await this.rpcClient.call(`mcp.test`,{name:e});t.success?u.show(`${e}: test passed`,`success`):u.show(`${e}: test failed${t.message?` — `+t.message:``}`,`error`)}catch{u.show(`Failed to test ${e}`,`error`)}}_toggleTools(e){this._expandedServer===e?(this._expandedServer=null,this._serverDetail=null,this._showInstructions=!1):(this._showInstructions=!1,this._loadServerDetail(e))}async _toggleServer(e,t){let n=this._mcpConfig.map(n=>n.name===e?{...n,enabled:t}:n);await this._patchConfig(`integrations`,`mcp.servers`,this._stripRedactedEnv(n))&&(this._mcpConfig=n)}_removeServer(e){this._deleteTarget=e}async _confirmRemove(){let e=this._deleteTarget;if(this._deleteTarget=null,!e)return;let t=this._mcpConfig.filter(t=>t.name!==e);await this._patchConfig(`integrations`,`mcp.servers`,this._stripRedactedEnv(t))&&(this._mcpConfig=t,u.show(`Removed MCP server "${e}"`,`success`),this._loadData())}_cancelRemove(){this._deleteTarget=null}async _addServer(){if(!this._newServerName.trim()){u.show(`Server name is required`,`error`);return}let e=this._newServerName.trim();if(this._mcpConfig.some(t=>t.name===e)){u.show(`MCP server "${e}" already exists`,`error`);return}if(this._newServerTransport===`stdio`&&!this._newServerCommand.trim()){u.show(`Command is required for stdio transport`,`error`);return}if(this._newServerTransport!==`stdio`&&!this._newServerUrl.trim()){u.show(`URL is required for remote transport`,`error`);return}let t={name:e,transport:this._newServerTransport,enabled:!0};if(this._newServerTransport===`stdio`){let e=this._newServerCommand.trim().split(/\s+/);t.command=e[0]??``,e.length>1&&(t.args=e.slice(1))}else t.url=this._newServerUrl.trim();let n=this._newServerHeaders.trim();if(n){let e={};for(let t of n.split(`
375
+ `]}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback(),this._rpcStatusUnsub?.(),this._rpcStatusUnsub=null}willUpdate(e){e.has(`rpcClient`)&&this.rpcClient&&this._tryLoad()}_tryLoad(){if(!this.rpcClient){this._loadState=`loaded`;return}this._rpcStatusUnsub?.(),this.rpcClient.status===`connected`?this._loadData():this._rpcStatusUnsub=this.rpcClient.onStatusChange(e=>{e===`connected`&&this._loadData()})}async _loadData(){if(this.rpcClient)try{let[e,t]=await Promise.all([this.rpcClient.call(`mcp.list`),this.rpcClient.call(`config.read`)]);this._servers=e.servers??[],this._mcpConfig=t.config?.integrations?.mcp?.servers??[],this._loadState=`loaded`}catch{this._loadState=`error`}}async _loadServerDetail(e){if(this.rpcClient){this._detailLoading=!0;try{let t=await this.rpcClient.call(`mcp.status`,{server_name:e});this._serverDetail=t,this._expandedServer=e}catch{u.show(`Failed to load tools for ${e}`,`error`),this._expandedServer=null,this._serverDetail=null}finally{this._detailLoading=!1}}}async _patchConfig(e,t,n){if(!this.rpcClient)return!1;try{return await this.rpcClient.call(`config.patch`,{section:e,key:t,value:n}),!0}catch(e){let t=e instanceof Error?e.message:`Failed to update configuration`;return u.show(t,`error`),!1}}_stripRedactedEnv(e){return e.map(e=>{if(!e.env||!Object.values(e.env).some(e=>e===`[REDACTED]`))return e;let{env:t,...n}=e;return n})}_requestDisconnect(e){this._disconnectTarget=e}async _confirmDisconnect(){let e=this._disconnectTarget;if(this._disconnectTarget=null,!(!e||!this.rpcClient))try{await this.rpcClient.call(`mcp.disconnect`,{server_name:e}),u.show(`Disconnected ${e}`,`success`),this._expandedServer===e&&(this._expandedServer=null,this._serverDetail=null),this._loadData()}catch{u.show(`Failed to disconnect ${e}`,`error`)}}_cancelDisconnect(){this._disconnectTarget=null}async _handleReconnect(e){if(this.rpcClient)try{await this.rpcClient.call(`mcp.reconnect`,{server_name:e}),u.show(`Reconnected ${e}`,`success`),this._loadData()}catch{u.show(`Failed to reconnect ${e}`,`error`)}}async _handleTest(e){if(this.rpcClient)try{let t=await this.rpcClient.call(`mcp.test`,{name:e});t.success?u.show(`${e}: test passed`,`success`):u.show(`${e}: test failed${t.message?` — `+t.message:``}`,`error`)}catch{u.show(`Failed to test ${e}`,`error`)}}_toggleTools(e){this._expandedServer===e?(this._expandedServer=null,this._serverDetail=null,this._showInstructions=!1):(this._showInstructions=!1,this._loadServerDetail(e))}async _toggleServer(e,t){let n=this._mcpConfig.map(n=>n.name===e?{...n,enabled:t}:n);await this._patchConfig(`integrations`,`mcp.servers`,this._stripRedactedEnv(n))&&(this._mcpConfig=n)}_removeServer(e){this._deleteTarget=e}async _confirmRemove(){let e=this._deleteTarget;if(this._deleteTarget=null,!e)return;let t=this._mcpConfig.filter(t=>t.name!==e);await this._patchConfig(`integrations`,`mcp.servers`,this._stripRedactedEnv(t))&&(this._mcpConfig=t,u.show(`Removed MCP server "${e}"`,`success`),this._loadData())}_cancelRemove(){this._deleteTarget=null}async _addServer(){if(!this._newServerName.trim()){u.show(`Server name is required`,`error`);return}let e=this._newServerName.trim();if(this._mcpConfig.some(t=>t.name===e)){u.show(`MCP server "${e}" already exists`,`error`);return}if(this._newServerTransport===`stdio`&&!this._newServerCommand.trim()){u.show(`Command is required for stdio transport`,`error`);return}if(this._newServerTransport!==`stdio`&&!this._newServerUrl.trim()){u.show(`URL is required for remote transport`,`error`);return}let t={name:e,transport:this._newServerTransport,enabled:!0};if(this._newServerTransport===`stdio`){let e=this._newServerCommand.trim().split(/\s+/);t.command=e[0]??``,e.length>1&&(t.args=e.slice(1))}else t.url=this._newServerUrl.trim();let n=this._newServerHeaders.trim();if(n){let e={};for(let t of n.split(`
376
376
  `)){let n=t.indexOf(`:`);if(n>0){let r=t.slice(0,n).trim(),i=t.slice(n+1).trim();r&&(e[r]=i)}}Object.keys(e).length>0&&(t.headers=e)}let r=this._newServerEnv.trim();if(r){let e={};for(let t of r.split(`
377
377
  `)){let n=t.indexOf(`=`);n>0&&(e[t.slice(0,n).trim()]=t.slice(n+1).trim())}Object.keys(e).length>0&&(t.env=e)}let i=[...this._mcpConfig,t];await this._patchConfig(`integrations`,`mcp.servers`,this._stripRedactedEnv(i))&&(this._mcpConfig=i,this._newServerName=``,this._newServerCommand=``,this._newServerUrl=``,this._newServerHeaders=``,this._newServerEnv=``,this._showAddForm=!1,u.show(`Added MCP server "${e}"`,`success`),this._loadData())}async _testServerConfig(e){if(!(!this.rpcClient||this._testingServer)){this._testingServer=e.name,this._testResult=null;try{let t={name:e.name,transport:e.transport};e.transport===`stdio`?(t.command=e.command,t.args=e.args):t.url=e.url,e.env&&Object.keys(e.env).length>0&&(t.env=e.env),e.headers&&Object.keys(e.headers).length>0&&(t.headers=e.headers);let n=await this.rpcClient.call(`mcp.test`,t);this._testResult={name:e.name,...n}}catch(t){let n=t instanceof Error?t.message:`Test failed`,r=n===`Not connected`||n.includes(`WebSocket`);this._testResult={name:e.name,success:!1,error:r?`Daemon not connected -- wait for reconnection and try again`:n}}finally{this._testingServer=null}}}_statusColor(e){switch(e){case`connected`:return`green`;case`disconnected`:return`default`;case`connecting`:return`yellow`;case`reconnecting`:return`yellow`;case`error`:return`red`;default:return`default`}}_renderAddServerForm(){return t`
378
378
  <div class="add-server-form">
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import"./index-CBr0Tm9_.js";var u=class extends r{constructor(...e){super(...e),this._loadState=`loading`,this._providers=null,this._mediaConfig=null}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import"./index-8Tg9oc-C.js";var u=class extends r{constructor(...e){super(...e),this._loadState=`loading`,this._providers=null,this._mediaConfig=null}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-CBr0Tm9_.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-tabs-yBjkWKJH.js";var d=[{id:`stt`,label:`STT`},{id:`tts`,label:`TTS`},{id:`vision`,label:`Vision`},{id:`document`,label:`Document`},{id:`video`,label:`Video`},{id:`link`,label:`Link`}],f=25*1024*1024,p=20*1024*1024,m=50*1024*1024;function h(e){let t=new Uint8Array(e),n=32768,r=[];for(let e=0;e<t.length;e+=n)r.push(String.fromCharCode(...t.subarray(e,e+n)));return btoa(r.join(``))}var g=class extends r{constructor(...e){super(...e),this._activeTab=`stt`,this._processing=!1,this._sttResult=null,this._ttsResult=null,this._audioUrl=null,this._ttsText=``,this._ttsVoice=``,this._visionResult=null,this._documentResult=null,this._videoResult=null,this._visionPrompt=``,this._videoPrompt=``,this._linkUrl=``,this._linkResult=null,this._loadState=`loaded`,this._providers=null,this._imagePreviewUrl=null}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-8Tg9oc-C.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-tabs-yBjkWKJH.js";var d=[{id:`stt`,label:`STT`},{id:`tts`,label:`TTS`},{id:`vision`,label:`Vision`},{id:`document`,label:`Document`},{id:`video`,label:`Video`},{id:`link`,label:`Link`}],f=25*1024*1024,p=20*1024*1024,m=50*1024*1024;function h(e){let t=new Uint8Array(e),n=32768,r=[];for(let e=0;e<t.length;e+=n)r.push(String.fromCharCode(...t.subarray(e,e+n)));return btoa(r.join(``))}var g=class extends r{constructor(...e){super(...e),this._activeTab=`stt`,this._processing=!1,this._sttResult=null,this._ttsResult=null,this._audioUrl=null,this._ttsText=``,this._ttsVoice=``,this._visionResult=null,this._documentResult=null,this._videoResult=null,this._visionPrompt=``,this._videoPrompt=``,this._linkUrl=``,this._linkResult=null,this._loadState=`loaded`,this._providers=null,this._imagePreviewUrl=null}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import"./index-CBr0Tm9_.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-data-table-CKIvr-ag.js";import"./ic-search-input-B02AGw1i.js";import"./ic-detail-panel-DiCe4hLr.js";var u=class extends r{constructor(...e){super(...e),this.entries=[],this.selectable=!1}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import"./index-8Tg9oc-C.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-data-table-CKIvr-ag.js";import"./ic-search-input-B02AGw1i.js";import"./ic-detail-panel-DiCe4hLr.js";var u=class extends r{constructor(...e){super(...e),this.entries=[],this.selectable=!1}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-CBr0Tm9_.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";var d=[`👍`,`👎`,`❤️`,`😂`,`😢`,`🤔`,`🔥`,`💯`,`👏`,`🚀`,`👀`,`👋`,`✅`,`❌`,`⭐`,`🎉`,`🙏`,`💪`,`🧠`,`💡`,`👑`,`💎`,`✨`,`🌈`],f={discord:[{group:`Messages`,actions:[{action:`pin`,label:`Pin Message`,needsMessageId:!0},{action:`unpin`,label:`Unpin Message`,needsMessageId:!0}]},{group:`Moderation`,actions:[{action:`kick`,label:`Kick User`,needsInput:`userId`},{action:`ban`,label:`Ban User`,needsInput:`userId`},{action:`unban`,label:`Unban User`,needsInput:`userId`}]},{group:`Channel`,actions:[{action:`set_topic`,label:`Set Topic`,needsInput:`topic`},{action:`set_slowmode`,label:`Set Slowmode`,needsInput:`seconds`},{action:`sendTyping`,label:`Send Typing Indicator`}]},{group:`Threads`,actions:[{action:`threadCreate`,label:`Create Thread`,needsInput:`name`},{action:`threadList`,label:`List Threads`}]},{group:`Info`,actions:[{action:`guild_info`,label:`Guild Info`},{action:`channel_info`,label:`Channel Info`}]}],telegram:[{group:`Messages`,actions:[{action:`pin`,label:`Pin Message`,needsMessageId:!0},{action:`unpin`,label:`Unpin Message`,needsMessageId:!0}]},{group:`Moderation`,actions:[{action:`ban`,label:`Ban User`,needsInput:`userId`},{action:`unban`,label:`Unban User`,needsInput:`userId`},{action:`restrict`,label:`Restrict User`,needsInput:`userId`},{action:`promote`,label:`Promote User`,needsInput:`userId`},{action:`demote`,label:`Demote User`,needsInput:`userId`}]},{group:`Chat`,actions:[{action:`set_title`,label:`Set Chat Title`,needsInput:`title`},{action:`set_description`,label:`Set Description`,needsInput:`description`},{action:`sendTyping`,label:`Send Typing Indicator`}]},{group:`Info`,actions:[{action:`chat_info`,label:`Chat Info`},{action:`member_count`,label:`Member Count`},{action:`get_admins`,label:`Get Admins`}]}],slack:[{group:`Messages`,actions:[{action:`pin`,label:`Pin Message`,needsMessageId:!0},{action:`unpin`,label:`Unpin Message`,needsMessageId:!0}]},{group:`Channel`,actions:[{action:`set_topic`,label:`Set Topic`,needsInput:`topic`},{action:`set_purpose`,label:`Set Purpose`,needsInput:`purpose`},{action:`archive`,label:`Archive Channel`},{action:`unarchive`,label:`Unarchive Channel`},{action:`sendTyping`,label:`Send Typing Indicator`}]},{group:`Members`,actions:[{action:`invite`,label:`Invite User`,needsInput:`userId`},{action:`kick`,label:`Kick User`,needsInput:`userId`},{action:`members_list`,label:`List Members`}]},{group:`Info`,actions:[{action:`channel_info`,label:`Channel Info`},{action:`bookmark_add`,label:`Add Bookmark`,needsInput:`url`}]}],whatsapp:[{group:`Group`,actions:[{action:`group_info`,label:`Group Info`},{action:`group_update_subject`,label:`Update Subject`,needsInput:`subject`},{action:`group_update_description`,label:`Update Description`,needsInput:`description`},{action:`group_invite_code`,label:`Get Invite Code`}]},{group:`Members`,actions:[{action:`group_participants_add`,label:`Add Participant`,needsInput:`participant`},{action:`group_participants_remove`,label:`Remove Participant`,needsInput:`participant`},{action:`group_promote`,label:`Promote to Admin`,needsInput:`participant`},{action:`group_demote`,label:`Demote from Admin`,needsInput:`participant`}]},{group:`Settings`,actions:[{action:`group_settings`,label:`Group Settings`}]}]},p={discord:`discord.action`,telegram:`telegram.action`,slack:`slack.action`,whatsapp:`whatsapp.action`},m=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.eventDispatcher=null,this.channelType=``,this._loadState=`idle`,this._error=``,this._messages=[],this._effectiveChannel=``,this._capabilities=null,this._channelList=[],this._sendText=``,this._showSendConfirm=!1,this._actionPending=!1,this._botName=``,this._replyToId=``,this._replyText=``,this._showReplyConfirm=!1,this._editingId=``,this._editText=``,this._deleteTargetId=``,this._showDeleteConfirm=!1,this._reactTargetId=``,this._showEmojiPicker=!1,this._attachUrl=``,this._attachType=`file`,this._attachCaption=``,this._showAttachForm=!1,this._chatList=[],this._selectedChatId=``,this._platformActionPending=!1,this._selectedMessageId=``,this._actionResult=``,this._actionInputs={},this._hasLoaded=!1,this._previousChannelType=``,this._boundEmojiOutsideClick=null,this._autoSelectAttempted=!1}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-8Tg9oc-C.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";var d=[`👍`,`👎`,`❤️`,`😂`,`😢`,`🤔`,`🔥`,`💯`,`👏`,`🚀`,`👀`,`👋`,`✅`,`❌`,`⭐`,`🎉`,`🙏`,`💪`,`🧠`,`💡`,`👑`,`💎`,`✨`,`🌈`],f={discord:[{group:`Messages`,actions:[{action:`pin`,label:`Pin Message`,needsMessageId:!0},{action:`unpin`,label:`Unpin Message`,needsMessageId:!0}]},{group:`Moderation`,actions:[{action:`kick`,label:`Kick User`,needsInput:`userId`},{action:`ban`,label:`Ban User`,needsInput:`userId`},{action:`unban`,label:`Unban User`,needsInput:`userId`}]},{group:`Channel`,actions:[{action:`set_topic`,label:`Set Topic`,needsInput:`topic`},{action:`set_slowmode`,label:`Set Slowmode`,needsInput:`seconds`},{action:`sendTyping`,label:`Send Typing Indicator`}]},{group:`Threads`,actions:[{action:`threadCreate`,label:`Create Thread`,needsInput:`name`},{action:`threadList`,label:`List Threads`}]},{group:`Info`,actions:[{action:`guild_info`,label:`Guild Info`},{action:`channel_info`,label:`Channel Info`}]}],telegram:[{group:`Messages`,actions:[{action:`pin`,label:`Pin Message`,needsMessageId:!0},{action:`unpin`,label:`Unpin Message`,needsMessageId:!0}]},{group:`Moderation`,actions:[{action:`ban`,label:`Ban User`,needsInput:`userId`},{action:`unban`,label:`Unban User`,needsInput:`userId`},{action:`restrict`,label:`Restrict User`,needsInput:`userId`},{action:`promote`,label:`Promote User`,needsInput:`userId`},{action:`demote`,label:`Demote User`,needsInput:`userId`}]},{group:`Chat`,actions:[{action:`set_title`,label:`Set Chat Title`,needsInput:`title`},{action:`set_description`,label:`Set Description`,needsInput:`description`},{action:`sendTyping`,label:`Send Typing Indicator`}]},{group:`Info`,actions:[{action:`chat_info`,label:`Chat Info`},{action:`member_count`,label:`Member Count`},{action:`get_admins`,label:`Get Admins`}]}],slack:[{group:`Messages`,actions:[{action:`pin`,label:`Pin Message`,needsMessageId:!0},{action:`unpin`,label:`Unpin Message`,needsMessageId:!0}]},{group:`Channel`,actions:[{action:`set_topic`,label:`Set Topic`,needsInput:`topic`},{action:`set_purpose`,label:`Set Purpose`,needsInput:`purpose`},{action:`archive`,label:`Archive Channel`},{action:`unarchive`,label:`Unarchive Channel`},{action:`sendTyping`,label:`Send Typing Indicator`}]},{group:`Members`,actions:[{action:`invite`,label:`Invite User`,needsInput:`userId`},{action:`kick`,label:`Kick User`,needsInput:`userId`},{action:`members_list`,label:`List Members`}]},{group:`Info`,actions:[{action:`channel_info`,label:`Channel Info`},{action:`bookmark_add`,label:`Add Bookmark`,needsInput:`url`}]}],whatsapp:[{group:`Group`,actions:[{action:`group_info`,label:`Group Info`},{action:`group_update_subject`,label:`Update Subject`,needsInput:`subject`},{action:`group_update_description`,label:`Update Description`,needsInput:`description`},{action:`group_invite_code`,label:`Get Invite Code`}]},{group:`Members`,actions:[{action:`group_participants_add`,label:`Add Participant`,needsInput:`participant`},{action:`group_participants_remove`,label:`Remove Participant`,needsInput:`participant`},{action:`group_promote`,label:`Promote to Admin`,needsInput:`participant`},{action:`group_demote`,label:`Demote from Admin`,needsInput:`participant`}]},{group:`Settings`,actions:[{action:`group_settings`,label:`Group Settings`}]}]},p={discord:`discord.action`,telegram:`telegram.action`,slack:`slack.action`,whatsapp:`whatsapp.action`},m=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.eventDispatcher=null,this.channelType=``,this._loadState=`idle`,this._error=``,this._messages=[],this._effectiveChannel=``,this._capabilities=null,this._channelList=[],this._sendText=``,this._showSendConfirm=!1,this._actionPending=!1,this._botName=``,this._replyToId=``,this._replyText=``,this._showReplyConfirm=!1,this._editingId=``,this._editText=``,this._deleteTargetId=``,this._showDeleteConfirm=!1,this._reactTargetId=``,this._showEmojiPicker=!1,this._attachUrl=``,this._attachType=`file`,this._attachCaption=``,this._showAttachForm=!1,this._chatList=[],this._selectedChatId=``,this._platformActionPending=!1,this._selectedMessageId=``,this._actionResult=``,this._actionInputs={},this._hasLoaded=!1,this._previousChannelType=``,this._boundEmojiOutsideClick=null,this._autoSelectAttempted=!1}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u,i as d}from"./index-CBr0Tm9_.js";import"./ic-tag-CvMVQFRR.js";import"./ic-search-input-B02AGw1i.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-tabs-yBjkWKJH.js";import"./ic-connection-dot-CXyhlJup.js";var f=class extends r{constructor(...e){super(...e),this.name=``,this.type=``,this.baseUrl=``,this.enabled=!1,this.testResult=null,this.testing=!1}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u,i as d}from"./index-8Tg9oc-C.js";import"./ic-tag-CvMVQFRR.js";import"./ic-search-input-B02AGw1i.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-tabs-yBjkWKJH.js";import"./ic-connection-dot-y77LZ3Gu.js";var f=class extends r{constructor(...e){super(...e),this.name=``,this.type=``,this.baseUrl=``,this.enabled=!1,this.testResult=null,this.testing=!1}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{n as u,t as d}from"./observability-types-D0tkwElU.js";import{i as f,t as p}from"./index-CBr0Tm9_.js";import"./ic-tag-CvMVQFRR.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-tabs-yBjkWKJH.js";import"./ic-delivery-row-B3YwjjuM.js";var m=3e4,h=[{id:`overview`,label:`Overview`},{id:`billing`,label:`Billing`},{id:`delivery`,label:`Delivery`},{id:`channels`,label:`Channels`},{id:`diagnostics`,label:`Diagnostics`}],g=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.eventDispatcher=null,this.initialTab=`overview`,this._sse=null,this._reloadDebounce=null,this._loadState=`loading`,this._activeTab=`overview`,this._error=``,this._requestsToday=0,this._tokensToday=0,this._costToday=0,this._errorsToday=0,this._tokenUsage24h=[],this._billingByProvider=[],this._billingByAgent=[],this._billingTotal=null,this._diagnosticsEvents=[],this._deliveryTraces=[],this._deliveryStats=null,this._channelActivity=[],this._agentHealth=[],this._channelHealth=[],this._resetConfirming=!1,this._resetInput=``,this._deliveryChannelFilter=`all`,this._deliveryStatusFilter=`all`,this._deliveryTimeRange=`1h`,this._expandedTraceId=null,this._refreshInterval=null,this._rpcStatusUnsub=null}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{n as u,t as d}from"./observability-types-D0tkwElU.js";import{i as f,t as p}from"./index-8Tg9oc-C.js";import"./ic-tag-CvMVQFRR.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";import"./ic-tabs-yBjkWKJH.js";import"./ic-delivery-row-B3YwjjuM.js";var m=3e4,h=[{id:`overview`,label:`Overview`},{id:`billing`,label:`Billing`},{id:`delivery`,label:`Delivery`},{id:`channels`,label:`Channels`},{id:`diagnostics`,label:`Diagnostics`}],g=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.eventDispatcher=null,this.initialTab=`overview`,this._sse=null,this._reloadDebounce=null,this._loadState=`loading`,this._activeTab=`overview`,this._error=``,this._requestsToday=0,this._tokensToday=0,this._costToday=0,this._errorsToday=0,this._tokenUsage24h=[],this._billingByProvider=[],this._billingByAgent=[],this._billingTotal=null,this._diagnosticsEvents=[],this._deliveryTraces=[],this._deliveryStats=null,this._channelActivity=[],this._agentHealth=[],this._channelHealth=[],this._resetConfirming=!1,this._resetInput=``,this._deliveryChannelFilter=`all`,this._deliveryStatusFilter=`all`,this._deliveryTimeRange=`1h`,this._expandedTraceId=null,this._refreshInterval=null,this._rpcStatusUnsub=null}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-CBr0Tm9_.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import{a as d,i as f,n as p,o as m,r as h,t as g}from"./ic-graph-canvas-ByRjij68.js";import{n as _,t as v}from"./extract-variables-B7-Doo7l.js";var y=50,b={label:`Untitled Pipeline`,onFailure:`fail-fast`};function x(){let e=[],t=[],n={...b},r=new Set,i=null,a={...h},o=null,s=!1,c=[],l=[],u=new Set;function d(){for(let e of u)e()}function f(){return structuredClone({nodes:e,edges:t,settings:n})}function p(){c.push(f()),c.length>y&&c.shift(),l=[]}function m(r){e=structuredClone(r.nodes),t=structuredClone(r.edges),n=structuredClone(r.settings)}return{subscribe(e){return u.add(e),()=>{u.delete(e)}},getSnapshot(){return Object.freeze({nodes:[...e],edges:[...t],settings:{...n},selectedNodeIds:new Set(r),selectedEdgeId:i,viewport:{...a},validationResult:o,isDirty:s,canUndo:c.length>0,canRedo:l.length>0})},addNode(t){p(),e.push(t),s=!0,d()},updateNode(t,n){p(),e=e.map(e=>e.id===t?{...e,...n,id:e.id}:e),s=!0,d()},removeNode(n){p(),e=e.filter(e=>e.id!==n),t=t.filter(e=>e.source!==n&&e.target!==n),s=!0,d()},addEdge(e,n){p();let r={id:`${e}->${n}`,source:e,target:n};t.push(r),s=!0,d()},removeEdge(e){p(),t=t.filter(t=>t.id!==e),s=!0,d()},updateSettings(e){p(),n={...n,...e},s=!0,d()},moveNodes(t){p();for(let{nodeId:n,position:r}of t)e=e.map(e=>e.id===n?{...e,position:r}:e);s=!0,d()},selectNode(e,t=!1){i=null,t?(r=new Set(r),r.add(e)):r=new Set([e]),d()},selectAll(){r=new Set(e.map(e=>e.id)),d()},clearSelection(){r=new Set,i=null,d()},selectEdge(e){i=e,r=new Set,d()},clearEdgeSelection(){i=null,d()},setViewport(e){a={...e},d()},setValidation(e){o=e,d()},undo(){c.length!==0&&(l.push(f()),m(c.pop()),s=!0,d())},redo(){l.length!==0&&(c.push(f()),m(l.pop()),s=!0,d())},markClean(){s=!1,d()},reset(){e=[],t=[],n={...b},r=new Set,i=null,a={...h},o=null,s=!1,c=[],l=[],d()}}}function S(e,t,n){if(t===n)return!0;let r=new Map;for(let t of e){let e=r.get(t.source);e||(e=[],r.set(t.source,e)),e.push(t.target)}let i=r.get(t);i||(i=[],r.set(t,i)),i.push(n);let a=new Set,o=[n];for(;o.length>0;){let e=o.pop();if(e===t)return!0;if(a.has(e))continue;a.add(e);let n=r.get(e);if(n)for(let e of n)a.has(e)||o.push(e)}return!1}var C=class extends r{constructor(...e){super(...e),this.settings={label:`Untitled Pipeline`,onFailure:`fail-fast`},this.hasErrors=!1,this.isDirty=!1,this.validateResult=``,this._validating=!1}static{this.styles=[o,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-8Tg9oc-C.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import{a as d,i as f,n as p,o as m,r as h,t as g}from"./ic-graph-canvas-ByRjij68.js";import{n as _,t as v}from"./extract-variables-B7-Doo7l.js";var y=50,b={label:`Untitled Pipeline`,onFailure:`fail-fast`};function x(){let e=[],t=[],n={...b},r=new Set,i=null,a={...h},o=null,s=!1,c=[],l=[],u=new Set;function d(){for(let e of u)e()}function f(){return structuredClone({nodes:e,edges:t,settings:n})}function p(){c.push(f()),c.length>y&&c.shift(),l=[]}function m(r){e=structuredClone(r.nodes),t=structuredClone(r.edges),n=structuredClone(r.settings)}return{subscribe(e){return u.add(e),()=>{u.delete(e)}},getSnapshot(){return Object.freeze({nodes:[...e],edges:[...t],settings:{...n},selectedNodeIds:new Set(r),selectedEdgeId:i,viewport:{...a},validationResult:o,isDirty:s,canUndo:c.length>0,canRedo:l.length>0})},addNode(t){p(),e.push(t),s=!0,d()},updateNode(t,n){p(),e=e.map(e=>e.id===t?{...e,...n,id:e.id}:e),s=!0,d()},removeNode(n){p(),e=e.filter(e=>e.id!==n),t=t.filter(e=>e.source!==n&&e.target!==n),s=!0,d()},addEdge(e,n){p();let r={id:`${e}->${n}`,source:e,target:n};t.push(r),s=!0,d()},removeEdge(e){p(),t=t.filter(t=>t.id!==e),s=!0,d()},updateSettings(e){p(),n={...n,...e},s=!0,d()},moveNodes(t){p();for(let{nodeId:n,position:r}of t)e=e.map(e=>e.id===n?{...e,position:r}:e);s=!0,d()},selectNode(e,t=!1){i=null,t?(r=new Set(r),r.add(e)):r=new Set([e]),d()},selectAll(){r=new Set(e.map(e=>e.id)),d()},clearSelection(){r=new Set,i=null,d()},selectEdge(e){i=e,r=new Set,d()},clearEdgeSelection(){i=null,d()},setViewport(e){a={...e},d()},setValidation(e){o=e,d()},undo(){c.length!==0&&(l.push(f()),m(c.pop()),s=!0,d())},redo(){l.length!==0&&(c.push(f()),m(l.pop()),s=!0,d())},markClean(){s=!1,d()},reset(){e=[],t=[],n={...b},r=new Set,i=null,a={...h},o=null,s=!1,c=[],l=[],d()}}}function S(e,t,n){if(t===n)return!0;let r=new Map;for(let t of e){let e=r.get(t.source);e||(e=[],r.set(t.source,e)),e.push(t.target)}let i=r.get(t);i||(i=[],r.set(t,i)),i.push(n);let a=new Set,o=[n];for(;o.length>0;){let e=o.pop();if(e===t)return!0;if(a.has(e))continue;a.add(e);let n=r.get(e);if(n)for(let e of n)a.has(e)||o.push(e)}return!1}var C=class extends r{constructor(...e){super(...e),this.settings={label:`Untitled Pipeline`,onFailure:`fail-fast`},this.hasErrors=!1,this.isDirty=!1,this.validateResult=``,this._validating=!1}static{this.styles=[o,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-CBr0Tm9_.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";var d={completed:`#22c55e`,failed:`#ef4444`};function f(e){if(!e)return`Never`;let t=Date.now()-e;if(t<0)return`just now`;let n=Math.floor(t/1e3);if(n<60)return`just now`;let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<30?`${a}d ago`:new Date(e).toISOString().slice(0,10)}var p=class extends r{constructor(...e){super(...e),this.rpcClient=null,this._rpcStatusUnsub=null,this._runs=[],this._loading=!0,this._sortField=`date`,this._sortDir=`desc`,this._deleteTarget=null}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-8Tg9oc-C.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";var d={completed:`#22c55e`,failed:`#ef4444`};function f(e){if(!e)return`Never`;let t=Date.now()-e;if(t<0)return`just now`;let n=Math.floor(t/1e3);if(n<60)return`just now`;let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<30?`${a}d ago`:new Date(e).toISOString().slice(0,10)}var p=class extends r{constructor(...e){super(...e),this.rpcClient=null,this._rpcStatusUnsub=null,this._runs=[],this._loading=!0,this._sortField=`date`,this._sortDir=`desc`,this._deleteTarget=null}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-CBr0Tm9_.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-icon-BGNCCPpZ.js";import{n as d,t as f}from"./ic-chat-message-DfSERzzg.js";var p={completed:`#22c55e`,failed:`#ef4444`};function m(e){if(!e)return`Never`;let t=Date.now()-e;if(t<0)return`just now`;let n=Math.floor(t/1e3);if(n<60)return`just now`;let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<30?`${a}d ago`:new Date(e).toISOString().slice(0,10)}function h(e){return e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}var g=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.graphId=``,this._rpcStatusUnsub=null,this._detail=null,this._loading=!0,this._error=!1,this._showDeleteConfirm=!1}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-8Tg9oc-C.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-icon-BGNCCPpZ.js";import{n as d,t as f}from"./ic-chat-message-BFt3cVpx.js";var p={completed:`#22c55e`,failed:`#ef4444`};function m(e){if(!e)return`Never`;let t=Date.now()-e;if(t<0)return`just now`;let n=Math.floor(t/1e3);if(n<60)return`just now`;let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<30?`${a}d ago`:new Date(e).toISOString().slice(0,10)}function h(e){return e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}var g=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.graphId=``,this._rpcStatusUnsub=null,this._detail=null,this._loading=!0,this._error=!1,this._showDeleteConfirm=!1}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1,4 +1,4 @@
1
- import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-CBr0Tm9_.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";import{n as d,t as f}from"./extract-variables-B7-Doo7l.js";var p={draft:`#6b7280`,running:`#06b6d4`,completed:`#22c55e`,failed:`#ef4444`,cancelled:`#f97316`};function m(e){if(!e)return`Never`;let t=Date.now()-e;if(t<0)return`just now`;let n=Math.floor(t/1e3);if(n<60)return`just now`;let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<30?`${a}d ago`:new Date(e).toISOString().slice(0,10)}var h=class extends r{constructor(...e){super(...e),this.rpcClient=null,this._rpcStatusUnsub=null,this._pipelines=[],this._searchQuery=``,this._loading=!0,this._deleteTarget=null,this._sortKey=`savedAt`,this._sortAsc=!1,this._showVariablePrompt=!1,this._variableNames=[],this._pendingExecuteData=null}static{this.styles=[o,i,n`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-8Tg9oc-C.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";import{n as d,t as f}from"./extract-variables-B7-Doo7l.js";var p={draft:`#6b7280`,running:`#06b6d4`,completed:`#22c55e`,failed:`#ef4444`,cancelled:`#f97316`};function m(e){if(!e)return`Never`;let t=Date.now()-e;if(t<0)return`just now`;let n=Math.floor(t/1e3);if(n<60)return`just now`;let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<30?`${a}d ago`:new Date(e).toISOString().slice(0,10)}var h=class extends r{constructor(...e){super(...e),this.rpcClient=null,this._rpcStatusUnsub=null,this._pipelines=[],this._searchQuery=``,this._loading=!0,this._deleteTarget=null,this._sortKey=`savedAt`,this._sortAsc=!1,this._showVariablePrompt=!1,this._variableNames=[],this._pendingExecuteData=null}static{this.styles=[o,i,n`
2
2
  :host {
3
3
  display: block;
4
4
  }