@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
@@ -10,24 +10,25 @@
10
10
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.pngv=20260623-2" />
11
11
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=20260623-2" />
12
12
  <title>xopc</title>
13
- <script type="module" crossorigin src="/assets/index-CA2tR2vm.js"></script>
13
+ <script type="module" crossorigin src="/assets/index-38TSE7ng.js"></script>
14
14
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/dist-DokQNVMQ.js">
18
18
  <link rel="modulepreload" crossorigin href="/assets/Combination-BzaXOLd9.js">
19
19
  <link rel="modulepreload" crossorigin href="/assets/dist-CkobR7mk.js">
20
- <link rel="modulepreload" crossorigin href="/assets/cn-BQ_8x0bT.js">
21
20
  <link rel="modulepreload" crossorigin href="/assets/vendor-swr-BIWyz7Rc.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/cn-BQ_8x0bT.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/middleware-Pd0e8Igk.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/locale-store-Ba72bFmP.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/config-reload-event-Bjh2zoKp.js">
25
- <link rel="modulepreload" crossorigin href="/assets/messages-C22hxE1N.js">
26
- <link rel="modulepreload" crossorigin href="/assets/fetch-5V96dUz3.js">
27
- <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-DEMad2wt.js">
25
+ <link rel="modulepreload" crossorigin href="/assets/messages-YzjnURPJ.js">
26
+ <link rel="modulepreload" crossorigin href="/assets/fetch-BMjlW0g1.js">
27
+ <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-CY5W2Pp4.js">
28
28
  <link rel="modulepreload" crossorigin href="/assets/toast-z0toXu32.js">
29
+ <link rel="modulepreload" crossorigin href="/assets/url-DFGNSBNT.js">
29
30
  <link rel="modulepreload" crossorigin href="/assets/theme-store-Bt6vAkSB.js">
30
- <link rel="stylesheet" crossorigin href="/assets/index-Ds3u0LOk.css">
31
+ <link rel="stylesheet" crossorigin href="/assets/index-EKmpPvZj.css">
31
32
  </head>
32
33
  <body>
33
34
  <div id="root"></div>
package/dist/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "0.0.126";
2
+ var version = "0.0.128";
3
3
  //#endregion
4
4
  export { version };
5
5
 
@@ -47,4 +47,9 @@ export interface AgentInstanceGateway {
47
47
  /** Fire-and-forget review (memory + skill nudges) once the main turn finishes. */
48
48
  scheduleBackgroundReviewAfterUserTurn(sessionKey: string): void;
49
49
  expandSkillUserText(text: string): string;
50
+ prepareSkillTurn(sessionKey: string, text: string): {
51
+ text: string;
52
+ activatedCapabilityNames: string[];
53
+ };
54
+ withSkillCapabilities<T>(sessionKey: string, capabilityNames: readonly string[], run: () => Promise<T>): Promise<T>;
50
55
  }
@@ -9,6 +9,8 @@ import type { AgentInstanceGateway } from './agent-instance-gateway.js';
9
9
  import { type Config } from '../config/schema.js';
10
10
  import { type EffectiveAgentProfile } from '../config/agent-profile.js';
11
11
  import type { ModelManager } from './models/manager.js';
12
+ import type { SkillInstallToolOptions, SkillInstallToolResult } from './tools/skill-install-tool.js';
13
+ import { type AgentCapabilityCatalogEntry, type AgentCapabilitySessionState } from './capabilities/index.js';
12
14
  import type { GatewayClarifyRequestFn } from './tools/clarify-tool.js';
13
15
  import type { ExtensionRegistryImpl as ExtensionRegistry } from '../extensions/index.js';
14
16
  import type { MessageBus } from '../infra/bus/index.js';
@@ -91,6 +93,8 @@ export interface AgentManagerConfig {
91
93
  onSkillsUpdated?: (payload: {
92
94
  reason: 'disk' | 'config';
93
95
  }) => void;
96
+ /** Install a managed skill from an explicit source and refresh runtime state. */
97
+ installSkillFromSource?: (opts: SkillInstallToolOptions) => Promise<SkillInstallToolResult>;
94
98
  /** Dynamic workspace verification context injected into the system prompt when edits are pending. */
95
99
  getSelfVerifyPromptContext?: (sessionKey: string, agentId?: string) => string;
96
100
  /**
@@ -107,16 +111,25 @@ export interface AgentInstance {
107
111
  resolvedWorkspacePath: string;
108
112
  /** Tool names registered on this agent (for skill indexing / tool gating). */
109
113
  registeredToolNames: string[];
114
+ /** Capability packs activated by explicit skills or UI entry points in this session. */
115
+ activeCapabilities: Map<string, AgentCapabilitySessionState>;
110
116
  activeProjectContext?: string;
111
117
  activeSelfVerifyContext?: string;
112
118
  /** Declared env var names from skill_view; exec_command reads values from process.env at spawn time. */
113
119
  skillEnvPassthroughKeys: Set<string>;
114
120
  }
