comisai 1.0.25 → 1.0.26

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 (145) hide show
  1. package/node_modules/@comis/agent/dist/bootstrap/sections/tool-descriptions.js +130 -10
  2. package/node_modules/@comis/agent/dist/bootstrap/sections/tooling-sections.d.ts +1 -1
  3. package/node_modules/@comis/agent/dist/bootstrap/sections/tooling-sections.js +9 -2
  4. package/node_modules/@comis/agent/dist/bridge/bridge-metrics.d.ts +8 -0
  5. package/node_modules/@comis/agent/dist/bridge/bridge-metrics.js +2 -0
  6. package/node_modules/@comis/agent/dist/bridge/pi-event-bridge.d.ts +29 -0
  7. package/node_modules/@comis/agent/dist/bridge/pi-event-bridge.js +242 -2
  8. package/node_modules/@comis/agent/dist/bridge/thinking-block-hash-invariant.d.ts +210 -0
  9. package/node_modules/@comis/agent/dist/bridge/thinking-block-hash-invariant.js +566 -0
  10. package/node_modules/@comis/agent/dist/context-engine/context-engine.js +8 -6
  11. package/node_modules/@comis/agent/dist/context-engine/signature-replay-scrubber.d.ts +51 -30
  12. package/node_modules/@comis/agent/dist/context-engine/signature-replay-scrubber.js +109 -36
  13. package/node_modules/@comis/agent/dist/executor/executor-context-engine-setup.js +5 -1
  14. package/node_modules/@comis/agent/dist/executor/executor-post-execution.js +22 -20
  15. package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.d.ts +2 -0
  16. package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.js +111 -15
  17. package/node_modules/@comis/agent/dist/executor/executor-response-filter.d.ts +20 -17
  18. package/node_modules/@comis/agent/dist/executor/executor-response-filter.js +132 -52
  19. package/node_modules/@comis/agent/dist/executor/executor-tool-assembly.js +16 -3
  20. package/node_modules/@comis/agent/dist/executor/model-retry.d.ts +14 -0
  21. package/node_modules/@comis/agent/dist/executor/model-retry.js +72 -1
  22. package/node_modules/@comis/agent/dist/executor/pi-executor.d.ts +3 -0
  23. package/node_modules/@comis/agent/dist/executor/pi-executor.js +68 -9
  24. package/node_modules/@comis/agent/dist/executor/post-batch-continuation.d.ts +82 -0
  25. package/node_modules/@comis/agent/dist/executor/post-batch-continuation.js +200 -0
  26. package/node_modules/@comis/agent/dist/executor/stream-wrappers/request-body-injector.js +1 -9
  27. package/node_modules/@comis/agent/dist/executor/tool-deferral.d.ts +37 -2
  28. package/node_modules/@comis/agent/dist/executor/tool-deferral.js +45 -3
  29. package/node_modules/@comis/agent/dist/executor/tool-parallelism.js +0 -1
  30. package/node_modules/@comis/agent/dist/executor/types.d.ts +11 -2
  31. package/node_modules/@comis/agent/dist/index.d.ts +3 -1
  32. package/node_modules/@comis/agent/dist/index.js +2 -0
  33. package/node_modules/@comis/agent/dist/model/last-known-model.d.ts +36 -0
  34. package/node_modules/@comis/agent/dist/model/last-known-model.js +49 -0
  35. package/node_modules/@comis/agent/dist/model/model-registry-adapter.d.ts +16 -4
  36. package/node_modules/@comis/agent/dist/model/model-registry-adapter.js +65 -21
  37. package/node_modules/@comis/agent/dist/planner/types.d.ts +0 -2
  38. package/node_modules/@comis/agent/dist/session/comis-session-manager.d.ts +10 -0
  39. package/node_modules/@comis/agent/dist/session/comis-session-manager.js +5 -0
  40. package/node_modules/@comis/agent/dist/spawn/pi-mono-adapters.js +7 -0
  41. package/node_modules/@comis/agent/package.json +1 -1
  42. package/node_modules/@comis/channels/package.json +1 -1
  43. package/node_modules/@comis/cli/dist/client/rpc-client.js +6 -1
  44. package/node_modules/@comis/cli/dist/commands/doctor.js +5 -3
  45. package/node_modules/@comis/cli/dist/commands/health.js +5 -2
  46. package/node_modules/@comis/cli/dist/wizard/json-output.js +7 -3
  47. package/node_modules/@comis/cli/dist/wizard/steps/11-daemon-start.js +130 -0
  48. package/node_modules/@comis/cli/package.json +1 -1
  49. package/node_modules/@comis/core/dist/config/immutable-keys.d.ts +2 -2
  50. package/node_modules/@comis/core/dist/config/immutable-keys.js +8 -3
  51. package/node_modules/@comis/core/dist/config/managed-sections.d.ts +43 -4
  52. package/node_modules/@comis/core/dist/config/managed-sections.js +100 -6
  53. package/node_modules/@comis/core/dist/config/schema-agent.d.ts +39 -0
  54. package/node_modules/@comis/core/dist/config/schema-agent.js +14 -0
  55. package/node_modules/@comis/core/dist/config/schema.d.ts +4 -0
  56. package/node_modules/@comis/core/dist/config/schema.js +14 -0
  57. package/node_modules/@comis/core/dist/domain/execution-graph.d.ts +1 -1
  58. package/node_modules/@comis/core/dist/event-bus/events-agent.d.ts +17 -2
  59. package/node_modules/@comis/core/dist/exports/config.d.ts +2 -2
  60. package/node_modules/@comis/core/dist/exports/config.js +1 -1
  61. package/node_modules/@comis/core/package.json +1 -1
  62. package/node_modules/@comis/daemon/dist/daemon.d.ts +22 -0
  63. package/node_modules/@comis/daemon/dist/daemon.js +42 -0
  64. package/node_modules/@comis/daemon/dist/rpc/agent-handlers.d.ts +5 -2
  65. package/node_modules/@comis/daemon/dist/rpc/agent-handlers.js +80 -1
  66. package/node_modules/@comis/daemon/dist/rpc/agent-inline-workspace.d.ts +67 -0
  67. package/node_modules/@comis/daemon/dist/rpc/agent-inline-workspace.js +139 -0
  68. package/node_modules/@comis/daemon/dist/rpc/model-handlers.d.ts +3 -0
  69. package/node_modules/@comis/daemon/dist/rpc/model-handlers.js +29 -5
  70. package/node_modules/@comis/daemon/dist/rpc/probe-provider-auth.d.ts +30 -0
  71. package/node_modules/@comis/daemon/dist/rpc/probe-provider-auth.js +59 -0
  72. package/node_modules/@comis/daemon/dist/rpc/provider-handlers.d.ts +37 -0
  73. package/node_modules/@comis/daemon/dist/rpc/provider-handlers.js +330 -0
  74. package/node_modules/@comis/daemon/dist/rpc/rpc-dispatch.js +18 -1
  75. package/node_modules/@comis/daemon/dist/setup-docker-restart-warn.d.ts +4 -0
  76. package/node_modules/@comis/daemon/dist/setup-docker-restart-warn.js +30 -0
  77. package/node_modules/@comis/daemon/dist/wiring/setup-agents.d.ts +3 -1
  78. package/node_modules/@comis/daemon/dist/wiring/setup-agents.js +28 -2
  79. package/node_modules/@comis/daemon/dist/wiring/setup-cross-session.js +1 -0
  80. package/node_modules/@comis/daemon/dist/wiring/setup-tools.js +7 -4
  81. package/node_modules/@comis/daemon/package.json +1 -1
  82. package/node_modules/@comis/gateway/package.json +1 -1
  83. package/node_modules/@comis/infra/dist/index.d.ts +1 -0
  84. package/node_modules/@comis/infra/dist/index.js +2 -0
  85. package/node_modules/@comis/infra/dist/runtime/is-docker.d.ts +1 -0
  86. package/node_modules/@comis/infra/dist/runtime/is-docker.js +25 -0
  87. package/node_modules/@comis/infra/package.json +1 -1
  88. package/node_modules/@comis/memory/package.json +1 -1
  89. package/node_modules/@comis/scheduler/package.json +1 -1
  90. package/node_modules/@comis/shared/package.json +1 -1
  91. package/node_modules/@comis/skills/dist/bridge/tool-metadata-registry.js +1 -3
  92. package/node_modules/@comis/skills/dist/builtin/platform/admin-manage-factory.js +24 -1
  93. package/node_modules/@comis/skills/dist/builtin/platform/agents-manage-tool.d.ts +53 -7
  94. package/node_modules/@comis/skills/dist/builtin/platform/agents-manage-tool.js +218 -24
  95. package/node_modules/@comis/skills/dist/builtin/platform/gateway-tool.d.ts +4 -1
  96. package/node_modules/@comis/skills/dist/builtin/platform/gateway-tool.js +16 -1
  97. package/node_modules/@comis/skills/dist/builtin/platform/index.d.ts +1 -1
  98. package/node_modules/@comis/skills/dist/builtin/platform/index.js +1 -1
  99. package/node_modules/@comis/skills/dist/builtin/platform/providers-manage-tool.d.ts +56 -0
  100. package/node_modules/@comis/skills/dist/builtin/platform/providers-manage-tool.js +203 -0
  101. package/node_modules/@comis/skills/dist/index.d.ts +1 -1
  102. package/node_modules/@comis/skills/dist/index.js +2 -2
  103. package/node_modules/@comis/skills/dist/policy/tool-policy.js +0 -1
  104. package/node_modules/@comis/skills/package.json +1 -1
  105. package/node_modules/@comis/web/dist/assets/{agent-detail-ru-AhppM.js → agent-detail-DqL6Artv.js} +1 -1
  106. package/node_modules/@comis/web/dist/assets/{agent-editor-hjwRuFVp.js → agent-editor-CNM_h94Y.js} +1 -1
  107. package/node_modules/@comis/web/dist/assets/{agent-list-6Uotjatr.js → agent-list-Dbh-xD_F.js} +1 -1
  108. package/node_modules/@comis/web/dist/assets/{billing-view-CxysXH0p.js → billing-view-C1DmtyzK.js} +1 -1
  109. package/node_modules/@comis/web/dist/assets/{channel-detail-BBCKtmne.js → channel-detail-CtCH22N1.js} +1 -1
  110. package/node_modules/@comis/web/dist/assets/{channel-list-FkfeOLBQ.js → channel-list-C7xXn-60.js} +1 -1
  111. package/node_modules/@comis/web/dist/assets/{chat-console-BumBaIgO.js → chat-console-C51pjFwk.js} +1 -1
  112. package/node_modules/@comis/web/dist/assets/{config-editor-C9BSwHGy.js → config-editor-BLArYRB7.js} +1 -1
  113. package/node_modules/@comis/web/dist/assets/{context-dag-browser-BHm00mJD.js → context-dag-browser-fuyMinNI.js} +1 -1
  114. package/node_modules/@comis/web/dist/assets/{context-engine-BENY3pWE.js → context-engine-Bngf2bH0.js} +1 -1
  115. package/node_modules/@comis/web/dist/assets/{delivery-view-BCnkPsAp.js → delivery-view-C80hucxX.js} +1 -1
  116. package/node_modules/@comis/web/dist/assets/{diagnostics-view-C_jQFG2H.js → diagnostics-view-Cl4VbHZ6.js} +1 -1
  117. package/node_modules/@comis/web/dist/assets/{ic-chat-message-FdQcZsSQ.js → ic-chat-message-ByFUoMm6.js} +1 -1
  118. package/node_modules/@comis/web/dist/assets/{ic-connection-dot-BgYiK2N4.js → ic-connection-dot-C4nDHgY2.js} +1 -1
  119. package/node_modules/@comis/web/dist/assets/{ic-tool-call-DMPHsLyx.js → ic-tool-call-Bh5kq-yY.js} +1 -1
  120. package/node_modules/@comis/web/dist/assets/{index-FLPhHz8p.js → index-BBkuC-EU.js} +2 -2
  121. package/node_modules/@comis/web/dist/assets/{mcp-management-5jyScQis.js → mcp-management-DB-phOo7.js} +1 -1
  122. package/node_modules/@comis/web/dist/assets/{media-config-J9oT9PPs.js → media-config-CRqZ1ZUH.js} +1 -1
  123. package/node_modules/@comis/web/dist/assets/{media-test-DGTCtM8-.js → media-test-C9vE20Oy.js} +1 -1
  124. package/node_modules/@comis/web/dist/assets/{memory-inspector-D5Re9ptG.js → memory-inspector-CeqfnxMZ.js} +1 -1
  125. package/node_modules/@comis/web/dist/assets/{message-center-cRLK6ZmG.js → message-center-Daup7Mof.js} +1 -1
  126. package/node_modules/@comis/web/dist/assets/{models-D5vu07MR.js → models-DLYnEU8E.js} +1 -1
  127. package/node_modules/@comis/web/dist/assets/{observe-view-CalNNEmd.js → observe-view-BTSt_PO5.js} +1 -1
  128. package/node_modules/@comis/web/dist/assets/{pipeline-builder-DUYDGwZf.js → pipeline-builder-DknfzyLt.js} +1 -1
  129. package/node_modules/@comis/web/dist/assets/{pipeline-history-BAO8brOe.js → pipeline-history-JnHZdeU_.js} +1 -1
  130. package/node_modules/@comis/web/dist/assets/{pipeline-history-detail-DectIoQt.js → pipeline-history-detail-Dg4knsEb.js} +1 -1
  131. package/node_modules/@comis/web/dist/assets/{pipeline-list-BHlaBKww.js → pipeline-list-AEnibjsp.js} +1 -1
  132. package/node_modules/@comis/web/dist/assets/{pipeline-monitor-BhtpNEHf.js → pipeline-monitor-DG7RbIOO.js} +1 -1
  133. package/node_modules/@comis/web/dist/assets/{scheduler-VafN_8xi.js → scheduler-uL1fYKAT.js} +1 -1
  134. package/node_modules/@comis/web/dist/assets/{security-QQXMRTlo.js → security-C3DywRLH.js} +1 -1
  135. package/node_modules/@comis/web/dist/assets/{session-detail-BpZ_8Yih.js → session-detail-BtqCNWXV.js} +1 -1
  136. package/node_modules/@comis/web/dist/assets/{session-list-DfCm8Cec.js → session-list-CJXWa2XT.js} +1 -1
  137. package/node_modules/@comis/web/dist/assets/{setup-wizard-C-z477CG.js → setup-wizard-ywn7oJvu.js} +1 -1
  138. package/node_modules/@comis/web/dist/assets/{skills-BCOGPf6s.js → skills-DX0KYnWD.js} +1 -1
  139. package/node_modules/@comis/web/dist/assets/{subagents-l-auUraL.js → subagents-B8p5YJEB.js} +1 -1
  140. package/node_modules/@comis/web/dist/assets/{workspace-manager-DlvBixiq.js → workspace-manager-CgzNIrw1.js} +1 -1
  141. package/node_modules/@comis/web/dist/index.html +1 -1
  142. package/node_modules/@comis/web/package.json +1 -1
  143. package/package.json +13 -13
  144. package/node_modules/@comis/skills/dist/builtin/platform/agents-list-tool.d.ts +0 -19
  145. package/node_modules/@comis/skills/dist/builtin/platform/agents-list-tool.js +0 -39
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Provider management tool: multi-action tool for LLM provider configuration.
3
+ *
4
+ * Supports 7 actions: list, get, create, update, delete, enable, disable.
5
+ * Destructive actions (create, delete) require approval via the ApprovalGate.
6
+ * All actions enforce admin trust level via createTrustGuard.
7
+ * Delegates to providers.* RPC handlers via rpcCall.
8
+ *
9
+ * @module
10
+ */
11
+ import type { AgentTool } from "@mariozechner/pi-agent-core";
12
+ import type { ApprovalGate } from "@comis/core";
13
+ import type { RpcCall } from "./cron-tool.js";
14
+ export declare const ProvidersManageToolParams: import("@sinclair/typebox").TObject<{
15
+ action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"list">, import("@sinclair/typebox").TLiteral<"get">, import("@sinclair/typebox").TLiteral<"create">, import("@sinclair/typebox").TLiteral<"update">, import("@sinclair/typebox").TLiteral<"delete">, import("@sinclair/typebox").TLiteral<"enable">, import("@sinclair/typebox").TLiteral<"disable">]>;
16
+ provider_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
17
+ config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
18
+ type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
20
+ baseUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
21
+ apiKeyName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
22
+ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
23
+ timeoutMs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
24
+ maxRetries: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
25
+ headers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>;
26
+ models: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
27
+ id: import("@sinclair/typebox").TString;
28
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
29
+ reasoning: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
30
+ contextWindow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
31
+ maxTokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
32
+ input: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"text">, import("@sinclair/typebox").TLiteral<"image">]>>>;
33
+ }>>>;
34
+ }>, import("@sinclair/typebox").TString]>>;
35
+ }>;
36
+ /**
37
+ * Create a provider management tool with 7 actions.
38
+ *
39
+ * Actions:
40
+ * - **list** -- List all configured providers
41
+ * - **get** -- Get provider configuration and status
42
+ * - **create** -- Register a new provider (requires approval)
43
+ * - **update** -- Modify provider configuration
44
+ * - **delete** -- Remove a provider (requires approval)
45
+ * - **enable** -- Enable a disabled provider
46
+ * - **disable** -- Disable a provider
47
+ *
48
+ * @param rpcCall - RPC call function for delegating to the daemon backend
49
+ * @param approvalGate - Optional approval gate for create/delete actions
50
+ * @param callbacks - Optional mutation lifecycle callbacks (onMutationStart/onMutationEnd)
51
+ * @returns AgentTool implementing the provider management interface
52
+ */
53
+ export declare function createProvidersManageTool(rpcCall: RpcCall, approvalGate?: ApprovalGate, callbacks?: {
54
+ onMutationStart?: () => void;
55
+ onMutationEnd?: () => void;
56
+ }): AgentTool<typeof ProvidersManageToolParams>;
@@ -0,0 +1,203 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * Provider management tool: multi-action tool for LLM provider configuration.
4
+ *
5
+ * Supports 7 actions: list, get, create, update, delete, enable, disable.
6
+ * Destructive actions (create, delete) require approval via the ApprovalGate.
7
+ * All actions enforce admin trust level via createTrustGuard.
8
+ * Delegates to providers.* RPC handlers via rpcCall.
9
+ *
10
+ * @module
11
+ */
12
+ import { Type } from "@sinclair/typebox";
13
+ import { readStringParam } from "./tool-helpers.js";
14
+ import { createAdminManageTool } from "./admin-manage-factory.js";
15
+ // ---------------------------------------------------------------------------
16
+ // Parameter schema
17
+ // ---------------------------------------------------------------------------
18
+ export const ProvidersManageToolParams = Type.Object({
19
+ action: Type.Union([
20
+ Type.Literal("list"),
21
+ Type.Literal("get"),
22
+ Type.Literal("create"),
23
+ Type.Literal("update"),
24
+ Type.Literal("delete"),
25
+ Type.Literal("enable"),
26
+ Type.Literal("disable"),
27
+ ], {
28
+ description: "Provider management action. Valid values: " +
29
+ "list (view all providers), get (read config), " +
30
+ "create (register new provider), update (modify config), " +
31
+ "delete (remove provider), enable/disable (toggle availability)",
32
+ }),
33
+ provider_id: Type.Optional(Type.String({
34
+ description: "The provider identifier (required for all actions except list) " +
35
+ "-- any user-chosen name (e.g., 'nvidia', 'deepseek', 'ollama-local', " +
36
+ "'groq', 'my-vllm', 'company-internal')",
37
+ })),
38
+ config: Type.Optional(Type.Union([
39
+ Type.Object({
40
+ type: Type.Optional(Type.String({
41
+ description: "Provider SDK type -- determines the API protocol. Common values: " +
42
+ "openai (any OpenAI-compatible endpoint), anthropic, google, ollama, " +
43
+ "groq, mistral, together, deepseek, cerebras, xai, openrouter. " +
44
+ "Use 'openai' for custom/self-hosted endpoints that speak the OpenAI " +
45
+ "API format (NVIDIA NIM, vLLM, LM Studio, llama.cpp, Fireworks, " +
46
+ "Perplexity, etc.)",
47
+ })),
48
+ name: Type.Optional(Type.String({ description: "Human-readable display name" })),
49
+ baseUrl: Type.Optional(Type.String({
50
+ description: "API base URL (e.g., https://integrate.api.nvidia.com/v1)",
51
+ })),
52
+ apiKeyName: Type.Optional(Type.String({
53
+ description: "SecretManager key name for the API key (NOT the key itself). " +
54
+ "Store the key first via gateway env_set. Required for cloud " +
55
+ "providers; may be omitted for type='ollama' once keyless " +
56
+ "registration lands (until then, all entries with models[] " +
57
+ "need a resolvable apiKeyName).",
58
+ })),
59
+ enabled: Type.Optional(Type.Boolean({
60
+ description: "Whether provider is active (default: true)",
61
+ })),
62
+ timeoutMs: Type.Optional(Type.Integer({
63
+ description: "Request timeout in ms (default: 120000)",
64
+ })),
65
+ maxRetries: Type.Optional(Type.Integer({
66
+ description: "Max retries for transient errors (default: 2)",
67
+ })),
68
+ headers: Type.Optional(Type.Record(Type.String(), Type.String(), {
69
+ description: "Custom headers for API requests",
70
+ })),
71
+ models: Type.Optional(Type.Array(Type.Object({
72
+ id: Type.String({
73
+ description: "Model ID at provider (e.g., moonshotai/kimi-k2.5)",
74
+ }),
75
+ name: Type.Optional(Type.String({ description: "Display name" })),
76
+ reasoning: Type.Optional(Type.Boolean({
77
+ description: "Supports extended thinking",
78
+ })),
79
+ contextWindow: Type.Optional(Type.Integer({
80
+ description: "Max context tokens",
81
+ })),
82
+ maxTokens: Type.Optional(Type.Integer({
83
+ description: "Max output tokens",
84
+ })),
85
+ input: Type.Optional(Type.Array(Type.Union([Type.Literal("text"), Type.Literal("image")]))),
86
+ }), { description: "User-defined model entries for this provider" })),
87
+ }, { description: "Provider configuration for create/update" }),
88
+ Type.String({
89
+ description: "Provider config as JSON string (fallback). Prefer object form.",
90
+ }),
91
+ ])),
92
+ });
93
+ const VALID_ACTIONS = ["list", "get", "create", "update", "delete", "enable", "disable"];
94
+ // ---------------------------------------------------------------------------
95
+ // Helpers
96
+ // ---------------------------------------------------------------------------
97
+ /** Coerce config from JSON string to object if LLM double-encoded it. */
98
+ function coerceConfig(p) {
99
+ const raw = p.config;
100
+ if (typeof raw === "string") {
101
+ try {
102
+ const parsed = JSON.parse(raw);
103
+ if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
104
+ return parsed;
105
+ }
106
+ }
107
+ catch { /* not valid JSON, fall through */ }
108
+ }
109
+ return raw;
110
+ }
111
+ // ---------------------------------------------------------------------------
112
+ // Factory
113
+ // ---------------------------------------------------------------------------
114
+ /**
115
+ * Create a provider management tool with 7 actions.
116
+ *
117
+ * Actions:
118
+ * - **list** -- List all configured providers
119
+ * - **get** -- Get provider configuration and status
120
+ * - **create** -- Register a new provider (requires approval)
121
+ * - **update** -- Modify provider configuration
122
+ * - **delete** -- Remove a provider (requires approval)
123
+ * - **enable** -- Enable a disabled provider
124
+ * - **disable** -- Disable a provider
125
+ *
126
+ * @param rpcCall - RPC call function for delegating to the daemon backend
127
+ * @param approvalGate - Optional approval gate for create/delete actions
128
+ * @param callbacks - Optional mutation lifecycle callbacks (onMutationStart/onMutationEnd)
129
+ * @returns AgentTool implementing the provider management interface
130
+ */
131
+ export function createProvidersManageTool(rpcCall, approvalGate, callbacks) {
132
+ return createAdminManageTool({
133
+ name: "providers_manage",
134
+ label: "Provider Management",
135
+ description: "Manage LLM providers: list, get, create, update, delete, enable, disable. " +
136
+ "Create/delete require approval. API keys must be stored separately via gateway env_set.",
137
+ parameters: ProvidersManageToolParams,
138
+ validActions: VALID_ACTIONS,
139
+ rpcPrefix: "providers",
140
+ gatedActions: ["create", "delete"],
141
+ actionOverrides: {
142
+ async list(_p, rpcCall, ctx) {
143
+ return rpcCall("providers.list", { _trustLevel: ctx.trustLevel });
144
+ },
145
+ async get(p, rpcCall, ctx) {
146
+ const providerId = readStringParam(p, "provider_id");
147
+ return rpcCall("providers.get", { providerId, _trustLevel: ctx.trustLevel });
148
+ },
149
+ async create(p, rpcCall, ctx) {
150
+ const providerId = readStringParam(p, "provider_id");
151
+ const config = coerceConfig(p);
152
+ callbacks?.onMutationStart?.();
153
+ try {
154
+ return await rpcCall("providers.create", { providerId, config, _trustLevel: ctx.trustLevel });
155
+ }
156
+ finally {
157
+ callbacks?.onMutationEnd?.();
158
+ }
159
+ },
160
+ async update(p, rpcCall, ctx) {
161
+ const providerId = readStringParam(p, "provider_id");
162
+ const config = coerceConfig(p);
163
+ callbacks?.onMutationStart?.();
164
+ try {
165
+ return await rpcCall("providers.update", { providerId, config, _trustLevel: ctx.trustLevel });
166
+ }
167
+ finally {
168
+ callbacks?.onMutationEnd?.();
169
+ }
170
+ },
171
+ async delete(p, rpcCall, ctx) {
172
+ const providerId = readStringParam(p, "provider_id");
173
+ callbacks?.onMutationStart?.();
174
+ try {
175
+ return await rpcCall("providers.delete", { providerId, _trustLevel: ctx.trustLevel });
176
+ }
177
+ finally {
178
+ callbacks?.onMutationEnd?.();
179
+ }
180
+ },
181
+ async enable(p, rpcCall, ctx) {
182
+ const providerId = readStringParam(p, "provider_id");
183
+ callbacks?.onMutationStart?.();
184
+ try {
185
+ return await rpcCall("providers.enable", { providerId, _trustLevel: ctx.trustLevel });
186
+ }
187
+ finally {
188
+ callbacks?.onMutationEnd?.();
189
+ }
190
+ },
191
+ async disable(p, rpcCall, ctx) {
192
+ const providerId = readStringParam(p, "provider_id");
193
+ callbacks?.onMutationStart?.();
194
+ try {
195
+ return await rpcCall("providers.disable", { providerId, _trustLevel: ctx.trustLevel });
196
+ }
197
+ finally {
198
+ callbacks?.onMutationEnd?.();
199
+ }
200
+ },
201
+ },
202
+ }, rpcCall, approvalGate, callbacks);
203
+ }
@@ -33,7 +33,7 @@ export { expandSkillForInvocation } from "./prompt/processor.js";
33
33
  export { scanSkillContent, type ContentScanResult, type ContentScanFinding } from "./prompt/content-scanner.js";
