@xopcai/xopc 0.0.126 → 0.0.128

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 (366) 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-C70vgt60.js → agent-avatar-dicebear-Dx3HQkOk.js} +1 -1
  4. package/dist/gateway/static/root/assets/agents-Ceb_WmSZ.js +2 -0
  5. package/dist/gateway/static/root/assets/app-management-settings-panel-DGtoXVvI.js +1 -0
  6. package/dist/gateway/static/root/assets/{appearance-settings-BHlahIDL.js → appearance-settings-BQQf_iLu.js} +1 -1
  7. package/dist/gateway/static/root/assets/apps-page-D05daQF8.js +1 -0
  8. package/dist/gateway/static/root/assets/{archive-plugin-B-aoIt0w.js → archive-plugin-HuCFa2UL.js} +1 -1
  9. package/dist/gateway/static/root/assets/{attachment-load-BD0G0FD5.js → attachment-load-N3csiRso.js} +1 -1
  10. package/dist/gateway/static/root/assets/{automation-suggestion-card-iJRVI7aZ.js → automation-suggestion-card-DeYEW2YQ.js} +1 -1
  11. package/dist/gateway/static/root/assets/automations-page-Dxn5-hGx.js +4 -0
  12. package/dist/gateway/static/root/assets/{binary-plugins-B0mNlVSz.js → binary-plugins-DnJO0VG7.js} +1 -1
  13. package/dist/gateway/static/root/assets/{block-editor-CJY9Lu5G.js → block-editor-DOAZkqfs.js} +27 -27
  14. package/dist/gateway/static/root/assets/browser-settings-page-DSB-ZKIX.js +8 -0
  15. package/dist/gateway/static/root/assets/capability-presets-api-DRCu-s6d.js +1 -0
  16. package/dist/gateway/static/root/assets/capability-presets-settings-panel-M7jOJxZX.js +1 -0
  17. package/dist/gateway/static/root/assets/channel-recipient-api-BrW5Kcgc.js +1 -0
  18. package/dist/gateway/static/root/assets/channels-settings-C1iggCG3.js +1 -0
  19. package/dist/gateway/static/root/assets/{code-editor-gbRgS14t.js → code-editor--tMO38Tr.js} +1 -1
  20. package/dist/gateway/static/root/assets/connectors-page-Df0TJNgv.js +2 -0
  21. package/dist/gateway/static/root/assets/desktop-pet-MnqKnEgd.js +1 -0
  22. package/dist/gateway/static/root/assets/desktop-pet-settings-PRnTI9no.js +1 -0
  23. package/dist/gateway/static/root/assets/desktop-pet-sprite-DqZ6fbIj.js +1 -0
  24. package/dist/gateway/static/root/assets/directory-picker-path-field-DJNFtSWq.js +1 -0
  25. package/dist/gateway/static/root/assets/dreaming-settings-D0_2JavX.js +3 -0
  26. package/dist/gateway/static/root/assets/{extension-debug-page-BbyczVZ3.js → extension-debug-page-C4sQuETO.js} +1 -1
  27. package/dist/gateway/static/root/assets/{extension-page-DLN1I3DR.js → extension-page-DhnpWAUJ.js} +1 -1
  28. package/dist/gateway/static/root/assets/extension-settings-page-D7JDxFGh.js +1 -0
  29. package/dist/gateway/static/root/assets/fetch-BMjlW0g1.js +1 -0
  30. package/dist/gateway/static/root/assets/gateway-config-api-B_VyPdKh.js +1 -0
  31. package/dist/gateway/static/root/assets/gateway-settings-C0TutwM5.js +1 -0
  32. package/dist/gateway/static/root/assets/{gateway-startup-retry-DEMad2wt.js → gateway-startup-retry-CY5W2Pp4.js} +1 -1
  33. package/dist/gateway/static/root/assets/goal-create-dialog-DrDGK2L5.js +1 -0
  34. package/dist/gateway/static/root/assets/goal-detail-page-aaIMRRor.js +4 -0
  35. package/dist/gateway/static/root/assets/goals-config-api-CzTu01a1.js +1 -0
  36. package/dist/gateway/static/root/assets/goals-page-CBfCPiNK.js +2 -0
  37. package/dist/gateway/static/root/assets/goals-settings-4rKUC3EH.js +1 -0
  38. package/dist/gateway/static/root/assets/heartbeat-settings-DqJBKlza.js +1 -0
  39. package/dist/gateway/static/root/assets/{html-workspace-editor-DV90ddkE.js → html-workspace-editor-COqmtESs.js} +1 -1
  40. package/dist/gateway/static/root/assets/index-38TSE7ng.js +257 -0
  41. package/dist/gateway/static/root/assets/index-EKmpPvZj.css +1 -0
  42. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-lKTg6St7.js → keyboard-shortcuts-settings-ClVhEihC.js} +1 -1
  43. package/dist/gateway/static/root/assets/logs-page-J8fw1O8x.js +2 -0
  44. package/dist/gateway/static/root/assets/{markdown-editor-BFOjBBla.js → markdown-editor-jD1LPiP-.js} +2 -2
  45. package/dist/gateway/static/root/assets/{markdown-split-Bv4k6iGJ.js → markdown-split-DQYDAL4r.js} +1 -1
  46. package/dist/gateway/static/root/assets/{media-plugins-Bbi8g3N8.js → media-plugins-o5fchHfb.js} +1 -1
  47. package/dist/gateway/static/root/assets/messages-YzjnURPJ.js +3 -0
  48. package/dist/gateway/static/root/assets/models-hub-panel-D9csuY5T.js +2 -0
  49. package/dist/gateway/static/root/assets/notes-page-CeWoUGI-.js +1 -0
  50. package/dist/gateway/static/root/assets/notes-workbench-D_oaF0Pq.js +2 -0
  51. package/dist/gateway/static/root/assets/{page-tabs-Cp395RYD.js → page-tabs-u0u41Gxz.js} +1 -1
  52. package/dist/gateway/static/root/assets/{preview-open-alternatives-DqV5OM4m.js → preview-open-alternatives-BaYRX55y.js} +1 -1
  53. package/dist/gateway/static/root/assets/project-detail-page-dkHzwhDL.js +1 -0
  54. package/dist/gateway/static/root/assets/projects-page-DBp2WExF.js +1 -0
  55. package/dist/gateway/static/root/assets/remote-access-hub-Cgzg4pNN.js +1 -0
  56. package/dist/gateway/static/root/assets/{save-bar-controls-BItmzAzI.js → save-bar-controls-8ebg7PIX.js} +1 -1
  57. package/dist/gateway/static/root/assets/{schedule-field-BQ8IjjCn.js → schedule-field-Cd7FPvsJ.js} +1 -1
  58. package/dist/gateway/static/root/assets/{schema-form-BRpD6x3d.js → schema-form-Bq9iqPeA.js} +1 -1
  59. package/dist/gateway/static/root/assets/sessions-page-vkORZvUB.js +1 -0
  60. package/dist/gateway/static/root/assets/settings-advanced-gate-BFJsnSvx.js +1 -0
  61. package/dist/gateway/static/root/assets/{settings-collapsible-section-BKSPQM4R.js → settings-collapsible-section-DaVKl6I7.js} +1 -1
  62. package/dist/gateway/static/root/assets/{settings-form-section-BmyfthNQ.js → settings-form-section-C92Shabe.js} +1 -1
  63. package/dist/gateway/static/root/assets/settings-loading-skeleton-EJwzElLr.js +1 -0
  64. package/dist/gateway/static/root/assets/settings-page-BLY6onMK.js +1 -0
  65. package/dist/gateway/static/root/assets/{settings-page-layout-Bls5tfbH.js → settings-page-layout-dTbdUfAB.js} +1 -1
  66. package/dist/gateway/static/root/assets/setup-status-panel-BU0JUWIA.js +1 -0
  67. package/dist/gateway/static/root/assets/share-preview-page-SgKIyNQ7.js +2 -0
  68. package/dist/gateway/static/root/assets/shares-settings-aiY_QGsl.js +1 -0
  69. package/dist/gateway/static/root/assets/skill-reload-api-C44tGvK7.js +1 -0
  70. package/dist/gateway/static/root/assets/skills-page-C1re61FQ.js +2 -0
  71. package/dist/gateway/static/root/assets/{system-settings-panel-DKDAojWM.js → system-settings-panel-CntJCZEg.js} +1 -1
  72. package/dist/gateway/static/root/assets/{typed-models-lib-BCCV4Kkp.js → typed-models-lib-CjULd6SF.js} +1 -1
  73. package/dist/gateway/static/root/assets/url-DFGNSBNT.js +1 -0
  74. package/dist/gateway/static/root/assets/use-channel-catalog-CPdJ0o0i.js +1 -0
  75. package/dist/gateway/static/root/assets/user-profile-settings-panel-DBgcbZfp.js +1 -0
  76. package/dist/gateway/static/root/assets/{utils-DPGVr3tS.js → utils-icmWvHl6.js} +1 -1
  77. package/dist/gateway/static/root/assets/vendor-codemirror-C1WKjCk5.js +45 -0
  78. package/dist/gateway/static/root/assets/voice-api-key-field-BfvNUIWI.js +1 -0
  79. package/dist/gateway/static/root/assets/work-item-detail-page-BYvZjBuJ.js +1 -0
  80. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BTkRVNAh.js → workflow-run-setup-panel-DMXd1znx.js} +2 -2
  81. package/dist/gateway/static/root/assets/{workflow-start-dialog-DAImVtdO.js → workflow-start-dialog-Dff4IHzz.js} +1 -1
  82. package/dist/gateway/static/root/assets/workflows-page-0-640fQi.js +18 -0
  83. package/dist/gateway/static/root/index.html +7 -6
  84. package/dist/package.js +1 -1
  85. package/dist/src/agent/agent-instance-gateway.d.ts +5 -0
  86. package/dist/src/agent/agent-manager.d.ts +17 -0
  87. package/dist/src/agent/agent-manager.js +125 -8
  88. package/dist/src/agent/agent-manager.js.map +1 -1
  89. package/dist/src/agent/capabilities/definitions.d.ts +167 -0
  90. package/dist/src/agent/capabilities/definitions.js +175 -0
  91. package/dist/src/agent/capabilities/definitions.js.map +1 -0
  92. package/dist/src/agent/capabilities/index.d.ts +2 -0
  93. package/dist/src/agent/capabilities/index.js +3 -0
  94. package/dist/src/agent/capabilities/registry.d.ts +10 -0
  95. package/dist/src/agent/capabilities/registry.js +51 -0
  96. package/dist/src/agent/capabilities/registry.js.map +1 -0
  97. package/dist/src/agent/goals/post-turn.js +23 -2
  98. package/dist/src/agent/goals/post-turn.js.map +1 -1
  99. package/dist/src/agent/messaging/command-handler.d.ts +4 -0
  100. package/dist/src/agent/messaging/command-handler.js +6 -0
  101. package/dist/src/agent/messaging/command-handler.js.map +1 -1
  102. package/dist/src/agent/service/process-direct-one-shot.js +5 -3
  103. package/dist/src/agent/service/process-direct-one-shot.js.map +1 -1
  104. package/dist/src/agent/service/process-direct-streaming.js +4 -3
  105. package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
  106. package/dist/src/agent/service.d.ts +4 -0
  107. package/dist/src/agent/service.js +26 -0
  108. package/dist/src/agent/service.js.map +1 -1
  109. package/dist/src/agent/skills/hub-lock.d.ts +5 -5
  110. package/dist/src/agent/skills/hub-lock.js +12 -12
  111. package/dist/src/agent/skills/hub-lock.js.map +1 -1
  112. package/dist/src/agent/skills/hub-pull.d.ts +15 -0
  113. package/dist/src/agent/skills/hub-pull.js +299 -24
  114. package/dist/src/agent/skills/hub-pull.js.map +1 -1
  115. package/dist/src/agent/skills/index.js +4 -40
  116. package/dist/src/agent/skills/index.js.map +1 -1
  117. package/dist/src/agent/skills/install-target.d.ts +3 -0
  118. package/dist/src/agent/skills/install-target.js +11 -0
  119. package/dist/src/agent/skills/install-target.js.map +1 -0
  120. package/dist/src/agent/skills/managed-store.d.ts +5 -3
  121. package/dist/src/agent/skills/managed-store.js +10 -9
  122. package/dist/src/agent/skills/managed-store.js.map +1 -1
  123. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +5 -3
  124. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +1 -1
  125. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +21 -1
  126. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +62 -6
  127. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +1 -1
  128. package/dist/src/agent/skills/marketplace/resolve-adapter.js +1 -1
  129. package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +1 -1
  130. package/dist/src/agent/skills/parse-skill-metadata.js +9 -1
  131. package/dist/src/agent/skills/parse-skill-metadata.js.map +1 -1
  132. package/dist/src/agent/skills/skill-manage-ops.js +2 -2
  133. package/dist/src/agent/skills/skill-manage-ops.js.map +1 -1
  134. package/dist/src/agent/skills/skill-manager.d.ts +4 -0
  135. package/dist/src/agent/skills/skill-manager.js +18 -6
  136. package/dist/src/agent/skills/skill-manager.js.map +1 -1
  137. package/dist/src/agent/skills/types.d.ts +5 -0
  138. package/dist/src/agent/skills/workspace-skills-dir.d.ts +1 -0
  139. package/dist/src/agent/skills/workspace-skills-dir.js +5 -1
  140. package/dist/src/agent/skills/workspace-skills-dir.js.map +1 -1
  141. package/dist/src/agent/tools/automation-tool.d.ts +6 -6
  142. package/dist/src/agent/tools/browser/tool/schemas.d.ts +20 -20
  143. package/dist/src/agent/tools/composio-tool.d.ts +3 -3
  144. package/dist/src/agent/tools/desktop-pet-tool.d.ts +24 -0
  145. package/dist/src/agent/tools/desktop-pet-tool.js +90 -0
  146. package/dist/src/agent/tools/desktop-pet-tool.js.map +1 -0
  147. package/dist/src/agent/tools/factory.d.ts +5 -0
  148. package/dist/src/agent/tools/factory.js +22 -0
  149. package/dist/src/agent/tools/factory.js.map +1 -1
  150. package/dist/src/agent/tools/goal-tool.d.ts +16 -16
  151. package/dist/src/agent/tools/index.d.ts +2 -0
  152. package/dist/src/agent/tools/index.js +3 -1
  153. package/dist/src/agent/tools/skill-install-tool.d.ts +28 -0
  154. package/dist/src/agent/tools/skill-install-tool.js +81 -0
  155. package/dist/src/agent/tools/skill-install-tool.js.map +1 -0
  156. package/dist/src/agent/tools/skill-manage-tool.js +3 -6
  157. package/dist/src/agent/tools/skill-manage-tool.js.map +1 -1
  158. package/dist/src/agent/tools/tool-manual-tool.d.ts +2 -2
  159. package/dist/src/agent/tools/xopc-use-tool.d.ts +5 -5
  160. package/dist/src/automations/domain/types.d.ts +1 -0
  161. package/dist/src/automations/service/automation-service.js +9 -0
  162. package/dist/src/automations/service/automation-service.js.map +1 -1
  163. package/dist/src/browser/schemas.d.ts +52 -52
  164. package/dist/src/capabilities/store-connector.d.ts +17 -0
  165. package/dist/src/capabilities/store-connector.js +191 -0
  166. package/dist/src/capabilities/store-connector.js.map +1 -0
  167. package/dist/src/chat-commands/builtins/skill.d.ts +1 -0
  168. package/dist/src/chat-commands/builtins/skill.js +132 -0
  169. package/dist/src/chat-commands/builtins/skill.js.map +1 -0
  170. package/dist/src/chat-commands/context.d.ts +3 -0
  171. package/dist/src/chat-commands/context.js +2 -0
  172. package/dist/src/chat-commands/context.js.map +1 -1
  173. package/dist/src/chat-commands/index.d.ts +1 -0
  174. package/dist/src/chat-commands/index.js +3 -1
  175. package/dist/src/chat-commands/index.js.map +1 -1
  176. package/dist/src/chat-commands/types.d.ts +17 -0
  177. package/dist/src/cli/command-loaders.js +1 -0
  178. package/dist/src/cli/command-loaders.js.map +1 -1
  179. package/dist/src/cli/command-manifest.js +4 -0
  180. package/dist/src/cli/command-manifest.js.map +1 -1
  181. package/dist/src/cli/commands/connectors.d.ts +4 -0
  182. package/dist/src/cli/commands/connectors.js +96 -0
  183. package/dist/src/cli/commands/connectors.js.map +1 -0
  184. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  185. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  186. package/dist/src/cli/commands/skills.js +1 -1
  187. package/dist/src/config/agent-profile.js +1 -1
  188. package/dist/src/config/schema.js +2 -2
  189. package/dist/src/config/schema.js.map +1 -1
  190. package/dist/src/connectors/health.js +1 -1
  191. package/dist/src/connectors/install.js +3 -1
  192. package/dist/src/connectors/install.js.map +1 -1
  193. package/dist/src/connectors/materialize.js +2 -0
  194. package/dist/src/connectors/materialize.js.map +1 -1
  195. package/dist/src/connectors/types.d.ts +19 -1
  196. package/dist/src/extensions/install.js +1 -1
  197. package/dist/src/extensions/types/manifest.d.ts +1 -1
  198. package/dist/src/extensions/update.js +5 -3
  199. package/dist/src/extensions/update.js.map +1 -1
  200. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  201. package/dist/src/gateway/agent-builtin-tools.js +1 -0
  202. package/dist/src/gateway/agent-builtin-tools.js.map +1 -1
  203. package/dist/src/gateway/agents-admin.js +1 -1
  204. package/dist/src/gateway/chat-stream/mapper.js +5 -1
  205. package/dist/src/gateway/chat-stream/mapper.js.map +1 -1
  206. package/dist/src/gateway/chat-stream/protocol.d.ts +2 -0
  207. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  208. package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
  209. package/dist/src/gateway/hono/middleware/auth.d.ts +2 -2
  210. package/dist/src/gateway/hono/middleware/logger.d.ts +1 -1
  211. package/dist/src/gateway/hono/middleware/route-errors.d.ts +1 -1
  212. package/dist/src/gateway/hono/middleware/strict-rate-limit.d.ts +2 -2
  213. package/dist/src/gateway/hono/routes/capabilities.d.ts +3 -0
  214. package/dist/src/gateway/hono/routes/capabilities.js +79 -0
  215. package/dist/src/gateway/hono/routes/capabilities.js.map +1 -0
  216. package/dist/src/gateway/hono/routes/commands-skills.js +88 -3
  217. package/dist/src/gateway/hono/routes/commands-skills.js.map +1 -1
  218. package/dist/src/gateway/hono/routes/connectors.js +2 -2
  219. package/dist/src/gateway/hono/routes/goals.js +212 -3
  220. package/dist/src/gateway/hono/routes/goals.js.map +1 -1
  221. package/dist/src/gateway/hono/routes/index.js +2 -0
  222. package/dist/src/gateway/hono/routes/index.js.map +1 -1
  223. package/dist/src/gateway/hono/routes/lazy-bundles.js +10 -1
  224. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
  225. package/dist/src/gateway/hono/routes/mcp.js +1 -1
  226. package/dist/src/gateway/hono/routes/mobile.d.ts +3 -0
  227. package/dist/src/gateway/hono/routes/mobile.js +113 -0
  228. package/dist/src/gateway/hono/routes/mobile.js.map +1 -0
  229. package/dist/src/gateway/hono/routes/projects.js +45 -0
  230. package/dist/src/gateway/hono/routes/projects.js.map +1 -1
  231. package/dist/src/gateway/hono/routes/workspace.js +4 -1
  232. package/dist/src/gateway/hono/routes/workspace.js.map +1 -1
  233. package/dist/src/gateway/hono/sse.d.ts +3 -3
  234. package/dist/src/gateway/service/marketplace-service.d.ts +23 -1
  235. package/dist/src/gateway/service/marketplace-service.js +57 -6
  236. package/dist/src/gateway/service/marketplace-service.js.map +1 -1
  237. package/dist/src/gateway/service/run-gateway-agent.js +6 -2
  238. package/dist/src/gateway/service/run-gateway-agent.js.map +1 -1
  239. package/dist/src/gateway/service.d.ts +2 -0
  240. package/dist/src/gateway/service.js +12 -2
  241. package/dist/src/gateway/service.js.map +1 -1
  242. package/dist/src/goals/goal-contract-draft.d.ts +15 -0
  243. package/dist/src/goals/goal-contract-draft.js +114 -0
  244. package/dist/src/goals/goal-contract-draft.js.map +1 -0
  245. package/dist/src/goals/goal-evidence-review.d.ts +15 -0
  246. package/dist/src/goals/goal-evidence-review.js +91 -0
  247. package/dist/src/goals/goal-evidence-review.js.map +1 -0
  248. package/dist/src/goals/goal-runner.js +3 -1
  249. package/dist/src/goals/goal-runner.js.map +1 -1
  250. package/dist/src/goals/goal-service.d.ts +17 -1
  251. package/dist/src/goals/goal-service.js +44 -3
  252. package/dist/src/goals/goal-service.js.map +1 -1
  253. package/dist/src/goals/goal-store.d.ts +18 -1
  254. package/dist/src/goals/goal-store.js +190 -1
  255. package/dist/src/goals/goal-store.js.map +1 -1
  256. package/dist/src/goals/index.d.ts +4 -0
  257. package/dist/src/goals/index.js +3 -1
  258. package/dist/src/goals/types.d.ts +42 -0
  259. package/dist/src/mcp/channel-bridge.js +1 -1
  260. package/dist/src/mobile/notification-service.d.ts +8 -0
  261. package/dist/src/mobile/notification-service.js +139 -0
  262. package/dist/src/mobile/notification-service.js.map +1 -0
  263. package/dist/src/mobile/notification-store.d.ts +28 -0
  264. package/dist/src/mobile/notification-store.js +134 -0
  265. package/dist/src/mobile/notification-store.js.map +1 -0
  266. package/dist/src/mobile/notification-types.d.ts +37 -0
  267. package/dist/src/mobile/notification-types.js +11 -0
  268. package/dist/src/mobile/notification-types.js.map +1 -0
  269. package/dist/src/pets/factory.d.ts +25 -0
  270. package/dist/src/pets/factory.js +327 -0
  271. package/dist/src/pets/factory.js.map +1 -0
  272. package/dist/src/pets/manifest.d.ts +2 -0
  273. package/dist/src/pets/manifest.js +16 -0
  274. package/dist/src/pets/manifest.js.map +1 -0
  275. package/dist/src/pets/validator.d.ts +12 -0
  276. package/dist/src/pets/validator.js +175 -0
  277. package/dist/src/pets/validator.js.map +1 -0
  278. package/dist/src/projects/project-service.d.ts +2 -0
  279. package/dist/src/projects/project-service.js +6 -0
  280. package/dist/src/projects/project-service.js.map +1 -1
  281. package/dist/src/projects/project-store.d.ts +1 -0
  282. package/dist/src/projects/project-store.js +14 -7
  283. package/dist/src/projects/project-store.js.map +1 -1
  284. package/dist/src/projects/types.d.ts +2 -0
  285. package/dist/src/session/session-title.js +22 -2
  286. package/dist/src/session/session-title.js.map +1 -1
  287. package/dist/src/storage/sqlite/migrations/025_project_pinned_at.sql +5 -0
  288. package/dist/src/storage/sqlite/migrations/026_goal_contracts.sql +10 -0
  289. package/dist/src/storage/sqlite/migrations/027_mobile_notifications.sql +43 -0
  290. package/dist/src/storage/sqlite/migrations/028_goal_evidence_requirements.sql +47 -0
  291. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  292. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  293. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
  294. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  295. package/dist/src/storage/sqlite/schema.js +1 -1
  296. package/dist/src/storage/sqlite/schema.sql +44 -0
  297. package/dist/src/tui/tui-startup-resources.js +1 -1
  298. package/package.json +1 -1
  299. package/skills/THIRD_PARTY_NOTICES.md +16 -0
  300. package/skills/creative/algorithmic-art/SKILL.md +37 -0
  301. package/skills/creative/algorithmic-art/templates/generator-template.js +27 -0
  302. package/skills/creative/algorithmic-art/templates/viewer.html +27 -0
  303. package/skills/creative/hatch-pet/SKILL.md +63 -0
  304. package/skills/documents/doc-coauthoring/SKILL.md +40 -0
  305. package/skills/documents/doc-coauthoring/references/reader-review.md +9 -0
  306. package/skills/documents/docx/SKILL.md +40 -0
  307. package/skills/documents/docx/references/editing-checklist.md +8 -0
  308. package/skills/documents/docx/scripts/inspect_ooxml.py +36 -0
  309. package/skills/documents/docx/scripts/render_docx.py +33 -0
  310. package/skills/documents/pdf/SKILL.md +47 -0
  311. package/skills/documents/pdf/references/operations.md +16 -0
  312. package/skills/documents/pdf/scripts/inspect_pdf.py +41 -0
  313. package/skills/documents/pdf/scripts/render_pdf.py +32 -0
  314. package/skills/documents/pptx/SKILL.md +41 -0
  315. package/skills/documents/pptx/references/qa-checklist.md +6 -0
  316. package/skills/documents/pptx/scripts/inspect_ooxml.py +34 -0
  317. package/skills/documents/pptx/scripts/render_pptx.py +33 -0
  318. package/skills/engineering/define-goal/SKILL.md +41 -0
  319. package/skills/engineering/define-goal/references/objective-rubric.md +12 -0
  320. package/dist/gateway/static/root/assets/agents-DRYVahI-.js +0 -2
  321. package/dist/gateway/static/root/assets/app-management-settings-panel-D9-HW6cy.js +0 -1
  322. package/dist/gateway/static/root/assets/apps-page-BdJ1eQg3.js +0 -1
  323. package/dist/gateway/static/root/assets/automations-page-D8hYQbkl.js +0 -4
  324. package/dist/gateway/static/root/assets/browser-settings-page-CiWEO-Iy.js +0 -8
  325. package/dist/gateway/static/root/assets/capability-presets-api-Bgc8ag55.js +0 -1
  326. package/dist/gateway/static/root/assets/capability-presets-settings-panel-B1nIi0TC.js +0 -1
  327. package/dist/gateway/static/root/assets/channel-recipient-api-0sauApoC.js +0 -1
  328. package/dist/gateway/static/root/assets/channels-settings-BddPdqVo.js +0 -1
  329. package/dist/gateway/static/root/assets/connectors-page-Ba2GDhSE.js +0 -2
  330. package/dist/gateway/static/root/assets/directory-picker-path-field-CiEc4KmY.js +0 -1
  331. package/dist/gateway/static/root/assets/dist-By6Rh2ee.js +0 -1
  332. package/dist/gateway/static/root/assets/dreaming-settings-4bvpk5wr.js +0 -3
  333. package/dist/gateway/static/root/assets/extension-settings-page-D9VGHmYJ.js +0 -1
  334. package/dist/gateway/static/root/assets/fetch-5V96dUz3.js +0 -1
  335. package/dist/gateway/static/root/assets/gateway-config-api-BtIzObwp.js +0 -1
  336. package/dist/gateway/static/root/assets/gateway-settings-KFsGGDhg.js +0 -1
  337. package/dist/gateway/static/root/assets/goal-create-dialog-4PcF6Sh6.js +0 -1
  338. package/dist/gateway/static/root/assets/goal-detail-page-B482PSaG.js +0 -1
  339. package/dist/gateway/static/root/assets/goals-config-api-CVN7-pdM.js +0 -1
  340. package/dist/gateway/static/root/assets/goals-page-CUdgJuDn.js +0 -2
  341. package/dist/gateway/static/root/assets/goals-settings-IYCH3-Pi.js +0 -1
  342. package/dist/gateway/static/root/assets/heartbeat-settings-Cf_a2Bmz.js +0 -1
  343. package/dist/gateway/static/root/assets/index-CA2tR2vm.js +0 -256
  344. package/dist/gateway/static/root/assets/index-Ds3u0LOk.css +0 -1
  345. package/dist/gateway/static/root/assets/logs-page-BCporcNH.js +0 -2
  346. package/dist/gateway/static/root/assets/messages-C22hxE1N.js +0 -3
  347. package/dist/gateway/static/root/assets/models-hub-panel-D68Pyow7.js +0 -2
  348. package/dist/gateway/static/root/assets/notes-page-CuUMOiyv.js +0 -1
  349. package/dist/gateway/static/root/assets/notes-workbench-Dx2N5zTk.js +0 -2
  350. package/dist/gateway/static/root/assets/project-detail-page-sB8AzZi3.js +0 -1
  351. package/dist/gateway/static/root/assets/projects-page-LBnJqWK2.js +0 -1
  352. package/dist/gateway/static/root/assets/remote-access-hub-Dbj0o6SC.js +0 -1
  353. package/dist/gateway/static/root/assets/sessions-page-DhDZKspB.js +0 -1
  354. package/dist/gateway/static/root/assets/settings-advanced-gate-BvXLMNL6.js +0 -1
  355. package/dist/gateway/static/root/assets/settings-page-Cfm9UxAr.js +0 -1
  356. package/dist/gateway/static/root/assets/setup-status-panel-kQEsTGAs.js +0 -1
  357. package/dist/gateway/static/root/assets/share-preview-page-DbYZNAPb.js +0 -2
  358. package/dist/gateway/static/root/assets/shares-settings-BtR4B0kn.js +0 -1
  359. package/dist/gateway/static/root/assets/skill-reload-api-CJNVOWoK.js +0 -1
  360. package/dist/gateway/static/root/assets/skills-page-DcWDHrt3.js +0 -2
  361. package/dist/gateway/static/root/assets/use-channel-catalog-NBqg3iFY.js +0 -1
  362. package/dist/gateway/static/root/assets/user-profile-settings-panel-suQ2x-LB.js +0 -1
  363. package/dist/gateway/static/root/assets/vendor-codemirror-BvNgyE1Q.js +0 -45
  364. package/dist/gateway/static/root/assets/voice-api-key-field-DaJASKFP.js +0 -1
  365. package/dist/gateway/static/root/assets/work-item-detail-page-BrCZpAWh.js +0 -1
  366. package/dist/gateway/static/root/assets/workflows-page-vyJ8wSXm.js +0 -18