121
+ export interface PreparedSkillTurn {
122
+ text: string;
123
+ activatedCapabilityNames: string[];
124
+ }
115
125
  export declare class AgentManager implements AgentInstanceGateway {
116
126
  private agents;
117
127
  private config;
118
128
  private toolsFactory;
119
129
  private mergedConfig;
130
+ private activeCapabilityNames;
131
+ private buildActiveCapabilityContext;
132
+ private resolveCapabilityCatalogForInstance;
120
133
  /** Default agent workspace (effective profile for `getDefaultAgentId`). */
121
134
  private baseWorkspacePath;
122
135
  /** Per-session absolute markdown workspace when `SessionAgentConfig.workingDirectoryOverride` is set. */
@@ -194,6 +207,9 @@ export declare class AgentManager implements AgentInstanceGateway {
194
207
  * Expand `/skill:name` user text into the full skill block for the current turn (WebChat, channels).
195
208
  */
196
209
  expandSkillUserText(text: string): string;
210
+ prepareSkillTurn(sessionKey: string, text: string): PreparedSkillTurn;
211
+ withSkillCapabilities<T>(sessionKey: string, capabilityNames: readonly string[], run: () => Promise<T>): Promise<T>;
212
+ private buildSystemPromptForInstance;
197
213
  /** Structured SKILL.md preview for the gateway console. */
198
214
  getSkillMarkdownSource(skillName: string): SkillMarkdownPreviewPayload | null;
199
215
  private isProjectWorkspaceTrusted;
@@ -253,6 +269,7 @@ export declare class AgentManager implements AgentInstanceGateway {
253
269
  private resolveApiKeyWithCache;
254
270
  private getSelfVerifyPromptContext;
255
271
  private composeDynamicProjectContext;
272
+ getCapabilityCatalogForSession(sessionKey?: string): AgentCapabilityCatalogEntry[];
256
273
  private createAgentForProfile;
257
274
  private refreshActiveProjectContextIfChanged;
258
275
  /**
@@ -17,7 +17,10 @@ import { clearBootstrapSnapshot } from "./bootstrap/bootstrap-cache.js";
17
17
  import { resolveBootstrapContextSync } from "./bootstrap/bootstrap-files.js";
18
18
  import { loadProjectAgentsContextFile } from "./bootstrap/project-agents-context.js";
19
19
  import { createSkillConfigManager, isSkillEnabled, resolveSkillConfig } from "./skills/config.js";
20
+ import { resolveWorkspaceSkillsDir, resolveWorkspaceSkillsLockPath } from "./skills/workspace-skills-dir.js";
20
21
  import { isMemorySubsystemEnabled, shouldRegisterCuratedMemoryTool } from "./memory/memory-config.js";
22
+ import { createAgentCapabilitySessionState, resolveAgentCapabilityCatalog } from "./capabilities/registry.js";
23
+ import "./capabilities/index.js";
21
24
  import { AgentToolsFactory } from "./tools/factory.js";
22
25
  import { parseMcpToolName } from "./mcp/bundle-mcp-policy.js";
23
26
  import { disposeAllSessionMcpRuntimes, retireSessionMcpRuntimeForSessionKey } from "./mcp/bundle-mcp-runtime.js";
@@ -58,6 +61,33 @@ var AgentManager = class {
58
61
  const base = this.config.config;
59
62
  return base ? applyConfigOverrides(base) : void 0;
60
63
  }
64
+ activeCapabilityNames(inst) {
65
+ return inst ? [...inst.activeCapabilities.keys()] : [];
66
+ }
67
+ buildActiveCapabilityContext(instance, capabilityNames, registeredToolNames) {
68
+ const availableCatalog = this.resolveCapabilityCatalogForInstance(instance, registeredToolNames).filter((definition) => definition.availableTools.length > 0);
69
+ const definitionsById = new Map(availableCatalog.map((definition) => [definition.id, definition]));
70
+ const definitions = [...new Set(capabilityNames)].map((name) => definitionsById.get(name)).filter((definition) => Boolean(definition));
71
+ if (definitions.length === 0) return void 0;
72
+ return [
73
+ "# Active Capability Packs",
74
+ "",
75
+ "These capability packs are active for the current task. Use their tools only when they directly help satisfy the user request.",
76
+ "",
77
+ ...definitions.map((definition) => {
78
+ const tools = definition.availableTools.join(", ");
79
+ const hint = definition.promptHint?.trim() ? `\n Guidance: ${definition.promptHint.trim()}` : "";
80
+ return `- ${definition.id} (${definition.label}): ${definition.description}\n Tools: ${tools}${hint}`;
81
+ })
82
+ ].join("\n");
83
+ }
84
+ resolveCapabilityCatalogForInstance(instance, registeredToolNames = instance?.registeredToolNames ?? []) {
85
+ return resolveAgentCapabilityCatalog({
86
+ registeredToolNames,
87
+ lazyToolNames: this.toolsFactory.getLazyCapabilityToolNames(),
88
+ deniedToolNames: instance ? [...instance.effectiveProfile.tools.denied] : []
89
+ });
90
+ }
61
91
  /** Default agent workspace (effective profile for `getDefaultAgentId`). */
62
92
  baseWorkspacePath;
63
93
  /** Per-session absolute markdown workspace when `SessionAgentConfig.workingDirectoryOverride` is set. */
@@ -227,7 +257,8 @@ var AgentManager = class {
227
257
  const inst = this.agents.get(ctx.sessionKey);
228
258
  if (!inst) return;
229
259
  for (const n of names) if (isValidSkillEnvVarName(n)) inst.skillEnvPassthroughKeys.add(n.trim());
230
- }
260
+ },
261
+ installSkillFromSource: this.config.installSkillFromSource
231
262
  };
232
263
  }