34
34
  export { createSTTProvider, createFallbackTranscription } from "./integrations/stt-factory.js";
35
35
  export { preprocessMessage } from "./integrations/media-preprocessor.js";
36
- export { createMemorySearchTool, createMemoryGetTool, createMemoryStoreTool, createSessionStatusTool, createSessionsListTool, createSessionsHistoryTool, createSessionsSendTool, createSessionsSpawnTool, createSessionSearchTool, createAgentsListTool, createSubagentsTool, createPipelineTool, createMessageTool, createCronTool, type RpcCall, createDiscordActionTool, createTelegramActionTool, createSlackActionTool, createWhatsAppActionTool, createImageTool, createTTSTool, createTranscribeAudioTool, createDescribeVideoTool, createExtractDocumentTool, createGatewayTool, createBrowserTool, createHeartbeatManageTool, createNotifyTool, createImageGenerateTool, createCtxSearchTool, createCtxInspectTool, createCtxRecallTool, createCtxExpandTool, createAgentsManageTool, createObsQueryTool, createMemoryManageTool, createSessionsManageTool, createModelsManageTool, createTokensManageTool, createChannelsManageTool, createSkillsManageTool, createMcpManageTool, createBackgroundTasksTool, createUnifiedSessionTool, createUnifiedMemoryTool, createUnifiedContextTool, } from "./builtin/platform/index.js";
36
+ export { createMemorySearchTool, createMemoryGetTool, createMemoryStoreTool, createSessionStatusTool, createSessionsListTool, createSessionsHistoryTool, createSessionsSendTool, createSessionsSpawnTool, createSessionSearchTool, createSubagentsTool, createPipelineTool, createMessageTool, createCronTool, type RpcCall, createDiscordActionTool, createTelegramActionTool, createSlackActionTool, createWhatsAppActionTool, createImageTool, createTTSTool, createTranscribeAudioTool, createDescribeVideoTool, createExtractDocumentTool, createGatewayTool, createBrowserTool, createHeartbeatManageTool, createNotifyTool, createImageGenerateTool, createCtxSearchTool, createCtxInspectTool, createCtxRecallTool, createCtxExpandTool, createAgentsManageTool, createObsQueryTool, createMemoryManageTool, createSessionsManageTool, createModelsManageTool, createProvidersManageTool, createTokensManageTool, createChannelsManageTool, createSkillsManageTool, createMcpManageTool, createBackgroundTasksTool, createUnifiedSessionTool, createUnifiedMemoryTool, createUnifiedContextTool, } from "./builtin/platform/index.js";
37
37
  export { createBrowserService } from "./browser/index.js";