@@ -1 +1 @@
1
- {"version":3,"file":"command-loaders.js","names":[],"sources":["../../../src/cli/command-loaders.ts"],"sourcesContent":["/**\n * Lazy command loaders.\n *\n * Modules here trigger their `register({...})` side effect on import; the\n * caller then mounts the requested command via `registry.installOne` (or via\n * the explicit registrar functions for non-registry commands).\n *\n * Keeping this map static-but-thunked means `bin.ts` short-circuits and\n * `runCli` can resolve a single subcommand without paying for unrelated\n * command modules.\n */\nimport type { Command } from 'commander';\nimport { resolveCliCatalogCommandPath } from './command-path-policy.js';\nimport { shouldLoadExtensionCliForCommandPath } from './command-startup-policy.js';\nimport { registry, type CLIContext } from './registry.js';\n\nexport type CommandLoader = () => Promise<unknown>;\n\nexport const REGISTRY_COMMAND_MODULES: Record<string, CommandLoader> = {\n init: () => import('./commands/init.js'),\n profile: () => import('./commands/profile.js'),\n setup: () => import('./commands/setup.js'),\n onboard: () => import('./commands/onboard.js'),\n agent: () => import('./commands/agent.js'),\n tui: () => import('./commands/tui.js'),\n gateway: () => import('./commands/gateway.js'),\n session: () => import('./commands/session.js'),\n project: () => import('./commands/project.js'),\n goal: () => import('./commands/goal.js'),\n config: () => import('./commands/config.js'),\n doctor: () => import('./commands/doctor/index.js'),\n image: () => import('./commands/image.js'),\n channels: () => import('./commands/channels.js'),\n models: () => import('./commands/models.js'),\n providers: () => import('./commands/providers.js'),\n voice: () => import('./commands/voice.js'),\n search: () => import('./commands/search.js'),\n auth: () => import('./commands/auth.js'),\n skills: () => import('./commands/skills.js'),\n browser: () => import('./commands/browser.js'),\n update: () => import('./commands/update.js'),\n logs: () => import('./commands/logs.js'),\n tunnel: () => import('./commands/tunnel.js'),\n tailscale: () => import('./commands/tailscale.js'),\n};\n\nexport interface NonRegistryMatcher {\n matches: (name: string) => boolean;\n load: (program: Command) => Promise<void>;\n}\n\nexport const NON_REGISTRY_COMMAND_MATCHERS: NonRegistryMatcher[] = [\n {\n matches: (name) => name === 'agents' || name.startsWith('agents:'),\n load: async (program) => {\n const { registerAgentsCli } = await import('./commands/agents.js');\n registerAgentsCli(program);\n },\n },\n {\n matches: (name) => name === 'extensions',\n load: async (program) => {\n const { registerExtensionCommands } = await import('./commands/extension.js');\n registerExtensionCommands(program);\n const commandPath = resolveCliCatalogCommandPath(process.argv);\n if (shouldLoadExtensionCliForCommandPath(commandPath)) {\n const { registerExtensionCliCommands } = await import('./extension-cli-register.js');\n await registerExtensionCliCommands(program);\n }\n },\n },\n];\n\nconst FLAGS_WITH_VALUE = new Set(['--config', '--workspace']);\n\n/**\n * Resolve which command module to load based on argv. Skips global flags\n * (`--verbose`/`--config <path>`/`--workspace <path>`) and treats\n * `help <cmd>` as if the user had typed `<cmd>`, so that `xopc help gateway`\n * loads only the gateway module.\n */\nexport function resolveCommandName(argv: string[]): string | undefined {\n let i = 2;\n let firstSubcommand: string | undefined;\n while (i < argv.length) {\n const arg = argv[i];\n if (!arg) {\n i += 1;\n continue;\n }\n if (arg.startsWith('-')) {\n i += FLAGS_WITH_VALUE.has(arg) ? 2 : 1;\n continue;\n }\n if (firstSubcommand === undefined) {\n firstSubcommand = arg;\n if (arg === 'help') {\n i += 1;\n continue;\n }\n return arg;\n }\n return arg;\n }\n return firstSubcommand;\n}\n\nexport async function tryLoadCommand(\n program: Command,\n ctx: CLIContext,\n name: string,\n getCtx?: () => CLIContext,\n): Promise<boolean> {\n const moduleLoader = REGISTRY_COMMAND_MODULES[name];\n if (moduleLoader) {\n await moduleLoader();\n const installed = registry.installOne(program, name, ctx, getCtx);\n if (installed && name === 'gateway') {\n const gatewayCmd = program.commands.find((command) => command.name() === 'gateway');\n if (gatewayCmd) {\n const { prepareGatewayCommandForArgv } = await import('./commands/gateway.js');\n await prepareGatewayCommandForArgv(gatewayCmd, ctx);\n }\n }\n return installed;\n }\n const matcher = NON_REGISTRY_COMMAND_MATCHERS.find((m) => m.matches(name));\n if (matcher) {\n await matcher.load(program);\n return true;\n }\n return false;\n}\n\nexport async function loadAllCommands(\n program: Command,\n ctx: CLIContext,\n getCtx?: () => CLIContext,\n): Promise<void> {\n // Sequential to keep registration order deterministic; registry.install\n // sorts by category and is stable within a category.\n for (const loader of Object.values(REGISTRY_COMMAND_MODULES)) {\n await loader();\n }\n registry.install(program, ctx, getCtx);\n for (const matcher of NON_REGISTRY_COMMAND_MATCHERS) {\n await matcher.load(program);\n }\n const gatewayCmd = program.commands.find((command) => command.name() === 'gateway');\n if (gatewayCmd) {\n const { prepareGatewayCommandForArgv } = await import('./commands/gateway.js');\n await prepareGatewayCommandForArgv(gatewayCmd, ctx);\n }\n}\n"],"mappings":";;;;AAkBA,MAAa,2BAA0D;CACrE,YAAY,OAAO;CACnB,eAAe,OAAO;CACtB,aAAa,OAAO;CACpB,eAAe,OAAO;CACtB,aAAa,OAAO;CACpB,WAAW,OAAO;CAClB,eAAe,OAAO;CACtB,eAAe,OAAO;CACtB,eAAe,OAAO;CACtB,YAAY,OAAO;CACnB,cAAc,OAAO;CACrB,cAAc,OAAO;CACrB,aAAa,OAAO;CACpB,gBAAgB,OAAO;CACvB,cAAc,OAAO;CACrB,iBAAiB,OAAO;CACxB,aAAa,OAAO;CACpB,cAAc,OAAO;CACrB,YAAY,OAAO;CACnB,cAAc,OAAO;CACrB,eAAe,OAAO;CACtB,cAAc,OAAO;CACrB,YAAY,OAAO;CACnB,cAAc,OAAO;CACrB,iBAAiB,OAAO;CACzB;AAOD,MAAa,gCAAsD,CACjE;CACE,UAAU,SAAS,SAAS,YAAY,KAAK,WAAW,UAAU;CAClE,MAAM,OAAO,YAAY;EACvB,MAAM,EAAE,sBAAsB,MAAM,OAAO;AAC3C,oBAAkB,QAAQ;;CAE7B,EACD;CACE,UAAU,SAAS,SAAS;CAC5B,MAAM,OAAO,YAAY;EACvB,MAAM,EAAE,8BAA8B,MAAM,OAAO;AACnD,4BAA0B,QAAQ;AAElC,MAAI,qCADgB,6BAA6B,QAAQ,KACL,CAAC,EAAE;GACrD,MAAM,EAAE,iCAAiC,MAAM,OAAO;AACtD,SAAM,6BAA6B,QAAQ;;;CAGhD,CACF;AAED,MAAM,mBAAmB,IAAI,IAAI,CAAC,YAAY,cAAc,CAAC;;;;;;;AAQ7D,SAAgB,mBAAmB,MAAoC;CACrE,IAAI,IAAI;CACR,IAAI;AACJ,QAAO,IAAI,KAAK,QAAQ;EACtB,MAAM,MAAM,KAAK;AACjB,MAAI,CAAC,KAAK;AACR,QAAK;AACL;;AAEF,MAAI,IAAI,WAAW,IAAI,EAAE;AACvB,QAAK,iBAAiB,IAAI,IAAI,GAAG,IAAI;AACrC;;AAEF,MAAI,oBAAoB,KAAA,GAAW;AACjC,qBAAkB;AAClB,OAAI,QAAQ,QAAQ;AAClB,SAAK;AACL;;AAEF,UAAO;;AAET,SAAO;;AAET,QAAO;;AAGT,eAAsB,eACpB,SACA,KACA,MACA,QACkB;CAClB,MAAM,eAAe,yBAAyB;AAC9C,KAAI,cAAc;AAChB,QAAM,cAAc;EACpB,MAAM,YAAY,SAAS,WAAW,SAAS,MAAM,KAAK,OAAO;AACjE,MAAI,aAAa,SAAS,WAAW;GACnC,MAAM,aAAa,QAAQ,SAAS,MAAM,YAAY,QAAQ,MAAM,KAAK,UAAU;AACnF,OAAI,YAAY;IACd,MAAM,EAAE,iCAAiC,MAAM,OAAO;AACtD,UAAM,6BAA6B,YAAY,IAAI;;;AAGvD,SAAO;;CAET,MAAM,UAAU,8BAA8B,MAAM,MAAM,EAAE,QAAQ,KAAK,CAAC;AAC1E,KAAI,SAAS;AACX,QAAM,QAAQ,KAAK,QAAQ;AAC3B,SAAO;;AAET,QAAO;;AAGT,eAAsB,gBACpB,SACA,KACA,QACe;AAGf,MAAK,MAAM,UAAU,OAAO,OAAO,yBAAyB,CAC1D,OAAM,QAAQ;AAEhB,UAAS,QAAQ,SAAS,KAAK,OAAO;AACtC,MAAK,MAAM,WAAW,8BACpB,OAAM,QAAQ,KAAK,QAAQ;CAE7B,MAAM,aAAa,QAAQ,SAAS,MAAM,YAAY,QAAQ,MAAM,KAAK,UAAU;AACnF,KAAI,YAAY;EACd,MAAM,EAAE,iCAAiC,MAAM,OAAO;AACtD,QAAM,6BAA6B,YAAY,IAAI"}
1
+ {"version":3,"file":"command-loaders.js","names":[],"sources":["../../../src/cli/command-loaders.ts"],"sourcesContent":["/**\n * Lazy command loaders.\n *\n * Modules here trigger their `register({...})` side effect on import; the\n * caller then mounts the requested command via `registry.installOne` (or via\n * the explicit registrar functions for non-registry commands).\n *\n * Keeping this map static-but-thunked means `bin.ts` short-circuits and\n * `runCli` can resolve a single subcommand without paying for unrelated\n * command modules.\n */\nimport type { Command } from 'commander';\nimport { resolveCliCatalogCommandPath } from './command-path-policy.js';\nimport { shouldLoadExtensionCliForCommandPath } from './command-startup-policy.js';\nimport { registry, type CLIContext } from './registry.js';\n\nexport type CommandLoader = () => Promise<unknown>;\n\nexport const REGISTRY_COMMAND_MODULES: Record<string, CommandLoader> = {\n init: () => import('./commands/init.js'),\n profile: () => import('./commands/profile.js'),\n setup: () => import('./commands/setup.js'),\n onboard: () => import('./commands/onboard.js'),\n agent: () => import('./commands/agent.js'),\n tui: () => import('./commands/tui.js'),\n gateway: () => import('./commands/gateway.js'),\n session: () => import('./commands/session.js'),\n project: () => import('./commands/project.js'),\n goal: () => import('./commands/goal.js'),\n config: () => import('./commands/config.js'),\n doctor: () => import('./commands/doctor/index.js'),\n image: () => import('./commands/image.js'),\n channels: () => import('./commands/channels.js'),\n models: () => import('./commands/models.js'),\n providers: () => import('./commands/providers.js'),\n voice: () => import('./commands/voice.js'),\n search: () => import('./commands/search.js'),\n auth: () => import('./commands/auth.js'),\n skills: () => import('./commands/skills.js'),\n connectors: () => import('./commands/connectors.js'),\n browser: () => import('./commands/browser.js'),\n update: () => import('./commands/update.js'),\n logs: () => import('./commands/logs.js'),\n tunnel: () => import('./commands/tunnel.js'),\n tailscale: () => import('./commands/tailscale.js'),\n};\n\nexport interface NonRegistryMatcher {\n matches: (name: string) => boolean;\n load: (program: Command) => Promise<void>;\n}\n\nexport const NON_REGISTRY_COMMAND_MATCHERS: NonRegistryMatcher[] = [\n {\n matches: (name) => name === 'agents' || name.startsWith('agents:'),\n load: async (program) => {\n const { registerAgentsCli } = await import('./commands/agents.js');\n registerAgentsCli(program);\n },\n },\n {\n matches: (name) => name === 'extensions',\n load: async (program) => {\n const { registerExtensionCommands } = await import('./commands/extension.js');\n registerExtensionCommands(program);\n const commandPath = resolveCliCatalogCommandPath(process.argv);\n if (shouldLoadExtensionCliForCommandPath(commandPath)) {\n const { registerExtensionCliCommands } = await import('./extension-cli-register.js');\n await registerExtensionCliCommands(program);\n }\n },\n },\n];\n\nconst FLAGS_WITH_VALUE = new Set(['--config', '--workspace']);\n\n/**\n * Resolve which command module to load based on argv. Skips global flags\n * (`--verbose`/`--config <path>`/`--workspace <path>`) and treats\n * `help <cmd>` as if the user had typed `<cmd>`, so that `xopc help gateway`\n * loads only the gateway module.\n */\nexport function resolveCommandName(argv: string[]): string | undefined {\n let i = 2;\n let firstSubcommand: string | undefined;\n while (i < argv.length) {\n const arg = argv[i];\n if (!arg) {\n i += 1;\n continue;\n }\n if (arg.startsWith('-')) {\n i += FLAGS_WITH_VALUE.has(arg) ? 2 : 1;\n continue;\n }\n if (firstSubcommand === undefined) {\n firstSubcommand = arg;\n if (arg === 'help') {\n i += 1;\n continue;\n }\n return arg;\n }\n return arg;\n }\n return firstSubcommand;\n}\n\nexport async function tryLoadCommand(\n program: Command,\n ctx: CLIContext,\n name: string,\n getCtx?: () => CLIContext,\n): Promise<boolean> {\n const moduleLoader = REGISTRY_COMMAND_MODULES[name];\n if (moduleLoader) {\n await moduleLoader();\n const installed = registry.installOne(program, name, ctx, getCtx);\n if (installed && name === 'gateway') {\n const gatewayCmd = program.commands.find((command) => command.name() === 'gateway');\n if (gatewayCmd) {\n const { prepareGatewayCommandForArgv } = await import('./commands/gateway.js');\n await prepareGatewayCommandForArgv(gatewayCmd, ctx);\n }\n }\n return installed;\n }\n const matcher = NON_REGISTRY_COMMAND_MATCHERS.find((m) => m.matches(name));\n if (matcher) {\n await matcher.load(program);\n return true;\n }\n return false;\n}\n\nexport async function loadAllCommands(\n program: Command,\n ctx: CLIContext,\n getCtx?: () => CLIContext,\n): Promise<void> {\n // Sequential to keep registration order deterministic; registry.install\n // sorts by category and is stable within a category.\n for (const loader of Object.values(REGISTRY_COMMAND_MODULES)) {\n await loader();\n }\n registry.install(program, ctx, getCtx);\n for (const matcher of NON_REGISTRY_COMMAND_MATCHERS) {\n await matcher.load(program);\n }\n const gatewayCmd = program.commands.find((command) => command.name() === 'gateway');\n if (gatewayCmd) {\n const { prepareGatewayCommandForArgv } = await import('./commands/gateway.js');\n await prepareGatewayCommandForArgv(gatewayCmd, ctx);\n }\n}\n"],"mappings":";;;;AAkBA,MAAa,2BAA0D;CACrE,YAAY,OAAO;CACnB,eAAe,OAAO;CACtB,aAAa,OAAO;CACpB,eAAe,OAAO;CACtB,aAAa,OAAO;CACpB,WAAW,OAAO;CAClB,eAAe,OAAO;CACtB,eAAe,OAAO;CACtB,eAAe,OAAO;CACtB,YAAY,OAAO;CACnB,cAAc,OAAO;CACrB,cAAc,OAAO;CACrB,aAAa,OAAO;CACpB,gBAAgB,OAAO;CACvB,cAAc,OAAO;CACrB,iBAAiB,OAAO;CACxB,aAAa,OAAO;CACpB,cAAc,OAAO;CACrB,YAAY,OAAO;CACnB,cAAc,OAAO;CACrB,kBAAkB,OAAO;CACzB,eAAe,OAAO;CACtB,cAAc,OAAO;CACrB,YAAY,OAAO;CACnB,cAAc,OAAO;CACrB,iBAAiB,OAAO;CACzB;AAOD,MAAa,gCAAsD,CACjE;CACE,UAAU,SAAS,SAAS,YAAY,KAAK,WAAW,UAAU;CAClE,MAAM,OAAO,YAAY;EACvB,MAAM,EAAE,sBAAsB,MAAM,OAAO;AAC3C,oBAAkB,QAAQ;;CAE7B,EACD;CACE,UAAU,SAAS,SAAS;CAC5B,MAAM,OAAO,YAAY;EACvB,MAAM,EAAE,8BAA8B,MAAM,OAAO;AACnD,4BAA0B,QAAQ;AAElC,MAAI,qCADgB,6BAA6B,QAAQ,KACL,CAAC,EAAE;GACrD,MAAM,EAAE,iCAAiC,MAAM,OAAO;AACtD,SAAM,6BAA6B,QAAQ;;;CAGhD,CACF;AAED,MAAM,mBAAmB,IAAI,IAAI,CAAC,YAAY,cAAc,CAAC;;;;;;;AAQ7D,SAAgB,mBAAmB,MAAoC;CACrE,IAAI,IAAI;CACR,IAAI;AACJ,QAAO,IAAI,KAAK,QAAQ;EACtB,MAAM,MAAM,KAAK;AACjB,MAAI,CAAC,KAAK;AACR,QAAK;AACL;;AAEF,MAAI,IAAI,WAAW,IAAI,EAAE;AACvB,QAAK,iBAAiB,IAAI,IAAI,GAAG,IAAI;AACrC;;AAEF,MAAI,oBAAoB,KAAA,GAAW;AACjC,qBAAkB;AAClB,OAAI,QAAQ,QAAQ;AAClB,SAAK;AACL;;AAEF,UAAO;;AAET,SAAO;;AAET,QAAO;;AAGT,eAAsB,eACpB,SACA,KACA,MACA,QACkB;CAClB,MAAM,eAAe,yBAAyB;AAC9C,KAAI,cAAc;AAChB,QAAM,cAAc;EACpB,MAAM,YAAY,SAAS,WAAW,SAAS,MAAM,KAAK,OAAO;AACjE,MAAI,aAAa,SAAS,WAAW;GACnC,MAAM,aAAa,QAAQ,SAAS,MAAM,YAAY,QAAQ,MAAM,KAAK,UAAU;AACnF,OAAI,YAAY;IACd,MAAM,EAAE,iCAAiC,MAAM,OAAO;AACtD,UAAM,6BAA6B,YAAY,IAAI;;;AAGvD,SAAO;;CAET,MAAM,UAAU,8BAA8B,MAAM,MAAM,EAAE,QAAQ,KAAK,CAAC;AAC1E,KAAI,SAAS;AACX,QAAM,QAAQ,KAAK,QAAQ;AAC3B,SAAO;;AAET,QAAO;;AAGT,eAAsB,gBACpB,SACA,KACA,QACe;AAGf,MAAK,MAAM,UAAU,OAAO,OAAO,yBAAyB,CAC1D,OAAM,QAAQ;AAEhB,UAAS,QAAQ,SAAS,KAAK,OAAO;AACtC,MAAK,MAAM,WAAW,8BACpB,OAAM,QAAQ,KAAK,QAAQ;CAE7B,MAAM,aAAa,QAAQ,SAAS,MAAM,YAAY,QAAQ,MAAM,KAAK,UAAU;AACnF,KAAI,YAAY;EACd,MAAM,EAAE,iCAAiC,MAAM,OAAO;AACtD,QAAM,6BAA6B,YAAY,IAAI"}
@@ -115,6 +115,10 @@ const ROOT_HELP_COMMANDS = [
115
115
  name: "skills",
116
116
  description: "Manage skills"
117
117
  },