233
264
  getMemoryManager() {
@@ -287,6 +318,81 @@ var AgentManager = class {
287
318
  registeredToolNames: inst?.registeredToolNames
288
319
  });
289
320
  }
321
+ prepareSkillTurn(sessionKey, text) {
322
+ this.getOrCreateAgent(sessionKey);
323
+ const inst = this.agents.get(sessionKey);
324
+ if (!text.includes("/skill:")) return {
325
+ text,
326
+ activatedCapabilityNames: this.activeCapabilityNames(inst)
327
+ };
328
+ const rt = this.getWorkspaceRuntimeForSession(sessionKey);
329
+ const options = {
330
+ skillAllowlist: inst?.effectiveProfile.skillsAllowlist,
331
+ registeredToolNames: inst?.registeredToolNames
332
+ };
333
+ const expanded = text.trimStart().startsWith("/skill:") ? rt.skillManager.expandCommand(text, options) : text;
334
+ const selectedCapabilities = rt.skillManager.getActivatedCapabilitiesForText(text, options);
335
+ const turnOnlyCapabilities = [];
336
+ const now = Date.now();
337
+ for (const capabilityName of selectedCapabilities) {
338
+ const state = createAgentCapabilitySessionState(capabilityName, "skill", now);
339
+ if (!state) continue;
340
+ if (state.ttl === "turn") {
341
+ turnOnlyCapabilities.push(state.id);
342
+ continue;
343
+ }
344
+ inst?.activeCapabilities.set(state.id, state);
345
+ }
346
+ return {
347
+ text: expanded,
348
+ activatedCapabilityNames: [...new Set([...this.activeCapabilityNames(inst), ...turnOnlyCapabilities])]
349
+ };
350
+ }
351
+ async withSkillCapabilities(sessionKey, capabilityNames, run) {
352
+ const requested = [...new Set(capabilityNames.map((name) => name.trim()).filter(Boolean))];
353
+ if (requested.length === 0) return run();
354
+ this.getOrCreateAgent(sessionKey);
355
+ const inst = this.agents.get(sessionKey);
356
+ if (!inst) return run();
357
+ const activatedTools = this.toolsFactory.createCapabilityTools(requested, { disabledTools: inst.effectiveProfile.tools.denied });
358
+ const existingNames = new Set(inst.registeredToolNames);
359
+ const newTools = activatedTools.filter((tool) => !existingNames.has(tool.name));
360
+ const originalTools = inst.agent.state.tools;
361
+ const originalRegisteredToolNames = inst.registeredToolNames;
362
+ const originalSystemPrompt = inst.agent.state.systemPrompt;
363
+ const nextRegisteredToolNames = [...originalRegisteredToolNames, ...newTools.map((tool) => tool.name)];
364
+ inst.agent.state.tools = newTools.length > 0 ? [...originalTools, ...newTools] : originalTools;
365
+ inst.registeredToolNames = nextRegisteredToolNames;
366
+ inst.agent.state.systemPrompt = this.buildSystemPromptForInstance(inst, nextRegisteredToolNames, requested);
367
+ try {
368
+ return await run();
369
+ } finally {
370
+ inst.agent.state.tools = originalTools;
371
+ inst.registeredToolNames = originalRegisteredToolNames;
372
+ inst.agent.state.systemPrompt = originalSystemPrompt;
373
+ }
374
+ }
375
+ buildSystemPromptForInstance(instance, registeredToolNames = instance.registeredToolNames, activeCapabilityNames = this.activeCapabilityNames(instance)) {
376
+ const cfg = this.config.config;
377
+ const resolvedWorkspacePath = this.getResolvedWorkspaceForSession(instance.sessionKey);
378
+ const rt = this.workspaceRuntimes.getOrCreate(resolvedWorkspacePath);
379
+ const contextFiles = this.resolveContextFilesForSession(instance.sessionKey, instance.effectiveProfile);
380
+ const modelRef = instance.effectiveProfile.primaryModelRef?.trim() || this.defaultModel;
381
+ const thinkingLevel = instance.agent.state.thinkingLevel ?? instance.effectiveProfile.thinkingDefault ?? this.config.thinkingLevel ?? "medium";
382
+ return rt.systemPromptBuilder.build(contextFiles, {
383
+ externalMemoryInstructions: rt.memoryManager.buildExternalSystemPrompt(),
384
+ workspaceOverride: resolvedWorkspacePath,
385
+ profileMarkdownPathRoot: resolveAgentProfileDir(cfg, instance.effectiveProfile.agentId),
386
+ systemPromptOverride: instance.effectiveProfile.systemPromptOverride,
387
+ skillAllowlist: instance.effectiveProfile.skillsAllowlist,
388
+ registeredToolNames,
389
+ sessionKey: instance.sessionKey,
390
+ modelRef,
391
+ agentId: instance.effectiveProfile.agentId,
392
+ thinkingLevel,
393
+ activeProjectContext: this.composeDynamicProjectContext(instance.activeProjectContext, instance.activeSelfVerifyContext, this.buildActiveCapabilityContext(instance, activeCapabilityNames, registeredToolNames))
394
+ });
395
+ }
290
396
  /** Structured SKILL.md preview for the gateway console. */