38
38
  export type { BrowserService, ActParams } from "./browser/index.js";
39
39
  export { createTTSProvider } from "./integrations/tts-factory.js";
@@ -51,7 +51,7 @@ createMemorySearchTool, createMemoryGetTool, createMemoryStoreTool,
51
51
  // Session tools
52
52
  createSessionStatusTool, createSessionsListTool, createSessionsHistoryTool, createSessionsSendTool, createSessionsSpawnTool, createSessionSearchTool,
53
53
  // Agent tools
54
- createAgentsListTool, createSubagentsTool, createPipelineTool,
54
+ createSubagentsTool, createPipelineTool,
55
55
  // Messaging
56
56
  createMessageTool,
57
57
  // Scheduling
@@ -71,7 +71,7 @@ createImageGenerateTool,
71
71
  // Context DAG tools
72
72
  createCtxSearchTool, createCtxInspectTool, createCtxRecallTool, createCtxExpandTool,
73
73
  // Fleet management
74
- createAgentsManageTool, createObsQueryTool, createMemoryManageTool, createSessionsManageTool, createModelsManageTool, createTokensManageTool, createChannelsManageTool, createSkillsManageTool, createMcpManageTool,
74
+ createAgentsManageTool, createObsQueryTool, createMemoryManageTool, createSessionsManageTool, createModelsManageTool, createProvidersManageTool, createTokensManageTool, createChannelsManageTool, createSkillsManageTool, createMcpManageTool,
75
75
  // Background tasks
