@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":"service.js","names":[],"sources":["../../../src/notes/service.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { type UserMessage } from '@earendil-works/pi-ai/compat';\n\nimport { changedFieldsFromPatch, emitActivity, previewText, systemActivityActor, systemActivitySource } from '../activity/emitter.js';\nimport { publishAutomationProductEvent } from '../automations/product-events.js';\nimport type { Config } from '../config/schema.js';\nimport { getDefaultModelSync, resolveModel } from '../providers/index.js';\nimport { completeWithResolvedCredentials } from '../providers/model-call.js';\nimport { createLogger } from '../utils/logger.js';\nimport { buildNoteAttachmentRef } from './attachment-ref.js';\nimport { partitionAttachmentsByReference } from './note-attachment-sync.js';\nimport { parseNoteMarkdown } from './note-markdown.js';\nimport { buildNoteAgentContextArtifact, getCachedNoteAgentContextArtifact } from './agent-context.js';\nimport { NotesStore } from './store.js';\nimport type {\n CaptureSource,\n CreateNoteParams,\n Note,\n NoteAiPatch,\n NoteAttachment,\n NoteCatalysisAction,\n NoteCatalysisMeta,\n NoteCatalysisReport,\n NoteIndexEntry,\n NoteKind,\n NoteSnapshot,\n NoteSnapshotEntry,\n NotesListQuery,\n SnapshotTrigger,\n} from './types.js';\n\nconst log = createLogger('NotesService');\nconst MAX_SNAPSHOTS_PER_NOTE = 50;\nconst SNAPSHOT_THROTTLE_MS = 60_000;\n\nfunction inferKind(markdown?: string, hasAttachments?: boolean, attachments?: NoteAttachment[]): NoteKind {\n if (hasAttachments && attachments?.length && attachments.every((item) => item.type === 'audio')) return 'voice';\n if (hasAttachments) return 'media';\n if (!markdown) return 'thought';\n const lower = markdown.toLowerCase();\n if (/^(todo|task|remind|buy|call|email|meet|finish|submit|send)\\b/i.test(lower) || /\\b(明天|今天|记得|别忘|待办|提醒)\\b/.test(markdown)) return 'todo';\n if (/^https?:\\/\\//.test(markdown.trim())) return 'bookmark';\n return 'thought';\n}\n\nfunction deriveDefaultTitle(markdown?: string): string | undefined {\n const normalized = parseNoteMarkdown(markdown ?? '').plainText.trim().replace(/\\s+/g, ' ');\n return normalized ? Array.from(normalized).slice(0, 10).join('') : undefined;\n}\n\nfunction splitMeaningfulLines(markdown?: string): string[] {\n return parseNoteMarkdown(markdown ?? '').plainText.split(/\\n|。|;|;/).map((line) => line.trim()).filter(Boolean);\n}\n\nfunction summarizeIdea(markdown?: string): string {\n const lines = splitMeaningfulLines(markdown);\n return lines.slice(0, 3).join(';').slice(0, 140);\n}\n\nfunction publishNoteEvent(\n type: 'note.created' | 'note.updated',\n note: Note,\n extra?: Record<string, unknown>,\n): void {\n publishAutomationProductEvent({\n type,\n source: 'notes',\n payload: {\n noteId: note.id,\n kind: note.kind,\n status: note.status,\n title: note.title,\n capturedVia: note.capturedVia,\n tagCount: note.tags?.length ?? 0,\n hasAttachments: Boolean(note.attachments?.length),\n ...extra,\n },\n });\n}\n\nfunction inferCatalysisStage(note: Note): NonNullable<NoteCatalysisMeta['stage']> {\n const text = `${note.title ?? ''}\\n${note.markdown}`;\n if (/上线|发布|launch|ship/i.test(text)) return 'shipped';\n if (/验证|访谈|用户|测试|validate/i.test(text)) return 'validating';\n if (/开发|实现|构建|build|mvp/i.test(text)) return 'developing';\n if (/想法|机会|问题|idea|seed/i.test(text)) return 'seed';\n return 'incubating';\n}\n\nfunction buildCatalysisReport(note: Note): NoteCatalysisReport {\n const summary = summarizeIdea(note.markdown || note.title);\n const title = note.title?.trim() || summary.slice(0, 28) || '未命名想法';\n const actions: NoteCatalysisAction[] = [\n { kind: 'research', text: `验证「${title}」的真实需求和目标用户` },\n { kind: 'task', text: `拆解「${title}」的最小可行下一步` },\n { kind: 'chat', text: `继续和 AI 讨论「${title}」的方案` },\n ];\n return {\n originalNoteId: note.id,\n generatedAt: Date.now(),\n title,\n valueHypothesis: summary || '这条笔记可能包含一个待澄清的想法。',\n targetUsers: ['待确认的核心用户'],\n keyQuestions: ['用户为什么现在需要它?', '最小可验证版本是什么?', '如何判断它值得继续投入?'],\n mvpPath: ['定义目标用户', '写出最小场景', '完成一次验证'],\n risks: ['需求不够明确', '执行路径过大'],\n nextActions: actions,\n confidence: summary ? 0.58 : 0.35,\n };\n}\n\nfunction normalizeAiCatalysisReport(note: Note, data: Record<string, unknown>): NoteCatalysisReport {\n const fallback = buildCatalysisReport(note);\n const stringArray = (value: unknown, fallbackValue: string[]) => Array.isArray(value) ? value.filter((item): item is string => typeof item === 'string').slice(0, 12) : fallbackValue;\n const actions = Array.isArray(data.nextActions)\n ? data.nextActions.map((item): NoteCatalysisAction | null => {\n if (!item || typeof item !== 'object') return null;\n const row = item as { kind?: unknown; text?: unknown };\n const kind = row.kind === 'task' || row.kind === 'workflow' || row.kind === 'research' || row.kind === 'share' || row.kind === 'chat' ? row.kind : 'task';\n return typeof row.text === 'string' && row.text.trim() ? { kind, text: row.text.trim() } : null;\n }).filter((item): item is NoteCatalysisAction => Boolean(item)).slice(0, 12)\n : fallback.nextActions;\n return {\n originalNoteId: note.id,\n generatedAt: Date.now(),\n title: typeof data.title === 'string' && data.title.trim() ? data.title.trim() : fallback.title,\n valueHypothesis: typeof data.valueHypothesis === 'string' && data.valueHypothesis.trim() ? data.valueHypothesis.trim() : fallback.valueHypothesis,\n targetUsers: stringArray(data.targetUsers, fallback.targetUsers),\n keyQuestions: stringArray(data.keyQuestions, fallback.keyQuestions),\n mvpPath: stringArray(data.mvpPath, fallback.mvpPath),\n risks: stringArray(data.risks, fallback.risks),\n nextActions: actions,\n confidence: typeof data.confidence === 'number' ? Math.max(0, Math.min(1, data.confidence)) : fallback.confidence,\n };\n}\n\nfunction buildCatalysisPrompt(note: Note): string {\n const title = note.title?.trim() || '未命名笔记';\n const markdown = note.markdown.trim() || '(无正文)';\n return `请把下面的 Markdown 笔记催化成可执行的想法报告,输出 JSON:\\n{\\n \"title\": string,\\n \"valueHypothesis\": string,\\n \"targetUsers\": string[],\\n \"keyQuestions\": string[],\\n \"mvpPath\": string[],\\n \"risks\": string[],\\n \"nextActions\": [{\"text\": string, \"kind\": \"task\"|\"workflow\"|\"research\"|\"share\"|\"chat\"}],\\n \"confidence\": number\\n}\\n\\n标题:${title}\\n\\nMarkdown:\\n${markdown}`;\n}\n\nasync function buildAiCatalysisReport(note: Note, config?: Config): Promise<NoteCatalysisReport> {\n const modelRef = getDefaultModelSync(config);\n if (!modelRef) {\n throw new Error('No global default model configured');\n }\n const resolved = resolveModel(modelRef);\n const messages: UserMessage[] = [{ role: 'user', content: buildCatalysisPrompt(note), timestamp: Date.now() }];\n const response = await completeWithResolvedCredentials(resolved, { messages }, { temperature: 0.2 });\n let responseText = '';\n if (Array.isArray(response.content)) {\n for (const part of response.content) {\n if (part && typeof part === 'object' && (part as { type?: string }).type === 'text') {\n responseText += String((part as { text?: string }).text || '');\n }\n }\n }\n const raw = responseText.trim().replace(/^```json\\s*/i, '').replace(/```$/i, '').trim();\n return normalizeAiCatalysisReport(note, JSON.parse(raw) as Record<string, unknown>);\n}\n\nexport class NotesService {\n private lastSnapshotAt = new Map<string, number>();\n\n constructor(private readonly store = new NotesStore()) {}\n\n async initialize(): Promise<void> {\n await this.store.initialize();\n }\n\n async quickCapture(markdown: string, source: CaptureSource): Promise<Note> {\n const id = randomUUID();\n const now = Date.now();\n const note: Note = {\n id,\n title: deriveDefaultTitle(markdown),\n kind: inferKind(markdown),\n status: 'inbox',\n markdown,\n createdAt: now,\n updatedAt: now,\n capturedVia: source,\n remoteVersion: 1,\n localVersion: 1,\n };\n await this.store.addNote(note);\n emitActivity({\n type: 'note.created',\n primaryObject: { kind: 'note', id: note.id, title: note.title },\n actor: systemActivityActor(),\n source: systemActivitySource(),\n payload: {\n title: note.title,\n kind: note.kind,\n tags: note.tags,\n contentPreview: previewText(note.markdown),\n contentLength: note.markdown.length,\n },\n nowMs: note.createdAt,\n });\n log.debug({ id: note.id, kind: note.kind }, 'Quick capture');\n return note;\n }\n\n async createNote(params: CreateNoteParams): Promise<Note> {\n const id = randomUUID();\n const now = Date.now();\n const markdown = params.markdown ?? '';\n const note: Note = {\n id,\n title: params.title ?? deriveDefaultTitle(markdown),\n kind: params.kind ?? inferKind(markdown),\n status: 'inbox',\n markdown,\n attachments: [],\n createdAt: now,\n updatedAt: now,\n capturedVia: params.capturedVia,\n tags: params.tags,\n pinned: params.pinned,\n groupId: params.groupId,\n taskMeta: params.taskMeta,\n remoteVersion: 1,\n localVersion: 1,\n };\n await this.store.addNote(note);\n emitActivity({\n type: 'note.created',\n primaryObject: { kind: 'note', id: note.id, title: note.title },\n actor: systemActivityActor(),\n source: systemActivitySource(),\n payload: {\n title: note.title,\n kind: note.kind,\n tags: note.tags,\n contentPreview: previewText(note.markdown),\n contentLength: note.markdown.length,\n },\n nowMs: note.createdAt,\n });\n publishNoteEvent('note.created', note);\n log.debug({ id: note.id, kind: note.kind }, 'Note created');\n return note;\n }\n\n async getNote(id: string): Promise<Note | null> {\n return this.store.getNote(id);\n }\n\n async updateNote(id: string, patch: Partial<Note>, trigger: SnapshotTrigger = 'edit'): Promise<Note | null> {\n const existing = await this.store.getNote(id);\n if (!existing) return null;\n const contentTouched = patch.markdown !== undefined || patch.title !== undefined;\n if (contentTouched) await this.maybeSaveSnapshot(existing, trigger);\n\n const normalizedPatch: Partial<Note> = { ...patch };\n if (patch.markdown !== undefined) {\n normalizedPatch.kind = patch.kind ?? inferKind(patch.markdown, Boolean(existing.attachments?.length), existing.attachments);\n }\n if (contentTouched || patch.attachments) {\n normalizedPatch.remoteVersion = (existing.remoteVersion ?? 1) + 1;\n normalizedPatch.localVersion = patch.localVersion ?? (existing.localVersion ?? 1) + 1;\n }\n\n const updatedRaw = await this.store.updateNote(id, normalizedPatch);\n const updated = updatedRaw ? await this.reconcileAttachments(updatedRaw) : null;\n if (updated) {\n const changes = changedFieldsFromPatch(patch as Record<string, unknown>);\n emitActivity({\n type: existing.status !== updated.status ? 'note.status_changed' : 'note.updated',\n primaryObject: { kind: 'note', id: updated.id, title: updated.title },\n actor: systemActivityActor(),\n source: systemActivitySource(),\n payload: {\n changes,\n contentTouched,\n ...(existing.status !== updated.status ? { from: existing.status, to: updated.status } : {}),\n },\n nowMs: updated.updatedAt,\n });\n publishNoteEvent('note.updated', updated, {\n contentTouched,\n trigger,\n });\n }\n return updated;\n }\n\n private async reconcileAttachments(note: Note): Promise<Note> {\n const { kept, removed } = partitionAttachmentsByReference(note);\n if (removed.length === 0) return note;\n for (const attachment of removed) await this.store.deleteAttachmentFile(note.id, attachment.relativePath);\n log.debug({ noteId: note.id, removedIds: removed.map((attachment) => attachment.id) }, 'Pruned orphan note attachments');\n const hasAttachments = kept.length > 0;\n const updated = await this.store.updateNote(note.id, { attachments: kept, kind: inferKind(note.markdown, hasAttachments, kept) });\n return updated ?? { ...note, attachments: kept };\n }\n\n async syncNote(id: string, patch: Partial<Note>, baseRemoteVersion?: number): Promise<{ note: Note | null; conflict: boolean }> {\n const existing = await this.store.getNote(id);\n if (!existing) return { note: null, conflict: false };\n if (baseRemoteVersion !== undefined && existing.remoteVersion !== undefined && baseRemoteVersion < existing.remoteVersion) {\n return { note: existing, conflict: true };\n }\n const updated = await this.updateNote(id, patch, 'sync');\n return { note: updated, conflict: false };\n }\n\n async createAiEditPatch(id: string, instruction: string, markdownOverride?: string): Promise<{ message: string; patch: NoteAiPatch } | null> {\n const note = await this.store.getNote(id);\n if (!note) return null;\n const source = markdownOverride ?? note.markdown;\n const parsed = parseNoteMarkdown(source, id);\n const wantsTodos = /待办|todo|task|行动|提醒/i.test(instruction);\n const wantsSummary = /摘要|总结|summary|压缩/i.test(instruction);\n let generated = '';\n if (wantsTodos) {\n const lines = source.split(/\\n|。|;|;/).map((line) => line.trim()).filter(Boolean);\n generated = (lines.length ? lines : [parsed.plainText]).slice(0, 12).map((line) => `- [ ] ${line.replace(/^[-*\\d.\\s\\[\\]x]+/i, '').trim()}`).join('\\n');\n } else if (wantsSummary) {\n generated = `> [!SUMMARY]\\n> ${parsed.plainText.slice(0, 220)}`;\n } else {\n generated = `${source.trimEnd()}\\n\\n## AI 整理\\n\\n${instruction.trim()}`;\n }\n return {\n message: 'AI edit patch generated',\n patch: {\n id: randomUUID(),\n summary: instruction,\n operations: [{ type: 'replaceRange', from: 0, to: source.length, markdown: generated || source }],\n },\n };\n }\n\n async catalyzeNote(id: string, config?: Config): Promise<{ note: Note; report: NoteCatalysisReport } | null> {\n const note = await this.store.getNote(id);\n if (!note) return null;\n let report: NoteCatalysisReport;\n try {\n report = await buildAiCatalysisReport(note, config);\n } catch (err) {\n log.warn({ err, noteId: id }, 'AI note catalysis failed; using local fallback report');\n report = buildCatalysisReport(note);\n }\n const updated = await this.updateNote(id, {\n aiDeep: {\n ...note.aiDeep,\n processedAt: Date.now(),\n catalysis: {\n status: 'catalyzed',\n stage: inferCatalysisStage(note),\n lastCatalyzedAt: Date.now(),\n confidence: report.confidence,\n report,\n ...note.aiDeep?.catalysis,\n },\n },\n ai: { ...note.ai, intent: note.ai?.intent ?? 'idea', summary: note.ai?.summary ?? report.valueHypothesis },\n status: note.status === 'inbox' ? 'processed' : note.status,\n }, 'ai_edit');\n return updated ? { note: updated, report } : null;\n }\n\n async recordCatalysisFeedback(id: string, feedback: 'helpful' | 'not_helpful' | 'neutral'): Promise<Note | null> {\n const note = await this.store.getNote(id);\n if (!note) return null;\n return this.updateNote(id, { aiDeep: { ...note.aiDeep, processedAt: Date.now(), catalysis: { status: note.aiDeep?.catalysis?.status ?? 'catalyzed', ...note.aiDeep?.catalysis, feedback } } });\n }\n\n async linkNoteThread(id: string, sessionKey: string): Promise<Note | null> {\n const note = await this.store.getNote(id);\n if (!note) return null;\n const existingKeys = note.aiDeep?.catalysis?.linkedSessionKeys ?? [];\n return this.updateNote(id, {\n aiDeep: {\n ...note.aiDeep,\n processedAt: Date.now(),\n catalysis: {\n status: note.aiDeep?.catalysis?.status ?? 'none',\n ...note.aiDeep?.catalysis,\n sourceSessionKey: note.aiDeep?.catalysis?.sourceSessionKey ?? sessionKey,\n linkedSessionKeys: Array.from(new Set([...existingKeys, sessionKey])),\n },\n },\n }, 'sync');\n }\n\n async listNoteThreads(id: string): Promise<string[] | null> {\n const note = await this.store.getNote(id);\n if (!note) return null;\n return Array.from(new Set([note.aiDeep?.catalysis?.sourceSessionKey, ...(note.aiDeep?.catalysis?.linkedSessionKeys ?? [])].filter((key): key is string => Boolean(key))));\n }\n\n async getAgentContextStatus(id: string, config?: Config, force = false): Promise<{ noteUpdatedAt: number; artifact: import('./agent-context.js').NoteAgentContextArtifact | null; stale: boolean } | null> {\n const note = await this.store.getNote(id);\n if (!note) return null;\n const cached = getCachedNoteAgentContextArtifact(id);\n if (!force && cached && cached.noteUpdatedAt === note.updatedAt) {\n return { noteUpdatedAt: note.updatedAt, artifact: cached, stale: false };\n }\n const artifact = await buildNoteAgentContextArtifact({ note, notesService: this, config, force });\n return { noteUpdatedAt: note.updatedAt, artifact, stale: false };\n }\n\n async appendTextToNote(id: string, content: string, heading = 'AI 讨论沉淀'): Promise<Note | null> {\n const note = await this.store.getNote(id);\n if (!note) return null;\n const trimmed = content.trim();\n if (!trimmed) return note;\n const current = note.markdown.trimEnd();\n const nextMarkdown = `${current}${current ? '\\n\\n' : ''}## ${heading}\\n\\n${trimmed}\\n`;\n return this.updateNote(id, { markdown: nextMarkdown }, 'ai_edit');\n }\n\n async deleteNote(id: string): Promise<boolean> {\n const removed = await this.store.deleteNote(id);\n if (removed) await this.store.deleteAllSnapshots(id);\n return removed;\n }\n\n async listNotes(query: NotesListQuery = {}): Promise<{ items: NoteIndexEntry[]; total: number; limit: number; offset: number; hasMore: boolean }> {\n return this.store.listNotes(query);\n }\n\n async addAttachment(noteId: string, file: { name: string; buffer: Buffer; mimeType: string; duration?: number }): Promise<NoteAttachment | null> {\n const note = await this.store.getNote(noteId);\n if (!note) return null;\n const { relativePath, size } = await this.store.saveAttachment(noteId, file.name, file.buffer);\n const attachment: NoteAttachment = {\n id: randomUUID(),\n type: file.mimeType.startsWith('image/') ? 'image' : file.mimeType.startsWith('audio/') ? 'audio' : file.mimeType.startsWith('video/') ? 'video' : 'file',\n mimeType: file.mimeType,\n fileName: file.name,\n size,\n relativePath,\n duration: file.duration,\n };\n const attachments = [...(note.attachments || []), attachment];\n const kind = note.kind === 'thought' && attachment.type === 'audio' ? 'voice' : note.kind === 'thought' ? 'media' : note.kind;\n await this.store.updateNote(noteId, { attachments, kind });\n return attachment;\n }\n\n async getAttachmentPath(noteId: string, attachmentId: string): Promise<{ filePath: string; mimeType: string; fileName: string } | null> {\n const note = await this.store.getNote(noteId);\n if (!note) return null;\n const attachment = note.attachments?.find((a) => a.id === attachmentId);\n if (!attachment) return null;\n return { filePath: this.store.resolveAttachmentPath(noteId, attachment.relativePath), mimeType: attachment.mimeType, fileName: attachment.fileName };\n }\n\n async listNoteHistory(noteId: string): Promise<NoteSnapshotEntry[]> { return this.store.listSnapshots(noteId); }\n async getNoteSnapshot(noteId: string, timestamp: number): Promise<NoteSnapshot | null> { return this.store.getSnapshot(noteId, timestamp); }\n\n async restoreNoteSnapshot(noteId: string, timestamp: number): Promise<Note | null> {\n const snapshot = await this.store.getSnapshot(noteId, timestamp);\n const existing = await this.store.getNote(noteId);\n if (!snapshot || !existing) return null;\n await this.maybeSaveSnapshot(existing, 'restore');\n this.lastSnapshotAt.set(noteId, Date.now());\n await this.store.pruneSnapshots(noteId, MAX_SNAPSHOTS_PER_NOTE);\n return this.store.updateNote(noteId, { title: snapshot.title, markdown: snapshot.markdown, tags: snapshot.tags, kind: snapshot.kind, status: snapshot.status });\n }\n\n async flush(): Promise<void> { await this.store.flush(); }\n async moveToGroup(noteId: string, groupId: string | null): Promise<Note | null> { return this.updateNote(noteId, { groupId: groupId ?? undefined }); }\n\n async createTask(title: string, source: CaptureSource, opts: { dueAt?: number; priority?: 'high' | 'medium' | 'low'; sourceSessionKey?: string; sourceNoteId?: string; groupId?: string } = {}): Promise<Note> {\n return this.createNote({\n title,\n markdown: `- [ ] ${title}`,\n kind: 'task',\n capturedVia: source,\n groupId: opts.groupId,\n taskMeta: { done: false, dueAt: opts.dueAt, priority: opts.priority, sourceSessionKey: opts.sourceSessionKey, sourceNoteId: opts.sourceNoteId },\n });\n }\n\n async toggleTaskDone(noteId: string): Promise<Note | null> {\n const note = await this.store.getNote(noteId);\n if (!note || note.kind !== 'task') return null;\n const done = !note.taskMeta?.done;\n const markdown = note.markdown.replace(/^- \\[[ xX]\\]/m, `- [${done ? 'x' : ' '}]`);\n return this.updateNote(noteId, { markdown, taskMeta: { ...note.taskMeta, done } });\n }\n\n async updateTaskMeta(noteId: string, patch: Partial<import('./types.js').NoteTaskMeta>): Promise<Note | null> {\n const note = await this.store.getNote(noteId);\n if (!note || note.kind !== 'task') return null;\n return this.updateNote(noteId, { taskMeta: { ...note.taskMeta, done: note.taskMeta?.done ?? false, ...patch } });\n }\n\n async recordOpen(noteId: string): Promise<Note | null> {\n return this.updateNote(noteId, { lastOpenedAt: Date.now() } as Partial<Note>);\n }\n\n private async maybeSaveSnapshot(note: Note, trigger: SnapshotTrigger): Promise<void> {\n if (trigger !== 'edit') {\n await this.store.saveSnapshot(note, trigger);\n this.lastSnapshotAt.set(note.id, Date.now());\n await this.store.pruneSnapshots(note.id, MAX_SNAPSHOTS_PER_NOTE);\n return;\n }\n const last = this.lastSnapshotAt.get(note.id) ?? 0;\n if (Date.now() - last < SNAPSHOT_THROTTLE_MS) return;\n await this.store.saveSnapshot(note, trigger);\n this.lastSnapshotAt.set(note.id, Date.now());\n await this.store.pruneSnapshots(note.id, MAX_SNAPSHOTS_PER_NOTE);\n }\n}\n\nexport { buildNoteAttachmentRef };\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.js","names":[],"sources":["../../../src/notes/store.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { readFile, mkdir, writeFile, rm, readdir } from 'node:fs/promises';\nimport { join } from 'node:path';\n\nimport { writeTextAtomic } from '../infra/write-file-atomic.js';\nimport { createLogger } from '../utils/logger.js';\nimport {\n deleteNoteAgentContextRecord,\n deleteNoteRecord,\n getNoteRecord,\n listNoteRecords,\n requireXopcDatabase,\n upsertNoteRecord,\n} from '../storage/sqlite/index.js';\nimport { buildNoteIndexMeta } from './note-index-meta.js';\nimport { resolveNoteMediaDir, resolveNoteHistoryDir } from './paths.js';\nimport type {\n Note,\n NoteIndexEntry,\n NoteSnapshot,\n NoteSnapshotEntry,\n NotesListQuery,\n SnapshotTrigger,\n} from './types.js';\n\nconst log = createLogger('NotesStore');\n\nexport class NotesStore {\n private initialized = false;\n\n async initialize(): Promise<void> {\n if (this.initialized) return;\n requireXopcDatabase();\n this.initialized = true;\n log.debug('NotesStore initialized');\n }\n\n async addNote(note: Note): Promise<void> {\n requireXopcDatabase();\n upsertNoteRecord(note);\n }\n\n async getNote(id: string): Promise<Note | null> {\n requireXopcDatabase();\n return getNoteRecord(id);\n }\n\n async updateNote(id: string, patch: Partial<Note>): Promise<Note | null> {\n const existing = await this.getNote(id);\n if (!existing) return null;\n\n const updated: Note = {\n ...existing,\n ...patch,\n id: existing.id,\n createdAt: existing.createdAt,\n updatedAt: Date.now(),\n };\n\n requireXopcDatabase();\n upsertNoteRecord(updated);\n return updated;\n }\n\n async deleteNote(id: string): Promise<boolean> {\n requireXopcDatabase();\n const deleted = deleteNoteRecord(id);\n if (!deleted) {\n return false;\n }\n\n deleteNoteAgentContextRecord(id);\n const mediaDir = resolveNoteMediaDir(id);\n await rm(mediaDir, { recursive: true, force: true }).catch(() => undefined);\n return true;\n }\n\n async listNotes(query: NotesListQuery = {}): Promise<{\n items: NoteIndexEntry[];\n total: number;\n limit: number;\n offset: number;\n hasMore: boolean;\n }> {\n requireXopcDatabase();\n return listNoteRecords(query);\n }\n\n async saveAttachment(\n noteId: string,\n fileName: string,\n buffer: Buffer,\n ): Promise<{ relativePath: string; size: number }> {\n const mediaDir = resolveNoteMediaDir(noteId);\n await mkdir(mediaDir, { recursive: true });\n const safeName = `${randomUUID().slice(0, 8)}_${fileName.replace(/[^a-zA-Z0-9._-]/g, '_')}`;\n const filePath = join(mediaDir, safeName);\n await writeFile(filePath, buffer);\n return { relativePath: safeName, size: buffer.length };\n }\n\n resolveAttachmentPath(noteId: string, relativePath: string): string {\n return join(resolveNoteMediaDir(noteId), relativePath);\n }\n\n async deleteAttachmentFile(noteId: string, relativePath: string): Promise<void> {\n const filePath = this.resolveAttachmentPath(noteId, relativePath);\n await rm(filePath, { force: true }).catch((err) => {\n log.warn({ err, noteId, relativePath }, 'Failed to remove note attachment file');\n });\n }\n\n async saveSnapshot(note: Note, trigger: SnapshotTrigger): Promise<void> {\n const historyDir = resolveNoteHistoryDir(note.id);\n await mkdir(historyDir, { recursive: true });\n const snapshot: NoteSnapshot = {\n noteId: note.id,\n timestamp: Date.now(),\n trigger,\n title: note.title,\n markdown: note.markdown,\n tags: note.tags,\n kind: note.kind,\n status: note.status,\n };\n const filePath = join(historyDir, `${snapshot.timestamp}.json`);\n await writeTextAtomic(filePath, JSON.stringify(snapshot, null, 2));\n log.debug({ noteId: note.id, trigger, timestamp: snapshot.timestamp }, 'Snapshot saved');\n }\n\n async listSnapshots(noteId: string): Promise<NoteSnapshotEntry[]> {\n const historyDir = resolveNoteHistoryDir(noteId);\n let files: string[];\n try {\n files = await readdir(historyDir);\n } catch {\n return [];\n }\n const entries: NoteSnapshotEntry[] = [];\n for (const file of files) {\n if (!file.endsWith('.json')) continue;\n const timestamp = parseInt(file.slice(0, -'.json'.length), 10);\n if (!Number.isFinite(timestamp)) continue;\n try {\n const content = await readFile(join(historyDir, file), 'utf-8');\n const snapshot = JSON.parse(content) as NoteSnapshot;\n const rawText = snapshot.markdown ?? '';\n entries.push({\n timestamp: snapshot.timestamp,\n trigger: snapshot.trigger,\n snippet: rawText.slice(0, 80) || undefined,\n });\n } catch {\n log.debug({ noteId, file }, 'Skipped unreadable snapshot');\n }\n }\n entries.sort((a, b) => b.timestamp - a.timestamp);\n return entries;\n }\n\n async getSnapshot(noteId: string, timestamp: number): Promise<NoteSnapshot | null> {\n const filePath = join(resolveNoteHistoryDir(noteId), `${timestamp}.json`);\n try {\n const content = await readFile(filePath, 'utf-8');\n return JSON.parse(content) as NoteSnapshot;\n } catch {\n return null;\n }\n }\n\n async pruneSnapshots(noteId: string, maxCount: number): Promise<void> {\n const historyDir = resolveNoteHistoryDir(noteId);\n let files: string[];\n try {\n files = await readdir(historyDir);\n } catch {\n return;\n }\n const jsonFiles = files.filter((f) => f.endsWith('.json')).sort();\n if (jsonFiles.length <= maxCount) return;\n const toDelete = jsonFiles.slice(0, jsonFiles.length - maxCount);\n for (const file of toDelete) {\n await rm(join(historyDir, file), { force: true }).catch(() => undefined);\n }\n log.debug({ noteId, deleted: toDelete.length }, 'Pruned old snapshots');\n }\n\n async deleteAllSnapshots(noteId: string): Promise<void> {\n const historyDir = resolveNoteHistoryDir(noteId);\n await rm(historyDir, { recursive: true, force: true }).catch(() => undefined);\n }\n\n /** No-op: SQLite writes are synchronous. Kept for API compatibility with tests. */\n async flush(): Promise<void> {}\n}\n\nexport { buildNoteIndexMeta };\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-version.js","names":["pkg.version"],"sources":["../../src/package-version.ts"],"sourcesContent":["import pkg from '../package.json' with { type: 'json' };\n\n/** Root `package.json` `version` (CLI, gateway, About UI). */\nexport const PACKAGE_VERSION: string = pkg.version;\n"],"mappings":";;;;;AAGa,mBAA0BA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.js","names":[],"sources":["../../../src/pets/factory.ts"],"sourcesContent":["import { constants } from 'node:fs';\nimport { access, mkdir, mkdtemp, readFile, rename, rm, writeFile } from 'node:fs/promises';\nimport { join, resolve } from 'node:path';\n\nimport { resolveStateDir } from '../config/paths-state.js';\nimport { DESKTOP_PET_ACTIONS, type DesktopPetPackageAction } from './manifest.js';\nimport { validateDesktopPetPackage } from './validator.js';\n\nexport { DESKTOP_PET_ACTIONS, type DesktopPetPackageAction } from './manifest.js';\n\nexport type CreateDesktopPetPackageInput = {\n id?: string;\n name?: string;\n prompt: string;\n description?: string;\n targetDir?: string;\n overwrite?: boolean;\n};\n\nexport type CreateDesktopPetPackageResult = {\n id: string;\n name: string;\n description: string;\n dir: string;\n manifestPath: string;\n thumbnailPath: string;\n spritesheetPath: string;\n sourcePrompt: string;\n};\n\nconst FRAME_SIZE = 96;\nconst MAX_FRAMES = 10;\n\ntype Palette = {\n body: string;\n accent: string;\n face: string;\n screen: string;\n cheek: string;\n};\n\ntype PetStyle = {\n seed: number;\n palette: Palette;\n ears: 'round' | 'antenna' | 'leaf' | 'spark';\n};\n\nexport function resolveDesktopPetsDir(): string {\n return join(resolveStateDir(), 'pets');\n}\n\nfunction hashString(value: string): number {\n let hash = 2166136261;\n for (let i = 0; i < value.length; i += 1) {\n hash ^= value.charCodeAt(i);\n hash = Math.imul(hash, 16777619);\n }\n return hash >>> 0;\n}\n\nfunction slugify(value: string, fallback: string): string {\n const slug = value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 48);\n return slug || fallback;\n}\n\nfunction normalizePackageId(value: string): string {\n return slugify(value.replace(/^custom:/i, ''), '');\n}\n\nfunction titleFromPrompt(prompt: string): string {\n const cleaned = prompt\n .replace(/[^\\p{L}\\p{N}\\s_-]+/gu, ' ')\n .trim()\n .split(/\\s+/)\n .slice(0, 4)\n .join(' ');\n return cleaned || 'Custom Pet';\n}\n\nfunction clampText(value: string, max: number): string {\n const trimmed = value.trim().replace(/\\s+/g, ' ');\n return trimmed.length > max ? `${trimmed.slice(0, max - 1)}...` : trimmed;\n}\n\nfunction hsl(seed: number, offset: number, saturation = 74, lightness = 56): string {\n const hue = (seed + offset) % 360;\n return `hsl(${hue} ${saturation}% ${lightness}%)`;\n}\n\nfunction paletteFromPrompt(prompt: string): PetStyle {\n const seed = hashString(prompt);\n const keyword = prompt.toLowerCase();\n const ears = keyword.includes('plant') || keyword.includes('leaf') || keyword.includes('seed')\n ? 'leaf'\n : keyword.includes('star') || keyword.includes('magic') || keyword.includes('spark')\n ? 'spark'\n : keyword.includes('robot') || keyword.includes('tech') || keyword.includes('signal')\n ? 'antenna'\n : 'round';\n return {\n seed,\n ears,\n palette: {\n body: hsl(seed, 0, 72, 53),\n accent: hsl(seed, 34, 82, 63),\n face: hsl(seed, 208, 70, 22),\n screen: hsl(seed, 176, 92, 78),\n cheek: hsl(seed, 318, 86, 72),\n },\n };\n}\n\nfunction esc(value: string): string {\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;');\n}\n\nexport function desktopPetActionFrameCount(action: DesktopPetPackageAction): number {\n if (action === 'idle') return 6;\n if (action === 'success' || action === 'error') return 8;\n return 10;\n}\n\nexport function desktopPetActionFps(action: DesktopPetPackageAction): number {\n if (action === 'idle') return 6;\n if (action === 'success' || action === 'error') return 12;\n return 10;\n}\n\nexport function desktopPetActionLoops(action: DesktopPetPackageAction): boolean {\n return action !== 'success' && action !== 'error';\n}\n\nfunction renderAccessory(action: DesktopPetPackageAction, frame: number, style: PetStyle): string {\n const t = frame / Math.max(1, desktopPetActionFrameCount(action) - 1);\n const bob = Math.sin(t * Math.PI * 2) * 2;\n const { palette } = style;\n if (action === 'typing') {\n const glow = frame % 2 === 0 ? 1 : 0.45;\n return `\n <g transform=\"translate(55 ${59 + bob})\">\n <rect x=\"1\" y=\"0\" width=\"36\" height=\"25\" rx=\"5\" fill=\"#1e3a8a\" stroke=\"#101827\" stroke-width=\"3\"/>\n <path d=\"M14 8l6 5-6 5\" fill=\"none\" stroke=\"${palette.screen}\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" opacity=\"${glow}\"/>\n <rect x=\"-1\" y=\"24\" width=\"41\" height=\"10\" rx=\"4\" fill=\"${palette.accent}\" stroke=\"#101827\" stroke-width=\"3\"/>\n <rect x=\"9\" y=\"28\" width=\"5\" height=\"2\" rx=\"1\" fill=\"#e0f2fe\" opacity=\"${glow}\"/>\n <rect x=\"19\" y=\"28\" width=\"5\" height=\"2\" rx=\"1\" fill=\"#e0f2fe\" opacity=\"${1 - glow / 3}\"/>\n <rect x=\"29\" y=\"28\" width=\"5\" height=\"2\" rx=\"1\" fill=\"#e0f2fe\" opacity=\"${glow}\"/>\n </g>`;\n }\n if (action === 'toolbox') {\n const open = frame % 2 === 0 ? -11 : -3;\n return `\n <g transform=\"translate(6 ${61 + bob})\">\n <rect x=\"6\" y=\"17\" width=\"36\" height=\"21\" rx=\"6\" fill=\"#fb923c\" stroke=\"#101827\" stroke-width=\"3\"/>\n <rect x=\"11\" y=\"${8 + open / 4}\" width=\"26\" height=\"12\" rx=\"6\" fill=\"#fdba74\" stroke=\"#101827\" stroke-width=\"3\" transform=\"rotate(${open} 11 20)\"/>\n <path d=\"M18 9h12v7H18z\" fill=\"none\" stroke=\"#101827\" stroke-width=\"3\"/>\n <rect x=\"17\" y=\"${10 + open / 2}\" width=\"5\" height=\"17\" rx=\"2\" fill=\"#e5e7eb\" stroke=\"#101827\" stroke-width=\"2\" transform=\"rotate(-24 19 26)\"/>\n <rect x=\"29\" y=\"${8 + open / 2}\" width=\"5\" height=\"17\" rx=\"2\" fill=\"#e5e7eb\" stroke=\"#101827\" stroke-width=\"2\" transform=\"rotate(25 31 24)\"/>\n </g>`;\n }\n if (action === 'search') {\n return `\n <g transform=\"translate(58 ${58 + bob}) rotate(${frame % 2 === 0 ? -7 : 4} 18 18)\">\n <circle cx=\"15\" cy=\"14\" r=\"11\" fill=\"#e0f2fe\" stroke=\"${palette.accent}\" stroke-width=\"5\"/>\n <rect x=\"24\" y=\"24\" width=\"17\" height=\"7\" rx=\"3\" fill=\"${palette.accent}\" stroke=\"#101827\" stroke-width=\"3\" transform=\"rotate(43 24 24)\"/>\n </g>`;\n }\n if (action === 'file') {\n return `\n <g transform=\"translate(59 ${55 + bob}) rotate(${frame % 2 === 0 ? -5 : 5} 16 20)\">\n <path d=\"M5 1h22l9 9v31H5z\" fill=\"#eff6ff\" stroke=\"#101827\" stroke-width=\"3\" stroke-linejoin=\"round\"/>\n <path d=\"M27 1v10h9\" fill=\"${palette.accent}\" stroke=\"#101827\" stroke-width=\"3\" stroke-linejoin=\"round\"/>\n <rect x=\"12\" y=\"20\" width=\"16\" height=\"3\" rx=\"1.5\" fill=\"${palette.body}\"/>\n <rect x=\"12\" y=\"28\" width=\"12\" height=\"3\" rx=\"1.5\" fill=\"${palette.body}\"/>\n </g>`;\n }\n if (action === 'terminal') {\n return `\n <g transform=\"translate(55 ${61 + bob})\">\n <rect x=\"0\" y=\"0\" width=\"39\" height=\"29\" rx=\"7\" fill=\"#111827\" stroke=\"#101827\" stroke-width=\"3\"/>\n <path d=\"M10 10l6 5-6 5\" fill=\"none\" stroke=\"#86efac\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" opacity=\"${frame % 2 === 0 ? 1 : 0.4}\"/>\n <path d=\"M20 20h9\" stroke=\"#86efac\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n </g>`;\n }\n if (action === 'browser') {\n return `\n <g transform=\"translate(55 ${58 + bob})\">\n <rect x=\"0\" y=\"0\" width=\"40\" height=\"31\" rx=\"7\" fill=\"#e0f2fe\" stroke=\"#101827\" stroke-width=\"3\"/>\n <path d=\"M1 11h38\" stroke=\"${palette.accent}\" stroke-width=\"8\"/>\n <circle cx=\"10\" cy=\"10\" r=\"2\" fill=\"#101827\"/>\n <circle cx=\"17\" cy=\"10\" r=\"2\" fill=\"#101827\"/>\n <rect x=\"11\" y=\"21\" width=\"20\" height=\"4\" rx=\"2\" fill=\"${palette.body}\"/>\n </g>`;\n }\n if (action === 'success') {\n return `\n <g fill=\"#facc15\" transform=\"translate(61 ${12 + bob})\">\n <path d=\"M12 0l3 8 8 3-8 3-3 8-3-8-8-3 8-3z\"/>\n <path d=\"M-12 18l2 5 5 2-5 2-2 5-2-5-5-2 5-2z\" opacity=\"0.78\"/>\n </g>`;\n }\n if (action === 'error') {\n return `\n <g transform=\"translate(61 ${56 + bob})\">\n <path d=\"M18 0l18 32H0z\" fill=\"#facc15\" stroke=\"#101827\" stroke-width=\"3\" stroke-linejoin=\"round\"/>\n <text x=\"18\" y=\"26\" text-anchor=\"middle\" font-family=\"Arial, sans-serif\" font-size=\"22\" font-weight=\"900\" fill=\"#101827\">!</text>\n </g>`;\n }\n return '';\n}\n\nfunction renderHead(style: PetStyle): string {\n const { palette } = style;\n if (style.ears === 'antenna') {\n return `\n <path d=\"M34 19l-5-10\" stroke=\"#101827\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n <circle cx=\"28\" cy=\"8\" r=\"4\" fill=\"${palette.accent}\" stroke=\"#101827\" stroke-width=\"2\"/>\n <path d=\"M65 18l7-9\" stroke=\"#101827\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n <circle cx=\"74\" cy=\"8\" r=\"4\" fill=\"${palette.accent}\" stroke=\"#101827\" stroke-width=\"2\"/>`;\n }\n if (style.ears === 'leaf') {\n return `\n <path d=\"M42 19c-8-13 7-18 16-10-1 11-9 15-16 10z\" fill=\"#84cc16\" stroke=\"#101827\" stroke-width=\"3\"/>\n <path d=\"M48 16l9-8\" stroke=\"#365314\" stroke-width=\"2\" stroke-linecap=\"round\"/>`;\n }\n if (style.ears === 'spark') {\n return `\n <path d=\"M45 4l4 10 10 4-10 4-4 10-4-10-10-4 10-4z\" fill=\"#facc15\" stroke=\"#101827\" stroke-width=\"3\"/>`;\n }\n return `\n <circle cx=\"29\" cy=\"22\" r=\"13\" fill=\"${palette.accent}\" stroke=\"#101827\" stroke-width=\"3\"/>\n <circle cx=\"66\" cy=\"22\" r=\"13\" fill=\"${palette.accent}\" stroke=\"#101827\" stroke-width=\"3\"/>`;\n}\n\nfunction renderFrame(style: PetStyle, action: DesktopPetPackageAction, frame: number): string {\n const t = frame / Math.max(1, desktopPetActionFrameCount(action) - 1);\n const bob = Math.sin(t * Math.PI * 2) * (action === 'idle' ? 2.5 : 1.5);\n const tilt = action === 'toolbox' ? Math.sin(t * Math.PI * 2) * 2.5 : 0;\n const { palette } = style;\n const face = action === 'error' ? '#3f0f18' : palette.face;\n const eye = action === 'error' ? '#fca5a5' : palette.screen;\n const mouth = action === 'success' ? 'M39 45q5 5 10 0' : 'M42 46h9';\n const leftArm = action === 'typing' ? 23 + (frame % 2) * 13 : action === 'toolbox' ? 39 + (frame % 2) * 10 : 9;\n const rightArm = action === 'typing' ? -23 - (frame % 2) * 13 : action === 'toolbox' ? -39 - (frame % 2) * 10 : -9;\n return `\n <g transform=\"translate(0 ${bob}) rotate(${tilt} 48 76)\">\n ${renderHead(style)}\n <rect x=\"21\" y=\"24\" width=\"58\" height=\"45\" rx=\"16\" fill=\"${palette.body}\" stroke=\"#101827\" stroke-width=\"4\"/>\n <rect x=\"32\" y=\"36\" width=\"38\" height=\"23\" rx=\"8\" fill=\"${face}\"/>\n <path d=\"M41 48q3 -5 6 0\" fill=\"none\" stroke=\"${eye}\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n <path d=\"M56 48q3 -5 6 0\" fill=\"none\" stroke=\"${eye}\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n <path d=\"${mouth}\" fill=\"none\" stroke=\"${eye}\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n <circle cx=\"32\" cy=\"56\" r=\"3\" fill=\"${palette.cheek}\" opacity=\"0.72\"/>\n <circle cx=\"69\" cy=\"56\" r=\"3\" fill=\"${palette.cheek}\" opacity=\"0.72\"/>\n <rect x=\"36\" y=\"66\" width=\"32\" height=\"21\" rx=\"8\" fill=\"${palette.body}\" stroke=\"#101827\" stroke-width=\"4\"/>\n <path d=\"M43 77h13\" stroke=\"#ffffff\" stroke-width=\"3\" stroke-linecap=\"round\" opacity=\"0.8\"/>\n <rect x=\"22\" y=\"70\" width=\"13\" height=\"20\" rx=\"7\" fill=\"${palette.body}\" stroke=\"#101827\" stroke-width=\"3\" transform=\"rotate(${leftArm} 29 80)\"/>\n <rect x=\"68\" y=\"70\" width=\"13\" height=\"20\" rx=\"7\" fill=\"${palette.body}\" stroke=\"#101827\" stroke-width=\"3\" transform=\"rotate(${rightArm} 75 80)\"/>\n <rect x=\"39\" y=\"83\" width=\"13\" height=\"8\" rx=\"4\" fill=\"${palette.body}\" stroke=\"#101827\" stroke-width=\"3\"/>\n <rect x=\"55\" y=\"83\" width=\"13\" height=\"8\" rx=\"4\" fill=\"${palette.body}\" stroke=\"#101827\" stroke-width=\"3\"/>\n </g>\n ${renderAccessory(action, frame, style)}`;\n}\n\nfunction renderSpritesheet(prompt: string): string {\n const style = paletteFromPrompt(prompt);\n const width = FRAME_SIZE * MAX_FRAMES;\n const height = FRAME_SIZE * DESKTOP_PET_ACTIONS.length;\n const frames = DESKTOP_PET_ACTIONS.flatMap((action, row) =>\n Array.from({ length: MAX_FRAMES }, (_, frame) => {\n const visible = frame < desktopPetActionFrameCount(action);\n return `<g transform=\"translate(${frame * FRAME_SIZE} ${row * FRAME_SIZE})\">${visible ? renderFrame(style, action, frame) : ''}</g>`;\n }),\n ).join('');\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\" viewBox=\"0 0 ${width} ${height}\">\n <rect width=\"${width}\" height=\"${height}\" fill=\"none\"/>\n ${frames}\n </svg>`;\n}\n\nfunction renderThumbnail(name: string, prompt: string): string {\n const style = paletteFromPrompt(prompt);\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${FRAME_SIZE}\" height=\"${FRAME_SIZE}\" viewBox=\"0 0 ${FRAME_SIZE} ${FRAME_SIZE}\">\n <rect width=\"${FRAME_SIZE}\" height=\"${FRAME_SIZE}\" rx=\"20\" fill=\"none\"/>\n ${renderFrame(style, 'idle', 0)}\n <title>${esc(name)}</title>\n </svg>`;\n}\n\nasync function pathExists(path: string): Promise<boolean> {\n try {\n await access(path, constants.F_OK);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function resolvePackageDir(targetRoot: string, id: string, overwrite: boolean): Promise<{ dir: string; id: string }> {\n let nextId = id;\n let dir = join(targetRoot, nextId);\n if (overwrite || !(await pathExists(dir))) return { dir, id: nextId };\n for (let i = 2; i < 100; i += 1) {\n nextId = `${id}-${i}`;\n dir = join(targetRoot, nextId);\n if (!(await pathExists(dir))) return { dir, id: nextId };\n }\n const suffix = Date.now().toString(36);\n nextId = `${id}-${suffix}`;\n return { dir: join(targetRoot, nextId), id: nextId };\n}\n\nasync function readExistingManifest(dir: string): Promise<Record<string, unknown> | null> {\n try {\n return JSON.parse(await readFile(join(dir, 'manifest.json'), 'utf8')) as Record<string, unknown>;\n } catch {\n return null;\n }\n}\n\nfunction assertChildPath(root: string, child: string): void {\n const normalizedRoot = resolve(root);\n const normalizedChild = resolve(child);\n if (\n normalizedChild !== normalizedRoot &&\n !normalizedChild.startsWith(`${normalizedRoot}\\\\`) &&\n !normalizedChild.startsWith(`${normalizedRoot}/`)\n ) {\n throw new Error(`Refusing to publish pet package outside target directory: ${normalizedChild}`);\n }\n}\n\nasync function publishPackageDir(targetRoot: string, tempDir: string, finalDir: string, overwrite: boolean): Promise<void> {\n assertChildPath(targetRoot, tempDir);\n assertChildPath(targetRoot, finalDir);\n if (!overwrite || !(await pathExists(finalDir))) {\n await rename(tempDir, finalDir);\n return;\n }\n\n const backupDir = `${finalDir}.backup-${Date.now().toString(36)}`;\n assertChildPath(targetRoot, backupDir);\n await rename(finalDir, backupDir);\n let published = false;\n try {\n await rename(tempDir, finalDir);\n published = true;\n } catch (e) {\n if (!(await pathExists(finalDir)) && (await pathExists(backupDir))) {\n await rename(backupDir, finalDir);\n }\n throw e;\n }\n if (published) {\n await rm(backupDir, { recursive: true, force: true }).catch(() => undefined);\n }\n}\n\nexport async function createDesktopPetPackage(\n input: CreateDesktopPetPackageInput,\n): Promise<CreateDesktopPetPackageResult> {\n const prompt = input.prompt.trim();\n if (!prompt) {\n throw new Error('prompt is required');\n }\n const targetRoot = input.targetDir ?? resolveDesktopPetsDir();\n await mkdir(targetRoot, { recursive: true });\n const requestedId = input.id?.trim() ? normalizePackageId(input.id) : null;\n const initialId = requestedId || slugify(input.name?.trim() || titleFromPrompt(prompt), `pet-${hashString(prompt).toString(36)}`);\n const { id, dir } = await resolvePackageDir(\n targetRoot,\n initialId,\n input.overwrite === true,\n );\n const existingManifest = input.overwrite === true ? await readExistingManifest(dir) : null;\n const existingName = typeof existingManifest?.name === 'string' ? existingManifest.name.trim() : '';\n const baseName = clampText(input.name?.trim() || existingName || titleFromPrompt(prompt), 36);\n const description = clampText(\n input.description?.trim() || `Custom pet generated from: ${prompt}`,\n 120,\n );\n\n const tempDir = await mkdtemp(join(targetRoot, `.tmp-${id}-`));\n const spritesheetPath = join(tempDir, 'pet.svg');\n const thumbnailPath = join(tempDir, 'thumbnail.svg');\n const manifestPath = join(tempDir, 'manifest.json');\n const manifest = {\n id,\n name: baseName,\n description,\n sourcePrompt: prompt,\n generatedAt: new Date().toISOString(),\n thumbnail: 'thumbnail.svg',\n canvasWidth: FRAME_SIZE,\n canvasHeight: FRAME_SIZE,\n animations: Object.fromEntries(\n DESKTOP_PET_ACTIONS.map((action, row) => [\n action,\n {\n src: 'pet.svg',\n frameWidth: FRAME_SIZE,\n frameHeight: FRAME_SIZE,\n frameCount: desktopPetActionFrameCount(action),\n fps: desktopPetActionFps(action),\n loop: desktopPetActionLoops(action),\n offsetX: 0,\n offsetY: row * FRAME_SIZE,\n },\n ]),\n ),\n };\n\n try {\n await writeFile(spritesheetPath, renderSpritesheet(prompt), 'utf8');\n await writeFile(thumbnailPath, renderThumbnail(baseName, prompt), 'utf8');\n await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\\n`, 'utf8');\n\n const validation = await validateDesktopPetPackage(tempDir);\n if (validation.ok === false) {\n const detailText = validation.issue.details?.length ? `: ${validation.issue.details.join('; ')}` : '';\n throw new Error(`${validation.issue.reason}${detailText}`);\n }\n await publishPackageDir(targetRoot, tempDir, dir, input.overwrite === true);\n } catch (e) {\n if (await pathExists(tempDir)) {\n await rm(tempDir, { recursive: true, force: true });\n }\n throw e;\n }\n\n return {\n id,\n name: baseName,\n description,\n dir,\n manifestPath: join(dir, 'manifest.json'),\n thumbnailPath: join(dir, 'thumbnail.svg'),\n spritesheetPath: join(dir, 'pet.svg'),\n sourcePrompt: prompt,\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.js","names":[],"sources":["../../../src/pets/manifest.ts"],"sourcesContent":["export const DESKTOP_PET_ACTIONS = [\n 'idle',\n 'typing',\n 'toolbox',\n 'search',\n 'file',\n 'terminal',\n 'browser',\n 'success',\n 'error',\n] as const;\n\nexport type DesktopPetPackageAction = (typeof DESKTOP_PET_ACTIONS)[number];\n"],"mappings":";AAAA,MAAa,sBAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"validator.js","names":[],"sources":["../../../src/pets/validator.ts"],"sourcesContent":["import { constants } from 'node:fs';\nimport { access, readFile } from 'node:fs/promises';\nimport { extname, join, resolve } from 'node:path';\n\nimport { DESKTOP_PET_ACTIONS, type DesktopPetPackageAction } from './manifest.js';\n\nexport type DesktopPetValidationIssue = {\n dir: string;\n reason: string;\n details?: string[];\n};\n\nexport type DesktopPetValidationResult =\n | { ok: true }\n | { ok: false; issue: DesktopPetValidationIssue };\n\ntype ManifestAnimation = {\n src: string;\n frameWidth: number;\n frameHeight: number;\n frameCount: number;\n fps: number;\n offsetX: number;\n offsetY: number;\n};\n\nfunction safeResolve(root: string, child: unknown): string | null {\n if (typeof child !== 'string' || !child.trim()) return null;\n const normalizedRoot = resolve(root);\n const candidate = resolve(root, child);\n if (candidate === normalizedRoot) return candidate;\n if (candidate.startsWith(`${normalizedRoot}\\\\`) || candidate.startsWith(`${normalizedRoot}/`)) return candidate;\n return null;\n}\n\nfunction positiveNumber(value: unknown): number | null {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : null;\n}\n\nfunction positiveRoundedNumber(value: unknown): number | null {\n const n = positiveNumber(value);\n if (n === null) return null;\n const rounded = Math.round(n);\n return rounded > 0 ? rounded : null;\n}\n\nfunction nonNegativeNumber(value: unknown, fallback: number): number | null {\n if (value === undefined) return fallback;\n return typeof value === 'number' && Number.isFinite(value) && value >= 0 ? value : null;\n}\n\nfunction supportedImagePath(path: string): boolean {\n return ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg'].includes(extname(path).toLowerCase());\n}\n\nasync function readableImage(path: string): Promise<boolean> {\n if (!supportedImagePath(path)) return false;\n try {\n await access(path, constants.R_OK);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction parseSvgDimension(value: string | undefined): number | null {\n if (!value) return null;\n const match = value.trim().match(/^(\\d+(?:\\.\\d+)?)/);\n if (!match) return null;\n const n = Number(match[1]);\n return Number.isFinite(n) && n > 0 ? n : null;\n}\n\nfunction parseSvgBounds(svg: string): { width: number; height: number } | null {\n const rootMatch = svg.match(/<svg\\b[^>]*>/i);\n if (!rootMatch) return null;\n const root = rootMatch[0];\n const width = parseSvgDimension(root.match(/\\bwidth=[\"']([^\"']+)[\"']/i)?.[1]);\n const height = parseSvgDimension(root.match(/\\bheight=[\"']([^\"']+)[\"']/i)?.[1]);\n if (width && height) return { width, height };\n const viewBox = root.match(/\\bviewBox=[\"']([^\"']+)[\"']/i)?.[1]?.trim();\n if (!viewBox) return null;\n const parts = viewBox.split(/[\\s,]+/).map(Number);\n if (parts.length !== 4 || parts.some((part) => !Number.isFinite(part))) return null;\n const [, , viewBoxWidth, viewBoxHeight] = parts;\n return viewBoxWidth > 0 && viewBoxHeight > 0 ? { width: viewBoxWidth, height: viewBoxHeight } : null;\n}\n\nasync function imageBounds(path: string): Promise<{ width: number; height: number } | null> {\n if (extname(path).toLowerCase() !== '.svg') return null;\n try {\n return parseSvgBounds(await readFile(path, 'utf8'));\n } catch {\n return null;\n }\n}\n\nfunction parseAnimation(action: DesktopPetPackageAction, raw: unknown, details: string[]): ManifestAnimation | null {\n if (!raw || typeof raw !== 'object') {\n details.push(`${action}: animation must be an object`);\n return null;\n }\n const obj = raw as Record<string, unknown>;\n const src = typeof obj.src === 'string' && obj.src.trim() ? obj.src.trim() : null;\n const frameWidth = positiveRoundedNumber(obj.frameWidth);\n const frameHeight = positiveRoundedNumber(obj.frameHeight);\n const frameCount = positiveRoundedNumber(obj.frameCount);\n const fps = positiveRoundedNumber(obj.fps);\n const offsetX = nonNegativeNumber(obj.offsetX, 0);\n const offsetY = nonNegativeNumber(obj.offsetY, 0);\n if (!src) details.push(`${action}: src is required`);\n if (!frameWidth || !frameHeight || !frameCount) {\n details.push(`${action}: frameWidth, frameHeight, and frameCount must be positive numbers`);\n }\n if (!fps) details.push(`${action}: fps must be a positive number`);\n if (offsetX === null || offsetY === null) details.push(`${action}: offsetX and offsetY must be non-negative numbers`);\n if (!src || !frameWidth || !frameHeight || !frameCount || !fps || offsetX === null || offsetY === null) {\n return null;\n }\n return {\n src,\n frameWidth,\n frameHeight,\n frameCount,\n fps,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY),\n };\n}\n\nfunction estimateSheetBounds(animations: ManifestAnimation[]): Map<string, { width: number; height: number }> {\n const bounds = new Map<string, { width: number; height: number }>();\n for (const animation of animations) {\n const width = animation.offsetX + animation.frameWidth * animation.frameCount;\n const height = animation.offsetY + animation.frameHeight;\n const existing = bounds.get(animation.src);\n bounds.set(animation.src, {\n width: Math.max(existing?.width ?? 0, width),\n height: Math.max(existing?.height ?? 0, height),\n });\n }\n return bounds;\n}\n\nexport async function validateDesktopPetPackage(dir: string): Promise<DesktopPetValidationResult> {\n const details: string[] = [];\n let manifest: Record<string, unknown>;\n try {\n manifest = JSON.parse(await readFile(join(dir, 'manifest.json'), 'utf8')) as Record<string, unknown>;\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n return { ok: false, issue: { dir, reason: 'manifest.json is missing or unreadable', details: [message] } };\n }\n\n if (typeof manifest.id !== 'string' || !manifest.id.trim()) details.push('id is required');\n if (typeof manifest.name !== 'string' || !manifest.name.trim()) details.push('name is required');\n if (typeof manifest.description !== 'string' || !manifest.description.trim()) {\n details.push('description is required');\n }\n if (positiveNumber(manifest.canvasWidth) === null || positiveNumber(manifest.canvasHeight) === null) {\n details.push('canvasWidth and canvasHeight must be positive numbers');\n }\n\n const thumbnailPath = safeResolve(dir, manifest.thumbnail);\n if (!thumbnailPath || !(await readableImage(thumbnailPath))) {\n details.push('thumbnail is required and must be a readable supported image');\n }\n\n const rawAnimations =\n manifest.animations && typeof manifest.animations === 'object'\n ? (manifest.animations as Record<string, unknown>)\n : null;\n if (!rawAnimations) {\n details.push('animations is required');\n }\n\n const animations: ManifestAnimation[] = [];\n if (rawAnimations) {\n for (const action of DESKTOP_PET_ACTIONS) {\n const animation = parseAnimation(action, rawAnimations[action], details);\n if (animation) animations.push(animation);\n }\n }\n\n for (const animation of animations) {\n const sourcePath = safeResolve(dir, animation.src);\n if (!sourcePath || !(await readableImage(sourcePath))) {\n details.push(`${animation.src}: image is missing, outside the pet folder, or uses an unsupported format`);\n }\n }\n\n const boundsBySrc = estimateSheetBounds(animations);\n for (const [src, requiredBounds] of boundsBySrc) {\n const sourcePath = safeResolve(dir, src);\n if (!sourcePath) continue;\n const actualBounds = await imageBounds(sourcePath);\n if (!actualBounds) continue;\n if (requiredBounds.width > actualBounds.width || requiredBounds.height > actualBounds.height) {\n details.push(\n `${src}: manifest needs ${requiredBounds.width}x${requiredBounds.height}, but image is ${actualBounds.width}x${actualBounds.height}`,\n );\n }\n }\n\n if (details.length > 0) return { ok: false, issue: { dir, reason: 'Invalid desktop pet package', details } };\n return { ok: true };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"kill-tree.js","names":[],"sources":["../../../src/process/kill-tree.ts"],"sourcesContent":["import { spawn } from \"node:child_process\";\n\nconst DEFAULT_GRACE_MS = 3000;\nconst MAX_GRACE_MS = 60_000;\n\n/**\n * Best-effort process-tree termination with graceful shutdown.\n * - Windows: use taskkill /T to include descendants. Sends SIGTERM-equivalent\n * first (without /F), then force-kills if process survives.\n * - Unix: send SIGTERM to process group first, wait grace period, then SIGKILL.\n *\n * This gives child processes a chance to clean up (close connections, remove\n * temp files, terminate their own children) before being hard-killed.\n *\n * When the child was spawned with `detached: false` (e.g. service-managed\n * runtime under launchd/systemd), pass `detached: false` to skip the Unix\n * `process.kill(-pid, ...)` group-kill — it would otherwise target the\n * gateway's own process group and SIGTERM the gateway itself. (#71662)\n */\nexport function killProcessTree(\n pid: number,\n opts?: { graceMs?: number; detached?: boolean },\n): void {\n if (!Number.isFinite(pid) || pid <= 0) {\n return;\n }\n\n const graceMs = normalizeGraceMs(opts?.graceMs);\n\n if (process.platform === \"win32\") {\n killProcessTreeWindows(pid, graceMs);\n return;\n }\n\n killProcessTreeUnix(pid, graceMs, opts?.detached !== false);\n}\n\nfunction normalizeGraceMs(value?: number): number {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n return DEFAULT_GRACE_MS;\n }\n return Math.max(0, Math.min(MAX_GRACE_MS, Math.floor(value)));\n}\n\nfunction isProcessAlive(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction killProcessTreeUnix(pid: number, graceMs: number, useGroupKill: boolean): void {\n // Step 1: Try graceful SIGTERM. Prefer process-group kill (`-pid`) when the\n // child was spawned detached so it has its own group; otherwise stick to the\n // direct pid to avoid SIGTERMing our own process group (the gateway). (#71662)\n if (useGroupKill) {\n try {\n process.kill(-pid, \"SIGTERM\");\n } catch {\n // Process group doesn't exist or we lack permission - try direct\n try {\n process.kill(pid, \"SIGTERM\");\n } catch {\n // Already gone\n return;\n }\n }\n } else {\n try {\n process.kill(pid, \"SIGTERM\");\n } catch {\n // Already gone\n return;\n }\n }\n\n // Step 2: Wait grace period, then SIGKILL if still alive\n setTimeout(() => {\n if (useGroupKill && isProcessAlive(-pid)) {\n try {\n process.kill(-pid, \"SIGKILL\");\n return;\n } catch {\n // Fall through to direct pid kill\n }\n }\n if (!isProcessAlive(pid)) {\n return;\n }\n try {\n process.kill(pid, \"SIGKILL\");\n } catch {\n // Process exited between liveness check and kill\n }\n }, graceMs).unref(); // Don't block event loop exit\n}\n\nfunction runTaskkill(args: string[]): void {\n try {\n spawn(\"taskkill\", args, {\n stdio: \"ignore\",\n detached: true,\n windowsHide: true,\n });\n } catch {\n // Ignore taskkill spawn failures\n }\n}\n\nfunction killProcessTreeWindows(pid: number, graceMs: number): void {\n // Step 1: Try graceful termination (taskkill without /F)\n runTaskkill([\"/T\", \"/PID\", String(pid)]);\n\n // Step 2: Wait grace period, then force kill only if pid still exists.\n // This avoids unconditional delayed /F kills after graceful shutdown.\n setTimeout(() => {\n if (!isProcessAlive(pid)) {\n return;\n }\n runTaskkill([\"/F\", \"/T\", \"/PID\", String(pid)]);\n }, graceMs).unref(); // Don't block event loop exit\n}\n"],"mappings":";;AAEA,MAAM,mBAAmB;AACzB,MAAM,eAAe;;;;;;;;;;;;;;;AAgBrB,SAAgB,gBACd,KACA,MACM;AACN,KAAI,CAAC,OAAO,SAAS,IAAI,IAAI,OAAO,EAClC;CAGF,MAAM,UAAU,iBAAiB,MAAM,QAAQ;AAE/C,KAAI,QAAQ,aAAa,SAAS;AAChC,yBAAuB,KAAK,QAAQ;AACpC;;AAGF,qBAAoB,KAAK,SAAS,MAAM,aAAa,MAAM;;AAG7D,SAAS,iBAAiB,OAAwB;AAChD,KAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,MAAM,CACtD,QAAO;AAET,QAAO,KAAK,IAAI,GAAG,KAAK,IAAI,cAAc,KAAK,MAAM,MAAM,CAAC,CAAC;;AAG/D,SAAS,eAAe,KAAsB;AAC5C,KAAI;AACF,UAAQ,KAAK,KAAK,EAAE;AACpB,SAAO;SACD;AACN,SAAO;;;AAIX,SAAS,oBAAoB,KAAa,SAAiB,cAA6B;AAItF,KAAI,aACF,KAAI;AACF,UAAQ,KAAK,CAAC,KAAK,UAAU;SACvB;AAEN,MAAI;AACF,WAAQ,KAAK,KAAK,UAAU;UACtB;AAEN;;;KAIJ,KAAI;AACF,UAAQ,KAAK,KAAK,UAAU;SACtB;AAEN;;AAKJ,kBAAiB;AACf,MAAI,gBAAgB,eAAe,CAAC,IAAI,CACtC,KAAI;AACF,WAAQ,KAAK,CAAC,KAAK,UAAU;AAC7B;UACM;AAIV,MAAI,CAAC,eAAe,IAAI,CACtB;AAEF,MAAI;AACF,WAAQ,KAAK,KAAK,UAAU;UACtB;IAGP,QAAQ,CAAC,OAAO;;AAGrB,SAAS,YAAY,MAAsB;AACzC,KAAI;AACF,QAAM,YAAY,MAAM;GACtB,OAAO;GACP,UAAU;GACV,aAAa;GACd,CAAC;SACI;;AAKV,SAAS,uBAAuB,KAAa,SAAuB;AAElE,aAAY;EAAC;EAAM;EAAQ,OAAO,IAAI;EAAC,CAAC;AAIxC,kBAAiB;AACf,MAAI,CAAC,eAAe,IAAI,CACtB;AAEF,cAAY;GAAC;GAAM;GAAM;GAAQ,OAAO,IAAI;GAAC,CAAC;IAC7C,QAAQ,CAAC,OAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"trust-store.js","names":["resolvePath"],"sources":["../../../src/project-trust/trust-store.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, realpathSync, writeFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { dirname, join, resolve as resolvePath } from 'node:path';\n\nimport lockfile from 'proper-lockfile';\n\nimport { resolveStateDir } from '../config/paths.js';\n\nexport type ProjectTrustDecision = boolean | null;\n\nexport interface ProjectTrustStoreEntry {\n path: string;\n decision: boolean;\n}\n\nexport interface ProjectTrustUpdate {\n path: string;\n decision: ProjectTrustDecision;\n}\n\nexport interface ProjectTrustOption {\n label: string;\n trusted: boolean;\n updates: ProjectTrustUpdate[];\n savedPath?: string;\n}\n\ntype TrustFile = Record<string, boolean | null | undefined>;\n\nconst TRUST_REQUIRING_XOPC_PROJECT_RESOURCES = [\n 'settings.json',\n 'extensions',\n 'skills',\n 'prompts',\n 'themes',\n 'SYSTEM.md',\n 'APPEND_SYSTEM.md',\n 'workspace.json',\n] as const;\n\nconst TRUST_REQUIRING_PROJECT_ROOT_RESOURCES = [\n 'AGENTS.md',\n] as const;\n\nfunction canonicalizePath(path: string): string {\n const resolved = resolvePath(path);\n try {\n return realpathSync.native(resolved);\n } catch {\n return resolved;\n }\n}\n\nfunction normalizeCwd(cwd: string): string {\n return canonicalizePath(cwd);\n}\n\nfunction readTrustFile(path: string): TrustFile {\n if (!existsSync(path)) return {};\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(readFileSync(path, 'utf8'));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n throw new Error(`Failed to read project trust store ${path}: ${errorMessage}`);\n }\n\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n throw new Error(`Invalid project trust store ${path}: expected an object`);\n }\n\n const data: TrustFile = {};\n for (const [key, value] of Object.entries(parsed)) {\n if (value !== true && value !== false && value !== null) {\n throw new Error(`Invalid project trust store ${path}: value for ${JSON.stringify(key)} must be true, false, or null`);\n }\n data[normalizeCwd(key)] = value;\n }\n return data;\n}\n\nfunction writeTrustFile(path: string, data: TrustFile): void {\n const sorted: TrustFile = {};\n for (const key of Object.keys(data).sort()) {\n const value = data[key];\n if (value === true || value === false || value === null) {\n sorted[key] = value;\n }\n }\n mkdirSync(dirname(path), { recursive: true });\n writeFileSync(path, `${JSON.stringify(sorted, null, 2)}\\n`, 'utf8');\n}\n\nfunction acquireTrustLockSync(path: string): () => void {\n const trustDir = dirname(path);\n mkdirSync(trustDir, { recursive: true });\n const maxAttempts = 10;\n const delayMs = 20;\n\n for (let attempt = 1; attempt <= maxAttempts; attempt++) {\n try {\n return lockfile.lockSync(trustDir, { realpath: false, lockfilePath: `${path}.lock` });\n } catch (err) {\n const code =\n typeof err === 'object' && err !== null && 'code' in err\n ? String((err as { code?: unknown }).code)\n : undefined;\n if (code !== 'ELOCKED' || attempt === maxAttempts) {\n throw err;\n }\n const startedAt = Date.now();\n while (Date.now() - startedAt < delayMs) {\n // Synchronous callers need a tiny bounded wait while another TUI updates trust.json.\n }\n }\n }\n\n throw new Error('Failed to acquire project trust store lock');\n}\n\nfunction withTrustFileLock<T>(path: string, fn: () => T): T {\n const release = acquireTrustLockSync(path);\n try {\n return fn();\n } finally {\n release();\n }\n}\n\nfunction findNearestTrustEntry(data: TrustFile, cwd: string): ProjectTrustStoreEntry | null {\n let currentDir = normalizeCwd(cwd);\n while (true) {\n const value = data[currentDir];\n if (value === true || value === false) {\n return { path: currentDir, decision: value };\n }\n\n const parentDir = dirname(currentDir);\n if (parentDir === currentDir) return null;\n currentDir = parentDir;\n }\n}\n\nexport function resolveProjectTrustStorePath(): string {\n return join(resolveStateDir(), 'trust.json');\n}\n\nexport function getProjectTrustParentPath(cwd: string): string | undefined {\n const trustPath = normalizeCwd(cwd);\n const parentDir = dirname(trustPath);\n return parentDir === trustPath ? undefined : parentDir;\n}\n\nexport function getProjectTrustOptions(\n cwd: string,\n options: { includeSessionOnly?: boolean } = {},\n): ProjectTrustOption[] {\n const trustPath = normalizeCwd(cwd);\n const trustOptions: ProjectTrustOption[] = [\n { label: 'Trust', trusted: true, updates: [{ path: trustPath, decision: true }], savedPath: trustPath },\n ];\n const parentPath = getProjectTrustParentPath(cwd);\n if (parentPath) {\n trustOptions.push({\n label: `Trust parent folder (${parentPath})`,\n trusted: true,\n updates: [\n { path: parentPath, decision: true },\n { path: trustPath, decision: null },\n ],\n savedPath: parentPath,\n });\n }\n if (options.includeSessionOnly) {\n trustOptions.push({ label: 'Trust (this session only)', trusted: true, updates: [] });\n }\n trustOptions.push({\n label: 'Do not trust',\n trusted: false,\n updates: [{ path: trustPath, decision: false }],\n savedPath: trustPath,\n });\n if (options.includeSessionOnly) {\n trustOptions.push({ label: 'Do not trust (this session only)', trusted: false, updates: [] });\n }\n return trustOptions;\n}\n\nexport function hasTrustRequiringProjectResources(cwd: string): boolean {\n const homeDir = canonicalizePath(process.env.HOME || homedir());\n const userAgentsSkillsDir = join(homeDir, '.agents', 'skills');\n let currentDir = canonicalizePath(cwd);\n\n if (TRUST_REQUIRING_PROJECT_ROOT_RESOURCES.some((entry) => existsSync(join(currentDir, entry)))) {\n return true;\n }\n\n const xopcProjectDir = join(currentDir, '.xopc');\n if (TRUST_REQUIRING_XOPC_PROJECT_RESOURCES.some((entry) => existsSync(join(xopcProjectDir, entry)))) {\n return true;\n }\n\n while (true) {\n const agentsSkillsDir = join(currentDir, '.agents', 'skills');\n if (agentsSkillsDir !== userAgentsSkillsDir && existsSync(agentsSkillsDir)) {\n return true;\n }\n\n const parentDir = dirname(currentDir);\n if (parentDir === currentDir) return false;\n currentDir = parentDir;\n }\n}\n\nexport class ProjectTrustStore {\n constructor(private readonly trustPath: string = resolveProjectTrustStorePath()) {}\n\n getPath(): string {\n return this.trustPath;\n }\n\n get(cwd: string): ProjectTrustDecision {\n return this.getEntry(cwd)?.decision ?? null;\n }\n\n getEntry(cwd: string): ProjectTrustStoreEntry | null {\n return withTrustFileLock(this.trustPath, () => findNearestTrustEntry(readTrustFile(this.trustPath), cwd));\n }\n\n set(cwd: string, decision: ProjectTrustDecision): void {\n this.setMany([{ path: cwd, decision }]);\n }\n\n setMany(decisions: ProjectTrustUpdate[]): void {\n withTrustFileLock(this.trustPath, () => {\n const data = readTrustFile(this.trustPath);\n for (const { path, decision } of decisions) {\n const key = normalizeCwd(path);\n if (decision === null) {\n delete data[key];\n } else {\n data[key] = decision;\n }\n }\n writeTrustFile(this.trustPath, data);\n });\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"automation-bind.js","names":[],"sources":["../../../src/projects/automation-bind.ts"],"sourcesContent":["import { getSqliteDatabase, runSqliteWriteTransaction } from '../storage/sqlite/transaction.js';\n\nexport function bindAutomationToProject(automationId: string, projectId: string): void {\n const db = getSqliteDatabase();\n if (!db.prepare(`SELECT 1 FROM projects WHERE project_id = ?`).get(projectId)) throw new Error(`Project not found: ${projectId}`);\n if (!db.prepare(`SELECT 1 FROM automations WHERE automation_id = ?`).get(automationId)) throw new Error(`Automation not found: ${automationId}`);\n runSqliteWriteTransaction((tx) => {\n const now = Date.now();\n tx.prepare(`UPDATE automations SET project_id = ?, updated_at_ms = ? WHERE automation_id = ?`).run(projectId, now, automationId);\n tx.prepare(`UPDATE projects SET last_active_at = ?, updated_at = ? WHERE project_id = ?`).run(now, now, projectId);\n });\n}\n"],"mappings":";;AAEA,SAAgB,wBAAwB,cAAsB,WAAyB;CACrF,MAAM,KAAK,mBAAmB;AAC9B,KAAI,CAAC,GAAG,QAAQ,8CAA8C,CAAC,IAAI,UAAU,CAAE,OAAM,IAAI,MAAM,sBAAsB,YAAY;AACjI,KAAI,CAAC,GAAG,QAAQ,oDAAoD,CAAC,IAAI,aAAa,CAAE,OAAM,IAAI,MAAM,yBAAyB,eAAe;AAChJ,4BAA2B,OAAO;EAChC,MAAM,MAAM,KAAK,KAAK;AACtB,KAAG,QAAQ,mFAAmF,CAAC,IAAI,WAAW,KAAK,aAAa;AAChI,KAAG,QAAQ,8EAA8E,CAAC,IAAI,KAAK,KAAK,UAAU;GAClH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"goal-bind.js","names":[],"sources":["../../../src/projects/goal-bind.ts"],"sourcesContent":["import { getSqliteDatabase, runSqliteWriteTransaction } from '../storage/sqlite/transaction.js';\n\nfunction assertProjectExists(projectId: string): void {\n const row = getSqliteDatabase().prepare(`SELECT 1 FROM projects WHERE project_id = ?`).get(projectId);\n if (!row) throw new Error(`Project not found: ${projectId}`);\n}\n\nfunction assertGoalExists(goalId: string): void {\n const row = getSqliteDatabase().prepare(`SELECT 1 FROM goals WHERE goal_id = ?`).get(goalId);\n if (!row) throw new Error(`Goal not found: ${goalId}`);\n}\n\nexport function bindGoalToProject(goalId: string, projectId: string): void {\n assertProjectExists(projectId);\n assertGoalExists(goalId);\n runSqliteWriteTransaction((db) => {\n const now = Date.now();\n db.prepare(`UPDATE goals SET project_id = ?, updated_at = ? WHERE goal_id = ?`).run(projectId, now, goalId);\n db.prepare(`UPDATE projects SET last_active_at = ?, updated_at = ? WHERE project_id = ?`).run(now, now, projectId);\n });\n}\n\nexport function unbindGoalFromProject(goalId: string): void {\n assertGoalExists(goalId);\n runSqliteWriteTransaction((db) => {\n db.prepare(`UPDATE goals SET project_id = NULL, updated_at = ? WHERE goal_id = ?`).run(Date.now(), goalId);\n });\n}\n\nexport function listProjectGoalIds(projectId: string, limit = 100, offset = 0): string[] {\n assertProjectExists(projectId);\n const rows = getSqliteDatabase()\n .prepare(`SELECT goal_id FROM goals WHERE project_id = ? ORDER BY updated_at DESC LIMIT ? OFFSET ?`)\n .all(projectId, Math.min(500, Math.max(1, Math.floor(limit))), Math.max(0, Math.floor(offset))) as Array<{ goal_id: string }>;\n return rows.map((row) => row.goal_id);\n}\n\nexport function bindGoalsToProject(goalIds: string[], projectId: string): void {\n assertProjectExists(projectId);\n runSqliteWriteTransaction((db) => {\n const now = Date.now();\n const stmt = db.prepare(`UPDATE goals SET project_id = ?, updated_at = ? WHERE goal_id = ?`);\n for (const goalId of goalIds) {\n stmt.run(projectId, now, goalId);\n }\n db.prepare(`UPDATE projects SET last_active_at = ?, updated_at = ? WHERE project_id = ?`).run(now, now, projectId);\n });\n}\n"],"mappings":";;AAEA,SAAS,oBAAoB,WAAyB;AAEpD,KAAI,CADQ,mBAAmB,CAAC,QAAQ,8CAA8C,CAAC,IAAI,UACnF,CAAE,OAAM,IAAI,MAAM,sBAAsB,YAAY;;AAG9D,SAAS,iBAAiB,QAAsB;AAE9C,KAAI,CADQ,mBAAmB,CAAC,QAAQ,wCAAwC,CAAC,IAAI,OAC7E,CAAE,OAAM,IAAI,MAAM,mBAAmB,SAAS;;AAGxD,SAAgB,kBAAkB,QAAgB,WAAyB;AACzE,qBAAoB,UAAU;AAC9B,kBAAiB,OAAO;AACxB,4BAA2B,OAAO;EAChC,MAAM,MAAM,KAAK,KAAK;AACtB,KAAG,QAAQ,oEAAoE,CAAC,IAAI,WAAW,KAAK,OAAO;AAC3G,KAAG,QAAQ,8EAA8E,CAAC,IAAI,KAAK,KAAK,UAAU;GAClH;;AAGJ,SAAgB,sBAAsB,QAAsB;AAC1D,kBAAiB,OAAO;AACxB,4BAA2B,OAAO;AAChC,KAAG,QAAQ,uEAAuE,CAAC,IAAI,KAAK,KAAK,EAAE,OAAO;GAC1G;;AAGJ,SAAgB,mBAAmB,WAAmB,QAAQ,KAAK,SAAS,GAAa;AACvF,qBAAoB,UAAU;AAI9B,QAHa,mBAAmB,CAC7B,QAAQ,2FAA2F,CACnG,IAAI,WAAW,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,CAAC,CACrF,CAAC,KAAK,QAAQ,IAAI,QAAQ;;AAGvC,SAAgB,mBAAmB,SAAmB,WAAyB;AAC7E,qBAAoB,UAAU;AAC9B,4BAA2B,OAAO;EAChC,MAAM,MAAM,KAAK,KAAK;EACtB,MAAM,OAAO,GAAG,QAAQ,oEAAoE;AAC5F,OAAK,MAAM,UAAU,QACnB,MAAK,IAAI,WAAW,KAAK,OAAO;AAElC,KAAG,QAAQ,8EAA8E,CAAC,IAAI,KAAK,KAAK,UAAU;GAClH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-bind.js","names":[],"sources":["../../../src/projects/memory-bind.ts"],"sourcesContent":["import { getSqliteDatabase, runSqliteWriteTransaction } from '../storage/sqlite/transaction.js';\n\nexport function bindMemoryRecordToProject(recordId: string, projectId: string): void {\n const db = getSqliteDatabase();\n if (!db.prepare(`SELECT 1 FROM projects WHERE project_id = ?`).get(projectId)) throw new Error(`Project not found: ${projectId}`);\n if (!db.prepare(`SELECT 1 FROM memory_records WHERE record_id = ?`).get(recordId)) throw new Error(`Memory record not found: ${recordId}`);\n runSqliteWriteTransaction((tx) => {\n const now = Date.now();\n tx.prepare(`UPDATE memory_records SET project_id = ?, updated_at = ? WHERE record_id = ?`).run(projectId, now, recordId);\n tx.prepare(`UPDATE projects SET last_active_at = ?, updated_at = ? WHERE project_id = ?`).run(now, now, projectId);\n });\n}\n"],"mappings":";;AAEA,SAAgB,0BAA0B,UAAkB,WAAyB;CACnF,MAAM,KAAK,mBAAmB;AAC9B,KAAI,CAAC,GAAG,QAAQ,8CAA8C,CAAC,IAAI,UAAU,CAAE,OAAM,IAAI,MAAM,sBAAsB,YAAY;AACjI,KAAI,CAAC,GAAG,QAAQ,mDAAmD,CAAC,IAAI,SAAS,CAAE,OAAM,IAAI,MAAM,4BAA4B,WAAW;AAC1I,4BAA2B,OAAO;EAChC,MAAM,MAAM,KAAK,KAAK;AACtB,KAAG,QAAQ,+EAA+E,CAAC,IAAI,WAAW,KAAK,SAAS;AACxH,KAAG,QAAQ,8EAA8E,CAAC,IAAI,KAAK,KAAK,UAAU;GAClH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-agent-suggestion.js","names":[],"sources":["../../../src/projects/project-agent-suggestion.ts"],"sourcesContent":["import type { Config } from '../config/schema.js';\nimport { agentExists } from '../routing/resolve-route.js';\nimport { inferProjectKind, type ProjectKindInference } from './project-kind.js';\n\nexport const CODING_PROJECT_AGENT_ID = 'coder';\n\nexport function suggestProjectDefaultAgentId(input: {\n config: Config;\n kind: ProjectKindInference['kind'];\n}): string | undefined {\n if (input.kind === 'coding' && agentExists(CODING_PROJECT_AGENT_ID, input.config)) {\n return CODING_PROJECT_AGENT_ID;\n }\n return undefined;\n}\n\nexport function inferSuggestedProjectDefaultAgentId(input: {\n config: Config;\n name?: string | null;\n description?: string | null;\n workspaceRoot?: string | null;\n projectKind?: string | null;\n}): string | undefined {\n const inferred = inferProjectKind(input);\n return suggestProjectDefaultAgentId({ config: input.config, kind: inferred.kind });\n}\n"],"mappings":";;;oBAC0D;AAG1D,MAAa,0BAA0B;AAEvC,SAAgB,6BAA6B,OAGtB;AACrB,KAAI,MAAM,SAAS,YAAY,YAAA,SAAqC,MAAM,OAAO,CAC/E,QAAO;;AAKX,SAAgB,oCAAoC,OAM7B;CACrB,MAAM,WAAW,iBAAiB,MAAM;AACxC,QAAO,6BAA6B;EAAE,QAAQ,MAAM;EAAQ,MAAM,SAAS;EAAM,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-agent.js","names":[],"sources":["../../../src/projects/project-agent.ts"],"sourcesContent":["import type { Config } from '../config/schema.js';\nimport { agentExists, getDefaultAgentId } from '../routing/resolve-route.js';\nimport type { ProjectService } from './project-service.js';\n\nfunction normalizeAgentId(value: string | undefined | null): string | undefined {\n const trimmed = value?.trim();\n return trimmed ? trimmed.toLowerCase() : undefined;\n}\n\nexport function resolveProjectAgentId(input: {\n config: Config;\n projects: ProjectService;\n explicitAgentId?: string | null;\n projectId?: string | null;\n}): string {\n const fallback = getDefaultAgentId(input.config);\n const explicitAgentId = normalizeAgentId(input.explicitAgentId);\n if (explicitAgentId) {\n return agentExists(explicitAgentId, input.config) ? explicitAgentId : fallback;\n }\n\n const projectId = input.projectId?.trim();\n const projectAgentId = projectId ? normalizeAgentId(input.projects.get(projectId)?.defaultAgentId) : undefined;\n if (projectAgentId && agentExists(projectAgentId, input.config)) {\n return projectAgentId;\n }\n return fallback;\n}\n\nexport function isValidProjectAgentId(config: Config, agentId: string | null | undefined): boolean {\n const normalized = normalizeAgentId(agentId);\n return !normalized || agentExists(normalized, config);\n}\n\nexport function normalizeProjectAgentId(agentId: string | null | undefined): string | undefined {\n return normalizeAgentId(agentId);\n}\n"],"mappings":";;oBAC6E;AAG7E,SAAS,iBAAiB,OAAsD;CAC9E,MAAM,UAAU,OAAO,MAAM;AAC7B,QAAO,UAAU,QAAQ,aAAa,GAAG,KAAA;;AAG3C,SAAgB,sBAAsB,OAK3B;CACT,MAAM,WAAW,kBAAkB,MAAM,OAAO;CAChD,MAAM,kBAAkB,iBAAiB,MAAM,gBAAgB;AAC/D,KAAI,gBACF,QAAO,YAAY,iBAAiB,MAAM,OAAO,GAAG,kBAAkB;CAGxE,MAAM,YAAY,MAAM,WAAW,MAAM;CACzC,MAAM,iBAAiB,YAAY,iBAAiB,MAAM,SAAS,IAAI,UAAU,EAAE,eAAe,GAAG,KAAA;AACrG,KAAI,kBAAkB,YAAY,gBAAgB,MAAM,OAAO,CAC7D,QAAO;AAET,QAAO;;AAGT,SAAgB,sBAAsB,QAAgB,SAA6C;CACjG,MAAM,aAAa,iBAAiB,QAAQ;AAC5C,QAAO,CAAC,cAAc,YAAY,YAAY,OAAO;;AAGvD,SAAgB,wBAAwB,SAAwD;AAC9F,QAAO,iBAAiB,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-kind.js","names":[],"sources":["../../../src/projects/project-kind.ts"],"sourcesContent":["import { existsSync, readdirSync, statSync } from 'node:fs';\nimport { join } from 'node:path';\n\nimport { canonicalWorkspacePath } from './workspace-project.js';\n\nexport type ProjectKind = 'coding' | 'general' | 'unknown';\nexport type ProjectKindOverride = 'auto' | 'coding' | 'general';\n\nexport type ProjectKindInference = {\n kind: ProjectKind;\n confidence: number;\n reasons: string[];\n};\n\nconst STRONG_CODE_MARKERS = [\n 'package.json',\n 'pnpm-lock.yaml',\n 'yarn.lock',\n 'package-lock.json',\n 'tsconfig.json',\n 'go.mod',\n 'Cargo.toml',\n 'pyproject.toml',\n 'requirements.txt',\n 'pom.xml',\n 'build.gradle',\n 'Makefile',\n 'Dockerfile',\n 'deno.json',\n 'deno.jsonc',\n 'composer.json',\n 'Gemfile',\n] as const;\n\nconst WEAK_CODE_DIRECTORIES = ['src', 'app', 'lib', 'tests', 'test', '__tests__', '.github'] as const;\nconst CODE_EXTENSIONS = new Set([\n '.c',\n '.cc',\n '.cpp',\n '.cs',\n '.css',\n '.go',\n '.h',\n '.hpp',\n '.html',\n '.java',\n '.js',\n '.jsx',\n '.kt',\n '.mjs',\n '.php',\n '.py',\n '.rb',\n '.rs',\n '.sh',\n '.swift',\n '.ts',\n '.tsx',\n]);\n\nfunction normalizeOverride(value: string | null | undefined): ProjectKindOverride {\n const normalized = value?.trim().toLowerCase();\n return normalized === 'coding' || normalized === 'general' ? normalized : 'auto';\n}\n\nfunction hasSourceExtension(name: string): boolean {\n const lower = name.toLowerCase();\n for (const extension of CODE_EXTENSIONS) {\n if (lower.endsWith(extension)) return true;\n }\n return false;\n}\n\nfunction readDirectoryNames(pathValue: string): string[] {\n try {\n return readdirSync(pathValue).slice(0, 200);\n } catch {\n return [];\n }\n}\n\nfunction directoryExists(pathValue: string): boolean {\n try {\n return statSync(pathValue).isDirectory();\n } catch {\n return false;\n }\n}\n\nexport function inferProjectKind(input: {\n name?: string | null;\n description?: string | null;\n workspaceRoot?: string | null;\n projectKind?: string | null;\n}): ProjectKindInference {\n const override = normalizeOverride(input.projectKind);\n if (override === 'coding') return { kind: 'coding', confidence: 1, reasons: ['selected coding project type'] };\n if (override === 'general') return { kind: 'general', confidence: 1, reasons: ['selected general project type'] };\n\n const workspaceRoot = canonicalWorkspacePath(input.workspaceRoot);\n const reasons: string[] = [];\n let score = 0;\n\n if (workspaceRoot && directoryExists(workspaceRoot)) {\n for (const marker of STRONG_CODE_MARKERS) {\n if (existsSync(join(workspaceRoot, marker))) {\n score += 4;\n reasons.push(`found ${marker}`);\n break;\n }\n }\n\n for (const dir of WEAK_CODE_DIRECTORIES) {\n if (directoryExists(join(workspaceRoot, dir))) {\n score += 1;\n reasons.push(`found ${dir}/`);\n break;\n }\n }\n\n if (readDirectoryNames(workspaceRoot).some(hasSourceExtension)) {\n score += 2;\n reasons.push('found source files');\n } else {\n for (const dir of ['src', 'app', 'lib']) {\n const childDir = join(workspaceRoot, dir);\n if (directoryExists(childDir) && readDirectoryNames(childDir).some(hasSourceExtension)) {\n score += 2;\n reasons.push(`found source files in ${dir}/`);\n break;\n }\n }\n }\n }\n\n if (score >= 4) return { kind: 'coding', confidence: 0.9, reasons };\n if (score >= 3) return { kind: 'coding', confidence: 0.75, reasons };\n if (workspaceRoot) return { kind: 'general', confidence: 0.55, reasons };\n return { kind: 'unknown', confidence: 0.25, reasons };\n}\n"],"mappings":";;;;AAcA,MAAM,sBAAsB;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,wBAAwB;CAAC;CAAO;CAAO;CAAO;CAAS;CAAQ;CAAa;CAAU;AAC5F,MAAM,kBAAkB,IAAI,IAAI;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAS,kBAAkB,OAAuD;CAChF,MAAM,aAAa,OAAO,MAAM,CAAC,aAAa;AAC9C,QAAO,eAAe,YAAY,eAAe,YAAY,aAAa;;AAG5E,SAAS,mBAAmB,MAAuB;CACjD,MAAM,QAAQ,KAAK,aAAa;AAChC,MAAK,MAAM,aAAa,gBACtB,KAAI,MAAM,SAAS,UAAU,CAAE,QAAO;AAExC,QAAO;;AAGT,SAAS,mBAAmB,WAA6B;AACvD,KAAI;AACF,SAAO,YAAY,UAAU,CAAC,MAAM,GAAG,IAAI;SACrC;AACN,SAAO,EAAE;;;AAIb,SAAS,gBAAgB,WAA4B;AACnD,KAAI;AACF,SAAO,SAAS,UAAU,CAAC,aAAa;SAClC;AACN,SAAO;;;AAIX,SAAgB,iBAAiB,OAKR;CACvB,MAAM,WAAW,kBAAkB,MAAM,YAAY;AACrD,KAAI,aAAa,SAAU,QAAO;EAAE,MAAM;EAAU,YAAY;EAAG,SAAS,CAAC,+BAA+B;EAAE;AAC9G,KAAI,aAAa,UAAW,QAAO;EAAE,MAAM;EAAW,YAAY;EAAG,SAAS,CAAC,gCAAgC;EAAE;CAEjH,MAAM,gBAAgB,uBAAuB,MAAM,cAAc;CACjE,MAAM,UAAoB,EAAE;CAC5B,IAAI,QAAQ;AAEZ,KAAI,iBAAiB,gBAAgB,cAAc,EAAE;AACnD,OAAK,MAAM,UAAU,oBACnB,KAAI,WAAW,KAAK,eAAe,OAAO,CAAC,EAAE;AAC3C,YAAS;AACT,WAAQ,KAAK,SAAS,SAAS;AAC/B;;AAIJ,OAAK,MAAM,OAAO,sBAChB,KAAI,gBAAgB,KAAK,eAAe,IAAI,CAAC,EAAE;AAC7C,YAAS;AACT,WAAQ,KAAK,SAAS,IAAI,GAAG;AAC7B;;AAIJ,MAAI,mBAAmB,cAAc,CAAC,KAAK,mBAAmB,EAAE;AAC9D,YAAS;AACT,WAAQ,KAAK,qBAAqB;QAElC,MAAK,MAAM,OAAO;GAAC;GAAO;GAAO;GAAM,EAAE;GACvC,MAAM,WAAW,KAAK,eAAe,IAAI;AACzC,OAAI,gBAAgB,SAAS,IAAI,mBAAmB,SAAS,CAAC,KAAK,mBAAmB,EAAE;AACtF,aAAS;AACT,YAAQ,KAAK,yBAAyB,IAAI,GAAG;AAC7C;;;;AAMR,KAAI,SAAS,EAAG,QAAO;EAAE,MAAM;EAAU,YAAY;EAAK;EAAS;AACnE,KAAI,SAAS,EAAG,QAAO;EAAE,MAAM;EAAU,YAAY;EAAM;EAAS;AACpE,KAAI,cAAe,QAAO;EAAE,MAAM;EAAW,YAAY;EAAM;EAAS;AACxE,QAAO;EAAE,MAAM;EAAW,YAAY;EAAM;EAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-loop.js","names":[],"sources":["../../../src/projects/project-loop.ts"],"sourcesContent":["import type { GoalWithDetails } from '../goals/index.js';\nimport type { MemoryRecord } from '../agent/memory/types.js';\nimport type { ProjectWithDetails } from './types.js';\n\nexport type ProjectWorkflowRunBrief = {\n runId: string;\n definitionId: string;\n status: string;\n createdAt: number;\n errorMessage?: string;\n};\n\nexport type ProjectAttentionItem = {\n id: string;\n kind: 'blocked_goal' | 'stale_goal' | 'failed_workflow';\n title: string;\n detail?: string;\n status?: string;\n href?: string;\n updatedAt?: number;\n};\n\nexport type ProjectTimelineItem = {\n id: string;\n kind: 'session' | 'goal' | 'workflow' | 'memory';\n title: string;\n detail?: string;\n timestamp: number;\n status?: string;\n href?: string;\n};\n\nexport type ProjectLoopOverview = {\n activeGoals: GoalWithDetails[];\n blockedGoals: GoalWithDetails[];\n staleGoals: GoalWithDetails[];\n nextActions: Array<{\n goalId: string;\n title: string;\n nextAction?: string;\n status: string;\n updatedAt?: number;\n }>;\n attentionItems: ProjectAttentionItem[];\n timeline: ProjectTimelineItem[];\n digest: {\n status: 'healthy' | 'attention' | 'idle' | 'empty';\n summary: string;\n nextAction?: string;\n };\n failedWorkflowRuns: ProjectWorkflowRunBrief[];\n recommendedAction?: string;\n};\n\nconst ACTIVE_GOAL_STATUSES = new Set(['active', 'paused', 'blocked', 'needs_input']);\nconst STALE_GOAL_STATUSES = new Set(['active', 'paused']);\nconst DEFAULT_STALE_AFTER_MS = 7 * 24 * 60 * 60 * 1000;\n\nfunction goalUpdatedAtDesc(left: GoalWithDetails, right: GoalWithDetails): number {\n return right.updatedAt - left.updatedAt;\n}\n\nfunction compactText(value: string | undefined, max = 180): string | undefined {\n const trimmed = value?.trim().replace(/\\s+/g, ' ');\n if (!trimmed) return undefined;\n return trimmed.length <= max ? trimmed : `${trimmed.slice(0, max - 3).trimEnd()}...`;\n}\n\nexport function buildProjectLoopOverview(input: {\n project: ProjectWithDetails;\n goals: GoalWithDetails[];\n recentWorkflowRuns: ProjectWorkflowRunBrief[];\n failedWorkflowRuns?: ProjectWorkflowRunBrief[];\n memoryRecords?: MemoryRecord[];\n nowMs?: number;\n staleAfterMs?: number;\n}): ProjectLoopOverview {\n const nowMs = input.nowMs ?? Date.now();\n const staleCutoff = nowMs - (input.staleAfterMs ?? DEFAULT_STALE_AFTER_MS);\n const projectGoals = [...input.goals].sort(goalUpdatedAtDesc);\n const activeGoals = projectGoals.filter((goal) => ACTIVE_GOAL_STATUSES.has(goal.status)).slice(0, 6);\n const blockedGoals = projectGoals.filter((goal) => goal.status === 'blocked' || goal.status === 'needs_input').slice(0, 4);\n const staleGoals = projectGoals\n .filter((goal) => STALE_GOAL_STATUSES.has(goal.status) && goal.updatedAt < staleCutoff)\n .slice(0, 5);\n const nextActions = activeGoals\n .filter((goal) => goal.nextAction?.trim())\n .slice(0, 5)\n .map((goal) => ({\n goalId: goal.id,\n title: goal.title,\n nextAction: goal.nextAction,\n status: goal.status,\n updatedAt: goal.updatedAt,\n }));\n const failedWorkflowRuns = (input.failedWorkflowRuns ?? input.recentWorkflowRuns.filter((run) => (\n run.status === 'failed' || run.status === 'timeout' || run.status === 'cancelled'\n ))).slice(0, 5);\n\n const attentionItems: ProjectAttentionItem[] = [\n ...blockedGoals.map((goal) => ({\n id: `goal:${goal.id}:blocked`,\n kind: 'blocked_goal' as const,\n title: goal.title,\n detail: compactText(goal.blockedReason || goal.nextAction || goal.description),\n status: goal.status,\n href: `/goals/${encodeURIComponent(goal.id)}`,\n updatedAt: goal.updatedAt,\n })),\n ...staleGoals.map((goal) => ({\n id: `goal:${goal.id}:stale`,\n kind: 'stale_goal' as const,\n title: goal.title,\n detail: compactText(goal.nextAction || goal.description || 'Goal has not changed recently.'),\n status: goal.status,\n href: `/goals/${encodeURIComponent(goal.id)}`,\n updatedAt: goal.updatedAt,\n })),\n ...failedWorkflowRuns.map((run) => ({\n id: `workflow:${run.runId}:failed`,\n kind: 'failed_workflow' as const,\n title: run.definitionId,\n detail: compactText(run.errorMessage || run.status),\n status: run.status,\n href: `/workflows?run=${encodeURIComponent(run.runId)}`,\n updatedAt: run.createdAt,\n })),\n ].slice(0, 8);\n\n const timeline: ProjectTimelineItem[] = [\n ...input.project.recentSessions.map((session) => ({\n id: `session:${session.key}`,\n kind: 'session' as const,\n title: session.name ?? session.key,\n detail: session.agentId,\n timestamp: Date.parse(session.updatedAt),\n href: `/chat/${encodeURIComponent(session.key)}`,\n })),\n ...projectGoals.slice(0, 8).map((goal) => ({\n id: `goal:${goal.id}`,\n kind: 'goal' as const,\n title: goal.title,\n detail: compactText(goal.nextAction || goal.blockedReason || goal.description),\n timestamp: goal.updatedAt,\n status: goal.status,\n href: `/goals/${encodeURIComponent(goal.id)}`,\n })),\n ...input.recentWorkflowRuns.map((run) => ({\n id: `workflow:${run.runId}`,\n kind: 'workflow' as const,\n title: run.definitionId,\n detail: run.status,\n timestamp: run.createdAt,\n status: run.status,\n href: `/workflows?run=${encodeURIComponent(run.runId)}`,\n })),\n ...(input.memoryRecords ?? []).slice(0, 5).map((record) => ({\n id: `memory:${record.id}`,\n kind: 'memory' as const,\n title: record.kind,\n detail: compactText(record.content),\n timestamp: Date.parse(record.updatedAt),\n status: record.status,\n })),\n ]\n .filter((item) => Number.isFinite(item.timestamp))\n .sort((left, right) => right.timestamp - left.timestamp)\n .slice(0, 12);\n\n const recommendedAction = nextActions[0]?.nextAction\n ?? blockedGoals[0]?.blockedReason\n ?? staleGoals[0]?.nextAction\n ?? activeGoals[0]?.title\n ?? (input.project.brief ? 'Open a new chat to continue from the project brief.' : undefined);\n\n const digestStatus =\n attentionItems.length > 0 ? 'attention'\n : activeGoals.length > 0 || input.recentWorkflowRuns.some((run) => run.status === 'running' || run.status === 'queued') ? 'healthy'\n : timeline.length > 0 ? 'idle'\n : 'empty';\n const digestSummary =\n digestStatus === 'attention'\n ? `${attentionItems.length} item(s) need attention: ${blockedGoals.length} blocker(s), ${staleGoals.length} stale goal(s), ${failedWorkflowRuns.length} failed workflow run(s).`\n : digestStatus === 'healthy'\n ? `${activeGoals.length} active goal(s), ${nextActions.length} next action(s), and ${input.recentWorkflowRuns.length} recent workflow run(s).`\n : digestStatus === 'idle'\n ? 'Recent activity exists, but no active goal is driving the project.'\n : 'No project activity has been recorded yet.';\n\n return {\n activeGoals,\n blockedGoals,\n staleGoals,\n nextActions,\n attentionItems,\n timeline,\n digest: {\n status: digestStatus,\n summary: digestSummary,\n nextAction: recommendedAction,\n },\n failedWorkflowRuns,\n recommendedAction,\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-service.js","names":[],"sources":["../../../src/projects/project-service.ts"],"sourcesContent":["import { changedFieldsFromPatch, emitActivity, systemActivityActor, systemActivitySource } from '../activity/emitter.js';\nimport { getSessionMetadata } from '../storage/sqlite/index.js';\nimport { ProjectStore } from './project-store.js';\nimport { bindGoalToProject, listProjectGoalIds, unbindGoalFromProject } from './goal-bind.js';\nimport { bindSessionToProject, listProjectSessionKeys, unbindSessionFromProject } from './session-bind.js';\nimport type { CreateProjectInput, Project, ProjectListQuery, ProjectListResult, ProjectWithDetails, SidebarProjectListQuery, UpdateProjectInput } from './types.js';\nimport {\n canonicalWorkspacePath,\n ensureWorkspaceDirectory,\n inferProjectNameFromWorkspaceRoot,\n isPathSameOrInsideWorkspace,\n isSafeAutoCreateWorkspaceRoot,\n ProjectWorkspaceConflictError,\n ProjectWorkspaceMissingError,\n resolveWorkspaceProjectRoot,\n workspaceDirectoryExists,\n type WorkspaceProjectMatch,\n} from './workspace-project.js';\n\nexport type ProjectSuggestion = {\n projectId: string;\n projectName: string;\n score: number;\n reason: string;\n};\n\nexport class ProjectService {\n constructor(private readonly store = new ProjectStore()) {}\n\n private listAllProjects(): Project[] {\n const items: Project[] = [];\n let offset = 0;\n const limit = 500;\n while (true) {\n const page = this.list({ limit, offset });\n items.push(...page.items);\n if (!page.hasMore || page.items.length === 0) break;\n offset += page.items.length;\n }\n return items;\n }\n\n create(input: CreateProjectInput): Project {\n const rawWorkspaceRoot = input.workspaceRoot?.trim();\n const workspaceRoot = rawWorkspaceRoot ? canonicalWorkspacePath(rawWorkspaceRoot) : undefined;\n if (rawWorkspaceRoot && !workspaceRoot) {\n throw new Error('Invalid workspace root');\n }\n if (workspaceRoot) {\n const existing = this.findByWorkspaceRoot(workspaceRoot);\n if (existing) throw new ProjectWorkspaceConflictError(existing);\n if (!workspaceDirectoryExists(workspaceRoot)) {\n if (input.createWorkspaceRoot === true) {\n ensureWorkspaceDirectory(workspaceRoot);\n } else {\n throw new ProjectWorkspaceMissingError(workspaceRoot);\n }\n }\n }\n const name = input.name?.trim() || inferProjectNameFromWorkspaceRoot(workspaceRoot) || '';\n const slug = input.slug?.trim() || this.store.generateSlug(name);\n const project = this.store.create({ ...input, name, slug, workspaceRoot });\n emitActivity({\n type: 'project.created',\n primaryObject: { kind: 'project', id: project.id, title: project.name },\n actor: systemActivityActor(),\n source: systemActivitySource(),\n payload: {\n name: project.name,\n workspaceRoot: project.workspaceRoot,\n brief: project.brief,\n },\n scopes: [{ scopeKind: 'project', scopeId: project.id, reason: 'object_owner' }],\n nowMs: project.createdAt,\n });\n return project;\n }\n\n get(id: string): Project | null {\n return this.store.get(id);\n }\n\n getBySlug(slug: string): Project | null {\n return this.store.findBySlug(slug);\n }\n\n list(query?: ProjectListQuery): ProjectListResult {\n return this.store.list(query);\n }\n\n listWithSidebarSessions(query?: SidebarProjectListQuery): ProjectListResult {\n return this.store.listWithSidebarSessions(query);\n }\n\n findByWorkspaceRoot(workspaceRoot: string, options: { excludeProjectId?: string } = {}): Project | null {\n const target = canonicalWorkspacePath(workspaceRoot);\n if (!target) return null;\n for (const project of this.listAllProjects()) {\n if (options.excludeProjectId && project.id === options.excludeProjectId) continue;\n const projectRoot = canonicalWorkspacePath(project.workspaceRoot);\n if (projectRoot && isPathSameOrInsideWorkspace(projectRoot, target) && isPathSameOrInsideWorkspace(target, projectRoot)) {\n return project;\n }\n }\n return null;\n }\n\n resolveForWorkspacePath(workspacePath: string): { project: Project; reason: 'exact' | 'contained' } | null {\n const target = canonicalWorkspacePath(workspacePath);\n if (!target) return null;\n let best: { project: Project; root: string; reason: 'exact' | 'contained' } | null = null;\n for (const project of this.listAllProjects()) {\n const root = canonicalWorkspacePath(project.workspaceRoot);\n if (!root || !isPathSameOrInsideWorkspace(root, target)) continue;\n const reason = isPathSameOrInsideWorkspace(root, target) && isPathSameOrInsideWorkspace(target, root) ? 'exact' : 'contained';\n if (!best || root.length > best.root.length) {\n best = { project, root, reason };\n }\n }\n return best ? { project: best.project, reason: best.reason } : null;\n }\n\n resolveOrCreateForWorkspacePath(input: {\n workspacePath: string;\n agentId?: string;\n defaultAgentId?: string;\n autoCreate?: boolean;\n }): WorkspaceProjectMatch | null {\n const existing = this.resolveForWorkspacePath(input.workspacePath);\n if (existing) return { project: existing.project, reason: existing.reason, created: false };\n if (!input.autoCreate) return null;\n const workspaceRoot = resolveWorkspaceProjectRoot(input.workspacePath) ?? canonicalWorkspacePath(input.workspacePath);\n if (!workspaceRoot || !isSafeAutoCreateWorkspaceRoot(workspaceRoot)) return null;\n const rootExisting = this.resolveForWorkspacePath(workspaceRoot);\n if (rootExisting) return { project: rootExisting.project, reason: rootExisting.reason, created: false };\n const project = this.create({\n name: inferProjectNameFromWorkspaceRoot(workspaceRoot) ?? undefined,\n workspaceRoot,\n defaultAgentId: Object.hasOwn(input, 'defaultAgentId') ? input.defaultAgentId : input.agentId,\n });\n return { project, reason: 'auto_created', created: true };\n }\n\n update(id: string, input: UpdateProjectInput): Project {\n const patch = { ...input };\n if (input.workspaceRoot !== undefined && input.workspaceRoot !== null && input.workspaceRoot.trim()) {\n const workspaceRoot = canonicalWorkspacePath(input.workspaceRoot);\n if (!workspaceRoot) {\n throw new Error('Invalid workspace root');\n }\n const existing = this.findByWorkspaceRoot(workspaceRoot, { excludeProjectId: id });\n if (existing) throw new ProjectWorkspaceConflictError(existing);\n if (!workspaceDirectoryExists(workspaceRoot)) {\n if (input.createWorkspaceRoot === true) {\n ensureWorkspaceDirectory(workspaceRoot);\n } else {\n throw new ProjectWorkspaceMissingError(workspaceRoot);\n }\n }\n patch.workspaceRoot = workspaceRoot;\n }\n const before = this.store.get(id);\n const project = this.store.update(id, patch);\n const changes = changedFieldsFromPatch(patch as Record<string, unknown>, ['createWorkspaceRoot']);\n const type = before?.status !== project.status\n ? 'project.status_changed'\n : before?.workspaceRoot !== project.workspaceRoot\n ? 'project.workspace_changed'\n : 'project.updated';\n emitActivity({\n type,\n primaryObject: { kind: 'project', id: project.id, title: project.name },\n actor: systemActivityActor(),\n source: systemActivitySource(),\n payload: {\n changes,\n ...(type === 'project.status_changed' ? { from: before?.status, to: project.status } : {}),\n ...(type === 'project.workspace_changed' ? { from: before?.workspaceRoot, to: project.workspaceRoot } : {}),\n },\n scopes: [{ scopeKind: 'project', scopeId: project.id, reason: 'object_owner' }],\n nowMs: project.updatedAt,\n });\n return project;\n }\n\n pin(id: string): Project {\n return this.update(id, { pinnedAt: Date.now() });\n }\n\n unpin(id: string): Project {\n return this.update(id, { pinnedAt: null });\n }\n\n delete(id: string): void {\n this.store.delete(id);\n }\n\n getWithDetails(id: string): ProjectWithDetails | null {\n return this.store.getWithDetails(id);\n }\n\n attachSession(sessionKey: string, projectId: string): void {\n bindSessionToProject(sessionKey, projectId);\n }\n\n detachSession(sessionKey: string): void {\n unbindSessionFromProject(sessionKey);\n }\n\n listSessionKeys(projectId: string, limit?: number, offset?: number): string[] {\n return listProjectSessionKeys(projectId, limit, offset);\n }\n\n attachGoal(goalId: string, projectId: string): void {\n bindGoalToProject(goalId, projectId);\n }\n\n detachGoal(goalId: string): void {\n unbindGoalFromProject(goalId);\n }\n\n listGoalIds(projectId: string, limit?: number, offset?: number): string[] {\n return listProjectGoalIds(projectId, limit, offset);\n }\n\n suggestProjectsForSession(sessionKey: string): ProjectSuggestion[] {\n const session = getSessionMetadata(sessionKey);\n if (!session) return [];\n const projects = this.list({ status: 'active', limit: 500 }).items;\n const haystack = [session.key, session.name, session.routing?.agentId, session.sourceChannel, ...(session.tags ?? [])]\n .filter(Boolean)\n .join(' ')\n .toLowerCase();\n const suggestions: ProjectSuggestion[] = [];\n for (const project of projects) {\n let score = 0;\n const reasons: string[] = [];\n if (haystack.includes(project.slug.toLowerCase())) {\n score += 10;\n reasons.push('session metadata matches project slug');\n }\n for (const token of project.name.toLowerCase().split(/\\s+/).filter((t) => t.length >= 3)) {\n if (haystack.includes(token)) {\n score += 3;\n reasons.push(`matches ${token}`);\n break;\n }\n }\n if (score > 0) {\n suggestions.push({ projectId: project.id, projectName: project.name, score, reason: reasons.join(', ') });\n }\n }\n return suggestions.sort((a, b) => b.score - a.score).slice(0, 5);\n }\n}\n"],"mappings":";;;;;;;;AA0BA,IAAa,iBAAb,MAA4B;CAC1B,YAAY,QAAyB,IAAI,cAAc,EAAE;AAA5B,OAAA,QAAA;;CAE7B,kBAAqC;EACnC,MAAM,QAAmB,EAAE;EAC3B,IAAI,SAAS;EACb,MAAM,QAAQ;AACd,SAAO,MAAM;GACX,MAAM,OAAO,KAAK,KAAK;IAAE;IAAO;IAAQ,CAAC;AACzC,SAAM,KAAK,GAAG,KAAK,MAAM;AACzB,OAAI,CAAC,KAAK,WAAW,KAAK,MAAM,WAAW,EAAG;AAC9C,aAAU,KAAK,MAAM;;AAEvB,SAAO;;CAGT,OAAO,OAAoC;EACzC,MAAM,mBAAmB,MAAM,eAAe,MAAM;EACpD,MAAM,gBAAgB,mBAAmB,uBAAuB,iBAAiB,GAAG,KAAA;AACpF,MAAI,oBAAoB,CAAC,cACvB,OAAM,IAAI,MAAM,yBAAyB;AAE3C,MAAI,eAAe;GACjB,MAAM,WAAW,KAAK,oBAAoB,cAAc;AACxD,OAAI,SAAU,OAAM,IAAI,8BAA8B,SAAS;AAC/D,OAAI,CAAC,yBAAyB,cAAc,CAC1C,KAAI,MAAM,wBAAwB,KAChC,0BAAyB,cAAc;OAEvC,OAAM,IAAI,6BAA6B,cAAc;;EAI3D,MAAM,OAAO,MAAM,MAAM,MAAM,IAAI,kCAAkC,cAAc,IAAI;EACvF,MAAM,OAAO,MAAM,MAAM,MAAM,IAAI,KAAK,MAAM,aAAa,KAAK;EAChE,MAAM,UAAU,KAAK,MAAM,OAAO;GAAE,GAAG;GAAO;GAAM;GAAM;GAAe,CAAC;AAC1E,eAAa;GACX,MAAM;GACN,eAAe;IAAE,MAAM;IAAW,IAAI,QAAQ;IAAI,OAAO,QAAQ;IAAM;GACvE,OAAO,qBAAqB;GAC5B,QAAQ,sBAAsB;GAC9B,SAAS;IACP,MAAM,QAAQ;IACd,eAAe,QAAQ;IACvB,OAAO,QAAQ;IAChB;GACD,QAAQ,CAAC;IAAE,WAAW;IAAW,SAAS,QAAQ;IAAI,QAAQ;IAAgB,CAAC;GAC/E,OAAO,QAAQ;GAChB,CAAC;AACF,SAAO;;CAGT,IAAI,IAA4B;AAC9B,SAAO,KAAK,MAAM,IAAI,GAAG;;CAG3B,UAAU,MAA8B;AACtC,SAAO,KAAK,MAAM,WAAW,KAAK;;CAGpC,KAAK,OAA6C;AAChD,SAAO,KAAK,MAAM,KAAK,MAAM;;CAG/B,wBAAwB,OAAoD;AAC1E,SAAO,KAAK,MAAM,wBAAwB,MAAM;;CAGlD,oBAAoB,eAAuB,UAAyC,EAAE,EAAkB;EACtG,MAAM,SAAS,uBAAuB,cAAc;AACpD,MAAI,CAAC,OAAQ,QAAO;AACpB,OAAK,MAAM,WAAW,KAAK,iBAAiB,EAAE;AAC5C,OAAI,QAAQ,oBAAoB,QAAQ,OAAO,QAAQ,iBAAkB;GACzE,MAAM,cAAc,uBAAuB,QAAQ,cAAc;AACjE,OAAI,eAAe,4BAA4B,aAAa,OAAO,IAAI,4BAA4B,QAAQ,YAAY,CACrH,QAAO;;AAGX,SAAO;;CAGT,wBAAwB,eAAmF;EACzG,MAAM,SAAS,uBAAuB,cAAc;AACpD,MAAI,CAAC,OAAQ,QAAO;EACpB,IAAI,OAAiF;AACrF,OAAK,MAAM,WAAW,KAAK,iBAAiB,EAAE;GAC5C,MAAM,OAAO,uBAAuB,QAAQ,cAAc;AAC1D,OAAI,CAAC,QAAQ,CAAC,4BAA4B,MAAM,OAAO,CAAE;GACzD,MAAM,SAAS,4BAA4B,MAAM,OAAO,IAAI,4BAA4B,QAAQ,KAAK,GAAG,UAAU;AAClH,OAAI,CAAC,QAAQ,KAAK,SAAS,KAAK,KAAK,OACnC,QAAO;IAAE;IAAS;IAAM;IAAQ;;AAGpC,SAAO,OAAO;GAAE,SAAS,KAAK;GAAS,QAAQ,KAAK;GAAQ,GAAG;;CAGjE,gCAAgC,OAKC;EAC/B,MAAM,WAAW,KAAK,wBAAwB,MAAM,cAAc;AAClE,MAAI,SAAU,QAAO;GAAE,SAAS,SAAS;GAAS,QAAQ,SAAS;GAAQ,SAAS;GAAO;AAC3F,MAAI,CAAC,MAAM,WAAY,QAAO;EAC9B,MAAM,gBAAgB,4BAA4B,MAAM,cAAc,IAAI,uBAAuB,MAAM,cAAc;AACrH,MAAI,CAAC,iBAAiB,CAAC,8BAA8B,cAAc,CAAE,QAAO;EAC5E,MAAM,eAAe,KAAK,wBAAwB,cAAc;AAChE,MAAI,aAAc,QAAO;GAAE,SAAS,aAAa;GAAS,QAAQ,aAAa;GAAQ,SAAS;GAAO;AAMvG,SAAO;GAAE,SALO,KAAK,OAAO;IAC1B,MAAM,kCAAkC,cAAc,IAAI,KAAA;IAC1D;IACA,gBAAgB,OAAO,OAAO,OAAO,iBAAiB,GAAG,MAAM,iBAAiB,MAAM;IACvF,CACe;GAAE,QAAQ;GAAgB,SAAS;GAAM;;CAG3D,OAAO,IAAY,OAAoC;EACrD,MAAM,QAAQ,EAAE,GAAG,OAAO;AAC1B,MAAI,MAAM,kBAAkB,KAAA,KAAa,MAAM,kBAAkB,QAAQ,MAAM,cAAc,MAAM,EAAE;GACnG,MAAM,gBAAgB,uBAAuB,MAAM,cAAc;AACjE,OAAI,CAAC,cACH,OAAM,IAAI,MAAM,yBAAyB;GAE3C,MAAM,WAAW,KAAK,oBAAoB,eAAe,EAAE,kBAAkB,IAAI,CAAC;AAClF,OAAI,SAAU,OAAM,IAAI,8BAA8B,SAAS;AAC/D,OAAI,CAAC,yBAAyB,cAAc,CAC1C,KAAI,MAAM,wBAAwB,KAChC,0BAAyB,cAAc;OAEvC,OAAM,IAAI,6BAA6B,cAAc;AAGzD,SAAM,gBAAgB;;EAExB,MAAM,SAAS,KAAK,MAAM,IAAI,GAAG;EACjC,MAAM,UAAU,KAAK,MAAM,OAAO,IAAI,MAAM;EAC5C,MAAM,UAAU,uBAAuB,OAAkC,CAAC,sBAAsB,CAAC;EACjG,MAAM,OAAO,QAAQ,WAAW,QAAQ,SACpC,2BACA,QAAQ,kBAAkB,QAAQ,gBAChC,8BACA;AACN,eAAa;GACX;GACA,eAAe;IAAE,MAAM;IAAW,IAAI,QAAQ;IAAI,OAAO,QAAQ;IAAM;GACvE,OAAO,qBAAqB;GAC5B,QAAQ,sBAAsB;GAC9B,SAAS;IACP;IACA,GAAI,SAAS,2BAA2B;KAAE,MAAM,QAAQ;KAAQ,IAAI,QAAQ;KAAQ,GAAG,EAAE;IACzF,GAAI,SAAS,8BAA8B;KAAE,MAAM,QAAQ;KAAe,IAAI,QAAQ;KAAe,GAAG,EAAE;IAC3G;GACD,QAAQ,CAAC;IAAE,WAAW;IAAW,SAAS,QAAQ;IAAI,QAAQ;IAAgB,CAAC;GAC/E,OAAO,QAAQ;GAChB,CAAC;AACF,SAAO;;CAGT,IAAI,IAAqB;AACvB,SAAO,KAAK,OAAO,IAAI,EAAE,UAAU,KAAK,KAAK,EAAE,CAAC;;CAGlD,MAAM,IAAqB;AACzB,SAAO,KAAK,OAAO,IAAI,EAAE,UAAU,MAAM,CAAC;;CAG5C,OAAO,IAAkB;AACvB,OAAK,MAAM,OAAO,GAAG;;CAGvB,eAAe,IAAuC;AACpD,SAAO,KAAK,MAAM,eAAe,GAAG;;CAGtC,cAAc,YAAoB,WAAyB;AACzD,uBAAqB,YAAY,UAAU;;CAG7C,cAAc,YAA0B;AACtC,2BAAyB,WAAW;;CAGtC,gBAAgB,WAAmB,OAAgB,QAA2B;AAC5E,SAAO,uBAAuB,WAAW,OAAO,OAAO;;CAGzD,WAAW,QAAgB,WAAyB;AAClD,oBAAkB,QAAQ,UAAU;;CAGtC,WAAW,QAAsB;AAC/B,wBAAsB,OAAO;;CAG/B,YAAY,WAAmB,OAAgB,QAA2B;AACxE,SAAO,mBAAmB,WAAW,OAAO,OAAO;;CAGrD,0BAA0B,YAAyC;EACjE,MAAM,UAAU,mBAAmB,WAAW;AAC9C,MAAI,CAAC,QAAS,QAAO,EAAE;EACvB,MAAM,WAAW,KAAK,KAAK;GAAE,QAAQ;GAAU,OAAO;GAAK,CAAC,CAAC;EAC7D,MAAM,WAAW;GAAC,QAAQ;GAAK,QAAQ;GAAM,QAAQ,SAAS;GAAS,QAAQ;GAAe,GAAI,QAAQ,QAAQ,EAAE;GAAE,CACnH,OAAO,QAAQ,CACf,KAAK,IAAI,CACT,aAAa;EAChB,MAAM,cAAmC,EAAE;AAC3C,OAAK,MAAM,WAAW,UAAU;GAC9B,IAAI,QAAQ;GACZ,MAAM,UAAoB,EAAE;AAC5B,OAAI,SAAS,SAAS,QAAQ,KAAK,aAAa,CAAC,EAAE;AACjD,aAAS;AACT,YAAQ,KAAK,wCAAwC;;AAEvD,QAAK,MAAM,SAAS,QAAQ,KAAK,aAAa,CAAC,MAAM,MAAM,CAAC,QAAQ,MAAM,EAAE,UAAU,EAAE,CACtF,KAAI,SAAS,SAAS,MAAM,EAAE;AAC5B,aAAS;AACT,YAAQ,KAAK,WAAW,QAAQ;AAChC;;AAGJ,OAAI,QAAQ,EACV,aAAY,KAAK;IAAE,WAAW,QAAQ;IAAI,aAAa,QAAQ;IAAM;IAAO,QAAQ,QAAQ,KAAK,KAAK;IAAE,CAAC;;AAG7G,SAAO,YAAY,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,GAAG,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-store.js","names":[],"sources":["../../../src/projects/project-store.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { escapeFts5Query } from '../storage/sqlite/fts.js';\nimport { getSqliteDatabase, runSqliteWriteTransaction } from '../storage/sqlite/transaction.js';\nimport type {\n CreateProjectInput,\n Project,\n ProjectListQuery,\n ProjectListResult,\n ProjectStatus,\n SidebarProjectListQuery,\n ProjectWithDetails,\n UpdateProjectInput,\n} from './types.js';\n\nexport type ProjectRow = {\n project_id: string;\n name: string;\n slug: string;\n description: string | null;\n status: string;\n default_agent_id: string | null;\n workspace_root: string | null;\n brief: string | null;\n instructions: string | null;\n created_at: number;\n updated_at: number;\n last_active_at: number | null;\n pinned_at: number | null;\n};\n\nfunction trimOptional(value: string | null | undefined): string | undefined {\n if (value == null) return undefined;\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\nfunction nullableText(value: string | null | undefined): string | null {\n if (value == null) return null;\n const trimmed = value.trim();\n return trimmed || null;\n}\n\nfunction projectFromRow(row: ProjectRow): Project {\n return {\n id: row.project_id,\n name: row.name,\n slug: row.slug,\n description: row.description ?? undefined,\n status: row.status as ProjectStatus,\n defaultAgentId: row.default_agent_id ?? undefined,\n workspaceRoot: row.workspace_root ?? undefined,\n brief: row.brief ?? undefined,\n instructions: row.instructions ?? undefined,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n lastActiveAt: row.last_active_at ?? undefined,\n pinnedAt: row.pinned_at ?? undefined,\n };\n}\n\nfunction clampLimit(limit: number | undefined, fallback = 50): number {\n return Math.min(500, Math.max(1, Math.floor(limit ?? fallback)));\n}\n\nfunction normalizeName(name: string): string {\n const trimmed = name.trim();\n if (!trimmed) throw new Error('Project name is required');\n return trimmed;\n}\n\nexport function slugifyProjectName(name: string): string {\n const slug = name\n .trim()\n .toLowerCase()\n .normalize('NFKD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .replace(/[^\\p{L}\\p{N}]+/gu, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 80);\n return slug || `project-${Date.now()}`;\n}\n\nfunction projectSortColumn(sortBy: ProjectListQuery['sortBy']): string {\n switch (sortBy) {\n case 'createdAt':\n return 'created_at';\n case 'name':\n return 'LOWER(name)';\n case 'updatedAt':\n default:\n return 'updated_at';\n }\n}\n\nfunction projectSortExpression(sortBy: ProjectListQuery['sortBy']): string {\n const column = projectSortColumn(sortBy);\n return column === 'LOWER(name)' ? 'LOWER(p.name)' : `p.${column}`;\n}\n\nfunction projectFtsContent(project: Project): string {\n return [\n project.name,\n project.slug,\n project.description,\n project.workspaceRoot,\n project.brief,\n project.instructions,\n project.defaultAgentId,\n ]\n .filter((value): value is string => Boolean(value?.trim()))\n .join('\\n');\n}\n\nfunction syncProjectFts(\n db: ReturnType<typeof getSqliteDatabase>,\n project: Project,\n): void {\n db.prepare(`DELETE FROM projects_fts WHERE project_id = ?`).run(project.id);\n db.prepare(`INSERT INTO projects_fts (content, project_id) VALUES (?, ?)`).run(\n projectFtsContent(project),\n project.id,\n );\n}\n\nexport class ProjectStore {\n create(input: CreateProjectInput): Project {\n const now = Date.now();\n const name = normalizeName(input.name);\n const slug = input.slug?.trim() || slugifyProjectName(name);\n const project: Project = {\n id: randomUUID(),\n name,\n slug,\n description: trimOptional(input.description),\n status: 'active',\n defaultAgentId: trimOptional(input.defaultAgentId),\n workspaceRoot: trimOptional(input.workspaceRoot),\n brief: trimOptional(input.brief),\n instructions: trimOptional(input.instructions),\n createdAt: now,\n updatedAt: now,\n lastActiveAt: now,\n pinnedAt: undefined,\n };\n\n runSqliteWriteTransaction((db) => {\n db.prepare(\n `INSERT INTO projects (\n project_id, name, slug, description, status, default_agent_id, workspace_root,\n brief, instructions, created_at, updated_at, last_active_at, pinned_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n ).run(\n project.id,\n project.name,\n project.slug,\n project.description ?? null,\n project.status,\n project.defaultAgentId ?? null,\n project.workspaceRoot ?? null,\n project.brief ?? null,\n project.instructions ?? null,\n project.createdAt,\n project.updatedAt,\n project.lastActiveAt ?? null,\n project.pinnedAt ?? null,\n );\n syncProjectFts(db, project);\n });\n return project;\n }\n\n get(id: string): Project | null {\n const row = getSqliteDatabase()\n .prepare(`SELECT * FROM projects WHERE project_id = ?`)\n .get(id) as ProjectRow | undefined;\n return row ? projectFromRow(row) : null;\n }\n\n findBySlug(slug: string): Project | null {\n const row = getSqliteDatabase()\n .prepare(`SELECT * FROM projects WHERE slug = ?`)\n .get(slug.trim()) as ProjectRow | undefined;\n return row ? projectFromRow(row) : null;\n }\n\n list(query: ProjectListQuery = {}): ProjectListResult {\n const conditions: string[] = [];\n const params: Array<string | number> = [];\n const search = query.search?.trim();\n const ftsQuery = search ? escapeFts5Query(search) : '';\n if (query.status) {\n const statuses = Array.isArray(query.status) ? query.status : [query.status];\n conditions.push(`p.status IN (${statuses.map(() => '?').join(', ')})`);\n params.push(...statuses);\n }\n if (ftsQuery) {\n conditions.push(`p.project_id IN (SELECT project_id FROM projects_fts WHERE projects_fts MATCH ?)`);\n params.push(ftsQuery);\n }\n const where = conditions.length ? `WHERE ${conditions.join(' AND ')}` : '';\n const limit = clampLimit(query.limit, 50);\n const offset = Math.max(0, Math.floor(query.offset ?? 0));\n const sortOrder = query.sortOrder === 'asc' ? 'ASC' : 'DESC';\n const sortColumn = projectSortExpression(query.sortBy);\n const db = getSqliteDatabase();\n const total = (db.prepare(`SELECT COUNT(*) AS total FROM projects p ${where}`).get(...params) as { total: number }).total;\n const rows = db\n .prepare(`SELECT p.* FROM projects p ${where} ORDER BY ${sortColumn} ${sortOrder} LIMIT ? OFFSET ?`)\n .all(...params, limit, offset) as ProjectRow[];\n return { items: rows.map(projectFromRow), total, limit, offset, hasMore: offset + limit < total };\n }\n\n listWithSidebarSessions(query: SidebarProjectListQuery = {}): ProjectListResult {\n const projectConditions: string[] = [];\n const sessionConditions = [\n `s.hidden_from_session_list = 0`,\n `s.session_type = 'chat'`,\n ];\n const params: Array<string | number> = [];\n\n if (query.status) {\n const statuses = Array.isArray(query.status) ? query.status : [query.status];\n projectConditions.push(`p.status IN (${statuses.map(() => '?').join(', ')})`);\n params.push(...statuses);\n }\n\n if (query.updatedAfter !== undefined) {\n const clauses = [`s.updated_at >= ?`];\n params.push(query.updatedAfter);\n if (query.includePinned) {\n clauses.push(`s.status = 'pinned'`);\n }\n const includeSessionKey = query.includeSessionKey?.trim();\n if (includeSessionKey) {\n clauses.push(`s.session_key = ?`);\n params.push(includeSessionKey);\n }\n sessionConditions.push(`(${clauses.join(' OR ')})`);\n }\n\n const whereParts = [...projectConditions, ...sessionConditions];\n const where = whereParts.length ? `WHERE ${whereParts.join(' AND ')}` : '';\n const limit = clampLimit(query.limit, 50);\n const offset = Math.max(0, Math.floor(query.offset ?? 0));\n const db = getSqliteDatabase();\n const total = (db\n .prepare(\n `SELECT COUNT(DISTINCT p.project_id) AS total\n FROM projects p\n JOIN sessions s ON s.project_id = p.project_id\n ${where}`,\n )\n .get(...params) as { total: number }).total;\n const rows = db\n .prepare(\n `SELECT p.*, MAX(s.updated_at) AS latest_session_at\n FROM projects p\n JOIN sessions s ON s.project_id = p.project_id\n ${where}\n GROUP BY p.project_id\n ORDER BY\n CASE WHEN p.pinned_at IS NULL THEN 1 ELSE 0 END ASC,\n p.pinned_at DESC,\n latest_session_at DESC,\n p.updated_at DESC\n LIMIT ? OFFSET ?`,\n )\n .all(...params, limit, offset) as ProjectRow[];\n return { items: rows.map(projectFromRow), total, limit, offset, hasMore: offset + limit < total };\n }\n\n update(id: string, input: UpdateProjectInput): Project {\n const before = this.get(id);\n if (!before) throw new Error(`Project not found: ${id}`);\n const next = {\n ...before,\n ...(input.name !== undefined ? { name: normalizeName(input.name) } : {}),\n ...(input.description !== undefined ? { description: nullableText(input.description) ?? undefined } : {}),\n ...(input.status !== undefined ? { status: input.status } : {}),\n ...(input.defaultAgentId !== undefined ? { defaultAgentId: nullableText(input.defaultAgentId) ?? undefined } : {}),\n ...(input.workspaceRoot !== undefined ? { workspaceRoot: nullableText(input.workspaceRoot) ?? undefined } : {}),\n ...(input.brief !== undefined ? { brief: nullableText(input.brief) ?? undefined } : {}),\n ...(input.instructions !== undefined ? { instructions: nullableText(input.instructions) ?? undefined } : {}),\n ...(input.pinnedAt !== undefined ? { pinnedAt: input.pinnedAt ?? undefined } : {}),\n updatedAt: Date.now(),\n } satisfies Project;\n\n runSqliteWriteTransaction((db) => {\n db.prepare(\n `UPDATE projects SET\n name = ?, description = ?, status = ?, default_agent_id = ?, workspace_root = ?, brief = ?, instructions = ?, pinned_at = ?, updated_at = ?\n WHERE project_id = ?`,\n ).run(\n next.name,\n next.description ?? null,\n next.status,\n next.defaultAgentId ?? null,\n next.workspaceRoot ?? null,\n next.brief ?? null,\n next.instructions ?? null,\n next.pinnedAt ?? null,\n next.updatedAt,\n id,\n );\n syncProjectFts(db, next);\n });\n return this.get(id)!;\n }\n\n delete(id: string): void {\n runSqliteWriteTransaction((db) => {\n db.prepare(`UPDATE sessions SET project_id = NULL WHERE project_id = ?`).run(id);\n db.prepare(`UPDATE goals SET project_id = NULL WHERE project_id = ?`).run(id);\n db.prepare(`UPDATE workflow_runs SET project_id = NULL WHERE project_id = ?`).run(id);\n db.prepare(`UPDATE automations SET project_id = NULL WHERE project_id = ?`).run(id);\n db.prepare(`UPDATE memory_records SET project_id = NULL WHERE project_id = ?`).run(id);\n db.prepare(`DELETE FROM projects_fts WHERE project_id = ?`).run(id);\n db.prepare(`DELETE FROM projects WHERE project_id = ?`).run(id);\n });\n }\n\n getSessionCount(id: string): number {\n return (getSqliteDatabase()\n .prepare(`SELECT COUNT(*) AS total FROM sessions WHERE project_id = ? AND hidden_from_session_list = 0`)\n .get(id) as { total: number }).total;\n }\n\n getGoalCount(id: string): number {\n return (getSqliteDatabase().prepare(`SELECT COUNT(*) AS total FROM goals WHERE project_id = ?`).get(id) as { total: number }).total;\n }\n\n getActiveGoalCount(id: string): number {\n return (getSqliteDatabase()\n .prepare(`SELECT COUNT(*) AS total FROM goals WHERE project_id = ? AND status IN ('active', 'paused', 'blocked', 'needs_input')`)\n .get(id) as { total: number }).total;\n }\n\n getRecentSessions(id: string, limit = 5): ProjectWithDetails['recentSessions'] {\n const rows = getSqliteDatabase()\n .prepare(\n `SELECT session_key, name, updated_at, agent_id FROM sessions\n WHERE project_id = ? AND hidden_from_session_list = 0 ORDER BY updated_at DESC LIMIT ?`,\n )\n .all(id, clampLimit(limit, 5)) as Array<{ session_key: string; name: string | null; updated_at: number; agent_id: string }>;\n return rows.map((row) => ({\n key: row.session_key,\n name: row.name ?? undefined,\n updatedAt: new Date(row.updated_at).toISOString(),\n agentId: row.agent_id,\n }));\n }\n\n getRecentWorkflowRuns(id: string, limit = 5): ProjectWithDetails['recentWorkflowRuns'] {\n const rows = getSqliteDatabase()\n .prepare(\n `SELECT run_id, definition_id, status, created_at_ms FROM workflow_runs\n WHERE project_id = ? ORDER BY created_at_ms DESC LIMIT ?`,\n )\n .all(id, clampLimit(limit, 5)) as Array<{ run_id: string; definition_id: string; status: string; created_at_ms: number }>;\n return rows.map((row) => ({ runId: row.run_id, definitionId: row.definition_id, status: row.status, createdAt: row.created_at_ms }));\n }\n\n getWithDetails(id: string): ProjectWithDetails | null {\n const project = this.get(id);\n if (!project) return null;\n return {\n ...project,\n sessionCount: this.getSessionCount(id),\n goalCount: this.getGoalCount(id),\n activeGoalCount: this.getActiveGoalCount(id),\n recentSessions: this.getRecentSessions(id),\n recentWorkflowRuns: this.getRecentWorkflowRuns(id),\n };\n }\n\n generateSlug(name: string): string {\n const base = slugifyProjectName(name);\n let candidate = base;\n let counter = 2;\n while (this.findBySlug(candidate)) {\n candidate = `${base}-${counter}`;\n counter += 1;\n }\n return candidate;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-bind.js","names":[],"sources":["../../../src/projects/session-bind.ts"],"sourcesContent":["import { getSqliteDatabase, runSqliteWriteTransaction } from '../storage/sqlite/transaction.js';\n\nfunction projectExists(projectId: string): boolean {\n return Boolean(getSqliteDatabase().prepare(`SELECT 1 FROM projects WHERE project_id = ?`).get(projectId));\n}\n\nfunction assertProjectExists(projectId: string): void {\n if (!projectExists(projectId)) {\n throw new Error(`Project not found: ${projectId}`);\n }\n}\n\nfunction assertSessionExists(sessionKey: string): void {\n const row = getSqliteDatabase().prepare(`SELECT 1 FROM sessions WHERE session_key = ?`).get(sessionKey);\n if (!row) throw new Error(`Session not found: ${sessionKey}`);\n}\n\nexport function bindSessionToProject(sessionKey: string, projectId: string): void {\n assertProjectExists(projectId);\n assertSessionExists(sessionKey);\n runSqliteWriteTransaction((db) => {\n const now = Date.now();\n db.prepare(`UPDATE sessions SET project_id = ?, updated_at = ? WHERE session_key = ?`).run(projectId, now, sessionKey);\n db.prepare(`UPDATE projects SET last_active_at = ?, updated_at = ? WHERE project_id = ?`).run(now, now, projectId);\n });\n}\n\nexport function unbindSessionFromProject(sessionKey: string): void {\n assertSessionExists(sessionKey);\n runSqliteWriteTransaction((db) => {\n db.prepare(`UPDATE sessions SET project_id = NULL, updated_at = ? WHERE session_key = ?`).run(Date.now(), sessionKey);\n });\n}\n\nexport function listProjectSessionKeys(projectId: string, limit = 100, offset = 0): string[] {\n assertProjectExists(projectId);\n const rows = getSqliteDatabase()\n .prepare(`SELECT session_key FROM sessions WHERE project_id = ? ORDER BY updated_at DESC LIMIT ? OFFSET ?`)\n .all(projectId, Math.min(500, Math.max(1, Math.floor(limit))), Math.max(0, Math.floor(offset))) as Array<{ session_key: string }>;\n return rows.map((row) => row.session_key);\n}\n\nexport function bindSessionsToProject(sessionKeys: string[], projectId: string): void {\n assertProjectExists(projectId);\n runSqliteWriteTransaction((db) => {\n const now = Date.now();\n const stmt = db.prepare(`UPDATE sessions SET project_id = ?, updated_at = ? WHERE session_key = ?`);\n for (const key of sessionKeys) {\n stmt.run(projectId, now, key);\n }\n db.prepare(`UPDATE projects SET last_active_at = ?, updated_at = ? WHERE project_id = ?`).run(now, now, projectId);\n });\n}\n\nexport function moveSessionToProject(sessionKey: string, targetProjectId: string): void {\n bindSessionToProject(sessionKey, targetProjectId);\n}\n"],"mappings":";;AAEA,SAAS,cAAc,WAA4B;AACjD,QAAO,QAAQ,mBAAmB,CAAC,QAAQ,8CAA8C,CAAC,IAAI,UAAU,CAAC;;AAG3G,SAAS,oBAAoB,WAAyB;AACpD,KAAI,CAAC,cAAc,UAAU,CAC3B,OAAM,IAAI,MAAM,sBAAsB,YAAY;;AAItD,SAAS,oBAAoB,YAA0B;AAErD,KAAI,CADQ,mBAAmB,CAAC,QAAQ,+CAA+C,CAAC,IAAI,WACpF,CAAE,OAAM,IAAI,MAAM,sBAAsB,aAAa;;AAG/D,SAAgB,qBAAqB,YAAoB,WAAyB;AAChF,qBAAoB,UAAU;AAC9B,qBAAoB,WAAW;AAC/B,4BAA2B,OAAO;EAChC,MAAM,MAAM,KAAK,KAAK;AACtB,KAAG,QAAQ,2EAA2E,CAAC,IAAI,WAAW,KAAK,WAAW;AACtH,KAAG,QAAQ,8EAA8E,CAAC,IAAI,KAAK,KAAK,UAAU;GAClH;;AAGJ,SAAgB,yBAAyB,YAA0B;AACjE,qBAAoB,WAAW;AAC/B,4BAA2B,OAAO;AAChC,KAAG,QAAQ,8EAA8E,CAAC,IAAI,KAAK,KAAK,EAAE,WAAW;GACrH;;AAGJ,SAAgB,uBAAuB,WAAmB,QAAQ,KAAK,SAAS,GAAa;AAC3F,qBAAoB,UAAU;AAI9B,QAHa,mBAAmB,CAC7B,QAAQ,kGAAkG,CAC1G,IAAI,WAAW,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,CAAC,CACrF,CAAC,KAAK,QAAQ,IAAI,YAAY;;AAG3C,SAAgB,sBAAsB,aAAuB,WAAyB;AACpF,qBAAoB,UAAU;AAC9B,4BAA2B,OAAO;EAChC,MAAM,MAAM,KAAK,KAAK;EACtB,MAAM,OAAO,GAAG,QAAQ,2EAA2E;AACnG,OAAK,MAAM,OAAO,YAChB,MAAK,IAAI,WAAW,KAAK,IAAI;AAE/B,KAAG,QAAQ,8EAA8E,CAAC,IAAI,KAAK,KAAK,UAAU;GAClH;;AAGJ,SAAgB,qBAAqB,YAAoB,iBAA+B;AACtF,sBAAqB,YAAY,gBAAgB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-bind.js","names":[],"sources":["../../../src/projects/workflow-bind.ts"],"sourcesContent":["import { getSqliteDatabase, runSqliteWriteTransaction } from '../storage/sqlite/transaction.js';\n\nexport function bindWorkflowRunToProject(runId: string, projectId: string): void {\n const db = getSqliteDatabase();\n if (!db.prepare(`SELECT 1 FROM projects WHERE project_id = ?`).get(projectId)) throw new Error(`Project not found: ${projectId}`);\n if (!db.prepare(`SELECT 1 FROM workflow_runs WHERE run_id = ?`).get(runId)) throw new Error(`Workflow run not found: ${runId}`);\n runSqliteWriteTransaction((tx) => {\n const now = Date.now();\n tx.prepare(`UPDATE workflow_runs SET project_id = ? WHERE run_id = ?`).run(projectId, runId);\n tx.prepare(`UPDATE projects SET last_active_at = ?, updated_at = ? WHERE project_id = ?`).run(now, now, projectId);\n });\n}\n"],"mappings":";;AAEA,SAAgB,yBAAyB,OAAe,WAAyB;CAC/E,MAAM,KAAK,mBAAmB;AAC9B,KAAI,CAAC,GAAG,QAAQ,8CAA8C,CAAC,IAAI,UAAU,CAAE,OAAM,IAAI,MAAM,sBAAsB,YAAY;AACjI,KAAI,CAAC,GAAG,QAAQ,+CAA+C,CAAC,IAAI,MAAM,CAAE,OAAM,IAAI,MAAM,2BAA2B,QAAQ;AAC/H,4BAA2B,OAAO;EAChC,MAAM,MAAM,KAAK,KAAK;AACtB,KAAG,QAAQ,2DAA2D,CAAC,IAAI,WAAW,MAAM;AAC5F,KAAG,QAAQ,8EAA8E,CAAC,IAAI,KAAK,KAAK,UAAU;GAClH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-project.js","names":[],"sources":["../../../src/projects/workspace-project.ts"],"sourcesContent":["import { existsSync, mkdirSync, realpathSync, statSync } from 'node:fs';\nimport { execFileSync } from 'node:child_process';\nimport { homedir, tmpdir } from 'node:os';\nimport { basename, dirname, isAbsolute, join, parse, relative, resolve } from 'node:path';\n\nimport { resolveUserPath } from '../agent/agent-scope.js';\nimport { normalizeWorkspaceDir } from '../config/workspace-path.js';\nimport { resolveStateDir } from '../config/paths-state.js';\nimport type { Project } from './types.js';\n\nexport type WorkspaceProjectMatchReason = 'exact' | 'contained' | 'auto_created';\n\nexport type WorkspaceProjectMatch = {\n project: Project;\n reason: WorkspaceProjectMatchReason;\n created: boolean;\n};\n\nexport class ProjectWorkspaceConflictError extends Error {\n constructor(readonly project: Project, message = `Workspace is already bound to project: ${project.name}`) {\n super(message);\n this.name = 'ProjectWorkspaceConflictError';\n }\n}\n\nexport class ProjectWorkspaceMissingError extends Error {\n constructor(readonly workspaceRoot: string, message = `Workspace root does not exist: ${workspaceRoot}`) {\n super(message);\n this.name = 'ProjectWorkspaceMissingError';\n }\n}\n\nconst PROJECT_ROOT_MARKERS = [\n '.git',\n 'pnpm-workspace.yaml',\n 'package.json',\n 'go.mod',\n 'pyproject.toml',\n 'Cargo.toml',\n 'deno.json',\n 'deno.jsonc',\n 'bun.lockb',\n 'pnpm-lock.yaml',\n 'yarn.lock',\n 'package-lock.json',\n 'composer.json',\n 'Gemfile',\n] as const;\n\nexport function canonicalWorkspacePath(raw: string | null | undefined): string | null {\n const trimmed = raw?.trim();\n if (!trimmed) return null;\n const resolved = resolveUserPath(trimmed);\n const normalized = normalizeWorkspaceDir(resolved);\n if (!normalized) return null;\n try {\n const stat = statSync(normalized);\n if (!stat.isDirectory()) return normalized;\n return realpathSync.native(normalized);\n } catch {\n return normalized;\n }\n}\n\nexport function workspaceDirectoryExists(workspaceRoot: string | null | undefined): boolean {\n const canonical = canonicalWorkspacePath(workspaceRoot);\n if (!canonical) return false;\n try {\n return statSync(canonical).isDirectory();\n } catch {\n return false;\n }\n}\n\nexport function ensureWorkspaceDirectory(workspaceRoot: string): void {\n mkdirSync(workspaceRoot, { recursive: true });\n}\n\nfunction directoryForWorkspaceProbe(pathValue: string): string {\n try {\n return statSync(pathValue).isDirectory() ? pathValue : dirname(pathValue);\n } catch {\n return pathValue;\n }\n}\n\nfunction findGitRoot(startDir: string): string | null {\n try {\n const output = execFileSync('git', ['-C', startDir, 'rev-parse', '--show-toplevel'], {\n encoding: 'utf8',\n stdio: ['ignore', 'pipe', 'ignore'],\n timeout: 1000,\n }).trim();\n return canonicalWorkspacePath(output);\n } catch {\n return null;\n }\n}\n\nfunction findMarkerRoot(startDir: string): string | null {\n let current = startDir;\n while (true) {\n if (PROJECT_ROOT_MARKERS.some((marker) => existsSync(join(current, marker)))) {\n return current;\n }\n const parent = dirname(current);\n if (parent === current) {\n return null;\n }\n current = parent;\n }\n}\n\nexport function resolveWorkspaceProjectRoot(raw: string | null | undefined): string | null {\n const canonical = canonicalWorkspacePath(raw);\n if (!canonical) return null;\n const startDir = directoryForWorkspaceProbe(canonical);\n const gitRoot = findGitRoot(startDir);\n if (gitRoot) return gitRoot;\n const markerRoot = findMarkerRoot(startDir);\n return canonicalWorkspacePath(markerRoot) ?? canonical;\n}\n\nfunction normalizeComparablePath(pathValue: string): string {\n const resolved = resolve(pathValue);\n return process.platform === 'win32' ? resolved.toLowerCase() : resolved;\n}\n\nexport function isPathSameOrInsideWorkspace(workspaceRoot: string, candidatePath: string): boolean {\n const root = normalizeComparablePath(workspaceRoot);\n const candidate = normalizeComparablePath(candidatePath);\n const rel = relative(root, candidate);\n return rel === '' || (!!rel && !rel.startsWith('..') && !isAbsolute(rel));\n}\n\nexport function inferProjectNameFromWorkspaceRoot(workspaceRoot: string | null | undefined): string | null {\n const canonical = canonicalWorkspacePath(workspaceRoot);\n if (!canonical) return null;\n const name = basename(canonical).trim();\n return name || null;\n}\n\nexport function isSafeAutoCreateWorkspaceRoot(workspaceRoot: string | null | undefined): boolean {\n const canonical = canonicalWorkspacePath(workspaceRoot);\n if (!canonical) return false;\n const normalized = normalizeComparablePath(canonical);\n const forbidden = [homedir(), tmpdir(), resolveStateDir()]\n .map((p) => canonicalWorkspacePath(p))\n .filter((p): p is string => Boolean(p))\n .map(normalizeComparablePath);\n if (forbidden.includes(normalized)) return false;\n // `normalizeWorkspaceDir` already rejects filesystem roots; keep this function\n // conservative for callers that pass unusual platform-specific roots.\n if (normalizeComparablePath(canonical) === normalizeComparablePath(parse(canonical).root)) return false;\n if (!basename(canonical).trim()) return false;\n try {\n return statSync(canonical).isDirectory();\n } catch {\n return false;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace.js","names":[],"sources":["../../../src/projects/workspace.ts"],"sourcesContent":["import { resolveEffectiveAgentProfileForSession } from '../config/agent-profile.js';\nimport type { Config } from '../config/schema.js';\nimport {\n getSessionMetadata,\n isXopcDatabaseOpen,\n} from '../storage/sqlite/index.js';\nimport { projectWorkspacePath } from '../session/session-workspace.js';\nimport { ProjectStore } from './project-store.js';\nimport type { Project } from './types.js';\n\nexport function resolveProjectWorkspacePath(\n config: Config,\n sessionKey: string,\n project: Project | null,\n): string {\n const projectWorkspace = projectWorkspacePath(project);\n if (projectWorkspace) {\n return projectWorkspace;\n }\n return resolveEffectiveAgentProfileForSession(config, sessionKey).resolvedWorkspacePath;\n}\n\nexport function getProjectForSession(sessionKey: string): Project | null {\n if (!isXopcDatabaseOpen()) {\n return null;\n }\n const projectId = getSessionMetadata(sessionKey)?.projectId;\n if (!projectId) {\n return null;\n }\n return new ProjectStore().get(projectId);\n}\n\nexport function getProjectWorkspacePathForSession(sessionKey: string): string | null {\n return projectWorkspacePath(getProjectForSession(sessionKey));\n}\n"],"mappings":";;;;;;;AAUA,SAAgB,4BACd,QACA,YACA,SACQ;CACR,MAAM,mBAAmB,qBAAqB,QAAQ;AACtD,KAAI,iBACF,QAAO;AAET,QAAO,uCAAuC,QAAQ,WAAW,CAAC;;AAGpE,SAAgB,qBAAqB,YAAoC;AACvE,KAAI,CAAC,oBAAoB,CACvB,QAAO;CAET,MAAM,YAAY,mBAAmB,WAAW,EAAE;AAClD,KAAI,CAAC,UACH,QAAO;AAET,QAAO,IAAI,cAAc,CAAC,IAAI,UAAU;;AAG1C,SAAgB,kCAAkC,YAAmC;AACnF,QAAO,qBAAqB,qBAAqB,WAAW,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-profile-store.js","names":[],"sources":["../../../../src/providers/auth-runtime/auth-profile-store.ts"],"sourcesContent":["/**\n * {@link AuthProfileStore} implementations.\n *\n * - {@link NoopAuthProfileStore}: returns nothing; used by tests and as a safe\n * fallback when no agent context is available.\n * - {@link DiskAuthProfileStore}: persists per-agent profiles under\n * `<stateDir>/agents/<agentId>/auth-profiles.json` with a lazy in-memory\n * cache and atomic writes. Used by the gateway and CLI to host OAuth\n * tokens (Codex / Anthropic) without leaking them through env vars.\n *\n * Capability providers stay synchronous: `getApiKeySync` / `hasCredentialSync`\n * read the cached snapshot. Async members (`save`, `refresh`) are only used\n * by vendor-specific code that explicitly opts in to OAuth flows.\n */\n\nimport { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\n\nimport { createLogger } from '../../utils/logger.js';\nimport type { AuthProfile, AuthProfileStore } from './types.js';\n\nconst log = createLogger('AuthProfileStore');\n\nconst STORE_FILENAME = 'auth-profiles.json';\n\nexport class NoopAuthProfileStore implements AuthProfileStore {\n getApiKeySync(): string | undefined {\n return undefined;\n }\n hasCredentialSync(): boolean {\n return false;\n }\n list(): AuthProfile[] {\n return [];\n }\n get(): AuthProfile | undefined {\n return undefined;\n }\n async save(): Promise<void> {\n /* no-op */\n }\n async refresh(profile: AuthProfile): Promise<AuthProfile> {\n return profile;\n }\n}\n\ntype DiskFile = {\n /** Schema version; bumped if we ever change the on-disk shape. */\n version: 1;\n profiles: AuthProfile[];\n};\n\nfunction emptyFile(): DiskFile {\n return { version: 1, profiles: [] };\n}\n\nfunction isDiskFile(v: unknown): v is DiskFile {\n if (!v || typeof v !== 'object') return false;\n const o = v as Record<string, unknown>;\n return o.version === 1 && Array.isArray(o.profiles);\n}\n\n/**\n * Persistent per-agent credential store.\n *\n * File layout (`<stateDir>/agents/<agentId>/auth-profiles.json`):\n *\n * ```json\n * {\n * \"version\": 1,\n * \"profiles\": [\n * { \"provider\": \"openai\", \"profileId\": \"default\", \"mode\": \"api-key\", \"apiKey\": \"sk-...\" },\n * { \"provider\": \"openai\", \"profileId\": \"codex\", \"mode\": \"oauth\",\n * \"oauthAccessToken\": \"...\", \"oauthRefreshToken\": \"...\", \"expiresAt\": 1714000000000 }\n * ]\n * }\n * ```\n *\n * - Constructor is non-blocking; the first read triggers a sync load.\n * - Writes go through a temp file + `renameSync` so partial writes never\n * leave the JSON corrupted.\n */\nexport class DiskAuthProfileStore implements AuthProfileStore {\n private readonly path: string;\n private cache: DiskFile | undefined;\n private writeChain: Promise<void> = Promise.resolve();\n\n constructor(filePath: string) {\n this.path = filePath;\n }\n\n /** Absolute path to the backing JSON file. */\n get filePath(): string {\n return this.path;\n }\n\n // --- Sync read API ------------------------------------------------------\n\n getApiKeySync(providerId: string, profile?: string): string | undefined {\n const p = this.findProfile(providerId, profile);\n if (!p) return undefined;\n if (typeof p.apiKey === 'string' && p.apiKey.length > 0) return p.apiKey;\n if (typeof p.oauthAccessToken === 'string' && p.oauthAccessToken.length > 0) {\n return p.oauthAccessToken;\n }\n return undefined;\n }\n\n hasCredentialSync(providerId: string, profile?: string): boolean {\n return Boolean(this.getApiKeySync(providerId, profile));\n }\n\n list(providerId: string): AuthProfile[] {\n const file = this.ensureLoaded();\n return file.profiles\n .filter((p) => p.provider === providerId)\n .map((p) => ({ ...p }));\n }\n\n get(providerId: string, profileId?: string): AuthProfile | undefined {\n const p = this.findProfile(providerId, profileId);\n return p ? { ...p } : undefined;\n }\n\n // --- Async write API ----------------------------------------------------\n\n /**\n * Persist a profile. Uses a serial write chain so concurrent saves cannot\n * race each other on the JSON document.\n */\n save(profile: AuthProfile): Promise<void> {\n const next = this.writeChain.then(() => {\n const file = this.ensureLoaded();\n const idx = file.profiles.findIndex(\n (p) => p.provider === profile.provider && p.profileId === profile.profileId,\n );\n if (idx >= 0) {\n file.profiles[idx] = { ...profile };\n } else {\n file.profiles.push({ ...profile });\n }\n // Only one default per provider.\n if (profile.default) {\n for (const p of file.profiles) {\n if (\n p.provider === profile.provider &&\n p.profileId !== profile.profileId &&\n p.default\n ) {\n p.default = false;\n }\n }\n }\n this.persist(file);\n });\n // Swallow rejections in the chain so a single bad write doesn't poison\n // every subsequent save attempt.\n this.writeChain = next.catch(() => undefined);\n return next;\n }\n\n /**\n * Default `refresh()` is a no-op. Vendor-specific OAuth refresh logic\n * (Codex / Anthropic) lives in `src/providers/auth-runtime/oauth.ts` and\n * calls `save()` here once it has a fresh token.\n */\n async refresh(profile: AuthProfile): Promise<AuthProfile> {\n return profile;\n }\n\n // --- Internals ----------------------------------------------------------\n\n private ensureLoaded(): DiskFile {\n if (this.cache) return this.cache;\n if (!existsSync(this.path)) {\n this.cache = emptyFile();\n return this.cache;\n }\n try {\n const raw = readFileSync(this.path, 'utf8');\n const parsed = JSON.parse(raw);\n if (isDiskFile(parsed)) {\n this.cache = { version: 1, profiles: parsed.profiles.filter(isAuthProfileLike) };\n } else {\n log.warn(\n { path: this.path, phase: 'load' },\n 'auth-profiles.json has unexpected shape; resetting to empty (file is preserved on disk)',\n );\n this.cache = emptyFile();\n }\n } catch (err) {\n log.warn(\n { err, path: this.path, phase: 'load' },\n `Failed to read auth-profiles.json: ${err instanceof Error ? err.message : String(err)}`,\n );\n this.cache = emptyFile();\n }\n return this.cache;\n }\n\n private findProfile(providerId: string, profileId?: string): AuthProfile | undefined {\n const file = this.ensureLoaded();\n const matches = file.profiles.filter((p) => p.provider === providerId);\n if (matches.length === 0) return undefined;\n const wanted = profileId?.trim();\n if (wanted) {\n return matches.find((p) => p.profileId === wanted);\n }\n return matches.find((p) => p.default) ?? matches.find((p) => p.profileId === 'default') ?? matches[0];\n }\n\n private persist(file: DiskFile): void {\n mkdirSync(dirname(this.path), { recursive: true });\n const tmp = `${this.path}.tmp-${process.pid}-${Date.now()}`;\n writeFileSync(tmp, JSON.stringify(file, null, 2), { encoding: 'utf8', mode: 0o600 });\n renameSync(tmp, this.path);\n this.cache = file;\n }\n}\n\nfunction isAuthProfileLike(v: unknown): v is AuthProfile {\n if (!v || typeof v !== 'object') return false;\n const o = v as Record<string, unknown>;\n return typeof o.provider === 'string' && typeof o.profileId === 'string' && typeof o.mode === 'string';\n}\n\n// --- Default store registry ------------------------------------------------\n\nlet defaultStore: AuthProfileStore = new NoopAuthProfileStore();\nconst diskStores = new Map<string, DiskAuthProfileStore>();\n\nexport function getDefaultAuthProfileStore(): AuthProfileStore {\n return defaultStore;\n}\n\n/**\n * Override the default store. Returns a function that restores the previous\n * store; tests typically call it in `afterEach`.\n */\nexport function setDefaultAuthProfileStore(store: AuthProfileStore): () => void {\n const prev = defaultStore;\n defaultStore = store;\n return () => {\n defaultStore = prev;\n };\n}\n\n/**\n * Get (or create) a {@link DiskAuthProfileStore} for the given agent\n * directory. Same `agentDir` always returns the same store instance so the\n * in-memory cache stays consistent within one process.\n */\nexport function ensureDiskAuthProfileStore(agentDir: string): DiskAuthProfileStore {\n const key = agentDir;\n let store = diskStores.get(key);\n if (!store) {\n store = new DiskAuthProfileStore(join(agentDir, STORE_FILENAME));\n diskStores.set(key, store);\n }\n return store;\n}\n\n/**\n * Convenience: list every profile for a provider via either an explicit\n * store or the default store.\n */\nexport function listProfilesForProvider(\n store: AuthProfileStore | undefined,\n providerId: string,\n): AuthProfile[] {\n const s = store ?? getDefaultAuthProfileStore();\n return s.list(providerId);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-configured.js","names":[],"sources":["../../../../src/providers/auth-runtime/is-configured.ts"],"sourcesContent":["/**\n * Synchronous \"do we have any usable credential\" check for capability providers.\n *\n * Used by:\n * - Provider.isConfigured?({ cfg })\n * - Tool default-model resolution (skip providers without credentials)\n * - Web UI status badge\n *\n * Must NOT touch keychain or trigger OS prompts.\n */\n\nimport { resolveApiKeyForProvider } from './resolve-api-key.js';\nimport type { IsProviderApiKeyConfiguredOptions } from './types.js';\n\nexport function isProviderApiKeyConfigured(options: IsProviderApiKeyConfiguredOptions): boolean {\n return Boolean(resolveApiKeyForProvider(options));\n}\n"],"mappings":";;;;;;;;;;;;AAcA,SAAgB,2BAA2B,SAAqD;AAC9F,QAAO,QAAQ,yBAAyB,QAAQ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth.js","names":[],"sources":["../../../../src/providers/auth-runtime/oauth.ts"],"sourcesContent":["/**\n * OAuth refresh helper used by capability providers (Codex / Anthropic /\n * future Google OAuth). Standalone from `resolveApiKeyForProvider` because\n * refresh is an async network call; the sync hot path never invokes it.\n *\n * Usage pattern:\n *\n * ```typescript\n * const profile = store.get('openai', 'codex');\n * if (profile?.mode === 'oauth' && isOAuthAccessTokenExpired(profile)) {\n * const fresh = await refreshOAuthProfile(profile, { http: postJsonRequest });\n * await store.save?.(fresh);\n * }\n * ```\n */\n\nimport { createLogger } from '../../utils/logger.js';\nimport type { AuthProfile } from './types.js';\n\nconst log = createLogger('AuthOAuthRefresh');\n\n/** Number of ms before {@link AuthProfile.expiresAt} we treat the token as stale. */\nconst REFRESH_SKEW_MS = 60_000;\n\nexport interface OAuthRefreshOptions {\n /**\n * HTTP transport. Defaults to global `fetch`. Tests inject a mock;\n * production usually uses the SSRF-protected `postJsonRequest` from\n * `src/media-shared/http/`.\n */\n fetcher?: typeof fetch;\n /** Hard timeout for the refresh request (ms). Default 30s. */\n timeoutMs?: number;\n}\n\nexport function isOAuthAccessTokenExpired(profile: AuthProfile, nowMs?: number): boolean {\n if (profile.mode !== 'oauth') return false;\n if (typeof profile.expiresAt !== 'number' || profile.expiresAt <= 0) {\n // Unknown expiry — treat as fresh; vendor must call refresh on 401.\n return false;\n }\n const now = nowMs ?? Date.now();\n return profile.expiresAt - REFRESH_SKEW_MS <= now;\n}\n\n/**\n * Refresh an OAuth access token using the standard refresh-token grant. The\n * vendor must have set `oauthTokenEndpoint` and `oauthRefreshToken` on the\n * profile when it was first persisted.\n *\n * Returns a new {@link AuthProfile} object — does NOT mutate the input. The\n * caller is responsible for `store.save?.(returned)`.\n */\nexport async function refreshOAuthProfile(\n profile: AuthProfile,\n options: OAuthRefreshOptions = {},\n): Promise<AuthProfile> {\n if (profile.mode !== 'oauth') {\n throw new Error(`refreshOAuthProfile: profile mode is \"${profile.mode}\", expected \"oauth\"`);\n }\n if (!profile.oauthRefreshToken) {\n throw new Error('refreshOAuthProfile: profile is missing oauthRefreshToken');\n }\n if (!profile.oauthTokenEndpoint) {\n throw new Error('refreshOAuthProfile: profile is missing oauthTokenEndpoint');\n }\n\n const body = new URLSearchParams();\n body.set('grant_type', 'refresh_token');\n body.set('refresh_token', profile.oauthRefreshToken);\n if (profile.oauthClientId) body.set('client_id', profile.oauthClientId);\n\n const fetcher = options.fetcher ?? fetch;\n const ctrl = new AbortController();\n const timer = setTimeout(() => ctrl.abort(), options.timeoutMs ?? 30_000);\n\n try {\n const res = await fetcher(profile.oauthTokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n },\n body: body.toString(),\n signal: ctrl.signal,\n });\n if (!res.ok) {\n const text = await safeReadText(res);\n throw new Error(\n `OAuth refresh failed: ${res.status} ${res.statusText}${text ? ` — ${truncate(text, 240)}` : ''}`,\n );\n }\n const json = (await res.json()) as Record<string, unknown>;\n const accessToken = pickString(json, 'access_token');\n if (!accessToken) {\n throw new Error('OAuth refresh response missing access_token');\n }\n const refreshToken = pickString(json, 'refresh_token') ?? profile.oauthRefreshToken;\n const expiresInSec = pickNumber(json, 'expires_in');\n const expiresAt = expiresInSec ? Date.now() + expiresInSec * 1000 : profile.expiresAt;\n\n return {\n ...profile,\n oauthAccessToken: accessToken,\n oauthRefreshToken: refreshToken,\n expiresAt,\n };\n } catch (err) {\n log.warn(\n { err, provider: profile.provider, profileId: profile.profileId, phase: 'refresh' },\n `OAuth refresh failed for ${profile.provider}/${profile.profileId}`,\n );\n throw err;\n } finally {\n clearTimeout(timer);\n }\n}\n\nfunction pickString(obj: Record<string, unknown>, key: string): string | undefined {\n const v = obj[key];\n return typeof v === 'string' && v.length > 0 ? v : undefined;\n}\n\nfunction pickNumber(obj: Record<string, unknown>, key: string): number | undefined {\n const v = obj[key];\n return typeof v === 'number' && Number.isFinite(v) ? v : undefined;\n}\n\nasync function safeReadText(res: Response): Promise<string> {\n try {\n return await res.text();\n } catch {\n return '';\n }\n}\n\nfunction truncate(s: string, max: number): string {\n return s.length > max ? `${s.slice(0, max)}…` : s;\n}\n"],"mappings":";;;aAgBqD;AAGrD,MAAM,MAAM,aAAa,mBAAmB;;AAG5C,MAAM,kBAAkB;AAaxB,SAAgB,0BAA0B,SAAsB,OAAyB;AACvF,KAAI,QAAQ,SAAS,QAAS,QAAO;AACrC,KAAI,OAAO,QAAQ,cAAc,YAAY,QAAQ,aAAa,EAEhE,QAAO;CAET,MAAM,MAAM,SAAS,KAAK,KAAK;AAC/B,QAAO,QAAQ,YAAY,mBAAmB;;;;;;;;;;AAWhD,eAAsB,oBACpB,SACA,UAA+B,EAAE,EACX;AACtB,KAAI,QAAQ,SAAS,QACnB,OAAM,IAAI,MAAM,yCAAyC,QAAQ,KAAK,qBAAqB;AAE7F,KAAI,CAAC,QAAQ,kBACX,OAAM,IAAI,MAAM,4DAA4D;AAE9E,KAAI,CAAC,QAAQ,mBACX,OAAM,IAAI,MAAM,6DAA6D;CAG/E,MAAM,OAAO,IAAI,iBAAiB;AAClC,MAAK,IAAI,cAAc,gBAAgB;AACvC,MAAK,IAAI,iBAAiB,QAAQ,kBAAkB;AACpD,KAAI,QAAQ,cAAe,MAAK,IAAI,aAAa,QAAQ,cAAc;CAEvE,MAAM,UAAU,QAAQ,WAAW;CACnC,MAAM,OAAO,IAAI,iBAAiB;CAClC,MAAM,QAAQ,iBAAiB,KAAK,OAAO,EAAE,QAAQ,aAAa,IAAO;AAEzE,KAAI;EACF,MAAM,MAAM,MAAM,QAAQ,QAAQ,oBAAoB;GACpD,QAAQ;GACR,SAAS;IACP,gBAAgB;IAChB,QAAQ;IACT;GACD,MAAM,KAAK,UAAU;GACrB,QAAQ,KAAK;GACd,CAAC;AACF,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,OAAO,MAAM,aAAa,IAAI;AACpC,SAAM,IAAI,MACR,yBAAyB,IAAI,OAAO,GAAG,IAAI,aAAa,OAAO,MAAM,SAAS,MAAM,IAAI,KAAK,KAC9F;;EAEH,MAAM,OAAQ,MAAM,IAAI,MAAM;EAC9B,MAAM,cAAc,WAAW,MAAM,eAAe;AACpD,MAAI,CAAC,YACH,OAAM,IAAI,MAAM,8CAA8C;EAEhE,MAAM,eAAe,WAAW,MAAM,gBAAgB,IAAI,QAAQ;EAClE,MAAM,eAAe,WAAW,MAAM,aAAa;EACnD,MAAM,YAAY,eAAe,KAAK,KAAK,GAAG,eAAe,MAAO,QAAQ;AAE5E,SAAO;GACL,GAAG;GACH,kBAAkB;GAClB,mBAAmB;GACnB;GACD;UACM,KAAK;AACZ,MAAI,KACF;GAAE;GAAK,UAAU,QAAQ;GAAU,WAAW,QAAQ;GAAW,OAAO;GAAW,EACnF,4BAA4B,QAAQ,SAAS,GAAG,QAAQ,YACzD;AACD,QAAM;WACE;AACR,eAAa,MAAM;;;AAIvB,SAAS,WAAW,KAA8B,KAAiC;CACjF,MAAM,IAAI,IAAI;AACd,QAAO,OAAO,MAAM,YAAY,EAAE,SAAS,IAAI,IAAI,KAAA;;AAGrD,SAAS,WAAW,KAA8B,KAAiC;CACjF,MAAM,IAAI,IAAI;AACd,QAAO,OAAO,MAAM,YAAY,OAAO,SAAS,EAAE,GAAG,IAAI,KAAA;;AAG3D,eAAe,aAAa,KAAgC;AAC1D,KAAI;AACF,SAAO,MAAM,IAAI,MAAM;SACjB;AACN,SAAO;;;AAIX,SAAS,SAAS,GAAW,KAAqB;AAChD,QAAO,EAAE,SAAS,MAAM,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-api-key.js","names":[],"sources":["../../../../src/providers/auth-runtime/resolve-api-key.ts"],"sourcesContent":["/**\n * Synchronous API-key resolution for capability providers\n * (image / audio / video).\n *\n * Resolution order:\n * 1. AuthProfileStore (per-agent / per-profile; noop in Step 1)\n * 2. cfg.providers.<id>.apiKey\n * 3. PROVIDER_ENV_MAP[providerId] env vars (or `<PROVIDER>_API_KEY` fallback)\n *\n * Distinct from `src/providers/index.ts#getApiKeySync` which is keyed to the\n * LLM model registry. Capability providers care only about per-vendor API\n * keys, not pi-ai's `Model` shape.\n */\n\nimport { resolveAuthProfileForProvider } from './resolve-auth.js';\nimport type { ResolveApiKeyOptions } from './types.js';\n\n/**\n * Synchronous lookup that returns just the resolved API key (or OAuth access\n * token) for a provider. Internally delegates to\n * {@link resolveAuthProfileForProvider} which knows about the full mode set\n * (`api-key` / `oauth` / `azure-key`) and is the entry point vendors use\n * when they need to branch on auth mode.\n *\n * Resolution order (matches spec §8.4):\n * 1. AuthProfileStore (per-agent profile — may be OAuth)\n * 2. cfg.providers.<id>.apiKey\n * 3. PROVIDER_ENV_MAP[providerId] env vars\n */\nexport function resolveApiKeyForProvider(options: ResolveApiKeyOptions): string | undefined {\n return resolveAuthProfileForProvider(options).apiKey;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAgB,yBAAyB,SAAmD;AAC1F,QAAO,8BAA8B,QAAQ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-auth.js","names":[],"sources":["../../../../src/providers/auth-runtime/resolve-auth.ts"],"sourcesContent":["/**\n * Higher-level auth resolution that returns the *full* profile context, not\n * just the API key. Vendors that support multiple auth modes (e.g. OpenAI\n * api-key + Codex OAuth + Azure api-key) call this to pick the right\n * branch.\n *\n * Resolution order matches `resolveApiKeyForProvider`:\n * 1. AuthProfileStore (per-agent profile — may be OAuth)\n * 2. cfg.providers.<id>.apiKey\n * 3. PROVIDER_ENV_MAP[providerId] env vars\n *\n * Returns:\n * - `mode: 'oauth' | 'azure-key' | 'api-key'`\n * - `apiKey` (or OAuth access token) if found\n * - `profileId` when the credential came from the store\n */\n\nimport { getApiKeyFromEnv } from '../env-keys.js';\nimport { getDefaultAuthProfileStore } from './auth-profile-store.js';\nimport type { AuthProfile, AuthProfileStore, ProviderAuthMode, ResolveApiKeyOptions } from './types.js';\n\nexport interface ProviderAuthResolution {\n apiKey?: string;\n mode: ProviderAuthMode;\n profileId?: string;\n /** Source bucket: 'store' | 'config' | 'env' | 'none'. */\n source: 'store' | 'config' | 'env' | 'none';\n /** Vendor metadata copied from the matched profile (azure resource etc.). */\n meta?: Record<string, unknown>;\n}\n\nexport function resolveAuthProfileForProvider(\n options: ResolveApiKeyOptions,\n): ProviderAuthResolution {\n const { providerId } = options;\n if (!providerId) {\n return { apiKey: undefined, mode: 'api-key', source: 'none' };\n }\n\n // 1. Profile store\n const store = options.store ?? getDefaultAuthProfileStore();\n const profile = pickProfile(store, providerId, options.profileName);\n if (profile) {\n const key =\n (typeof profile.apiKey === 'string' && profile.apiKey.length > 0 ? profile.apiKey : undefined) ??\n (typeof profile.oauthAccessToken === 'string' && profile.oauthAccessToken.length > 0\n ? profile.oauthAccessToken\n : undefined);\n if (key) {\n return {\n apiKey: key,\n mode: profile.mode,\n profileId: profile.profileId,\n source: 'store',\n meta: profile.meta,\n };\n }\n }\n\n // 2. cfg.providers.<id>.apiKey\n const cfgKey = readCfgApiKey(options.cfg, providerId);\n if (cfgKey) {\n const azure = readCfgAzureMeta(options.cfg, providerId);\n return {\n apiKey: cfgKey,\n mode: azure ? 'azure-key' : 'api-key',\n source: 'config',\n meta: azure,\n };\n }\n\n // 3. env\n const envKey = options.envReader\n ? readFromCustomEnv(options.envReader, providerId)\n : getApiKeyFromEnv(providerId);\n if (envKey) {\n return { apiKey: envKey, mode: 'api-key', source: 'env' };\n }\n\n return { apiKey: undefined, mode: 'api-key', source: 'none' };\n}\n\nfunction pickProfile(\n store: AuthProfileStore,\n providerId: string,\n profileName?: string,\n): AuthProfile | undefined {\n try {\n return store.get(providerId, profileName);\n } catch {\n return undefined;\n }\n}\n\nfunction readCfgApiKey(cfg: ResolveApiKeyOptions['cfg'], providerId: string): string | undefined {\n const providers = (cfg as unknown as { providers?: Record<string, unknown> } | undefined)?.providers;\n if (!providers || typeof providers !== 'object') return undefined;\n const entry = (providers as Record<string, unknown>)[providerId];\n if (!entry || typeof entry !== 'object') return undefined;\n const apiKey = (entry as Record<string, unknown>).apiKey;\n return typeof apiKey === 'string' && apiKey.length > 0 ? apiKey : undefined;\n}\n\nfunction readCfgAzureMeta(\n cfg: ResolveApiKeyOptions['cfg'],\n providerId: string,\n): Record<string, unknown> | undefined {\n const providers = (cfg as unknown as { providers?: Record<string, unknown> } | undefined)?.providers;\n if (!providers || typeof providers !== 'object') return undefined;\n const entry = (providers as Record<string, unknown>)[providerId];\n if (!entry || typeof entry !== 'object') return undefined;\n const azure = (entry as Record<string, unknown>).azure;\n return azure && typeof azure === 'object' ? (azure as Record<string, unknown>) : undefined;\n}\n\nfunction readFromCustomEnv(\n reader: (name: string) => string | undefined,\n providerId: string,\n): string | undefined {\n const fallbackName = providerId.toUpperCase().replace(/-/g, '_') + '_API_KEY';\n const v = reader(fallbackName);\n return typeof v === 'string' && v.length > 0 ? v : undefined;\n}\n"],"mappings":";;;eAiBkD;AAclD,SAAgB,8BACd,SACwB;CACxB,MAAM,EAAE,eAAe;AACvB,KAAI,CAAC,WACH,QAAO;EAAE,QAAQ,KAAA;EAAW,MAAM;EAAW,QAAQ;EAAQ;CAK/D,MAAM,UAAU,YADF,QAAQ,SAAS,4BAA4B,EACxB,YAAY,QAAQ,YAAY;AACnE,KAAI,SAAS;EACX,MAAM,OACH,OAAO,QAAQ,WAAW,YAAY,QAAQ,OAAO,SAAS,IAAI,QAAQ,SAAS,KAAA,OACnF,OAAO,QAAQ,qBAAqB,YAAY,QAAQ,iBAAiB,SAAS,IAC/E,QAAQ,mBACR,KAAA;AACN,MAAI,IACF,QAAO;GACL,QAAQ;GACR,MAAM,QAAQ;GACd,WAAW,QAAQ;GACnB,QAAQ;GACR,MAAM,QAAQ;GACf;;CAKL,MAAM,SAAS,cAAc,QAAQ,KAAK,WAAW;AACrD,KAAI,QAAQ;EACV,MAAM,QAAQ,iBAAiB,QAAQ,KAAK,WAAW;AACvD,SAAO;GACL,QAAQ;GACR,MAAM,QAAQ,cAAc;GAC5B,QAAQ;GACR,MAAM;GACP;;CAIH,MAAM,SAAS,QAAQ,YACnB,kBAAkB,QAAQ,WAAW,WAAW,GAChD,iBAAiB,WAAW;AAChC,KAAI,OACF,QAAO;EAAE,QAAQ;EAAQ,MAAM;EAAW,QAAQ;EAAO;AAG3D,QAAO;EAAE,QAAQ,KAAA;EAAW,MAAM;EAAW,QAAQ;EAAQ;;AAG/D,SAAS,YACP,OACA,YACA,aACyB;AACzB,KAAI;AACF,SAAO,MAAM,IAAI,YAAY,YAAY;SACnC;AACN;;;AAIJ,SAAS,cAAc,KAAkC,YAAwC;CAC/F,MAAM,YAAa,KAAwE;AAC3F,KAAI,CAAC,aAAa,OAAO,cAAc,SAAU,QAAO,KAAA;CACxD,MAAM,QAAS,UAAsC;AACrD,KAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO,KAAA;CAChD,MAAM,SAAU,MAAkC;AAClD,QAAO,OAAO,WAAW,YAAY,OAAO,SAAS,IAAI,SAAS,KAAA;;AAGpE,SAAS,iBACP,KACA,YACqC;CACrC,MAAM,YAAa,KAAwE;AAC3F,KAAI,CAAC,aAAa,OAAO,cAAc,SAAU,QAAO,KAAA;CACxD,MAAM,QAAS,UAAsC;AACrD,KAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO,KAAA;CAChD,MAAM,QAAS,MAAkC;AACjD,QAAO,SAAS,OAAO,UAAU,WAAY,QAAoC,KAAA;;AAGnF,SAAS,kBACP,QACA,YACoB;CAEpB,MAAM,IAAI,OADW,WAAW,aAAa,CAAC,QAAQ,MAAM,IAAI,GAAG,WACrC;AAC9B,QAAO,OAAO,MAAM,YAAY,EAAE,SAAS,IAAI,IAAI,KAAA"}