291
397
  getSkillMarkdownSource(skillName) {
292
398
  const skill = this.getCurrentWorkspaceRuntime().skillManager.findSkill(skillName);
@@ -339,13 +445,15 @@ var AgentManager = class {
339
445
  }
340
446
  return contextFiles;
341
447
  }
342
- skillCatalogEntryFromSkill(s, skillsConfig = createSkillConfigManager(resolveStateDir()).load(), lock = loadSkillsLock()) {
448
+ skillCatalogEntryFromSkill(s, skillsConfig = createSkillConfigManager(resolveStateDir()).load(), lock = loadSkillsLock(), workspaceLock, workspaceDir) {
343
449
  const base = resolve(s.baseDir);
344
- const managed = isUnderManagedSkillsDir(s.baseDir);
450
+ const workspaceRoot = workspaceDir ? resolveWorkspaceSkillsDir(workspaceDir) : "";
451
+ const workspaceManaged = workspaceRoot ? s.source === "workspace" && base.startsWith(resolve(workspaceRoot) + sep) : false;
452
+ const managed = isUnderManagedSkillsDir(s.baseDir) || workspaceManaged;
345
453
  const directoryId = base.split(sep).filter(Boolean).pop() || s.name;
346
454
  const enabled = !(skillsConfig.entries?.[s.name]?.enabled === false);
347
455
  const hubKey = managed ? basename(base) : "";
348
- const hub = managed && hubKey ? lock.entries[hubKey] : void 0;
456
+ const hub = managed && hubKey ? (workspaceManaged ? workspaceLock : lock)?.entries[hubKey] : void 0;
349
457
  return {
350
458
  directoryId,
351
459
  name: s.name,
@@ -365,9 +473,12 @@ var AgentManager = class {
365
473
  getSkillCatalogSnapshot() {
366
474
  const skillsConfig = createSkillConfigManager(resolveStateDir()).load();
367
475
  const lock = loadSkillsLock();
476
+ const sessionKey = this.config.getCurrentContext?.()?.sessionKey;
477
+ const workspaceDir = sessionKey ? this.getResolvedWorkspaceForSession(sessionKey) : this.baseWorkspacePath;
478
+ const workspaceLock = loadSkillsLock(resolveWorkspaceSkillsLockPath(workspaceDir));
368
479
  const rt = this.getCurrentWorkspaceRuntime();
369
480
  return {
370
- catalog: rt.skillManager.getSkills().map((s) => this.skillCatalogEntryFromSkill(s, skillsConfig, lock)),
481
+ catalog: rt.skillManager.getSkills().map((s) => this.skillCatalogEntryFromSkill(s, skillsConfig, lock, workspaceLock, workspaceDir)),
371
482
  version: rt.skillManager.getVersion(),
372
483
  loadedAt: rt.skillManager.getLoadedAt(),
373
484
  diagnostics: rt.skillManager.getDiagnostics(),
@@ -381,6 +492,7 @@ var AgentManager = class {
381
492
  const rt = this.workspaceRuntimes.getOrCreate(profile.resolvedWorkspacePath);
382
493
  const skillsConfig = createSkillConfigManager(resolveStateDir()).load();
383
494
  const lock = loadSkillsLock();
495
+ const workspaceLock = loadSkillsLock(resolveWorkspaceSkillsLockPath(profile.resolvedWorkspacePath));
384
496
  const allow = profile.skillsAllowlist === void 0 ? void 0 : new Set(profile.skillsAllowlist.map((s) => s.toLowerCase()));
385
497
  const skills = rt.skillManager.getSkills().map((s) => {
386
498
  let unavailableReason = null;
@@ -389,7 +501,7 @@ var AgentManager = class {
389
501
  else if (!isSkillEnabled(s, skillsConfig)) unavailableReason = "requirements-unmet";
390
502
  else if (allow !== void 0 && !allow.has(s.name.toLowerCase())) unavailableReason = "agent-denied";
391
503
  return {
392
- ...this.skillCatalogEntryFromSkill(s, skillsConfig, lock),
504
+ ...this.skillCatalogEntryFromSkill(s, skillsConfig, lock, workspaceLock, profile.resolvedWorkspacePath),
393
505
  availableForCurrentAgent: unavailableReason === null,
394
506
  unavailableReason
395
507
  };
@@ -544,6 +656,7 @@ var AgentManager = class {
544
656
  effectiveProfile: profile,
545
657
  resolvedWorkspacePath: resolvedPath,
546
658
  registeredToolNames,
659
+ activeCapabilities: /* @__PURE__ */ new Map(),
547
660
  activeProjectContext,
548
661
  activeSelfVerifyContext,
549
662
  skillEnvPassthroughKeys: /* @__PURE__ */ new Set()
@@ -701,8 +814,12 @@ var AgentManager = class {
701
814
  getSelfVerifyPromptContext(sessionKey, agentId) {
702
815
  return this.config.getSelfVerifyPromptContext?.(sessionKey, agentId).trim() ?? "";
703
816
  }
704
- composeDynamicProjectContext(activeProjectContext, selfVerifyContext) {
705
- return [activeProjectContext?.trim(), selfVerifyContext?.trim()].filter((section) => Boolean(section)).join("\n\n") || void 0;
817
+ composeDynamicProjectContext(...sections) {
818
+ return sections.map((section) => section?.trim()).filter((section) => Boolean(section)).join("\n\n") || void 0;
819
+ }
820
+ getCapabilityCatalogForSession(sessionKey) {
821
+ const inst = sessionKey?.trim() ? this.agents.get(sessionKey.trim()) : void 0;
822
+ return this.resolveCapabilityCatalogForInstance(inst);
706
823
  }
707
824
  createAgentForProfile(sessionKey, profile, resolvedWorkspacePath, rt, activeProjectContext, activeSelfVerifyContext) {
708
825
  const modelRef = profile.primaryModelRef?.trim() || this.defaultModel;