76
76
  createBackgroundTasksTool,
77
77
  // Unified tools (action dispatch -- consolidates individual tools)
@@ -97,7 +97,6 @@ export const TOOL_GROUPS = {
97
97
  "session_status",
98
98
  "session_search",
99
99
  "subagents",
100
- "agents_list",
101
100
  "pipeline",
102
101
  ],
103
102
  "group:platform_actions": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@comis/skills",
3
3
  "private": true,
4
- "version": "1.0.25",
4
+ "version": "1.0.26",
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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.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-BgYiK2N4.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-BBkuC-EU.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-C4nDHgY2.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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.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-DMPHsLyx.js";import"./ic-chat-message-FdQcZsSQ.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-BBkuC-EU.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-Bh5kq-yY.js";import"./ic-chat-message-ByFUoMm6.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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.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-BBkuC-EU.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-FLPhHz8p.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-chat-message-FdQcZsSQ.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-BBkuC-EU.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-chat-message-ByFUoMm6.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-BumBaIgO.js","assets/decorate-BvWYovGE.js","assets/ic-chat-message-FdQcZsSQ.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-DMPHsLyx.js","assets/ic-empty-state-CM3Wbj2f.js","assets/ic-search-input-B02AGw1i.js","assets/session-key-parser-Dkqcj2Ss.js","assets/memory-inspector-D5Re9ptG.js","assets/ic-data-table-CKIvr-ag.js","assets/ic-confirm-dialog-DGlPbV1T.js","assets/ic-detail-panel-DiCe4hLr.js","assets/agent-list-6Uotjatr.js","assets/agent-detail-ru-AhppM.js","assets/ic-breadcrumb-DqN6G3gc.js","assets/agent-editor-hjwRuFVp.js","assets/ic-array-editor-BLoEyeLS.js","assets/workspace-manager-DlvBixiq.js","assets/skills-BCOGPf6s.js","assets/ic-tabs-yBjkWKJH.js","assets/mcp-management-5jyScQis.js","assets/models-D5vu07MR.js","assets/ic-connection-dot-BgYiK2N4.js","assets/channel-list-FkfeOLBQ.js","assets/channel-detail-BBCKtmne.js","assets/message-center-cRLK6ZmG.js","assets/scheduler-VafN_8xi.js","assets/session-list-DfCm8Cec.js","assets/session-detail-BpZ_8Yih.js","assets/ic-layer-waterfall-WkaFyu-l.js","assets/observe-view-CalNNEmd.js","assets/observability-types-D0tkwElU.js","assets/ic-delivery-row-B3YwjjuM.js","assets/context-engine-BENY3pWE.js","assets/billing-view-CxysXH0p.js","assets/ic-time-range-picker-DXbYeBmY.js","assets/delivery-view-BCnkPsAp.js","assets/diagnostics-view-C_jQFG2H.js","assets/subagents-l-auUraL.js","assets/security-QQXMRTlo.js","assets/ic-select-BqfZISjw.js","assets/approvals-C-K6hN2U.js","assets/config-editor-C9BSwHGy.js","assets/setup-wizard-C-z477CG.js","assets/pipeline-list-BHlaBKww.js","assets/extract-variables-B7-Doo7l.js","assets/pipeline-builder-DUYDGwZf.js","assets/ic-graph-canvas-ByRjij68.js","assets/pipeline-monitor-BhtpNEHf.js","assets/pipeline-history-BAO8brOe.js","assets/pipeline-history-detail-DectIoQt.js","assets/context-dag-browser-BHm00mJD.js","assets/media-test-DGTCtM8-.js","assets/media-config-J9oT9PPs.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chat-console-C51pjFwk.js","assets/decorate-BvWYovGE.js","assets/ic-chat-message-ByFUoMm6.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-Bh5kq-yY.js","assets/ic-empty-state-CM3Wbj2f.js","assets/ic-search-input-B02AGw1i.js","assets/session-key-parser-Dkqcj2Ss.js","assets/memory-inspector-CeqfnxMZ.js","assets/ic-data-table-CKIvr-ag.js","assets/ic-confirm-dialog-DGlPbV1T.js","assets/ic-detail-panel-DiCe4hLr.js","assets/agent-list-Dbh-xD_F.js","assets/agent-detail-DqL6Artv.js","assets/ic-breadcrumb-DqN6G3gc.js","assets/agent-editor-CNM_h94Y.js","assets/ic-array-editor-BLoEyeLS.js","assets/workspace-manager-CgzNIrw1.js","assets/skills-DX0KYnWD.js","assets/ic-tabs-yBjkWKJH.js","assets/mcp-management-DB-phOo7.js","assets/models-DLYnEU8E.js","assets/ic-connection-dot-C4nDHgY2.js","assets/channel-list-C7xXn-60.js","assets/channel-detail-CtCH22N1.js","assets/message-center-Daup7Mof.js","assets/scheduler-uL1fYKAT.js","assets/session-list-CJXWa2XT.js","assets/session-detail-BtqCNWXV.js","assets/ic-layer-waterfall-WkaFyu-l.js","assets/observe-view-BTSt_PO5.js","assets/observability-types-D0tkwElU.js","assets/ic-delivery-row-B3YwjjuM.js","assets/context-engine-Bngf2bH0.js","assets/billing-view-C1DmtyzK.js","assets/ic-time-range-picker-DXbYeBmY.js","assets/delivery-view-C80hucxX.js","assets/diagnostics-view-Cl4VbHZ6.js","assets/subagents-B8p5YJEB.js","assets/security-C3DywRLH.js","assets/ic-select-BqfZISjw.js","assets/approvals-C-K6hN2U.js","assets/config-editor-BLArYRB7.js","assets/setup-wizard-ywn7oJvu.js","assets/pipeline-list-AEnibjsp.js","assets/extract-variables-B7-Doo7l.js","assets/pipeline-builder-DknfzyLt.js","assets/ic-graph-canvas-ByRjij68.js","assets/pipeline-monitor-DG7RbIOO.js","assets/pipeline-history-JnHZdeU_.js","assets/pipeline-history-detail-Dg4knsEb.js","assets/context-dag-browser-fuyMinNI.js","assets/media-test-C9vE20Oy.js","assets/media-config-CRqZ1ZUH.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-BumBaIgO.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),"ic-memory-inspector":()=>Z(()=>import(`./memory-inspector-D5Re9ptG.js`),__vite__mapDeps([12,1,13,6,7,14,10,15])),"ic-agent-list":()=>Z(()=>import(`./agent-list-6Uotjatr.js`),__vite__mapDeps([16,1,13,7,4,14,9,10])),"ic-agent-detail":()=>Z(()=>import(`./agent-detail-ru-AhppM.js`),__vite__mapDeps([17,1,6,7,14,18])),"ic-agent-editor":()=>Z(()=>import(`./agent-editor-hjwRuFVp.js`),__vite__mapDeps([19,1,7,20,18])),"ic-workspace-manager":()=>Z(()=>import(`./workspace-manager-DlvBixiq.js`),__vite__mapDeps([21,1,6,7,14,9,4,18])),"ic-skills-view":()=>Z(()=>import(`./skills-BCOGPf6s.js`),__vite__mapDeps([22,1,7,14,9,4,10,23])),"ic-mcp-management":()=>Z(()=>import(`./mcp-management-5jyScQis.js`),__vite__mapDeps([24,1,6,7,14,9,4])),"ic-models-view":()=>Z(()=>import(`./models-D5vu07MR.js`),__vite__mapDeps([25,1,7,26,4,9,10,23])),"ic-channel-list":()=>Z(()=>import(`./channel-list-FkfeOLBQ.js`),__vite__mapDeps([27,1,14,9,4])),"ic-channel-detail":()=>Z(()=>import(`./channel-detail-BBCKtmne.js`),__vite__mapDeps([28,1,6,7,26,4,9,18,23])),"ic-message-center":()=>Z(()=>import(`./message-center-cRLK6ZmG.js`),__vite__mapDeps([29,1,6,14,9,4,18])),"ic-scheduler-view":()=>Z(()=>import(`./scheduler-VafN_8xi.js`),__vite__mapDeps([30,1,6,7,4,9,23])),"ic-session-list-view":()=>Z(()=>import(`./session-list-DfCm8Cec.js`),__vite__mapDeps([31,1,13,6,7,14,9,4,10,11])),"ic-session-detail":()=>Z(()=>import(`./session-detail-BpZ_8Yih.js`),__vite__mapDeps([32,1,2,3,4,5,33,6,7,8,14,9,18,11])),"ic-observe-dashboard":()=>Z(()=>import(`./observe-view-CalNNEmd.js`),__vite__mapDeps([34,1,35,6,7,36,9,4,23])),"ic-context-engine-view":()=>Z(()=>import(`./context-engine-BENY3pWE.js`),__vite__mapDeps([37,1,5,33,6,9,4])),"ic-billing-view":()=>Z(()=>import(`./billing-view-CxysXH0p.js`),__vite__mapDeps([38,1,39,9,4])),"ic-delivery-view":()=>Z(()=>import(`./delivery-view-BCnkPsAp.js`),__vite__mapDeps([40,1,6,39,36,7,9,4,15])),"ic-diagnostics-view":()=>Z(()=>import(`./diagnostics-view-C_jQFG2H.js`),__vite__mapDeps([41,1,35,6,7,39,9,4])),"ic-subagents-view":()=>Z(()=>import(`./subagents-l-auUraL.js`),__vite__mapDeps([42,1,6,7,14,9,4])),"ic-security-view":()=>Z(()=>import(`./security-QQXMRTlo.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-C9BSwHGy.js`),__vite__mapDeps([46,1,6,7,14,9,4,20,44,23])),"ic-setup-wizard":()=>Z(()=>import(`./setup-wizard-C-z477CG.js`),__vite__mapDeps([47,1,4])),"ic-pipeline-list":()=>Z(()=>import(`./pipeline-list-BHlaBKww.js`),__vite__mapDeps([48,1,4,14,9,49,18])),"ic-pipeline-builder":()=>Z(()=>import(`./pipeline-builder-DUYDGwZf.js`),__vite__mapDeps([50,1,51,3,14,49,18])),"ic-pipeline-monitor":()=>Z(()=>import(`./pipeline-monitor-BhtpNEHf.js`),__vite__mapDeps([52,1,51,3,14,18])),"ic-pipeline-history":()=>Z(()=>import(`./pipeline-history-BAO8brOe.js`),__vite__mapDeps([53,1,4,14,9,18])),"ic-pipeline-history-detail":()=>Z(()=>import(`./pipeline-history-detail-DectIoQt.js`),__vite__mapDeps([54,1,2,3,4,14,18])),"ic-context-dag-browser":()=>Z(()=>import(`./context-dag-browser-BHm00mJD.js`),__vite__mapDeps([55,1,6,7,9,4,10,15])),"ic-media-test-view":()=>Z(()=>import(`./media-test-DGTCtM8-.js`),__vite__mapDeps([56,1,9,4,23])),"ic-media-config-view":()=>Z(()=>import(`./media-config-J9oT9PPs.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-C51pjFwk.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),"ic-memory-inspector":()=>Z(()=>import(`./memory-inspector-CeqfnxMZ.js`),__vite__mapDeps([12,1,13,6,7,14,10,15])),"ic-agent-list":()=>Z(()=>import(`./agent-list-Dbh-xD_F.js`),__vite__mapDeps([16,1,13,7,4,14,9,10])),"ic-agent-detail":()=>Z(()=>import(`./agent-detail-DqL6Artv.js`),__vite__mapDeps([17,1,6,7,14,18])),"ic-agent-editor":()=>Z(()=>import(`./agent-editor-CNM_h94Y.js`),__vite__mapDeps([19,1,7,20,18])),"ic-workspace-manager":()=>Z(()=>import(`./workspace-manager-CgzNIrw1.js`),__vite__mapDeps([21,1,6,7,14,9,4,18])),"ic-skills-view":()=>Z(()=>import(`./skills-DX0KYnWD.js`),__vite__mapDeps([22,1,7,14,9,4,10,23])),"ic-mcp-management":()=>Z(()=>import(`./mcp-management-DB-phOo7.js`),__vite__mapDeps([24,1,6,7,14,9,4])),"ic-models-view":()=>Z(()=>import(`./models-DLYnEU8E.js`),__vite__mapDeps([25,1,7,26,4,9,10,23])),"ic-channel-list":()=>Z(()=>import(`./channel-list-C7xXn-60.js`),__vite__mapDeps([27,1,14,9,4])),"ic-channel-detail":()=>Z(()=>import(`./channel-detail-CtCH22N1.js`),__vite__mapDeps([28,1,6,7,26,4,9,18,23])),"ic-message-center":()=>Z(()=>import(`./message-center-Daup7Mof.js`),__vite__mapDeps([29,1,6,14,9,4,18])),"ic-scheduler-view":()=>Z(()=>import(`./scheduler-uL1fYKAT.js`),__vite__mapDeps([30,1,6,7,4,9,23])),"ic-session-list-view":()=>Z(()=>import(`./session-list-CJXWa2XT.js`),__vite__mapDeps([31,1,13,6,7,14,9,4,10,11])),"ic-session-detail":()=>Z(()=>import(`./session-detail-BtqCNWXV.js`),__vite__mapDeps([32,1,2,3,4,5,33,6,7,8,14,9,18,11])),"ic-observe-dashboard":()=>Z(()=>import(`./observe-view-BTSt_PO5.js`),__vite__mapDeps([34,1,35,6,7,36,9,4,23])),"ic-context-engine-view":()=>Z(()=>import(`./context-engine-Bngf2bH0.js`),__vite__mapDeps([37,1,5,33,6,9,4])),"ic-billing-view":()=>Z(()=>import(`./billing-view-C1DmtyzK.js`),__vite__mapDeps([38,1,39,9,4])),"ic-delivery-view":()=>Z(()=>import(`./delivery-view-C80hucxX.js`),__vite__mapDeps([40,1,6,39,36,7,9,4,15])),"ic-diagnostics-view":()=>Z(()=>import(`./diagnostics-view-Cl4VbHZ6.js`),__vite__mapDeps([41,1,35,6,7,39,9,4])),"ic-subagents-view":()=>Z(()=>import(`./subagents-B8p5YJEB.js`),__vite__mapDeps([42,1,6,7,14,9,4])),"ic-security-view":()=>Z(()=>import(`./security-C3DywRLH.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-BLArYRB7.js`),__vite__mapDeps([46,1,6,7,14,9,4,20,44,23])),"ic-setup-wizard":()=>Z(()=>import(`./setup-wizard-ywn7oJvu.js`),__vite__mapDeps([47,1,4])),"ic-pipeline-list":()=>Z(()=>import(`./pipeline-list-AEnibjsp.js`),__vite__mapDeps([48,1,4,14,9,49,18])),"ic-pipeline-builder":()=>Z(()=>import(`./pipeline-builder-DknfzyLt.js`),__vite__mapDeps([50,1,51,3,14,49,18])),"ic-pipeline-monitor":()=>Z(()=>import(`./pipeline-monitor-DG7RbIOO.js`),__vite__mapDeps([52,1,51,3,14,18])),"ic-pipeline-history":()=>Z(()=>import(`./pipeline-history-JnHZdeU_.js`),__vite__mapDeps([53,1,4,14,9,18])),"ic-pipeline-history-detail":()=>Z(()=>import(`./pipeline-history-detail-Dg4knsEb.js`),__vite__mapDeps([54,1,2,3,4,14,18])),"ic-context-dag-browser":()=>Z(()=>import(`./context-dag-browser-fuyMinNI.js`),__vite__mapDeps([55,1,6,7,9,4,10,15])),"ic-media-test-view":()=>Z(()=>import(`./media-test-C9vE20Oy.js`),__vite__mapDeps([56,1,9,4,23])),"ic-media-config-view":()=>Z(()=>import(`./media-config-CRqZ1ZUH.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-FLPhHz8p.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-BBkuC-EU.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
  }
@@ -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-FLPhHz8p.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-BBkuC-EU.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
  }