@xopcai/xopc 0.0.149 → 0.0.151

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 (2914) hide show
  1. package/README.md +10 -0
  2. package/README.zh-CN.md +10 -0
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/dashscope/src/image-generation-provider.js +0 -2
  5. package/dist/extensions/demo-memory/src/index.js +0 -2
  6. package/dist/extensions/fal/src/image-generation-provider.js +0 -2
  7. package/dist/extensions/feishu/src/actions/message-action-handler.js +0 -2
  8. package/dist/extensions/feishu/src/adapters/cli-login.js +0 -2
  9. package/dist/extensions/feishu/src/adapters/gateway-setup.js +0 -2
  10. package/dist/extensions/feishu/src/adapters/onboard-cli.js +0 -2
  11. package/dist/extensions/feishu/src/auth/app-registration.js +0 -2
  12. package/dist/extensions/feishu/src/auth/pairing.js +0 -2
  13. package/dist/extensions/feishu/src/auth/paths.js +0 -2
  14. package/dist/extensions/feishu/src/directory/directory-adapter.js +0 -2
  15. package/dist/extensions/feishu/src/format.js +0 -2
  16. package/dist/extensions/feishu/src/index.js +0 -2
  17. package/dist/extensions/feishu/src/outbound/actions.js +0 -2
  18. package/dist/extensions/feishu/src/outbound/media-load.js +0 -2
  19. package/dist/extensions/feishu/src/outbound/outbound-adapter.js +0 -2
  20. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js +0 -2
  21. package/dist/extensions/feishu/src/pairing-config-resolver.js +0 -2
  22. package/dist/extensions/feishu/src/plugin.js +0 -2
  23. package/dist/extensions/feishu/src/schema/config-schema.js +0 -2
  24. package/dist/extensions/feishu/src/state/accounts.js +0 -2
  25. package/dist/extensions/feishu/src/state/message-bindings.js +0 -2
  26. package/dist/extensions/feishu/src/state/thread-bindings.js +0 -2
  27. package/dist/extensions/feishu/src/status/doctor.js +0 -2
  28. package/dist/extensions/feishu/src/status/status-adapter.js +0 -2
  29. package/dist/extensions/feishu/src/streaming/streaming-adapter.js +0 -2
  30. package/dist/extensions/feishu/src/subagent-hooks.js +0 -2
  31. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js +0 -2
  32. package/dist/extensions/feishu/src/tools/docx/docx-color-text.d.ts +6 -3386
  33. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js +0 -2
  34. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.d.ts +16 -16927
  35. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js +0 -2
  36. package/dist/extensions/feishu/src/tools/tools.js +0 -2
  37. package/dist/extensions/feishu/src/transport/client/client.js +2 -4
  38. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js +0 -2
  39. package/dist/extensions/feishu/src/transport/client/lark-sdk.d.ts +3 -0
  40. package/dist/extensions/feishu/src/transport/client/lark-sdk.js +14 -0
  41. package/dist/extensions/feishu/src/transport/reliability/dedupe.js +0 -2
  42. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js +0 -2
  43. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js +0 -2
  44. package/dist/extensions/feishu/src/transport/socket-mode/retry.js +0 -2
  45. package/dist/extensions/feishu/src/transport/text/mentions.js +0 -2
  46. package/dist/extensions/feishu/src/transport/webhook/monitor.js +3 -5
  47. package/dist/extensions/feishu/src/ui/config-surface.js +0 -2
  48. package/dist/extensions/feishu/src/workflow-progress.js +0 -2
  49. package/dist/extensions/google/src/image-generation-provider.js +0 -2
  50. package/dist/extensions/minimax/src/image-generation-provider.js +0 -2
  51. package/dist/extensions/openai/src/image-generation-provider.js +0 -2
  52. package/dist/extensions/telegram/src/access-control.js +0 -2
  53. package/dist/extensions/telegram/src/account-manager.js +0 -2
  54. package/dist/extensions/telegram/src/actions/message-actions.js +0 -2
  55. package/dist/extensions/telegram/src/adapters/command-adapter.js +0 -2
  56. package/dist/extensions/telegram/src/adapters/config-adapter.js +0 -2
  57. package/dist/extensions/telegram/src/adapters/debounce-keys.js +0 -2
  58. package/dist/extensions/telegram/src/adapters/gateway-adapter.js +0 -2
  59. package/dist/extensions/telegram/src/adapters/gateway-setup.js +0 -2
  60. package/dist/extensions/telegram/src/adapters/inbound-access.js +0 -2
  61. package/dist/extensions/telegram/src/adapters/index.js +0 -2
  62. package/dist/extensions/telegram/src/adapters/onboard-cli.js +0 -2
  63. package/dist/extensions/telegram/src/adapters/outbound-adapter.js +0 -2
  64. package/dist/extensions/telegram/src/adapters/security-adapter.js +0 -2
  65. package/dist/extensions/telegram/src/adapters/setup-wizard.js +0 -2
  66. package/dist/extensions/telegram/src/adapters/status-adapter.js +0 -2
  67. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +0 -2
  68. package/dist/extensions/telegram/src/api-root.js +0 -2
  69. package/dist/extensions/telegram/src/approval-delivery.js +0 -2
  70. package/dist/extensions/telegram/src/approval-store.js +0 -2
  71. package/dist/extensions/telegram/src/caption.js +0 -2
  72. package/dist/extensions/telegram/src/command-handler.js +0 -2
  73. package/dist/extensions/telegram/src/config-schema.js +0 -2
  74. package/dist/extensions/telegram/src/conversation-id.js +0 -2
  75. package/dist/extensions/telegram/src/dedupe.js +0 -2
  76. package/dist/extensions/telegram/src/delivery-chat-id.js +0 -2
  77. package/dist/extensions/telegram/src/doctor.js +0 -2
  78. package/dist/extensions/telegram/src/draft-stream-lifecycle.js +0 -2
  79. package/dist/extensions/telegram/src/draft-stream-loop.js +0 -2
  80. package/dist/extensions/telegram/src/draft-stream.js +0 -2
  81. package/dist/extensions/telegram/src/errors.js +0 -2
  82. package/dist/extensions/telegram/src/exec-approval-handler.js +0 -2
  83. package/dist/extensions/telegram/src/exec-approvals.js +0 -2
  84. package/dist/extensions/telegram/src/focus-handler.js +0 -2
  85. package/dist/extensions/telegram/src/format.js +0 -2
  86. package/dist/extensions/telegram/src/group-config-resolver.js +0 -2
  87. package/dist/extensions/telegram/src/inbound-coalescer.js +0 -2
  88. package/dist/extensions/telegram/src/inbound-processor.js +0 -2
  89. package/dist/extensions/telegram/src/index.js +0 -2
  90. package/dist/extensions/telegram/src/inline-keyboards.js +0 -2
  91. package/dist/extensions/telegram/src/network-errors.js +0 -2
  92. package/dist/extensions/telegram/src/outbound-sender.js +0 -2
  93. package/dist/extensions/telegram/src/pairing-config-resolver.js +0 -2
  94. package/dist/extensions/telegram/src/plugin-defaults.js +0 -2
  95. package/dist/extensions/telegram/src/plugin.js +0 -2
  96. package/dist/extensions/telegram/src/polling-session.js +0 -2
  97. package/dist/extensions/telegram/src/proxy-fetch.js +0 -2
  98. package/dist/extensions/telegram/src/reactions.js +0 -2
  99. package/dist/extensions/telegram/src/reply-params.js +0 -2
  100. package/dist/extensions/telegram/src/routing-integration.js +0 -2
  101. package/dist/extensions/telegram/src/send-options.js +0 -2
  102. package/dist/extensions/telegram/src/sent-cache.js +0 -2
  103. package/dist/extensions/telegram/src/startup-errors.js +0 -2
  104. package/dist/extensions/telegram/src/telegram-actions.js +0 -2
  105. package/dist/extensions/telegram/src/telegram-draft-errors.js +0 -2
  106. package/dist/extensions/telegram/src/thread-bindings.js +0 -2
  107. package/dist/extensions/telegram/src/timeout-abort.js +0 -2
  108. package/dist/extensions/telegram/src/token-resolver.js +0 -2
  109. package/dist/extensions/telegram/src/update-offset-store.js +0 -2
  110. package/dist/extensions/telegram/src/workflow-progress.js +0 -2
  111. package/dist/extensions/telegram/xopc.extension.json +1 -1
  112. package/dist/extensions/weixin/src/adapters/onboard-cli.js +0 -2
  113. package/dist/extensions/weixin/src/api/api.js +0 -2
  114. package/dist/extensions/weixin/src/api/config-cache.js +0 -2
  115. package/dist/extensions/weixin/src/api/session-guard.js +0 -2
  116. package/dist/extensions/weixin/src/api/types.js +0 -2
  117. package/dist/extensions/weixin/src/auth/accounts.js +0 -2
  118. package/dist/extensions/weixin/src/auth/login-qr.js +0 -2
  119. package/dist/extensions/weixin/src/auth/pairing.js +0 -2
  120. package/dist/extensions/weixin/src/auth/weixin-account-id.js +0 -2
  121. package/dist/extensions/weixin/src/cdn/aes-ecb.js +0 -2
  122. package/dist/extensions/weixin/src/cdn/cdn-upload.js +0 -2
  123. package/dist/extensions/weixin/src/cdn/cdn-url.js +0 -2
  124. package/dist/extensions/weixin/src/cdn/pic-decrypt.js +0 -2
  125. package/dist/extensions/weixin/src/cdn/upload.js +0 -2
  126. package/dist/extensions/weixin/src/cli/gateway-qr-login.js +0 -2
  127. package/dist/extensions/weixin/src/cli/qr-login.js +0 -2
  128. package/dist/extensions/weixin/src/config-schema.js +0 -2
  129. package/dist/extensions/weixin/src/config-surface.js +0 -2
  130. package/dist/extensions/weixin/src/delivery-to.js +0 -2
  131. package/dist/extensions/weixin/src/index.js +0 -2
  132. package/dist/extensions/weixin/src/media/data-url.js +0 -2
  133. package/dist/extensions/weixin/src/media/media-download.js +0 -2
  134. package/dist/extensions/weixin/src/media/mime.js +0 -2
  135. package/dist/extensions/weixin/src/media/silk-transcode.js +0 -2
  136. package/dist/extensions/weixin/src/messaging/context-token-init.js +0 -2
  137. package/dist/extensions/weixin/src/messaging/debug-mode.js +0 -2
  138. package/dist/extensions/weixin/src/messaging/error-notice.js +0 -2
  139. package/dist/extensions/weixin/src/messaging/inbound.js +0 -2
  140. package/dist/extensions/weixin/src/messaging/markdown-filter.js +0 -2
  141. package/dist/extensions/weixin/src/messaging/process-message.js +0 -2
  142. package/dist/extensions/weixin/src/messaging/send-media.js +0 -2
  143. package/dist/extensions/weixin/src/messaging/send.js +0 -2
  144. package/dist/extensions/weixin/src/messaging/slash-commands.js +0 -2
  145. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js +0 -2
  146. package/dist/extensions/weixin/src/monitor/monitor.js +0 -2
  147. package/dist/extensions/weixin/src/outbound-send.js +0 -2
  148. package/dist/extensions/weixin/src/pairing-config-resolver.js +0 -2
  149. package/dist/extensions/weixin/src/plugin.js +0 -2
  150. package/dist/extensions/weixin/src/routing-integration.js +0 -2
  151. package/dist/extensions/weixin/src/storage/state-dir.js +0 -2
  152. package/dist/extensions/weixin/src/storage/sync-buf.js +0 -2
  153. package/dist/extensions/weixin/src/util/logger.js +0 -2
  154. package/dist/extensions/weixin/src/util/random.js +0 -2
  155. package/dist/extensions/weixin/src/util/redact.js +0 -2
  156. package/dist/extensions/weixin/src/workflow-progress.js +0 -2
  157. package/dist/gateway/static/root/assets/{activity-store-B4s0ipx2.js → activity-store-uu1xu9Pl.js} +1 -1
  158. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSccACje.js → agent-avatar-dicebear-BuO-OVfD.js} +1 -1
  159. package/dist/gateway/static/root/assets/agents-Bpv3h31T.js +2 -0
  160. package/dist/gateway/static/root/assets/{api-BMdUsNCV.js → api-CwL38LEV.js} +1 -1
  161. package/dist/gateway/static/root/assets/{app-management-settings-panel-DrLGhYkI.js → app-management-settings-panel-B6OU3Eol.js} +1 -1
  162. package/dist/gateway/static/root/assets/appearance-settings-BaP4GFvN.js +1 -0
  163. package/dist/gateway/static/root/assets/apps-page-DZKNIMRg.js +1 -0
  164. package/dist/gateway/static/root/assets/{archive-plugin-BQ17IK9x.js → archive-plugin-CJX3zIh_.js} +1 -1
  165. package/dist/gateway/static/root/assets/{attachment-load-HXvgWHXu.js → attachment-load-CI1ejk_l.js} +1 -1
  166. package/dist/gateway/static/root/assets/{automation-suggestion-card-CjIWpsch.js → automation-suggestion-card-CjmhICbv.js} +1 -1
  167. package/dist/gateway/static/root/assets/automations-page-BtZl3B8m.js +6 -0
  168. package/dist/gateway/static/root/assets/{binary-plugins-DifWJzNZ.js → binary-plugins-CZ8nOXqK.js} +1 -1
  169. package/dist/gateway/static/root/assets/{block-editor-DtRzIkPU.js → block-editor-BoSfyS_j.js} +46 -46
  170. package/dist/gateway/static/root/assets/browser-settings-page-CL1UiPcb.js +8 -0
  171. package/dist/gateway/static/root/assets/{capability-presets-api-DazKjWW1.js → capability-presets-api-XzDKxPZ8.js} +1 -1
  172. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-Cvrw4fD1.js → capability-presets-settings-panel-Dc_uHYgl.js} +2 -2
  173. package/dist/gateway/static/root/assets/{channel-recipient-api-Bea6if_6.js → channel-recipient-api-DYLBAhFF.js} +1 -1
  174. package/dist/gateway/static/root/assets/channels-settings-mALvXpJj.js +1 -0
  175. package/dist/gateway/static/root/assets/channels-status-swr-CZuEsO5b.js +1 -0
  176. package/dist/gateway/static/root/assets/{connector-logo-BjbYbJjQ.js → connector-logo-BSjlInHT.js} +1 -1
  177. package/dist/gateway/static/root/assets/connectors-page-Cm_E3mmI.js +2 -0
  178. package/dist/gateway/static/root/assets/desktop-pet-DcJc91-C.js +1 -0
  179. package/dist/gateway/static/root/assets/desktop-pet-settings-CdeqTa3Q.js +1 -0
  180. package/dist/gateway/static/root/assets/{directory-picker-path-field-C8zZNUzC.js → directory-picker-path-field-Cp3fpm0k.js} +1 -1
  181. package/dist/gateway/static/root/assets/{dreaming-settings-gJSw7Adk.js → dreaming-settings-Bwj1O3zr.js} +3 -3
  182. package/dist/gateway/static/root/assets/{extension-debug-page-DFE5ADJ0.js → extension-debug-page-D_1xpKbZ.js} +1 -1
  183. package/dist/gateway/static/root/assets/{extension-page-CfR-aW8G.js → extension-page-CqZNCj96.js} +1 -1
  184. package/dist/gateway/static/root/assets/{extension-settings-page-CFIEbs2L.js → extension-settings-page-5MWbtQaQ.js} +1 -1
  185. package/dist/gateway/static/root/assets/{gateway-config-api-B6M_ra8U.js → gateway-config-api-Co_IaS34.js} +1 -1
  186. package/dist/gateway/static/root/assets/gateway-settings-kmeWm2Pt.js +1 -0
  187. package/dist/gateway/static/root/assets/{gateway-startup-retry-DNA3OOzV.js → gateway-startup-retry-BM_xvzl0.js} +1 -1
  188. package/dist/gateway/static/root/assets/goal-create-dialog-FoO-R4_U.js +1 -0
  189. package/dist/gateway/static/root/assets/goal-detail-page-CkJq7N5g.js +4 -0
  190. package/dist/gateway/static/root/assets/{goals-config-api-D88opgcs.js → goals-config-api-DrtsYjXz.js} +1 -1
  191. package/dist/gateway/static/root/assets/goals-page-DRAN-R64.js +2 -0
  192. package/dist/gateway/static/root/assets/{goals-settings-D07UL8Jo.js → goals-settings-wq9TKhIZ.js} +1 -1
  193. package/dist/gateway/static/root/assets/{heartbeat-settings-YCSNOcXC.js → heartbeat-settings-B5zDoHbo.js} +1 -1
  194. package/dist/gateway/static/root/assets/index-DIlxvrlG.css +1 -0
  195. package/dist/gateway/static/root/assets/index-apLU0Hun.js +196 -0
  196. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-3tC9iD21.js +1 -0
  197. package/dist/gateway/static/root/assets/local-app-workbench-page-CT-vDTLK.js +2 -0
  198. package/dist/gateway/static/root/assets/{local-apps-page-CKvtLzsF.js → local-apps-page-B9ruF9GV.js} +1 -1
  199. package/dist/gateway/static/root/assets/locale-store-GfSwnwIZ.js +1 -0
  200. package/dist/gateway/static/root/assets/logs-page-Ca1X8X2P.js +7 -0
  201. package/dist/gateway/static/root/assets/{markdown-split-BVSFG99p.js → markdown-split-CzuhSQAB.js} +1 -1
  202. package/dist/gateway/static/root/assets/{media-plugins-DdOjIVk3.js → media-plugins-a3R4y-EL.js} +1 -1
  203. package/dist/gateway/static/root/assets/messages-B0B40tpO.js +5 -0
  204. package/dist/gateway/static/root/assets/models-hub-panel-CbTlz9Of.js +2 -0
  205. package/dist/gateway/static/root/assets/{notes-page-ZbLR3awn.js → notes-page-BCxDy2dV.js} +1 -1
  206. package/dist/gateway/static/root/assets/notes-workbench-z6sBX9B2.js +4 -0
  207. package/dist/gateway/static/root/assets/{page-tabs-DMlQERNg.js → page-tabs-CJfk6M78.js} +1 -1
  208. package/dist/gateway/static/root/assets/{preview-open-alternatives-CbiJRPxK.js → preview-open-alternatives-MFopTSgF.js} +1 -1
  209. package/dist/gateway/static/root/assets/project-detail-page-DU29deIr.js +1 -0
  210. package/dist/gateway/static/root/assets/projects-page-Ck3DLTlZ.js +1 -0
  211. package/dist/gateway/static/root/assets/remote-access-hub-gLsLyAyi.js +1 -0
  212. package/dist/gateway/static/root/assets/{save-bar-controls-BZTj3hxl.js → save-bar-controls-D0uhU3Z8.js} +1 -1
  213. package/dist/gateway/static/root/assets/{schedule-field-CxYDObjT.js → schedule-field-NGOH-7wV.js} +1 -1
  214. package/dist/gateway/static/root/assets/{schema-form-CBbXgpKQ.js → schema-form-BJz5LoqG.js} +1 -1
  215. package/dist/gateway/static/root/assets/schemas-DgQq6Z5S.js +64 -0
  216. package/dist/gateway/static/root/assets/sessions-page-TmNoWpa_.js +1 -0
  217. package/dist/gateway/static/root/assets/settings-advanced-gate-CtPhh2m9.js +1 -0
  218. package/dist/gateway/static/root/assets/{settings-collapsible-section-BySKZ8rp.js → settings-collapsible-section-oDnUHnX_.js} +1 -1
  219. package/dist/gateway/static/root/assets/{settings-form-section-CjINay6t.js → settings-form-section-DND90dDt.js} +1 -1
  220. package/dist/gateway/static/root/assets/settings-loading-skeleton-CEJtaoQp.js +1 -0
  221. package/dist/gateway/static/root/assets/{settings-page-BNrVwuL7.js → settings-page-B1LJlRi9.js} +1 -1
  222. package/dist/gateway/static/root/assets/{settings-page-layout-HdlQOOqp.js → settings-page-layout-CsrLuDsW.js} +1 -1
  223. package/dist/gateway/static/root/assets/setup-status-panel-BPCJPHHY.js +1 -0
  224. package/dist/gateway/static/root/assets/{share-preview-page-DC-eQONB.js → share-preview-page-C1PwLh-p.js} +1 -1
  225. package/dist/gateway/static/root/assets/shares-settings-DCuqr7js.js +1 -0
  226. package/dist/gateway/static/root/assets/skill-reload-api-kn1Vypcy.js +1 -0
  227. package/dist/gateway/static/root/assets/skills-page-k6VIqTkK.js +2 -0
  228. package/dist/gateway/static/root/assets/{system-settings-panel-CVa90q2f.js → system-settings-panel-BEsrEkSx.js} +1 -1
  229. package/dist/gateway/static/root/assets/{theme-store-D1cOpgsy.js → theme-store-Bi6hMBDb.js} +1 -1
  230. package/dist/gateway/static/root/assets/{typed-models-lib-DIKF9vpz.js → typed-models-lib-dOypdlMf.js} +1 -1
  231. package/dist/gateway/static/root/assets/{use-channel-catalog-DnvpI0Ys.js → use-channel-catalog-f8A-PVuq.js} +1 -1
  232. package/dist/gateway/static/root/assets/user-context-page-B9Y_Ciav.js +1 -0
  233. package/dist/gateway/static/root/assets/{user-profile-fields-editor-y8gTmkPX.js → user-profile-fields-editor-DGC38Lx7.js} +1 -1
  234. package/dist/gateway/static/root/assets/{user-profile-settings-panel-C3pvqe28.js → user-profile-settings-panel-DFkZ-tan.js} +1 -1
  235. package/dist/gateway/static/root/assets/{utils-BK2vwu_3.js → utils-CEIYZihF.js} +1 -1
  236. package/dist/gateway/static/root/assets/voice-api-key-field-DK6gaQsA.js +1 -0
  237. package/dist/gateway/static/root/assets/work-discovery-page-DSJb9Kq7.js +1 -0
  238. package/dist/gateway/static/root/assets/work-item-detail-page-DVavwV3D.js +1 -0
  239. package/dist/gateway/static/root/assets/work-page-foJDp0nz.js +1 -0
  240. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BYqZpFCC.js +3 -0
  241. package/dist/gateway/static/root/assets/workflows-page-DgO0WAzs.js +11 -0
  242. package/dist/gateway/static/root/favicon.svg +1 -187
  243. package/dist/gateway/static/root/index.html +8 -7
  244. package/dist/gateway/static/root/logo-dark.svg +1 -185
  245. package/dist/gateway/static/root/logo.svg +1 -185
  246. package/dist/package.js +1 -3
  247. package/dist/src/activity/context.js +0 -2
  248. package/dist/src/activity/emitter.js +0 -2
  249. package/dist/src/activity/service.js +0 -2
  250. package/dist/src/agent/agent-manager.d.ts +1 -0
  251. package/dist/src/agent/agent-manager.js +1 -2
  252. package/dist/src/agent/agent-scope.js +0 -2
  253. package/dist/src/agent/background-review/coordinator.js +0 -2
  254. package/dist/src/agent/background-review/prompts.js +0 -2
  255. package/dist/src/agent/background-review/run-background-review.js +0 -2
  256. package/dist/src/agent/background-review/settings.js +0 -2
  257. package/dist/src/agent/bootstrap/bootstrap-cache.js +0 -2
  258. package/dist/src/agent/bootstrap/bootstrap-context.js +0 -2
  259. package/dist/src/agent/bootstrap/bootstrap-files.js +0 -2
  260. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +0 -2
  261. package/dist/src/agent/bootstrap/load-bootstrap-files.js +0 -2
  262. package/dist/src/agent/bootstrap/project-agents-context.js +0 -2
  263. package/dist/src/agent/capabilities/definitions.js +0 -2
  264. package/dist/src/agent/capabilities/registry.js +0 -2
  265. package/dist/src/agent/child-agent-factory.js +0 -2
  266. package/dist/src/agent/client-error-format.js +0 -2
  267. package/dist/src/agent/code-intelligence/binary.js +0 -2
  268. package/dist/src/agent/code-intelligence/runtime.js +0 -2
  269. package/dist/src/agent/code-intelligence/tools.js +0 -2
  270. package/dist/src/agent/coding/turn-diff-tracker.js +0 -2
  271. package/dist/src/agent/context/expand-at-file-mentions.js +0 -2
  272. package/dist/src/agent/context/project-context.js +0 -2
  273. package/dist/src/agent/context/workspace-seed.js +0 -2
  274. package/dist/src/agent/context/workspace-state.js +0 -2
  275. package/dist/src/agent/context/workspace.js +0 -2
  276. package/dist/src/agent/embedded/run-for-session.js +0 -2
  277. package/dist/src/agent/embedded/run-turn.js +0 -2
  278. package/dist/src/agent/embedded/runs.js +0 -2
  279. package/dist/src/agent/embedded/session-manager-init.js +0 -2
  280. package/dist/src/agent/embedded/session-runner.js +0 -2
  281. package/dist/src/agent/embedded/session-tool-result-guard.js +0 -2
  282. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +0 -2
  283. package/dist/src/agent/embedded/subscribe-session.js +0 -2
  284. package/dist/src/agent/embedded/system-prompt-override.js +0 -2
  285. package/dist/src/agent/embedded/tool-result-context-guard.js +0 -2
  286. package/dist/src/agent/embedded/tool-result-truncation.js +0 -2
  287. package/dist/src/agent/embedded/xopc-auth-storage.js +0 -2
  288. package/dist/src/agent/embedded/xopc-stream-bridge.js +0 -2
  289. package/dist/src/agent/embedded/xopc-tools-bridge.js +0 -2
  290. package/dist/src/agent/failover-error.js +0 -2
  291. package/dist/src/agent/fallback/candidates.js +0 -2
  292. package/dist/src/agent/fallback/reason.js +0 -2
  293. package/dist/src/agent/feedback/feedback-coordinator.js +0 -2
  294. package/dist/src/agent/goals/checklist-judge.js +0 -2
  295. package/dist/src/agent/goals/checklist-types.js +0 -2
  296. package/dist/src/agent/goals/evaluate-turn.js +0 -2
  297. package/dist/src/agent/goals/goal-locale.js +0 -2
  298. package/dist/src/agent/goals/judge.js +0 -2
  299. package/dist/src/agent/goals/persistent-goal-service.js +0 -2
  300. package/dist/src/agent/goals/post-turn.js +0 -2
  301. package/dist/src/agent/goals/state.js +0 -2
  302. package/dist/src/agent/image/generation/bundled-registry.js +0 -2
  303. package/dist/src/agent/image/generation/bundled.js +0 -2
  304. package/dist/src/agent/image/generation/image-assets.js +0 -2
  305. package/dist/src/agent/image/generation/model-ref.js +0 -2
  306. package/dist/src/agent/image/generation/normalization.js +0 -2
  307. package/dist/src/agent/image/generation/openai-compatible-image-provider.js +0 -2
  308. package/dist/src/agent/image/generation/provider-registry.js +0 -2
  309. package/dist/src/agent/image/generation/runtime.js +0 -2
  310. package/dist/src/agent/image/image-helpers.js +0 -2
  311. package/dist/src/agent/image/image-model-fallback.js +0 -2
  312. package/dist/src/agent/image/inbound-image-handling.js +0 -2
  313. package/dist/src/agent/image/load-image-media.js +0 -2
  314. package/dist/src/agent/image/tool-model-config.js +0 -2
  315. package/dist/src/agent/image/understanding/pi-ai-provider.js +0 -2
  316. package/dist/src/agent/image/understanding/provider-registry.js +0 -2
  317. package/dist/src/agent/image/understanding/runtime.js +0 -2
  318. package/dist/src/agent/image/vision-detection.js +0 -2
  319. package/dist/src/agent/inbound/attachment-pipeline.js +0 -2
  320. package/dist/src/agent/inbound/inbound-loop.js +0 -2
  321. package/dist/src/agent/inbound/turn-dispatcher.js +0 -2
  322. package/dist/src/agent/ipc/bus.js +0 -2
  323. package/dist/src/agent/ipc/inbox.js +0 -2
  324. package/dist/src/agent/ipc/socket.js +0 -2
  325. package/dist/src/agent/ipc/types.js +0 -2
  326. package/dist/src/agent/lifecycle/handlers/compaction.js +0 -2
  327. package/dist/src/agent/lifecycle/hook-handler.js +0 -2
  328. package/dist/src/agent/lifecycle/manager.js +0 -2
  329. package/dist/src/agent/lifecycle/progress.js +0 -2
  330. package/dist/src/agent/lifecycle/timeout-wrapper.js +0 -2
  331. package/dist/src/agent/lifecycle/typing.js +0 -2
  332. package/dist/src/agent/mcp/bundle-mcp-config.js +0 -2
  333. package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -2
  334. package/dist/src/agent/mcp/bundle-mcp-names.js +0 -2
  335. package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -2
  336. package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -2
  337. package/dist/src/agent/mcp/embedded-mcp.js +0 -2
  338. package/dist/src/agent/mcp/mcp-config-shared.js +0 -2
  339. package/dist/src/agent/mcp/mcp-http.js +0 -2
  340. package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -2
  341. package/dist/src/agent/mcp/mcp-stdio.js +0 -2
  342. package/dist/src/agent/mcp/mcp-tool-meta.js +0 -2
  343. package/dist/src/agent/mcp/mcp-transport-config.js +0 -2
  344. package/dist/src/agent/mcp/mcp-transport.js +0 -2
  345. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -2
  346. package/dist/src/agent/media-generation/model-ref.js +0 -2
  347. package/dist/src/agent/media-generation/normalization.types.js +0 -2
  348. package/dist/src/agent/media-generation/runtime-shared.js +0 -2
  349. package/dist/src/agent/memory/agent-message-access.js +0 -2
  350. package/dist/src/agent/memory/builtin-memory-store.js +0 -2
  351. package/dist/src/agent/memory/builtin-provider.js +0 -2
  352. package/dist/src/agent/memory/compaction.js +0 -2
  353. package/dist/src/agent/memory/context/planner.js +0 -2
  354. package/dist/src/agent/memory/context-fence.js +0 -2
  355. package/dist/src/agent/memory/create-memory-manager.js +0 -2
  356. package/dist/src/agent/memory/dreaming/config.js +0 -2
  357. package/dist/src/agent/memory/dreaming/constants.js +0 -2
  358. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -2
  359. package/dist/src/agent/memory/dreaming/events.js +0 -2
  360. package/dist/src/agent/memory/dreaming/last-run.js +0 -2
  361. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -2
  362. package/dist/src/agent/memory/dreaming/preview.js +0 -2
  363. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -2
  364. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -2
  365. package/dist/src/agent/memory/dreaming/scope.js +0 -2
  366. package/dist/src/agent/memory/dreaming/short-term-store.js +0 -2
  367. package/dist/src/agent/memory/dreaming/utils.js +0 -2
  368. package/dist/src/agent/memory/lifecycle.js +0 -2
  369. package/dist/src/agent/memory/manager.js +0 -2
  370. package/dist/src/agent/memory/memory-config.js +0 -2
  371. package/dist/src/agent/memory/message-sanitizer.js +0 -2
  372. package/dist/src/agent/memory/plugin-discovery.js +0 -2
  373. package/dist/src/agent/memory/sensitivity.js +0 -2
  374. package/dist/src/agent/memory/source-origin.js +0 -2
  375. package/dist/src/agent/memory/stub-memory-provider.js +0 -2
  376. package/dist/src/agent/memory/summary-generator.js +0 -2
  377. package/dist/src/agent/memory/understanding/correction.js +0 -2
  378. package/dist/src/agent/memory/understanding/quality.js +0 -2
  379. package/dist/src/agent/memory/understanding/service.js +0 -2
  380. package/dist/src/agent/memory/user-context-coordinator.js +0 -2
  381. package/dist/src/agent/memory/user-message-text.js +0 -2
  382. package/dist/src/agent/memory/window.js +0 -2
  383. package/dist/src/agent/messaging/command-handler.js +0 -2
  384. package/dist/src/agent/messaging/message-router.js +0 -2
  385. package/dist/src/agent/messaging/outbound-coordinator.js +0 -2
  386. package/dist/src/agent/messaging/stream-manager.js +0 -2
  387. package/dist/src/agent/middleware/context.js +0 -2
  388. package/dist/src/agent/middleware/self-verify.js +0 -2
  389. package/dist/src/agent/models/manager.js +0 -2
  390. package/dist/src/agent/models/request-limiter.js +0 -2
  391. package/dist/src/agent/models/selection.js +0 -2
  392. package/dist/src/agent/orchestration/agent-event-handler.js +0 -2
  393. package/dist/src/agent/orchestration/agent-orchestrator.js +0 -2
  394. package/dist/src/agent/orchestration/llm-turn-retry.js +0 -2
  395. package/dist/src/agent/orchestration/loop-guard.js +0 -2
  396. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +0 -2
  397. package/dist/src/agent/prompt/cache-boundary.js +0 -2
  398. package/dist/src/agent/prompt/memory/index.js +0 -2
  399. package/dist/src/agent/prompt/safety.js +0 -2
  400. package/dist/src/agent/prompt/sanitize-for-prompt.js +0 -2
  401. package/dist/src/agent/prompt/sections/behavior.js +0 -2
  402. package/dist/src/agent/prompt/sections/memory-skills.js +0 -2
  403. package/dist/src/agent/prompt/sections/messaging-runtime.js +0 -2
  404. package/dist/src/agent/prompt/sections/project-context.js +0 -2
  405. package/dist/src/agent/prompt/sections/tooling.js +0 -2
  406. package/dist/src/agent/prompt/sections/workspace-runtime.js +0 -2
  407. package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
  408. package/dist/src/agent/prompt/subagent-context.js +0 -2
  409. package/dist/src/agent/prompt/system-prompt-params.js +0 -2
  410. package/dist/src/agent/prompt/system-prompt.js +0 -2
  411. package/dist/src/agent/prompt/system-reminder.js +0 -2
  412. package/dist/src/agent/reply/apply-turn-user-enrichment.js +0 -2
  413. package/dist/src/agent/reply/post-compaction-context.js +0 -2
  414. package/dist/src/agent/reply/startup-context.js +0 -2
  415. package/dist/src/agent/reply/workspace-boundary-read.js +0 -2
  416. package/dist/src/agent/sandbox/command-validator.js +0 -2
  417. package/dist/src/agent/sandbox/exec-policy.js +0 -2
  418. package/dist/src/agent/sandbox/path-policy.js +0 -2
  419. package/dist/src/agent/sandbox/sanitize-env-vars.js +0 -2
  420. package/dist/src/agent/sandbox/types.js +0 -2
  421. package/dist/src/agent/service/async-queue.js +0 -2
  422. package/dist/src/agent/service/btw-query.js +0 -2
  423. package/dist/src/agent/service/build-direct-message-content.js +0 -2
  424. package/dist/src/agent/service/direct-turn-helpers.js +0 -2
  425. package/dist/src/agent/service/parse-outbound-session-key.js +0 -2
  426. package/dist/src/agent/service/process-direct-one-shot.js +0 -2
  427. package/dist/src/agent/service/process-direct-streaming.js +0 -2
  428. package/dist/src/agent/service/session-context-report.js +0 -2
  429. package/dist/src/agent/service/webchat-tts.js +0 -2
  430. package/dist/src/agent/service-inbound-utils.js +0 -2
  431. package/dist/src/agent/service.js +1 -2
  432. package/dist/src/agent/service.types.d.ts +2 -0
  433. package/dist/src/agent/session/session-config-service.js +0 -2
  434. package/dist/src/agent/session/session-context.js +0 -2
  435. package/dist/src/agent/session/session-hydrator.js +0 -2
  436. package/dist/src/agent/session/session-inspector.js +0 -2
  437. package/dist/src/agent/session/session-lifecycle.js +0 -2
  438. package/dist/src/agent/session/session-state-bag.js +0 -2
  439. package/dist/src/agent/session/tracker.js +0 -2
  440. package/dist/src/agent/skills/config.js +0 -2
  441. package/dist/src/agent/skills/filesystem-watcher.js +0 -2
  442. package/dist/src/agent/skills/format-skills-prompt.js +0 -2
  443. package/dist/src/agent/skills/hub-hash.js +0 -2
  444. package/dist/src/agent/skills/hub-lock.js +0 -2
  445. package/dist/src/agent/skills/hub-pull.js +0 -2
  446. package/dist/src/agent/skills/index.js +0 -2
  447. package/dist/src/agent/skills/install-target.js +0 -2
  448. package/dist/src/agent/skills/installer.js +0 -2
  449. package/dist/src/agent/skills/managed-store.js +0 -2
  450. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +0 -2
  451. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +0 -2
  452. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +0 -2
  453. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +0 -2
  454. package/dist/src/agent/skills/marketplace/marketplace-category-order.js +0 -2
  455. package/dist/src/agent/skills/marketplace/registry.js +0 -2
  456. package/dist/src/agent/skills/marketplace/resolve-adapter.js +0 -2
  457. package/dist/src/agent/skills/parse-skill-metadata.js +0 -2
  458. package/dist/src/agent/skills/required-env-vars.js +0 -2
  459. package/dist/src/agent/skills/scanner.js +0 -2
  460. package/dist/src/agent/skills/skill-manage-ops.js +0 -2
  461. package/dist/src/agent/skills/skill-manager.js +0 -2
  462. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +0 -2
  463. package/dist/src/agent/skills/skill-tool-gating.js +0 -2
  464. package/dist/src/agent/skills/skill-view-path.js +0 -2
  465. package/dist/src/agent/skills/skills-marketplace.js +0 -2
  466. package/dist/src/agent/skills/test-framework.js +0 -2
  467. package/dist/src/agent/skills/watcher.js +0 -2
  468. package/dist/src/agent/skills/workspace-skills-dir.js +0 -2
  469. package/dist/src/agent/source-context/injector.js +0 -2
  470. package/dist/src/agent/source-context/types.js +0 -2
  471. package/dist/src/agent/starter-agents.js +0 -2
  472. package/dist/src/agent/streaming/reasoning-visibility-sse.js +0 -2
  473. package/dist/src/agent/tool-manuals/browser.js +0 -2
  474. package/dist/src/agent/tool-manuals/index.js +0 -2
  475. package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
  476. package/dist/src/agent/tool-manuals/xopc-use.js +41 -4
  477. package/dist/src/agent/tools/apply-patch.js +0 -2
  478. package/dist/src/agent/tools/automation-tool.js +45 -8
  479. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +0 -2
  480. package/dist/src/agent/tools/browser/tool/schemas.js +0 -2
  481. package/dist/src/agent/tools/chain-tracker.js +0 -2
  482. package/dist/src/agent/tools/clarify-tool.js +0 -2
  483. package/dist/src/agent/tools/cli-clarify.js +0 -2
  484. package/dist/src/agent/tools/communication.js +0 -2
  485. package/dist/src/agent/tools/composio-tool.js +0 -2
  486. package/dist/src/agent/tools/concurrency.js +0 -2
  487. package/dist/src/agent/tools/create-share-tool.js +0 -2
  488. package/dist/src/agent/tools/curated-memory-tool.js +0 -2
  489. package/dist/src/agent/tools/delegate-tool.js +0 -2
  490. package/dist/src/agent/tools/desktop-pet-tool.d.ts +12 -0
  491. package/dist/src/agent/tools/desktop-pet-tool.js +28 -2
  492. package/dist/src/agent/tools/dreaming-tool.js +0 -2
  493. package/dist/src/agent/tools/edit-diff.js +0 -2
  494. package/dist/src/agent/tools/error-pattern-matcher.js +0 -2
  495. package/dist/src/agent/tools/error-tracker.js +0 -2
  496. package/dist/src/agent/tools/exec-command.js +0 -2
  497. package/dist/src/agent/tools/execute-code-tool.js +0 -2
  498. package/dist/src/agent/tools/executor.js +0 -2
  499. package/dist/src/agent/tools/factory.d.ts +2 -0
  500. package/dist/src/agent/tools/factory.js +3 -4
  501. package/dist/src/agent/tools/find.js +0 -2
  502. package/dist/src/agent/tools/goal-evidence-recorder.js +0 -2
  503. package/dist/src/agent/tools/goal-tool.d.ts +7 -1
  504. package/dist/src/agent/tools/goal-tool.js +34 -7
  505. package/dist/src/agent/tools/grep.js +0 -2
  506. package/dist/src/agent/tools/image-generate-tool.js +0 -2
  507. package/dist/src/agent/tools/image-tool.js +0 -2
  508. package/dist/src/agent/tools/list-dir.js +0 -2
  509. package/dist/src/agent/tools/media-read-tool.js +0 -2
  510. package/dist/src/agent/tools/memory-tool.js +0 -2
  511. package/dist/src/agent/tools/metadata.js +0 -2
  512. package/dist/src/agent/tools/read.js +0 -2
  513. package/dist/src/agent/tools/search/http.js +0 -2
  514. package/dist/src/agent/tools/search/providers/bing-api.js +0 -2
  515. package/dist/src/agent/tools/search/providers/bing-html.js +0 -2
  516. package/dist/src/agent/tools/search/providers/brave.js +0 -2
  517. package/dist/src/agent/tools/search/providers/duckduckgo-html.js +0 -2
  518. package/dist/src/agent/tools/search/providers/searxng.js +0 -2
  519. package/dist/src/agent/tools/search/providers/tavily.js +0 -2
  520. package/dist/src/agent/tools/search/region.js +0 -2
  521. package/dist/src/agent/tools/search/registry.js +0 -2
  522. package/dist/src/agent/tools/search/resolve-config.js +0 -2
  523. package/dist/src/agent/tools/send-media.js +0 -2
  524. package/dist/src/agent/tools/session-search-tool.js +0 -2
  525. package/dist/src/agent/tools/session-status-tool.js +0 -2
  526. package/dist/src/agent/tools/skill-install-tool.js +0 -2
  527. package/dist/src/agent/tools/skill-manage-tool.js +0 -2
  528. package/dist/src/agent/tools/skills-tools.js +0 -2
  529. package/dist/src/agent/tools/structured-output.js +0 -2
  530. package/dist/src/agent/tools/todo-tool.js +0 -2
  531. package/dist/src/agent/tools/tool-manual-tool.js +0 -2
  532. package/dist/src/agent/tools/tool-paths.js +0 -2
  533. package/dist/src/agent/tools/truncate.js +0 -2
  534. package/dist/src/agent/tools/tts-tool.js +0 -2
  535. package/dist/src/agent/tools/update-plan-tool.js +0 -2
  536. package/dist/src/agent/tools/url-safety.js +0 -2
  537. package/dist/src/agent/tools/usage-analyzer.js +0 -2
  538. package/dist/src/agent/tools/web-extract.js +0 -2
  539. package/dist/src/agent/tools/web.js +4 -4
  540. package/dist/src/agent/tools/workflow-tool.js +32 -4
  541. package/dist/src/agent/tools/write.js +23 -5
  542. package/dist/src/agent/tools/xopc-use-tool.d.ts +6 -2
  543. package/dist/src/agent/tools/xopc-use-tool.js +216 -8
  544. package/dist/src/agent/transcript/google-api.js +0 -2
  545. package/dist/src/agent/transcript/model-selection.js +0 -2
  546. package/dist/src/agent/transcript/provider-capabilities.js +0 -2
  547. package/dist/src/agent/transcript/session-transcript-repair.js +0 -2
  548. package/dist/src/agent/transcript/strip-tool-messages.js +0 -2
  549. package/dist/src/agent/transcript/thinking-types.js +0 -2
  550. package/dist/src/agent/transcript/thinking.js +0 -2
  551. package/dist/src/agent/transcript/tool-call-id.js +0 -2
  552. package/dist/src/agent/transcript/transcript-hygiene.js +0 -2
  553. package/dist/src/agent/transcript/transcript-policy.js +0 -2
  554. package/dist/src/agent/workflow/agent-progress.js +0 -2
  555. package/dist/src/agent/workflow/builtins/index.js +0 -2
  556. package/dist/src/agent/workflow/catalog.js +0 -2
  557. package/dist/src/agent/workflow/progress-broker.js +0 -2
  558. package/dist/src/agent/workflow/snapshot-empty.js +0 -2
  559. package/dist/src/agent/workflow/snapshot.js +0 -2
  560. package/dist/src/agent/workflow/step-labels.js +0 -2
  561. package/dist/src/agent/workflow/structured-output-tool.js +0 -2
  562. package/dist/src/agent/workflow/subagent-runner.js +0 -2
  563. package/dist/src/agent/workflow/workflow-child-tools.js +0 -2
  564. package/dist/src/agent/workspace-runtime/registry.js +0 -2
  565. package/dist/src/agent-manifest/index.js +0 -2
  566. package/dist/src/agent-manifest/preset-chain.js +0 -2
  567. package/dist/src/agent-manifest/prompt.js +0 -2
  568. package/dist/src/agent-manifest/resolver.js +0 -2
  569. package/dist/src/agent-manifest/schema.js +0 -2
  570. package/dist/src/agent-manifest/validator.js +0 -2
  571. package/dist/src/agent-runtime/boundary-guard.js +0 -2
  572. package/dist/src/agent-runtime/memory-runtime.js +0 -2
  573. package/dist/src/agent-runtime/model-router.js +0 -2
  574. package/dist/src/agent-runtime/run-trace.js +0 -2
  575. package/dist/src/agent-runtime/runtime-profile.js +0 -2
  576. package/dist/src/agent-runtime/tool-registry.js +0 -2
  577. package/dist/src/agent-runtime/workflow-runtime.js +0 -2
  578. package/dist/src/ai-assist/text-assist.js +0 -2
  579. package/dist/src/auth/credentials.js +0 -2
  580. package/dist/src/auth/index.js +0 -2
  581. package/dist/src/auth/oauth/anthropic.js +0 -2
  582. package/dist/src/auth/oauth/github-copilot.js +0 -2
  583. package/dist/src/auth/oauth/google-oauth/google-antigravity.js +0 -2
  584. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js +0 -2
  585. package/dist/src/auth/oauth/google-oauth/oauth-page.js +0 -2
  586. package/dist/src/auth/oauth/google-oauth/pkce.js +0 -2
  587. package/dist/src/auth/oauth/kimi-coding.js +0 -2
  588. package/dist/src/auth/oauth/minimax-cn.js +0 -2
  589. package/dist/src/auth/oauth/minimax.js +0 -2
  590. package/dist/src/auth/oauth/openai-codex.js +0 -2
  591. package/dist/src/auth/oauth/pkce.js +0 -2
  592. package/dist/src/auth/profiles/oauth.js +0 -2
  593. package/dist/src/auth/profiles/order.js +0 -2
  594. package/dist/src/auth/profiles/profiles.js +0 -2
  595. package/dist/src/auth/profiles/store.js +0 -2
  596. package/dist/src/auth/sync-provider-auth.js +0 -2
  597. package/dist/src/automations/api/routes.js +0 -2
  598. package/dist/src/automations/domain/schedule.js +0 -2
  599. package/dist/src/automations/domain/validation.js +0 -2
  600. package/dist/src/automations/draft/automation-draft-prompt.js +0 -2
  601. package/dist/src/automations/draft/automation-draft-service.js +0 -2
  602. package/dist/src/automations/draft/automation-draft-validator.js +0 -2
  603. package/dist/src/automations/product-events.js +0 -2
  604. package/dist/src/automations/service/action-executor.js +0 -2
  605. package/dist/src/automations/service/automation-service.js +0 -2
  606. package/dist/src/automations/storage/automation-repository.js +0 -2
  607. package/dist/src/automations/storage/automation-run-repository.js +0 -2
  608. package/dist/src/browser/actions/extension-registry-bridge.js +0 -2
  609. package/dist/src/browser/actions/registry.js +0 -2
  610. package/dist/src/browser/backend-from-config.js +0 -2
  611. package/dist/src/browser/browser-command-timeout.js +0 -2
  612. package/dist/src/browser/cache-dir-policy.js +0 -2
  613. package/dist/src/browser/cdp-local-launcher.js +0 -2
  614. package/dist/src/browser/cdp-supervisor.js +0 -2
  615. package/dist/src/browser/free-port.js +0 -2
  616. package/dist/src/browser/humanize.js +0 -2
  617. package/dist/src/browser/install-lock.js +0 -2
  618. package/dist/src/browser/manager.js +0 -2
  619. package/dist/src/browser/pipeline/output.js +0 -2
  620. package/dist/src/browser/pipeline/runner.js +0 -2
  621. package/dist/src/browser/pipeline/schema.js +0 -2
  622. package/dist/src/browser/pipeline/source.js +0 -2
  623. package/dist/src/browser/pipeline/template.js +0 -2
  624. package/dist/src/browser/providers/browser-ext-install.js +0 -2
  625. package/dist/src/browser/providers/browser-use.js +0 -2
  626. package/dist/src/browser/providers/browserbase.js +0 -2
  627. package/dist/src/browser/providers/cloakbrowser.js +0 -2
  628. package/dist/src/browser/providers/extension-ws-acquire.js +0 -2
  629. package/dist/src/browser/providers/extension.js +0 -2
  630. package/dist/src/browser/providers/playwright-doctor.js +13 -4
  631. package/dist/src/browser/providers/playwright-install.js +0 -2
  632. package/dist/src/browser/readiness.js +0 -2
  633. package/dist/src/browser/schemas.js +0 -2
  634. package/dist/src/browser/session-lifecycle.js +0 -2
  635. package/dist/src/browser/snapshot-helpers.js +0 -2
  636. package/dist/src/browser/stealth.js +0 -2
  637. package/dist/src/browser/url-policy.js +0 -2
  638. package/dist/src/capabilities/store-connector.js +0 -2
  639. package/dist/src/channels/attachments/attachment-classifiers.js +0 -2
  640. package/dist/src/channels/attachments/inbound-persist.js +0 -2
  641. package/dist/src/channels/attachments/inbound-types.js +0 -2
  642. package/dist/src/channels/attachments/outbound-tts-persist.js +0 -2
  643. package/dist/src/channels/attachments/voice-stt-webchat.js +0 -2
  644. package/dist/src/channels/catalog/channel-catalog-service.js +0 -2
  645. package/dist/src/channels/config-helpers.js +0 -2
  646. package/dist/src/channels/envelope-timestamp.js +0 -2
  647. package/dist/src/channels/exec-approval-runtime.js +0 -2
  648. package/dist/src/channels/health-monitor.js +0 -2
  649. package/dist/src/channels/heartbeat-scheduler.js +0 -2
  650. package/dist/src/channels/internal-outbound.js +0 -2
  651. package/dist/src/channels/lifecycle-supervisor.js +0 -2
  652. package/dist/src/channels/manager.js +0 -2
  653. package/dist/src/channels/media.js +0 -2
  654. package/dist/src/channels/outbound/deliver.js +0 -2
  655. package/dist/src/channels/outbound/normalize.js +0 -2
  656. package/dist/src/channels/outbound/persist-store.js +0 -2
  657. package/dist/src/channels/outbound/queue.js +0 -2
  658. package/dist/src/channels/outbound-sender.js +0 -2
  659. package/dist/src/channels/pairing/allow-from-file.js +0 -2
  660. package/dist/src/channels/pairing/approve-cli.js +0 -2
  661. package/dist/src/channels/pairing/pairing-challenge.js +0 -2
  662. package/dist/src/channels/pairing/pairing-constants.js +0 -2
  663. package/dist/src/channels/pairing/pairing-events.js +0 -2
  664. package/dist/src/channels/pairing/pairing-messages.js +0 -2
  665. package/dist/src/channels/pairing/pairing-service.js +0 -2
  666. package/dist/src/channels/pairing/pairing-store-adapter.js +0 -2
  667. package/dist/src/channels/pairing/pairing-store.js +0 -2
  668. package/dist/src/channels/pairing/paths.js +0 -2
  669. package/dist/src/channels/pairing/preseed-allow-from.js +0 -2
  670. package/dist/src/channels/pipeline.js +0 -2
  671. package/dist/src/channels/plugin-registry.js +0 -2
  672. package/dist/src/channels/plugins/registry.js +0 -2
  673. package/dist/src/channels/restart-policy.js +0 -2
  674. package/dist/src/channels/security-helpers.js +0 -2
  675. package/dist/src/channels/security.js +0 -2
  676. package/dist/src/channels/setup-wizard-discovery.js +0 -2
  677. package/dist/src/chat-commands/agent-edit.js +0 -2
  678. package/dist/src/chat-commands/builtins/config.js +0 -2
  679. package/dist/src/chat-commands/builtins/context.js +0 -2
  680. package/dist/src/chat-commands/builtins/goal.js +0 -2
  681. package/dist/src/chat-commands/builtins/model.js +0 -2
  682. package/dist/src/chat-commands/builtins/review.js +0 -2
  683. package/dist/src/chat-commands/builtins/session.js +0 -2
  684. package/dist/src/chat-commands/builtins/skill.js +0 -2
  685. package/dist/src/chat-commands/builtins/subgoal.js +0 -2
  686. package/dist/src/chat-commands/builtins/system.js +0 -2
  687. package/dist/src/chat-commands/builtins/thinking.js +0 -2
  688. package/dist/src/chat-commands/builtins/tts.js +0 -2
  689. package/dist/src/chat-commands/builtins/workflow.js +0 -2
  690. package/dist/src/chat-commands/command-parse.js +0 -2
  691. package/dist/src/chat-commands/config-paths.js +0 -2
  692. package/dist/src/chat-commands/config-value.js +0 -2
  693. package/dist/src/chat-commands/context.js +0 -2
  694. package/dist/src/chat-commands/format-output.js +0 -2
  695. package/dist/src/chat-commands/index.js +0 -2
  696. package/dist/src/chat-commands/processor.js +0 -2
  697. package/dist/src/chat-commands/registry.js +0 -2
  698. package/dist/src/chat-commands/session-key.js +0 -2
  699. package/dist/src/cli/argv-invocation.js +0 -2
  700. package/dist/src/cli/argv.js +0 -2
  701. package/dist/src/cli/bin.js +0 -2
  702. package/dist/src/cli/cli-log-level-preset.js +0 -2
  703. package/dist/src/cli/command-catalog.js +0 -2
  704. package/dist/src/cli/command-loaders.js +0 -2
  705. package/dist/src/cli/command-manifest.js +0 -2
  706. package/dist/src/cli/command-path-matches.js +0 -2
  707. package/dist/src/cli/command-path-policy.js +0 -2
  708. package/dist/src/cli/command-startup-policy.js +0 -2
  709. package/dist/src/cli/commands/agent/interactive.js +0 -2
  710. package/dist/src/cli/commands/agent/sessions.js +0 -2
  711. package/dist/src/cli/commands/agent/stream-renderer.js +0 -2
  712. package/dist/src/cli/commands/agent.js +0 -2
  713. package/dist/src/cli/commands/agents.js +0 -2
  714. package/dist/src/cli/commands/auth.js +0 -2
  715. package/dist/src/cli/commands/browser-cli-helpers.js +0 -2
  716. package/dist/src/cli/commands/browser.js +0 -2
  717. package/dist/src/cli/commands/channels.js +0 -2
  718. package/dist/src/cli/commands/config.js +0 -2
  719. package/dist/src/cli/commands/connectors.js +0 -2
  720. package/dist/src/cli/commands/doctor/checks/channel-config.js +0 -2
  721. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +0 -2
  722. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +0 -2
  723. package/dist/src/cli/commands/doctor/checks/config-health.js +0 -2
  724. package/dist/src/cli/commands/doctor/checks/database-schema.js +0 -2
  725. package/dist/src/cli/commands/doctor/checks/gateway-health.js +0 -2
  726. package/dist/src/cli/commands/doctor/checks/gateway-service.js +0 -2
  727. package/dist/src/cli/commands/doctor/checks/migrations.js +0 -2
  728. package/dist/src/cli/commands/doctor/checks/node-version.js +0 -2
  729. package/dist/src/cli/commands/doctor/checks/provider-auth.js +0 -2
  730. package/dist/src/cli/commands/doctor/checks/security-audit.js +0 -2
  731. package/dist/src/cli/commands/doctor/checks/session-integrity.js +0 -2
  732. package/dist/src/cli/commands/doctor/checks/state-integrity.js +0 -2
  733. package/dist/src/cli/commands/doctor/checks/version-check.js +0 -2
  734. package/dist/src/cli/commands/doctor/checks/workspace-status.js +0 -2
  735. package/dist/src/cli/commands/doctor/flow.js +0 -2
  736. package/dist/src/cli/commands/doctor/format.js +0 -2
  737. package/dist/src/cli/commands/doctor/index.js +0 -2
  738. package/dist/src/cli/commands/extension-create.js +0 -2
  739. package/dist/src/cli/commands/extension-dev.js +0 -2
  740. package/dist/src/cli/commands/extension-marketplace.js +0 -2
  741. package/dist/src/cli/commands/extension-pack.js +0 -2
  742. package/dist/src/cli/commands/extension.js +0 -2
  743. package/dist/src/cli/commands/gateway/call.js +0 -2
  744. package/dist/src/cli/commands/gateway/health.js +0 -2
  745. package/dist/src/cli/commands/gateway/lifecycle-core.js +0 -2
  746. package/dist/src/cli/commands/gateway/lifecycle.js +0 -2
  747. package/dist/src/cli/commands/gateway/logs.js +0 -2
  748. package/dist/src/cli/commands/gateway/probe.js +0 -2
  749. package/dist/src/cli/commands/gateway/restart-health.js +0 -2
  750. package/dist/src/cli/commands/gateway/restart.js +0 -2
  751. package/dist/src/cli/commands/gateway/run-foreground.js +0 -2
  752. package/dist/src/cli/commands/gateway/service.js +0 -2
  753. package/dist/src/cli/commands/gateway/shared.js +0 -2
  754. package/dist/src/cli/commands/gateway/status.js +0 -2
  755. package/dist/src/cli/commands/gateway/stop.js +0 -2
  756. package/dist/src/cli/commands/gateway/subcommands.js +0 -2
  757. package/dist/src/cli/commands/gateway/token.js +0 -2
  758. package/dist/src/cli/commands/gateway-ssh-tunnel.js +0 -2
  759. package/dist/src/cli/commands/gateway.js +0 -2
  760. package/dist/src/cli/commands/goal.js +0 -2
  761. package/dist/src/cli/commands/image.js +0 -2
  762. package/dist/src/cli/commands/init.js +0 -2
  763. package/dist/src/cli/commands/logs.js +0 -2
  764. package/dist/src/cli/commands/models.js +0 -2
  765. package/dist/src/cli/commands/onboard/channels/index.js +0 -2
  766. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js +0 -2
  767. package/dist/src/cli/commands/onboard/channels/registry.js +0 -2
  768. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js +0 -2
  769. package/dist/src/cli/commands/onboard/gateway.js +0 -2
  770. package/dist/src/cli/commands/onboard/model.js +0 -2
  771. package/dist/src/cli/commands/onboard.js +0 -2
  772. package/dist/src/cli/commands/profile.js +0 -2
  773. package/dist/src/cli/commands/project.js +0 -2
  774. package/dist/src/cli/commands/providers.js +0 -2
  775. package/dist/src/cli/commands/resume.js +0 -2
  776. package/dist/src/cli/commands/search.js +0 -2
  777. package/dist/src/cli/commands/session/actions.js +0 -2
  778. package/dist/src/cli/commands/session/utils.js +0 -2
  779. package/dist/src/cli/commands/session.js +0 -2
  780. package/dist/src/cli/commands/setup-shared/output.js +0 -2
  781. package/dist/src/cli/commands/setup-shared/prompts.js +0 -2
  782. package/dist/src/cli/commands/setup-shared/runner.js +0 -2
  783. package/dist/src/cli/commands/setup-shared/types.js +0 -2
  784. package/dist/src/cli/commands/setup.js +0 -2
  785. package/dist/src/cli/commands/skills-test.js +0 -2
  786. package/dist/src/cli/commands/skills.js +0 -2
  787. package/dist/src/cli/commands/tailscale.js +0 -2
  788. package/dist/src/cli/commands/tui-runner.js +0 -2
  789. package/dist/src/cli/commands/tui.js +0 -2
  790. package/dist/src/cli/commands/tunnel.js +0 -2
  791. package/dist/src/cli/commands/update.js +0 -2
  792. package/dist/src/cli/commands/voice.js +0 -2
  793. package/dist/src/cli/context.js +0 -2
  794. package/dist/src/cli/extension-cli-register.js +0 -2
  795. package/dist/src/cli/gateway-run-argv.js +0 -2
  796. package/dist/src/cli/gateway-run-fast-path.js +0 -2
  797. package/dist/src/cli/index.js +0 -2
  798. package/dist/src/cli/registry.js +0 -2
  799. package/dist/src/cli/templates.js +0 -2
  800. package/dist/src/cli/utils/colors.js +0 -2
  801. package/dist/src/cli/utils/gateway-client-options.js +0 -2
  802. package/dist/src/cli/utils/gateway-client.js +0 -2
  803. package/dist/src/cli/utils/init-workspace-core.js +0 -2
  804. package/dist/src/cli/utils/init-workspace.js +0 -2
  805. package/dist/src/cli/utils/oauth-login.js +0 -2
  806. package/dist/src/cli/utils/oauth-providers.js +0 -2
  807. package/dist/src/cli/utils/session.js +0 -2
  808. package/dist/src/commands/agents.config.js +0 -2
  809. package/dist/src/config/agent-profile.js +0 -2
  810. package/dist/src/config/agent-typed-models.js +0 -2
  811. package/dist/src/config/commands.flags.js +0 -2
  812. package/dist/src/config/default-model.js +0 -2
  813. package/dist/src/config/diff.js +0 -2
  814. package/dist/src/config/gateway-bind.js +0 -2
  815. package/dist/src/config/index.js +0 -2
  816. package/dist/src/config/loader.js +0 -2
  817. package/dist/src/config/mcp-config-normalize.js +0 -2
  818. package/dist/src/config/model-input.js +0 -2
  819. package/dist/src/config/models-json.js +0 -2
  820. package/dist/src/config/paths-state.js +0 -2
  821. package/dist/src/config/paths.js +0 -2
  822. package/dist/src/config/profile.js +0 -2
  823. package/dist/src/config/public-url.js +0 -2
  824. package/dist/src/config/reload.js +0 -2
  825. package/dist/src/config/resolve-config-value.js +0 -2
  826. package/dist/src/config/rules.js +0 -2
  827. package/dist/src/config/runtime-overrides.js +0 -2
  828. package/dist/src/config/schema.js +0 -2
  829. package/dist/src/config/validate-channel-configs.js +0 -2
  830. package/dist/src/config/voice.js +0 -2
  831. package/dist/src/config/web-patch.js +0 -2
  832. package/dist/src/config/workspace-defaults.js +0 -2
  833. package/dist/src/config/workspace-dirs.js +0 -2
  834. package/dist/src/config/workspace-path-helpers.js +0 -2
  835. package/dist/src/config/workspace-path.js +0 -2
  836. package/dist/src/connectors/approval.js +0 -2
  837. package/dist/src/connectors/auth-provider-registry.js +0 -2
  838. package/dist/src/connectors/builtin-catalog.js +0 -2
  839. package/dist/src/connectors/catalog.js +0 -2
  840. package/dist/src/connectors/composio-catalog.js +0 -2
  841. package/dist/src/connectors/composio-logo.js +0 -2
  842. package/dist/src/connectors/composio-sessions.js +9 -5
  843. package/dist/src/connectors/composio-triggers.js +0 -2
  844. package/dist/src/connectors/composio.js +0 -2
  845. package/dist/src/connectors/connector-memory-sync.js +0 -2
  846. package/dist/src/connectors/health.js +0 -2
  847. package/dist/src/connectors/install.js +0 -2
  848. package/dist/src/connectors/instances.js +0 -2
  849. package/dist/src/connectors/integration-strategy.js +0 -2
  850. package/dist/src/connectors/lifecycle.js +0 -2
  851. package/dist/src/connectors/materialize.js +0 -2
  852. package/dist/src/connectors/policy.js +0 -2
  853. package/dist/src/connectors/providers.js +0 -2
  854. package/dist/src/connectors/registries/modelscope.js +0 -2
  855. package/dist/src/connectors/registries/official-mcp.js +0 -2
  856. package/dist/src/connectors/registries/search.js +0 -2
  857. package/dist/src/connectors/registries/smithery.js +0 -2
  858. package/dist/src/connectors/runtime-adapter-registry.js +0 -2
  859. package/dist/src/connectors/secret-store.js +0 -2
  860. package/dist/src/connectors/setup-secrets.js +0 -2
  861. package/dist/src/connectors/supervisor.js +0 -2
  862. package/dist/src/connectors/usage.js +0 -2
  863. package/dist/src/connectors/workflow-preflight.js +0 -2
  864. package/dist/src/daemon/constants.js +0 -2
  865. package/dist/src/daemon/install-plan.js +0 -2
  866. package/dist/src/daemon/launchd.js +0 -2
  867. package/dist/src/daemon/schtasks.js +0 -2
  868. package/dist/src/daemon/service-audit.js +0 -2
  869. package/dist/src/daemon/service.js +0 -2
  870. package/dist/src/daemon/systemd.js +0 -2
  871. package/dist/src/document-understanding/extract.js +0 -2
  872. package/dist/src/errors/index.js +0 -2
  873. package/dist/src/extensions/activation-context.js +0 -2
  874. package/dist/src/extensions/activation-planner.js +0 -2
  875. package/dist/src/extensions/api.js +0 -2
  876. package/dist/src/extensions/bundle-mcp.js +0 -2
  877. package/dist/src/extensions/bundled-extension-activation.js +0 -2
  878. package/dist/src/extensions/diagnostics.js +0 -2
  879. package/dist/src/extensions/discover-extensions.js +0 -2
  880. package/dist/src/extensions/engine-check.js +0 -2
  881. package/dist/src/extensions/extension-metadata-snapshot.js +0 -2
  882. package/dist/src/extensions/extension-registry-impl.js +0 -2
  883. package/dist/src/extensions/health.js +0 -2
  884. package/dist/src/extensions/hooks.js +0 -2
  885. package/dist/src/extensions/index.js +0 -2
  886. package/dist/src/extensions/install-transaction.js +0 -2
  887. package/dist/src/extensions/install.js +0 -2
  888. package/dist/src/extensions/loader.js +0 -2
  889. package/dist/src/extensions/lockfile.js +0 -2
  890. package/dist/src/extensions/manifest-registry.js +0 -2
  891. package/dist/src/extensions/marketplace.js +0 -2
  892. package/dist/src/extensions/media-provider-contracts.js +0 -2
  893. package/dist/src/extensions/normalize-manifest.js +0 -2
  894. package/dist/src/extensions/onboard-helpers.js +0 -2
  895. package/dist/src/extensions/package-contract.js +0 -2
  896. package/dist/src/extensions/sdk/channel-entry.js +0 -2
  897. package/dist/src/extensions/sdk/channel-helpers.js +0 -2
  898. package/dist/src/extensions/sdk/index.js +0 -2
  899. package/dist/src/extensions/sdk/lazy.js +0 -2
  900. package/dist/src/extensions/sdk/testing.js +0 -2
  901. package/dist/src/extensions/security.js +0 -2
  902. package/dist/src/extensions/slots.js +0 -2
  903. package/dist/src/extensions/speech-provider-contracts.js +0 -2
  904. package/dist/src/extensions/store-zip-limits.js +0 -2
  905. package/dist/src/extensions/typed-event-bus.js +0 -2
  906. package/dist/src/extensions/types/hooks.js +0 -2
  907. package/dist/src/extensions/types/providers.js +0 -2
  908. package/dist/src/extensions/update.js +0 -2
  909. package/dist/src/extensions/when-context.js +0 -2
  910. package/dist/src/extensions/when-expression.js +0 -2
  911. package/dist/src/gateway/agent-builtin-tools.js +0 -2
  912. package/dist/src/gateway/agent-run-relay.js +0 -2
  913. package/dist/src/gateway/agents-admin.js +0 -2
  914. package/dist/src/gateway/auth.js +0 -2
  915. package/dist/src/gateway/capability-presets-admin.js +0 -2
  916. package/dist/src/gateway/chat-limits.js +0 -2
  917. package/dist/src/gateway/chat-stream/mapper.js +28 -14
  918. package/dist/src/gateway/chat-stream/pet-feedback.d.ts +13 -0
  919. package/dist/src/gateway/chat-stream/pet-feedback.js +45 -0
  920. package/dist/src/gateway/chat-stream/protocol.d.ts +26 -0
  921. package/dist/src/gateway/clarify-bridge.js +3 -3
  922. package/dist/src/gateway/clarify-runtime.js +0 -2
  923. package/dist/src/gateway/client-ip.js +0 -2
  924. package/dist/src/gateway/config-tools-web.js +0 -2
  925. package/dist/src/gateway/credential.js +0 -2
  926. package/dist/src/gateway/discovery/mdns.js +0 -2
  927. package/dist/src/gateway/dreaming-automation-reconciler.js +0 -2
  928. package/dist/src/gateway/ensure-network-cors.js +0 -2
  929. package/dist/src/gateway/file-path-classifier.js +0 -2
  930. package/dist/src/gateway/file-reference-registry.js +0 -2
  931. package/dist/src/gateway/global-defaults-admin.js +0 -2
  932. package/dist/src/gateway/heartbeat/service.js +0 -2
  933. package/dist/src/gateway/hono/app.js +0 -2
  934. package/dist/src/gateway/hono/lib/agent-model.js +0 -2
  935. package/dist/src/gateway/hono/lib/config-payload.js +0 -2
  936. package/dist/src/gateway/hono/lib/extension-assets.js +0 -2
  937. package/dist/src/gateway/hono/lib/extension-store.js +0 -2
  938. package/dist/src/gateway/hono/lib/mask-secret-length.js +0 -2
  939. package/dist/src/gateway/hono/lib/route-logger.js +0 -2
  940. package/dist/src/gateway/hono/lib/safe-providers-config.js +0 -2
  941. package/dist/src/gateway/hono/lib/safe-voice-config.js +0 -2
  942. package/dist/src/gateway/hono/lib/startup-unavailable.js +0 -2
  943. package/dist/src/gateway/hono/lib/static-ui.js +0 -2
  944. package/dist/src/gateway/hono/middleware/auth.js +0 -2
  945. package/dist/src/gateway/hono/middleware/log-context.js +0 -2
  946. package/dist/src/gateway/hono/middleware/logger.js +0 -2
  947. package/dist/src/gateway/hono/middleware/route-errors.js +0 -2
  948. package/dist/src/gateway/hono/middleware/scopes.js +0 -2
  949. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +0 -2
  950. package/dist/src/gateway/hono/oauth-async.js +0 -2
  951. package/dist/src/gateway/hono/oauth.js +0 -2
  952. package/dist/src/gateway/hono/routes/activity.js +0 -2
  953. package/dist/src/gateway/hono/routes/agent-stream.js +0 -2
  954. package/dist/src/gateway/hono/routes/agents.js +0 -2
  955. package/dist/src/gateway/hono/routes/ai-assist.js +0 -2
  956. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +0 -2
  957. package/dist/src/gateway/hono/routes/browser-install.js +0 -2
  958. package/dist/src/gateway/hono/routes/browser.js +0 -2
  959. package/dist/src/gateway/hono/routes/capabilities.js +0 -2
  960. package/dist/src/gateway/hono/routes/capability-presets.js +0 -2
  961. package/dist/src/gateway/hono/routes/channels.js +0 -2
  962. package/dist/src/gateway/hono/routes/commands-skills.js +0 -2
  963. package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -2
  964. package/dist/src/gateway/hono/routes/config-patch/channels.js +0 -2
  965. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -2
  966. package/dist/src/gateway/hono/routes/config-patch/misc.js +0 -2
  967. package/dist/src/gateway/hono/routes/config-patch/result.js +0 -2
  968. package/dist/src/gateway/hono/routes/config.js +0 -2
  969. package/dist/src/gateway/hono/routes/connectors.js +0 -2
  970. package/dist/src/gateway/hono/routes/doctor.js +0 -2
  971. package/dist/src/gateway/hono/routes/dreaming.js +0 -2
  972. package/dist/src/gateway/hono/routes/exposure.js +0 -2
  973. package/dist/src/gateway/hono/routes/extension-gateway.js +0 -2
  974. package/dist/src/gateway/hono/routes/global-defaults.js +0 -2
  975. package/dist/src/gateway/hono/routes/goals.js +0 -2
  976. package/dist/src/gateway/hono/routes/home.js +0 -2
  977. package/dist/src/gateway/hono/routes/host-fs.js +0 -2
  978. package/dist/src/gateway/hono/routes/index.js +0 -2
  979. package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -2
  980. package/dist/src/gateway/hono/routes/lazy-fallback.js +0 -2
  981. package/dist/src/gateway/hono/routes/local-apps.js +0 -2
  982. package/dist/src/gateway/hono/routes/logs.js +0 -2
  983. package/dist/src/gateway/hono/routes/mcp.js +0 -2
  984. package/dist/src/gateway/hono/routes/media.js +0 -2
  985. package/dist/src/gateway/hono/routes/memory.js +0 -2
  986. package/dist/src/gateway/hono/routes/migrations.js +0 -2
  987. package/dist/src/gateway/hono/routes/mobile.js +0 -2
  988. package/dist/src/gateway/hono/routes/models.js +0 -2
  989. package/dist/src/gateway/hono/routes/notes.js +3 -3
  990. package/dist/src/gateway/hono/routes/projects.js +0 -2
  991. package/dist/src/gateway/hono/routes/public-gateway.js +0 -2
  992. package/dist/src/gateway/hono/routes/search.js +0 -2
  993. package/dist/src/gateway/hono/routes/sessions.js +0 -2
  994. package/dist/src/gateway/hono/routes/shares.js +0 -2
  995. package/dist/src/gateway/hono/routes/site-shares.js +0 -2
  996. package/dist/src/gateway/hono/routes/status.js +0 -2
  997. package/dist/src/gateway/hono/routes/tui.js +0 -2
  998. package/dist/src/gateway/hono/routes/tunnel.js +0 -2
  999. package/dist/src/gateway/hono/routes/update.js +0 -2
  1000. package/dist/src/gateway/hono/routes/voice.js +0 -2
  1001. package/dist/src/gateway/hono/routes/work-discovery.js +0 -2
  1002. package/dist/src/gateway/hono/routes/workflows.js +0 -2
  1003. package/dist/src/gateway/hono/routes/workspace.js +0 -2
  1004. package/dist/src/gateway/hono/routes/you.js +0 -2
  1005. package/dist/src/gateway/hono/sse-json.js +0 -2
  1006. package/dist/src/gateway/hono/sse.js +0 -2
  1007. package/dist/src/gateway/host.js +0 -2
  1008. package/dist/src/gateway/image-capabilities.js +0 -2
  1009. package/dist/src/gateway/listen.js +0 -2
  1010. package/dist/src/gateway/lock.js +0 -2
  1011. package/dist/src/gateway/ports.js +0 -2
  1012. package/dist/src/gateway/protocol.js +0 -2
  1013. package/dist/src/gateway/public-url.js +0 -2
  1014. package/dist/src/gateway/rate-limit/auth-policy.js +0 -2
  1015. package/dist/src/gateway/rate-limit/buckets.js +0 -2
  1016. package/dist/src/gateway/rate-limit/env-flags.js +0 -2
  1017. package/dist/src/gateway/resolve-channel-connect-defer.js +0 -2
  1018. package/dist/src/gateway/resolve-webchat-session-key.js +0 -2
  1019. package/dist/src/gateway/respawn.js +0 -2
  1020. package/dist/src/gateway/run-loop.js +0 -2
  1021. package/dist/src/gateway/runtime-config.js +0 -2
  1022. package/dist/src/gateway/security/audit.js +0 -2
  1023. package/dist/src/gateway/security/csp.js +0 -2
  1024. package/dist/src/gateway/security/dangerous-tools.js +0 -2
  1025. package/dist/src/gateway/security/external-content.js +0 -2
  1026. package/dist/src/gateway/security/known-weak-secrets.js +0 -2
  1027. package/dist/src/gateway/security/loopback.js +0 -2
  1028. package/dist/src/gateway/security/operator-scopes.js +0 -2
  1029. package/dist/src/gateway/security/origin-check.js +0 -2
  1030. package/dist/src/gateway/security/preauth-connection-budget.js +0 -2
  1031. package/dist/src/gateway/security/secret-equal.js +0 -2
  1032. package/dist/src/gateway/server-tailscale.js +0 -2
  1033. package/dist/src/gateway/server.js +0 -2
  1034. package/dist/src/gateway/service/agent-runner.js +0 -2
  1035. package/dist/src/gateway/service/config-coordinator.js +0 -2
  1036. package/dist/src/gateway/service/marketplace-service.js +0 -2
  1037. package/dist/src/gateway/service/run-gateway-agent.js +0 -2
  1038. package/dist/src/gateway/service/session-chat-ids.js +0 -2
  1039. package/dist/src/gateway/service/sessions-api.js +0 -2
  1040. package/dist/src/gateway/service/sse-hub.js +0 -2
  1041. package/dist/src/gateway/service.js +1 -2
  1042. package/dist/src/gateway/session-reset-service.js +0 -2
  1043. package/dist/src/gateway/startup-readiness.js +0 -2
  1044. package/dist/src/gateway/startup-trace.js +0 -2
  1045. package/dist/src/gateway/tailscale-auth.js +0 -2
  1046. package/dist/src/gateway/tailscale-lifecycle.js +0 -2
  1047. package/dist/src/gateway/tls-server.js +0 -2
  1048. package/dist/src/gateway/trusted-proxy.js +0 -2
  1049. package/dist/src/gateway/user-turn-input.js +0 -2
  1050. package/dist/src/gateway/workspace-editor-path.js +0 -2
  1051. package/dist/src/gateway/workspace-file-search.js +0 -2
  1052. package/dist/src/gateway/workspace-fs-file-list.js +0 -2
  1053. package/dist/src/gateway/workspace-heartbeat-path.js +0 -2
  1054. package/dist/src/gateway/workspace-ripgrep.js +0 -2
  1055. package/dist/src/gateway/ws-security.js +0 -2
  1056. package/dist/src/generated/bundled-image-generation-providers.js +0 -2
  1057. package/dist/src/goals/goal-contract-draft.js +0 -2
  1058. package/dist/src/goals/goal-evidence-review.js +0 -2
  1059. package/dist/src/goals/goal-notifications.js +0 -2
  1060. package/dist/src/goals/goal-queue-store.js +0 -2
  1061. package/dist/src/goals/goal-runner.js +0 -2
  1062. package/dist/src/goals/goal-service.js +0 -2
  1063. package/dist/src/goals/goal-store.js +0 -2
  1064. package/dist/src/goals/goal-workflow-judge.js +0 -2
  1065. package/dist/src/heartbeat/active-hours.js +0 -2
  1066. package/dist/src/heartbeat/content-check.js +0 -2
  1067. package/dist/src/heartbeat/event-prompt.js +0 -2
  1068. package/dist/src/heartbeat/tokens.js +0 -2
  1069. package/dist/src/heartbeat/wake.js +0 -2
  1070. package/dist/src/i18n/format.js +0 -2
  1071. package/dist/src/i18n/goals-bundle.js +0 -2
  1072. package/dist/src/i18n/locale.js +0 -2
  1073. package/dist/src/i18n/locales/goals.en.js +0 -2
  1074. package/dist/src/i18n/locales/goals.zh.js +0 -2
  1075. package/dist/src/i18n/locales/share-tool.en.js +0 -2
  1076. package/dist/src/i18n/locales/share-tool.zh.js +0 -2
  1077. package/dist/src/i18n/share-tool-bundle.js +0 -2
  1078. package/dist/src/index.js +0 -2
  1079. package/dist/src/infra/brew.js +0 -2
  1080. package/dist/src/infra/bus/queue.js +0 -2
  1081. package/dist/src/infra/debounce.js +0 -2
  1082. package/dist/src/infra/exec.js +0 -2
  1083. package/dist/src/infra/gateway-process-argv.js +0 -2
  1084. package/dist/src/infra/gateway-processes.js +0 -2
  1085. package/dist/src/infra/host-env-security-policy.js +0 -2
  1086. package/dist/src/infra/host-env-security.js +0 -2
  1087. package/dist/src/infra/http-proxy-env.js +0 -2
  1088. package/dist/src/infra/is-main.js +0 -2
  1089. package/dist/src/infra/json-utf8-bytes.js +0 -2
  1090. package/dist/src/infra/node-sqlite.js +0 -2
  1091. package/dist/src/infra/package-json.js +0 -2
  1092. package/dist/src/infra/package-update-steps.js +0 -2
  1093. package/dist/src/infra/path-env.js +0 -2
  1094. package/dist/src/infra/path-prepend.js +0 -2
  1095. package/dist/src/infra/ports.js +0 -2
  1096. package/dist/src/infra/rate-limit/failure-limiter.js +0 -2
  1097. package/dist/src/infra/rate-limit/keyed-store.js +0 -2
  1098. package/dist/src/infra/rate-limit/rate-limiter.js +0 -2
  1099. package/dist/src/infra/restart.js +0 -2
  1100. package/dist/src/infra/retry.js +0 -2
  1101. package/dist/src/infra/run-command.js +0 -2
  1102. package/dist/src/infra/sqlite-errors.js +0 -2
  1103. package/dist/src/infra/ssh-tunnel.js +0 -2
  1104. package/dist/src/infra/stable-node-path.js +0 -2
  1105. package/dist/src/infra/tailscale.js +0 -2
  1106. package/dist/src/infra/undici-fetch.js +0 -2
  1107. package/dist/src/infra/unhandled-rejections.js +0 -2
  1108. package/dist/src/infra/update-channels.js +0 -2
  1109. package/dist/src/infra/update-check.js +0 -2
  1110. package/dist/src/infra/update-global.js +0 -2
  1111. package/dist/src/infra/update-lock.js +0 -2
  1112. package/dist/src/infra/update-log.js +0 -2
  1113. package/dist/src/infra/update-restart.js +0 -2
  1114. package/dist/src/infra/update-runner.js +0 -2
  1115. package/dist/src/infra/update-startup.js +0 -2
  1116. package/dist/src/infra/warning-filter.js +0 -2
  1117. package/dist/src/infra/write-file-atomic.js +0 -2
  1118. package/dist/src/knowledge/connected-knowledge-pipeline.js +0 -2
  1119. package/dist/src/knowledge/coordinator.js +0 -2
  1120. package/dist/src/knowledge/ingestion-service.js +0 -2
  1121. package/dist/src/local-apps/acceptance.js +0 -2
  1122. package/dist/src/local-apps/preview-runtime-bridge.js +0 -2
  1123. package/dist/src/local-apps/runtime-entry.js +0 -2
  1124. package/dist/src/local-apps/scaffold.js +0 -2
  1125. package/dist/src/local-apps/service.js +0 -2
  1126. package/dist/src/local-apps/store.js +0 -2
  1127. package/dist/src/markdown/chunk.js +0 -2
  1128. package/dist/src/markdown/code-spans.js +0 -2
  1129. package/dist/src/markdown/fences.js +0 -2
  1130. package/dist/src/markdown/frontmatter.js +0 -2
  1131. package/dist/src/markdown/ir.js +0 -2
  1132. package/dist/src/markdown/render.js +0 -2
  1133. package/dist/src/markdown/tables.js +0 -2
  1134. package/dist/src/mcp/channel-bridge.js +0 -2
  1135. package/dist/src/mcp/channel-server.js +0 -2
  1136. package/dist/src/mcp/channel-shared.js +0 -2
  1137. package/dist/src/mcp/channel-tools.js +0 -2
  1138. package/dist/src/mcp/gateway-http-client.js +0 -2
  1139. package/dist/src/media/media-reference.js +0 -2
  1140. package/dist/src/media/paths.js +0 -2
  1141. package/dist/src/media/session-references.js +0 -2
  1142. package/dist/src/media/store.js +0 -2
  1143. package/dist/src/media/uri.js +0 -2
  1144. package/dist/src/media-shared/http/api-key-rotation.js +0 -2
  1145. package/dist/src/media-shared/http/deadline.js +0 -2
  1146. package/dist/src/media-shared/http/private-network.js +0 -2
  1147. package/dist/src/media-shared/http/provider-http-errors.js +0 -2
  1148. package/dist/src/media-shared/http/provider-http.js +0 -2
  1149. package/dist/src/media-shared/http/resolve-provider-http-request-config.js +0 -2
  1150. package/dist/src/media-shared/http/ssrf-guard.js +0 -2
  1151. package/dist/src/media-shared/http/test-helpers/mock-server.js +0 -2
  1152. package/dist/src/media-understanding/audio-transcription-runner.js +0 -2
  1153. package/dist/src/media-understanding/openai-compatible-audio.js +0 -2
  1154. package/dist/src/media-understanding/registry.js +0 -2
  1155. package/dist/src/media-understanding/resolve-entries.js +0 -2
  1156. package/dist/src/media-understanding/runner.js +0 -2
  1157. package/dist/src/migrations/config/default-capability-preset.js +0 -2
  1158. package/dist/src/migrations/registry.js +0 -2
  1159. package/dist/src/migrations/runner.js +0 -2
  1160. package/dist/src/mobile/notification-service.js +0 -2
  1161. package/dist/src/mobile/notification-store.js +0 -2
  1162. package/dist/src/mobile/notification-types.js +0 -2
  1163. package/dist/src/notes/agent-context.js +0 -2
  1164. package/dist/src/notes/attachment-ref.js +0 -2
  1165. package/dist/src/notes/note-attachment-sync.js +0 -2
  1166. package/dist/src/notes/note-index-meta.js +0 -2
  1167. package/dist/src/notes/note-markdown.js +0 -2
  1168. package/dist/src/notes/paths.js +0 -2
  1169. package/dist/src/notes/service.d.ts +3 -1
  1170. package/dist/src/notes/service.js +19 -5
  1171. package/dist/src/notes/store.js +0 -2
  1172. package/dist/src/package-version.js +0 -2
  1173. package/dist/src/pets/factory.d.ts +13 -0
  1174. package/dist/src/pets/factory.js +23 -2
  1175. package/dist/src/pets/manifest.js +0 -2
  1176. package/dist/src/pets/validator.js +0 -2
  1177. package/dist/src/process/kill-tree.js +0 -2
  1178. package/dist/src/project-trust/trust-store.js +0 -2
  1179. package/dist/src/projects/automation-bind.js +0 -2
  1180. package/dist/src/projects/goal-bind.js +0 -2
  1181. package/dist/src/projects/memory-bind.js +0 -2
  1182. package/dist/src/projects/project-agent-suggestion.js +0 -2
  1183. package/dist/src/projects/project-agent.js +0 -2
  1184. package/dist/src/projects/project-kind.js +0 -2
  1185. package/dist/src/projects/project-loop.js +0 -2
  1186. package/dist/src/projects/project-service.js +0 -2
  1187. package/dist/src/projects/project-store.js +0 -2
  1188. package/dist/src/projects/session-bind.js +0 -2
  1189. package/dist/src/projects/workflow-bind.js +0 -2
  1190. package/dist/src/projects/workspace-project.js +0 -2
  1191. package/dist/src/projects/workspace.js +0 -2
  1192. package/dist/src/providers/auth-runtime/auth-profile-store.js +0 -2
  1193. package/dist/src/providers/auth-runtime/is-configured.js +0 -2
  1194. package/dist/src/providers/auth-runtime/oauth.js +0 -2
  1195. package/dist/src/providers/auth-runtime/resolve-api-key.js +0 -2
  1196. package/dist/src/providers/auth-runtime/resolve-auth.js +0 -2
  1197. package/dist/src/providers/constants.js +0 -2
  1198. package/dist/src/providers/domestic-presets.js +0 -2
  1199. package/dist/src/providers/env-keys.js +0 -2
  1200. package/dist/src/providers/extension-stream-bridge.js +0 -2
  1201. package/dist/src/providers/index.js +0 -2
  1202. package/dist/src/providers/model-call.js +0 -2
  1203. package/dist/src/providers/model-discovery.js +0 -2
  1204. package/dist/src/providers/model-registry.js +0 -2
  1205. package/dist/src/providers/model-supplements.js +0 -2
  1206. package/dist/src/providers/plugin-registry.js +0 -2
  1207. package/dist/src/providers/presentation.js +0 -2
  1208. package/dist/src/remote-access/exposure-guards.js +0 -2
  1209. package/dist/src/remote-access/exposure-manager.js +0 -2
  1210. package/dist/src/review/review-git.js +0 -2
  1211. package/dist/src/review/review-types.js +0 -2
  1212. package/dist/src/routing/account-id.js +0 -2
  1213. package/dist/src/routing/agent-session-key.js +0 -2
  1214. package/dist/src/routing/bindings.js +0 -2
  1215. package/dist/src/routing/index.js +0 -2
  1216. package/dist/src/routing/resolve-route.js +0 -2
  1217. package/dist/src/routing/resolve-tui-session-key.js +0 -2
  1218. package/dist/src/routing/session-key-utils.js +0 -2
  1219. package/dist/src/routing/session-key.js +0 -2
  1220. package/dist/src/session/abort-cutoff.js +0 -2
  1221. package/dist/src/session/chat-export.js +0 -2
  1222. package/dist/src/session/client-history.js +0 -2
  1223. package/dist/src/session/compaction-checkpoints.js +0 -2
  1224. package/dist/src/session/config-store.js +0 -2
  1225. package/dist/src/session/init-session-turn.js +0 -2
  1226. package/dist/src/session/lifecycle-timestamps.js +0 -2
  1227. package/dist/src/session/load-jsonl-entries.js +0 -2
  1228. package/dist/src/session/manager.js +0 -2
  1229. package/dist/src/session/patch-metadata.js +0 -2
  1230. package/dist/src/session/reset-policy.js +0 -2
  1231. package/dist/src/session/reset-triggers.js +0 -2
  1232. package/dist/src/session/reset-type.js +0 -2
  1233. package/dist/src/session/resolve-session.js +0 -2
  1234. package/dist/src/session/session-context-for-llm.js +0 -2
  1235. package/dist/src/session/session-id.js +0 -2
  1236. package/dist/src/session/session-title.js +0 -2
  1237. package/dist/src/session/session-workspace.js +0 -2
  1238. package/dist/src/session/store.js +0 -2
  1239. package/dist/src/session/stored-rows-to-file-entries.js +0 -2
  1240. package/dist/src/session/thinking-resolve.js +0 -2
  1241. package/dist/src/session/transcript-events.js +0 -2
  1242. package/dist/src/session/transcript-format.js +0 -2
  1243. package/dist/src/session/transcript-outline.js +0 -2
  1244. package/dist/src/session/transcript-stats.js +0 -2
  1245. package/dist/src/session/types.js +0 -2
  1246. package/dist/src/session/user-round-delete.js +0 -2
  1247. package/dist/src/share/share-audit.js +0 -2
  1248. package/dist/src/share/share-auto.js +0 -2
  1249. package/dist/src/share/share-config.js +0 -2
  1250. package/dist/src/share/share-landing.js +0 -2
  1251. package/dist/src/share/share-rate-limit.js +0 -2
  1252. package/dist/src/share/share-store.js +0 -2
  1253. package/dist/src/share/share-thumbnail.js +0 -2
  1254. package/dist/src/share/share-types.js +0 -2
  1255. package/dist/src/share/share-url.js +0 -2
  1256. package/dist/src/share/share-zip.js +0 -2
  1257. package/dist/src/share/site-proxy.js +0 -2
  1258. package/dist/src/share/site-share-config.js +0 -2
  1259. package/dist/src/share/site-share-router.js +0 -2
  1260. package/dist/src/share/site-share-store.js +0 -2
  1261. package/dist/src/share/site-share-types.js +0 -2
  1262. package/dist/src/share/site-static-serve.js +0 -2
  1263. package/dist/src/storage/sqlite/activity-repository.js +0 -2
  1264. package/dist/src/storage/sqlite/config-repository.js +0 -2
  1265. package/dist/src/storage/sqlite/connection.js +0 -2
  1266. package/dist/src/storage/sqlite/connector-repository.js +0 -2
  1267. package/dist/src/storage/sqlite/fts.js +0 -2
  1268. package/dist/src/storage/sqlite/knowledge-repository.js +0 -2
  1269. package/dist/src/storage/sqlite/memory-index-repository.js +0 -2
  1270. package/dist/src/storage/sqlite/memory-records-repository.js +0 -2
  1271. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -2
  1272. package/dist/src/storage/sqlite/migrations/discover.js +0 -2
  1273. package/dist/src/storage/sqlite/migrations/errors.js +0 -2
  1274. package/dist/src/storage/sqlite/migrations/runner.js +0 -2
  1275. package/dist/src/storage/sqlite/note-agent-context-repository.js +0 -2
  1276. package/dist/src/storage/sqlite/notes-repository.js +0 -2
  1277. package/dist/src/storage/sqlite/paths.js +0 -2
  1278. package/dist/src/storage/sqlite/row-mappers.js +0 -2
  1279. package/dist/src/storage/sqlite/schema-version.js +0 -2
  1280. package/dist/src/storage/sqlite/schema.js +0 -2
  1281. package/dist/src/storage/sqlite/session-metadata.js +0 -2
  1282. package/dist/src/storage/sqlite/session-repository.js +0 -2
  1283. package/dist/src/storage/sqlite/transaction.js +0 -2
  1284. package/dist/src/storage/sqlite/transcript-repository.js +0 -2
  1285. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -2
  1286. package/dist/src/storage/sqlite/user-trust-repository.js +0 -2
  1287. package/dist/src/tui/backends/embedded-backend.js +0 -2
  1288. package/dist/src/tui/backends/gateway-sse-backend.js +0 -2
  1289. package/dist/src/tui/chat-history.js +0 -2
  1290. package/dist/src/tui/clipboard-image.js +0 -2
  1291. package/dist/src/tui/clipboard-text.js +0 -2
  1292. package/dist/src/tui/components/assistant-message.js +0 -2
  1293. package/dist/src/tui/components/bash-execution.js +0 -2
  1294. package/dist/src/tui/components/bash-summary.js +0 -2
  1295. package/dist/src/tui/components/branch-message-summary.js +0 -2
  1296. package/dist/src/tui/components/branch-summary.js +0 -2
  1297. package/dist/src/tui/components/chat-log.js +0 -2
  1298. package/dist/src/tui/components/compaction-summary.js +0 -2
  1299. package/dist/src/tui/components/custom-editor.js +0 -2
  1300. package/dist/src/tui/components/custom-message.js +0 -2
  1301. package/dist/src/tui/components/dynamic-border.js +0 -2
  1302. package/dist/src/tui/components/extension-dialog.js +0 -2
  1303. package/dist/src/tui/components/fuzzy-filter.js +0 -2
  1304. package/dist/src/tui/components/scoped-models-selector.js +0 -2
  1305. package/dist/src/tui/components/searchable-select-list.js +0 -2
  1306. package/dist/src/tui/components/session-selector.js +0 -2
  1307. package/dist/src/tui/components/settings-selector.js +0 -2
  1308. package/dist/src/tui/components/thinking-selector.js +0 -2
  1309. package/dist/src/tui/components/tool-execution.js +0 -2
  1310. package/dist/src/tui/components/tui-bottom-bar.js +0 -2
  1311. package/dist/src/tui/components/tui-header.js +0 -2
  1312. package/dist/src/tui/components/user-message.js +0 -2
  1313. package/dist/src/tui/components/visual-truncate.js +0 -2
  1314. package/dist/src/tui/extension-host/autocomplete.js +0 -2
  1315. package/dist/src/tui/extension-host/host.js +0 -2
  1316. package/dist/src/tui/extension-host/load-extensions.js +0 -2
  1317. package/dist/src/tui/extension-host/runtime-context.js +0 -2
  1318. package/dist/src/tui/extension-host/runtime.js +0 -2
  1319. package/dist/src/tui/extension-host/surface.js +0 -2
  1320. package/dist/src/tui/extension-host/tool-renderers.js +0 -2
  1321. package/dist/src/tui/format-tui-hotkeys.js +0 -2
  1322. package/dist/src/tui/sse-consumer.js +0 -2
  1323. package/dist/src/tui/theme/dark.js +0 -2
  1324. package/dist/src/tui/theme/light.js +0 -2
  1325. package/dist/src/tui/theme-manager.js +0 -2
  1326. package/dist/src/tui/theme.js +0 -2
  1327. package/dist/src/tui/tool-summary.js +0 -2
  1328. package/dist/src/tui/tui-agent-events.js +0 -2
  1329. package/dist/src/tui/tui-command-formatters.js +0 -2
  1330. package/dist/src/tui/tui-commands.js +0 -2
  1331. package/dist/src/tui/tui-context-usage.js +0 -2
  1332. package/dist/src/tui/tui-extension-user-message.js +0 -2
  1333. package/dist/src/tui/tui-fd-path.js +0 -2
  1334. package/dist/src/tui/tui-file-autocomplete.js +0 -2
  1335. package/dist/src/tui/tui-follow-up-queue.js +0 -2
  1336. package/dist/src/tui/tui-git-branch.js +0 -2
  1337. package/dist/src/tui/tui-keybindings-file.js +0 -2
  1338. package/dist/src/tui/tui-lifecycle.js +0 -2
  1339. package/dist/src/tui/tui-local-shell.js +0 -2
  1340. package/dist/src/tui/tui-model-picker.js +0 -2
  1341. package/dist/src/tui/tui-oauth-login.js +0 -2
  1342. package/dist/src/tui/tui-overlays.js +0 -2
  1343. package/dist/src/tui/tui-picker-overlay.js +0 -2
  1344. package/dist/src/tui/tui-run-state.js +0 -2
  1345. package/dist/src/tui/tui-run-status-format.js +0 -2
  1346. package/dist/src/tui/tui-runtime-hints.js +0 -2
  1347. package/dist/src/tui/tui-scoped-models.js +0 -2
  1348. package/dist/src/tui/tui-session-actions.js +0 -2
  1349. package/dist/src/tui/tui-session-format.js +0 -2
  1350. package/dist/src/tui/tui-session-snapshot.js +0 -2
  1351. package/dist/src/tui/tui-session-stats.js +0 -2
  1352. package/dist/src/tui/tui-settings.js +0 -2
  1353. package/dist/src/tui/tui-skills-autocomplete.js +0 -2
  1354. package/dist/src/tui/tui-startup-resources.js +0 -2
  1355. package/dist/src/tui/tui-startup-text.js +0 -2
  1356. package/dist/src/tui/tui-stdio-filter.js +0 -2
  1357. package/dist/src/tui/tui-submit.js +0 -2
  1358. package/dist/src/tui/tui-suspend.js +0 -2
  1359. package/dist/src/tui/tui-timeline-picker.js +0 -2
  1360. package/dist/src/tui/tui-timeline.js +0 -2
  1361. package/dist/src/tui/tui-tool-diff.js +0 -2
  1362. package/dist/src/tui/tui-tool-result.js +0 -2
  1363. package/dist/src/tui/tui-transcript-tree-picker.js +0 -2
  1364. package/dist/src/tui/tui-transcript-tree.js +0 -2
  1365. package/dist/src/tui/tui-types.js +0 -2
  1366. package/dist/src/tui/tui-workflow-slash.js +0 -2
  1367. package/dist/src/tui/tui.js +0 -2
  1368. package/dist/src/tui/xopc-tui-keybindings.js +0 -2
  1369. package/dist/src/tunnel/broker-client.js +0 -2
  1370. package/dist/src/tunnel/consent.js +0 -2
  1371. package/dist/src/tunnel/enable-lan-pairing.js +0 -2
  1372. package/dist/src/tunnel/env.js +0 -2
  1373. package/dist/src/tunnel/frp-subdomain-host.js +0 -2
  1374. package/dist/src/tunnel/frpc-binary.js +0 -2
  1375. package/dist/src/tunnel/frpc-config.js +0 -2
  1376. package/dist/src/tunnel/frpc-extract.js +0 -2
  1377. package/dist/src/tunnel/frpc-process.js +0 -2
  1378. package/dist/src/tunnel/gateway-lifecycle.js +0 -2
  1379. package/dist/src/tunnel/pair-context.js +0 -2
  1380. package/dist/src/tunnel/pair-url.js +0 -2
  1381. package/dist/src/tunnel/pairing-rate-limit.js +0 -2
  1382. package/dist/src/tunnel/pairing.js +0 -2
  1383. package/dist/src/tunnel/tunnel-audit.js +0 -2
  1384. package/dist/src/tunnel/tunnel-config.js +0 -2
  1385. package/dist/src/tunnel/tunnel-persist.js +0 -2
  1386. package/dist/src/tunnel/tunnel-qr.js +0 -2
  1387. package/dist/src/tunnel/tunnel-rate-limit.js +0 -2
  1388. package/dist/src/tunnel/tunnel-service.js +0 -2
  1389. package/dist/src/tunnel/tunnel-state.js +0 -2
  1390. package/dist/src/tunnel/well-known.js +0 -2
  1391. package/dist/src/user-context/config.js +0 -2
  1392. package/dist/src/user-context/import.js +0 -2
  1393. package/dist/src/user-context/owner.js +0 -2
  1394. package/dist/src/user-context/profile.js +0 -2
  1395. package/dist/src/user-context/projection.js +0 -2
  1396. package/dist/src/user-context/runtime.js +0 -2
  1397. package/dist/src/user-context/source-recommendations.js +0 -2
  1398. package/dist/src/user-context/trust-policy.js +0 -2
  1399. package/dist/src/utils/global-singleton.js +0 -2
  1400. package/dist/src/utils/helpers.js +0 -2
  1401. package/dist/src/utils/index.js +0 -2
  1402. package/dist/src/utils/is-record.js +0 -2
  1403. package/dist/src/utils/logger/audit.js +0 -2
  1404. package/dist/src/utils/logger/config.js +0 -2
  1405. package/dist/src/utils/logger/context.js +0 -2
  1406. package/dist/src/utils/logger/exporters.js +0 -2
  1407. package/dist/src/utils/logger/index.js +0 -2
  1408. package/dist/src/utils/logger/log-store.js +0 -2
  1409. package/dist/src/utils/logger/log-stream.js +0 -2
  1410. package/dist/src/utils/logger/pino-record.js +0 -2
  1411. package/dist/src/utils/logger/redact.js +0 -2
  1412. package/dist/src/utils/logger/rotation.js +0 -2
  1413. package/dist/src/utils/logger/shutdown.js +0 -2
  1414. package/dist/src/utils/logger/stats.js +0 -2
  1415. package/dist/src/utils/logger/streams.js +0 -2
  1416. package/dist/src/utils/logger/types.js +0 -2
  1417. package/dist/src/utils/logger.js +0 -2
  1418. package/dist/src/utils/redact-sensitive-url.js +0 -2
  1419. package/dist/src/utils/sanitize-log.js +0 -2
  1420. package/dist/src/utils/string-coerce.js +0 -2
  1421. package/dist/src/voice/language-profile.js +0 -2
  1422. package/dist/src/voice/local/model-files.js +0 -2
  1423. package/dist/src/voice/local/model-manager.js +0 -2
  1424. package/dist/src/voice/local/models.js +0 -2
  1425. package/dist/src/voice/local/runtime-client.js +0 -2
  1426. package/dist/src/voice/local/runtime-dispatcher.js +0 -2
  1427. package/dist/src/voice/local/runtime-worker.js +12 -4
  1428. package/dist/src/voice/local/wav.js +0 -2
  1429. package/dist/src/voice/metadata/builtin.js +0 -2
  1430. package/dist/src/voice/metadata/registry.js +0 -2
  1431. package/dist/src/voice/stt/availability.js +0 -2
  1432. package/dist/src/voice/stt/config-slice.js +0 -2
  1433. package/dist/src/voice/stt/factory.js +0 -2
  1434. package/dist/src/voice/stt/index.js +0 -2
  1435. package/dist/src/voice/stt/list-providers.js +0 -2
  1436. package/dist/src/voice/stt/mention.js +0 -2
  1437. package/dist/src/voice/stt/preflight.js +0 -2
  1438. package/dist/src/voice/stt/providers/alibaba-transcription.js +0 -2
  1439. package/dist/src/voice/stt/providers/local-transcription.js +0 -2
  1440. package/dist/src/voice/stt/providers/openai-transcription.js +0 -2
  1441. package/dist/src/voice/stt/transcribe-core.js +0 -2
  1442. package/dist/src/voice/stt/types.js +0 -2
  1443. package/dist/src/voice/tts/audio.js +0 -2
  1444. package/dist/src/voice/tts/config-slice.js +0 -2
  1445. package/dist/src/voice/tts/directives.js +0 -2
  1446. package/dist/src/voice/tts/factory.js +0 -2
  1447. package/dist/src/voice/tts/list-providers.js +0 -2
  1448. package/dist/src/voice/tts/merge-config.js +0 -2
  1449. package/dist/src/voice/tts/openai-compatible-speech.js +0 -2
  1450. package/dist/src/voice/tts/payload.js +0 -2
  1451. package/dist/src/voice/tts/preprocess.js +0 -2
  1452. package/dist/src/voice/tts/providers/alibaba-speech.js +0 -2
  1453. package/dist/src/voice/tts/providers/edge-speech.js +0 -2
  1454. package/dist/src/voice/tts/providers/minimax-speech.js +0 -2
  1455. package/dist/src/voice/tts/providers/openai-speech.js +0 -2
  1456. package/dist/src/voice/tts/sentence-boundary.js +0 -2
  1457. package/dist/src/voice/tts/service.js +0 -2
  1458. package/dist/src/voice/tts/speak-core.js +0 -2
  1459. package/dist/src/voice/tts/speech-registry.js +0 -2
  1460. package/dist/src/voice/tts/status-tracker.js +0 -2
  1461. package/dist/src/voice/tts/summarize.js +0 -2
  1462. package/dist/src/voice/tts/types.js +0 -2
  1463. package/dist/src/work-discovery/analyzer.js +0 -2
  1464. package/dist/src/work-discovery/probe.js +0 -2
  1465. package/dist/src/work-discovery/repository.js +0 -2
  1466. package/dist/src/work-discovery/service.js +0 -2
  1467. package/dist/src/work-items/agent-context.js +0 -2
  1468. package/dist/src/work-items/work-item-service.js +0 -2
  1469. package/dist/src/work-items/work-item-store.js +0 -2
  1470. package/dist/src/work-items/work-item-workflow-judge.js +0 -2
  1471. package/dist/src/workflows/authoring/workflow-draft-store.js +0 -2
  1472. package/dist/src/workflows/domain/definition-utils.js +0 -2
  1473. package/dist/src/workflows/domain/run.js +0 -2
  1474. package/dist/src/workflows/domain/schema-validation.js +0 -2
  1475. package/dist/src/workflows/domain/validation.js +0 -2
  1476. package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -2
  1477. package/dist/src/workflows/draft/workflow-draft-service.js +0 -2
  1478. package/dist/src/workflows/draft/workflow-draft-validator.js +0 -2
  1479. package/dist/src/workflows/engine/projector.js +0 -2
  1480. package/dist/src/workflows/engine/workflow-engine.js +0 -2
  1481. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +0 -2
  1482. package/dist/src/workflows/runtime/graph-workflow-runtime.js +0 -2
  1483. package/dist/src/workflows/service/run-view-to-snapshot.js +0 -2
  1484. package/dist/src/workflows/service/workflow-run-service.js +1 -3
  1485. package/dist/src/workflows/service/workflow-session-bridge.js +0 -2
  1486. package/dist/src/workflows/service/workflow-session-key.js +0 -2
  1487. package/dist/src/workflows/store/event-store.js +0 -2
  1488. package/dist/src/workflows/store/paths.js +0 -2
  1489. package/dist/src/workflows/store/run-index-store.js +0 -2
  1490. package/dist/src/workflows/store/run-store.js +0 -2
  1491. package/package.json +43 -12
  1492. package/skills/creative/hatch-pet/SKILL.md +1 -0
  1493. package/dist/extensions/dashscope/src/image-generation-provider.js.map +0 -1
  1494. package/dist/extensions/demo-memory/src/index.js.map +0 -1
  1495. package/dist/extensions/fal/src/image-generation-provider.js.map +0 -1
  1496. package/dist/extensions/feishu/src/actions/message-action-handler.js.map +0 -1
  1497. package/dist/extensions/feishu/src/adapters/cli-login.js.map +0 -1
  1498. package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +0 -1
  1499. package/dist/extensions/feishu/src/adapters/onboard-cli.js.map +0 -1
  1500. package/dist/extensions/feishu/src/auth/app-registration.js.map +0 -1
  1501. package/dist/extensions/feishu/src/auth/pairing.js.map +0 -1
  1502. package/dist/extensions/feishu/src/auth/paths.js.map +0 -1
  1503. package/dist/extensions/feishu/src/directory/directory-adapter.js.map +0 -1
  1504. package/dist/extensions/feishu/src/format.js.map +0 -1
  1505. package/dist/extensions/feishu/src/index.js.map +0 -1
  1506. package/dist/extensions/feishu/src/outbound/actions.js.map +0 -1
  1507. package/dist/extensions/feishu/src/outbound/media-load.js.map +0 -1
  1508. package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +0 -1
  1509. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js.map +0 -1
  1510. package/dist/extensions/feishu/src/pairing-config-resolver.js.map +0 -1
  1511. package/dist/extensions/feishu/src/plugin.js.map +0 -1
  1512. package/dist/extensions/feishu/src/schema/config-schema.js.map +0 -1
  1513. package/dist/extensions/feishu/src/state/accounts.js.map +0 -1
  1514. package/dist/extensions/feishu/src/state/message-bindings.js.map +0 -1
  1515. package/dist/extensions/feishu/src/state/thread-bindings.js.map +0 -1
  1516. package/dist/extensions/feishu/src/status/doctor.js.map +0 -1
  1517. package/dist/extensions/feishu/src/status/status-adapter.js.map +0 -1
  1518. package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +0 -1
  1519. package/dist/extensions/feishu/src/subagent-hooks.js.map +0 -1
  1520. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js.map +0 -1
  1521. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js.map +0 -1
  1522. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js.map +0 -1
  1523. package/dist/extensions/feishu/src/tools/tools.js.map +0 -1
  1524. package/dist/extensions/feishu/src/transport/client/client.js.map +0 -1
  1525. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js.map +0 -1
  1526. package/dist/extensions/feishu/src/transport/reliability/dedupe.js.map +0 -1
  1527. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js.map +0 -1
  1528. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js.map +0 -1
  1529. package/dist/extensions/feishu/src/transport/socket-mode/retry.js.map +0 -1
  1530. package/dist/extensions/feishu/src/transport/text/mentions.js.map +0 -1
  1531. package/dist/extensions/feishu/src/transport/webhook/monitor.js.map +0 -1
  1532. package/dist/extensions/feishu/src/ui/config-surface.js.map +0 -1
  1533. package/dist/extensions/feishu/src/workflow-progress.js.map +0 -1
  1534. package/dist/extensions/google/src/image-generation-provider.js.map +0 -1
  1535. package/dist/extensions/minimax/src/image-generation-provider.js.map +0 -1
  1536. package/dist/extensions/openai/src/image-generation-provider.js.map +0 -1
  1537. package/dist/extensions/telegram/src/access-control.js.map +0 -1
  1538. package/dist/extensions/telegram/src/account-manager.js.map +0 -1
  1539. package/dist/extensions/telegram/src/actions/message-actions.js.map +0 -1
  1540. package/dist/extensions/telegram/src/adapters/command-adapter.js.map +0 -1
  1541. package/dist/extensions/telegram/src/adapters/config-adapter.js.map +0 -1
  1542. package/dist/extensions/telegram/src/adapters/debounce-keys.js.map +0 -1
  1543. package/dist/extensions/telegram/src/adapters/gateway-adapter.js.map +0 -1
  1544. package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +0 -1
  1545. package/dist/extensions/telegram/src/adapters/inbound-access.js.map +0 -1
  1546. package/dist/extensions/telegram/src/adapters/index.js.map +0 -1
  1547. package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +0 -1
  1548. package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +0 -1
  1549. package/dist/extensions/telegram/src/adapters/security-adapter.js.map +0 -1
  1550. package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +0 -1
  1551. package/dist/extensions/telegram/src/adapters/status-adapter.js.map +0 -1
  1552. package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +0 -1
  1553. package/dist/extensions/telegram/src/api-root.js.map +0 -1
  1554. package/dist/extensions/telegram/src/approval-delivery.js.map +0 -1
  1555. package/dist/extensions/telegram/src/approval-store.js.map +0 -1
  1556. package/dist/extensions/telegram/src/caption.js.map +0 -1
  1557. package/dist/extensions/telegram/src/command-handler.js.map +0 -1
  1558. package/dist/extensions/telegram/src/config-schema.js.map +0 -1
  1559. package/dist/extensions/telegram/src/conversation-id.js.map +0 -1
  1560. package/dist/extensions/telegram/src/dedupe.js.map +0 -1
  1561. package/dist/extensions/telegram/src/delivery-chat-id.js.map +0 -1
  1562. package/dist/extensions/telegram/src/doctor.js.map +0 -1
  1563. package/dist/extensions/telegram/src/draft-stream-lifecycle.js.map +0 -1
  1564. package/dist/extensions/telegram/src/draft-stream-loop.js.map +0 -1
  1565. package/dist/extensions/telegram/src/draft-stream.js.map +0 -1
  1566. package/dist/extensions/telegram/src/errors.js.map +0 -1
  1567. package/dist/extensions/telegram/src/exec-approval-handler.js.map +0 -1
  1568. package/dist/extensions/telegram/src/exec-approvals.js.map +0 -1
  1569. package/dist/extensions/telegram/src/focus-handler.js.map +0 -1
  1570. package/dist/extensions/telegram/src/format.js.map +0 -1
  1571. package/dist/extensions/telegram/src/group-config-resolver.js.map +0 -1
  1572. package/dist/extensions/telegram/src/inbound-coalescer.js.map +0 -1
  1573. package/dist/extensions/telegram/src/inbound-processor.js.map +0 -1
  1574. package/dist/extensions/telegram/src/index.js.map +0 -1
  1575. package/dist/extensions/telegram/src/inline-keyboards.js.map +0 -1
  1576. package/dist/extensions/telegram/src/network-errors.js.map +0 -1
  1577. package/dist/extensions/telegram/src/outbound-sender.js.map +0 -1
  1578. package/dist/extensions/telegram/src/pairing-config-resolver.js.map +0 -1
  1579. package/dist/extensions/telegram/src/plugin-defaults.js.map +0 -1
  1580. package/dist/extensions/telegram/src/plugin.js.map +0 -1
  1581. package/dist/extensions/telegram/src/polling-session.js.map +0 -1
  1582. package/dist/extensions/telegram/src/proxy-fetch.js.map +0 -1
  1583. package/dist/extensions/telegram/src/reactions.js.map +0 -1
  1584. package/dist/extensions/telegram/src/reply-params.js.map +0 -1
  1585. package/dist/extensions/telegram/src/routing-integration.js.map +0 -1
  1586. package/dist/extensions/telegram/src/send-options.js.map +0 -1
  1587. package/dist/extensions/telegram/src/sent-cache.js.map +0 -1
  1588. package/dist/extensions/telegram/src/startup-errors.js.map +0 -1
  1589. package/dist/extensions/telegram/src/telegram-actions.js.map +0 -1
  1590. package/dist/extensions/telegram/src/telegram-draft-errors.js.map +0 -1
  1591. package/dist/extensions/telegram/src/thread-bindings.js.map +0 -1
  1592. package/dist/extensions/telegram/src/timeout-abort.js.map +0 -1
  1593. package/dist/extensions/telegram/src/token-resolver.js.map +0 -1
  1594. package/dist/extensions/telegram/src/update-offset-store.js.map +0 -1
  1595. package/dist/extensions/telegram/src/workflow-progress.js.map +0 -1
  1596. package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +0 -1
  1597. package/dist/extensions/weixin/src/api/api.js.map +0 -1
  1598. package/dist/extensions/weixin/src/api/config-cache.js.map +0 -1
  1599. package/dist/extensions/weixin/src/api/session-guard.js.map +0 -1
  1600. package/dist/extensions/weixin/src/api/types.js.map +0 -1
  1601. package/dist/extensions/weixin/src/auth/accounts.js.map +0 -1
  1602. package/dist/extensions/weixin/src/auth/login-qr.js.map +0 -1
  1603. package/dist/extensions/weixin/src/auth/pairing.js.map +0 -1
  1604. package/dist/extensions/weixin/src/auth/weixin-account-id.js.map +0 -1
  1605. package/dist/extensions/weixin/src/cdn/aes-ecb.js.map +0 -1
  1606. package/dist/extensions/weixin/src/cdn/cdn-upload.js.map +0 -1
  1607. package/dist/extensions/weixin/src/cdn/cdn-url.js.map +0 -1
  1608. package/dist/extensions/weixin/src/cdn/pic-decrypt.js.map +0 -1
  1609. package/dist/extensions/weixin/src/cdn/upload.js.map +0 -1
  1610. package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +0 -1
  1611. package/dist/extensions/weixin/src/cli/qr-login.js.map +0 -1
  1612. package/dist/extensions/weixin/src/config-schema.js.map +0 -1
  1613. package/dist/extensions/weixin/src/config-surface.js.map +0 -1
  1614. package/dist/extensions/weixin/src/delivery-to.js.map +0 -1
  1615. package/dist/extensions/weixin/src/index.js.map +0 -1
  1616. package/dist/extensions/weixin/src/media/data-url.js.map +0 -1
  1617. package/dist/extensions/weixin/src/media/media-download.js.map +0 -1
  1618. package/dist/extensions/weixin/src/media/mime.js.map +0 -1
  1619. package/dist/extensions/weixin/src/media/silk-transcode.js.map +0 -1
  1620. package/dist/extensions/weixin/src/messaging/context-token-init.js.map +0 -1
  1621. package/dist/extensions/weixin/src/messaging/debug-mode.js.map +0 -1
  1622. package/dist/extensions/weixin/src/messaging/error-notice.js.map +0 -1
  1623. package/dist/extensions/weixin/src/messaging/inbound.js.map +0 -1
  1624. package/dist/extensions/weixin/src/messaging/markdown-filter.js.map +0 -1
  1625. package/dist/extensions/weixin/src/messaging/process-message.js.map +0 -1
  1626. package/dist/extensions/weixin/src/messaging/send-media.js.map +0 -1
  1627. package/dist/extensions/weixin/src/messaging/send.js.map +0 -1
  1628. package/dist/extensions/weixin/src/messaging/slash-commands.js.map +0 -1
  1629. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js.map +0 -1
  1630. package/dist/extensions/weixin/src/monitor/monitor.js.map +0 -1
  1631. package/dist/extensions/weixin/src/outbound-send.js.map +0 -1
  1632. package/dist/extensions/weixin/src/pairing-config-resolver.js.map +0 -1
  1633. package/dist/extensions/weixin/src/plugin.js.map +0 -1
  1634. package/dist/extensions/weixin/src/routing-integration.js.map +0 -1
  1635. package/dist/extensions/weixin/src/storage/state-dir.js.map +0 -1
  1636. package/dist/extensions/weixin/src/storage/sync-buf.js.map +0 -1
  1637. package/dist/extensions/weixin/src/util/logger.js.map +0 -1
  1638. package/dist/extensions/weixin/src/util/random.js.map +0 -1
  1639. package/dist/extensions/weixin/src/util/redact.js.map +0 -1
  1640. package/dist/extensions/weixin/src/workflow-progress.js.map +0 -1
  1641. package/dist/gateway/static/root/assets/agents-DZDOcgz5.js +0 -2
  1642. package/dist/gateway/static/root/assets/appearance-settings-BNasnY9D.js +0 -1
  1643. package/dist/gateway/static/root/assets/apps-page-Cmr-Hvm9.js +0 -1
  1644. package/dist/gateway/static/root/assets/automations-page-TWgUAI8t.js +0 -6
  1645. package/dist/gateway/static/root/assets/browser-settings-page-DBsFItW_.js +0 -8
  1646. package/dist/gateway/static/root/assets/channels-settings-BBkzrBYy.js +0 -1
  1647. package/dist/gateway/static/root/assets/channels-status-swr-CuU6ez3y.js +0 -1
  1648. package/dist/gateway/static/root/assets/connectors-page-DLsZCAw7.js +0 -2
  1649. package/dist/gateway/static/root/assets/desktop-pet-C6V-PHwi.js +0 -1
  1650. package/dist/gateway/static/root/assets/desktop-pet-settings-5Fcz47XQ.js +0 -1
  1651. package/dist/gateway/static/root/assets/gateway-settings-BrxzyVW2.js +0 -1
  1652. package/dist/gateway/static/root/assets/goal-create-dialog-DRVRLc5Z.js +0 -1
  1653. package/dist/gateway/static/root/assets/goal-detail-page-8F7NElzP.js +0 -4
  1654. package/dist/gateway/static/root/assets/goals-page-BaoLiV8G.js +0 -2
  1655. package/dist/gateway/static/root/assets/index-CH7XN6KY.js +0 -259
  1656. package/dist/gateway/static/root/assets/index-Dfnl9tp_.css +0 -1
  1657. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BHnh5OoY.js +0 -1
  1658. package/dist/gateway/static/root/assets/local-app-workbench-page-Boe8n4zH.js +0 -2
  1659. package/dist/gateway/static/root/assets/locale-store-BneNAR8R.js +0 -1
  1660. package/dist/gateway/static/root/assets/logs-page-Cb4Uptct.js +0 -7
  1661. package/dist/gateway/static/root/assets/messages-t1yPaVCt.js +0 -5
  1662. package/dist/gateway/static/root/assets/models-hub-panel-CNiUKZUV.js +0 -2
  1663. package/dist/gateway/static/root/assets/notes-workbench-C9__VkD6.js +0 -4
  1664. package/dist/gateway/static/root/assets/project-detail-page-CZhuB5kO.js +0 -1
  1665. package/dist/gateway/static/root/assets/projects-page-BOq4WVdR.js +0 -1
  1666. package/dist/gateway/static/root/assets/remote-access-hub-BxGq0ebQ.js +0 -1
  1667. package/dist/gateway/static/root/assets/sessions-page-B6gSU_Au.js +0 -1
  1668. package/dist/gateway/static/root/assets/settings-advanced-gate-DwuBL834.js +0 -1
  1669. package/dist/gateway/static/root/assets/settings-loading-skeleton-vitElc-n.js +0 -1
  1670. package/dist/gateway/static/root/assets/setup-status-panel-BJeA4mmk.js +0 -1
  1671. package/dist/gateway/static/root/assets/shares-settings-DB2KYA2_.js +0 -1
  1672. package/dist/gateway/static/root/assets/skill-reload-api-DQtZiejw.js +0 -1
  1673. package/dist/gateway/static/root/assets/skills-page-Pm0fNe_p.js +0 -2
  1674. package/dist/gateway/static/root/assets/user-context-page-DnLqQyRG.js +0 -1
  1675. package/dist/gateway/static/root/assets/voice-api-key-field-BiFIIWC4.js +0 -1
  1676. package/dist/gateway/static/root/assets/work-discovery-page-D2-_bC0J.js +0 -1
  1677. package/dist/gateway/static/root/assets/work-item-detail-page-B0FPG4eJ.js +0 -1
  1678. package/dist/gateway/static/root/assets/work-page-BDeVxts_.js +0 -1
  1679. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BPzS67fU.js +0 -3
  1680. package/dist/gateway/static/root/assets/workflows-page-xPhmrRLs.js +0 -11
  1681. package/dist/gateway/static/root/favicon-icon.svg +0 -187
  1682. package/dist/package.js.map +0 -1
  1683. package/dist/src/activity/context.js.map +0 -1
  1684. package/dist/src/activity/emitter.js.map +0 -1
  1685. package/dist/src/activity/service.js.map +0 -1
  1686. package/dist/src/agent/agent-manager.js.map +0 -1
  1687. package/dist/src/agent/agent-scope.js.map +0 -1
  1688. package/dist/src/agent/background-review/coordinator.js.map +0 -1
  1689. package/dist/src/agent/background-review/prompts.js.map +0 -1
  1690. package/dist/src/agent/background-review/run-background-review.js.map +0 -1
  1691. package/dist/src/agent/background-review/settings.js.map +0 -1
  1692. package/dist/src/agent/bootstrap/bootstrap-cache.js.map +0 -1
  1693. package/dist/src/agent/bootstrap/bootstrap-context.js.map +0 -1
  1694. package/dist/src/agent/bootstrap/bootstrap-files.js.map +0 -1
  1695. package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +0 -1
  1696. package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +0 -1
  1697. package/dist/src/agent/bootstrap/project-agents-context.js.map +0 -1
  1698. package/dist/src/agent/capabilities/definitions.js.map +0 -1
  1699. package/dist/src/agent/capabilities/registry.js.map +0 -1
  1700. package/dist/src/agent/child-agent-factory.js.map +0 -1
  1701. package/dist/src/agent/client-error-format.js.map +0 -1
  1702. package/dist/src/agent/code-intelligence/binary.js.map +0 -1
  1703. package/dist/src/agent/code-intelligence/runtime.js.map +0 -1
  1704. package/dist/src/agent/code-intelligence/tools.js.map +0 -1
  1705. package/dist/src/agent/coding/turn-diff-tracker.js.map +0 -1
  1706. package/dist/src/agent/context/expand-at-file-mentions.js.map +0 -1
  1707. package/dist/src/agent/context/project-context.js.map +0 -1
  1708. package/dist/src/agent/context/workspace-seed.js.map +0 -1
  1709. package/dist/src/agent/context/workspace-state.js.map +0 -1
  1710. package/dist/src/agent/context/workspace.js.map +0 -1
  1711. package/dist/src/agent/embedded/run-for-session.js.map +0 -1
  1712. package/dist/src/agent/embedded/run-turn.js.map +0 -1
  1713. package/dist/src/agent/embedded/runs.js.map +0 -1
  1714. package/dist/src/agent/embedded/session-manager-init.js.map +0 -1
  1715. package/dist/src/agent/embedded/session-runner.js.map +0 -1
  1716. package/dist/src/agent/embedded/session-tool-result-guard.js.map +0 -1
  1717. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +0 -1
  1718. package/dist/src/agent/embedded/subscribe-session.js.map +0 -1
  1719. package/dist/src/agent/embedded/system-prompt-override.js.map +0 -1
  1720. package/dist/src/agent/embedded/tool-result-context-guard.js.map +0 -1
  1721. package/dist/src/agent/embedded/tool-result-truncation.js.map +0 -1
  1722. package/dist/src/agent/embedded/xopc-auth-storage.js.map +0 -1
  1723. package/dist/src/agent/embedded/xopc-stream-bridge.js.map +0 -1
  1724. package/dist/src/agent/embedded/xopc-tools-bridge.js.map +0 -1
  1725. package/dist/src/agent/failover-error.js.map +0 -1
  1726. package/dist/src/agent/fallback/candidates.js.map +0 -1
  1727. package/dist/src/agent/fallback/reason.js.map +0 -1
  1728. package/dist/src/agent/feedback/feedback-coordinator.js.map +0 -1
  1729. package/dist/src/agent/goals/checklist-judge.js.map +0 -1
  1730. package/dist/src/agent/goals/checklist-types.js.map +0 -1
  1731. package/dist/src/agent/goals/evaluate-turn.js.map +0 -1
  1732. package/dist/src/agent/goals/goal-locale.js.map +0 -1
  1733. package/dist/src/agent/goals/judge.js.map +0 -1
  1734. package/dist/src/agent/goals/persistent-goal-service.js.map +0 -1
  1735. package/dist/src/agent/goals/post-turn.js.map +0 -1
  1736. package/dist/src/agent/goals/state.js.map +0 -1
  1737. package/dist/src/agent/image/generation/bundled-registry.js.map +0 -1
  1738. package/dist/src/agent/image/generation/bundled.js.map +0 -1
  1739. package/dist/src/agent/image/generation/image-assets.js.map +0 -1
  1740. package/dist/src/agent/image/generation/model-ref.js.map +0 -1
  1741. package/dist/src/agent/image/generation/normalization.js.map +0 -1
  1742. package/dist/src/agent/image/generation/openai-compatible-image-provider.js.map +0 -1
  1743. package/dist/src/agent/image/generation/provider-registry.js.map +0 -1
  1744. package/dist/src/agent/image/generation/runtime.js.map +0 -1
  1745. package/dist/src/agent/image/image-helpers.js.map +0 -1
  1746. package/dist/src/agent/image/image-model-fallback.js.map +0 -1
  1747. package/dist/src/agent/image/inbound-image-handling.js.map +0 -1
  1748. package/dist/src/agent/image/load-image-media.js.map +0 -1
  1749. package/dist/src/agent/image/tool-model-config.js.map +0 -1
  1750. package/dist/src/agent/image/understanding/pi-ai-provider.js.map +0 -1
  1751. package/dist/src/agent/image/understanding/provider-registry.js.map +0 -1
  1752. package/dist/src/agent/image/understanding/runtime.js.map +0 -1
  1753. package/dist/src/agent/image/vision-detection.js.map +0 -1
  1754. package/dist/src/agent/inbound/attachment-pipeline.js.map +0 -1
  1755. package/dist/src/agent/inbound/inbound-loop.js.map +0 -1
  1756. package/dist/src/agent/inbound/turn-dispatcher.js.map +0 -1
  1757. package/dist/src/agent/ipc/bus.js.map +0 -1
  1758. package/dist/src/agent/ipc/inbox.js.map +0 -1
  1759. package/dist/src/agent/ipc/socket.js.map +0 -1
  1760. package/dist/src/agent/ipc/types.js.map +0 -1
  1761. package/dist/src/agent/lifecycle/handlers/compaction.js.map +0 -1
  1762. package/dist/src/agent/lifecycle/hook-handler.js.map +0 -1
  1763. package/dist/src/agent/lifecycle/manager.js.map +0 -1
  1764. package/dist/src/agent/lifecycle/progress.js.map +0 -1
  1765. package/dist/src/agent/lifecycle/timeout-wrapper.js.map +0 -1
  1766. package/dist/src/agent/lifecycle/typing.js.map +0 -1
  1767. package/dist/src/agent/mcp/bundle-mcp-config.js.map +0 -1
  1768. package/dist/src/agent/mcp/bundle-mcp-materialize.js.map +0 -1
  1769. package/dist/src/agent/mcp/bundle-mcp-names.js.map +0 -1
  1770. package/dist/src/agent/mcp/bundle-mcp-policy.js.map +0 -1
  1771. package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +0 -1
  1772. package/dist/src/agent/mcp/embedded-mcp.js.map +0 -1
  1773. package/dist/src/agent/mcp/mcp-config-shared.js.map +0 -1
  1774. package/dist/src/agent/mcp/mcp-http.js.map +0 -1
  1775. package/dist/src/agent/mcp/mcp-stdio-transport.js.map +0 -1
  1776. package/dist/src/agent/mcp/mcp-stdio.js.map +0 -1
  1777. package/dist/src/agent/mcp/mcp-tool-meta.js.map +0 -1
  1778. package/dist/src/agent/mcp/mcp-transport-config.js.map +0 -1
  1779. package/dist/src/agent/mcp/mcp-transport.js.map +0 -1
  1780. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +0 -1
  1781. package/dist/src/agent/media-generation/model-ref.js.map +0 -1
  1782. package/dist/src/agent/media-generation/normalization.types.js.map +0 -1
  1783. package/dist/src/agent/media-generation/runtime-shared.js.map +0 -1
  1784. package/dist/src/agent/memory/agent-message-access.js.map +0 -1
  1785. package/dist/src/agent/memory/builtin-memory-store.js.map +0 -1
  1786. package/dist/src/agent/memory/builtin-provider.js.map +0 -1
  1787. package/dist/src/agent/memory/compaction.js.map +0 -1
  1788. package/dist/src/agent/memory/context/planner.js.map +0 -1
  1789. package/dist/src/agent/memory/context-fence.js.map +0 -1
  1790. package/dist/src/agent/memory/create-memory-manager.js.map +0 -1
  1791. package/dist/src/agent/memory/dreaming/config.js.map +0 -1
  1792. package/dist/src/agent/memory/dreaming/constants.js.map +0 -1
  1793. package/dist/src/agent/memory/dreaming/deep-promotion.js.map +0 -1
  1794. package/dist/src/agent/memory/dreaming/events.js.map +0 -1
  1795. package/dist/src/agent/memory/dreaming/last-run.js.map +0 -1
  1796. package/dist/src/agent/memory/dreaming/light-sweep.js.map +0 -1
  1797. package/dist/src/agent/memory/dreaming/preview.js.map +0 -1
  1798. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +0 -1
  1799. package/dist/src/agent/memory/dreaming/rem-patterns.js.map +0 -1
  1800. package/dist/src/agent/memory/dreaming/scope.js.map +0 -1
  1801. package/dist/src/agent/memory/dreaming/short-term-store.js.map +0 -1
  1802. package/dist/src/agent/memory/dreaming/utils.js.map +0 -1
  1803. package/dist/src/agent/memory/lifecycle.js.map +0 -1
  1804. package/dist/src/agent/memory/manager.js.map +0 -1
  1805. package/dist/src/agent/memory/memory-config.js.map +0 -1
  1806. package/dist/src/agent/memory/message-sanitizer.js.map +0 -1
  1807. package/dist/src/agent/memory/plugin-discovery.js.map +0 -1
  1808. package/dist/src/agent/memory/sensitivity.js.map +0 -1
  1809. package/dist/src/agent/memory/source-origin.js.map +0 -1
  1810. package/dist/src/agent/memory/stub-memory-provider.js.map +0 -1
  1811. package/dist/src/agent/memory/summary-generator.js.map +0 -1
  1812. package/dist/src/agent/memory/understanding/correction.js.map +0 -1
  1813. package/dist/src/agent/memory/understanding/quality.js.map +0 -1
  1814. package/dist/src/agent/memory/understanding/service.js.map +0 -1
  1815. package/dist/src/agent/memory/user-context-coordinator.js.map +0 -1
  1816. package/dist/src/agent/memory/user-message-text.js.map +0 -1
  1817. package/dist/src/agent/memory/window.js.map +0 -1
  1818. package/dist/src/agent/messaging/command-handler.js.map +0 -1
  1819. package/dist/src/agent/messaging/message-router.js.map +0 -1
  1820. package/dist/src/agent/messaging/outbound-coordinator.js.map +0 -1
  1821. package/dist/src/agent/messaging/stream-manager.js.map +0 -1
  1822. package/dist/src/agent/middleware/context.js.map +0 -1
  1823. package/dist/src/agent/middleware/self-verify.js.map +0 -1
  1824. package/dist/src/agent/models/manager.js.map +0 -1
  1825. package/dist/src/agent/models/request-limiter.js.map +0 -1
  1826. package/dist/src/agent/models/selection.js.map +0 -1
  1827. package/dist/src/agent/orchestration/agent-event-handler.js.map +0 -1
  1828. package/dist/src/agent/orchestration/agent-orchestrator.js.map +0 -1
  1829. package/dist/src/agent/orchestration/llm-turn-retry.js.map +0 -1
  1830. package/dist/src/agent/orchestration/loop-guard.js.map +0 -1
  1831. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +0 -1
  1832. package/dist/src/agent/prompt/cache-boundary.js.map +0 -1
  1833. package/dist/src/agent/prompt/memory/index.js.map +0 -1
  1834. package/dist/src/agent/prompt/safety.js.map +0 -1
  1835. package/dist/src/agent/prompt/sanitize-for-prompt.js.map +0 -1
  1836. package/dist/src/agent/prompt/sections/behavior.js.map +0 -1
  1837. package/dist/src/agent/prompt/sections/memory-skills.js.map +0 -1
  1838. package/dist/src/agent/prompt/sections/messaging-runtime.js.map +0 -1
  1839. package/dist/src/agent/prompt/sections/project-context.js.map +0 -1
  1840. package/dist/src/agent/prompt/sections/tooling.js.map +0 -1
  1841. package/dist/src/agent/prompt/sections/workspace-runtime.js.map +0 -1
  1842. package/dist/src/agent/prompt/service-prompt-builder.js.map +0 -1
  1843. package/dist/src/agent/prompt/subagent-context.js.map +0 -1
  1844. package/dist/src/agent/prompt/system-prompt-params.js.map +0 -1
  1845. package/dist/src/agent/prompt/system-prompt.js.map +0 -1
  1846. package/dist/src/agent/prompt/system-reminder.js.map +0 -1
  1847. package/dist/src/agent/reply/apply-turn-user-enrichment.js.map +0 -1
  1848. package/dist/src/agent/reply/post-compaction-context.js.map +0 -1
  1849. package/dist/src/agent/reply/startup-context.js.map +0 -1
  1850. package/dist/src/agent/reply/workspace-boundary-read.js.map +0 -1
  1851. package/dist/src/agent/sandbox/command-validator.js.map +0 -1
  1852. package/dist/src/agent/sandbox/exec-policy.js.map +0 -1
  1853. package/dist/src/agent/sandbox/path-policy.js.map +0 -1
  1854. package/dist/src/agent/sandbox/sanitize-env-vars.js.map +0 -1
  1855. package/dist/src/agent/sandbox/types.js.map +0 -1
  1856. package/dist/src/agent/service/async-queue.js.map +0 -1
  1857. package/dist/src/agent/service/btw-query.js.map +0 -1
  1858. package/dist/src/agent/service/build-direct-message-content.js.map +0 -1
  1859. package/dist/src/agent/service/direct-turn-helpers.js.map +0 -1
  1860. package/dist/src/agent/service/parse-outbound-session-key.js.map +0 -1
  1861. package/dist/src/agent/service/process-direct-one-shot.js.map +0 -1
  1862. package/dist/src/agent/service/process-direct-streaming.js.map +0 -1
  1863. package/dist/src/agent/service/session-context-report.js.map +0 -1
  1864. package/dist/src/agent/service/webchat-tts.js.map +0 -1
  1865. package/dist/src/agent/service-inbound-utils.js.map +0 -1
  1866. package/dist/src/agent/service.js.map +0 -1
  1867. package/dist/src/agent/session/session-config-service.js.map +0 -1
  1868. package/dist/src/agent/session/session-context.js.map +0 -1
  1869. package/dist/src/agent/session/session-hydrator.js.map +0 -1
  1870. package/dist/src/agent/session/session-inspector.js.map +0 -1
  1871. package/dist/src/agent/session/session-lifecycle.js.map +0 -1
  1872. package/dist/src/agent/session/session-state-bag.js.map +0 -1
  1873. package/dist/src/agent/session/tracker.js.map +0 -1
  1874. package/dist/src/agent/skills/config.js.map +0 -1
  1875. package/dist/src/agent/skills/filesystem-watcher.js.map +0 -1
  1876. package/dist/src/agent/skills/format-skills-prompt.js.map +0 -1
  1877. package/dist/src/agent/skills/hub-hash.js.map +0 -1
  1878. package/dist/src/agent/skills/hub-lock.js.map +0 -1
  1879. package/dist/src/agent/skills/hub-pull.js.map +0 -1
  1880. package/dist/src/agent/skills/index.js.map +0 -1
  1881. package/dist/src/agent/skills/install-target.js.map +0 -1
  1882. package/dist/src/agent/skills/installer.js.map +0 -1
  1883. package/dist/src/agent/skills/managed-store.js.map +0 -1
  1884. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +0 -1
  1885. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +0 -1
  1886. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +0 -1
  1887. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +0 -1
  1888. package/dist/src/agent/skills/marketplace/marketplace-category-order.js.map +0 -1
  1889. package/dist/src/agent/skills/marketplace/registry.js.map +0 -1
  1890. package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +0 -1
  1891. package/dist/src/agent/skills/parse-skill-metadata.js.map +0 -1
  1892. package/dist/src/agent/skills/required-env-vars.js.map +0 -1
  1893. package/dist/src/agent/skills/scanner.js.map +0 -1
  1894. package/dist/src/agent/skills/skill-manage-ops.js.map +0 -1
  1895. package/dist/src/agent/skills/skill-manager.js.map +0 -1
  1896. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +0 -1
  1897. package/dist/src/agent/skills/skill-tool-gating.js.map +0 -1
  1898. package/dist/src/agent/skills/skill-view-path.js.map +0 -1
  1899. package/dist/src/agent/skills/skills-marketplace.js.map +0 -1
  1900. package/dist/src/agent/skills/test-framework.js.map +0 -1
  1901. package/dist/src/agent/skills/watcher.js.map +0 -1
  1902. package/dist/src/agent/skills/workspace-skills-dir.js.map +0 -1
  1903. package/dist/src/agent/source-context/injector.js.map +0 -1
  1904. package/dist/src/agent/source-context/types.js.map +0 -1
  1905. package/dist/src/agent/starter-agents.js.map +0 -1
  1906. package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +0 -1
  1907. package/dist/src/agent/tool-manuals/browser.js.map +0 -1
  1908. package/dist/src/agent/tool-manuals/index.js.map +0 -1
  1909. package/dist/src/agent/tool-manuals/xopc-use.js.map +0 -1
  1910. package/dist/src/agent/tools/apply-patch.js.map +0 -1
  1911. package/dist/src/agent/tools/automation-tool.js.map +0 -1
  1912. package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +0 -1
  1913. package/dist/src/agent/tools/browser/tool/schemas.js.map +0 -1
  1914. package/dist/src/agent/tools/chain-tracker.js.map +0 -1
  1915. package/dist/src/agent/tools/clarify-tool.js.map +0 -1
  1916. package/dist/src/agent/tools/cli-clarify.js.map +0 -1
  1917. package/dist/src/agent/tools/communication.js.map +0 -1
  1918. package/dist/src/agent/tools/composio-tool.js.map +0 -1
  1919. package/dist/src/agent/tools/concurrency.js.map +0 -1
  1920. package/dist/src/agent/tools/create-share-tool.js.map +0 -1
  1921. package/dist/src/agent/tools/curated-memory-tool.js.map +0 -1
  1922. package/dist/src/agent/tools/delegate-tool.js.map +0 -1
  1923. package/dist/src/agent/tools/desktop-pet-tool.js.map +0 -1
  1924. package/dist/src/agent/tools/dreaming-tool.js.map +0 -1
  1925. package/dist/src/agent/tools/edit-diff.js.map +0 -1
  1926. package/dist/src/agent/tools/error-pattern-matcher.js.map +0 -1
  1927. package/dist/src/agent/tools/error-tracker.js.map +0 -1
  1928. package/dist/src/agent/tools/exec-command.js.map +0 -1
  1929. package/dist/src/agent/tools/execute-code-tool.js.map +0 -1
  1930. package/dist/src/agent/tools/executor.js.map +0 -1
  1931. package/dist/src/agent/tools/factory.js.map +0 -1
  1932. package/dist/src/agent/tools/find.js.map +0 -1
  1933. package/dist/src/agent/tools/goal-evidence-recorder.js.map +0 -1
  1934. package/dist/src/agent/tools/goal-tool.js.map +0 -1
  1935. package/dist/src/agent/tools/grep.js.map +0 -1
  1936. package/dist/src/agent/tools/image-generate-tool.js.map +0 -1
  1937. package/dist/src/agent/tools/image-tool.js.map +0 -1
  1938. package/dist/src/agent/tools/list-dir.js.map +0 -1
  1939. package/dist/src/agent/tools/media-read-tool.js.map +0 -1
  1940. package/dist/src/agent/tools/memory-tool.js.map +0 -1
  1941. package/dist/src/agent/tools/metadata.js.map +0 -1
  1942. package/dist/src/agent/tools/read.js.map +0 -1
  1943. package/dist/src/agent/tools/search/http.js.map +0 -1
  1944. package/dist/src/agent/tools/search/providers/bing-api.js.map +0 -1
  1945. package/dist/src/agent/tools/search/providers/bing-html.js.map +0 -1
  1946. package/dist/src/agent/tools/search/providers/brave.js.map +0 -1
  1947. package/dist/src/agent/tools/search/providers/duckduckgo-html.js.map +0 -1
  1948. package/dist/src/agent/tools/search/providers/searxng.js.map +0 -1
  1949. package/dist/src/agent/tools/search/providers/tavily.js.map +0 -1
  1950. package/dist/src/agent/tools/search/region.js.map +0 -1
  1951. package/dist/src/agent/tools/search/registry.js.map +0 -1
  1952. package/dist/src/agent/tools/search/resolve-config.js.map +0 -1
  1953. package/dist/src/agent/tools/send-media.js.map +0 -1
  1954. package/dist/src/agent/tools/session-search-tool.js.map +0 -1
  1955. package/dist/src/agent/tools/session-status-tool.js.map +0 -1
  1956. package/dist/src/agent/tools/skill-install-tool.js.map +0 -1
  1957. package/dist/src/agent/tools/skill-manage-tool.js.map +0 -1
  1958. package/dist/src/agent/tools/skills-tools.js.map +0 -1
  1959. package/dist/src/agent/tools/structured-output.js.map +0 -1
  1960. package/dist/src/agent/tools/todo-tool.js.map +0 -1
  1961. package/dist/src/agent/tools/tool-manual-tool.js.map +0 -1
  1962. package/dist/src/agent/tools/tool-paths.js.map +0 -1
  1963. package/dist/src/agent/tools/truncate.js.map +0 -1
  1964. package/dist/src/agent/tools/tts-tool.js.map +0 -1
  1965. package/dist/src/agent/tools/update-plan-tool.js.map +0 -1
  1966. package/dist/src/agent/tools/url-safety.js.map +0 -1
  1967. package/dist/src/agent/tools/usage-analyzer.js.map +0 -1
  1968. package/dist/src/agent/tools/web-extract.js.map +0 -1
  1969. package/dist/src/agent/tools/web.js.map +0 -1
  1970. package/dist/src/agent/tools/workflow-tool.js.map +0 -1
  1971. package/dist/src/agent/tools/write.js.map +0 -1
  1972. package/dist/src/agent/tools/xopc-use-tool.js.map +0 -1
  1973. package/dist/src/agent/transcript/google-api.js.map +0 -1
  1974. package/dist/src/agent/transcript/model-selection.js.map +0 -1
  1975. package/dist/src/agent/transcript/provider-capabilities.js.map +0 -1
  1976. package/dist/src/agent/transcript/session-transcript-repair.js.map +0 -1
  1977. package/dist/src/agent/transcript/strip-tool-messages.js.map +0 -1
  1978. package/dist/src/agent/transcript/thinking-types.js.map +0 -1
  1979. package/dist/src/agent/transcript/thinking.js.map +0 -1
  1980. package/dist/src/agent/transcript/tool-call-id.js.map +0 -1
  1981. package/dist/src/agent/transcript/transcript-hygiene.js.map +0 -1
  1982. package/dist/src/agent/transcript/transcript-policy.js.map +0 -1
  1983. package/dist/src/agent/workflow/agent-progress.js.map +0 -1
  1984. package/dist/src/agent/workflow/builtins/index.js.map +0 -1
  1985. package/dist/src/agent/workflow/catalog.js.map +0 -1
  1986. package/dist/src/agent/workflow/progress-broker.js.map +0 -1
  1987. package/dist/src/agent/workflow/snapshot-empty.js.map +0 -1
  1988. package/dist/src/agent/workflow/snapshot.js.map +0 -1
  1989. package/dist/src/agent/workflow/step-labels.js.map +0 -1
  1990. package/dist/src/agent/workflow/structured-output-tool.js.map +0 -1
  1991. package/dist/src/agent/workflow/subagent-runner.js.map +0 -1
  1992. package/dist/src/agent/workflow/workflow-child-tools.js.map +0 -1
  1993. package/dist/src/agent/workspace-runtime/registry.js.map +0 -1
  1994. package/dist/src/agent-manifest/index.js.map +0 -1
  1995. package/dist/src/agent-manifest/preset-chain.js.map +0 -1
  1996. package/dist/src/agent-manifest/prompt.js.map +0 -1
  1997. package/dist/src/agent-manifest/resolver.js.map +0 -1
  1998. package/dist/src/agent-manifest/schema.js.map +0 -1
  1999. package/dist/src/agent-manifest/validator.js.map +0 -1
  2000. package/dist/src/agent-runtime/boundary-guard.js.map +0 -1
  2001. package/dist/src/agent-runtime/memory-runtime.js.map +0 -1
  2002. package/dist/src/agent-runtime/model-router.js.map +0 -1
  2003. package/dist/src/agent-runtime/run-trace.js.map +0 -1
  2004. package/dist/src/agent-runtime/runtime-profile.js.map +0 -1
  2005. package/dist/src/agent-runtime/tool-registry.js.map +0 -1
  2006. package/dist/src/agent-runtime/workflow-runtime.js.map +0 -1
  2007. package/dist/src/ai-assist/text-assist.js.map +0 -1
  2008. package/dist/src/auth/credentials.js.map +0 -1
  2009. package/dist/src/auth/index.js.map +0 -1
  2010. package/dist/src/auth/oauth/anthropic.js.map +0 -1
  2011. package/dist/src/auth/oauth/github-copilot.js.map +0 -1
  2012. package/dist/src/auth/oauth/google-oauth/google-antigravity.js.map +0 -1
  2013. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js.map +0 -1
  2014. package/dist/src/auth/oauth/google-oauth/oauth-page.js.map +0 -1
  2015. package/dist/src/auth/oauth/google-oauth/pkce.js.map +0 -1
  2016. package/dist/src/auth/oauth/kimi-coding.js.map +0 -1
  2017. package/dist/src/auth/oauth/minimax-cn.js.map +0 -1
  2018. package/dist/src/auth/oauth/minimax.js.map +0 -1
  2019. package/dist/src/auth/oauth/openai-codex.js.map +0 -1
  2020. package/dist/src/auth/oauth/pkce.js.map +0 -1
  2021. package/dist/src/auth/profiles/oauth.js.map +0 -1
  2022. package/dist/src/auth/profiles/order.js.map +0 -1
  2023. package/dist/src/auth/profiles/profiles.js.map +0 -1
  2024. package/dist/src/auth/profiles/store.js.map +0 -1
  2025. package/dist/src/auth/sync-provider-auth.js.map +0 -1
  2026. package/dist/src/automations/api/routes.js.map +0 -1
  2027. package/dist/src/automations/domain/schedule.js.map +0 -1
  2028. package/dist/src/automations/domain/validation.js.map +0 -1
  2029. package/dist/src/automations/draft/automation-draft-prompt.js.map +0 -1
  2030. package/dist/src/automations/draft/automation-draft-service.js.map +0 -1
  2031. package/dist/src/automations/draft/automation-draft-validator.js.map +0 -1
  2032. package/dist/src/automations/product-events.js.map +0 -1
  2033. package/dist/src/automations/service/action-executor.js.map +0 -1
  2034. package/dist/src/automations/service/automation-service.js.map +0 -1
  2035. package/dist/src/automations/storage/automation-repository.js.map +0 -1
  2036. package/dist/src/automations/storage/automation-run-repository.js.map +0 -1
  2037. package/dist/src/browser/actions/extension-registry-bridge.js.map +0 -1
  2038. package/dist/src/browser/actions/registry.js.map +0 -1
  2039. package/dist/src/browser/backend-from-config.js.map +0 -1
  2040. package/dist/src/browser/browser-command-timeout.js.map +0 -1
  2041. package/dist/src/browser/cache-dir-policy.js.map +0 -1
  2042. package/dist/src/browser/cdp-local-launcher.js.map +0 -1
  2043. package/dist/src/browser/cdp-supervisor.js.map +0 -1
  2044. package/dist/src/browser/free-port.js.map +0 -1
  2045. package/dist/src/browser/humanize.js.map +0 -1
  2046. package/dist/src/browser/install-lock.js.map +0 -1
  2047. package/dist/src/browser/manager.js.map +0 -1
  2048. package/dist/src/browser/pipeline/output.js.map +0 -1
  2049. package/dist/src/browser/pipeline/runner.js.map +0 -1
  2050. package/dist/src/browser/pipeline/schema.js.map +0 -1
  2051. package/dist/src/browser/pipeline/source.js.map +0 -1
  2052. package/dist/src/browser/pipeline/template.js.map +0 -1
  2053. package/dist/src/browser/providers/browser-ext-install.js.map +0 -1
  2054. package/dist/src/browser/providers/browser-use.js.map +0 -1
  2055. package/dist/src/browser/providers/browserbase.js.map +0 -1
  2056. package/dist/src/browser/providers/cloakbrowser.js.map +0 -1
  2057. package/dist/src/browser/providers/extension-ws-acquire.js.map +0 -1
  2058. package/dist/src/browser/providers/extension.js.map +0 -1
  2059. package/dist/src/browser/providers/playwright-doctor.js.map +0 -1
  2060. package/dist/src/browser/providers/playwright-install.js.map +0 -1
  2061. package/dist/src/browser/readiness.js.map +0 -1
  2062. package/dist/src/browser/schemas.js.map +0 -1
  2063. package/dist/src/browser/session-lifecycle.js.map +0 -1
  2064. package/dist/src/browser/snapshot-helpers.js.map +0 -1
  2065. package/dist/src/browser/stealth.js.map +0 -1
  2066. package/dist/src/browser/url-policy.js.map +0 -1
  2067. package/dist/src/capabilities/store-connector.js.map +0 -1
  2068. package/dist/src/channels/attachments/attachment-classifiers.js.map +0 -1
  2069. package/dist/src/channels/attachments/inbound-persist.js.map +0 -1
  2070. package/dist/src/channels/attachments/inbound-types.js.map +0 -1
  2071. package/dist/src/channels/attachments/outbound-tts-persist.js.map +0 -1
  2072. package/dist/src/channels/attachments/voice-stt-webchat.js.map +0 -1
  2073. package/dist/src/channels/catalog/channel-catalog-service.js.map +0 -1
  2074. package/dist/src/channels/config-helpers.js.map +0 -1
  2075. package/dist/src/channels/envelope-timestamp.js.map +0 -1
  2076. package/dist/src/channels/exec-approval-runtime.js.map +0 -1
  2077. package/dist/src/channels/health-monitor.js.map +0 -1
  2078. package/dist/src/channels/heartbeat-scheduler.js.map +0 -1
  2079. package/dist/src/channels/internal-outbound.js.map +0 -1
  2080. package/dist/src/channels/lifecycle-supervisor.js.map +0 -1
  2081. package/dist/src/channels/manager.js.map +0 -1
  2082. package/dist/src/channels/media.js.map +0 -1
  2083. package/dist/src/channels/outbound/deliver.js.map +0 -1
  2084. package/dist/src/channels/outbound/normalize.js.map +0 -1
  2085. package/dist/src/channels/outbound/persist-store.js.map +0 -1
  2086. package/dist/src/channels/outbound/queue.js.map +0 -1
  2087. package/dist/src/channels/outbound-sender.js.map +0 -1
  2088. package/dist/src/channels/pairing/allow-from-file.js.map +0 -1
  2089. package/dist/src/channels/pairing/approve-cli.js.map +0 -1
  2090. package/dist/src/channels/pairing/pairing-challenge.js.map +0 -1
  2091. package/dist/src/channels/pairing/pairing-constants.js.map +0 -1
  2092. package/dist/src/channels/pairing/pairing-events.js.map +0 -1
  2093. package/dist/src/channels/pairing/pairing-messages.js.map +0 -1
  2094. package/dist/src/channels/pairing/pairing-service.js.map +0 -1
  2095. package/dist/src/channels/pairing/pairing-store-adapter.js.map +0 -1
  2096. package/dist/src/channels/pairing/pairing-store.js.map +0 -1
  2097. package/dist/src/channels/pairing/paths.js.map +0 -1
  2098. package/dist/src/channels/pairing/preseed-allow-from.js.map +0 -1
  2099. package/dist/src/channels/pipeline.js.map +0 -1
  2100. package/dist/src/channels/plugin-registry.js.map +0 -1
  2101. package/dist/src/channels/plugins/registry.js.map +0 -1
  2102. package/dist/src/channels/restart-policy.js.map +0 -1
  2103. package/dist/src/channels/security-helpers.js.map +0 -1
  2104. package/dist/src/channels/security.js.map +0 -1
  2105. package/dist/src/channels/setup-wizard-discovery.js.map +0 -1
  2106. package/dist/src/chat-commands/agent-edit.js.map +0 -1
  2107. package/dist/src/chat-commands/builtins/config.js.map +0 -1
  2108. package/dist/src/chat-commands/builtins/context.js.map +0 -1
  2109. package/dist/src/chat-commands/builtins/goal.js.map +0 -1
  2110. package/dist/src/chat-commands/builtins/model.js.map +0 -1
  2111. package/dist/src/chat-commands/builtins/review.js.map +0 -1
  2112. package/dist/src/chat-commands/builtins/session.js.map +0 -1
  2113. package/dist/src/chat-commands/builtins/skill.js.map +0 -1
  2114. package/dist/src/chat-commands/builtins/subgoal.js.map +0 -1
  2115. package/dist/src/chat-commands/builtins/system.js.map +0 -1
  2116. package/dist/src/chat-commands/builtins/thinking.js.map +0 -1
  2117. package/dist/src/chat-commands/builtins/tts.js.map +0 -1
  2118. package/dist/src/chat-commands/builtins/workflow.js.map +0 -1
  2119. package/dist/src/chat-commands/command-parse.js.map +0 -1
  2120. package/dist/src/chat-commands/config-paths.js.map +0 -1
  2121. package/dist/src/chat-commands/config-value.js.map +0 -1
  2122. package/dist/src/chat-commands/context.js.map +0 -1
  2123. package/dist/src/chat-commands/format-output.js.map +0 -1
  2124. package/dist/src/chat-commands/index.js.map +0 -1
  2125. package/dist/src/chat-commands/processor.js.map +0 -1
  2126. package/dist/src/chat-commands/registry.js.map +0 -1
  2127. package/dist/src/chat-commands/session-key.js.map +0 -1
  2128. package/dist/src/cli/argv-invocation.js.map +0 -1
  2129. package/dist/src/cli/argv.js.map +0 -1
  2130. package/dist/src/cli/bin.js.map +0 -1
  2131. package/dist/src/cli/cli-log-level-preset.js.map +0 -1
  2132. package/dist/src/cli/command-catalog.js.map +0 -1
  2133. package/dist/src/cli/command-loaders.js.map +0 -1
  2134. package/dist/src/cli/command-manifest.js.map +0 -1
  2135. package/dist/src/cli/command-path-matches.js.map +0 -1
  2136. package/dist/src/cli/command-path-policy.js.map +0 -1
  2137. package/dist/src/cli/command-startup-policy.js.map +0 -1
  2138. package/dist/src/cli/commands/agent/interactive.js.map +0 -1
  2139. package/dist/src/cli/commands/agent/sessions.js.map +0 -1
  2140. package/dist/src/cli/commands/agent/stream-renderer.js.map +0 -1
  2141. package/dist/src/cli/commands/agent.js.map +0 -1
  2142. package/dist/src/cli/commands/agents.js.map +0 -1
  2143. package/dist/src/cli/commands/auth.js.map +0 -1
  2144. package/dist/src/cli/commands/browser-cli-helpers.js.map +0 -1
  2145. package/dist/src/cli/commands/browser.js.map +0 -1
  2146. package/dist/src/cli/commands/channels.js.map +0 -1
  2147. package/dist/src/cli/commands/config.js.map +0 -1
  2148. package/dist/src/cli/commands/connectors.js.map +0 -1
  2149. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +0 -1
  2150. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +0 -1
  2151. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +0 -1
  2152. package/dist/src/cli/commands/doctor/checks/config-health.js.map +0 -1
  2153. package/dist/src/cli/commands/doctor/checks/database-schema.js.map +0 -1
  2154. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +0 -1
  2155. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +0 -1
  2156. package/dist/src/cli/commands/doctor/checks/migrations.js.map +0 -1
  2157. package/dist/src/cli/commands/doctor/checks/node-version.js.map +0 -1
  2158. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +0 -1
  2159. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +0 -1
  2160. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +0 -1
  2161. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +0 -1
  2162. package/dist/src/cli/commands/doctor/checks/version-check.js.map +0 -1
  2163. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +0 -1
  2164. package/dist/src/cli/commands/doctor/flow.js.map +0 -1
  2165. package/dist/src/cli/commands/doctor/format.js.map +0 -1
  2166. package/dist/src/cli/commands/doctor/index.js.map +0 -1
  2167. package/dist/src/cli/commands/extension-create.js.map +0 -1
  2168. package/dist/src/cli/commands/extension-dev.js.map +0 -1
  2169. package/dist/src/cli/commands/extension-marketplace.js.map +0 -1
  2170. package/dist/src/cli/commands/extension-pack.js.map +0 -1
  2171. package/dist/src/cli/commands/extension.js.map +0 -1
  2172. package/dist/src/cli/commands/gateway/call.js.map +0 -1
  2173. package/dist/src/cli/commands/gateway/health.js.map +0 -1
  2174. package/dist/src/cli/commands/gateway/lifecycle-core.js.map +0 -1
  2175. package/dist/src/cli/commands/gateway/lifecycle.js.map +0 -1
  2176. package/dist/src/cli/commands/gateway/logs.js.map +0 -1
  2177. package/dist/src/cli/commands/gateway/probe.js.map +0 -1
  2178. package/dist/src/cli/commands/gateway/restart-health.js.map +0 -1
  2179. package/dist/src/cli/commands/gateway/restart.js.map +0 -1
  2180. package/dist/src/cli/commands/gateway/run-foreground.js.map +0 -1
  2181. package/dist/src/cli/commands/gateway/service.js.map +0 -1
  2182. package/dist/src/cli/commands/gateway/shared.js.map +0 -1
  2183. package/dist/src/cli/commands/gateway/status.js.map +0 -1
  2184. package/dist/src/cli/commands/gateway/stop.js.map +0 -1
  2185. package/dist/src/cli/commands/gateway/subcommands.js.map +0 -1
  2186. package/dist/src/cli/commands/gateway/token.js.map +0 -1
  2187. package/dist/src/cli/commands/gateway-ssh-tunnel.js.map +0 -1
  2188. package/dist/src/cli/commands/gateway.js.map +0 -1
  2189. package/dist/src/cli/commands/goal.js.map +0 -1
  2190. package/dist/src/cli/commands/image.js.map +0 -1
  2191. package/dist/src/cli/commands/init.js.map +0 -1
  2192. package/dist/src/cli/commands/logs.js.map +0 -1
  2193. package/dist/src/cli/commands/models.js.map +0 -1
  2194. package/dist/src/cli/commands/onboard/channels/index.js.map +0 -1
  2195. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js.map +0 -1
  2196. package/dist/src/cli/commands/onboard/channels/registry.js.map +0 -1
  2197. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js.map +0 -1
  2198. package/dist/src/cli/commands/onboard/gateway.js.map +0 -1
  2199. package/dist/src/cli/commands/onboard/model.js.map +0 -1
  2200. package/dist/src/cli/commands/onboard.js.map +0 -1
  2201. package/dist/src/cli/commands/profile.js.map +0 -1
  2202. package/dist/src/cli/commands/project.js.map +0 -1
  2203. package/dist/src/cli/commands/providers.js.map +0 -1
  2204. package/dist/src/cli/commands/resume.js.map +0 -1
  2205. package/dist/src/cli/commands/search.js.map +0 -1
  2206. package/dist/src/cli/commands/session/actions.js.map +0 -1
  2207. package/dist/src/cli/commands/session/utils.js.map +0 -1
  2208. package/dist/src/cli/commands/session.js.map +0 -1
  2209. package/dist/src/cli/commands/setup-shared/output.js.map +0 -1
  2210. package/dist/src/cli/commands/setup-shared/prompts.js.map +0 -1
  2211. package/dist/src/cli/commands/setup-shared/runner.js.map +0 -1
  2212. package/dist/src/cli/commands/setup-shared/types.js.map +0 -1
  2213. package/dist/src/cli/commands/setup.js.map +0 -1
  2214. package/dist/src/cli/commands/skills-test.js.map +0 -1
  2215. package/dist/src/cli/commands/skills.js.map +0 -1
  2216. package/dist/src/cli/commands/tailscale.js.map +0 -1
  2217. package/dist/src/cli/commands/tui-runner.js.map +0 -1
  2218. package/dist/src/cli/commands/tui.js.map +0 -1
  2219. package/dist/src/cli/commands/tunnel.js.map +0 -1
  2220. package/dist/src/cli/commands/update.js.map +0 -1
  2221. package/dist/src/cli/commands/voice.js.map +0 -1
  2222. package/dist/src/cli/context.js.map +0 -1
  2223. package/dist/src/cli/extension-cli-register.js.map +0 -1
  2224. package/dist/src/cli/gateway-run-argv.js.map +0 -1
  2225. package/dist/src/cli/gateway-run-fast-path.js.map +0 -1
  2226. package/dist/src/cli/index.js.map +0 -1
  2227. package/dist/src/cli/registry.js.map +0 -1
  2228. package/dist/src/cli/templates.js.map +0 -1
  2229. package/dist/src/cli/utils/colors.js.map +0 -1
  2230. package/dist/src/cli/utils/gateway-client-options.js.map +0 -1
  2231. package/dist/src/cli/utils/gateway-client.js.map +0 -1
  2232. package/dist/src/cli/utils/init-workspace-core.js.map +0 -1
  2233. package/dist/src/cli/utils/init-workspace.js.map +0 -1
  2234. package/dist/src/cli/utils/oauth-login.js.map +0 -1
  2235. package/dist/src/cli/utils/oauth-providers.js.map +0 -1
  2236. package/dist/src/cli/utils/session.js.map +0 -1
  2237. package/dist/src/commands/agents.config.js.map +0 -1
  2238. package/dist/src/config/agent-profile.js.map +0 -1
  2239. package/dist/src/config/agent-typed-models.js.map +0 -1
  2240. package/dist/src/config/commands.flags.js.map +0 -1
  2241. package/dist/src/config/default-model.js.map +0 -1
  2242. package/dist/src/config/diff.js.map +0 -1
  2243. package/dist/src/config/gateway-bind.js.map +0 -1
  2244. package/dist/src/config/index.js.map +0 -1
  2245. package/dist/src/config/loader.js.map +0 -1
  2246. package/dist/src/config/mcp-config-normalize.js.map +0 -1
  2247. package/dist/src/config/model-input.js.map +0 -1
  2248. package/dist/src/config/models-json.js.map +0 -1
  2249. package/dist/src/config/paths-state.js.map +0 -1
  2250. package/dist/src/config/paths.js.map +0 -1
  2251. package/dist/src/config/profile.js.map +0 -1
  2252. package/dist/src/config/public-url.js.map +0 -1
  2253. package/dist/src/config/reload.js.map +0 -1
  2254. package/dist/src/config/resolve-config-value.js.map +0 -1
  2255. package/dist/src/config/rules.js.map +0 -1
  2256. package/dist/src/config/runtime-overrides.js.map +0 -1
  2257. package/dist/src/config/schema.js.map +0 -1
  2258. package/dist/src/config/validate-channel-configs.js.map +0 -1
  2259. package/dist/src/config/voice.js.map +0 -1
  2260. package/dist/src/config/web-patch.js.map +0 -1
  2261. package/dist/src/config/workspace-defaults.js.map +0 -1
  2262. package/dist/src/config/workspace-dirs.js.map +0 -1
  2263. package/dist/src/config/workspace-path-helpers.js.map +0 -1
  2264. package/dist/src/config/workspace-path.js.map +0 -1
  2265. package/dist/src/connectors/approval.js.map +0 -1
  2266. package/dist/src/connectors/auth-provider-registry.js.map +0 -1
  2267. package/dist/src/connectors/builtin-catalog.js.map +0 -1
  2268. package/dist/src/connectors/catalog.js.map +0 -1
  2269. package/dist/src/connectors/composio-catalog.js.map +0 -1
  2270. package/dist/src/connectors/composio-logo.js.map +0 -1
  2271. package/dist/src/connectors/composio-sessions.js.map +0 -1
  2272. package/dist/src/connectors/composio-triggers.js.map +0 -1
  2273. package/dist/src/connectors/composio.js.map +0 -1
  2274. package/dist/src/connectors/connector-memory-sync.js.map +0 -1
  2275. package/dist/src/connectors/health.js.map +0 -1
  2276. package/dist/src/connectors/install.js.map +0 -1
  2277. package/dist/src/connectors/instances.js.map +0 -1
  2278. package/dist/src/connectors/integration-strategy.js.map +0 -1
  2279. package/dist/src/connectors/lifecycle.js.map +0 -1
  2280. package/dist/src/connectors/materialize.js.map +0 -1
  2281. package/dist/src/connectors/policy.js.map +0 -1
  2282. package/dist/src/connectors/providers.js.map +0 -1
  2283. package/dist/src/connectors/registries/modelscope.js.map +0 -1
  2284. package/dist/src/connectors/registries/official-mcp.js.map +0 -1
  2285. package/dist/src/connectors/registries/search.js.map +0 -1
  2286. package/dist/src/connectors/registries/smithery.js.map +0 -1
  2287. package/dist/src/connectors/runtime-adapter-registry.js.map +0 -1
  2288. package/dist/src/connectors/secret-store.js.map +0 -1
  2289. package/dist/src/connectors/setup-secrets.js.map +0 -1
  2290. package/dist/src/connectors/supervisor.js.map +0 -1
  2291. package/dist/src/connectors/usage.js.map +0 -1
  2292. package/dist/src/connectors/workflow-preflight.js.map +0 -1
  2293. package/dist/src/daemon/constants.js.map +0 -1
  2294. package/dist/src/daemon/install-plan.js.map +0 -1
  2295. package/dist/src/daemon/launchd.js.map +0 -1
  2296. package/dist/src/daemon/schtasks.js.map +0 -1
  2297. package/dist/src/daemon/service-audit.js.map +0 -1
  2298. package/dist/src/daemon/service.js.map +0 -1
  2299. package/dist/src/daemon/systemd.js.map +0 -1
  2300. package/dist/src/document-understanding/extract.js.map +0 -1
  2301. package/dist/src/errors/index.js.map +0 -1
  2302. package/dist/src/extensions/activation-context.js.map +0 -1
  2303. package/dist/src/extensions/activation-planner.js.map +0 -1
  2304. package/dist/src/extensions/api.js.map +0 -1
  2305. package/dist/src/extensions/bundle-mcp.js.map +0 -1
  2306. package/dist/src/extensions/bundled-extension-activation.js.map +0 -1
  2307. package/dist/src/extensions/diagnostics.js.map +0 -1
  2308. package/dist/src/extensions/discover-extensions.js.map +0 -1
  2309. package/dist/src/extensions/engine-check.js.map +0 -1
  2310. package/dist/src/extensions/extension-metadata-snapshot.js.map +0 -1
  2311. package/dist/src/extensions/extension-registry-impl.js.map +0 -1
  2312. package/dist/src/extensions/health.js.map +0 -1
  2313. package/dist/src/extensions/hooks.js.map +0 -1
  2314. package/dist/src/extensions/index.js.map +0 -1
  2315. package/dist/src/extensions/install-transaction.js.map +0 -1
  2316. package/dist/src/extensions/install.js.map +0 -1
  2317. package/dist/src/extensions/loader.js.map +0 -1
  2318. package/dist/src/extensions/lockfile.js.map +0 -1
  2319. package/dist/src/extensions/manifest-registry.js.map +0 -1
  2320. package/dist/src/extensions/marketplace.js.map +0 -1
  2321. package/dist/src/extensions/media-provider-contracts.js.map +0 -1
  2322. package/dist/src/extensions/normalize-manifest.js.map +0 -1
  2323. package/dist/src/extensions/onboard-helpers.js.map +0 -1
  2324. package/dist/src/extensions/package-contract.js.map +0 -1
  2325. package/dist/src/extensions/sdk/channel-entry.js.map +0 -1
  2326. package/dist/src/extensions/sdk/channel-helpers.js.map +0 -1
  2327. package/dist/src/extensions/sdk/index.js.map +0 -1
  2328. package/dist/src/extensions/sdk/lazy.js.map +0 -1
  2329. package/dist/src/extensions/sdk/testing.js.map +0 -1
  2330. package/dist/src/extensions/security.js.map +0 -1
  2331. package/dist/src/extensions/slots.js.map +0 -1
  2332. package/dist/src/extensions/speech-provider-contracts.js.map +0 -1
  2333. package/dist/src/extensions/store-zip-limits.js.map +0 -1
  2334. package/dist/src/extensions/typed-event-bus.js.map +0 -1
  2335. package/dist/src/extensions/types/hooks.js.map +0 -1
  2336. package/dist/src/extensions/types/providers.js.map +0 -1
  2337. package/dist/src/extensions/update.js.map +0 -1
  2338. package/dist/src/extensions/when-context.js.map +0 -1
  2339. package/dist/src/extensions/when-expression.js.map +0 -1
  2340. package/dist/src/gateway/agent-builtin-tools.js.map +0 -1
  2341. package/dist/src/gateway/agent-run-relay.js.map +0 -1
  2342. package/dist/src/gateway/agents-admin.js.map +0 -1
  2343. package/dist/src/gateway/auth.js.map +0 -1
  2344. package/dist/src/gateway/capability-presets-admin.js.map +0 -1
  2345. package/dist/src/gateway/chat-limits.js.map +0 -1
  2346. package/dist/src/gateway/chat-stream/mapper.js.map +0 -1
  2347. package/dist/src/gateway/clarify-bridge.js.map +0 -1
  2348. package/dist/src/gateway/clarify-runtime.js.map +0 -1
  2349. package/dist/src/gateway/client-ip.js.map +0 -1
  2350. package/dist/src/gateway/config-tools-web.js.map +0 -1
  2351. package/dist/src/gateway/credential.js.map +0 -1
  2352. package/dist/src/gateway/discovery/mdns.js.map +0 -1
  2353. package/dist/src/gateway/dreaming-automation-reconciler.js.map +0 -1
  2354. package/dist/src/gateway/ensure-network-cors.js.map +0 -1
  2355. package/dist/src/gateway/file-path-classifier.js.map +0 -1
  2356. package/dist/src/gateway/file-reference-registry.js.map +0 -1
  2357. package/dist/src/gateway/global-defaults-admin.js.map +0 -1
  2358. package/dist/src/gateway/heartbeat/service.js.map +0 -1
  2359. package/dist/src/gateway/hono/app.js.map +0 -1
  2360. package/dist/src/gateway/hono/lib/agent-model.js.map +0 -1
  2361. package/dist/src/gateway/hono/lib/config-payload.js.map +0 -1
  2362. package/dist/src/gateway/hono/lib/extension-assets.js.map +0 -1
  2363. package/dist/src/gateway/hono/lib/extension-store.js.map +0 -1
  2364. package/dist/src/gateway/hono/lib/mask-secret-length.js.map +0 -1
  2365. package/dist/src/gateway/hono/lib/route-logger.js.map +0 -1
  2366. package/dist/src/gateway/hono/lib/safe-providers-config.js.map +0 -1
  2367. package/dist/src/gateway/hono/lib/safe-voice-config.js.map +0 -1
  2368. package/dist/src/gateway/hono/lib/startup-unavailable.js.map +0 -1
  2369. package/dist/src/gateway/hono/lib/static-ui.js.map +0 -1
  2370. package/dist/src/gateway/hono/middleware/auth.js.map +0 -1
  2371. package/dist/src/gateway/hono/middleware/log-context.js.map +0 -1
  2372. package/dist/src/gateway/hono/middleware/logger.js.map +0 -1
  2373. package/dist/src/gateway/hono/middleware/route-errors.js.map +0 -1
  2374. package/dist/src/gateway/hono/middleware/scopes.js.map +0 -1
  2375. package/dist/src/gateway/hono/middleware/strict-rate-limit.js.map +0 -1
  2376. package/dist/src/gateway/hono/oauth-async.js.map +0 -1
  2377. package/dist/src/gateway/hono/oauth.js.map +0 -1
  2378. package/dist/src/gateway/hono/routes/activity.js.map +0 -1
  2379. package/dist/src/gateway/hono/routes/agent-stream.js.map +0 -1
  2380. package/dist/src/gateway/hono/routes/agents.js.map +0 -1
  2381. package/dist/src/gateway/hono/routes/ai-assist.js.map +0 -1
  2382. package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +0 -1
  2383. package/dist/src/gateway/hono/routes/browser-install.js.map +0 -1
  2384. package/dist/src/gateway/hono/routes/browser.js.map +0 -1
  2385. package/dist/src/gateway/hono/routes/capabilities.js.map +0 -1
  2386. package/dist/src/gateway/hono/routes/capability-presets.js.map +0 -1
  2387. package/dist/src/gateway/hono/routes/channels.js.map +0 -1
  2388. package/dist/src/gateway/hono/routes/commands-skills.js.map +0 -1
  2389. package/dist/src/gateway/hono/routes/config-patch/agents.js.map +0 -1
  2390. package/dist/src/gateway/hono/routes/config-patch/channels.js.map +0 -1
  2391. package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +0 -1
  2392. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +0 -1
  2393. package/dist/src/gateway/hono/routes/config-patch/result.js.map +0 -1
  2394. package/dist/src/gateway/hono/routes/config.js.map +0 -1
  2395. package/dist/src/gateway/hono/routes/connectors.js.map +0 -1
  2396. package/dist/src/gateway/hono/routes/doctor.js.map +0 -1
  2397. package/dist/src/gateway/hono/routes/dreaming.js.map +0 -1
  2398. package/dist/src/gateway/hono/routes/exposure.js.map +0 -1
  2399. package/dist/src/gateway/hono/routes/extension-gateway.js.map +0 -1
  2400. package/dist/src/gateway/hono/routes/global-defaults.js.map +0 -1
  2401. package/dist/src/gateway/hono/routes/goals.js.map +0 -1
  2402. package/dist/src/gateway/hono/routes/home.js.map +0 -1
  2403. package/dist/src/gateway/hono/routes/host-fs.js.map +0 -1
  2404. package/dist/src/gateway/hono/routes/index.js.map +0 -1
  2405. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +0 -1
  2406. package/dist/src/gateway/hono/routes/lazy-fallback.js.map +0 -1
  2407. package/dist/src/gateway/hono/routes/local-apps.js.map +0 -1
  2408. package/dist/src/gateway/hono/routes/logs.js.map +0 -1
  2409. package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
  2410. package/dist/src/gateway/hono/routes/media.js.map +0 -1
  2411. package/dist/src/gateway/hono/routes/memory.js.map +0 -1
  2412. package/dist/src/gateway/hono/routes/migrations.js.map +0 -1
  2413. package/dist/src/gateway/hono/routes/mobile.js.map +0 -1
  2414. package/dist/src/gateway/hono/routes/models.js.map +0 -1
  2415. package/dist/src/gateway/hono/routes/notes.js.map +0 -1
  2416. package/dist/src/gateway/hono/routes/projects.js.map +0 -1
  2417. package/dist/src/gateway/hono/routes/public-gateway.js.map +0 -1
  2418. package/dist/src/gateway/hono/routes/search.js.map +0 -1
  2419. package/dist/src/gateway/hono/routes/sessions.js.map +0 -1
  2420. package/dist/src/gateway/hono/routes/shares.js.map +0 -1
  2421. package/dist/src/gateway/hono/routes/site-shares.js.map +0 -1
  2422. package/dist/src/gateway/hono/routes/status.js.map +0 -1
  2423. package/dist/src/gateway/hono/routes/tui.js.map +0 -1
  2424. package/dist/src/gateway/hono/routes/tunnel.js.map +0 -1
  2425. package/dist/src/gateway/hono/routes/update.js.map +0 -1
  2426. package/dist/src/gateway/hono/routes/voice.js.map +0 -1
  2427. package/dist/src/gateway/hono/routes/work-discovery.js.map +0 -1
  2428. package/dist/src/gateway/hono/routes/workflows.js.map +0 -1
  2429. package/dist/src/gateway/hono/routes/workspace.js.map +0 -1
  2430. package/dist/src/gateway/hono/routes/you.js.map +0 -1
  2431. package/dist/src/gateway/hono/sse-json.js.map +0 -1
  2432. package/dist/src/gateway/hono/sse.js.map +0 -1
  2433. package/dist/src/gateway/host.js.map +0 -1
  2434. package/dist/src/gateway/image-capabilities.js.map +0 -1
  2435. package/dist/src/gateway/listen.js.map +0 -1
  2436. package/dist/src/gateway/lock.js.map +0 -1
  2437. package/dist/src/gateway/ports.js.map +0 -1
  2438. package/dist/src/gateway/protocol.js.map +0 -1
  2439. package/dist/src/gateway/public-url.js.map +0 -1
  2440. package/dist/src/gateway/rate-limit/auth-policy.js.map +0 -1
  2441. package/dist/src/gateway/rate-limit/buckets.js.map +0 -1
  2442. package/dist/src/gateway/rate-limit/env-flags.js.map +0 -1
  2443. package/dist/src/gateway/resolve-channel-connect-defer.js.map +0 -1
  2444. package/dist/src/gateway/resolve-webchat-session-key.js.map +0 -1
  2445. package/dist/src/gateway/respawn.js.map +0 -1
  2446. package/dist/src/gateway/run-loop.js.map +0 -1
  2447. package/dist/src/gateway/runtime-config.js.map +0 -1
  2448. package/dist/src/gateway/security/audit.js.map +0 -1
  2449. package/dist/src/gateway/security/csp.js.map +0 -1
  2450. package/dist/src/gateway/security/dangerous-tools.js.map +0 -1
  2451. package/dist/src/gateway/security/external-content.js.map +0 -1
  2452. package/dist/src/gateway/security/known-weak-secrets.js.map +0 -1
  2453. package/dist/src/gateway/security/loopback.js.map +0 -1
  2454. package/dist/src/gateway/security/operator-scopes.js.map +0 -1
  2455. package/dist/src/gateway/security/origin-check.js.map +0 -1
  2456. package/dist/src/gateway/security/preauth-connection-budget.js.map +0 -1
  2457. package/dist/src/gateway/security/secret-equal.js.map +0 -1
  2458. package/dist/src/gateway/server-tailscale.js.map +0 -1
  2459. package/dist/src/gateway/server.js.map +0 -1
  2460. package/dist/src/gateway/service/agent-runner.js.map +0 -1
  2461. package/dist/src/gateway/service/config-coordinator.js.map +0 -1
  2462. package/dist/src/gateway/service/marketplace-service.js.map +0 -1
  2463. package/dist/src/gateway/service/run-gateway-agent.js.map +0 -1
  2464. package/dist/src/gateway/service/session-chat-ids.js.map +0 -1
  2465. package/dist/src/gateway/service/sessions-api.js.map +0 -1
  2466. package/dist/src/gateway/service/sse-hub.js.map +0 -1
  2467. package/dist/src/gateway/service.js.map +0 -1
  2468. package/dist/src/gateway/session-reset-service.js.map +0 -1
  2469. package/dist/src/gateway/startup-readiness.js.map +0 -1
  2470. package/dist/src/gateway/startup-trace.js.map +0 -1
  2471. package/dist/src/gateway/tailscale-auth.js.map +0 -1
  2472. package/dist/src/gateway/tailscale-lifecycle.js.map +0 -1
  2473. package/dist/src/gateway/tls-server.js.map +0 -1
  2474. package/dist/src/gateway/trusted-proxy.js.map +0 -1
  2475. package/dist/src/gateway/user-turn-input.js.map +0 -1
  2476. package/dist/src/gateway/workspace-editor-path.js.map +0 -1
  2477. package/dist/src/gateway/workspace-file-search.js.map +0 -1
  2478. package/dist/src/gateway/workspace-fs-file-list.js.map +0 -1
  2479. package/dist/src/gateway/workspace-heartbeat-path.js.map +0 -1
  2480. package/dist/src/gateway/workspace-ripgrep.js.map +0 -1
  2481. package/dist/src/gateway/ws-security.js.map +0 -1
  2482. package/dist/src/generated/bundled-image-generation-providers.js.map +0 -1
  2483. package/dist/src/goals/goal-contract-draft.js.map +0 -1
  2484. package/dist/src/goals/goal-evidence-review.js.map +0 -1
  2485. package/dist/src/goals/goal-notifications.js.map +0 -1
  2486. package/dist/src/goals/goal-queue-store.js.map +0 -1
  2487. package/dist/src/goals/goal-runner.js.map +0 -1
  2488. package/dist/src/goals/goal-service.js.map +0 -1
  2489. package/dist/src/goals/goal-store.js.map +0 -1
  2490. package/dist/src/goals/goal-workflow-judge.js.map +0 -1
  2491. package/dist/src/heartbeat/active-hours.js.map +0 -1
  2492. package/dist/src/heartbeat/content-check.js.map +0 -1
  2493. package/dist/src/heartbeat/event-prompt.js.map +0 -1
  2494. package/dist/src/heartbeat/tokens.js.map +0 -1
  2495. package/dist/src/heartbeat/wake.js.map +0 -1
  2496. package/dist/src/i18n/format.js.map +0 -1
  2497. package/dist/src/i18n/goals-bundle.js.map +0 -1
  2498. package/dist/src/i18n/locale.js.map +0 -1
  2499. package/dist/src/i18n/locales/goals.en.js.map +0 -1
  2500. package/dist/src/i18n/locales/goals.zh.js.map +0 -1
  2501. package/dist/src/i18n/locales/share-tool.en.js.map +0 -1
  2502. package/dist/src/i18n/locales/share-tool.zh.js.map +0 -1
  2503. package/dist/src/i18n/share-tool-bundle.js.map +0 -1
  2504. package/dist/src/index.js.map +0 -1
  2505. package/dist/src/infra/brew.js.map +0 -1
  2506. package/dist/src/infra/bus/queue.js.map +0 -1
  2507. package/dist/src/infra/debounce.js.map +0 -1
  2508. package/dist/src/infra/exec.js.map +0 -1
  2509. package/dist/src/infra/gateway-process-argv.js.map +0 -1
  2510. package/dist/src/infra/gateway-processes.js.map +0 -1
  2511. package/dist/src/infra/host-env-security-policy.js.map +0 -1
  2512. package/dist/src/infra/host-env-security.js.map +0 -1
  2513. package/dist/src/infra/http-proxy-env.js.map +0 -1
  2514. package/dist/src/infra/is-main.js.map +0 -1
  2515. package/dist/src/infra/json-utf8-bytes.js.map +0 -1
  2516. package/dist/src/infra/node-sqlite.js.map +0 -1
  2517. package/dist/src/infra/package-json.js.map +0 -1
  2518. package/dist/src/infra/package-update-steps.js.map +0 -1
  2519. package/dist/src/infra/path-env.js.map +0 -1
  2520. package/dist/src/infra/path-prepend.js.map +0 -1
  2521. package/dist/src/infra/ports.js.map +0 -1
  2522. package/dist/src/infra/rate-limit/failure-limiter.js.map +0 -1
  2523. package/dist/src/infra/rate-limit/keyed-store.js.map +0 -1
  2524. package/dist/src/infra/rate-limit/rate-limiter.js.map +0 -1
  2525. package/dist/src/infra/restart.js.map +0 -1
  2526. package/dist/src/infra/retry.js.map +0 -1
  2527. package/dist/src/infra/run-command.js.map +0 -1
  2528. package/dist/src/infra/sqlite-errors.js.map +0 -1
  2529. package/dist/src/infra/ssh-tunnel.js.map +0 -1
  2530. package/dist/src/infra/stable-node-path.js.map +0 -1
  2531. package/dist/src/infra/tailscale.js.map +0 -1
  2532. package/dist/src/infra/undici-fetch.js.map +0 -1
  2533. package/dist/src/infra/unhandled-rejections.js.map +0 -1
  2534. package/dist/src/infra/update-channels.js.map +0 -1
  2535. package/dist/src/infra/update-check.js.map +0 -1
  2536. package/dist/src/infra/update-global.js.map +0 -1
  2537. package/dist/src/infra/update-lock.js.map +0 -1
  2538. package/dist/src/infra/update-log.js.map +0 -1
  2539. package/dist/src/infra/update-restart.js.map +0 -1
  2540. package/dist/src/infra/update-runner.js.map +0 -1
  2541. package/dist/src/infra/update-startup.js.map +0 -1
  2542. package/dist/src/infra/warning-filter.js.map +0 -1
  2543. package/dist/src/infra/write-file-atomic.js.map +0 -1
  2544. package/dist/src/knowledge/connected-knowledge-pipeline.js.map +0 -1
  2545. package/dist/src/knowledge/coordinator.js.map +0 -1
  2546. package/dist/src/knowledge/ingestion-service.js.map +0 -1
  2547. package/dist/src/local-apps/acceptance.js.map +0 -1
  2548. package/dist/src/local-apps/preview-runtime-bridge.js.map +0 -1
  2549. package/dist/src/local-apps/runtime-entry.js.map +0 -1
  2550. package/dist/src/local-apps/scaffold.js.map +0 -1
  2551. package/dist/src/local-apps/service.js.map +0 -1
  2552. package/dist/src/local-apps/store.js.map +0 -1
  2553. package/dist/src/markdown/chunk.js.map +0 -1
  2554. package/dist/src/markdown/code-spans.js.map +0 -1
  2555. package/dist/src/markdown/fences.js.map +0 -1
  2556. package/dist/src/markdown/frontmatter.js.map +0 -1
  2557. package/dist/src/markdown/ir.js.map +0 -1
  2558. package/dist/src/markdown/render.js.map +0 -1
  2559. package/dist/src/markdown/tables.js.map +0 -1
  2560. package/dist/src/mcp/channel-bridge.js.map +0 -1
  2561. package/dist/src/mcp/channel-server.js.map +0 -1
  2562. package/dist/src/mcp/channel-shared.js.map +0 -1
  2563. package/dist/src/mcp/channel-tools.js.map +0 -1
  2564. package/dist/src/mcp/gateway-http-client.js.map +0 -1
  2565. package/dist/src/media/media-reference.js.map +0 -1
  2566. package/dist/src/media/paths.js.map +0 -1
  2567. package/dist/src/media/session-references.js.map +0 -1
  2568. package/dist/src/media/store.js.map +0 -1
  2569. package/dist/src/media/uri.js.map +0 -1
  2570. package/dist/src/media-shared/http/api-key-rotation.js.map +0 -1
  2571. package/dist/src/media-shared/http/deadline.js.map +0 -1
  2572. package/dist/src/media-shared/http/private-network.js.map +0 -1
  2573. package/dist/src/media-shared/http/provider-http-errors.js.map +0 -1
  2574. package/dist/src/media-shared/http/provider-http.js.map +0 -1
  2575. package/dist/src/media-shared/http/resolve-provider-http-request-config.js.map +0 -1
  2576. package/dist/src/media-shared/http/ssrf-guard.js.map +0 -1
  2577. package/dist/src/media-shared/http/test-helpers/mock-server.js.map +0 -1
  2578. package/dist/src/media-understanding/audio-transcription-runner.js.map +0 -1
  2579. package/dist/src/media-understanding/openai-compatible-audio.js.map +0 -1
  2580. package/dist/src/media-understanding/registry.js.map +0 -1
  2581. package/dist/src/media-understanding/resolve-entries.js.map +0 -1
  2582. package/dist/src/media-understanding/runner.js.map +0 -1
  2583. package/dist/src/migrations/config/default-capability-preset.js.map +0 -1
  2584. package/dist/src/migrations/registry.js.map +0 -1
  2585. package/dist/src/migrations/runner.js.map +0 -1
  2586. package/dist/src/mobile/notification-service.js.map +0 -1
  2587. package/dist/src/mobile/notification-store.js.map +0 -1
  2588. package/dist/src/mobile/notification-types.js.map +0 -1
  2589. package/dist/src/notes/agent-context.js.map +0 -1
  2590. package/dist/src/notes/attachment-ref.js.map +0 -1
  2591. package/dist/src/notes/note-attachment-sync.js.map +0 -1
  2592. package/dist/src/notes/note-index-meta.js.map +0 -1
  2593. package/dist/src/notes/note-markdown.js.map +0 -1
  2594. package/dist/src/notes/paths.js.map +0 -1
  2595. package/dist/src/notes/service.js.map +0 -1
  2596. package/dist/src/notes/store.js.map +0 -1
  2597. package/dist/src/package-version.js.map +0 -1
  2598. package/dist/src/pets/factory.js.map +0 -1
  2599. package/dist/src/pets/manifest.js.map +0 -1
  2600. package/dist/src/pets/validator.js.map +0 -1
  2601. package/dist/src/process/kill-tree.js.map +0 -1
  2602. package/dist/src/project-trust/trust-store.js.map +0 -1
  2603. package/dist/src/projects/automation-bind.js.map +0 -1
  2604. package/dist/src/projects/goal-bind.js.map +0 -1
  2605. package/dist/src/projects/memory-bind.js.map +0 -1
  2606. package/dist/src/projects/project-agent-suggestion.js.map +0 -1
  2607. package/dist/src/projects/project-agent.js.map +0 -1
  2608. package/dist/src/projects/project-kind.js.map +0 -1
  2609. package/dist/src/projects/project-loop.js.map +0 -1
  2610. package/dist/src/projects/project-service.js.map +0 -1
  2611. package/dist/src/projects/project-store.js.map +0 -1
  2612. package/dist/src/projects/session-bind.js.map +0 -1
  2613. package/dist/src/projects/workflow-bind.js.map +0 -1
  2614. package/dist/src/projects/workspace-project.js.map +0 -1
  2615. package/dist/src/projects/workspace.js.map +0 -1
  2616. package/dist/src/providers/auth-runtime/auth-profile-store.js.map +0 -1
  2617. package/dist/src/providers/auth-runtime/is-configured.js.map +0 -1
  2618. package/dist/src/providers/auth-runtime/oauth.js.map +0 -1
  2619. package/dist/src/providers/auth-runtime/resolve-api-key.js.map +0 -1
  2620. package/dist/src/providers/auth-runtime/resolve-auth.js.map +0 -1
  2621. package/dist/src/providers/constants.js.map +0 -1
  2622. package/dist/src/providers/domestic-presets.js.map +0 -1
  2623. package/dist/src/providers/env-keys.js.map +0 -1
  2624. package/dist/src/providers/extension-stream-bridge.js.map +0 -1
  2625. package/dist/src/providers/index.js.map +0 -1
  2626. package/dist/src/providers/model-call.js.map +0 -1
  2627. package/dist/src/providers/model-discovery.js.map +0 -1
  2628. package/dist/src/providers/model-registry.js.map +0 -1
  2629. package/dist/src/providers/model-supplements.js.map +0 -1
  2630. package/dist/src/providers/plugin-registry.js.map +0 -1
  2631. package/dist/src/providers/presentation.js.map +0 -1
  2632. package/dist/src/remote-access/exposure-guards.js.map +0 -1
  2633. package/dist/src/remote-access/exposure-manager.js.map +0 -1
  2634. package/dist/src/review/review-git.js.map +0 -1
  2635. package/dist/src/review/review-types.js.map +0 -1
  2636. package/dist/src/routing/account-id.js.map +0 -1
  2637. package/dist/src/routing/agent-session-key.js.map +0 -1
  2638. package/dist/src/routing/bindings.js.map +0 -1
  2639. package/dist/src/routing/index.js.map +0 -1
  2640. package/dist/src/routing/resolve-route.js.map +0 -1
  2641. package/dist/src/routing/resolve-tui-session-key.js.map +0 -1
  2642. package/dist/src/routing/session-key-utils.js.map +0 -1
  2643. package/dist/src/routing/session-key.js.map +0 -1
  2644. package/dist/src/session/abort-cutoff.js.map +0 -1
  2645. package/dist/src/session/chat-export.js.map +0 -1
  2646. package/dist/src/session/client-history.js.map +0 -1
  2647. package/dist/src/session/compaction-checkpoints.js.map +0 -1
  2648. package/dist/src/session/config-store.js.map +0 -1
  2649. package/dist/src/session/init-session-turn.js.map +0 -1
  2650. package/dist/src/session/lifecycle-timestamps.js.map +0 -1
  2651. package/dist/src/session/load-jsonl-entries.js.map +0 -1
  2652. package/dist/src/session/manager.js.map +0 -1
  2653. package/dist/src/session/patch-metadata.js.map +0 -1
  2654. package/dist/src/session/reset-policy.js.map +0 -1
  2655. package/dist/src/session/reset-triggers.js.map +0 -1
  2656. package/dist/src/session/reset-type.js.map +0 -1
  2657. package/dist/src/session/resolve-session.js.map +0 -1
  2658. package/dist/src/session/session-context-for-llm.js.map +0 -1
  2659. package/dist/src/session/session-id.js.map +0 -1
  2660. package/dist/src/session/session-title.js.map +0 -1
  2661. package/dist/src/session/session-workspace.js.map +0 -1
  2662. package/dist/src/session/store.js.map +0 -1
  2663. package/dist/src/session/stored-rows-to-file-entries.js.map +0 -1
  2664. package/dist/src/session/thinking-resolve.js.map +0 -1
  2665. package/dist/src/session/transcript-events.js.map +0 -1
  2666. package/dist/src/session/transcript-format.js.map +0 -1
  2667. package/dist/src/session/transcript-outline.js.map +0 -1
  2668. package/dist/src/session/transcript-stats.js.map +0 -1
  2669. package/dist/src/session/types.js.map +0 -1
  2670. package/dist/src/session/user-round-delete.js.map +0 -1
  2671. package/dist/src/share/share-audit.js.map +0 -1
  2672. package/dist/src/share/share-auto.js.map +0 -1
  2673. package/dist/src/share/share-config.js.map +0 -1
  2674. package/dist/src/share/share-landing.js.map +0 -1
  2675. package/dist/src/share/share-rate-limit.js.map +0 -1
  2676. package/dist/src/share/share-store.js.map +0 -1
  2677. package/dist/src/share/share-thumbnail.js.map +0 -1
  2678. package/dist/src/share/share-types.js.map +0 -1
  2679. package/dist/src/share/share-url.js.map +0 -1
  2680. package/dist/src/share/share-zip.js.map +0 -1
  2681. package/dist/src/share/site-proxy.js.map +0 -1
  2682. package/dist/src/share/site-share-config.js.map +0 -1
  2683. package/dist/src/share/site-share-router.js.map +0 -1
  2684. package/dist/src/share/site-share-store.js.map +0 -1
  2685. package/dist/src/share/site-share-types.js.map +0 -1
  2686. package/dist/src/share/site-static-serve.js.map +0 -1
  2687. package/dist/src/storage/sqlite/activity-repository.js.map +0 -1
  2688. package/dist/src/storage/sqlite/config-repository.js.map +0 -1
  2689. package/dist/src/storage/sqlite/connection.js.map +0 -1
  2690. package/dist/src/storage/sqlite/connector-repository.js.map +0 -1
  2691. package/dist/src/storage/sqlite/fts.js.map +0 -1
  2692. package/dist/src/storage/sqlite/knowledge-repository.js.map +0 -1
  2693. package/dist/src/storage/sqlite/memory-index-repository.js.map +0 -1
  2694. package/dist/src/storage/sqlite/memory-records-repository.js.map +0 -1
  2695. package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +0 -1
  2696. package/dist/src/storage/sqlite/migrations/discover.js.map +0 -1
  2697. package/dist/src/storage/sqlite/migrations/errors.js.map +0 -1
  2698. package/dist/src/storage/sqlite/migrations/runner.js.map +0 -1
  2699. package/dist/src/storage/sqlite/note-agent-context-repository.js.map +0 -1
  2700. package/dist/src/storage/sqlite/notes-repository.js.map +0 -1
  2701. package/dist/src/storage/sqlite/paths.js.map +0 -1
  2702. package/dist/src/storage/sqlite/row-mappers.js.map +0 -1
  2703. package/dist/src/storage/sqlite/schema-version.js.map +0 -1
  2704. package/dist/src/storage/sqlite/schema.js.map +0 -1
  2705. package/dist/src/storage/sqlite/session-metadata.js.map +0 -1
  2706. package/dist/src/storage/sqlite/session-repository.js.map +0 -1
  2707. package/dist/src/storage/sqlite/transaction.js.map +0 -1
  2708. package/dist/src/storage/sqlite/transcript-repository.js.map +0 -1
  2709. package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +0 -1
  2710. package/dist/src/storage/sqlite/user-trust-repository.js.map +0 -1
  2711. package/dist/src/tui/backends/embedded-backend.js.map +0 -1
  2712. package/dist/src/tui/backends/gateway-sse-backend.js.map +0 -1
  2713. package/dist/src/tui/chat-history.js.map +0 -1
  2714. package/dist/src/tui/clipboard-image.js.map +0 -1
  2715. package/dist/src/tui/clipboard-text.js.map +0 -1
  2716. package/dist/src/tui/components/assistant-message.js.map +0 -1
  2717. package/dist/src/tui/components/bash-execution.js.map +0 -1
  2718. package/dist/src/tui/components/bash-summary.js.map +0 -1
  2719. package/dist/src/tui/components/branch-message-summary.js.map +0 -1
  2720. package/dist/src/tui/components/branch-summary.js.map +0 -1
  2721. package/dist/src/tui/components/chat-log.js.map +0 -1
  2722. package/dist/src/tui/components/compaction-summary.js.map +0 -1
  2723. package/dist/src/tui/components/custom-editor.js.map +0 -1
  2724. package/dist/src/tui/components/custom-message.js.map +0 -1
  2725. package/dist/src/tui/components/dynamic-border.js.map +0 -1
  2726. package/dist/src/tui/components/extension-dialog.js.map +0 -1
  2727. package/dist/src/tui/components/fuzzy-filter.js.map +0 -1
  2728. package/dist/src/tui/components/scoped-models-selector.js.map +0 -1
  2729. package/dist/src/tui/components/searchable-select-list.js.map +0 -1
  2730. package/dist/src/tui/components/session-selector.js.map +0 -1
  2731. package/dist/src/tui/components/settings-selector.js.map +0 -1
  2732. package/dist/src/tui/components/thinking-selector.js.map +0 -1
  2733. package/dist/src/tui/components/tool-execution.js.map +0 -1
  2734. package/dist/src/tui/components/tui-bottom-bar.js.map +0 -1
  2735. package/dist/src/tui/components/tui-header.js.map +0 -1
  2736. package/dist/src/tui/components/user-message.js.map +0 -1
  2737. package/dist/src/tui/components/visual-truncate.js.map +0 -1
  2738. package/dist/src/tui/extension-host/autocomplete.js.map +0 -1
  2739. package/dist/src/tui/extension-host/host.js.map +0 -1
  2740. package/dist/src/tui/extension-host/load-extensions.js.map +0 -1
  2741. package/dist/src/tui/extension-host/runtime-context.js.map +0 -1
  2742. package/dist/src/tui/extension-host/runtime.js.map +0 -1
  2743. package/dist/src/tui/extension-host/surface.js.map +0 -1
  2744. package/dist/src/tui/extension-host/tool-renderers.js.map +0 -1
  2745. package/dist/src/tui/format-tui-hotkeys.js.map +0 -1
  2746. package/dist/src/tui/sse-consumer.js.map +0 -1
  2747. package/dist/src/tui/theme/dark.js.map +0 -1
  2748. package/dist/src/tui/theme/light.js.map +0 -1
  2749. package/dist/src/tui/theme-manager.js.map +0 -1
  2750. package/dist/src/tui/theme.js.map +0 -1
  2751. package/dist/src/tui/tool-summary.js.map +0 -1
  2752. package/dist/src/tui/tui-agent-events.js.map +0 -1
  2753. package/dist/src/tui/tui-command-formatters.js.map +0 -1
  2754. package/dist/src/tui/tui-commands.js.map +0 -1
  2755. package/dist/src/tui/tui-context-usage.js.map +0 -1
  2756. package/dist/src/tui/tui-extension-user-message.js.map +0 -1
  2757. package/dist/src/tui/tui-fd-path.js.map +0 -1
  2758. package/dist/src/tui/tui-file-autocomplete.js.map +0 -1
  2759. package/dist/src/tui/tui-follow-up-queue.js.map +0 -1
  2760. package/dist/src/tui/tui-git-branch.js.map +0 -1
  2761. package/dist/src/tui/tui-keybindings-file.js.map +0 -1
  2762. package/dist/src/tui/tui-lifecycle.js.map +0 -1
  2763. package/dist/src/tui/tui-local-shell.js.map +0 -1
  2764. package/dist/src/tui/tui-model-picker.js.map +0 -1
  2765. package/dist/src/tui/tui-oauth-login.js.map +0 -1
  2766. package/dist/src/tui/tui-overlays.js.map +0 -1
  2767. package/dist/src/tui/tui-picker-overlay.js.map +0 -1
  2768. package/dist/src/tui/tui-run-state.js.map +0 -1
  2769. package/dist/src/tui/tui-run-status-format.js.map +0 -1
  2770. package/dist/src/tui/tui-runtime-hints.js.map +0 -1
  2771. package/dist/src/tui/tui-scoped-models.js.map +0 -1
  2772. package/dist/src/tui/tui-session-actions.js.map +0 -1
  2773. package/dist/src/tui/tui-session-format.js.map +0 -1
  2774. package/dist/src/tui/tui-session-snapshot.js.map +0 -1
  2775. package/dist/src/tui/tui-session-stats.js.map +0 -1
  2776. package/dist/src/tui/tui-settings.js.map +0 -1
  2777. package/dist/src/tui/tui-skills-autocomplete.js.map +0 -1
  2778. package/dist/src/tui/tui-startup-resources.js.map +0 -1
  2779. package/dist/src/tui/tui-startup-text.js.map +0 -1
  2780. package/dist/src/tui/tui-stdio-filter.js.map +0 -1
  2781. package/dist/src/tui/tui-submit.js.map +0 -1
  2782. package/dist/src/tui/tui-suspend.js.map +0 -1
  2783. package/dist/src/tui/tui-timeline-picker.js.map +0 -1
  2784. package/dist/src/tui/tui-timeline.js.map +0 -1
  2785. package/dist/src/tui/tui-tool-diff.js.map +0 -1
  2786. package/dist/src/tui/tui-tool-result.js.map +0 -1
  2787. package/dist/src/tui/tui-transcript-tree-picker.js.map +0 -1
  2788. package/dist/src/tui/tui-transcript-tree.js.map +0 -1
  2789. package/dist/src/tui/tui-types.js.map +0 -1
  2790. package/dist/src/tui/tui-workflow-slash.js.map +0 -1
  2791. package/dist/src/tui/tui.js.map +0 -1
  2792. package/dist/src/tui/xopc-tui-keybindings.js.map +0 -1
  2793. package/dist/src/tunnel/broker-client.js.map +0 -1
  2794. package/dist/src/tunnel/consent.js.map +0 -1
  2795. package/dist/src/tunnel/enable-lan-pairing.js.map +0 -1
  2796. package/dist/src/tunnel/env.js.map +0 -1
  2797. package/dist/src/tunnel/frp-subdomain-host.js.map +0 -1
  2798. package/dist/src/tunnel/frpc-binary.js.map +0 -1
  2799. package/dist/src/tunnel/frpc-config.js.map +0 -1
  2800. package/dist/src/tunnel/frpc-extract.js.map +0 -1
  2801. package/dist/src/tunnel/frpc-process.js.map +0 -1
  2802. package/dist/src/tunnel/gateway-lifecycle.js.map +0 -1
  2803. package/dist/src/tunnel/pair-context.js.map +0 -1
  2804. package/dist/src/tunnel/pair-url.js.map +0 -1
  2805. package/dist/src/tunnel/pairing-rate-limit.js.map +0 -1
  2806. package/dist/src/tunnel/pairing.js.map +0 -1
  2807. package/dist/src/tunnel/tunnel-audit.js.map +0 -1
  2808. package/dist/src/tunnel/tunnel-config.js.map +0 -1
  2809. package/dist/src/tunnel/tunnel-persist.js.map +0 -1
  2810. package/dist/src/tunnel/tunnel-qr.js.map +0 -1
  2811. package/dist/src/tunnel/tunnel-rate-limit.js.map +0 -1
  2812. package/dist/src/tunnel/tunnel-service.js.map +0 -1
  2813. package/dist/src/tunnel/tunnel-state.js.map +0 -1
  2814. package/dist/src/tunnel/well-known.js.map +0 -1
  2815. package/dist/src/user-context/config.js.map +0 -1
  2816. package/dist/src/user-context/import.js.map +0 -1
  2817. package/dist/src/user-context/owner.js.map +0 -1
  2818. package/dist/src/user-context/profile.js.map +0 -1
  2819. package/dist/src/user-context/projection.js.map +0 -1
  2820. package/dist/src/user-context/runtime.js.map +0 -1
  2821. package/dist/src/user-context/source-recommendations.js.map +0 -1
  2822. package/dist/src/user-context/trust-policy.js.map +0 -1
  2823. package/dist/src/utils/global-singleton.js.map +0 -1
  2824. package/dist/src/utils/helpers.js.map +0 -1
  2825. package/dist/src/utils/index.js.map +0 -1
  2826. package/dist/src/utils/is-record.js.map +0 -1
  2827. package/dist/src/utils/logger/audit.js.map +0 -1
  2828. package/dist/src/utils/logger/config.js.map +0 -1
  2829. package/dist/src/utils/logger/context.js.map +0 -1
  2830. package/dist/src/utils/logger/exporters.js.map +0 -1
  2831. package/dist/src/utils/logger/index.js.map +0 -1
  2832. package/dist/src/utils/logger/log-store.js.map +0 -1
  2833. package/dist/src/utils/logger/log-stream.js.map +0 -1
  2834. package/dist/src/utils/logger/pino-record.js.map +0 -1
  2835. package/dist/src/utils/logger/redact.js.map +0 -1
  2836. package/dist/src/utils/logger/rotation.js.map +0 -1
  2837. package/dist/src/utils/logger/shutdown.js.map +0 -1
  2838. package/dist/src/utils/logger/stats.js.map +0 -1
  2839. package/dist/src/utils/logger/streams.js.map +0 -1
  2840. package/dist/src/utils/logger/types.js.map +0 -1
  2841. package/dist/src/utils/logger.js.map +0 -1
  2842. package/dist/src/utils/redact-sensitive-url.js.map +0 -1
  2843. package/dist/src/utils/sanitize-log.js.map +0 -1
  2844. package/dist/src/utils/string-coerce.js.map +0 -1
  2845. package/dist/src/voice/language-profile.js.map +0 -1
  2846. package/dist/src/voice/local/model-files.js.map +0 -1
  2847. package/dist/src/voice/local/model-manager.js.map +0 -1
  2848. package/dist/src/voice/local/models.js.map +0 -1
  2849. package/dist/src/voice/local/runtime-client.js.map +0 -1
  2850. package/dist/src/voice/local/runtime-dispatcher.js.map +0 -1
  2851. package/dist/src/voice/local/runtime-worker.js.map +0 -1
  2852. package/dist/src/voice/local/wav.js.map +0 -1
  2853. package/dist/src/voice/metadata/builtin.js.map +0 -1
  2854. package/dist/src/voice/metadata/registry.js.map +0 -1
  2855. package/dist/src/voice/stt/availability.js.map +0 -1
  2856. package/dist/src/voice/stt/config-slice.js.map +0 -1
  2857. package/dist/src/voice/stt/factory.js.map +0 -1
  2858. package/dist/src/voice/stt/index.js.map +0 -1
  2859. package/dist/src/voice/stt/list-providers.js.map +0 -1
  2860. package/dist/src/voice/stt/mention.js.map +0 -1
  2861. package/dist/src/voice/stt/preflight.js.map +0 -1
  2862. package/dist/src/voice/stt/providers/alibaba-transcription.js.map +0 -1
  2863. package/dist/src/voice/stt/providers/local-transcription.js.map +0 -1
  2864. package/dist/src/voice/stt/providers/openai-transcription.js.map +0 -1
  2865. package/dist/src/voice/stt/transcribe-core.js.map +0 -1
  2866. package/dist/src/voice/stt/types.js.map +0 -1
  2867. package/dist/src/voice/tts/audio.js.map +0 -1
  2868. package/dist/src/voice/tts/config-slice.js.map +0 -1
  2869. package/dist/src/voice/tts/directives.js.map +0 -1
  2870. package/dist/src/voice/tts/factory.js.map +0 -1
  2871. package/dist/src/voice/tts/list-providers.js.map +0 -1
  2872. package/dist/src/voice/tts/merge-config.js.map +0 -1
  2873. package/dist/src/voice/tts/openai-compatible-speech.js.map +0 -1
  2874. package/dist/src/voice/tts/payload.js.map +0 -1
  2875. package/dist/src/voice/tts/preprocess.js.map +0 -1
  2876. package/dist/src/voice/tts/providers/alibaba-speech.js.map +0 -1
  2877. package/dist/src/voice/tts/providers/edge-speech.js.map +0 -1
  2878. package/dist/src/voice/tts/providers/minimax-speech.js.map +0 -1
  2879. package/dist/src/voice/tts/providers/openai-speech.js.map +0 -1
  2880. package/dist/src/voice/tts/sentence-boundary.js.map +0 -1
  2881. package/dist/src/voice/tts/service.js.map +0 -1
  2882. package/dist/src/voice/tts/speak-core.js.map +0 -1
  2883. package/dist/src/voice/tts/speech-registry.js.map +0 -1
  2884. package/dist/src/voice/tts/status-tracker.js.map +0 -1
  2885. package/dist/src/voice/tts/summarize.js.map +0 -1
  2886. package/dist/src/voice/tts/types.js.map +0 -1
  2887. package/dist/src/work-discovery/analyzer.js.map +0 -1
  2888. package/dist/src/work-discovery/probe.js.map +0 -1
  2889. package/dist/src/work-discovery/repository.js.map +0 -1
  2890. package/dist/src/work-discovery/service.js.map +0 -1
  2891. package/dist/src/work-items/agent-context.js.map +0 -1
  2892. package/dist/src/work-items/work-item-service.js.map +0 -1
  2893. package/dist/src/work-items/work-item-store.js.map +0 -1
  2894. package/dist/src/work-items/work-item-workflow-judge.js.map +0 -1
  2895. package/dist/src/workflows/authoring/workflow-draft-store.js.map +0 -1
  2896. package/dist/src/workflows/domain/definition-utils.js.map +0 -1
  2897. package/dist/src/workflows/domain/run.js.map +0 -1
  2898. package/dist/src/workflows/domain/schema-validation.js.map +0 -1
  2899. package/dist/src/workflows/domain/validation.js.map +0 -1
  2900. package/dist/src/workflows/draft/workflow-draft-prompt.js.map +0 -1
  2901. package/dist/src/workflows/draft/workflow-draft-service.js.map +0 -1
  2902. package/dist/src/workflows/draft/workflow-draft-validator.js.map +0 -1
  2903. package/dist/src/workflows/engine/projector.js.map +0 -1
  2904. package/dist/src/workflows/engine/workflow-engine.js.map +0 -1
  2905. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +0 -1
  2906. package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +0 -1
  2907. package/dist/src/workflows/service/run-view-to-snapshot.js.map +0 -1
  2908. package/dist/src/workflows/service/workflow-run-service.js.map +0 -1
  2909. package/dist/src/workflows/service/workflow-session-bridge.js.map +0 -1
  2910. package/dist/src/workflows/service/workflow-session-key.js.map +0 -1
  2911. package/dist/src/workflows/store/event-store.js.map +0 -1
  2912. package/dist/src/workflows/store/paths.js.map +0 -1
  2913. package/dist/src/workflows/store/run-index-store.js.map +0 -1
  2914. package/dist/src/workflows/store/run-store.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-inspector.js","names":[],"sources":["../../../../src/agent/session/session-inspector.ts"],"sourcesContent":["/**\n * SessionInspector — read-only / introspection-oriented operations on a session.\n *\n * Owns the five methods previously scattered across `AgentService` that all\n * compute a \"summary view\" of one session:\n * - `compact` (manual user-triggered compaction)\n * - `btwQuery` (one-shot LLM answer with transcript as background)\n * - `report` (Markdown / JSON `/context` summary)\n * - `agentConfig` (resolved thinking + model + workspace for the Web UI)\n * - `contextUsage` (rough token budget vs estimated transcript)\n *\n * The shared helper `computeStats` keeps the three callsites that need\n * `getWindowStats` / `getCompactionStats` / `estimateTokenUsage` in lockstep.\n */\n\nimport type { AgentMessage } from '@earendil-works/pi-agent-core';\nimport type { ThinkingLevel } from '@earendil-works/pi-agent-core';\n\nimport type { Config } from '../../config/schema.js';\nimport type { BtwQueryOptions } from '../../chat-commands/index.js';\nimport { resolveEffectiveAgentProfileForSession } from '../../config/agent-profile.js';\nimport { resolveDefaultAgentWorkspaceDir } from '../../config/workspace-defaults.js';\nimport {\n effectiveWorkspacePathForSession,\n projectWorkspacePath,\n resolveEffectiveReasoningLevel,\n resolveEffectiveThinkingLevel,\n resolveVerboseLevel,\n type SessionConfigStore,\n} from '../../session/index.js';\nimport { getProjectForSession } from '../../projects/workspace.js';\nimport type { SessionStore } from '../../session/store.js';\nimport type { CompactionResult } from '../memory/compaction.js';\nimport type { ModelManager } from '../models/index.js';\nimport type { AgentInstanceGateway } from '../agent-instance-gateway.js';\nimport { runBtwQuery } from '../service/btw-query.js';\nimport { formatSessionContextReport } from '../service/session-context-report.js';\nimport type { ReasoningLevel, VerboseLevel } from '../transcript/thinking-types.js';\nimport { createLogger } from '../../utils/logger.js';\nimport type { SessionHydrator } from './session-hydrator.js';\n\nconst log = createLogger('SessionInspector');\n\nexport interface SessionInspectorOptions {\n sessionStore: SessionStore;\n sessionConfigStore: SessionConfigStore;\n modelManager: ModelManager;\n agentManager: AgentInstanceGateway;\n sessionHydrator: SessionHydrator;\n /** Effective config snapshot accessor (honours runtime overrides). */\n getConfig: () => Config | undefined;\n /**\n * Nominal context window the session is budgeted against. Derived from the\n * effective session model metadata, defaulting to 128k.\n */\n getContextWindow: (sessionKey: string) => number;\n}\n\nexport interface SessionContextUsage {\n estimatedTokens: number;\n contextWindow: number;\n usagePercent: number | null;\n}\n\nexport interface SessionAgentConfigView {\n thinkingLevel: ThinkingLevel;\n model: string;\n reasoningLevel: ReasoningLevel;\n verboseLevel: VerboseLevel;\n effectiveWorkspacePath: string;\n workingDirectoryLocked: boolean;\n workspaceSource: 'project' | 'session_override' | 'agent_default_root' | 'agent_workspace';\n}\n\nexport class SessionInspector {\n private readonly opts: SessionInspectorOptions;\n\n constructor(opts: SessionInspectorOptions) {\n this.opts = opts;\n }\n\n private async ensureEffectiveSessionModel(sessionKey: string): Promise<void> {\n await this.opts.sessionHydrator.model(sessionKey);\n const cfg = this.opts.getConfig();\n if (!cfg) return;\n\n const profile = resolveEffectiveAgentProfileForSession(cfg, sessionKey);\n const profileModelRef = profile.primaryModelRef?.trim();\n if (profileModelRef) {\n this.opts.modelManager.setSessionProfileDefault(sessionKey, profileModelRef, profile.fallbacks);\n }\n }\n\n private async contextWindowForSession(sessionKey: string): Promise<number> {\n await this.ensureEffectiveSessionModel(sessionKey);\n return this.opts.getContextWindow(sessionKey);\n }\n\n /**\n * Manual compaction triggered by a user / API. Always forces a compaction\n * pass (`force: true` by default) and evicts the in-memory agent so the\n * next turn reloads from the compacted transcript.\n */\n async compact(\n sessionKey: string,\n options?: { instructions?: string; force?: boolean },\n ): Promise<CompactionResult> {\n const messages = await this.opts.sessionStore.load(sessionKey);\n const contextWindow = await this.contextWindowForSession(sessionKey);\n const result = await this.opts.sessionStore.compact(\n sessionKey,\n messages,\n contextWindow,\n options?.instructions,\n options?.force ?? true,\n );\n if (result.compacted) {\n this.opts.agentManager.removeAgent(sessionKey);\n }\n log.info({ sessionKey, result }, 'Manual compaction complete');\n return result;\n }\n\n /** One-shot LLM answer for `/btw`: transcript as background, not persisted. */\n btwQuery(\n sessionKey: string,\n question: string,\n options?: BtwQueryOptions,\n ): Promise<{ text: string; error?: string }> {\n const config = this.opts.getConfig();\n const profile = config ? resolveEffectiveAgentProfileForSession(config, sessionKey) : undefined;\n return runBtwQuery({\n sessionKey,\n question,\n sessionStore: this.opts.sessionStore,\n modelForSession: options?.modelRef?.trim() || this.opts.modelManager.getModelForSession(sessionKey),\n log,\n maxTokens: options?.maxTokens,\n temperature: options?.temperature,\n includeSessionContext: options?.includeSessionContext,\n onTextDelta: options?.onTextDelta,\n credentialOptions: profile && config\n ? { agentId: profile.agentId, appConfig: config }\n : undefined,\n });\n }\n\n /** Cheap stats used by both the report and other callers. */\n stats(sessionKey: string, messages: AgentMessage[]): {\n windowStats: ReturnType<SessionStore['getWindowStats']>;\n compactionStats: ReturnType<SessionStore['getCompactionStats']>;\n tokenEstimate: ReturnType<SessionStore['estimateTokenUsage']>;\n } {\n return {\n windowStats: this.opts.sessionStore.getWindowStats(messages),\n compactionStats: this.opts.sessionStore.getCompactionStats(sessionKey),\n tokenEstimate: this.opts.sessionStore.estimateTokenUsage(sessionKey, messages),\n };\n }\n\n /** Rough context usage for TUI footer (estimated tokens vs nominal budget). */\n async contextUsage(sessionKey: string): Promise<SessionContextUsage> {\n const messages = await this.opts.sessionStore.load(sessionKey);\n const contextWindow = await this.contextWindowForSession(sessionKey);\n const estimatedTokens = await this.opts.sessionStore.estimateTokenUsage(sessionKey, messages);\n const usagePercent =\n contextWindow > 0 ? Math.min(100, Math.round((estimatedTokens / contextWindow) * 100)) : null;\n return { estimatedTokens, contextWindow, usagePercent };\n }\n\n /** Markdown or JSON summary for `/context`. */\n async report(sessionKey: string, mode: 'list' | 'detail' | 'json'): Promise<string> {\n const cfg = this.opts.getConfig();\n if (!cfg) {\n throw new Error('SessionInspector requires a config snapshot to render report');\n }\n const messages = await this.opts.sessionStore.load(sessionKey);\n const cw = await this.contextWindowForSession(sessionKey);\n const computed = this.stats(sessionKey, messages);\n const model = this.opts.modelManager.getModelForSession(sessionKey);\n const sc = await this.opts.sessionConfigStore.get(sessionKey);\n const project = getProjectForSession(sessionKey);\n const workspace = effectiveWorkspacePathForSession(cfg, sessionKey, sc, project);\n const estTokens = await this.opts.sessionStore.estimateTokenUsage(sessionKey, messages);\n const profile = resolveEffectiveAgentProfileForSession(cfg, sessionKey);\n const deniedTools = [...profile.tools.denied].sort((a, b) => a.localeCompare(b));\n const toolsSummary = deniedTools.length > 0 ? `denied: ${deniedTools.join(', ')}` : '(no denied tools)';\n\n return formatSessionContextReport({\n sessionKey,\n mode,\n model,\n workspacePath: workspace,\n agentId: profile.agentId,\n messageCount: messages.length,\n contextWindowNominal: cw,\n estimatedTranscriptTokens: estTokens,\n thinkingDefault: undefined,\n reasoningDefault: undefined,\n verboseDefault: undefined,\n compaction: undefined,\n toolsFlagsSummary: toolsSummary,\n windowStats: computed.windowStats,\n compactionRunStats: computed.compactionStats,\n });\n }\n\n /** Resolved thinking / model / workspace for the Web UI. */\n async agentConfig(sessionKey: string): Promise<SessionAgentConfigView> {\n await this.ensureEffectiveSessionModel(sessionKey);\n const cfg = this.opts.getConfig();\n if (!cfg) {\n throw new Error('SessionInspector requires a config snapshot to resolve agent config');\n }\n const sc = await this.opts.sessionConfigStore.get(sessionKey);\n\n const defThink = 'medium';\n const level = await resolveEffectiveThinkingLevel(this.opts.sessionConfigStore, sessionKey, null, defThink);\n const defReason = 'stream' as ReasoningLevel;\n const reasoningLevel = await resolveEffectiveReasoningLevel(this.opts.sessionConfigStore, sessionKey, defReason);\n const defVerbose = 'full' as VerboseLevel;\n const verboseLevel = await resolveVerboseLevel(this.opts.sessionConfigStore, sessionKey, defVerbose);\n const model = this.opts.modelManager.getModelForSession(sessionKey);\n const project = getProjectForSession(sessionKey);\n const projectWorkspace = projectWorkspacePath(project);\n const hasSessionWorkspaceOverride = Boolean(sc?.workingDirectoryOverride?.trim());\n const effectiveWorkspacePath = effectiveWorkspacePathForSession(cfg, sessionKey, sc, project);\n const isDefaultWorkspaceRoot = effectiveWorkspacePath === resolveDefaultAgentWorkspaceDir();\n return {\n thinkingLevel: level,\n model,\n reasoningLevel,\n verboseLevel,\n effectiveWorkspacePath,\n workingDirectoryLocked: Boolean(projectWorkspace || hasSessionWorkspaceOverride),\n workspaceSource: projectWorkspace\n ? 'project'\n : hasSessionWorkspaceOverride\n ? 'session_override'\n : isDefaultWorkspaceRoot\n ? 'agent_default_root'\n : 'agent_workspace',\n };\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-lifecycle.js","names":[],"sources":["../../../../src/agent/session/session-lifecycle.ts"],"sourcesContent":["/**\n * Session Lifecycle Manager - Manages session lifecycle events\n *\n * Handles session start, end, and related lifecycle operations.\n */\n\nimport type { SessionStore } from '../../session/index.js';\nimport type { SessionTracker } from './tracker.js';\nimport type { LifecycleManager } from '../lifecycle/index.js';\nimport type { SessionContext } from './session-context.js';\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('SessionLifecycleManager');\n\nexport interface SessionLifecycleEvents {\n onSessionStart?: (context: SessionContext) => void | Promise<void>;\n onSessionEnd?: (context: SessionContext, stats: SessionStats) => void | Promise<void>;\n}\n\nexport interface SessionStats {\n messageCount: number;\n durationMs?: number;\n}\n\nexport class SessionLifecycleManager {\n private sessionStore: SessionStore;\n private sessionTracker: SessionTracker;\n private lifecycleManager: LifecycleManager;\n private events: SessionLifecycleEvents;\n private sessionStartTimes: Map<string, number> = new Map();\n\n constructor(\n sessionStore: SessionStore,\n sessionTracker: SessionTracker,\n lifecycleManager: LifecycleManager,\n events: SessionLifecycleEvents = {}\n ) {\n this.sessionStore = sessionStore;\n this.sessionTracker = sessionTracker;\n this.lifecycleManager = lifecycleManager;\n this.events = events;\n }\n\n /**\n * Start a session and emit lifecycle events\n */\n async startSession(context: SessionContext): Promise<void> {\n const { sessionKey } = context;\n \n log.debug({ sessionKey }, 'Starting session');\n \n // Touch session in tracker\n this.sessionTracker.touchSession(sessionKey);\n \n // Record start time\n this.sessionStartTimes.set(sessionKey, Date.now());\n \n // Emit session start event\n await this.lifecycleManager.emit('session_start', sessionKey, {\n channel: context.channel,\n chatId: context.chatId,\n senderId: context.senderId,\n isGroup: context.isGroup,\n }, context);\n \n // Call custom handler if provided\n if (this.events.onSessionStart) {\n await this.events.onSessionStart(context);\n }\n }\n\n /**\n * End a session and emit lifecycle events\n */\n async endSession(context: SessionContext): Promise<void> {\n const { sessionKey } = context;\n \n log.debug({ sessionKey }, 'Ending session');\n \n // Calculate stats\n const messageCount = await this.getMessageCount(sessionKey);\n const startTime = this.sessionStartTimes.get(sessionKey);\n const durationMs = startTime ? Date.now() - startTime : undefined;\n \n const stats: SessionStats = {\n messageCount,\n durationMs,\n };\n \n // Emit session end event\n await this.lifecycleManager.emit('session_end', sessionKey, {\n messageCount,\n durationMs,\n }, context);\n \n // Clean up start time tracking\n this.sessionStartTimes.delete(sessionKey);\n \n // Call custom handler if provided\n if (this.events.onSessionEnd) {\n await this.events.onSessionEnd(context, stats);\n }\n }\n\n /**\n * Get the number of messages in a session\n */\n private async getMessageCount(sessionKey: string): Promise<number> {\n try {\n const messages = await this.sessionStore.load(sessionKey);\n return messages.length;\n } catch {\n return 0;\n }\n }\n\n /**\n * Get the start time for a session\n */\n getSessionStartTime(sessionKey: string): number | undefined {\n return this.sessionStartTimes.get(sessionKey);\n }\n\n /**\n * Check if a session is currently active\n */\n isSessionActive(sessionKey: string): boolean {\n return this.sessionStartTimes.has(sessionKey);\n }\n}\n"],"mappings":";;;aAUqD;AAErD,MAAM,MAAM,aAAa,0BAA0B;AAYnD,IAAa,0BAAb,MAAqC;CACnC;CACA;CACA;CACA;CACA,oCAAiD,IAAI,KAAK;CAE1D,YACE,cACA,gBACA,kBACA,SAAiC,EAAE,EACnC;AACA,OAAK,eAAe;AACpB,OAAK,iBAAiB;AACtB,OAAK,mBAAmB;AACxB,OAAK,SAAS;;;;;CAMhB,MAAM,aAAa,SAAwC;EACzD,MAAM,EAAE,eAAe;AAEvB,MAAI,MAAM,EAAE,YAAY,EAAE,mBAAmB;AAG7C,OAAK,eAAe,aAAa,WAAW;AAG5C,OAAK,kBAAkB,IAAI,YAAY,KAAK,KAAK,CAAC;AAGlD,QAAM,KAAK,iBAAiB,KAAK,iBAAiB,YAAY;GAC5D,SAAS,QAAQ;GACjB,QAAQ,QAAQ;GAChB,UAAU,QAAQ;GAClB,SAAS,QAAQ;GAClB,EAAE,QAAQ;AAGX,MAAI,KAAK,OAAO,eACd,OAAM,KAAK,OAAO,eAAe,QAAQ;;;;;CAO7C,MAAM,WAAW,SAAwC;EACvD,MAAM,EAAE,eAAe;AAEvB,MAAI,MAAM,EAAE,YAAY,EAAE,iBAAiB;EAG3C,MAAM,eAAe,MAAM,KAAK,gBAAgB,WAAW;EAC3D,MAAM,YAAY,KAAK,kBAAkB,IAAI,WAAW;EACxD,MAAM,aAAa,YAAY,KAAK,KAAK,GAAG,YAAY,KAAA;EAExD,MAAM,QAAsB;GAC1B;GACA;GACD;AAGD,QAAM,KAAK,iBAAiB,KAAK,eAAe,YAAY;GAC1D;GACA;GACD,EAAE,QAAQ;AAGX,OAAK,kBAAkB,OAAO,WAAW;AAGzC,MAAI,KAAK,OAAO,aACd,OAAM,KAAK,OAAO,aAAa,SAAS,MAAM;;;;;CAOlD,MAAc,gBAAgB,YAAqC;AACjE,MAAI;AAEF,WAAO,MADgB,KAAK,aAAa,KAAK,WAAW,EACzC;UACV;AACN,UAAO;;;;;;CAOX,oBAAoB,YAAwC;AAC1D,SAAO,KAAK,kBAAkB,IAAI,WAAW;;;;;CAM/C,gBAAgB,YAA6B;AAC3C,SAAO,KAAK,kBAAkB,IAAI,WAAW"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-state-bag.js","names":[],"sources":["../../../../src/agent/session/session-state-bag.ts"],"sourcesContent":["/**\n * SessionStateBag — typed container for the per-session state previously held\n * as private fields on `AgentService` (six `Map<sessionKey, …>` instances with\n * no shared cleanup path).\n *\n * Goals:\n * - Single `disposeSession(sessionKey)` entry that clears every slot for a key\n * (and runs the event unsubscriber, which was easy to forget previously).\n * - Optional TTL sweep for slots whose lifecycle is not bound to an explicit\n * register/unregister pair, so long-running Gateways do not accumulate stale\n * per-session entries from disconnected webchat clients or finished turns.\n * - Hard upper bound for the same TTL'd slots to bound worst-case memory.\n *\n * Slots whose lifetime is fully owned by explicit lifecycle calls\n * (`inboundTurnDepth`, `directStreamOutcome`, `embeddedStreamText`,\n * `sessionEventUnsubscribers`) are still cleared via `disposeSession`, but they\n * are NOT subject to TTL — sweeping them would race with their owners.\n */\n\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('SessionStateBag');\n\nexport type WebchatSsePublisher = (event: { type: string; [key: string]: unknown }) => void;\n\nexport interface PersistentGoalStreamOutcome {\n skipPersistentGoalPostTurn: boolean;\n}\n\nexport interface SessionStateBagOptions {\n /** Idle TTL for TTL-managed slots. Defaults to 1 hour. Set to 0 to disable sweeping. */\n ttlMs?: number;\n /** Sweep cadence. Defaults to 10 minutes. */\n sweepIntervalMs?: number;\n /** Hard upper bound on entries for TTL-managed slots. Defaults to 5000. */\n maxEntries?: number;\n /** Inject a clock for tests. */\n now?: () => number;\n}\n\nconst DEFAULT_TTL_MS = 60 * 60 * 1000;\nconst DEFAULT_SWEEP_INTERVAL_MS = 10 * 60 * 1000;\nconst DEFAULT_MAX_ENTRIES = 5_000;\n\ntype Touched<V> = { value: V; touchedAt: number };\n\nexport class SessionStateBag {\n /** Webchat SSE publisher (register/unregister + TTL fallback). */\n private readonly webchatPublishers = new Map<string, Touched<WebchatSsePublisher>>();\n /** Last assistant plain text (TTL + LRU). */\n private readonly lastAssistantText = new Map<string, Touched<string>>();\n\n /** Stream text for the in-flight embedded turn (managed by turn). */\n private readonly embeddedStreamText = new Map<string, string>();\n /** Persistent-goal stream outcome (take-and-delete). */\n private readonly directStreamOutcome = new Map<string, PersistentGoalStreamOutcome>();\n /** Concurrent inbound turn depth (counter). */\n private readonly inboundTurnDepth = new Map<string, number>();\n /** Agent-event subscription tear-downs (run on dispose). */\n private readonly sessionEventUnsubscribers = new Map<string, () => void>();\n\n private readonly ttlMs: number;\n private readonly maxEntries: number;\n private readonly now: () => number;\n private readonly sweepTimer: ReturnType<typeof setInterval> | null;\n\n constructor(opts: SessionStateBagOptions = {}) {\n this.ttlMs = opts.ttlMs ?? DEFAULT_TTL_MS;\n this.maxEntries = opts.maxEntries ?? DEFAULT_MAX_ENTRIES;\n this.now = opts.now ?? Date.now;\n\n const sweepIntervalMs = opts.sweepIntervalMs ?? DEFAULT_SWEEP_INTERVAL_MS;\n if (this.ttlMs > 0 && sweepIntervalMs > 0) {\n this.sweepTimer = setInterval(() => this.sweepStaleEntries(), sweepIntervalMs);\n this.sweepTimer.unref?.();\n } else {\n this.sweepTimer = null;\n }\n }\n\n // ── Webchat publishers ──────────────────────────────────────────────────\n\n registerWebchatPublisher(sessionKey: string, publisher: WebchatSsePublisher): void {\n this.webchatPublishers.set(sessionKey, { value: publisher, touchedAt: this.now() });\n this.enforceCap(this.webchatPublishers, 'webchatPublishers');\n }\n\n unregisterWebchatPublisher(sessionKey: string): void {\n this.webchatPublishers.delete(sessionKey);\n }\n\n getWebchatPublisher(sessionKey: string): WebchatSsePublisher | undefined {\n const entry = this.webchatPublishers.get(sessionKey);\n if (!entry) return undefined;\n entry.touchedAt = this.now();\n return entry.value;\n }\n\n // ── Last assistant plain text ───────────────────────────────────────────\n\n setLastAssistantText(sessionKey: string, text: string): void {\n const trimmed = text.trim();\n if (!trimmed) return;\n this.lastAssistantText.set(sessionKey, { value: trimmed, touchedAt: this.now() });\n this.enforceCap(this.lastAssistantText, 'lastAssistantText');\n }\n\n getLastAssistantText(sessionKey: string): string | undefined {\n const entry = this.lastAssistantText.get(sessionKey);\n if (!entry) return undefined;\n entry.touchedAt = this.now();\n return entry.value;\n }\n\n // ── Embedded stream text (turn-scoped) ──────────────────────────────────\n\n appendEmbeddedStreamText(sessionKey: string, chunk: string): string {\n const prev = this.embeddedStreamText.get(sessionKey) ?? '';\n const next = prev + chunk;\n this.embeddedStreamText.set(sessionKey, next);\n return next;\n }\n\n clearEmbeddedStreamText(sessionKey: string): void {\n this.embeddedStreamText.delete(sessionKey);\n }\n\n // ── Persistent-goal stream outcome (take-and-delete) ────────────────────\n\n recordPersistentGoalStreamOutcome(sessionKey: string, outcome: PersistentGoalStreamOutcome): void {\n this.directStreamOutcome.set(sessionKey, outcome);\n }\n\n takePersistentGoalStreamOutcome(sessionKey: string): PersistentGoalStreamOutcome | undefined {\n const v = this.directStreamOutcome.get(sessionKey);\n this.directStreamOutcome.delete(sessionKey);\n return v;\n }\n\n // ── Inbound turn depth (counter) ────────────────────────────────────────\n\n beginInboundTurn(sessionKey: string): void {\n this.inboundTurnDepth.set(sessionKey, (this.inboundTurnDepth.get(sessionKey) ?? 0) + 1);\n }\n\n endInboundTurn(sessionKey: string): void {\n const next = (this.inboundTurnDepth.get(sessionKey) ?? 1) - 1;\n if (next <= 0) {\n this.inboundTurnDepth.delete(sessionKey);\n } else {\n this.inboundTurnDepth.set(sessionKey, next);\n }\n }\n\n getInboundTurnDepth(sessionKey: string): number {\n return this.inboundTurnDepth.get(sessionKey) ?? 0;\n }\n\n // ── Session event unsubscribers ─────────────────────────────────────────\n\n setSessionEventUnsubscriber(sessionKey: string, unsubscribe: () => void): void {\n const previous = this.sessionEventUnsubscribers.get(sessionKey);\n if (previous) {\n try {\n previous();\n } catch (err) {\n log.warn({ err, sessionKey }, 'Previous session-event unsubscribe threw');\n }\n }\n this.sessionEventUnsubscribers.set(sessionKey, unsubscribe);\n }\n\n hasSessionEventUnsubscriber(sessionKey: string): boolean {\n return this.sessionEventUnsubscribers.has(sessionKey);\n }\n\n // ── Lifecycle / cleanup ─────────────────────────────────────────────────\n\n /** Clear every slot for `sessionKey`, invoking the unsubscriber if registered. */\n disposeSession(sessionKey: string): void {\n const unsub = this.sessionEventUnsubscribers.get(sessionKey);\n if (unsub) {\n try {\n unsub();\n } catch (err) {\n log.warn({ err, sessionKey }, 'Session event unsubscribe threw during dispose');\n }\n this.sessionEventUnsubscribers.delete(sessionKey);\n }\n\n this.webchatPublishers.delete(sessionKey);\n this.lastAssistantText.delete(sessionKey);\n this.embeddedStreamText.delete(sessionKey);\n this.directStreamOutcome.delete(sessionKey);\n this.inboundTurnDepth.delete(sessionKey);\n }\n\n /** Tear down every session (process stop / hot reload). */\n disposeAll(): void {\n for (const [sessionKey, unsub] of this.sessionEventUnsubscribers) {\n try {\n unsub();\n } catch (err) {\n log.warn({ err, sessionKey }, 'Session event unsubscribe threw during disposeAll');\n }\n }\n this.sessionEventUnsubscribers.clear();\n this.webchatPublishers.clear();\n this.lastAssistantText.clear();\n this.embeddedStreamText.clear();\n this.directStreamOutcome.clear();\n this.inboundTurnDepth.clear();\n\n if (this.sweepTimer) {\n clearInterval(this.sweepTimer);\n }\n }\n\n /** Test helper. */\n size(): {\n webchatPublishers: number;\n lastAssistantText: number;\n embeddedStreamText: number;\n directStreamOutcome: number;\n inboundTurnDepth: number;\n sessionEventUnsubscribers: number;\n } {\n return {\n webchatPublishers: this.webchatPublishers.size,\n lastAssistantText: this.lastAssistantText.size,\n embeddedStreamText: this.embeddedStreamText.size,\n directStreamOutcome: this.directStreamOutcome.size,\n inboundTurnDepth: this.inboundTurnDepth.size,\n sessionEventUnsubscribers: this.sessionEventUnsubscribers.size,\n };\n }\n\n // ── Internals ───────────────────────────────────────────────────────────\n\n private sweepStaleEntries(): void {\n const cutoff = this.now() - this.ttlMs;\n let removed = 0;\n for (const [k, entry] of this.webchatPublishers) {\n if (entry.touchedAt < cutoff) {\n this.webchatPublishers.delete(k);\n removed += 1;\n }\n }\n for (const [k, entry] of this.lastAssistantText) {\n if (entry.touchedAt < cutoff) {\n this.lastAssistantText.delete(k);\n removed += 1;\n }\n }\n if (removed > 0) {\n log.debug({ removed, ttlMs: this.ttlMs }, 'SessionStateBag TTL sweep');\n }\n }\n\n private enforceCap<V>(map: Map<string, Touched<V>>, slotName: string): void {\n if (map.size <= this.maxEntries) {\n return;\n }\n // Evict oldest entries (LRU on touchedAt) until under cap.\n const sorted = [...map.entries()].sort((a, b) => a[1].touchedAt - b[1].touchedAt);\n let evict = map.size - this.maxEntries;\n while (evict > 0 && sorted.length > 0) {\n const oldest = sorted.shift()!;\n map.delete(oldest[0]);\n evict -= 1;\n }\n log.warn(\n { slot: slotName, maxEntries: this.maxEntries },\n `SessionStateBag slot exceeded cap; evicted oldest entries`,\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracker.js","names":[],"sources":["../../../../src/agent/session/tracker.ts"],"sourcesContent":["/**\n * Session tracking and cleanup module\n * \n * Manages session state, usage statistics, and memory cleanup\n * to prevent memory leaks in long-running agent instances.\n */\n\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('SessionTracker');\n\nexport interface SessionUsage {\n prompt: number;\n completion: number;\n total: number;\n}\n\nexport interface SessionTrackerConfig {\n /** Max sessions to keep in memory */\n maxSessions?: number;\n /** Session TTL in milliseconds */\n sessionTtlMs?: number;\n /** Cleanup interval in milliseconds */\n cleanupIntervalMs?: number;\n}\n\nexport class SessionTracker {\n private sessionUsage: Map<string, SessionUsage> = new Map();\n private sessionLastActivity: Map<string, number> = new Map();\n private sessionModels: Map<string, string> = new Map(); // sessionKey -> modelId\n private cleanupInterval?: NodeJS.Timeout;\n \n private readonly maxSessions: number;\n private readonly sessionTtlMs: number;\n private readonly cleanupIntervalMs: number;\n\n constructor(config: SessionTrackerConfig = {}) {\n this.maxSessions = config.maxSessions ?? 1000;\n this.sessionTtlMs = config.sessionTtlMs ?? 30 * 60 * 1000; // 30 minutes\n this.cleanupIntervalMs = config.cleanupIntervalMs ?? 5 * 60 * 1000; // 5 minutes\n \n this.startCleanupInterval();\n }\n\n /**\n * Start periodic cleanup of inactive sessions\n */\n private startCleanupInterval(): void {\n this.cleanupInterval = setInterval(() => {\n this.cleanupInactiveSessions();\n }, this.cleanupIntervalMs);\n }\n\n /**\n * Cleanup inactive sessions to prevent memory leak\n */\n private cleanupInactiveSessions(): void {\n const now = Date.now();\n const sessionsToDelete: string[] = [];\n let deletedCount = 0;\n\n // Find expired sessions\n for (const [sessionKey, lastActivity] of this.sessionLastActivity) {\n if (now - lastActivity > this.sessionTtlMs) {\n sessionsToDelete.push(sessionKey);\n }\n }\n\n // Delete expired sessions\n for (const sessionKey of sessionsToDelete) {\n this.sessionUsage.delete(sessionKey);\n this.sessionLastActivity.delete(sessionKey);\n this.sessionModels.delete(sessionKey);\n deletedCount++;\n }\n\n // If still over limit, remove oldest\n if (this.sessionUsage.size > this.maxSessions) {\n const sorted = Array.from(this.sessionLastActivity.entries())\n .sort((a, b) => a[1] - b[1]);\n \n const toRemove = sorted.slice(0, this.sessionUsage.size - this.maxSessions);\n for (const [sessionKey] of toRemove) {\n this.sessionUsage.delete(sessionKey);\n this.sessionLastActivity.delete(sessionKey);\n this.sessionModels.delete(sessionKey);\n deletedCount++;\n }\n }\n\n if (deletedCount > 0) {\n log.info({ deleted: deletedCount, remaining: this.sessionUsage.size }, 'Cleaned up inactive sessions');\n }\n }\n\n /**\n * Update last activity timestamp for a session\n */\n touchSession(sessionKey: string): void {\n this.sessionLastActivity.set(sessionKey, Date.now());\n }\n\n /**\n * Get usage for a session\n */\n getUsage(sessionKey: string): SessionUsage | undefined {\n return this.sessionUsage.get(sessionKey);\n }\n\n /**\n * Update usage for a session\n */\n updateUsage(sessionKey: string, usage: Partial<SessionUsage>): void {\n const current = this.sessionUsage.get(sessionKey) ?? { prompt: 0, completion: 0, total: 0 };\n \n if (usage.prompt !== undefined) current.prompt += usage.prompt;\n if (usage.completion !== undefined) current.completion += usage.completion;\n if (usage.total !== undefined) current.total += usage.total;\n \n this.sessionUsage.set(sessionKey, current);\n this.touchSession(sessionKey);\n }\n\n /**\n * Set model for a session\n */\n setModel(sessionKey: string, modelId: string): void {\n this.sessionModels.set(sessionKey, modelId);\n this.touchSession(sessionKey);\n }\n\n /**\n * Get model for a session\n */\n getModel(sessionKey: string): string | undefined {\n return this.sessionModels.get(sessionKey);\n }\n\n /**\n * Get all session keys\n */\n getSessionKeys(): string[] {\n return Array.from(this.sessionUsage.keys());\n }\n\n /**\n * Get total session count\n */\n getSessionCount(): number {\n return this.sessionUsage.size;\n }\n\n /**\n * Delete a session\n */\n deleteSession(sessionKey: string): boolean {\n const hadUsage = this.sessionUsage.delete(sessionKey);\n this.sessionLastActivity.delete(sessionKey);\n this.sessionModels.delete(sessionKey);\n return hadUsage;\n }\n\n /**\n * Dispose resources (call on shutdown)\n */\n dispose(): void {\n if (this.cleanupInterval) {\n clearInterval(this.cleanupInterval);\n this.cleanupInterval = undefined;\n }\n }\n}\n"],"mappings":";;;aAOqD;AAErD,MAAM,MAAM,aAAa,iBAAiB;AAiB1C,IAAa,iBAAb,MAA4B;CAC1B,+BAAkD,IAAI,KAAK;CAC3D,sCAAmD,IAAI,KAAK;CAC5D,gCAA6C,IAAI,KAAK;CACtD;CAEA;CACA;CACA;CAEA,YAAY,SAA+B,EAAE,EAAE;AAC7C,OAAK,cAAc,OAAO,eAAe;AACzC,OAAK,eAAe,OAAO,gBAAgB,OAAU;AACrD,OAAK,oBAAoB,OAAO,qBAAqB,MAAS;AAE9D,OAAK,sBAAsB;;;;;CAM7B,uBAAqC;AACnC,OAAK,kBAAkB,kBAAkB;AACvC,QAAK,yBAAyB;KAC7B,KAAK,kBAAkB;;;;;CAM5B,0BAAwC;EACtC,MAAM,MAAM,KAAK,KAAK;EACtB,MAAM,mBAA6B,EAAE;EACrC,IAAI,eAAe;AAGnB,OAAK,MAAM,CAAC,YAAY,iBAAiB,KAAK,oBAC5C,KAAI,MAAM,eAAe,KAAK,aAC5B,kBAAiB,KAAK,WAAW;AAKrC,OAAK,MAAM,cAAc,kBAAkB;AACzC,QAAK,aAAa,OAAO,WAAW;AACpC,QAAK,oBAAoB,OAAO,WAAW;AAC3C,QAAK,cAAc,OAAO,WAAW;AACrC;;AAIF,MAAI,KAAK,aAAa,OAAO,KAAK,aAAa;GAI7C,MAAM,WAHS,MAAM,KAAK,KAAK,oBAAoB,SAAS,CAAC,CAC1D,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,GAEJ,CAAC,MAAM,GAAG,KAAK,aAAa,OAAO,KAAK,YAAY;AAC3E,QAAK,MAAM,CAAC,eAAe,UAAU;AACnC,SAAK,aAAa,OAAO,WAAW;AACpC,SAAK,oBAAoB,OAAO,WAAW;AAC3C,SAAK,cAAc,OAAO,WAAW;AACrC;;;AAIJ,MAAI,eAAe,EACjB,KAAI,KAAK;GAAE,SAAS;GAAc,WAAW,KAAK,aAAa;GAAM,EAAE,+BAA+B;;;;;CAO1G,aAAa,YAA0B;AACrC,OAAK,oBAAoB,IAAI,YAAY,KAAK,KAAK,CAAC;;;;;CAMtD,SAAS,YAA8C;AACrD,SAAO,KAAK,aAAa,IAAI,WAAW;;;;;CAM1C,YAAY,YAAoB,OAAoC;EAClE,MAAM,UAAU,KAAK,aAAa,IAAI,WAAW,IAAI;GAAE,QAAQ;GAAG,YAAY;GAAG,OAAO;GAAG;AAE3F,MAAI,MAAM,WAAW,KAAA,EAAW,SAAQ,UAAU,MAAM;AACxD,MAAI,MAAM,eAAe,KAAA,EAAW,SAAQ,cAAc,MAAM;AAChE,MAAI,MAAM,UAAU,KAAA,EAAW,SAAQ,SAAS,MAAM;AAEtD,OAAK,aAAa,IAAI,YAAY,QAAQ;AAC1C,OAAK,aAAa,WAAW;;;;;CAM/B,SAAS,YAAoB,SAAuB;AAClD,OAAK,cAAc,IAAI,YAAY,QAAQ;AAC3C,OAAK,aAAa,WAAW;;;;;CAM/B,SAAS,YAAwC;AAC/C,SAAO,KAAK,cAAc,IAAI,WAAW;;;;;CAM3C,iBAA2B;AACzB,SAAO,MAAM,KAAK,KAAK,aAAa,MAAM,CAAC;;;;;CAM7C,kBAA0B;AACxB,SAAO,KAAK,aAAa;;;;;CAM3B,cAAc,YAA6B;EACzC,MAAM,WAAW,KAAK,aAAa,OAAO,WAAW;AACrD,OAAK,oBAAoB,OAAO,WAAW;AAC3C,OAAK,cAAc,OAAO,WAAW;AACrC,SAAO;;;;;CAMT,UAAgB;AACd,MAAI,KAAK,iBAAiB;AACxB,iBAAc,KAAK,gBAAgB;AACnC,QAAK,kBAAkB,KAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","names":[],"sources":["../../../../src/agent/skills/config.ts"],"sourcesContent":["/**\n * Skill Configuration Manager\n * \n * Handles skill-specific configuration and environment variables.\n *\n */\n\nimport { existsSync, readFileSync } from 'fs';\nimport { join } from 'path';\nimport { createLogger } from '../../utils/logger.js';\nimport { writeTextAtomicSync } from '../../infra/write-file-atomic.js';\nimport { hasBinary } from './installer.js';\nimport type { SkillConfig, SkillsConfig, Skill } from './types.js';\n\nconst log = createLogger('SkillConfig');\n\n/**\n * Resolve skill configuration from multiple sources\n * \n * Priority (highest to lowest):\n * 1. Environment variable overrides (XOPC_SKILL_<NAME>_<KEY>)\n * 2. Config file entries\n * 3. Skill defaults\n */\nexport function resolveSkillConfig(\n skill: Skill,\n skillsConfig?: SkillsConfig\n): SkillConfig {\n const config: SkillConfig = {};\n\n // Start with config file entries\n const entryConfig = skillsConfig?.entries?.[skill.name];\n if (entryConfig) {\n config.enabled = entryConfig.enabled;\n config.apiKey = entryConfig.apiKey;\n config.env = entryConfig.env ? { ...entryConfig.env } : undefined;\n config.config = entryConfig.config ? { ...entryConfig.config } : undefined;\n }\n\n // Apply environment variable overrides\n const envPrefix = `XOPC_SKILL_${skill.name.toUpperCase().replace(/-/g, '_')}`;\n \n // Check for enabled override\n const enabledEnv = process.env[`${envPrefix}_ENABLED`];\n if (enabledEnv !== undefined) {\n config.enabled = enabledEnv.toLowerCase() === 'true' || enabledEnv === '1';\n }\n\n // Check for API key override\n const apiKeyEnv = process.env[`${envPrefix}_API_KEY`];\n if (apiKeyEnv) {\n config.apiKey = apiKeyEnv;\n }\n\n // Check for environment variable overrides\n for (const [key, value] of Object.entries(process.env)) {\n if (key.startsWith(`${envPrefix}_ENV_`)) {\n const envKey = key.slice(`${envPrefix}_ENV_`.length);\n if (!config.env) {\n config.env = {};\n }\n config.env[envKey] = value;\n }\n }\n\n return config;\n}\n\n/**\n * Apply environment variable overrides to a skill's environment\n */\nexport function applySkillEnvOverrides(\n skill: Skill,\n baseEnv: Record<string, string> = {},\n skillConfig?: SkillConfig\n): Record<string, string> {\n const env: Record<string, string> = { ...baseEnv };\n\n // Apply config env\n if (skillConfig?.env) {\n for (const [key, value] of Object.entries(skillConfig.env)) {\n env[key] = value;\n }\n }\n\n // Apply environment variable overrides\n const envPrefix = `XOPC_SKILL_${skill.name.toUpperCase().replace(/-/g, '_')}`;\n for (const [key, value] of Object.entries(process.env)) {\n if (key.startsWith(`${envPrefix}_ENV_`)) {\n const envKey = key.slice(`${envPrefix}_ENV_`.length);\n env[envKey] = value;\n }\n }\n\n return env;\n}\n\n/**\n * Get the effective environment for a skill\n */\nexport function getSkillEnvironment(\n skill: Skill,\n skillsConfig?: SkillsConfig\n): Record<string, string> {\n const config = resolveSkillConfig(skill, skillsConfig);\n return applySkillEnvOverrides(skill, process.env as Record<string, string>, config);\n}\n\n/**\n * Skill configuration file manager\n */\nexport interface SkillConfigFile {\n /** Path to the config file */\n configPath: string;\n /** Load configuration */\n load: () => SkillsConfig;\n /** Save configuration */\n save: (config: SkillsConfig) => void;\n /** Get skill-specific config */\n getSkillConfig: (skillName: string) => SkillConfig | undefined;\n /** Update skill configuration */\n updateSkillConfig: (skillName: string, config: Partial<SkillConfig>) => void;\n /** Enable/disable a skill */\n setSkillEnabled: (skillName: string, enabled: boolean) => void;\n /** Set skill API key */\n setSkillApiKey: (skillName: string, apiKey: string) => void;\n}\n\n/**\n * Create a skill configuration file manager\n */\nexport function createSkillConfigManager(configDir: string): SkillConfigFile {\n const configPath = join(configDir, 'skills.json');\n\n function loadConfig(): SkillsConfig {\n if (!existsSync(configPath)) {\n return {};\n }\n\n try {\n const content = readFileSync(configPath, 'utf-8');\n return JSON.parse(content);\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n log.warn({ error: err, errorMessage: em, path: configPath }, `Skills config load failed, using defaults: ${em}`);\n return {};\n }\n }\n\n function saveConfig(config: SkillsConfig): void {\n try {\n writeTextAtomicSync(configPath, JSON.stringify(config, null, 2));\n log.info('Saved skills config');\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n log.error({ error: err, errorMessage: em, path: configPath }, `Failed to save skills config: ${em}`);\n }\n }\n\n return {\n configPath,\n\n load: loadConfig,\n\n save: saveConfig,\n\n getSkillConfig: (skillName: string) => {\n const config = loadConfig();\n return config.entries?.[skillName];\n },\n\n updateSkillConfig: (skillName: string, updates: Partial<SkillConfig>) => {\n const config = loadConfig();\n \n if (!config.entries) {\n config.entries = {};\n }\n\n const existing = config.entries[skillName] || {};\n config.entries[skillName] = {\n ...existing,\n ...updates,\n };\n\n saveConfig(config);\n },\n\n setSkillEnabled: (skillName: string, enabled: boolean) => {\n const config = loadConfig();\n \n if (!config.entries) {\n config.entries = {};\n }\n\n const existing = config.entries[skillName] || {};\n config.entries[skillName] = {\n ...existing,\n enabled,\n };\n\n saveConfig(config);\n log.info({ skillName, enabled }, 'Updated skill enabled state');\n },\n\n setSkillApiKey: (skillName: string, apiKey: string) => {\n const config = loadConfig();\n \n if (!config.entries) {\n config.entries = {};\n }\n\n const existing = config.entries[skillName] || {};\n config.entries[skillName] = {\n ...existing,\n apiKey,\n };\n\n saveConfig(config);\n log.info({ skillName }, 'Updated skill API key');\n },\n };\n}\n\n/**\n * Check if a skill is enabled\n */\nexport function isSkillEnabled(\n skill: Skill,\n skillsConfig?: SkillsConfig\n): boolean {\n const config = resolveSkillConfig(skill, skillsConfig);\n \n // Explicitly disabled\n if (config.enabled === false) {\n return false;\n }\n\n // Check if skill has requirements that are not met\n const requires = skill.metadata.xopc?.requires || skill.metadata.requires;\n if (requires?.bins) {\n for (const bin of requires.bins) {\n if (!hasBinary(bin)) {\n log.debug({ skill: skill.name, bin }, 'Skill requirement not met');\n return false;\n }\n }\n }\n\n return true;\n}\n\n/**\n * Validate skill configuration\n */\nexport function validateSkillConfig(config: SkillsConfig): {\n valid: boolean;\n errors: string[];\n} {\n const errors: string[] = [];\n\n if (config.toolGating !== undefined && typeof config.toolGating !== 'boolean') {\n errors.push('toolGating must be a boolean');\n }\n\n if (\n config.agentWritePolicy !== undefined &&\n config.agentWritePolicy !== 'global' &&\n config.agentWritePolicy !== 'workspace' &&\n config.agentWritePolicy !== 'both'\n ) {\n errors.push('agentWritePolicy must be \"global\", \"workspace\", or \"both\"');\n }\n\n // Validate limits\n const limits = config.limits;\n if (limits) {\n if (limits.maxCandidatesPerRoot !== undefined && limits.maxCandidatesPerRoot < 1) {\n errors.push('limits.maxCandidatesPerRoot must be at least 1');\n }\n if (limits.maxSkillsLoadedPerSource !== undefined && limits.maxSkillsLoadedPerSource < 1) {\n errors.push('limits.maxSkillsLoadedPerSource must be at least 1');\n }\n if (limits.maxSkillsInPrompt !== undefined && limits.maxSkillsInPrompt < 1) {\n errors.push('limits.maxSkillsInPrompt must be at least 1');\n }\n }\n\n // Validate entries\n if (config.entries) {\n for (const [skillName, skillConfig] of Object.entries(config.entries)) {\n if (skillConfig.apiKey && typeof skillConfig.apiKey !== 'string') {\n errors.push(`entries.${skillName}.apiKey must be a string`);\n }\n if (skillConfig.env && typeof skillConfig.env !== 'object') {\n errors.push(`entries.${skillName}.env must be an object`);\n }\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"filesystem-watcher.js","names":[],"sources":["../../../../src/agent/skills/filesystem-watcher.ts"],"sourcesContent":["import path from 'node:path';\n\nimport chokidar, { type FSWatcher } from 'chokidar';\n\nimport { resolveSkillsDir, resolveStateDir } from '../../config/paths.js';\nimport { createLogger } from '../../utils/logger.js';\nimport { createSkillConfigManager } from './config.js';\nimport { isManagedSkillTransientDirName } from './managed-store.js';\nimport { resolveWorkspaceSkillsDir } from './workspace-skills-dir.js';\n\nconst log = createLogger('SkillFilesystemWatcher');\n\nexport interface SkillFilesystemWatcherOptions {\n onChange: (event: { reason: 'watch'; changedPath?: string }) => void;\n}\n\ntype WatchTarget = {\n key: string;\n root: string;\n kind: 'global' | 'workspace';\n watcher: FSWatcher;\n timer?: NodeJS.Timeout;\n pendingPath?: string;\n};\n\nconst DEFAULT_DEBOUNCE_MS = 1000;\nconst WATCH_DEPTH = 8;\nconst IGNORED_SEGMENTS = new Set([\n '.git',\n 'node_modules',\n 'dist',\n 'build',\n '.next',\n '.nuxt',\n '.venv',\n 'venv',\n '__pycache__',\n '.cache',\n '.mypy_cache',\n '.pytest_cache',\n]);\n\nfunction normalizePath(p: string): string {\n return path.resolve(p);\n}\n\nfunction pathSegments(p: string): string[] {\n return p.split(/[\\\\/]+/).filter(Boolean);\n}\n\nfunction hasIgnoredSegment(p: string): boolean {\n return pathSegments(p).some(\n (segment) => IGNORED_SEGMENTS.has(segment) || isManagedSkillTransientDirName(segment),\n );\n}\n\nfunction isSameOrInside(parent: string, child: string): boolean {\n const rel = path.relative(parent, child);\n return rel === '' || (!!rel && !rel.startsWith('..') && !path.isAbsolute(rel));\n}\n\nfunction isWorkspaceSkillPath(workspaceRoot: string, candidate: string): boolean {\n const skillsRoot = resolveWorkspaceSkillsDir(workspaceRoot);\n return (\n candidate === workspaceRoot ||\n isSameOrInside(skillsRoot, candidate) ||\n isSameOrInside(candidate, skillsRoot)\n );\n}\n\nfunction isWorkspaceSkillsRoot(workspaceRoot: string, candidate: string): boolean {\n return candidate === resolveWorkspaceSkillsDir(workspaceRoot);\n}\n\nfunction isSkillMdPath(candidate: string): boolean {\n return path.basename(candidate).toLowerCase() === 'skill.md';\n}\n\nfunction readWatcherConfig(): { enabled: boolean; debounceMs: number } {\n const cfg = createSkillConfigManager(resolveStateDir()).load();\n const rawDebounce = cfg.load?.watchDebounceMs;\n return {\n enabled: cfg.load?.watch !== false,\n debounceMs:\n typeof rawDebounce === 'number' && Number.isFinite(rawDebounce)\n ? Math.max(0, rawDebounce)\n : DEFAULT_DEBOUNCE_MS,\n };\n}\n\nexport class SkillFilesystemWatcher {\n private readonly targets = new Map<string, WatchTarget>();\n private readonly onChange: SkillFilesystemWatcherOptions['onChange'];\n private disposed = false;\n\n constructor(options: SkillFilesystemWatcherOptions) {\n this.onChange = options.onChange;\n this.watchGlobalSkillsDir();\n }\n\n watchGlobalSkillsDir(): void {\n this.watchRoot(resolveSkillsDir(), 'global');\n }\n\n watchWorkspace(workspaceDir: string): void {\n const resolved = normalizePath(workspaceDir);\n if (!resolved) return;\n this.watchRoot(resolved, 'workspace');\n }\n\n refreshPrimaryWorkspace(workspaceDir: string): void {\n this.watchGlobalSkillsDir();\n this.watchWorkspace(workspaceDir);\n }\n\n dispose(): void {\n this.disposed = true;\n for (const target of this.targets.values()) {\n if (target.timer) clearTimeout(target.timer);\n void target.watcher.close().catch((err) => {\n log.warn({ err, root: target.root }, 'Skill watcher close failed');\n });\n }\n this.targets.clear();\n }\n\n private watchRoot(root: string, kind: WatchTarget['kind']): void {\n if (this.disposed) return;\n const { enabled, debounceMs } = readWatcherConfig();\n const resolvedRoot = normalizePath(root);\n const key = `${kind}:${resolvedRoot}`;\n\n if (!enabled) {\n this.unwatch(key);\n return;\n }\n\n const existing = this.targets.get(key);\n if (existing) return;\n\n const ignored = (watchPath: string, stats?: { isDirectory?: () => boolean }) => {\n const candidate = normalizePath(watchPath);\n if (candidate === resolvedRoot) return false;\n if (hasIgnoredSegment(candidate)) return true;\n\n if (kind === 'workspace' && !isWorkspaceSkillPath(resolvedRoot, candidate)) {\n return true;\n }\n\n if (kind === 'workspace' && isWorkspaceSkillsRoot(resolvedRoot, candidate)) return false;\n if (!stats) return false;\n if (stats?.isDirectory?.()) return false;\n return !isSkillMdPath(candidate);\n };\n\n const watcher = chokidar.watch(resolvedRoot, {\n ignoreInitial: true,\n followSymlinks: false,\n depth: WATCH_DEPTH,\n awaitWriteFinish: {\n stabilityThreshold: debounceMs,\n pollInterval: 100,\n },\n ignored,\n });\n\n const target: WatchTarget = { key, root: resolvedRoot, kind, watcher };\n const schedule = (changedPath?: string) => this.scheduleRefresh(target, changedPath);\n\n watcher.on('addDir', schedule);\n watcher.on('add', schedule);\n watcher.on('change', schedule);\n watcher.on('unlink', schedule);\n watcher.on('unlinkDir', schedule);\n watcher.on('error', (err) => {\n log.warn({ err, root: resolvedRoot, kind }, 'Skill watcher error');\n });\n\n this.targets.set(key, target);\n log.info({ root: resolvedRoot, kind }, 'Watching skill filesystem');\n }\n\n private unwatch(key: string): void {\n const target = this.targets.get(key);\n if (!target) return;\n if (target.timer) clearTimeout(target.timer);\n void target.watcher.close().catch((err) => {\n log.warn({ err, root: target.root }, 'Skill watcher close failed');\n });\n this.targets.delete(key);\n }\n\n private scheduleRefresh(target: WatchTarget, changedPath?: string): void {\n const { enabled, debounceMs } = readWatcherConfig();\n if (!enabled) {\n this.unwatch(target.key);\n return;\n }\n\n target.pendingPath = changedPath ?? target.pendingPath;\n if (target.timer) clearTimeout(target.timer);\n target.timer = setTimeout(() => {\n target.timer = undefined;\n const pendingPath = target.pendingPath;\n target.pendingPath = undefined;\n this.onChange({ reason: 'watch', changedPath: pendingPath });\n }, debounceMs);\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"format-skills-prompt.js","names":[],"sources":["../../../../src/agent/skills/format-skills-prompt.ts"],"sourcesContent":["/**\n * Build `<available_skills>` XML block for the system prompt.\n */\n\nimport { isSkillEnabled } from './config.js';\nimport { skillVisibleForRegisteredTools } from './skill-tool-gating.js';\nimport type { Skill } from './types.js';\nimport type { SkillsConfig } from './types.js';\n\nexport interface FormatSkillsForPromptOptions {\n /** Explicit skill names visible in this context. Omitted means all enabled skills; empty means no visible skills. */\n skillAllowlist?: string[];\n /** When set (including empty array), applies tool gating from skill frontmatter. */\n registeredToolNames?: string[];\n}\n\nexport function selectSkillsVisibleInPrompt(\n skills: Skill[],\n skillsConfig?: SkillsConfig,\n options?: FormatSkillsForPromptOptions,\n): Skill[] {\n let list = skills;\n\n if (options?.skillAllowlist !== undefined) {\n if (options.skillAllowlist.length === 0) {\n return [];\n }\n const allow = new Set(options.skillAllowlist.map((s) => s.toLowerCase()));\n list = list.filter((s) => allow.has(s.name.toLowerCase()));\n }\n\n list = list.filter((s) => !s.disableModelInvocation && isSkillEnabled(s, skillsConfig));\n\n if (skillsConfig?.toolGating !== false && options?.registeredToolNames !== undefined) {\n const at = new Set(options.registeredToolNames);\n list = list.filter((s) => skillVisibleForRegisteredTools(s, at));\n }\n\n return list;\n}\n\nfunction escapeXml(str: string): string {\n return str\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&apos;');\n}\n\nfunction formatSkillXmlMetadataOnly(skill: Skill): string {\n const emoji = skill.metadata.emoji || '';\n const emojiStr = emoji ? `${emoji} ` : '';\n\n return [\n ' <skill>',\n ` <name>${escapeXml(skill.name)}</name>`,\n ` <description>${emojiStr}${escapeXml(skill.description)}</description>`,\n ' </skill>',\n ].join('\\n');\n}\n\nexport function formatSkillsForPrompt(\n skills: Skill[],\n skillsConfig?: SkillsConfig,\n options?: FormatSkillsForPromptOptions,\n): string {\n const visibleSkills = selectSkillsVisibleInPrompt(skills, skillsConfig, options);\n if (visibleSkills.length === 0) return '';\n\n const lines = [\n '\\n\\n<available_skills>',\n 'Skills are folders of instructions, scripts, and resources.',\n 'Use skills_list to browse; use skill_view(name) for SKILL.md or skill_view(name, path) for references/, templates/, scripts/, or assets/.',\n '',\n ];\n\n for (const skill of visibleSkills) {\n lines.push(formatSkillXmlMetadataOnly(skill));\n }\n\n lines.push('</available_skills>');\n return lines.join('\\n');\n}\n"],"mappings":";;;;;;AAgBA,SAAgB,4BACd,QACA,cACA,SACS;CACT,IAAI,OAAO;AAEX,KAAI,SAAS,mBAAmB,KAAA,GAAW;AACzC,MAAI,QAAQ,eAAe,WAAW,EACpC,QAAO,EAAE;EAEX,MAAM,QAAQ,IAAI,IAAI,QAAQ,eAAe,KAAK,MAAM,EAAE,aAAa,CAAC,CAAC;AACzE,SAAO,KAAK,QAAQ,MAAM,MAAM,IAAI,EAAE,KAAK,aAAa,CAAC,CAAC;;AAG5D,QAAO,KAAK,QAAQ,MAAM,CAAC,EAAE,0BAA0B,eAAe,GAAG,aAAa,CAAC;AAEvF,KAAI,cAAc,eAAe,SAAS,SAAS,wBAAwB,KAAA,GAAW;EACpF,MAAM,KAAK,IAAI,IAAI,QAAQ,oBAAoB;AAC/C,SAAO,KAAK,QAAQ,MAAM,+BAA+B,GAAG,GAAG,CAAC;;AAGlE,QAAO;;AAGT,SAAS,UAAU,KAAqB;AACtC,QAAO,IACJ,QAAQ,MAAM,QAAQ,CACtB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,SAAS,CACvB,QAAQ,MAAM,SAAS;;AAG5B,SAAS,2BAA2B,OAAsB;CACxD,MAAM,QAAQ,MAAM,SAAS,SAAS;CACtC,MAAM,WAAW,QAAQ,GAAG,MAAM,KAAK;AAEvC,QAAO;EACL;EACA,aAAa,UAAU,MAAM,KAAK,CAAC;EACnC,oBAAoB,WAAW,UAAU,MAAM,YAAY,CAAC;EAC5D;EACD,CAAC,KAAK,KAAK;;AAGd,SAAgB,sBACd,QACA,cACA,SACQ;CACR,MAAM,gBAAgB,4BAA4B,QAAQ,cAAc,QAAQ;AAChF,KAAI,cAAc,WAAW,EAAG,QAAO;CAEvC,MAAM,QAAQ;EACZ;EACA;EACA;EACA;EACD;AAED,MAAK,MAAM,SAAS,cAClB,OAAM,KAAK,2BAA2B,MAAM,CAAC;AAG/C,OAAM,KAAK,sBAAsB;AACjC,QAAO,MAAM,KAAK,KAAK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hub-hash.js","names":[],"sources":["../../../../src/agent/skills/hub-hash.ts"],"sourcesContent":["/**\n * Deterministic content hash for a skill directory (for hub lock / drift detection).\n */\n\nimport { createHash } from 'node:crypto';\nimport { createReadStream } from 'node:fs';\nimport { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';\nimport { join, relative } from 'node:path';\n\nconst SKIP_DIR = new Set(['.git', 'node_modules']);\n\nfunction collectRelativeFiles(root: string): string[] {\n const out: string[] = [];\n\n function walk(dir: string): void {\n let entries;\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const e of entries) {\n const full = join(dir, e.name);\n if (e.isDirectory()) {\n if (SKIP_DIR.has(e.name)) continue;\n walk(full);\n } else if (e.isFile()) {\n out.push(relative(root, full).split('\\\\').join('/'));\n }\n }\n }\n\n walk(root);\n return out.sort();\n}\n\n/** Hash file contents without loading huge trees into one buffer (streaming per file). */\nfunction sha256File(path: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const hash = createHash('sha256');\n const stream = createReadStream(path);\n stream.on('data', (chunk: Buffer | string) => hash.update(chunk));\n stream.on('error', reject);\n stream.on('end', () => resolve(hash.digest('hex')));\n });\n}\n\n/**\n * Stable hash: sorted relative paths, each file hashed; final digest over `path\\\\0hex\\\\n` lines.\n */\nexport async function computeSkillTreeHash(skillDir: string): Promise<string> {\n const root = skillDir;\n if (!existsSync(root) || !statSync(root).isDirectory()) {\n return createHash('sha256').update('').digest('hex');\n }\n\n const rels = collectRelativeFiles(root);\n const aggregate = createHash('sha256');\n for (const rel of rels) {\n const full = join(root, rel);\n const fh = await sha256File(full);\n aggregate.update(`${rel}\\0${fh}\\n`);\n }\n return aggregate.digest('hex');\n}\n\n/** Sync variant for CLI paths that are already small trees. */\nexport function computeSkillTreeHashSync(skillDir: string): string {\n const root = skillDir;\n if (!existsSync(root) || !statSync(root).isDirectory()) {\n return createHash('sha256').update('').digest('hex');\n }\n\n const rels = collectRelativeFiles(root);\n const aggregate = createHash('sha256');\n for (const rel of rels) {\n const full = join(root, rel);\n const buf = readFileSync(full);\n const fh = createHash('sha256').update(buf).digest('hex');\n aggregate.update(`${rel}\\0${fh}\\n`);\n }\n return aggregate.digest('hex');\n}\n"],"mappings":";;;;;;;AASA,MAAM,WAAW,IAAI,IAAI,CAAC,QAAQ,eAAe,CAAC;AAElD,SAAS,qBAAqB,MAAwB;CACpD,MAAM,MAAgB,EAAE;CAExB,SAAS,KAAK,KAAmB;EAC/B,IAAI;AACJ,MAAI;AACF,aAAU,YAAY,KAAK,EAAE,eAAe,MAAM,CAAC;UAC7C;AACN;;AAEF,OAAK,MAAM,KAAK,SAAS;GACvB,MAAM,OAAO,KAAK,KAAK,EAAE,KAAK;AAC9B,OAAI,EAAE,aAAa,EAAE;AACnB,QAAI,SAAS,IAAI,EAAE,KAAK,CAAE;AAC1B,SAAK,KAAK;cACD,EAAE,QAAQ,CACnB,KAAI,KAAK,SAAS,MAAM,KAAK,CAAC,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC;;;AAK1D,MAAK,KAAK;AACV,QAAO,IAAI,MAAM;;;AAInB,SAAS,WAAW,MAA+B;AACjD,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,MAAM,OAAO,WAAW,SAAS;EACjC,MAAM,SAAS,iBAAiB,KAAK;AACrC,SAAO,GAAG,SAAS,UAA2B,KAAK,OAAO,MAAM,CAAC;AACjE,SAAO,GAAG,SAAS,OAAO;AAC1B,SAAO,GAAG,aAAa,QAAQ,KAAK,OAAO,MAAM,CAAC,CAAC;GACnD;;;;;AAMJ,eAAsB,qBAAqB,UAAmC;CAC5E,MAAM,OAAO;AACb,KAAI,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,KAAK,CAAC,aAAa,CACpD,QAAO,WAAW,SAAS,CAAC,OAAO,GAAG,CAAC,OAAO,MAAM;CAGtD,MAAM,OAAO,qBAAqB,KAAK;CACvC,MAAM,YAAY,WAAW,SAAS;AACtC,MAAK,MAAM,OAAO,MAAM;EAEtB,MAAM,KAAK,MAAM,WADJ,KAAK,MAAM,IACQ,CAAC;AACjC,YAAU,OAAO,GAAG,IAAI,IAAI,GAAG,IAAI;;AAErC,QAAO,UAAU,OAAO,MAAM;;;AAIhC,SAAgB,yBAAyB,UAA0B;CACjE,MAAM,OAAO;AACb,KAAI,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,KAAK,CAAC,aAAa,CACpD,QAAO,WAAW,SAAS,CAAC,OAAO,GAAG,CAAC,OAAO,MAAM;CAGtD,MAAM,OAAO,qBAAqB,KAAK;CACvC,MAAM,YAAY,WAAW,SAAS;AACtC,MAAK,MAAM,OAAO,MAAM;EAEtB,MAAM,MAAM,aADC,KAAK,MAAM,IACK,CAAC;EAC9B,MAAM,KAAK,WAAW,SAAS,CAAC,OAAO,IAAI,CAAC,OAAO,MAAM;AACzD,YAAU,OAAO,GAAG,IAAI,IAAI,GAAG,IAAI;;AAErC,QAAO,UAAU,OAAO,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hub-lock.js","names":["p"],"sources":["../../../../src/agent/skills/hub-lock.ts"],"sourcesContent":["/**\n * Skills hub lock (~/.xopc/skills-lock.json): records install source + tree hash per managed skill id.\n */\n\nimport { existsSync, readFileSync } from 'node:fs';\n\nimport { resolveSkillsLockPath } from '../../config/paths.js';\nimport { writeTextAtomicSync } from '../../infra/write-file-atomic.js';\n\nexport type SkillHubKind = 'git' | 'archive';\n\nexport interface SkillHubLockEntry {\n kind: SkillHubKind;\n /** Clone URL, tarball URL, or file path (as given at install time). */\n source: string;\n /** Git branch / tag / ref (optional). */\n ref?: string;\n /** Path inside the cloned repo (POSIX, no leading slash). */\n subpath?: string;\n /** Deterministic tree hash from {@link computeSkillTreeHash}. */\n contentHash: string;\n installedAt: string;\n updatedAt: string;\n}\n\nexport interface SkillsLockFile {\n version: 1;\n entries: Record<string, SkillHubLockEntry>;\n}\n\nfunction emptyLock(): SkillsLockFile {\n return { version: 1, entries: {} };\n}\n\nexport function loadSkillsLock(lockPath = resolveSkillsLockPath()): SkillsLockFile {\n const p = lockPath;\n if (!existsSync(p)) return emptyLock();\n try {\n const raw = readFileSync(p, 'utf-8');\n const j = JSON.parse(raw) as Partial<SkillsLockFile>;\n if (j.version !== 1 || !j.entries || typeof j.entries !== 'object') {\n return emptyLock();\n }\n return { version: 1, entries: { ...j.entries } };\n } catch {\n return emptyLock();\n }\n}\n\nexport function saveSkillsLock(lock: SkillsLockFile, lockPath = resolveSkillsLockPath()): void {\n const p = lockPath;\n writeTextAtomicSync(p, `${JSON.stringify(lock, null, 2)}\\n`);\n}\n\n/** Record or replace hub metadata for a managed skill directory id (folder name under ~/.xopc/skills). */\nexport function recordSkillsHubInstall(\n skillId: string,\n meta: Pick<SkillHubLockEntry, 'kind' | 'source' | 'ref' | 'subpath'>,\n contentHash: string,\n lockPath?: string,\n): void {\n const lock = loadSkillsLock(lockPath);\n const now = new Date().toISOString();\n const prev = lock.entries[skillId];\n lock.entries[skillId] = {\n kind: meta.kind,\n source: meta.source,\n ref: meta.ref,\n subpath: meta.subpath,\n contentHash,\n installedAt: prev?.installedAt ?? now,\n updatedAt: now,\n };\n saveSkillsLock(lock, lockPath);\n}\n\nexport function removeSkillsLockEntry(skillId: string, lockPath?: string): void {\n const lock = loadSkillsLock(lockPath);\n if (!lock.entries[skillId]) return;\n delete lock.entries[skillId];\n saveSkillsLock(lock, lockPath);\n}\n\nexport function getSkillsLockEntry(skillId: string, lockPath?: string): SkillHubLockEntry | undefined {\n return loadSkillsLock(lockPath).entries[skillId];\n}\n"],"mappings":";;;;;;;YAM8D;wBACS;AAuBvE,SAAS,YAA4B;AACnC,QAAO;EAAE,SAAS;EAAG,SAAS,EAAE;EAAE;;AAGpC,SAAgB,eAAe,WAAW,uBAAuB,EAAkB;CACjF,MAAM,IAAI;AACV,KAAI,CAAC,WAAW,EAAE,CAAE,QAAO,WAAW;AACtC,KAAI;EACF,MAAM,MAAM,aAAa,GAAG,QAAQ;EACpC,MAAM,IAAI,KAAK,MAAM,IAAI;AACzB,MAAI,EAAE,YAAY,KAAK,CAAC,EAAE,WAAW,OAAO,EAAE,YAAY,SACxD,QAAO,WAAW;AAEpB,SAAO;GAAE,SAAS;GAAG,SAAS,EAAE,GAAG,EAAE,SAAS;GAAE;SAC1C;AACN,SAAO,WAAW;;;AAItB,SAAgB,eAAe,MAAsB,WAAW,uBAAuB,EAAQ;AAE7F,qBAAoBA,UAAG,GAAG,KAAK,UAAU,MAAM,MAAM,EAAE,CAAC,IAAI;;;AAI9D,SAAgB,uBACd,SACA,MACA,aACA,UACM;CACN,MAAM,OAAO,eAAe,SAAS;CACrC,MAAM,uBAAM,IAAI,MAAM,EAAC,aAAa;CACpC,MAAM,OAAO,KAAK,QAAQ;AAC1B,MAAK,QAAQ,WAAW;EACtB,MAAM,KAAK;EACX,QAAQ,KAAK;EACb,KAAK,KAAK;EACV,SAAS,KAAK;EACd;EACA,aAAa,MAAM,eAAe;EAClC,WAAW;EACZ;AACD,gBAAe,MAAM,SAAS;;AAGhC,SAAgB,sBAAsB,SAAiB,UAAyB;CAC9E,MAAM,OAAO,eAAe,SAAS;AACrC,KAAI,CAAC,KAAK,QAAQ,SAAU;AAC5B,QAAO,KAAK,QAAQ;AACpB,gBAAe,MAAM,SAAS;;AAGhC,SAAgB,mBAAmB,SAAiB,UAAkD;AACpG,QAAO,eAAe,SAAS,CAAC,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hub-pull.js","names":[],"sources":["../../../../src/agent/skills/hub-pull.ts"],"sourcesContent":["/**\n * CLI / hub: install or update skills from git or archive (zip / tar.gz) into ~/.xopc/skills.\n */\n\nimport { execFileSync } from 'node:child_process';\nimport AdmZip from 'adm-zip';\nimport {\n cpSync,\n existsSync,\n mkdtempSync,\n mkdirSync,\n readFileSync,\n readdirSync,\n rmSync,\n statSync,\n writeFileSync,\n} from 'node:fs';\nimport { basename, dirname, join, normalize, resolve, sep } from 'node:path';\nimport { tmpdir } from 'node:os';\nimport { fileURLToPath } from 'node:url';\n\nimport { fetch } from 'undici';\n\nimport { parseFrontmatter } from '../../markdown/frontmatter.js';\nimport { computeSkillTreeHashSync } from './hub-hash.js';\nimport { getSkillsLockEntry, recordSkillsHubInstall } from './hub-lock.js';\nimport type { SkillHubKind } from './hub-lock.js';\nimport {\n installSkillFromZip,\n isIgnorableZipEntry,\n isValidSkillId,\n prepareManagedSkillTempDir,\n promoteManagedSkillTempDir,\n} from './managed-store.js';\nimport { formatScanSummary, scanSkillDirectory } from './scanner.js';\n\nexport interface HubPullOptions {\n skillId?: string;\n ref?: string;\n subpath?: string;\n force?: boolean;\n /** Destination skills root. Defaults to the global managed skills directory. */\n installRoot?: string;\n /** Hub lock path. Defaults to the global skills-lock.json. */\n lockPath?: string;\n /** When true, critical scanner findings fail the install. */\n strictScan?: boolean;\n}\n\nexport interface HubPullResult {\n skillId: string;\n path: string;\n contentHash: string;\n kind: SkillHubKind;\n source: string;\n}\n\ninterface GitHubSkillSource {\n owner: string;\n repo: string;\n cloneUrl: string;\n sourceLabel: string;\n ref?: string;\n subpath?: string;\n treePathParts?: string[];\n}\n\nclass GitHubArchiveDownloadError extends Error {\n constructor(\n message: string,\n readonly status?: number,\n ) {\n super(message);\n this.name = 'GitHubArchiveDownloadError';\n }\n}\n\nfunction githubHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n Accept: 'application/vnd.github+json',\n 'User-Agent': 'xopc-skill-installer',\n };\n const token = process.env.GITHUB_TOKEN || process.env.GH_TOKEN;\n if (token?.trim()) {\n headers.Authorization = `Bearer ${token.trim()}`;\n }\n return headers;\n}\n\nfunction normalizeSourceSubpath(subpath?: string): string | undefined {\n const raw = subpath?.trim().replace(/\\\\/g, '/').replace(/^\\/+/, '');\n if (!raw || raw === '.') return undefined;\n if (/^[a-zA-Z]:/.test(raw)) {\n throw new Error(`Invalid source path: ${subpath}`);\n }\n const normalized = normalize(raw);\n if (normalized === '..' || normalized.startsWith(`..${sep}`) || resolve('/', normalized) === resolve('/')) {\n throw new Error(`Invalid source path: ${subpath}`);\n }\n return normalized.replace(/\\\\/g, '/');\n}\n\nfunction decodeUrlPathPart(value: string): string {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n}\n\nfunction parseSshGitHubSource(\n raw: string,\n optionRef?: string,\n optionSubpath?: string,\n): GitHubSkillSource | undefined {\n const ssh = raw.match(/^git@github\\.com:([^/]+)\\/(.+?)(?:\\.git)?$/i);\n if (!ssh) return undefined;\n const owner = ssh[1];\n const repo = ssh[2].replace(/\\.git$/i, '');\n return {\n owner,\n repo,\n cloneUrl: `https://github.com/${owner}/${repo}.git`,\n sourceLabel: raw,\n ref: optionRef,\n subpath: optionSubpath,\n };\n}\n\nexport function parseGitHubSkillSource(\n raw: string,\n options: Pick<HubPullOptions, 'ref' | 'subpath'> = {},\n): GitHubSkillSource | undefined {\n const optionRef = options.ref?.trim() || undefined;\n const optionSubpath = normalizeSourceSubpath(options.subpath);\n const sshSource = parseSshGitHubSource(raw, optionRef, optionSubpath);\n if (sshSource) return sshSource;\n\n let url: URL;\n try {\n url = new URL(raw);\n } catch {\n return undefined;\n }\n if (url.protocol !== 'https:' && url.protocol !== 'http:') return undefined;\n if (url.hostname.toLowerCase() !== 'github.com') return undefined;\n\n const parts = url.pathname.split('/').filter(Boolean).map(decodeUrlPathPart);\n if (parts.length < 2) return undefined;\n\n const owner = parts[0];\n const repo = parts[1].replace(/\\.git$/i, '');\n if (!owner || !repo) return undefined;\n\n let ref: string | undefined;\n let subpath: string | undefined;\n let treePathParts: string[] | undefined;\n const marker = parts[2]?.toLowerCase();\n if ((marker === 'tree' || marker === 'blob') && parts[3]) {\n treePathParts = parts.slice(3);\n ref = treePathParts[0];\n subpath = normalizeSourceSubpath(treePathParts.slice(1).join('/'));\n } else if (parts.length > 2 && !parts[1].toLowerCase().endsWith('.git')) {\n subpath = normalizeSourceSubpath(parts.slice(2).join('/'));\n }\n\n return {\n owner,\n repo,\n cloneUrl: `https://github.com/${owner}/${repo}.git`,\n sourceLabel: raw,\n ref: optionRef || ref,\n subpath: optionSubpath || subpath,\n treePathParts,\n };\n}\n\nexport function classifyHubSource(raw: string): 'git' | 'archive' {\n const s = raw.trim();\n const lower = s.toLowerCase();\n\n try {\n if (s.startsWith('file:')) {\n const p = fileURLToPath(s);\n const pl = p.toLowerCase();\n if (pl.endsWith('.zip')) return 'archive';\n if (pl.endsWith('.tar.gz') || pl.endsWith('.tgz')) return 'archive';\n return 'git';\n }\n } catch {\n // ignore invalid file URL\n }\n\n if (/^[a-zA-Z]:[\\\\/]/.test(s) || (s.startsWith('/') && !s.startsWith('//'))) {\n if (lower.endsWith('.zip')) return 'archive';\n if (lower.endsWith('.tar.gz') || lower.endsWith('.tgz')) return 'archive';\n return 'git';\n }\n\n try {\n const u = new URL(s);\n const path = u.pathname.toLowerCase();\n if (path.endsWith('.zip')) return 'archive';\n if (path.endsWith('.tar.gz') || path.endsWith('.tgz')) return 'archive';\n } catch {\n // not a URL\n }\n\n if (lower.endsWith('.zip')) return 'archive';\n if (lower.endsWith('.tar.gz') || lower.endsWith('.tgz')) return 'archive';\n return 'git';\n}\n\nexport function findSkillRoot(repoRoot: string, subpath?: string): string {\n const sub = normalizeSourceSubpath(subpath) || '';\n const root = resolve(repoRoot);\n const base = sub ? resolve(root, sub) : root;\n if (base !== root && !base.startsWith(root + sep)) {\n throw new Error(`Invalid source path: ${subpath}`);\n }\n if (!existsSync(base)) {\n throw new Error(`Path not found in source: ${sub || '.'}`);\n }\n if (existsSync(join(base, 'SKILL.md'))) {\n return base;\n }\n const entries = readdirSync(base, { withFileTypes: true }).filter((e) => e.isDirectory());\n if (entries.length === 1) {\n const one = join(base, entries[0].name);\n if (existsSync(join(one, 'SKILL.md'))) {\n return one;\n }\n }\n throw new Error(\n 'Could not locate SKILL.md (expected at root, under --path, or in a single child folder)',\n );\n}\n\nfunction inferSkillIdFromSkillMd(skillRoot: string): string {\n const raw = readFileSync(join(skillRoot, 'SKILL.md'), 'utf-8');\n const { frontmatter } = parseFrontmatter(raw);\n const n = String(frontmatter.name || '').trim();\n if (n && isValidSkillId(n)) {\n return n;\n }\n const dirName = basename(skillRoot);\n if (isValidSkillId(dirName)) {\n return dirName;\n }\n return '';\n}\n\nasync function runScan(dir: string, strict: boolean | undefined): Promise<void> {\n const summary = await scanSkillDirectory(dir);\n const label = basename(dir);\n if (summary.critical > 0 && strict) {\n throw new Error(\n `Security scan reported ${summary.critical} critical finding(s). ${formatScanSummary(summary, label)}`,\n );\n }\n if (summary.critical > 0 || summary.warn > 0) {\n console.warn(formatScanSummary(summary, label));\n }\n}\n\nasync function copySkillTreeToManaged(\n skillRoot: string,\n ctx: HubPullOptions & { kind: SkillHubKind; source: string },\n): Promise<HubPullResult> {\n const targetId = ctx.skillId?.trim() || inferSkillIdFromSkillMd(skillRoot);\n if (!targetId) {\n throw new Error('Could not determine skill id: pass --id <name> (must match managed id rules)');\n }\n if (!isValidSkillId(targetId)) {\n throw new Error(`Invalid skill id \"${targetId}\" (letters, digits, ._-; max 63 chars after first)`);\n }\n\n const { destDir, tempDir } = prepareManagedSkillTempDir(targetId, ctx.installRoot);\n try {\n if (existsSync(destDir) && !ctx.force) {\n throw new Error(`Skill \"${targetId}\" already exists. Use --force to replace.`);\n }\n\n cpSync(skillRoot, tempDir, { recursive: true });\n\n if (!existsSync(join(tempDir, 'SKILL.md'))) {\n throw new Error('Installed tree is missing SKILL.md');\n }\n\n await runScan(tempDir, ctx.strictScan);\n const promoted = promoteManagedSkillTempDir({\n skillId: targetId,\n tempDir,\n overwrite: ctx.force,\n rootDir: ctx.installRoot,\n });\n const hash = computeSkillTreeHashSync(promoted.path);\n recordSkillsHubInstall(\n targetId,\n {\n kind: ctx.kind,\n source: ctx.source,\n ref: ctx.kind === 'git' ? ctx.ref : undefined,\n subpath: ctx.kind === 'git' ? ctx.subpath : undefined,\n },\n hash,\n ctx.lockPath,\n );\n\n return {\n skillId: targetId,\n path: promoted.path,\n contentHash: hash,\n kind: ctx.kind,\n source: ctx.source,\n };\n } catch (err) {\n rmSync(tempDir, { recursive: true, force: true });\n throw err;\n }\n}\n\nasync function pullSkillFromZipBuffer(\n buf: Buffer,\n sourceLabel: string,\n options: HubPullOptions,\n): Promise<HubPullResult> {\n const r = installSkillFromZip(buf, {\n skillId: options.skillId,\n overwrite: options.force ?? false,\n rootDir: options.installRoot,\n });\n const hash = computeSkillTreeHashSync(r.path);\n recordSkillsHubInstall(r.skillId, { kind: 'archive', source: sourceLabel }, hash, options.lockPath);\n await runScan(r.path, options.strictScan);\n return {\n skillId: r.skillId,\n path: r.path,\n contentHash: hash,\n kind: 'archive',\n source: sourceLabel,\n };\n}\n\nasync function pullSkillFromTarFile(\n archivePath: string,\n sourceLabel: string,\n options: HubPullOptions,\n): Promise<HubPullResult> {\n const tmpRoot = mkdtempSync(join(tmpdir(), 'xopc-tar-'));\n try {\n execFileSync('tar', ['-xzf', archivePath, '-C', tmpRoot], {\n stdio: 'pipe',\n encoding: 'utf-8',\n });\n const skillRoot = findSkillRoot(tmpRoot);\n return await copySkillTreeToManaged(skillRoot, { ...options, kind: 'archive', source: sourceLabel });\n } finally {\n rmSync(tmpRoot, { recursive: true, force: true });\n }\n}\n\nfunction isSafeArchivePath(name: string): boolean {\n if (!name) return false;\n const normalized = name.replace(/\\\\/g, '/').replace(/\\/+$/, '');\n if (normalized.startsWith('/') || /^[a-zA-Z]:/.test(normalized)) return false;\n return normalized.split('/').every((part) => part && part !== '..');\n}\n\nfunction extractZipBufferToTempDir(buf: Buffer, tmpRoot: string): void {\n const zip = new AdmZip(buf);\n const rootResolved = resolve(tmpRoot);\n for (const entry of zip.getEntries()) {\n const normalized = entry.entryName.replace(/\\\\/g, '/');\n if (!normalized || isIgnorableZipEntry(normalized)) continue;\n if (!isSafeArchivePath(normalized)) {\n throw new Error(`Unsafe zip entry path: ${entry.entryName}`);\n }\n\n const target = join(tmpRoot, normalized);\n const targetResolved = resolve(target);\n if (targetResolved !== rootResolved && !targetResolved.startsWith(rootResolved + sep)) {\n throw new Error(`Unsafe zip entry path: ${entry.entryName}`);\n }\n\n if (entry.isDirectory) {\n mkdirSync(target, { recursive: true });\n continue;\n }\n mkdirSync(dirname(target), { recursive: true });\n writeFileSync(target, entry.getData());\n }\n}\n\nfunction findExtractedRepositoryRoot(tmpRoot: string): string {\n const entries = readdirSync(tmpRoot, { withFileTypes: true }).filter((entry) => !entry.name.startsWith('.'));\n const dirs = entries.filter((entry) => entry.isDirectory());\n const files = entries.filter((entry) => entry.isFile());\n if (dirs.length === 1 && files.length === 0) {\n return join(tmpRoot, dirs[0].name);\n }\n return tmpRoot;\n}\n\nasync function resolveGitHubDefaultBranch(source: GitHubSkillSource): Promise<string | undefined> {\n const apiUrl = `https://api.github.com/repos/${source.owner}/${source.repo}`;\n try {\n const res = await fetch(apiUrl, { headers: githubHeaders() });\n if (!res.ok) return undefined;\n const body = (await res.json()) as { default_branch?: unknown };\n const branch = typeof body.default_branch === 'string' ? body.default_branch.trim() : '';\n return branch || undefined;\n } catch {\n return undefined;\n }\n}\n\nasync function githubRefExists(\n source: GitHubSkillSource,\n namespace: 'heads' | 'tags',\n ref: string,\n): Promise<boolean> {\n const url = `https://api.github.com/repos/${source.owner}/${source.repo}/git/ref/${namespace}/${encodeURI(ref)}`;\n try {\n const res = await fetch(url, { headers: githubHeaders() });\n return res.ok;\n } catch {\n return false;\n }\n}\n\nasync function resolveGitHubTreeRefAndSubpath(\n source: GitHubSkillSource,\n options: HubPullOptions,\n): Promise<{ ref?: string; subpath?: string }> {\n const optionRef = options.ref?.trim() || undefined;\n const optionSubpath = options.subpath || undefined;\n if (optionRef || !source.treePathParts?.length) {\n return {\n ref: optionRef || source.ref,\n subpath: optionSubpath || source.subpath,\n };\n }\n\n for (let i = source.treePathParts.length; i >= 1; i -= 1) {\n const candidate = source.treePathParts.slice(0, i).join('/');\n if (\n (await githubRefExists(source, 'heads', candidate)) ||\n (await githubRefExists(source, 'tags', candidate))\n ) {\n return {\n ref: candidate,\n subpath: optionSubpath || normalizeSourceSubpath(source.treePathParts.slice(i).join('/')),\n };\n }\n }\n\n return {\n ref: source.ref,\n subpath: optionSubpath || source.subpath,\n };\n}\n\nasync function pullSkillFromGitHubArchive(\n source: GitHubSkillSource,\n options: HubPullOptions,\n): Promise<HubPullResult> {\n const ref = options.ref?.trim() || (await resolveGitHubDefaultBranch(source)) || 'main';\n const zipUrl = `https://codeload.github.com/${source.owner}/${source.repo}/zip/${encodeURI(ref)}`;\n const res = await fetch(zipUrl, { headers: githubHeaders() });\n if (!res.ok) {\n throw new GitHubArchiveDownloadError(`HTTP ${res.status} while fetching GitHub archive`, res.status);\n }\n\n const tmpRoot = mkdtempSync(join(tmpdir(), 'xopc-github-zip-'));\n try {\n const buf = Buffer.from(await res.arrayBuffer());\n extractZipBufferToTempDir(buf, tmpRoot);\n const repoRoot = findExtractedRepositoryRoot(tmpRoot);\n const effectiveOptions = { ...options, ref, subpath: options.subpath || source.subpath };\n const skillRoot = findSkillRoot(repoRoot, effectiveOptions.subpath);\n return await copySkillTreeToManaged(skillRoot, {\n ...effectiveOptions,\n kind: 'git',\n source: source.sourceLabel,\n });\n } finally {\n rmSync(tmpRoot, { recursive: true, force: true });\n }\n}\n\nasync function pullSkillFromGitHubSparse(\n source: GitHubSkillSource,\n options: HubPullOptions,\n): Promise<HubPullResult> {\n const subpath = normalizeSourceSubpath(options.subpath || source.subpath);\n if (!subpath) {\n return pullSkillFromGit(source.cloneUrl, options, source.sourceLabel);\n }\n\n const tmpRoot = mkdtempSync(join(tmpdir(), 'xopc-github-sparse-'));\n const cloneDir = join(tmpRoot, 'clone');\n let clonedRef = options.ref?.trim() || undefined;\n try {\n const args = ['clone', '--depth', '1', '--filter=blob:none', '--sparse'];\n if (clonedRef) {\n args.push('--branch', clonedRef);\n }\n args.push(source.cloneUrl, cloneDir);\n try {\n execFileSync('git', args, { stdio: 'pipe', encoding: 'utf-8' });\n } catch {\n if (!clonedRef) throw new Error(`git clone failed for ${source.cloneUrl}`);\n clonedRef = undefined;\n execFileSync(\n 'git',\n ['clone', '--depth', '1', '--filter=blob:none', '--sparse', source.cloneUrl, cloneDir],\n { stdio: 'pipe', encoding: 'utf-8' },\n );\n }\n\n execFileSync('git', ['-C', cloneDir, 'sparse-checkout', 'set', '--no-cone', subpath], {\n stdio: 'pipe',\n encoding: 'utf-8',\n });\n const effectiveOptions = { ...options, subpath, ref: clonedRef };\n const skillRoot = findSkillRoot(cloneDir, subpath);\n return await copySkillTreeToManaged(skillRoot, {\n ...effectiveOptions,\n kind: 'git',\n source: source.sourceLabel,\n });\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n if (msg.includes('ENOENT') || msg.includes('git clone failed')) {\n throw new Error(\n `Git operation failed (${msg}). Ensure git is installed and the repository URL is valid.`,\n );\n }\n throw e;\n } finally {\n rmSync(tmpRoot, { recursive: true, force: true });\n }\n}\n\nasync function pullSkillFromGitHub(\n source: GitHubSkillSource,\n options: HubPullOptions,\n): Promise<HubPullResult> {\n const resolved = await resolveGitHubTreeRefAndSubpath(source, options);\n const effectiveOptions = {\n ...options,\n ref: resolved.ref,\n subpath: resolved.subpath,\n };\n try {\n return await pullSkillFromGitHubArchive(source, effectiveOptions);\n } catch (archiveErr) {\n try {\n return await pullSkillFromGitHubSparse(source, effectiveOptions);\n } catch (gitErr) {\n const archiveMsg = archiveErr instanceof Error ? archiveErr.message : String(archiveErr);\n const gitMsg = gitErr instanceof Error ? gitErr.message : String(gitErr);\n throw new Error(`GitHub archive install failed (${archiveMsg}); git fallback failed (${gitMsg})`);\n }\n }\n}\n\nasync function pullSkillFromLocalPath(absPath: string, options: HubPullOptions): Promise<HubPullResult> {\n const resolved = resolve(absPath);\n if (!existsSync(resolved)) {\n throw new Error(`Not found: ${resolved}`);\n }\n const st = statSync(resolved);\n if (!st.isFile()) {\n throw new Error('Expected a path to a .zip or .tar.gz file (directories are not supported here)');\n }\n const lower = resolved.toLowerCase();\n if (lower.endsWith('.zip')) {\n const buf = readFileSync(resolved);\n return pullSkillFromZipBuffer(buf, resolved, options);\n }\n if (lower.endsWith('.tar.gz') || lower.endsWith('.tgz')) {\n return pullSkillFromTarFile(resolved, resolved, options);\n }\n throw new Error('Unsupported file type (expected .zip, .tar.gz, or .tgz)');\n}\n\nasync function pullSkillFromGit(\n url: string,\n options: HubPullOptions,\n sourceLabel = url,\n): Promise<HubPullResult> {\n const tmpRoot = mkdtempSync(join(tmpdir(), 'xopc-hub-'));\n const cloneDir = join(tmpRoot, 'clone');\n let clonedRef = options.ref?.trim() || undefined;\n try {\n const args = ['clone', '--depth', '1'];\n if (clonedRef) {\n args.push('--branch', clonedRef);\n }\n args.push(url, cloneDir);\n try {\n execFileSync('git', args, { stdio: 'pipe', encoding: 'utf-8' });\n } catch {\n if (clonedRef) {\n clonedRef = undefined;\n execFileSync('git', ['clone', '--depth', '1', url, cloneDir], {\n stdio: 'pipe',\n encoding: 'utf-8',\n });\n } else {\n throw new Error(`git clone failed for ${url}`);\n }\n }\n const skillRoot = findSkillRoot(cloneDir, options.subpath);\n return await copySkillTreeToManaged(skillRoot, {\n ...options,\n ref: clonedRef,\n kind: 'git',\n source: sourceLabel,\n });\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n if (msg.includes('ENOENT') || msg.includes('git clone failed')) {\n throw new Error(\n `Git operation failed (${msg}). Ensure git is installed and the repository URL is valid.`,\n );\n }\n throw e;\n } finally {\n rmSync(tmpRoot, { recursive: true, force: true });\n }\n}\n\n/**\n * Install or replace a skill from a git URL, http(s) archive URL, file:// URL, or local archive path.\n */\nexport async function pullSkillFromSource(\n source: string,\n options: HubPullOptions = {},\n): Promise<HubPullResult> {\n const trimmed = source.trim();\n if (!trimmed) {\n throw new Error('Missing source URL or path');\n }\n\n if (trimmed.startsWith('file:')) {\n return pullSkillFromLocalPath(fileURLToPath(trimmed), options);\n }\n\n if (!/^[a-zA-Z][a-zA-Z+.-]*:\\/\\//.test(trimmed) && existsSync(trimmed)) {\n return pullSkillFromLocalPath(resolve(trimmed), options);\n }\n\n const githubSource = parseGitHubSkillSource(trimmed, options);\n if (githubSource) {\n return pullSkillFromGitHub(githubSource, options);\n }\n\n const kind = classifyHubSource(trimmed);\n if (kind === 'archive') {\n const res = await fetch(trimmed);\n if (!res.ok) {\n throw new Error(`HTTP ${res.status} while fetching archive`);\n }\n const buf = Buffer.from(await res.arrayBuffer());\n const lower = trimmed.toLowerCase();\n if (lower.endsWith('.tar.gz') || lower.endsWith('.tgz')) {\n const tmpRoot = mkdtempSync(join(tmpdir(), 'xopc-fetch-tar-'));\n const f = join(tmpRoot, 'archive.tgz');\n try {\n mkdirSync(tmpRoot, { recursive: true });\n writeFileSync(f, buf);\n return await pullSkillFromTarFile(f, trimmed, options);\n } finally {\n rmSync(tmpRoot, { recursive: true, force: true });\n }\n }\n return pullSkillFromZipBuffer(buf, trimmed, options);\n }\n\n return pullSkillFromGit(trimmed, options);\n}\n\n/** Re-install from the source recorded in ~/.xopc/skills-lock.json for this skill id. */\nexport async function updateSkillFromLock(\n skillId: string,\n options: Pick<HubPullOptions, 'strictScan'> = {},\n): Promise<HubPullResult> {\n const e = getSkillsLockEntry(skillId);\n if (!e) {\n throw new Error(\n `No hub lock entry for \"${skillId}\". Install with: xopc skills pull <git-or-archive-url>`,\n );\n }\n return pullSkillFromSource(e.source, {\n skillId,\n ref: e.ref,\n subpath: e.subpath,\n force: true,\n strictScan: options.strictScan,\n });\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/agent/skills/index.ts"],"sourcesContent":["import { existsSync, readdirSync, readFileSync } from 'fs';\nimport { basename, dirname, join, relative, sep } from 'path';\nimport { parseFrontmatter } from '../../markdown/frontmatter.js';\nimport { resolveStateDir } from '../../config/paths.js';\nimport { createLogger } from '../../utils/logger.js';\nimport { createSkillConfigManager, isSkillEnabled } from './config.js';\nimport { formatSkillsForPrompt } from './format-skills-prompt.js';\nimport { parseRequiredEnvVarNames } from './required-env-vars.js';\nimport { parseSkillMetadata } from './parse-skill-metadata.js';\nimport { parseSkillToolConditions } from './skill-tool-gating.js';\nimport { resolveWorkspaceSkillsDir } from './workspace-skills-dir.js';\nimport type { Skill, SkillDiagnostic, LoadSkillsResult, SkillConfig, SkillsConfig } from './types.js';\n\nconst log = createLogger('SkillLoader');\n\nconst IGNORE_FILES = ['.gitignore', '.ignore', '.fdignore'];\n\nfunction toPosixPath(p: string): string {\n return p.split(sep).join('/');\n}\n\nfunction prefixIgnorePattern(line: string, prefix: string): string | null {\n const trimmed = line.trim();\n if (!trimmed) return null;\n if (trimmed.startsWith('#') && !trimmed.startsWith('\\\\#')) return null;\n\n let pattern = line;\n let negated = false;\n\n if (pattern.startsWith('!')) {\n negated = true;\n pattern = pattern.slice(1);\n } else if (pattern.startsWith('\\\\!')) {\n pattern = pattern.slice(1);\n }\n\n if (pattern.startsWith('/')) {\n pattern = pattern.slice(1);\n }\n\n const prefixed = prefix ? `${prefix}${pattern}` : pattern;\n return negated ? `!${prefixed}` : prefixed;\n}\n\nfunction loadIgnoreRules(dir: string, rootDir: string): Set<string> {\n const ignoredPaths = new Set<string>();\n const relativeDir = relative(rootDir, dir);\n const prefix = relativeDir ? `${toPosixPath(relativeDir)}/` : '';\n\n for (const filename of IGNORE_FILES) {\n const ignorePath = join(dir, filename);\n if (!existsSync(ignorePath)) continue;\n\n try {\n const content = readFileSync(ignorePath, 'utf-8');\n for (const line of content.split(/\\r?\\n/)) {\n const pattern = prefixIgnorePattern(line, prefix);\n if (pattern) {\n const fullPattern = pattern.startsWith('!')\n ? `!${prefix}${pattern.slice(1)}`\n : `${prefix}${pattern}`;\n ignoredPaths.add(fullPattern);\n }\n }\n } catch {}\n }\n\n return ignoredPaths;\n}\n\nfunction shouldIgnore(path: string, ignoredPaths: Set<string>): boolean {\n for (const pattern of ignoredPaths) {\n if (pattern.startsWith('!')) {\n const positive = pattern.slice(1);\n if (path === positive || path.startsWith(`${positive}/`)) {\n return false;\n }\n } else {\n if (path === pattern || path.startsWith(`${pattern}/`)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction discoverSkills(\n dir: string,\n source: 'builtin' | 'workspace' | 'global',\n): { skills: Skill[]; diagnostics: SkillDiagnostic[] } {\n const skills: Skill[] = [];\n const diagnostics: SkillDiagnostic[] = [];\n if (!existsSync(dir)) return { skills, diagnostics };\n\n function scan(currentDir: string, currentIgnoredPaths: Set<string>) {\n try {\n const entries = readdirSync(currentDir, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.name.startsWith('.') || entry.name === 'node_modules') continue;\n\n const fullPath = join(currentDir, entry.name);\n const relPath = toPosixPath(relative(dir, fullPath));\n\n if (shouldIgnore(relPath, currentIgnoredPaths)) continue;\n\n if (entry.isDirectory()) {\n const skillMdPath = join(fullPath, 'SKILL.md');\n const skillRelPath = `${relPath}/`;\n\n const subIgnoredPaths = new Set(currentIgnoredPaths);\n const subIgnoreFile = join(fullPath, '.gitignore');\n if (existsSync(subIgnoreFile)) {\n const subRules = loadIgnoreRules(fullPath, dir);\n for (const rule of subRules) {\n subIgnoredPaths.add(`${skillRelPath}${rule}`);\n }\n }\n\n if (existsSync(skillMdPath) && !shouldIgnore(skillRelPath, currentIgnoredPaths)) {\n const { skill, diagnostic } = loadSkillFromFile(skillMdPath, source, dir);\n if (diagnostic) diagnostics.push(diagnostic);\n if (skill) skills.push(skill);\n }\n\n scan(fullPath, subIgnoredPaths);\n }\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n diagnostics.push({\n type: 'error',\n message: `Failed to scan skills directory: ${message}`,\n path: currentDir,\n });\n }\n }\n\n scan(dir, loadIgnoreRules(dir, dir));\n return { skills, diagnostics };\n}\n\nfunction deriveDescriptionFromMarkdown(content: string): string | undefined {\n let fallbackHeading = '';\n\n for (const rawLine of content.split(/\\r?\\n/)) {\n const line = rawLine.trim();\n if (!line) continue;\n\n const heading = line.match(/^#{1,6}\\s+(.+)$/);\n if (heading) {\n fallbackHeading ||= heading[1]?.trim() ?? '';\n continue;\n }\n\n return line\n .replace(/\\[([^\\]]+)\\]\\([^)]*\\)/g, '$1')\n .replace(/[*_`~]/g, '')\n .trim() || undefined;\n }\n\n return fallbackHeading || undefined;\n}\n\nfunction loadSkillFromFile(\n filePath: string,\n source: 'builtin' | 'workspace' | 'global',\n rootDir?: string,\n): { skill: Skill | null; diagnostic?: SkillDiagnostic } {\n try {\n const rawContent = readFileSync(filePath, 'utf-8');\n const { frontmatter, content } = parseFrontmatter(rawContent);\n const skillDir = dirname(filePath);\n const parentDirName = basename(skillDir);\n\n const name = (frontmatter.name as string | undefined) || parentDirName;\n const description =\n (frontmatter.description as string | undefined)?.trim() || deriveDescriptionFromMarkdown(content);\n if (!description?.trim()) {\n return {\n skill: null,\n diagnostic: {\n type: 'error',\n skillName: name,\n message: `Skill \"${name}\" is missing a description`,\n path: filePath,\n },\n };\n }\n\n // Derive category from directory path: .xopc/skills/creative/algorithmic-art → 'creative'\n // Only assign a category when the skill is nested at least two levels below rootDir.\n let category: string | undefined;\n if (rootDir) {\n const relDir = toPosixPath(relative(rootDir, skillDir));\n const segments = relDir.split('/');\n if (segments.length > 1) {\n category = segments[0];\n }\n }\n\n const metadata = parseSkillMetadata(frontmatter);\n metadata.name ||= name;\n metadata.description ||= description.trim();\n const toolConditions = parseSkillToolConditions(frontmatter);\n const requiredEnvVarNames = parseRequiredEnvVarNames(frontmatter);\n\n return {\n skill: {\n name,\n description: description.trim(),\n category,\n filePath,\n baseDir: skillDir,\n source,\n disableModelInvocation: frontmatter['disable-model-invocation'] === true,\n metadata,\n toolConditions,\n requiredEnvVarNames: requiredEnvVarNames.length > 0 ? requiredEnvVarNames : undefined,\n content,\n },\n };\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return {\n skill: null,\n diagnostic: {\n type: 'error',\n message: `Failed to load skill file: ${message}`,\n path: filePath,\n },\n };\n }\n}\n\nexport function loadSkills(options: {\n workspaceDir?: string;\n globalDir?: string;\n builtinDir?: string;\n extraDirs?: string[];\n}): LoadSkillsResult {\n const { workspaceDir, builtinDir, extraDirs = [] } = options;\n\n const skillMap = new Map<string, Skill>();\n const diagnostics: SkillDiagnostic[] = [];\n\n if (builtinDir) {\n const discovered = discoverSkills(builtinDir, 'builtin');\n diagnostics.push(...discovered.diagnostics);\n for (const skill of discovered.skills) {\n if (!skillMap.has(skill.name)) {\n skillMap.set(skill.name, skill);\n }\n }\n }\n\n const globalDirs = [\n options.globalDir,\n join(resolveStateDir(), 'skills'),\n ].filter((d): d is string => !!d && existsSync(d));\n\n for (const dir of globalDirs) {\n const discovered = discoverSkills(dir, 'global');\n diagnostics.push(...discovered.diagnostics);\n for (const skill of discovered.skills) {\n // Global must win over bundled when names match (Workspace > Global > Bundled).\n skillMap.set(skill.name, skill);\n }\n }\n\n if (workspaceDir) {\n const discovered = discoverSkills(resolveWorkspaceSkillsDir(workspaceDir), 'workspace');\n diagnostics.push(...discovered.diagnostics);\n const workspaceSkills = discovered.skills;\n for (const skill of workspaceSkills) {\n skillMap.set(skill.name, skill);\n }\n }\n\n // Scan extra directories\n for (const extraDir of extraDirs) {\n if (existsSync(extraDir)) {\n const discovered = discoverSkills(extraDir, 'global');\n diagnostics.push(...discovered.diagnostics);\n for (const skill of discovered.skills) {\n if (!skillMap.has(skill.name)) {\n skillMap.set(skill.name, skill);\n }\n }\n }\n }\n\n const skillsConfig = createSkillConfigManager(resolveStateDir()).load();\n const merged = Array.from(skillMap.values());\n\n return {\n skills: merged,\n prompt: formatSkillsForPrompt(merged, skillsConfig),\n diagnostics,\n };\n}\n\nexport interface SkillLoader {\n init: (workspace: string, builtin: string | null) => LoadSkillsResult;\n load: () => LoadSkillsResult;\n reload: () => LoadSkillsResult;\n /** Recompute `<available_skills>` from disk-loaded skills and current ~/.xopc/skills.json (no filesystem rescan). */\n refreshPromptFromConfig: () => void;\n getSkills: () => Skill[];\n getPrompt: () => string;\n getDiagnostics: () => SkillDiagnostic[];\n getLastLoadTime: () => number;\n getSkillByName: (name: string) => Skill | undefined;\n getEnabledSkills: (config?: Record<string, SkillConfig>) => Skill[];\n}\n\nexport function createSkillLoader(): SkillLoader {\n let cachedSkills: Skill[] = [];\n let cachedPrompt: string = '';\n let cachedDiagnostics: SkillDiagnostic[] = [];\n let lastLoadTime = 0;\n let workspaceDir: string | undefined;\n let builtinDir: string | undefined;\n let extraDirs: string[] = [];\n\n function updateCache(result: LoadSkillsResult): LoadSkillsResult {\n cachedSkills = result.skills;\n cachedPrompt = result.prompt;\n cachedDiagnostics = result.diagnostics;\n lastLoadTime = Date.now();\n return result;\n }\n\n return {\n init: (workspace: string, builtin: string | null) => {\n workspaceDir = workspace;\n builtinDir = builtin || undefined;\n return updateCache(loadSkills({ workspaceDir, builtinDir, extraDirs }));\n },\n \n load: () => {\n return updateCache(loadSkills({ workspaceDir, builtinDir, extraDirs }));\n },\n \n reload: () => {\n log.info('Reloading skills');\n return updateCache(loadSkills({ workspaceDir, builtinDir, extraDirs }));\n },\n\n refreshPromptFromConfig: () => {\n const skillsConfig = createSkillConfigManager(resolveStateDir()).load();\n cachedPrompt = formatSkillsForPrompt(cachedSkills, skillsConfig);\n lastLoadTime = Date.now();\n },\n\n getSkills: () => cachedSkills,\n getPrompt: () => cachedPrompt,\n getDiagnostics: () => cachedDiagnostics,\n getLastLoadTime: () => lastLoadTime,\n \n getSkillByName: (name: string) => {\n return cachedSkills.find(s => s.name === name);\n },\n \n getEnabledSkills: (entries?: Record<string, SkillConfig>) => {\n const skillsConfig: SkillsConfig =\n entries !== undefined ? { entries } : createSkillConfigManager(resolveStateDir()).load();\n return cachedSkills.filter(\n (skill) => !skill.disableModelInvocation && isSkillEnabled(skill, skillsConfig),\n );\n },\n };\n}\n\n// `SkillManager` + sibling types removed from this barrel — `skill-manager.ts`\n// imports `createSkillLoader` from THIS file, so re-exporting it back here\n// formed a circular cycle. External callers should import directly from\n// `./skill-manager.js`.\n\n// Re-export types for convenience\nexport type { \n Skill, \n SkillMetadata, \n SkillConfig,\n SkillInstallSpec,\n SkillInstallResult,\n SkillInstallRequest,\n LoadSkillsResult,\n // Note: SkillDiagnostic is re-exported from skill-manager.ts above\n SkillSnapshot,\n} from './types.js';\n\n// Re-export installer\nexport { \n installSkill, \n findInstallSpec,\n hasBinary,\n getDefaultInstallerPreferences,\n type InstallerPreferences,\n type InstallContext,\n} from './installer.js';\n\n// Re-export scanner\nexport {\n scanSkillDirectory,\n formatScanSummary,\n collectSkillInstallWarnings,\n type ScanSummary,\n type SecurityFinding,\n type Severity,\n} from './scanner.js';\n\n// Re-export config manager\nexport {\n resolveSkillConfig,\n applySkillEnvOverrides,\n getSkillEnvironment,\n createSkillConfigManager,\n isSkillEnabled,\n validateSkillConfig,\n type SkillConfigFile,\n} from './config.js';\n\n// `watcher.ts` re-exports removed — it imports `SkillLoader` from THIS file, so\n// re-exporting back here formed a circular cycle. External callers should\n// import directly from `./watcher.js`.\n\n// Re-export test framework\nexport {\n SkillTestFramework,\n SkillTestRunner,\n formatTestResults,\n formatTestResultsJson,\n formatTestResultsTap,\n type TestResult,\n type TestStatus,\n type SkillTestReport,\n type TestOptions,\n type TestRunnerOptions,\n} from './test-framework.js';\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-target.js","names":[],"sources":["../../../../src/agent/skills/install-target.ts"],"sourcesContent":["export type SkillInstallTarget = 'workspace' | 'global';\n\nexport function normalizeSkillInstallTarget(value: unknown): SkillInstallTarget {\n return value === 'global' ? 'global' : 'workspace';\n}\n\nexport function isSkillInstallTarget(value: unknown): value is SkillInstallTarget {\n return value === 'workspace' || value === 'global';\n}\n"],"mappings":";AAEA,SAAgB,4BAA4B,OAAoC;AAC9E,QAAO,UAAU,WAAW,WAAW;;AAGzC,SAAgB,qBAAqB,OAA6C;AAChF,QAAO,UAAU,eAAe,UAAU"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"installer.js","names":[],"sources":["../../../../src/agent/skills/installer.ts"],"sourcesContent":["/**\n * Skill Installer\n * \n * Handles installation of skill dependencies via various package managers.\n *\n */\n\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport { accessSync, constants, existsSync } from 'fs';\nimport { delimiter, join } from 'path';\nimport { createLogger } from '../../utils/logger.js';\nimport type { SkillEntry, SkillInstallResult, SkillInstallSpec } from './types.js';\n\nconst execAsync = promisify(exec);\n\nconst log = createLogger('SkillInstaller');\n\nexport interface InstallerPreferences {\n preferBrew: boolean;\n nodeManager: 'pnpm' | 'npm' | 'yarn' | 'bun';\n}\n\nexport interface InstallContext {\n workspaceDir: string;\n skillEntry: SkillEntry;\n installSpec: SkillInstallSpec;\n timeoutMs: number;\n preferences: InstallerPreferences;\n}\n\n/**\n * Check if a binary exists\n */\nexport function hasBinary(name: string): boolean {\n if (!name || name.includes('/') || name.includes('\\\\')) {\n return false;\n }\n\n const pathEntries = (process.env.PATH || '').split(delimiter).filter(Boolean);\n const extensions = process.platform === 'win32'\n ? (process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM').split(';').filter(Boolean)\n : [''];\n\n for (const dir of pathEntries) {\n for (const ext of extensions) {\n const candidate = join(dir, `${name}${ext}`);\n try {\n accessSync(candidate, constants.X_OK);\n return true;\n } catch {\n // Continue searching PATH.\n }\n }\n }\n\n return false;\n}\n\n/**\n * Resolve brew executable path\n */\nexport function resolveBrewExecutable(): string | undefined {\n const candidates = [\n '/opt/homebrew/bin/brew',\n '/usr/local/bin/brew',\n ];\n \n for (const candidate of candidates) {\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n \n return undefined;\n}\n\n/**\n * Build install command for Node.js packages\n */\nfunction buildNodeInstallCommand(packageName: string, manager: InstallerPreferences['nodeManager']): string[] {\n switch (manager) {\n case 'pnpm':\n return ['pnpm', 'add', '-g', '--ignore-scripts', packageName];\n case 'yarn':\n return ['yarn', 'global', 'add', '--ignore-scripts', packageName];\n case 'bun':\n return ['bun', 'add', '-g', '--ignore-scripts', packageName];\n default:\n return ['npm', 'install', '-g', '--ignore-scripts', packageName];\n }\n}\n\n/**\n * Build install command from spec\n */\nfunction buildInstallCommand(spec: SkillInstallSpec, prefs: InstallerPreferences): {\n argv: string[] | null;\n error?: string;\n} {\n switch (spec.kind) {\n case 'brew': {\n if (!spec.formula) {\n return { argv: null, error: 'Missing brew formula' };\n }\n return { argv: ['brew', 'install', spec.formula] };\n }\n \n case 'pnpm':\n case 'npm':\n case 'yarn':\n case 'bun': {\n if (!spec.package) {\n return { argv: null, error: 'Missing package name' };\n }\n return {\n argv: buildNodeInstallCommand(spec.package, prefs.nodeManager),\n };\n }\n \n case 'go': {\n if (!spec.module) {\n return { argv: null, error: 'Missing go module' };\n }\n return { argv: ['go', 'install', spec.module] };\n }\n \n case 'uv': {\n if (!spec.package) {\n return { argv: null, error: 'Missing uv package' };\n }\n return { argv: ['uv', 'tool', 'install', spec.package] };\n }\n \n case 'download': {\n return { argv: null, error: 'Download install handled separately' };\n }\n \n default: {\n const _exhaustive: never = spec.kind;\n return { argv: null, error: `Unsupported installer: ${spec.kind}` };\n }\n }\n}\n\n/**\n * Run command with timeout\n */\nasync function runCommandWithTimeout(\n argv: string[],\n timeoutMs: number,\n env?: NodeJS.ProcessEnv\n): Promise<{ code: number | null; stdout: string; stderr: string }> {\n const [cmd, ...args] = argv;\n \n try {\n const { stdout, stderr } = await execAsync(`${cmd} ${args.join(' ')}`, {\n timeout: timeoutMs,\n env,\n maxBuffer: 10 * 1024 * 1024, // 10MB\n });\n \n return {\n code: 0,\n stdout: stdout.toString(),\n stderr: stderr.toString(),\n };\n } catch (err: unknown) {\n if (err instanceof Error) {\n const execError = err as Error & { code?: number; stdout?: string; stderr?: string };\n return {\n code: execError.code ?? null,\n stdout: execError.stdout?.toString() ?? '',\n stderr: execError.stderr?.toString() ?? '',\n };\n }\n \n return {\n code: null,\n stdout: '',\n stderr: err instanceof Error ? err.message : String(err),\n };\n }\n}\n\n/**\n * Ensure uv is installed\n */\nasync function ensureUvInstalled(timeoutMs: number): Promise<SkillInstallResult | undefined> {\n if (hasBinary('uv')) {\n return undefined;\n }\n \n // Try to install via brew\n const brewExe = resolveBrewExecutable();\n if (!brewExe) {\n return {\n ok: false,\n message: 'uv not installed — install manually: https://docs.astral.sh/uv/getting-started/installation/',\n stdout: '',\n stderr: '',\n code: null,\n };\n }\n \n const result = await runCommandWithTimeout([brewExe, 'install', 'uv'], timeoutMs);\n if (result.code === 0) {\n return undefined;\n }\n \n return {\n ok: false,\n message: 'Failed to install uv (brew)',\n stdout: result.stdout,\n stderr: result.stderr,\n code: result.code,\n };\n}\n\n/**\n * Ensure Go is installed\n */\nasync function ensureGoInstalled(timeoutMs: number): Promise<SkillInstallResult | undefined> {\n if (hasBinary('go')) {\n return undefined;\n }\n \n const brewExe = resolveBrewExecutable();\n if (brewExe) {\n const result = await runCommandWithTimeout([brewExe, 'install', 'go'], timeoutMs);\n if (result.code === 0) {\n return undefined;\n }\n \n return {\n ok: false,\n message: 'Failed to install go (brew)',\n stdout: result.stdout,\n stderr: result.stderr,\n code: result.code,\n };\n }\n \n // Try apt-get on Linux\n if (hasBinary('apt-get')) {\n const isRoot = process.getuid?.() === 0;\n const aptCmd = isRoot \n ? ['apt-get', 'install', '-y', 'golang-go']\n : ['sudo', 'apt-get', 'install', '-y', 'golang-go'];\n \n // Update package index first\n if (!isRoot) {\n await runCommandWithTimeout(['sudo', 'apt-get', 'update', '-qq'], Math.min(timeoutMs, 30000));\n }\n \n const result = await runCommandWithTimeout(aptCmd, timeoutMs);\n if (result.code === 0) {\n return undefined;\n }\n \n return {\n ok: false,\n message: 'go not installed — automatic install via apt failed. Install manually: https://go.dev/doc/install',\n stdout: result.stdout,\n stderr: result.stderr,\n code: result.code,\n };\n }\n \n return {\n ok: false,\n message: 'go not installed — install manually: https://go.dev/doc/install',\n stdout: '',\n stderr: '',\n code: null,\n };\n}\n\n/**\n * Create install failure result\n */\nfunction createInstallFailure(params: {\n message: string;\n stdout?: string;\n stderr?: string;\n code?: number | null;\n}): SkillInstallResult {\n return {\n ok: false,\n message: params.message,\n stdout: params.stdout?.trim() ?? '',\n stderr: params.stderr?.trim() ?? '',\n code: params.code ?? null,\n };\n}\n\n/**\n * Create install success result\n */\nfunction createInstallSuccess(result: { code: number | null; stdout: string; stderr: string }): SkillInstallResult {\n return {\n ok: true,\n message: 'Installed',\n stdout: result.stdout.trim(),\n stderr: result.stderr.trim(),\n code: result.code,\n };\n}\n\n/**\n * Find install spec by ID\n */\nexport function findInstallSpec(entry: SkillEntry, installId: string): SkillInstallSpec | undefined {\n const specs = entry.metadata.install ?? [];\n \n for (const [index, spec] of specs.entries()) {\n const id = spec.id ?? `${spec.kind}-${index}`;\n if (id === installId) {\n return spec;\n }\n }\n \n return undefined;\n}\n\n/**\n * Install a skill dependency\n */\nexport async function installSkill(ctx: InstallContext): Promise<SkillInstallResult> {\n const { installSpec, timeoutMs, preferences } = ctx;\n \n log.info({ skill: ctx.skillEntry.skill.name, kind: installSpec.kind }, 'Installing skill dependency');\n \n // Handle download installer separately\n if (installSpec.kind === 'download') {\n return createInstallFailure({\n message: 'Download installer not yet implemented',\n });\n }\n \n // Check and install prerequisites\n if (installSpec.kind === 'uv') {\n const uvFailure = await ensureUvInstalled(timeoutMs);\n if (uvFailure) {\n return uvFailure;\n }\n }\n \n if (installSpec.kind === 'go') {\n const goFailure = await ensureGoInstalled(timeoutMs);\n if (goFailure) {\n return goFailure;\n }\n }\n \n // Build install command\n const command = buildInstallCommand(installSpec, preferences);\n if (command.error) {\n return createInstallFailure({\n message: command.error,\n });\n }\n \n if (!command.argv) {\n return createInstallFailure({\n message: 'Invalid install command',\n });\n }\n \n // Resolve brew executable\n let argv = [...command.argv];\n if (installSpec.kind === 'brew') {\n const brewExe = resolveBrewExecutable();\n if (!brewExe) {\n const hint = process.platform === 'linux'\n ? 'Homebrew is not installed. Install it from https://brew.sh or use your system package manager.'\n : 'Homebrew is not installed. Install it from https://brew.sh';\n \n return createInstallFailure({\n message: `brew not installed — ${hint}`,\n });\n }\n argv[0] = brewExe;\n }\n \n // Set up environment for go installations\n let env: NodeJS.ProcessEnv | undefined;\n if (installSpec.kind === 'go') {\n const brewExe = resolveBrewExecutable();\n if (brewExe) {\n try {\n const { stdout } = await execAsync(`${brewExe} --prefix`);\n const prefix = stdout.trim();\n if (prefix) {\n env = { ...process.env, GOBIN: join(prefix, 'bin') };\n }\n } catch {\n // Use default GOBIN\n }\n }\n }\n \n // Execute install command\n const result = await runCommandWithTimeout(argv, timeoutMs, env);\n \n if (result.code === 0) {\n log.info({ skill: ctx.skillEntry.skill.name }, 'Skill dependency installed successfully');\n return createInstallSuccess(result);\n }\n \n log.warn({ \n skill: ctx.skillEntry.skill.name, \n stderr: result.stderr \n }, 'Skill dependency installation failed');\n \n return createInstallFailure({\n message: result.stderr || `Installation failed with exit code ${result.code}`,\n stdout: result.stdout,\n stderr: result.stderr,\n code: result.code,\n });\n}\n\n/**\n * Get default installer preferences from config\n */\nexport function getDefaultInstallerPreferences(): InstallerPreferences {\n return {\n preferBrew: true,\n nodeManager: 'pnpm', // Default to pnpm as per project guidelines\n };\n}\n"],"mappings":";;;;;;;;;;;;;aAWqD;AAGrD,MAAM,YAAY,UAAU,KAAK;AAEjC,MAAM,MAAM,aAAa,iBAAiB;;;;AAkB1C,SAAgB,UAAU,MAAuB;AAC/C,KAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,KAAK,CACpD,QAAO;CAGT,MAAM,eAAe,QAAQ,IAAI,QAAQ,IAAI,MAAM,UAAU,CAAC,OAAO,QAAQ;CAC7E,MAAM,aAAa,QAAQ,aAAa,WACnC,QAAQ,IAAI,WAAW,uBAAuB,MAAM,IAAI,CAAC,OAAO,QAAQ,GACzE,CAAC,GAAG;AAER,MAAK,MAAM,OAAO,YAChB,MAAK,MAAM,OAAO,YAAY;EAC5B,MAAM,YAAY,KAAK,KAAK,GAAG,OAAO,MAAM;AAC5C,MAAI;AACF,cAAW,WAAW,UAAU,KAAK;AACrC,UAAO;UACD;;AAMZ,QAAO;;;;;AAMT,SAAgB,wBAA4C;AAM1D,MAAK,MAAM,aAAa,CAJtB,0BACA,sBAGgC,CAChC,KAAI,WAAW,UAAU,CACvB,QAAO;;;;;AAUb,SAAS,wBAAwB,aAAqB,SAAwD;AAC5G,SAAQ,SAAR;EACE,KAAK,OACH,QAAO;GAAC;GAAQ;GAAO;GAAM;GAAoB;GAAY;EAC/D,KAAK,OACH,QAAO;GAAC;GAAQ;GAAU;GAAO;GAAoB;GAAY;EACnE,KAAK,MACH,QAAO;GAAC;GAAO;GAAO;GAAM;GAAoB;GAAY;EAC9D,QACE,QAAO;GAAC;GAAO;GAAW;GAAM;GAAoB;GAAY;;;;;;AAOtE,SAAS,oBAAoB,MAAwB,OAGnD;AACA,SAAQ,KAAK,MAAb;EACE,KAAK;AACH,OAAI,CAAC,KAAK,QACR,QAAO;IAAE,MAAM;IAAM,OAAO;IAAwB;AAEtD,UAAO,EAAE,MAAM;IAAC;IAAQ;IAAW,KAAK;IAAQ,EAAE;EAGpD,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;AACH,OAAI,CAAC,KAAK,QACR,QAAO;IAAE,MAAM;IAAM,OAAO;IAAwB;AAEtD,UAAO,EACL,MAAM,wBAAwB,KAAK,SAAS,MAAM,YAAY,EAC/D;EAGH,KAAK;AACH,OAAI,CAAC,KAAK,OACR,QAAO;IAAE,MAAM;IAAM,OAAO;IAAqB;AAEnD,UAAO,EAAE,MAAM;IAAC;IAAM;IAAW,KAAK;IAAO,EAAE;EAGjD,KAAK;AACH,OAAI,CAAC,KAAK,QACR,QAAO;IAAE,MAAM;IAAM,OAAO;IAAsB;AAEpD,UAAO,EAAE,MAAM;IAAC;IAAM;IAAQ;IAAW,KAAK;IAAQ,EAAE;EAG1D,KAAK,WACH,QAAO;GAAE,MAAM;GAAM,OAAO;GAAuC;EAGrE;AAC6B,QAAK;AAChC,UAAO;IAAE,MAAM;IAAM,OAAO,0BAA0B,KAAK;IAAQ;;;;;;AAQzE,eAAe,sBACb,MACA,WACA,KACkE;CAClE,MAAM,CAAC,KAAK,GAAG,QAAQ;AAEvB,KAAI;EACF,MAAM,EAAE,QAAQ,WAAW,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI;GACrE,SAAS;GACT;GACA,WAAW,KAAK,OAAO;GACxB,CAAC;AAEF,SAAO;GACL,MAAM;GACN,QAAQ,OAAO,UAAU;GACzB,QAAQ,OAAO,UAAU;GAC1B;UACM,KAAc;AACrB,MAAI,eAAe,OAAO;GACxB,MAAM,YAAY;AAClB,UAAO;IACL,MAAM,UAAU,QAAQ;IACxB,QAAQ,UAAU,QAAQ,UAAU,IAAI;IACxC,QAAQ,UAAU,QAAQ,UAAU,IAAI;IACzC;;AAGH,SAAO;GACL,MAAM;GACN,QAAQ;GACR,QAAQ,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;GACzD;;;;;;AAOL,eAAe,kBAAkB,WAA4D;AAC3F,KAAI,UAAU,KAAK,CACjB;CAIF,MAAM,UAAU,uBAAuB;AACvC,KAAI,CAAC,QACH,QAAO;EACL,IAAI;EACJ,SAAS;EACT,QAAQ;EACR,QAAQ;EACR,MAAM;EACP;CAGH,MAAM,SAAS,MAAM,sBAAsB;EAAC;EAAS;EAAW;EAAK,EAAE,UAAU;AACjF,KAAI,OAAO,SAAS,EAClB;AAGF,QAAO;EACL,IAAI;EACJ,SAAS;EACT,QAAQ,OAAO;EACf,QAAQ,OAAO;EACf,MAAM,OAAO;EACd;;;;;AAMH,eAAe,kBAAkB,WAA4D;AAC3F,KAAI,UAAU,KAAK,CACjB;CAGF,MAAM,UAAU,uBAAuB;AACvC,KAAI,SAAS;EACX,MAAM,SAAS,MAAM,sBAAsB;GAAC;GAAS;GAAW;GAAK,EAAE,UAAU;AACjF,MAAI,OAAO,SAAS,EAClB;AAGF,SAAO;GACL,IAAI;GACJ,SAAS;GACT,QAAQ,OAAO;GACf,QAAQ,OAAO;GACf,MAAM,OAAO;GACd;;AAIH,KAAI,UAAU,UAAU,EAAE;EACxB,MAAM,SAAS,QAAQ,UAAU,KAAK;EACtC,MAAM,SAAS,SACX;GAAC;GAAW;GAAW;GAAM;GAAY,GACzC;GAAC;GAAQ;GAAW;GAAW;GAAM;GAAY;AAGrD,MAAI,CAAC,OACH,OAAM,sBAAsB;GAAC;GAAQ;GAAW;GAAU;GAAM,EAAE,KAAK,IAAI,WAAW,IAAM,CAAC;EAG/F,MAAM,SAAS,MAAM,sBAAsB,QAAQ,UAAU;AAC7D,MAAI,OAAO,SAAS,EAClB;AAGF,SAAO;GACL,IAAI;GACJ,SAAS;GACT,QAAQ,OAAO;GACf,QAAQ,OAAO;GACf,MAAM,OAAO;GACd;;AAGH,QAAO;EACL,IAAI;EACJ,SAAS;EACT,QAAQ;EACR,QAAQ;EACR,MAAM;EACP;;;;;AAMH,SAAS,qBAAqB,QAKP;AACrB,QAAO;EACL,IAAI;EACJ,SAAS,OAAO;EAChB,QAAQ,OAAO,QAAQ,MAAM,IAAI;EACjC,QAAQ,OAAO,QAAQ,MAAM,IAAI;EACjC,MAAM,OAAO,QAAQ;EACtB;;;;;AAMH,SAAS,qBAAqB,QAAqF;AACjH,QAAO;EACL,IAAI;EACJ,SAAS;EACT,QAAQ,OAAO,OAAO,MAAM;EAC5B,QAAQ,OAAO,OAAO,MAAM;EAC5B,MAAM,OAAO;EACd;;;;;AAMH,SAAgB,gBAAgB,OAAmB,WAAiD;CAClG,MAAM,QAAQ,MAAM,SAAS,WAAW,EAAE;AAE1C,MAAK,MAAM,CAAC,OAAO,SAAS,MAAM,SAAS,CAEzC,MADW,KAAK,MAAM,GAAG,KAAK,KAAK,GAAG,aAC3B,UACT,QAAO;;;;;AAUb,eAAsB,aAAa,KAAkD;CACnF,MAAM,EAAE,aAAa,WAAW,gBAAgB;AAEhD,KAAI,KAAK;EAAE,OAAO,IAAI,WAAW,MAAM;EAAM,MAAM,YAAY;EAAM,EAAE,8BAA8B;AAGrG,KAAI,YAAY,SAAS,WACvB,QAAO,qBAAqB,EAC1B,SAAS,0CACV,CAAC;AAIJ,KAAI,YAAY,SAAS,MAAM;EAC7B,MAAM,YAAY,MAAM,kBAAkB,UAAU;AACpD,MAAI,UACF,QAAO;;AAIX,KAAI,YAAY,SAAS,MAAM;EAC7B,MAAM,YAAY,MAAM,kBAAkB,UAAU;AACpD,MAAI,UACF,QAAO;;CAKX,MAAM,UAAU,oBAAoB,aAAa,YAAY;AAC7D,KAAI,QAAQ,MACV,QAAO,qBAAqB,EAC1B,SAAS,QAAQ,OAClB,CAAC;AAGJ,KAAI,CAAC,QAAQ,KACX,QAAO,qBAAqB,EAC1B,SAAS,2BACV,CAAC;CAIJ,IAAI,OAAO,CAAC,GAAG,QAAQ,KAAK;AAC5B,KAAI,YAAY,SAAS,QAAQ;EAC/B,MAAM,UAAU,uBAAuB;AACvC,MAAI,CAAC,QAKH,QAAO,qBAAqB,EAC1B,SAAS,wBALE,QAAQ,aAAa,UAC9B,mGACA,gEAIH,CAAC;AAEJ,OAAK,KAAK;;CAIZ,IAAI;AACJ,KAAI,YAAY,SAAS,MAAM;EAC7B,MAAM,UAAU,uBAAuB;AACvC,MAAI,QACF,KAAI;GACF,MAAM,EAAE,WAAW,MAAM,UAAU,GAAG,QAAQ,WAAW;GACzD,MAAM,SAAS,OAAO,MAAM;AAC5B,OAAI,OACF,OAAM;IAAE,GAAG,QAAQ;IAAK,OAAO,KAAK,QAAQ,MAAM;IAAE;UAEhD;;CAOZ,MAAM,SAAS,MAAM,sBAAsB,MAAM,WAAW,IAAI;AAEhE,KAAI,OAAO,SAAS,GAAG;AACrB,MAAI,KAAK,EAAE,OAAO,IAAI,WAAW,MAAM,MAAM,EAAE,0CAA0C;AACzF,SAAO,qBAAqB,OAAO;;AAGrC,KAAI,KAAK;EACP,OAAO,IAAI,WAAW,MAAM;EAC5B,QAAQ,OAAO;EAChB,EAAE,uCAAuC;AAE1C,QAAO,qBAAqB;EAC1B,SAAS,OAAO,UAAU,sCAAsC,OAAO;EACvE,QAAQ,OAAO;EACf,QAAQ,OAAO;EACf,MAAM,OAAO;EACd,CAAC;;;;;AAMJ,SAAgB,iCAAuD;AACrE,QAAO;EACL,YAAY;EACZ,aAAa;EACd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"managed-store.js","names":[],"sources":["../../../../src/agent/skills/managed-store.ts"],"sourcesContent":["/**\n * Managed skills live under ~/.xopc/skills (see resolveSkillsDir).\n * Install/update/delete via zip or folder operations; used by gateway API.\n */\n\nimport AdmZip from 'adm-zip';\nimport {\n existsSync,\n mkdirSync,\n renameSync,\n readdirSync,\n readFileSync,\n rmSync,\n writeFileSync,\n} from 'node:fs';\nimport { dirname, join, resolve, sep } from 'node:path';\nimport { resolveSkillsDir } from '../../config/paths.js';\nimport { parseFrontmatter } from '../../markdown/frontmatter.js';\nimport { loadSkillsLock, type SkillHubLockEntry } from './hub-lock.js';\n\nexport const MAX_SKILL_ZIP_BYTES = 15 * 1024 * 1024;\n\nconst SKILL_ID_RE = /^[a-zA-Z0-9]([a-zA-Z0-9._-]{0,62})$/;\nconst TEMP_PREFIX = '.tmp-';\nconst TRASH_PREFIX = '.trash-';\n\nexport function isValidSkillId(id: string): boolean {\n return SKILL_ID_RE.test(id);\n}\n\nexport function isManagedSkillTransientDirName(name: string): boolean {\n return name.startsWith(TEMP_PREFIX) || name.startsWith(TRASH_PREFIX);\n}\n\n/** True when `baseDir` is the global managed skills root or a direct child folder. */\nexport function isUnderManagedSkillsDir(baseDir: string): boolean {\n const b = resolve(baseDir);\n const r = resolve(resolveSkillsDir());\n return b === r || b.startsWith(r + sep);\n}\n\nfunction isSafeZipPath(name: string): boolean {\n if (!name) return false;\n const normalized = name.replace(/\\\\/g, '/');\n if (normalized.includes('..')) return false;\n if (normalized.startsWith('/') || /^\\w:/.test(normalized)) return false;\n for (const p of normalized.split('/')) {\n if (p === '..') return false;\n }\n return true;\n}\n\n/** macOS/Windows noise; not part of the skill tree. */\nexport function isIgnorableZipEntry(name: string): boolean {\n const n = name.replace(/\\\\/g, '/');\n if (n.startsWith('__MACOSX/')) return true;\n const segments = n.split('/').filter(Boolean);\n for (const s of segments) {\n if (s === '.DS_Store' || s === 'Thumbs.db' || s === 'desktop.ini') return true;\n if (s.startsWith('._')) return true;\n }\n return false;\n}\n\nexport interface ManagedSkillListItem {\n id: string;\n name: string;\n description: string;\n path: string;\n /** Set when this folder was installed via `skills hub pull` / lock file. */\n hub?: SkillHubLockEntry;\n}\n\nfunction readSkillMdMeta(skillMdPath: string): { name: string; description: string } {\n try {\n const raw = readFileSync(skillMdPath, 'utf-8');\n const { frontmatter } = parseFrontmatter(raw);\n return {\n name: (frontmatter.name as string) || '',\n description: (frontmatter.description as string)?.trim() || '',\n };\n } catch {\n return { name: '', description: '' };\n }\n}\n\nexport function listManagedSkillDirs(): ManagedSkillListItem[] {\n const root = resolveSkillsDir();\n mkdirSync(root, { recursive: true });\n const lock = loadSkillsLock();\n let dirNames: string[];\n try {\n dirNames = readdirSync(root, { withFileTypes: true })\n .filter((e) => e.isDirectory() && !e.name.startsWith('.'))\n .map((e) => e.name);\n } catch {\n return [];\n }\n const out: ManagedSkillListItem[] = [];\n for (const id of dirNames) {\n if (!isValidSkillId(id)) continue;\n const skillMd = join(root, id, 'SKILL.md');\n if (!existsSync(skillMd)) continue;\n const meta = readSkillMdMeta(skillMd);\n const hub = lock.entries[id];\n out.push({\n id,\n name: meta.name || id,\n description: meta.description || '',\n path: join(root, id),\n ...(hub ? { hub } : {}),\n });\n }\n out.sort((a, b) => a.id.localeCompare(b.id));\n return out;\n}\n\nexport function deleteManagedSkill(skillId: string, rootDir = resolveSkillsDir()): void {\n if (!isValidSkillId(skillId)) {\n throw new Error('Invalid skill id');\n }\n const root = resolve(rootDir);\n const dir = resolve(join(root, skillId));\n const rootResolved = resolve(root);\n if (!dir.startsWith(rootResolved + sep) && dir !== rootResolved) {\n throw new Error('Invalid path');\n }\n if (!existsSync(join(dir, 'SKILL.md'))) {\n throw new Error('Skill not found');\n }\n const trashDir = createTransientManagedDir(root, TRASH_PREFIX, skillId);\n renameSync(dir, trashDir);\n rmSync(trashDir, { recursive: true, force: true });\n}\n\nfunction createTransientManagedDir(root: string, prefix: string, skillId: string): string {\n for (let i = 0; i < 100; i += 1) {\n const suffix = `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}-${i}`;\n const dir = join(root, `${prefix}${skillId}-${suffix}`);\n if (!existsSync(dir)) return dir;\n }\n throw new Error('Could not allocate temporary skill directory');\n}\n\nexport function getManagedSkillDir(skillId: string): string {\n if (!isValidSkillId(skillId)) {\n throw new Error('Invalid skill id');\n }\n return join(resolveSkillsDir(), skillId);\n}\n\nexport function assertManagedSkillDestination(\n skillId: string,\n rootDir = resolveSkillsDir(),\n): { root: string; destDir: string } {\n if (!isValidSkillId(skillId)) {\n throw new Error(`Invalid skill id \"${skillId}\" (letters, digits, ._-; max 63 chars after first)`);\n }\n const root = resolve(rootDir);\n mkdirSync(root, { recursive: true });\n const destDir = join(root, skillId);\n const destResolved = resolve(destDir);\n const rootResolved = resolve(root);\n if (!destResolved.startsWith(rootResolved + sep) && destResolved !== rootResolved) {\n throw new Error('Invalid destination path');\n }\n return { root, destDir };\n}\n\nexport function prepareManagedSkillTempDir(\n skillId: string,\n rootDir?: string,\n): { root: string; destDir: string; tempDir: string } {\n const { root, destDir } = assertManagedSkillDestination(skillId, rootDir);\n const tempDir = createTransientManagedDir(root, TEMP_PREFIX, skillId);\n mkdirSync(tempDir, { recursive: true });\n return { root, destDir, tempDir };\n}\n\nexport function promoteManagedSkillTempDir(params: {\n skillId: string;\n tempDir: string;\n overwrite?: boolean;\n rootDir?: string;\n}): { skillId: string; path: string } {\n const { root, destDir } = assertManagedSkillDestination(params.skillId, params.rootDir);\n const tempResolved = resolve(params.tempDir);\n const rootResolved = resolve(root);\n if (!tempResolved.startsWith(rootResolved + sep)) {\n throw new Error('Invalid temporary skill directory');\n }\n if (!existsSync(join(params.tempDir, 'SKILL.md'))) {\n throw new Error('Installed tree is missing SKILL.md');\n }\n\n if (existsSync(destDir)) {\n if (!params.overwrite) {\n throw new Error(`Skill \"${params.skillId}\" already exists. Pass overwrite to replace.`);\n }\n const trashDir = createTransientManagedDir(root, TRASH_PREFIX, params.skillId);\n renameSync(destDir, trashDir);\n try {\n renameSync(params.tempDir, destDir);\n } catch (err) {\n renameSync(trashDir, destDir);\n throw err;\n }\n rmSync(trashDir, { recursive: true, force: true });\n } else {\n renameSync(params.tempDir, destDir);\n }\n\n return { skillId: params.skillId, path: destDir };\n}\n\nfunction inferStripPrefix(primary: string): string {\n const parts = primary.split('/').filter(Boolean);\n if (parts.length === 1 && parts[0].toLowerCase() === 'skill.md') {\n return '';\n }\n return primary.slice(0, -'SKILL.md'.length);\n}\n\n/**\n * Install or replace a skill from a zip buffer. Layout: either `SKILL.md` at archive root\n * or a single top-level folder containing `SKILL.md` (optionally nested one level).\n */\nexport function installSkillFromZip(\n buffer: Buffer,\n options: { skillId?: string; overwrite?: boolean; rootDir?: string },\n): { skillId: string; path: string } {\n if (buffer.length > MAX_SKILL_ZIP_BYTES) {\n throw new Error(`Zip exceeds maximum size (${MAX_SKILL_ZIP_BYTES} bytes)`);\n }\n\n const zip = new AdmZip(buffer);\n const entries = zip\n .getEntries()\n .filter((e) => !e.isDirectory && e.entryName && !isIgnorableZipEntry(e.entryName));\n\n const safeEntries = entries.filter((e) => isSafeZipPath(e.entryName));\n if (safeEntries.length === 0) {\n throw new Error('Zip is empty or invalid');\n }\n\n const names = safeEntries.map((e) => e.entryName.replace(/\\\\/g, '/'));\n const skillMdPaths = names.filter((n) => /(^|\\/)SKILL\\.md$/i.test(n));\n if (skillMdPaths.length === 0) {\n throw new Error('Zip must contain at least one SKILL.md');\n }\n\n const shallow = skillMdPaths.filter((p) => p.split('/').filter(Boolean).length <= 2);\n if (shallow.length === 0) {\n throw new Error(\n 'SKILL.md is nested too deeply; use a zip with SKILL.md at archive root or one folder (e.g. my-skill/SKILL.md)',\n );\n }\n\n shallow.sort((a, b) => a.length - b.length);\n const stripPrefix = inferStripPrefix(shallow[0]);\n\n if (stripPrefix) {\n const prefixNorm = stripPrefix.replace(/\\\\/g, '/');\n const outside = names.filter((n) => !n.startsWith(prefixNorm) && !isIgnorableZipEntry(n));\n if (outside.length > 0) {\n throw new Error(\n `Invalid zip: expected all skill files under \"${prefixNorm.replace(/\\/$/, '')}/\", but found \"${outside[0]}\". ` +\n 'Put SKILL.md and assets in one folder, or zip that folder only.',\n );\n }\n }\n\n let targetId = options.skillId?.trim();\n if (!targetId) {\n if (stripPrefix) {\n const first = stripPrefix.replace(/\\/$/, '').split('/')[0];\n targetId = first || '';\n }\n if (!targetId) {\n const skillName = shallow.find((n) => /(^|\\/)SKILL\\.md$/i.test(n)) || '';\n const entry = zip.getEntry(skillName);\n if (!entry) throw new Error('SKILL.md missing');\n const raw = entry.getData().toString('utf-8');\n const { frontmatter } = parseFrontmatter(raw);\n targetId = String(frontmatter.name || '').trim();\n }\n }\n\n if (!targetId || !isValidSkillId(targetId)) {\n throw new Error(\n 'Could not determine skill id: use a folder named with the skill id, pass skillId, or set name: in SKILL.md (letters, digits, ._-)',\n );\n }\n\n const { destDir, tempDir } = prepareManagedSkillTempDir(targetId, options.rootDir);\n const tempResolved = resolve(tempDir);\n try {\n if (existsSync(destDir) && !options.overwrite) {\n throw new Error(`Skill \"${targetId}\" already exists. Pass overwrite to replace.`);\n }\n\n for (const e of safeEntries) {\n const norm = e.entryName.replace(/\\\\/g, '/');\n let rel: string;\n if (stripPrefix) {\n const prefixNorm = stripPrefix.replace(/\\\\/g, '/');\n if (!norm.startsWith(prefixNorm)) continue;\n rel = norm.slice(prefixNorm.length).replace(/^\\//, '');\n } else {\n rel = norm;\n }\n if (!rel || rel.includes('..')) continue;\n\n const targetPath = join(tempDir, rel);\n const resolvedTarget = resolve(targetPath);\n if (!resolvedTarget.startsWith(tempResolved + sep) && resolvedTarget !== tempResolved) {\n continue;\n }\n mkdirSync(dirname(targetPath), { recursive: true });\n writeFileSync(targetPath, e.getData());\n }\n\n if (!existsSync(join(tempDir, 'SKILL.md'))) {\n throw new Error('Extracted content is missing SKILL.md');\n }\n\n return promoteManagedSkillTempDir({\n skillId: targetId,\n tempDir,\n overwrite: options.overwrite,\n rootDir: options.rootDir,\n });\n } catch (err) {\n rmSync(tempDir, { recursive: true, force: true });\n throw err;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../../../../../../src/agent/skills/marketplace/adapters/clawhub/adapter.ts"],"sourcesContent":["/**\n * ClawHub (clawhub.ai) skills marketplace adapter.\n */\n\nimport { buildSkillMarkdownPreviewFromRaw } from '../../../skill-markdown-preview-from-raw.js';\nimport type { SkillsMarketplaceAdapter } from '../../adapter.types.js';\nimport { registerMarketplaceAdapter } from '../../registry.js';\n\n// ─── Constants ───────────────────────────────────────────────────────────────\n\nconst DEFAULT_CLAWHUB_BASE = 'https://clawhub.ai';\nconst MAX_CLAWHUB_FILE_BYTES = 512 * 1024;\nconst MAX_SKILL_ZIP_BYTES = 15 * 1024 * 1024;\nconst SKILL_ID_RE = /^[a-zA-Z0-9]([a-zA-Z0-9._-]{0,62})$/;\nconst LIST_BATCH_SIZE = 200;\n\nconst DEFAULT_CACHE_MS = 5 * 60 * 1000;\nconst MAX_LIST_CACHE_KEYS = 24;\nconst MAX_DETAIL_CACHE_KEYS = 48;\n\n// ─── Inline helpers ──────────────────────────────────────────────────────────\n\nfunction isValidSkillId(id: string): boolean {\n return SKILL_ID_RE.test(id);\n}\n\nfunction resolveClawHubBaseUrl(): string {\n const env = process.env.CLAWHUB_REGISTRY?.trim();\n if (env) {\n try {\n return new URL(env).toString().replace(/\\/$/, '');\n } catch {\n // fall through\n }\n }\n return DEFAULT_CLAWHUB_BASE;\n}\n\n// ─── ClawHub API types ───────────────────────────────────────────────────────\n\ninterface ClawHubSkillListItem {\n slug: string;\n displayName: string;\n summary: string;\n tags: Record<string, string>;\n stats: {\n comments: number;\n downloads: number;\n installsAllTime: number;\n installsCurrent: number;\n stars: number;\n versions: number;\n };\n createdAt: number;\n updatedAt: number;\n latestVersion: {\n version: string;\n createdAt: number;\n changelog: string | null;\n license: string | null;\n };\n metadata: { os: string[] | null; systems: string[] | null } | null;\n}\n\ninterface ClawHubSkillListResponse {\n items: ClawHubSkillListItem[];\n nextCursor: string | null;\n}\n\ninterface ClawHubSearchResultItem {\n score: number;\n slug: string;\n displayName: string;\n summary: string;\n version: string | null;\n updatedAt: number;\n ownerHandle: string;\n owner: {\n handle: string;\n displayName: string;\n image: string | null;\n };\n}\n\ninterface ClawHubSearchResponse {\n results: ClawHubSearchResultItem[];\n}\n\ninterface ClawHubSkillDetail {\n skill: {\n slug: string;\n displayName: string;\n summary: string;\n tags: Record<string, string>;\n stats: {\n comments: number;\n downloads: number;\n installsAllTime: number;\n installsCurrent: number;\n stars: number;\n versions: number;\n };\n createdAt: number;\n updatedAt: number;\n };\n latestVersion: {\n version: string;\n createdAt: number;\n changelog: string | null;\n license: string | null;\n };\n metadata: { os: string[] | null; systems: string[] | null } | null;\n owner: {\n handle: string;\n userId: string;\n displayName: string;\n image: string | null;\n };\n moderation: {\n isSuspicious: boolean;\n isMalwareBlocked: boolean;\n verdict: string;\n } | null;\n}\n\ninterface ClawHubVersionFile {\n path: string;\n size: number;\n sha256: string;\n contentType: string;\n}\n\ninterface ClawHubVersionDetail {\n skill: { slug: string; displayName: string };\n version: {\n version: string;\n createdAt: number;\n changelog: string | null;\n changelogSource: string | null;\n license: string | null;\n files: ClawHubVersionFile[];\n security: {\n status: string;\n hasWarnings: boolean;\n hasScanResult: boolean;\n } | null;\n };\n}\n\ntype ClawHubListSort = 'updated' | 'newest' | 'downloads' | 'stars' | 'trending';\n\ninterface ClawHubListParams {\n limit?: number;\n cursor?: string;\n sort?: ClawHubListSort;\n}\n\n// ─── ClawHub HTTP helpers ────────────────────────────────────────────────────\n\nasync function clawHubFetch(path: string, init?: { signal?: AbortSignal }): Promise<Response> {\n const base = resolveClawHubBaseUrl();\n const url = `${base}${path}`;\n const res = await fetch(url, {\n headers: { Accept: 'application/json' },\n signal: init?.signal,\n });\n return res as unknown as Response;\n}\n\nfunction assertOk(res: Response, context: string): void {\n if (!res.ok) {\n throw new Error(`ClawHub ${context} failed (${res.status})`);\n }\n}\n\nasync function listClawHubSkills(params?: ClawHubListParams): Promise<ClawHubSkillListResponse> {\n const sp = new URLSearchParams();\n if (params?.limit) sp.set('limit', String(params.limit));\n if (params?.cursor) sp.set('cursor', params.cursor);\n if (params?.sort) sp.set('sort', params.sort);\n sp.set('nonSuspiciousOnly', 'true');\n const qs = sp.toString();\n const res = await clawHubFetch(`/api/v1/skills${qs ? `?${qs}` : ''}`);\n assertOk(res, 'list skills');\n return (await res.json()) as ClawHubSkillListResponse;\n}\n\nasync function searchClawHubSkills(query: string, limit?: number): Promise<ClawHubSearchResponse> {\n const sp = new URLSearchParams({ q: query, nonSuspiciousOnly: 'true' });\n if (limit) sp.set('limit', String(limit));\n const res = await clawHubFetch(`/api/v1/search?${sp.toString()}`);\n assertOk(res, 'search');\n return (await res.json()) as ClawHubSearchResponse;\n}\n\nasync function getClawHubSkillDetail(slug: string): Promise<ClawHubSkillDetail> {\n const enc = encodeURIComponent(slug.trim());\n const res = await clawHubFetch(`/api/v1/skills/${enc}`);\n assertOk(res, `skill detail [${slug}]`);\n return (await res.json()) as ClawHubSkillDetail;\n}\n\nasync function getClawHubVersionDetail(slug: string, version: string): Promise<ClawHubVersionDetail> {\n const enc = encodeURIComponent(slug.trim());\n const ver = encodeURIComponent(version.trim());\n const res = await clawHubFetch(`/api/v1/skills/${enc}/versions/${ver}`);\n assertOk(res, `version detail [${slug}@${version}]`);\n return (await res.json()) as ClawHubVersionDetail;\n}\n\nasync function getClawHubSkillFileText(slug: string, filePath: string, version?: string): Promise<string> {\n const enc = encodeURIComponent(slug.trim());\n const sp = new URLSearchParams({ path: filePath });\n if (version?.trim()) sp.set('version', version.trim());\n const base = resolveClawHubBaseUrl();\n const url = `${base}/api/v1/skills/${enc}/file?${sp.toString()}`;\n const res = await fetch(url, { headers: { Accept: 'text/markdown,text/plain,*/*' } });\n if (!res.ok) {\n throw new Error(`ClawHub file fetch [${slug}/${filePath}] failed (${res.status})`);\n }\n const text = await res.text();\n return text.length > MAX_CLAWHUB_FILE_BYTES ? text.slice(0, MAX_CLAWHUB_FILE_BYTES) : text;\n}\n\nasync function downloadClawHubSkillZip(\n slug: string,\n version?: string,\n): Promise<{ buffer: Buffer; version: string }> {\n const enc = encodeURIComponent(slug.trim());\n const sp = version?.trim() ? `?version=${encodeURIComponent(version.trim())}` : '';\n const base = resolveClawHubBaseUrl();\n const url = `${base}/api/v1/packages/${enc}/download${sp}`;\n const res = await fetch(url, { redirect: 'follow' });\n if (!res.ok) {\n const body = await res.text().catch(() => '');\n throw new Error(`ClawHub download [${slug}] failed (${res.status}): ${body.slice(0, 200)}`);\n }\n const contentType = res.headers.get('content-type') ?? '';\n if (!contentType.includes('zip') && !contentType.includes('octet-stream')) {\n throw new Error(`ClawHub download [${slug}] unexpected content-type: ${contentType}`);\n }\n const arrayBuf = await res.arrayBuffer();\n if (arrayBuf.byteLength > MAX_SKILL_ZIP_BYTES) {\n throw new Error(\n `ClawHub download [${slug}] exceeds size limit (${arrayBuf.byteLength} > ${MAX_SKILL_ZIP_BYTES})`,\n );\n }\n return { buffer: Buffer.from(arrayBuf), version: version?.trim() || 'latest' };\n}\n\nfunction pickClawHubDocFilePath(files: ClawHubVersionFile[]): string | null {\n const rows = files.map((f) => ({\n path: f.path.replace(/\\\\/g, '/'),\n base: f.path.replace(/\\\\/g, '/').split('/').pop()?.toLowerCase() ?? '',\n }));\n const find = (name: string) => rows.find((r) => r.base === name.toLowerCase());\n const skillMd = find('SKILL.md') ?? find('skill.md');\n if (skillMd) return skillMd.path;\n const readme = find('README.md') ?? find('readme.md');\n if (readme) return readme.path;\n return null;\n}\n\n// ─── In-memory TTL cache ─────────────────────────────────────────────────────\n\ntype CacheEntry<T> = { value: T; expiresAt: number };\n\nfunction cacheTtlMs(): number {\n const raw = process.env.XOPC_CLAWHUB_CACHE_MS?.trim();\n if (raw === '0' || raw === 'false') return 0;\n const parsed = Number(raw);\n if (!Number.isFinite(parsed) || parsed < 0) return DEFAULT_CACHE_MS;\n return parsed;\n}\n\nfunction getFresh<T>(entry: CacheEntry<T> | undefined): T | undefined {\n if (!entry || entry.expiresAt <= Date.now()) return undefined;\n return entry.value;\n}\n\nfunction evictOldest<T>(map: Map<string, CacheEntry<T>>): void {\n const first = map.keys().next().value;\n if (first !== undefined) map.delete(first);\n}\n\nconst listCache = new Map<string, CacheEntry<ClawHubSkillListResponse>>();\nconst searchCache = new Map<string, CacheEntry<ClawHubSearchResponse>>();\nconst detailCache = new Map<string, CacheEntry<ClawHubSkillDetail>>();\n\nasync function cachedListClawHubSkills(params?: ClawHubListParams): Promise<ClawHubSkillListResponse> {\n const ttl = cacheTtlMs();\n const key = JSON.stringify(params ?? {});\n if (ttl > 0) {\n const hit = getFresh(listCache.get(key));\n if (hit) return hit;\n }\n const value = await listClawHubSkills(params);\n if (ttl > 0) {\n while (listCache.size >= MAX_LIST_CACHE_KEYS) evictOldest(listCache);\n listCache.set(key, { value, expiresAt: Date.now() + ttl });\n }\n return value;\n}\n\nasync function cachedSearchClawHubSkills(query: string, limit?: number): Promise<ClawHubSearchResponse> {\n const ttl = cacheTtlMs();\n const key = `${query}::${limit ?? ''}`;\n if (ttl > 0) {\n const hit = getFresh(searchCache.get(key));\n if (hit) return hit;\n }\n const value = await searchClawHubSkills(query, limit);\n if (ttl > 0) {\n while (searchCache.size >= MAX_LIST_CACHE_KEYS) evictOldest(searchCache);\n searchCache.set(key, { value, expiresAt: Date.now() + ttl });\n }\n return value;\n}\n\nasync function cachedGetClawHubSkillDetail(slug: string): Promise<ClawHubSkillDetail> {\n const ttl = cacheTtlMs();\n const key = slug.trim();\n if (ttl > 0) {\n const hit = getFresh(detailCache.get(key));\n if (hit) return hit;\n }\n const value = await getClawHubSkillDetail(slug);\n if (ttl > 0) {\n while (detailCache.size >= MAX_DETAIL_CACHE_KEYS) evictOldest(detailCache);\n detailCache.set(key, { value, expiresAt: Date.now() + ttl });\n }\n return value;\n}\n\n// ─── Adapter conversion helpers ──────────────────────────────────────────────\n\ninterface PackageListItem {\n id: string;\n name: string;\n type: string;\n description: string;\n downloads: number;\n author: { username: string; avatarUrl: string | null };\n latestVersion?: string;\n updatedAt: string;\n categories?: string[];\n stars?: number;\n sourceLabel?: string;\n}\n\nfunction convertListItemToPackageItem(item: ClawHubSkillListItem): PackageListItem {\n return {\n id: item.slug,\n name: item.displayName || item.slug,\n type: 'skill',\n description: item.summary || '',\n downloads: item.stats.downloads,\n author: { username: 'clawhub', avatarUrl: null },\n latestVersion: item.latestVersion?.version ?? item.tags.latest ?? '1.0.0',\n updatedAt: String(item.updatedAt),\n categories: item.metadata?.os ?? [],\n stars: item.stats.stars,\n sourceLabel: 'ClawHub',\n };\n}\n\nfunction convertSearchResultToPackageItem(\n item: ClawHubSearchResultItem,\n enrichment?: ClawHubSkillListItem,\n): PackageListItem {\n return {\n id: item.slug,\n name: item.displayName || item.slug,\n type: 'skill',\n description: item.summary || '',\n downloads: enrichment?.stats.downloads ?? 0,\n author: {\n username: item.owner?.handle ?? item.ownerHandle ?? 'clawhub',\n avatarUrl: item.owner?.image ?? null,\n },\n latestVersion: item.version ?? enrichment?.latestVersion?.version ?? '1.0.0',\n updatedAt: String(item.updatedAt),\n categories: enrichment?.metadata?.os ?? [],\n stars: enrichment?.stats.stars ?? 0,\n sourceLabel: 'ClawHub',\n };\n}\n\nfunction mapSortParam(sort?: string): ClawHubListSort | undefined {\n if (sort === 'downloads') return 'downloads';\n if (sort === 'newest') return 'newest';\n return undefined;\n}\n\nfunction fallbackReadmeMarkdown(detail: {\n skill: { slug: string; displayName: string; summary: string };\n latestVersion: { version: string };\n}): string {\n const title = detail.skill.displayName || detail.skill.slug;\n const body = detail.skill.summary || '_No description._';\n return `## ${title}\\n\\n**${detail.skill.slug}** · v${detail.latestVersion.version}\\n\\n${body}`;\n}\n\nexport const clawHubMarketplaceAdapter: SkillsMarketplaceAdapter = {\n id: 'clawhub',\n\n async listCategories() {\n return [];\n },\n\n async listPackages(_config, params) {\n const pageSize = params.pageSize ?? 20;\n const page = params.page ?? 1;\n\n if (params.q?.trim()) {\n // Search results from /search omit downloads/stars/metadata. We pull the cached list\n // snapshot in parallel and merge by slug — costs nothing when the list cache is hot\n // (which it is after any preceding browse), and adds at most one round-trip on a cold\n // cache. We still tolerate a list-fetch failure: enrichment becomes a no-op.\n const [searchResponse, listSettled] = await Promise.allSettled([\n cachedSearchClawHubSkills(params.q.trim(), LIST_BATCH_SIZE),\n cachedListClawHubSkills({ limit: LIST_BATCH_SIZE }),\n ]);\n if (searchResponse.status === 'rejected') throw searchResponse.reason;\n const enrichmentBySlug = new Map<string, ClawHubSkillListItem>();\n if (listSettled.status === 'fulfilled') {\n for (const it of listSettled.value.items) enrichmentBySlug.set(it.slug, it);\n }\n let rows = searchResponse.value.results.map((r) =>\n convertSearchResultToPackageItem(r, enrichmentBySlug.get(r.slug)),\n );\n if (params.sort === 'downloads') {\n rows = [...rows].sort((a, b) => b.downloads - a.downloads);\n } else if (params.sort === 'newest') {\n rows = [...rows].sort((a, b) => Number(b.updatedAt) - Number(a.updatedAt));\n }\n const total = rows.length;\n const start = (page - 1) * pageSize;\n const items = rows.slice(start, start + pageSize);\n const totalPages = Math.max(1, Math.ceil(total / pageSize));\n return { items, meta: { page, pageSize, total, totalPages }, provider: 'clawhub' };\n }\n\n const sort = mapSortParam(params.sort);\n const listResponse = await cachedListClawHubSkills({ limit: LIST_BATCH_SIZE, sort });\n const rows = listResponse.items.map(convertListItemToPackageItem);\n const total = rows.length;\n const start = (page - 1) * pageSize;\n const items = rows.slice(start, start + pageSize);\n const totalPages = Math.max(1, Math.ceil(total / pageSize));\n return { items, meta: { page, pageSize, total, totalPages }, provider: 'clawhub' };\n },\n\n async getPackageDetail(_config, packageName) {\n const detail = await cachedGetClawHubSkillDetail(packageName);\n const slug = detail.skill.slug;\n const version = detail.latestVersion.version;\n\n let readme: string | null = null;\n\n try {\n const versionDetail = await getClawHubVersionDetail(slug, version);\n const docPath = pickClawHubDocFilePath(versionDetail.version.files);\n if (docPath) {\n const rawText = await getClawHubSkillFileText(slug, docPath, version);\n const trimmed = rawText.trim();\n if (trimmed) readme = trimmed;\n }\n } catch {\n // version detail or file fetch failed — use fallback\n }\n\n if (!readme) {\n readme = fallbackReadmeMarkdown(detail);\n }\n\n const changelog = detail.latestVersion.changelog?.trim();\n if (changelog) {\n readme = `${readme}\\n\\n---\\n\\n## Changelog\\n\\n${changelog}`;\n }\n\n const description = detail.skill.summary || '';\n const skillDocPreview = buildSkillMarkdownPreviewFromRaw(readme, {\n name: slug,\n description,\n });\n\n return {\n id: slug,\n name: slug,\n type: 'skill',\n description,\n readme,\n skillDocPreview,\n downloads: detail.skill.stats.downloads,\n author: {\n username: detail.owner.handle,\n avatarUrl: detail.owner.image,\n },\n latestVersion: {\n version: detail.latestVersion.version,\n changelog: detail.latestVersion.changelog,\n publishedAt: String(detail.latestVersion.createdAt),\n },\n provider: 'clawhub',\n };\n },\n\n async downloadPackage(_config, packageName, version) {\n const slug = packageName.trim();\n const result = await downloadClawHubSkillZip(slug, version);\n return {\n buffer: result.buffer,\n skillId: isValidSkillId(slug) ? slug : 'unknown',\n version: result.version,\n };\n },\n};\n\nregisterMarketplaceAdapter({\n adapter: clawHubMarketplaceAdapter,\n displayName: 'ClawHub',\n});\n"],"mappings":"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"}