@xopcai/xopc 0.0.398 → 0.0.400

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 (158) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Q-lKLSrc.js → agent-avatar-dicebear-B7GhbbJl.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-CobxTBV_.js → agent-defaults-settings-panel-Bu_K45Ek.js} +1 -1
  5. package/dist/gateway/static/root/assets/{agents-Bgmmue5K.js → agents-ChQ0rVqM.js} +3 -3
  6. package/dist/gateway/static/root/assets/{app-management-settings-panel-CB_W2ano.js → app-management-settings-panel-DXe_yRwn.js} +1 -1
  7. package/dist/gateway/static/root/assets/{appearance-settings-B-ppSGBm.js → appearance-settings-BzHQv_NH.js} +1 -1
  8. package/dist/gateway/static/root/assets/apps-page-DRwxXHjg.js +1 -0
  9. package/dist/gateway/static/root/assets/{archive-plugin-CeQrQ693.js → archive-plugin-D4OpAzgH.js} +1 -1
  10. package/dist/gateway/static/root/assets/{automations-page-Cc9vZanv.js → automations-page-CvoN7NI-.js} +1 -1
  11. package/dist/gateway/static/root/assets/{automations-workspace-Bc4c_AEq.js → automations-workspace-KgjR_a8V.js} +1 -1
  12. package/dist/gateway/static/root/assets/{binary-plugins-BqaVBv1R.js → binary-plugins-BQ51byO-.js} +1 -1
  13. package/dist/gateway/static/root/assets/{block-editor-B4ij8nZi.js → block-editor-CuaGcDNj.js} +1 -1
  14. package/dist/gateway/static/root/assets/{browser-automation-inputs-DngvcZH9.js → browser-automation-inputs-BEj3E3Wg.js} +1 -1
  15. package/dist/gateway/static/root/assets/{browser-automations-page-CdqwXyYq.js → browser-automations-page-bf2wLb_U.js} +1 -1
  16. package/dist/gateway/static/root/assets/{browser-settings-page-CJT0rB-I.js → browser-settings-page-B3B4j-fo.js} +1 -1
  17. package/dist/gateway/static/root/assets/{capabilities-page-C56VsP0Y.js → capabilities-page-CrMVZkHU.js} +2 -2
  18. package/dist/gateway/static/root/assets/{capabilities-settings-panel-DZiA8JIq.js → capabilities-settings-panel-brKKbjb1.js} +1 -1
  19. package/dist/gateway/static/root/assets/{capability-header-actions-Cu-ATcJq.js → capability-header-actions-DrOc-yzD.js} +1 -1
  20. package/dist/gateway/static/root/assets/{capability-links--dcwUjgv.js → capability-links-DzQWK1Fh.js} +1 -1
  21. package/dist/gateway/static/root/assets/{channels-gIjZtYnV.js → channels-DwL_FBhH.js} +1 -1
  22. package/dist/gateway/static/root/assets/{chat-terminal-dock-COdvmTgN.js → chat-terminal-dock-DmNnS6TM.js} +1 -1
  23. package/dist/gateway/static/root/assets/{computer-settings-page-C1XHsuI8.js → computer-settings-page-CzgZGc6E.js} +1 -1
  24. package/dist/gateway/static/root/assets/{connector-service-page-Cv2bhnQ5.js → connector-service-page-BIfX9zNS.js} +1 -1
  25. package/dist/gateway/static/root/assets/connectors-page-e7r6aMEp.js +1 -0
  26. package/dist/gateway/static/root/assets/{date-picker-CCnqYwy0.js → date-picker-CbrbJS2K.js} +1 -1
  27. package/dist/gateway/static/root/assets/{dependency-picker-nt5ruIio.js → dependency-picker-58ZbwNby.js} +1 -1
  28. package/dist/gateway/static/root/assets/{desktop-pet-Bn8xj1v3.js → desktop-pet-DwZJ9V8G.js} +1 -1
  29. package/dist/gateway/static/root/assets/{desktop-pet-settings-Cbl1J_VE.js → desktop-pet-settings-miynV1MT.js} +1 -1
  30. package/dist/gateway/static/root/assets/{device-pairing-wizard-Tadg9co1.js → device-pairing-wizard-CcOeWnx0.js} +1 -1
  31. package/dist/gateway/static/root/assets/{directory-picker-path-field-DuE5ez1E.js → directory-picker-path-field-6MGZG98P.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-jsNxwqNi.js → extension-debug-page-Dp_IJP6-.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-N_rBjYX8.js → extension-page-pWuoYmVL.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-settings-page-7qAdvlRB.js → extension-settings-page-SJ4T9oXh.js} +1 -1
  35. package/dist/gateway/static/root/assets/{gateway-settings-ViqOhx_m.js → gateway-settings-Ds5gFBVs.js} +1 -1
  36. package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-XrkWdmrk.js → highlighted-body-KQOG7T2V-ChdUhMyZ.js} +1 -1
  37. package/dist/gateway/static/root/assets/{home-page-C_Xn_Kkz.js → home-page-BGjlHbXQ.js} +1 -1
  38. package/dist/gateway/static/root/assets/{image-generation-api-CmHdM2uL.js → image-generation-api-xTanSnq4.js} +1 -1
  39. package/dist/gateway/static/root/assets/{imports-page-B-dnvHP_.js → imports-page-DstG_R0Z.js} +1 -1
  40. package/dist/gateway/static/root/assets/index-QegseiyI.css +1 -0
  41. package/dist/gateway/static/root/assets/{index-DvKDT-RQ.js → index-fDaRYOv1.js} +8 -8
  42. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-mCs9cDgv.js → keyboard-shortcuts-settings-CtSA2o-v.js} +1 -1
  43. package/dist/gateway/static/root/assets/{local-app-workbench-page-B7AtlfWQ.js → local-app-workbench-page-Bjy2vPj-.js} +1 -1
  44. package/dist/gateway/static/root/assets/{local-apps-page-CIJE7jME.js → local-apps-page-BDApBgtY.js} +1 -1
  45. package/dist/gateway/static/root/assets/{logs-page-HawXUKF2.js → logs-page-DePchbyj.js} +1 -1
  46. package/dist/gateway/static/root/assets/{management-settings-DByEh6rq.js → management-settings-CfnxE6K5.js} +1 -1
  47. package/dist/gateway/static/root/assets/{media-plugins-B8BLxQgj.js → media-plugins-Bai9Og3V.js} +1 -1
  48. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-bXnI7rUg.js +1 -0
  49. package/dist/gateway/static/root/assets/{note-detail-panel-hQHB5fCs.js → note-detail-panel-D9IfcVdl.js} +3 -3
  50. package/dist/gateway/static/root/assets/{notes-page-BEusEk31.js → notes-page-KGS9DAHs.js} +1 -1
  51. package/dist/gateway/static/root/assets/{page-context-capture-button-42bq8N6-.js → page-context-capture-button-Hwj5mgvr.js} +1 -1
  52. package/dist/gateway/static/root/assets/{personal-page-DPR5gzhf.js → personal-page-Bmkhjsrb.js} +1 -1
  53. package/dist/gateway/static/root/assets/plugin-details-dialog-F3p7hZfb.js +1 -0
  54. package/dist/gateway/static/root/assets/{plugin-presentation-BrQpVvjC.js → plugin-presentation-BTc9eGAc.js} +1 -1
  55. package/dist/gateway/static/root/assets/{preview-open-alternatives-DKyLVLpX.js → preview-open-alternatives-DAmgAXI9.js} +1 -1
  56. package/dist/gateway/static/root/assets/{product-open-page-DcGH0AXN.js → product-open-page-Cvujq-at.js} +1 -1
  57. package/dist/gateway/static/root/assets/{product-preview-content-Ck6OzP09.js → product-preview-content-S1EfBQSH.js} +1 -1
  58. package/dist/gateway/static/root/assets/{project-detail-page-BHoQ10Eo.js → project-detail-page-nbeJjhHu.js} +1 -1
  59. package/dist/gateway/static/root/assets/{projects-page-DYsq_OLJ.js → projects-page-DKnFWTzc.js} +1 -1
  60. package/dist/gateway/static/root/assets/{remote-access-hub-CU3EChY0.js → remote-access-hub-DGjIoklN.js} +1 -1
  61. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-Bfs5zKDg.js → runtime-tools-settings-panel-CZHb7XN3.js} +1 -1
  62. package/dist/gateway/static/root/assets/{schema-form-BbI2BuSU.js → schema-form-P6uo4aTB.js} +1 -1
  63. package/dist/gateway/static/root/assets/{sessions-page-CjB2GOTs.js → sessions-page-B-4njnNj.js} +1 -1
  64. package/dist/gateway/static/root/assets/settings-advanced-gate-DfsiUGi6.js +1 -0
  65. package/dist/gateway/static/root/assets/{settings-form-section-BfBBJlr-.js → settings-form-section-h0HhEpiF.js} +1 -1
  66. package/dist/gateway/static/root/assets/{settings-page-9yu4SN1j.js → settings-page-AknPfAp8.js} +1 -1
  67. package/dist/gateway/static/root/assets/{setup-status-panel-DhWB3feW.js → setup-status-panel-BWfAXtFX.js} +1 -1
  68. package/dist/gateway/static/root/assets/{share-preview-page-B6lQl5xb.js → share-preview-page-DELcrD4H.js} +1 -1
  69. package/dist/gateway/static/root/assets/{shares-settings-UJGjdz3F.js → shares-settings-BPuThYz5.js} +1 -1
  70. package/dist/gateway/static/root/assets/{skill-api-y2m3k_R4.js → skill-api-BZa6K-ss.js} +1 -1
  71. package/dist/gateway/static/root/assets/{skill-reload-api-Bk9FqsVa.js → skill-reload-api-kkS6CsDm.js} +1 -1
  72. package/dist/gateway/static/root/assets/{skills-page-DLd4O-Fo.js → skills-page-CgbbAh89.js} +1 -1
  73. package/dist/gateway/static/root/assets/{style-C2ptQg95.js → style-p3jWw92_.js} +1 -1
  74. package/dist/gateway/static/root/assets/{system-settings-panel-DYzcLnVk.js → system-settings-panel-CnW46J1H.js} +1 -1
  75. package/dist/gateway/static/root/assets/{task-detail-page-DLGtmHAH.js → task-detail-page-Cse314-c.js} +1 -1
  76. package/dist/gateway/static/root/assets/{tracing-settings-page-DKQYmzFn.js → tracing-settings-page-DukbNSbs.js} +1 -1
  77. package/dist/gateway/static/root/assets/{tunnel-api-C2VY_HTy.js → tunnel-api-CnUDRk-U.js} +1 -1
  78. package/dist/gateway/static/root/assets/{usage-page-CjzunQtj.js → usage-page-LsoUOpYt.js} +1 -1
  79. package/dist/gateway/static/root/assets/{use-autosave-BElgnGMt.js → use-autosave-DmXcbSNm.js} +1 -1
  80. package/dist/gateway/static/root/assets/{user-model-page-DsOGCDTR.js → user-model-page-CfyppZWW.js} +1 -1
  81. package/dist/gateway/static/root/assets/{voice-api-key-field-FVjX0qhn.js → voice-api-key-field-BS5WRLuc.js} +1 -1
  82. package/dist/gateway/static/root/assets/{work-discovery-overlay-B2S2NZuK.js → work-discovery-overlay-9rVKP_hV.js} +1 -1
  83. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-2Gq34KQk.js → workflow-run-setup-panel-qk5NOkwL.js} +1 -1
  84. package/dist/gateway/static/root/assets/{workflows-page-CjeFD3mk.js → workflows-page--iOSBqMk.js} +1 -1
  85. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-BZMIZxWg.js → xopc-cloud-account-card-B14g2TWE.js} +1 -1
  86. package/dist/gateway/static/root/index.html +2 -2
  87. package/dist/package.js +1 -1
  88. package/dist/src/agent/agent-manager.js +3 -3
  89. package/dist/src/agent/background-review/run-background-review.js +1 -1
  90. package/dist/src/agent/external-tools/cliProvider.js +2 -2
  91. package/dist/src/agent/external-tools/composio-provider.js +2 -2
  92. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  93. package/dist/src/agent/service/process-direct-streaming.js +1 -1
  94. package/dist/src/agent/service.js +2 -2
  95. package/dist/src/agent/skills/index.js +1 -1
  96. package/dist/src/agent/skills/managed-store.js +1 -1
  97. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  98. package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
  99. package/dist/src/agent/tool-manuals/computer.js +2 -2
  100. package/dist/src/agent/tools/computer-use-tool.js +9 -3
  101. package/dist/src/agent/tools/factory.js +1 -1
  102. package/dist/src/agent/tools/personal-read-tool.js +1 -1
  103. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  104. package/dist/src/agent/workspace-runtime/registry.js +1 -1
  105. package/dist/src/agent-catalog/capabilities.js +2 -2
  106. package/dist/src/automations/capabilities/drafts.js +1 -1
  107. package/dist/src/automations/service/action-executor.js +2 -2
  108. package/dist/src/bootstrap/application-state.js +1 -1
  109. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  110. package/dist/src/capabilities/runtime/product.js +1 -1
  111. package/dist/src/chat-commands/agent-edit.js +1 -1
  112. package/dist/src/cli/commands/agent.js +1 -1
  113. package/dist/src/cli/commands/agents.js +1 -1
  114. package/dist/src/cli/commands/models.js +1 -1
  115. package/dist/src/cli/commands/onboard/model.js +1 -1
  116. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  117. package/dist/src/computer/diagnostics.js +1 -0
  118. package/dist/src/computer/errors.js +1 -0
  119. package/dist/src/computer/runtime.d.ts +23 -0
  120. package/dist/src/computer/runtime.js +90 -7
  121. package/dist/src/config/agent-model-intents.js +1 -1
  122. package/dist/src/config/agent-profile.js +2 -2
  123. package/dist/src/config/loader.js +1 -1
  124. package/dist/src/config/models-json.js +1 -1
  125. package/dist/src/config/schema.js +2 -2
  126. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  127. package/dist/src/gateway/agents-admin.js +2 -2
  128. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  129. package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
  130. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  131. package/dist/src/gateway/hono/routes/context-sources.js +1 -1
  132. package/dist/src/gateway/hono/routes/notes.js +2 -2
  133. package/dist/src/gateway/hono/routes/projects.js +2 -2
  134. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  135. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  136. package/dist/src/gateway/image-generation-setup.js +1 -1
  137. package/dist/src/gateway/lock.js +1 -1
  138. package/dist/src/gateway/service.js +8 -8
  139. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  140. package/dist/src/home-intelligence/host.js +2 -2
  141. package/dist/src/local-apps/service.js +1 -1
  142. package/dist/src/personal-agent/proactivity/service.js +1 -1
  143. package/dist/src/personal-agent/service.js +2 -2
  144. package/dist/src/providers/model-catalog-persistence.js +1 -1
  145. package/dist/src/routing/resolve-route.js +1 -1
  146. package/dist/src/routing/resolve-tui-session-key.js +1 -1
  147. package/dist/src/tasks/capabilities/read.js +2 -2
  148. package/dist/src/tasks/capabilities/write.js +1 -1
  149. package/dist/src/tasks/task-handoff-service.js +1 -1
  150. package/dist/src/tui/backends/embedded-backend.js +2 -2
  151. package/dist/src/voice/realtime/persona-context.js +1 -1
  152. package/package.json +3 -3
  153. package/dist/gateway/static/root/assets/apps-page-3qUgsGui.js +0 -1
  154. package/dist/gateway/static/root/assets/connectors-page-SmKItq0N.js +0 -1
  155. package/dist/gateway/static/root/assets/index-DWzv8ZoO.css +0 -1
  156. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-CZjPT7xE.js +0 -1
  157. package/dist/gateway/static/root/assets/plugin-details-dialog-D8dKKIY9.js +0 -1
  158. package/dist/gateway/static/root/assets/settings-advanced-gate-jbVx8gcF.js +0 -1
