@xopcai/xopc 0.0.149 → 0.0.150

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 (2873) 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-B3YP7y9d.js} +1 -1
  158. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSccACje.js → agent-avatar-dicebear-BaP05tRU.js} +1 -1
  159. package/dist/gateway/static/root/assets/{agents-DZDOcgz5.js → agents-QArUBYV7.js} +1 -1
  160. package/dist/gateway/static/root/assets/{api-BMdUsNCV.js → api-BirUfJgj.js} +1 -1
  161. package/dist/gateway/static/root/assets/{app-management-settings-panel-DrLGhYkI.js → app-management-settings-panel-D5Cg_a6I.js} +1 -1
  162. package/dist/gateway/static/root/assets/{appearance-settings-BNasnY9D.js → appearance-settings-BBsAkJ56.js} +1 -1
  163. package/dist/gateway/static/root/assets/{apps-page-Cmr-Hvm9.js → apps-page-D1uAUndU.js} +1 -1
  164. package/dist/gateway/static/root/assets/{archive-plugin-BQ17IK9x.js → archive-plugin-D3OmrvFx.js} +1 -1
  165. package/dist/gateway/static/root/assets/{attachment-load-HXvgWHXu.js → attachment-load-Cgkm_5mb.js} +1 -1
  166. package/dist/gateway/static/root/assets/{automation-suggestion-card-CjIWpsch.js → automation-suggestion-card-CHvxSz-t.js} +1 -1
  167. package/dist/gateway/static/root/assets/{automations-page-TWgUAI8t.js → automations-page-BWQk03Vu.js} +1 -1
  168. package/dist/gateway/static/root/assets/{binary-plugins-DifWJzNZ.js → binary-plugins-dJR5UuzL.js} +1 -1
  169. package/dist/gateway/static/root/assets/{block-editor-DtRzIkPU.js → block-editor-v4_7o92L.js} +2 -2
  170. package/dist/gateway/static/root/assets/{browser-settings-page-DBsFItW_.js → browser-settings-page-SruFGuBP.js} +1 -1
  171. package/dist/gateway/static/root/assets/{capability-presets-api-DazKjWW1.js → capability-presets-api-BcTjPLiD.js} +1 -1
  172. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-Cvrw4fD1.js → capability-presets-settings-panel-CddBf58y.js} +1 -1
  173. package/dist/gateway/static/root/assets/{channel-recipient-api-Bea6if_6.js → channel-recipient-api-BbDlMRm5.js} +1 -1
  174. package/dist/gateway/static/root/assets/{channels-settings-BBkzrBYy.js → channels-settings-WI5tQ5tn.js} +1 -1
  175. package/dist/gateway/static/root/assets/channels-status-swr-Dt2EROlf.js +1 -0
  176. package/dist/gateway/static/root/assets/{connector-logo-BjbYbJjQ.js → connector-logo-BNthqff-.js} +1 -1
  177. package/dist/gateway/static/root/assets/{connectors-page-DLsZCAw7.js → connectors-page-DavHJ6rR.js} +1 -1
  178. package/dist/gateway/static/root/assets/desktop-pet-CVajXkdj.js +1 -0
  179. package/dist/gateway/static/root/assets/desktop-pet-settings-SHI66eIi.js +1 -0
  180. package/dist/gateway/static/root/assets/{directory-picker-path-field-C8zZNUzC.js → directory-picker-path-field-BdWd7m-p.js} +1 -1
  181. package/dist/gateway/static/root/assets/{dreaming-settings-gJSw7Adk.js → dreaming-settings-CXDhu3Me.js} +1 -1
  182. package/dist/gateway/static/root/assets/{extension-debug-page-DFE5ADJ0.js → extension-debug-page-CLJTGozU.js} +1 -1
  183. package/dist/gateway/static/root/assets/{extension-page-CfR-aW8G.js → extension-page-ClxpGfzA.js} +1 -1
  184. package/dist/gateway/static/root/assets/{extension-settings-page-CFIEbs2L.js → extension-settings-page-CDA3ZJ8k.js} +1 -1
  185. package/dist/gateway/static/root/assets/{gateway-config-api-B6M_ra8U.js → gateway-config-api-DpXL78pS.js} +1 -1
  186. package/dist/gateway/static/root/assets/{gateway-settings-BrxzyVW2.js → gateway-settings-Co-mXFP_.js} +1 -1
  187. package/dist/gateway/static/root/assets/{gateway-startup-retry-DNA3OOzV.js → gateway-startup-retry-D0SU7dte.js} +1 -1
  188. package/dist/gateway/static/root/assets/{goal-create-dialog-DRVRLc5Z.js → goal-create-dialog-BO6G--Ec.js} +1 -1
  189. package/dist/gateway/static/root/assets/{goal-detail-page-8F7NElzP.js → goal-detail-page-DK8eog4h.js} +1 -1
  190. package/dist/gateway/static/root/assets/{goals-config-api-D88opgcs.js → goals-config-api-r71aDqix.js} +1 -1
  191. package/dist/gateway/static/root/assets/{goals-page-BaoLiV8G.js → goals-page-AcROW97U.js} +2 -2
  192. package/dist/gateway/static/root/assets/{goals-settings-D07UL8Jo.js → goals-settings-CZOLhkTH.js} +1 -1
  193. package/dist/gateway/static/root/assets/{heartbeat-settings-YCSNOcXC.js → heartbeat-settings-F9S1gIFo.js} +1 -1
  194. package/dist/gateway/static/root/assets/index-C46C7Xee.css +1 -0
  195. package/dist/gateway/static/root/assets/{index-CH7XN6KY.js → index-IPmCli0N.js} +41 -41
  196. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BHnh5OoY.js → keyboard-shortcuts-settings-B3CUVfZ8.js} +1 -1
  197. package/dist/gateway/static/root/assets/{local-app-workbench-page-Boe8n4zH.js → local-app-workbench-page-HVq6NUvQ.js} +1 -1
  198. package/dist/gateway/static/root/assets/{local-apps-page-CKvtLzsF.js → local-apps-page-n7YJfRkU.js} +1 -1
  199. package/dist/gateway/static/root/assets/{locale-store-BneNAR8R.js → locale-store-BvcHGPHU.js} +1 -1
  200. package/dist/gateway/static/root/assets/{logs-page-Cb4Uptct.js → logs-page-Dgko6r04.js} +1 -1
  201. package/dist/gateway/static/root/assets/{markdown-split-BVSFG99p.js → markdown-split-1mnXr-JA.js} +1 -1
  202. package/dist/gateway/static/root/assets/{media-plugins-DdOjIVk3.js → media-plugins-D2bcxXrT.js} +1 -1
  203. package/dist/gateway/static/root/assets/{messages-t1yPaVCt.js → messages-BH7paqYt.js} +2 -2
  204. package/dist/gateway/static/root/assets/{models-hub-panel-CNiUKZUV.js → models-hub-panel-DD0cEfmR.js} +1 -1
  205. package/dist/gateway/static/root/assets/{notes-page-ZbLR3awn.js → notes-page-Wjc2utlj.js} +1 -1
  206. package/dist/gateway/static/root/assets/{notes-workbench-C9__VkD6.js → notes-workbench-BkA2yg9K.js} +2 -2
  207. package/dist/gateway/static/root/assets/{page-tabs-DMlQERNg.js → page-tabs-vdljrKuG.js} +1 -1
  208. package/dist/gateway/static/root/assets/{preview-open-alternatives-CbiJRPxK.js → preview-open-alternatives-BHki0l-E.js} +1 -1
  209. package/dist/gateway/static/root/assets/{project-detail-page-CZhuB5kO.js → project-detail-page-CXwVNLgg.js} +1 -1
  210. package/dist/gateway/static/root/assets/{projects-page-BOq4WVdR.js → projects-page-DlfvNcLh.js} +1 -1
  211. package/dist/gateway/static/root/assets/{remote-access-hub-BxGq0ebQ.js → remote-access-hub-BQyEX2Ui.js} +1 -1
  212. package/dist/gateway/static/root/assets/{save-bar-controls-BZTj3hxl.js → save-bar-controls-Vy4EmvEh.js} +1 -1
  213. package/dist/gateway/static/root/assets/{schedule-field-CxYDObjT.js → schedule-field-CVcwC7k_.js} +1 -1
  214. package/dist/gateway/static/root/assets/{schema-form-CBbXgpKQ.js → schema-form-DhMA1vkR.js} +1 -1
  215. package/dist/gateway/static/root/assets/{sessions-page-B6gSU_Au.js → sessions-page-CqQEW8oT.js} +1 -1
  216. package/dist/gateway/static/root/assets/settings-advanced-gate-M8fleFSc.js +1 -0
  217. package/dist/gateway/static/root/assets/{settings-collapsible-section-BySKZ8rp.js → settings-collapsible-section-C0xcL0vB.js} +1 -1
  218. package/dist/gateway/static/root/assets/{settings-form-section-CjINay6t.js → settings-form-section-Cgj4iVpx.js} +1 -1
  219. package/dist/gateway/static/root/assets/{settings-loading-skeleton-vitElc-n.js → settings-loading-skeleton-CC_NmD69.js} +1 -1
  220. package/dist/gateway/static/root/assets/{settings-page-BNrVwuL7.js → settings-page-B7_JZ2rM.js} +1 -1
  221. package/dist/gateway/static/root/assets/{settings-page-layout-HdlQOOqp.js → settings-page-layout-CKuQT4SG.js} +1 -1
  222. package/dist/gateway/static/root/assets/{setup-status-panel-BJeA4mmk.js → setup-status-panel-DvR8Y5YN.js} +1 -1
  223. package/dist/gateway/static/root/assets/{share-preview-page-DC-eQONB.js → share-preview-page-BmVw-6SJ.js} +1 -1
  224. package/dist/gateway/static/root/assets/{shares-settings-DB2KYA2_.js → shares-settings-C0JYYhGx.js} +1 -1
  225. package/dist/gateway/static/root/assets/skill-reload-api-DBFBczqN.js +1 -0
  226. package/dist/gateway/static/root/assets/{skills-page-Pm0fNe_p.js → skills-page-KAI9qBDD.js} +1 -1
  227. package/dist/gateway/static/root/assets/{system-settings-panel-CVa90q2f.js → system-settings-panel-D6d8VAk8.js} +1 -1
  228. package/dist/gateway/static/root/assets/{theme-store-D1cOpgsy.js → theme-store-EbMQ3TYi.js} +1 -1
  229. package/dist/gateway/static/root/assets/{typed-models-lib-DIKF9vpz.js → typed-models-lib-D63hJX-S.js} +1 -1
  230. package/dist/gateway/static/root/assets/{use-channel-catalog-DnvpI0Ys.js → use-channel-catalog-D-I-qki9.js} +1 -1
  231. package/dist/gateway/static/root/assets/{user-context-page-DnLqQyRG.js → user-context-page-Cuft-EbR.js} +1 -1
  232. package/dist/gateway/static/root/assets/{user-profile-fields-editor-y8gTmkPX.js → user-profile-fields-editor-CPaoS8Zl.js} +1 -1
  233. package/dist/gateway/static/root/assets/{user-profile-settings-panel-C3pvqe28.js → user-profile-settings-panel-Bs13qcx1.js} +1 -1
  234. package/dist/gateway/static/root/assets/{utils-BK2vwu_3.js → utils-3mnkFvPw.js} +1 -1
  235. package/dist/gateway/static/root/assets/{voice-api-key-field-BiFIIWC4.js → voice-api-key-field-C716UEi9.js} +1 -1
  236. package/dist/gateway/static/root/assets/{work-discovery-page-D2-_bC0J.js → work-discovery-page-CFSkHa0v.js} +1 -1
  237. package/dist/gateway/static/root/assets/{work-item-detail-page-B0FPG4eJ.js → work-item-detail-page-DaapBdoZ.js} +1 -1
  238. package/dist/gateway/static/root/assets/{work-page-BDeVxts_.js → work-page-DMtX92vs.js} +1 -1
  239. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BPzS67fU.js → workflow-run-setup-panel-B9FnZNWZ.js} +1 -1
  240. package/dist/gateway/static/root/assets/{workflows-page-xPhmrRLs.js → workflows-page-BgvE0_Iv.js} +1 -1
  241. package/dist/gateway/static/root/favicon.svg +1 -187
  242. package/dist/gateway/static/root/index.html +7 -7
  243. package/dist/gateway/static/root/logo-dark.svg +1 -185
  244. package/dist/gateway/static/root/logo.svg +1 -185
  245. package/dist/package.js +1 -3
  246. package/dist/src/activity/context.js +0 -2
  247. package/dist/src/activity/emitter.js +0 -2
  248. package/dist/src/activity/service.js +0 -2
  249. package/dist/src/agent/agent-manager.js +0 -2
  250. package/dist/src/agent/agent-scope.js +0 -2
  251. package/dist/src/agent/background-review/coordinator.js +0 -2
  252. package/dist/src/agent/background-review/prompts.js +0 -2
  253. package/dist/src/agent/background-review/run-background-review.js +0 -2
  254. package/dist/src/agent/background-review/settings.js +0 -2
  255. package/dist/src/agent/bootstrap/bootstrap-cache.js +0 -2
  256. package/dist/src/agent/bootstrap/bootstrap-context.js +0 -2
  257. package/dist/src/agent/bootstrap/bootstrap-files.js +0 -2
  258. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +0 -2
  259. package/dist/src/agent/bootstrap/load-bootstrap-files.js +0 -2
  260. package/dist/src/agent/bootstrap/project-agents-context.js +0 -2
  261. package/dist/src/agent/capabilities/definitions.js +0 -2
  262. package/dist/src/agent/capabilities/registry.js +0 -2
  263. package/dist/src/agent/child-agent-factory.js +0 -2
  264. package/dist/src/agent/client-error-format.js +0 -2
  265. package/dist/src/agent/code-intelligence/binary.js +0 -2
  266. package/dist/src/agent/code-intelligence/runtime.js +0 -2
  267. package/dist/src/agent/code-intelligence/tools.js +0 -2
  268. package/dist/src/agent/coding/turn-diff-tracker.js +0 -2
  269. package/dist/src/agent/context/expand-at-file-mentions.js +0 -2
  270. package/dist/src/agent/context/project-context.js +0 -2
  271. package/dist/src/agent/context/workspace-seed.js +0 -2
  272. package/dist/src/agent/context/workspace-state.js +0 -2
  273. package/dist/src/agent/context/workspace.js +0 -2
  274. package/dist/src/agent/embedded/run-for-session.js +0 -2
  275. package/dist/src/agent/embedded/run-turn.js +0 -2
  276. package/dist/src/agent/embedded/runs.js +0 -2
  277. package/dist/src/agent/embedded/session-manager-init.js +0 -2
  278. package/dist/src/agent/embedded/session-runner.js +0 -2
  279. package/dist/src/agent/embedded/session-tool-result-guard.js +0 -2
  280. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +0 -2
  281. package/dist/src/agent/embedded/subscribe-session.js +0 -2
  282. package/dist/src/agent/embedded/system-prompt-override.js +0 -2
  283. package/dist/src/agent/embedded/tool-result-context-guard.js +0 -2
  284. package/dist/src/agent/embedded/tool-result-truncation.js +0 -2
  285. package/dist/src/agent/embedded/xopc-auth-storage.js +0 -2
  286. package/dist/src/agent/embedded/xopc-stream-bridge.js +0 -2
  287. package/dist/src/agent/embedded/xopc-tools-bridge.js +0 -2
  288. package/dist/src/agent/failover-error.js +0 -2
  289. package/dist/src/agent/fallback/candidates.js +0 -2
  290. package/dist/src/agent/fallback/reason.js +0 -2
  291. package/dist/src/agent/feedback/feedback-coordinator.js +0 -2
  292. package/dist/src/agent/goals/checklist-judge.js +0 -2
  293. package/dist/src/agent/goals/checklist-types.js +0 -2
  294. package/dist/src/agent/goals/evaluate-turn.js +0 -2
  295. package/dist/src/agent/goals/goal-locale.js +0 -2
  296. package/dist/src/agent/goals/judge.js +0 -2
  297. package/dist/src/agent/goals/persistent-goal-service.js +0 -2
  298. package/dist/src/agent/goals/post-turn.js +0 -2
  299. package/dist/src/agent/goals/state.js +0 -2
  300. package/dist/src/agent/image/generation/bundled-registry.js +0 -2
  301. package/dist/src/agent/image/generation/bundled.js +0 -2
  302. package/dist/src/agent/image/generation/image-assets.js +0 -2
  303. package/dist/src/agent/image/generation/model-ref.js +0 -2
  304. package/dist/src/agent/image/generation/normalization.js +0 -2
  305. package/dist/src/agent/image/generation/openai-compatible-image-provider.js +0 -2
  306. package/dist/src/agent/image/generation/provider-registry.js +0 -2
  307. package/dist/src/agent/image/generation/runtime.js +0 -2
  308. package/dist/src/agent/image/image-helpers.js +0 -2
  309. package/dist/src/agent/image/image-model-fallback.js +0 -2
  310. package/dist/src/agent/image/inbound-image-handling.js +0 -2
  311. package/dist/src/agent/image/load-image-media.js +0 -2
  312. package/dist/src/agent/image/tool-model-config.js +0 -2
  313. package/dist/src/agent/image/understanding/pi-ai-provider.js +0 -2
  314. package/dist/src/agent/image/understanding/provider-registry.js +0 -2
  315. package/dist/src/agent/image/understanding/runtime.js +0 -2
  316. package/dist/src/agent/image/vision-detection.js +0 -2
  317. package/dist/src/agent/inbound/attachment-pipeline.js +0 -2
  318. package/dist/src/agent/inbound/inbound-loop.js +0 -2
  319. package/dist/src/agent/inbound/turn-dispatcher.js +0 -2
  320. package/dist/src/agent/ipc/bus.js +0 -2
  321. package/dist/src/agent/ipc/inbox.js +0 -2
  322. package/dist/src/agent/ipc/socket.js +0 -2
  323. package/dist/src/agent/ipc/types.js +0 -2
  324. package/dist/src/agent/lifecycle/handlers/compaction.js +0 -2
  325. package/dist/src/agent/lifecycle/hook-handler.js +0 -2
  326. package/dist/src/agent/lifecycle/manager.js +0 -2
  327. package/dist/src/agent/lifecycle/progress.js +0 -2
  328. package/dist/src/agent/lifecycle/timeout-wrapper.js +0 -2
  329. package/dist/src/agent/lifecycle/typing.js +0 -2
  330. package/dist/src/agent/mcp/bundle-mcp-config.js +0 -2
  331. package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -2
  332. package/dist/src/agent/mcp/bundle-mcp-names.js +0 -2
  333. package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -2
  334. package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -2
  335. package/dist/src/agent/mcp/embedded-mcp.js +0 -2
  336. package/dist/src/agent/mcp/mcp-config-shared.js +0 -2
  337. package/dist/src/agent/mcp/mcp-http.js +0 -2
  338. package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -2
  339. package/dist/src/agent/mcp/mcp-stdio.js +0 -2
  340. package/dist/src/agent/mcp/mcp-tool-meta.js +0 -2
  341. package/dist/src/agent/mcp/mcp-transport-config.js +0 -2
  342. package/dist/src/agent/mcp/mcp-transport.js +0 -2
  343. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -2
  344. package/dist/src/agent/media-generation/model-ref.js +0 -2
  345. package/dist/src/agent/media-generation/normalization.types.js +0 -2
  346. package/dist/src/agent/media-generation/runtime-shared.js +0 -2
  347. package/dist/src/agent/memory/agent-message-access.js +0 -2
  348. package/dist/src/agent/memory/builtin-memory-store.js +0 -2
  349. package/dist/src/agent/memory/builtin-provider.js +0 -2
  350. package/dist/src/agent/memory/compaction.js +0 -2
  351. package/dist/src/agent/memory/context/planner.js +0 -2
  352. package/dist/src/agent/memory/context-fence.js +0 -2
  353. package/dist/src/agent/memory/create-memory-manager.js +0 -2
  354. package/dist/src/agent/memory/dreaming/config.js +0 -2
  355. package/dist/src/agent/memory/dreaming/constants.js +0 -2
  356. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -2
  357. package/dist/src/agent/memory/dreaming/events.js +0 -2
  358. package/dist/src/agent/memory/dreaming/last-run.js +0 -2
  359. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -2
  360. package/dist/src/agent/memory/dreaming/preview.js +0 -2
  361. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -2
  362. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -2
  363. package/dist/src/agent/memory/dreaming/scope.js +0 -2
  364. package/dist/src/agent/memory/dreaming/short-term-store.js +0 -2
  365. package/dist/src/agent/memory/dreaming/utils.js +0 -2
  366. package/dist/src/agent/memory/lifecycle.js +0 -2
  367. package/dist/src/agent/memory/manager.js +0 -2
  368. package/dist/src/agent/memory/memory-config.js +0 -2
  369. package/dist/src/agent/memory/message-sanitizer.js +0 -2
  370. package/dist/src/agent/memory/plugin-discovery.js +0 -2
  371. package/dist/src/agent/memory/sensitivity.js +0 -2
  372. package/dist/src/agent/memory/source-origin.js +0 -2
  373. package/dist/src/agent/memory/stub-memory-provider.js +0 -2
  374. package/dist/src/agent/memory/summary-generator.js +0 -2
  375. package/dist/src/agent/memory/understanding/correction.js +0 -2
  376. package/dist/src/agent/memory/understanding/quality.js +0 -2
  377. package/dist/src/agent/memory/understanding/service.js +0 -2
  378. package/dist/src/agent/memory/user-context-coordinator.js +0 -2
  379. package/dist/src/agent/memory/user-message-text.js +0 -2
  380. package/dist/src/agent/memory/window.js +0 -2
  381. package/dist/src/agent/messaging/command-handler.js +0 -2
  382. package/dist/src/agent/messaging/message-router.js +0 -2
  383. package/dist/src/agent/messaging/outbound-coordinator.js +0 -2
  384. package/dist/src/agent/messaging/stream-manager.js +0 -2
  385. package/dist/src/agent/middleware/context.js +0 -2
  386. package/dist/src/agent/middleware/self-verify.js +0 -2
  387. package/dist/src/agent/models/manager.js +0 -2
  388. package/dist/src/agent/models/request-limiter.js +0 -2
  389. package/dist/src/agent/models/selection.js +0 -2
  390. package/dist/src/agent/orchestration/agent-event-handler.js +0 -2
  391. package/dist/src/agent/orchestration/agent-orchestrator.js +0 -2
  392. package/dist/src/agent/orchestration/llm-turn-retry.js +0 -2
  393. package/dist/src/agent/orchestration/loop-guard.js +0 -2
  394. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +0 -2
  395. package/dist/src/agent/prompt/cache-boundary.js +0 -2
  396. package/dist/src/agent/prompt/memory/index.js +0 -2
  397. package/dist/src/agent/prompt/safety.js +0 -2
  398. package/dist/src/agent/prompt/sanitize-for-prompt.js +0 -2
  399. package/dist/src/agent/prompt/sections/behavior.js +0 -2
  400. package/dist/src/agent/prompt/sections/memory-skills.js +0 -2
  401. package/dist/src/agent/prompt/sections/messaging-runtime.js +0 -2
  402. package/dist/src/agent/prompt/sections/project-context.js +0 -2
  403. package/dist/src/agent/prompt/sections/tooling.js +0 -2
  404. package/dist/src/agent/prompt/sections/workspace-runtime.js +0 -2
  405. package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
  406. package/dist/src/agent/prompt/subagent-context.js +0 -2
  407. package/dist/src/agent/prompt/system-prompt-params.js +0 -2
  408. package/dist/src/agent/prompt/system-prompt.js +0 -2
  409. package/dist/src/agent/prompt/system-reminder.js +0 -2
  410. package/dist/src/agent/reply/apply-turn-user-enrichment.js +0 -2
  411. package/dist/src/agent/reply/post-compaction-context.js +0 -2
  412. package/dist/src/agent/reply/startup-context.js +0 -2
  413. package/dist/src/agent/reply/workspace-boundary-read.js +0 -2
  414. package/dist/src/agent/sandbox/command-validator.js +0 -2
  415. package/dist/src/agent/sandbox/exec-policy.js +0 -2
  416. package/dist/src/agent/sandbox/path-policy.js +0 -2
  417. package/dist/src/agent/sandbox/sanitize-env-vars.js +0 -2
  418. package/dist/src/agent/sandbox/types.js +0 -2
  419. package/dist/src/agent/service/async-queue.js +0 -2
  420. package/dist/src/agent/service/btw-query.js +0 -2
  421. package/dist/src/agent/service/build-direct-message-content.js +0 -2
  422. package/dist/src/agent/service/direct-turn-helpers.js +0 -2
  423. package/dist/src/agent/service/parse-outbound-session-key.js +0 -2
  424. package/dist/src/agent/service/process-direct-one-shot.js +0 -2
  425. package/dist/src/agent/service/process-direct-streaming.js +0 -2
  426. package/dist/src/agent/service/session-context-report.js +0 -2
  427. package/dist/src/agent/service/webchat-tts.js +0 -2
  428. package/dist/src/agent/service-inbound-utils.js +0 -2
  429. package/dist/src/agent/service.js +0 -2
  430. package/dist/src/agent/session/session-config-service.js +0 -2
  431. package/dist/src/agent/session/session-context.js +0 -2
  432. package/dist/src/agent/session/session-hydrator.js +0 -2
  433. package/dist/src/agent/session/session-inspector.js +0 -2
  434. package/dist/src/agent/session/session-lifecycle.js +0 -2
  435. package/dist/src/agent/session/session-state-bag.js +0 -2
  436. package/dist/src/agent/session/tracker.js +0 -2
  437. package/dist/src/agent/skills/config.js +0 -2
  438. package/dist/src/agent/skills/filesystem-watcher.js +0 -2
  439. package/dist/src/agent/skills/format-skills-prompt.js +0 -2
  440. package/dist/src/agent/skills/hub-hash.js +0 -2
  441. package/dist/src/agent/skills/hub-lock.js +0 -2
  442. package/dist/src/agent/skills/hub-pull.js +0 -2
  443. package/dist/src/agent/skills/index.js +0 -2
  444. package/dist/src/agent/skills/install-target.js +0 -2
  445. package/dist/src/agent/skills/installer.js +0 -2
  446. package/dist/src/agent/skills/managed-store.js +0 -2
  447. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +0 -2
  448. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +0 -2
  449. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +0 -2
  450. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +0 -2
  451. package/dist/src/agent/skills/marketplace/marketplace-category-order.js +0 -2
  452. package/dist/src/agent/skills/marketplace/registry.js +0 -2
  453. package/dist/src/agent/skills/marketplace/resolve-adapter.js +0 -2
  454. package/dist/src/agent/skills/parse-skill-metadata.js +0 -2
  455. package/dist/src/agent/skills/required-env-vars.js +0 -2
  456. package/dist/src/agent/skills/scanner.js +0 -2
  457. package/dist/src/agent/skills/skill-manage-ops.js +0 -2
  458. package/dist/src/agent/skills/skill-manager.js +0 -2
  459. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +0 -2
  460. package/dist/src/agent/skills/skill-tool-gating.js +0 -2
  461. package/dist/src/agent/skills/skill-view-path.js +0 -2
  462. package/dist/src/agent/skills/skills-marketplace.js +0 -2
  463. package/dist/src/agent/skills/test-framework.js +0 -2
  464. package/dist/src/agent/skills/watcher.js +0 -2
  465. package/dist/src/agent/skills/workspace-skills-dir.js +0 -2
  466. package/dist/src/agent/source-context/injector.js +0 -2
  467. package/dist/src/agent/source-context/types.js +0 -2
  468. package/dist/src/agent/starter-agents.js +0 -2
  469. package/dist/src/agent/streaming/reasoning-visibility-sse.js +0 -2
  470. package/dist/src/agent/tool-manuals/browser.js +0 -2
  471. package/dist/src/agent/tool-manuals/index.js +0 -2
  472. package/dist/src/agent/tool-manuals/xopc-use.js +0 -2
  473. package/dist/src/agent/tools/apply-patch.js +0 -2
  474. package/dist/src/agent/tools/automation-tool.js +0 -2
  475. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +0 -2
  476. package/dist/src/agent/tools/browser/tool/schemas.js +0 -2
  477. package/dist/src/agent/tools/chain-tracker.js +0 -2
  478. package/dist/src/agent/tools/clarify-tool.js +0 -2
  479. package/dist/src/agent/tools/cli-clarify.js +0 -2
  480. package/dist/src/agent/tools/communication.js +0 -2
  481. package/dist/src/agent/tools/composio-tool.js +0 -2
  482. package/dist/src/agent/tools/concurrency.js +0 -2
  483. package/dist/src/agent/tools/create-share-tool.js +0 -2
  484. package/dist/src/agent/tools/curated-memory-tool.js +0 -2
  485. package/dist/src/agent/tools/delegate-tool.js +0 -2
  486. package/dist/src/agent/tools/desktop-pet-tool.d.ts +12 -0
  487. package/dist/src/agent/tools/desktop-pet-tool.js +28 -2
  488. package/dist/src/agent/tools/dreaming-tool.js +0 -2
  489. package/dist/src/agent/tools/edit-diff.js +0 -2
  490. package/dist/src/agent/tools/error-pattern-matcher.js +0 -2
  491. package/dist/src/agent/tools/error-tracker.js +0 -2
  492. package/dist/src/agent/tools/exec-command.js +0 -2
  493. package/dist/src/agent/tools/execute-code-tool.js +0 -2
  494. package/dist/src/agent/tools/executor.js +0 -2
  495. package/dist/src/agent/tools/factory.js +0 -2
  496. package/dist/src/agent/tools/find.js +0 -2
  497. package/dist/src/agent/tools/goal-evidence-recorder.js +0 -2
  498. package/dist/src/agent/tools/goal-tool.js +0 -2
  499. package/dist/src/agent/tools/grep.js +0 -2
  500. package/dist/src/agent/tools/image-generate-tool.js +0 -2
  501. package/dist/src/agent/tools/image-tool.js +0 -2
  502. package/dist/src/agent/tools/list-dir.js +0 -2
  503. package/dist/src/agent/tools/media-read-tool.js +0 -2
  504. package/dist/src/agent/tools/memory-tool.js +0 -2
  505. package/dist/src/agent/tools/metadata.js +0 -2
  506. package/dist/src/agent/tools/read.js +0 -2
  507. package/dist/src/agent/tools/search/http.js +0 -2
  508. package/dist/src/agent/tools/search/providers/bing-api.js +0 -2
  509. package/dist/src/agent/tools/search/providers/bing-html.js +0 -2
  510. package/dist/src/agent/tools/search/providers/brave.js +0 -2
  511. package/dist/src/agent/tools/search/providers/duckduckgo-html.js +0 -2
  512. package/dist/src/agent/tools/search/providers/searxng.js +0 -2
  513. package/dist/src/agent/tools/search/providers/tavily.js +0 -2
  514. package/dist/src/agent/tools/search/region.js +0 -2
  515. package/dist/src/agent/tools/search/registry.js +0 -2
  516. package/dist/src/agent/tools/search/resolve-config.js +0 -2
  517. package/dist/src/agent/tools/send-media.js +0 -2
  518. package/dist/src/agent/tools/session-search-tool.js +0 -2
  519. package/dist/src/agent/tools/session-status-tool.js +0 -2
  520. package/dist/src/agent/tools/skill-install-tool.js +0 -2
  521. package/dist/src/agent/tools/skill-manage-tool.js +0 -2
  522. package/dist/src/agent/tools/skills-tools.js +0 -2
  523. package/dist/src/agent/tools/structured-output.js +0 -2
  524. package/dist/src/agent/tools/todo-tool.js +0 -2
  525. package/dist/src/agent/tools/tool-manual-tool.js +0 -2
  526. package/dist/src/agent/tools/tool-paths.js +0 -2
  527. package/dist/src/agent/tools/truncate.js +0 -2
  528. package/dist/src/agent/tools/tts-tool.js +0 -2
  529. package/dist/src/agent/tools/update-plan-tool.js +0 -2
  530. package/dist/src/agent/tools/url-safety.js +0 -2
  531. package/dist/src/agent/tools/usage-analyzer.js +0 -2
  532. package/dist/src/agent/tools/web-extract.js +0 -2
  533. package/dist/src/agent/tools/web.js +4 -4
  534. package/dist/src/agent/tools/workflow-tool.js +0 -2
  535. package/dist/src/agent/tools/write.js +0 -2
  536. package/dist/src/agent/tools/xopc-use-tool.js +0 -2
  537. package/dist/src/agent/transcript/google-api.js +0 -2
  538. package/dist/src/agent/transcript/model-selection.js +0 -2
  539. package/dist/src/agent/transcript/provider-capabilities.js +0 -2
  540. package/dist/src/agent/transcript/session-transcript-repair.js +0 -2
  541. package/dist/src/agent/transcript/strip-tool-messages.js +0 -2
  542. package/dist/src/agent/transcript/thinking-types.js +0 -2
  543. package/dist/src/agent/transcript/thinking.js +0 -2
  544. package/dist/src/agent/transcript/tool-call-id.js +0 -2
  545. package/dist/src/agent/transcript/transcript-hygiene.js +0 -2
  546. package/dist/src/agent/transcript/transcript-policy.js +0 -2
  547. package/dist/src/agent/workflow/agent-progress.js +0 -2
  548. package/dist/src/agent/workflow/builtins/index.js +0 -2
  549. package/dist/src/agent/workflow/catalog.js +0 -2
  550. package/dist/src/agent/workflow/progress-broker.js +0 -2
  551. package/dist/src/agent/workflow/snapshot-empty.js +0 -2
  552. package/dist/src/agent/workflow/snapshot.js +0 -2
  553. package/dist/src/agent/workflow/step-labels.js +0 -2
  554. package/dist/src/agent/workflow/structured-output-tool.js +0 -2
  555. package/dist/src/agent/workflow/subagent-runner.js +0 -2
  556. package/dist/src/agent/workflow/workflow-child-tools.js +0 -2
  557. package/dist/src/agent/workspace-runtime/registry.js +0 -2
  558. package/dist/src/agent-manifest/index.js +0 -2
  559. package/dist/src/agent-manifest/preset-chain.js +0 -2
  560. package/dist/src/agent-manifest/prompt.js +0 -2
  561. package/dist/src/agent-manifest/resolver.js +0 -2
  562. package/dist/src/agent-manifest/schema.js +0 -2
  563. package/dist/src/agent-manifest/validator.js +0 -2
  564. package/dist/src/agent-runtime/boundary-guard.js +0 -2
  565. package/dist/src/agent-runtime/memory-runtime.js +0 -2
  566. package/dist/src/agent-runtime/model-router.js +0 -2
  567. package/dist/src/agent-runtime/run-trace.js +0 -2
  568. package/dist/src/agent-runtime/runtime-profile.js +0 -2
  569. package/dist/src/agent-runtime/tool-registry.js +0 -2
  570. package/dist/src/agent-runtime/workflow-runtime.js +0 -2
  571. package/dist/src/ai-assist/text-assist.js +0 -2
  572. package/dist/src/auth/credentials.js +0 -2
  573. package/dist/src/auth/index.js +0 -2
  574. package/dist/src/auth/oauth/anthropic.js +0 -2
  575. package/dist/src/auth/oauth/github-copilot.js +0 -2
  576. package/dist/src/auth/oauth/google-oauth/google-antigravity.js +0 -2
  577. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js +0 -2
  578. package/dist/src/auth/oauth/google-oauth/oauth-page.js +0 -2
  579. package/dist/src/auth/oauth/google-oauth/pkce.js +0 -2
  580. package/dist/src/auth/oauth/kimi-coding.js +0 -2
  581. package/dist/src/auth/oauth/minimax-cn.js +0 -2
  582. package/dist/src/auth/oauth/minimax.js +0 -2
  583. package/dist/src/auth/oauth/openai-codex.js +0 -2
  584. package/dist/src/auth/oauth/pkce.js +0 -2
  585. package/dist/src/auth/profiles/oauth.js +0 -2
  586. package/dist/src/auth/profiles/order.js +0 -2
  587. package/dist/src/auth/profiles/profiles.js +0 -2
  588. package/dist/src/auth/profiles/store.js +0 -2
  589. package/dist/src/auth/sync-provider-auth.js +0 -2
  590. package/dist/src/automations/api/routes.js +0 -2
  591. package/dist/src/automations/domain/schedule.js +0 -2
  592. package/dist/src/automations/domain/validation.js +0 -2
  593. package/dist/src/automations/draft/automation-draft-prompt.js +0 -2
  594. package/dist/src/automations/draft/automation-draft-service.js +0 -2
  595. package/dist/src/automations/draft/automation-draft-validator.js +0 -2
  596. package/dist/src/automations/product-events.js +0 -2
  597. package/dist/src/automations/service/action-executor.js +0 -2
  598. package/dist/src/automations/service/automation-service.js +0 -2
  599. package/dist/src/automations/storage/automation-repository.js +0 -2
  600. package/dist/src/automations/storage/automation-run-repository.js +0 -2
  601. package/dist/src/browser/actions/extension-registry-bridge.js +0 -2
  602. package/dist/src/browser/actions/registry.js +0 -2
  603. package/dist/src/browser/backend-from-config.js +0 -2
  604. package/dist/src/browser/browser-command-timeout.js +0 -2
  605. package/dist/src/browser/cache-dir-policy.js +0 -2
  606. package/dist/src/browser/cdp-local-launcher.js +0 -2
  607. package/dist/src/browser/cdp-supervisor.js +0 -2
  608. package/dist/src/browser/free-port.js +0 -2
  609. package/dist/src/browser/humanize.js +0 -2
  610. package/dist/src/browser/install-lock.js +0 -2
  611. package/dist/src/browser/manager.js +0 -2
  612. package/dist/src/browser/pipeline/output.js +0 -2
  613. package/dist/src/browser/pipeline/runner.js +0 -2
  614. package/dist/src/browser/pipeline/schema.js +0 -2
  615. package/dist/src/browser/pipeline/source.js +0 -2
  616. package/dist/src/browser/pipeline/template.js +0 -2
  617. package/dist/src/browser/providers/browser-ext-install.js +0 -2
  618. package/dist/src/browser/providers/browser-use.js +0 -2
  619. package/dist/src/browser/providers/browserbase.js +0 -2
  620. package/dist/src/browser/providers/cloakbrowser.js +0 -2
  621. package/dist/src/browser/providers/extension-ws-acquire.js +0 -2
  622. package/dist/src/browser/providers/extension.js +0 -2
  623. package/dist/src/browser/providers/playwright-doctor.js +13 -4
  624. package/dist/src/browser/providers/playwright-install.js +0 -2
  625. package/dist/src/browser/readiness.js +0 -2
  626. package/dist/src/browser/schemas.js +0 -2
  627. package/dist/src/browser/session-lifecycle.js +0 -2
  628. package/dist/src/browser/snapshot-helpers.js +0 -2
  629. package/dist/src/browser/stealth.js +0 -2
  630. package/dist/src/browser/url-policy.js +0 -2
  631. package/dist/src/capabilities/store-connector.js +0 -2
  632. package/dist/src/channels/attachments/attachment-classifiers.js +0 -2
  633. package/dist/src/channels/attachments/inbound-persist.js +0 -2
  634. package/dist/src/channels/attachments/inbound-types.js +0 -2
  635. package/dist/src/channels/attachments/outbound-tts-persist.js +0 -2
  636. package/dist/src/channels/attachments/voice-stt-webchat.js +0 -2
  637. package/dist/src/channels/catalog/channel-catalog-service.js +0 -2
  638. package/dist/src/channels/config-helpers.js +0 -2
  639. package/dist/src/channels/envelope-timestamp.js +0 -2
  640. package/dist/src/channels/exec-approval-runtime.js +0 -2
  641. package/dist/src/channels/health-monitor.js +0 -2
  642. package/dist/src/channels/heartbeat-scheduler.js +0 -2
  643. package/dist/src/channels/internal-outbound.js +0 -2
  644. package/dist/src/channels/lifecycle-supervisor.js +0 -2
  645. package/dist/src/channels/manager.js +0 -2
  646. package/dist/src/channels/media.js +0 -2
  647. package/dist/src/channels/outbound/deliver.js +0 -2
  648. package/dist/src/channels/outbound/normalize.js +0 -2
  649. package/dist/src/channels/outbound/persist-store.js +0 -2
  650. package/dist/src/channels/outbound/queue.js +0 -2
  651. package/dist/src/channels/outbound-sender.js +0 -2
  652. package/dist/src/channels/pairing/allow-from-file.js +0 -2
  653. package/dist/src/channels/pairing/approve-cli.js +0 -2
  654. package/dist/src/channels/pairing/pairing-challenge.js +0 -2
  655. package/dist/src/channels/pairing/pairing-constants.js +0 -2
  656. package/dist/src/channels/pairing/pairing-events.js +0 -2
  657. package/dist/src/channels/pairing/pairing-messages.js +0 -2
  658. package/dist/src/channels/pairing/pairing-service.js +0 -2
  659. package/dist/src/channels/pairing/pairing-store-adapter.js +0 -2
  660. package/dist/src/channels/pairing/pairing-store.js +0 -2
  661. package/dist/src/channels/pairing/paths.js +0 -2
  662. package/dist/src/channels/pairing/preseed-allow-from.js +0 -2
  663. package/dist/src/channels/pipeline.js +0 -2
  664. package/dist/src/channels/plugin-registry.js +0 -2
  665. package/dist/src/channels/plugins/registry.js +0 -2
  666. package/dist/src/channels/restart-policy.js +0 -2
  667. package/dist/src/channels/security-helpers.js +0 -2
  668. package/dist/src/channels/security.js +0 -2
  669. package/dist/src/channels/setup-wizard-discovery.js +0 -2
  670. package/dist/src/chat-commands/agent-edit.js +0 -2
  671. package/dist/src/chat-commands/builtins/config.js +0 -2
  672. package/dist/src/chat-commands/builtins/context.js +0 -2
  673. package/dist/src/chat-commands/builtins/goal.js +0 -2
  674. package/dist/src/chat-commands/builtins/model.js +0 -2
  675. package/dist/src/chat-commands/builtins/review.js +0 -2
  676. package/dist/src/chat-commands/builtins/session.js +0 -2
  677. package/dist/src/chat-commands/builtins/skill.js +0 -2
  678. package/dist/src/chat-commands/builtins/subgoal.js +0 -2
  679. package/dist/src/chat-commands/builtins/system.js +0 -2
  680. package/dist/src/chat-commands/builtins/thinking.js +0 -2
  681. package/dist/src/chat-commands/builtins/tts.js +0 -2
  682. package/dist/src/chat-commands/builtins/workflow.js +0 -2
  683. package/dist/src/chat-commands/command-parse.js +0 -2
  684. package/dist/src/chat-commands/config-paths.js +0 -2
  685. package/dist/src/chat-commands/config-value.js +0 -2
  686. package/dist/src/chat-commands/context.js +0 -2
  687. package/dist/src/chat-commands/format-output.js +0 -2
  688. package/dist/src/chat-commands/index.js +0 -2
  689. package/dist/src/chat-commands/processor.js +0 -2
  690. package/dist/src/chat-commands/registry.js +0 -2
  691. package/dist/src/chat-commands/session-key.js +0 -2
  692. package/dist/src/cli/argv-invocation.js +0 -2
  693. package/dist/src/cli/argv.js +0 -2
  694. package/dist/src/cli/bin.js +0 -2
  695. package/dist/src/cli/cli-log-level-preset.js +0 -2
  696. package/dist/src/cli/command-catalog.js +0 -2
  697. package/dist/src/cli/command-loaders.js +0 -2
  698. package/dist/src/cli/command-manifest.js +0 -2
  699. package/dist/src/cli/command-path-matches.js +0 -2
  700. package/dist/src/cli/command-path-policy.js +0 -2
  701. package/dist/src/cli/command-startup-policy.js +0 -2
  702. package/dist/src/cli/commands/agent/interactive.js +0 -2
  703. package/dist/src/cli/commands/agent/sessions.js +0 -2
  704. package/dist/src/cli/commands/agent/stream-renderer.js +0 -2
  705. package/dist/src/cli/commands/agent.js +0 -2
  706. package/dist/src/cli/commands/agents.js +0 -2
  707. package/dist/src/cli/commands/auth.js +0 -2
  708. package/dist/src/cli/commands/browser-cli-helpers.js +0 -2
  709. package/dist/src/cli/commands/browser.js +0 -2
  710. package/dist/src/cli/commands/channels.js +0 -2
  711. package/dist/src/cli/commands/config.js +0 -2
  712. package/dist/src/cli/commands/connectors.js +0 -2
  713. package/dist/src/cli/commands/doctor/checks/channel-config.js +0 -2
  714. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +0 -2
  715. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +0 -2
  716. package/dist/src/cli/commands/doctor/checks/config-health.js +0 -2
  717. package/dist/src/cli/commands/doctor/checks/database-schema.js +0 -2
  718. package/dist/src/cli/commands/doctor/checks/gateway-health.js +0 -2
  719. package/dist/src/cli/commands/doctor/checks/gateway-service.js +0 -2
  720. package/dist/src/cli/commands/doctor/checks/migrations.js +0 -2
  721. package/dist/src/cli/commands/doctor/checks/node-version.js +0 -2
  722. package/dist/src/cli/commands/doctor/checks/provider-auth.js +0 -2
  723. package/dist/src/cli/commands/doctor/checks/security-audit.js +0 -2
  724. package/dist/src/cli/commands/doctor/checks/session-integrity.js +0 -2
  725. package/dist/src/cli/commands/doctor/checks/state-integrity.js +0 -2
  726. package/dist/src/cli/commands/doctor/checks/version-check.js +0 -2
  727. package/dist/src/cli/commands/doctor/checks/workspace-status.js +0 -2
  728. package/dist/src/cli/commands/doctor/flow.js +0 -2
  729. package/dist/src/cli/commands/doctor/format.js +0 -2
  730. package/dist/src/cli/commands/doctor/index.js +0 -2
  731. package/dist/src/cli/commands/extension-create.js +0 -2
  732. package/dist/src/cli/commands/extension-dev.js +0 -2
  733. package/dist/src/cli/commands/extension-marketplace.js +0 -2
  734. package/dist/src/cli/commands/extension-pack.js +0 -2
  735. package/dist/src/cli/commands/extension.js +0 -2
  736. package/dist/src/cli/commands/gateway/call.js +0 -2
  737. package/dist/src/cli/commands/gateway/health.js +0 -2
  738. package/dist/src/cli/commands/gateway/lifecycle-core.js +0 -2
  739. package/dist/src/cli/commands/gateway/lifecycle.js +0 -2
  740. package/dist/src/cli/commands/gateway/logs.js +0 -2
  741. package/dist/src/cli/commands/gateway/probe.js +0 -2
  742. package/dist/src/cli/commands/gateway/restart-health.js +0 -2
  743. package/dist/src/cli/commands/gateway/restart.js +0 -2
  744. package/dist/src/cli/commands/gateway/run-foreground.js +0 -2
  745. package/dist/src/cli/commands/gateway/service.js +0 -2
  746. package/dist/src/cli/commands/gateway/shared.js +0 -2
  747. package/dist/src/cli/commands/gateway/status.js +0 -2
  748. package/dist/src/cli/commands/gateway/stop.js +0 -2
  749. package/dist/src/cli/commands/gateway/subcommands.js +0 -2
  750. package/dist/src/cli/commands/gateway/token.js +0 -2
  751. package/dist/src/cli/commands/gateway-ssh-tunnel.js +0 -2
  752. package/dist/src/cli/commands/gateway.js +0 -2
  753. package/dist/src/cli/commands/goal.js +0 -2
  754. package/dist/src/cli/commands/image.js +0 -2
  755. package/dist/src/cli/commands/init.js +0 -2
  756. package/dist/src/cli/commands/logs.js +0 -2
  757. package/dist/src/cli/commands/models.js +0 -2
  758. package/dist/src/cli/commands/onboard/channels/index.js +0 -2
  759. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js +0 -2
  760. package/dist/src/cli/commands/onboard/channels/registry.js +0 -2
  761. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js +0 -2
  762. package/dist/src/cli/commands/onboard/gateway.js +0 -2
  763. package/dist/src/cli/commands/onboard/model.js +0 -2
  764. package/dist/src/cli/commands/onboard.js +0 -2
  765. package/dist/src/cli/commands/profile.js +0 -2
  766. package/dist/src/cli/commands/project.js +0 -2
  767. package/dist/src/cli/commands/providers.js +0 -2
  768. package/dist/src/cli/commands/resume.js +0 -2
  769. package/dist/src/cli/commands/search.js +0 -2
  770. package/dist/src/cli/commands/session/actions.js +0 -2
  771. package/dist/src/cli/commands/session/utils.js +0 -2
  772. package/dist/src/cli/commands/session.js +0 -2
  773. package/dist/src/cli/commands/setup-shared/output.js +0 -2
  774. package/dist/src/cli/commands/setup-shared/prompts.js +0 -2
  775. package/dist/src/cli/commands/setup-shared/runner.js +0 -2
  776. package/dist/src/cli/commands/setup-shared/types.js +0 -2
  777. package/dist/src/cli/commands/setup.js +0 -2
  778. package/dist/src/cli/commands/skills-test.js +0 -2
  779. package/dist/src/cli/commands/skills.js +0 -2
  780. package/dist/src/cli/commands/tailscale.js +0 -2
  781. package/dist/src/cli/commands/tui-runner.js +0 -2
  782. package/dist/src/cli/commands/tui.js +0 -2
  783. package/dist/src/cli/commands/tunnel.js +0 -2
  784. package/dist/src/cli/commands/update.js +0 -2
  785. package/dist/src/cli/commands/voice.js +0 -2
  786. package/dist/src/cli/context.js +0 -2
  787. package/dist/src/cli/extension-cli-register.js +0 -2
  788. package/dist/src/cli/gateway-run-argv.js +0 -2
  789. package/dist/src/cli/gateway-run-fast-path.js +0 -2
  790. package/dist/src/cli/index.js +0 -2
  791. package/dist/src/cli/registry.js +0 -2
  792. package/dist/src/cli/templates.js +0 -2
  793. package/dist/src/cli/utils/colors.js +0 -2
  794. package/dist/src/cli/utils/gateway-client-options.js +0 -2
  795. package/dist/src/cli/utils/gateway-client.js +0 -2
  796. package/dist/src/cli/utils/init-workspace-core.js +0 -2
  797. package/dist/src/cli/utils/init-workspace.js +0 -2
  798. package/dist/src/cli/utils/oauth-login.js +0 -2
  799. package/dist/src/cli/utils/oauth-providers.js +0 -2
  800. package/dist/src/cli/utils/session.js +0 -2
  801. package/dist/src/commands/agents.config.js +0 -2
  802. package/dist/src/config/agent-profile.js +0 -2
  803. package/dist/src/config/agent-typed-models.js +0 -2
  804. package/dist/src/config/commands.flags.js +0 -2
  805. package/dist/src/config/default-model.js +0 -2
  806. package/dist/src/config/diff.js +0 -2
  807. package/dist/src/config/gateway-bind.js +0 -2
  808. package/dist/src/config/index.js +0 -2
  809. package/dist/src/config/loader.js +0 -2
  810. package/dist/src/config/mcp-config-normalize.js +0 -2
  811. package/dist/src/config/model-input.js +0 -2
  812. package/dist/src/config/models-json.js +0 -2
  813. package/dist/src/config/paths-state.js +0 -2
  814. package/dist/src/config/paths.js +0 -2
  815. package/dist/src/config/profile.js +0 -2
  816. package/dist/src/config/public-url.js +0 -2
  817. package/dist/src/config/reload.js +0 -2
  818. package/dist/src/config/resolve-config-value.js +0 -2
  819. package/dist/src/config/rules.js +0 -2
  820. package/dist/src/config/runtime-overrides.js +0 -2
  821. package/dist/src/config/schema.js +0 -2
  822. package/dist/src/config/validate-channel-configs.js +0 -2
  823. package/dist/src/config/voice.js +0 -2
  824. package/dist/src/config/web-patch.js +0 -2
  825. package/dist/src/config/workspace-defaults.js +0 -2
  826. package/dist/src/config/workspace-dirs.js +0 -2
  827. package/dist/src/config/workspace-path-helpers.js +0 -2
  828. package/dist/src/config/workspace-path.js +0 -2
  829. package/dist/src/connectors/approval.js +0 -2
  830. package/dist/src/connectors/auth-provider-registry.js +0 -2
  831. package/dist/src/connectors/builtin-catalog.js +0 -2
  832. package/dist/src/connectors/catalog.js +0 -2
  833. package/dist/src/connectors/composio-catalog.js +0 -2
  834. package/dist/src/connectors/composio-logo.js +0 -2
  835. package/dist/src/connectors/composio-sessions.js +9 -5
  836. package/dist/src/connectors/composio-triggers.js +0 -2
  837. package/dist/src/connectors/composio.js +0 -2
  838. package/dist/src/connectors/connector-memory-sync.js +0 -2
  839. package/dist/src/connectors/health.js +0 -2
  840. package/dist/src/connectors/install.js +0 -2
  841. package/dist/src/connectors/instances.js +0 -2
  842. package/dist/src/connectors/integration-strategy.js +0 -2
  843. package/dist/src/connectors/lifecycle.js +0 -2
  844. package/dist/src/connectors/materialize.js +0 -2
  845. package/dist/src/connectors/policy.js +0 -2
  846. package/dist/src/connectors/providers.js +0 -2
  847. package/dist/src/connectors/registries/modelscope.js +0 -2
  848. package/dist/src/connectors/registries/official-mcp.js +0 -2
  849. package/dist/src/connectors/registries/search.js +0 -2
  850. package/dist/src/connectors/registries/smithery.js +0 -2
  851. package/dist/src/connectors/runtime-adapter-registry.js +0 -2
  852. package/dist/src/connectors/secret-store.js +0 -2
  853. package/dist/src/connectors/setup-secrets.js +0 -2
  854. package/dist/src/connectors/supervisor.js +0 -2
  855. package/dist/src/connectors/usage.js +0 -2
  856. package/dist/src/connectors/workflow-preflight.js +0 -2
  857. package/dist/src/daemon/constants.js +0 -2
  858. package/dist/src/daemon/install-plan.js +0 -2
  859. package/dist/src/daemon/launchd.js +0 -2
  860. package/dist/src/daemon/schtasks.js +0 -2
  861. package/dist/src/daemon/service-audit.js +0 -2
  862. package/dist/src/daemon/service.js +0 -2
  863. package/dist/src/daemon/systemd.js +0 -2
  864. package/dist/src/document-understanding/extract.js +0 -2
  865. package/dist/src/errors/index.js +0 -2
  866. package/dist/src/extensions/activation-context.js +0 -2
  867. package/dist/src/extensions/activation-planner.js +0 -2
  868. package/dist/src/extensions/api.js +0 -2
  869. package/dist/src/extensions/bundle-mcp.js +0 -2
  870. package/dist/src/extensions/bundled-extension-activation.js +0 -2
  871. package/dist/src/extensions/diagnostics.js +0 -2
  872. package/dist/src/extensions/discover-extensions.js +0 -2
  873. package/dist/src/extensions/engine-check.js +0 -2
  874. package/dist/src/extensions/extension-metadata-snapshot.js +0 -2
  875. package/dist/src/extensions/extension-registry-impl.js +0 -2
  876. package/dist/src/extensions/health.js +0 -2
  877. package/dist/src/extensions/hooks.js +0 -2
  878. package/dist/src/extensions/index.js +0 -2
  879. package/dist/src/extensions/install-transaction.js +0 -2
  880. package/dist/src/extensions/install.js +0 -2
  881. package/dist/src/extensions/loader.js +0 -2
  882. package/dist/src/extensions/lockfile.js +0 -2
  883. package/dist/src/extensions/manifest-registry.js +0 -2
  884. package/dist/src/extensions/marketplace.js +0 -2
  885. package/dist/src/extensions/media-provider-contracts.js +0 -2
  886. package/dist/src/extensions/normalize-manifest.js +0 -2
  887. package/dist/src/extensions/onboard-helpers.js +0 -2
  888. package/dist/src/extensions/package-contract.js +0 -2
  889. package/dist/src/extensions/sdk/channel-entry.js +0 -2
  890. package/dist/src/extensions/sdk/channel-helpers.js +0 -2
  891. package/dist/src/extensions/sdk/index.js +0 -2
  892. package/dist/src/extensions/sdk/lazy.js +0 -2
  893. package/dist/src/extensions/sdk/testing.js +0 -2
  894. package/dist/src/extensions/security.js +0 -2
  895. package/dist/src/extensions/slots.js +0 -2
  896. package/dist/src/extensions/speech-provider-contracts.js +0 -2
  897. package/dist/src/extensions/store-zip-limits.js +0 -2
  898. package/dist/src/extensions/typed-event-bus.js +0 -2
  899. package/dist/src/extensions/types/hooks.js +0 -2
  900. package/dist/src/extensions/types/providers.js +0 -2
  901. package/dist/src/extensions/update.js +0 -2
  902. package/dist/src/extensions/when-context.js +0 -2
  903. package/dist/src/extensions/when-expression.js +0 -2
  904. package/dist/src/gateway/agent-builtin-tools.js +0 -2
  905. package/dist/src/gateway/agent-run-relay.js +0 -2
  906. package/dist/src/gateway/agents-admin.js +0 -2
  907. package/dist/src/gateway/auth.js +0 -2
  908. package/dist/src/gateway/capability-presets-admin.js +0 -2
  909. package/dist/src/gateway/chat-limits.js +0 -2
  910. package/dist/src/gateway/chat-stream/mapper.js +28 -14
  911. package/dist/src/gateway/chat-stream/pet-feedback.d.ts +13 -0
  912. package/dist/src/gateway/chat-stream/pet-feedback.js +45 -0
  913. package/dist/src/gateway/chat-stream/protocol.d.ts +26 -0
  914. package/dist/src/gateway/clarify-bridge.js +3 -3
  915. package/dist/src/gateway/clarify-runtime.js +0 -2
  916. package/dist/src/gateway/client-ip.js +0 -2
  917. package/dist/src/gateway/config-tools-web.js +0 -2
  918. package/dist/src/gateway/credential.js +0 -2
  919. package/dist/src/gateway/discovery/mdns.js +0 -2
  920. package/dist/src/gateway/dreaming-automation-reconciler.js +0 -2
  921. package/dist/src/gateway/ensure-network-cors.js +0 -2
  922. package/dist/src/gateway/file-path-classifier.js +0 -2
  923. package/dist/src/gateway/file-reference-registry.js +0 -2
  924. package/dist/src/gateway/global-defaults-admin.js +0 -2
  925. package/dist/src/gateway/heartbeat/service.js +0 -2
  926. package/dist/src/gateway/hono/app.js +0 -2
  927. package/dist/src/gateway/hono/lib/agent-model.js +0 -2
  928. package/dist/src/gateway/hono/lib/config-payload.js +0 -2
  929. package/dist/src/gateway/hono/lib/extension-assets.js +0 -2
  930. package/dist/src/gateway/hono/lib/extension-store.js +0 -2
  931. package/dist/src/gateway/hono/lib/mask-secret-length.js +0 -2
  932. package/dist/src/gateway/hono/lib/route-logger.js +0 -2
  933. package/dist/src/gateway/hono/lib/safe-providers-config.js +0 -2
  934. package/dist/src/gateway/hono/lib/safe-voice-config.js +0 -2
  935. package/dist/src/gateway/hono/lib/startup-unavailable.js +0 -2
  936. package/dist/src/gateway/hono/lib/static-ui.js +0 -2
  937. package/dist/src/gateway/hono/middleware/auth.js +0 -2
  938. package/dist/src/gateway/hono/middleware/log-context.js +0 -2
  939. package/dist/src/gateway/hono/middleware/logger.js +0 -2
  940. package/dist/src/gateway/hono/middleware/route-errors.js +0 -2
  941. package/dist/src/gateway/hono/middleware/scopes.js +0 -2
  942. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +0 -2
  943. package/dist/src/gateway/hono/oauth-async.js +0 -2
  944. package/dist/src/gateway/hono/oauth.js +0 -2
  945. package/dist/src/gateway/hono/routes/activity.js +0 -2
  946. package/dist/src/gateway/hono/routes/agent-stream.js +0 -2
  947. package/dist/src/gateway/hono/routes/agents.js +0 -2
  948. package/dist/src/gateway/hono/routes/ai-assist.js +0 -2
  949. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +0 -2
  950. package/dist/src/gateway/hono/routes/browser-install.js +0 -2
  951. package/dist/src/gateway/hono/routes/browser.js +0 -2
  952. package/dist/src/gateway/hono/routes/capabilities.js +0 -2
  953. package/dist/src/gateway/hono/routes/capability-presets.js +0 -2
  954. package/dist/src/gateway/hono/routes/channels.js +0 -2
  955. package/dist/src/gateway/hono/routes/commands-skills.js +0 -2
  956. package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -2
  957. package/dist/src/gateway/hono/routes/config-patch/channels.js +0 -2
  958. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -2
  959. package/dist/src/gateway/hono/routes/config-patch/misc.js +0 -2
  960. package/dist/src/gateway/hono/routes/config-patch/result.js +0 -2
  961. package/dist/src/gateway/hono/routes/config.js +0 -2
  962. package/dist/src/gateway/hono/routes/connectors.js +0 -2
  963. package/dist/src/gateway/hono/routes/doctor.js +0 -2
  964. package/dist/src/gateway/hono/routes/dreaming.js +0 -2
  965. package/dist/src/gateway/hono/routes/exposure.js +0 -2
  966. package/dist/src/gateway/hono/routes/extension-gateway.js +0 -2
  967. package/dist/src/gateway/hono/routes/global-defaults.js +0 -2
  968. package/dist/src/gateway/hono/routes/goals.js +0 -2
  969. package/dist/src/gateway/hono/routes/home.js +0 -2
  970. package/dist/src/gateway/hono/routes/host-fs.js +0 -2
  971. package/dist/src/gateway/hono/routes/index.js +0 -2
  972. package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -2
  973. package/dist/src/gateway/hono/routes/lazy-fallback.js +0 -2
  974. package/dist/src/gateway/hono/routes/local-apps.js +0 -2
  975. package/dist/src/gateway/hono/routes/logs.js +0 -2
  976. package/dist/src/gateway/hono/routes/mcp.js +0 -2
  977. package/dist/src/gateway/hono/routes/media.js +0 -2
  978. package/dist/src/gateway/hono/routes/memory.js +0 -2
  979. package/dist/src/gateway/hono/routes/migrations.js +0 -2
  980. package/dist/src/gateway/hono/routes/mobile.js +0 -2
  981. package/dist/src/gateway/hono/routes/models.js +0 -2
  982. package/dist/src/gateway/hono/routes/notes.js +3 -3
  983. package/dist/src/gateway/hono/routes/projects.js +0 -2
  984. package/dist/src/gateway/hono/routes/public-gateway.js +0 -2
  985. package/dist/src/gateway/hono/routes/search.js +0 -2
  986. package/dist/src/gateway/hono/routes/sessions.js +0 -2
  987. package/dist/src/gateway/hono/routes/shares.js +0 -2
  988. package/dist/src/gateway/hono/routes/site-shares.js +0 -2
  989. package/dist/src/gateway/hono/routes/status.js +0 -2
  990. package/dist/src/gateway/hono/routes/tui.js +0 -2
  991. package/dist/src/gateway/hono/routes/tunnel.js +0 -2
  992. package/dist/src/gateway/hono/routes/update.js +0 -2
  993. package/dist/src/gateway/hono/routes/voice.js +0 -2
  994. package/dist/src/gateway/hono/routes/work-discovery.js +0 -2
  995. package/dist/src/gateway/hono/routes/workflows.js +0 -2
  996. package/dist/src/gateway/hono/routes/workspace.js +0 -2
  997. package/dist/src/gateway/hono/routes/you.js +0 -2
  998. package/dist/src/gateway/hono/sse-json.js +0 -2
  999. package/dist/src/gateway/hono/sse.js +0 -2
  1000. package/dist/src/gateway/host.js +0 -2
  1001. package/dist/src/gateway/image-capabilities.js +0 -2
  1002. package/dist/src/gateway/listen.js +0 -2
  1003. package/dist/src/gateway/lock.js +0 -2
  1004. package/dist/src/gateway/ports.js +0 -2
  1005. package/dist/src/gateway/protocol.js +0 -2
  1006. package/dist/src/gateway/public-url.js +0 -2
  1007. package/dist/src/gateway/rate-limit/auth-policy.js +0 -2
  1008. package/dist/src/gateway/rate-limit/buckets.js +0 -2
  1009. package/dist/src/gateway/rate-limit/env-flags.js +0 -2
  1010. package/dist/src/gateway/resolve-channel-connect-defer.js +0 -2
  1011. package/dist/src/gateway/resolve-webchat-session-key.js +0 -2
  1012. package/dist/src/gateway/respawn.js +0 -2
  1013. package/dist/src/gateway/run-loop.js +0 -2
  1014. package/dist/src/gateway/runtime-config.js +0 -2
  1015. package/dist/src/gateway/security/audit.js +0 -2
  1016. package/dist/src/gateway/security/csp.js +0 -2
  1017. package/dist/src/gateway/security/dangerous-tools.js +0 -2
  1018. package/dist/src/gateway/security/external-content.js +0 -2
  1019. package/dist/src/gateway/security/known-weak-secrets.js +0 -2
  1020. package/dist/src/gateway/security/loopback.js +0 -2
  1021. package/dist/src/gateway/security/operator-scopes.js +0 -2
  1022. package/dist/src/gateway/security/origin-check.js +0 -2
  1023. package/dist/src/gateway/security/preauth-connection-budget.js +0 -2
  1024. package/dist/src/gateway/security/secret-equal.js +0 -2
  1025. package/dist/src/gateway/server-tailscale.js +0 -2
  1026. package/dist/src/gateway/server.js +0 -2
  1027. package/dist/src/gateway/service/agent-runner.js +0 -2
  1028. package/dist/src/gateway/service/config-coordinator.js +0 -2
  1029. package/dist/src/gateway/service/marketplace-service.js +0 -2
  1030. package/dist/src/gateway/service/run-gateway-agent.js +0 -2
  1031. package/dist/src/gateway/service/session-chat-ids.js +0 -2
  1032. package/dist/src/gateway/service/sessions-api.js +0 -2
  1033. package/dist/src/gateway/service/sse-hub.js +0 -2
  1034. package/dist/src/gateway/service.js +0 -2
  1035. package/dist/src/gateway/session-reset-service.js +0 -2
  1036. package/dist/src/gateway/startup-readiness.js +0 -2
  1037. package/dist/src/gateway/startup-trace.js +0 -2
  1038. package/dist/src/gateway/tailscale-auth.js +0 -2
  1039. package/dist/src/gateway/tailscale-lifecycle.js +0 -2
  1040. package/dist/src/gateway/tls-server.js +0 -2
  1041. package/dist/src/gateway/trusted-proxy.js +0 -2
  1042. package/dist/src/gateway/user-turn-input.js +0 -2
  1043. package/dist/src/gateway/workspace-editor-path.js +0 -2
  1044. package/dist/src/gateway/workspace-file-search.js +0 -2
  1045. package/dist/src/gateway/workspace-fs-file-list.js +0 -2
  1046. package/dist/src/gateway/workspace-heartbeat-path.js +0 -2
  1047. package/dist/src/gateway/workspace-ripgrep.js +0 -2
  1048. package/dist/src/gateway/ws-security.js +0 -2
  1049. package/dist/src/generated/bundled-image-generation-providers.js +0 -2
  1050. package/dist/src/goals/goal-contract-draft.js +0 -2
  1051. package/dist/src/goals/goal-evidence-review.js +0 -2
  1052. package/dist/src/goals/goal-notifications.js +0 -2
  1053. package/dist/src/goals/goal-queue-store.js +0 -2
  1054. package/dist/src/goals/goal-runner.js +0 -2
  1055. package/dist/src/goals/goal-service.js +0 -2
  1056. package/dist/src/goals/goal-store.js +0 -2
  1057. package/dist/src/goals/goal-workflow-judge.js +0 -2
  1058. package/dist/src/heartbeat/active-hours.js +0 -2
  1059. package/dist/src/heartbeat/content-check.js +0 -2
  1060. package/dist/src/heartbeat/event-prompt.js +0 -2
  1061. package/dist/src/heartbeat/tokens.js +0 -2
  1062. package/dist/src/heartbeat/wake.js +0 -2
  1063. package/dist/src/i18n/format.js +0 -2
  1064. package/dist/src/i18n/goals-bundle.js +0 -2
  1065. package/dist/src/i18n/locale.js +0 -2
  1066. package/dist/src/i18n/locales/goals.en.js +0 -2
  1067. package/dist/src/i18n/locales/goals.zh.js +0 -2
  1068. package/dist/src/i18n/locales/share-tool.en.js +0 -2
  1069. package/dist/src/i18n/locales/share-tool.zh.js +0 -2
  1070. package/dist/src/i18n/share-tool-bundle.js +0 -2
  1071. package/dist/src/index.js +0 -2
  1072. package/dist/src/infra/brew.js +0 -2
  1073. package/dist/src/infra/bus/queue.js +0 -2
  1074. package/dist/src/infra/debounce.js +0 -2
  1075. package/dist/src/infra/exec.js +0 -2
  1076. package/dist/src/infra/gateway-process-argv.js +0 -2
  1077. package/dist/src/infra/gateway-processes.js +0 -2
  1078. package/dist/src/infra/host-env-security-policy.js +0 -2
  1079. package/dist/src/infra/host-env-security.js +0 -2
  1080. package/dist/src/infra/http-proxy-env.js +0 -2
  1081. package/dist/src/infra/is-main.js +0 -2
  1082. package/dist/src/infra/json-utf8-bytes.js +0 -2
  1083. package/dist/src/infra/node-sqlite.js +0 -2
  1084. package/dist/src/infra/package-json.js +0 -2
  1085. package/dist/src/infra/package-update-steps.js +0 -2
  1086. package/dist/src/infra/path-env.js +0 -2
  1087. package/dist/src/infra/path-prepend.js +0 -2
  1088. package/dist/src/infra/ports.js +0 -2
  1089. package/dist/src/infra/rate-limit/failure-limiter.js +0 -2
  1090. package/dist/src/infra/rate-limit/keyed-store.js +0 -2
  1091. package/dist/src/infra/rate-limit/rate-limiter.js +0 -2
  1092. package/dist/src/infra/restart.js +0 -2
  1093. package/dist/src/infra/retry.js +0 -2
  1094. package/dist/src/infra/run-command.js +0 -2
  1095. package/dist/src/infra/sqlite-errors.js +0 -2
  1096. package/dist/src/infra/ssh-tunnel.js +0 -2
  1097. package/dist/src/infra/stable-node-path.js +0 -2
  1098. package/dist/src/infra/tailscale.js +0 -2
  1099. package/dist/src/infra/undici-fetch.js +0 -2
  1100. package/dist/src/infra/unhandled-rejections.js +0 -2
  1101. package/dist/src/infra/update-channels.js +0 -2
  1102. package/dist/src/infra/update-check.js +0 -2
  1103. package/dist/src/infra/update-global.js +0 -2
  1104. package/dist/src/infra/update-lock.js +0 -2
  1105. package/dist/src/infra/update-log.js +0 -2
  1106. package/dist/src/infra/update-restart.js +0 -2
  1107. package/dist/src/infra/update-runner.js +0 -2
  1108. package/dist/src/infra/update-startup.js +0 -2
  1109. package/dist/src/infra/warning-filter.js +0 -2
  1110. package/dist/src/infra/write-file-atomic.js +0 -2
  1111. package/dist/src/knowledge/connected-knowledge-pipeline.js +0 -2
  1112. package/dist/src/knowledge/coordinator.js +0 -2
  1113. package/dist/src/knowledge/ingestion-service.js +0 -2
  1114. package/dist/src/local-apps/acceptance.js +0 -2
  1115. package/dist/src/local-apps/preview-runtime-bridge.js +0 -2
  1116. package/dist/src/local-apps/runtime-entry.js +0 -2
  1117. package/dist/src/local-apps/scaffold.js +0 -2
  1118. package/dist/src/local-apps/service.js +0 -2
  1119. package/dist/src/local-apps/store.js +0 -2
  1120. package/dist/src/markdown/chunk.js +0 -2
  1121. package/dist/src/markdown/code-spans.js +0 -2
  1122. package/dist/src/markdown/fences.js +0 -2
  1123. package/dist/src/markdown/frontmatter.js +0 -2
  1124. package/dist/src/markdown/ir.js +0 -2
  1125. package/dist/src/markdown/render.js +0 -2
  1126. package/dist/src/markdown/tables.js +0 -2
  1127. package/dist/src/mcp/channel-bridge.js +0 -2
  1128. package/dist/src/mcp/channel-server.js +0 -2
  1129. package/dist/src/mcp/channel-shared.js +0 -2
  1130. package/dist/src/mcp/channel-tools.js +0 -2
  1131. package/dist/src/mcp/gateway-http-client.js +0 -2
  1132. package/dist/src/media/media-reference.js +0 -2
  1133. package/dist/src/media/paths.js +0 -2
  1134. package/dist/src/media/session-references.js +0 -2
  1135. package/dist/src/media/store.js +0 -2
  1136. package/dist/src/media/uri.js +0 -2
  1137. package/dist/src/media-shared/http/api-key-rotation.js +0 -2
  1138. package/dist/src/media-shared/http/deadline.js +0 -2
  1139. package/dist/src/media-shared/http/private-network.js +0 -2
  1140. package/dist/src/media-shared/http/provider-http-errors.js +0 -2
  1141. package/dist/src/media-shared/http/provider-http.js +0 -2
  1142. package/dist/src/media-shared/http/resolve-provider-http-request-config.js +0 -2
  1143. package/dist/src/media-shared/http/ssrf-guard.js +0 -2
  1144. package/dist/src/media-shared/http/test-helpers/mock-server.js +0 -2
  1145. package/dist/src/media-understanding/audio-transcription-runner.js +0 -2
  1146. package/dist/src/media-understanding/openai-compatible-audio.js +0 -2
  1147. package/dist/src/media-understanding/registry.js +0 -2
  1148. package/dist/src/media-understanding/resolve-entries.js +0 -2
  1149. package/dist/src/media-understanding/runner.js +0 -2
  1150. package/dist/src/migrations/config/default-capability-preset.js +0 -2
  1151. package/dist/src/migrations/registry.js +0 -2
  1152. package/dist/src/migrations/runner.js +0 -2
  1153. package/dist/src/mobile/notification-service.js +0 -2
  1154. package/dist/src/mobile/notification-store.js +0 -2
  1155. package/dist/src/mobile/notification-types.js +0 -2
  1156. package/dist/src/notes/agent-context.js +0 -2
  1157. package/dist/src/notes/attachment-ref.js +0 -2
  1158. package/dist/src/notes/note-attachment-sync.js +0 -2
  1159. package/dist/src/notes/note-index-meta.js +0 -2
  1160. package/dist/src/notes/note-markdown.js +0 -2
  1161. package/dist/src/notes/paths.js +0 -2
  1162. package/dist/src/notes/service.d.ts +3 -1
  1163. package/dist/src/notes/service.js +19 -5
  1164. package/dist/src/notes/store.js +0 -2
  1165. package/dist/src/package-version.js +0 -2
  1166. package/dist/src/pets/factory.d.ts +13 -0
  1167. package/dist/src/pets/factory.js +23 -2
  1168. package/dist/src/pets/manifest.js +0 -2
  1169. package/dist/src/pets/validator.js +0 -2
  1170. package/dist/src/process/kill-tree.js +0 -2
  1171. package/dist/src/project-trust/trust-store.js +0 -2
  1172. package/dist/src/projects/automation-bind.js +0 -2
  1173. package/dist/src/projects/goal-bind.js +0 -2
  1174. package/dist/src/projects/memory-bind.js +0 -2
  1175. package/dist/src/projects/project-agent-suggestion.js +0 -2
  1176. package/dist/src/projects/project-agent.js +0 -2
  1177. package/dist/src/projects/project-kind.js +0 -2
  1178. package/dist/src/projects/project-loop.js +0 -2
  1179. package/dist/src/projects/project-service.js +0 -2
  1180. package/dist/src/projects/project-store.js +0 -2
  1181. package/dist/src/projects/session-bind.js +0 -2
  1182. package/dist/src/projects/workflow-bind.js +0 -2
  1183. package/dist/src/projects/workspace-project.js +0 -2
  1184. package/dist/src/projects/workspace.js +0 -2
  1185. package/dist/src/providers/auth-runtime/auth-profile-store.js +0 -2
  1186. package/dist/src/providers/auth-runtime/is-configured.js +0 -2
  1187. package/dist/src/providers/auth-runtime/oauth.js +0 -2
  1188. package/dist/src/providers/auth-runtime/resolve-api-key.js +0 -2
  1189. package/dist/src/providers/auth-runtime/resolve-auth.js +0 -2
  1190. package/dist/src/providers/constants.js +0 -2
  1191. package/dist/src/providers/domestic-presets.js +0 -2
  1192. package/dist/src/providers/env-keys.js +0 -2
  1193. package/dist/src/providers/extension-stream-bridge.js +0 -2
  1194. package/dist/src/providers/index.js +0 -2
  1195. package/dist/src/providers/model-call.js +0 -2
  1196. package/dist/src/providers/model-discovery.js +0 -2
  1197. package/dist/src/providers/model-registry.js +0 -2
  1198. package/dist/src/providers/model-supplements.js +0 -2
  1199. package/dist/src/providers/plugin-registry.js +0 -2
  1200. package/dist/src/providers/presentation.js +0 -2
  1201. package/dist/src/remote-access/exposure-guards.js +0 -2
  1202. package/dist/src/remote-access/exposure-manager.js +0 -2
  1203. package/dist/src/review/review-git.js +0 -2
  1204. package/dist/src/review/review-types.js +0 -2
  1205. package/dist/src/routing/account-id.js +0 -2
  1206. package/dist/src/routing/agent-session-key.js +0 -2
  1207. package/dist/src/routing/bindings.js +0 -2
  1208. package/dist/src/routing/index.js +0 -2
  1209. package/dist/src/routing/resolve-route.js +0 -2
  1210. package/dist/src/routing/resolve-tui-session-key.js +0 -2
  1211. package/dist/src/routing/session-key-utils.js +0 -2
  1212. package/dist/src/routing/session-key.js +0 -2
  1213. package/dist/src/session/abort-cutoff.js +0 -2
  1214. package/dist/src/session/chat-export.js +0 -2
  1215. package/dist/src/session/client-history.js +0 -2
  1216. package/dist/src/session/compaction-checkpoints.js +0 -2
  1217. package/dist/src/session/config-store.js +0 -2
  1218. package/dist/src/session/init-session-turn.js +0 -2
  1219. package/dist/src/session/lifecycle-timestamps.js +0 -2
  1220. package/dist/src/session/load-jsonl-entries.js +0 -2
  1221. package/dist/src/session/manager.js +0 -2
  1222. package/dist/src/session/patch-metadata.js +0 -2
  1223. package/dist/src/session/reset-policy.js +0 -2
  1224. package/dist/src/session/reset-triggers.js +0 -2
  1225. package/dist/src/session/reset-type.js +0 -2
  1226. package/dist/src/session/resolve-session.js +0 -2
  1227. package/dist/src/session/session-context-for-llm.js +0 -2
  1228. package/dist/src/session/session-id.js +0 -2
  1229. package/dist/src/session/session-title.js +0 -2
  1230. package/dist/src/session/session-workspace.js +0 -2
  1231. package/dist/src/session/store.js +0 -2
  1232. package/dist/src/session/stored-rows-to-file-entries.js +0 -2
  1233. package/dist/src/session/thinking-resolve.js +0 -2
  1234. package/dist/src/session/transcript-events.js +0 -2
  1235. package/dist/src/session/transcript-format.js +0 -2
  1236. package/dist/src/session/transcript-outline.js +0 -2
  1237. package/dist/src/session/transcript-stats.js +0 -2
  1238. package/dist/src/session/types.js +0 -2
  1239. package/dist/src/session/user-round-delete.js +0 -2
  1240. package/dist/src/share/share-audit.js +0 -2
  1241. package/dist/src/share/share-auto.js +0 -2
  1242. package/dist/src/share/share-config.js +0 -2
  1243. package/dist/src/share/share-landing.js +0 -2
  1244. package/dist/src/share/share-rate-limit.js +0 -2
  1245. package/dist/src/share/share-store.js +0 -2
  1246. package/dist/src/share/share-thumbnail.js +0 -2
  1247. package/dist/src/share/share-types.js +0 -2
  1248. package/dist/src/share/share-url.js +0 -2
  1249. package/dist/src/share/share-zip.js +0 -2
  1250. package/dist/src/share/site-proxy.js +0 -2
  1251. package/dist/src/share/site-share-config.js +0 -2
  1252. package/dist/src/share/site-share-router.js +0 -2
  1253. package/dist/src/share/site-share-store.js +0 -2
  1254. package/dist/src/share/site-share-types.js +0 -2
  1255. package/dist/src/share/site-static-serve.js +0 -2
  1256. package/dist/src/storage/sqlite/activity-repository.js +0 -2
  1257. package/dist/src/storage/sqlite/config-repository.js +0 -2
  1258. package/dist/src/storage/sqlite/connection.js +0 -2
  1259. package/dist/src/storage/sqlite/connector-repository.js +0 -2
  1260. package/dist/src/storage/sqlite/fts.js +0 -2
  1261. package/dist/src/storage/sqlite/knowledge-repository.js +0 -2
  1262. package/dist/src/storage/sqlite/memory-index-repository.js +0 -2
  1263. package/dist/src/storage/sqlite/memory-records-repository.js +0 -2
  1264. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -2
  1265. package/dist/src/storage/sqlite/migrations/discover.js +0 -2
  1266. package/dist/src/storage/sqlite/migrations/errors.js +0 -2
  1267. package/dist/src/storage/sqlite/migrations/runner.js +0 -2
  1268. package/dist/src/storage/sqlite/note-agent-context-repository.js +0 -2
  1269. package/dist/src/storage/sqlite/notes-repository.js +0 -2
  1270. package/dist/src/storage/sqlite/paths.js +0 -2
  1271. package/dist/src/storage/sqlite/row-mappers.js +0 -2
  1272. package/dist/src/storage/sqlite/schema-version.js +0 -2
  1273. package/dist/src/storage/sqlite/schema.js +0 -2
  1274. package/dist/src/storage/sqlite/session-metadata.js +0 -2
  1275. package/dist/src/storage/sqlite/session-repository.js +0 -2
  1276. package/dist/src/storage/sqlite/transaction.js +0 -2
  1277. package/dist/src/storage/sqlite/transcript-repository.js +0 -2
  1278. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -2
  1279. package/dist/src/storage/sqlite/user-trust-repository.js +0 -2
  1280. package/dist/src/tui/backends/embedded-backend.js +0 -2
  1281. package/dist/src/tui/backends/gateway-sse-backend.js +0 -2
  1282. package/dist/src/tui/chat-history.js +0 -2
  1283. package/dist/src/tui/clipboard-image.js +0 -2
  1284. package/dist/src/tui/clipboard-text.js +0 -2
  1285. package/dist/src/tui/components/assistant-message.js +0 -2
  1286. package/dist/src/tui/components/bash-execution.js +0 -2
  1287. package/dist/src/tui/components/bash-summary.js +0 -2
  1288. package/dist/src/tui/components/branch-message-summary.js +0 -2
  1289. package/dist/src/tui/components/branch-summary.js +0 -2
  1290. package/dist/src/tui/components/chat-log.js +0 -2
  1291. package/dist/src/tui/components/compaction-summary.js +0 -2
  1292. package/dist/src/tui/components/custom-editor.js +0 -2
  1293. package/dist/src/tui/components/custom-message.js +0 -2
  1294. package/dist/src/tui/components/dynamic-border.js +0 -2
  1295. package/dist/src/tui/components/extension-dialog.js +0 -2
  1296. package/dist/src/tui/components/fuzzy-filter.js +0 -2
  1297. package/dist/src/tui/components/scoped-models-selector.js +0 -2
  1298. package/dist/src/tui/components/searchable-select-list.js +0 -2
  1299. package/dist/src/tui/components/session-selector.js +0 -2
  1300. package/dist/src/tui/components/settings-selector.js +0 -2
  1301. package/dist/src/tui/components/thinking-selector.js +0 -2
  1302. package/dist/src/tui/components/tool-execution.js +0 -2
  1303. package/dist/src/tui/components/tui-bottom-bar.js +0 -2
  1304. package/dist/src/tui/components/tui-header.js +0 -2
  1305. package/dist/src/tui/components/user-message.js +0 -2
  1306. package/dist/src/tui/components/visual-truncate.js +0 -2
  1307. package/dist/src/tui/extension-host/autocomplete.js +0 -2
  1308. package/dist/src/tui/extension-host/host.js +0 -2
  1309. package/dist/src/tui/extension-host/load-extensions.js +0 -2
  1310. package/dist/src/tui/extension-host/runtime-context.js +0 -2
  1311. package/dist/src/tui/extension-host/runtime.js +0 -2
  1312. package/dist/src/tui/extension-host/surface.js +0 -2
  1313. package/dist/src/tui/extension-host/tool-renderers.js +0 -2
  1314. package/dist/src/tui/format-tui-hotkeys.js +0 -2
  1315. package/dist/src/tui/sse-consumer.js +0 -2
  1316. package/dist/src/tui/theme/dark.js +0 -2
  1317. package/dist/src/tui/theme/light.js +0 -2
  1318. package/dist/src/tui/theme-manager.js +0 -2
  1319. package/dist/src/tui/theme.js +0 -2
  1320. package/dist/src/tui/tool-summary.js +0 -2
  1321. package/dist/src/tui/tui-agent-events.js +0 -2
  1322. package/dist/src/tui/tui-command-formatters.js +0 -2
  1323. package/dist/src/tui/tui-commands.js +0 -2
  1324. package/dist/src/tui/tui-context-usage.js +0 -2
  1325. package/dist/src/tui/tui-extension-user-message.js +0 -2
  1326. package/dist/src/tui/tui-fd-path.js +0 -2
  1327. package/dist/src/tui/tui-file-autocomplete.js +0 -2
  1328. package/dist/src/tui/tui-follow-up-queue.js +0 -2
  1329. package/dist/src/tui/tui-git-branch.js +0 -2
  1330. package/dist/src/tui/tui-keybindings-file.js +0 -2
  1331. package/dist/src/tui/tui-lifecycle.js +0 -2
  1332. package/dist/src/tui/tui-local-shell.js +0 -2
  1333. package/dist/src/tui/tui-model-picker.js +0 -2
  1334. package/dist/src/tui/tui-oauth-login.js +0 -2
  1335. package/dist/src/tui/tui-overlays.js +0 -2
  1336. package/dist/src/tui/tui-picker-overlay.js +0 -2
  1337. package/dist/src/tui/tui-run-state.js +0 -2
  1338. package/dist/src/tui/tui-run-status-format.js +0 -2
  1339. package/dist/src/tui/tui-runtime-hints.js +0 -2
  1340. package/dist/src/tui/tui-scoped-models.js +0 -2
  1341. package/dist/src/tui/tui-session-actions.js +0 -2
  1342. package/dist/src/tui/tui-session-format.js +0 -2
  1343. package/dist/src/tui/tui-session-snapshot.js +0 -2
  1344. package/dist/src/tui/tui-session-stats.js +0 -2
  1345. package/dist/src/tui/tui-settings.js +0 -2
  1346. package/dist/src/tui/tui-skills-autocomplete.js +0 -2
  1347. package/dist/src/tui/tui-startup-resources.js +0 -2
  1348. package/dist/src/tui/tui-startup-text.js +0 -2
  1349. package/dist/src/tui/tui-stdio-filter.js +0 -2
  1350. package/dist/src/tui/tui-submit.js +0 -2
  1351. package/dist/src/tui/tui-suspend.js +0 -2
  1352. package/dist/src/tui/tui-timeline-picker.js +0 -2
  1353. package/dist/src/tui/tui-timeline.js +0 -2
  1354. package/dist/src/tui/tui-tool-diff.js +0 -2
  1355. package/dist/src/tui/tui-tool-result.js +0 -2
  1356. package/dist/src/tui/tui-transcript-tree-picker.js +0 -2
  1357. package/dist/src/tui/tui-transcript-tree.js +0 -2
  1358. package/dist/src/tui/tui-types.js +0 -2
  1359. package/dist/src/tui/tui-workflow-slash.js +0 -2
  1360. package/dist/src/tui/tui.js +0 -2
  1361. package/dist/src/tui/xopc-tui-keybindings.js +0 -2
  1362. package/dist/src/tunnel/broker-client.js +0 -2
  1363. package/dist/src/tunnel/consent.js +0 -2
  1364. package/dist/src/tunnel/enable-lan-pairing.js +0 -2
  1365. package/dist/src/tunnel/env.js +0 -2
  1366. package/dist/src/tunnel/frp-subdomain-host.js +0 -2
  1367. package/dist/src/tunnel/frpc-binary.js +0 -2
  1368. package/dist/src/tunnel/frpc-config.js +0 -2
  1369. package/dist/src/tunnel/frpc-extract.js +0 -2
  1370. package/dist/src/tunnel/frpc-process.js +0 -2
  1371. package/dist/src/tunnel/gateway-lifecycle.js +0 -2
  1372. package/dist/src/tunnel/pair-context.js +0 -2
  1373. package/dist/src/tunnel/pair-url.js +0 -2
  1374. package/dist/src/tunnel/pairing-rate-limit.js +0 -2
  1375. package/dist/src/tunnel/pairing.js +0 -2
  1376. package/dist/src/tunnel/tunnel-audit.js +0 -2
  1377. package/dist/src/tunnel/tunnel-config.js +0 -2
  1378. package/dist/src/tunnel/tunnel-persist.js +0 -2
  1379. package/dist/src/tunnel/tunnel-qr.js +0 -2
  1380. package/dist/src/tunnel/tunnel-rate-limit.js +0 -2
  1381. package/dist/src/tunnel/tunnel-service.js +0 -2
  1382. package/dist/src/tunnel/tunnel-state.js +0 -2
  1383. package/dist/src/tunnel/well-known.js +0 -2
  1384. package/dist/src/user-context/config.js +0 -2
  1385. package/dist/src/user-context/import.js +0 -2
  1386. package/dist/src/user-context/owner.js +0 -2
  1387. package/dist/src/user-context/profile.js +0 -2
  1388. package/dist/src/user-context/projection.js +0 -2
  1389. package/dist/src/user-context/runtime.js +0 -2
  1390. package/dist/src/user-context/source-recommendations.js +0 -2
  1391. package/dist/src/user-context/trust-policy.js +0 -2
  1392. package/dist/src/utils/global-singleton.js +0 -2
  1393. package/dist/src/utils/helpers.js +0 -2
  1394. package/dist/src/utils/index.js +0 -2
  1395. package/dist/src/utils/is-record.js +0 -2
  1396. package/dist/src/utils/logger/audit.js +0 -2
  1397. package/dist/src/utils/logger/config.js +0 -2
  1398. package/dist/src/utils/logger/context.js +0 -2
  1399. package/dist/src/utils/logger/exporters.js +0 -2
  1400. package/dist/src/utils/logger/index.js +0 -2
  1401. package/dist/src/utils/logger/log-store.js +0 -2
  1402. package/dist/src/utils/logger/log-stream.js +0 -2
  1403. package/dist/src/utils/logger/pino-record.js +0 -2
  1404. package/dist/src/utils/logger/redact.js +0 -2
  1405. package/dist/src/utils/logger/rotation.js +0 -2
  1406. package/dist/src/utils/logger/shutdown.js +0 -2
  1407. package/dist/src/utils/logger/stats.js +0 -2
  1408. package/dist/src/utils/logger/streams.js +0 -2
  1409. package/dist/src/utils/logger/types.js +0 -2
  1410. package/dist/src/utils/logger.js +0 -2
  1411. package/dist/src/utils/redact-sensitive-url.js +0 -2
  1412. package/dist/src/utils/sanitize-log.js +0 -2
  1413. package/dist/src/utils/string-coerce.js +0 -2
  1414. package/dist/src/voice/language-profile.js +0 -2
  1415. package/dist/src/voice/local/model-files.js +0 -2
  1416. package/dist/src/voice/local/model-manager.js +0 -2
  1417. package/dist/src/voice/local/models.js +0 -2
  1418. package/dist/src/voice/local/runtime-client.js +0 -2
  1419. package/dist/src/voice/local/runtime-dispatcher.js +0 -2
  1420. package/dist/src/voice/local/runtime-worker.js +12 -4
  1421. package/dist/src/voice/local/wav.js +0 -2
  1422. package/dist/src/voice/metadata/builtin.js +0 -2
  1423. package/dist/src/voice/metadata/registry.js +0 -2
  1424. package/dist/src/voice/stt/availability.js +0 -2
  1425. package/dist/src/voice/stt/config-slice.js +0 -2
  1426. package/dist/src/voice/stt/factory.js +0 -2
  1427. package/dist/src/voice/stt/index.js +0 -2
  1428. package/dist/src/voice/stt/list-providers.js +0 -2
  1429. package/dist/src/voice/stt/mention.js +0 -2
  1430. package/dist/src/voice/stt/preflight.js +0 -2
  1431. package/dist/src/voice/stt/providers/alibaba-transcription.js +0 -2
  1432. package/dist/src/voice/stt/providers/local-transcription.js +0 -2
  1433. package/dist/src/voice/stt/providers/openai-transcription.js +0 -2
  1434. package/dist/src/voice/stt/transcribe-core.js +0 -2
  1435. package/dist/src/voice/stt/types.js +0 -2
  1436. package/dist/src/voice/tts/audio.js +0 -2
  1437. package/dist/src/voice/tts/config-slice.js +0 -2
  1438. package/dist/src/voice/tts/directives.js +0 -2
  1439. package/dist/src/voice/tts/factory.js +0 -2
  1440. package/dist/src/voice/tts/list-providers.js +0 -2
  1441. package/dist/src/voice/tts/merge-config.js +0 -2
  1442. package/dist/src/voice/tts/openai-compatible-speech.js +0 -2
  1443. package/dist/src/voice/tts/payload.js +0 -2
  1444. package/dist/src/voice/tts/preprocess.js +0 -2
  1445. package/dist/src/voice/tts/providers/alibaba-speech.js +0 -2
  1446. package/dist/src/voice/tts/providers/edge-speech.js +0 -2
  1447. package/dist/src/voice/tts/providers/minimax-speech.js +0 -2
  1448. package/dist/src/voice/tts/providers/openai-speech.js +0 -2
  1449. package/dist/src/voice/tts/sentence-boundary.js +0 -2
  1450. package/dist/src/voice/tts/service.js +0 -2
  1451. package/dist/src/voice/tts/speak-core.js +0 -2
  1452. package/dist/src/voice/tts/speech-registry.js +0 -2
  1453. package/dist/src/voice/tts/status-tracker.js +0 -2
  1454. package/dist/src/voice/tts/summarize.js +0 -2
  1455. package/dist/src/voice/tts/types.js +0 -2
  1456. package/dist/src/work-discovery/analyzer.js +0 -2
  1457. package/dist/src/work-discovery/probe.js +0 -2
  1458. package/dist/src/work-discovery/repository.js +0 -2
  1459. package/dist/src/work-discovery/service.js +0 -2
  1460. package/dist/src/work-items/agent-context.js +0 -2
  1461. package/dist/src/work-items/work-item-service.js +0 -2
  1462. package/dist/src/work-items/work-item-store.js +0 -2
  1463. package/dist/src/work-items/work-item-workflow-judge.js +0 -2
  1464. package/dist/src/workflows/authoring/workflow-draft-store.js +0 -2
  1465. package/dist/src/workflows/domain/definition-utils.js +0 -2
  1466. package/dist/src/workflows/domain/run.js +0 -2
  1467. package/dist/src/workflows/domain/schema-validation.js +0 -2
  1468. package/dist/src/workflows/domain/validation.js +0 -2
  1469. package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -2
  1470. package/dist/src/workflows/draft/workflow-draft-service.js +0 -2
  1471. package/dist/src/workflows/draft/workflow-draft-validator.js +0 -2
  1472. package/dist/src/workflows/engine/projector.js +0 -2
  1473. package/dist/src/workflows/engine/workflow-engine.js +0 -2
  1474. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +0 -2
  1475. package/dist/src/workflows/runtime/graph-workflow-runtime.js +0 -2
  1476. package/dist/src/workflows/service/run-view-to-snapshot.js +0 -2
  1477. package/dist/src/workflows/service/workflow-run-service.js +1 -3
  1478. package/dist/src/workflows/service/workflow-session-bridge.js +0 -2
  1479. package/dist/src/workflows/service/workflow-session-key.js +0 -2
  1480. package/dist/src/workflows/store/event-store.js +0 -2
  1481. package/dist/src/workflows/store/paths.js +0 -2
  1482. package/dist/src/workflows/store/run-index-store.js +0 -2
  1483. package/dist/src/workflows/store/run-store.js +0 -2
  1484. package/package.json +41 -11
  1485. package/skills/creative/hatch-pet/SKILL.md +1 -0
  1486. package/dist/extensions/dashscope/src/image-generation-provider.js.map +0 -1
  1487. package/dist/extensions/demo-memory/src/index.js.map +0 -1
  1488. package/dist/extensions/fal/src/image-generation-provider.js.map +0 -1
  1489. package/dist/extensions/feishu/src/actions/message-action-handler.js.map +0 -1
  1490. package/dist/extensions/feishu/src/adapters/cli-login.js.map +0 -1
  1491. package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +0 -1
  1492. package/dist/extensions/feishu/src/adapters/onboard-cli.js.map +0 -1
  1493. package/dist/extensions/feishu/src/auth/app-registration.js.map +0 -1
  1494. package/dist/extensions/feishu/src/auth/pairing.js.map +0 -1
  1495. package/dist/extensions/feishu/src/auth/paths.js.map +0 -1
  1496. package/dist/extensions/feishu/src/directory/directory-adapter.js.map +0 -1
  1497. package/dist/extensions/feishu/src/format.js.map +0 -1
  1498. package/dist/extensions/feishu/src/index.js.map +0 -1
  1499. package/dist/extensions/feishu/src/outbound/actions.js.map +0 -1
  1500. package/dist/extensions/feishu/src/outbound/media-load.js.map +0 -1
  1501. package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +0 -1
  1502. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js.map +0 -1
  1503. package/dist/extensions/feishu/src/pairing-config-resolver.js.map +0 -1
  1504. package/dist/extensions/feishu/src/plugin.js.map +0 -1
  1505. package/dist/extensions/feishu/src/schema/config-schema.js.map +0 -1
  1506. package/dist/extensions/feishu/src/state/accounts.js.map +0 -1
  1507. package/dist/extensions/feishu/src/state/message-bindings.js.map +0 -1
  1508. package/dist/extensions/feishu/src/state/thread-bindings.js.map +0 -1
  1509. package/dist/extensions/feishu/src/status/doctor.js.map +0 -1
  1510. package/dist/extensions/feishu/src/status/status-adapter.js.map +0 -1
  1511. package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +0 -1
  1512. package/dist/extensions/feishu/src/subagent-hooks.js.map +0 -1
  1513. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js.map +0 -1
  1514. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js.map +0 -1
  1515. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js.map +0 -1
  1516. package/dist/extensions/feishu/src/tools/tools.js.map +0 -1
  1517. package/dist/extensions/feishu/src/transport/client/client.js.map +0 -1
  1518. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js.map +0 -1
  1519. package/dist/extensions/feishu/src/transport/reliability/dedupe.js.map +0 -1
  1520. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js.map +0 -1
  1521. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js.map +0 -1
  1522. package/dist/extensions/feishu/src/transport/socket-mode/retry.js.map +0 -1
  1523. package/dist/extensions/feishu/src/transport/text/mentions.js.map +0 -1
  1524. package/dist/extensions/feishu/src/transport/webhook/monitor.js.map +0 -1
  1525. package/dist/extensions/feishu/src/ui/config-surface.js.map +0 -1
  1526. package/dist/extensions/feishu/src/workflow-progress.js.map +0 -1
  1527. package/dist/extensions/google/src/image-generation-provider.js.map +0 -1
  1528. package/dist/extensions/minimax/src/image-generation-provider.js.map +0 -1
  1529. package/dist/extensions/openai/src/image-generation-provider.js.map +0 -1
  1530. package/dist/extensions/telegram/src/access-control.js.map +0 -1
  1531. package/dist/extensions/telegram/src/account-manager.js.map +0 -1
  1532. package/dist/extensions/telegram/src/actions/message-actions.js.map +0 -1
  1533. package/dist/extensions/telegram/src/adapters/command-adapter.js.map +0 -1
  1534. package/dist/extensions/telegram/src/adapters/config-adapter.js.map +0 -1
  1535. package/dist/extensions/telegram/src/adapters/debounce-keys.js.map +0 -1
  1536. package/dist/extensions/telegram/src/adapters/gateway-adapter.js.map +0 -1
  1537. package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +0 -1
  1538. package/dist/extensions/telegram/src/adapters/inbound-access.js.map +0 -1
  1539. package/dist/extensions/telegram/src/adapters/index.js.map +0 -1
  1540. package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +0 -1
  1541. package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +0 -1
  1542. package/dist/extensions/telegram/src/adapters/security-adapter.js.map +0 -1
  1543. package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +0 -1
  1544. package/dist/extensions/telegram/src/adapters/status-adapter.js.map +0 -1
  1545. package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +0 -1
  1546. package/dist/extensions/telegram/src/api-root.js.map +0 -1
  1547. package/dist/extensions/telegram/src/approval-delivery.js.map +0 -1
  1548. package/dist/extensions/telegram/src/approval-store.js.map +0 -1
  1549. package/dist/extensions/telegram/src/caption.js.map +0 -1
  1550. package/dist/extensions/telegram/src/command-handler.js.map +0 -1
  1551. package/dist/extensions/telegram/src/config-schema.js.map +0 -1
  1552. package/dist/extensions/telegram/src/conversation-id.js.map +0 -1
  1553. package/dist/extensions/telegram/src/dedupe.js.map +0 -1
  1554. package/dist/extensions/telegram/src/delivery-chat-id.js.map +0 -1
  1555. package/dist/extensions/telegram/src/doctor.js.map +0 -1
  1556. package/dist/extensions/telegram/src/draft-stream-lifecycle.js.map +0 -1
  1557. package/dist/extensions/telegram/src/draft-stream-loop.js.map +0 -1
  1558. package/dist/extensions/telegram/src/draft-stream.js.map +0 -1
  1559. package/dist/extensions/telegram/src/errors.js.map +0 -1
  1560. package/dist/extensions/telegram/src/exec-approval-handler.js.map +0 -1
  1561. package/dist/extensions/telegram/src/exec-approvals.js.map +0 -1
  1562. package/dist/extensions/telegram/src/focus-handler.js.map +0 -1
  1563. package/dist/extensions/telegram/src/format.js.map +0 -1
  1564. package/dist/extensions/telegram/src/group-config-resolver.js.map +0 -1
  1565. package/dist/extensions/telegram/src/inbound-coalescer.js.map +0 -1
  1566. package/dist/extensions/telegram/src/inbound-processor.js.map +0 -1
  1567. package/dist/extensions/telegram/src/index.js.map +0 -1
  1568. package/dist/extensions/telegram/src/inline-keyboards.js.map +0 -1
  1569. package/dist/extensions/telegram/src/network-errors.js.map +0 -1
  1570. package/dist/extensions/telegram/src/outbound-sender.js.map +0 -1
  1571. package/dist/extensions/telegram/src/pairing-config-resolver.js.map +0 -1
  1572. package/dist/extensions/telegram/src/plugin-defaults.js.map +0 -1
  1573. package/dist/extensions/telegram/src/plugin.js.map +0 -1
  1574. package/dist/extensions/telegram/src/polling-session.js.map +0 -1
  1575. package/dist/extensions/telegram/src/proxy-fetch.js.map +0 -1
  1576. package/dist/extensions/telegram/src/reactions.js.map +0 -1
  1577. package/dist/extensions/telegram/src/reply-params.js.map +0 -1
  1578. package/dist/extensions/telegram/src/routing-integration.js.map +0 -1
  1579. package/dist/extensions/telegram/src/send-options.js.map +0 -1
  1580. package/dist/extensions/telegram/src/sent-cache.js.map +0 -1
  1581. package/dist/extensions/telegram/src/startup-errors.js.map +0 -1
  1582. package/dist/extensions/telegram/src/telegram-actions.js.map +0 -1
  1583. package/dist/extensions/telegram/src/telegram-draft-errors.js.map +0 -1
  1584. package/dist/extensions/telegram/src/thread-bindings.js.map +0 -1
  1585. package/dist/extensions/telegram/src/timeout-abort.js.map +0 -1
  1586. package/dist/extensions/telegram/src/token-resolver.js.map +0 -1
  1587. package/dist/extensions/telegram/src/update-offset-store.js.map +0 -1
  1588. package/dist/extensions/telegram/src/workflow-progress.js.map +0 -1
  1589. package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +0 -1
  1590. package/dist/extensions/weixin/src/api/api.js.map +0 -1
  1591. package/dist/extensions/weixin/src/api/config-cache.js.map +0 -1
  1592. package/dist/extensions/weixin/src/api/session-guard.js.map +0 -1
  1593. package/dist/extensions/weixin/src/api/types.js.map +0 -1
  1594. package/dist/extensions/weixin/src/auth/accounts.js.map +0 -1
  1595. package/dist/extensions/weixin/src/auth/login-qr.js.map +0 -1
  1596. package/dist/extensions/weixin/src/auth/pairing.js.map +0 -1
  1597. package/dist/extensions/weixin/src/auth/weixin-account-id.js.map +0 -1
  1598. package/dist/extensions/weixin/src/cdn/aes-ecb.js.map +0 -1
  1599. package/dist/extensions/weixin/src/cdn/cdn-upload.js.map +0 -1
  1600. package/dist/extensions/weixin/src/cdn/cdn-url.js.map +0 -1
  1601. package/dist/extensions/weixin/src/cdn/pic-decrypt.js.map +0 -1
  1602. package/dist/extensions/weixin/src/cdn/upload.js.map +0 -1
  1603. package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +0 -1
  1604. package/dist/extensions/weixin/src/cli/qr-login.js.map +0 -1
  1605. package/dist/extensions/weixin/src/config-schema.js.map +0 -1
  1606. package/dist/extensions/weixin/src/config-surface.js.map +0 -1
  1607. package/dist/extensions/weixin/src/delivery-to.js.map +0 -1
  1608. package/dist/extensions/weixin/src/index.js.map +0 -1
  1609. package/dist/extensions/weixin/src/media/data-url.js.map +0 -1
  1610. package/dist/extensions/weixin/src/media/media-download.js.map +0 -1
  1611. package/dist/extensions/weixin/src/media/mime.js.map +0 -1
  1612. package/dist/extensions/weixin/src/media/silk-transcode.js.map +0 -1
  1613. package/dist/extensions/weixin/src/messaging/context-token-init.js.map +0 -1
  1614. package/dist/extensions/weixin/src/messaging/debug-mode.js.map +0 -1
  1615. package/dist/extensions/weixin/src/messaging/error-notice.js.map +0 -1
  1616. package/dist/extensions/weixin/src/messaging/inbound.js.map +0 -1
  1617. package/dist/extensions/weixin/src/messaging/markdown-filter.js.map +0 -1
  1618. package/dist/extensions/weixin/src/messaging/process-message.js.map +0 -1
  1619. package/dist/extensions/weixin/src/messaging/send-media.js.map +0 -1
  1620. package/dist/extensions/weixin/src/messaging/send.js.map +0 -1
  1621. package/dist/extensions/weixin/src/messaging/slash-commands.js.map +0 -1
  1622. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js.map +0 -1
  1623. package/dist/extensions/weixin/src/monitor/monitor.js.map +0 -1
  1624. package/dist/extensions/weixin/src/outbound-send.js.map +0 -1
  1625. package/dist/extensions/weixin/src/pairing-config-resolver.js.map +0 -1
  1626. package/dist/extensions/weixin/src/plugin.js.map +0 -1
  1627. package/dist/extensions/weixin/src/routing-integration.js.map +0 -1
  1628. package/dist/extensions/weixin/src/storage/state-dir.js.map +0 -1
  1629. package/dist/extensions/weixin/src/storage/sync-buf.js.map +0 -1
  1630. package/dist/extensions/weixin/src/util/logger.js.map +0 -1
  1631. package/dist/extensions/weixin/src/util/random.js.map +0 -1
  1632. package/dist/extensions/weixin/src/util/redact.js.map +0 -1
  1633. package/dist/extensions/weixin/src/workflow-progress.js.map +0 -1
  1634. package/dist/gateway/static/root/assets/channels-status-swr-CuU6ez3y.js +0 -1
  1635. package/dist/gateway/static/root/assets/desktop-pet-C6V-PHwi.js +0 -1
  1636. package/dist/gateway/static/root/assets/desktop-pet-settings-5Fcz47XQ.js +0 -1
  1637. package/dist/gateway/static/root/assets/index-Dfnl9tp_.css +0 -1
  1638. package/dist/gateway/static/root/assets/settings-advanced-gate-DwuBL834.js +0 -1
  1639. package/dist/gateway/static/root/assets/skill-reload-api-DQtZiejw.js +0 -1
  1640. package/dist/gateway/static/root/favicon-icon.svg +0 -187
  1641. package/dist/package.js.map +0 -1
  1642. package/dist/src/activity/context.js.map +0 -1
  1643. package/dist/src/activity/emitter.js.map +0 -1
  1644. package/dist/src/activity/service.js.map +0 -1
  1645. package/dist/src/agent/agent-manager.js.map +0 -1
  1646. package/dist/src/agent/agent-scope.js.map +0 -1
  1647. package/dist/src/agent/background-review/coordinator.js.map +0 -1
  1648. package/dist/src/agent/background-review/prompts.js.map +0 -1
  1649. package/dist/src/agent/background-review/run-background-review.js.map +0 -1
  1650. package/dist/src/agent/background-review/settings.js.map +0 -1
  1651. package/dist/src/agent/bootstrap/bootstrap-cache.js.map +0 -1
  1652. package/dist/src/agent/bootstrap/bootstrap-context.js.map +0 -1
  1653. package/dist/src/agent/bootstrap/bootstrap-files.js.map +0 -1
  1654. package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +0 -1
  1655. package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +0 -1
  1656. package/dist/src/agent/bootstrap/project-agents-context.js.map +0 -1
  1657. package/dist/src/agent/capabilities/definitions.js.map +0 -1
  1658. package/dist/src/agent/capabilities/registry.js.map +0 -1
  1659. package/dist/src/agent/child-agent-factory.js.map +0 -1
  1660. package/dist/src/agent/client-error-format.js.map +0 -1
  1661. package/dist/src/agent/code-intelligence/binary.js.map +0 -1
  1662. package/dist/src/agent/code-intelligence/runtime.js.map +0 -1
  1663. package/dist/src/agent/code-intelligence/tools.js.map +0 -1
  1664. package/dist/src/agent/coding/turn-diff-tracker.js.map +0 -1
  1665. package/dist/src/agent/context/expand-at-file-mentions.js.map +0 -1
  1666. package/dist/src/agent/context/project-context.js.map +0 -1
  1667. package/dist/src/agent/context/workspace-seed.js.map +0 -1
  1668. package/dist/src/agent/context/workspace-state.js.map +0 -1
  1669. package/dist/src/agent/context/workspace.js.map +0 -1
  1670. package/dist/src/agent/embedded/run-for-session.js.map +0 -1
  1671. package/dist/src/agent/embedded/run-turn.js.map +0 -1
  1672. package/dist/src/agent/embedded/runs.js.map +0 -1
  1673. package/dist/src/agent/embedded/session-manager-init.js.map +0 -1
  1674. package/dist/src/agent/embedded/session-runner.js.map +0 -1
  1675. package/dist/src/agent/embedded/session-tool-result-guard.js.map +0 -1
  1676. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +0 -1
  1677. package/dist/src/agent/embedded/subscribe-session.js.map +0 -1
  1678. package/dist/src/agent/embedded/system-prompt-override.js.map +0 -1
  1679. package/dist/src/agent/embedded/tool-result-context-guard.js.map +0 -1
  1680. package/dist/src/agent/embedded/tool-result-truncation.js.map +0 -1
  1681. package/dist/src/agent/embedded/xopc-auth-storage.js.map +0 -1
  1682. package/dist/src/agent/embedded/xopc-stream-bridge.js.map +0 -1
  1683. package/dist/src/agent/embedded/xopc-tools-bridge.js.map +0 -1
  1684. package/dist/src/agent/failover-error.js.map +0 -1
  1685. package/dist/src/agent/fallback/candidates.js.map +0 -1
  1686. package/dist/src/agent/fallback/reason.js.map +0 -1
  1687. package/dist/src/agent/feedback/feedback-coordinator.js.map +0 -1
  1688. package/dist/src/agent/goals/checklist-judge.js.map +0 -1
  1689. package/dist/src/agent/goals/checklist-types.js.map +0 -1
  1690. package/dist/src/agent/goals/evaluate-turn.js.map +0 -1
  1691. package/dist/src/agent/goals/goal-locale.js.map +0 -1
  1692. package/dist/src/agent/goals/judge.js.map +0 -1
  1693. package/dist/src/agent/goals/persistent-goal-service.js.map +0 -1
  1694. package/dist/src/agent/goals/post-turn.js.map +0 -1
  1695. package/dist/src/agent/goals/state.js.map +0 -1
  1696. package/dist/src/agent/image/generation/bundled-registry.js.map +0 -1
  1697. package/dist/src/agent/image/generation/bundled.js.map +0 -1
  1698. package/dist/src/agent/image/generation/image-assets.js.map +0 -1
  1699. package/dist/src/agent/image/generation/model-ref.js.map +0 -1
  1700. package/dist/src/agent/image/generation/normalization.js.map +0 -1
  1701. package/dist/src/agent/image/generation/openai-compatible-image-provider.js.map +0 -1
  1702. package/dist/src/agent/image/generation/provider-registry.js.map +0 -1
  1703. package/dist/src/agent/image/generation/runtime.js.map +0 -1
  1704. package/dist/src/agent/image/image-helpers.js.map +0 -1
  1705. package/dist/src/agent/image/image-model-fallback.js.map +0 -1
  1706. package/dist/src/agent/image/inbound-image-handling.js.map +0 -1
  1707. package/dist/src/agent/image/load-image-media.js.map +0 -1
  1708. package/dist/src/agent/image/tool-model-config.js.map +0 -1
  1709. package/dist/src/agent/image/understanding/pi-ai-provider.js.map +0 -1
  1710. package/dist/src/agent/image/understanding/provider-registry.js.map +0 -1
  1711. package/dist/src/agent/image/understanding/runtime.js.map +0 -1
  1712. package/dist/src/agent/image/vision-detection.js.map +0 -1
  1713. package/dist/src/agent/inbound/attachment-pipeline.js.map +0 -1
  1714. package/dist/src/agent/inbound/inbound-loop.js.map +0 -1
  1715. package/dist/src/agent/inbound/turn-dispatcher.js.map +0 -1
  1716. package/dist/src/agent/ipc/bus.js.map +0 -1
  1717. package/dist/src/agent/ipc/inbox.js.map +0 -1
  1718. package/dist/src/agent/ipc/socket.js.map +0 -1
  1719. package/dist/src/agent/ipc/types.js.map +0 -1
  1720. package/dist/src/agent/lifecycle/handlers/compaction.js.map +0 -1
  1721. package/dist/src/agent/lifecycle/hook-handler.js.map +0 -1
  1722. package/dist/src/agent/lifecycle/manager.js.map +0 -1
  1723. package/dist/src/agent/lifecycle/progress.js.map +0 -1
  1724. package/dist/src/agent/lifecycle/timeout-wrapper.js.map +0 -1
  1725. package/dist/src/agent/lifecycle/typing.js.map +0 -1
  1726. package/dist/src/agent/mcp/bundle-mcp-config.js.map +0 -1
  1727. package/dist/src/agent/mcp/bundle-mcp-materialize.js.map +0 -1
  1728. package/dist/src/agent/mcp/bundle-mcp-names.js.map +0 -1
  1729. package/dist/src/agent/mcp/bundle-mcp-policy.js.map +0 -1
  1730. package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +0 -1
  1731. package/dist/src/agent/mcp/embedded-mcp.js.map +0 -1
  1732. package/dist/src/agent/mcp/mcp-config-shared.js.map +0 -1
  1733. package/dist/src/agent/mcp/mcp-http.js.map +0 -1
  1734. package/dist/src/agent/mcp/mcp-stdio-transport.js.map +0 -1
  1735. package/dist/src/agent/mcp/mcp-stdio.js.map +0 -1
  1736. package/dist/src/agent/mcp/mcp-tool-meta.js.map +0 -1
  1737. package/dist/src/agent/mcp/mcp-transport-config.js.map +0 -1
  1738. package/dist/src/agent/mcp/mcp-transport.js.map +0 -1
  1739. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +0 -1
  1740. package/dist/src/agent/media-generation/model-ref.js.map +0 -1
  1741. package/dist/src/agent/media-generation/normalization.types.js.map +0 -1
  1742. package/dist/src/agent/media-generation/runtime-shared.js.map +0 -1
  1743. package/dist/src/agent/memory/agent-message-access.js.map +0 -1
  1744. package/dist/src/agent/memory/builtin-memory-store.js.map +0 -1
  1745. package/dist/src/agent/memory/builtin-provider.js.map +0 -1
  1746. package/dist/src/agent/memory/compaction.js.map +0 -1
  1747. package/dist/src/agent/memory/context/planner.js.map +0 -1
  1748. package/dist/src/agent/memory/context-fence.js.map +0 -1
  1749. package/dist/src/agent/memory/create-memory-manager.js.map +0 -1
  1750. package/dist/src/agent/memory/dreaming/config.js.map +0 -1
  1751. package/dist/src/agent/memory/dreaming/constants.js.map +0 -1
  1752. package/dist/src/agent/memory/dreaming/deep-promotion.js.map +0 -1
  1753. package/dist/src/agent/memory/dreaming/events.js.map +0 -1
  1754. package/dist/src/agent/memory/dreaming/last-run.js.map +0 -1
  1755. package/dist/src/agent/memory/dreaming/light-sweep.js.map +0 -1
  1756. package/dist/src/agent/memory/dreaming/preview.js.map +0 -1
  1757. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +0 -1
  1758. package/dist/src/agent/memory/dreaming/rem-patterns.js.map +0 -1
  1759. package/dist/src/agent/memory/dreaming/scope.js.map +0 -1
  1760. package/dist/src/agent/memory/dreaming/short-term-store.js.map +0 -1
  1761. package/dist/src/agent/memory/dreaming/utils.js.map +0 -1
  1762. package/dist/src/agent/memory/lifecycle.js.map +0 -1
  1763. package/dist/src/agent/memory/manager.js.map +0 -1
  1764. package/dist/src/agent/memory/memory-config.js.map +0 -1
  1765. package/dist/src/agent/memory/message-sanitizer.js.map +0 -1
  1766. package/dist/src/agent/memory/plugin-discovery.js.map +0 -1
  1767. package/dist/src/agent/memory/sensitivity.js.map +0 -1
  1768. package/dist/src/agent/memory/source-origin.js.map +0 -1
  1769. package/dist/src/agent/memory/stub-memory-provider.js.map +0 -1
  1770. package/dist/src/agent/memory/summary-generator.js.map +0 -1
  1771. package/dist/src/agent/memory/understanding/correction.js.map +0 -1
  1772. package/dist/src/agent/memory/understanding/quality.js.map +0 -1
  1773. package/dist/src/agent/memory/understanding/service.js.map +0 -1
  1774. package/dist/src/agent/memory/user-context-coordinator.js.map +0 -1
  1775. package/dist/src/agent/memory/user-message-text.js.map +0 -1
  1776. package/dist/src/agent/memory/window.js.map +0 -1
  1777. package/dist/src/agent/messaging/command-handler.js.map +0 -1
  1778. package/dist/src/agent/messaging/message-router.js.map +0 -1
  1779. package/dist/src/agent/messaging/outbound-coordinator.js.map +0 -1
  1780. package/dist/src/agent/messaging/stream-manager.js.map +0 -1
  1781. package/dist/src/agent/middleware/context.js.map +0 -1
  1782. package/dist/src/agent/middleware/self-verify.js.map +0 -1
  1783. package/dist/src/agent/models/manager.js.map +0 -1
  1784. package/dist/src/agent/models/request-limiter.js.map +0 -1
  1785. package/dist/src/agent/models/selection.js.map +0 -1
  1786. package/dist/src/agent/orchestration/agent-event-handler.js.map +0 -1
  1787. package/dist/src/agent/orchestration/agent-orchestrator.js.map +0 -1
  1788. package/dist/src/agent/orchestration/llm-turn-retry.js.map +0 -1
  1789. package/dist/src/agent/orchestration/loop-guard.js.map +0 -1
  1790. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +0 -1
  1791. package/dist/src/agent/prompt/cache-boundary.js.map +0 -1
  1792. package/dist/src/agent/prompt/memory/index.js.map +0 -1
  1793. package/dist/src/agent/prompt/safety.js.map +0 -1
  1794. package/dist/src/agent/prompt/sanitize-for-prompt.js.map +0 -1
  1795. package/dist/src/agent/prompt/sections/behavior.js.map +0 -1
  1796. package/dist/src/agent/prompt/sections/memory-skills.js.map +0 -1
  1797. package/dist/src/agent/prompt/sections/messaging-runtime.js.map +0 -1
  1798. package/dist/src/agent/prompt/sections/project-context.js.map +0 -1
  1799. package/dist/src/agent/prompt/sections/tooling.js.map +0 -1
  1800. package/dist/src/agent/prompt/sections/workspace-runtime.js.map +0 -1
  1801. package/dist/src/agent/prompt/service-prompt-builder.js.map +0 -1
  1802. package/dist/src/agent/prompt/subagent-context.js.map +0 -1
  1803. package/dist/src/agent/prompt/system-prompt-params.js.map +0 -1
  1804. package/dist/src/agent/prompt/system-prompt.js.map +0 -1
  1805. package/dist/src/agent/prompt/system-reminder.js.map +0 -1
  1806. package/dist/src/agent/reply/apply-turn-user-enrichment.js.map +0 -1
  1807. package/dist/src/agent/reply/post-compaction-context.js.map +0 -1
  1808. package/dist/src/agent/reply/startup-context.js.map +0 -1
  1809. package/dist/src/agent/reply/workspace-boundary-read.js.map +0 -1
  1810. package/dist/src/agent/sandbox/command-validator.js.map +0 -1
  1811. package/dist/src/agent/sandbox/exec-policy.js.map +0 -1
  1812. package/dist/src/agent/sandbox/path-policy.js.map +0 -1
  1813. package/dist/src/agent/sandbox/sanitize-env-vars.js.map +0 -1
  1814. package/dist/src/agent/sandbox/types.js.map +0 -1
  1815. package/dist/src/agent/service/async-queue.js.map +0 -1
  1816. package/dist/src/agent/service/btw-query.js.map +0 -1
  1817. package/dist/src/agent/service/build-direct-message-content.js.map +0 -1
  1818. package/dist/src/agent/service/direct-turn-helpers.js.map +0 -1
  1819. package/dist/src/agent/service/parse-outbound-session-key.js.map +0 -1
  1820. package/dist/src/agent/service/process-direct-one-shot.js.map +0 -1
  1821. package/dist/src/agent/service/process-direct-streaming.js.map +0 -1
  1822. package/dist/src/agent/service/session-context-report.js.map +0 -1
  1823. package/dist/src/agent/service/webchat-tts.js.map +0 -1
  1824. package/dist/src/agent/service-inbound-utils.js.map +0 -1
  1825. package/dist/src/agent/service.js.map +0 -1
  1826. package/dist/src/agent/session/session-config-service.js.map +0 -1
  1827. package/dist/src/agent/session/session-context.js.map +0 -1
  1828. package/dist/src/agent/session/session-hydrator.js.map +0 -1
  1829. package/dist/src/agent/session/session-inspector.js.map +0 -1
  1830. package/dist/src/agent/session/session-lifecycle.js.map +0 -1
  1831. package/dist/src/agent/session/session-state-bag.js.map +0 -1
  1832. package/dist/src/agent/session/tracker.js.map +0 -1
  1833. package/dist/src/agent/skills/config.js.map +0 -1
  1834. package/dist/src/agent/skills/filesystem-watcher.js.map +0 -1
  1835. package/dist/src/agent/skills/format-skills-prompt.js.map +0 -1
  1836. package/dist/src/agent/skills/hub-hash.js.map +0 -1
  1837. package/dist/src/agent/skills/hub-lock.js.map +0 -1
  1838. package/dist/src/agent/skills/hub-pull.js.map +0 -1
  1839. package/dist/src/agent/skills/index.js.map +0 -1
  1840. package/dist/src/agent/skills/install-target.js.map +0 -1
  1841. package/dist/src/agent/skills/installer.js.map +0 -1
  1842. package/dist/src/agent/skills/managed-store.js.map +0 -1
  1843. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +0 -1
  1844. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +0 -1
  1845. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +0 -1
  1846. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +0 -1
  1847. package/dist/src/agent/skills/marketplace/marketplace-category-order.js.map +0 -1
  1848. package/dist/src/agent/skills/marketplace/registry.js.map +0 -1
  1849. package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +0 -1
  1850. package/dist/src/agent/skills/parse-skill-metadata.js.map +0 -1
  1851. package/dist/src/agent/skills/required-env-vars.js.map +0 -1
  1852. package/dist/src/agent/skills/scanner.js.map +0 -1
  1853. package/dist/src/agent/skills/skill-manage-ops.js.map +0 -1
  1854. package/dist/src/agent/skills/skill-manager.js.map +0 -1
  1855. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +0 -1
  1856. package/dist/src/agent/skills/skill-tool-gating.js.map +0 -1
  1857. package/dist/src/agent/skills/skill-view-path.js.map +0 -1
  1858. package/dist/src/agent/skills/skills-marketplace.js.map +0 -1
  1859. package/dist/src/agent/skills/test-framework.js.map +0 -1
  1860. package/dist/src/agent/skills/watcher.js.map +0 -1
  1861. package/dist/src/agent/skills/workspace-skills-dir.js.map +0 -1
  1862. package/dist/src/agent/source-context/injector.js.map +0 -1
  1863. package/dist/src/agent/source-context/types.js.map +0 -1
  1864. package/dist/src/agent/starter-agents.js.map +0 -1
  1865. package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +0 -1
  1866. package/dist/src/agent/tool-manuals/browser.js.map +0 -1
  1867. package/dist/src/agent/tool-manuals/index.js.map +0 -1
  1868. package/dist/src/agent/tool-manuals/xopc-use.js.map +0 -1
  1869. package/dist/src/agent/tools/apply-patch.js.map +0 -1
  1870. package/dist/src/agent/tools/automation-tool.js.map +0 -1
  1871. package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +0 -1
  1872. package/dist/src/agent/tools/browser/tool/schemas.js.map +0 -1
  1873. package/dist/src/agent/tools/chain-tracker.js.map +0 -1
  1874. package/dist/src/agent/tools/clarify-tool.js.map +0 -1
  1875. package/dist/src/agent/tools/cli-clarify.js.map +0 -1
  1876. package/dist/src/agent/tools/communication.js.map +0 -1
  1877. package/dist/src/agent/tools/composio-tool.js.map +0 -1
  1878. package/dist/src/agent/tools/concurrency.js.map +0 -1
  1879. package/dist/src/agent/tools/create-share-tool.js.map +0 -1
  1880. package/dist/src/agent/tools/curated-memory-tool.js.map +0 -1
  1881. package/dist/src/agent/tools/delegate-tool.js.map +0 -1
  1882. package/dist/src/agent/tools/desktop-pet-tool.js.map +0 -1
  1883. package/dist/src/agent/tools/dreaming-tool.js.map +0 -1
  1884. package/dist/src/agent/tools/edit-diff.js.map +0 -1
  1885. package/dist/src/agent/tools/error-pattern-matcher.js.map +0 -1
  1886. package/dist/src/agent/tools/error-tracker.js.map +0 -1
  1887. package/dist/src/agent/tools/exec-command.js.map +0 -1
  1888. package/dist/src/agent/tools/execute-code-tool.js.map +0 -1
  1889. package/dist/src/agent/tools/executor.js.map +0 -1
  1890. package/dist/src/agent/tools/factory.js.map +0 -1
  1891. package/dist/src/agent/tools/find.js.map +0 -1
  1892. package/dist/src/agent/tools/goal-evidence-recorder.js.map +0 -1
  1893. package/dist/src/agent/tools/goal-tool.js.map +0 -1
  1894. package/dist/src/agent/tools/grep.js.map +0 -1
  1895. package/dist/src/agent/tools/image-generate-tool.js.map +0 -1
  1896. package/dist/src/agent/tools/image-tool.js.map +0 -1
  1897. package/dist/src/agent/tools/list-dir.js.map +0 -1
  1898. package/dist/src/agent/tools/media-read-tool.js.map +0 -1
  1899. package/dist/src/agent/tools/memory-tool.js.map +0 -1
  1900. package/dist/src/agent/tools/metadata.js.map +0 -1
  1901. package/dist/src/agent/tools/read.js.map +0 -1
  1902. package/dist/src/agent/tools/search/http.js.map +0 -1
  1903. package/dist/src/agent/tools/search/providers/bing-api.js.map +0 -1
  1904. package/dist/src/agent/tools/search/providers/bing-html.js.map +0 -1
  1905. package/dist/src/agent/tools/search/providers/brave.js.map +0 -1
  1906. package/dist/src/agent/tools/search/providers/duckduckgo-html.js.map +0 -1
  1907. package/dist/src/agent/tools/search/providers/searxng.js.map +0 -1
  1908. package/dist/src/agent/tools/search/providers/tavily.js.map +0 -1
  1909. package/dist/src/agent/tools/search/region.js.map +0 -1
  1910. package/dist/src/agent/tools/search/registry.js.map +0 -1
  1911. package/dist/src/agent/tools/search/resolve-config.js.map +0 -1
  1912. package/dist/src/agent/tools/send-media.js.map +0 -1
  1913. package/dist/src/agent/tools/session-search-tool.js.map +0 -1
  1914. package/dist/src/agent/tools/session-status-tool.js.map +0 -1
  1915. package/dist/src/agent/tools/skill-install-tool.js.map +0 -1
  1916. package/dist/src/agent/tools/skill-manage-tool.js.map +0 -1
  1917. package/dist/src/agent/tools/skills-tools.js.map +0 -1
  1918. package/dist/src/agent/tools/structured-output.js.map +0 -1
  1919. package/dist/src/agent/tools/todo-tool.js.map +0 -1
  1920. package/dist/src/agent/tools/tool-manual-tool.js.map +0 -1
  1921. package/dist/src/agent/tools/tool-paths.js.map +0 -1
  1922. package/dist/src/agent/tools/truncate.js.map +0 -1
  1923. package/dist/src/agent/tools/tts-tool.js.map +0 -1
  1924. package/dist/src/agent/tools/update-plan-tool.js.map +0 -1
  1925. package/dist/src/agent/tools/url-safety.js.map +0 -1
  1926. package/dist/src/agent/tools/usage-analyzer.js.map +0 -1
  1927. package/dist/src/agent/tools/web-extract.js.map +0 -1
  1928. package/dist/src/agent/tools/web.js.map +0 -1
  1929. package/dist/src/agent/tools/workflow-tool.js.map +0 -1
  1930. package/dist/src/agent/tools/write.js.map +0 -1
  1931. package/dist/src/agent/tools/xopc-use-tool.js.map +0 -1
  1932. package/dist/src/agent/transcript/google-api.js.map +0 -1
  1933. package/dist/src/agent/transcript/model-selection.js.map +0 -1
  1934. package/dist/src/agent/transcript/provider-capabilities.js.map +0 -1
  1935. package/dist/src/agent/transcript/session-transcript-repair.js.map +0 -1
  1936. package/dist/src/agent/transcript/strip-tool-messages.js.map +0 -1
  1937. package/dist/src/agent/transcript/thinking-types.js.map +0 -1
  1938. package/dist/src/agent/transcript/thinking.js.map +0 -1
  1939. package/dist/src/agent/transcript/tool-call-id.js.map +0 -1
  1940. package/dist/src/agent/transcript/transcript-hygiene.js.map +0 -1
  1941. package/dist/src/agent/transcript/transcript-policy.js.map +0 -1
  1942. package/dist/src/agent/workflow/agent-progress.js.map +0 -1
  1943. package/dist/src/agent/workflow/builtins/index.js.map +0 -1
  1944. package/dist/src/agent/workflow/catalog.js.map +0 -1
  1945. package/dist/src/agent/workflow/progress-broker.js.map +0 -1
  1946. package/dist/src/agent/workflow/snapshot-empty.js.map +0 -1
  1947. package/dist/src/agent/workflow/snapshot.js.map +0 -1
  1948. package/dist/src/agent/workflow/step-labels.js.map +0 -1
  1949. package/dist/src/agent/workflow/structured-output-tool.js.map +0 -1
  1950. package/dist/src/agent/workflow/subagent-runner.js.map +0 -1
  1951. package/dist/src/agent/workflow/workflow-child-tools.js.map +0 -1
  1952. package/dist/src/agent/workspace-runtime/registry.js.map +0 -1
  1953. package/dist/src/agent-manifest/index.js.map +0 -1
  1954. package/dist/src/agent-manifest/preset-chain.js.map +0 -1
  1955. package/dist/src/agent-manifest/prompt.js.map +0 -1
  1956. package/dist/src/agent-manifest/resolver.js.map +0 -1
  1957. package/dist/src/agent-manifest/schema.js.map +0 -1
  1958. package/dist/src/agent-manifest/validator.js.map +0 -1
  1959. package/dist/src/agent-runtime/boundary-guard.js.map +0 -1
  1960. package/dist/src/agent-runtime/memory-runtime.js.map +0 -1
  1961. package/dist/src/agent-runtime/model-router.js.map +0 -1
  1962. package/dist/src/agent-runtime/run-trace.js.map +0 -1
  1963. package/dist/src/agent-runtime/runtime-profile.js.map +0 -1
  1964. package/dist/src/agent-runtime/tool-registry.js.map +0 -1
  1965. package/dist/src/agent-runtime/workflow-runtime.js.map +0 -1
  1966. package/dist/src/ai-assist/text-assist.js.map +0 -1
  1967. package/dist/src/auth/credentials.js.map +0 -1
  1968. package/dist/src/auth/index.js.map +0 -1
  1969. package/dist/src/auth/oauth/anthropic.js.map +0 -1
  1970. package/dist/src/auth/oauth/github-copilot.js.map +0 -1
  1971. package/dist/src/auth/oauth/google-oauth/google-antigravity.js.map +0 -1
  1972. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js.map +0 -1
  1973. package/dist/src/auth/oauth/google-oauth/oauth-page.js.map +0 -1
  1974. package/dist/src/auth/oauth/google-oauth/pkce.js.map +0 -1
  1975. package/dist/src/auth/oauth/kimi-coding.js.map +0 -1
  1976. package/dist/src/auth/oauth/minimax-cn.js.map +0 -1
  1977. package/dist/src/auth/oauth/minimax.js.map +0 -1
  1978. package/dist/src/auth/oauth/openai-codex.js.map +0 -1
  1979. package/dist/src/auth/oauth/pkce.js.map +0 -1
  1980. package/dist/src/auth/profiles/oauth.js.map +0 -1
  1981. package/dist/src/auth/profiles/order.js.map +0 -1
  1982. package/dist/src/auth/profiles/profiles.js.map +0 -1
  1983. package/dist/src/auth/profiles/store.js.map +0 -1
  1984. package/dist/src/auth/sync-provider-auth.js.map +0 -1
  1985. package/dist/src/automations/api/routes.js.map +0 -1
  1986. package/dist/src/automations/domain/schedule.js.map +0 -1
  1987. package/dist/src/automations/domain/validation.js.map +0 -1
  1988. package/dist/src/automations/draft/automation-draft-prompt.js.map +0 -1
  1989. package/dist/src/automations/draft/automation-draft-service.js.map +0 -1
  1990. package/dist/src/automations/draft/automation-draft-validator.js.map +0 -1
  1991. package/dist/src/automations/product-events.js.map +0 -1
  1992. package/dist/src/automations/service/action-executor.js.map +0 -1
  1993. package/dist/src/automations/service/automation-service.js.map +0 -1
  1994. package/dist/src/automations/storage/automation-repository.js.map +0 -1
  1995. package/dist/src/automations/storage/automation-run-repository.js.map +0 -1
  1996. package/dist/src/browser/actions/extension-registry-bridge.js.map +0 -1
  1997. package/dist/src/browser/actions/registry.js.map +0 -1
  1998. package/dist/src/browser/backend-from-config.js.map +0 -1
  1999. package/dist/src/browser/browser-command-timeout.js.map +0 -1
  2000. package/dist/src/browser/cache-dir-policy.js.map +0 -1
  2001. package/dist/src/browser/cdp-local-launcher.js.map +0 -1
  2002. package/dist/src/browser/cdp-supervisor.js.map +0 -1
  2003. package/dist/src/browser/free-port.js.map +0 -1
  2004. package/dist/src/browser/humanize.js.map +0 -1
  2005. package/dist/src/browser/install-lock.js.map +0 -1
  2006. package/dist/src/browser/manager.js.map +0 -1
  2007. package/dist/src/browser/pipeline/output.js.map +0 -1
  2008. package/dist/src/browser/pipeline/runner.js.map +0 -1
  2009. package/dist/src/browser/pipeline/schema.js.map +0 -1
  2010. package/dist/src/browser/pipeline/source.js.map +0 -1
  2011. package/dist/src/browser/pipeline/template.js.map +0 -1
  2012. package/dist/src/browser/providers/browser-ext-install.js.map +0 -1
  2013. package/dist/src/browser/providers/browser-use.js.map +0 -1
  2014. package/dist/src/browser/providers/browserbase.js.map +0 -1
  2015. package/dist/src/browser/providers/cloakbrowser.js.map +0 -1
  2016. package/dist/src/browser/providers/extension-ws-acquire.js.map +0 -1
  2017. package/dist/src/browser/providers/extension.js.map +0 -1
  2018. package/dist/src/browser/providers/playwright-doctor.js.map +0 -1
  2019. package/dist/src/browser/providers/playwright-install.js.map +0 -1
  2020. package/dist/src/browser/readiness.js.map +0 -1
  2021. package/dist/src/browser/schemas.js.map +0 -1
  2022. package/dist/src/browser/session-lifecycle.js.map +0 -1
  2023. package/dist/src/browser/snapshot-helpers.js.map +0 -1
  2024. package/dist/src/browser/stealth.js.map +0 -1
  2025. package/dist/src/browser/url-policy.js.map +0 -1
  2026. package/dist/src/capabilities/store-connector.js.map +0 -1
  2027. package/dist/src/channels/attachments/attachment-classifiers.js.map +0 -1
  2028. package/dist/src/channels/attachments/inbound-persist.js.map +0 -1
  2029. package/dist/src/channels/attachments/inbound-types.js.map +0 -1
  2030. package/dist/src/channels/attachments/outbound-tts-persist.js.map +0 -1
  2031. package/dist/src/channels/attachments/voice-stt-webchat.js.map +0 -1
  2032. package/dist/src/channels/catalog/channel-catalog-service.js.map +0 -1
  2033. package/dist/src/channels/config-helpers.js.map +0 -1
  2034. package/dist/src/channels/envelope-timestamp.js.map +0 -1
  2035. package/dist/src/channels/exec-approval-runtime.js.map +0 -1
  2036. package/dist/src/channels/health-monitor.js.map +0 -1
  2037. package/dist/src/channels/heartbeat-scheduler.js.map +0 -1
  2038. package/dist/src/channels/internal-outbound.js.map +0 -1
  2039. package/dist/src/channels/lifecycle-supervisor.js.map +0 -1
  2040. package/dist/src/channels/manager.js.map +0 -1
  2041. package/dist/src/channels/media.js.map +0 -1
  2042. package/dist/src/channels/outbound/deliver.js.map +0 -1
  2043. package/dist/src/channels/outbound/normalize.js.map +0 -1
  2044. package/dist/src/channels/outbound/persist-store.js.map +0 -1
  2045. package/dist/src/channels/outbound/queue.js.map +0 -1
  2046. package/dist/src/channels/outbound-sender.js.map +0 -1
  2047. package/dist/src/channels/pairing/allow-from-file.js.map +0 -1
  2048. package/dist/src/channels/pairing/approve-cli.js.map +0 -1
  2049. package/dist/src/channels/pairing/pairing-challenge.js.map +0 -1
  2050. package/dist/src/channels/pairing/pairing-constants.js.map +0 -1
  2051. package/dist/src/channels/pairing/pairing-events.js.map +0 -1
  2052. package/dist/src/channels/pairing/pairing-messages.js.map +0 -1
  2053. package/dist/src/channels/pairing/pairing-service.js.map +0 -1
  2054. package/dist/src/channels/pairing/pairing-store-adapter.js.map +0 -1
  2055. package/dist/src/channels/pairing/pairing-store.js.map +0 -1
  2056. package/dist/src/channels/pairing/paths.js.map +0 -1
  2057. package/dist/src/channels/pairing/preseed-allow-from.js.map +0 -1
  2058. package/dist/src/channels/pipeline.js.map +0 -1
  2059. package/dist/src/channels/plugin-registry.js.map +0 -1
  2060. package/dist/src/channels/plugins/registry.js.map +0 -1
  2061. package/dist/src/channels/restart-policy.js.map +0 -1
  2062. package/dist/src/channels/security-helpers.js.map +0 -1
  2063. package/dist/src/channels/security.js.map +0 -1
  2064. package/dist/src/channels/setup-wizard-discovery.js.map +0 -1
  2065. package/dist/src/chat-commands/agent-edit.js.map +0 -1
  2066. package/dist/src/chat-commands/builtins/config.js.map +0 -1
  2067. package/dist/src/chat-commands/builtins/context.js.map +0 -1
  2068. package/dist/src/chat-commands/builtins/goal.js.map +0 -1
  2069. package/dist/src/chat-commands/builtins/model.js.map +0 -1
  2070. package/dist/src/chat-commands/builtins/review.js.map +0 -1
  2071. package/dist/src/chat-commands/builtins/session.js.map +0 -1
  2072. package/dist/src/chat-commands/builtins/skill.js.map +0 -1
  2073. package/dist/src/chat-commands/builtins/subgoal.js.map +0 -1
  2074. package/dist/src/chat-commands/builtins/system.js.map +0 -1
  2075. package/dist/src/chat-commands/builtins/thinking.js.map +0 -1
  2076. package/dist/src/chat-commands/builtins/tts.js.map +0 -1
  2077. package/dist/src/chat-commands/builtins/workflow.js.map +0 -1
  2078. package/dist/src/chat-commands/command-parse.js.map +0 -1
  2079. package/dist/src/chat-commands/config-paths.js.map +0 -1
  2080. package/dist/src/chat-commands/config-value.js.map +0 -1
  2081. package/dist/src/chat-commands/context.js.map +0 -1
  2082. package/dist/src/chat-commands/format-output.js.map +0 -1
  2083. package/dist/src/chat-commands/index.js.map +0 -1
  2084. package/dist/src/chat-commands/processor.js.map +0 -1
  2085. package/dist/src/chat-commands/registry.js.map +0 -1
  2086. package/dist/src/chat-commands/session-key.js.map +0 -1
  2087. package/dist/src/cli/argv-invocation.js.map +0 -1
  2088. package/dist/src/cli/argv.js.map +0 -1
  2089. package/dist/src/cli/bin.js.map +0 -1
  2090. package/dist/src/cli/cli-log-level-preset.js.map +0 -1
  2091. package/dist/src/cli/command-catalog.js.map +0 -1
  2092. package/dist/src/cli/command-loaders.js.map +0 -1
  2093. package/dist/src/cli/command-manifest.js.map +0 -1
  2094. package/dist/src/cli/command-path-matches.js.map +0 -1
  2095. package/dist/src/cli/command-path-policy.js.map +0 -1
  2096. package/dist/src/cli/command-startup-policy.js.map +0 -1
  2097. package/dist/src/cli/commands/agent/interactive.js.map +0 -1
  2098. package/dist/src/cli/commands/agent/sessions.js.map +0 -1
  2099. package/dist/src/cli/commands/agent/stream-renderer.js.map +0 -1
  2100. package/dist/src/cli/commands/agent.js.map +0 -1
  2101. package/dist/src/cli/commands/agents.js.map +0 -1
  2102. package/dist/src/cli/commands/auth.js.map +0 -1
  2103. package/dist/src/cli/commands/browser-cli-helpers.js.map +0 -1
  2104. package/dist/src/cli/commands/browser.js.map +0 -1
  2105. package/dist/src/cli/commands/channels.js.map +0 -1
  2106. package/dist/src/cli/commands/config.js.map +0 -1
  2107. package/dist/src/cli/commands/connectors.js.map +0 -1
  2108. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +0 -1
  2109. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +0 -1
  2110. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +0 -1
  2111. package/dist/src/cli/commands/doctor/checks/config-health.js.map +0 -1
  2112. package/dist/src/cli/commands/doctor/checks/database-schema.js.map +0 -1
  2113. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +0 -1
  2114. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +0 -1
  2115. package/dist/src/cli/commands/doctor/checks/migrations.js.map +0 -1
  2116. package/dist/src/cli/commands/doctor/checks/node-version.js.map +0 -1
  2117. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +0 -1
  2118. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +0 -1
  2119. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +0 -1
  2120. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +0 -1
  2121. package/dist/src/cli/commands/doctor/checks/version-check.js.map +0 -1
  2122. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +0 -1
  2123. package/dist/src/cli/commands/doctor/flow.js.map +0 -1
  2124. package/dist/src/cli/commands/doctor/format.js.map +0 -1
  2125. package/dist/src/cli/commands/doctor/index.js.map +0 -1
  2126. package/dist/src/cli/commands/extension-create.js.map +0 -1
  2127. package/dist/src/cli/commands/extension-dev.js.map +0 -1
  2128. package/dist/src/cli/commands/extension-marketplace.js.map +0 -1
  2129. package/dist/src/cli/commands/extension-pack.js.map +0 -1
  2130. package/dist/src/cli/commands/extension.js.map +0 -1
  2131. package/dist/src/cli/commands/gateway/call.js.map +0 -1
  2132. package/dist/src/cli/commands/gateway/health.js.map +0 -1
  2133. package/dist/src/cli/commands/gateway/lifecycle-core.js.map +0 -1
  2134. package/dist/src/cli/commands/gateway/lifecycle.js.map +0 -1
  2135. package/dist/src/cli/commands/gateway/logs.js.map +0 -1
  2136. package/dist/src/cli/commands/gateway/probe.js.map +0 -1
  2137. package/dist/src/cli/commands/gateway/restart-health.js.map +0 -1
  2138. package/dist/src/cli/commands/gateway/restart.js.map +0 -1
  2139. package/dist/src/cli/commands/gateway/run-foreground.js.map +0 -1
  2140. package/dist/src/cli/commands/gateway/service.js.map +0 -1
  2141. package/dist/src/cli/commands/gateway/shared.js.map +0 -1
  2142. package/dist/src/cli/commands/gateway/status.js.map +0 -1
  2143. package/dist/src/cli/commands/gateway/stop.js.map +0 -1
  2144. package/dist/src/cli/commands/gateway/subcommands.js.map +0 -1
  2145. package/dist/src/cli/commands/gateway/token.js.map +0 -1
  2146. package/dist/src/cli/commands/gateway-ssh-tunnel.js.map +0 -1
  2147. package/dist/src/cli/commands/gateway.js.map +0 -1
  2148. package/dist/src/cli/commands/goal.js.map +0 -1
  2149. package/dist/src/cli/commands/image.js.map +0 -1
  2150. package/dist/src/cli/commands/init.js.map +0 -1
  2151. package/dist/src/cli/commands/logs.js.map +0 -1
  2152. package/dist/src/cli/commands/models.js.map +0 -1
  2153. package/dist/src/cli/commands/onboard/channels/index.js.map +0 -1
  2154. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js.map +0 -1
  2155. package/dist/src/cli/commands/onboard/channels/registry.js.map +0 -1
  2156. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js.map +0 -1
  2157. package/dist/src/cli/commands/onboard/gateway.js.map +0 -1
  2158. package/dist/src/cli/commands/onboard/model.js.map +0 -1
  2159. package/dist/src/cli/commands/onboard.js.map +0 -1
  2160. package/dist/src/cli/commands/profile.js.map +0 -1
  2161. package/dist/src/cli/commands/project.js.map +0 -1
  2162. package/dist/src/cli/commands/providers.js.map +0 -1
  2163. package/dist/src/cli/commands/resume.js.map +0 -1
  2164. package/dist/src/cli/commands/search.js.map +0 -1
  2165. package/dist/src/cli/commands/session/actions.js.map +0 -1
  2166. package/dist/src/cli/commands/session/utils.js.map +0 -1
  2167. package/dist/src/cli/commands/session.js.map +0 -1
  2168. package/dist/src/cli/commands/setup-shared/output.js.map +0 -1
  2169. package/dist/src/cli/commands/setup-shared/prompts.js.map +0 -1
  2170. package/dist/src/cli/commands/setup-shared/runner.js.map +0 -1
  2171. package/dist/src/cli/commands/setup-shared/types.js.map +0 -1
  2172. package/dist/src/cli/commands/setup.js.map +0 -1
  2173. package/dist/src/cli/commands/skills-test.js.map +0 -1
  2174. package/dist/src/cli/commands/skills.js.map +0 -1
  2175. package/dist/src/cli/commands/tailscale.js.map +0 -1
  2176. package/dist/src/cli/commands/tui-runner.js.map +0 -1
  2177. package/dist/src/cli/commands/tui.js.map +0 -1
  2178. package/dist/src/cli/commands/tunnel.js.map +0 -1
  2179. package/dist/src/cli/commands/update.js.map +0 -1
  2180. package/dist/src/cli/commands/voice.js.map +0 -1
  2181. package/dist/src/cli/context.js.map +0 -1
  2182. package/dist/src/cli/extension-cli-register.js.map +0 -1
  2183. package/dist/src/cli/gateway-run-argv.js.map +0 -1
  2184. package/dist/src/cli/gateway-run-fast-path.js.map +0 -1
  2185. package/dist/src/cli/index.js.map +0 -1
  2186. package/dist/src/cli/registry.js.map +0 -1
  2187. package/dist/src/cli/templates.js.map +0 -1
  2188. package/dist/src/cli/utils/colors.js.map +0 -1
  2189. package/dist/src/cli/utils/gateway-client-options.js.map +0 -1
  2190. package/dist/src/cli/utils/gateway-client.js.map +0 -1
  2191. package/dist/src/cli/utils/init-workspace-core.js.map +0 -1
  2192. package/dist/src/cli/utils/init-workspace.js.map +0 -1
  2193. package/dist/src/cli/utils/oauth-login.js.map +0 -1
  2194. package/dist/src/cli/utils/oauth-providers.js.map +0 -1
  2195. package/dist/src/cli/utils/session.js.map +0 -1
  2196. package/dist/src/commands/agents.config.js.map +0 -1
  2197. package/dist/src/config/agent-profile.js.map +0 -1
  2198. package/dist/src/config/agent-typed-models.js.map +0 -1
  2199. package/dist/src/config/commands.flags.js.map +0 -1
  2200. package/dist/src/config/default-model.js.map +0 -1
  2201. package/dist/src/config/diff.js.map +0 -1
  2202. package/dist/src/config/gateway-bind.js.map +0 -1
  2203. package/dist/src/config/index.js.map +0 -1
  2204. package/dist/src/config/loader.js.map +0 -1
  2205. package/dist/src/config/mcp-config-normalize.js.map +0 -1
  2206. package/dist/src/config/model-input.js.map +0 -1
  2207. package/dist/src/config/models-json.js.map +0 -1
  2208. package/dist/src/config/paths-state.js.map +0 -1
  2209. package/dist/src/config/paths.js.map +0 -1
  2210. package/dist/src/config/profile.js.map +0 -1
  2211. package/dist/src/config/public-url.js.map +0 -1
  2212. package/dist/src/config/reload.js.map +0 -1
  2213. package/dist/src/config/resolve-config-value.js.map +0 -1
  2214. package/dist/src/config/rules.js.map +0 -1
  2215. package/dist/src/config/runtime-overrides.js.map +0 -1
  2216. package/dist/src/config/schema.js.map +0 -1
  2217. package/dist/src/config/validate-channel-configs.js.map +0 -1
  2218. package/dist/src/config/voice.js.map +0 -1
  2219. package/dist/src/config/web-patch.js.map +0 -1
  2220. package/dist/src/config/workspace-defaults.js.map +0 -1
  2221. package/dist/src/config/workspace-dirs.js.map +0 -1
  2222. package/dist/src/config/workspace-path-helpers.js.map +0 -1
  2223. package/dist/src/config/workspace-path.js.map +0 -1
  2224. package/dist/src/connectors/approval.js.map +0 -1
  2225. package/dist/src/connectors/auth-provider-registry.js.map +0 -1
  2226. package/dist/src/connectors/builtin-catalog.js.map +0 -1
  2227. package/dist/src/connectors/catalog.js.map +0 -1
  2228. package/dist/src/connectors/composio-catalog.js.map +0 -1
  2229. package/dist/src/connectors/composio-logo.js.map +0 -1
  2230. package/dist/src/connectors/composio-sessions.js.map +0 -1
  2231. package/dist/src/connectors/composio-triggers.js.map +0 -1
  2232. package/dist/src/connectors/composio.js.map +0 -1
  2233. package/dist/src/connectors/connector-memory-sync.js.map +0 -1
  2234. package/dist/src/connectors/health.js.map +0 -1
  2235. package/dist/src/connectors/install.js.map +0 -1
  2236. package/dist/src/connectors/instances.js.map +0 -1
  2237. package/dist/src/connectors/integration-strategy.js.map +0 -1
  2238. package/dist/src/connectors/lifecycle.js.map +0 -1
  2239. package/dist/src/connectors/materialize.js.map +0 -1
  2240. package/dist/src/connectors/policy.js.map +0 -1
  2241. package/dist/src/connectors/providers.js.map +0 -1
  2242. package/dist/src/connectors/registries/modelscope.js.map +0 -1
  2243. package/dist/src/connectors/registries/official-mcp.js.map +0 -1
  2244. package/dist/src/connectors/registries/search.js.map +0 -1
  2245. package/dist/src/connectors/registries/smithery.js.map +0 -1
  2246. package/dist/src/connectors/runtime-adapter-registry.js.map +0 -1
  2247. package/dist/src/connectors/secret-store.js.map +0 -1
  2248. package/dist/src/connectors/setup-secrets.js.map +0 -1
  2249. package/dist/src/connectors/supervisor.js.map +0 -1
  2250. package/dist/src/connectors/usage.js.map +0 -1
  2251. package/dist/src/connectors/workflow-preflight.js.map +0 -1
  2252. package/dist/src/daemon/constants.js.map +0 -1
  2253. package/dist/src/daemon/install-plan.js.map +0 -1
  2254. package/dist/src/daemon/launchd.js.map +0 -1
  2255. package/dist/src/daemon/schtasks.js.map +0 -1
  2256. package/dist/src/daemon/service-audit.js.map +0 -1
  2257. package/dist/src/daemon/service.js.map +0 -1
  2258. package/dist/src/daemon/systemd.js.map +0 -1
  2259. package/dist/src/document-understanding/extract.js.map +0 -1
  2260. package/dist/src/errors/index.js.map +0 -1
  2261. package/dist/src/extensions/activation-context.js.map +0 -1
  2262. package/dist/src/extensions/activation-planner.js.map +0 -1
  2263. package/dist/src/extensions/api.js.map +0 -1
  2264. package/dist/src/extensions/bundle-mcp.js.map +0 -1
  2265. package/dist/src/extensions/bundled-extension-activation.js.map +0 -1
  2266. package/dist/src/extensions/diagnostics.js.map +0 -1
  2267. package/dist/src/extensions/discover-extensions.js.map +0 -1
  2268. package/dist/src/extensions/engine-check.js.map +0 -1
  2269. package/dist/src/extensions/extension-metadata-snapshot.js.map +0 -1
  2270. package/dist/src/extensions/extension-registry-impl.js.map +0 -1
  2271. package/dist/src/extensions/health.js.map +0 -1
  2272. package/dist/src/extensions/hooks.js.map +0 -1
  2273. package/dist/src/extensions/index.js.map +0 -1
  2274. package/dist/src/extensions/install-transaction.js.map +0 -1
  2275. package/dist/src/extensions/install.js.map +0 -1
  2276. package/dist/src/extensions/loader.js.map +0 -1
  2277. package/dist/src/extensions/lockfile.js.map +0 -1
  2278. package/dist/src/extensions/manifest-registry.js.map +0 -1
  2279. package/dist/src/extensions/marketplace.js.map +0 -1
  2280. package/dist/src/extensions/media-provider-contracts.js.map +0 -1
  2281. package/dist/src/extensions/normalize-manifest.js.map +0 -1
  2282. package/dist/src/extensions/onboard-helpers.js.map +0 -1
  2283. package/dist/src/extensions/package-contract.js.map +0 -1
  2284. package/dist/src/extensions/sdk/channel-entry.js.map +0 -1
  2285. package/dist/src/extensions/sdk/channel-helpers.js.map +0 -1
  2286. package/dist/src/extensions/sdk/index.js.map +0 -1
  2287. package/dist/src/extensions/sdk/lazy.js.map +0 -1
  2288. package/dist/src/extensions/sdk/testing.js.map +0 -1
  2289. package/dist/src/extensions/security.js.map +0 -1
  2290. package/dist/src/extensions/slots.js.map +0 -1
  2291. package/dist/src/extensions/speech-provider-contracts.js.map +0 -1
  2292. package/dist/src/extensions/store-zip-limits.js.map +0 -1
  2293. package/dist/src/extensions/typed-event-bus.js.map +0 -1
  2294. package/dist/src/extensions/types/hooks.js.map +0 -1
  2295. package/dist/src/extensions/types/providers.js.map +0 -1
  2296. package/dist/src/extensions/update.js.map +0 -1
  2297. package/dist/src/extensions/when-context.js.map +0 -1
  2298. package/dist/src/extensions/when-expression.js.map +0 -1
  2299. package/dist/src/gateway/agent-builtin-tools.js.map +0 -1
  2300. package/dist/src/gateway/agent-run-relay.js.map +0 -1
  2301. package/dist/src/gateway/agents-admin.js.map +0 -1
  2302. package/dist/src/gateway/auth.js.map +0 -1
  2303. package/dist/src/gateway/capability-presets-admin.js.map +0 -1
  2304. package/dist/src/gateway/chat-limits.js.map +0 -1
  2305. package/dist/src/gateway/chat-stream/mapper.js.map +0 -1
  2306. package/dist/src/gateway/clarify-bridge.js.map +0 -1
  2307. package/dist/src/gateway/clarify-runtime.js.map +0 -1
  2308. package/dist/src/gateway/client-ip.js.map +0 -1
  2309. package/dist/src/gateway/config-tools-web.js.map +0 -1
  2310. package/dist/src/gateway/credential.js.map +0 -1
  2311. package/dist/src/gateway/discovery/mdns.js.map +0 -1
  2312. package/dist/src/gateway/dreaming-automation-reconciler.js.map +0 -1
  2313. package/dist/src/gateway/ensure-network-cors.js.map +0 -1
  2314. package/dist/src/gateway/file-path-classifier.js.map +0 -1
  2315. package/dist/src/gateway/file-reference-registry.js.map +0 -1
  2316. package/dist/src/gateway/global-defaults-admin.js.map +0 -1
  2317. package/dist/src/gateway/heartbeat/service.js.map +0 -1
  2318. package/dist/src/gateway/hono/app.js.map +0 -1
  2319. package/dist/src/gateway/hono/lib/agent-model.js.map +0 -1
  2320. package/dist/src/gateway/hono/lib/config-payload.js.map +0 -1
  2321. package/dist/src/gateway/hono/lib/extension-assets.js.map +0 -1
  2322. package/dist/src/gateway/hono/lib/extension-store.js.map +0 -1
  2323. package/dist/src/gateway/hono/lib/mask-secret-length.js.map +0 -1
  2324. package/dist/src/gateway/hono/lib/route-logger.js.map +0 -1
  2325. package/dist/src/gateway/hono/lib/safe-providers-config.js.map +0 -1
  2326. package/dist/src/gateway/hono/lib/safe-voice-config.js.map +0 -1
  2327. package/dist/src/gateway/hono/lib/startup-unavailable.js.map +0 -1
  2328. package/dist/src/gateway/hono/lib/static-ui.js.map +0 -1
  2329. package/dist/src/gateway/hono/middleware/auth.js.map +0 -1
  2330. package/dist/src/gateway/hono/middleware/log-context.js.map +0 -1
  2331. package/dist/src/gateway/hono/middleware/logger.js.map +0 -1
  2332. package/dist/src/gateway/hono/middleware/route-errors.js.map +0 -1
  2333. package/dist/src/gateway/hono/middleware/scopes.js.map +0 -1
  2334. package/dist/src/gateway/hono/middleware/strict-rate-limit.js.map +0 -1
  2335. package/dist/src/gateway/hono/oauth-async.js.map +0 -1
  2336. package/dist/src/gateway/hono/oauth.js.map +0 -1
  2337. package/dist/src/gateway/hono/routes/activity.js.map +0 -1
  2338. package/dist/src/gateway/hono/routes/agent-stream.js.map +0 -1
  2339. package/dist/src/gateway/hono/routes/agents.js.map +0 -1
  2340. package/dist/src/gateway/hono/routes/ai-assist.js.map +0 -1
  2341. package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +0 -1
  2342. package/dist/src/gateway/hono/routes/browser-install.js.map +0 -1
  2343. package/dist/src/gateway/hono/routes/browser.js.map +0 -1
  2344. package/dist/src/gateway/hono/routes/capabilities.js.map +0 -1
  2345. package/dist/src/gateway/hono/routes/capability-presets.js.map +0 -1
  2346. package/dist/src/gateway/hono/routes/channels.js.map +0 -1
  2347. package/dist/src/gateway/hono/routes/commands-skills.js.map +0 -1
  2348. package/dist/src/gateway/hono/routes/config-patch/agents.js.map +0 -1
  2349. package/dist/src/gateway/hono/routes/config-patch/channels.js.map +0 -1
  2350. package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +0 -1
  2351. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +0 -1
  2352. package/dist/src/gateway/hono/routes/config-patch/result.js.map +0 -1
  2353. package/dist/src/gateway/hono/routes/config.js.map +0 -1
  2354. package/dist/src/gateway/hono/routes/connectors.js.map +0 -1
  2355. package/dist/src/gateway/hono/routes/doctor.js.map +0 -1
  2356. package/dist/src/gateway/hono/routes/dreaming.js.map +0 -1
  2357. package/dist/src/gateway/hono/routes/exposure.js.map +0 -1
  2358. package/dist/src/gateway/hono/routes/extension-gateway.js.map +0 -1
  2359. package/dist/src/gateway/hono/routes/global-defaults.js.map +0 -1
  2360. package/dist/src/gateway/hono/routes/goals.js.map +0 -1
  2361. package/dist/src/gateway/hono/routes/home.js.map +0 -1
  2362. package/dist/src/gateway/hono/routes/host-fs.js.map +0 -1
  2363. package/dist/src/gateway/hono/routes/index.js.map +0 -1
  2364. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +0 -1
  2365. package/dist/src/gateway/hono/routes/lazy-fallback.js.map +0 -1
  2366. package/dist/src/gateway/hono/routes/local-apps.js.map +0 -1
  2367. package/dist/src/gateway/hono/routes/logs.js.map +0 -1
  2368. package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
  2369. package/dist/src/gateway/hono/routes/media.js.map +0 -1
  2370. package/dist/src/gateway/hono/routes/memory.js.map +0 -1
  2371. package/dist/src/gateway/hono/routes/migrations.js.map +0 -1
  2372. package/dist/src/gateway/hono/routes/mobile.js.map +0 -1
  2373. package/dist/src/gateway/hono/routes/models.js.map +0 -1
  2374. package/dist/src/gateway/hono/routes/notes.js.map +0 -1
  2375. package/dist/src/gateway/hono/routes/projects.js.map +0 -1
  2376. package/dist/src/gateway/hono/routes/public-gateway.js.map +0 -1
  2377. package/dist/src/gateway/hono/routes/search.js.map +0 -1
  2378. package/dist/src/gateway/hono/routes/sessions.js.map +0 -1
  2379. package/dist/src/gateway/hono/routes/shares.js.map +0 -1
  2380. package/dist/src/gateway/hono/routes/site-shares.js.map +0 -1
  2381. package/dist/src/gateway/hono/routes/status.js.map +0 -1
  2382. package/dist/src/gateway/hono/routes/tui.js.map +0 -1
  2383. package/dist/src/gateway/hono/routes/tunnel.js.map +0 -1
  2384. package/dist/src/gateway/hono/routes/update.js.map +0 -1
  2385. package/dist/src/gateway/hono/routes/voice.js.map +0 -1
  2386. package/dist/src/gateway/hono/routes/work-discovery.js.map +0 -1
  2387. package/dist/src/gateway/hono/routes/workflows.js.map +0 -1
  2388. package/dist/src/gateway/hono/routes/workspace.js.map +0 -1
  2389. package/dist/src/gateway/hono/routes/you.js.map +0 -1
  2390. package/dist/src/gateway/hono/sse-json.js.map +0 -1
  2391. package/dist/src/gateway/hono/sse.js.map +0 -1
  2392. package/dist/src/gateway/host.js.map +0 -1
  2393. package/dist/src/gateway/image-capabilities.js.map +0 -1
  2394. package/dist/src/gateway/listen.js.map +0 -1
  2395. package/dist/src/gateway/lock.js.map +0 -1
  2396. package/dist/src/gateway/ports.js.map +0 -1
  2397. package/dist/src/gateway/protocol.js.map +0 -1
  2398. package/dist/src/gateway/public-url.js.map +0 -1
  2399. package/dist/src/gateway/rate-limit/auth-policy.js.map +0 -1
  2400. package/dist/src/gateway/rate-limit/buckets.js.map +0 -1
  2401. package/dist/src/gateway/rate-limit/env-flags.js.map +0 -1
  2402. package/dist/src/gateway/resolve-channel-connect-defer.js.map +0 -1
  2403. package/dist/src/gateway/resolve-webchat-session-key.js.map +0 -1
  2404. package/dist/src/gateway/respawn.js.map +0 -1
  2405. package/dist/src/gateway/run-loop.js.map +0 -1
  2406. package/dist/src/gateway/runtime-config.js.map +0 -1
  2407. package/dist/src/gateway/security/audit.js.map +0 -1
  2408. package/dist/src/gateway/security/csp.js.map +0 -1
  2409. package/dist/src/gateway/security/dangerous-tools.js.map +0 -1
  2410. package/dist/src/gateway/security/external-content.js.map +0 -1
  2411. package/dist/src/gateway/security/known-weak-secrets.js.map +0 -1
  2412. package/dist/src/gateway/security/loopback.js.map +0 -1
  2413. package/dist/src/gateway/security/operator-scopes.js.map +0 -1
  2414. package/dist/src/gateway/security/origin-check.js.map +0 -1
  2415. package/dist/src/gateway/security/preauth-connection-budget.js.map +0 -1
  2416. package/dist/src/gateway/security/secret-equal.js.map +0 -1
  2417. package/dist/src/gateway/server-tailscale.js.map +0 -1
  2418. package/dist/src/gateway/server.js.map +0 -1
  2419. package/dist/src/gateway/service/agent-runner.js.map +0 -1
  2420. package/dist/src/gateway/service/config-coordinator.js.map +0 -1
  2421. package/dist/src/gateway/service/marketplace-service.js.map +0 -1
  2422. package/dist/src/gateway/service/run-gateway-agent.js.map +0 -1
  2423. package/dist/src/gateway/service/session-chat-ids.js.map +0 -1
  2424. package/dist/src/gateway/service/sessions-api.js.map +0 -1
  2425. package/dist/src/gateway/service/sse-hub.js.map +0 -1
  2426. package/dist/src/gateway/service.js.map +0 -1
  2427. package/dist/src/gateway/session-reset-service.js.map +0 -1
  2428. package/dist/src/gateway/startup-readiness.js.map +0 -1
  2429. package/dist/src/gateway/startup-trace.js.map +0 -1
  2430. package/dist/src/gateway/tailscale-auth.js.map +0 -1
  2431. package/dist/src/gateway/tailscale-lifecycle.js.map +0 -1
  2432. package/dist/src/gateway/tls-server.js.map +0 -1
  2433. package/dist/src/gateway/trusted-proxy.js.map +0 -1
  2434. package/dist/src/gateway/user-turn-input.js.map +0 -1
  2435. package/dist/src/gateway/workspace-editor-path.js.map +0 -1
  2436. package/dist/src/gateway/workspace-file-search.js.map +0 -1
  2437. package/dist/src/gateway/workspace-fs-file-list.js.map +0 -1
  2438. package/dist/src/gateway/workspace-heartbeat-path.js.map +0 -1
  2439. package/dist/src/gateway/workspace-ripgrep.js.map +0 -1
  2440. package/dist/src/gateway/ws-security.js.map +0 -1
  2441. package/dist/src/generated/bundled-image-generation-providers.js.map +0 -1
  2442. package/dist/src/goals/goal-contract-draft.js.map +0 -1
  2443. package/dist/src/goals/goal-evidence-review.js.map +0 -1
  2444. package/dist/src/goals/goal-notifications.js.map +0 -1
  2445. package/dist/src/goals/goal-queue-store.js.map +0 -1
  2446. package/dist/src/goals/goal-runner.js.map +0 -1
  2447. package/dist/src/goals/goal-service.js.map +0 -1
  2448. package/dist/src/goals/goal-store.js.map +0 -1
  2449. package/dist/src/goals/goal-workflow-judge.js.map +0 -1
  2450. package/dist/src/heartbeat/active-hours.js.map +0 -1
  2451. package/dist/src/heartbeat/content-check.js.map +0 -1
  2452. package/dist/src/heartbeat/event-prompt.js.map +0 -1
  2453. package/dist/src/heartbeat/tokens.js.map +0 -1
  2454. package/dist/src/heartbeat/wake.js.map +0 -1
  2455. package/dist/src/i18n/format.js.map +0 -1
  2456. package/dist/src/i18n/goals-bundle.js.map +0 -1
  2457. package/dist/src/i18n/locale.js.map +0 -1
  2458. package/dist/src/i18n/locales/goals.en.js.map +0 -1
  2459. package/dist/src/i18n/locales/goals.zh.js.map +0 -1
  2460. package/dist/src/i18n/locales/share-tool.en.js.map +0 -1
  2461. package/dist/src/i18n/locales/share-tool.zh.js.map +0 -1
  2462. package/dist/src/i18n/share-tool-bundle.js.map +0 -1
  2463. package/dist/src/index.js.map +0 -1
  2464. package/dist/src/infra/brew.js.map +0 -1
  2465. package/dist/src/infra/bus/queue.js.map +0 -1
  2466. package/dist/src/infra/debounce.js.map +0 -1
  2467. package/dist/src/infra/exec.js.map +0 -1
  2468. package/dist/src/infra/gateway-process-argv.js.map +0 -1
  2469. package/dist/src/infra/gateway-processes.js.map +0 -1
  2470. package/dist/src/infra/host-env-security-policy.js.map +0 -1
  2471. package/dist/src/infra/host-env-security.js.map +0 -1
  2472. package/dist/src/infra/http-proxy-env.js.map +0 -1
  2473. package/dist/src/infra/is-main.js.map +0 -1
  2474. package/dist/src/infra/json-utf8-bytes.js.map +0 -1
  2475. package/dist/src/infra/node-sqlite.js.map +0 -1
  2476. package/dist/src/infra/package-json.js.map +0 -1
  2477. package/dist/src/infra/package-update-steps.js.map +0 -1
  2478. package/dist/src/infra/path-env.js.map +0 -1
  2479. package/dist/src/infra/path-prepend.js.map +0 -1
  2480. package/dist/src/infra/ports.js.map +0 -1
  2481. package/dist/src/infra/rate-limit/failure-limiter.js.map +0 -1
  2482. package/dist/src/infra/rate-limit/keyed-store.js.map +0 -1
  2483. package/dist/src/infra/rate-limit/rate-limiter.js.map +0 -1
  2484. package/dist/src/infra/restart.js.map +0 -1
  2485. package/dist/src/infra/retry.js.map +0 -1
  2486. package/dist/src/infra/run-command.js.map +0 -1
  2487. package/dist/src/infra/sqlite-errors.js.map +0 -1
  2488. package/dist/src/infra/ssh-tunnel.js.map +0 -1
  2489. package/dist/src/infra/stable-node-path.js.map +0 -1
  2490. package/dist/src/infra/tailscale.js.map +0 -1
  2491. package/dist/src/infra/undici-fetch.js.map +0 -1
  2492. package/dist/src/infra/unhandled-rejections.js.map +0 -1
  2493. package/dist/src/infra/update-channels.js.map +0 -1
  2494. package/dist/src/infra/update-check.js.map +0 -1
  2495. package/dist/src/infra/update-global.js.map +0 -1
  2496. package/dist/src/infra/update-lock.js.map +0 -1
  2497. package/dist/src/infra/update-log.js.map +0 -1
  2498. package/dist/src/infra/update-restart.js.map +0 -1
  2499. package/dist/src/infra/update-runner.js.map +0 -1
  2500. package/dist/src/infra/update-startup.js.map +0 -1
  2501. package/dist/src/infra/warning-filter.js.map +0 -1
  2502. package/dist/src/infra/write-file-atomic.js.map +0 -1
  2503. package/dist/src/knowledge/connected-knowledge-pipeline.js.map +0 -1
  2504. package/dist/src/knowledge/coordinator.js.map +0 -1
  2505. package/dist/src/knowledge/ingestion-service.js.map +0 -1
  2506. package/dist/src/local-apps/acceptance.js.map +0 -1
  2507. package/dist/src/local-apps/preview-runtime-bridge.js.map +0 -1
  2508. package/dist/src/local-apps/runtime-entry.js.map +0 -1
  2509. package/dist/src/local-apps/scaffold.js.map +0 -1
  2510. package/dist/src/local-apps/service.js.map +0 -1
  2511. package/dist/src/local-apps/store.js.map +0 -1
  2512. package/dist/src/markdown/chunk.js.map +0 -1
  2513. package/dist/src/markdown/code-spans.js.map +0 -1
  2514. package/dist/src/markdown/fences.js.map +0 -1
  2515. package/dist/src/markdown/frontmatter.js.map +0 -1
  2516. package/dist/src/markdown/ir.js.map +0 -1
  2517. package/dist/src/markdown/render.js.map +0 -1
  2518. package/dist/src/markdown/tables.js.map +0 -1
  2519. package/dist/src/mcp/channel-bridge.js.map +0 -1
  2520. package/dist/src/mcp/channel-server.js.map +0 -1
  2521. package/dist/src/mcp/channel-shared.js.map +0 -1
  2522. package/dist/src/mcp/channel-tools.js.map +0 -1
  2523. package/dist/src/mcp/gateway-http-client.js.map +0 -1
  2524. package/dist/src/media/media-reference.js.map +0 -1
  2525. package/dist/src/media/paths.js.map +0 -1
  2526. package/dist/src/media/session-references.js.map +0 -1
  2527. package/dist/src/media/store.js.map +0 -1
  2528. package/dist/src/media/uri.js.map +0 -1
  2529. package/dist/src/media-shared/http/api-key-rotation.js.map +0 -1
  2530. package/dist/src/media-shared/http/deadline.js.map +0 -1
  2531. package/dist/src/media-shared/http/private-network.js.map +0 -1
  2532. package/dist/src/media-shared/http/provider-http-errors.js.map +0 -1
  2533. package/dist/src/media-shared/http/provider-http.js.map +0 -1
  2534. package/dist/src/media-shared/http/resolve-provider-http-request-config.js.map +0 -1
  2535. package/dist/src/media-shared/http/ssrf-guard.js.map +0 -1
  2536. package/dist/src/media-shared/http/test-helpers/mock-server.js.map +0 -1
  2537. package/dist/src/media-understanding/audio-transcription-runner.js.map +0 -1
  2538. package/dist/src/media-understanding/openai-compatible-audio.js.map +0 -1
  2539. package/dist/src/media-understanding/registry.js.map +0 -1
  2540. package/dist/src/media-understanding/resolve-entries.js.map +0 -1
  2541. package/dist/src/media-understanding/runner.js.map +0 -1
  2542. package/dist/src/migrations/config/default-capability-preset.js.map +0 -1
  2543. package/dist/src/migrations/registry.js.map +0 -1
  2544. package/dist/src/migrations/runner.js.map +0 -1
  2545. package/dist/src/mobile/notification-service.js.map +0 -1
  2546. package/dist/src/mobile/notification-store.js.map +0 -1
  2547. package/dist/src/mobile/notification-types.js.map +0 -1
  2548. package/dist/src/notes/agent-context.js.map +0 -1
  2549. package/dist/src/notes/attachment-ref.js.map +0 -1
  2550. package/dist/src/notes/note-attachment-sync.js.map +0 -1
  2551. package/dist/src/notes/note-index-meta.js.map +0 -1
  2552. package/dist/src/notes/note-markdown.js.map +0 -1
  2553. package/dist/src/notes/paths.js.map +0 -1
  2554. package/dist/src/notes/service.js.map +0 -1
  2555. package/dist/src/notes/store.js.map +0 -1
  2556. package/dist/src/package-version.js.map +0 -1
  2557. package/dist/src/pets/factory.js.map +0 -1
  2558. package/dist/src/pets/manifest.js.map +0 -1
  2559. package/dist/src/pets/validator.js.map +0 -1
  2560. package/dist/src/process/kill-tree.js.map +0 -1
  2561. package/dist/src/project-trust/trust-store.js.map +0 -1
  2562. package/dist/src/projects/automation-bind.js.map +0 -1
  2563. package/dist/src/projects/goal-bind.js.map +0 -1
  2564. package/dist/src/projects/memory-bind.js.map +0 -1
  2565. package/dist/src/projects/project-agent-suggestion.js.map +0 -1
  2566. package/dist/src/projects/project-agent.js.map +0 -1
  2567. package/dist/src/projects/project-kind.js.map +0 -1
  2568. package/dist/src/projects/project-loop.js.map +0 -1
  2569. package/dist/src/projects/project-service.js.map +0 -1
  2570. package/dist/src/projects/project-store.js.map +0 -1
  2571. package/dist/src/projects/session-bind.js.map +0 -1
  2572. package/dist/src/projects/workflow-bind.js.map +0 -1
  2573. package/dist/src/projects/workspace-project.js.map +0 -1
  2574. package/dist/src/projects/workspace.js.map +0 -1
  2575. package/dist/src/providers/auth-runtime/auth-profile-store.js.map +0 -1
  2576. package/dist/src/providers/auth-runtime/is-configured.js.map +0 -1
  2577. package/dist/src/providers/auth-runtime/oauth.js.map +0 -1
  2578. package/dist/src/providers/auth-runtime/resolve-api-key.js.map +0 -1
  2579. package/dist/src/providers/auth-runtime/resolve-auth.js.map +0 -1
  2580. package/dist/src/providers/constants.js.map +0 -1
  2581. package/dist/src/providers/domestic-presets.js.map +0 -1
  2582. package/dist/src/providers/env-keys.js.map +0 -1
  2583. package/dist/src/providers/extension-stream-bridge.js.map +0 -1
  2584. package/dist/src/providers/index.js.map +0 -1
  2585. package/dist/src/providers/model-call.js.map +0 -1
  2586. package/dist/src/providers/model-discovery.js.map +0 -1
  2587. package/dist/src/providers/model-registry.js.map +0 -1
  2588. package/dist/src/providers/model-supplements.js.map +0 -1
  2589. package/dist/src/providers/plugin-registry.js.map +0 -1
  2590. package/dist/src/providers/presentation.js.map +0 -1
  2591. package/dist/src/remote-access/exposure-guards.js.map +0 -1
  2592. package/dist/src/remote-access/exposure-manager.js.map +0 -1
  2593. package/dist/src/review/review-git.js.map +0 -1
  2594. package/dist/src/review/review-types.js.map +0 -1
  2595. package/dist/src/routing/account-id.js.map +0 -1
  2596. package/dist/src/routing/agent-session-key.js.map +0 -1
  2597. package/dist/src/routing/bindings.js.map +0 -1
  2598. package/dist/src/routing/index.js.map +0 -1
  2599. package/dist/src/routing/resolve-route.js.map +0 -1
  2600. package/dist/src/routing/resolve-tui-session-key.js.map +0 -1
  2601. package/dist/src/routing/session-key-utils.js.map +0 -1
  2602. package/dist/src/routing/session-key.js.map +0 -1
  2603. package/dist/src/session/abort-cutoff.js.map +0 -1
  2604. package/dist/src/session/chat-export.js.map +0 -1
  2605. package/dist/src/session/client-history.js.map +0 -1
  2606. package/dist/src/session/compaction-checkpoints.js.map +0 -1
  2607. package/dist/src/session/config-store.js.map +0 -1
  2608. package/dist/src/session/init-session-turn.js.map +0 -1
  2609. package/dist/src/session/lifecycle-timestamps.js.map +0 -1
  2610. package/dist/src/session/load-jsonl-entries.js.map +0 -1
  2611. package/dist/src/session/manager.js.map +0 -1
  2612. package/dist/src/session/patch-metadata.js.map +0 -1
  2613. package/dist/src/session/reset-policy.js.map +0 -1
  2614. package/dist/src/session/reset-triggers.js.map +0 -1
  2615. package/dist/src/session/reset-type.js.map +0 -1
  2616. package/dist/src/session/resolve-session.js.map +0 -1
  2617. package/dist/src/session/session-context-for-llm.js.map +0 -1
  2618. package/dist/src/session/session-id.js.map +0 -1
  2619. package/dist/src/session/session-title.js.map +0 -1
  2620. package/dist/src/session/session-workspace.js.map +0 -1
  2621. package/dist/src/session/store.js.map +0 -1
  2622. package/dist/src/session/stored-rows-to-file-entries.js.map +0 -1
  2623. package/dist/src/session/thinking-resolve.js.map +0 -1
  2624. package/dist/src/session/transcript-events.js.map +0 -1
  2625. package/dist/src/session/transcript-format.js.map +0 -1
  2626. package/dist/src/session/transcript-outline.js.map +0 -1
  2627. package/dist/src/session/transcript-stats.js.map +0 -1
  2628. package/dist/src/session/types.js.map +0 -1
  2629. package/dist/src/session/user-round-delete.js.map +0 -1
  2630. package/dist/src/share/share-audit.js.map +0 -1
  2631. package/dist/src/share/share-auto.js.map +0 -1
  2632. package/dist/src/share/share-config.js.map +0 -1
  2633. package/dist/src/share/share-landing.js.map +0 -1
  2634. package/dist/src/share/share-rate-limit.js.map +0 -1
  2635. package/dist/src/share/share-store.js.map +0 -1
  2636. package/dist/src/share/share-thumbnail.js.map +0 -1
  2637. package/dist/src/share/share-types.js.map +0 -1
  2638. package/dist/src/share/share-url.js.map +0 -1
  2639. package/dist/src/share/share-zip.js.map +0 -1
  2640. package/dist/src/share/site-proxy.js.map +0 -1
  2641. package/dist/src/share/site-share-config.js.map +0 -1
  2642. package/dist/src/share/site-share-router.js.map +0 -1
  2643. package/dist/src/share/site-share-store.js.map +0 -1
  2644. package/dist/src/share/site-share-types.js.map +0 -1
  2645. package/dist/src/share/site-static-serve.js.map +0 -1
  2646. package/dist/src/storage/sqlite/activity-repository.js.map +0 -1
  2647. package/dist/src/storage/sqlite/config-repository.js.map +0 -1
  2648. package/dist/src/storage/sqlite/connection.js.map +0 -1
  2649. package/dist/src/storage/sqlite/connector-repository.js.map +0 -1
  2650. package/dist/src/storage/sqlite/fts.js.map +0 -1
  2651. package/dist/src/storage/sqlite/knowledge-repository.js.map +0 -1
  2652. package/dist/src/storage/sqlite/memory-index-repository.js.map +0 -1
  2653. package/dist/src/storage/sqlite/memory-records-repository.js.map +0 -1
  2654. package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +0 -1
  2655. package/dist/src/storage/sqlite/migrations/discover.js.map +0 -1
  2656. package/dist/src/storage/sqlite/migrations/errors.js.map +0 -1
  2657. package/dist/src/storage/sqlite/migrations/runner.js.map +0 -1
  2658. package/dist/src/storage/sqlite/note-agent-context-repository.js.map +0 -1
  2659. package/dist/src/storage/sqlite/notes-repository.js.map +0 -1
  2660. package/dist/src/storage/sqlite/paths.js.map +0 -1
  2661. package/dist/src/storage/sqlite/row-mappers.js.map +0 -1
  2662. package/dist/src/storage/sqlite/schema-version.js.map +0 -1
  2663. package/dist/src/storage/sqlite/schema.js.map +0 -1
  2664. package/dist/src/storage/sqlite/session-metadata.js.map +0 -1
  2665. package/dist/src/storage/sqlite/session-repository.js.map +0 -1
  2666. package/dist/src/storage/sqlite/transaction.js.map +0 -1
  2667. package/dist/src/storage/sqlite/transcript-repository.js.map +0 -1
  2668. package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +0 -1
  2669. package/dist/src/storage/sqlite/user-trust-repository.js.map +0 -1
  2670. package/dist/src/tui/backends/embedded-backend.js.map +0 -1
  2671. package/dist/src/tui/backends/gateway-sse-backend.js.map +0 -1
  2672. package/dist/src/tui/chat-history.js.map +0 -1
  2673. package/dist/src/tui/clipboard-image.js.map +0 -1
  2674. package/dist/src/tui/clipboard-text.js.map +0 -1
  2675. package/dist/src/tui/components/assistant-message.js.map +0 -1
  2676. package/dist/src/tui/components/bash-execution.js.map +0 -1
  2677. package/dist/src/tui/components/bash-summary.js.map +0 -1
  2678. package/dist/src/tui/components/branch-message-summary.js.map +0 -1
  2679. package/dist/src/tui/components/branch-summary.js.map +0 -1
  2680. package/dist/src/tui/components/chat-log.js.map +0 -1
  2681. package/dist/src/tui/components/compaction-summary.js.map +0 -1
  2682. package/dist/src/tui/components/custom-editor.js.map +0 -1
  2683. package/dist/src/tui/components/custom-message.js.map +0 -1
  2684. package/dist/src/tui/components/dynamic-border.js.map +0 -1
  2685. package/dist/src/tui/components/extension-dialog.js.map +0 -1
  2686. package/dist/src/tui/components/fuzzy-filter.js.map +0 -1
  2687. package/dist/src/tui/components/scoped-models-selector.js.map +0 -1
  2688. package/dist/src/tui/components/searchable-select-list.js.map +0 -1
  2689. package/dist/src/tui/components/session-selector.js.map +0 -1
  2690. package/dist/src/tui/components/settings-selector.js.map +0 -1
  2691. package/dist/src/tui/components/thinking-selector.js.map +0 -1
  2692. package/dist/src/tui/components/tool-execution.js.map +0 -1
  2693. package/dist/src/tui/components/tui-bottom-bar.js.map +0 -1
  2694. package/dist/src/tui/components/tui-header.js.map +0 -1
  2695. package/dist/src/tui/components/user-message.js.map +0 -1
  2696. package/dist/src/tui/components/visual-truncate.js.map +0 -1
  2697. package/dist/src/tui/extension-host/autocomplete.js.map +0 -1
  2698. package/dist/src/tui/extension-host/host.js.map +0 -1
  2699. package/dist/src/tui/extension-host/load-extensions.js.map +0 -1
  2700. package/dist/src/tui/extension-host/runtime-context.js.map +0 -1
  2701. package/dist/src/tui/extension-host/runtime.js.map +0 -1
  2702. package/dist/src/tui/extension-host/surface.js.map +0 -1
  2703. package/dist/src/tui/extension-host/tool-renderers.js.map +0 -1
  2704. package/dist/src/tui/format-tui-hotkeys.js.map +0 -1
  2705. package/dist/src/tui/sse-consumer.js.map +0 -1
  2706. package/dist/src/tui/theme/dark.js.map +0 -1
  2707. package/dist/src/tui/theme/light.js.map +0 -1
  2708. package/dist/src/tui/theme-manager.js.map +0 -1
  2709. package/dist/src/tui/theme.js.map +0 -1
  2710. package/dist/src/tui/tool-summary.js.map +0 -1
  2711. package/dist/src/tui/tui-agent-events.js.map +0 -1
  2712. package/dist/src/tui/tui-command-formatters.js.map +0 -1
  2713. package/dist/src/tui/tui-commands.js.map +0 -1
  2714. package/dist/src/tui/tui-context-usage.js.map +0 -1
  2715. package/dist/src/tui/tui-extension-user-message.js.map +0 -1
  2716. package/dist/src/tui/tui-fd-path.js.map +0 -1
  2717. package/dist/src/tui/tui-file-autocomplete.js.map +0 -1
  2718. package/dist/src/tui/tui-follow-up-queue.js.map +0 -1
  2719. package/dist/src/tui/tui-git-branch.js.map +0 -1
  2720. package/dist/src/tui/tui-keybindings-file.js.map +0 -1
  2721. package/dist/src/tui/tui-lifecycle.js.map +0 -1
  2722. package/dist/src/tui/tui-local-shell.js.map +0 -1
  2723. package/dist/src/tui/tui-model-picker.js.map +0 -1
  2724. package/dist/src/tui/tui-oauth-login.js.map +0 -1
  2725. package/dist/src/tui/tui-overlays.js.map +0 -1
  2726. package/dist/src/tui/tui-picker-overlay.js.map +0 -1
  2727. package/dist/src/tui/tui-run-state.js.map +0 -1
  2728. package/dist/src/tui/tui-run-status-format.js.map +0 -1
  2729. package/dist/src/tui/tui-runtime-hints.js.map +0 -1
  2730. package/dist/src/tui/tui-scoped-models.js.map +0 -1
  2731. package/dist/src/tui/tui-session-actions.js.map +0 -1
  2732. package/dist/src/tui/tui-session-format.js.map +0 -1
  2733. package/dist/src/tui/tui-session-snapshot.js.map +0 -1
  2734. package/dist/src/tui/tui-session-stats.js.map +0 -1
  2735. package/dist/src/tui/tui-settings.js.map +0 -1
  2736. package/dist/src/tui/tui-skills-autocomplete.js.map +0 -1
  2737. package/dist/src/tui/tui-startup-resources.js.map +0 -1
  2738. package/dist/src/tui/tui-startup-text.js.map +0 -1
  2739. package/dist/src/tui/tui-stdio-filter.js.map +0 -1
  2740. package/dist/src/tui/tui-submit.js.map +0 -1
  2741. package/dist/src/tui/tui-suspend.js.map +0 -1
  2742. package/dist/src/tui/tui-timeline-picker.js.map +0 -1
  2743. package/dist/src/tui/tui-timeline.js.map +0 -1
  2744. package/dist/src/tui/tui-tool-diff.js.map +0 -1
  2745. package/dist/src/tui/tui-tool-result.js.map +0 -1
  2746. package/dist/src/tui/tui-transcript-tree-picker.js.map +0 -1
  2747. package/dist/src/tui/tui-transcript-tree.js.map +0 -1
  2748. package/dist/src/tui/tui-types.js.map +0 -1
  2749. package/dist/src/tui/tui-workflow-slash.js.map +0 -1
  2750. package/dist/src/tui/tui.js.map +0 -1
  2751. package/dist/src/tui/xopc-tui-keybindings.js.map +0 -1
  2752. package/dist/src/tunnel/broker-client.js.map +0 -1
  2753. package/dist/src/tunnel/consent.js.map +0 -1
  2754. package/dist/src/tunnel/enable-lan-pairing.js.map +0 -1
  2755. package/dist/src/tunnel/env.js.map +0 -1
  2756. package/dist/src/tunnel/frp-subdomain-host.js.map +0 -1
  2757. package/dist/src/tunnel/frpc-binary.js.map +0 -1
  2758. package/dist/src/tunnel/frpc-config.js.map +0 -1
  2759. package/dist/src/tunnel/frpc-extract.js.map +0 -1
  2760. package/dist/src/tunnel/frpc-process.js.map +0 -1
  2761. package/dist/src/tunnel/gateway-lifecycle.js.map +0 -1
  2762. package/dist/src/tunnel/pair-context.js.map +0 -1
  2763. package/dist/src/tunnel/pair-url.js.map +0 -1
  2764. package/dist/src/tunnel/pairing-rate-limit.js.map +0 -1
  2765. package/dist/src/tunnel/pairing.js.map +0 -1
  2766. package/dist/src/tunnel/tunnel-audit.js.map +0 -1
  2767. package/dist/src/tunnel/tunnel-config.js.map +0 -1
  2768. package/dist/src/tunnel/tunnel-persist.js.map +0 -1
  2769. package/dist/src/tunnel/tunnel-qr.js.map +0 -1
  2770. package/dist/src/tunnel/tunnel-rate-limit.js.map +0 -1
  2771. package/dist/src/tunnel/tunnel-service.js.map +0 -1
  2772. package/dist/src/tunnel/tunnel-state.js.map +0 -1
  2773. package/dist/src/tunnel/well-known.js.map +0 -1
  2774. package/dist/src/user-context/config.js.map +0 -1
  2775. package/dist/src/user-context/import.js.map +0 -1
  2776. package/dist/src/user-context/owner.js.map +0 -1
  2777. package/dist/src/user-context/profile.js.map +0 -1
  2778. package/dist/src/user-context/projection.js.map +0 -1
  2779. package/dist/src/user-context/runtime.js.map +0 -1
  2780. package/dist/src/user-context/source-recommendations.js.map +0 -1
  2781. package/dist/src/user-context/trust-policy.js.map +0 -1
  2782. package/dist/src/utils/global-singleton.js.map +0 -1
  2783. package/dist/src/utils/helpers.js.map +0 -1
  2784. package/dist/src/utils/index.js.map +0 -1
  2785. package/dist/src/utils/is-record.js.map +0 -1
  2786. package/dist/src/utils/logger/audit.js.map +0 -1
  2787. package/dist/src/utils/logger/config.js.map +0 -1
  2788. package/dist/src/utils/logger/context.js.map +0 -1
  2789. package/dist/src/utils/logger/exporters.js.map +0 -1
  2790. package/dist/src/utils/logger/index.js.map +0 -1
  2791. package/dist/src/utils/logger/log-store.js.map +0 -1
  2792. package/dist/src/utils/logger/log-stream.js.map +0 -1
  2793. package/dist/src/utils/logger/pino-record.js.map +0 -1
  2794. package/dist/src/utils/logger/redact.js.map +0 -1
  2795. package/dist/src/utils/logger/rotation.js.map +0 -1
  2796. package/dist/src/utils/logger/shutdown.js.map +0 -1
  2797. package/dist/src/utils/logger/stats.js.map +0 -1
  2798. package/dist/src/utils/logger/streams.js.map +0 -1
  2799. package/dist/src/utils/logger/types.js.map +0 -1
  2800. package/dist/src/utils/logger.js.map +0 -1
  2801. package/dist/src/utils/redact-sensitive-url.js.map +0 -1
  2802. package/dist/src/utils/sanitize-log.js.map +0 -1
  2803. package/dist/src/utils/string-coerce.js.map +0 -1
  2804. package/dist/src/voice/language-profile.js.map +0 -1
  2805. package/dist/src/voice/local/model-files.js.map +0 -1
  2806. package/dist/src/voice/local/model-manager.js.map +0 -1
  2807. package/dist/src/voice/local/models.js.map +0 -1
  2808. package/dist/src/voice/local/runtime-client.js.map +0 -1
  2809. package/dist/src/voice/local/runtime-dispatcher.js.map +0 -1
  2810. package/dist/src/voice/local/runtime-worker.js.map +0 -1
  2811. package/dist/src/voice/local/wav.js.map +0 -1
  2812. package/dist/src/voice/metadata/builtin.js.map +0 -1
  2813. package/dist/src/voice/metadata/registry.js.map +0 -1
  2814. package/dist/src/voice/stt/availability.js.map +0 -1
  2815. package/dist/src/voice/stt/config-slice.js.map +0 -1
  2816. package/dist/src/voice/stt/factory.js.map +0 -1
  2817. package/dist/src/voice/stt/index.js.map +0 -1
  2818. package/dist/src/voice/stt/list-providers.js.map +0 -1
  2819. package/dist/src/voice/stt/mention.js.map +0 -1
  2820. package/dist/src/voice/stt/preflight.js.map +0 -1
  2821. package/dist/src/voice/stt/providers/alibaba-transcription.js.map +0 -1
  2822. package/dist/src/voice/stt/providers/local-transcription.js.map +0 -1
  2823. package/dist/src/voice/stt/providers/openai-transcription.js.map +0 -1
  2824. package/dist/src/voice/stt/transcribe-core.js.map +0 -1
  2825. package/dist/src/voice/stt/types.js.map +0 -1
  2826. package/dist/src/voice/tts/audio.js.map +0 -1
  2827. package/dist/src/voice/tts/config-slice.js.map +0 -1
  2828. package/dist/src/voice/tts/directives.js.map +0 -1
  2829. package/dist/src/voice/tts/factory.js.map +0 -1
  2830. package/dist/src/voice/tts/list-providers.js.map +0 -1
  2831. package/dist/src/voice/tts/merge-config.js.map +0 -1
  2832. package/dist/src/voice/tts/openai-compatible-speech.js.map +0 -1
  2833. package/dist/src/voice/tts/payload.js.map +0 -1
  2834. package/dist/src/voice/tts/preprocess.js.map +0 -1
  2835. package/dist/src/voice/tts/providers/alibaba-speech.js.map +0 -1
  2836. package/dist/src/voice/tts/providers/edge-speech.js.map +0 -1
  2837. package/dist/src/voice/tts/providers/minimax-speech.js.map +0 -1
  2838. package/dist/src/voice/tts/providers/openai-speech.js.map +0 -1
  2839. package/dist/src/voice/tts/sentence-boundary.js.map +0 -1
  2840. package/dist/src/voice/tts/service.js.map +0 -1
  2841. package/dist/src/voice/tts/speak-core.js.map +0 -1
  2842. package/dist/src/voice/tts/speech-registry.js.map +0 -1
  2843. package/dist/src/voice/tts/status-tracker.js.map +0 -1
  2844. package/dist/src/voice/tts/summarize.js.map +0 -1
  2845. package/dist/src/voice/tts/types.js.map +0 -1
  2846. package/dist/src/work-discovery/analyzer.js.map +0 -1
  2847. package/dist/src/work-discovery/probe.js.map +0 -1
  2848. package/dist/src/work-discovery/repository.js.map +0 -1
  2849. package/dist/src/work-discovery/service.js.map +0 -1
  2850. package/dist/src/work-items/agent-context.js.map +0 -1
  2851. package/dist/src/work-items/work-item-service.js.map +0 -1
  2852. package/dist/src/work-items/work-item-store.js.map +0 -1
  2853. package/dist/src/work-items/work-item-workflow-judge.js.map +0 -1
  2854. package/dist/src/workflows/authoring/workflow-draft-store.js.map +0 -1
  2855. package/dist/src/workflows/domain/definition-utils.js.map +0 -1
  2856. package/dist/src/workflows/domain/run.js.map +0 -1
  2857. package/dist/src/workflows/domain/schema-validation.js.map +0 -1
  2858. package/dist/src/workflows/domain/validation.js.map +0 -1
  2859. package/dist/src/workflows/draft/workflow-draft-prompt.js.map +0 -1
  2860. package/dist/src/workflows/draft/workflow-draft-service.js.map +0 -1
  2861. package/dist/src/workflows/draft/workflow-draft-validator.js.map +0 -1
  2862. package/dist/src/workflows/engine/projector.js.map +0 -1
  2863. package/dist/src/workflows/engine/workflow-engine.js.map +0 -1
  2864. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +0 -1
  2865. package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +0 -1
  2866. package/dist/src/workflows/service/run-view-to-snapshot.js.map +0 -1
  2867. package/dist/src/workflows/service/workflow-run-service.js.map +0 -1
  2868. package/dist/src/workflows/service/workflow-session-bridge.js.map +0 -1
  2869. package/dist/src/workflows/service/workflow-session-key.js.map +0 -1
  2870. package/dist/src/workflows/store/event-store.js.map +0 -1
  2871. package/dist/src/workflows/store/paths.js.map +0 -1
  2872. package/dist/src/workflows/store/run-index-store.js.map +0 -1
  2873. package/dist/src/workflows/store/run-store.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"preview-runtime-bridge.js","names":[],"sources":["../../../src/local-apps/preview-runtime-bridge.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\n\nimport type { LocalAppAcceptanceConfig } from './acceptance.js';\nimport { encodeLocalAppAcceptanceConfig } from './acceptance.js';\n\nexport const LOCAL_APP_RUNTIME_BRIDGE_SCRIPT = `(() => {\n let hostPort = null;\n const pending = [];\n const send = (type, detail) => {\n const message = { source: 'xopc-local-app-preview', version: 1, type, detail };\n if (hostPort) hostPort.postMessage(message);\n else pending.push(message);\n };\n const connect = (event) => {\n const message = event.data;\n if (event.source !== parent || message?.source !== 'xopc-local-app-host' || message?.version !== 1 || message?.type !== 'connect' || !event.ports[0]) return;\n event.stopImmediatePropagation();\n removeEventListener('message', connect, true);\n hostPort = event.ports[0];\n hostPort.start();\n for (const queued of pending.splice(0)) hostPort.postMessage(queued);\n };\n addEventListener('message', connect, true);\n const text = (value) => String(value ?? '').slice(0, 500);\n let runtimeFailure = '';\n const visible = (element) => {\n const style = getComputedStyle(element);\n const rect = element.getBoundingClientRect();\n return style.display !== 'none' && style.visibility !== 'hidden' && Number(style.opacity) !== 0 && rect.width > 0 && rect.height > 0;\n };\n const accessibleName = (element) => {\n const labelledBy = text(element.getAttribute('aria-labelledby'));\n const labelledText = labelledBy.split(/\\\\s+/).map((id) => document.getElementById(id)?.textContent).filter(Boolean).join(' ');\n return text(element.getAttribute('aria-label') || labelledText || element.labels?.[0]?.textContent || element.textContent || element.getAttribute('alt') || element.getAttribute('title') || element.getAttribute('placeholder') || element.getAttribute('name')).trim();\n };\n const target = (id) => Array.from(document.querySelectorAll('[data-xopc-test-id]'))\n .find((element) => element.getAttribute('data-xopc-test-id') === id);\n const pause = () => new Promise((resolve) => setTimeout(resolve, 50));\n const readCriteria = () => {\n const encoded = document.querySelector('meta[name=\"xopc-local-app-acceptance\"]')?.content;\n if (!encoded) return { schemaVersion: 1, scenarios: [] };\n const base64 = encoded.replace(/-/g, '+').replace(/_/g, '/');\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, '=');\n const bytes = Uint8Array.from(atob(padded), (char) => char.charCodeAt(0));\n return JSON.parse(new TextDecoder().decode(bytes));\n };\n addEventListener('error', (event) => {\n runtimeFailure = text(event.message || 'A preview resource failed to load');\n send('error', {\n kind: 'script_error',\n message: runtimeFailure,\n filename: text(event.filename),\n line: Number(event.lineno) || undefined,\n column: Number(event.colno) || undefined,\n });\n }, true);\n addEventListener('unhandledrejection', (event) => {\n runtimeFailure = text(event.reason instanceof Error ? event.reason.message : event.reason);\n send('error', { kind: 'unhandled_rejection', message: runtimeFailure });\n });\n const runAcceptance = () => {\n const checks = [];\n const bodyReady = Boolean(document.body);\n checks.push({ id: 'document', status: bodyReady ? 'passed' : 'failed', message: bodyReady ? 'Preview document loaded' : 'Preview document has no body' });\n const contentNodes = bodyReady ? Array.from(document.body.querySelectorAll('*')).slice(0, 300) : [];\n const hasVisibleContent = contentNodes.some((element) => visible(element) && (text(element.textContent).trim() || /^(IMG|SVG|CANVAS|VIDEO)$/.test(element.tagName)));\n checks.push({ id: 'content', status: hasVisibleContent ? 'passed' : 'failed', message: hasVisibleContent ? 'Visible content rendered' : 'No visible content was rendered' });\n const controls = bodyReady ? Array.from(document.body.querySelectorAll('a[href], button, input, select, textarea, [role=\"button\"], [tabindex]')).filter((element) => visible(element) && !element.disabled && element.getAttribute('aria-disabled') !== 'true') : [];\n const unnamed = controls.filter((element) => !accessibleName(element));\n let interactionStatus = controls.length ? 'passed' : 'skipped';\n let interactionMessage = controls.length ? controls.length + ' interactive control(s) are discoverable' : 'No interactive controls to exercise';\n if (unnamed.length) {\n interactionStatus = 'failed';\n interactionMessage = unnamed.length + ' interactive control(s) need an accessible name';\n } else if (controls.length) {\n const previous = document.activeElement;\n controls[0].focus({ preventScroll: true });\n if (document.activeElement !== controls[0]) {\n interactionStatus = 'failed';\n interactionMessage = 'The first interactive control could not receive focus';\n }\n if (previous && typeof previous.focus === 'function') previous.focus({ preventScroll: true });\n else controls[0].blur();\n }\n checks.push({ id: 'interaction', status: interactionStatus, message: interactionMessage });\n send('acceptance', {\n status: checks.some((check) => check.status === 'failed') ? 'failed' : 'passed',\n checks,\n interactiveCount: controls.length,\n });\n };\n const runCriteria = async () => {\n const params = new URLSearchParams(location.search);\n if (params.get('xopcAcceptance') !== '1') return;\n let config;\n try {\n config = readCriteria();\n } catch (error) {\n send('criteria', { status: 'failed', scenarioCount: 0, scenarios: [{ id: 'config', name: 'Acceptance config', status: 'failed', message: text(error instanceof Error ? error.message : error) }] });\n return;\n }\n const requestedScenario = params.get('xopcScenario');\n const selectedScenarios = requestedScenario\n ? (config.scenarios || []).filter((scenario) => scenario.id === requestedScenario)\n : config.scenarios || [];\n if (requestedScenario && !selectedScenarios.length) {\n send('criteria', { status: 'failed', scenarioCount: 1, scenarios: [{ id: requestedScenario, name: requestedScenario, status: 'failed', message: 'Requested scenario was not found' }] });\n return;\n }\n const scenarios = [];\n for (const scenario of selectedScenarios) {\n let failure = '';\n for (let index = 0; index < scenario.steps.length; index += 1) {\n const step = scenario.steps[index];\n try {\n if (step.action === 'click') {\n const element = target(step.target);\n if (!(element instanceof HTMLElement)) throw new Error('Target \"' + step.target + '\" was not found');\n if ('disabled' in element && element.disabled || element.getAttribute('aria-disabled') === 'true') throw new Error('Target \"' + step.target + '\" is disabled');\n element.click();\n await pause();\n } else if (step.action === 'fill') {\n const element = target(step.target);\n if (!(element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement || element instanceof HTMLSelectElement)) throw new Error('Target \"' + step.target + '\" cannot be filled');\n const prototype = element instanceof HTMLInputElement ? HTMLInputElement.prototype : element instanceof HTMLTextAreaElement ? HTMLTextAreaElement.prototype : HTMLSelectElement.prototype;\n const setter = Object.getOwnPropertyDescriptor(prototype, 'value')?.set;\n if (setter) setter.call(element, step.value);\n else element.value = step.value;\n element.dispatchEvent(new Event('input', { bubbles: true }));\n element.dispatchEvent(new Event('change', { bubbles: true }));\n await pause();\n } else if (step.assert === 'text_visible') {\n const found = Array.from(document.body.querySelectorAll('*')).some((element) => visible(element) && text(element.textContent).includes(step.text));\n if (!found) throw new Error('Visible text was not found: \"' + step.text + '\"');\n } else if (step.assert === 'element_exists') {\n if (!target(step.target)) throw new Error('Target \"' + step.target + '\" was not found');\n } else if (step.assert === 'value_equals') {\n const element = target(step.target);\n if (!element || !('value' in element) || element.value !== step.value) throw new Error('Target \"' + step.target + '\" does not have the expected value');\n }\n if (runtimeFailure) throw new Error(runtimeFailure);\n } catch (error) {\n failure = 'Step ' + (index + 1) + ': ' + text(error instanceof Error ? error.message : error);\n break;\n }\n }\n scenarios.push({ id: scenario.id, name: scenario.name, status: failure ? 'failed' : 'passed', message: failure || 'Scenario passed' });\n }\n send('criteria', {\n status: scenarios.some((scenario) => scenario.status === 'failed') ? 'failed' : 'passed',\n scenarioCount: scenarios.length,\n scenarios,\n });\n };\n const loaded = () => {\n send('ready', { readyState: document.readyState });\n const run = () => { runAcceptance(); void runCriteria(); };\n if (typeof requestAnimationFrame === 'function') requestAnimationFrame(() => requestAnimationFrame(run));\n else setTimeout(run, 0);\n };\n if (document.readyState === 'complete') queueMicrotask(loaded);\n else addEventListener('load', loaded, { once: true });\n})();`;\n\nexport const LOCAL_APP_RUNTIME_BRIDGE_HASH = createHash('sha256')\n .update(LOCAL_APP_RUNTIME_BRIDGE_SCRIPT)\n .digest('base64');\n\nexport function injectLocalAppRuntimeBridge(\n html: string,\n acceptance?: LocalAppAcceptanceConfig,\n): string {\n const meta = acceptance\n ? `<meta name=\"xopc-local-app-acceptance\" content=\"${encodeLocalAppAcceptanceConfig(acceptance)}\">`\n : '';\n const script = `<script data-xopc-runtime-bridge>${LOCAL_APP_RUNTIME_BRIDGE_SCRIPT}</script>`;\n const additions = [meta, script].filter(Boolean).join('\\n');\n if (/<head(?:\\s[^>]*)?>/i.test(html)) {\n return html.replace(/<head(?:\\s[^>]*)?>/i, (head) => `${head}\\n${additions}`);\n }\n return `${additions}\\n${html}`;\n}\n"],"mappings":";;;AAKA,MAAa,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+J/C,MAAa,gCAAgC,WAAW,SAAS,CAC9D,OAAO,gCAAgC,CACvC,OAAO,SAAS;AAEnB,SAAgB,4BACd,MACA,YACQ;CAKR,MAAM,YAAY,CAJL,aACT,mDAAmD,+BAA+B,WAAW,CAAC,MAC9F,IAEqB,oCAD0B,gCAAgC,YACnD,CAAC,OAAO,QAAQ,CAAC,KAAK,KAAK;AAC3D,KAAI,sBAAsB,KAAK,KAAK,CAClC,QAAO,KAAK,QAAQ,wBAAwB,SAAS,GAAG,KAAK,IAAI,YAAY;AAE/E,QAAO,GAAG,UAAU,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-entry.js","names":[],"sources":["../../../src/local-apps/runtime-entry.ts"],"sourcesContent":["export const LOCAL_APP_RUNTIME_ENTRY = '.xopc/runtime/local-ui.js';\n\n/**\n * Local UI Apps use host-defined runtime bytes so generated projects cannot execute\n * arbitrary Node.js in the gateway process through the extension `main` entry.\n */\nexport const LOCAL_APP_RUNTIME_SOURCE = `export default Object.freeze({});\n`;\n\n/** Exact legacy scaffold bytes accepted only to keep existing Phase 1 drafts upgradeable. */\nexport function legacyLocalAppRuntimeSource(extensionId: string, name: string): string {\n return `export default {\n id: ${JSON.stringify(extensionId)},\n name: ${JSON.stringify(name)},\n version: '0.1.0',\n kind: 'utility',\n register(api) {\n api.logger.info('Local app registered');\n },\n};\n`;\n}\n"],"mappings":";AAAA,MAAa,0BAA0B;;;;;AAMvC,MAAa,2BAA2B;;;AAIxC,SAAgB,4BAA4B,aAAqB,MAAsB;AACrF,QAAO;QACD,KAAK,UAAU,YAAY,CAAC;UAC1B,KAAK,UAAU,KAAK,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"scaffold.js","names":[],"sources":["../../../src/local-apps/scaffold.ts"],"sourcesContent":["import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\n\nimport { LOCAL_APP_RUNTIME_ENTRY, LOCAL_APP_RUNTIME_SOURCE } from './runtime-entry.js';\n\nconst LOCAL_APP_PERMISSIONS = ['theme', 'storage'] as const;\n\nfunction writeText(root: string, relativePath: string, content: string): void {\n const target = join(root, relativePath);\n mkdirSync(dirname(target), { recursive: true });\n writeFileSync(target, content, 'utf8');\n}\n\nfunction htmlEscape(value: string): string {\n return value.replace(/[&<>\"']/g, (char) => ({\n '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;',\n })[char]!);\n}\n\nexport function scaffoldLocalApp(input: {\n workspaceRoot: string;\n extensionId: string;\n name: string;\n idea: string;\n description?: string;\n}): void {\n const { workspaceRoot, extensionId, name, idea, description } = input;\n const manifest = {\n id: extensionId,\n name,\n description: description || idea,\n version: '0.1.0',\n kind: 'utility',\n main: LOCAL_APP_RUNTIME_ENTRY,\n ui: {\n main: 'ui/index.html',\n permissions: [...LOCAL_APP_PERMISSIONS],\n contributions: {\n pages: [{\n id: 'app',\n title: name,\n path: `/extensions/${extensionId}`,\n entrypoint: 'ui/index.html',\n showInNav: true,\n navIcon: 'layout-dashboard',\n }],\n },\n },\n engines: { xopc: '>=0.0.106 <1.0.0' },\n };\n\n writeText(workspaceRoot, 'xopc.extension.json', `${JSON.stringify(manifest, null, 2)}\\n`);\n writeText(workspaceRoot, 'package.json', `${JSON.stringify({\n name: extensionId,\n private: true,\n version: '0.1.0',\n type: 'module',\n }, null, 2)}\\n`);\n writeText(workspaceRoot, LOCAL_APP_RUNTIME_ENTRY, LOCAL_APP_RUNTIME_SOURCE);\n writeText(workspaceRoot, 'APP_BRIEF.md', `# ${name}\\n\\n${idea}\\n\\n## Product constraints\\n\\n- Keep the app local to this XOPC installation.\\n- Preserve the extension id: \\`${extensionId}\\`.\\n- Phase 1 is UI-only. Use only the declared theme and storage permissions.\\n- Do not edit the manifest \\`main\\` field or \\`${LOCAL_APP_RUNTIME_ENTRY}\\`; xopc owns the trusted runtime entry.\\n- Keep critical user journeys in \\`.xopc/acceptance.json\\`. Target only elements marked with \\`data-xopc-test-id\\`.\\n- Run the local-app validation script before asking the user to install an update.\\n`);\n writeText(workspaceRoot, '.xopc/app.json', `${JSON.stringify({\n schemaVersion: 1,\n extensionId,\n capabilityLevel: 'ui',\n entrypoint: 'ui/index.html',\n }, null, 2)}\\n`);\n writeText(workspaceRoot, '.xopc/acceptance.json', `${JSON.stringify({\n schemaVersion: 1,\n scenarios: [{\n id: 'start-app',\n name: 'Start the app',\n steps: [\n { action: 'click', target: 'primary-action' },\n { assert: 'text_visible', text: '应用已就绪' },\n ],\n }],\n }, null, 2)}\\n`);\n writeText(workspaceRoot, 'ui/index.html', `<!doctype html>\n<html lang=\"zh-CN\">\n<head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>${htmlEscape(name)}</title>\n <link rel=\"stylesheet\" href=\"./styles.css\" />\n</head>\n<body>\n <main class=\"app-shell\">\n <section class=\"hero\">\n <h1>${htmlEscape(name)}</h1>\n <p>${htmlEscape(description || idea)}</p>\n <button id=\"primary-action\" data-xopc-test-id=\"primary-action\" type=\"button\">开始使用</button>\n <p id=\"feedback\" data-xopc-test-id=\"feedback\" class=\"feedback\" aria-live=\"polite\"></p>\n </section>\n </main>\n <script type=\"module\" src=\"./app.js\"></script>\n</body>\n</html>\n`);\n writeText(workspaceRoot, 'ui/styles.css', `:root { color-scheme: light dark; font-family: Inter, ui-sans-serif, system-ui, sans-serif; }\n* { box-sizing: border-box; }\nbody { margin: 0; min-height: 100vh; background: #f8fafc; color: #0f172a; }\n.app-shell { min-height: 100vh; display: grid; place-items: center; padding: 32px; }\n.hero { width: min(680px, 100%); padding: 40px; border: 1px solid #e2e8f0; border-radius: 16px; background: #fff; }\nh1 { margin: 0 0 12px; font-size: clamp(32px, 6vw, 56px); line-height: 1.05; letter-spacing: -.03em; text-wrap: balance; }\np { color: #475569; line-height: 1.7; }\nbutton { margin-top: 18px; border: 0; border-radius: 10px; padding: 11px 18px; background: #2563eb; color: #fff; font: inherit; font-weight: 650; cursor: pointer; }\n.feedback { min-height: 24px; font-size: 14px; }\n@media (prefers-color-scheme: dark) { body { background: #0f172a; color: #f8fafc; } .hero { background: #111827; border-color: #334155; } p { color: #cbd5e1; } }\n`);\n writeText(workspaceRoot, 'ui/app.js', `const button = document.querySelector('#primary-action');\nconst feedback = document.querySelector('#feedback');\nbutton?.addEventListener('click', () => {\n feedback.textContent = '应用已就绪。接下来可以在 Project 中继续告诉 Coder 你的想法。';\n});\n`);\n}\n\nexport function readLocalAppPermissions(workspaceRoot: string): string[] {\n try {\n const raw = JSON.parse(readFileSync(join(workspaceRoot, 'xopc.extension.json'), 'utf8')) as {\n ui?: { permissions?: unknown };\n };\n return Array.isArray(raw.ui?.permissions)\n ? raw.ui.permissions.filter((permission): permission is string => typeof permission === 'string')\n : [];\n } catch {\n return [];\n }\n}\n"],"mappings":";;;;AAKA,MAAM,wBAAwB,CAAC,SAAS,UAAU;AAElD,SAAS,UAAU,MAAc,cAAsB,SAAuB;CAC5E,MAAM,SAAS,KAAK,MAAM,aAAa;AACvC,WAAU,QAAQ,OAAO,EAAE,EAAE,WAAW,MAAM,CAAC;AAC/C,eAAc,QAAQ,SAAS,OAAO;;AAGxC,SAAS,WAAW,OAAuB;AACzC,QAAO,MAAM,QAAQ,aAAa,UAAU;EAC1C,KAAK;EAAS,KAAK;EAAQ,KAAK;EAAQ,MAAK;EAAU,KAAK;EAC7D,EAAE,MAAO;;AAGZ,SAAgB,iBAAiB,OAMxB;CACP,MAAM,EAAE,eAAe,aAAa,MAAM,MAAM,gBAAgB;CAChE,MAAM,WAAW;EACf,IAAI;EACJ;EACA,aAAa,eAAe;EAC5B,SAAS;EACT,MAAM;EACN,MAAM;EACN,IAAI;GACF,MAAM;GACN,aAAa,CAAC,GAAG,sBAAsB;GACvC,eAAe,EACb,OAAO,CAAC;IACN,IAAI;IACJ,OAAO;IACP,MAAM,eAAe;IACrB,YAAY;IACZ,WAAW;IACX,SAAS;IACV,CAAC,EACH;GACF;EACD,SAAS,EAAE,MAAM,oBAAoB;EACtC;AAED,WAAU,eAAe,uBAAuB,GAAG,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC,IAAI;AACzF,WAAU,eAAe,gBAAgB,GAAG,KAAK,UAAU;EACzD,MAAM;EACN,SAAS;EACT,SAAS;EACT,MAAM;EACP,EAAE,MAAM,EAAE,CAAC,IAAI;AAChB,WAAU,eAAe,yBAAyB,yBAAyB;AAC3E,WAAU,eAAe,gBAAgB,KAAK,KAAK,MAAM,KAAK,gHAAgH,YAAY,kIAAkI,wBAAwB,qPAAqP;AACzkB,WAAU,eAAe,kBAAkB,GAAG,KAAK,UAAU;EAC3D,eAAe;EACf;EACA,iBAAiB;EACjB,YAAY;EACb,EAAE,MAAM,EAAE,CAAC,IAAI;AAChB,WAAU,eAAe,yBAAyB,GAAG,KAAK,UAAU;EAClE,eAAe;EACf,WAAW,CAAC;GACV,IAAI;GACJ,MAAM;GACN,OAAO,CACL;IAAE,QAAQ;IAAS,QAAQ;IAAkB,EAC7C;IAAE,QAAQ;IAAgB,MAAM;IAAS,CAC1C;GACF,CAAC;EACH,EAAE,MAAM,EAAE,CAAC,IAAI;AAChB,WAAU,eAAe,iBAAiB;;;;;WAKjC,WAAW,KAAK,CAAC;;;;;;YAMhB,WAAW,KAAK,CAAC;WAClB,WAAW,eAAe,KAAK,CAAC;;;;;;;;EAQzC;AACA,WAAU,eAAe,iBAAiB;;;;;;;;;;EAU1C;AACA,WAAU,eAAe,aAAa;;;;;EAKtC;;AAGF,SAAgB,wBAAwB,eAAiC;AACvE,KAAI;EACF,MAAM,MAAM,KAAK,MAAM,aAAa,KAAK,eAAe,sBAAsB,EAAE,OAAO,CAAC;AAGxF,SAAO,MAAM,QAAQ,IAAI,IAAI,YAAY,GACrC,IAAI,GAAG,YAAY,QAAQ,eAAqC,OAAO,eAAe,SAAS,GAC/F,EAAE;SACA;AACN,SAAO,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.js","names":[],"sources":["../../../src/local-apps/service.ts"],"sourcesContent":["import { createHash, randomBytes } from 'node:crypto';\nimport {\n cpSync,\n existsSync,\n mkdirSync,\n mkdtempSync,\n lstatSync,\n readFileSync,\n readdirSync,\n renameSync,\n rmSync,\n} from 'node:fs';\nimport { basename, join, relative, resolve, sep } from 'node:path';\n\nimport { resolveExtensionsDir, resolveStateDir } from '../config/paths.js';\nimport type { Config } from '../config/schema.js';\nimport type { ExtensionLoader } from '../extensions/index.js';\nimport type { ProjectService } from '../projects/index.js';\nimport { slugifyProjectName } from '../projects/project-store.js';\nimport { createLogger } from '../utils/logger.js';\nimport { readLocalAppAcceptanceConfig } from './acceptance.js';\nimport {\n legacyLocalAppRuntimeSource,\n LOCAL_APP_RUNTIME_ENTRY,\n LOCAL_APP_RUNTIME_SOURCE,\n} from './runtime-entry.js';\nimport { readLocalAppPermissions, scaffoldLocalApp } from './scaffold.js';\nimport { LocalAppStore } from './store.js';\nimport type {\n CreateLocalAppInput,\n LocalAppChangedFile,\n LocalApp,\n LocalAppAcceptanceRun,\n LocalAppDetail,\n LocalAppPreviewTarget,\n LocalAppValidationResult,\n LocalAppUiGrant,\n RecordLocalAppAcceptanceInput,\n} from './types.js';\n\nconst log = createLogger('LocalApps');\nconst RELEASE_COPY_EXCLUDED_NAMES = new Set(['.git', 'node_modules']);\nconst UI_ONLY_PERMISSIONS = new Set(['theme', 'storage', 'notification']);\n\nexport interface LocalAppServiceOptions {\n projects: ProjectService;\n workspaceRoot: string;\n getConfig: () => Config;\n saveConfig: (config: Config) => Promise<{ saved: boolean; error?: string }>;\n getExtensionLoader: () => ExtensionLoader | null;\n emit: (type: string, payload: unknown) => void;\n}\n\nfunction requireText(value: string, label: string): string {\n const trimmed = value.trim();\n if (!trimmed) throw new Error(`${label} is required`);\n return trimmed;\n}\n\nfunction extensionConfigRecord(config: Config): Record<string, unknown> {\n return config.extensions && typeof config.extensions === 'object' && !Array.isArray(config.extensions)\n ? { ...(config.extensions as Record<string, unknown>) }\n : {};\n}\n\nfunction stringIds(value: unknown): string[] {\n return Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : [];\n}\n\nfunction setExtensionActivation(config: Config, extensionId: string, enabled: boolean): Config {\n const extensions = extensionConfigRecord(config);\n const enabledIds = stringIds(extensions.enabled).filter((id) => id !== extensionId);\n const disabledIds = stringIds(extensions.disabled).filter((id) => id !== extensionId);\n if (enabled) enabledIds.push(extensionId);\n else disabledIds.push(extensionId);\n const nextExtensions: Record<string, unknown> = { ...extensions, enabled: enabledIds };\n if (disabledIds.length) nextExtensions.disabled = disabledIds;\n else delete nextExtensions.disabled;\n return { ...config, extensions: nextExtensions } as Config;\n}\n\nfunction removeExtensionActivation(config: Config, extensionId: string): Config {\n const extensions = extensionConfigRecord(config);\n return {\n ...config,\n extensions: {\n ...extensions,\n enabled: stringIds(extensions.enabled).filter((id) => id !== extensionId),\n disabled: stringIds(extensions.disabled).filter((id) => id !== extensionId),\n },\n } as Config;\n}\n\nfunction shouldCopyReleasePath(source: string): boolean {\n return !RELEASE_COPY_EXCLUDED_NAMES.has(basename(source));\n}\n\nfunction hashDirectory(root: string): string {\n const hash = createHash('sha256');\n const visit = (dir: string): void => {\n const entries = readdirSync(dir, { withFileTypes: true })\n .filter((entry) => !RELEASE_COPY_EXCLUDED_NAMES.has(entry.name))\n .toSorted((a, b) => a.name.localeCompare(b.name));\n for (const entry of entries) {\n const path = join(dir, entry.name);\n const rel = relative(root, path);\n hash.update(rel);\n if (entry.isDirectory()) visit(path);\n else if (entry.isFile()) hash.update(readFileSync(path));\n else throw new Error(`Unsupported release entry: ${rel}`);\n }\n };\n visit(root);\n return hash.digest('hex');\n}\n\nfunction fileHashes(root: string): Map<string, string> {\n const hashes = new Map<string, string>();\n const visit = (dir: string): void => {\n const entries = readdirSync(dir, { withFileTypes: true })\n .filter((entry) => !RELEASE_COPY_EXCLUDED_NAMES.has(entry.name))\n .toSorted((a, b) => a.name.localeCompare(b.name));\n for (const entry of entries) {\n const path = join(dir, entry.name);\n const rel = relative(root, path);\n if (entry.isDirectory()) visit(path);\n else if (entry.isFile()) hashes.set(rel, createHash('sha256').update(readFileSync(path)).digest('hex'));\n else throw new Error(`Unsupported release entry: ${rel}`);\n }\n };\n visit(root);\n return hashes;\n}\n\nfunction changedFiles(current: Map<string, string>, active: Map<string, string>): LocalAppChangedFile[] {\n const paths = new Set([...current.keys(), ...active.keys()]);\n const changes: LocalAppChangedFile[] = [];\n for (const path of [...paths].toSorted()) {\n const currentHash = current.get(path);\n const activeHash = active.get(path);\n if (!activeHash) changes.push({ path, status: 'added' });\n else if (!currentHash) changes.push({ path, status: 'deleted' });\n else if (currentHash !== activeHash) changes.push({ path, status: 'modified' });\n }\n return changes;\n}\n\nfunction permissionsFromManifestJson(manifestJson: string | undefined): string[] {\n if (!manifestJson) return [];\n try {\n const manifest = JSON.parse(manifestJson) as { ui?: { permissions?: unknown } };\n return Array.isArray(manifest.ui?.permissions)\n ? manifest.ui.permissions.filter((value): value is string => typeof value === 'string')\n : [];\n } catch {\n return [];\n }\n}\n\nfunction validateLocalAppPackage(root: string, extensionId: string): {\n manifestJson: string;\n acceptanceScenarios: Array<{ id: string; name: string; stepCount: number }>;\n} {\n const manifestPath = join(root, 'xopc.extension.json');\n if (!existsSync(manifestPath)) throw new Error('Local app manifest is missing');\n const manifestJson = readFileSync(manifestPath, 'utf8');\n const manifest = JSON.parse(manifestJson) as {\n id?: string;\n name?: string;\n main?: string;\n ui?: { main?: string; permissions?: unknown };\n };\n if (manifest.id !== extensionId) throw new Error('Extension id cannot change after the app is created');\n if (!manifest.main || !manifest.ui?.main) throw new Error('Local app manifest must declare main and ui.main');\n const resolvedRoot = resolve(root);\n for (const declaredPath of [manifest.main, manifest.ui.main]) {\n const resolvedPath = resolve(root, declaredPath);\n if (!resolvedPath.startsWith(`${resolvedRoot}${sep}`) || !existsSync(resolvedPath) || !lstatSync(resolvedPath).isFile()) {\n throw new Error(`Declared app file is missing or unsafe: ${declaredPath}`);\n }\n }\n const trustedRuntime = manifest.main === LOCAL_APP_RUNTIME_ENTRY\n ? LOCAL_APP_RUNTIME_SOURCE\n : manifest.main === 'index.js' && typeof manifest.name === 'string'\n ? legacyLocalAppRuntimeSource(extensionId, manifest.name)\n : null;\n if (trustedRuntime === null || readFileSync(join(root, manifest.main), 'utf8') !== trustedRuntime) {\n throw new Error(`Phase 1 local apps must use the xopc-owned runtime entry: ${LOCAL_APP_RUNTIME_ENTRY}`);\n }\n const permissions = Array.isArray(manifest.ui.permissions)\n ? manifest.ui.permissions.filter((value): value is string => typeof value === 'string')\n : [];\n const unsupported = permissions.filter((permission) => !UI_ONLY_PERMISSIONS.has(permission));\n if (unsupported.length) {\n throw new Error(`Phase 1 local apps cannot request: ${unsupported.join(', ')}`);\n }\n const html = readFileSync(join(root, manifest.ui.main), 'utf8');\n if (/<script\\b(?![^>]*\\bsrc=)[^>]*>/i.test(html)) {\n throw new Error('Inline scripts are blocked in local app previews');\n }\n if (/(?:src|href)\\s*=\\s*[\"']https?:\\/\\//i.test(html)) {\n throw new Error('Remote scripts, styles, and frames are blocked in Phase 1 local apps');\n }\n const acceptance = readLocalAppAcceptanceConfig(root);\n return {\n manifestJson,\n acceptanceScenarios: acceptance.scenarios.map((scenario) => ({\n id: scenario.id,\n name: scenario.name,\n stepCount: scenario.steps.length,\n })),\n };\n}\n\nexport class LocalAppService {\n constructor(\n private readonly options: LocalAppServiceOptions,\n private readonly store = new LocalAppStore(),\n ) {}\n\n list(): LocalApp[] {\n return this.store.list();\n }\n\n get(id: string): LocalAppDetail | null {\n const app = this.store.get(id);\n const token = app ? this.store.getPreviewToken(id) : null;\n if (!app || !token) return null;\n return {\n ...app,\n previewUrl: `/api/local-apps/preview/${token}/ui/index.html`,\n permissions: readLocalAppPermissions(app.workspaceRoot),\n releases: this.store.listReleases(id).map(({ artifactPath: _artifactPath, manifestJson: _manifestJson, ...release }) => release),\n acceptanceRuns: this.store.listAcceptanceRuns(id),\n };\n }\n\n getUiGrant(extensionId: string): LocalAppUiGrant {\n const app = this.store.findByExtensionId(extensionId);\n const release = app?.activeReleaseId ? this.store.getRelease(app.id, app.activeReleaseId) : null;\n const discovered = !release\n ? this.options.getExtensionLoader()?.discoverExtensions().find((extension) => extension.id === extensionId)\n : null;\n if (!release && !discovered) throw new Error('Extension UI manifest not found');\n const manifestJson = release?.manifestJson ?? JSON.stringify(discovered!.manifest);\n const manifestDigest = createHash('sha256').update(manifestJson).digest('hex');\n const permissions = release\n ? permissionsFromManifestJson(manifestJson).toSorted()\n : [...(discovered!.manifest.ui?.permissions ?? [])].toSorted();\n const grant = this.store.getUiGrant(extensionId, manifestDigest);\n const granted = Boolean(grant\n && JSON.stringify(grant.permissions.toSorted()) === JSON.stringify(permissions));\n return {\n granted,\n extensionId,\n appId: app?.id,\n manifestDigest,\n permissions,\n grantedAt: granted ? grant?.grantedAt : undefined,\n };\n }\n\n grantUiPermissions(extensionId: string): LocalAppUiGrant {\n const current = this.getUiGrant(extensionId);\n if (!current.manifestDigest) throw new Error('Extension UI manifest not found');\n return this.store.saveUiGrant({\n extensionId,\n appId: current.appId,\n manifestDigest: current.manifestDigest,\n permissions: current.permissions,\n });\n }\n\n create(input: CreateLocalAppInput): LocalAppDetail {\n const name = requireText(input.name, 'App name');\n const idea = requireText(input.idea, 'App idea');\n const suffix = randomBytes(4).toString('hex');\n const slug = slugifyProjectName(name).slice(0, 48);\n const extensionId = `local-${slug}-${suffix}`;\n const workspaceRoot = join(this.options.workspaceRoot, 'local-apps', extensionId);\n const previewToken = randomBytes(24).toString('base64url');\n\n mkdirSync(workspaceRoot, { recursive: true });\n scaffoldLocalApp({\n workspaceRoot,\n extensionId,\n name,\n idea,\n description: input.description?.trim() || undefined,\n });\n const project = this.options.projects.create({\n name,\n slug: extensionId,\n description: input.description?.trim() || `Local app: ${idea}`,\n brief: idea,\n instructions: 'Use the $build-xopc-local-app skill. Preserve the extension id and validate the app before each install.',\n defaultAgentId: 'coder',\n workspaceRoot,\n projectKind: 'coding',\n });\n const app = this.store.create({\n extensionId,\n projectId: project.id,\n name,\n description: input.description?.trim() || undefined,\n idea,\n workspaceRoot: project.workspaceRoot ?? workspaceRoot,\n previewToken,\n });\n this.options.emit('local_app.created', { appId: app.id, projectId: project.id });\n return this.get(app.id)!;\n }\n\n resolvePreview(previewToken: string): LocalAppPreviewTarget | null {\n const app = this.store.findByPreviewToken(previewToken);\n if (!app) return null;\n return { app, previewToken, uiRoot: app.workspaceRoot };\n }\n\n validate(id: string): LocalAppValidationResult {\n const app = this.store.get(id);\n if (!app) throw new Error('Local app not found');\n const issues: LocalAppValidationResult['issues'] = [];\n let manifestJson: string | undefined;\n let acceptanceScenarios: LocalAppValidationResult['acceptanceScenarios'] = [];\n let sourceHash: string | undefined;\n let currentFiles = new Map<string, string>();\n try {\n ({ manifestJson, acceptanceScenarios } = validateLocalAppPackage(app.workspaceRoot, app.extensionId));\n currentFiles = fileHashes(app.workspaceRoot);\n sourceHash = hashDirectory(app.workspaceRoot);\n } catch (error) {\n issues.push({\n code: 'package_validation_failed',\n severity: 'error',\n message: error instanceof Error ? error.message : String(error),\n });\n }\n\n const activeRelease = app.activeReleaseId\n ? this.store.getRelease(app.id, app.activeReleaseId)\n : null;\n let files: LocalAppChangedFile[] = [];\n if (activeRelease?.artifactPath && existsSync(activeRelease.artifactPath) && currentFiles.size) {\n try {\n files = changedFiles(currentFiles, fileHashes(activeRelease.artifactPath));\n } catch (error) {\n issues.push({\n code: 'release_comparison_failed',\n severity: 'warning',\n message: error instanceof Error ? error.message : String(error),\n });\n }\n } else if (!activeRelease && currentFiles.size) {\n files = [...currentFiles.keys()].toSorted().map((path) => ({ path, status: 'added' }));\n }\n\n const permissions = permissionsFromManifestJson(manifestJson);\n const activePermissions = permissionsFromManifestJson(activeRelease?.manifestJson);\n return {\n status: issues.some((issue) => issue.severity === 'error') ? 'failed' : 'healthy',\n checkedAt: Date.now(),\n sourceHash,\n hasDraftChanges: activeRelease ? sourceHash !== activeRelease.sourceHash : true,\n changedFiles: files.slice(0, 50),\n changedFileCount: files.length,\n permissions,\n permissionDelta: {\n added: permissions.filter((permission) => !activePermissions.includes(permission)),\n removed: activePermissions.filter((permission) => !permissions.includes(permission)),\n },\n acceptanceScenarioCount: acceptanceScenarios.length,\n acceptanceScenarios,\n issues,\n };\n }\n\n recordAcceptance(id: string, input: RecordLocalAppAcceptanceInput): LocalAppAcceptanceRun {\n const app = this.store.get(id);\n if (!app) throw new Error('Local app not found');\n const validation = this.validate(id);\n if (validation.status !== 'healthy' || !validation.sourceHash) {\n throw new Error('The current draft must pass static validation before acceptance can be recorded');\n }\n if (input.sourceHash !== validation.sourceHash) {\n throw new Error('Acceptance result is stale because the draft changed');\n }\n if (input.status !== 'passed' && input.status !== 'failed') {\n throw new Error('Invalid acceptance status');\n }\n if (!Number.isInteger(input.interactiveCount) || input.interactiveCount < 0 || input.interactiveCount > 10_000) {\n throw new Error('Invalid acceptance interactive count');\n }\n const requiredIds = new Set(['document', 'content', 'interaction']);\n if (validation.acceptanceScenarioCount > 0) requiredIds.add('criteria');\n const allowedIds = new Set([...requiredIds, 'criteria']);\n const allowedStatuses = new Set(['passed', 'failed', 'skipped']);\n if (!Array.isArray(input.checks)\n || input.checks.length < requiredIds.size\n || input.checks.length > allowedIds.size) {\n throw new Error('Automatic acceptance must include every required check');\n }\n const seenIds = new Set<string>();\n for (const check of input.checks) {\n if (!allowedIds.has(check.id) || seenIds.has(check.id)) throw new Error('Invalid automatic acceptance check');\n if (!allowedStatuses.has(check.status)) throw new Error('Invalid automatic acceptance check status');\n if (typeof check.message !== 'string' || !check.message.trim() || check.message.length > 500) {\n throw new Error('Invalid automatic acceptance check message');\n }\n seenIds.add(check.id);\n }\n if ([...requiredIds].some((checkId) => !seenIds.has(checkId))) {\n throw new Error('Automatic acceptance must include every required check');\n }\n const derivedStatus = input.checks.some((check) => check.status === 'failed') ? 'failed' : 'passed';\n if (derivedStatus !== input.status) throw new Error('Acceptance status does not match its checks');\n const run = this.store.recordAcceptance(app.id, input);\n this.options.emit('local_app.acceptance_recorded', {\n appId: app.id,\n sourceHash: run.sourceHash,\n status: run.status,\n });\n return run;\n }\n\n private releaseRoot(appId: string): string {\n return join(resolveStateDir(), 'local-apps', 'releases', appId);\n }\n\n private refreshExtensions(source: string): void {\n this.options.getExtensionLoader()?.invalidateManifestCache();\n this.options.emit('config.reload', { section: 'extensions', source });\n }\n\n private assertInstalledRuntime(app: LocalApp, target: string): void {\n const loader = this.options.getExtensionLoader();\n if (!loader) return;\n loader.invalidateManifestCache();\n const installed = loader.discoverExtensions().find((extension) => extension.id === app.extensionId);\n if (!installed || resolve(installed.path) !== resolve(target) || !installed.manifest.ui?.main) {\n throw new Error('Installed local app was not discovered by the extension runtime');\n }\n const extensionRoot = resolve(installed.path);\n const entrypoint = resolve(extensionRoot, installed.manifest.ui.main);\n if (!entrypoint.startsWith(`${extensionRoot}${sep}`) || !existsSync(entrypoint)) {\n throw new Error('Installed local app UI entrypoint is unavailable');\n }\n loader.buildManifestRegistry();\n }\n\n private async activateArtifact(input: {\n app: LocalApp;\n artifactPath: string;\n nextConfig: Config;\n source: string;\n commit: () => void;\n }): Promise<void> {\n const previousConfig = this.options.getConfig();\n const extensionsDir = resolveExtensionsDir();\n mkdirSync(extensionsDir, { recursive: true });\n const transactionRoot = mkdtempSync(join(extensionsDir, '.local-app-activate-'));\n const staged = join(transactionRoot, input.app.extensionId);\n const backup = join(transactionRoot, 'previous');\n const target = join(extensionsDir, input.app.extensionId);\n cpSync(input.artifactPath, staged, { recursive: true, filter: shouldCopyReleasePath });\n let hadPrevious = false;\n let configSaved = false;\n try {\n if (existsSync(target)) {\n renameSync(target, backup);\n hadPrevious = true;\n }\n renameSync(staged, target);\n validateLocalAppPackage(target, input.app.extensionId);\n const saved = await this.options.saveConfig(input.nextConfig);\n if (!saved.saved) throw new Error(saved.error ?? 'Failed to update local app activation');\n configSaved = true;\n this.refreshExtensions(input.source);\n this.assertInstalledRuntime(input.app, target);\n input.commit();\n } catch (error) {\n if (existsSync(target)) rmSync(target, { recursive: true, force: true });\n if (hadPrevious && existsSync(backup)) renameSync(backup, target);\n if (configSaved) {\n const restored = await this.options.saveConfig(previousConfig);\n if (!restored.saved) {\n log.error({ appId: input.app.id, error: restored.error }, 'Local app config rollback failed');\n }\n }\n this.refreshExtensions(`${input.source}-rollback`);\n throw error;\n } finally {\n rmSync(transactionRoot, { recursive: true, force: true });\n }\n }\n\n async install(id: string): Promise<LocalAppDetail> {\n const app = this.store.get(id);\n if (!app) throw new Error('Local app not found');\n const releaseRoot = this.releaseRoot(app.id);\n mkdirSync(releaseRoot, { recursive: true });\n const artifactPath = join(releaseRoot, `v${app.draftVersion}`);\n if (existsSync(artifactPath)) throw new Error(`Release v${app.draftVersion} already exists`);\n const stagingRoot = mkdtempSync(join(releaseRoot, '.draft-'));\n const stagedArtifact = join(stagingRoot, 'package');\n let artifactCreated = false;\n try {\n cpSync(app.workspaceRoot, stagedArtifact, { recursive: true, filter: shouldCopyReleasePath });\n const { manifestJson } = validateLocalAppPackage(stagedArtifact, app.extensionId);\n const sourceHash = hashDirectory(stagedArtifact);\n const acceptance = this.store.getLatestAcceptanceForSource(app.id, sourceHash);\n if (acceptance?.status !== 'passed') {\n throw new Error('The current draft has not passed automatic acceptance');\n }\n renameSync(stagedArtifact, artifactPath);\n artifactCreated = true;\n await this.activateArtifact({\n app,\n artifactPath,\n nextConfig: setExtensionActivation(this.options.getConfig(), app.extensionId, true),\n source: 'local-app-install',\n commit: () => {\n this.store.markInstalled({\n id: app.id,\n version: app.draftVersion,\n sourceHash,\n artifactPath,\n manifestJson,\n });\n },\n });\n } catch (error) {\n if (artifactCreated) rmSync(artifactPath, { recursive: true, force: true });\n throw error;\n } finally {\n rmSync(stagingRoot, { recursive: true, force: true });\n }\n\n const next = this.get(id)!;\n this.options.emit('local_app.installed', {\n appId: app.id,\n extensionId: app.extensionId,\n version: next.activeVersion,\n });\n log.info({ appId: app.id, extensionId: app.extensionId, version: next.activeVersion }, 'Local app installed');\n return next;\n }\n\n async rollback(id: string, releaseId: string): Promise<LocalAppDetail> {\n const app = this.store.get(id);\n if (!app) throw new Error('Local app not found');\n const release = this.store.getRelease(id, releaseId);\n if (!release || !release.artifactPath || !existsSync(release.artifactPath)) {\n throw new Error('Local app release artifact is unavailable');\n }\n validateLocalAppPackage(release.artifactPath, app.extensionId);\n await this.activateArtifact({\n app,\n artifactPath: release.artifactPath,\n nextConfig: setExtensionActivation(this.options.getConfig(), app.extensionId, true),\n source: 'local-app-rollback',\n commit: () => { this.store.activateRelease(id, releaseId); },\n });\n this.options.emit('local_app.rolled_back', { appId: id, releaseId, version: release.version });\n return this.get(id)!;\n }\n\n async setEnabled(id: string, enabled: boolean): Promise<LocalAppDetail> {\n const app = this.store.get(id);\n if (!app) throw new Error('Local app not found');\n if (app.installationState !== 'installed') throw new Error('Install the local app before changing its enabled state');\n const previousConfig = this.options.getConfig();\n const saved = await this.options.saveConfig(setExtensionActivation(previousConfig, app.extensionId, enabled));\n if (!saved.saved) throw new Error(saved.error ?? 'Failed to update local app state');\n try {\n this.store.setEnabled(id, enabled);\n } catch (error) {\n await this.options.saveConfig(previousConfig);\n throw error;\n }\n this.refreshExtensions(enabled ? 'local-app-enable' : 'local-app-disable');\n this.options.emit(enabled ? 'local_app.enabled' : 'local_app.disabled', { appId: id });\n return this.get(id)!;\n }\n\n async uninstall(id: string): Promise<LocalAppDetail> {\n const app = this.store.get(id);\n if (!app) throw new Error('Local app not found');\n const extensionsDir = resolveExtensionsDir();\n mkdirSync(extensionsDir, { recursive: true });\n const target = join(extensionsDir, app.extensionId);\n const transactionRoot = mkdtempSync(join(extensionsDir, '.local-app-uninstall-'));\n const backup = join(transactionRoot, app.extensionId);\n const previousConfig = this.options.getConfig();\n let moved = false;\n let configSaved = false;\n try {\n if (existsSync(target)) {\n renameSync(target, backup);\n moved = true;\n }\n const saved = await this.options.saveConfig(removeExtensionActivation(previousConfig, app.extensionId));\n if (!saved.saved) throw new Error(saved.error ?? 'Failed to uninstall local app');\n configSaved = true;\n this.store.markUninstalled(id);\n this.refreshExtensions('local-app-uninstall');\n } catch (error) {\n if (moved && existsSync(backup)) renameSync(backup, target);\n if (configSaved) await this.options.saveConfig(previousConfig);\n throw error;\n } finally {\n rmSync(transactionRoot, { recursive: true, force: true });\n }\n this.options.emit('local_app.uninstalled', { appId: id, projectId: app.projectId });\n return this.get(id)!;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.js","names":[],"sources":["../../../src/local-apps/store.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { getSqliteDatabase, runSqliteWriteTransaction } from '../storage/sqlite/index.js';\nimport type {\n LocalApp,\n LocalAppAcceptanceCheck,\n LocalAppAcceptanceRun,\n LocalAppRelease,\n LocalAppStatus,\n LocalAppUiGrant,\n RecordLocalAppAcceptanceInput,\n} from './types.js';\n\ntype LocalAppRow = {\n app_id: string;\n extension_id: string;\n project_id: string;\n name: string;\n description: string | null;\n idea: string;\n status: string;\n workspace_root: string;\n preview_token: string;\n draft_version: number;\n active_version: number | null;\n created_at: number;\n updated_at: number;\n installed_at: number | null;\n installation_state: string;\n enabled: number;\n active_release_id: string | null;\n};\n\ntype LocalAppReleaseRow = {\n release_id: string;\n app_id: string;\n version: number;\n source_hash: string;\n artifact_path: string | null;\n manifest_json: string;\n health_status: string;\n created_at: number;\n activated_at: number | null;\n};\n\ntype LocalAppAcceptanceRunRow = {\n run_id: string;\n app_id: string;\n source_hash: string;\n status: string;\n checks_json: string;\n interactive_count: number;\n created_at: number;\n};\n\ntype LocalAppGrantRow = {\n extension_id: string;\n app_id: string | null;\n manifest_digest: string;\n permissions_json: string;\n granted_at: number;\n revoked_at: number | null;\n};\n\nexport interface StoredLocalAppRelease extends LocalAppRelease {\n artifactPath: string;\n manifestJson: string;\n}\n\nfunction fromRow(row: LocalAppRow): LocalApp {\n return {\n id: row.app_id,\n extensionId: row.extension_id,\n projectId: row.project_id,\n name: row.name,\n description: row.description ?? undefined,\n idea: row.idea,\n status: row.status as LocalAppStatus,\n workspaceRoot: row.workspace_root,\n draftVersion: row.draft_version,\n activeVersion: row.active_version ?? undefined,\n activeReleaseId: row.active_release_id ?? undefined,\n installationState: row.installation_state as LocalApp['installationState'],\n enabled: row.enabled === 1,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n installedAt: row.installed_at ?? undefined,\n };\n}\n\nfunction releaseFromRow(row: LocalAppReleaseRow, activeReleaseId?: string): StoredLocalAppRelease {\n return {\n id: row.release_id,\n appId: row.app_id,\n version: row.version,\n sourceHash: row.source_hash,\n artifactPath: row.artifact_path ?? '',\n manifestJson: row.manifest_json,\n healthStatus: row.health_status as LocalAppRelease['healthStatus'],\n createdAt: row.created_at,\n activatedAt: row.activated_at ?? undefined,\n isActive: row.release_id === activeReleaseId,\n };\n}\n\nfunction acceptanceRunFromRow(row: LocalAppAcceptanceRunRow): LocalAppAcceptanceRun {\n return {\n id: row.run_id,\n appId: row.app_id,\n sourceHash: row.source_hash,\n status: row.status as LocalAppAcceptanceRun['status'],\n checks: JSON.parse(row.checks_json) as LocalAppAcceptanceCheck[],\n interactiveCount: row.interactive_count,\n createdAt: row.created_at,\n };\n}\n\nexport class LocalAppStore {\n create(input: {\n extensionId: string;\n projectId: string;\n name: string;\n description?: string;\n idea: string;\n workspaceRoot: string;\n previewToken: string;\n }): LocalApp {\n const now = Date.now();\n const id = randomUUID();\n runSqliteWriteTransaction((db) => {\n db.prepare(`INSERT INTO local_apps (\n app_id, extension_id, project_id, name, description, idea, status,\n workspace_root, preview_token, draft_version, created_at, updated_at\n ) VALUES (?, ?, ?, ?, ?, ?, 'preview_ready', ?, ?, 1, ?, ?)`).run(\n id,\n input.extensionId,\n input.projectId,\n input.name,\n input.description ?? null,\n input.idea,\n input.workspaceRoot,\n input.previewToken,\n now,\n now,\n );\n });\n return this.get(id)!;\n }\n\n get(id: string): LocalApp | null {\n const row = getSqliteDatabase().prepare('SELECT * FROM local_apps WHERE app_id = ?').get(id) as LocalAppRow | undefined;\n return row ? fromRow(row) : null;\n }\n\n findByProjectId(projectId: string): LocalApp | null {\n const row = getSqliteDatabase()\n .prepare('SELECT * FROM local_apps WHERE project_id = ?')\n .get(projectId) as LocalAppRow | undefined;\n return row ? fromRow(row) : null;\n }\n\n findByExtensionId(extensionId: string): LocalApp | null {\n const row = getSqliteDatabase()\n .prepare('SELECT * FROM local_apps WHERE extension_id = ?')\n .get(extensionId) as LocalAppRow | undefined;\n return row ? fromRow(row) : null;\n }\n\n list(): LocalApp[] {\n const rows = getSqliteDatabase().prepare('SELECT * FROM local_apps ORDER BY updated_at DESC').all() as LocalAppRow[];\n return rows.map(fromRow);\n }\n\n findByPreviewToken(previewToken: string): LocalApp | null {\n const row = getSqliteDatabase().prepare('SELECT * FROM local_apps WHERE preview_token = ?').get(previewToken) as LocalAppRow | undefined;\n return row ? fromRow(row) : null;\n }\n\n getPreviewToken(id: string): string | null {\n const row = getSqliteDatabase().prepare('SELECT preview_token FROM local_apps WHERE app_id = ?').get(id) as { preview_token: string } | undefined;\n return row?.preview_token ?? null;\n }\n\n listReleases(appId: string): StoredLocalAppRelease[] {\n const app = this.get(appId);\n const rows = getSqliteDatabase()\n .prepare('SELECT * FROM local_app_releases WHERE app_id = ? ORDER BY version DESC')\n .all(appId) as LocalAppReleaseRow[];\n return rows.map((row) => releaseFromRow(row, app?.activeReleaseId));\n }\n\n getRelease(appId: string, releaseId: string): StoredLocalAppRelease | null {\n const app = this.get(appId);\n const row = getSqliteDatabase()\n .prepare('SELECT * FROM local_app_releases WHERE app_id = ? AND release_id = ?')\n .get(appId, releaseId) as LocalAppReleaseRow | undefined;\n return row ? releaseFromRow(row, app?.activeReleaseId) : null;\n }\n\n listAcceptanceRuns(appId: string, limit = 20): LocalAppAcceptanceRun[] {\n const rows = getSqliteDatabase()\n .prepare('SELECT * FROM local_app_acceptance_runs WHERE app_id = ? ORDER BY created_at DESC, rowid DESC LIMIT ?')\n .all(appId, Math.max(1, Math.min(Math.floor(limit), 100))) as LocalAppAcceptanceRunRow[];\n return rows.map(acceptanceRunFromRow);\n }\n\n getLatestAcceptanceForSource(appId: string, sourceHash: string): LocalAppAcceptanceRun | null {\n const row = getSqliteDatabase()\n .prepare(`SELECT * FROM local_app_acceptance_runs\n WHERE app_id = ? AND source_hash = ? ORDER BY created_at DESC, rowid DESC LIMIT 1`)\n .get(appId, sourceHash) as LocalAppAcceptanceRunRow | undefined;\n return row ? acceptanceRunFromRow(row) : null;\n }\n\n getUiGrant(extensionId: string, manifestDigest: string): LocalAppUiGrant | null {\n const row = getSqliteDatabase()\n .prepare(`SELECT * FROM extension_ui_grants\n WHERE extension_id = ? AND manifest_digest = ? AND revoked_at IS NULL`)\n .get(extensionId, manifestDigest) as LocalAppGrantRow | undefined;\n if (!row) return null;\n return {\n granted: true,\n extensionId: row.extension_id,\n appId: row.app_id ?? undefined,\n manifestDigest: row.manifest_digest,\n permissions: JSON.parse(row.permissions_json) as string[],\n grantedAt: row.granted_at,\n };\n }\n\n saveUiGrant(input: {\n extensionId: string;\n appId?: string;\n manifestDigest: string;\n permissions: string[];\n }): LocalAppUiGrant {\n const grantedAt = Date.now();\n getSqliteDatabase().prepare(`INSERT INTO extension_ui_grants (\n extension_id, app_id, manifest_digest, permissions_json, granted_at, revoked_at\n ) VALUES (?, ?, ?, ?, ?, NULL)\n ON CONFLICT(extension_id, manifest_digest) DO UPDATE SET\n app_id = excluded.app_id,\n permissions_json = excluded.permissions_json,\n granted_at = excluded.granted_at,\n revoked_at = NULL`).run(\n input.extensionId,\n input.appId ?? null,\n input.manifestDigest,\n JSON.stringify(input.permissions),\n grantedAt,\n );\n return {\n granted: true,\n extensionId: input.extensionId,\n appId: input.appId,\n manifestDigest: input.manifestDigest,\n permissions: input.permissions,\n grantedAt,\n };\n }\n\n recordAcceptance(appId: string, input: RecordLocalAppAcceptanceInput): LocalAppAcceptanceRun {\n const checksJson = JSON.stringify(input.checks);\n const latest = this.listAcceptanceRuns(appId, 1)[0];\n if (latest\n && latest.sourceHash === input.sourceHash\n && latest.status === input.status\n && latest.interactiveCount === input.interactiveCount\n && JSON.stringify(latest.checks) === checksJson) {\n return latest;\n }\n const row: LocalAppAcceptanceRunRow = {\n run_id: randomUUID(),\n app_id: appId,\n source_hash: input.sourceHash,\n status: input.status,\n checks_json: checksJson,\n interactive_count: input.interactiveCount,\n created_at: Date.now(),\n };\n getSqliteDatabase().prepare(`INSERT INTO local_app_acceptance_runs (\n run_id, app_id, source_hash, status, checks_json, interactive_count, created_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?)`).run(\n row.run_id,\n row.app_id,\n row.source_hash,\n row.status,\n row.checks_json,\n row.interactive_count,\n row.created_at,\n );\n return acceptanceRunFromRow(row);\n }\n\n markInstalled(input: {\n id: string;\n version: number;\n sourceHash: string;\n artifactPath: string;\n manifestJson: string;\n }): LocalApp {\n const now = Date.now();\n const releaseId = randomUUID();\n runSqliteWriteTransaction((db) => {\n db.prepare(`INSERT INTO local_app_releases (\n release_id, app_id, version, source_hash, artifact_path, manifest_json,\n health_status, created_at, activated_at\n ) VALUES (?, ?, ?, ?, ?, ?, 'healthy', ?, ?)`).run(\n releaseId,\n input.id,\n input.version,\n input.sourceHash,\n input.artifactPath,\n input.manifestJson,\n now,\n now,\n );\n db.prepare(`UPDATE local_apps SET status = 'installed', active_version = ?, active_release_id = ?,\n draft_version = ?, installation_state = 'installed', enabled = 1,\n installed_at = COALESCE(installed_at, ?), updated_at = ? WHERE app_id = ?`)\n .run(input.version, releaseId, input.version + 1, now, now, input.id);\n });\n return this.get(input.id)!;\n }\n\n activateRelease(appId: string, releaseId: string): LocalApp {\n const release = this.getRelease(appId, releaseId);\n if (!release) throw new Error('Local app release not found');\n const now = Date.now();\n runSqliteWriteTransaction((db) => {\n db.prepare('UPDATE local_app_releases SET activated_at = ? WHERE release_id = ?').run(now, releaseId);\n db.prepare(`UPDATE local_apps SET status = 'installed', active_version = ?, active_release_id = ?,\n installation_state = 'installed', enabled = 1, updated_at = ? WHERE app_id = ?`)\n .run(release.version, releaseId, now, appId);\n });\n return this.get(appId)!;\n }\n\n setEnabled(appId: string, enabled: boolean): LocalApp {\n const now = Date.now();\n getSqliteDatabase().prepare('UPDATE local_apps SET enabled = ?, updated_at = ? WHERE app_id = ?')\n .run(enabled ? 1 : 0, now, appId);\n const app = this.get(appId);\n if (!app) throw new Error('Local app not found');\n return app;\n }\n\n markUninstalled(appId: string): LocalApp {\n const now = Date.now();\n getSqliteDatabase().prepare(`UPDATE local_apps SET status = 'preview_ready', active_version = NULL,\n active_release_id = NULL, installation_state = 'not_installed', enabled = 0, updated_at = ? WHERE app_id = ?`)\n .run(now, appId);\n const app = this.get(appId);\n if (!app) throw new Error('Local app not found');\n return app;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunk.js","names":[],"sources":["../../../src/markdown/chunk.ts"],"sourcesContent":["/**\n * Text chunking utilities for markdown processing\n *\n * Provides fence-aware text splitting for Telegram message limits.\n */\n\nimport { findFenceSpanAt, isSafeFenceBreak, parseFenceSpans } from \"./fences.js\";\n\n/**\n * Split text into chunks that fit within a character limit.\n * Tries to break at natural boundaries (newlines, word boundaries).\n */\nexport function chunkText(text: string, limit: number): string[] {\n if (!text) {\n return [];\n }\n if (limit <= 0) {\n return [text];\n }\n if (text.length <= limit) {\n return [text];\n }\n\n const chunks: string[] = [];\n let remaining = text;\n\n while (remaining.length > limit) {\n const window = remaining.slice(0, limit);\n\n // Try to find a good break point\n const breakIdx = findBreakPoint(window, remaining, limit);\n\n let rawChunk = remaining.slice(0, breakIdx);\n if (!rawChunk) {\n // Force break at limit if no good breakpoint found\n rawChunk = remaining.slice(0, limit);\n chunks.push(rawChunk);\n remaining = remaining.slice(limit);\n continue;\n }\n\n const brokeOnSeparator = breakIdx < remaining.length && /\\s/.test(remaining[breakIdx]);\n const nextStart = Math.min(remaining.length, breakIdx + (brokeOnSeparator ? 1 : 0));\n let next = remaining.slice(nextStart);\n\n // Strip leading newlines from next chunk\n next = stripLeadingNewlines(next);\n\n chunks.push(rawChunk);\n remaining = next;\n }\n\n if (remaining.length) {\n chunks.push(remaining);\n }\n\n return chunks;\n}\n\n/**\n * Find a good break point in the window, considering fence boundaries.\n */\nfunction findBreakPoint(window: string, remaining: string, limit: number): number {\n const spans = parseFenceSpans(remaining);\n\n // Scan for breakpoints\n let lastNewline = -1;\n let lastWhitespace = -1;\n\n for (let i = 0; i < window.length; i++) {\n if (!isSafeFenceBreak(spans, i)) {\n continue;\n }\n\n const char = window[i];\n if (char === \"\\n\") {\n lastNewline = i;\n } else if (/\\s/.test(char)) {\n lastWhitespace = i;\n }\n }\n\n // Prefer newline, then whitespace, then force at limit\n if (lastNewline > 0) {\n return lastNewline;\n }\n if (lastWhitespace > 0) {\n return lastWhitespace;\n }\n\n // Check if we're inside a fence\n const fence = findFenceSpanAt(spans, limit);\n if (fence) {\n // Try to break at the end of the fence's opening line\n const fenceEnd = fence.start + fence.openLine.length;\n if (fenceEnd < limit && fenceEnd > 0) {\n return fenceEnd;\n }\n }\n\n return limit;\n}\n\nfunction stripLeadingNewlines(value: string): string {\n let i = 0;\n while (i < value.length && value[i] === \"\\n\") {\n i++;\n }\n return i > 0 ? value.slice(i) : value;\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAgB,UAAU,MAAc,OAAyB;AAC/D,KAAI,CAAC,KACH,QAAO,EAAE;AAEX,KAAI,SAAS,EACX,QAAO,CAAC,KAAK;AAEf,KAAI,KAAK,UAAU,MACjB,QAAO,CAAC,KAAK;CAGf,MAAM,SAAmB,EAAE;CAC3B,IAAI,YAAY;AAEhB,QAAO,UAAU,SAAS,OAAO;EAI/B,MAAM,WAAW,eAHF,UAAU,MAAM,GAAG,MAGI,EAAE,WAAW,MAAM;EAEzD,IAAI,WAAW,UAAU,MAAM,GAAG,SAAS;AAC3C,MAAI,CAAC,UAAU;AAEb,cAAW,UAAU,MAAM,GAAG,MAAM;AACpC,UAAO,KAAK,SAAS;AACrB,eAAY,UAAU,MAAM,MAAM;AAClC;;EAGF,MAAM,mBAAmB,WAAW,UAAU,UAAU,KAAK,KAAK,UAAU,UAAU;EACtF,MAAM,YAAY,KAAK,IAAI,UAAU,QAAQ,YAAY,mBAAmB,IAAI,GAAG;EACnF,IAAI,OAAO,UAAU,MAAM,UAAU;AAGrC,SAAO,qBAAqB,KAAK;AAEjC,SAAO,KAAK,SAAS;AACrB,cAAY;;AAGd,KAAI,UAAU,OACZ,QAAO,KAAK,UAAU;AAGxB,QAAO;;;;;AAMT,SAAS,eAAe,QAAgB,WAAmB,OAAuB;CAChF,MAAM,QAAQ,gBAAgB,UAAU;CAGxC,IAAI,cAAc;CAClB,IAAI,iBAAiB;AAErB,MAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,MAAI,CAAC,iBAAiB,OAAO,EAAE,CAC7B;EAGF,MAAM,OAAO,OAAO;AACpB,MAAI,SAAS,KACX,eAAc;WACL,KAAK,KAAK,KAAK,CACxB,kBAAiB;;AAKrB,KAAI,cAAc,EAChB,QAAO;AAET,KAAI,iBAAiB,EACnB,QAAO;CAIT,MAAM,QAAQ,gBAAgB,OAAO,MAAM;AAC3C,KAAI,OAAO;EAET,MAAM,WAAW,MAAM,QAAQ,MAAM,SAAS;AAC9C,MAAI,WAAW,SAAS,WAAW,EACjC,QAAO;;AAIX,QAAO;;AAGT,SAAS,qBAAqB,OAAuB;CACnD,IAAI,IAAI;AACR,QAAO,IAAI,MAAM,UAAU,MAAM,OAAO,KACtC;AAEF,QAAO,IAAI,IAAI,MAAM,MAAM,EAAE,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-spans.js","names":[],"sources":["../../../src/markdown/code-spans.ts"],"sourcesContent":["import { parseFenceSpans, type FenceSpan } from \"./fences.js\";\n\nexport type InlineCodeState = {\n open: boolean;\n ticks: number;\n};\n\nexport function createInlineCodeState(): InlineCodeState {\n return { open: false, ticks: 0 };\n}\n\ntype InlineCodeSpansResult = {\n spans: Array<[number, number]>;\n state: InlineCodeState;\n};\n\nexport type CodeSpanIndex = {\n inlineState: InlineCodeState;\n isInside: (index: number) => boolean;\n};\n\nexport function buildCodeSpanIndex(text: string, inlineState?: InlineCodeState): CodeSpanIndex {\n const fenceSpans = parseFenceSpans(text);\n const startState = inlineState\n ? { open: inlineState.open, ticks: inlineState.ticks }\n : createInlineCodeState();\n const { spans: inlineSpans, state: nextInlineState } = parseInlineCodeSpans(\n text,\n fenceSpans,\n startState,\n );\n\n return {\n inlineState: nextInlineState,\n isInside: (index: number) =>\n isInsideFenceSpan(index, fenceSpans) || isInsideInlineSpan(index, inlineSpans),\n };\n}\n\nfunction parseInlineCodeSpans(\n text: string,\n fenceSpans: FenceSpan[],\n initialState: InlineCodeState,\n): InlineCodeSpansResult {\n const spans: Array<[number, number]> = [];\n let open = initialState.open;\n let ticks = initialState.ticks;\n let openStart = open ? 0 : -1;\n\n let i = 0;\n while (i < text.length) {\n const fence = findFenceSpanAtInclusive(fenceSpans, i);\n if (fence) {\n i = fence.end;\n continue;\n }\n\n if (text[i] !== \"`\") {\n i += 1;\n continue;\n }\n\n const runStart = i;\n let runLength = 0;\n while (i < text.length && text[i] === \"`\") {\n runLength += 1;\n i += 1;\n }\n\n if (!open) {\n open = true;\n ticks = runLength;\n openStart = runStart;\n continue;\n }\n\n if (runLength === ticks) {\n spans.push([openStart, i]);\n open = false;\n ticks = 0;\n openStart = -1;\n }\n }\n\n if (open) {\n spans.push([openStart, text.length]);\n }\n\n return {\n spans,\n state: { open, ticks },\n };\n}\n\nfunction findFenceSpanAtInclusive(spans: FenceSpan[], index: number): FenceSpan | undefined {\n return spans.find((span) => index >= span.start && index < span.end);\n}\n\nfunction isInsideFenceSpan(index: number, spans: FenceSpan[]): boolean {\n return spans.some((span) => index >= span.start && index < span.end);\n}\n\nfunction isInsideInlineSpan(index: number, spans: Array<[number, number]>): boolean {\n return spans.some(([start, end]) => index >= start && index < end);\n}\n"],"mappings":";;AAOA,SAAgB,wBAAyC;AACvD,QAAO;EAAE,MAAM;EAAO,OAAO;EAAG;;AAalC,SAAgB,mBAAmB,MAAc,aAA8C;CAC7F,MAAM,aAAa,gBAAgB,KAAK;CAIxC,MAAM,EAAE,OAAO,aAAa,OAAO,oBAAoB,qBACrD,MACA,YALiB,cACf;EAAE,MAAM,YAAY;EAAM,OAAO,YAAY;EAAO,GACpD,uBAAuB,CAK1B;AAED,QAAO;EACL,aAAa;EACb,WAAW,UACT,kBAAkB,OAAO,WAAW,IAAI,mBAAmB,OAAO,YAAY;EACjF;;AAGH,SAAS,qBACP,MACA,YACA,cACuB;CACvB,MAAM,QAAiC,EAAE;CACzC,IAAI,OAAO,aAAa;CACxB,IAAI,QAAQ,aAAa;CACzB,IAAI,YAAY,OAAO,IAAI;CAE3B,IAAI,IAAI;AACR,QAAO,IAAI,KAAK,QAAQ;EACtB,MAAM,QAAQ,yBAAyB,YAAY,EAAE;AACrD,MAAI,OAAO;AACT,OAAI,MAAM;AACV;;AAGF,MAAI,KAAK,OAAO,KAAK;AACnB,QAAK;AACL;;EAGF,MAAM,WAAW;EACjB,IAAI,YAAY;AAChB,SAAO,IAAI,KAAK,UAAU,KAAK,OAAO,KAAK;AACzC,gBAAa;AACb,QAAK;;AAGP,MAAI,CAAC,MAAM;AACT,UAAO;AACP,WAAQ;AACR,eAAY;AACZ;;AAGF,MAAI,cAAc,OAAO;AACvB,SAAM,KAAK,CAAC,WAAW,EAAE,CAAC;AAC1B,UAAO;AACP,WAAQ;AACR,eAAY;;;AAIhB,KAAI,KACF,OAAM,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC;AAGtC,QAAO;EACL;EACA,OAAO;GAAE;GAAM;GAAO;EACvB;;AAGH,SAAS,yBAAyB,OAAoB,OAAsC;AAC1F,QAAO,MAAM,MAAM,SAAS,SAAS,KAAK,SAAS,QAAQ,KAAK,IAAI;;AAGtE,SAAS,kBAAkB,OAAe,OAA6B;AACrE,QAAO,MAAM,MAAM,SAAS,SAAS,KAAK,SAAS,QAAQ,KAAK,IAAI;;AAGtE,SAAS,mBAAmB,OAAe,OAAyC;AAClF,QAAO,MAAM,MAAM,CAAC,OAAO,SAAS,SAAS,SAAS,QAAQ,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fences.js","names":[],"sources":["../../../src/markdown/fences.ts"],"sourcesContent":["export type FenceSpan = {\n start: number;\n end: number;\n openLine: string;\n marker: string;\n indent: string;\n};\n\nexport function parseFenceSpans(buffer: string): FenceSpan[] {\n const spans: FenceSpan[] = [];\n let open:\n | {\n start: number;\n markerChar: string;\n markerLen: number;\n openLine: string;\n marker: string;\n indent: string;\n }\n | undefined;\n\n let offset = 0;\n while (offset <= buffer.length) {\n const nextNewline = buffer.indexOf(\"\\n\", offset);\n const lineEnd = nextNewline === -1 ? buffer.length : nextNewline;\n const line = buffer.slice(offset, lineEnd);\n\n const match = line.match(/^( {0,3})(`{3,}|~{3,})(.*)$/);\n if (match) {\n const indent = match[1];\n const marker = match[2];\n const markerChar = marker[0];\n const markerLen = marker.length;\n if (!open) {\n open = {\n start: offset,\n markerChar,\n markerLen,\n openLine: line,\n marker,\n indent,\n };\n } else if (open.markerChar === markerChar && markerLen >= open.markerLen) {\n const end = lineEnd;\n spans.push({\n start: open.start,\n end,\n openLine: open.openLine,\n marker: open.marker,\n indent: open.indent,\n });\n open = undefined;\n }\n }\n\n if (nextNewline === -1) {\n break;\n }\n offset = nextNewline + 1;\n }\n\n if (open) {\n spans.push({\n start: open.start,\n end: buffer.length,\n openLine: open.openLine,\n marker: open.marker,\n indent: open.indent,\n });\n }\n\n return spans;\n}\n\nexport function findFenceSpanAt(spans: FenceSpan[], index: number): FenceSpan | undefined {\n return spans.find((span) => index > span.start && index < span.end);\n}\n\nexport function isSafeFenceBreak(spans: FenceSpan[], index: number): boolean {\n return !findFenceSpanAt(spans, index);\n}\n"],"mappings":";AAQA,SAAgB,gBAAgB,QAA6B;CAC3D,MAAM,QAAqB,EAAE;CAC7B,IAAI;CAWJ,IAAI,SAAS;AACb,QAAO,UAAU,OAAO,QAAQ;EAC9B,MAAM,cAAc,OAAO,QAAQ,MAAM,OAAO;EAChD,MAAM,UAAU,gBAAgB,KAAK,OAAO,SAAS;EACrD,MAAM,OAAO,OAAO,MAAM,QAAQ,QAAQ;EAE1C,MAAM,QAAQ,KAAK,MAAM,8BAA8B;AACvD,MAAI,OAAO;GACT,MAAM,SAAS,MAAM;GACrB,MAAM,SAAS,MAAM;GACrB,MAAM,aAAa,OAAO;GAC1B,MAAM,YAAY,OAAO;AACzB,OAAI,CAAC,KACH,QAAO;IACL,OAAO;IACP;IACA;IACA,UAAU;IACV;IACA;IACD;YACQ,KAAK,eAAe,cAAc,aAAa,KAAK,WAAW;IACxE,MAAM,MAAM;AACZ,UAAM,KAAK;KACT,OAAO,KAAK;KACZ;KACA,UAAU,KAAK;KACf,QAAQ,KAAK;KACb,QAAQ,KAAK;KACd,CAAC;AACF,WAAO,KAAA;;;AAIX,MAAI,gBAAgB,GAClB;AAEF,WAAS,cAAc;;AAGzB,KAAI,KACF,OAAM,KAAK;EACT,OAAO,KAAK;EACZ,KAAK,OAAO;EACZ,UAAU,KAAK;EACf,QAAQ,KAAK;EACb,QAAQ,KAAK;EACd,CAAC;AAGJ,QAAO;;AAGT,SAAgB,gBAAgB,OAAoB,OAAsC;AACxF,QAAO,MAAM,MAAM,SAAS,QAAQ,KAAK,SAAS,QAAQ,KAAK,IAAI;;AAGrE,SAAgB,iBAAiB,OAAoB,OAAwB;AAC3E,QAAO,CAAC,gBAAgB,OAAO,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter.js","names":[],"sources":["../../../src/markdown/frontmatter.ts"],"sourcesContent":["import yaml from \"js-yaml\";\n\nexport type ParsedFrontmatter = Record<string, string>;\n\nfunction stripQuotes(value: string): string {\n if (\n (value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\n ) {\n return value.slice(1, -1);\n }\n return value;\n}\n\nfunction coerceFrontmatterValue(value: unknown): string | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return value.trim();\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n if (typeof value === \"object\") {\n try {\n return JSON.stringify(value);\n } catch {\n return undefined;\n }\n }\n return undefined;\n}\n\nfunction parseYamlFrontmatter(block: string): ParsedFrontmatter | null {\n try {\n const parsed = yaml.load(block) as unknown;\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n return null;\n }\n const result: ParsedFrontmatter = {};\n for (const [rawKey, value] of Object.entries(parsed as Record<string, unknown>)) {\n const key = rawKey.trim();\n if (!key) {\n continue;\n }\n const coerced = coerceFrontmatterValue(value);\n if (coerced === undefined) {\n continue;\n }\n result[key] = coerced;\n }\n return result;\n } catch {\n return null;\n }\n}\n\nfunction extractMultiLineValue(\n lines: string[],\n startIndex: number,\n): { value: string; linesConsumed: number } {\n const startLine = lines[startIndex];\n const match = startLine.match(/^([\\w-]+):\\s*(.*)$/);\n if (!match) {\n return { value: \"\", linesConsumed: 1 };\n }\n\n const inlineValue = match[2].trim();\n if (inlineValue) {\n return { value: inlineValue, linesConsumed: 1 };\n }\n\n const valueLines: string[] = [];\n let i = startIndex + 1;\n\n while (i < lines.length) {\n const line = lines[i];\n if (line.length > 0 && !line.startsWith(\" \") && !line.startsWith(\"\\t\")) {\n break;\n }\n valueLines.push(line);\n i++;\n }\n\n const combined = valueLines.join(\"\\n\").trim();\n return { value: combined, linesConsumed: i - startIndex };\n}\n\nfunction parseLineFrontmatter(block: string): ParsedFrontmatter {\n const frontmatter: ParsedFrontmatter = {};\n const lines = block.split(\"\\n\");\n let i = 0;\n\n while (i < lines.length) {\n const line = lines[i];\n const match = line.match(/^([\\w-]+):\\s*(.*)$/);\n if (!match) {\n i++;\n continue;\n }\n\n const key = match[1];\n const inlineValue = match[2].trim();\n\n if (!key) {\n i++;\n continue;\n }\n\n if (!inlineValue && i + 1 < lines.length) {\n const nextLine = lines[i + 1];\n if (nextLine.startsWith(\" \") || nextLine.startsWith(\"\\t\")) {\n const { value, linesConsumed } = extractMultiLineValue(lines, i);\n if (value) {\n frontmatter[key] = value;\n }\n i += linesConsumed;\n continue;\n }\n }\n\n const value = stripQuotes(inlineValue);\n if (value) {\n frontmatter[key] = value;\n }\n i++;\n }\n\n return frontmatter;\n}\n\nexport function parseFrontmatterBlock(content: string): ParsedFrontmatter {\n const normalized = content.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n if (!normalized.startsWith(\"---\")) {\n return {};\n }\n const endIndex = normalized.indexOf(\"\\n---\", 3);\n if (endIndex === -1) {\n return {};\n }\n const block = normalized.slice(4, endIndex);\n\n const lineParsed = parseLineFrontmatter(block);\n const yamlParsed = parseYamlFrontmatter(block);\n if (yamlParsed === null) {\n return lineParsed;\n }\n\n const merged: ParsedFrontmatter = { ...yamlParsed };\n for (const [key, value] of Object.entries(lineParsed)) {\n if (value.startsWith(\"{\") || value.startsWith(\"[\")) {\n merged[key] = value;\n }\n }\n return merged;\n}\n\n// --- Full-document YAML frontmatter (body split) — used by skills, profile Markdown seeding ---\n\nexport interface FrontmatterSplit<T = Record<string, unknown>> {\n frontmatter: T;\n content: string;\n}\n\n/**\n * Parse YAML frontmatter from markdown: returns metadata plus body after the closing `---`.\n */\nexport function parseFrontmatter<T = Record<string, unknown>>(content: string): FrontmatterSplit<T> {\n const frontmatterMatch = content.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n([\\s\\S]*)$/);\n\n if (!frontmatterMatch) {\n return {\n frontmatter: {} as T,\n content: content.trim(),\n };\n }\n\n const [, frontmatterRaw, bodyContent] = frontmatterMatch;\n\n try {\n const frontmatter = yaml.load(frontmatterRaw) as Record<string, unknown>;\n return {\n frontmatter: (frontmatter || {}) as T,\n content: bodyContent.trim(),\n };\n } catch (error) {\n console.warn('Failed to parse frontmatter:', error);\n return {\n frontmatter: {} as T,\n content: bodyContent.trim(),\n };\n }\n}\n\n/**\n * Serialize frontmatter to YAML format (with closing --- only; opening --- included in dump by yaml.dump pattern from original util).\n */\nexport function serializeFrontmatter(frontmatter: Record<string, unknown>): string {\n return '---\\n' + yaml.dump(frontmatter) + '---';\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ir.js","names":[],"sources":["../../../src/markdown/ir.ts"],"sourcesContent":["import MarkdownIt from \"markdown-it\";\nimport { chunkText } from \"./chunk.js\";\nimport type { MarkdownTableMode } from \"../config/types.base.js\";\n\ntype ListState = {\n type: \"bullet\" | \"ordered\";\n index: number;\n};\n\ntype LinkState = {\n href: string;\n labelStart: number;\n};\n\ntype RenderEnv = {\n listStack: ListState[];\n};\n\ntype MarkdownToken = {\n type: string;\n content?: string;\n children?: MarkdownToken[];\n attrs?: [string, string][];\n attrGet?: (name: string) => string | null;\n};\n\nexport type MarkdownStyle =\n | \"bold\"\n | \"italic\"\n | \"strikethrough\"\n | \"code\"\n | \"code_block\"\n | \"spoiler\"\n | \"blockquote\";\n\nexport type MarkdownStyleSpan = {\n start: number;\n end: number;\n style: MarkdownStyle;\n};\n\nexport type MarkdownLinkSpan = {\n start: number;\n end: number;\n href: string;\n};\n\nexport type MarkdownIR = {\n text: string;\n styles: MarkdownStyleSpan[];\n links: MarkdownLinkSpan[];\n};\n\ntype OpenStyle = {\n style: MarkdownStyle;\n start: number;\n};\n\ntype RenderTarget = {\n text: string;\n styles: MarkdownStyleSpan[];\n openStyles: OpenStyle[];\n links: MarkdownLinkSpan[];\n linkStack: LinkState[];\n};\n\ntype TableCell = {\n text: string;\n styles: MarkdownStyleSpan[];\n links: MarkdownLinkSpan[];\n};\n\ntype TableState = {\n headers: TableCell[];\n rows: TableCell[][];\n currentRow: TableCell[];\n currentCell: RenderTarget | null;\n inHeader: boolean;\n};\n\ntype RenderState = RenderTarget & {\n env: RenderEnv;\n headingStyle: \"none\" | \"bold\";\n blockquotePrefix: string;\n enableSpoilers: boolean;\n tableMode: MarkdownTableMode;\n table: TableState | null;\n hasTables: boolean;\n};\n\nexport type MarkdownParseOptions = {\n linkify?: boolean;\n enableSpoilers?: boolean;\n headingStyle?: \"none\" | \"bold\";\n blockquotePrefix?: string;\n autolink?: boolean;\n /** How to render tables (off|bullets|code). Default: off. */\n tableMode?: MarkdownTableMode;\n};\n\nfunction createMarkdownIt(options: MarkdownParseOptions): MarkdownIt {\n const md = new MarkdownIt({\n html: false,\n linkify: options.linkify ?? true,\n breaks: false,\n typographer: false,\n });\n md.enable(\"strikethrough\");\n if (options.tableMode && options.tableMode !== \"off\") {\n md.enable(\"table\");\n } else {\n md.disable(\"table\");\n }\n if (options.autolink === false) {\n md.disable(\"autolink\");\n }\n return md;\n}\n\nfunction getAttr(token: MarkdownToken, name: string): string | null {\n if (token.attrGet) {\n return token.attrGet(name);\n }\n if (token.attrs) {\n for (const [key, value] of token.attrs) {\n if (key === name) {\n return value;\n }\n }\n }\n return null;\n}\n\nfunction createTextToken(base: MarkdownToken, content: string): MarkdownToken {\n return { ...base, type: \"text\", content, children: undefined };\n}\n\nfunction applySpoilerTokens(tokens: MarkdownToken[]): void {\n for (const token of tokens) {\n if (token.children && token.children.length > 0) {\n token.children = injectSpoilersIntoInline(token.children);\n }\n }\n}\n\nfunction injectSpoilersIntoInline(tokens: MarkdownToken[]): MarkdownToken[] {\n let totalDelims = 0;\n for (const token of tokens) {\n if (token.type !== \"text\") {\n continue;\n }\n const content = token.content ?? \"\";\n let i = 0;\n while (i < content.length) {\n const next = content.indexOf(\"||\", i);\n if (next === -1) {\n break;\n }\n totalDelims += 1;\n i = next + 2;\n }\n }\n\n if (totalDelims < 2) {\n return tokens;\n }\n const usableDelims = totalDelims - (totalDelims % 2);\n\n const result: MarkdownToken[] = [];\n const state = { spoilerOpen: false };\n let consumedDelims = 0;\n\n for (const token of tokens) {\n if (token.type !== \"text\") {\n result.push(token);\n continue;\n }\n\n const content = token.content ?? \"\";\n if (!content.includes(\"||\")) {\n result.push(token);\n continue;\n }\n\n let index = 0;\n while (index < content.length) {\n const next = content.indexOf(\"||\", index);\n if (next === -1) {\n if (index < content.length) {\n result.push(createTextToken(token, content.slice(index)));\n }\n break;\n }\n if (consumedDelims >= usableDelims) {\n result.push(createTextToken(token, content.slice(index)));\n break;\n }\n if (next > index) {\n result.push(createTextToken(token, content.slice(index, next)));\n }\n consumedDelims += 1;\n state.spoilerOpen = !state.spoilerOpen;\n result.push({\n type: state.spoilerOpen ? \"spoiler_open\" : \"spoiler_close\",\n });\n index = next + 2;\n }\n }\n\n return result;\n}\n\nfunction initRenderTarget(): RenderTarget {\n return {\n text: \"\",\n styles: [],\n openStyles: [],\n links: [],\n linkStack: [],\n };\n}\n\nfunction resolveRenderTarget(state: RenderState): RenderTarget {\n return state.table?.currentCell ?? state;\n}\n\nfunction appendText(state: RenderState, value: string) {\n if (!value) {\n return;\n }\n const target = resolveRenderTarget(state);\n target.text += value;\n}\n\nfunction openStyle(state: RenderState, style: MarkdownStyle) {\n const target = resolveRenderTarget(state);\n target.openStyles.push({ style, start: target.text.length });\n}\n\nfunction closeStyle(state: RenderState, style: MarkdownStyle) {\n const target = resolveRenderTarget(state);\n for (let i = target.openStyles.length - 1; i >= 0; i -= 1) {\n if (target.openStyles[i]?.style === style) {\n const start = target.openStyles[i].start;\n target.openStyles.splice(i, 1);\n const end = target.text.length;\n if (end > start) {\n target.styles.push({ start, end, style });\n }\n return;\n }\n }\n}\n\nfunction appendParagraphSeparator(state: RenderState) {\n if (state.env.listStack.length > 0) {\n return;\n }\n if (state.table) {\n return;\n } // Don't add paragraph separators inside tables\n state.text += \"\\n\\n\";\n}\n\nfunction appendListPrefix(state: RenderState) {\n const stack = state.env.listStack;\n const top = stack[stack.length - 1];\n if (!top) {\n return;\n }\n top.index += 1;\n const indent = \" \".repeat(Math.max(0, stack.length - 1));\n const prefix = top.type === \"ordered\" ? `${top.index}. ` : \"• \";\n state.text += `${indent}${prefix}`;\n}\n\nfunction renderInlineCode(state: RenderState, content: string) {\n if (!content) {\n return;\n }\n const target = resolveRenderTarget(state);\n const start = target.text.length;\n target.text += content;\n target.styles.push({ start, end: start + content.length, style: \"code\" });\n}\n\nfunction renderCodeBlock(state: RenderState, content: string) {\n let code = content ?? \"\";\n if (!code.endsWith(\"\\n\")) {\n code = `${code}\\n`;\n }\n const target = resolveRenderTarget(state);\n const start = target.text.length;\n target.text += code;\n target.styles.push({ start, end: start + code.length, style: \"code_block\" });\n if (state.env.listStack.length === 0) {\n target.text += \"\\n\";\n }\n}\n\nfunction handleLinkClose(state: RenderState) {\n const target = resolveRenderTarget(state);\n const link = target.linkStack.pop();\n if (!link?.href) {\n return;\n }\n const href = link.href.trim();\n if (!href) {\n return;\n }\n const start = link.labelStart;\n const end = target.text.length;\n if (end <= start) {\n target.links.push({ start, end, href });\n return;\n }\n target.links.push({ start, end, href });\n}\n\nfunction initTableState(): TableState {\n return {\n headers: [],\n rows: [],\n currentRow: [],\n currentCell: null,\n inHeader: false,\n };\n}\n\nfunction finishTableCell(cell: RenderTarget): TableCell {\n closeRemainingStyles(cell);\n return {\n text: cell.text,\n styles: cell.styles,\n links: cell.links,\n };\n}\n\nfunction trimCell(cell: TableCell): TableCell {\n const text = cell.text;\n let start = 0;\n let end = text.length;\n while (start < end && /\\s/.test(text[start] ?? \"\")) {\n start += 1;\n }\n while (end > start && /\\s/.test(text[end - 1] ?? \"\")) {\n end -= 1;\n }\n if (start === 0 && end === text.length) {\n return cell;\n }\n const trimmedText = text.slice(start, end);\n const trimmedLength = trimmedText.length;\n const trimmedStyles: MarkdownStyleSpan[] = [];\n for (const span of cell.styles) {\n const sliceStart = Math.max(0, span.start - start);\n const sliceEnd = Math.min(trimmedLength, span.end - start);\n if (sliceEnd > sliceStart) {\n trimmedStyles.push({ start: sliceStart, end: sliceEnd, style: span.style });\n }\n }\n const trimmedLinks: MarkdownLinkSpan[] = [];\n for (const span of cell.links) {\n const sliceStart = Math.max(0, span.start - start);\n const sliceEnd = Math.min(trimmedLength, span.end - start);\n if (sliceEnd > sliceStart) {\n trimmedLinks.push({ start: sliceStart, end: sliceEnd, href: span.href });\n }\n }\n return { text: trimmedText, styles: trimmedStyles, links: trimmedLinks };\n}\n\nfunction appendCell(state: RenderState, cell: TableCell) {\n if (!cell.text) {\n return;\n }\n const start = state.text.length;\n state.text += cell.text;\n for (const span of cell.styles) {\n state.styles.push({\n start: start + span.start,\n end: start + span.end,\n style: span.style,\n });\n }\n for (const link of cell.links) {\n state.links.push({\n start: start + link.start,\n end: start + link.end,\n href: link.href,\n });\n }\n}\n\nfunction appendCellTextOnly(state: RenderState, cell: TableCell) {\n if (!cell.text) {\n return;\n }\n state.text += cell.text;\n // Do not append styles - this is used for code blocks where inner styles would overlap\n}\n\nfunction renderTableAsBullets(state: RenderState) {\n if (!state.table) {\n return;\n }\n const headers = state.table.headers.map(trimCell);\n const rows = state.table.rows.map((row) => row.map(trimCell));\n\n // If no headers or rows, skip\n if (headers.length === 0 && rows.length === 0) {\n return;\n }\n\n // Determine if first column should be used as row labels\n // (common pattern: first column is category/feature name)\n const useFirstColAsLabel = headers.length > 1 && rows.length > 0;\n\n if (useFirstColAsLabel) {\n // Format: each row becomes a section with header as row[0], then key:value pairs\n for (const row of rows) {\n if (row.length === 0) {\n continue;\n }\n\n const rowLabel = row[0];\n if (rowLabel?.text) {\n const labelStart = state.text.length;\n appendCell(state, rowLabel);\n const labelEnd = state.text.length;\n if (labelEnd > labelStart) {\n state.styles.push({ start: labelStart, end: labelEnd, style: \"bold\" });\n }\n state.text += \"\\n\";\n }\n\n // Add each column as a bullet point\n for (let i = 1; i < row.length; i++) {\n const header = headers[i];\n const value = row[i];\n if (!value?.text) {\n continue;\n }\n state.text += \"• \";\n if (header?.text) {\n appendCell(state, header);\n state.text += \": \";\n } else {\n state.text += `Column ${i}: `;\n }\n appendCell(state, value);\n state.text += \"\\n\";\n }\n state.text += \"\\n\";\n }\n } else {\n // Simple table: just list headers and values\n for (const row of rows) {\n for (let i = 0; i < row.length; i++) {\n const header = headers[i];\n const value = row[i];\n if (!value?.text) {\n continue;\n }\n state.text += \"• \";\n if (header?.text) {\n appendCell(state, header);\n state.text += \": \";\n }\n appendCell(state, value);\n state.text += \"\\n\";\n }\n state.text += \"\\n\";\n }\n }\n}\n\nfunction renderTableAsCode(state: RenderState) {\n if (!state.table) {\n return;\n }\n const headers = state.table.headers.map(trimCell);\n const rows = state.table.rows.map((row) => row.map(trimCell));\n\n const columnCount = Math.max(headers.length, ...rows.map((row) => row.length));\n if (columnCount === 0) {\n return;\n }\n\n const widths = Array.from({ length: columnCount }, () => 0);\n const updateWidths = (cells: TableCell[]) => {\n for (let i = 0; i < columnCount; i += 1) {\n const cell = cells[i];\n const width = cell?.text.length ?? 0;\n if (widths[i] < width) {\n widths[i] = width;\n }\n }\n };\n updateWidths(headers);\n for (const row of rows) {\n updateWidths(row);\n }\n\n const codeStart = state.text.length;\n\n const appendRow = (cells: TableCell[]) => {\n state.text += \"|\";\n for (let i = 0; i < columnCount; i += 1) {\n state.text += \" \";\n const cell = cells[i];\n if (cell) {\n // Use text-only append to avoid overlapping styles with code_block\n appendCellTextOnly(state, cell);\n }\n const pad = widths[i] - (cell?.text.length ?? 0);\n if (pad > 0) {\n state.text += \" \".repeat(pad);\n }\n state.text += \" |\";\n }\n state.text += \"\\n\";\n };\n\n const appendDivider = () => {\n state.text += \"|\";\n for (let i = 0; i < columnCount; i += 1) {\n const dashCount = Math.max(3, widths[i]);\n state.text += ` ${\"-\".repeat(dashCount)} |`;\n }\n state.text += \"\\n\";\n };\n\n appendRow(headers);\n appendDivider();\n for (const row of rows) {\n appendRow(row);\n }\n\n const codeEnd = state.text.length;\n if (codeEnd > codeStart) {\n state.styles.push({ start: codeStart, end: codeEnd, style: \"code_block\" });\n }\n if (state.env.listStack.length === 0) {\n state.text += \"\\n\";\n }\n}\n\nfunction renderTokens(tokens: MarkdownToken[], state: RenderState): void {\n for (const token of tokens) {\n switch (token.type) {\n case \"inline\":\n if (token.children) {\n renderTokens(token.children, state);\n }\n break;\n case \"text\":\n appendText(state, token.content ?? \"\");\n break;\n case \"em_open\":\n openStyle(state, \"italic\");\n break;\n case \"em_close\":\n closeStyle(state, \"italic\");\n break;\n case \"strong_open\":\n openStyle(state, \"bold\");\n break;\n case \"strong_close\":\n closeStyle(state, \"bold\");\n break;\n case \"s_open\":\n openStyle(state, \"strikethrough\");\n break;\n case \"s_close\":\n closeStyle(state, \"strikethrough\");\n break;\n case \"code_inline\":\n renderInlineCode(state, token.content ?? \"\");\n break;\n case \"spoiler_open\":\n if (state.enableSpoilers) {\n openStyle(state, \"spoiler\");\n }\n break;\n case \"spoiler_close\":\n if (state.enableSpoilers) {\n closeStyle(state, \"spoiler\");\n }\n break;\n case \"link_open\": {\n const href = getAttr(token, \"href\") ?? \"\";\n const target = resolveRenderTarget(state);\n target.linkStack.push({ href, labelStart: target.text.length });\n break;\n }\n case \"link_close\":\n handleLinkClose(state);\n break;\n case \"image\":\n appendText(state, token.content ?? \"\");\n break;\n case \"softbreak\":\n case \"hardbreak\":\n appendText(state, \"\\n\");\n break;\n case \"paragraph_close\":\n appendParagraphSeparator(state);\n break;\n case \"heading_open\":\n if (state.headingStyle === \"bold\") {\n openStyle(state, \"bold\");\n }\n break;\n case \"heading_close\":\n if (state.headingStyle === \"bold\") {\n closeStyle(state, \"bold\");\n }\n appendParagraphSeparator(state);\n break;\n case \"blockquote_open\":\n if (state.blockquotePrefix) {\n state.text += state.blockquotePrefix;\n }\n openStyle(state, \"blockquote\");\n break;\n case \"blockquote_close\":\n closeStyle(state, \"blockquote\");\n break;\n case \"bullet_list_open\":\n // Add newline before nested list starts (so nested items appear on new line)\n if (state.env.listStack.length > 0) {\n state.text += \"\\n\";\n }\n state.env.listStack.push({ type: \"bullet\", index: 0 });\n break;\n case \"bullet_list_close\":\n state.env.listStack.pop();\n if (state.env.listStack.length === 0) {\n state.text += \"\\n\";\n }\n break;\n case \"ordered_list_open\": {\n // Add newline before nested list starts (so nested items appear on new line)\n if (state.env.listStack.length > 0) {\n state.text += \"\\n\";\n }\n const start = Number(getAttr(token, \"start\") ?? \"1\");\n state.env.listStack.push({ type: \"ordered\", index: start - 1 });\n break;\n }\n case \"ordered_list_close\":\n state.env.listStack.pop();\n if (state.env.listStack.length === 0) {\n state.text += \"\\n\";\n }\n break;\n case \"list_item_open\":\n appendListPrefix(state);\n break;\n case \"list_item_close\":\n // Avoid double newlines (nested list's last item already added newline)\n if (!state.text.endsWith(\"\\n\")) {\n state.text += \"\\n\";\n }\n break;\n case \"code_block\":\n case \"fence\":\n renderCodeBlock(state, token.content ?? \"\");\n break;\n case \"html_block\":\n case \"html_inline\":\n appendText(state, token.content ?? \"\");\n break;\n\n // Table handling\n case \"table_open\":\n if (state.tableMode !== \"off\") {\n state.table = initTableState();\n state.hasTables = true;\n }\n break;\n case \"table_close\":\n if (state.table) {\n if (state.tableMode === \"bullets\") {\n renderTableAsBullets(state);\n } else if (state.tableMode === \"code\") {\n renderTableAsCode(state);\n }\n }\n state.table = null;\n break;\n case \"thead_open\":\n if (state.table) {\n state.table.inHeader = true;\n }\n break;\n case \"thead_close\":\n if (state.table) {\n state.table.inHeader = false;\n }\n break;\n case \"tbody_open\":\n case \"tbody_close\":\n break;\n case \"tr_open\":\n if (state.table) {\n state.table.currentRow = [];\n }\n break;\n case \"tr_close\":\n if (state.table) {\n if (state.table.inHeader) {\n state.table.headers = state.table.currentRow;\n } else {\n state.table.rows.push(state.table.currentRow);\n }\n state.table.currentRow = [];\n }\n break;\n case \"th_open\":\n case \"td_open\":\n if (state.table) {\n state.table.currentCell = initRenderTarget();\n }\n break;\n case \"th_close\":\n case \"td_close\":\n if (state.table?.currentCell) {\n state.table.currentRow.push(finishTableCell(state.table.currentCell));\n state.table.currentCell = null;\n }\n break;\n\n case \"hr\":\n // Render as a visual separator\n state.text += \"───\\n\\n\";\n break;\n default:\n if (token.children) {\n renderTokens(token.children, state);\n }\n break;\n }\n }\n}\n\nfunction closeRemainingStyles(target: RenderTarget) {\n for (let i = target.openStyles.length - 1; i >= 0; i -= 1) {\n const open = target.openStyles[i];\n const end = target.text.length;\n if (end > open.start) {\n target.styles.push({\n start: open.start,\n end,\n style: open.style,\n });\n }\n }\n target.openStyles = [];\n}\n\nfunction clampStyleSpans(spans: MarkdownStyleSpan[], maxLength: number): MarkdownStyleSpan[] {\n const clamped: MarkdownStyleSpan[] = [];\n for (const span of spans) {\n const start = Math.max(0, Math.min(span.start, maxLength));\n const end = Math.max(start, Math.min(span.end, maxLength));\n if (end > start) {\n clamped.push({ start, end, style: span.style });\n }\n }\n return clamped;\n}\n\nfunction clampLinkSpans(spans: MarkdownLinkSpan[], maxLength: number): MarkdownLinkSpan[] {\n const clamped: MarkdownLinkSpan[] = [];\n for (const span of spans) {\n const start = Math.max(0, Math.min(span.start, maxLength));\n const end = Math.max(start, Math.min(span.end, maxLength));\n if (end > start) {\n clamped.push({ start, end, href: span.href });\n }\n }\n return clamped;\n}\n\nfunction mergeStyleSpans(spans: MarkdownStyleSpan[]): MarkdownStyleSpan[] {\n const sorted = [...spans].toSorted((a, b) => {\n if (a.start !== b.start) {\n return a.start - b.start;\n }\n if (a.end !== b.end) {\n return a.end - b.end;\n }\n return a.style.localeCompare(b.style);\n });\n\n const merged: MarkdownStyleSpan[] = [];\n for (const span of sorted) {\n const prev = merged[merged.length - 1];\n if (\n prev &&\n prev.style === span.style &&\n // Blockquotes are container blocks. Adjacent blockquote spans should not merge or\n // consecutive blockquotes can \"style bleed\" across the paragraph boundary.\n (span.start < prev.end || (span.start === prev.end && span.style !== \"blockquote\"))\n ) {\n prev.end = Math.max(prev.end, span.end);\n continue;\n }\n merged.push({ ...span });\n }\n return merged;\n}\n\nfunction sliceStyleSpans(\n spans: MarkdownStyleSpan[],\n start: number,\n end: number,\n): MarkdownStyleSpan[] {\n if (spans.length === 0) {\n return [];\n }\n const sliced: MarkdownStyleSpan[] = [];\n for (const span of spans) {\n const sliceStart = Math.max(span.start, start);\n const sliceEnd = Math.min(span.end, end);\n if (sliceEnd > sliceStart) {\n sliced.push({\n start: sliceStart - start,\n end: sliceEnd - start,\n style: span.style,\n });\n }\n }\n return mergeStyleSpans(sliced);\n}\n\nfunction sliceLinkSpans(spans: MarkdownLinkSpan[], start: number, end: number): MarkdownLinkSpan[] {\n if (spans.length === 0) {\n return [];\n }\n const sliced: MarkdownLinkSpan[] = [];\n for (const span of spans) {\n const sliceStart = Math.max(span.start, start);\n const sliceEnd = Math.min(span.end, end);\n if (sliceEnd > sliceStart) {\n sliced.push({\n start: sliceStart - start,\n end: sliceEnd - start,\n href: span.href,\n });\n }\n }\n return sliced;\n}\n\nexport function markdownToIR(markdown: string, options: MarkdownParseOptions = {}): MarkdownIR {\n return markdownToIRWithMeta(markdown, options).ir;\n}\n\nexport function markdownToIRWithMeta(\n markdown: string,\n options: MarkdownParseOptions = {},\n): { ir: MarkdownIR; hasTables: boolean } {\n const env: RenderEnv = { listStack: [] };\n const md = createMarkdownIt(options);\n const tokens = md.parse(markdown ?? \"\", env as unknown as object);\n if (options.enableSpoilers) {\n applySpoilerTokens(tokens as MarkdownToken[]);\n }\n\n const tableMode = options.tableMode ?? \"off\";\n\n const state: RenderState = {\n text: \"\",\n styles: [],\n openStyles: [],\n links: [],\n linkStack: [],\n env,\n headingStyle: options.headingStyle ?? \"none\",\n blockquotePrefix: options.blockquotePrefix ?? \"\",\n enableSpoilers: options.enableSpoilers ?? false,\n tableMode,\n table: null,\n hasTables: false,\n };\n\n renderTokens(tokens as MarkdownToken[], state);\n closeRemainingStyles(state);\n\n const trimmedText = state.text.trimEnd();\n const trimmedLength = trimmedText.length;\n let codeBlockEnd = 0;\n for (const span of state.styles) {\n if (span.style !== \"code_block\") {\n continue;\n }\n if (span.end > codeBlockEnd) {\n codeBlockEnd = span.end;\n }\n }\n const finalLength = Math.max(trimmedLength, codeBlockEnd);\n const finalText =\n finalLength === state.text.length ? state.text : state.text.slice(0, finalLength);\n\n return {\n ir: {\n text: finalText,\n styles: mergeStyleSpans(clampStyleSpans(state.styles, finalLength)),\n links: clampLinkSpans(state.links, finalLength),\n },\n hasTables: state.hasTables,\n };\n}\n\nexport function chunkMarkdownIR(ir: MarkdownIR, limit: number): MarkdownIR[] {\n if (!ir.text) {\n return [];\n }\n if (limit <= 0 || ir.text.length <= limit) {\n return [ir];\n }\n\n const chunks = chunkText(ir.text, limit);\n const results: MarkdownIR[] = [];\n let cursor = 0;\n\n chunks.forEach((chunk, index) => {\n if (!chunk) {\n return;\n }\n if (index > 0) {\n while (cursor < ir.text.length && /\\s/.test(ir.text[cursor] ?? \"\")) {\n cursor += 1;\n }\n }\n const start = cursor;\n const end = Math.min(ir.text.length, start + chunk.length);\n results.push({\n text: chunk,\n styles: sliceStyleSpans(ir.styles, start, end),\n links: sliceLinkSpans(ir.links, start, end),\n });\n cursor = end;\n });\n\n return results;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"render.js","names":[],"sources":["../../../src/markdown/render.ts"],"sourcesContent":["import type { MarkdownIR, MarkdownLinkSpan, MarkdownStyle, MarkdownStyleSpan } from \"./ir.js\";\n\nexport type RenderStyleMarker = {\n open: string;\n close: string;\n};\n\nexport type RenderStyleMap = Partial<Record<MarkdownStyle, RenderStyleMarker>>;\n\nexport type RenderLink = {\n start: number;\n end: number;\n open: string;\n close: string;\n};\n\nexport type RenderOptions = {\n styleMarkers: RenderStyleMap;\n escapeText: (text: string) => string;\n buildLink?: (link: MarkdownLinkSpan, text: string) => RenderLink | null;\n};\n\nconst STYLE_ORDER: MarkdownStyle[] = [\n \"blockquote\",\n \"code_block\",\n \"code\",\n \"bold\",\n \"italic\",\n \"strikethrough\",\n \"spoiler\",\n];\n\nconst STYLE_RANK = new Map<MarkdownStyle, number>(\n STYLE_ORDER.map((style, index) => [style, index]),\n);\n\nfunction sortStyleSpans(spans: MarkdownStyleSpan[]): MarkdownStyleSpan[] {\n return [...spans].toSorted((a, b) => {\n if (a.start !== b.start) {\n return a.start - b.start;\n }\n if (a.end !== b.end) {\n return b.end - a.end;\n }\n return (STYLE_RANK.get(a.style) ?? 0) - (STYLE_RANK.get(b.style) ?? 0);\n });\n}\n\nexport function renderMarkdownWithMarkers(ir: MarkdownIR, options: RenderOptions): string {\n const text = ir.text ?? \"\";\n if (!text) {\n return \"\";\n }\n\n const styleMarkers = options.styleMarkers;\n const styled = sortStyleSpans(ir.styles.filter((span) => Boolean(styleMarkers[span.style])));\n\n const boundaries = new Set<number>();\n boundaries.add(0);\n boundaries.add(text.length);\n\n const startsAt = new Map<number, MarkdownStyleSpan[]>();\n for (const span of styled) {\n if (span.start === span.end) {\n continue;\n }\n boundaries.add(span.start);\n boundaries.add(span.end);\n const bucket = startsAt.get(span.start);\n if (bucket) {\n bucket.push(span);\n } else {\n startsAt.set(span.start, [span]);\n }\n }\n for (const spans of startsAt.values()) {\n spans.sort((a, b) => {\n if (a.end !== b.end) {\n return b.end - a.end;\n }\n return (STYLE_RANK.get(a.style) ?? 0) - (STYLE_RANK.get(b.style) ?? 0);\n });\n }\n\n const linkStarts = new Map<number, RenderLink[]>();\n if (options.buildLink) {\n for (const link of ir.links) {\n if (link.start === link.end) {\n continue;\n }\n const rendered = options.buildLink(link, text);\n if (!rendered) {\n continue;\n }\n boundaries.add(rendered.start);\n boundaries.add(rendered.end);\n const openBucket = linkStarts.get(rendered.start);\n if (openBucket) {\n openBucket.push(rendered);\n } else {\n linkStarts.set(rendered.start, [rendered]);\n }\n }\n }\n\n const points = [...boundaries].toSorted((a, b) => a - b);\n // Unified stack for both styles and links, tracking close string and end position\n const stack: { close: string; end: number }[] = [];\n type OpeningItem =\n | { end: number; open: string; close: string; kind: \"link\"; index: number }\n | {\n end: number;\n open: string;\n close: string;\n kind: \"style\";\n style: MarkdownStyle;\n index: number;\n };\n let out = \"\";\n\n for (let i = 0; i < points.length; i += 1) {\n const pos = points[i];\n\n // Close ALL elements (styles and links) in LIFO order at this position\n while (stack.length && stack[stack.length - 1]?.end === pos) {\n const item = stack.pop();\n if (item) {\n out += item.close;\n }\n }\n\n const openingItems: OpeningItem[] = [];\n\n const openingLinks = linkStarts.get(pos);\n if (openingLinks && openingLinks.length > 0) {\n for (const [index, link] of openingLinks.entries()) {\n openingItems.push({\n end: link.end,\n open: link.open,\n close: link.close,\n kind: \"link\",\n index,\n });\n }\n }\n\n const openingStyles = startsAt.get(pos);\n if (openingStyles) {\n for (const [index, span] of openingStyles.entries()) {\n const marker = styleMarkers[span.style];\n if (!marker) {\n continue;\n }\n openingItems.push({\n end: span.end,\n open: marker.open,\n close: marker.close,\n kind: \"style\",\n style: span.style,\n index,\n });\n }\n }\n\n if (openingItems.length > 0) {\n openingItems.sort((a, b) => {\n if (a.end !== b.end) {\n return b.end - a.end;\n }\n if (a.kind !== b.kind) {\n return a.kind === \"link\" ? -1 : 1;\n }\n if (a.kind === \"style\" && b.kind === \"style\") {\n return (STYLE_RANK.get(a.style) ?? 0) - (STYLE_RANK.get(b.style) ?? 0);\n }\n return a.index - b.index;\n });\n\n // Open outer spans first (larger end) so LIFO closes stay valid for same-start overlaps.\n for (const item of openingItems) {\n out += item.open;\n stack.push({ close: item.close, end: item.end });\n }\n }\n\n const next = points[i + 1];\n if (next === undefined) {\n break;\n }\n if (next > pos) {\n out += options.escapeText(text.slice(pos, next));\n }\n }\n\n return out;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tables.js","names":[],"sources":["../../../src/markdown/tables.ts"],"sourcesContent":["import type { MarkdownTableMode } from \"../config/types.base.js\";\nimport { markdownToIRWithMeta } from \"./ir.js\";\nimport { renderMarkdownWithMarkers } from \"./render.js\";\n\nconst MARKDOWN_STYLE_MARKERS = {\n bold: { open: \"**\", close: \"**\" },\n italic: { open: \"_\", close: \"_\" },\n strikethrough: { open: \"~~\", close: \"~~\" },\n code: { open: \"`\", close: \"`\" },\n code_block: { open: \"```\\n\", close: \"```\" },\n} as const;\n\nexport function convertMarkdownTables(markdown: string, mode: MarkdownTableMode): string {\n if (!markdown || mode === \"off\") {\n return markdown;\n }\n const { ir, hasTables } = markdownToIRWithMeta(markdown, {\n linkify: false,\n autolink: false,\n headingStyle: \"none\",\n blockquotePrefix: \"\",\n tableMode: mode,\n });\n if (!hasTables) {\n return markdown;\n }\n return renderMarkdownWithMarkers(ir, {\n styleMarkers: MARKDOWN_STYLE_MARKERS,\n escapeText: (text) => text,\n buildLink: (link, text) => {\n const href = link.href.trim();\n if (!href) {\n return null;\n }\n const label = text.slice(link.start, link.end);\n if (!label) {\n return null;\n }\n return { start: link.start, end: link.end, open: \"[\", close: `](${href})` };\n },\n });\n}\n"],"mappings":";;;AAIA,MAAM,yBAAyB;CAC7B,MAAM;EAAE,MAAM;EAAM,OAAO;EAAM;CACjC,QAAQ;EAAE,MAAM;EAAK,OAAO;EAAK;CACjC,eAAe;EAAE,MAAM;EAAM,OAAO;EAAM;CAC1C,MAAM;EAAE,MAAM;EAAK,OAAO;EAAK;CAC/B,YAAY;EAAE,MAAM;EAAS,OAAO;EAAO;CAC5C;AAED,SAAgB,sBAAsB,UAAkB,MAAiC;AACvF,KAAI,CAAC,YAAY,SAAS,MACxB,QAAO;CAET,MAAM,EAAE,IAAI,cAAc,qBAAqB,UAAU;EACvD,SAAS;EACT,UAAU;EACV,cAAc;EACd,kBAAkB;EAClB,WAAW;EACZ,CAAC;AACF,KAAI,CAAC,UACH,QAAO;AAET,QAAO,0BAA0B,IAAI;EACnC,cAAc;EACd,aAAa,SAAS;EACtB,YAAY,MAAM,SAAS;GACzB,MAAM,OAAO,KAAK,KAAK,MAAM;AAC7B,OAAI,CAAC,KACH,QAAO;AAGT,OAAI,CADU,KAAK,MAAM,KAAK,OAAO,KAAK,IAChC,CACR,QAAO;AAET,UAAO;IAAE,OAAO,KAAK;IAAO,KAAK,KAAK;IAAK,MAAM;IAAK,OAAO,KAAK,KAAK;IAAI;;EAE9E,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"channel-bridge.js","names":[],"sources":["../../../src/mcp/channel-bridge.ts"],"sourcesContent":["import type { Config } from '../config/schema.js';\nimport { loadConfig } from '../config/loader.js';\nimport type {\n ApprovalDecision,\n ApprovalKind,\n ClaudeChannelMode,\n ConversationDescriptor,\n PendingApproval,\n QueueEvent,\n SessionRow,\n WaitFilter,\n} from './channel-shared.js';\nimport { toConversation } from './channel-shared.js';\nimport {\n createGatewayHttpClientFromConfig,\n resolveGatewayHttpBaseUrl,\n type GatewayHttpClient,\n} from './gateway-http-client.js';\nimport { loadUndiciRuntimeDeps } from '../infra/undici-fetch.js';\nimport { createLogger } from '../utils/logger.js';\nimport { gatewayCredentialAuthorization, type GatewayCredential } from '../gateway/credential.js';\n\nconst log = createLogger('Mcp:Bridge');\n\nconst QUEUE_LIMIT = 1000;\n\nexport class XopcChannelBridge {\n private client: GatewayHttpClient | null = null;\n private readonly queue: QueueEvent[] = [];\n private readonly pendingApprovals = new Map<string, PendingApproval>();\n private cursor = 0;\n private closed = false;\n private eventsAbort: AbortController | null = null;\n\n constructor(\n private readonly cfg: Config,\n private readonly params: {\n gatewayUrl?: string;\n gatewayCredential?: GatewayCredential;\n claudeChannelMode: ClaudeChannelMode;\n verbose: boolean;\n },\n ) {}\n\n setServer(_server: unknown): void {\n void _server;\n }\n\n async start(): Promise<void> {\n log.info({ phase: 'mcp.bridge.connect' }, 'MCP channel bridge starting');\n this.client = createGatewayHttpClientFromConfig({\n config: this.cfg,\n gatewayUrl: this.params.gatewayUrl,\n gatewayCredential: this.params.gatewayCredential,\n });\n this.connectEvents();\n }\n\n async close(): Promise<void> {\n log.info({ phase: 'mcp.bridge.connect', queueSize: this.queue.length }, 'MCP channel bridge closing');\n this.closed = true;\n this.eventsAbort?.abort();\n this.eventsAbort = null;\n this.queue.length = 0;\n this.pendingApprovals.clear();\n }\n\n private connectEvents(): void {\n if (this.closed) {\n return;\n }\n this.eventsAbort?.abort();\n const abort = new AbortController();\n this.eventsAbort = abort;\n const baseUrl = resolveGatewayHttpBaseUrl(this.cfg, this.params.gatewayUrl);\n void this.runEventsLoop(baseUrl, this.params.gatewayCredential, abort.signal);\n }\n\n private async runEventsLoop(\n baseUrl: string,\n credential: GatewayCredential | undefined,\n signal: AbortSignal,\n ): Promise<void> {\n const url = new URL(`${baseUrl}/api/events`);\n const authorization = gatewayCredentialAuthorization(credential);\n try {\n const res = await loadUndiciRuntimeDeps().fetch(url.toString(), {\n headers: {\n Accept: 'text/event-stream',\n ...(authorization ? { Authorization: authorization } : {}),\n },\n signal,\n });\n if (!res.ok || !res.body) {\n log.warn(\n {\n phase: 'mcp.bridge.sse',\n status: res.status,\n baseUrl,\n },\n `Gateway events SSE connect failed: HTTP ${res.status}`,\n );\n return;\n }\n const reader = res.body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n while (!this.closed && !signal.aborted) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n buffer += decoder.decode(value, { stream: true });\n let splitAt = buffer.indexOf('\\n\\n');\n while (splitAt >= 0) {\n this.handleSseChunk(buffer.slice(0, splitAt));\n buffer = buffer.slice(splitAt + 2);\n splitAt = buffer.indexOf('\\n\\n');\n }\n }\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n if (!signal.aborted && !this.closed) {\n log.warn({ err, errorMessage: em, phase: 'mcp.bridge.sse', baseUrl }, `Gateway events SSE disconnected: ${em}`);\n }\n }\n if (!this.closed && !signal.aborted) {\n await new Promise((resolve) => setTimeout(resolve, 2000));\n if (!this.closed) {\n this.connectEvents();\n }\n }\n }\n\n private handleSseChunk(chunk: string): void {\n let eventName = 'message';\n let data = '';\n for (const line of chunk.split('\\n')) {\n if (line.startsWith('event:')) {\n eventName = line.slice(6).trim();\n } else if (line.startsWith('data:')) {\n data += line.slice(5).trim();\n }\n }\n if (!data) {\n return;\n }\n try {\n const parsed = JSON.parse(data) as Record<string, unknown>;\n this.enqueueFromBroadcast({ type: eventName, ...parsed });\n } catch {\n this.enqueueFromBroadcast({ type: eventName, raw: data });\n }\n }\n\n private enqueueFromBroadcast(data: Record<string, unknown>): void {\n const type = String(data.type ?? data.event ?? '');\n if (!type) {\n return;\n }\n if (type.includes('message') || type.includes('session')) {\n this.pushEvent({\n cursor: ++this.cursor,\n type: 'message',\n sessionKey: String(data.sessionKey ?? data.key ?? ''),\n raw: data,\n });\n }\n }\n\n private pushEvent(event: QueueEvent): void {\n this.queue.push(event);\n while (this.queue.length > QUEUE_LIMIT) {\n this.queue.shift();\n }\n }\n\n async listConversations(args: {\n limit?: number;\n search?: string;\n channel?: string;\n }): Promise<ConversationDescriptor[]> {\n const client = this.client!;\n const query = new URLSearchParams();\n if (args.limit) query.set('limit', String(args.limit));\n if (args.search) query.set('search', args.search);\n if (args.channel) query.set('channel', args.channel);\n const qs = query.toString();\n const rows = await client.getJson<SessionRow[] | { sessions?: SessionRow[] }>(`/api/sessions${qs ? `?${qs}` : ''}`);\n const sessions = Array.isArray(rows) ? rows : (rows.sessions ?? []);\n return sessions.map((row) => toConversation(row)).filter((c): c is ConversationDescriptor => c !== null);\n }\n\n async getConversation(sessionKey: string): Promise<ConversationDescriptor | null> {\n const client = this.client!;\n try {\n const row = await client.getJson<SessionRow>(`/api/sessions/${encodeURIComponent(sessionKey)}`);\n return toConversation(row);\n } catch {\n return null;\n }\n }\n\n async readMessages(sessionKey: string, limit: number): Promise<Array<Record<string, unknown>>> {\n const client = this.client!;\n const payload = await client.getJson<{\n messages?: Array<Record<string, unknown>>;\n }>(`/api/sessions/${encodeURIComponent(sessionKey)}/messages?limit=${limit}`);\n return payload.messages ?? [];\n }\n\n pollEvents(filter: WaitFilter, limit: number): { events: QueueEvent[]; nextCursor: number } {\n const events = this.queue\n .filter((e) => e.cursor > filter.afterCursor)\n .filter((e) => !filter.sessionKey || ('sessionKey' in e && e.sessionKey === filter.sessionKey))\n .slice(0, limit);\n const nextCursor = events.length > 0 ? events[events.length - 1]!.cursor : filter.afterCursor;\n return { events, nextCursor };\n }\n\n async waitForEvent(filter: WaitFilter, timeoutMs: number): Promise<QueueEvent | null> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline && !this.closed) {\n const polled = this.pollEvents(filter, 1);\n if (polled.events.length > 0) {\n return polled.events[0] ?? null;\n }\n await new Promise((r) => setTimeout(r, 250));\n }\n return null;\n }\n\n async sendMessage(params: { sessionKey: string; text: string }): Promise<Record<string, unknown>> {\n const client = this.client!;\n return client.postJson('/api/agent', {\n sessionKey: params.sessionKey,\n message: params.text,\n });\n }\n\n listPendingApprovals(): PendingApproval[] {\n return Array.from(this.pendingApprovals.values());\n }\n\n async respondToApproval(params: {\n kind: ApprovalKind;\n id: string;\n decision: ApprovalDecision;\n }): Promise<Record<string, unknown>> {\n const client = this.client!;\n return client.postJson('/api/connectors/approvals/respond', params);\n }\n\n async handleClaudePermissionRequest(_params: {\n requestId: string;\n toolName: string;\n description: string;\n inputPreview: string;\n }): Promise<void> {\n void _params;\n }\n}\n\nexport function loadMcpServeConfig(): Config {\n return loadConfig();\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"channel-server.js","names":[],"sources":["../../../src/mcp/channel-server.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport type { Config } from '../config/schema.js';\nimport { loadConfig } from '../config/loader.js';\nimport type { GatewayCredential } from '../gateway/credential.js';\nimport { PACKAGE_VERSION } from '../package-version.js';\nimport { XopcChannelBridge } from './channel-bridge.js';\nimport { ClaudePermissionRequestSchema, type ClaudeChannelMode } from './channel-shared.js';\nimport { getChannelMcpCapabilities, registerChannelMcpTools } from './channel-tools.js';\n\nexport type XopcMcpServeOptions = {\n gatewayUrl?: string;\n gatewayCredential?: GatewayCredential;\n config?: Config;\n claudeChannelMode?: ClaudeChannelMode;\n verbose?: boolean;\n};\n\nexport async function createXopcChannelMcpServer(opts: XopcMcpServeOptions = {}): Promise<{\n server: McpServer;\n bridge: XopcChannelBridge;\n start: () => Promise<void>;\n close: () => Promise<void>;\n}> {\n const cfg = opts.config ?? loadConfig();\n const claudeChannelMode = opts.claudeChannelMode ?? 'auto';\n const capabilities = getChannelMcpCapabilities(claudeChannelMode);\n const server = new McpServer({ name: 'xopc', version: PACKAGE_VERSION }, capabilities ? { capabilities } : undefined);\n const bridge = new XopcChannelBridge(cfg, {\n gatewayUrl: opts.gatewayUrl,\n gatewayCredential: opts.gatewayCredential,\n claudeChannelMode,\n verbose: opts.verbose ?? false,\n });\n bridge.setServer(server);\n\n server.server.setNotificationHandler(ClaudePermissionRequestSchema, async ({ params }) => {\n await bridge.handleClaudePermissionRequest({\n requestId: params.request_id,\n toolName: params.tool_name,\n description: params.description,\n inputPreview: params.input_preview,\n });\n });\n registerChannelMcpTools(server, bridge);\n\n return {\n server,\n bridge,\n start: async () => {\n await bridge.start();\n },\n close: async () => {\n await bridge.close();\n await server.close();\n },\n };\n}\n\nexport async function serveXopcChannelMcpImpl(opts: XopcMcpServeOptions = {}): Promise<void> {\n const { server, start, close } = await createXopcChannelMcpServer(opts);\n const transport = new StdioServerTransport();\n\n let shuttingDown = false;\n let resolveClosed!: () => void;\n const closed = new Promise<void>((resolve) => {\n resolveClosed = resolve;\n });\n\n const shutdown = () => {\n if (shuttingDown) {\n return;\n }\n shuttingDown = true;\n process.stdin.off('end', shutdown);\n process.stdin.off('close', shutdown);\n process.off('SIGINT', shutdown);\n process.off('SIGTERM', shutdown);\n transport['onclose'] = undefined;\n close().then(resolveClosed, resolveClosed);\n };\n\n transport['onclose'] = shutdown;\n process.stdin.once('end', shutdown);\n process.stdin.once('close', shutdown);\n process.once('SIGINT', shutdown);\n process.once('SIGTERM', shutdown);\n\n try {\n await server.connect(transport);\n await start();\n await closed;\n } finally {\n shutdown();\n await closed;\n }\n}\n"],"mappings":";;;;;;;;aAGiD;sBAEO;AAaxD,eAAsB,2BAA2B,OAA4B,EAAE,EAK5E;CACD,MAAM,MAAM,KAAK,UAAU,YAAY;CACvC,MAAM,oBAAoB,KAAK,qBAAqB;CACpD,MAAM,eAAe,0BAA0B,kBAAkB;CACjE,MAAM,SAAS,IAAI,UAAU;EAAE,MAAM;EAAQ,SAAS;EAAiB,EAAE,eAAe,EAAE,cAAc,GAAG,KAAA,EAAU;CACrH,MAAM,SAAS,IAAI,kBAAkB,KAAK;EACxC,YAAY,KAAK;EACjB,mBAAmB,KAAK;EACxB;EACA,SAAS,KAAK,WAAW;EAC1B,CAAC;AACF,QAAO,UAAU,OAAO;AAExB,QAAO,OAAO,uBAAuB,+BAA+B,OAAO,EAAE,aAAa;AACxF,QAAM,OAAO,8BAA8B;GACzC,WAAW,OAAO;GAClB,UAAU,OAAO;GACjB,aAAa,OAAO;GACpB,cAAc,OAAO;GACtB,CAAC;GACF;AACF,yBAAwB,QAAQ,OAAO;AAEvC,QAAO;EACL;EACA;EACA,OAAO,YAAY;AACjB,SAAM,OAAO,OAAO;;EAEtB,OAAO,YAAY;AACjB,SAAM,OAAO,OAAO;AACpB,SAAM,OAAO,OAAO;;EAEvB;;AAGH,eAAsB,wBAAwB,OAA4B,EAAE,EAAiB;CAC3F,MAAM,EAAE,QAAQ,OAAO,UAAU,MAAM,2BAA2B,KAAK;CACvE,MAAM,YAAY,IAAI,sBAAsB;CAE5C,IAAI,eAAe;CACnB,IAAI;CACJ,MAAM,SAAS,IAAI,SAAe,YAAY;AAC5C,kBAAgB;GAChB;CAEF,MAAM,iBAAiB;AACrB,MAAI,aACF;AAEF,iBAAe;AACf,UAAQ,MAAM,IAAI,OAAO,SAAS;AAClC,UAAQ,MAAM,IAAI,SAAS,SAAS;AACpC,UAAQ,IAAI,UAAU,SAAS;AAC/B,UAAQ,IAAI,WAAW,SAAS;AAChC,YAAU,aAAa,KAAA;AACvB,SAAO,CAAC,KAAK,eAAe,cAAc;;AAG5C,WAAU,aAAa;AACvB,SAAQ,MAAM,KAAK,OAAO,SAAS;AACnC,SAAQ,MAAM,KAAK,SAAS,SAAS;AACrC,SAAQ,KAAK,UAAU,SAAS;AAChC,SAAQ,KAAK,WAAW,SAAS;AAEjC,KAAI;AACF,QAAM,OAAO,QAAQ,UAAU;AAC/B,QAAM,OAAO;AACb,QAAM;WACE;AACR,YAAU;AACV,QAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"channel-shared.js","names":["toText"],"sources":["../../../src/mcp/channel-shared.ts"],"sourcesContent":["import { z } from 'zod';\nimport { normalizeOptionalString as toText } from '../utils/string-coerce.js';\n\nfunction normalizeMessageChannel(value: string | undefined): string | undefined {\n return value?.trim() || undefined;\n}\n\nexport type ClaudeChannelMode = \"off\" | \"on\" | \"auto\";\n\nexport type ConversationDescriptor = {\n sessionKey: string;\n channel: string;\n to: string;\n accountId?: string;\n threadId?: string | number;\n label?: string;\n displayName?: string;\n derivedTitle?: string;\n lastMessagePreview?: string;\n updatedAt?: number | null;\n};\n\nexport type SessionRow = {\n key: string;\n channel?: string;\n lastChannel?: string;\n lastTo?: string;\n lastAccountId?: string;\n lastThreadId?: string | number;\n deliveryContext?: {\n channel?: string;\n to?: string;\n accountId?: string;\n threadId?: string | number;\n };\n origin?: {\n provider?: string;\n accountId?: string;\n threadId?: string | number;\n };\n label?: string;\n displayName?: string;\n derivedTitle?: string;\n lastMessagePreview?: string;\n updatedAt?: number | null;\n};\n\nexport type SessionListResult = {\n sessions?: SessionRow[];\n};\n\nexport type ChatHistoryResult = {\n messages?: Array<{ id?: string; role?: string; content?: unknown; [key: string]: unknown }>;\n};\n\nexport type SessionMessagePayload = {\n sessionKey?: string;\n messageId?: string;\n messageSeq?: number;\n message?: { role?: string; content?: unknown; [key: string]: unknown };\n lastChannel?: string;\n lastTo?: string;\n lastAccountId?: string;\n lastThreadId?: string | number;\n [key: string]: unknown;\n};\n\nexport type ApprovalKind = \"exec\" | \"plugin\";\nexport type ApprovalDecision = \"allow-once\" | \"allow-always\" | \"deny\";\n\nexport type PendingApproval = {\n kind: ApprovalKind;\n id: string;\n request?: Record<string, unknown>;\n createdAtMs?: number;\n expiresAtMs?: number;\n};\n\nexport type QueueEvent =\n | {\n cursor: number;\n type: \"message\";\n sessionKey: string;\n conversation?: ConversationDescriptor;\n messageId?: string;\n messageSeq?: number;\n role?: string;\n text?: string;\n raw: SessionMessagePayload;\n }\n | {\n cursor: number;\n type: \"claude_permission_request\";\n requestId: string;\n toolName: string;\n description: string;\n inputPreview: string;\n }\n | {\n cursor: number;\n type: \"exec_approval_requested\" | \"exec_approval_resolved\";\n raw: Record<string, unknown>;\n }\n | {\n cursor: number;\n type: \"plugin_approval_requested\" | \"plugin_approval_resolved\";\n raw: Record<string, unknown>;\n };\n\nexport type ClaudePermissionRequest = {\n toolName: string;\n description: string;\n inputPreview: string;\n};\n\nexport type WaitFilter = {\n afterCursor: number;\n sessionKey?: string;\n};\n\nexport const ClaudePermissionRequestSchema = z.object({\n method: z.literal(\"notifications/claude/channel/permission_request\"),\n params: z.object({\n request_id: z.string(),\n tool_name: z.string(),\n description: z.string(),\n input_preview: z.string(),\n }),\n});\n\nexport { toText };\n\nexport function resolveMessageId(entry: Record<string, unknown>): string | undefined {\n return (\n toText(entry.id) ??\n (entry.__openclaw && typeof entry.__openclaw === \"object\"\n ? toText((entry.__openclaw as { id?: unknown }).id)\n : undefined)\n );\n}\n\nexport function summarizeResult(\n label: string,\n count: number,\n): { content: Array<{ type: \"text\"; text: string }> } {\n return {\n content: [{ type: \"text\", text: `${label}: ${count}` }],\n };\n}\n\nexport function resolveConversationChannel(row: SessionRow): string | undefined {\n return normalizeMessageChannel(\n toText(row.deliveryContext?.channel) ??\n toText(row.lastChannel) ??\n toText(row.channel) ??\n toText(row.origin?.provider),\n );\n}\n\nexport function toConversation(row: SessionRow): ConversationDescriptor | null {\n const channel = resolveConversationChannel(row);\n const to = toText(row.deliveryContext?.to) ?? toText(row.lastTo);\n if (!channel || !to) {\n return null;\n }\n return {\n sessionKey: row.key,\n channel,\n to,\n accountId:\n toText(row.deliveryContext?.accountId) ??\n toText(row.lastAccountId) ??\n toText(row.origin?.accountId),\n threadId: row.deliveryContext?.threadId ?? row.lastThreadId ?? row.origin?.threadId,\n label: toText(row.label),\n displayName: toText(row.displayName),\n derivedTitle: toText(row.derivedTitle),\n lastMessagePreview: toText(row.lastMessagePreview),\n updatedAt: typeof row.updatedAt === \"number\" ? row.updatedAt : null,\n };\n}\n\nexport function matchEventFilter(event: QueueEvent, filter: WaitFilter): boolean {\n if (event.cursor <= filter.afterCursor) {\n return false;\n }\n if (!filter.sessionKey) {\n return true;\n }\n return \"sessionKey\" in event && event.sessionKey === filter.sessionKey;\n}\n\nexport function extractAttachmentsFromMessage(message: unknown): unknown[] {\n if (!message || typeof message !== \"object\") {\n return [];\n }\n const content = (message as { content?: unknown }).content;\n if (!Array.isArray(content)) {\n return [];\n }\n return content.filter((entry) => {\n if (!entry || typeof entry !== \"object\") {\n return false;\n }\n return toText((entry as { type?: unknown }).type) !== \"text\";\n });\n}\n\nexport function normalizeApprovalId(value: unknown): string | undefined {\n const id = toText(value);\n return id ? id.trim() : undefined;\n}\n"],"mappings":";;;oBAC8E;AAE9E,SAAS,wBAAwB,OAA+C;AAC9E,QAAO,OAAO,MAAM,IAAI,KAAA;;AAoH1B,MAAa,gCAAgC,EAAE,OAAO;CACpD,QAAQ,EAAE,QAAQ,kDAAkD;CACpE,QAAQ,EAAE,OAAO;EACf,YAAY,EAAE,QAAQ;EACtB,WAAW,EAAE,QAAQ;EACrB,aAAa,EAAE,QAAQ;EACvB,eAAe,EAAE,QAAQ;EAC1B,CAAC;CACH,CAAC;AAIF,SAAgB,iBAAiB,OAAoD;AACnF,QACEA,wBAAO,MAAM,GAAG,KACf,MAAM,cAAc,OAAO,MAAM,eAAe,WAC7CA,wBAAQ,MAAM,WAAgC,GAAG,GACjD,KAAA;;AAIR,SAAgB,gBACd,OACA,OACoD;AACpD,QAAO,EACL,SAAS,CAAC;EAAE,MAAM;EAAQ,MAAM,GAAG,MAAM,IAAI;EAAS,CAAC,EACxD;;AAGH,SAAgB,2BAA2B,KAAqC;AAC9E,QAAO,wBACLA,wBAAO,IAAI,iBAAiB,QAAQ,IAClCA,wBAAO,IAAI,YAAY,IACvBA,wBAAO,IAAI,QAAQ,IACnBA,wBAAO,IAAI,QAAQ,SAAS,CAC/B;;AAGH,SAAgB,eAAe,KAAgD;CAC7E,MAAM,UAAU,2BAA2B,IAAI;CAC/C,MAAM,KAAKA,wBAAO,IAAI,iBAAiB,GAAG,IAAIA,wBAAO,IAAI,OAAO;AAChE,KAAI,CAAC,WAAW,CAAC,GACf,QAAO;AAET,QAAO;EACL,YAAY,IAAI;EAChB;EACA;EACA,WACEA,wBAAO,IAAI,iBAAiB,UAAU,IACtCA,wBAAO,IAAI,cAAc,IACzBA,wBAAO,IAAI,QAAQ,UAAU;EAC/B,UAAU,IAAI,iBAAiB,YAAY,IAAI,gBAAgB,IAAI,QAAQ;EAC3E,OAAOA,wBAAO,IAAI,MAAM;EACxB,aAAaA,wBAAO,IAAI,YAAY;EACpC,cAAcA,wBAAO,IAAI,aAAa;EACtC,oBAAoBA,wBAAO,IAAI,mBAAmB;EAClD,WAAW,OAAO,IAAI,cAAc,WAAW,IAAI,YAAY;EAChE;;AAGH,SAAgB,iBAAiB,OAAmB,QAA6B;AAC/E,KAAI,MAAM,UAAU,OAAO,YACzB,QAAO;AAET,KAAI,CAAC,OAAO,WACV,QAAO;AAET,QAAO,gBAAgB,SAAS,MAAM,eAAe,OAAO;;AAG9D,SAAgB,8BAA8B,SAA6B;AACzE,KAAI,CAAC,WAAW,OAAO,YAAY,SACjC,QAAO,EAAE;CAEX,MAAM,UAAW,QAAkC;AACnD,KAAI,CAAC,MAAM,QAAQ,QAAQ,CACzB,QAAO,EAAE;AAEX,QAAO,QAAQ,QAAQ,UAAU;AAC/B,MAAI,CAAC,SAAS,OAAO,UAAU,SAC7B,QAAO;AAET,SAAOA,wBAAQ,MAA6B,KAAK,KAAK;GACtD;;AAGJ,SAAgB,oBAAoB,OAAoC;CACtE,MAAM,KAAKA,wBAAO,MAAM;AACxB,QAAO,KAAK,GAAG,MAAM,GAAG,KAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"channel-tools.js","names":["toText"],"sources":["../../../src/mcp/channel-tools.ts"],"sourcesContent":["import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { XopcChannelBridge } from './channel-bridge.js';\nimport {\n extractAttachmentsFromMessage,\n resolveMessageId,\n summarizeResult,\n toText,\n} from \"./channel-shared.js\";\n\nexport function getChannelMcpCapabilities(claudeChannelMode: \"off\" | \"on\" | \"auto\") {\n if (claudeChannelMode === \"off\") {\n return undefined;\n }\n return {\n experimental: {\n \"claude/channel\": {},\n \"claude/channel/permission\": {},\n },\n };\n}\n\nexport function registerChannelMcpTools(server: McpServer, bridge: XopcChannelBridge): void {\n server.tool(\n 'conversations_list',\n 'List xopc channel-backed conversations available through session routes.',\n {\n limit: z.number().int().min(1).max(500).optional(),\n search: z.string().optional(),\n channel: z.string().optional(),\n includeDerivedTitles: z.boolean().optional(),\n includeLastMessage: z.boolean().optional(),\n },\n async (args) => {\n const conversations = await bridge.listConversations(args);\n return {\n ...summarizeResult(\"conversations\", conversations.length),\n structuredContent: { conversations },\n };\n },\n );\n\n server.tool(\n \"conversation_get\",\n \"Get one OpenClaw conversation by session key.\",\n { session_key: z.string().min(1) },\n async ({ session_key }) => {\n const conversation = await bridge.getConversation(session_key);\n if (!conversation) {\n return {\n content: [{ type: \"text\", text: `conversation not found: ${session_key}` }],\n isError: true,\n };\n }\n return {\n content: [{ type: \"text\", text: `conversation ${conversation.sessionKey}` }],\n structuredContent: { conversation },\n };\n },\n );\n\n server.tool(\n \"messages_read\",\n \"Read recent messages for one OpenClaw conversation.\",\n {\n session_key: z.string().min(1),\n limit: z.number().int().min(1).max(200).optional(),\n },\n async ({ session_key, limit }) => {\n const messages = await bridge.readMessages(session_key, limit ?? 20);\n return {\n ...summarizeResult(\"messages\", messages.length),\n structuredContent: { messages },\n };\n },\n );\n\n server.tool(\n \"attachments_fetch\",\n \"List non-text attachments for a message in one OpenClaw conversation.\",\n {\n session_key: z.string().min(1),\n message_id: z.string().min(1),\n limit: z.number().int().min(1).max(200).optional(),\n },\n async ({ session_key, message_id, limit }) => {\n const messages = await bridge.readMessages(session_key, limit ?? 100);\n const message = messages.find((entry) => resolveMessageId(entry) === message_id);\n if (!message) {\n return {\n content: [{ type: \"text\", text: `message not found: ${message_id}` }],\n isError: true,\n };\n }\n const attachments = extractAttachmentsFromMessage(message);\n return {\n ...summarizeResult(\"attachments\", attachments.length),\n structuredContent: { attachments, message },\n };\n },\n );\n\n server.tool(\n \"events_poll\",\n \"Poll queued OpenClaw conversation events since a cursor.\",\n {\n after_cursor: z.number().int().min(0).optional(),\n session_key: z.string().optional(),\n limit: z.number().int().min(1).max(200).optional(),\n },\n async ({ after_cursor, session_key, limit }) => {\n const { events, nextCursor } = bridge.pollEvents(\n { afterCursor: after_cursor ?? 0, sessionKey: toText(session_key) },\n limit ?? 20,\n );\n return {\n ...summarizeResult(\"events\", events.length),\n structuredContent: { events, next_cursor: nextCursor },\n };\n },\n );\n\n server.tool(\n \"events_wait\",\n \"Wait for the next queued OpenClaw conversation event.\",\n {\n after_cursor: z.number().int().min(0).optional(),\n session_key: z.string().optional(),\n timeout_ms: z.number().int().min(1).max(300_000).optional(),\n },\n async ({ after_cursor, session_key, timeout_ms }) => {\n const event = await bridge.waitForEvent(\n { afterCursor: after_cursor ?? 0, sessionKey: toText(session_key) },\n timeout_ms ?? 30_000,\n );\n return {\n content: [{ type: \"text\", text: event ? `event ${event.cursor}` : \"timeout\" }],\n structuredContent: { event },\n };\n },\n );\n\n server.tool(\n \"messages_send\",\n \"Send a message back through the same OpenClaw conversation route.\",\n {\n session_key: z.string().min(1),\n text: z.string().min(1),\n },\n async ({ session_key, text }) => {\n const result = await bridge.sendMessage({ sessionKey: session_key, text });\n return {\n content: [{ type: \"text\", text: \"sent\" }],\n structuredContent: { result },\n };\n },\n );\n\n server.tool(\n \"permissions_list_open\",\n \"List open OpenClaw exec or plugin approval requests visible through the Gateway.\",\n {},\n async () => {\n const approvals = bridge.listPendingApprovals();\n return {\n ...summarizeResult(\"approvals\", approvals.length),\n structuredContent: { approvals },\n };\n },\n );\n\n server.tool(\n \"permissions_respond\",\n \"Allow or deny one pending OpenClaw exec or plugin approval request.\",\n {\n kind: z.enum([\"exec\", \"plugin\"]),\n id: z.string().min(1),\n decision: z.enum([\"allow-once\", \"allow-always\", \"deny\"]),\n },\n async ({ kind, id, decision }) => {\n const result = await bridge.respondToApproval({ kind, id, decision });\n return {\n content: [{ type: \"text\", text: \"approval resolved\" }],\n structuredContent: { result },\n };\n },\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"gateway-http-client.js","names":["undiciFetch"],"sources":["../../../src/mcp/gateway-http-client.ts"],"sourcesContent":["import { fetch as undiciFetch } from 'undici';\nimport { resolveGatewayLocalClientHost } from '../config/gateway-bind.js';\nimport type { Config } from '../config/schema.js';\nimport { loadConfig } from '../config/loader.js';\nimport {\n createGatewayCredential,\n gatewayCredentialAuthorization,\n type GatewayCredential,\n} from '../gateway/credential.js';\nimport { createLogger } from '../utils/logger.js';\n\nconst log = createLogger('Mcp:GatewayClient');\n\nfunction resolveGatewayCredentialFromConfig(cfg: Config): GatewayCredential | undefined {\n const auth = cfg.gateway?.auth;\n if (auth?.mode === 'password') {\n return createGatewayCredential('password', auth.password);\n }\n if (auth?.mode === 'token') {\n return createGatewayCredential('token', auth.token ?? process.env.XOPC_GATEWAY_TOKEN);\n }\n return undefined;\n}\n\nexport type GatewayHttpClientOptions = {\n baseUrl: string;\n credential?: GatewayCredential;\n};\n\nexport class GatewayHttpClient {\n constructor(private readonly opts: GatewayHttpClientOptions) {}\n\n private headers(extra?: Record<string, string>): Record<string, string> {\n const h: Record<string, string> = { Accept: 'application/json', ...extra };\n const authorization = gatewayCredentialAuthorization(this.opts.credential);\n if (authorization) {\n h.Authorization = authorization;\n }\n return h;\n }\n\n async getJson<T>(path: string): Promise<T> {\n const res = await undiciFetch(`${this.opts.baseUrl}${path}`, {\n headers: this.headers(),\n });\n if (!res.ok) {\n const em = `Gateway GET ${path} failed: ${res.status}`;\n log.warn({ phase: 'mcp.gateway.http', method: 'GET', path, status: res.status }, em);\n throw new Error(em);\n }\n const body = (await res.json()) as { ok?: boolean; payload?: T } | T;\n if (body && typeof body === 'object' && 'payload' in body) {\n return (body as { payload: T }).payload;\n }\n return body as T;\n }\n\n async postJson<T>(path: string, data: unknown): Promise<T> {\n const res = await undiciFetch(`${this.opts.baseUrl}${path}`, {\n method: 'POST',\n headers: this.headers({ 'Content-Type': 'application/json' }),\n body: JSON.stringify(data),\n });\n if (!res.ok) {\n const em = `Gateway POST ${path} failed: ${res.status}`;\n log.warn({ phase: 'mcp.gateway.http', method: 'POST', path, status: res.status }, em);\n throw new Error(em);\n }\n const body = (await res.json()) as { ok?: boolean; payload?: T } | T;\n if (body && typeof body === 'object' && 'payload' in body) {\n return (body as { payload: T }).payload;\n }\n return body as T;\n }\n}\n\nexport function resolveGatewayHttpBaseUrl(config: Config, override?: string): string {\n if (override?.trim()) {\n return override.replace(/\\/$/, '');\n }\n const host = resolveGatewayLocalClientHost(config);\n const port = config.gateway?.port ?? 18790;\n return `http://${host}:${port}`;\n}\n\nexport function createGatewayHttpClientFromConfig(params: {\n config?: Config;\n gatewayUrl?: string;\n gatewayCredential?: GatewayCredential;\n}): GatewayHttpClient {\n const cfg = params.config ?? loadConfig();\n const credential = params.gatewayCredential ?? resolveGatewayCredentialFromConfig(cfg);\n return new GatewayHttpClient({\n baseUrl: resolveGatewayHttpBaseUrl(cfg, params.gatewayUrl),\n credential,\n });\n}\n"],"mappings":";;;;;;;aAGiD;aAMC;AAElD,MAAM,MAAM,aAAa,oBAAoB;AAE7C,SAAS,mCAAmC,KAA4C;CACtF,MAAM,OAAO,IAAI,SAAS;AAC1B,KAAI,MAAM,SAAS,WACjB,QAAO,wBAAwB,YAAY,KAAK,SAAS;AAE3D,KAAI,MAAM,SAAS,QACjB,QAAO,wBAAwB,SAAS,KAAK,SAAS,QAAQ,IAAI,mBAAmB;;AAUzF,IAAa,oBAAb,MAA+B;CAC7B,YAAY,MAAiD;AAAhC,OAAA,OAAA;;CAE7B,QAAgB,OAAwD;EACtE,MAAM,IAA4B;GAAE,QAAQ;GAAoB,GAAG;GAAO;EAC1E,MAAM,gBAAgB,+BAA+B,KAAK,KAAK,WAAW;AAC1E,MAAI,cACF,GAAE,gBAAgB;AAEpB,SAAO;;CAGT,MAAM,QAAW,MAA0B;EACzC,MAAM,MAAM,MAAMA,MAAY,GAAG,KAAK,KAAK,UAAU,QAAQ,EAC3D,SAAS,KAAK,SAAS,EACxB,CAAC;AACF,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,KAAK,eAAe,KAAK,WAAW,IAAI;AAC9C,OAAI,KAAK;IAAE,OAAO;IAAoB,QAAQ;IAAO;IAAM,QAAQ,IAAI;IAAQ,EAAE,GAAG;AACpF,SAAM,IAAI,MAAM,GAAG;;EAErB,MAAM,OAAQ,MAAM,IAAI,MAAM;AAC9B,MAAI,QAAQ,OAAO,SAAS,YAAY,aAAa,KACnD,QAAQ,KAAwB;AAElC,SAAO;;CAGT,MAAM,SAAY,MAAc,MAA2B;EACzD,MAAM,MAAM,MAAMA,MAAY,GAAG,KAAK,KAAK,UAAU,QAAQ;GAC3D,QAAQ;GACR,SAAS,KAAK,QAAQ,EAAE,gBAAgB,oBAAoB,CAAC;GAC7D,MAAM,KAAK,UAAU,KAAK;GAC3B,CAAC;AACF,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,KAAK,gBAAgB,KAAK,WAAW,IAAI;AAC/C,OAAI,KAAK;IAAE,OAAO;IAAoB,QAAQ;IAAQ;IAAM,QAAQ,IAAI;IAAQ,EAAE,GAAG;AACrF,SAAM,IAAI,MAAM,GAAG;;EAErB,MAAM,OAAQ,MAAM,IAAI,MAAM;AAC9B,MAAI,QAAQ,OAAO,SAAS,YAAY,aAAa,KACnD,QAAQ,KAAwB;AAElC,SAAO;;;AAIX,SAAgB,0BAA0B,QAAgB,UAA2B;AACnF,KAAI,UAAU,MAAM,CAClB,QAAO,SAAS,QAAQ,OAAO,GAAG;AAIpC,QAAO,UAFM,8BAA8B,OAEtB,CAAC,GADT,OAAO,SAAS,QAAQ;;AAIvC,SAAgB,kCAAkC,QAI5B;CACpB,MAAM,MAAM,OAAO,UAAU,YAAY;CACzC,MAAM,aAAa,OAAO,qBAAqB,mCAAmC,IAAI;AACtF,QAAO,IAAI,kBAAkB;EAC3B,SAAS,0BAA0B,KAAK,OAAO,WAAW;EAC1D;EACD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-reference.js","names":[],"sources":["../../../src/media/media-reference.ts"],"sourcesContent":["import { readMediaBuffer, resolveMediaBufferPath, mimeTypeFromMediaPath } from './store.js';\nimport { parseMediaUri, tryParseMediaUri } from './uri.js';\nimport type { MediaBucket } from './types.js';\n\nexport type ResolvedMediaReference = {\n bucket: MediaBucket;\n id: string;\n uri: string;\n path: string;\n};\n\n/** Resolve a `media://` URI to an absolute filesystem path. */\nexport async function resolveMediaReference(uri: string): Promise<ResolvedMediaReference> {\n const parsed = parseMediaUri(uri);\n const path = resolveMediaBufferPath(parsed.id, parsed.bucket);\n return { ...parsed, path };\n}\n\n/** Read bytes for a media URI. */\nexport async function readMediaReference(\n uri: string,\n maxBytes?: number,\n): Promise<{ buffer: Buffer; path: string; contentType?: string }> {\n const parsed = parseMediaUri(uri);\n const result = await readMediaBuffer(parsed.id, parsed.bucket, maxBytes);\n return { buffer: result.buffer, path: result.path };\n}\n\n/** Load file as base64 for LLM boundaries. */\nexport async function readMediaReferenceBase64(\n uri: string,\n maxBytes?: number,\n): Promise<{ data: string; mimeType: string; path: string }> {\n const { buffer, path } = await readMediaReference(uri, maxBytes);\n return {\n data: buffer.toString('base64'),\n mimeType: mimeTypeFromMediaPath(path),\n path,\n };\n}\n\nexport { tryParseMediaUri, parseMediaUri };\n"],"mappings":";;;;AAYA,eAAsB,sBAAsB,KAA8C;CACxF,MAAM,SAAS,cAAc,IAAI;CACjC,MAAM,OAAO,uBAAuB,OAAO,IAAI,OAAO,OAAO;AAC7D,QAAO;EAAE,GAAG;EAAQ;EAAM;;;AAI5B,eAAsB,mBACpB,KACA,UACiE;CACjE,MAAM,SAAS,cAAc,IAAI;CACjC,MAAM,SAAS,MAAM,gBAAgB,OAAO,IAAI,OAAO,QAAQ,SAAS;AACxE,QAAO;EAAE,QAAQ,OAAO;EAAQ,MAAM,OAAO;EAAM;;;AAIrD,eAAsB,yBACpB,KACA,UAC2D;CAC3D,MAAM,EAAE,QAAQ,SAAS,MAAM,mBAAmB,KAAK,SAAS;AAChE,QAAO;EACL,MAAM,OAAO,SAAS,SAAS;EAC/B,UAAU,sBAAsB,KAAK;EACrC;EACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.js","names":[],"sources":["../../../src/media/paths.ts"],"sourcesContent":["import { isAbsolute, join, relative, resolve } from 'node:path';\n\nimport { resolveStateDir } from '../config/paths-state.js';\n\nimport type { MediaBucket } from './types.js';\n\n/** Global media store root: `{stateDir}/media/`. */\nexport function getMediaDir(): string {\n return join(resolveStateDir(), 'media');\n}\n\nexport function getMediaBucketDir(bucket: MediaBucket): string {\n return join(getMediaDir(), bucket);\n}\n\nexport function isPathInside(root: string, candidate: string): boolean {\n const rootResolved = resolve(root);\n const candidateResolved = resolve(candidate);\n const rel = relative(rootResolved, candidateResolved);\n return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));\n}\n"],"mappings":";;;kBAE2D;;AAK3D,SAAgB,cAAsB;AACpC,QAAO,KAAK,iBAAiB,EAAE,QAAQ;;AAGzC,SAAgB,kBAAkB,QAA6B;AAC7D,QAAO,KAAK,aAAa,EAAE,OAAO;;AAGpC,SAAgB,aAAa,MAAc,WAA4B;CAGrE,MAAM,MAAM,SAFS,QAAQ,KAEI,EADP,QAAQ,UACkB,CAAC;AACrD,QAAO,QAAQ,MAAO,CAAC,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-references.js","names":[],"sources":["../../../src/media/session-references.ts"],"sourcesContent":["import type { AgentMessage } from '@earendil-works/pi-agent-core';\n\nimport { deleteMediaBuffer } from './store.js';\nimport { tryParseMediaUri } from './uri.js';\n\nfunction collectFromValue(value: unknown, out: Set<string>): void {\n if (!value) return;\n if (typeof value === 'string') {\n if (value.startsWith('media://')) out.add(value.trim());\n return;\n }\n if (Array.isArray(value)) {\n for (const item of value) collectFromValue(item, out);\n return;\n }\n if (typeof value !== 'object') return;\n\n const record = value as Record<string, unknown>;\n if (typeof record.uri === 'string' && record.uri.startsWith('media://')) {\n out.add(record.uri.trim());\n }\n if (Array.isArray(record.media)) collectFromValue(record.media, out);\n if (Array.isArray(record.attachments)) collectFromValue(record.attachments, out);\n}\n\nexport function collectMediaUrisFromMessages(messages: readonly AgentMessage[]): Set<string> {\n const out = new Set<string>();\n for (const message of messages) collectFromValue(message, out);\n return out;\n}\n\nexport function messagesReferenceMediaUri(messages: readonly AgentMessage[], uri: string): boolean {\n return collectMediaUrisFromMessages(messages).has(uri.trim());\n}\n\nexport async function deleteMediaUris(uris: Iterable<string>): Promise<void> {\n for (const uri of new Set(uris)) {\n const parsed = tryParseMediaUri(uri);\n if (!parsed) continue;\n await deleteMediaBuffer(parsed.id, parsed.bucket).catch(() => {});\n }\n}\n\nexport async function deleteMediaUrisNoLongerReferenced(params: {\n removed: readonly AgentMessage[];\n remaining: readonly AgentMessage[];\n}): Promise<void> {\n const removedUris = collectMediaUrisFromMessages(params.removed);\n if (removedUris.size === 0) return;\n\n const remainingUris = collectMediaUrisFromMessages(params.remaining);\n for (const uri of remainingUris) removedUris.delete(uri);\n await deleteMediaUris(removedUris);\n}\n"],"mappings":";;;AAKA,SAAS,iBAAiB,OAAgB,KAAwB;AAChE,KAAI,CAAC,MAAO;AACZ,KAAI,OAAO,UAAU,UAAU;AAC7B,MAAI,MAAM,WAAW,WAAW,CAAE,KAAI,IAAI,MAAM,MAAM,CAAC;AACvD;;AAEF,KAAI,MAAM,QAAQ,MAAM,EAAE;AACxB,OAAK,MAAM,QAAQ,MAAO,kBAAiB,MAAM,IAAI;AACrD;;AAEF,KAAI,OAAO,UAAU,SAAU;CAE/B,MAAM,SAAS;AACf,KAAI,OAAO,OAAO,QAAQ,YAAY,OAAO,IAAI,WAAW,WAAW,CACrE,KAAI,IAAI,OAAO,IAAI,MAAM,CAAC;AAE5B,KAAI,MAAM,QAAQ,OAAO,MAAM,CAAE,kBAAiB,OAAO,OAAO,IAAI;AACpE,KAAI,MAAM,QAAQ,OAAO,YAAY,CAAE,kBAAiB,OAAO,aAAa,IAAI;;AAGlF,SAAgB,6BAA6B,UAAgD;CAC3F,MAAM,sBAAM,IAAI,KAAa;AAC7B,MAAK,MAAM,WAAW,SAAU,kBAAiB,SAAS,IAAI;AAC9D,QAAO;;AAGT,SAAgB,0BAA0B,UAAmC,KAAsB;AACjG,QAAO,6BAA6B,SAAS,CAAC,IAAI,IAAI,MAAM,CAAC;;AAG/D,eAAsB,gBAAgB,MAAuC;AAC3E,MAAK,MAAM,OAAO,IAAI,IAAI,KAAK,EAAE;EAC/B,MAAM,SAAS,iBAAiB,IAAI;AACpC,MAAI,CAAC,OAAQ;AACb,QAAM,kBAAkB,OAAO,IAAI,OAAO,OAAO,CAAC,YAAY,GAAG;;;AAIrE,eAAsB,kCAAkC,QAGtC;CAChB,MAAM,cAAc,6BAA6B,OAAO,QAAQ;AAChE,KAAI,YAAY,SAAS,EAAG;CAE5B,MAAM,gBAAgB,6BAA6B,OAAO,UAAU;AACpE,MAAK,MAAM,OAAO,cAAe,aAAY,OAAO,IAAI;AACxD,OAAM,gBAAgB,YAAY"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.js","names":["parsePath"],"sources":["../../../src/media/store.ts"],"sourcesContent":["import { mkdir, readFile, rm, writeFile } from 'node:fs/promises';\nimport { extname, join, parse as parsePath } from 'node:path';\nimport { randomUUID } from 'node:crypto';\n\nimport { getMediaBucketDir, getMediaDir, isPathInside } from './paths.js';\nimport { buildMediaUri } from './uri.js';\nimport type { MediaBucket, SavedMedia } from './types.js';\n\n/** Default per-file cap for inbound staging (5 MiB). */\nexport const MEDIA_MAX_BYTES = 5 * 1024 * 1024;\n\nconst MEDIA_DIR_MODE = 0o700;\nconst MEDIA_FILE_MODE = 0o644;\n\nconst MIME_BY_EXT: Record<string, string> = {\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.webp': 'image/webp',\n '.svg': 'image/svg+xml',\n '.svgz': 'image/svg+xml',\n '.pdf': 'application/pdf',\n '.txt': 'text/plain',\n '.md': 'text/markdown',\n '.json': 'application/json',\n '.webm': 'audio/webm',\n '.ogg': 'audio/ogg',\n '.opus': 'audio/ogg',\n '.mp3': 'audio/mpeg',\n '.wav': 'audio/wav',\n '.m4a': 'audio/mp4',\n};\n\nfunction sanitizeFilename(name: string): string {\n const base = name.replace(/[/\\\\?%*:|\"<>]/g, '_').trim() || 'file';\n return base.slice(0, 60);\n}\n\nfunction extFromMime(mimeType: string | undefined, fallbackName?: string): string {\n if (mimeType) {\n const m = mimeType.split(';')[0]?.trim().toLowerCase() ?? '';\n if (m === 'image/jpeg') return '.jpg';\n if (m === 'image/png') return '.png';\n if (m === 'image/webp') return '.webp';\n if (m === 'image/gif') return '.gif';\n if (m === 'image/svg+xml') return '.svg';\n if (m === 'application/pdf') return '.pdf';\n if (m === 'audio/ogg') return '.ogg';\n if (m === 'audio/mpeg') return '.mp3';\n if (m === 'audio/wav') return '.wav';\n if (m === 'audio/webm') return '.webm';\n if (m === 'audio/mp4') return '.m4a';\n if (m === 'text/plain') return '.txt';\n }\n const fromName = fallbackName ? extname(fallbackName).toLowerCase() : '';\n if (fromName && fromName.length <= 10) return fromName;\n return '.bin';\n}\n\nfunction buildSavedMediaId(opts: {\n baseId: string;\n ext: string;\n originalFilename?: string;\n}): string {\n const ext = opts.ext.startsWith('.') ? opts.ext : `.${opts.ext}`;\n if (opts.originalFilename) {\n const stem = sanitizeFilename(parsePath(opts.originalFilename).name);\n if (stem) {\n return `${stem}---${opts.baseId}${ext}`;\n }\n }\n return `${opts.baseId}${ext}`;\n}\n\nfunction assertSafeMediaId(id: string, caller: string): void {\n if (!id || id.includes('/') || id.includes('\\\\') || id.includes('\\0') || id === '..') {\n throw new Error(`${caller}: unsafe media id: ${JSON.stringify(id)}`);\n }\n}\n\nfunction assertSafeBucket(bucket: string): asserts bucket is MediaBucket {\n if (bucket !== 'inbound' && bucket !== 'tts' && bucket !== 'outbound' && bucket !== 'work-item') {\n throw new Error(`Unsupported media bucket: ${JSON.stringify(bucket)}`);\n }\n}\n\nexport async function ensureMediaDir(): Promise<string> {\n const root = getMediaDir();\n await mkdir(root, { recursive: true, mode: MEDIA_DIR_MODE });\n return root;\n}\n\nexport async function saveMediaBuffer(\n buffer: Buffer,\n opts?: {\n contentType?: string;\n bucket?: MediaBucket;\n maxBytes?: number;\n originalFilename?: string;\n },\n): Promise<SavedMedia> {\n const bucket = opts?.bucket ?? 'inbound';\n const maxBytes = opts?.maxBytes ?? MEDIA_MAX_BYTES;\n if (buffer.byteLength > maxBytes) {\n throw new Error(`Media exceeds ${Math.floor(maxBytes / (1024 * 1024))}MB limit`);\n }\n\n await ensureMediaDir();\n const dir = getMediaBucketDir(bucket);\n await mkdir(dir, { recursive: true, mode: MEDIA_DIR_MODE });\n\n const baseId = randomUUID();\n const ext = extFromMime(opts?.contentType, opts?.originalFilename);\n const id = buildSavedMediaId({ baseId, ext, originalFilename: opts?.originalFilename });\n assertSafeMediaId(id, 'saveMediaBuffer');\n\n const absPath = join(dir, id);\n if (!isPathInside(dir, absPath)) {\n throw new Error('Media path escapes bucket directory');\n }\n\n await writeFile(absPath, buffer, { mode: MEDIA_FILE_MODE });\n const uri = buildMediaUri(bucket, id);\n\n return {\n id,\n path: absPath,\n size: buffer.byteLength,\n contentType: opts?.contentType?.split(';')[0]?.trim() || MIME_BY_EXT[ext] || 'application/octet-stream',\n bucket,\n uri,\n };\n}\n\nexport function resolveMediaBufferPath(id: string, bucket: MediaBucket = 'inbound'): string {\n assertSafeBucket(bucket);\n assertSafeMediaId(id, 'resolveMediaBufferPath');\n const dir = getMediaBucketDir(bucket);\n const abs = join(dir, id);\n if (!isPathInside(dir, abs)) {\n throw new Error('Media path escapes bucket directory');\n }\n return abs;\n}\n\nexport async function readMediaBuffer(\n id: string,\n bucket: MediaBucket = 'inbound',\n maxBytes = MEDIA_MAX_BYTES,\n): Promise<{ id: string; path: string; buffer: Buffer; size: number }> {\n const path = resolveMediaBufferPath(id, bucket);\n const buffer = await readFile(path);\n if (buffer.byteLength > maxBytes) {\n throw new Error(`Media ${JSON.stringify(id)} exceeds read limit`);\n }\n return { id, path, buffer, size: buffer.byteLength };\n}\n\nexport async function deleteMediaBuffer(id: string, bucket: MediaBucket = 'inbound'): Promise<void> {\n const path = resolveMediaBufferPath(id, bucket);\n await rm(path, { force: true });\n}\n\nexport function mimeTypeFromMediaPath(filePath: string): string {\n const ext = extname(filePath).toLowerCase();\n return MIME_BY_EXT[ext] ?? 'application/octet-stream';\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"uri.js","names":[],"sources":["../../../src/media/uri.ts"],"sourcesContent":["import type { MediaBucket } from './types.js';\n\nconst BUCKETS: ReadonlySet<string> = new Set(['inbound', 'tts', 'outbound', 'work-item']);\n\nexport class MediaUriError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'MediaUriError';\n }\n}\n\nexport function buildMediaUri(bucket: MediaBucket, id: string): string {\n if (!id || id.includes('/') || id.includes('\\\\') || id.includes('\\0')) {\n throw new MediaUriError(`Invalid media id: ${JSON.stringify(id)}`);\n }\n return `media://${bucket}/${encodeURIComponent(id).replace(/%2F/g, '/')}`;\n}\n\nexport function parseMediaUri(source: string): { bucket: MediaBucket; id: string; uri: string } {\n const trimmed = source.trim();\n if (!/^media:\\/\\//i.test(trimmed)) {\n throw new MediaUriError(`Not a media URI: ${JSON.stringify(source)}`);\n }\n\n let parsed: URL;\n try {\n parsed = new URL(trimmed);\n } catch {\n throw new MediaUriError(`Invalid media URI: ${trimmed}`);\n }\n\n const bucket = parsed.hostname;\n if (!BUCKETS.has(bucket)) {\n throw new MediaUriError(`Unsupported media bucket: ${bucket || '(missing)'}`);\n }\n\n let id: string;\n try {\n id = decodeURIComponent(parsed.pathname.replace(/^\\/+/, ''));\n } catch {\n throw new MediaUriError(`Invalid media URI: ${trimmed}`);\n }\n\n if (!id || id.includes('/') || id.includes('\\\\') || id.includes('\\0')) {\n throw new MediaUriError(`Invalid media URI id: ${trimmed}`);\n }\n\n return {\n bucket: bucket as MediaBucket,\n id,\n uri: trimmed,\n };\n}\n\nexport function tryParseMediaUri(source: string): { bucket: MediaBucket; id: string; uri: string } | null {\n try {\n return parseMediaUri(source);\n } catch {\n return null;\n }\n}\n"],"mappings":";AAEA,MAAM,UAA+B,IAAI,IAAI;CAAC;CAAW;CAAO;CAAY;CAAY,CAAC;AAEzF,IAAa,gBAAb,cAAmC,MAAM;CACvC,YAAY,SAAiB;AAC3B,QAAM,QAAQ;AACd,OAAK,OAAO;;;AAIhB,SAAgB,cAAc,QAAqB,IAAoB;AACrE,KAAI,CAAC,MAAM,GAAG,SAAS,IAAI,IAAI,GAAG,SAAS,KAAK,IAAI,GAAG,SAAS,KAAK,CACnE,OAAM,IAAI,cAAc,qBAAqB,KAAK,UAAU,GAAG,GAAG;AAEpE,QAAO,WAAW,OAAO,GAAG,mBAAmB,GAAG,CAAC,QAAQ,QAAQ,IAAI;;AAGzE,SAAgB,cAAc,QAAkE;CAC9F,MAAM,UAAU,OAAO,MAAM;AAC7B,KAAI,CAAC,eAAe,KAAK,QAAQ,CAC/B,OAAM,IAAI,cAAc,oBAAoB,KAAK,UAAU,OAAO,GAAG;CAGvE,IAAI;AACJ,KAAI;AACF,WAAS,IAAI,IAAI,QAAQ;SACnB;AACN,QAAM,IAAI,cAAc,sBAAsB,UAAU;;CAG1D,MAAM,SAAS,OAAO;AACtB,KAAI,CAAC,QAAQ,IAAI,OAAO,CACtB,OAAM,IAAI,cAAc,6BAA6B,UAAU,cAAc;CAG/E,IAAI;AACJ,KAAI;AACF,OAAK,mBAAmB,OAAO,SAAS,QAAQ,QAAQ,GAAG,CAAC;SACtD;AACN,QAAM,IAAI,cAAc,sBAAsB,UAAU;;AAG1D,KAAI,CAAC,MAAM,GAAG,SAAS,IAAI,IAAI,GAAG,SAAS,KAAK,IAAI,GAAG,SAAS,KAAK,CACnE,OAAM,IAAI,cAAc,yBAAyB,UAAU;AAG7D,QAAO;EACG;EACR;EACA,KAAK;EACN;;AAGH,SAAgB,iBAAiB,QAAyE;AACxG,KAAI;AACF,SAAO,cAAc,OAAO;SACtB;AACN,SAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-key-rotation.js","names":[],"sources":["../../../../src/media-shared/http/api-key-rotation.ts"],"sourcesContent":["/**\n * API key rotation for voice / media-understanding providers.\n *\n * Ported from openclaw/src/agents/api-key-rotation.ts (commit baseline 2026-05-08).\n *\n * DECISION (per docs/voice-rearchitecture.md §7):\n * - Scope is voice / media-understanding only; LLM rotation is out of scope (see §7.5).\n * - Retry decision is delegated to caller via shouldRetry callback. Default policy:\n * rotate on 401 / 403 / 429 / \"rate limit\" / \"quota\" / \"invalid api key\" textual signals.\n * - Network errors and 5xx are NOT rotated (treated as transient infra issues; let\n * the outer fallback chain switch to a different provider instead of burning keys).\n * - Keys are deduplicated and trimmed before iteration; empty strings are dropped.\n */\n\nexport interface ApiKeyRetryParams {\n apiKey: string;\n error: unknown;\n attempt: number;\n message: string;\n}\n\nexport interface ExecuteWithApiKeyRotationOptions<T> {\n /** Provider id (used only for error messages and logs). */\n provider: string;\n /** All candidate keys; primary first. Caller usually obtains via collectProviderApiKeys. */\n apiKeys: string[];\n /** Per-key execution. Returned value is propagated when any key succeeds. */\n execute: (apiKey: string) => Promise<T>;\n /** Decide whether to rotate to the next key. Defaults to isRotatableAuthFailure. */\n shouldRetry?: (params: ApiKeyRetryParams) => boolean;\n /** Optional observation hook fired before rotating to the next key. */\n onRetry?: (params: ApiKeyRetryParams) => void;\n}\n\nconst ROTATABLE_PATTERNS: RegExp[] = [\n /\\b401\\b/,\n /\\b403\\b/,\n /\\b429\\b/,\n /unauthorized/i,\n /forbidden/i,\n /rate[\\s_-]?limit/i,\n /quota/i,\n /invalid[\\s_-]?api[\\s_-]?key/i,\n /api[\\s_-]?key.*(invalid|expired|revoked)/i,\n];\n\n/**\n * Default retry classifier: rotate on auth / quota signals (401/403/429 + textual hints).\n * Network errors and 5xx are intentionally NOT rotated (see file-level DECISION).\n */\nexport function isRotatableAuthFailure(message: string): boolean {\n if (!message) {\n return false;\n }\n for (const pattern of ROTATABLE_PATTERNS) {\n if (pattern.test(message)) {\n return true;\n }\n }\n return false;\n}\n\nfunction dedupeApiKeys(raw: readonly string[]): string[] {\n const seen = new Set<string>();\n const keys: string[] = [];\n for (const value of raw) {\n const apiKey = value.trim();\n if (!apiKey || seen.has(apiKey)) {\n continue;\n }\n seen.add(apiKey);\n keys.push(apiKey);\n }\n return keys;\n}\n\nfunction formatMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === 'string') {\n return error;\n }\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n}\n\n/**\n * Run `execute(apiKey)` with each candidate key in turn until one succeeds or all\n * keys are exhausted. The last error is rethrown when no key succeeds.\n *\n * Throws synchronously when no usable keys are configured (caller should detect\n * this via NotConfiguredError semantics in the upstream provider plugin).\n */\nexport async function executeWithApiKeyRotation<T>(\n options: ExecuteWithApiKeyRotationOptions<T>,\n): Promise<T> {\n const keys = dedupeApiKeys(options.apiKeys);\n if (keys.length === 0) {\n throw new Error(`No API keys configured for provider \"${options.provider}\".`);\n }\n\n let lastError: unknown;\n for (let attempt = 0; attempt < keys.length; attempt += 1) {\n const apiKey = keys[attempt];\n try {\n return await options.execute(apiKey);\n } catch (error) {\n lastError = error;\n const message = formatMessage(error);\n const params: ApiKeyRetryParams = { apiKey, error, attempt, message };\n const retryable = options.shouldRetry\n ? options.shouldRetry(params)\n : isRotatableAuthFailure(message);\n\n if (!retryable || attempt + 1 >= keys.length) {\n break;\n }\n options.onRetry?.(params);\n }\n }\n\n if (lastError === undefined) {\n throw new Error(`Failed to run API request for provider \"${options.provider}\".`);\n }\n throw lastError;\n}\n\n/**\n * Collect candidate keys for a provider from a primary slot + an optional list of\n * extras (typically read from config under e.g. `apiKeys: string[]`).\n *\n * Empty / duplicate values are dropped. The primary key (when set) always comes\n * first so that single-key callers see no behavioral change.\n */\nexport function collectProviderApiKeysForExecution(input: {\n primaryApiKey?: string | null;\n extraApiKeys?: readonly string[];\n}): string[] {\n const primary = input.primaryApiKey?.trim();\n const all = primary ? [primary, ...(input.extraApiKeys ?? [])] : [...(input.extraApiKeys ?? [])];\n return dedupeApiKeys(all);\n}\n"],"mappings":";AAkCA,MAAM,qBAA+B;CACnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;;AAMD,SAAgB,uBAAuB,SAA0B;AAC/D,KAAI,CAAC,QACH,QAAO;AAET,MAAK,MAAM,WAAW,mBACpB,KAAI,QAAQ,KAAK,QAAQ,CACvB,QAAO;AAGX,QAAO;;AAGT,SAAS,cAAc,KAAkC;CACvD,MAAM,uBAAO,IAAI,KAAa;CAC9B,MAAM,OAAiB,EAAE;AACzB,MAAK,MAAM,SAAS,KAAK;EACvB,MAAM,SAAS,MAAM,MAAM;AAC3B,MAAI,CAAC,UAAU,KAAK,IAAI,OAAO,CAC7B;AAEF,OAAK,IAAI,OAAO;AAChB,OAAK,KAAK,OAAO;;AAEnB,QAAO;;AAGT,SAAS,cAAc,OAAwB;AAC7C,KAAI,iBAAiB,MACnB,QAAO,MAAM;AAEf,KAAI,OAAO,UAAU,SACnB,QAAO;AAET,KAAI;AACF,SAAO,KAAK,UAAU,MAAM;SACtB;AACN,SAAO,OAAO,MAAM;;;;;;;;;;AAWxB,eAAsB,0BACpB,SACY;CACZ,MAAM,OAAO,cAAc,QAAQ,QAAQ;AAC3C,KAAI,KAAK,WAAW,EAClB,OAAM,IAAI,MAAM,wCAAwC,QAAQ,SAAS,IAAI;CAG/E,IAAI;AACJ,MAAK,IAAI,UAAU,GAAG,UAAU,KAAK,QAAQ,WAAW,GAAG;EACzD,MAAM,SAAS,KAAK;AACpB,MAAI;AACF,UAAO,MAAM,QAAQ,QAAQ,OAAO;WAC7B,OAAO;AACd,eAAY;GACZ,MAAM,UAAU,cAAc,MAAM;GACpC,MAAM,SAA4B;IAAE;IAAQ;IAAO;IAAS;IAAS;AAKrE,OAAI,EAJc,QAAQ,cACtB,QAAQ,YAAY,OAAO,GAC3B,uBAAuB,QAAQ,KAEjB,UAAU,KAAK,KAAK,OACpC;AAEF,WAAQ,UAAU,OAAO;;;AAI7B,KAAI,cAAc,KAAA,EAChB,OAAM,IAAI,MAAM,2CAA2C,QAAQ,SAAS,IAAI;AAElF,OAAM;;;;;;;;;AAUR,SAAgB,mCAAmC,OAGtC;CACX,MAAM,UAAU,MAAM,eAAe,MAAM;AAE3C,QAAO,cADK,UAAU,CAAC,SAAS,GAAI,MAAM,gBAAgB,EAAE,CAAE,GAAG,CAAC,GAAI,MAAM,gBAAgB,EAAE,CAAE,CACvE"}