118
+ {
119
+ name: "connectors",
120
+ description: "Browse and install verified connector capabilities from xopc-store"
121
+ },
118
122
  {
119
123
  name: "tailscale",
120
124
  description: "Tailscale status for gateway remote access"
@@ -1 +1 @@
1
- {"version":3,"file":"command-manifest.js","names":[],"sources":["../../../src/cli/command-manifest.ts"],"sourcesContent":["export type RootHelpOption = {\n flags: string;\n description: string;\n};\n\nexport type RootHelpCommand = {\n name: string;\n description: string;\n};\n\nexport const ROOT_COMMAND_DESCRIPTION = 'Ultra-Lightweight Personal AI Assistant. Run `xopc` with no command to open the local TUI.';\n\nexport const ROOT_HELP_OPTIONS: RootHelpOption[] = [\n { flags: '-V, --version', description: 'output the version number' },\n { flags: '--verbose', description: 'Enable verbose logging (default: false)' },\n { flags: '--config <path>', description: 'Config file path' },\n { flags: '--workspace <path>', description: 'Workspace directory' },\n { flags: '-h, --help', description: 'display help for command' },\n];\n\nexport const ROOT_HELP_COMMANDS: RootHelpCommand[] = [\n { name: 'init [options]', description: 'Initialize xopc state directories, config, and agent workspace' },\n { name: 'setup [options]', description: 'Initialize config file and workspace directory' },\n { name: 'profile', description: 'Manage xopc state profiles (~/.xopc vs ~/.xopc-<name>)' },\n { name: 'onboard [options]', description: 'Interactive setup wizard for xopc (gateway uses schema defaults)' },\n { name: 'channels', description: 'Messaging channel configuration' },\n { name: 'auth', description: 'Manage authentication credentials' },\n { name: 'agent [options]', description: 'Chat with the AI agent' },\n { name: 'tui [options]', description: 'Interactive terminal UI (pi-tui)' },\n { name: 'tunnel', description: 'Manage FRP remote access tunnel' },\n { name: 'gateway [options]', description: 'Start the xopc gateway server' },\n { name: 'session', description: 'Session management commands' },\n { name: 'project', description: 'Manage long-running projects' },\n { name: 'doctor [options]', description: 'Check xopc installation health and diagnose common issues' },\n { name: 'update [options]', description: 'Check for and install xopc updates' },\n { name: 'logs', description: 'Manage and query logs' },\n { name: 'goal', description: 'Manage durable goals' },\n { name: 'config [options]', description: 'View and edit configuration' },\n { name: 'image', description: 'Inspect image provider availability' },\n { name: 'models [options]', description: 'List and manage models and model auth' },\n { name: 'providers', description: 'Manage LLM provider credentials (user-friendly hub over `xopc auth`)' },\n { name: 'voice', description: 'Configure text-to-speech (TTS) output' },\n { name: 'search', description: 'Manage web-search providers (brave / tavily / bing / searxng)' },\n { name: 'skills', description: 'Manage skills' },\n { name: 'tailscale', description: 'Tailscale status for gateway remote access' },\n { name: 'browser', description: 'Browser automation commands (uses Playwright)' },\n { name: 'agents', description: 'Manage agents (config + workspace)' },\n { name: 'extensions', description: 'Manage extensions' },\n { name: 'help [command]', description: 'display help for command' },\n];\n\nfunction formatRows(rows: Array<{ label: string; description: string }>): string {\n const labelWidth = Math.max(...rows.map((row) => row.label.length)) + 2;\n return rows.map((row) => ` ${row.label.padEnd(labelWidth)}${row.description}`).join('\\n');\n}\n\nexport function formatRootHelp(): string {\n const options = formatRows(ROOT_HELP_OPTIONS.map((option) => ({ label: option.flags, description: option.description })));\n const commands = formatRows(\n ROOT_HELP_COMMANDS.map((command) => ({ label: command.name, description: command.description })),\n );\n return `Usage: xopc [options] [command]\n\n${ROOT_COMMAND_DESCRIPTION}\n\nOptions:\n${options}\n\nCommands:\n${commands}`;\n}\n"],"mappings":";AAUA,MAAa,2BAA2B;AAExC,MAAa,oBAAsC;CACjD;EAAE,OAAO;EAAiB,aAAa;EAA6B;CACpE;EAAE,OAAO;EAAa,aAAa;EAA2C;CAC9E;EAAE,OAAO;EAAmB,aAAa;EAAoB;CAC7D;EAAE,OAAO;EAAsB,aAAa;EAAuB;CACnE;EAAE,OAAO;EAAc,aAAa;EAA4B;CACjE;AAED,MAAa,qBAAwC;CACnD;EAAE,MAAM;EAAkB,aAAa;EAAkE;CACzG;EAAE,MAAM;EAAmB,aAAa;EAAkD;CAC1F;EAAE,MAAM;EAAW,aAAa;EAA0D;CAC1F;EAAE,MAAM;EAAqB,aAAa;EAAoE;CAC9G;EAAE,MAAM;EAAY,aAAa;EAAmC;CACpE;EAAE,MAAM;EAAQ,aAAa;EAAqC;CAClE;EAAE,MAAM;EAAmB,aAAa;EAA0B;CAClE;EAAE,MAAM;EAAiB,aAAa;EAAoC;CAC1E;EAAE,MAAM;EAAU,aAAa;EAAmC;CAClE;EAAE,MAAM;EAAqB,aAAa;EAAiC;CAC3E;EAAE,MAAM;EAAW,aAAa;EAA+B;CAC/D;EAAE,MAAM;EAAW,aAAa;EAAgC;CAChE;EAAE,MAAM;EAAoB,aAAa;EAA6D;CACtG;EAAE,MAAM;EAAoB,aAAa;EAAsC;CAC/E;EAAE,MAAM;EAAQ,aAAa;EAAyB;CACtD;EAAE,MAAM;EAAQ,aAAa;EAAwB;CACrD;EAAE,MAAM;EAAoB,aAAa;EAA+B;CACxE;EAAE,MAAM;EAAS,aAAa;EAAuC;CACrE;EAAE,MAAM;EAAoB,aAAa;EAAyC;CAClF;EAAE,MAAM;EAAa,aAAa;EAAwE;CAC1G;EAAE,MAAM;EAAS,aAAa;EAAyC;CACvE;EAAE,MAAM;EAAU,aAAa;EAAiE;CAChG;EAAE,MAAM;EAAU,aAAa;EAAiB;CAChD;EAAE,MAAM;EAAa,aAAa;EAA8C;CAChF;EAAE,MAAM;EAAW,aAAa;EAAiD;CACjF;EAAE,MAAM;EAAU,aAAa;EAAsC;CACrE;EAAE,MAAM;EAAc,aAAa;EAAqB;CACxD;EAAE,MAAM;EAAkB,aAAa;EAA4B;CACpE;AAED,SAAS,WAAW,MAA6D;CAC/E,MAAM,aAAa,KAAK,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,MAAM,OAAO,CAAC,GAAG;AACtE,QAAO,KAAK,KAAK,QAAQ,KAAK,IAAI,MAAM,OAAO,WAAW,GAAG,IAAI,cAAc,CAAC,KAAK,KAAK;;AAG5F,SAAgB,iBAAyB;AAKvC,QAAO;;EAEP,yBAAyB;;;EANT,WAAW,kBAAkB,KAAK,YAAY;EAAE,OAAO,OAAO;EAAO,aAAa,OAAO;EAAa,EAAE,CASjH,CAAC;;;EARS,WACf,mBAAmB,KAAK,aAAa;EAAE,OAAO,QAAQ;EAAM,aAAa,QAAQ;EAAa,EAAE,CAU1F"}
1
+ {"version":3,"file":"command-manifest.js","names":[],"sources":["../../../src/cli/command-manifest.ts"],"sourcesContent":["export type RootHelpOption = {\n flags: string;\n description: string;\n};\n\nexport type RootHelpCommand = {\n name: string;\n description: string;\n};\n\nexport const ROOT_COMMAND_DESCRIPTION = 'Ultra-Lightweight Personal AI Assistant. Run `xopc` with no command to open the local TUI.';\n\nexport const ROOT_HELP_OPTIONS: RootHelpOption[] = [\n { flags: '-V, --version', description: 'output the version number' },\n { flags: '--verbose', description: 'Enable verbose logging (default: false)' },\n { flags: '--config <path>', description: 'Config file path' },\n { flags: '--workspace <path>', description: 'Workspace directory' },\n { flags: '-h, --help', description: 'display help for command' },\n];\n\nexport const ROOT_HELP_COMMANDS: RootHelpCommand[] = [\n { name: 'init [options]', description: 'Initialize xopc state directories, config, and agent workspace' },\n { name: 'setup [options]', description: 'Initialize config file and workspace directory' },\n { name: 'profile', description: 'Manage xopc state profiles (~/.xopc vs ~/.xopc-<name>)' },\n { name: 'onboard [options]', description: 'Interactive setup wizard for xopc (gateway uses schema defaults)' },\n { name: 'channels', description: 'Messaging channel configuration' },\n { name: 'auth', description: 'Manage authentication credentials' },\n { name: 'agent [options]', description: 'Chat with the AI agent' },\n { name: 'tui [options]', description: 'Interactive terminal UI (pi-tui)' },\n { name: 'tunnel', description: 'Manage FRP remote access tunnel' },\n { name: 'gateway [options]', description: 'Start the xopc gateway server' },\n { name: 'session', description: 'Session management commands' },\n { name: 'project', description: 'Manage long-running projects' },\n { name: 'doctor [options]', description: 'Check xopc installation health and diagnose common issues' },\n { name: 'update [options]', description: 'Check for and install xopc updates' },\n { name: 'logs', description: 'Manage and query logs' },\n { name: 'goal', description: 'Manage durable goals' },\n { name: 'config [options]', description: 'View and edit configuration' },\n { name: 'image', description: 'Inspect image provider availability' },\n { name: 'models [options]', description: 'List and manage models and model auth' },\n { name: 'providers', description: 'Manage LLM provider credentials (user-friendly hub over `xopc auth`)' },\n { name: 'voice', description: 'Configure text-to-speech (TTS) output' },\n { name: 'search', description: 'Manage web-search providers (brave / tavily / bing / searxng)' },\n { name: 'skills', description: 'Manage skills' },\n { name: 'connectors', description: 'Browse and install verified connector capabilities from xopc-store' },\n { name: 'tailscale', description: 'Tailscale status for gateway remote access' },\n { name: 'browser', description: 'Browser automation commands (uses Playwright)' },\n { name: 'agents', description: 'Manage agents (config + workspace)' },\n { name: 'extensions', description: 'Manage extensions' },\n { name: 'help [command]', description: 'display help for command' },\n];\n\nfunction formatRows(rows: Array<{ label: string; description: string }>): string {\n const labelWidth = Math.max(...rows.map((row) => row.label.length)) + 2;\n return rows.map((row) => ` ${row.label.padEnd(labelWidth)}${row.description}`).join('\\n');\n}\n\nexport function formatRootHelp(): string {\n const options = formatRows(ROOT_HELP_OPTIONS.map((option) => ({ label: option.flags, description: option.description })));\n const commands = formatRows(\n ROOT_HELP_COMMANDS.map((command) => ({ label: command.name, description: command.description })),\n );\n return `Usage: xopc [options] [command]\n\n${ROOT_COMMAND_DESCRIPTION}\n\nOptions:\n${options}\n\nCommands:\n${commands}`;\n}\n"],"mappings":";AAUA,MAAa,2BAA2B;AAExC,MAAa,oBAAsC;CACjD;EAAE,OAAO;EAAiB,aAAa;EAA6B;CACpE;EAAE,OAAO;EAAa,aAAa;EAA2C;CAC9E;EAAE,OAAO;EAAmB,aAAa;EAAoB;CAC7D;EAAE,OAAO;EAAsB,aAAa;EAAuB;CACnE;EAAE,OAAO;EAAc,aAAa;EAA4B;CACjE;AAED,MAAa,qBAAwC;CACnD;EAAE,MAAM;EAAkB,aAAa;EAAkE;CACzG;EAAE,MAAM;EAAmB,aAAa;EAAkD;CAC1F;EAAE,MAAM;EAAW,aAAa;EAA0D;CAC1F;EAAE,MAAM;EAAqB,aAAa;EAAoE;CAC9G;EAAE,MAAM;EAAY,aAAa;EAAmC;CACpE;EAAE,MAAM;EAAQ,aAAa;EAAqC;CAClE;EAAE,MAAM;EAAmB,aAAa;EAA0B;CAClE;EAAE,MAAM;EAAiB,aAAa;EAAoC;CAC1E;EAAE,MAAM;EAAU,aAAa;EAAmC;CAClE;EAAE,MAAM;EAAqB,aAAa;EAAiC;CAC3E;EAAE,MAAM;EAAW,aAAa;EAA+B;CAC/D;EAAE,MAAM;EAAW,aAAa;EAAgC;CAChE;EAAE,MAAM;EAAoB,aAAa;EAA6D;CACtG;EAAE,MAAM;EAAoB,aAAa;EAAsC;CAC/E;EAAE,MAAM;EAAQ,aAAa;EAAyB;CACtD;EAAE,MAAM;EAAQ,aAAa;EAAwB;CACrD;EAAE,MAAM;EAAoB,aAAa;EAA+B;CACxE;EAAE,MAAM;EAAS,aAAa;EAAuC;CACrE;EAAE,MAAM;EAAoB,aAAa;EAAyC;CAClF;EAAE,MAAM;EAAa,aAAa;EAAwE;CAC1G;EAAE,MAAM;EAAS,aAAa;EAAyC;CACvE;EAAE,MAAM;EAAU,aAAa;EAAiE;CAChG;EAAE,MAAM;EAAU,aAAa;EAAiB;CAChD;EAAE,MAAM;EAAc,aAAa;EAAsE;CACzG;EAAE,MAAM;EAAa,aAAa;EAA8C;CAChF;EAAE,MAAM;EAAW,aAAa;EAAiD;CACjF;EAAE,MAAM;EAAU,aAAa;EAAsC;CACrE;EAAE,MAAM;EAAc,aAAa;EAAqB;CACxD;EAAE,MAAM;EAAkB,aAAa;EAA4B;CACpE;AAED,SAAS,WAAW,MAA6D;CAC/E,MAAM,aAAa,KAAK,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,MAAM,OAAO,CAAC,GAAG;AACtE,QAAO,KAAK,KAAK,QAAQ,KAAK,IAAI,MAAM,OAAO,WAAW,GAAG,IAAI,cAAc,CAAC,KAAK,KAAK;;AAG5F,SAAgB,iBAAyB;AAKvC,QAAO;;EAEP,yBAAyB;;;EANT,WAAW,kBAAkB,KAAK,YAAY;EAAE,OAAO,OAAO;EAAO,aAAa,OAAO;EAAa,EAAE,CASjH,CAAC;;;EARS,WACf,mBAAmB,KAAK,aAAa;EAAE,OAAO,QAAQ;EAAM,aAAa,QAAQ;EAAa,EAAE,CAU1F"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ import { type CLIContext } from '../registry.js';
3
+ declare function createConnectorsCommand(ctx: CLIContext): Command;
4
+ export { createConnectorsCommand };
@@ -0,0 +1,96 @@
1
+ import { init_loader, loadConfig, saveConfig } from "../../config/loader.js";
2
+ import { getStoreConnectorInstallPlan, installStoreConnector, listStoreConnectors } from "../../capabilities/store-connector.js";
3
+ import { register } from "../registry.js";
4
+ import { confirm } from "@inquirer/prompts";
5
+ import { Command } from "commander";
6
+ //#region src/cli/commands/connectors.ts
7
+ init_loader();
8
+ function parsePairs(values, option) {
9
+ const output = {};
10
+ for (const value of values ?? []) {
11
+ const index = value.indexOf("=");
12
+ const key = index > 0 ? value.slice(0, index).trim() : "";
13
+ const raw = index > 0 ? value.slice(index + 1) : "";
14
+ if (!key || !raw) throw new Error(`${option} must use KEY=VALUE.`);
15
+ output[key] = raw;
16
+ }
17
+ return output;
18
+ }
19
+ function printPlan(plan) {
20
+ console.log("");
21
+ console.log("Connector install review");
22
+ console.log(` Package: ${plan.packageName}@${plan.version}`);
23
+ console.log(` Name: ${plan.definition.displayName}`);
24
+ console.log(` Authentication: ${plan.definition.auth.mode}`);
25
+ console.log(` Endpoint: ${plan.definition.runtime.type === "mcp" ? String(plan.definition.runtime.serverTemplate.url) : "n/a"}`);
26
+ if (plan.permissions.data?.length) console.log(` Data permissions: ${plan.permissions.data.join(", ")}`);
27
+ if (plan.permissions.networkDomains?.length) console.log(` Network domains: ${plan.permissions.networkDomains.join(", ")}`);
28
+ console.log(" Local command execution: denied");
29
+ console.log("");
30
+ }
31
+ function createConnectorsCommand(ctx) {
32
+ const command = new Command("connectors").description("Browse and install verified connector capabilities from xopc-store");
33
+ command.command("list [query]").description("List connector capabilities from xopc-store").option("--category <category>", "Filter by category").option("--json", "Output JSON").action(async (query, options) => {
34
+ const result = await listStoreConnectors(loadConfig(ctx.configPath), {
35
+ q: query,
36
+ category: options.category,
37
+ page: 1,
38
+ pageSize: 50
39
+ });
40
+ if (options.json) {
41
+ console.log(JSON.stringify(result, null, 2));
42
+ return;
43
+ }
44
+ if (result.items.length === 0) {
45
+ console.log("No connector capabilities found.");
46
+ return;
47
+ }
48
+ for (const item of result.items) {
49
+ console.log(`${item.name}${item.latestVersion ? `@${item.latestVersion}` : ""}`);
50
+ console.log(` ${item.description}`);
51
+ }
52
+ });
53
+ command.command("install <packageName>").description("Verify and install a connector capability from xopc-store").option("--version <version>", "Install an exact version").option("--secret <KEY=VALUE>", "Provide a required secret; repeat for multiple values", (value, previous = []) => [...previous, value], []).option("--config-value <KEY=VALUE>", "Provide a connector config value; repeat for multiple values", (value, previous = []) => [...previous, value], []).option("-y, --yes", "Skip the interactive confirmation", false).action(async (packageName, options) => {
54
+ try {
55
+ const config = loadConfig(ctx.configPath);
56
+ printPlan(await getStoreConnectorInstallPlan(config, packageName, options.version));
57
+ if (!options.yes && process.stdin.isTTY) {
58
+ if (!await confirm({
59
+ message: "Install this connector?",
60
+ default: false
61
+ })) {
62
+ console.log("Install cancelled.");
63
+ return;
64
+ }
65
+ }
66
+ const { instance } = await installStoreConnector(config, packageName, {
67
+ secrets: parsePairs(options.secret, "--secret"),
68
+ config: parsePairs(options.configValue, "--config-value")
69
+ }, options.version);
70
+ await saveConfig(config, ctx.configPath);
71
+ console.log(`Installed ${instance.displayName} (${instance.instanceId}).`);
72
+ } catch (error) {
73
+ console.error(error instanceof Error ? error.message : String(error));
74
+ process.exitCode = 1;
75
+ }
76
+ });
77
+ return command;
78
+ }
79
+ register({
80
+ id: "connectors",
81
+ name: "connectors",
82
+ description: "Browse and install verified connector capabilities from xopc-store",
83
+ factory: createConnectorsCommand,
84
+ metadata: {
85
+ category: "setup",
86
+ examples: [
87
+ "xopc connectors list",
88
+ "xopc connectors install demo-connector",
89
+ "xopc connectors install api-connector --secret API_KEY=…"
90
+ ]
91
+ }
92
+ });
93
+ //#endregion
94
+ export { createConnectorsCommand };
95
+
96
+ //# sourceMappingURL=connectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectors.js","names":[],"sources":["../../../../src/cli/commands/connectors.ts"],"sourcesContent":["import { confirm } from '@inquirer/prompts';\nimport { Command } from 'commander';\n\nimport type { ConnectorInstallInput } from '../../connectors/types.js';\nimport { getStoreConnectorInstallPlan, installStoreConnector, listStoreConnectors } from '../../capabilities/store-connector.js';\nimport { loadConfig, saveConfig } from '../../config/loader.js';\nimport { register, type CLIContext } from '../registry.js';\n\nfunction parsePairs(values: string[] | undefined, option: string): Record<string, string> {\n const output: Record<string, string> = {};\n for (const value of values ?? []) {\n const index = value.indexOf('=');\n const key = index > 0 ? value.slice(0, index).trim() : '';\n const raw = index > 0 ? value.slice(index + 1) : '';\n if (!key || !raw) {\n throw new Error(`${option} must use KEY=VALUE.`);\n }\n output[key] = raw;\n }\n return output;\n}\n\nfunction printPlan(plan: Awaited<ReturnType<typeof getStoreConnectorInstallPlan>>): void {\n console.log('');\n console.log('Connector install review');\n console.log(` Package: ${plan.packageName}@${plan.version}`);\n console.log(` Name: ${plan.definition.displayName}`);\n console.log(` Authentication: ${plan.definition.auth.mode}`);\n console.log(` Endpoint: ${plan.definition.runtime.type === 'mcp' ? String(plan.definition.runtime.serverTemplate.url) : 'n/a'}`);\n if (plan.permissions.data?.length) console.log(` Data permissions: ${plan.permissions.data.join(', ')}`);\n if (plan.permissions.networkDomains?.length) console.log(` Network domains: ${plan.permissions.networkDomains.join(', ')}`);\n console.log(' Local command execution: denied');\n console.log('');\n}\n\nfunction createConnectorsCommand(ctx: CLIContext): Command {\n const command = new Command('connectors').description('Browse and install verified connector capabilities from xopc-store');\n\n command\n .command('list [query]')\n .description('List connector capabilities from xopc-store')\n .option('--category <category>', 'Filter by category')\n .option('--json', 'Output JSON')\n .action(async (query: string | undefined, options: { category?: string; json?: boolean }) => {\n const result = await listStoreConnectors(loadConfig(ctx.configPath), {\n q: query,\n category: options.category,\n page: 1,\n pageSize: 50,\n });\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n if (result.items.length === 0) {\n console.log('No connector capabilities found.');\n return;\n }\n for (const item of result.items) {\n console.log(`${item.name}${item.latestVersion ? `@${item.latestVersion}` : ''}`);\n console.log(` ${item.description}`);\n }\n });\n\n command\n .command('install <packageName>')\n .description('Verify and install a connector capability from xopc-store')\n .option('--version <version>', 'Install an exact version')\n .option('--secret <KEY=VALUE>', 'Provide a required secret; repeat for multiple values', (value, previous: string[] = []) => [...previous, value], [])\n .option('--config-value <KEY=VALUE>', 'Provide a connector config value; repeat for multiple values', (value, previous: string[] = []) => [...previous, value], [])\n .option('-y, --yes', 'Skip the interactive confirmation', false)\n .action(async (packageName: string, options: {\n version?: string;\n secret?: string[];\n configValue?: string[];\n yes?: boolean;\n }) => {\n try {\n const config = loadConfig(ctx.configPath);\n const plan = await getStoreConnectorInstallPlan(config, packageName, options.version);\n printPlan(plan);\n if (!options.yes && process.stdin.isTTY) {\n const accepted = await confirm({ message: 'Install this connector?', default: false });\n if (!accepted) {\n console.log('Install cancelled.');\n return;\n }\n }\n const input: ConnectorInstallInput = {\n secrets: parsePairs(options.secret, '--secret'),\n config: parsePairs(options.configValue, '--config-value'),\n };\n const { instance } = await installStoreConnector(config, packageName, input, options.version);\n await saveConfig(config, ctx.configPath);\n console.log(`Installed ${instance.displayName} (${instance.instanceId}).`);\n } catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n }\n });\n\n return command;\n}\n\nregister({\n id: 'connectors',\n name: 'connectors',\n description: 'Browse and install verified connector capabilities from xopc-store',\n factory: createConnectorsCommand,\n metadata: {\n category: 'setup',\n examples: [\n 'xopc connectors list',\n 'xopc connectors install demo-connector',\n 'xopc connectors install api-connector --secret API_KEY=…',\n ],\n },\n});\n\nexport { createConnectorsCommand };\n"],"mappings":";;;;;;aAKgE;AAGhE,SAAS,WAAW,QAA8B,QAAwC;CACxF,MAAM,SAAiC,EAAE;AACzC,MAAK,MAAM,SAAS,UAAU,EAAE,EAAE;EAChC,MAAM,QAAQ,MAAM,QAAQ,IAAI;EAChC,MAAM,MAAM,QAAQ,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG;EACvD,MAAM,MAAM,QAAQ,IAAI,MAAM,MAAM,QAAQ,EAAE,GAAG;AACjD,MAAI,CAAC,OAAO,CAAC,IACX,OAAM,IAAI,MAAM,GAAG,OAAO,sBAAsB;AAElD,SAAO,OAAO;;AAEhB,QAAO;;AAGT,SAAS,UAAU,MAAsE;AACvF,SAAQ,IAAI,GAAG;AACf,SAAQ,IAAI,2BAA2B;AACvC,SAAQ,IAAI,cAAc,KAAK,YAAY,GAAG,KAAK,UAAU;AAC7D,SAAQ,IAAI,WAAW,KAAK,WAAW,cAAc;AACrD,SAAQ,IAAI,qBAAqB,KAAK,WAAW,KAAK,OAAO;AAC7D,SAAQ,IAAI,eAAe,KAAK,WAAW,QAAQ,SAAS,QAAQ,OAAO,KAAK,WAAW,QAAQ,eAAe,IAAI,GAAG,QAAQ;AACjI,KAAI,KAAK,YAAY,MAAM,OAAQ,SAAQ,IAAI,uBAAuB,KAAK,YAAY,KAAK,KAAK,KAAK,GAAG;AACzG,KAAI,KAAK,YAAY,gBAAgB,OAAQ,SAAQ,IAAI,sBAAsB,KAAK,YAAY,eAAe,KAAK,KAAK,GAAG;AAC5H,SAAQ,IAAI,oCAAoC;AAChD,SAAQ,IAAI,GAAG;;AAGjB,SAAS,wBAAwB,KAA0B;CACzD,MAAM,UAAU,IAAI,QAAQ,aAAa,CAAC,YAAY,qEAAqE;AAE3H,SACG,QAAQ,eAAe,CACvB,YAAY,8CAA8C,CAC1D,OAAO,yBAAyB,qBAAqB,CACrD,OAAO,UAAU,cAAc,CAC/B,OAAO,OAAO,OAA2B,YAAmD;EAC3F,MAAM,SAAS,MAAM,oBAAoB,WAAW,IAAI,WAAW,EAAE;GACnE,GAAG;GACH,UAAU,QAAQ;GAClB,MAAM;GACN,UAAU;GACX,CAAC;AACF,MAAI,QAAQ,MAAM;AAChB,WAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,EAAE,CAAC;AAC5C;;AAEF,MAAI,OAAO,MAAM,WAAW,GAAG;AAC7B,WAAQ,IAAI,mCAAmC;AAC/C;;AAEF,OAAK,MAAM,QAAQ,OAAO,OAAO;AAC/B,WAAQ,IAAI,GAAG,KAAK,OAAO,KAAK,gBAAgB,IAAI,KAAK,kBAAkB,KAAK;AAChF,WAAQ,IAAI,KAAK,KAAK,cAAc;;GAEtC;AAEJ,SACG,QAAQ,wBAAwB,CAChC,YAAY,4DAA4D,CACxE,OAAO,uBAAuB,2BAA2B,CACzD,OAAO,wBAAwB,0DAA0D,OAAO,WAAqB,EAAE,KAAK,CAAC,GAAG,UAAU,MAAM,EAAE,EAAE,CAAC,CACrJ,OAAO,8BAA8B,iEAAiE,OAAO,WAAqB,EAAE,KAAK,CAAC,GAAG,UAAU,MAAM,EAAE,EAAE,CAAC,CAClK,OAAO,aAAa,qCAAqC,MAAM,CAC/D,OAAO,OAAO,aAAqB,YAK9B;AACJ,MAAI;GACF,MAAM,SAAS,WAAW,IAAI,WAAW;AAEzC,aAAU,MADS,6BAA6B,QAAQ,aAAa,QAAQ,QAAQ,CACtE;AACf,OAAI,CAAC,QAAQ,OAAO,QAAQ,MAAM;QAE5B,CAAC,MADkB,QAAQ;KAAE,SAAS;KAA2B,SAAS;KAAO,CAAC,EACvE;AACb,aAAQ,IAAI,qBAAqB;AACjC;;;GAOJ,MAAM,EAAE,aAAa,MAAM,sBAAsB,QAAQ,aAAa;IAHpE,SAAS,WAAW,QAAQ,QAAQ,WAAW;IAC/C,QAAQ,WAAW,QAAQ,aAAa,iBAAiB;IAEgB,EAAE,QAAQ,QAAQ;AAC7F,SAAM,WAAW,QAAQ,IAAI,WAAW;AACxC,WAAQ,IAAI,aAAa,SAAS,YAAY,IAAI,SAAS,WAAW,IAAI;WACnE,OAAO;AACd,WAAQ,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;AACrE,WAAQ,WAAW;;GAErB;AAEJ,QAAO;;AAGT,SAAS;CACP,IAAI;CACJ,MAAM;CACN,aAAa;CACb,SAAS;CACT,UAAU;EACR,UAAU;EACV,UAAU;GACR;GACA;GACA;GACD;EACF;CACF,CAAC"}
@@ -52,7 +52,7 @@ async function checkDatabaseSchema(ctx) {
52
52
  id: "database-schema",
53
53
  label: "Database schema",
54
54
  status: "pass",
55
- message: `SQLite schema v${status.dbVersion} (current release v24).`,
55
+ message: `SQLite schema v${status.dbVersion} (current release v28).`,
56
56
  hints: []
57
57
  };
58
58
  }
@@ -1,10 +1,10 @@
1
1
  import { init_paths, resolveExtensionsDir } from "../../config/paths.js";
2
2
  import { init_loader, loadConfig } from "../../config/loader.js";
3
+ import { downloadExtensionStoreZipBuffer, resolveExtensionZipDownloadUrl, resolveExtensionsStoreBaseUrl } from "../../agent/skills/marketplace/adapters/store/store-api-client.js";
3
4
  import { getContextWithOpts } from "../context.js";
4
5
  import { getExtensionLockfileManager } from "../../extensions/lockfile.js";
5
6
  import { installExtensionFromStoreZip, installFromLocal, installFromNpm, peekExtensionIdFromStoreZip, peekExtensionManifestFromStoreZip } from "../../extensions/install.js";
6
7
  import { fetchRegistry, findExtension, getExtensionMarketplaceStoreBaseUrl, listExtensions, searchExtensions } from "../../extensions/marketplace.js";
7
- import { downloadExtensionStoreZipBuffer, resolveExtensionZipDownloadUrl, resolveExtensionsStoreBaseUrl } from "../../agent/skills/marketplace/adapters/store/store-api-client.js";
8
8
  import { colors } from "../utils/colors.js";
9
9
  import { validateExtensionPackageDirectory } from "./extension-pack.js";
10
10
  import { join, resolve } from "node:path";
@@ -5,8 +5,8 @@ import { createSkillConfigManager, isSkillEnabled } from "../../agent/skills/con
5
5
  import { formatScanSummary, scanSkillDirectory } from "../../agent/skills/scanner.js";
6
6
  import { loadSkillsLock } from "../../agent/skills/hub-lock.js";
7
7
  import { createSkillLoader } from "../../agent/skills/index.js";
8
- import { register } from "../registry.js";
9
8
  import { pullSkillFromSource, updateSkillFromLock } from "../../agent/skills/hub-pull.js";
9
+ import { register } from "../registry.js";
10
10
  import { createSkillsTestCommand } from "./skills-test.js";
11
11
  import { Command } from "commander";
12
12
  //#region src/cli/commands/skills.ts
@@ -1,6 +1,6 @@
1
+ import { init_agent_scope, normalizeAgentId, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
1
2
  import { resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
2
3
  import "../agent-manifest/index.js";
3
- import { init_agent_scope, normalizeAgentId, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
4
4
  import { init_session_key, parseSessionKey } from "../routing/session-key.js";
5
5
  import { agentExists, getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
6
6
  //#region src/config/agent-profile.ts
@@ -659,7 +659,7 @@ strict: z.boolean().optional() }).optional();
659
659
  },
660
660
  maxSseConnections: 100,
661
661
  corsOrigins: [],
662
- skillsMarketplaceProvider: "skillhub",
662
+ skillsMarketplaceProvider: "store",
663
663
  skillsStoreBaseUrl: "https://store.xopc.ai"
664
664
  });
665
665
  ModelsDevConfigSchema = z.object({ enabled: z.boolean().default(true) }).default({ enabled: true });
@@ -1062,7 +1062,7 @@ defaultAgent: z.string().min(1).optional() }).strict().default({});
1062
1062
  },
1063
1063
  maxSseConnections: 100,
1064
1064
  corsOrigins: [],
1065
- skillsMarketplaceProvider: "skillhub",
1065
+ skillsMarketplaceProvider: "store",
1066
1066
  skillsStoreBaseUrl: "https://store.xopc.ai"
1067
1067
  },
1068
1068
  browser: {