@@ -1,10 +1,10 @@
1
1
  import { normalizeAgentId, validateAgentIdForNewAgent } from "../agent-catalog/id.js";
2
2
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
3
3
  import { init_agent_scope, listAgentEntries, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId, resolveUserPath } from "../agent/agent-scope.js";
4
- import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
5
4
  import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES, REQUIRED_AGENT_PROFILE_MARKDOWN_FILE_SET } from "../agent/context/workspace.js";
6
- import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
7
5
  import { AgentCatalogService } from "../agent-catalog/service.js";
6
+ import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
7
+ import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
8
8
  import { GATEWAY_BUILTIN_TOOL_IDS } from "./agent-builtin-tools.js";
9
9
  import { resolve } from "node:path";
10
10
  import { mkdir, readFile, realpath, stat, unlink, writeFile } from "node:fs/promises";
@@ -1,7 +1,7 @@
1
- import { ContextPlanningConfigSchema, KnowledgeMemoryConfigSchema, UserModelConfigSchema, init_config } from "../../../user-context/config.js";
2
1
  import { normalizeAgentId } from "../../../agent-catalog/id.js";
3
2
  import { AgentCatalogRepository, init_repository } from "../../../agent-catalog/repository.js";
4
3
  import { init_agent_scope, listAgentEntries, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
4
+ import { ContextPlanningConfigSchema, KnowledgeMemoryConfigSchema, UserModelConfigSchema, init_config } from "../../../user-context/config.js";
5
5
  import { resolveModelsJsonPath } from "../../../config/paths.js";
6
6
  import { init_models_json, loadModelsJson } from "../../../config/models-json.js";
7
7
  import { CredentialResolver, init_credentials } from "../../../auth/credentials.js";
@@ -1,10 +1,10 @@
1
- import { ContextPlanningConfigSchema, HomeIntelligenceConfigSchema, KnowledgeMemoryConfigSchema, UserContextConfigSchema, UserModelConfigSchema, init_config } from "../../../../user-context/config.js";
2
1
  import { BindingsSchema, init_binding_schema } from "../../../../routing/binding-schema.js";
2
+ import { AgentCatalogService } from "../../../../agent-catalog/service.js";
3
+ import { ContextPlanningConfigSchema, HomeIntelligenceConfigSchema, KnowledgeMemoryConfigSchema, UserContextConfigSchema, UserModelConfigSchema, init_config } from "../../../../user-context/config.js";
3
4
  import { ComputerConfigSchema, init_config as init_config$1 } from "../../../../computer/config.js";
4
5
  import { BrowserConfigSchema, McpConfigSchema, VoiceConfigSchema, init_schema } from "../../../../config/schema.js";
5
6
  import { CredentialResolver, init_credentials } from "../../../../auth/credentials.js";
6
7
  import { canonicalizeConfiguredMcpServer } from "../../../../config/mcp-config-normalize.js";
7
- import { AgentCatalogService } from "../../../../agent-catalog/service.js";
8
8
  import { mergeGatewaySkillsMarketplacePatch, mergeSessionConfigPatch, mergeUpdateConfigPatch } from "../../../../config/web-patch.js";
9
9
  import { assertGatewayAuthConfigured, resolveGatewayAuth } from "../../../auth.js";
10
10
  import { isMaskedSecretPatchValue } from "../../lib/mask-secret-length.js";
@@ -6,9 +6,9 @@ import { getConnectorAccount, init_connector_account_repository, listConnectorAc
6
6
  import { decideConnectorApproval, getConnectorApproval, listConnectorApprovals, listConnectorConnections } from "../../../storage/sqlite/connector-repository.js";
7
7
  import { getConnectorSyncPolicy, upsertConnectorSyncPolicy } from "../../../storage/sqlite/connector-sync-policy-repository.js";
8
8
  import { init_sqlite } from "../../../storage/sqlite/index.js";
9
- import { listUnderstandingSourceGrants, revokeUnderstandingSourceGrant } from "../../../user-context/sources/repository.js";
10
9
  import { AgentCatalogRepository, init_repository } from "../../../agent-catalog/repository.js";
11
10
  import { init_agent_scope, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
11
+ import { listUnderstandingSourceGrants, revokeUnderstandingSourceGrant } from "../../../user-context/sources/repository.js";
12
12
  import { activateComposioBackend, addComposioBackend, ensureComposioBackend, getComposioBackend, listComposioBackends, removeComposioBackend } from "../../../connectors/composio-backends.js";
13
13
  import { getAuthorizationAttempt } from "../../../connectors/authorization-attempts.js";
14
14
  import { ComposioSessionsAdapter, resolveComposioApiKey } from "../../../connectors/composio-sessions.js";
@@ -2,9 +2,9 @@ import { getSqliteDatabase, init_transaction } from "../../../storage/sqlite/tra
2
2
  import { getConnectorAccount } from "../../../storage/sqlite/connector-account-repository.js";
3
3
  import { countKnowledgeSourceItems, deleteKnowledgeSourceItems } from "../../../storage/sqlite/knowledge-repository.js";
4
4
  import { init_sqlite } from "../../../storage/sqlite/index.js";
5
+ import { init_agent_scope, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
5
6
  import { getActiveUnderstandingConsent } from "../../../user-context/sources/consent-repository.js";
6
7
  import { getUnderstandingSourceGrant, listUnderstandingSourceGrants, listUnderstandingSourceRuns, revokeUnderstandingSourceGrant, updateUnderstandingSourceGrantPolicies } from "../../../user-context/sources/repository.js";
7
- import { init_agent_scope, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
8
8
  import { listUserModelObservations } from "../../../user-model/observation-repository.js";
9
9
  import "../../../user-model/index.js";
10
10
  import { listConnectedContentCandidates, readConnectedContent } from "../../../connectors/content-enrichment.js";
@@ -1,9 +1,9 @@
1
1
  import { NoteDeleteOutputSchema, NoteGetOutputSchema, ProductReadContracts } from "../../../../packages/gateway-contract/src/capabilities.js";
2
2
  import { init_src } from "../../../../packages/gateway-contract/src/index.js";
3
- import { init_session_key, resolveConversationId } from "../../../routing/session-key.js";
4
- import { agentExists, getDefaultAgentId, init_resolve_route } from "../../../routing/resolve-route.js";
5
3
  import { CapabilityError } from "../../../capabilities/runtime/errors.js";
6
4
  import "../../../capabilities/runtime/dispatcher.js";
5
+ import { init_session_key, resolveConversationId } from "../../../routing/session-key.js";
6
+ import { agentExists, getDefaultAgentId, init_resolve_route } from "../../../routing/resolve-route.js";
7
7
  import { resolveGatewayEffectiveHost } from "../../../config/gateway-bind.js";
8
8
  import { getShareStore } from "../../../share/share-store.js";
9
9
  import { resolveShareUrl } from "../../../share/share-url.js";
@@ -7,12 +7,12 @@ import { loadTranscriptRowsForSession } from "../../../storage/sqlite/transcript
7
7
  import { init_sqlite } from "../../../storage/sqlite/index.js";
8
8
  import { ActivityService } from "../../../activity/service.js";
9
9
  import "../../../activity/index.js";
10
+ import { CapabilityError } from "../../../capabilities/runtime/errors.js";
11
+ import "../../../capabilities/runtime/dispatcher.js";
10
12
  import { listKnowledgeItems, writeKnowledgeItem } from "../../../knowledge-memory/repository.js";
11
13
  import "../../../knowledge-memory/index.js";
12
14
  import { resolveEffectiveAgentProfile } from "../../../config/agent-profile.js";
13
15
  import { TaskReadModelProjector } from "../../../tasks/task-read-model-projector.js";
14
- import { CapabilityError } from "../../../capabilities/runtime/errors.js";
15
- import "../../../capabilities/runtime/dispatcher.js";
16
16
  import { ProjectWorkspaceConflictError, ProjectWorkspaceMissingError } from "../../../projects/workspace-project.js";
17
17
  import { inferProjectExecutionMode, inferProjectKind } from "../../../projects/project-kind.js";
18
18
  import { ProjectDeletionBlockedError, ProjectWorkspaceInUseError } from "../../../projects/project-service.js";
@@ -5,9 +5,9 @@ import { endpointContextSchema } from "../../../../packages/gateway-contract/src
5
5
  import { parseUserTurnDocument, userTurnDocumentRefIds } from "../../../../packages/gateway-contract/src/user-turn-document.js";
6
6
  import { init_src } from "../../../../packages/gateway-contract/src/index.js";
7
7
  import { endpointTurnClaimSchema, init_src as init_src$1 } from "../../../../packages/endpoint-tools-protocol/src/index.js";
8
- import { init_providers, resolveModel } from "../../../providers/index.js";
9
8
  import { CapabilityError } from "../../../capabilities/runtime/errors.js";
10
9
  import "../../../capabilities/runtime/dispatcher.js";
10
+ import { init_providers, resolveModel } from "../../../providers/index.js";
11
11
  import { getModelThinking } from "../../../providers/model-thinking.js";
12
12
  import { parseTurnContextRefs } from "../../../agent/source-context/types.js";
13
13
  import { validateWebchatAttachments, validateWebchatContent } from "../../chat-limits.js";
@@ -6,9 +6,9 @@ import { hasGatewayScope, init_gateway_scopes } from "../../security/gateway-sco
6
6
  import { enqueueTaskChangedEvent, init_task_change_events } from "../../../tasks/task-change-events.js";
7
7
  import { TaskRepository, init_task_repository } from "../../../tasks/task-repository.js";
8
8
  import { TaskRunRepository, init_task_run_repository } from "../../../tasks/task-run-repository.js";
9
- import { TaskConversationRepository } from "../../../tasks/task-conversation-repository.js";
10
9
  import { CapabilityError } from "../../../capabilities/runtime/errors.js";
11
10
  import "../../../capabilities/runtime/dispatcher.js";
11
+ import { TaskConversationRepository } from "../../../tasks/task-conversation-repository.js";
12
12
  import { TaskCollaborationRepository } from "../../../tasks/task-collaboration-repository.js";
13
13
  import { TaskCriterionReviewRepository } from "../../../tasks/task-criterion-review-repository.js";
14
14
  import { TaskContextMutationOutputSchema } from "../../../tasks/capabilities/relations.js";
@@ -1,11 +1,11 @@
1
1
  import { normalizeAgentId } from "../agent-catalog/id.js";
2
2
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
3
3
  import { init_agent_scope } from "../agent/agent-scope.js";
4
+ import { AgentCatalogService } from "../agent-catalog/service.js";
4
5
  import { resolveEffectiveAgentConfigForAgent } from "../config/agent-profile.js";
5
6
  import { ConfigSchema, init_schema } from "../config/schema.js";
6
7
  import { fetchWithTimeoutGuarded } from "../media-shared/http/provider-http.js";
7
8
  import "../media-shared/http/index.js";
8
- import { AgentCatalogService } from "../agent-catalog/service.js";
9
9
  import { getImageGenerationProvider, listImageGenerationProvidersSummary } from "../agent/image/generation/provider-registry.js";
10
10
  //#region src/gateway/image-generation-setup.ts
11
11
  init_repository();
@@ -1,8 +1,8 @@
1
1
  import path from "node:path";
2
2
  import fs from "node:fs";
3
3
  import { createHash } from "node:crypto";
4
- import net from "node:net";
5
4
  import fs$1 from "node:fs/promises";
5
+ import net from "node:net";
6
6
  import { homedir } from "os";
7
7
  //#region src/gateway/lock.ts
8
8
  /**
@@ -20,13 +20,13 @@ import { getSessionMetadata } from "../storage/sqlite/session-read-repository.js
20
20
  import { init_session_repository, listSessionMetadata, patchSessionMetadata } from "../storage/sqlite/session-repository.js";
21
21
  import { getSessionConfig, init_config_repository } from "../storage/sqlite/config-repository.js";
22
22
  import { init_sqlite } from "../storage/sqlite/index.js";
23
+ import { normalizeAgentId } from "../agent-catalog/id.js";
24
+ import { init_agent_scope, listAgentEntries, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
23
25
  import { listKnowledgeItems } from "../knowledge-memory/repository.js";
24
26
  import { init_config, resolveKnowledgeReadPolicy } from "../user-context/config.js";
25
27
  import { init_agent_session_key, resolveAgentMainConversationId } from "../routing/agent-session-key.js";
26
28
  import { init_session_key, resolveConversationId, sanitizeSegment } from "../routing/session-key.js";
27
29
  import "../knowledge-memory/index.js";
28
- import { normalizeAgentId } from "../agent-catalog/id.js";
29
- import { init_agent_scope, listAgentEntries, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
30
30
  import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
31
31
  import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
32
32
  import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
@@ -84,8 +84,6 @@ import { bootstrapApplicationStateSync } from "../bootstrap/application-state.js
84
84
  import { setPairingBroadcastSink } from "../channels/pairing/pairing-events.js";
85
85
  import { registerClarificationChannelRuntime } from "./clarify-runtime.js";
86
86
  import { ChannelManager } from "../channels/manager.js";
87
- import { ChatPreviewService } from "../chat-previews/service.js";
88
- import "../chat-previews/index.js";
89
87
  import { configureGatewayHttpProxy } from "../infra/http-proxy-env.js";
90
88
  import "../config/index.js";
91
89
  import { ManagedComposioEventPoller } from "../connectors/composio-managed-events.js";
@@ -103,6 +101,10 @@ import { DiscussionSealer } from "../discussions/sealer.js";
103
101
  import "../discussions/index.js";
104
102
  import { EndpointToolRuntime } from "../endpoint-tools/runtime.js";
105
103
  import "../endpoint-tools/index.js";
104
+ import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
105
+ import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
106
+ import { HomeIntelligenceHost } from "../home-intelligence/host.js";
107
+ import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
106
108
  import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
107
109
  import { prepareAutomationAgentSession } from "./automation-agent-session.js";
108
110
  import { stopTailscaleExposure } from "./tailscale-lifecycle.js";
@@ -136,6 +138,8 @@ import { getXopcCloudCatalogCoordinator } from "../providers/xopc-cloud-catalog-
136
138
  import { ModelCatalogSyncService } from "../providers/model-catalog-sync-service.js";
137
139
  import { NotificationService } from "../notifications/service.js";
138
140
  import "../local-apps/index.js";
141
+ import { ChatPreviewService } from "../chat-previews/service.js";
142
+ import "../chat-previews/index.js";
139
143
  import { TaskAllocationDispatcher } from "../tasks/task-allocation-service.js";
140
144
  import { TaskResultDeliveryService } from "../tasks/task-result-delivery-service.js";
141
145
  import { createRuntimeBrowserAutomationService } from "../browser/automations/runtime-service.js";
@@ -163,10 +167,6 @@ import { TaskMainUpdateDecisionService } from "../tasks/task-main-update-decisio
163
167
  import { selectTaskMainUpdateAttempt, submitAndConfirmTaskMainUpdate } from "../tasks/task-main-update-input.js";
164
168
  import { checkAppContextAccess, prepareAppContext } from "./service/app-context-access.js";
165
169
  import { applyAutomaticVoiceLanguage, inferProductLanguageFromEnvironment, initializeVoiceDefaults } from "../voice/language-profile.js";
166
- import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
167
- import { HomeIntelligenceHost } from "../home-intelligence/host.js";
168
- import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
169
- import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
170
170
  import crypto from "node:crypto";
171
171
  //#region src/gateway/service.ts
172
172
  init_session_repository();
@@ -1,13 +1,13 @@
1
1
  import "../agent-config/schema.js";
2
2
  import { init_agent_config } from "../agent-config/index.js";
3
3
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
4
+ import { AgentCatalogService } from "../agent-catalog/service.js";
4
5
  import { ConfigSchema, init_schema } from "../config/schema.js";
5
6
  import { init_model_policy, isComputerModel, isDedicatedComputerProfile } from "../computer/model-policy.js";
6
7
  import { voiceSupportsMode } from "../../packages/realtime-protocol/src/voice-catalog.js";
7
8
  import { init_voice } from "../../packages/realtime-protocol/src/voice.js";
8
9
  import { getModelCatalogStore, init_model_catalog_store } from "../providers/model-catalog-store.js";
9
10
  import { compareCatalogModels } from "../providers/model-catalog-ranking.js";
10
- import { AgentCatalogService } from "../agent-catalog/service.js";
11
11
  import { prepareUpdateGlobalDefaults } from "./global-defaults-admin.js";
12
12
  //#region src/gateway/xopc-cloud-capability-setup.ts
13
13
  init_voice();
@@ -1,10 +1,10 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
- import { HomeAdviceBudgetExceededError, isHomeProseLocalized } from "./generator.js";
4
3
  import { homePatternKey } from "./strategy.js";
5
- import { HomeAdvicePolicy } from "./policy.js";
6
4
  import { HomeIntelligenceRepository } from "./repository.js";
7
5
  import { HomeOpportunityApplicationService } from "./application-service.js";
6
+ import { HomeAdvicePolicy } from "./policy.js";
7
+ import { HomeAdviceBudgetExceededError, isHomeProseLocalized } from "./generator.js";
8
8
  import { buildHomeOpportunityNotification } from "./notification.js";
9
9
  import { createHash } from "node:crypto";
10
10
  //#region src/home-intelligence/host.ts
@@ -5,10 +5,10 @@ import { currentOperationId, init_operation_context } from "../infra/operation-c
5
5
  import { afterSqliteCommit, init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
6
6
  import { ExtensionCapabilityBindingsSchema, extensionCapabilityPermissions } from "../../packages/gateway-contract/src/extension-capabilities.js";
7
7
  import { init_src } from "../../packages/gateway-contract/src/index.js";
8
+ import { CapabilityError } from "../capabilities/runtime/errors.js";
8
9
  import { init_paths, resolveExtensionsDir } from "../config/paths.js";
9
10
  import { slugifyProjectName } from "../projects/project-store.js";
10
11
  import { LocalAppStore } from "./store.js";
11
- import { CapabilityError } from "../capabilities/runtime/errors.js";
12
12
  import { DomainOutboxDispatcher } from "../infra/domain-outbox-dispatcher.js";
13
13
  import { validateLocalAppCapabilityContracts } from "./capabilities/contracts.js";
14
14
  import { buildLocalAppFixGuidance } from "./fix-guidance.js";
@@ -5,8 +5,8 @@ import { PersonalProactiveMessageSchema } from "../../../packages/gateway-contra
5
5
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
6
6
  import { init_session_instance_repository, readCurrentTranscriptId } from "../../storage/sqlite/session-instance-repository.js";
7
7
  import { appendTranscriptEntry, init_transcript_repository } from "../../storage/sqlite/transcript-repository.js";
8
- import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
9
8
  import { AgentCatalogRepository, init_repository } from "../../agent-catalog/repository.js";
9
+ import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
10
10
  import { init_providers, resolveModel } from "../../providers/index.js";
11
11
  import { completeWithResolvedCredentials } from "../../providers/model-call.js";
12
12
  import { extractAssistantText, getAssistantMessageErrorReason, stripCodeFences } from "../../providers/model-response.js";
@@ -1,16 +1,16 @@
1
1
  import { getSessionMetadata } from "../storage/sqlite/session-read-repository.js";
2
2
  import { init_session_repository, patchSessionMetadata } from "../storage/sqlite/session-repository.js";
3
3
  import { init_config_repository, setSessionConfig } from "../storage/sqlite/config-repository.js";
4
- import { createConversation, init_conversation_repository } from "../storage/sqlite/conversation-repository.js";
5
4
  import { ResponsePreferencesSchema } from "../agent-config/schema.js";
6
5
  import { init_agent_config } from "../agent-config/index.js";
7
6
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
7
+ import { AgentCatalogService } from "../agent-catalog/service.js";
8
+ import { createConversation, init_conversation_repository } from "../storage/sqlite/conversation-repository.js";
8
9
  import { getAvailableModels, init_providers } from "../providers/index.js";
9
10
  import { DEFAULT_PERSONAL_PREFERENCES, getPersonalAgent, personalAgentId } from "./repository.js";
10
11
  import { PERSONAL_MAIN_TOOL_IDS, PERSONAL_READ_TOOL_ALIASES } from "./policy.js";
11
12
  import { getModelThinking } from "../providers/model-thinking.js";
12
13
  import { personalInstructions, upgradePersonalInstructions } from "./prompts.js";
13
- import { AgentCatalogService } from "../agent-catalog/service.js";
14
14
  import { completePersonalOnboarding } from "./onboarding.js";
15
15
  import { z } from "zod";
16
16
  //#region src/personal-agent/service.ts
@@ -1,7 +1,7 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
2
  import { init_paths_state, resolveXopcCloudCatalogCachePath } from "../config/paths-state.js";
3
- import { ComputerProfileSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
4
3
  import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
4
+ import { ComputerProfileSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
5
5
  import { ImageGenerationCapabilitiesSchema, init_models_json } from "../config/models-json.js";
6
6
  import { voiceManifestSchema } from "../../packages/realtime-protocol/src/voice-catalog.js";
7
7
  import { init_voice } from "../../packages/realtime-protocol/src/voice.js";
@@ -1,9 +1,9 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
2
3
  import { init_account_id, normalizeAccountId } from "./account-id.js";
3
4
  import { getConversationRouting } from "../storage/sqlite/conversation-repository.js";
4
5
  import { init_agent_session_key, resolveAgentPeerConversationId } from "./agent-session-key.js";
5
6
  import { init_session_key, resolveConversationId } from "./session-key.js";
6
- import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
7
7
  import { init_bindings, parseBindingRules, resolveRoute as resolveRoute$1 } from "./bindings.js";
8
8
  //#region src/routing/resolve-route.ts
9
9
  /**
@@ -1,8 +1,8 @@
1
1
  import { validateConversationId } from "../../packages/gateway-contract/src/conversation-identity.js";
2
2
  import { init_src } from "../../packages/gateway-contract/src/index.js";
3
- import { init_agent_session_key, normalizeAgentId } from "./agent-session-key.js";
4
3
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
5
4
  import { init_agent_scope, listAgentEntries, resolveAgentIdByWorkspacePath, resolveDefaultAgentId } from "../agent/agent-scope.js";
5
+ import { init_agent_session_key, normalizeAgentId } from "./agent-session-key.js";
6
6
  import { randomUUID } from "node:crypto";
7
7
  //#region src/routing/resolve-tui-session-key.ts
8
8
  init_src();
@@ -2,10 +2,10 @@ import { ProductReadContracts } from "../../../packages/gateway-contract/src/cap
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { TaskRepository, init_task_repository } from "../task-repository.js";
4
4
  import { TaskRunRepository, init_task_run_repository } from "../task-run-repository.js";
5
- import { TaskReadModelProjector } from "../task-read-model-projector.js";
6
- import { TaskConversationRepository } from "../task-conversation-repository.js";
7
5
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
8
6
  import { defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
7
+ import { TaskReadModelProjector } from "../task-read-model-projector.js";
8
+ import { TaskConversationRepository } from "../task-conversation-repository.js";
9
9
  import { TaskContextRepository } from "../task-context-repository.js";
10
10
  import { TaskDependencyService } from "../task-dependency-service.js";
11
11
  import { TaskCriterionReviewRepository } from "../task-criterion-review-repository.js";
@@ -2,9 +2,9 @@ import { TaskCommandRequestSchema, TaskCreateRequestSchema, TaskDetailResponseSc
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { TaskRepository, init_task_repository } from "../task-repository.js";
4
4
  import { TaskRunRepository, init_task_run_repository } from "../task-run-repository.js";
5
- import { resolveTaskLocale } from "../task-language.js";
6
5
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
7
6
  import { defineAtomicCapability } from "../../capabilities/runtime/dispatcher.js";
7
+ import { resolveTaskLocale } from "../task-language.js";
8
8
  import { resolveProjectAgentId } from "../../projects/project-agent.js";
9
9
  import { resolveResponseLanguageForSession } from "../../agent/prompt/response-language.js";
10
10
  import { TaskApplicationService } from "../task-application-service.js";
@@ -2,9 +2,9 @@ import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
3
  import { TaskRepository, init_task_repository } from "./task-repository.js";
4
4
  import { TaskRunRepository, init_task_run_repository } from "./task-run-repository.js";
5
- import { init_session_key, resolveConversationId, sanitizeSegment } from "../routing/session-key.js";
6
5
  import { normalizeAgentId } from "../agent-catalog/id.js";
7
6
  import { init_agent_scope, listAgentEntries } from "../agent/agent-scope.js";
7
+ import { init_session_key, resolveConversationId, sanitizeSegment } from "../routing/session-key.js";
8
8
  import { TaskConversationRepository } from "./task-conversation-repository.js";
9
9
  import { TaskContextRepository } from "./task-context-repository.js";
10
10
  //#region src/tasks/task-handoff-service.ts
@@ -8,9 +8,10 @@ import { cancelQueuedSessionInput, claimNextSessionInput, finishSessionInputRun,
8
8
  import { appendComposerInputHistory, listComposerInputHistory } from "../../storage/sqlite/composer-input-history-repository.js";
9
9
  import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
10
10
  import { init_sqlite } from "../../storage/sqlite/index.js";
11
- import { init_agent_session_key, resolveAgentIdFromConversationId } from "../../routing/agent-session-key.js";
12
11
  import { normalizeAgentId } from "../../agent-catalog/id.js";
13
12
  import { init_agent_scope, listAgentEntries } from "../../agent/agent-scope.js";
13
+ import { AgentCatalogService } from "../../agent-catalog/service.js";
14
+ import { init_agent_session_key, resolveAgentIdFromConversationId } from "../../routing/agent-session-key.js";
14
15
  import { resolveEffectiveAgentProfile } from "../../config/agent-profile.js";
15
16
  import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
16
17
  import { init_paths } from "../../config/paths.js";
@@ -23,7 +24,6 @@ import { buildSessionTimeline } from "../../session/transcript-outline.js";
23
24
  import { transcriptRowsToClientHistory } from "../../session/client-history.js";
24
25
  import { createCreateShareTool, isShareToolAvailable } from "../../agent/tools/create-share-tool.js";
25
26
  import { evictEmbeddedSessionRunner } from "../../agent/embedded/session-runner.js";
26
- import { AgentCatalogService } from "../../agent-catalog/service.js";
27
27
  import { SessionIndex } from "../../session/manager.js";
28
28
  import "../../session/index.js";
29
29
  import { parseModelRef } from "../../agent/models/selection.js";
@@ -1,6 +1,6 @@
1
1
  import { init_agent_scope, resolveAgentProfileDir } from "../../agent/agent-scope.js";
2
- import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
3
2
  import { DEFAULT_SOUL_FILENAME } from "../../agent/context/workspace.js";
3
+ import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
4
4
  import { loadProfileBootstrapFiles } from "../../agent/bootstrap/load-bootstrap-files.js";
5
5
  import { join } from "node:path";
6
6
  import { statSync } from "node:fs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.398",
3
+ "version": "0.0.400",
4
4
  "description": "Local-first personal AI with Ada, task delegation, files, projects, workflows, and automations. Use cloud or local models.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -168,13 +168,13 @@
168
168
  "vitest": "4.1.5",
169
169
  "vue": "^3.5.35",
170
170
  "xlsx": "file:web/vendor/xlsx-0.20.3.tgz",
171
- "@xopcai/browser-control-contract": "0.1.0",
172
171
  "@xopcai/computer-control-contract": "0.1.0",
173
172
  "@xopcai/endpoint-tools-protocol": "0.0.0",
173
+ "@xopcai/browser-control-contract": "0.1.0",
174
+ "@xopcai/image-providers": "0.1.0",
174
175
  "@xopcai/gateway-contract": "0.0.0",
175
176
  "@xopcai/endpoint-tools-client": "0.0.0",
176
177
  "@xopcai/realtime-client": "0.0.0",
177
- "@xopcai/image-providers": "0.1.0",
178
178
  "@xopcai/realtime-protocol": "0.0.0"
179
179
  },
180
180
  "scripts": {
@@ -1 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{d as i,f as a,g as o,t as s}from"./chunk-KS7C4IRE-B2HK1psj.js";import{t as c}from"./ellipsis-0k4rZLoy.js";import{t as l}from"./external-link-DjqjBmc3.js";import{t as u}from"./markdown-view-B58RypQ4.js";import{t as d}from"./plus-Q2yW6OE7.js";import{t as f}from"./x-B_N4OPjy.js";import{t as p}from"./messages-DBvKzlCl.js";import{t as m}from"./cn-0WouolD0.js";import{c as h,i as g,n as _,r as v}from"./locale-store-Jnhw2WMv.js";import{a as y,i as b,o as x,r as S,s as C,t as w}from"./dist-BGTk37IG.js";import{a as T,i as E}from"./vendor-swr-BIWyz7Rc.js";import{o as D}from"./gateway-realtime-dE0XrVAT.js";import{$l as O,Al as k,Bo as A,Df as ee,Du as j,Go as M,Gu as N,Ho as P,Ic as F,Rc as I,Vo as L,Wc as R,Zl as te,ar as z,er as ne,gf as B,is as V,jl as re,jo as H,no as U,nr as W,of as G,rr as K,tr as q,zo as J}from"./index-DvKDT-RQ.js";import{t as Y}from"./capability-links--dcwUjgv.js";import{n as X,t as Z}from"./capability-header-actions-Cu-ATcJq.js";import{t as ie}from"./capability-icon-DVoZxEgW.js";import{n as ae,t as oe}from"./plugin-presentation-BrQpVvjC.js";var se=n(),ce=`grid grid-cols-[repeat(auto-fill,minmax(min(100%,18rem),1fr))] items-start gap-4`,le=`relative min-w-0 rounded-xl border border-edge bg-surface-panel p-4 transition-colors hover:border-edge-strong hover:bg-surface-hover/30`,ue=`absolute inset-0 cursor-pointer rounded-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent`,Q=e(t(),1);function de(e){return e===`builtin`||e===`user`?e:`marketplace`}async function fe(e=``){let t=await g(v(`/api/marketplace${e.trim()?`?q=${encodeURIComponent(e.trim())}`:``}`),{cache:`no-store`});if(!t.ok)throw Error(await pe(t));let n=await t.json();if(!n.ok||!Array.isArray(n.extensions))throw Error(n.error??`Invalid response`);return n.extensions}async function pe(e){try{let t=await e.json();if(typeof t.error==`string`)return t.error;if(t.error&&typeof t.error==`object`&&typeof t.error.message==`string`)return t.error.message;if(typeof t.message==`string`)return t.message}catch{}return e.statusText||`HTTP ${e.status}`}async function me(e){let t=await g(v(`/api/marketplace/packages/${encodeURIComponent(e.trim())}`),{cache:`no-store`});if(!t.ok)throw Error(await pe(t));let n=await t.json();if(!n.ok||!n.payload?.id)throw Error(n.error??`Invalid response`);return n.payload}async function he(e){let t=await g(v(`/api/marketplace/install`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(await pe(t));let n=await t.json();if(!n.ok||!n.payload?.extensionId)throw Error(n.error??`Invalid response`);return n.payload}async function ge(e){let t=await g(v(`/api/extensions/${encodeURIComponent(e.extensionId.trim())}/activation`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:e.enabled})});if(!t.ok)throw Error(await pe(t));let n=await t.json();if(!n.ok||!n.payload)throw Error(n.error?.message??`Invalid response`);return n.payload}async function _e(e){let t=await g(v(`/api/marketplace/uninstall`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({extensionId:e})});if(!t.ok)throw Error(await pe(t));let n=await t.json();if(!n.ok||!n.payload)throw Error(n.error??`Invalid response`);return n.payload}var $=r();function ve(e,t){let n=e.find(e=>e.id===t||e.pluginId===t||e.provenance?.packageName===t);return n?n.source===`bundled`?`bundled`:`user`:`absent`}var ye={debounced:``,detailPkg:null,quickInstallPkg:null,rowBusy:null,actionError:null,restartHint:null};function be({className:e,query:t}){let n=a(),r=i(),o=_(e=>e.language),s=p(o).extensionsPage,c=h(e=>!!e.conversationId),l=J(),{mutate:u}=T(),[d,f]=(0,Q.useReducer)(U,ye),{debounced:g,detailPkg:v,quickInstallPkg:y,rowBusy:b,actionError:x,restartHint:S}=d,C=c?`marketplace-${g}`:null;(0,Q.useEffect)(()=>{let e=window.setTimeout(()=>f({type:`patch`,patch:{debounced:t.trim()}}),300);return()=>window.clearTimeout(e)},[t]);let{data:w,isLoading:O,error:k}=E(C,()=>fe(g),{revalidateOnFocus:!1}),A=(0,Q.useCallback)(()=>{u(`gateway-extensions-list`),D()},[u]),ee=(0,Q.useCallback)(async(e,t)=>{f({type:`patch`,patch:{actionError:null,restartHint:null,rowBusy:e}});try{let n=await he({name:e,overwrite:t});A(),n.requiresGatewayRestart&&f({type:`patch`,patch:{restartHint:s.marketplaceRestartHint}})}catch(e){throw f({type:`patch`,patch:{actionError:e instanceof Error?e.message:s.marketplaceInstallFailed}}),e}finally{f({type:`patch`,patch:{rowBusy:null}})}},[s.marketplaceInstallFailed,s.marketplaceRestartHint,A]),M=(0,Q.useCallback)(async e=>{f({type:`patch`,patch:{actionError:null,restartHint:null,rowBusy:e}});try{let t=await _e(e);A(),t.requiresGatewayRestart&&f({type:`patch`,patch:{restartHint:s.marketplaceRestartHint}})}catch(e){throw f({type:`patch`,patch:{actionError:e instanceof Error?e.message:s.marketplaceUninstallFailed}}),e}finally{f({type:`patch`,patch:{rowBusy:null}})}},[s.marketplaceRestartHint,s.marketplaceUninstallFailed,A]),P=w??[];return(0,$.jsxs)(`div`,{className:m(`flex flex-col gap-4`,e),children:[k?(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:k instanceof Error?k.message:s.marketplaceLoadFailed}):null,x?(0,$.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:x}):null,S?(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:S}):null,O&&!w?(0,$.jsx)(`ul`,{className:ce,"aria-label":s.marketplaceLoading,children:[0,1,2,3,4,5].map(e=>(0,$.jsxs)(`li`,{className:`rounded-xl border border-edge bg-surface-panel p-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,$.jsx)(I,{className:`size-10 shrink-0 rounded-xl`}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2`,children:[(0,$.jsx)(I,{className:`h-5 w-full`}),(0,$.jsx)(I,{className:`h-3 w-2/3`})]}),(0,$.jsx)(I,{className:`h-9 w-16 shrink-0 rounded-lg`})]}),(0,$.jsxs)(`div`,{className:`mt-4 space-y-2`,children:[(0,$.jsx)(I,{className:`h-4 w-full`}),(0,$.jsx)(I,{className:`h-4 w-full`}),(0,$.jsx)(I,{className:`h-4 w-2/3`})]})]},e))}):(0,$.jsx)(`ul`,{className:ce,children:P.length===0?(0,$.jsx)(`li`,{className:`col-span-full text-sm text-fg-muted`,children:s.marketplaceEmpty}):P.map(e=>{let t=ve(l,e.id),i=b===e.id,a=l.find(t=>t.pluginId===e.id||t.provenance?.packageName===e.id),c=e.localizations?.[o.startsWith(`zh`)?`zh-CN`:`en`],u=c?.displayName??e.name,d=c?.description??e.description;return(0,$.jsxs)(`li`,{className:le,children:[(0,$.jsx)(`button`,{type:`button`,"aria-label":`${u}, ${s.marketplaceDetailTitle}`,onClick:()=>a?.pluginId?n(Y(a.pluginId,`installed`,a.authorizationStatus===`required`,r.pathname+r.search)):f({type:`patch`,patch:{detailPkg:e.id}}),className:ue}),(0,$.jsxs)(`div`,{className:`pointer-events-none relative flex items-start gap-3`,children:[(0,$.jsx)(ie,{iconUrl:e.branding?.iconUrl,fallback:j}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start gap-1.5`,children:[(0,$.jsx)(`h3`,{className:`line-clamp-2 break-words font-semibold leading-snug text-fg`,title:u,children:u}),e.verified?(0,$.jsx)(G,{className:`mt-0.5 size-3.5 shrink-0 text-emerald-600 dark:text-emerald-400`,strokeWidth:1.75,"aria-label":`Verified`}):null]}),(0,$.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-fg-subtle`,children:[e.version?(0,$.jsxs)(`span`,{children:[`v`,e.version]}):null,t===`user`?(0,$.jsx)(`span`,{className:a?.authorizationStatus===`required`?`text-amber-700 dark:text-amber-400`:`text-fg-muted`,children:a?.authorizationStatus===`required`?o.startsWith(`zh`)?`需要授权`:`Authorization required`:s.marketplaceInstalled}):null]})]}),(0,$.jsx)(`div`,{role:`group`,className:`pointer-events-auto relative z-10 flex max-w-[45%] shrink-0 items-start`,children:t===`bundled`?(0,$.jsx)(`span`,{className:`rounded-md bg-surface-hover px-2 py-1 text-[11px] font-medium text-fg-muted`,children:s.marketplaceBuiltin}):t===`user`?(0,$.jsx)($.Fragment,{children:e.packageType===`plugin`?(0,$.jsx)(`button`,{type:`button`,onClick:()=>a?.pluginId?n(Y(a.pluginId,`installed`,a.authorizationStatus===`required`,r.pathname+r.search)):f({type:`patch`,patch:{detailPkg:e.id,quickInstallPkg:null}}),className:m(`inline-flex items-center justify-center rounded-lg border border-edge px-3 py-2 text-xs font-medium text-fg`,`transition-colors active:scale-[0.98] active:bg-surface-hover/80`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),children:a?.authorizationStatus===`required`?o.startsWith(`zh`)?`去授权`:`Connect account`:o.startsWith(`zh`)?`查看详情`:`View details`}):(0,$.jsxs)(`button`,{type:`button`,disabled:i,onClick:()=>{window.confirm(s.marketplaceUninstallConfirm)&&M(e.id).catch(()=>{})},className:m(`inline-flex items-center justify-center gap-1.5 rounded-lg border border-edge px-3 py-2 text-xs font-medium text-fg`,`transition-colors active:scale-[0.98] active:bg-surface-hover/80`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,`disabled:pointer-events-none disabled:opacity-50`),children:[i?(0,$.jsx)(N,{className:`size-3.5 animate-spin`,"aria-hidden":!0}):(0,$.jsx)(re,{className:`size-3.5`,strokeWidth:2,"aria-hidden":!0}),s.marketplaceUninstall]})}):(0,$.jsx)(`button`,{type:`button`,onClick:()=>f({type:`patch`,patch:e.packageType===`plugin`?{detailPkg:e.id,quickInstallPkg:e.id}:{detailPkg:e.id,quickInstallPkg:null}}),className:m(`inline-flex min-w-16 items-center justify-center rounded-lg border border-edge px-3 py-2 text-xs font-medium text-fg`,`transition-[transform,background-color] active:scale-[0.98]`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),children:e.packageType===`plugin`?o.startsWith(`zh`)?`安装`:`Install`:s.marketplaceReview})})]}),d?(0,$.jsx)(`p`,{className:`pointer-events-none relative mt-3 line-clamp-3 text-sm leading-relaxed text-fg-muted`,children:d}):null,(e.categories?.length??0)>0?(0,$.jsx)(`div`,{className:`pointer-events-none relative mt-3 flex flex-wrap gap-1.5`,children:e.categories?.map(e=>(0,$.jsx)(`span`,{className:`max-w-full truncate rounded-md border border-edge px-2 py-0.5 text-xs text-fg-muted`,children:e},e))}):null]},e.id)})}),v?(0,$.jsx)(xe,{packageName:v,autoInstall:y===v,copy:s,extensions:l,onClose:()=>f({type:`patch`,patch:{detailPkg:null,quickInstallPkg:null}}),onInstall:ee,onUninstall:M}):null]})}function xe(e){let t=(0,se.c)(98),{packageName:n,autoInstall:r,copy:i,extensions:a,onClose:o,onInstall:c,onUninstall:l}=e,[d,p]=(0,Q.useState)(!1),[g,_]=(0,Q.useState)(!1),v=h(Ee)?`ext-mp-detail-${n}`:null,b;t[0]===n?b=t[1]:(b=async()=>me(n),t[0]=n,t[1]=b);let T;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(T={revalidateOnFocus:!1},t[2]=T):T=t[2];let{data:D,error:O,isLoading:A}=E(v,b,T),j;t[3]!==a||t[4]!==n?(j=ve(a,n),t[3]=a,t[4]=n,t[5]=j):j=t[5];let M=j,P=M===`user`,F=D?.manifest?.permissions,L,R,z,ne,B,V,H,U,W,G,K,q;if(t[6]!==r||t[7]!==i||t[8]!==D||t[9]!==O||t[10]!==a||t[11]!==M||t[12]!==A||t[13]!==o||t[14]!==n||t[15]!==F||t[16]!==g){V=Symbol.for(`react.early_return_sentinel`);bb0:{let e=F&&typeof F==`object`&&!Array.isArray(F)?Object.entries(F):[],s;t[29]!==i||t[30]!==D?(s=D?.readme?.trim()||(D?.description?.trim()?`### ${D.name}\n\n${D.description}`:`*${i.marketplaceNoReadme}*`),t[29]=i,t[30]=D,t[31]=s):s=t[31];let c=s;if(D?.format===`agent-plugin`){let e;if(t[32]!==D||t[33]!==a||t[34]!==n){let r;t[36]!==D||t[37]!==n?(r=e=>e.provenance?.packageName===n||e.pluginId===D.manifest?.name,t[36]=D,t[37]=n,t[38]=r):r=t[38],e=a.find(r),t[32]=D,t[33]=a,t[34]=n,t[35]=e}else e=t[35];let i=`store:${n}`,s;t[39]!==r||t[40]!==D||t[41]!==o||t[42]!==e||t[43]!==i?(s=(0,$.jsx)(ae,{extension:e,initialSource:i,marketplace:D,autoInstall:r,onClose:o}),t[39]=r,t[40]=D,t[41]=o,t[42]=e,t[43]=i,t[44]=s):s=t[44],V=s;break bb0}z=w,ne=!0,t[45]===o?B=t[46]:(B=e=>!e&&o(),t[45]=o,t[46]=B),R=x,t[47]===Symbol.for(`react.memo_cache_sentinel`)?(q=(0,$.jsx)(y,{className:`xopc-dialog-overlay fixed inset-0 z-[130] bg-scrim`}),t[47]=q):q=t[47],L=S,W=`xopc-dialog-content fixed left-1/2 top-1/2 z-[131] flex h-[min(44rem,calc(100vh-1.5rem))] w-[min(42rem,calc(100vw-1.5rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-xl border border-edge bg-surface-overlay`,G=Te;let l;t[48]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(ee,{className:`size-5`}),t[48]=l):l=t[48];let d;t[49]!==i.detailBack||t[50]!==o?(d=(0,$.jsx)(`button`,{type:`button`,onClick:o,className:`inline-flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,"aria-label":i.detailBack,children:l}),t[49]=i.detailBack,t[50]=o,t[51]=d):d=t[51];let p;t[52]===i.marketplaceDetailTitle?p=t[53]:(p=(0,$.jsx)(C,{className:`min-w-0 flex-1 truncate text-center text-sm font-semibold text-fg`,children:i.marketplaceDetailTitle}),t[52]=i.marketplaceDetailTitle,t[53]=p);let m;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,$.jsx)(f,{className:`size-5`}),t[54]=m):m=t[54];let h;t[55]!==i.detailClose||t[56]!==o?(h=(0,$.jsx)(`button`,{type:`button`,onClick:o,className:`inline-flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,"aria-label":i.detailClose,children:m}),t[55]=i.detailClose,t[56]=o,t[57]=h):h=t[57],t[58]!==d||t[59]!==p||t[60]!==h?(K=(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3`,children:[d,p,h]}),t[58]=d,t[59]=p,t[60]=h,t[61]=K):K=t[61],H=`min-h-0 flex-1 overflow-y-auto p-5`,U=A&&!D?(0,$.jsxs)(`div`,{className:`space-y-4`,"aria-label":i.marketplaceLoading,children:[(0,$.jsx)(I,{className:`h-6 w-48`}),(0,$.jsx)(I,{className:`h-4 w-28`}),(0,$.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,$.jsx)(I,{className:`h-12`}),(0,$.jsx)(I,{className:`h-12`})]}),(0,$.jsx)(I,{className:`h-28 w-full`}),(0,$.jsx)(I,{className:`h-36 w-full`})]}):O?(0,$.jsxs)(`div`,{className:`rounded-lg border border-red-300/70 bg-red-50 p-4 text-sm dark:border-red-900 dark:bg-red-950/30`,children:[(0,$.jsx)(`p`,{className:`font-medium text-red-700 dark:text-red-300`,children:i.marketplaceDetailLoadFailed}),(0,$.jsx)(`p`,{className:`mt-1 break-words text-red-600 dark:text-red-400`,children:O instanceof Error?O.message:i.marketplaceLoadFailed})]}):D?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`h3`,{className:`text-lg font-semibold text-fg`,children:D.name}),(0,$.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:(0,$.jsx)(`code`,{className:`rounded bg-surface-panel px-1 py-0.5`,children:D.id})}),(0,$.jsxs)(`dl`,{className:`mt-3 grid gap-2 text-xs text-fg-muted sm:grid-cols-2`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg`,children:i.marketplaceAuthor}),(0,$.jsx)(`dd`,{children:D.author.username})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg`,children:i.marketplaceVersion}),(0,$.jsx)(`dd`,{children:D.latestVersion.version})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg`,children:i.marketplaceDownloads}),(0,$.jsx)(`dd`,{children:D.downloads})]})]}),M===`bundled`?null:(0,$.jsxs)(`section`,{className:`mt-5 space-y-3 rounded-lg border border-edge bg-surface-base p-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-start gap-2.5`,children:[D.installability.available?(0,$.jsx)(te,{className:`mt-0.5 size-5 shrink-0 text-emerald-600 dark:text-emerald-400`,"aria-hidden":!0}):(0,$.jsx)(k,{className:`mt-0.5 size-5 shrink-0 text-amber-600 dark:text-amber-400`,"aria-hidden":!0}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h4`,{className:`text-sm font-semibold text-fg`,children:D.installability.available?i.marketplaceRiskTitle:i.marketplaceUnavailableTitle}),(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-relaxed text-fg-muted`,children:D.installability.available?i.marketplaceCodeRisk:D.installability.reason??i.marketplaceUnavailableBody})]})]}),D.installability.available?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`dl`,{className:`grid gap-2 text-xs text-fg-muted sm:grid-cols-2`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg`,children:i.marketplaceIntegrity}),(0,$.jsx)(`dd`,{children:i.marketplaceIntegrityVerified})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg`,children:i.marketplaceDependencies}),(0,$.jsx)(`dd`,{children:D.packageSummary?.dependencyCount??0})]})]}),(0,$.jsxs)(`div`,{className:`text-xs text-fg-muted`,children:[(0,$.jsx)(`p`,{className:`font-medium text-fg`,children:i.marketplacePermissions}),e.length>0?(0,$.jsx)(`ul`,{className:`mt-1 space-y-1`,children:e.map(we)}):(0,$.jsx)(`p`,{className:`mt-1`,children:i.marketplacePermissionsNone})]}),(D.packageSummary?.lifecycleScripts.length??0)>0?(0,$.jsxs)(`p`,{className:`text-xs leading-relaxed text-amber-700 dark:text-amber-300`,children:[i.marketplaceLifecycleScripts,`: `,D.packageSummary?.lifecycleScripts.join(`, `)]}):null,(0,$.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 text-sm text-fg`,children:[(0,$.jsx)(`input`,{type:`checkbox`,checked:g,onChange:e=>_(e.target.checked),className:`mt-0.5 size-4 rounded border-edge accent-[var(--color-accent)]`}),(0,$.jsx)(`span`,{children:i.marketplaceRiskConfirm})]})]}):null]}),D.readme?.trim()?(0,$.jsx)(`h4`,{className:`mb-2 mt-6 text-sm font-semibold text-fg`,children:i.marketplaceDetailReadmeHeading}):null,(0,$.jsx)(`div`,{className:`markdown-content min-w-0 break-words text-sm`,children:(0,$.jsx)(u,{content:c})})]}):null}t[6]=r,t[7]=i,t[8]=D,t[9]=O,t[10]=a,t[11]=M,t[12]=A,t[13]=o,t[14]=n,t[15]=F,t[16]=g,t[17]=L,t[18]=R,t[19]=z,t[20]=ne,t[21]=B,t[22]=V,t[23]=H,t[24]=U,t[25]=W,t[26]=G,t[27]=K,t[28]=q}else L=t[17],R=t[18],z=t[19],ne=t[20],B=t[21],V=t[22],H=t[23],U=t[24],W=t[25],G=t[26],K=t[27],q=t[28];if(V!==Symbol.for(`react.early_return_sentinel`))return V;let J;t[62]!==H||t[63]!==U?(J=(0,$.jsx)(`div`,{className:H,children:U}),t[62]=H,t[63]=U,t[64]=J):J=t[64];let Y;t[65]!==d||t[66]!==i.marketplaceBuiltinGoBuiltin||t[67]!==i.marketplaceBuiltinManageHint||t[68]!==i.marketplaceInstall||t[69]!==i.marketplaceReinstall||t[70]!==i.marketplaceReinstallConfirm||t[71]!==i.marketplaceUninstall||t[72]!==i.marketplaceUninstallConfirm||t[73]!==D||t[74]!==M||t[75]!==o||t[76]!==c||t[77]!==l||t[78]!==n||t[79]!==g||t[80]!==P?(Y=D?(0,$.jsx)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-edge-subtle px-5 py-4`,children:M===`bundled`?(0,$.jsxs)(`div`,{className:`flex w-full flex-col items-stretch gap-2`,children:[(0,$.jsx)(`p`,{className:`text-sm leading-relaxed text-fg-muted`,children:i.marketplaceBuiltinManageHint}),(0,$.jsx)(s,{to:`/capabilities/extensions?tab=builtin`,onClick:o,className:`inline-flex w-fit items-center justify-center rounded-lg border border-edge px-3 py-2 text-sm font-medium text-fg hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:i.marketplaceBuiltinGoBuiltin})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`button`,{type:`button`,disabled:d||!D.installability.available||!g,onClick:()=>{P&&!window.confirm(i.marketplaceReinstallConfirm)||(p(!0),c(n,P).catch(Ce).finally(()=>p(!1)))},className:m(`inline-flex items-center justify-center gap-1.5 rounded-lg px-3 py-2 text-sm font-medium`,`bg-accent text-on-accent shadow-surface hover:bg-accent-hover`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel`,`disabled:pointer-events-none disabled:opacity-50`),children:[d?(0,$.jsx)(N,{className:`size-4 animate-spin`,"aria-hidden":!0}):null,P?i.marketplaceReinstall:i.marketplaceInstall]}),P?(0,$.jsxs)(`button`,{type:`button`,disabled:d,onClick:()=>{window.confirm(i.marketplaceUninstallConfirm)&&(p(!0),l(n).then(()=>o()).catch(Se).finally(()=>p(!1)))},className:m(`inline-flex items-center justify-center gap-1.5 rounded-lg border border-edge px-3 py-2 text-sm font-medium text-fg`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,`disabled:pointer-events-none disabled:opacity-50`),children:[(0,$.jsx)(re,{className:`size-4 shrink-0`,"aria-hidden":!0}),i.marketplaceUninstall]}):null]})}):null,t[65]=d,t[66]=i.marketplaceBuiltinGoBuiltin,t[67]=i.marketplaceBuiltinManageHint,t[68]=i.marketplaceInstall,t[69]=i.marketplaceReinstall,t[70]=i.marketplaceReinstallConfirm,t[71]=i.marketplaceUninstall,t[72]=i.marketplaceUninstallConfirm,t[73]=D,t[74]=M,t[75]=o,t[76]=c,t[77]=l,t[78]=n,t[79]=g,t[80]=P,t[81]=Y):Y=t[81];let X;t[82]!==L||t[83]!==J||t[84]!==Y||t[85]!==W||t[86]!==G||t[87]!==K?(X=(0,$.jsxs)(L,{className:W,onOpenAutoFocus:G,children:[K,J,Y]}),t[82]=L,t[83]=J,t[84]=Y,t[85]=W,t[86]=G,t[87]=K,t[88]=X):X=t[88];let Z;t[89]!==R||t[90]!==X||t[91]!==q?(Z=(0,$.jsxs)(R,{children:[q,X]}),t[89]=R,t[90]=X,t[91]=q,t[92]=Z):Z=t[92];let ie;return t[93]!==z||t[94]!==ne||t[95]!==B||t[96]!==Z?(ie=(0,$.jsx)(z,{defaultOpen:ne,onOpenChange:B,children:Z}),t[93]=z,t[94]=ne,t[95]=B,t[96]=Z,t[97]=ie):ie=t[97],ie}function Se(){}function Ce(){}function we(e){let[t,n]=e;return(0,$.jsxs)(`li`,{className:`break-words`,children:[(0,$.jsx)(`code`,{children:t}),`: `,Array.isArray(n)?n.join(`, `):String(n)]},t)}function Te(e){return e.preventDefault()}function Ee(e){return!!e.conversationId}function De({embedded:e=!1,onHeaderActionChange:t}){let n=a(),r=i(),l=_(e=>e.language),u=p(l),f=M(e=>e.setPageHeader),h=M(e=>e.clearPageHeader),g=J(),v=A(),[y,b]=o(),x=de(y.get(`tab`)??(g.some(e=>e.source!==`bundled`)?`user`:null)),S=(0,Q.useRef)(!1),C=y.get(`q`)??``,[w,T]=(0,Q.useState)(x),[E,D]=(0,Q.useState)(C),[O,k]=(0,Q.useState)(null),[ee,j]=(0,Q.useState)(!1),N=y.toString(),P=(0,Q.useRef)(N);if(P.current!==N){P.current=N;let e=de(y.get(`tab`)),t=y.get(`q`)??``;T(t=>t===e?t:e),D(e=>e===t?e:t)}(0,Q.useEffect)(()=>{b(e=>{let t=new URLSearchParams(e),n=E.trim();return n?t.set(`q`,n):t.delete(`q`),w===`marketplace`?t.delete(`tab`):t.set(`tab`,w),t.toString()===e.toString()?e:t},{replace:!0})},[w,E,b]);let I=(0,Q.useMemo)(()=>g.filter(e=>e.source===`bundled`),[g]),L=(0,Q.useMemo)(()=>g.filter(e=>e.source!==`bundled`),[g]);(0,Q.useEffect)(()=>{v||S.current||(S.current=!0,!y.has(`tab`)&&L.length&&T(`user`))},[v,y,L.length]);let te=w===`builtin`?I:L,re=(0,Q.useMemo)(()=>{let e=E.trim().toLowerCase(),t=te;return e&&(t=t.filter(t=>(t.name??``).toLowerCase().includes(e)||t.id.toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e))),t.toSorted((e,t)=>e.hasUi===t.hasUi?(e.name||e.id).localeCompare(t.name||t.id,l):e.hasUi?-1:1)},[te,E,l]);(0,Q.useEffect)(()=>{k(e=>{if(!e)return e;let t=g.find(t=>t.id===e.id);return t?Oe(e)===Oe(t)&&e.active===t.active&&JSON.stringify(e)===JSON.stringify(t)?e:t:null})},[g]);let H=(0,Q.useMemo)(()=>({searchLabel:w===`marketplace`?u.extensionsPage.marketplaceSearchPlaceholder:u.extensionsPage.searchPlaceholder,search:(0,$.jsx)(X,{value:E,onChange:D,placeholder:w===`marketplace`?u.extensionsPage.marketplaceSearchPlaceholder:u.extensionsPage.searchPlaceholder}),overflow:(0,$.jsxs)(K,{children:[(0,$.jsx)(z,{asChild:!0,children:(0,$.jsx)(R,{variant:`secondary`,className:`size-9 shrink-0 p-0`,"aria-label":u.capabilitiesHub.moreActions,title:u.capabilitiesHub.moreActions,children:(0,$.jsx)(c,{className:`size-4`,"aria-hidden":!0})})}),(0,$.jsx)(W,{children:(0,$.jsxs)(ne,{align:`end`,sideOffset:6,className:`z-50 min-w-48 rounded-xl border border-edge bg-surface-overlay p-1 shadow-popover`,children:[(0,$.jsxs)(q,{className:m(`touch-target flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 text-sm text-fg outline-none data-[highlighted]:bg-surface-hover`,F.transition),onSelect:()=>j(!0),children:[(0,$.jsx)(d,{className:`size-4 text-fg-muted`,"aria-hidden":!0}),l.startsWith(`zh`)?`安装插件`:`Install plugin`]}),(0,$.jsx)(q,{asChild:!0,children:(0,$.jsxs)(s,{to:`/local-apps`,className:m(`touch-target flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 text-sm text-fg outline-none data-[highlighted]:bg-surface-hover`,F.transition),children:[(0,$.jsx)(B,{className:`size-4 text-fg-muted`,"aria-hidden":!0}),u.extensionsPage.openLocalApps]})})]})})]}),primary:(0,$.jsx)(R,{asChild:!0,variant:`primary`,className:`h-9 shrink-0`,children:(0,$.jsxs)(s,{to:`/local-apps/new`,"aria-label":u.extensionsPage.createLocalApp,children:[(0,$.jsx)(d,{className:`size-4`,"aria-hidden":!0}),(0,$.jsx)(`span`,{className:`hidden sm:inline`,children:u.extensionsPage.createLocalApp})]})})}),[l,u.capabilitiesHub.moreActions,u.extensionsPage,w,E]);(0,Q.useLayoutEffect)(()=>e?(t?.(H),()=>t?.(null)):(f({startExtra:null,main:(0,$.jsx)(`div`,{className:`min-w-0`,children:(0,$.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:u.extensionsPage.title})}),end:(0,$.jsx)(Z,{contribution:H})}),()=>h()),[h,e,H,u.extensionsPage.title,t,f]);let U=[{id:`marketplace`,label:u.extensionsPage.tabMarketplace},{id:`builtin`,label:u.extensionsPage.tabBuiltin,count:v?void 0:I.length},{id:`user`,label:u.extensionsPage.tabUser,count:v?void 0:L.length}];return(0,$.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-surface-panel`,children:[(0,$.jsxs)(`div`,{className:m(`mx-auto w-full max-w-7xl px-4 sm:px-6 lg:px-8`,`pb-7 pt-3 lg:pb-9 lg:pt-4`),children:[(0,$.jsx)(`div`,{className:`mb-6 border-b border-edge-subtle pb-3`,children:(0,$.jsx)(V,{items:U,activeTab:w,onChange:T,ariaLabel:u.extensionsPage.extensionsNavAria,tabIdPrefix:`extensions-tab`,panelIdPrefix:`extensions-panel`,className:`flex-wrap`})}),w===`marketplace`?(0,$.jsx)(be,{query:E}):v?(0,$.jsx)(Fe,{}):w===`builtin`&&I.length===0?(0,$.jsx)(Le,{message:u.extensionsPage.emptyBuiltin}):w===`user`&&L.length===0?(0,$.jsx)(Le,{message:u.extensionsPage.emptyUser}):re.length===0?(0,$.jsx)(`p`,{className:`px-3 py-14 text-center text-sm text-fg-muted sm:px-5 xl:px-6`,children:u.extensionsPage.noSearchResults}):(0,$.jsx)(`div`,{className:ce,children:re.map(e=>(0,$.jsx)(je,{extension:e,copy:u.extensionsPage,onOpen:()=>e.pluginId?n(Y(e.pluginId,`installed`,e.authorizationStatus===`required`,r.pathname+r.search)):k(e)},e.id))})]}),O?O.format===`agent-plugin`?(0,$.jsx)(ae,{extension:O,onClose:()=>k(null)},O.id):(0,$.jsx)(Ne,{extension:O,copy:u.extensionsPage,onClose:()=>k(null)},O.id):null,ee?(0,$.jsx)(ae,{onClose:()=>j(!1)}):null]})}function Oe(e){return e.activationEligible??e.active}function ke(e,t){return e.source===`bundled`?t.providerBundled:e.source===`global`?t.providerGlobal:e.source===`workspace`?t.providerWorkspace:t.providerOther}function Ae(e,t){let n=Oe(e);return n&&e.active?t.runStateLive:n&&!e.active?t.runStatePendingOn:!n&&e.active?t.runStatePendingOff:t.runStateOff}function je(e){let t=(0,se.c)(43),{extension:n,copy:r,onOpen:i}=e,a=_(Me),o,s;t[0]!==n||t[1]!==a?(s=a.startsWith(`zh`),o=oe(n,s),t[0]=n,t[1]=a,t[2]=o,t[3]=s):(o=t[2],s=t[3]);let c=o,l=n.authorizationStatus===`required`,u=n.localizations?.[s?`zh-CN`:`en`]?.description??n.description,d=l?s?`去授权`:`Connect account`:s?`查看详情`:`View details`,f=`${c}, ${r.marketplaceDetailTitle}`,p;t[4]!==i||t[5]!==f?(p=(0,$.jsx)(`button`,{type:`button`,"aria-label":f,onClick:i,className:ue}),t[4]=i,t[5]=f,t[6]=p):p=t[6];let m=n.branding?.iconUrl,h;t[7]===m?h=t[8]:(h=(0,$.jsx)(ie,{iconUrl:m,fallback:B}),t[7]=m,t[8]=h);let g;t[9]===c?g=t[10]:(g=(0,$.jsx)(`h2`,{className:`line-clamp-2 break-words font-semibold leading-snug text-fg`,title:c,children:c}),t[9]=c,t[10]=g);let v;t[11]===n.provenance?.publisherVerification?v=t[12]:(v=n.provenance?.publisherVerification===`verified`?(0,$.jsx)(G,{className:`mt-0.5 size-3.5 shrink-0 text-emerald-600 dark:text-emerald-400`,strokeWidth:1.75,"aria-label":`Verified`}):null,t[11]=n.provenance?.publisherVerification,t[12]=v);let y;t[13]!==g||t[14]!==v?(y=(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start gap-1.5`,children:[g,v]}),t[13]=g,t[14]=v,t[15]=y):y=t[15];let b;t[16]===n.version?b=t[17]:(b=n.version?(0,$.jsxs)(`span`,{children:[`v`,n.version]}):null,t[16]=n.version,t[17]=b);let x=l?`text-amber-700 dark:text-amber-400`:`text-fg-muted`,S=l?s?`需要授权`:`Authorization required`:Oe(n)?r.statusEnabled:r.runStateOff,C;t[18]!==x||t[19]!==S?(C=(0,$.jsx)(`span`,{className:x,children:S}),t[18]=x,t[19]=S,t[20]=C):C=t[20];let w;t[21]!==b||t[22]!==C?(w=(0,$.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-fg-subtle`,children:[b,C]}),t[21]=b,t[22]=C,t[23]=w):w=t[23];let T;t[24]!==w||t[25]!==y?(T=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[y,w]}),t[24]=w,t[25]=y,t[26]=T):T=t[26];let E;t[27]!==d||t[28]!==i?(E=(0,$.jsx)(`div`,{className:`pointer-events-auto relative z-10 flex max-w-[45%] shrink-0 items-start`,children:(0,$.jsx)(`button`,{type:`button`,onClick:i,className:`inline-flex items-center justify-center rounded-lg border border-edge px-3 py-2 text-xs font-medium text-fg transition-colors hover:bg-surface-hover active:scale-[0.98] active:bg-surface-hover/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:d})}),t[27]=d,t[28]=i,t[29]=E):E=t[29];let D;t[30]!==T||t[31]!==E||t[32]!==h?(D=(0,$.jsxs)(`div`,{className:`pointer-events-none relative flex items-start gap-3`,children:[h,T,E]}),t[30]=T,t[31]=E,t[32]=h,t[33]=D):D=t[33];let O;t[34]!==r.cardNoDescription||t[35]!==u?(O=u?.trim()||r.cardNoDescription,t[34]=r.cardNoDescription,t[35]=u,t[36]=O):O=t[36];let k;t[37]===O?k=t[38]:(k=(0,$.jsx)(`p`,{className:`pointer-events-none relative mt-3 line-clamp-3 text-sm leading-relaxed text-fg-muted`,children:O}),t[37]=O,t[38]=k);let A;return t[39]!==D||t[40]!==k||t[41]!==p?(A=(0,$.jsxs)(`article`,{className:le,children:[p,D,k]}),t[39]=D,t[40]=k,t[41]=p,t[42]=A):A=t[42],A}function Me(e){return e.language}function Ne({extension:e,copy:t,onClose:n}){let{mutate:r}=T(),[i,a]=(0,Q.useState)(null),[o,c]=(0,Q.useState)(null),[u,d]=(0,Q.useState)(!1),p=e.activationEligible===!0,h=(0,Q.useCallback)(async()=>{c(null),d(!1),a(`toggle`);try{let{requiresGatewayRestart:t}=await ge({extensionId:e.id,enabled:!p});await r(`gateway-extensions-list`),D(),d(t)}catch(e){c(e instanceof Error?e.message:t.extensionToggleFailed)}finally{a(null)}},[p,t.extensionToggleFailed,e.id,r]),g=(0,Q.useCallback)(async()=>{if(!(e.source===`bundled`||!window.confirm(t.extensionUninstallConfirm))){c(null),d(!1),a(`uninstall`);try{await _e(e.id),await r(`gateway-extensions-list`),D(),n()}catch(e){c(e instanceof Error?e.message:t.marketplaceUninstallFailed),a(null)}}},[t.extensionUninstallConfirm,t.marketplaceUninstallFailed,e.id,e.source,r,n]),_=e.ui?.contributions?.pages??[],v=e.ui?.contributions?.settingsPanels??[],E=e.ui?.contributions?.chatWidgets??[],k=_.find(e=>e.showInNav)??_[0],A=v[0],j=k?H(e.id,k):null,M=A?`/settings/ext/${e.id}/${A.id}`:e.hasConfigSchema||L(e)?`/settings/ext/${e.id}`:null;return(0,$.jsx)(w,{defaultOpen:!0,onOpenChange:e=>!e&&n(),children:(0,$.jsxs)(x,{children:[(0,$.jsx)(y,{className:`xopc-dialog-overlay fixed inset-0 z-[130] bg-scrim`}),(0,$.jsxs)(S,{className:`xopc-dialog-content fixed left-1/2 top-1/2 z-[131] flex max-h-[min(90vh,44rem)] w-[min(42rem,calc(100vw-1.5rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-xl border border-edge bg-surface-overlay`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:n,className:`inline-flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,"aria-label":t.detailBack,children:(0,$.jsx)(ee,{className:`size-5`})}),(0,$.jsx)(C,{className:`min-w-0 flex-1 truncate text-center text-sm font-semibold text-fg`,children:t.detailTitle}),(0,$.jsxs)(b,{className:`sr-only`,children:[e.name,` (`,e.id,`)`]}),(0,$.jsx)(`button`,{type:`button`,onClick:n,className:`inline-flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,"aria-label":t.detailClose,children:(0,$.jsx)(f,{className:`size-5`})})]}),(0,$.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-5`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-start gap-4`,children:[(0,$.jsx)(`div`,{className:`flex size-16 shrink-0 items-center justify-center rounded-2xl bg-accent-soft text-xl font-semibold text-accent-fg`,"aria-hidden":!0,children:(e.name||e.id).charAt(0).toUpperCase()}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`h3`,{className:`text-lg font-semibold text-fg`,children:e.name}),(0,$.jsxs)(`p`,{className:`mt-0.5 text-sm text-fg-muted`,children:[t.detailProviderPrefix,` `,ke(e,t)]}),e.version?(0,$.jsxs)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:[`v`,e.version]}):null]})]}),(0,$.jsx)(`p`,{className:`mt-5 text-sm leading-relaxed text-fg`,children:e.description?.trim()||t.detailNoDescription}),e.hasUi?null:(0,$.jsx)(`p`,{className:`mt-3 text-xs text-fg-muted`,children:t.backendOnlyHint}),(0,$.jsx)(`p`,{className:`mt-2 text-xs text-fg-muted`,children:Ae(e,t)}),e.source===`bundled`?(0,$.jsx)(`p`,{className:`mt-4 rounded-lg bg-surface-hover/40 px-3 py-2 text-xs text-fg-muted shadow-surface dark:bg-surface-hover/20`,children:t.builtinConfigHint}):null,(0,$.jsxs)(`div`,{className:`mt-3 rounded-lg bg-surface-hover/40 p-3 shadow-surface dark:bg-surface-hover/20`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:t.builtinRuntimeToggle}),(0,$.jsx)(R,{type:`button`,variant:`secondary`,disabled:i!==null,onClick:()=>void h(),className:`shrink-0 py-1.5 text-xs`,children:i===`toggle`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(N,{className:`mr-1.5 size-3.5 shrink-0 animate-spin`,"aria-hidden":!0}),t.builtinToggleBusy]}):p?t.builtinToggleDisable:t.builtinToggleEnable})]}),o?(0,$.jsx)(`p`,{className:`mt-2 text-xs text-rose-600 dark:text-rose-400`,children:o}):null,u?(0,$.jsx)(`p`,{className:`mt-2 text-xs text-fg-muted`,children:t.builtinToggleRestartHint}):null,e.source===`bundled`?null:(0,$.jsx)(`div`,{className:`mt-3 flex justify-end border-t border-edge-subtle pt-3`,children:(0,$.jsxs)(R,{type:`button`,variant:`ghost`,disabled:i!==null,onClick:()=>void g(),className:`text-danger hover:bg-danger-soft hover:text-danger`,children:[i===`uninstall`?(0,$.jsx)(N,{className:`size-3.5 animate-spin`,"aria-hidden":!0}):(0,$.jsx)(re,{className:`size-3.5`,"aria-hidden":!0}),t.marketplaceUninstall]})})]}),e.hasUi&&(_.length>0||v.length>0||E.length>0)?(0,$.jsxs)(`section`,{className:`mt-8`,children:[(0,$.jsx)(`h4`,{className:`mb-3 text-sm font-semibold text-fg`,children:t.detailSectionFeatures}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,$.jsx)(Pe,{template:t.badgePages,count:_.length,hidden:_.length===0}),(0,$.jsx)(Pe,{template:t.badgeSettings,count:v.length,hidden:v.length===0}),(0,$.jsx)(Pe,{template:t.badgeWidgets,count:E.length,hidden:E.length===0})]})]}):null,P(e)&&(j||M)?(0,$.jsxs)(`div`,{className:`mt-6 flex flex-wrap gap-2 border-t border-edge-subtle pt-4`,children:[j?(0,$.jsxs)(s,{to:j,onClick:n,className:m(`inline-flex items-center gap-1.5 rounded-lg border border-edge px-3 py-2 text-sm font-medium text-fg`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),children:[(0,$.jsx)(l,{className:`size-4 shrink-0 opacity-80`,"aria-hidden":!0}),t.open]}):null,M?(0,$.jsxs)(s,{to:M,onClick:n,className:m(`inline-flex items-center gap-1.5 rounded-lg border border-edge px-3 py-2 text-sm font-medium text-fg`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),children:[(0,$.jsx)(O,{className:`size-4 shrink-0 opacity-80`,"aria-hidden":!0}),t.openSettings]}):null]}):null,(0,$.jsx)(`p`,{className:`mt-6 text-[11px] leading-relaxed text-fg-muted`,children:t.restartNote})]})]})]})})}function Pe(e){let t=(0,se.c)(6),{template:n,count:r,hidden:i}=e;if(i||r===0)return null;let a;if(t[0]!==r||t[1]!==n){let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=/\{\{count\}\}/g,t[3]=e):e=t[3],a=n.replace(e,String(r)),t[0]=r,t[1]=n,t[2]=a}else a=t[2];let o;return t[4]===a?o=t[5]:(o=(0,$.jsx)(`span`,{className:`inline-flex items-center rounded-md bg-surface-hover px-2 py-0.5 text-[11px] font-medium text-fg-muted`,children:a}),t[4]=a,t[5]=o),o}function Fe(){let e=(0,se.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(`div`,{className:ce,"aria-busy":`true`,children:Array.from({length:6},Ie)}),e[0]=t):t=e[0],t}function Ie(e,t){return(0,$.jsx)(I,{className:`h-32 rounded-xl`},t)}function Le(e){let t=(0,se.c)(2),{message:n}=e,r;return t[0]===n?r=t[1]:(r=(0,$.jsx)(`div`,{className:`flex min-h-[min(40vh,16rem)] flex-col items-center justify-center rounded-xl border border-edge-subtle bg-surface-base px-4 py-12 text-center shadow-surface`,children:(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n})}),t[0]=n,t[1]=r),r}export{De as ExtensionsPage};