@xopcai/xopc 0.0.149 → 0.0.151

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2914) hide show
  1. package/README.md +10 -0
  2. package/README.zh-CN.md +10 -0
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/dashscope/src/image-generation-provider.js +0 -2
  5. package/dist/extensions/demo-memory/src/index.js +0 -2
  6. package/dist/extensions/fal/src/image-generation-provider.js +0 -2
  7. package/dist/extensions/feishu/src/actions/message-action-handler.js +0 -2
  8. package/dist/extensions/feishu/src/adapters/cli-login.js +0 -2
  9. package/dist/extensions/feishu/src/adapters/gateway-setup.js +0 -2
  10. package/dist/extensions/feishu/src/adapters/onboard-cli.js +0 -2
  11. package/dist/extensions/feishu/src/auth/app-registration.js +0 -2
  12. package/dist/extensions/feishu/src/auth/pairing.js +0 -2
  13. package/dist/extensions/feishu/src/auth/paths.js +0 -2
  14. package/dist/extensions/feishu/src/directory/directory-adapter.js +0 -2
  15. package/dist/extensions/feishu/src/format.js +0 -2
  16. package/dist/extensions/feishu/src/index.js +0 -2
  17. package/dist/extensions/feishu/src/outbound/actions.js +0 -2
  18. package/dist/extensions/feishu/src/outbound/media-load.js +0 -2
  19. package/dist/extensions/feishu/src/outbound/outbound-adapter.js +0 -2
  20. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js +0 -2
  21. package/dist/extensions/feishu/src/pairing-config-resolver.js +0 -2
  22. package/dist/extensions/feishu/src/plugin.js +0 -2
  23. package/dist/extensions/feishu/src/schema/config-schema.js +0 -2
  24. package/dist/extensions/feishu/src/state/accounts.js +0 -2
  25. package/dist/extensions/feishu/src/state/message-bindings.js +0 -2
  26. package/dist/extensions/feishu/src/state/thread-bindings.js +0 -2
  27. package/dist/extensions/feishu/src/status/doctor.js +0 -2
  28. package/dist/extensions/feishu/src/status/status-adapter.js +0 -2
  29. package/dist/extensions/feishu/src/streaming/streaming-adapter.js +0 -2
  30. package/dist/extensions/feishu/src/subagent-hooks.js +0 -2
  31. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js +0 -2
  32. package/dist/extensions/feishu/src/tools/docx/docx-color-text.d.ts +6 -3386
  33. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js +0 -2
  34. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.d.ts +16 -16927
  35. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js +0 -2
  36. package/dist/extensions/feishu/src/tools/tools.js +0 -2
  37. package/dist/extensions/feishu/src/transport/client/client.js +2 -4
  38. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js +0 -2
  39. package/dist/extensions/feishu/src/transport/client/lark-sdk.d.ts +3 -0
  40. package/dist/extensions/feishu/src/transport/client/lark-sdk.js +14 -0
  41. package/dist/extensions/feishu/src/transport/reliability/dedupe.js +0 -2
  42. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js +0 -2
  43. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js +0 -2
  44. package/dist/extensions/feishu/src/transport/socket-mode/retry.js +0 -2
  45. package/dist/extensions/feishu/src/transport/text/mentions.js +0 -2
  46. package/dist/extensions/feishu/src/transport/webhook/monitor.js +3 -5
  47. package/dist/extensions/feishu/src/ui/config-surface.js +0 -2
  48. package/dist/extensions/feishu/src/workflow-progress.js +0 -2
  49. package/dist/extensions/google/src/image-generation-provider.js +0 -2
  50. package/dist/extensions/minimax/src/image-generation-provider.js +0 -2
  51. package/dist/extensions/openai/src/image-generation-provider.js +0 -2
  52. package/dist/extensions/telegram/src/access-control.js +0 -2
  53. package/dist/extensions/telegram/src/account-manager.js +0 -2
  54. package/dist/extensions/telegram/src/actions/message-actions.js +0 -2
  55. package/dist/extensions/telegram/src/adapters/command-adapter.js +0 -2
  56. package/dist/extensions/telegram/src/adapters/config-adapter.js +0 -2
  57. package/dist/extensions/telegram/src/adapters/debounce-keys.js +0 -2
  58. package/dist/extensions/telegram/src/adapters/gateway-adapter.js +0 -2
  59. package/dist/extensions/telegram/src/adapters/gateway-setup.js +0 -2
  60. package/dist/extensions/telegram/src/adapters/inbound-access.js +0 -2
  61. package/dist/extensions/telegram/src/adapters/index.js +0 -2
  62. package/dist/extensions/telegram/src/adapters/onboard-cli.js +0 -2
  63. package/dist/extensions/telegram/src/adapters/outbound-adapter.js +0 -2
  64. package/dist/extensions/telegram/src/adapters/security-adapter.js +0 -2
  65. package/dist/extensions/telegram/src/adapters/setup-wizard.js +0 -2
  66. package/dist/extensions/telegram/src/adapters/status-adapter.js +0 -2
  67. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +0 -2
  68. package/dist/extensions/telegram/src/api-root.js +0 -2
  69. package/dist/extensions/telegram/src/approval-delivery.js +0 -2
  70. package/dist/extensions/telegram/src/approval-store.js +0 -2
  71. package/dist/extensions/telegram/src/caption.js +0 -2
  72. package/dist/extensions/telegram/src/command-handler.js +0 -2
  73. package/dist/extensions/telegram/src/config-schema.js +0 -2
  74. package/dist/extensions/telegram/src/conversation-id.js +0 -2
  75. package/dist/extensions/telegram/src/dedupe.js +0 -2
  76. package/dist/extensions/telegram/src/delivery-chat-id.js +0 -2
  77. package/dist/extensions/telegram/src/doctor.js +0 -2
  78. package/dist/extensions/telegram/src/draft-stream-lifecycle.js +0 -2
  79. package/dist/extensions/telegram/src/draft-stream-loop.js +0 -2
  80. package/dist/extensions/telegram/src/draft-stream.js +0 -2
  81. package/dist/extensions/telegram/src/errors.js +0 -2
  82. package/dist/extensions/telegram/src/exec-approval-handler.js +0 -2
  83. package/dist/extensions/telegram/src/exec-approvals.js +0 -2
  84. package/dist/extensions/telegram/src/focus-handler.js +0 -2
  85. package/dist/extensions/telegram/src/format.js +0 -2
  86. package/dist/extensions/telegram/src/group-config-resolver.js +0 -2
  87. package/dist/extensions/telegram/src/inbound-coalescer.js +0 -2
  88. package/dist/extensions/telegram/src/inbound-processor.js +0 -2
  89. package/dist/extensions/telegram/src/index.js +0 -2
  90. package/dist/extensions/telegram/src/inline-keyboards.js +0 -2
  91. package/dist/extensions/telegram/src/network-errors.js +0 -2
  92. package/dist/extensions/telegram/src/outbound-sender.js +0 -2
  93. package/dist/extensions/telegram/src/pairing-config-resolver.js +0 -2
  94. package/dist/extensions/telegram/src/plugin-defaults.js +0 -2
  95. package/dist/extensions/telegram/src/plugin.js +0 -2
  96. package/dist/extensions/telegram/src/polling-session.js +0 -2
  97. package/dist/extensions/telegram/src/proxy-fetch.js +0 -2
  98. package/dist/extensions/telegram/src/reactions.js +0 -2
  99. package/dist/extensions/telegram/src/reply-params.js +0 -2
  100. package/dist/extensions/telegram/src/routing-integration.js +0 -2
  101. package/dist/extensions/telegram/src/send-options.js +0 -2
  102. package/dist/extensions/telegram/src/sent-cache.js +0 -2
  103. package/dist/extensions/telegram/src/startup-errors.js +0 -2
  104. package/dist/extensions/telegram/src/telegram-actions.js +0 -2
  105. package/dist/extensions/telegram/src/telegram-draft-errors.js +0 -2
  106. package/dist/extensions/telegram/src/thread-bindings.js +0 -2
  107. package/dist/extensions/telegram/src/timeout-abort.js +0 -2
  108. package/dist/extensions/telegram/src/token-resolver.js +0 -2
  109. package/dist/extensions/telegram/src/update-offset-store.js +0 -2
  110. package/dist/extensions/telegram/src/workflow-progress.js +0 -2
  111. package/dist/extensions/telegram/xopc.extension.json +1 -1
  112. package/dist/extensions/weixin/src/adapters/onboard-cli.js +0 -2
  113. package/dist/extensions/weixin/src/api/api.js +0 -2
  114. package/dist/extensions/weixin/src/api/config-cache.js +0 -2
  115. package/dist/extensions/weixin/src/api/session-guard.js +0 -2
  116. package/dist/extensions/weixin/src/api/types.js +0 -2
  117. package/dist/extensions/weixin/src/auth/accounts.js +0 -2
  118. package/dist/extensions/weixin/src/auth/login-qr.js +0 -2
  119. package/dist/extensions/weixin/src/auth/pairing.js +0 -2
  120. package/dist/extensions/weixin/src/auth/weixin-account-id.js +0 -2
  121. package/dist/extensions/weixin/src/cdn/aes-ecb.js +0 -2
  122. package/dist/extensions/weixin/src/cdn/cdn-upload.js +0 -2
  123. package/dist/extensions/weixin/src/cdn/cdn-url.js +0 -2
  124. package/dist/extensions/weixin/src/cdn/pic-decrypt.js +0 -2
  125. package/dist/extensions/weixin/src/cdn/upload.js +0 -2
  126. package/dist/extensions/weixin/src/cli/gateway-qr-login.js +0 -2
  127. package/dist/extensions/weixin/src/cli/qr-login.js +0 -2
  128. package/dist/extensions/weixin/src/config-schema.js +0 -2
  129. package/dist/extensions/weixin/src/config-surface.js +0 -2
  130. package/dist/extensions/weixin/src/delivery-to.js +0 -2
  131. package/dist/extensions/weixin/src/index.js +0 -2
  132. package/dist/extensions/weixin/src/media/data-url.js +0 -2
  133. package/dist/extensions/weixin/src/media/media-download.js +0 -2
  134. package/dist/extensions/weixin/src/media/mime.js +0 -2
  135. package/dist/extensions/weixin/src/media/silk-transcode.js +0 -2
  136. package/dist/extensions/weixin/src/messaging/context-token-init.js +0 -2
  137. package/dist/extensions/weixin/src/messaging/debug-mode.js +0 -2
  138. package/dist/extensions/weixin/src/messaging/error-notice.js +0 -2
  139. package/dist/extensions/weixin/src/messaging/inbound.js +0 -2
  140. package/dist/extensions/weixin/src/messaging/markdown-filter.js +0 -2
  141. package/dist/extensions/weixin/src/messaging/process-message.js +0 -2
  142. package/dist/extensions/weixin/src/messaging/send-media.js +0 -2
  143. package/dist/extensions/weixin/src/messaging/send.js +0 -2
  144. package/dist/extensions/weixin/src/messaging/slash-commands.js +0 -2
  145. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js +0 -2
  146. package/dist/extensions/weixin/src/monitor/monitor.js +0 -2
  147. package/dist/extensions/weixin/src/outbound-send.js +0 -2
  148. package/dist/extensions/weixin/src/pairing-config-resolver.js +0 -2
  149. package/dist/extensions/weixin/src/plugin.js +0 -2
  150. package/dist/extensions/weixin/src/routing-integration.js +0 -2
  151. package/dist/extensions/weixin/src/storage/state-dir.js +0 -2
  152. package/dist/extensions/weixin/src/storage/sync-buf.js +0 -2
  153. package/dist/extensions/weixin/src/util/logger.js +0 -2
  154. package/dist/extensions/weixin/src/util/random.js +0 -2
  155. package/dist/extensions/weixin/src/util/redact.js +0 -2
  156. package/dist/extensions/weixin/src/workflow-progress.js +0 -2
  157. package/dist/gateway/static/root/assets/{activity-store-B4s0ipx2.js → activity-store-uu1xu9Pl.js} +1 -1
  158. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSccACje.js → agent-avatar-dicebear-BuO-OVfD.js} +1 -1
  159. package/dist/gateway/static/root/assets/agents-Bpv3h31T.js +2 -0
  160. package/dist/gateway/static/root/assets/{api-BMdUsNCV.js → api-CwL38LEV.js} +1 -1
  161. package/dist/gateway/static/root/assets/{app-management-settings-panel-DrLGhYkI.js → app-management-settings-panel-B6OU3Eol.js} +1 -1
  162. package/dist/gateway/static/root/assets/appearance-settings-BaP4GFvN.js +1 -0
  163. package/dist/gateway/static/root/assets/apps-page-DZKNIMRg.js +1 -0
  164. package/dist/gateway/static/root/assets/{archive-plugin-BQ17IK9x.js → archive-plugin-CJX3zIh_.js} +1 -1
  165. package/dist/gateway/static/root/assets/{attachment-load-HXvgWHXu.js → attachment-load-CI1ejk_l.js} +1 -1
  166. package/dist/gateway/static/root/assets/{automation-suggestion-card-CjIWpsch.js → automation-suggestion-card-CjmhICbv.js} +1 -1
  167. package/dist/gateway/static/root/assets/automations-page-BtZl3B8m.js +6 -0
  168. package/dist/gateway/static/root/assets/{binary-plugins-DifWJzNZ.js → binary-plugins-CZ8nOXqK.js} +1 -1
  169. package/dist/gateway/static/root/assets/{block-editor-DtRzIkPU.js → block-editor-BoSfyS_j.js} +46 -46
  170. package/dist/gateway/static/root/assets/browser-settings-page-CL1UiPcb.js +8 -0
  171. package/dist/gateway/static/root/assets/{capability-presets-api-DazKjWW1.js → capability-presets-api-XzDKxPZ8.js} +1 -1
  172. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-Cvrw4fD1.js → capability-presets-settings-panel-Dc_uHYgl.js} +2 -2
  173. package/dist/gateway/static/root/assets/{channel-recipient-api-Bea6if_6.js → channel-recipient-api-DYLBAhFF.js} +1 -1
  174. package/dist/gateway/static/root/assets/channels-settings-mALvXpJj.js +1 -0
  175. package/dist/gateway/static/root/assets/channels-status-swr-CZuEsO5b.js +1 -0
  176. package/dist/gateway/static/root/assets/{connector-logo-BjbYbJjQ.js → connector-logo-BSjlInHT.js} +1 -1
  177. package/dist/gateway/static/root/assets/connectors-page-Cm_E3mmI.js +2 -0
  178. package/dist/gateway/static/root/assets/desktop-pet-DcJc91-C.js +1 -0
  179. package/dist/gateway/static/root/assets/desktop-pet-settings-CdeqTa3Q.js +1 -0
  180. package/dist/gateway/static/root/assets/{directory-picker-path-field-C8zZNUzC.js → directory-picker-path-field-Cp3fpm0k.js} +1 -1
  181. package/dist/gateway/static/root/assets/{dreaming-settings-gJSw7Adk.js → dreaming-settings-Bwj1O3zr.js} +3 -3
  182. package/dist/gateway/static/root/assets/{extension-debug-page-DFE5ADJ0.js → extension-debug-page-D_1xpKbZ.js} +1 -1
  183. package/dist/gateway/static/root/assets/{extension-page-CfR-aW8G.js → extension-page-CqZNCj96.js} +1 -1
  184. package/dist/gateway/static/root/assets/{extension-settings-page-CFIEbs2L.js → extension-settings-page-5MWbtQaQ.js} +1 -1
  185. package/dist/gateway/static/root/assets/{gateway-config-api-B6M_ra8U.js → gateway-config-api-Co_IaS34.js} +1 -1
  186. package/dist/gateway/static/root/assets/gateway-settings-kmeWm2Pt.js +1 -0
  187. package/dist/gateway/static/root/assets/{gateway-startup-retry-DNA3OOzV.js → gateway-startup-retry-BM_xvzl0.js} +1 -1
  188. package/dist/gateway/static/root/assets/goal-create-dialog-FoO-R4_U.js +1 -0
  189. package/dist/gateway/static/root/assets/goal-detail-page-CkJq7N5g.js +4 -0
  190. package/dist/gateway/static/root/assets/{goals-config-api-D88opgcs.js → goals-config-api-DrtsYjXz.js} +1 -1
  191. package/dist/gateway/static/root/assets/goals-page-DRAN-R64.js +2 -0
  192. package/dist/gateway/static/root/assets/{goals-settings-D07UL8Jo.js → goals-settings-wq9TKhIZ.js} +1 -1
  193. package/dist/gateway/static/root/assets/{heartbeat-settings-YCSNOcXC.js → heartbeat-settings-B5zDoHbo.js} +1 -1
  194. package/dist/gateway/static/root/assets/index-DIlxvrlG.css +1 -0
  195. package/dist/gateway/static/root/assets/index-apLU0Hun.js +196 -0
  196. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-3tC9iD21.js +1 -0
  197. package/dist/gateway/static/root/assets/local-app-workbench-page-CT-vDTLK.js +2 -0
  198. package/dist/gateway/static/root/assets/{local-apps-page-CKvtLzsF.js → local-apps-page-B9ruF9GV.js} +1 -1
  199. package/dist/gateway/static/root/assets/locale-store-GfSwnwIZ.js +1 -0
  200. package/dist/gateway/static/root/assets/logs-page-Ca1X8X2P.js +7 -0
  201. package/dist/gateway/static/root/assets/{markdown-split-BVSFG99p.js → markdown-split-CzuhSQAB.js} +1 -1
  202. package/dist/gateway/static/root/assets/{media-plugins-DdOjIVk3.js → media-plugins-a3R4y-EL.js} +1 -1
  203. package/dist/gateway/static/root/assets/messages-B0B40tpO.js +5 -0
  204. package/dist/gateway/static/root/assets/models-hub-panel-CbTlz9Of.js +2 -0
  205. package/dist/gateway/static/root/assets/{notes-page-ZbLR3awn.js → notes-page-BCxDy2dV.js} +1 -1
  206. package/dist/gateway/static/root/assets/notes-workbench-z6sBX9B2.js +4 -0
  207. package/dist/gateway/static/root/assets/{page-tabs-DMlQERNg.js → page-tabs-CJfk6M78.js} +1 -1
  208. package/dist/gateway/static/root/assets/{preview-open-alternatives-CbiJRPxK.js → preview-open-alternatives-MFopTSgF.js} +1 -1
  209. package/dist/gateway/static/root/assets/project-detail-page-DU29deIr.js +1 -0
  210. package/dist/gateway/static/root/assets/projects-page-Ck3DLTlZ.js +1 -0
  211. package/dist/gateway/static/root/assets/remote-access-hub-gLsLyAyi.js +1 -0
  212. package/dist/gateway/static/root/assets/{save-bar-controls-BZTj3hxl.js → save-bar-controls-D0uhU3Z8.js} +1 -1
  213. package/dist/gateway/static/root/assets/{schedule-field-CxYDObjT.js → schedule-field-NGOH-7wV.js} +1 -1
  214. package/dist/gateway/static/root/assets/{schema-form-CBbXgpKQ.js → schema-form-BJz5LoqG.js} +1 -1
  215. package/dist/gateway/static/root/assets/schemas-DgQq6Z5S.js +64 -0
  216. package/dist/gateway/static/root/assets/sessions-page-TmNoWpa_.js +1 -0
  217. package/dist/gateway/static/root/assets/settings-advanced-gate-CtPhh2m9.js +1 -0
  218. package/dist/gateway/static/root/assets/{settings-collapsible-section-BySKZ8rp.js → settings-collapsible-section-oDnUHnX_.js} +1 -1
  219. package/dist/gateway/static/root/assets/{settings-form-section-CjINay6t.js → settings-form-section-DND90dDt.js} +1 -1
  220. package/dist/gateway/static/root/assets/settings-loading-skeleton-CEJtaoQp.js +1 -0
  221. package/dist/gateway/static/root/assets/{settings-page-BNrVwuL7.js → settings-page-B1LJlRi9.js} +1 -1
  222. package/dist/gateway/static/root/assets/{settings-page-layout-HdlQOOqp.js → settings-page-layout-CsrLuDsW.js} +1 -1
  223. package/dist/gateway/static/root/assets/setup-status-panel-BPCJPHHY.js +1 -0
  224. package/dist/gateway/static/root/assets/{share-preview-page-DC-eQONB.js → share-preview-page-C1PwLh-p.js} +1 -1
  225. package/dist/gateway/static/root/assets/shares-settings-DCuqr7js.js +1 -0
  226. package/dist/gateway/static/root/assets/skill-reload-api-kn1Vypcy.js +1 -0
  227. package/dist/gateway/static/root/assets/skills-page-k6VIqTkK.js +2 -0
  228. package/dist/gateway/static/root/assets/{system-settings-panel-CVa90q2f.js → system-settings-panel-BEsrEkSx.js} +1 -1
  229. package/dist/gateway/static/root/assets/{theme-store-D1cOpgsy.js → theme-store-Bi6hMBDb.js} +1 -1
  230. package/dist/gateway/static/root/assets/{typed-models-lib-DIKF9vpz.js → typed-models-lib-dOypdlMf.js} +1 -1
  231. package/dist/gateway/static/root/assets/{use-channel-catalog-DnvpI0Ys.js → use-channel-catalog-f8A-PVuq.js} +1 -1
  232. package/dist/gateway/static/root/assets/user-context-page-B9Y_Ciav.js +1 -0
  233. package/dist/gateway/static/root/assets/{user-profile-fields-editor-y8gTmkPX.js → user-profile-fields-editor-DGC38Lx7.js} +1 -1
  234. package/dist/gateway/static/root/assets/{user-profile-settings-panel-C3pvqe28.js → user-profile-settings-panel-DFkZ-tan.js} +1 -1
  235. package/dist/gateway/static/root/assets/{utils-BK2vwu_3.js → utils-CEIYZihF.js} +1 -1
  236. package/dist/gateway/static/root/assets/voice-api-key-field-DK6gaQsA.js +1 -0
  237. package/dist/gateway/static/root/assets/work-discovery-page-DSJb9Kq7.js +1 -0
  238. package/dist/gateway/static/root/assets/work-item-detail-page-DVavwV3D.js +1 -0
  239. package/dist/gateway/static/root/assets/work-page-foJDp0nz.js +1 -0
  240. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BYqZpFCC.js +3 -0
  241. package/dist/gateway/static/root/assets/workflows-page-DgO0WAzs.js +11 -0
  242. package/dist/gateway/static/root/favicon.svg +1 -187
  243. package/dist/gateway/static/root/index.html +8 -7
  244. package/dist/gateway/static/root/logo-dark.svg +1 -185
  245. package/dist/gateway/static/root/logo.svg +1 -185
  246. package/dist/package.js +1 -3
  247. package/dist/src/activity/context.js +0 -2
  248. package/dist/src/activity/emitter.js +0 -2
  249. package/dist/src/activity/service.js +0 -2
  250. package/dist/src/agent/agent-manager.d.ts +1 -0
  251. package/dist/src/agent/agent-manager.js +1 -2
  252. package/dist/src/agent/agent-scope.js +0 -2
  253. package/dist/src/agent/background-review/coordinator.js +0 -2
  254. package/dist/src/agent/background-review/prompts.js +0 -2
  255. package/dist/src/agent/background-review/run-background-review.js +0 -2
  256. package/dist/src/agent/background-review/settings.js +0 -2
  257. package/dist/src/agent/bootstrap/bootstrap-cache.js +0 -2
  258. package/dist/src/agent/bootstrap/bootstrap-context.js +0 -2
  259. package/dist/src/agent/bootstrap/bootstrap-files.js +0 -2
  260. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +0 -2
  261. package/dist/src/agent/bootstrap/load-bootstrap-files.js +0 -2
  262. package/dist/src/agent/bootstrap/project-agents-context.js +0 -2
  263. package/dist/src/agent/capabilities/definitions.js +0 -2
  264. package/dist/src/agent/capabilities/registry.js +0 -2
  265. package/dist/src/agent/child-agent-factory.js +0 -2
  266. package/dist/src/agent/client-error-format.js +0 -2
  267. package/dist/src/agent/code-intelligence/binary.js +0 -2
  268. package/dist/src/agent/code-intelligence/runtime.js +0 -2
  269. package/dist/src/agent/code-intelligence/tools.js +0 -2
  270. package/dist/src/agent/coding/turn-diff-tracker.js +0 -2
  271. package/dist/src/agent/context/expand-at-file-mentions.js +0 -2
  272. package/dist/src/agent/context/project-context.js +0 -2
  273. package/dist/src/agent/context/workspace-seed.js +0 -2
  274. package/dist/src/agent/context/workspace-state.js +0 -2
  275. package/dist/src/agent/context/workspace.js +0 -2
  276. package/dist/src/agent/embedded/run-for-session.js +0 -2
  277. package/dist/src/agent/embedded/run-turn.js +0 -2
  278. package/dist/src/agent/embedded/runs.js +0 -2
  279. package/dist/src/agent/embedded/session-manager-init.js +0 -2
  280. package/dist/src/agent/embedded/session-runner.js +0 -2
  281. package/dist/src/agent/embedded/session-tool-result-guard.js +0 -2
  282. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +0 -2
  283. package/dist/src/agent/embedded/subscribe-session.js +0 -2
  284. package/dist/src/agent/embedded/system-prompt-override.js +0 -2
  285. package/dist/src/agent/embedded/tool-result-context-guard.js +0 -2
  286. package/dist/src/agent/embedded/tool-result-truncation.js +0 -2
  287. package/dist/src/agent/embedded/xopc-auth-storage.js +0 -2
  288. package/dist/src/agent/embedded/xopc-stream-bridge.js +0 -2
  289. package/dist/src/agent/embedded/xopc-tools-bridge.js +0 -2
  290. package/dist/src/agent/failover-error.js +0 -2
  291. package/dist/src/agent/fallback/candidates.js +0 -2
  292. package/dist/src/agent/fallback/reason.js +0 -2
  293. package/dist/src/agent/feedback/feedback-coordinator.js +0 -2
  294. package/dist/src/agent/goals/checklist-judge.js +0 -2
  295. package/dist/src/agent/goals/checklist-types.js +0 -2
  296. package/dist/src/agent/goals/evaluate-turn.js +0 -2
  297. package/dist/src/agent/goals/goal-locale.js +0 -2
  298. package/dist/src/agent/goals/judge.js +0 -2
  299. package/dist/src/agent/goals/persistent-goal-service.js +0 -2
  300. package/dist/src/agent/goals/post-turn.js +0 -2
  301. package/dist/src/agent/goals/state.js +0 -2
  302. package/dist/src/agent/image/generation/bundled-registry.js +0 -2
  303. package/dist/src/agent/image/generation/bundled.js +0 -2
  304. package/dist/src/agent/image/generation/image-assets.js +0 -2
  305. package/dist/src/agent/image/generation/model-ref.js +0 -2
  306. package/dist/src/agent/image/generation/normalization.js +0 -2
  307. package/dist/src/agent/image/generation/openai-compatible-image-provider.js +0 -2
  308. package/dist/src/agent/image/generation/provider-registry.js +0 -2
  309. package/dist/src/agent/image/generation/runtime.js +0 -2
  310. package/dist/src/agent/image/image-helpers.js +0 -2
  311. package/dist/src/agent/image/image-model-fallback.js +0 -2
  312. package/dist/src/agent/image/inbound-image-handling.js +0 -2
  313. package/dist/src/agent/image/load-image-media.js +0 -2
  314. package/dist/src/agent/image/tool-model-config.js +0 -2
  315. package/dist/src/agent/image/understanding/pi-ai-provider.js +0 -2
  316. package/dist/src/agent/image/understanding/provider-registry.js +0 -2
  317. package/dist/src/agent/image/understanding/runtime.js +0 -2
  318. package/dist/src/agent/image/vision-detection.js +0 -2
  319. package/dist/src/agent/inbound/attachment-pipeline.js +0 -2
  320. package/dist/src/agent/inbound/inbound-loop.js +0 -2
  321. package/dist/src/agent/inbound/turn-dispatcher.js +0 -2
  322. package/dist/src/agent/ipc/bus.js +0 -2
  323. package/dist/src/agent/ipc/inbox.js +0 -2
  324. package/dist/src/agent/ipc/socket.js +0 -2
  325. package/dist/src/agent/ipc/types.js +0 -2
  326. package/dist/src/agent/lifecycle/handlers/compaction.js +0 -2
  327. package/dist/src/agent/lifecycle/hook-handler.js +0 -2
  328. package/dist/src/agent/lifecycle/manager.js +0 -2
  329. package/dist/src/agent/lifecycle/progress.js +0 -2
  330. package/dist/src/agent/lifecycle/timeout-wrapper.js +0 -2
  331. package/dist/src/agent/lifecycle/typing.js +0 -2
  332. package/dist/src/agent/mcp/bundle-mcp-config.js +0 -2
  333. package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -2
  334. package/dist/src/agent/mcp/bundle-mcp-names.js +0 -2
  335. package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -2
  336. package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -2
  337. package/dist/src/agent/mcp/embedded-mcp.js +0 -2
  338. package/dist/src/agent/mcp/mcp-config-shared.js +0 -2
  339. package/dist/src/agent/mcp/mcp-http.js +0 -2
  340. package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -2
  341. package/dist/src/agent/mcp/mcp-stdio.js +0 -2
  342. package/dist/src/agent/mcp/mcp-tool-meta.js +0 -2
  343. package/dist/src/agent/mcp/mcp-transport-config.js +0 -2
  344. package/dist/src/agent/mcp/mcp-transport.js +0 -2
  345. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -2
  346. package/dist/src/agent/media-generation/model-ref.js +0 -2
  347. package/dist/src/agent/media-generation/normalization.types.js +0 -2
  348. package/dist/src/agent/media-generation/runtime-shared.js +0 -2
  349. package/dist/src/agent/memory/agent-message-access.js +0 -2
  350. package/dist/src/agent/memory/builtin-memory-store.js +0 -2
  351. package/dist/src/agent/memory/builtin-provider.js +0 -2
  352. package/dist/src/agent/memory/compaction.js +0 -2
  353. package/dist/src/agent/memory/context/planner.js +0 -2
  354. package/dist/src/agent/memory/context-fence.js +0 -2
  355. package/dist/src/agent/memory/create-memory-manager.js +0 -2
  356. package/dist/src/agent/memory/dreaming/config.js +0 -2
  357. package/dist/src/agent/memory/dreaming/constants.js +0 -2
  358. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -2
  359. package/dist/src/agent/memory/dreaming/events.js +0 -2
  360. package/dist/src/agent/memory/dreaming/last-run.js +0 -2
  361. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -2
  362. package/dist/src/agent/memory/dreaming/preview.js +0 -2
  363. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -2
  364. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -2
  365. package/dist/src/agent/memory/dreaming/scope.js +0 -2
  366. package/dist/src/agent/memory/dreaming/short-term-store.js +0 -2
  367. package/dist/src/agent/memory/dreaming/utils.js +0 -2
  368. package/dist/src/agent/memory/lifecycle.js +0 -2
  369. package/dist/src/agent/memory/manager.js +0 -2
  370. package/dist/src/agent/memory/memory-config.js +0 -2
  371. package/dist/src/agent/memory/message-sanitizer.js +0 -2
  372. package/dist/src/agent/memory/plugin-discovery.js +0 -2
  373. package/dist/src/agent/memory/sensitivity.js +0 -2
  374. package/dist/src/agent/memory/source-origin.js +0 -2
  375. package/dist/src/agent/memory/stub-memory-provider.js +0 -2
  376. package/dist/src/agent/memory/summary-generator.js +0 -2
  377. package/dist/src/agent/memory/understanding/correction.js +0 -2
  378. package/dist/src/agent/memory/understanding/quality.js +0 -2
  379. package/dist/src/agent/memory/understanding/service.js +0 -2
  380. package/dist/src/agent/memory/user-context-coordinator.js +0 -2
  381. package/dist/src/agent/memory/user-message-text.js +0 -2
  382. package/dist/src/agent/memory/window.js +0 -2
  383. package/dist/src/agent/messaging/command-handler.js +0 -2
  384. package/dist/src/agent/messaging/message-router.js +0 -2
  385. package/dist/src/agent/messaging/outbound-coordinator.js +0 -2
  386. package/dist/src/agent/messaging/stream-manager.js +0 -2
  387. package/dist/src/agent/middleware/context.js +0 -2
  388. package/dist/src/agent/middleware/self-verify.js +0 -2
  389. package/dist/src/agent/models/manager.js +0 -2
  390. package/dist/src/agent/models/request-limiter.js +0 -2
  391. package/dist/src/agent/models/selection.js +0 -2
  392. package/dist/src/agent/orchestration/agent-event-handler.js +0 -2
  393. package/dist/src/agent/orchestration/agent-orchestrator.js +0 -2
  394. package/dist/src/agent/orchestration/llm-turn-retry.js +0 -2
  395. package/dist/src/agent/orchestration/loop-guard.js +0 -2
  396. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +0 -2
  397. package/dist/src/agent/prompt/cache-boundary.js +0 -2
  398. package/dist/src/agent/prompt/memory/index.js +0 -2
  399. package/dist/src/agent/prompt/safety.js +0 -2
  400. package/dist/src/agent/prompt/sanitize-for-prompt.js +0 -2
  401. package/dist/src/agent/prompt/sections/behavior.js +0 -2
  402. package/dist/src/agent/prompt/sections/memory-skills.js +0 -2
  403. package/dist/src/agent/prompt/sections/messaging-runtime.js +0 -2
  404. package/dist/src/agent/prompt/sections/project-context.js +0 -2
  405. package/dist/src/agent/prompt/sections/tooling.js +0 -2
  406. package/dist/src/agent/prompt/sections/workspace-runtime.js +0 -2
  407. package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
  408. package/dist/src/agent/prompt/subagent-context.js +0 -2
  409. package/dist/src/agent/prompt/system-prompt-params.js +0 -2
  410. package/dist/src/agent/prompt/system-prompt.js +0 -2
  411. package/dist/src/agent/prompt/system-reminder.js +0 -2
  412. package/dist/src/agent/reply/apply-turn-user-enrichment.js +0 -2
  413. package/dist/src/agent/reply/post-compaction-context.js +0 -2
  414. package/dist/src/agent/reply/startup-context.js +0 -2
  415. package/dist/src/agent/reply/workspace-boundary-read.js +0 -2
  416. package/dist/src/agent/sandbox/command-validator.js +0 -2
  417. package/dist/src/agent/sandbox/exec-policy.js +0 -2
  418. package/dist/src/agent/sandbox/path-policy.js +0 -2
  419. package/dist/src/agent/sandbox/sanitize-env-vars.js +0 -2
  420. package/dist/src/agent/sandbox/types.js +0 -2
  421. package/dist/src/agent/service/async-queue.js +0 -2
  422. package/dist/src/agent/service/btw-query.js +0 -2
  423. package/dist/src/agent/service/build-direct-message-content.js +0 -2
  424. package/dist/src/agent/service/direct-turn-helpers.js +0 -2
  425. package/dist/src/agent/service/parse-outbound-session-key.js +0 -2
  426. package/dist/src/agent/service/process-direct-one-shot.js +0 -2
  427. package/dist/src/agent/service/process-direct-streaming.js +0 -2
  428. package/dist/src/agent/service/session-context-report.js +0 -2
  429. package/dist/src/agent/service/webchat-tts.js +0 -2
  430. package/dist/src/agent/service-inbound-utils.js +0 -2
  431. package/dist/src/agent/service.js +1 -2
  432. package/dist/src/agent/service.types.d.ts +2 -0
  433. package/dist/src/agent/session/session-config-service.js +0 -2
  434. package/dist/src/agent/session/session-context.js +0 -2
  435. package/dist/src/agent/session/session-hydrator.js +0 -2
  436. package/dist/src/agent/session/session-inspector.js +0 -2
  437. package/dist/src/agent/session/session-lifecycle.js +0 -2
  438. package/dist/src/agent/session/session-state-bag.js +0 -2
  439. package/dist/src/agent/session/tracker.js +0 -2
  440. package/dist/src/agent/skills/config.js +0 -2
  441. package/dist/src/agent/skills/filesystem-watcher.js +0 -2
  442. package/dist/src/agent/skills/format-skills-prompt.js +0 -2
  443. package/dist/src/agent/skills/hub-hash.js +0 -2
  444. package/dist/src/agent/skills/hub-lock.js +0 -2
  445. package/dist/src/agent/skills/hub-pull.js +0 -2
  446. package/dist/src/agent/skills/index.js +0 -2
  447. package/dist/src/agent/skills/install-target.js +0 -2
  448. package/dist/src/agent/skills/installer.js +0 -2
  449. package/dist/src/agent/skills/managed-store.js +0 -2
  450. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +0 -2
  451. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +0 -2
  452. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +0 -2
  453. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +0 -2
  454. package/dist/src/agent/skills/marketplace/marketplace-category-order.js +0 -2
  455. package/dist/src/agent/skills/marketplace/registry.js +0 -2
  456. package/dist/src/agent/skills/marketplace/resolve-adapter.js +0 -2
  457. package/dist/src/agent/skills/parse-skill-metadata.js +0 -2
  458. package/dist/src/agent/skills/required-env-vars.js +0 -2
  459. package/dist/src/agent/skills/scanner.js +0 -2
  460. package/dist/src/agent/skills/skill-manage-ops.js +0 -2
  461. package/dist/src/agent/skills/skill-manager.js +0 -2
  462. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +0 -2
  463. package/dist/src/agent/skills/skill-tool-gating.js +0 -2
  464. package/dist/src/agent/skills/skill-view-path.js +0 -2
  465. package/dist/src/agent/skills/skills-marketplace.js +0 -2
  466. package/dist/src/agent/skills/test-framework.js +0 -2
  467. package/dist/src/agent/skills/watcher.js +0 -2
  468. package/dist/src/agent/skills/workspace-skills-dir.js +0 -2
  469. package/dist/src/agent/source-context/injector.js +0 -2
  470. package/dist/src/agent/source-context/types.js +0 -2
  471. package/dist/src/agent/starter-agents.js +0 -2
  472. package/dist/src/agent/streaming/reasoning-visibility-sse.js +0 -2
  473. package/dist/src/agent/tool-manuals/browser.js +0 -2
  474. package/dist/src/agent/tool-manuals/index.js +0 -2
  475. package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
  476. package/dist/src/agent/tool-manuals/xopc-use.js +41 -4
  477. package/dist/src/agent/tools/apply-patch.js +0 -2
  478. package/dist/src/agent/tools/automation-tool.js +45 -8
  479. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +0 -2
  480. package/dist/src/agent/tools/browser/tool/schemas.js +0 -2
  481. package/dist/src/agent/tools/chain-tracker.js +0 -2
  482. package/dist/src/agent/tools/clarify-tool.js +0 -2
  483. package/dist/src/agent/tools/cli-clarify.js +0 -2
  484. package/dist/src/agent/tools/communication.js +0 -2
  485. package/dist/src/agent/tools/composio-tool.js +0 -2
  486. package/dist/src/agent/tools/concurrency.js +0 -2
  487. package/dist/src/agent/tools/create-share-tool.js +0 -2
  488. package/dist/src/agent/tools/curated-memory-tool.js +0 -2
  489. package/dist/src/agent/tools/delegate-tool.js +0 -2
  490. package/dist/src/agent/tools/desktop-pet-tool.d.ts +12 -0
  491. package/dist/src/agent/tools/desktop-pet-tool.js +28 -2
  492. package/dist/src/agent/tools/dreaming-tool.js +0 -2
  493. package/dist/src/agent/tools/edit-diff.js +0 -2
  494. package/dist/src/agent/tools/error-pattern-matcher.js +0 -2
  495. package/dist/src/agent/tools/error-tracker.js +0 -2
  496. package/dist/src/agent/tools/exec-command.js +0 -2
  497. package/dist/src/agent/tools/execute-code-tool.js +0 -2
  498. package/dist/src/agent/tools/executor.js +0 -2
  499. package/dist/src/agent/tools/factory.d.ts +2 -0
  500. package/dist/src/agent/tools/factory.js +3 -4
  501. package/dist/src/agent/tools/find.js +0 -2
  502. package/dist/src/agent/tools/goal-evidence-recorder.js +0 -2
  503. package/dist/src/agent/tools/goal-tool.d.ts +7 -1
  504. package/dist/src/agent/tools/goal-tool.js +34 -7
  505. package/dist/src/agent/tools/grep.js +0 -2
  506. package/dist/src/agent/tools/image-generate-tool.js +0 -2
  507. package/dist/src/agent/tools/image-tool.js +0 -2
  508. package/dist/src/agent/tools/list-dir.js +0 -2
  509. package/dist/src/agent/tools/media-read-tool.js +0 -2
  510. package/dist/src/agent/tools/memory-tool.js +0 -2
  511. package/dist/src/agent/tools/metadata.js +0 -2
  512. package/dist/src/agent/tools/read.js +0 -2
  513. package/dist/src/agent/tools/search/http.js +0 -2
  514. package/dist/src/agent/tools/search/providers/bing-api.js +0 -2
  515. package/dist/src/agent/tools/search/providers/bing-html.js +0 -2
  516. package/dist/src/agent/tools/search/providers/brave.js +0 -2
  517. package/dist/src/agent/tools/search/providers/duckduckgo-html.js +0 -2
  518. package/dist/src/agent/tools/search/providers/searxng.js +0 -2
  519. package/dist/src/agent/tools/search/providers/tavily.js +0 -2
  520. package/dist/src/agent/tools/search/region.js +0 -2
  521. package/dist/src/agent/tools/search/registry.js +0 -2
  522. package/dist/src/agent/tools/search/resolve-config.js +0 -2
  523. package/dist/src/agent/tools/send-media.js +0 -2
  524. package/dist/src/agent/tools/session-search-tool.js +0 -2
  525. package/dist/src/agent/tools/session-status-tool.js +0 -2
  526. package/dist/src/agent/tools/skill-install-tool.js +0 -2
  527. package/dist/src/agent/tools/skill-manage-tool.js +0 -2
  528. package/dist/src/agent/tools/skills-tools.js +0 -2
  529. package/dist/src/agent/tools/structured-output.js +0 -2
  530. package/dist/src/agent/tools/todo-tool.js +0 -2
  531. package/dist/src/agent/tools/tool-manual-tool.js +0 -2
  532. package/dist/src/agent/tools/tool-paths.js +0 -2
  533. package/dist/src/agent/tools/truncate.js +0 -2
  534. package/dist/src/agent/tools/tts-tool.js +0 -2
  535. package/dist/src/agent/tools/update-plan-tool.js +0 -2
  536. package/dist/src/agent/tools/url-safety.js +0 -2
  537. package/dist/src/agent/tools/usage-analyzer.js +0 -2
  538. package/dist/src/agent/tools/web-extract.js +0 -2
  539. package/dist/src/agent/tools/web.js +4 -4
  540. package/dist/src/agent/tools/workflow-tool.js +32 -4
  541. package/dist/src/agent/tools/write.js +23 -5
  542. package/dist/src/agent/tools/xopc-use-tool.d.ts +6 -2
  543. package/dist/src/agent/tools/xopc-use-tool.js +216 -8
  544. package/dist/src/agent/transcript/google-api.js +0 -2
  545. package/dist/src/agent/transcript/model-selection.js +0 -2
  546. package/dist/src/agent/transcript/provider-capabilities.js +0 -2
  547. package/dist/src/agent/transcript/session-transcript-repair.js +0 -2
  548. package/dist/src/agent/transcript/strip-tool-messages.js +0 -2
  549. package/dist/src/agent/transcript/thinking-types.js +0 -2
  550. package/dist/src/agent/transcript/thinking.js +0 -2
  551. package/dist/src/agent/transcript/tool-call-id.js +0 -2
  552. package/dist/src/agent/transcript/transcript-hygiene.js +0 -2
  553. package/dist/src/agent/transcript/transcript-policy.js +0 -2
  554. package/dist/src/agent/workflow/agent-progress.js +0 -2
  555. package/dist/src/agent/workflow/builtins/index.js +0 -2
  556. package/dist/src/agent/workflow/catalog.js +0 -2
  557. package/dist/src/agent/workflow/progress-broker.js +0 -2
  558. package/dist/src/agent/workflow/snapshot-empty.js +0 -2
  559. package/dist/src/agent/workflow/snapshot.js +0 -2
  560. package/dist/src/agent/workflow/step-labels.js +0 -2
  561. package/dist/src/agent/workflow/structured-output-tool.js +0 -2
  562. package/dist/src/agent/workflow/subagent-runner.js +0 -2
  563. package/dist/src/agent/workflow/workflow-child-tools.js +0 -2
  564. package/dist/src/agent/workspace-runtime/registry.js +0 -2
  565. package/dist/src/agent-manifest/index.js +0 -2
  566. package/dist/src/agent-manifest/preset-chain.js +0 -2
  567. package/dist/src/agent-manifest/prompt.js +0 -2
  568. package/dist/src/agent-manifest/resolver.js +0 -2
  569. package/dist/src/agent-manifest/schema.js +0 -2
  570. package/dist/src/agent-manifest/validator.js +0 -2
  571. package/dist/src/agent-runtime/boundary-guard.js +0 -2
  572. package/dist/src/agent-runtime/memory-runtime.js +0 -2
  573. package/dist/src/agent-runtime/model-router.js +0 -2
  574. package/dist/src/agent-runtime/run-trace.js +0 -2
  575. package/dist/src/agent-runtime/runtime-profile.js +0 -2
  576. package/dist/src/agent-runtime/tool-registry.js +0 -2
  577. package/dist/src/agent-runtime/workflow-runtime.js +0 -2
  578. package/dist/src/ai-assist/text-assist.js +0 -2
  579. package/dist/src/auth/credentials.js +0 -2
  580. package/dist/src/auth/index.js +0 -2
  581. package/dist/src/auth/oauth/anthropic.js +0 -2
  582. package/dist/src/auth/oauth/github-copilot.js +0 -2
  583. package/dist/src/auth/oauth/google-oauth/google-antigravity.js +0 -2
  584. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js +0 -2
  585. package/dist/src/auth/oauth/google-oauth/oauth-page.js +0 -2
  586. package/dist/src/auth/oauth/google-oauth/pkce.js +0 -2
  587. package/dist/src/auth/oauth/kimi-coding.js +0 -2
  588. package/dist/src/auth/oauth/minimax-cn.js +0 -2
  589. package/dist/src/auth/oauth/minimax.js +0 -2
  590. package/dist/src/auth/oauth/openai-codex.js +0 -2
  591. package/dist/src/auth/oauth/pkce.js +0 -2
  592. package/dist/src/auth/profiles/oauth.js +0 -2
  593. package/dist/src/auth/profiles/order.js +0 -2
  594. package/dist/src/auth/profiles/profiles.js +0 -2
  595. package/dist/src/auth/profiles/store.js +0 -2
  596. package/dist/src/auth/sync-provider-auth.js +0 -2
  597. package/dist/src/automations/api/routes.js +0 -2
  598. package/dist/src/automations/domain/schedule.js +0 -2
  599. package/dist/src/automations/domain/validation.js +0 -2
  600. package/dist/src/automations/draft/automation-draft-prompt.js +0 -2
  601. package/dist/src/automations/draft/automation-draft-service.js +0 -2
  602. package/dist/src/automations/draft/automation-draft-validator.js +0 -2
  603. package/dist/src/automations/product-events.js +0 -2
  604. package/dist/src/automations/service/action-executor.js +0 -2
  605. package/dist/src/automations/service/automation-service.js +0 -2
  606. package/dist/src/automations/storage/automation-repository.js +0 -2
  607. package/dist/src/automations/storage/automation-run-repository.js +0 -2
  608. package/dist/src/browser/actions/extension-registry-bridge.js +0 -2
  609. package/dist/src/browser/actions/registry.js +0 -2
  610. package/dist/src/browser/backend-from-config.js +0 -2
  611. package/dist/src/browser/browser-command-timeout.js +0 -2
  612. package/dist/src/browser/cache-dir-policy.js +0 -2
  613. package/dist/src/browser/cdp-local-launcher.js +0 -2
  614. package/dist/src/browser/cdp-supervisor.js +0 -2
  615. package/dist/src/browser/free-port.js +0 -2
  616. package/dist/src/browser/humanize.js +0 -2
  617. package/dist/src/browser/install-lock.js +0 -2
  618. package/dist/src/browser/manager.js +0 -2
  619. package/dist/src/browser/pipeline/output.js +0 -2
  620. package/dist/src/browser/pipeline/runner.js +0 -2
  621. package/dist/src/browser/pipeline/schema.js +0 -2
  622. package/dist/src/browser/pipeline/source.js +0 -2
  623. package/dist/src/browser/pipeline/template.js +0 -2
  624. package/dist/src/browser/providers/browser-ext-install.js +0 -2
  625. package/dist/src/browser/providers/browser-use.js +0 -2
  626. package/dist/src/browser/providers/browserbase.js +0 -2
  627. package/dist/src/browser/providers/cloakbrowser.js +0 -2
  628. package/dist/src/browser/providers/extension-ws-acquire.js +0 -2
  629. package/dist/src/browser/providers/extension.js +0 -2
  630. package/dist/src/browser/providers/playwright-doctor.js +13 -4
  631. package/dist/src/browser/providers/playwright-install.js +0 -2
  632. package/dist/src/browser/readiness.js +0 -2
  633. package/dist/src/browser/schemas.js +0 -2
  634. package/dist/src/browser/session-lifecycle.js +0 -2
  635. package/dist/src/browser/snapshot-helpers.js +0 -2
  636. package/dist/src/browser/stealth.js +0 -2
  637. package/dist/src/browser/url-policy.js +0 -2
  638. package/dist/src/capabilities/store-connector.js +0 -2
  639. package/dist/src/channels/attachments/attachment-classifiers.js +0 -2
  640. package/dist/src/channels/attachments/inbound-persist.js +0 -2
  641. package/dist/src/channels/attachments/inbound-types.js +0 -2
  642. package/dist/src/channels/attachments/outbound-tts-persist.js +0 -2
  643. package/dist/src/channels/attachments/voice-stt-webchat.js +0 -2
  644. package/dist/src/channels/catalog/channel-catalog-service.js +0 -2
  645. package/dist/src/channels/config-helpers.js +0 -2
  646. package/dist/src/channels/envelope-timestamp.js +0 -2
  647. package/dist/src/channels/exec-approval-runtime.js +0 -2
  648. package/dist/src/channels/health-monitor.js +0 -2
  649. package/dist/src/channels/heartbeat-scheduler.js +0 -2
  650. package/dist/src/channels/internal-outbound.js +0 -2
  651. package/dist/src/channels/lifecycle-supervisor.js +0 -2
  652. package/dist/src/channels/manager.js +0 -2
  653. package/dist/src/channels/media.js +0 -2
  654. package/dist/src/channels/outbound/deliver.js +0 -2
  655. package/dist/src/channels/outbound/normalize.js +0 -2
  656. package/dist/src/channels/outbound/persist-store.js +0 -2
  657. package/dist/src/channels/outbound/queue.js +0 -2
  658. package/dist/src/channels/outbound-sender.js +0 -2
  659. package/dist/src/channels/pairing/allow-from-file.js +0 -2
  660. package/dist/src/channels/pairing/approve-cli.js +0 -2
  661. package/dist/src/channels/pairing/pairing-challenge.js +0 -2
  662. package/dist/src/channels/pairing/pairing-constants.js +0 -2
  663. package/dist/src/channels/pairing/pairing-events.js +0 -2
  664. package/dist/src/channels/pairing/pairing-messages.js +0 -2
  665. package/dist/src/channels/pairing/pairing-service.js +0 -2
  666. package/dist/src/channels/pairing/pairing-store-adapter.js +0 -2
  667. package/dist/src/channels/pairing/pairing-store.js +0 -2
  668. package/dist/src/channels/pairing/paths.js +0 -2
  669. package/dist/src/channels/pairing/preseed-allow-from.js +0 -2
  670. package/dist/src/channels/pipeline.js +0 -2
  671. package/dist/src/channels/plugin-registry.js +0 -2
  672. package/dist/src/channels/plugins/registry.js +0 -2
  673. package/dist/src/channels/restart-policy.js +0 -2
  674. package/dist/src/channels/security-helpers.js +0 -2
  675. package/dist/src/channels/security.js +0 -2
  676. package/dist/src/channels/setup-wizard-discovery.js +0 -2
  677. package/dist/src/chat-commands/agent-edit.js +0 -2
  678. package/dist/src/chat-commands/builtins/config.js +0 -2
  679. package/dist/src/chat-commands/builtins/context.js +0 -2
  680. package/dist/src/chat-commands/builtins/goal.js +0 -2
  681. package/dist/src/chat-commands/builtins/model.js +0 -2
  682. package/dist/src/chat-commands/builtins/review.js +0 -2
  683. package/dist/src/chat-commands/builtins/session.js +0 -2
  684. package/dist/src/chat-commands/builtins/skill.js +0 -2
  685. package/dist/src/chat-commands/builtins/subgoal.js +0 -2
  686. package/dist/src/chat-commands/builtins/system.js +0 -2
  687. package/dist/src/chat-commands/builtins/thinking.js +0 -2
  688. package/dist/src/chat-commands/builtins/tts.js +0 -2
  689. package/dist/src/chat-commands/builtins/workflow.js +0 -2
  690. package/dist/src/chat-commands/command-parse.js +0 -2
  691. package/dist/src/chat-commands/config-paths.js +0 -2
  692. package/dist/src/chat-commands/config-value.js +0 -2
  693. package/dist/src/chat-commands/context.js +0 -2
  694. package/dist/src/chat-commands/format-output.js +0 -2
  695. package/dist/src/chat-commands/index.js +0 -2
  696. package/dist/src/chat-commands/processor.js +0 -2
  697. package/dist/src/chat-commands/registry.js +0 -2
  698. package/dist/src/chat-commands/session-key.js +0 -2
  699. package/dist/src/cli/argv-invocation.js +0 -2
  700. package/dist/src/cli/argv.js +0 -2
  701. package/dist/src/cli/bin.js +0 -2
  702. package/dist/src/cli/cli-log-level-preset.js +0 -2
  703. package/dist/src/cli/command-catalog.js +0 -2
  704. package/dist/src/cli/command-loaders.js +0 -2
  705. package/dist/src/cli/command-manifest.js +0 -2
  706. package/dist/src/cli/command-path-matches.js +0 -2
  707. package/dist/src/cli/command-path-policy.js +0 -2
  708. package/dist/src/cli/command-startup-policy.js +0 -2
  709. package/dist/src/cli/commands/agent/interactive.js +0 -2
  710. package/dist/src/cli/commands/agent/sessions.js +0 -2
  711. package/dist/src/cli/commands/agent/stream-renderer.js +0 -2
  712. package/dist/src/cli/commands/agent.js +0 -2
  713. package/dist/src/cli/commands/agents.js +0 -2
  714. package/dist/src/cli/commands/auth.js +0 -2
  715. package/dist/src/cli/commands/browser-cli-helpers.js +0 -2
  716. package/dist/src/cli/commands/browser.js +0 -2
  717. package/dist/src/cli/commands/channels.js +0 -2
  718. package/dist/src/cli/commands/config.js +0 -2
  719. package/dist/src/cli/commands/connectors.js +0 -2
  720. package/dist/src/cli/commands/doctor/checks/channel-config.js +0 -2
  721. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +0 -2
  722. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +0 -2
  723. package/dist/src/cli/commands/doctor/checks/config-health.js +0 -2
  724. package/dist/src/cli/commands/doctor/checks/database-schema.js +0 -2
  725. package/dist/src/cli/commands/doctor/checks/gateway-health.js +0 -2
  726. package/dist/src/cli/commands/doctor/checks/gateway-service.js +0 -2
  727. package/dist/src/cli/commands/doctor/checks/migrations.js +0 -2
  728. package/dist/src/cli/commands/doctor/checks/node-version.js +0 -2
  729. package/dist/src/cli/commands/doctor/checks/provider-auth.js +0 -2
  730. package/dist/src/cli/commands/doctor/checks/security-audit.js +0 -2
  731. package/dist/src/cli/commands/doctor/checks/session-integrity.js +0 -2
  732. package/dist/src/cli/commands/doctor/checks/state-integrity.js +0 -2
  733. package/dist/src/cli/commands/doctor/checks/version-check.js +0 -2
  734. package/dist/src/cli/commands/doctor/checks/workspace-status.js +0 -2
  735. package/dist/src/cli/commands/doctor/flow.js +0 -2
  736. package/dist/src/cli/commands/doctor/format.js +0 -2
  737. package/dist/src/cli/commands/doctor/index.js +0 -2
  738. package/dist/src/cli/commands/extension-create.js +0 -2
  739. package/dist/src/cli/commands/extension-dev.js +0 -2
  740. package/dist/src/cli/commands/extension-marketplace.js +0 -2
  741. package/dist/src/cli/commands/extension-pack.js +0 -2
  742. package/dist/src/cli/commands/extension.js +0 -2
  743. package/dist/src/cli/commands/gateway/call.js +0 -2
  744. package/dist/src/cli/commands/gateway/health.js +0 -2
  745. package/dist/src/cli/commands/gateway/lifecycle-core.js +0 -2
  746. package/dist/src/cli/commands/gateway/lifecycle.js +0 -2
  747. package/dist/src/cli/commands/gateway/logs.js +0 -2
  748. package/dist/src/cli/commands/gateway/probe.js +0 -2
  749. package/dist/src/cli/commands/gateway/restart-health.js +0 -2
  750. package/dist/src/cli/commands/gateway/restart.js +0 -2
  751. package/dist/src/cli/commands/gateway/run-foreground.js +0 -2
  752. package/dist/src/cli/commands/gateway/service.js +0 -2
  753. package/dist/src/cli/commands/gateway/shared.js +0 -2
  754. package/dist/src/cli/commands/gateway/status.js +0 -2
  755. package/dist/src/cli/commands/gateway/stop.js +0 -2
  756. package/dist/src/cli/commands/gateway/subcommands.js +0 -2
  757. package/dist/src/cli/commands/gateway/token.js +0 -2
  758. package/dist/src/cli/commands/gateway-ssh-tunnel.js +0 -2
  759. package/dist/src/cli/commands/gateway.js +0 -2
  760. package/dist/src/cli/commands/goal.js +0 -2
  761. package/dist/src/cli/commands/image.js +0 -2
  762. package/dist/src/cli/commands/init.js +0 -2
  763. package/dist/src/cli/commands/logs.js +0 -2
  764. package/dist/src/cli/commands/models.js +0 -2
  765. package/dist/src/cli/commands/onboard/channels/index.js +0 -2
  766. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js +0 -2
  767. package/dist/src/cli/commands/onboard/channels/registry.js +0 -2
  768. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js +0 -2
  769. package/dist/src/cli/commands/onboard/gateway.js +0 -2
  770. package/dist/src/cli/commands/onboard/model.js +0 -2
  771. package/dist/src/cli/commands/onboard.js +0 -2
  772. package/dist/src/cli/commands/profile.js +0 -2
  773. package/dist/src/cli/commands/project.js +0 -2
  774. package/dist/src/cli/commands/providers.js +0 -2
  775. package/dist/src/cli/commands/resume.js +0 -2
  776. package/dist/src/cli/commands/search.js +0 -2
  777. package/dist/src/cli/commands/session/actions.js +0 -2
  778. package/dist/src/cli/commands/session/utils.js +0 -2
  779. package/dist/src/cli/commands/session.js +0 -2
  780. package/dist/src/cli/commands/setup-shared/output.js +0 -2
  781. package/dist/src/cli/commands/setup-shared/prompts.js +0 -2
  782. package/dist/src/cli/commands/setup-shared/runner.js +0 -2
  783. package/dist/src/cli/commands/setup-shared/types.js +0 -2
  784. package/dist/src/cli/commands/setup.js +0 -2
  785. package/dist/src/cli/commands/skills-test.js +0 -2
  786. package/dist/src/cli/commands/skills.js +0 -2
  787. package/dist/src/cli/commands/tailscale.js +0 -2
  788. package/dist/src/cli/commands/tui-runner.js +0 -2
  789. package/dist/src/cli/commands/tui.js +0 -2
  790. package/dist/src/cli/commands/tunnel.js +0 -2
  791. package/dist/src/cli/commands/update.js +0 -2
  792. package/dist/src/cli/commands/voice.js +0 -2
  793. package/dist/src/cli/context.js +0 -2
  794. package/dist/src/cli/extension-cli-register.js +0 -2
  795. package/dist/src/cli/gateway-run-argv.js +0 -2
  796. package/dist/src/cli/gateway-run-fast-path.js +0 -2
  797. package/dist/src/cli/index.js +0 -2
  798. package/dist/src/cli/registry.js +0 -2
  799. package/dist/src/cli/templates.js +0 -2
  800. package/dist/src/cli/utils/colors.js +0 -2
  801. package/dist/src/cli/utils/gateway-client-options.js +0 -2
  802. package/dist/src/cli/utils/gateway-client.js +0 -2
  803. package/dist/src/cli/utils/init-workspace-core.js +0 -2
  804. package/dist/src/cli/utils/init-workspace.js +0 -2
  805. package/dist/src/cli/utils/oauth-login.js +0 -2
  806. package/dist/src/cli/utils/oauth-providers.js +0 -2
  807. package/dist/src/cli/utils/session.js +0 -2
  808. package/dist/src/commands/agents.config.js +0 -2
  809. package/dist/src/config/agent-profile.js +0 -2
  810. package/dist/src/config/agent-typed-models.js +0 -2
  811. package/dist/src/config/commands.flags.js +0 -2
  812. package/dist/src/config/default-model.js +0 -2
  813. package/dist/src/config/diff.js +0 -2
  814. package/dist/src/config/gateway-bind.js +0 -2
  815. package/dist/src/config/index.js +0 -2
  816. package/dist/src/config/loader.js +0 -2
  817. package/dist/src/config/mcp-config-normalize.js +0 -2
  818. package/dist/src/config/model-input.js +0 -2
  819. package/dist/src/config/models-json.js +0 -2
  820. package/dist/src/config/paths-state.js +0 -2
  821. package/dist/src/config/paths.js +0 -2
  822. package/dist/src/config/profile.js +0 -2
  823. package/dist/src/config/public-url.js +0 -2
  824. package/dist/src/config/reload.js +0 -2
  825. package/dist/src/config/resolve-config-value.js +0 -2
  826. package/dist/src/config/rules.js +0 -2
  827. package/dist/src/config/runtime-overrides.js +0 -2
  828. package/dist/src/config/schema.js +0 -2
  829. package/dist/src/config/validate-channel-configs.js +0 -2
  830. package/dist/src/config/voice.js +0 -2
  831. package/dist/src/config/web-patch.js +0 -2
  832. package/dist/src/config/workspace-defaults.js +0 -2
  833. package/dist/src/config/workspace-dirs.js +0 -2
  834. package/dist/src/config/workspace-path-helpers.js +0 -2
  835. package/dist/src/config/workspace-path.js +0 -2
  836. package/dist/src/connectors/approval.js +0 -2
  837. package/dist/src/connectors/auth-provider-registry.js +0 -2
  838. package/dist/src/connectors/builtin-catalog.js +0 -2
  839. package/dist/src/connectors/catalog.js +0 -2
  840. package/dist/src/connectors/composio-catalog.js +0 -2
  841. package/dist/src/connectors/composio-logo.js +0 -2
  842. package/dist/src/connectors/composio-sessions.js +9 -5
  843. package/dist/src/connectors/composio-triggers.js +0 -2
  844. package/dist/src/connectors/composio.js +0 -2
  845. package/dist/src/connectors/connector-memory-sync.js +0 -2
  846. package/dist/src/connectors/health.js +0 -2
  847. package/dist/src/connectors/install.js +0 -2
  848. package/dist/src/connectors/instances.js +0 -2
  849. package/dist/src/connectors/integration-strategy.js +0 -2
  850. package/dist/src/connectors/lifecycle.js +0 -2
  851. package/dist/src/connectors/materialize.js +0 -2
  852. package/dist/src/connectors/policy.js +0 -2
  853. package/dist/src/connectors/providers.js +0 -2
  854. package/dist/src/connectors/registries/modelscope.js +0 -2
  855. package/dist/src/connectors/registries/official-mcp.js +0 -2
  856. package/dist/src/connectors/registries/search.js +0 -2
  857. package/dist/src/connectors/registries/smithery.js +0 -2
  858. package/dist/src/connectors/runtime-adapter-registry.js +0 -2
  859. package/dist/src/connectors/secret-store.js +0 -2
  860. package/dist/src/connectors/setup-secrets.js +0 -2
  861. package/dist/src/connectors/supervisor.js +0 -2
  862. package/dist/src/connectors/usage.js +0 -2
  863. package/dist/src/connectors/workflow-preflight.js +0 -2
  864. package/dist/src/daemon/constants.js +0 -2
  865. package/dist/src/daemon/install-plan.js +0 -2
  866. package/dist/src/daemon/launchd.js +0 -2
  867. package/dist/src/daemon/schtasks.js +0 -2
  868. package/dist/src/daemon/service-audit.js +0 -2
  869. package/dist/src/daemon/service.js +0 -2
  870. package/dist/src/daemon/systemd.js +0 -2
  871. package/dist/src/document-understanding/extract.js +0 -2
  872. package/dist/src/errors/index.js +0 -2
  873. package/dist/src/extensions/activation-context.js +0 -2
  874. package/dist/src/extensions/activation-planner.js +0 -2
  875. package/dist/src/extensions/api.js +0 -2
  876. package/dist/src/extensions/bundle-mcp.js +0 -2
  877. package/dist/src/extensions/bundled-extension-activation.js +0 -2
  878. package/dist/src/extensions/diagnostics.js +0 -2
  879. package/dist/src/extensions/discover-extensions.js +0 -2
  880. package/dist/src/extensions/engine-check.js +0 -2
  881. package/dist/src/extensions/extension-metadata-snapshot.js +0 -2
  882. package/dist/src/extensions/extension-registry-impl.js +0 -2
  883. package/dist/src/extensions/health.js +0 -2
  884. package/dist/src/extensions/hooks.js +0 -2
  885. package/dist/src/extensions/index.js +0 -2
  886. package/dist/src/extensions/install-transaction.js +0 -2
  887. package/dist/src/extensions/install.js +0 -2
  888. package/dist/src/extensions/loader.js +0 -2
  889. package/dist/src/extensions/lockfile.js +0 -2
  890. package/dist/src/extensions/manifest-registry.js +0 -2
  891. package/dist/src/extensions/marketplace.js +0 -2
  892. package/dist/src/extensions/media-provider-contracts.js +0 -2
  893. package/dist/src/extensions/normalize-manifest.js +0 -2
  894. package/dist/src/extensions/onboard-helpers.js +0 -2
  895. package/dist/src/extensions/package-contract.js +0 -2
  896. package/dist/src/extensions/sdk/channel-entry.js +0 -2
  897. package/dist/src/extensions/sdk/channel-helpers.js +0 -2
  898. package/dist/src/extensions/sdk/index.js +0 -2
  899. package/dist/src/extensions/sdk/lazy.js +0 -2
  900. package/dist/src/extensions/sdk/testing.js +0 -2
  901. package/dist/src/extensions/security.js +0 -2
  902. package/dist/src/extensions/slots.js +0 -2
  903. package/dist/src/extensions/speech-provider-contracts.js +0 -2
  904. package/dist/src/extensions/store-zip-limits.js +0 -2
  905. package/dist/src/extensions/typed-event-bus.js +0 -2
  906. package/dist/src/extensions/types/hooks.js +0 -2
  907. package/dist/src/extensions/types/providers.js +0 -2
  908. package/dist/src/extensions/update.js +0 -2
  909. package/dist/src/extensions/when-context.js +0 -2
  910. package/dist/src/extensions/when-expression.js +0 -2
  911. package/dist/src/gateway/agent-builtin-tools.js +0 -2
  912. package/dist/src/gateway/agent-run-relay.js +0 -2
  913. package/dist/src/gateway/agents-admin.js +0 -2
  914. package/dist/src/gateway/auth.js +0 -2
  915. package/dist/src/gateway/capability-presets-admin.js +0 -2
  916. package/dist/src/gateway/chat-limits.js +0 -2
  917. package/dist/src/gateway/chat-stream/mapper.js +28 -14
  918. package/dist/src/gateway/chat-stream/pet-feedback.d.ts +13 -0
  919. package/dist/src/gateway/chat-stream/pet-feedback.js +45 -0
  920. package/dist/src/gateway/chat-stream/protocol.d.ts +26 -0
  921. package/dist/src/gateway/clarify-bridge.js +3 -3
  922. package/dist/src/gateway/clarify-runtime.js +0 -2
  923. package/dist/src/gateway/client-ip.js +0 -2
  924. package/dist/src/gateway/config-tools-web.js +0 -2
  925. package/dist/src/gateway/credential.js +0 -2
  926. package/dist/src/gateway/discovery/mdns.js +0 -2
  927. package/dist/src/gateway/dreaming-automation-reconciler.js +0 -2
  928. package/dist/src/gateway/ensure-network-cors.js +0 -2
  929. package/dist/src/gateway/file-path-classifier.js +0 -2
  930. package/dist/src/gateway/file-reference-registry.js +0 -2
  931. package/dist/src/gateway/global-defaults-admin.js +0 -2
  932. package/dist/src/gateway/heartbeat/service.js +0 -2
  933. package/dist/src/gateway/hono/app.js +0 -2
  934. package/dist/src/gateway/hono/lib/agent-model.js +0 -2
  935. package/dist/src/gateway/hono/lib/config-payload.js +0 -2
  936. package/dist/src/gateway/hono/lib/extension-assets.js +0 -2
  937. package/dist/src/gateway/hono/lib/extension-store.js +0 -2
  938. package/dist/src/gateway/hono/lib/mask-secret-length.js +0 -2
  939. package/dist/src/gateway/hono/lib/route-logger.js +0 -2
  940. package/dist/src/gateway/hono/lib/safe-providers-config.js +0 -2
  941. package/dist/src/gateway/hono/lib/safe-voice-config.js +0 -2
  942. package/dist/src/gateway/hono/lib/startup-unavailable.js +0 -2
  943. package/dist/src/gateway/hono/lib/static-ui.js +0 -2
  944. package/dist/src/gateway/hono/middleware/auth.js +0 -2
  945. package/dist/src/gateway/hono/middleware/log-context.js +0 -2
  946. package/dist/src/gateway/hono/middleware/logger.js +0 -2
  947. package/dist/src/gateway/hono/middleware/route-errors.js +0 -2
  948. package/dist/src/gateway/hono/middleware/scopes.js +0 -2
  949. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +0 -2
  950. package/dist/src/gateway/hono/oauth-async.js +0 -2
  951. package/dist/src/gateway/hono/oauth.js +0 -2
  952. package/dist/src/gateway/hono/routes/activity.js +0 -2
  953. package/dist/src/gateway/hono/routes/agent-stream.js +0 -2
  954. package/dist/src/gateway/hono/routes/agents.js +0 -2
  955. package/dist/src/gateway/hono/routes/ai-assist.js +0 -2
  956. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +0 -2
  957. package/dist/src/gateway/hono/routes/browser-install.js +0 -2
  958. package/dist/src/gateway/hono/routes/browser.js +0 -2
  959. package/dist/src/gateway/hono/routes/capabilities.js +0 -2
  960. package/dist/src/gateway/hono/routes/capability-presets.js +0 -2
  961. package/dist/src/gateway/hono/routes/channels.js +0 -2
  962. package/dist/src/gateway/hono/routes/commands-skills.js +0 -2
  963. package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -2
  964. package/dist/src/gateway/hono/routes/config-patch/channels.js +0 -2
  965. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -2
  966. package/dist/src/gateway/hono/routes/config-patch/misc.js +0 -2
  967. package/dist/src/gateway/hono/routes/config-patch/result.js +0 -2
  968. package/dist/src/gateway/hono/routes/config.js +0 -2
  969. package/dist/src/gateway/hono/routes/connectors.js +0 -2
  970. package/dist/src/gateway/hono/routes/doctor.js +0 -2
  971. package/dist/src/gateway/hono/routes/dreaming.js +0 -2
  972. package/dist/src/gateway/hono/routes/exposure.js +0 -2
  973. package/dist/src/gateway/hono/routes/extension-gateway.js +0 -2
  974. package/dist/src/gateway/hono/routes/global-defaults.js +0 -2
  975. package/dist/src/gateway/hono/routes/goals.js +0 -2
  976. package/dist/src/gateway/hono/routes/home.js +0 -2
  977. package/dist/src/gateway/hono/routes/host-fs.js +0 -2
  978. package/dist/src/gateway/hono/routes/index.js +0 -2
  979. package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -2
  980. package/dist/src/gateway/hono/routes/lazy-fallback.js +0 -2
  981. package/dist/src/gateway/hono/routes/local-apps.js +0 -2
  982. package/dist/src/gateway/hono/routes/logs.js +0 -2
  983. package/dist/src/gateway/hono/routes/mcp.js +0 -2
  984. package/dist/src/gateway/hono/routes/media.js +0 -2
  985. package/dist/src/gateway/hono/routes/memory.js +0 -2
  986. package/dist/src/gateway/hono/routes/migrations.js +0 -2
  987. package/dist/src/gateway/hono/routes/mobile.js +0 -2
  988. package/dist/src/gateway/hono/routes/models.js +0 -2
  989. package/dist/src/gateway/hono/routes/notes.js +3 -3
  990. package/dist/src/gateway/hono/routes/projects.js +0 -2
  991. package/dist/src/gateway/hono/routes/public-gateway.js +0 -2
  992. package/dist/src/gateway/hono/routes/search.js +0 -2
  993. package/dist/src/gateway/hono/routes/sessions.js +0 -2
  994. package/dist/src/gateway/hono/routes/shares.js +0 -2
  995. package/dist/src/gateway/hono/routes/site-shares.js +0 -2
  996. package/dist/src/gateway/hono/routes/status.js +0 -2
  997. package/dist/src/gateway/hono/routes/tui.js +0 -2
  998. package/dist/src/gateway/hono/routes/tunnel.js +0 -2
  999. package/dist/src/gateway/hono/routes/update.js +0 -2
  1000. package/dist/src/gateway/hono/routes/voice.js +0 -2
  1001. package/dist/src/gateway/hono/routes/work-discovery.js +0 -2
  1002. package/dist/src/gateway/hono/routes/workflows.js +0 -2
  1003. package/dist/src/gateway/hono/routes/workspace.js +0 -2
  1004. package/dist/src/gateway/hono/routes/you.js +0 -2
  1005. package/dist/src/gateway/hono/sse-json.js +0 -2
  1006. package/dist/src/gateway/hono/sse.js +0 -2
  1007. package/dist/src/gateway/host.js +0 -2
  1008. package/dist/src/gateway/image-capabilities.js +0 -2
  1009. package/dist/src/gateway/listen.js +0 -2
  1010. package/dist/src/gateway/lock.js +0 -2
  1011. package/dist/src/gateway/ports.js +0 -2
  1012. package/dist/src/gateway/protocol.js +0 -2
  1013. package/dist/src/gateway/public-url.js +0 -2
  1014. package/dist/src/gateway/rate-limit/auth-policy.js +0 -2
  1015. package/dist/src/gateway/rate-limit/buckets.js +0 -2
  1016. package/dist/src/gateway/rate-limit/env-flags.js +0 -2
  1017. package/dist/src/gateway/resolve-channel-connect-defer.js +0 -2
  1018. package/dist/src/gateway/resolve-webchat-session-key.js +0 -2
  1019. package/dist/src/gateway/respawn.js +0 -2
  1020. package/dist/src/gateway/run-loop.js +0 -2
  1021. package/dist/src/gateway/runtime-config.js +0 -2
  1022. package/dist/src/gateway/security/audit.js +0 -2
  1023. package/dist/src/gateway/security/csp.js +0 -2
  1024. package/dist/src/gateway/security/dangerous-tools.js +0 -2
  1025. package/dist/src/gateway/security/external-content.js +0 -2
  1026. package/dist/src/gateway/security/known-weak-secrets.js +0 -2
  1027. package/dist/src/gateway/security/loopback.js +0 -2
  1028. package/dist/src/gateway/security/operator-scopes.js +0 -2
  1029. package/dist/src/gateway/security/origin-check.js +0 -2
  1030. package/dist/src/gateway/security/preauth-connection-budget.js +0 -2
  1031. package/dist/src/gateway/security/secret-equal.js +0 -2
  1032. package/dist/src/gateway/server-tailscale.js +0 -2
  1033. package/dist/src/gateway/server.js +0 -2
  1034. package/dist/src/gateway/service/agent-runner.js +0 -2
  1035. package/dist/src/gateway/service/config-coordinator.js +0 -2
  1036. package/dist/src/gateway/service/marketplace-service.js +0 -2
  1037. package/dist/src/gateway/service/run-gateway-agent.js +0 -2
  1038. package/dist/src/gateway/service/session-chat-ids.js +0 -2
  1039. package/dist/src/gateway/service/sessions-api.js +0 -2
  1040. package/dist/src/gateway/service/sse-hub.js +0 -2
  1041. package/dist/src/gateway/service.js +1 -2
  1042. package/dist/src/gateway/session-reset-service.js +0 -2
  1043. package/dist/src/gateway/startup-readiness.js +0 -2
  1044. package/dist/src/gateway/startup-trace.js +0 -2
  1045. package/dist/src/gateway/tailscale-auth.js +0 -2
  1046. package/dist/src/gateway/tailscale-lifecycle.js +0 -2
  1047. package/dist/src/gateway/tls-server.js +0 -2
  1048. package/dist/src/gateway/trusted-proxy.js +0 -2
  1049. package/dist/src/gateway/user-turn-input.js +0 -2
  1050. package/dist/src/gateway/workspace-editor-path.js +0 -2
  1051. package/dist/src/gateway/workspace-file-search.js +0 -2
  1052. package/dist/src/gateway/workspace-fs-file-list.js +0 -2
  1053. package/dist/src/gateway/workspace-heartbeat-path.js +0 -2
  1054. package/dist/src/gateway/workspace-ripgrep.js +0 -2
  1055. package/dist/src/gateway/ws-security.js +0 -2
  1056. package/dist/src/generated/bundled-image-generation-providers.js +0 -2
  1057. package/dist/src/goals/goal-contract-draft.js +0 -2
  1058. package/dist/src/goals/goal-evidence-review.js +0 -2
  1059. package/dist/src/goals/goal-notifications.js +0 -2
  1060. package/dist/src/goals/goal-queue-store.js +0 -2
  1061. package/dist/src/goals/goal-runner.js +0 -2
  1062. package/dist/src/goals/goal-service.js +0 -2
  1063. package/dist/src/goals/goal-store.js +0 -2
  1064. package/dist/src/goals/goal-workflow-judge.js +0 -2
  1065. package/dist/src/heartbeat/active-hours.js +0 -2
  1066. package/dist/src/heartbeat/content-check.js +0 -2
  1067. package/dist/src/heartbeat/event-prompt.js +0 -2
  1068. package/dist/src/heartbeat/tokens.js +0 -2
  1069. package/dist/src/heartbeat/wake.js +0 -2
  1070. package/dist/src/i18n/format.js +0 -2
  1071. package/dist/src/i18n/goals-bundle.js +0 -2
  1072. package/dist/src/i18n/locale.js +0 -2
  1073. package/dist/src/i18n/locales/goals.en.js +0 -2
  1074. package/dist/src/i18n/locales/goals.zh.js +0 -2
  1075. package/dist/src/i18n/locales/share-tool.en.js +0 -2
  1076. package/dist/src/i18n/locales/share-tool.zh.js +0 -2
  1077. package/dist/src/i18n/share-tool-bundle.js +0 -2
  1078. package/dist/src/index.js +0 -2
  1079. package/dist/src/infra/brew.js +0 -2
  1080. package/dist/src/infra/bus/queue.js +0 -2
  1081. package/dist/src/infra/debounce.js +0 -2
  1082. package/dist/src/infra/exec.js +0 -2
  1083. package/dist/src/infra/gateway-process-argv.js +0 -2
  1084. package/dist/src/infra/gateway-processes.js +0 -2
  1085. package/dist/src/infra/host-env-security-policy.js +0 -2
  1086. package/dist/src/infra/host-env-security.js +0 -2
  1087. package/dist/src/infra/http-proxy-env.js +0 -2
  1088. package/dist/src/infra/is-main.js +0 -2
  1089. package/dist/src/infra/json-utf8-bytes.js +0 -2
  1090. package/dist/src/infra/node-sqlite.js +0 -2
  1091. package/dist/src/infra/package-json.js +0 -2
  1092. package/dist/src/infra/package-update-steps.js +0 -2
  1093. package/dist/src/infra/path-env.js +0 -2
  1094. package/dist/src/infra/path-prepend.js +0 -2
  1095. package/dist/src/infra/ports.js +0 -2
  1096. package/dist/src/infra/rate-limit/failure-limiter.js +0 -2
  1097. package/dist/src/infra/rate-limit/keyed-store.js +0 -2
  1098. package/dist/src/infra/rate-limit/rate-limiter.js +0 -2
  1099. package/dist/src/infra/restart.js +0 -2
  1100. package/dist/src/infra/retry.js +0 -2
  1101. package/dist/src/infra/run-command.js +0 -2
  1102. package/dist/src/infra/sqlite-errors.js +0 -2
  1103. package/dist/src/infra/ssh-tunnel.js +0 -2
  1104. package/dist/src/infra/stable-node-path.js +0 -2
  1105. package/dist/src/infra/tailscale.js +0 -2
  1106. package/dist/src/infra/undici-fetch.js +0 -2
  1107. package/dist/src/infra/unhandled-rejections.js +0 -2
  1108. package/dist/src/infra/update-channels.js +0 -2
  1109. package/dist/src/infra/update-check.js +0 -2
  1110. package/dist/src/infra/update-global.js +0 -2
  1111. package/dist/src/infra/update-lock.js +0 -2
  1112. package/dist/src/infra/update-log.js +0 -2
  1113. package/dist/src/infra/update-restart.js +0 -2
  1114. package/dist/src/infra/update-runner.js +0 -2
  1115. package/dist/src/infra/update-startup.js +0 -2
  1116. package/dist/src/infra/warning-filter.js +0 -2
  1117. package/dist/src/infra/write-file-atomic.js +0 -2
  1118. package/dist/src/knowledge/connected-knowledge-pipeline.js +0 -2
  1119. package/dist/src/knowledge/coordinator.js +0 -2
  1120. package/dist/src/knowledge/ingestion-service.js +0 -2
  1121. package/dist/src/local-apps/acceptance.js +0 -2
  1122. package/dist/src/local-apps/preview-runtime-bridge.js +0 -2
  1123. package/dist/src/local-apps/runtime-entry.js +0 -2
  1124. package/dist/src/local-apps/scaffold.js +0 -2
  1125. package/dist/src/local-apps/service.js +0 -2
  1126. package/dist/src/local-apps/store.js +0 -2
  1127. package/dist/src/markdown/chunk.js +0 -2
  1128. package/dist/src/markdown/code-spans.js +0 -2
  1129. package/dist/src/markdown/fences.js +0 -2
  1130. package/dist/src/markdown/frontmatter.js +0 -2
  1131. package/dist/src/markdown/ir.js +0 -2
  1132. package/dist/src/markdown/render.js +0 -2
  1133. package/dist/src/markdown/tables.js +0 -2
  1134. package/dist/src/mcp/channel-bridge.js +0 -2
  1135. package/dist/src/mcp/channel-server.js +0 -2
  1136. package/dist/src/mcp/channel-shared.js +0 -2
  1137. package/dist/src/mcp/channel-tools.js +0 -2
  1138. package/dist/src/mcp/gateway-http-client.js +0 -2
  1139. package/dist/src/media/media-reference.js +0 -2
  1140. package/dist/src/media/paths.js +0 -2
  1141. package/dist/src/media/session-references.js +0 -2
  1142. package/dist/src/media/store.js +0 -2
  1143. package/dist/src/media/uri.js +0 -2
  1144. package/dist/src/media-shared/http/api-key-rotation.js +0 -2
  1145. package/dist/src/media-shared/http/deadline.js +0 -2
  1146. package/dist/src/media-shared/http/private-network.js +0 -2
  1147. package/dist/src/media-shared/http/provider-http-errors.js +0 -2
  1148. package/dist/src/media-shared/http/provider-http.js +0 -2
  1149. package/dist/src/media-shared/http/resolve-provider-http-request-config.js +0 -2
  1150. package/dist/src/media-shared/http/ssrf-guard.js +0 -2
  1151. package/dist/src/media-shared/http/test-helpers/mock-server.js +0 -2
  1152. package/dist/src/media-understanding/audio-transcription-runner.js +0 -2
  1153. package/dist/src/media-understanding/openai-compatible-audio.js +0 -2
  1154. package/dist/src/media-understanding/registry.js +0 -2
  1155. package/dist/src/media-understanding/resolve-entries.js +0 -2
  1156. package/dist/src/media-understanding/runner.js +0 -2
  1157. package/dist/src/migrations/config/default-capability-preset.js +0 -2
  1158. package/dist/src/migrations/registry.js +0 -2
  1159. package/dist/src/migrations/runner.js +0 -2
  1160. package/dist/src/mobile/notification-service.js +0 -2
  1161. package/dist/src/mobile/notification-store.js +0 -2
  1162. package/dist/src/mobile/notification-types.js +0 -2
  1163. package/dist/src/notes/agent-context.js +0 -2
  1164. package/dist/src/notes/attachment-ref.js +0 -2
  1165. package/dist/src/notes/note-attachment-sync.js +0 -2
  1166. package/dist/src/notes/note-index-meta.js +0 -2
  1167. package/dist/src/notes/note-markdown.js +0 -2
  1168. package/dist/src/notes/paths.js +0 -2
  1169. package/dist/src/notes/service.d.ts +3 -1
  1170. package/dist/src/notes/service.js +19 -5
  1171. package/dist/src/notes/store.js +0 -2
  1172. package/dist/src/package-version.js +0 -2
  1173. package/dist/src/pets/factory.d.ts +13 -0
  1174. package/dist/src/pets/factory.js +23 -2
  1175. package/dist/src/pets/manifest.js +0 -2
  1176. package/dist/src/pets/validator.js +0 -2
  1177. package/dist/src/process/kill-tree.js +0 -2
  1178. package/dist/src/project-trust/trust-store.js +0 -2
  1179. package/dist/src/projects/automation-bind.js +0 -2
  1180. package/dist/src/projects/goal-bind.js +0 -2
  1181. package/dist/src/projects/memory-bind.js +0 -2
  1182. package/dist/src/projects/project-agent-suggestion.js +0 -2
  1183. package/dist/src/projects/project-agent.js +0 -2
  1184. package/dist/src/projects/project-kind.js +0 -2
  1185. package/dist/src/projects/project-loop.js +0 -2
  1186. package/dist/src/projects/project-service.js +0 -2
  1187. package/dist/src/projects/project-store.js +0 -2
  1188. package/dist/src/projects/session-bind.js +0 -2
  1189. package/dist/src/projects/workflow-bind.js +0 -2
  1190. package/dist/src/projects/workspace-project.js +0 -2
  1191. package/dist/src/projects/workspace.js +0 -2
  1192. package/dist/src/providers/auth-runtime/auth-profile-store.js +0 -2
  1193. package/dist/src/providers/auth-runtime/is-configured.js +0 -2
  1194. package/dist/src/providers/auth-runtime/oauth.js +0 -2
  1195. package/dist/src/providers/auth-runtime/resolve-api-key.js +0 -2
  1196. package/dist/src/providers/auth-runtime/resolve-auth.js +0 -2
  1197. package/dist/src/providers/constants.js +0 -2
  1198. package/dist/src/providers/domestic-presets.js +0 -2
  1199. package/dist/src/providers/env-keys.js +0 -2
  1200. package/dist/src/providers/extension-stream-bridge.js +0 -2
  1201. package/dist/src/providers/index.js +0 -2
  1202. package/dist/src/providers/model-call.js +0 -2
  1203. package/dist/src/providers/model-discovery.js +0 -2
  1204. package/dist/src/providers/model-registry.js +0 -2
  1205. package/dist/src/providers/model-supplements.js +0 -2
  1206. package/dist/src/providers/plugin-registry.js +0 -2
  1207. package/dist/src/providers/presentation.js +0 -2
  1208. package/dist/src/remote-access/exposure-guards.js +0 -2
  1209. package/dist/src/remote-access/exposure-manager.js +0 -2
  1210. package/dist/src/review/review-git.js +0 -2
  1211. package/dist/src/review/review-types.js +0 -2
  1212. package/dist/src/routing/account-id.js +0 -2
  1213. package/dist/src/routing/agent-session-key.js +0 -2
  1214. package/dist/src/routing/bindings.js +0 -2
  1215. package/dist/src/routing/index.js +0 -2
  1216. package/dist/src/routing/resolve-route.js +0 -2
  1217. package/dist/src/routing/resolve-tui-session-key.js +0 -2
  1218. package/dist/src/routing/session-key-utils.js +0 -2
  1219. package/dist/src/routing/session-key.js +0 -2
  1220. package/dist/src/session/abort-cutoff.js +0 -2
  1221. package/dist/src/session/chat-export.js +0 -2
  1222. package/dist/src/session/client-history.js +0 -2
  1223. package/dist/src/session/compaction-checkpoints.js +0 -2
  1224. package/dist/src/session/config-store.js +0 -2
  1225. package/dist/src/session/init-session-turn.js +0 -2
  1226. package/dist/src/session/lifecycle-timestamps.js +0 -2
  1227. package/dist/src/session/load-jsonl-entries.js +0 -2
  1228. package/dist/src/session/manager.js +0 -2
  1229. package/dist/src/session/patch-metadata.js +0 -2
  1230. package/dist/src/session/reset-policy.js +0 -2
  1231. package/dist/src/session/reset-triggers.js +0 -2
  1232. package/dist/src/session/reset-type.js +0 -2
  1233. package/dist/src/session/resolve-session.js +0 -2
  1234. package/dist/src/session/session-context-for-llm.js +0 -2
  1235. package/dist/src/session/session-id.js +0 -2
  1236. package/dist/src/session/session-title.js +0 -2
  1237. package/dist/src/session/session-workspace.js +0 -2
  1238. package/dist/src/session/store.js +0 -2
  1239. package/dist/src/session/stored-rows-to-file-entries.js +0 -2
  1240. package/dist/src/session/thinking-resolve.js +0 -2
  1241. package/dist/src/session/transcript-events.js +0 -2
  1242. package/dist/src/session/transcript-format.js +0 -2
  1243. package/dist/src/session/transcript-outline.js +0 -2
  1244. package/dist/src/session/transcript-stats.js +0 -2
  1245. package/dist/src/session/types.js +0 -2
  1246. package/dist/src/session/user-round-delete.js +0 -2
  1247. package/dist/src/share/share-audit.js +0 -2
  1248. package/dist/src/share/share-auto.js +0 -2
  1249. package/dist/src/share/share-config.js +0 -2
  1250. package/dist/src/share/share-landing.js +0 -2
  1251. package/dist/src/share/share-rate-limit.js +0 -2
  1252. package/dist/src/share/share-store.js +0 -2
  1253. package/dist/src/share/share-thumbnail.js +0 -2
  1254. package/dist/src/share/share-types.js +0 -2
  1255. package/dist/src/share/share-url.js +0 -2
  1256. package/dist/src/share/share-zip.js +0 -2
  1257. package/dist/src/share/site-proxy.js +0 -2
  1258. package/dist/src/share/site-share-config.js +0 -2
  1259. package/dist/src/share/site-share-router.js +0 -2
  1260. package/dist/src/share/site-share-store.js +0 -2
  1261. package/dist/src/share/site-share-types.js +0 -2
  1262. package/dist/src/share/site-static-serve.js +0 -2
  1263. package/dist/src/storage/sqlite/activity-repository.js +0 -2
  1264. package/dist/src/storage/sqlite/config-repository.js +0 -2
  1265. package/dist/src/storage/sqlite/connection.js +0 -2
  1266. package/dist/src/storage/sqlite/connector-repository.js +0 -2
  1267. package/dist/src/storage/sqlite/fts.js +0 -2
  1268. package/dist/src/storage/sqlite/knowledge-repository.js +0 -2
  1269. package/dist/src/storage/sqlite/memory-index-repository.js +0 -2
  1270. package/dist/src/storage/sqlite/memory-records-repository.js +0 -2
  1271. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -2
  1272. package/dist/src/storage/sqlite/migrations/discover.js +0 -2
  1273. package/dist/src/storage/sqlite/migrations/errors.js +0 -2
  1274. package/dist/src/storage/sqlite/migrations/runner.js +0 -2
  1275. package/dist/src/storage/sqlite/note-agent-context-repository.js +0 -2
  1276. package/dist/src/storage/sqlite/notes-repository.js +0 -2
  1277. package/dist/src/storage/sqlite/paths.js +0 -2
  1278. package/dist/src/storage/sqlite/row-mappers.js +0 -2
  1279. package/dist/src/storage/sqlite/schema-version.js +0 -2
  1280. package/dist/src/storage/sqlite/schema.js +0 -2
  1281. package/dist/src/storage/sqlite/session-metadata.js +0 -2
  1282. package/dist/src/storage/sqlite/session-repository.js +0 -2
  1283. package/dist/src/storage/sqlite/transaction.js +0 -2
  1284. package/dist/src/storage/sqlite/transcript-repository.js +0 -2
  1285. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -2
  1286. package/dist/src/storage/sqlite/user-trust-repository.js +0 -2
  1287. package/dist/src/tui/backends/embedded-backend.js +0 -2
  1288. package/dist/src/tui/backends/gateway-sse-backend.js +0 -2
  1289. package/dist/src/tui/chat-history.js +0 -2
  1290. package/dist/src/tui/clipboard-image.js +0 -2
  1291. package/dist/src/tui/clipboard-text.js +0 -2
  1292. package/dist/src/tui/components/assistant-message.js +0 -2
  1293. package/dist/src/tui/components/bash-execution.js +0 -2
  1294. package/dist/src/tui/components/bash-summary.js +0 -2
  1295. package/dist/src/tui/components/branch-message-summary.js +0 -2
  1296. package/dist/src/tui/components/branch-summary.js +0 -2
  1297. package/dist/src/tui/components/chat-log.js +0 -2
  1298. package/dist/src/tui/components/compaction-summary.js +0 -2
  1299. package/dist/src/tui/components/custom-editor.js +0 -2
  1300. package/dist/src/tui/components/custom-message.js +0 -2
  1301. package/dist/src/tui/components/dynamic-border.js +0 -2
  1302. package/dist/src/tui/components/extension-dialog.js +0 -2
  1303. package/dist/src/tui/components/fuzzy-filter.js +0 -2
  1304. package/dist/src/tui/components/scoped-models-selector.js +0 -2
  1305. package/dist/src/tui/components/searchable-select-list.js +0 -2
  1306. package/dist/src/tui/components/session-selector.js +0 -2
  1307. package/dist/src/tui/components/settings-selector.js +0 -2
  1308. package/dist/src/tui/components/thinking-selector.js +0 -2
  1309. package/dist/src/tui/components/tool-execution.js +0 -2
  1310. package/dist/src/tui/components/tui-bottom-bar.js +0 -2
  1311. package/dist/src/tui/components/tui-header.js +0 -2
  1312. package/dist/src/tui/components/user-message.js +0 -2
  1313. package/dist/src/tui/components/visual-truncate.js +0 -2
  1314. package/dist/src/tui/extension-host/autocomplete.js +0 -2
  1315. package/dist/src/tui/extension-host/host.js +0 -2
  1316. package/dist/src/tui/extension-host/load-extensions.js +0 -2
  1317. package/dist/src/tui/extension-host/runtime-context.js +0 -2
  1318. package/dist/src/tui/extension-host/runtime.js +0 -2
  1319. package/dist/src/tui/extension-host/surface.js +0 -2
  1320. package/dist/src/tui/extension-host/tool-renderers.js +0 -2
  1321. package/dist/src/tui/format-tui-hotkeys.js +0 -2
  1322. package/dist/src/tui/sse-consumer.js +0 -2
  1323. package/dist/src/tui/theme/dark.js +0 -2
  1324. package/dist/src/tui/theme/light.js +0 -2
  1325. package/dist/src/tui/theme-manager.js +0 -2
  1326. package/dist/src/tui/theme.js +0 -2
  1327. package/dist/src/tui/tool-summary.js +0 -2
  1328. package/dist/src/tui/tui-agent-events.js +0 -2
  1329. package/dist/src/tui/tui-command-formatters.js +0 -2
  1330. package/dist/src/tui/tui-commands.js +0 -2
  1331. package/dist/src/tui/tui-context-usage.js +0 -2
  1332. package/dist/src/tui/tui-extension-user-message.js +0 -2
  1333. package/dist/src/tui/tui-fd-path.js +0 -2
  1334. package/dist/src/tui/tui-file-autocomplete.js +0 -2
  1335. package/dist/src/tui/tui-follow-up-queue.js +0 -2
  1336. package/dist/src/tui/tui-git-branch.js +0 -2
  1337. package/dist/src/tui/tui-keybindings-file.js +0 -2
  1338. package/dist/src/tui/tui-lifecycle.js +0 -2
  1339. package/dist/src/tui/tui-local-shell.js +0 -2
  1340. package/dist/src/tui/tui-model-picker.js +0 -2
  1341. package/dist/src/tui/tui-oauth-login.js +0 -2
  1342. package/dist/src/tui/tui-overlays.js +0 -2
  1343. package/dist/src/tui/tui-picker-overlay.js +0 -2
  1344. package/dist/src/tui/tui-run-state.js +0 -2
  1345. package/dist/src/tui/tui-run-status-format.js +0 -2
  1346. package/dist/src/tui/tui-runtime-hints.js +0 -2
  1347. package/dist/src/tui/tui-scoped-models.js +0 -2
  1348. package/dist/src/tui/tui-session-actions.js +0 -2
  1349. package/dist/src/tui/tui-session-format.js +0 -2
  1350. package/dist/src/tui/tui-session-snapshot.js +0 -2
  1351. package/dist/src/tui/tui-session-stats.js +0 -2
  1352. package/dist/src/tui/tui-settings.js +0 -2
  1353. package/dist/src/tui/tui-skills-autocomplete.js +0 -2
  1354. package/dist/src/tui/tui-startup-resources.js +0 -2
  1355. package/dist/src/tui/tui-startup-text.js +0 -2
  1356. package/dist/src/tui/tui-stdio-filter.js +0 -2
  1357. package/dist/src/tui/tui-submit.js +0 -2
  1358. package/dist/src/tui/tui-suspend.js +0 -2
  1359. package/dist/src/tui/tui-timeline-picker.js +0 -2
  1360. package/dist/src/tui/tui-timeline.js +0 -2
  1361. package/dist/src/tui/tui-tool-diff.js +0 -2
  1362. package/dist/src/tui/tui-tool-result.js +0 -2
  1363. package/dist/src/tui/tui-transcript-tree-picker.js +0 -2
  1364. package/dist/src/tui/tui-transcript-tree.js +0 -2
  1365. package/dist/src/tui/tui-types.js +0 -2
  1366. package/dist/src/tui/tui-workflow-slash.js +0 -2
  1367. package/dist/src/tui/tui.js +0 -2
  1368. package/dist/src/tui/xopc-tui-keybindings.js +0 -2
  1369. package/dist/src/tunnel/broker-client.js +0 -2
  1370. package/dist/src/tunnel/consent.js +0 -2
  1371. package/dist/src/tunnel/enable-lan-pairing.js +0 -2
  1372. package/dist/src/tunnel/env.js +0 -2
  1373. package/dist/src/tunnel/frp-subdomain-host.js +0 -2
  1374. package/dist/src/tunnel/frpc-binary.js +0 -2
  1375. package/dist/src/tunnel/frpc-config.js +0 -2
  1376. package/dist/src/tunnel/frpc-extract.js +0 -2
  1377. package/dist/src/tunnel/frpc-process.js +0 -2
  1378. package/dist/src/tunnel/gateway-lifecycle.js +0 -2
  1379. package/dist/src/tunnel/pair-context.js +0 -2
  1380. package/dist/src/tunnel/pair-url.js +0 -2
  1381. package/dist/src/tunnel/pairing-rate-limit.js +0 -2
  1382. package/dist/src/tunnel/pairing.js +0 -2
  1383. package/dist/src/tunnel/tunnel-audit.js +0 -2
  1384. package/dist/src/tunnel/tunnel-config.js +0 -2
  1385. package/dist/src/tunnel/tunnel-persist.js +0 -2
  1386. package/dist/src/tunnel/tunnel-qr.js +0 -2
  1387. package/dist/src/tunnel/tunnel-rate-limit.js +0 -2
  1388. package/dist/src/tunnel/tunnel-service.js +0 -2
  1389. package/dist/src/tunnel/tunnel-state.js +0 -2
  1390. package/dist/src/tunnel/well-known.js +0 -2
  1391. package/dist/src/user-context/config.js +0 -2
  1392. package/dist/src/user-context/import.js +0 -2
  1393. package/dist/src/user-context/owner.js +0 -2
  1394. package/dist/src/user-context/profile.js +0 -2
  1395. package/dist/src/user-context/projection.js +0 -2
  1396. package/dist/src/user-context/runtime.js +0 -2
  1397. package/dist/src/user-context/source-recommendations.js +0 -2
  1398. package/dist/src/user-context/trust-policy.js +0 -2
  1399. package/dist/src/utils/global-singleton.js +0 -2
  1400. package/dist/src/utils/helpers.js +0 -2
  1401. package/dist/src/utils/index.js +0 -2
  1402. package/dist/src/utils/is-record.js +0 -2
  1403. package/dist/src/utils/logger/audit.js +0 -2
  1404. package/dist/src/utils/logger/config.js +0 -2
  1405. package/dist/src/utils/logger/context.js +0 -2
  1406. package/dist/src/utils/logger/exporters.js +0 -2
  1407. package/dist/src/utils/logger/index.js +0 -2
  1408. package/dist/src/utils/logger/log-store.js +0 -2
  1409. package/dist/src/utils/logger/log-stream.js +0 -2
  1410. package/dist/src/utils/logger/pino-record.js +0 -2
  1411. package/dist/src/utils/logger/redact.js +0 -2
  1412. package/dist/src/utils/logger/rotation.js +0 -2
  1413. package/dist/src/utils/logger/shutdown.js +0 -2
  1414. package/dist/src/utils/logger/stats.js +0 -2
  1415. package/dist/src/utils/logger/streams.js +0 -2
  1416. package/dist/src/utils/logger/types.js +0 -2
  1417. package/dist/src/utils/logger.js +0 -2
  1418. package/dist/src/utils/redact-sensitive-url.js +0 -2
  1419. package/dist/src/utils/sanitize-log.js +0 -2
  1420. package/dist/src/utils/string-coerce.js +0 -2
  1421. package/dist/src/voice/language-profile.js +0 -2
  1422. package/dist/src/voice/local/model-files.js +0 -2
  1423. package/dist/src/voice/local/model-manager.js +0 -2
  1424. package/dist/src/voice/local/models.js +0 -2
  1425. package/dist/src/voice/local/runtime-client.js +0 -2
  1426. package/dist/src/voice/local/runtime-dispatcher.js +0 -2
  1427. package/dist/src/voice/local/runtime-worker.js +12 -4
  1428. package/dist/src/voice/local/wav.js +0 -2
  1429. package/dist/src/voice/metadata/builtin.js +0 -2
  1430. package/dist/src/voice/metadata/registry.js +0 -2
  1431. package/dist/src/voice/stt/availability.js +0 -2
  1432. package/dist/src/voice/stt/config-slice.js +0 -2
  1433. package/dist/src/voice/stt/factory.js +0 -2
  1434. package/dist/src/voice/stt/index.js +0 -2
  1435. package/dist/src/voice/stt/list-providers.js +0 -2
  1436. package/dist/src/voice/stt/mention.js +0 -2
  1437. package/dist/src/voice/stt/preflight.js +0 -2
  1438. package/dist/src/voice/stt/providers/alibaba-transcription.js +0 -2
  1439. package/dist/src/voice/stt/providers/local-transcription.js +0 -2
  1440. package/dist/src/voice/stt/providers/openai-transcription.js +0 -2
  1441. package/dist/src/voice/stt/transcribe-core.js +0 -2
  1442. package/dist/src/voice/stt/types.js +0 -2
  1443. package/dist/src/voice/tts/audio.js +0 -2
  1444. package/dist/src/voice/tts/config-slice.js +0 -2
  1445. package/dist/src/voice/tts/directives.js +0 -2
  1446. package/dist/src/voice/tts/factory.js +0 -2
  1447. package/dist/src/voice/tts/list-providers.js +0 -2
  1448. package/dist/src/voice/tts/merge-config.js +0 -2
  1449. package/dist/src/voice/tts/openai-compatible-speech.js +0 -2
  1450. package/dist/src/voice/tts/payload.js +0 -2
  1451. package/dist/src/voice/tts/preprocess.js +0 -2
  1452. package/dist/src/voice/tts/providers/alibaba-speech.js +0 -2
  1453. package/dist/src/voice/tts/providers/edge-speech.js +0 -2
  1454. package/dist/src/voice/tts/providers/minimax-speech.js +0 -2
  1455. package/dist/src/voice/tts/providers/openai-speech.js +0 -2
  1456. package/dist/src/voice/tts/sentence-boundary.js +0 -2
  1457. package/dist/src/voice/tts/service.js +0 -2
  1458. package/dist/src/voice/tts/speak-core.js +0 -2
  1459. package/dist/src/voice/tts/speech-registry.js +0 -2
  1460. package/dist/src/voice/tts/status-tracker.js +0 -2
  1461. package/dist/src/voice/tts/summarize.js +0 -2
  1462. package/dist/src/voice/tts/types.js +0 -2
  1463. package/dist/src/work-discovery/analyzer.js +0 -2
  1464. package/dist/src/work-discovery/probe.js +0 -2
  1465. package/dist/src/work-discovery/repository.js +0 -2
  1466. package/dist/src/work-discovery/service.js +0 -2
  1467. package/dist/src/work-items/agent-context.js +0 -2
  1468. package/dist/src/work-items/work-item-service.js +0 -2
  1469. package/dist/src/work-items/work-item-store.js +0 -2
  1470. package/dist/src/work-items/work-item-workflow-judge.js +0 -2
  1471. package/dist/src/workflows/authoring/workflow-draft-store.js +0 -2
  1472. package/dist/src/workflows/domain/definition-utils.js +0 -2
  1473. package/dist/src/workflows/domain/run.js +0 -2
  1474. package/dist/src/workflows/domain/schema-validation.js +0 -2
  1475. package/dist/src/workflows/domain/validation.js +0 -2
  1476. package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -2
  1477. package/dist/src/workflows/draft/workflow-draft-service.js +0 -2
  1478. package/dist/src/workflows/draft/workflow-draft-validator.js +0 -2
  1479. package/dist/src/workflows/engine/projector.js +0 -2
  1480. package/dist/src/workflows/engine/workflow-engine.js +0 -2
  1481. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +0 -2
  1482. package/dist/src/workflows/runtime/graph-workflow-runtime.js +0 -2
  1483. package/dist/src/workflows/service/run-view-to-snapshot.js +0 -2
  1484. package/dist/src/workflows/service/workflow-run-service.js +1 -3
  1485. package/dist/src/workflows/service/workflow-session-bridge.js +0 -2
  1486. package/dist/src/workflows/service/workflow-session-key.js +0 -2
  1487. package/dist/src/workflows/store/event-store.js +0 -2
  1488. package/dist/src/workflows/store/paths.js +0 -2
  1489. package/dist/src/workflows/store/run-index-store.js +0 -2
  1490. package/dist/src/workflows/store/run-store.js +0 -2
  1491. package/package.json +43 -12
  1492. package/skills/creative/hatch-pet/SKILL.md +1 -0
  1493. package/dist/extensions/dashscope/src/image-generation-provider.js.map +0 -1
  1494. package/dist/extensions/demo-memory/src/index.js.map +0 -1
  1495. package/dist/extensions/fal/src/image-generation-provider.js.map +0 -1
  1496. package/dist/extensions/feishu/src/actions/message-action-handler.js.map +0 -1
  1497. package/dist/extensions/feishu/src/adapters/cli-login.js.map +0 -1
  1498. package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +0 -1
  1499. package/dist/extensions/feishu/src/adapters/onboard-cli.js.map +0 -1
  1500. package/dist/extensions/feishu/src/auth/app-registration.js.map +0 -1
  1501. package/dist/extensions/feishu/src/auth/pairing.js.map +0 -1
  1502. package/dist/extensions/feishu/src/auth/paths.js.map +0 -1
  1503. package/dist/extensions/feishu/src/directory/directory-adapter.js.map +0 -1
  1504. package/dist/extensions/feishu/src/format.js.map +0 -1
  1505. package/dist/extensions/feishu/src/index.js.map +0 -1
  1506. package/dist/extensions/feishu/src/outbound/actions.js.map +0 -1
  1507. package/dist/extensions/feishu/src/outbound/media-load.js.map +0 -1
  1508. package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +0 -1
  1509. package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js.map +0 -1
  1510. package/dist/extensions/feishu/src/pairing-config-resolver.js.map +0 -1
  1511. package/dist/extensions/feishu/src/plugin.js.map +0 -1
  1512. package/dist/extensions/feishu/src/schema/config-schema.js.map +0 -1
  1513. package/dist/extensions/feishu/src/state/accounts.js.map +0 -1
  1514. package/dist/extensions/feishu/src/state/message-bindings.js.map +0 -1
  1515. package/dist/extensions/feishu/src/state/thread-bindings.js.map +0 -1
  1516. package/dist/extensions/feishu/src/status/doctor.js.map +0 -1
  1517. package/dist/extensions/feishu/src/status/status-adapter.js.map +0 -1
  1518. package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +0 -1
  1519. package/dist/extensions/feishu/src/subagent-hooks.js.map +0 -1
  1520. package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js.map +0 -1
  1521. package/dist/extensions/feishu/src/tools/docx/docx-color-text.js.map +0 -1
  1522. package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js.map +0 -1
  1523. package/dist/extensions/feishu/src/tools/tools.js.map +0 -1
  1524. package/dist/extensions/feishu/src/transport/client/client.js.map +0 -1
  1525. package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js.map +0 -1
  1526. package/dist/extensions/feishu/src/transport/reliability/dedupe.js.map +0 -1
  1527. package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js.map +0 -1
  1528. package/dist/extensions/feishu/src/transport/socket-mode/monitor.js.map +0 -1
  1529. package/dist/extensions/feishu/src/transport/socket-mode/retry.js.map +0 -1
  1530. package/dist/extensions/feishu/src/transport/text/mentions.js.map +0 -1
  1531. package/dist/extensions/feishu/src/transport/webhook/monitor.js.map +0 -1
  1532. package/dist/extensions/feishu/src/ui/config-surface.js.map +0 -1
  1533. package/dist/extensions/feishu/src/workflow-progress.js.map +0 -1
  1534. package/dist/extensions/google/src/image-generation-provider.js.map +0 -1
  1535. package/dist/extensions/minimax/src/image-generation-provider.js.map +0 -1
  1536. package/dist/extensions/openai/src/image-generation-provider.js.map +0 -1
  1537. package/dist/extensions/telegram/src/access-control.js.map +0 -1
  1538. package/dist/extensions/telegram/src/account-manager.js.map +0 -1
  1539. package/dist/extensions/telegram/src/actions/message-actions.js.map +0 -1
  1540. package/dist/extensions/telegram/src/adapters/command-adapter.js.map +0 -1
  1541. package/dist/extensions/telegram/src/adapters/config-adapter.js.map +0 -1
  1542. package/dist/extensions/telegram/src/adapters/debounce-keys.js.map +0 -1
  1543. package/dist/extensions/telegram/src/adapters/gateway-adapter.js.map +0 -1
  1544. package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +0 -1
  1545. package/dist/extensions/telegram/src/adapters/inbound-access.js.map +0 -1
  1546. package/dist/extensions/telegram/src/adapters/index.js.map +0 -1
  1547. package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +0 -1
  1548. package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +0 -1
  1549. package/dist/extensions/telegram/src/adapters/security-adapter.js.map +0 -1
  1550. package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +0 -1
  1551. package/dist/extensions/telegram/src/adapters/status-adapter.js.map +0 -1
  1552. package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +0 -1
  1553. package/dist/extensions/telegram/src/api-root.js.map +0 -1
  1554. package/dist/extensions/telegram/src/approval-delivery.js.map +0 -1
  1555. package/dist/extensions/telegram/src/approval-store.js.map +0 -1
  1556. package/dist/extensions/telegram/src/caption.js.map +0 -1
  1557. package/dist/extensions/telegram/src/command-handler.js.map +0 -1
  1558. package/dist/extensions/telegram/src/config-schema.js.map +0 -1
  1559. package/dist/extensions/telegram/src/conversation-id.js.map +0 -1
  1560. package/dist/extensions/telegram/src/dedupe.js.map +0 -1
  1561. package/dist/extensions/telegram/src/delivery-chat-id.js.map +0 -1
  1562. package/dist/extensions/telegram/src/doctor.js.map +0 -1
  1563. package/dist/extensions/telegram/src/draft-stream-lifecycle.js.map +0 -1
  1564. package/dist/extensions/telegram/src/draft-stream-loop.js.map +0 -1
  1565. package/dist/extensions/telegram/src/draft-stream.js.map +0 -1
  1566. package/dist/extensions/telegram/src/errors.js.map +0 -1
  1567. package/dist/extensions/telegram/src/exec-approval-handler.js.map +0 -1
  1568. package/dist/extensions/telegram/src/exec-approvals.js.map +0 -1
  1569. package/dist/extensions/telegram/src/focus-handler.js.map +0 -1
  1570. package/dist/extensions/telegram/src/format.js.map +0 -1
  1571. package/dist/extensions/telegram/src/group-config-resolver.js.map +0 -1
  1572. package/dist/extensions/telegram/src/inbound-coalescer.js.map +0 -1
  1573. package/dist/extensions/telegram/src/inbound-processor.js.map +0 -1
  1574. package/dist/extensions/telegram/src/index.js.map +0 -1
  1575. package/dist/extensions/telegram/src/inline-keyboards.js.map +0 -1
  1576. package/dist/extensions/telegram/src/network-errors.js.map +0 -1
  1577. package/dist/extensions/telegram/src/outbound-sender.js.map +0 -1
  1578. package/dist/extensions/telegram/src/pairing-config-resolver.js.map +0 -1
  1579. package/dist/extensions/telegram/src/plugin-defaults.js.map +0 -1
  1580. package/dist/extensions/telegram/src/plugin.js.map +0 -1
  1581. package/dist/extensions/telegram/src/polling-session.js.map +0 -1
  1582. package/dist/extensions/telegram/src/proxy-fetch.js.map +0 -1
  1583. package/dist/extensions/telegram/src/reactions.js.map +0 -1
  1584. package/dist/extensions/telegram/src/reply-params.js.map +0 -1
  1585. package/dist/extensions/telegram/src/routing-integration.js.map +0 -1
  1586. package/dist/extensions/telegram/src/send-options.js.map +0 -1
  1587. package/dist/extensions/telegram/src/sent-cache.js.map +0 -1
  1588. package/dist/extensions/telegram/src/startup-errors.js.map +0 -1
  1589. package/dist/extensions/telegram/src/telegram-actions.js.map +0 -1
  1590. package/dist/extensions/telegram/src/telegram-draft-errors.js.map +0 -1
  1591. package/dist/extensions/telegram/src/thread-bindings.js.map +0 -1
  1592. package/dist/extensions/telegram/src/timeout-abort.js.map +0 -1
  1593. package/dist/extensions/telegram/src/token-resolver.js.map +0 -1
  1594. package/dist/extensions/telegram/src/update-offset-store.js.map +0 -1
  1595. package/dist/extensions/telegram/src/workflow-progress.js.map +0 -1
  1596. package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +0 -1
  1597. package/dist/extensions/weixin/src/api/api.js.map +0 -1
  1598. package/dist/extensions/weixin/src/api/config-cache.js.map +0 -1
  1599. package/dist/extensions/weixin/src/api/session-guard.js.map +0 -1
  1600. package/dist/extensions/weixin/src/api/types.js.map +0 -1
  1601. package/dist/extensions/weixin/src/auth/accounts.js.map +0 -1
  1602. package/dist/extensions/weixin/src/auth/login-qr.js.map +0 -1
  1603. package/dist/extensions/weixin/src/auth/pairing.js.map +0 -1
  1604. package/dist/extensions/weixin/src/auth/weixin-account-id.js.map +0 -1
  1605. package/dist/extensions/weixin/src/cdn/aes-ecb.js.map +0 -1
  1606. package/dist/extensions/weixin/src/cdn/cdn-upload.js.map +0 -1
  1607. package/dist/extensions/weixin/src/cdn/cdn-url.js.map +0 -1
  1608. package/dist/extensions/weixin/src/cdn/pic-decrypt.js.map +0 -1
  1609. package/dist/extensions/weixin/src/cdn/upload.js.map +0 -1
  1610. package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +0 -1
  1611. package/dist/extensions/weixin/src/cli/qr-login.js.map +0 -1
  1612. package/dist/extensions/weixin/src/config-schema.js.map +0 -1
  1613. package/dist/extensions/weixin/src/config-surface.js.map +0 -1
  1614. package/dist/extensions/weixin/src/delivery-to.js.map +0 -1
  1615. package/dist/extensions/weixin/src/index.js.map +0 -1
  1616. package/dist/extensions/weixin/src/media/data-url.js.map +0 -1
  1617. package/dist/extensions/weixin/src/media/media-download.js.map +0 -1
  1618. package/dist/extensions/weixin/src/media/mime.js.map +0 -1
  1619. package/dist/extensions/weixin/src/media/silk-transcode.js.map +0 -1
  1620. package/dist/extensions/weixin/src/messaging/context-token-init.js.map +0 -1
  1621. package/dist/extensions/weixin/src/messaging/debug-mode.js.map +0 -1
  1622. package/dist/extensions/weixin/src/messaging/error-notice.js.map +0 -1
  1623. package/dist/extensions/weixin/src/messaging/inbound.js.map +0 -1
  1624. package/dist/extensions/weixin/src/messaging/markdown-filter.js.map +0 -1
  1625. package/dist/extensions/weixin/src/messaging/process-message.js.map +0 -1
  1626. package/dist/extensions/weixin/src/messaging/send-media.js.map +0 -1
  1627. package/dist/extensions/weixin/src/messaging/send.js.map +0 -1
  1628. package/dist/extensions/weixin/src/messaging/slash-commands.js.map +0 -1
  1629. package/dist/extensions/weixin/src/messaging/typing-ticket-store.js.map +0 -1
  1630. package/dist/extensions/weixin/src/monitor/monitor.js.map +0 -1
  1631. package/dist/extensions/weixin/src/outbound-send.js.map +0 -1
  1632. package/dist/extensions/weixin/src/pairing-config-resolver.js.map +0 -1
  1633. package/dist/extensions/weixin/src/plugin.js.map +0 -1
  1634. package/dist/extensions/weixin/src/routing-integration.js.map +0 -1
  1635. package/dist/extensions/weixin/src/storage/state-dir.js.map +0 -1
  1636. package/dist/extensions/weixin/src/storage/sync-buf.js.map +0 -1
  1637. package/dist/extensions/weixin/src/util/logger.js.map +0 -1
  1638. package/dist/extensions/weixin/src/util/random.js.map +0 -1
  1639. package/dist/extensions/weixin/src/util/redact.js.map +0 -1
  1640. package/dist/extensions/weixin/src/workflow-progress.js.map +0 -1
  1641. package/dist/gateway/static/root/assets/agents-DZDOcgz5.js +0 -2
  1642. package/dist/gateway/static/root/assets/appearance-settings-BNasnY9D.js +0 -1
  1643. package/dist/gateway/static/root/assets/apps-page-Cmr-Hvm9.js +0 -1
  1644. package/dist/gateway/static/root/assets/automations-page-TWgUAI8t.js +0 -6
  1645. package/dist/gateway/static/root/assets/browser-settings-page-DBsFItW_.js +0 -8
  1646. package/dist/gateway/static/root/assets/channels-settings-BBkzrBYy.js +0 -1
  1647. package/dist/gateway/static/root/assets/channels-status-swr-CuU6ez3y.js +0 -1
  1648. package/dist/gateway/static/root/assets/connectors-page-DLsZCAw7.js +0 -2
  1649. package/dist/gateway/static/root/assets/desktop-pet-C6V-PHwi.js +0 -1
  1650. package/dist/gateway/static/root/assets/desktop-pet-settings-5Fcz47XQ.js +0 -1
  1651. package/dist/gateway/static/root/assets/gateway-settings-BrxzyVW2.js +0 -1
  1652. package/dist/gateway/static/root/assets/goal-create-dialog-DRVRLc5Z.js +0 -1
  1653. package/dist/gateway/static/root/assets/goal-detail-page-8F7NElzP.js +0 -4
  1654. package/dist/gateway/static/root/assets/goals-page-BaoLiV8G.js +0 -2
  1655. package/dist/gateway/static/root/assets/index-CH7XN6KY.js +0 -259
  1656. package/dist/gateway/static/root/assets/index-Dfnl9tp_.css +0 -1
  1657. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BHnh5OoY.js +0 -1
  1658. package/dist/gateway/static/root/assets/local-app-workbench-page-Boe8n4zH.js +0 -2
  1659. package/dist/gateway/static/root/assets/locale-store-BneNAR8R.js +0 -1
  1660. package/dist/gateway/static/root/assets/logs-page-Cb4Uptct.js +0 -7
  1661. package/dist/gateway/static/root/assets/messages-t1yPaVCt.js +0 -5
  1662. package/dist/gateway/static/root/assets/models-hub-panel-CNiUKZUV.js +0 -2
  1663. package/dist/gateway/static/root/assets/notes-workbench-C9__VkD6.js +0 -4
  1664. package/dist/gateway/static/root/assets/project-detail-page-CZhuB5kO.js +0 -1
  1665. package/dist/gateway/static/root/assets/projects-page-BOq4WVdR.js +0 -1
  1666. package/dist/gateway/static/root/assets/remote-access-hub-BxGq0ebQ.js +0 -1
  1667. package/dist/gateway/static/root/assets/sessions-page-B6gSU_Au.js +0 -1
  1668. package/dist/gateway/static/root/assets/settings-advanced-gate-DwuBL834.js +0 -1
  1669. package/dist/gateway/static/root/assets/settings-loading-skeleton-vitElc-n.js +0 -1
  1670. package/dist/gateway/static/root/assets/setup-status-panel-BJeA4mmk.js +0 -1
  1671. package/dist/gateway/static/root/assets/shares-settings-DB2KYA2_.js +0 -1
  1672. package/dist/gateway/static/root/assets/skill-reload-api-DQtZiejw.js +0 -1
  1673. package/dist/gateway/static/root/assets/skills-page-Pm0fNe_p.js +0 -2
  1674. package/dist/gateway/static/root/assets/user-context-page-DnLqQyRG.js +0 -1
  1675. package/dist/gateway/static/root/assets/voice-api-key-field-BiFIIWC4.js +0 -1
  1676. package/dist/gateway/static/root/assets/work-discovery-page-D2-_bC0J.js +0 -1
  1677. package/dist/gateway/static/root/assets/work-item-detail-page-B0FPG4eJ.js +0 -1
  1678. package/dist/gateway/static/root/assets/work-page-BDeVxts_.js +0 -1
  1679. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BPzS67fU.js +0 -3
  1680. package/dist/gateway/static/root/assets/workflows-page-xPhmrRLs.js +0 -11
  1681. package/dist/gateway/static/root/favicon-icon.svg +0 -187
  1682. package/dist/package.js.map +0 -1
  1683. package/dist/src/activity/context.js.map +0 -1
  1684. package/dist/src/activity/emitter.js.map +0 -1
  1685. package/dist/src/activity/service.js.map +0 -1
  1686. package/dist/src/agent/agent-manager.js.map +0 -1
  1687. package/dist/src/agent/agent-scope.js.map +0 -1
  1688. package/dist/src/agent/background-review/coordinator.js.map +0 -1
  1689. package/dist/src/agent/background-review/prompts.js.map +0 -1
  1690. package/dist/src/agent/background-review/run-background-review.js.map +0 -1
  1691. package/dist/src/agent/background-review/settings.js.map +0 -1
  1692. package/dist/src/agent/bootstrap/bootstrap-cache.js.map +0 -1
  1693. package/dist/src/agent/bootstrap/bootstrap-context.js.map +0 -1
  1694. package/dist/src/agent/bootstrap/bootstrap-files.js.map +0 -1
  1695. package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +0 -1
  1696. package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +0 -1
  1697. package/dist/src/agent/bootstrap/project-agents-context.js.map +0 -1
  1698. package/dist/src/agent/capabilities/definitions.js.map +0 -1
  1699. package/dist/src/agent/capabilities/registry.js.map +0 -1
  1700. package/dist/src/agent/child-agent-factory.js.map +0 -1
  1701. package/dist/src/agent/client-error-format.js.map +0 -1
  1702. package/dist/src/agent/code-intelligence/binary.js.map +0 -1
  1703. package/dist/src/agent/code-intelligence/runtime.js.map +0 -1
  1704. package/dist/src/agent/code-intelligence/tools.js.map +0 -1
  1705. package/dist/src/agent/coding/turn-diff-tracker.js.map +0 -1
  1706. package/dist/src/agent/context/expand-at-file-mentions.js.map +0 -1
  1707. package/dist/src/agent/context/project-context.js.map +0 -1
  1708. package/dist/src/agent/context/workspace-seed.js.map +0 -1
  1709. package/dist/src/agent/context/workspace-state.js.map +0 -1
  1710. package/dist/src/agent/context/workspace.js.map +0 -1
  1711. package/dist/src/agent/embedded/run-for-session.js.map +0 -1
  1712. package/dist/src/agent/embedded/run-turn.js.map +0 -1
  1713. package/dist/src/agent/embedded/runs.js.map +0 -1
  1714. package/dist/src/agent/embedded/session-manager-init.js.map +0 -1
  1715. package/dist/src/agent/embedded/session-runner.js.map +0 -1
  1716. package/dist/src/agent/embedded/session-tool-result-guard.js.map +0 -1
  1717. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +0 -1
  1718. package/dist/src/agent/embedded/subscribe-session.js.map +0 -1
  1719. package/dist/src/agent/embedded/system-prompt-override.js.map +0 -1
  1720. package/dist/src/agent/embedded/tool-result-context-guard.js.map +0 -1
  1721. package/dist/src/agent/embedded/tool-result-truncation.js.map +0 -1
  1722. package/dist/src/agent/embedded/xopc-auth-storage.js.map +0 -1
  1723. package/dist/src/agent/embedded/xopc-stream-bridge.js.map +0 -1
  1724. package/dist/src/agent/embedded/xopc-tools-bridge.js.map +0 -1
  1725. package/dist/src/agent/failover-error.js.map +0 -1
  1726. package/dist/src/agent/fallback/candidates.js.map +0 -1
  1727. package/dist/src/agent/fallback/reason.js.map +0 -1
  1728. package/dist/src/agent/feedback/feedback-coordinator.js.map +0 -1
  1729. package/dist/src/agent/goals/checklist-judge.js.map +0 -1
  1730. package/dist/src/agent/goals/checklist-types.js.map +0 -1
  1731. package/dist/src/agent/goals/evaluate-turn.js.map +0 -1
  1732. package/dist/src/agent/goals/goal-locale.js.map +0 -1
  1733. package/dist/src/agent/goals/judge.js.map +0 -1
  1734. package/dist/src/agent/goals/persistent-goal-service.js.map +0 -1
  1735. package/dist/src/agent/goals/post-turn.js.map +0 -1
  1736. package/dist/src/agent/goals/state.js.map +0 -1
  1737. package/dist/src/agent/image/generation/bundled-registry.js.map +0 -1
  1738. package/dist/src/agent/image/generation/bundled.js.map +0 -1
  1739. package/dist/src/agent/image/generation/image-assets.js.map +0 -1
  1740. package/dist/src/agent/image/generation/model-ref.js.map +0 -1
  1741. package/dist/src/agent/image/generation/normalization.js.map +0 -1
  1742. package/dist/src/agent/image/generation/openai-compatible-image-provider.js.map +0 -1
  1743. package/dist/src/agent/image/generation/provider-registry.js.map +0 -1
  1744. package/dist/src/agent/image/generation/runtime.js.map +0 -1
  1745. package/dist/src/agent/image/image-helpers.js.map +0 -1
  1746. package/dist/src/agent/image/image-model-fallback.js.map +0 -1
  1747. package/dist/src/agent/image/inbound-image-handling.js.map +0 -1
  1748. package/dist/src/agent/image/load-image-media.js.map +0 -1
  1749. package/dist/src/agent/image/tool-model-config.js.map +0 -1
  1750. package/dist/src/agent/image/understanding/pi-ai-provider.js.map +0 -1
  1751. package/dist/src/agent/image/understanding/provider-registry.js.map +0 -1
  1752. package/dist/src/agent/image/understanding/runtime.js.map +0 -1
  1753. package/dist/src/agent/image/vision-detection.js.map +0 -1
  1754. package/dist/src/agent/inbound/attachment-pipeline.js.map +0 -1
  1755. package/dist/src/agent/inbound/inbound-loop.js.map +0 -1
  1756. package/dist/src/agent/inbound/turn-dispatcher.js.map +0 -1
  1757. package/dist/src/agent/ipc/bus.js.map +0 -1
  1758. package/dist/src/agent/ipc/inbox.js.map +0 -1
  1759. package/dist/src/agent/ipc/socket.js.map +0 -1
  1760. package/dist/src/agent/ipc/types.js.map +0 -1
  1761. package/dist/src/agent/lifecycle/handlers/compaction.js.map +0 -1
  1762. package/dist/src/agent/lifecycle/hook-handler.js.map +0 -1
  1763. package/dist/src/agent/lifecycle/manager.js.map +0 -1
  1764. package/dist/src/agent/lifecycle/progress.js.map +0 -1
  1765. package/dist/src/agent/lifecycle/timeout-wrapper.js.map +0 -1
  1766. package/dist/src/agent/lifecycle/typing.js.map +0 -1
  1767. package/dist/src/agent/mcp/bundle-mcp-config.js.map +0 -1
  1768. package/dist/src/agent/mcp/bundle-mcp-materialize.js.map +0 -1
  1769. package/dist/src/agent/mcp/bundle-mcp-names.js.map +0 -1
  1770. package/dist/src/agent/mcp/bundle-mcp-policy.js.map +0 -1
  1771. package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +0 -1
  1772. package/dist/src/agent/mcp/embedded-mcp.js.map +0 -1
  1773. package/dist/src/agent/mcp/mcp-config-shared.js.map +0 -1
  1774. package/dist/src/agent/mcp/mcp-http.js.map +0 -1
  1775. package/dist/src/agent/mcp/mcp-stdio-transport.js.map +0 -1
  1776. package/dist/src/agent/mcp/mcp-stdio.js.map +0 -1
  1777. package/dist/src/agent/mcp/mcp-tool-meta.js.map +0 -1
  1778. package/dist/src/agent/mcp/mcp-transport-config.js.map +0 -1
  1779. package/dist/src/agent/mcp/mcp-transport.js.map +0 -1
  1780. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +0 -1
  1781. package/dist/src/agent/media-generation/model-ref.js.map +0 -1
  1782. package/dist/src/agent/media-generation/normalization.types.js.map +0 -1
  1783. package/dist/src/agent/media-generation/runtime-shared.js.map +0 -1
  1784. package/dist/src/agent/memory/agent-message-access.js.map +0 -1
  1785. package/dist/src/agent/memory/builtin-memory-store.js.map +0 -1
  1786. package/dist/src/agent/memory/builtin-provider.js.map +0 -1
  1787. package/dist/src/agent/memory/compaction.js.map +0 -1
  1788. package/dist/src/agent/memory/context/planner.js.map +0 -1
  1789. package/dist/src/agent/memory/context-fence.js.map +0 -1
  1790. package/dist/src/agent/memory/create-memory-manager.js.map +0 -1
  1791. package/dist/src/agent/memory/dreaming/config.js.map +0 -1
  1792. package/dist/src/agent/memory/dreaming/constants.js.map +0 -1
  1793. package/dist/src/agent/memory/dreaming/deep-promotion.js.map +0 -1
  1794. package/dist/src/agent/memory/dreaming/events.js.map +0 -1
  1795. package/dist/src/agent/memory/dreaming/last-run.js.map +0 -1
  1796. package/dist/src/agent/memory/dreaming/light-sweep.js.map +0 -1
  1797. package/dist/src/agent/memory/dreaming/preview.js.map +0 -1
  1798. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +0 -1
  1799. package/dist/src/agent/memory/dreaming/rem-patterns.js.map +0 -1
  1800. package/dist/src/agent/memory/dreaming/scope.js.map +0 -1
  1801. package/dist/src/agent/memory/dreaming/short-term-store.js.map +0 -1
  1802. package/dist/src/agent/memory/dreaming/utils.js.map +0 -1
  1803. package/dist/src/agent/memory/lifecycle.js.map +0 -1
  1804. package/dist/src/agent/memory/manager.js.map +0 -1
  1805. package/dist/src/agent/memory/memory-config.js.map +0 -1
  1806. package/dist/src/agent/memory/message-sanitizer.js.map +0 -1
  1807. package/dist/src/agent/memory/plugin-discovery.js.map +0 -1
  1808. package/dist/src/agent/memory/sensitivity.js.map +0 -1
  1809. package/dist/src/agent/memory/source-origin.js.map +0 -1
  1810. package/dist/src/agent/memory/stub-memory-provider.js.map +0 -1
  1811. package/dist/src/agent/memory/summary-generator.js.map +0 -1
  1812. package/dist/src/agent/memory/understanding/correction.js.map +0 -1
  1813. package/dist/src/agent/memory/understanding/quality.js.map +0 -1
  1814. package/dist/src/agent/memory/understanding/service.js.map +0 -1
  1815. package/dist/src/agent/memory/user-context-coordinator.js.map +0 -1
  1816. package/dist/src/agent/memory/user-message-text.js.map +0 -1
  1817. package/dist/src/agent/memory/window.js.map +0 -1
  1818. package/dist/src/agent/messaging/command-handler.js.map +0 -1
  1819. package/dist/src/agent/messaging/message-router.js.map +0 -1
  1820. package/dist/src/agent/messaging/outbound-coordinator.js.map +0 -1
  1821. package/dist/src/agent/messaging/stream-manager.js.map +0 -1
  1822. package/dist/src/agent/middleware/context.js.map +0 -1
  1823. package/dist/src/agent/middleware/self-verify.js.map +0 -1
  1824. package/dist/src/agent/models/manager.js.map +0 -1
  1825. package/dist/src/agent/models/request-limiter.js.map +0 -1
  1826. package/dist/src/agent/models/selection.js.map +0 -1
  1827. package/dist/src/agent/orchestration/agent-event-handler.js.map +0 -1
  1828. package/dist/src/agent/orchestration/agent-orchestrator.js.map +0 -1
  1829. package/dist/src/agent/orchestration/llm-turn-retry.js.map +0 -1
  1830. package/dist/src/agent/orchestration/loop-guard.js.map +0 -1
  1831. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +0 -1
  1832. package/dist/src/agent/prompt/cache-boundary.js.map +0 -1
  1833. package/dist/src/agent/prompt/memory/index.js.map +0 -1
  1834. package/dist/src/agent/prompt/safety.js.map +0 -1
  1835. package/dist/src/agent/prompt/sanitize-for-prompt.js.map +0 -1
  1836. package/dist/src/agent/prompt/sections/behavior.js.map +0 -1
  1837. package/dist/src/agent/prompt/sections/memory-skills.js.map +0 -1
  1838. package/dist/src/agent/prompt/sections/messaging-runtime.js.map +0 -1
  1839. package/dist/src/agent/prompt/sections/project-context.js.map +0 -1
  1840. package/dist/src/agent/prompt/sections/tooling.js.map +0 -1
  1841. package/dist/src/agent/prompt/sections/workspace-runtime.js.map +0 -1
  1842. package/dist/src/agent/prompt/service-prompt-builder.js.map +0 -1
  1843. package/dist/src/agent/prompt/subagent-context.js.map +0 -1
  1844. package/dist/src/agent/prompt/system-prompt-params.js.map +0 -1
  1845. package/dist/src/agent/prompt/system-prompt.js.map +0 -1
  1846. package/dist/src/agent/prompt/system-reminder.js.map +0 -1
  1847. package/dist/src/agent/reply/apply-turn-user-enrichment.js.map +0 -1
  1848. package/dist/src/agent/reply/post-compaction-context.js.map +0 -1
  1849. package/dist/src/agent/reply/startup-context.js.map +0 -1
  1850. package/dist/src/agent/reply/workspace-boundary-read.js.map +0 -1
  1851. package/dist/src/agent/sandbox/command-validator.js.map +0 -1
  1852. package/dist/src/agent/sandbox/exec-policy.js.map +0 -1
  1853. package/dist/src/agent/sandbox/path-policy.js.map +0 -1
  1854. package/dist/src/agent/sandbox/sanitize-env-vars.js.map +0 -1
  1855. package/dist/src/agent/sandbox/types.js.map +0 -1
  1856. package/dist/src/agent/service/async-queue.js.map +0 -1
  1857. package/dist/src/agent/service/btw-query.js.map +0 -1
  1858. package/dist/src/agent/service/build-direct-message-content.js.map +0 -1
  1859. package/dist/src/agent/service/direct-turn-helpers.js.map +0 -1
  1860. package/dist/src/agent/service/parse-outbound-session-key.js.map +0 -1
  1861. package/dist/src/agent/service/process-direct-one-shot.js.map +0 -1
  1862. package/dist/src/agent/service/process-direct-streaming.js.map +0 -1
  1863. package/dist/src/agent/service/session-context-report.js.map +0 -1
  1864. package/dist/src/agent/service/webchat-tts.js.map +0 -1
  1865. package/dist/src/agent/service-inbound-utils.js.map +0 -1
  1866. package/dist/src/agent/service.js.map +0 -1
  1867. package/dist/src/agent/session/session-config-service.js.map +0 -1
  1868. package/dist/src/agent/session/session-context.js.map +0 -1
  1869. package/dist/src/agent/session/session-hydrator.js.map +0 -1
  1870. package/dist/src/agent/session/session-inspector.js.map +0 -1
  1871. package/dist/src/agent/session/session-lifecycle.js.map +0 -1
  1872. package/dist/src/agent/session/session-state-bag.js.map +0 -1
  1873. package/dist/src/agent/session/tracker.js.map +0 -1
  1874. package/dist/src/agent/skills/config.js.map +0 -1
  1875. package/dist/src/agent/skills/filesystem-watcher.js.map +0 -1
  1876. package/dist/src/agent/skills/format-skills-prompt.js.map +0 -1
  1877. package/dist/src/agent/skills/hub-hash.js.map +0 -1
  1878. package/dist/src/agent/skills/hub-lock.js.map +0 -1
  1879. package/dist/src/agent/skills/hub-pull.js.map +0 -1
  1880. package/dist/src/agent/skills/index.js.map +0 -1
  1881. package/dist/src/agent/skills/install-target.js.map +0 -1
  1882. package/dist/src/agent/skills/installer.js.map +0 -1
  1883. package/dist/src/agent/skills/managed-store.js.map +0 -1
  1884. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +0 -1
  1885. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +0 -1
  1886. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +0 -1
  1887. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +0 -1
  1888. package/dist/src/agent/skills/marketplace/marketplace-category-order.js.map +0 -1
  1889. package/dist/src/agent/skills/marketplace/registry.js.map +0 -1
  1890. package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +0 -1
  1891. package/dist/src/agent/skills/parse-skill-metadata.js.map +0 -1
  1892. package/dist/src/agent/skills/required-env-vars.js.map +0 -1
  1893. package/dist/src/agent/skills/scanner.js.map +0 -1
  1894. package/dist/src/agent/skills/skill-manage-ops.js.map +0 -1
  1895. package/dist/src/agent/skills/skill-manager.js.map +0 -1
  1896. package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +0 -1
  1897. package/dist/src/agent/skills/skill-tool-gating.js.map +0 -1
  1898. package/dist/src/agent/skills/skill-view-path.js.map +0 -1
  1899. package/dist/src/agent/skills/skills-marketplace.js.map +0 -1
  1900. package/dist/src/agent/skills/test-framework.js.map +0 -1
  1901. package/dist/src/agent/skills/watcher.js.map +0 -1
  1902. package/dist/src/agent/skills/workspace-skills-dir.js.map +0 -1
  1903. package/dist/src/agent/source-context/injector.js.map +0 -1
  1904. package/dist/src/agent/source-context/types.js.map +0 -1
  1905. package/dist/src/agent/starter-agents.js.map +0 -1
  1906. package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +0 -1
  1907. package/dist/src/agent/tool-manuals/browser.js.map +0 -1
  1908. package/dist/src/agent/tool-manuals/index.js.map +0 -1
  1909. package/dist/src/agent/tool-manuals/xopc-use.js.map +0 -1
  1910. package/dist/src/agent/tools/apply-patch.js.map +0 -1
  1911. package/dist/src/agent/tools/automation-tool.js.map +0 -1
  1912. package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +0 -1
  1913. package/dist/src/agent/tools/browser/tool/schemas.js.map +0 -1
  1914. package/dist/src/agent/tools/chain-tracker.js.map +0 -1
  1915. package/dist/src/agent/tools/clarify-tool.js.map +0 -1
  1916. package/dist/src/agent/tools/cli-clarify.js.map +0 -1
  1917. package/dist/src/agent/tools/communication.js.map +0 -1
  1918. package/dist/src/agent/tools/composio-tool.js.map +0 -1
  1919. package/dist/src/agent/tools/concurrency.js.map +0 -1
  1920. package/dist/src/agent/tools/create-share-tool.js.map +0 -1
  1921. package/dist/src/agent/tools/curated-memory-tool.js.map +0 -1
  1922. package/dist/src/agent/tools/delegate-tool.js.map +0 -1
  1923. package/dist/src/agent/tools/desktop-pet-tool.js.map +0 -1
  1924. package/dist/src/agent/tools/dreaming-tool.js.map +0 -1
  1925. package/dist/src/agent/tools/edit-diff.js.map +0 -1
  1926. package/dist/src/agent/tools/error-pattern-matcher.js.map +0 -1
  1927. package/dist/src/agent/tools/error-tracker.js.map +0 -1
  1928. package/dist/src/agent/tools/exec-command.js.map +0 -1
  1929. package/dist/src/agent/tools/execute-code-tool.js.map +0 -1
  1930. package/dist/src/agent/tools/executor.js.map +0 -1
  1931. package/dist/src/agent/tools/factory.js.map +0 -1
  1932. package/dist/src/agent/tools/find.js.map +0 -1
  1933. package/dist/src/agent/tools/goal-evidence-recorder.js.map +0 -1
  1934. package/dist/src/agent/tools/goal-tool.js.map +0 -1
  1935. package/dist/src/agent/tools/grep.js.map +0 -1
  1936. package/dist/src/agent/tools/image-generate-tool.js.map +0 -1
  1937. package/dist/src/agent/tools/image-tool.js.map +0 -1
  1938. package/dist/src/agent/tools/list-dir.js.map +0 -1
  1939. package/dist/src/agent/tools/media-read-tool.js.map +0 -1
  1940. package/dist/src/agent/tools/memory-tool.js.map +0 -1
  1941. package/dist/src/agent/tools/metadata.js.map +0 -1
  1942. package/dist/src/agent/tools/read.js.map +0 -1
  1943. package/dist/src/agent/tools/search/http.js.map +0 -1
  1944. package/dist/src/agent/tools/search/providers/bing-api.js.map +0 -1
  1945. package/dist/src/agent/tools/search/providers/bing-html.js.map +0 -1
  1946. package/dist/src/agent/tools/search/providers/brave.js.map +0 -1
  1947. package/dist/src/agent/tools/search/providers/duckduckgo-html.js.map +0 -1
  1948. package/dist/src/agent/tools/search/providers/searxng.js.map +0 -1
  1949. package/dist/src/agent/tools/search/providers/tavily.js.map +0 -1
  1950. package/dist/src/agent/tools/search/region.js.map +0 -1
  1951. package/dist/src/agent/tools/search/registry.js.map +0 -1
  1952. package/dist/src/agent/tools/search/resolve-config.js.map +0 -1
  1953. package/dist/src/agent/tools/send-media.js.map +0 -1
  1954. package/dist/src/agent/tools/session-search-tool.js.map +0 -1
  1955. package/dist/src/agent/tools/session-status-tool.js.map +0 -1
  1956. package/dist/src/agent/tools/skill-install-tool.js.map +0 -1
  1957. package/dist/src/agent/tools/skill-manage-tool.js.map +0 -1
  1958. package/dist/src/agent/tools/skills-tools.js.map +0 -1
  1959. package/dist/src/agent/tools/structured-output.js.map +0 -1
  1960. package/dist/src/agent/tools/todo-tool.js.map +0 -1
  1961. package/dist/src/agent/tools/tool-manual-tool.js.map +0 -1
  1962. package/dist/src/agent/tools/tool-paths.js.map +0 -1
  1963. package/dist/src/agent/tools/truncate.js.map +0 -1
  1964. package/dist/src/agent/tools/tts-tool.js.map +0 -1
  1965. package/dist/src/agent/tools/update-plan-tool.js.map +0 -1
  1966. package/dist/src/agent/tools/url-safety.js.map +0 -1
  1967. package/dist/src/agent/tools/usage-analyzer.js.map +0 -1
  1968. package/dist/src/agent/tools/web-extract.js.map +0 -1
  1969. package/dist/src/agent/tools/web.js.map +0 -1
  1970. package/dist/src/agent/tools/workflow-tool.js.map +0 -1
  1971. package/dist/src/agent/tools/write.js.map +0 -1
  1972. package/dist/src/agent/tools/xopc-use-tool.js.map +0 -1
  1973. package/dist/src/agent/transcript/google-api.js.map +0 -1
  1974. package/dist/src/agent/transcript/model-selection.js.map +0 -1
  1975. package/dist/src/agent/transcript/provider-capabilities.js.map +0 -1
  1976. package/dist/src/agent/transcript/session-transcript-repair.js.map +0 -1
  1977. package/dist/src/agent/transcript/strip-tool-messages.js.map +0 -1
  1978. package/dist/src/agent/transcript/thinking-types.js.map +0 -1
  1979. package/dist/src/agent/transcript/thinking.js.map +0 -1
  1980. package/dist/src/agent/transcript/tool-call-id.js.map +0 -1
  1981. package/dist/src/agent/transcript/transcript-hygiene.js.map +0 -1
  1982. package/dist/src/agent/transcript/transcript-policy.js.map +0 -1
  1983. package/dist/src/agent/workflow/agent-progress.js.map +0 -1
  1984. package/dist/src/agent/workflow/builtins/index.js.map +0 -1
  1985. package/dist/src/agent/workflow/catalog.js.map +0 -1
  1986. package/dist/src/agent/workflow/progress-broker.js.map +0 -1
  1987. package/dist/src/agent/workflow/snapshot-empty.js.map +0 -1
  1988. package/dist/src/agent/workflow/snapshot.js.map +0 -1
  1989. package/dist/src/agent/workflow/step-labels.js.map +0 -1
  1990. package/dist/src/agent/workflow/structured-output-tool.js.map +0 -1
  1991. package/dist/src/agent/workflow/subagent-runner.js.map +0 -1
  1992. package/dist/src/agent/workflow/workflow-child-tools.js.map +0 -1
  1993. package/dist/src/agent/workspace-runtime/registry.js.map +0 -1
  1994. package/dist/src/agent-manifest/index.js.map +0 -1
  1995. package/dist/src/agent-manifest/preset-chain.js.map +0 -1
  1996. package/dist/src/agent-manifest/prompt.js.map +0 -1
  1997. package/dist/src/agent-manifest/resolver.js.map +0 -1
  1998. package/dist/src/agent-manifest/schema.js.map +0 -1
  1999. package/dist/src/agent-manifest/validator.js.map +0 -1
  2000. package/dist/src/agent-runtime/boundary-guard.js.map +0 -1
  2001. package/dist/src/agent-runtime/memory-runtime.js.map +0 -1
  2002. package/dist/src/agent-runtime/model-router.js.map +0 -1
  2003. package/dist/src/agent-runtime/run-trace.js.map +0 -1
  2004. package/dist/src/agent-runtime/runtime-profile.js.map +0 -1
  2005. package/dist/src/agent-runtime/tool-registry.js.map +0 -1
  2006. package/dist/src/agent-runtime/workflow-runtime.js.map +0 -1
  2007. package/dist/src/ai-assist/text-assist.js.map +0 -1
  2008. package/dist/src/auth/credentials.js.map +0 -1
  2009. package/dist/src/auth/index.js.map +0 -1
  2010. package/dist/src/auth/oauth/anthropic.js.map +0 -1
  2011. package/dist/src/auth/oauth/github-copilot.js.map +0 -1
  2012. package/dist/src/auth/oauth/google-oauth/google-antigravity.js.map +0 -1
  2013. package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js.map +0 -1
  2014. package/dist/src/auth/oauth/google-oauth/oauth-page.js.map +0 -1
  2015. package/dist/src/auth/oauth/google-oauth/pkce.js.map +0 -1
  2016. package/dist/src/auth/oauth/kimi-coding.js.map +0 -1
  2017. package/dist/src/auth/oauth/minimax-cn.js.map +0 -1
  2018. package/dist/src/auth/oauth/minimax.js.map +0 -1
  2019. package/dist/src/auth/oauth/openai-codex.js.map +0 -1
  2020. package/dist/src/auth/oauth/pkce.js.map +0 -1
  2021. package/dist/src/auth/profiles/oauth.js.map +0 -1
  2022. package/dist/src/auth/profiles/order.js.map +0 -1
  2023. package/dist/src/auth/profiles/profiles.js.map +0 -1
  2024. package/dist/src/auth/profiles/store.js.map +0 -1
  2025. package/dist/src/auth/sync-provider-auth.js.map +0 -1
  2026. package/dist/src/automations/api/routes.js.map +0 -1
  2027. package/dist/src/automations/domain/schedule.js.map +0 -1
  2028. package/dist/src/automations/domain/validation.js.map +0 -1
  2029. package/dist/src/automations/draft/automation-draft-prompt.js.map +0 -1
  2030. package/dist/src/automations/draft/automation-draft-service.js.map +0 -1
  2031. package/dist/src/automations/draft/automation-draft-validator.js.map +0 -1
  2032. package/dist/src/automations/product-events.js.map +0 -1
  2033. package/dist/src/automations/service/action-executor.js.map +0 -1
  2034. package/dist/src/automations/service/automation-service.js.map +0 -1
  2035. package/dist/src/automations/storage/automation-repository.js.map +0 -1
  2036. package/dist/src/automations/storage/automation-run-repository.js.map +0 -1
  2037. package/dist/src/browser/actions/extension-registry-bridge.js.map +0 -1
  2038. package/dist/src/browser/actions/registry.js.map +0 -1
  2039. package/dist/src/browser/backend-from-config.js.map +0 -1
  2040. package/dist/src/browser/browser-command-timeout.js.map +0 -1
  2041. package/dist/src/browser/cache-dir-policy.js.map +0 -1
  2042. package/dist/src/browser/cdp-local-launcher.js.map +0 -1
  2043. package/dist/src/browser/cdp-supervisor.js.map +0 -1
  2044. package/dist/src/browser/free-port.js.map +0 -1
  2045. package/dist/src/browser/humanize.js.map +0 -1
  2046. package/dist/src/browser/install-lock.js.map +0 -1
  2047. package/dist/src/browser/manager.js.map +0 -1
  2048. package/dist/src/browser/pipeline/output.js.map +0 -1
  2049. package/dist/src/browser/pipeline/runner.js.map +0 -1
  2050. package/dist/src/browser/pipeline/schema.js.map +0 -1
  2051. package/dist/src/browser/pipeline/source.js.map +0 -1
  2052. package/dist/src/browser/pipeline/template.js.map +0 -1
  2053. package/dist/src/browser/providers/browser-ext-install.js.map +0 -1
  2054. package/dist/src/browser/providers/browser-use.js.map +0 -1
  2055. package/dist/src/browser/providers/browserbase.js.map +0 -1
  2056. package/dist/src/browser/providers/cloakbrowser.js.map +0 -1
  2057. package/dist/src/browser/providers/extension-ws-acquire.js.map +0 -1
  2058. package/dist/src/browser/providers/extension.js.map +0 -1
  2059. package/dist/src/browser/providers/playwright-doctor.js.map +0 -1
  2060. package/dist/src/browser/providers/playwright-install.js.map +0 -1
  2061. package/dist/src/browser/readiness.js.map +0 -1
  2062. package/dist/src/browser/schemas.js.map +0 -1
  2063. package/dist/src/browser/session-lifecycle.js.map +0 -1
  2064. package/dist/src/browser/snapshot-helpers.js.map +0 -1
  2065. package/dist/src/browser/stealth.js.map +0 -1
  2066. package/dist/src/browser/url-policy.js.map +0 -1
  2067. package/dist/src/capabilities/store-connector.js.map +0 -1
  2068. package/dist/src/channels/attachments/attachment-classifiers.js.map +0 -1
  2069. package/dist/src/channels/attachments/inbound-persist.js.map +0 -1
  2070. package/dist/src/channels/attachments/inbound-types.js.map +0 -1
  2071. package/dist/src/channels/attachments/outbound-tts-persist.js.map +0 -1
  2072. package/dist/src/channels/attachments/voice-stt-webchat.js.map +0 -1
  2073. package/dist/src/channels/catalog/channel-catalog-service.js.map +0 -1
  2074. package/dist/src/channels/config-helpers.js.map +0 -1
  2075. package/dist/src/channels/envelope-timestamp.js.map +0 -1
  2076. package/dist/src/channels/exec-approval-runtime.js.map +0 -1
  2077. package/dist/src/channels/health-monitor.js.map +0 -1
  2078. package/dist/src/channels/heartbeat-scheduler.js.map +0 -1
  2079. package/dist/src/channels/internal-outbound.js.map +0 -1
  2080. package/dist/src/channels/lifecycle-supervisor.js.map +0 -1
  2081. package/dist/src/channels/manager.js.map +0 -1
  2082. package/dist/src/channels/media.js.map +0 -1
  2083. package/dist/src/channels/outbound/deliver.js.map +0 -1
  2084. package/dist/src/channels/outbound/normalize.js.map +0 -1
  2085. package/dist/src/channels/outbound/persist-store.js.map +0 -1
  2086. package/dist/src/channels/outbound/queue.js.map +0 -1
  2087. package/dist/src/channels/outbound-sender.js.map +0 -1
  2088. package/dist/src/channels/pairing/allow-from-file.js.map +0 -1
  2089. package/dist/src/channels/pairing/approve-cli.js.map +0 -1
  2090. package/dist/src/channels/pairing/pairing-challenge.js.map +0 -1
  2091. package/dist/src/channels/pairing/pairing-constants.js.map +0 -1
  2092. package/dist/src/channels/pairing/pairing-events.js.map +0 -1
  2093. package/dist/src/channels/pairing/pairing-messages.js.map +0 -1
  2094. package/dist/src/channels/pairing/pairing-service.js.map +0 -1
  2095. package/dist/src/channels/pairing/pairing-store-adapter.js.map +0 -1
  2096. package/dist/src/channels/pairing/pairing-store.js.map +0 -1
  2097. package/dist/src/channels/pairing/paths.js.map +0 -1
  2098. package/dist/src/channels/pairing/preseed-allow-from.js.map +0 -1
  2099. package/dist/src/channels/pipeline.js.map +0 -1
  2100. package/dist/src/channels/plugin-registry.js.map +0 -1
  2101. package/dist/src/channels/plugins/registry.js.map +0 -1
  2102. package/dist/src/channels/restart-policy.js.map +0 -1
  2103. package/dist/src/channels/security-helpers.js.map +0 -1
  2104. package/dist/src/channels/security.js.map +0 -1
  2105. package/dist/src/channels/setup-wizard-discovery.js.map +0 -1
  2106. package/dist/src/chat-commands/agent-edit.js.map +0 -1
  2107. package/dist/src/chat-commands/builtins/config.js.map +0 -1
  2108. package/dist/src/chat-commands/builtins/context.js.map +0 -1
  2109. package/dist/src/chat-commands/builtins/goal.js.map +0 -1
  2110. package/dist/src/chat-commands/builtins/model.js.map +0 -1
  2111. package/dist/src/chat-commands/builtins/review.js.map +0 -1
  2112. package/dist/src/chat-commands/builtins/session.js.map +0 -1
  2113. package/dist/src/chat-commands/builtins/skill.js.map +0 -1
  2114. package/dist/src/chat-commands/builtins/subgoal.js.map +0 -1
  2115. package/dist/src/chat-commands/builtins/system.js.map +0 -1
  2116. package/dist/src/chat-commands/builtins/thinking.js.map +0 -1
  2117. package/dist/src/chat-commands/builtins/tts.js.map +0 -1
  2118. package/dist/src/chat-commands/builtins/workflow.js.map +0 -1
  2119. package/dist/src/chat-commands/command-parse.js.map +0 -1
  2120. package/dist/src/chat-commands/config-paths.js.map +0 -1
  2121. package/dist/src/chat-commands/config-value.js.map +0 -1
  2122. package/dist/src/chat-commands/context.js.map +0 -1
  2123. package/dist/src/chat-commands/format-output.js.map +0 -1
  2124. package/dist/src/chat-commands/index.js.map +0 -1
  2125. package/dist/src/chat-commands/processor.js.map +0 -1
  2126. package/dist/src/chat-commands/registry.js.map +0 -1
  2127. package/dist/src/chat-commands/session-key.js.map +0 -1
  2128. package/dist/src/cli/argv-invocation.js.map +0 -1
  2129. package/dist/src/cli/argv.js.map +0 -1
  2130. package/dist/src/cli/bin.js.map +0 -1
  2131. package/dist/src/cli/cli-log-level-preset.js.map +0 -1
  2132. package/dist/src/cli/command-catalog.js.map +0 -1
  2133. package/dist/src/cli/command-loaders.js.map +0 -1
  2134. package/dist/src/cli/command-manifest.js.map +0 -1
  2135. package/dist/src/cli/command-path-matches.js.map +0 -1
  2136. package/dist/src/cli/command-path-policy.js.map +0 -1
  2137. package/dist/src/cli/command-startup-policy.js.map +0 -1
  2138. package/dist/src/cli/commands/agent/interactive.js.map +0 -1
  2139. package/dist/src/cli/commands/agent/sessions.js.map +0 -1
  2140. package/dist/src/cli/commands/agent/stream-renderer.js.map +0 -1
  2141. package/dist/src/cli/commands/agent.js.map +0 -1
  2142. package/dist/src/cli/commands/agents.js.map +0 -1
  2143. package/dist/src/cli/commands/auth.js.map +0 -1
  2144. package/dist/src/cli/commands/browser-cli-helpers.js.map +0 -1
  2145. package/dist/src/cli/commands/browser.js.map +0 -1
  2146. package/dist/src/cli/commands/channels.js.map +0 -1
  2147. package/dist/src/cli/commands/config.js.map +0 -1
  2148. package/dist/src/cli/commands/connectors.js.map +0 -1
  2149. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +0 -1
  2150. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +0 -1
  2151. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +0 -1
  2152. package/dist/src/cli/commands/doctor/checks/config-health.js.map +0 -1
  2153. package/dist/src/cli/commands/doctor/checks/database-schema.js.map +0 -1
  2154. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +0 -1
  2155. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +0 -1
  2156. package/dist/src/cli/commands/doctor/checks/migrations.js.map +0 -1
  2157. package/dist/src/cli/commands/doctor/checks/node-version.js.map +0 -1
  2158. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +0 -1
  2159. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +0 -1
  2160. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +0 -1
  2161. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +0 -1
  2162. package/dist/src/cli/commands/doctor/checks/version-check.js.map +0 -1
  2163. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +0 -1
  2164. package/dist/src/cli/commands/doctor/flow.js.map +0 -1
  2165. package/dist/src/cli/commands/doctor/format.js.map +0 -1
  2166. package/dist/src/cli/commands/doctor/index.js.map +0 -1
  2167. package/dist/src/cli/commands/extension-create.js.map +0 -1
  2168. package/dist/src/cli/commands/extension-dev.js.map +0 -1
  2169. package/dist/src/cli/commands/extension-marketplace.js.map +0 -1
  2170. package/dist/src/cli/commands/extension-pack.js.map +0 -1
  2171. package/dist/src/cli/commands/extension.js.map +0 -1
  2172. package/dist/src/cli/commands/gateway/call.js.map +0 -1
  2173. package/dist/src/cli/commands/gateway/health.js.map +0 -1
  2174. package/dist/src/cli/commands/gateway/lifecycle-core.js.map +0 -1
  2175. package/dist/src/cli/commands/gateway/lifecycle.js.map +0 -1
  2176. package/dist/src/cli/commands/gateway/logs.js.map +0 -1
  2177. package/dist/src/cli/commands/gateway/probe.js.map +0 -1
  2178. package/dist/src/cli/commands/gateway/restart-health.js.map +0 -1
  2179. package/dist/src/cli/commands/gateway/restart.js.map +0 -1
  2180. package/dist/src/cli/commands/gateway/run-foreground.js.map +0 -1
  2181. package/dist/src/cli/commands/gateway/service.js.map +0 -1
  2182. package/dist/src/cli/commands/gateway/shared.js.map +0 -1
  2183. package/dist/src/cli/commands/gateway/status.js.map +0 -1
  2184. package/dist/src/cli/commands/gateway/stop.js.map +0 -1
  2185. package/dist/src/cli/commands/gateway/subcommands.js.map +0 -1
  2186. package/dist/src/cli/commands/gateway/token.js.map +0 -1
  2187. package/dist/src/cli/commands/gateway-ssh-tunnel.js.map +0 -1
  2188. package/dist/src/cli/commands/gateway.js.map +0 -1
  2189. package/dist/src/cli/commands/goal.js.map +0 -1
  2190. package/dist/src/cli/commands/image.js.map +0 -1
  2191. package/dist/src/cli/commands/init.js.map +0 -1
  2192. package/dist/src/cli/commands/logs.js.map +0 -1
  2193. package/dist/src/cli/commands/models.js.map +0 -1
  2194. package/dist/src/cli/commands/onboard/channels/index.js.map +0 -1
  2195. package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js.map +0 -1
  2196. package/dist/src/cli/commands/onboard/channels/registry.js.map +0 -1
  2197. package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js.map +0 -1
  2198. package/dist/src/cli/commands/onboard/gateway.js.map +0 -1
  2199. package/dist/src/cli/commands/onboard/model.js.map +0 -1
  2200. package/dist/src/cli/commands/onboard.js.map +0 -1
  2201. package/dist/src/cli/commands/profile.js.map +0 -1
  2202. package/dist/src/cli/commands/project.js.map +0 -1
  2203. package/dist/src/cli/commands/providers.js.map +0 -1
  2204. package/dist/src/cli/commands/resume.js.map +0 -1
  2205. package/dist/src/cli/commands/search.js.map +0 -1
  2206. package/dist/src/cli/commands/session/actions.js.map +0 -1
  2207. package/dist/src/cli/commands/session/utils.js.map +0 -1
  2208. package/dist/src/cli/commands/session.js.map +0 -1
  2209. package/dist/src/cli/commands/setup-shared/output.js.map +0 -1
  2210. package/dist/src/cli/commands/setup-shared/prompts.js.map +0 -1
  2211. package/dist/src/cli/commands/setup-shared/runner.js.map +0 -1
  2212. package/dist/src/cli/commands/setup-shared/types.js.map +0 -1
  2213. package/dist/src/cli/commands/setup.js.map +0 -1
  2214. package/dist/src/cli/commands/skills-test.js.map +0 -1
  2215. package/dist/src/cli/commands/skills.js.map +0 -1
  2216. package/dist/src/cli/commands/tailscale.js.map +0 -1
  2217. package/dist/src/cli/commands/tui-runner.js.map +0 -1
  2218. package/dist/src/cli/commands/tui.js.map +0 -1
  2219. package/dist/src/cli/commands/tunnel.js.map +0 -1
  2220. package/dist/src/cli/commands/update.js.map +0 -1
  2221. package/dist/src/cli/commands/voice.js.map +0 -1
  2222. package/dist/src/cli/context.js.map +0 -1
  2223. package/dist/src/cli/extension-cli-register.js.map +0 -1
  2224. package/dist/src/cli/gateway-run-argv.js.map +0 -1
  2225. package/dist/src/cli/gateway-run-fast-path.js.map +0 -1
  2226. package/dist/src/cli/index.js.map +0 -1
  2227. package/dist/src/cli/registry.js.map +0 -1
  2228. package/dist/src/cli/templates.js.map +0 -1
  2229. package/dist/src/cli/utils/colors.js.map +0 -1
  2230. package/dist/src/cli/utils/gateway-client-options.js.map +0 -1
  2231. package/dist/src/cli/utils/gateway-client.js.map +0 -1
  2232. package/dist/src/cli/utils/init-workspace-core.js.map +0 -1
  2233. package/dist/src/cli/utils/init-workspace.js.map +0 -1
  2234. package/dist/src/cli/utils/oauth-login.js.map +0 -1
  2235. package/dist/src/cli/utils/oauth-providers.js.map +0 -1
  2236. package/dist/src/cli/utils/session.js.map +0 -1
  2237. package/dist/src/commands/agents.config.js.map +0 -1
  2238. package/dist/src/config/agent-profile.js.map +0 -1
  2239. package/dist/src/config/agent-typed-models.js.map +0 -1
  2240. package/dist/src/config/commands.flags.js.map +0 -1
  2241. package/dist/src/config/default-model.js.map +0 -1
  2242. package/dist/src/config/diff.js.map +0 -1
  2243. package/dist/src/config/gateway-bind.js.map +0 -1
  2244. package/dist/src/config/index.js.map +0 -1
  2245. package/dist/src/config/loader.js.map +0 -1
  2246. package/dist/src/config/mcp-config-normalize.js.map +0 -1
  2247. package/dist/src/config/model-input.js.map +0 -1
  2248. package/dist/src/config/models-json.js.map +0 -1
  2249. package/dist/src/config/paths-state.js.map +0 -1
  2250. package/dist/src/config/paths.js.map +0 -1
  2251. package/dist/src/config/profile.js.map +0 -1
  2252. package/dist/src/config/public-url.js.map +0 -1
  2253. package/dist/src/config/reload.js.map +0 -1
  2254. package/dist/src/config/resolve-config-value.js.map +0 -1
  2255. package/dist/src/config/rules.js.map +0 -1
  2256. package/dist/src/config/runtime-overrides.js.map +0 -1
  2257. package/dist/src/config/schema.js.map +0 -1
  2258. package/dist/src/config/validate-channel-configs.js.map +0 -1
  2259. package/dist/src/config/voice.js.map +0 -1
  2260. package/dist/src/config/web-patch.js.map +0 -1
  2261. package/dist/src/config/workspace-defaults.js.map +0 -1
  2262. package/dist/src/config/workspace-dirs.js.map +0 -1
  2263. package/dist/src/config/workspace-path-helpers.js.map +0 -1
  2264. package/dist/src/config/workspace-path.js.map +0 -1
  2265. package/dist/src/connectors/approval.js.map +0 -1
  2266. package/dist/src/connectors/auth-provider-registry.js.map +0 -1
  2267. package/dist/src/connectors/builtin-catalog.js.map +0 -1
  2268. package/dist/src/connectors/catalog.js.map +0 -1
  2269. package/dist/src/connectors/composio-catalog.js.map +0 -1
  2270. package/dist/src/connectors/composio-logo.js.map +0 -1
  2271. package/dist/src/connectors/composio-sessions.js.map +0 -1
  2272. package/dist/src/connectors/composio-triggers.js.map +0 -1
  2273. package/dist/src/connectors/composio.js.map +0 -1
  2274. package/dist/src/connectors/connector-memory-sync.js.map +0 -1
  2275. package/dist/src/connectors/health.js.map +0 -1
  2276. package/dist/src/connectors/install.js.map +0 -1
  2277. package/dist/src/connectors/instances.js.map +0 -1
  2278. package/dist/src/connectors/integration-strategy.js.map +0 -1
  2279. package/dist/src/connectors/lifecycle.js.map +0 -1
  2280. package/dist/src/connectors/materialize.js.map +0 -1
  2281. package/dist/src/connectors/policy.js.map +0 -1
  2282. package/dist/src/connectors/providers.js.map +0 -1
  2283. package/dist/src/connectors/registries/modelscope.js.map +0 -1
  2284. package/dist/src/connectors/registries/official-mcp.js.map +0 -1
  2285. package/dist/src/connectors/registries/search.js.map +0 -1
  2286. package/dist/src/connectors/registries/smithery.js.map +0 -1
  2287. package/dist/src/connectors/runtime-adapter-registry.js.map +0 -1
  2288. package/dist/src/connectors/secret-store.js.map +0 -1
  2289. package/dist/src/connectors/setup-secrets.js.map +0 -1
  2290. package/dist/src/connectors/supervisor.js.map +0 -1
  2291. package/dist/src/connectors/usage.js.map +0 -1
  2292. package/dist/src/connectors/workflow-preflight.js.map +0 -1
  2293. package/dist/src/daemon/constants.js.map +0 -1
  2294. package/dist/src/daemon/install-plan.js.map +0 -1
  2295. package/dist/src/daemon/launchd.js.map +0 -1
  2296. package/dist/src/daemon/schtasks.js.map +0 -1
  2297. package/dist/src/daemon/service-audit.js.map +0 -1
  2298. package/dist/src/daemon/service.js.map +0 -1
  2299. package/dist/src/daemon/systemd.js.map +0 -1
  2300. package/dist/src/document-understanding/extract.js.map +0 -1
  2301. package/dist/src/errors/index.js.map +0 -1
  2302. package/dist/src/extensions/activation-context.js.map +0 -1
  2303. package/dist/src/extensions/activation-planner.js.map +0 -1
  2304. package/dist/src/extensions/api.js.map +0 -1
  2305. package/dist/src/extensions/bundle-mcp.js.map +0 -1
  2306. package/dist/src/extensions/bundled-extension-activation.js.map +0 -1
  2307. package/dist/src/extensions/diagnostics.js.map +0 -1
  2308. package/dist/src/extensions/discover-extensions.js.map +0 -1
  2309. package/dist/src/extensions/engine-check.js.map +0 -1
  2310. package/dist/src/extensions/extension-metadata-snapshot.js.map +0 -1
  2311. package/dist/src/extensions/extension-registry-impl.js.map +0 -1
  2312. package/dist/src/extensions/health.js.map +0 -1
  2313. package/dist/src/extensions/hooks.js.map +0 -1
  2314. package/dist/src/extensions/index.js.map +0 -1
  2315. package/dist/src/extensions/install-transaction.js.map +0 -1
  2316. package/dist/src/extensions/install.js.map +0 -1
  2317. package/dist/src/extensions/loader.js.map +0 -1
  2318. package/dist/src/extensions/lockfile.js.map +0 -1
  2319. package/dist/src/extensions/manifest-registry.js.map +0 -1
  2320. package/dist/src/extensions/marketplace.js.map +0 -1
  2321. package/dist/src/extensions/media-provider-contracts.js.map +0 -1
  2322. package/dist/src/extensions/normalize-manifest.js.map +0 -1
  2323. package/dist/src/extensions/onboard-helpers.js.map +0 -1
  2324. package/dist/src/extensions/package-contract.js.map +0 -1
  2325. package/dist/src/extensions/sdk/channel-entry.js.map +0 -1
  2326. package/dist/src/extensions/sdk/channel-helpers.js.map +0 -1
  2327. package/dist/src/extensions/sdk/index.js.map +0 -1
  2328. package/dist/src/extensions/sdk/lazy.js.map +0 -1
  2329. package/dist/src/extensions/sdk/testing.js.map +0 -1
  2330. package/dist/src/extensions/security.js.map +0 -1
  2331. package/dist/src/extensions/slots.js.map +0 -1
  2332. package/dist/src/extensions/speech-provider-contracts.js.map +0 -1
  2333. package/dist/src/extensions/store-zip-limits.js.map +0 -1
  2334. package/dist/src/extensions/typed-event-bus.js.map +0 -1
  2335. package/dist/src/extensions/types/hooks.js.map +0 -1
  2336. package/dist/src/extensions/types/providers.js.map +0 -1
  2337. package/dist/src/extensions/update.js.map +0 -1
  2338. package/dist/src/extensions/when-context.js.map +0 -1
  2339. package/dist/src/extensions/when-expression.js.map +0 -1
  2340. package/dist/src/gateway/agent-builtin-tools.js.map +0 -1
  2341. package/dist/src/gateway/agent-run-relay.js.map +0 -1
  2342. package/dist/src/gateway/agents-admin.js.map +0 -1
  2343. package/dist/src/gateway/auth.js.map +0 -1
  2344. package/dist/src/gateway/capability-presets-admin.js.map +0 -1
  2345. package/dist/src/gateway/chat-limits.js.map +0 -1
  2346. package/dist/src/gateway/chat-stream/mapper.js.map +0 -1
  2347. package/dist/src/gateway/clarify-bridge.js.map +0 -1
  2348. package/dist/src/gateway/clarify-runtime.js.map +0 -1
  2349. package/dist/src/gateway/client-ip.js.map +0 -1
  2350. package/dist/src/gateway/config-tools-web.js.map +0 -1
  2351. package/dist/src/gateway/credential.js.map +0 -1
  2352. package/dist/src/gateway/discovery/mdns.js.map +0 -1
  2353. package/dist/src/gateway/dreaming-automation-reconciler.js.map +0 -1
  2354. package/dist/src/gateway/ensure-network-cors.js.map +0 -1
  2355. package/dist/src/gateway/file-path-classifier.js.map +0 -1
  2356. package/dist/src/gateway/file-reference-registry.js.map +0 -1
  2357. package/dist/src/gateway/global-defaults-admin.js.map +0 -1
  2358. package/dist/src/gateway/heartbeat/service.js.map +0 -1
  2359. package/dist/src/gateway/hono/app.js.map +0 -1
  2360. package/dist/src/gateway/hono/lib/agent-model.js.map +0 -1
  2361. package/dist/src/gateway/hono/lib/config-payload.js.map +0 -1
  2362. package/dist/src/gateway/hono/lib/extension-assets.js.map +0 -1
  2363. package/dist/src/gateway/hono/lib/extension-store.js.map +0 -1
  2364. package/dist/src/gateway/hono/lib/mask-secret-length.js.map +0 -1
  2365. package/dist/src/gateway/hono/lib/route-logger.js.map +0 -1
  2366. package/dist/src/gateway/hono/lib/safe-providers-config.js.map +0 -1
  2367. package/dist/src/gateway/hono/lib/safe-voice-config.js.map +0 -1
  2368. package/dist/src/gateway/hono/lib/startup-unavailable.js.map +0 -1
  2369. package/dist/src/gateway/hono/lib/static-ui.js.map +0 -1
  2370. package/dist/src/gateway/hono/middleware/auth.js.map +0 -1
  2371. package/dist/src/gateway/hono/middleware/log-context.js.map +0 -1
  2372. package/dist/src/gateway/hono/middleware/logger.js.map +0 -1
  2373. package/dist/src/gateway/hono/middleware/route-errors.js.map +0 -1
  2374. package/dist/src/gateway/hono/middleware/scopes.js.map +0 -1
  2375. package/dist/src/gateway/hono/middleware/strict-rate-limit.js.map +0 -1
  2376. package/dist/src/gateway/hono/oauth-async.js.map +0 -1
  2377. package/dist/src/gateway/hono/oauth.js.map +0 -1
  2378. package/dist/src/gateway/hono/routes/activity.js.map +0 -1
  2379. package/dist/src/gateway/hono/routes/agent-stream.js.map +0 -1
  2380. package/dist/src/gateway/hono/routes/agents.js.map +0 -1
  2381. package/dist/src/gateway/hono/routes/ai-assist.js.map +0 -1
  2382. package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +0 -1
  2383. package/dist/src/gateway/hono/routes/browser-install.js.map +0 -1
  2384. package/dist/src/gateway/hono/routes/browser.js.map +0 -1
  2385. package/dist/src/gateway/hono/routes/capabilities.js.map +0 -1
  2386. package/dist/src/gateway/hono/routes/capability-presets.js.map +0 -1
  2387. package/dist/src/gateway/hono/routes/channels.js.map +0 -1
  2388. package/dist/src/gateway/hono/routes/commands-skills.js.map +0 -1
  2389. package/dist/src/gateway/hono/routes/config-patch/agents.js.map +0 -1
  2390. package/dist/src/gateway/hono/routes/config-patch/channels.js.map +0 -1
  2391. package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +0 -1
  2392. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +0 -1
  2393. package/dist/src/gateway/hono/routes/config-patch/result.js.map +0 -1
  2394. package/dist/src/gateway/hono/routes/config.js.map +0 -1
  2395. package/dist/src/gateway/hono/routes/connectors.js.map +0 -1
  2396. package/dist/src/gateway/hono/routes/doctor.js.map +0 -1
  2397. package/dist/src/gateway/hono/routes/dreaming.js.map +0 -1
  2398. package/dist/src/gateway/hono/routes/exposure.js.map +0 -1
  2399. package/dist/src/gateway/hono/routes/extension-gateway.js.map +0 -1
  2400. package/dist/src/gateway/hono/routes/global-defaults.js.map +0 -1
  2401. package/dist/src/gateway/hono/routes/goals.js.map +0 -1
  2402. package/dist/src/gateway/hono/routes/home.js.map +0 -1
  2403. package/dist/src/gateway/hono/routes/host-fs.js.map +0 -1
  2404. package/dist/src/gateway/hono/routes/index.js.map +0 -1
  2405. package/dist/src/gateway/hono/routes/lazy-bundles.js.map +0 -1
  2406. package/dist/src/gateway/hono/routes/lazy-fallback.js.map +0 -1
  2407. package/dist/src/gateway/hono/routes/local-apps.js.map +0 -1
  2408. package/dist/src/gateway/hono/routes/logs.js.map +0 -1
  2409. package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
  2410. package/dist/src/gateway/hono/routes/media.js.map +0 -1
  2411. package/dist/src/gateway/hono/routes/memory.js.map +0 -1
  2412. package/dist/src/gateway/hono/routes/migrations.js.map +0 -1
  2413. package/dist/src/gateway/hono/routes/mobile.js.map +0 -1
  2414. package/dist/src/gateway/hono/routes/models.js.map +0 -1
  2415. package/dist/src/gateway/hono/routes/notes.js.map +0 -1
  2416. package/dist/src/gateway/hono/routes/projects.js.map +0 -1
  2417. package/dist/src/gateway/hono/routes/public-gateway.js.map +0 -1
  2418. package/dist/src/gateway/hono/routes/search.js.map +0 -1
  2419. package/dist/src/gateway/hono/routes/sessions.js.map +0 -1
  2420. package/dist/src/gateway/hono/routes/shares.js.map +0 -1
  2421. package/dist/src/gateway/hono/routes/site-shares.js.map +0 -1
  2422. package/dist/src/gateway/hono/routes/status.js.map +0 -1
  2423. package/dist/src/gateway/hono/routes/tui.js.map +0 -1
  2424. package/dist/src/gateway/hono/routes/tunnel.js.map +0 -1
  2425. package/dist/src/gateway/hono/routes/update.js.map +0 -1
  2426. package/dist/src/gateway/hono/routes/voice.js.map +0 -1
  2427. package/dist/src/gateway/hono/routes/work-discovery.js.map +0 -1
  2428. package/dist/src/gateway/hono/routes/workflows.js.map +0 -1
  2429. package/dist/src/gateway/hono/routes/workspace.js.map +0 -1
  2430. package/dist/src/gateway/hono/routes/you.js.map +0 -1
  2431. package/dist/src/gateway/hono/sse-json.js.map +0 -1
  2432. package/dist/src/gateway/hono/sse.js.map +0 -1
  2433. package/dist/src/gateway/host.js.map +0 -1
  2434. package/dist/src/gateway/image-capabilities.js.map +0 -1
  2435. package/dist/src/gateway/listen.js.map +0 -1
  2436. package/dist/src/gateway/lock.js.map +0 -1
  2437. package/dist/src/gateway/ports.js.map +0 -1
  2438. package/dist/src/gateway/protocol.js.map +0 -1
  2439. package/dist/src/gateway/public-url.js.map +0 -1
  2440. package/dist/src/gateway/rate-limit/auth-policy.js.map +0 -1
  2441. package/dist/src/gateway/rate-limit/buckets.js.map +0 -1
  2442. package/dist/src/gateway/rate-limit/env-flags.js.map +0 -1
  2443. package/dist/src/gateway/resolve-channel-connect-defer.js.map +0 -1
  2444. package/dist/src/gateway/resolve-webchat-session-key.js.map +0 -1
  2445. package/dist/src/gateway/respawn.js.map +0 -1
  2446. package/dist/src/gateway/run-loop.js.map +0 -1
  2447. package/dist/src/gateway/runtime-config.js.map +0 -1
  2448. package/dist/src/gateway/security/audit.js.map +0 -1
  2449. package/dist/src/gateway/security/csp.js.map +0 -1
  2450. package/dist/src/gateway/security/dangerous-tools.js.map +0 -1
  2451. package/dist/src/gateway/security/external-content.js.map +0 -1
  2452. package/dist/src/gateway/security/known-weak-secrets.js.map +0 -1
  2453. package/dist/src/gateway/security/loopback.js.map +0 -1
  2454. package/dist/src/gateway/security/operator-scopes.js.map +0 -1
  2455. package/dist/src/gateway/security/origin-check.js.map +0 -1
  2456. package/dist/src/gateway/security/preauth-connection-budget.js.map +0 -1
  2457. package/dist/src/gateway/security/secret-equal.js.map +0 -1
  2458. package/dist/src/gateway/server-tailscale.js.map +0 -1
  2459. package/dist/src/gateway/server.js.map +0 -1
  2460. package/dist/src/gateway/service/agent-runner.js.map +0 -1
  2461. package/dist/src/gateway/service/config-coordinator.js.map +0 -1
  2462. package/dist/src/gateway/service/marketplace-service.js.map +0 -1
  2463. package/dist/src/gateway/service/run-gateway-agent.js.map +0 -1
  2464. package/dist/src/gateway/service/session-chat-ids.js.map +0 -1
  2465. package/dist/src/gateway/service/sessions-api.js.map +0 -1
  2466. package/dist/src/gateway/service/sse-hub.js.map +0 -1
  2467. package/dist/src/gateway/service.js.map +0 -1
  2468. package/dist/src/gateway/session-reset-service.js.map +0 -1
  2469. package/dist/src/gateway/startup-readiness.js.map +0 -1
  2470. package/dist/src/gateway/startup-trace.js.map +0 -1
  2471. package/dist/src/gateway/tailscale-auth.js.map +0 -1
  2472. package/dist/src/gateway/tailscale-lifecycle.js.map +0 -1
  2473. package/dist/src/gateway/tls-server.js.map +0 -1
  2474. package/dist/src/gateway/trusted-proxy.js.map +0 -1
  2475. package/dist/src/gateway/user-turn-input.js.map +0 -1
  2476. package/dist/src/gateway/workspace-editor-path.js.map +0 -1
  2477. package/dist/src/gateway/workspace-file-search.js.map +0 -1
  2478. package/dist/src/gateway/workspace-fs-file-list.js.map +0 -1
  2479. package/dist/src/gateway/workspace-heartbeat-path.js.map +0 -1
  2480. package/dist/src/gateway/workspace-ripgrep.js.map +0 -1
  2481. package/dist/src/gateway/ws-security.js.map +0 -1
  2482. package/dist/src/generated/bundled-image-generation-providers.js.map +0 -1
  2483. package/dist/src/goals/goal-contract-draft.js.map +0 -1
  2484. package/dist/src/goals/goal-evidence-review.js.map +0 -1
  2485. package/dist/src/goals/goal-notifications.js.map +0 -1
  2486. package/dist/src/goals/goal-queue-store.js.map +0 -1
  2487. package/dist/src/goals/goal-runner.js.map +0 -1
  2488. package/dist/src/goals/goal-service.js.map +0 -1
  2489. package/dist/src/goals/goal-store.js.map +0 -1
  2490. package/dist/src/goals/goal-workflow-judge.js.map +0 -1
  2491. package/dist/src/heartbeat/active-hours.js.map +0 -1
  2492. package/dist/src/heartbeat/content-check.js.map +0 -1
  2493. package/dist/src/heartbeat/event-prompt.js.map +0 -1
  2494. package/dist/src/heartbeat/tokens.js.map +0 -1
  2495. package/dist/src/heartbeat/wake.js.map +0 -1
  2496. package/dist/src/i18n/format.js.map +0 -1
  2497. package/dist/src/i18n/goals-bundle.js.map +0 -1
  2498. package/dist/src/i18n/locale.js.map +0 -1
  2499. package/dist/src/i18n/locales/goals.en.js.map +0 -1
  2500. package/dist/src/i18n/locales/goals.zh.js.map +0 -1
  2501. package/dist/src/i18n/locales/share-tool.en.js.map +0 -1
  2502. package/dist/src/i18n/locales/share-tool.zh.js.map +0 -1
  2503. package/dist/src/i18n/share-tool-bundle.js.map +0 -1
  2504. package/dist/src/index.js.map +0 -1
  2505. package/dist/src/infra/brew.js.map +0 -1
  2506. package/dist/src/infra/bus/queue.js.map +0 -1
  2507. package/dist/src/infra/debounce.js.map +0 -1
  2508. package/dist/src/infra/exec.js.map +0 -1
  2509. package/dist/src/infra/gateway-process-argv.js.map +0 -1
  2510. package/dist/src/infra/gateway-processes.js.map +0 -1
  2511. package/dist/src/infra/host-env-security-policy.js.map +0 -1
  2512. package/dist/src/infra/host-env-security.js.map +0 -1
  2513. package/dist/src/infra/http-proxy-env.js.map +0 -1
  2514. package/dist/src/infra/is-main.js.map +0 -1
  2515. package/dist/src/infra/json-utf8-bytes.js.map +0 -1
  2516. package/dist/src/infra/node-sqlite.js.map +0 -1
  2517. package/dist/src/infra/package-json.js.map +0 -1
  2518. package/dist/src/infra/package-update-steps.js.map +0 -1
  2519. package/dist/src/infra/path-env.js.map +0 -1
  2520. package/dist/src/infra/path-prepend.js.map +0 -1
  2521. package/dist/src/infra/ports.js.map +0 -1
  2522. package/dist/src/infra/rate-limit/failure-limiter.js.map +0 -1
  2523. package/dist/src/infra/rate-limit/keyed-store.js.map +0 -1
  2524. package/dist/src/infra/rate-limit/rate-limiter.js.map +0 -1
  2525. package/dist/src/infra/restart.js.map +0 -1
  2526. package/dist/src/infra/retry.js.map +0 -1
  2527. package/dist/src/infra/run-command.js.map +0 -1
  2528. package/dist/src/infra/sqlite-errors.js.map +0 -1
  2529. package/dist/src/infra/ssh-tunnel.js.map +0 -1
  2530. package/dist/src/infra/stable-node-path.js.map +0 -1
  2531. package/dist/src/infra/tailscale.js.map +0 -1
  2532. package/dist/src/infra/undici-fetch.js.map +0 -1
  2533. package/dist/src/infra/unhandled-rejections.js.map +0 -1
  2534. package/dist/src/infra/update-channels.js.map +0 -1
  2535. package/dist/src/infra/update-check.js.map +0 -1
  2536. package/dist/src/infra/update-global.js.map +0 -1
  2537. package/dist/src/infra/update-lock.js.map +0 -1
  2538. package/dist/src/infra/update-log.js.map +0 -1
  2539. package/dist/src/infra/update-restart.js.map +0 -1
  2540. package/dist/src/infra/update-runner.js.map +0 -1
  2541. package/dist/src/infra/update-startup.js.map +0 -1
  2542. package/dist/src/infra/warning-filter.js.map +0 -1
  2543. package/dist/src/infra/write-file-atomic.js.map +0 -1
  2544. package/dist/src/knowledge/connected-knowledge-pipeline.js.map +0 -1
  2545. package/dist/src/knowledge/coordinator.js.map +0 -1
  2546. package/dist/src/knowledge/ingestion-service.js.map +0 -1
  2547. package/dist/src/local-apps/acceptance.js.map +0 -1
  2548. package/dist/src/local-apps/preview-runtime-bridge.js.map +0 -1
  2549. package/dist/src/local-apps/runtime-entry.js.map +0 -1
  2550. package/dist/src/local-apps/scaffold.js.map +0 -1
  2551. package/dist/src/local-apps/service.js.map +0 -1
  2552. package/dist/src/local-apps/store.js.map +0 -1
  2553. package/dist/src/markdown/chunk.js.map +0 -1
  2554. package/dist/src/markdown/code-spans.js.map +0 -1
  2555. package/dist/src/markdown/fences.js.map +0 -1
  2556. package/dist/src/markdown/frontmatter.js.map +0 -1
  2557. package/dist/src/markdown/ir.js.map +0 -1
  2558. package/dist/src/markdown/render.js.map +0 -1
  2559. package/dist/src/markdown/tables.js.map +0 -1
  2560. package/dist/src/mcp/channel-bridge.js.map +0 -1
  2561. package/dist/src/mcp/channel-server.js.map +0 -1
  2562. package/dist/src/mcp/channel-shared.js.map +0 -1
  2563. package/dist/src/mcp/channel-tools.js.map +0 -1
  2564. package/dist/src/mcp/gateway-http-client.js.map +0 -1
  2565. package/dist/src/media/media-reference.js.map +0 -1
  2566. package/dist/src/media/paths.js.map +0 -1
  2567. package/dist/src/media/session-references.js.map +0 -1
  2568. package/dist/src/media/store.js.map +0 -1
  2569. package/dist/src/media/uri.js.map +0 -1
  2570. package/dist/src/media-shared/http/api-key-rotation.js.map +0 -1
  2571. package/dist/src/media-shared/http/deadline.js.map +0 -1
  2572. package/dist/src/media-shared/http/private-network.js.map +0 -1
  2573. package/dist/src/media-shared/http/provider-http-errors.js.map +0 -1
  2574. package/dist/src/media-shared/http/provider-http.js.map +0 -1
  2575. package/dist/src/media-shared/http/resolve-provider-http-request-config.js.map +0 -1
  2576. package/dist/src/media-shared/http/ssrf-guard.js.map +0 -1
  2577. package/dist/src/media-shared/http/test-helpers/mock-server.js.map +0 -1
  2578. package/dist/src/media-understanding/audio-transcription-runner.js.map +0 -1
  2579. package/dist/src/media-understanding/openai-compatible-audio.js.map +0 -1
  2580. package/dist/src/media-understanding/registry.js.map +0 -1
  2581. package/dist/src/media-understanding/resolve-entries.js.map +0 -1
  2582. package/dist/src/media-understanding/runner.js.map +0 -1
  2583. package/dist/src/migrations/config/default-capability-preset.js.map +0 -1
  2584. package/dist/src/migrations/registry.js.map +0 -1
  2585. package/dist/src/migrations/runner.js.map +0 -1
  2586. package/dist/src/mobile/notification-service.js.map +0 -1
  2587. package/dist/src/mobile/notification-store.js.map +0 -1
  2588. package/dist/src/mobile/notification-types.js.map +0 -1
  2589. package/dist/src/notes/agent-context.js.map +0 -1
  2590. package/dist/src/notes/attachment-ref.js.map +0 -1
  2591. package/dist/src/notes/note-attachment-sync.js.map +0 -1
  2592. package/dist/src/notes/note-index-meta.js.map +0 -1
  2593. package/dist/src/notes/note-markdown.js.map +0 -1
  2594. package/dist/src/notes/paths.js.map +0 -1
  2595. package/dist/src/notes/service.js.map +0 -1
  2596. package/dist/src/notes/store.js.map +0 -1
  2597. package/dist/src/package-version.js.map +0 -1
  2598. package/dist/src/pets/factory.js.map +0 -1
  2599. package/dist/src/pets/manifest.js.map +0 -1
  2600. package/dist/src/pets/validator.js.map +0 -1
  2601. package/dist/src/process/kill-tree.js.map +0 -1
  2602. package/dist/src/project-trust/trust-store.js.map +0 -1
  2603. package/dist/src/projects/automation-bind.js.map +0 -1
  2604. package/dist/src/projects/goal-bind.js.map +0 -1
  2605. package/dist/src/projects/memory-bind.js.map +0 -1
  2606. package/dist/src/projects/project-agent-suggestion.js.map +0 -1
  2607. package/dist/src/projects/project-agent.js.map +0 -1
  2608. package/dist/src/projects/project-kind.js.map +0 -1
  2609. package/dist/src/projects/project-loop.js.map +0 -1
  2610. package/dist/src/projects/project-service.js.map +0 -1
  2611. package/dist/src/projects/project-store.js.map +0 -1
  2612. package/dist/src/projects/session-bind.js.map +0 -1
  2613. package/dist/src/projects/workflow-bind.js.map +0 -1
  2614. package/dist/src/projects/workspace-project.js.map +0 -1
  2615. package/dist/src/projects/workspace.js.map +0 -1
  2616. package/dist/src/providers/auth-runtime/auth-profile-store.js.map +0 -1
  2617. package/dist/src/providers/auth-runtime/is-configured.js.map +0 -1
  2618. package/dist/src/providers/auth-runtime/oauth.js.map +0 -1
  2619. package/dist/src/providers/auth-runtime/resolve-api-key.js.map +0 -1
  2620. package/dist/src/providers/auth-runtime/resolve-auth.js.map +0 -1
  2621. package/dist/src/providers/constants.js.map +0 -1
  2622. package/dist/src/providers/domestic-presets.js.map +0 -1
  2623. package/dist/src/providers/env-keys.js.map +0 -1
  2624. package/dist/src/providers/extension-stream-bridge.js.map +0 -1
  2625. package/dist/src/providers/index.js.map +0 -1
  2626. package/dist/src/providers/model-call.js.map +0 -1
  2627. package/dist/src/providers/model-discovery.js.map +0 -1
  2628. package/dist/src/providers/model-registry.js.map +0 -1
  2629. package/dist/src/providers/model-supplements.js.map +0 -1
  2630. package/dist/src/providers/plugin-registry.js.map +0 -1
  2631. package/dist/src/providers/presentation.js.map +0 -1
  2632. package/dist/src/remote-access/exposure-guards.js.map +0 -1
  2633. package/dist/src/remote-access/exposure-manager.js.map +0 -1
  2634. package/dist/src/review/review-git.js.map +0 -1
  2635. package/dist/src/review/review-types.js.map +0 -1
  2636. package/dist/src/routing/account-id.js.map +0 -1
  2637. package/dist/src/routing/agent-session-key.js.map +0 -1
  2638. package/dist/src/routing/bindings.js.map +0 -1
  2639. package/dist/src/routing/index.js.map +0 -1
  2640. package/dist/src/routing/resolve-route.js.map +0 -1
  2641. package/dist/src/routing/resolve-tui-session-key.js.map +0 -1
  2642. package/dist/src/routing/session-key-utils.js.map +0 -1
  2643. package/dist/src/routing/session-key.js.map +0 -1
  2644. package/dist/src/session/abort-cutoff.js.map +0 -1
  2645. package/dist/src/session/chat-export.js.map +0 -1
  2646. package/dist/src/session/client-history.js.map +0 -1
  2647. package/dist/src/session/compaction-checkpoints.js.map +0 -1
  2648. package/dist/src/session/config-store.js.map +0 -1
  2649. package/dist/src/session/init-session-turn.js.map +0 -1
  2650. package/dist/src/session/lifecycle-timestamps.js.map +0 -1
  2651. package/dist/src/session/load-jsonl-entries.js.map +0 -1
  2652. package/dist/src/session/manager.js.map +0 -1
  2653. package/dist/src/session/patch-metadata.js.map +0 -1
  2654. package/dist/src/session/reset-policy.js.map +0 -1
  2655. package/dist/src/session/reset-triggers.js.map +0 -1
  2656. package/dist/src/session/reset-type.js.map +0 -1
  2657. package/dist/src/session/resolve-session.js.map +0 -1
  2658. package/dist/src/session/session-context-for-llm.js.map +0 -1
  2659. package/dist/src/session/session-id.js.map +0 -1
  2660. package/dist/src/session/session-title.js.map +0 -1
  2661. package/dist/src/session/session-workspace.js.map +0 -1
  2662. package/dist/src/session/store.js.map +0 -1
  2663. package/dist/src/session/stored-rows-to-file-entries.js.map +0 -1
  2664. package/dist/src/session/thinking-resolve.js.map +0 -1
  2665. package/dist/src/session/transcript-events.js.map +0 -1
  2666. package/dist/src/session/transcript-format.js.map +0 -1
  2667. package/dist/src/session/transcript-outline.js.map +0 -1
  2668. package/dist/src/session/transcript-stats.js.map +0 -1
  2669. package/dist/src/session/types.js.map +0 -1
  2670. package/dist/src/session/user-round-delete.js.map +0 -1
  2671. package/dist/src/share/share-audit.js.map +0 -1
  2672. package/dist/src/share/share-auto.js.map +0 -1
  2673. package/dist/src/share/share-config.js.map +0 -1
  2674. package/dist/src/share/share-landing.js.map +0 -1
  2675. package/dist/src/share/share-rate-limit.js.map +0 -1
  2676. package/dist/src/share/share-store.js.map +0 -1
  2677. package/dist/src/share/share-thumbnail.js.map +0 -1
  2678. package/dist/src/share/share-types.js.map +0 -1
  2679. package/dist/src/share/share-url.js.map +0 -1
  2680. package/dist/src/share/share-zip.js.map +0 -1
  2681. package/dist/src/share/site-proxy.js.map +0 -1
  2682. package/dist/src/share/site-share-config.js.map +0 -1
  2683. package/dist/src/share/site-share-router.js.map +0 -1
  2684. package/dist/src/share/site-share-store.js.map +0 -1
  2685. package/dist/src/share/site-share-types.js.map +0 -1
  2686. package/dist/src/share/site-static-serve.js.map +0 -1
  2687. package/dist/src/storage/sqlite/activity-repository.js.map +0 -1
  2688. package/dist/src/storage/sqlite/config-repository.js.map +0 -1
  2689. package/dist/src/storage/sqlite/connection.js.map +0 -1
  2690. package/dist/src/storage/sqlite/connector-repository.js.map +0 -1
  2691. package/dist/src/storage/sqlite/fts.js.map +0 -1
  2692. package/dist/src/storage/sqlite/knowledge-repository.js.map +0 -1
  2693. package/dist/src/storage/sqlite/memory-index-repository.js.map +0 -1
  2694. package/dist/src/storage/sqlite/memory-records-repository.js.map +0 -1
  2695. package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +0 -1
  2696. package/dist/src/storage/sqlite/migrations/discover.js.map +0 -1
  2697. package/dist/src/storage/sqlite/migrations/errors.js.map +0 -1
  2698. package/dist/src/storage/sqlite/migrations/runner.js.map +0 -1
  2699. package/dist/src/storage/sqlite/note-agent-context-repository.js.map +0 -1
  2700. package/dist/src/storage/sqlite/notes-repository.js.map +0 -1
  2701. package/dist/src/storage/sqlite/paths.js.map +0 -1
  2702. package/dist/src/storage/sqlite/row-mappers.js.map +0 -1
  2703. package/dist/src/storage/sqlite/schema-version.js.map +0 -1
  2704. package/dist/src/storage/sqlite/schema.js.map +0 -1
  2705. package/dist/src/storage/sqlite/session-metadata.js.map +0 -1
  2706. package/dist/src/storage/sqlite/session-repository.js.map +0 -1
  2707. package/dist/src/storage/sqlite/transaction.js.map +0 -1
  2708. package/dist/src/storage/sqlite/transcript-repository.js.map +0 -1
  2709. package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +0 -1
  2710. package/dist/src/storage/sqlite/user-trust-repository.js.map +0 -1
  2711. package/dist/src/tui/backends/embedded-backend.js.map +0 -1
  2712. package/dist/src/tui/backends/gateway-sse-backend.js.map +0 -1
  2713. package/dist/src/tui/chat-history.js.map +0 -1
  2714. package/dist/src/tui/clipboard-image.js.map +0 -1
  2715. package/dist/src/tui/clipboard-text.js.map +0 -1
  2716. package/dist/src/tui/components/assistant-message.js.map +0 -1
  2717. package/dist/src/tui/components/bash-execution.js.map +0 -1
  2718. package/dist/src/tui/components/bash-summary.js.map +0 -1
  2719. package/dist/src/tui/components/branch-message-summary.js.map +0 -1
  2720. package/dist/src/tui/components/branch-summary.js.map +0 -1
  2721. package/dist/src/tui/components/chat-log.js.map +0 -1
  2722. package/dist/src/tui/components/compaction-summary.js.map +0 -1
  2723. package/dist/src/tui/components/custom-editor.js.map +0 -1
  2724. package/dist/src/tui/components/custom-message.js.map +0 -1
  2725. package/dist/src/tui/components/dynamic-border.js.map +0 -1
  2726. package/dist/src/tui/components/extension-dialog.js.map +0 -1
  2727. package/dist/src/tui/components/fuzzy-filter.js.map +0 -1
  2728. package/dist/src/tui/components/scoped-models-selector.js.map +0 -1
  2729. package/dist/src/tui/components/searchable-select-list.js.map +0 -1
  2730. package/dist/src/tui/components/session-selector.js.map +0 -1
  2731. package/dist/src/tui/components/settings-selector.js.map +0 -1
  2732. package/dist/src/tui/components/thinking-selector.js.map +0 -1
  2733. package/dist/src/tui/components/tool-execution.js.map +0 -1
  2734. package/dist/src/tui/components/tui-bottom-bar.js.map +0 -1
  2735. package/dist/src/tui/components/tui-header.js.map +0 -1
  2736. package/dist/src/tui/components/user-message.js.map +0 -1
  2737. package/dist/src/tui/components/visual-truncate.js.map +0 -1
  2738. package/dist/src/tui/extension-host/autocomplete.js.map +0 -1
  2739. package/dist/src/tui/extension-host/host.js.map +0 -1
  2740. package/dist/src/tui/extension-host/load-extensions.js.map +0 -1
  2741. package/dist/src/tui/extension-host/runtime-context.js.map +0 -1
  2742. package/dist/src/tui/extension-host/runtime.js.map +0 -1
  2743. package/dist/src/tui/extension-host/surface.js.map +0 -1
  2744. package/dist/src/tui/extension-host/tool-renderers.js.map +0 -1
  2745. package/dist/src/tui/format-tui-hotkeys.js.map +0 -1
  2746. package/dist/src/tui/sse-consumer.js.map +0 -1
  2747. package/dist/src/tui/theme/dark.js.map +0 -1
  2748. package/dist/src/tui/theme/light.js.map +0 -1
  2749. package/dist/src/tui/theme-manager.js.map +0 -1
  2750. package/dist/src/tui/theme.js.map +0 -1
  2751. package/dist/src/tui/tool-summary.js.map +0 -1
  2752. package/dist/src/tui/tui-agent-events.js.map +0 -1
  2753. package/dist/src/tui/tui-command-formatters.js.map +0 -1
  2754. package/dist/src/tui/tui-commands.js.map +0 -1
  2755. package/dist/src/tui/tui-context-usage.js.map +0 -1
  2756. package/dist/src/tui/tui-extension-user-message.js.map +0 -1
  2757. package/dist/src/tui/tui-fd-path.js.map +0 -1
  2758. package/dist/src/tui/tui-file-autocomplete.js.map +0 -1
  2759. package/dist/src/tui/tui-follow-up-queue.js.map +0 -1
  2760. package/dist/src/tui/tui-git-branch.js.map +0 -1
  2761. package/dist/src/tui/tui-keybindings-file.js.map +0 -1
  2762. package/dist/src/tui/tui-lifecycle.js.map +0 -1
  2763. package/dist/src/tui/tui-local-shell.js.map +0 -1
  2764. package/dist/src/tui/tui-model-picker.js.map +0 -1
  2765. package/dist/src/tui/tui-oauth-login.js.map +0 -1
  2766. package/dist/src/tui/tui-overlays.js.map +0 -1
  2767. package/dist/src/tui/tui-picker-overlay.js.map +0 -1
  2768. package/dist/src/tui/tui-run-state.js.map +0 -1
  2769. package/dist/src/tui/tui-run-status-format.js.map +0 -1
  2770. package/dist/src/tui/tui-runtime-hints.js.map +0 -1
  2771. package/dist/src/tui/tui-scoped-models.js.map +0 -1
  2772. package/dist/src/tui/tui-session-actions.js.map +0 -1
  2773. package/dist/src/tui/tui-session-format.js.map +0 -1
  2774. package/dist/src/tui/tui-session-snapshot.js.map +0 -1
  2775. package/dist/src/tui/tui-session-stats.js.map +0 -1
  2776. package/dist/src/tui/tui-settings.js.map +0 -1
  2777. package/dist/src/tui/tui-skills-autocomplete.js.map +0 -1
  2778. package/dist/src/tui/tui-startup-resources.js.map +0 -1
  2779. package/dist/src/tui/tui-startup-text.js.map +0 -1
  2780. package/dist/src/tui/tui-stdio-filter.js.map +0 -1
  2781. package/dist/src/tui/tui-submit.js.map +0 -1
  2782. package/dist/src/tui/tui-suspend.js.map +0 -1
  2783. package/dist/src/tui/tui-timeline-picker.js.map +0 -1
  2784. package/dist/src/tui/tui-timeline.js.map +0 -1
  2785. package/dist/src/tui/tui-tool-diff.js.map +0 -1
  2786. package/dist/src/tui/tui-tool-result.js.map +0 -1
  2787. package/dist/src/tui/tui-transcript-tree-picker.js.map +0 -1
  2788. package/dist/src/tui/tui-transcript-tree.js.map +0 -1
  2789. package/dist/src/tui/tui-types.js.map +0 -1
  2790. package/dist/src/tui/tui-workflow-slash.js.map +0 -1
  2791. package/dist/src/tui/tui.js.map +0 -1
  2792. package/dist/src/tui/xopc-tui-keybindings.js.map +0 -1
  2793. package/dist/src/tunnel/broker-client.js.map +0 -1
  2794. package/dist/src/tunnel/consent.js.map +0 -1
  2795. package/dist/src/tunnel/enable-lan-pairing.js.map +0 -1
  2796. package/dist/src/tunnel/env.js.map +0 -1
  2797. package/dist/src/tunnel/frp-subdomain-host.js.map +0 -1
  2798. package/dist/src/tunnel/frpc-binary.js.map +0 -1
  2799. package/dist/src/tunnel/frpc-config.js.map +0 -1
  2800. package/dist/src/tunnel/frpc-extract.js.map +0 -1
  2801. package/dist/src/tunnel/frpc-process.js.map +0 -1
  2802. package/dist/src/tunnel/gateway-lifecycle.js.map +0 -1
  2803. package/dist/src/tunnel/pair-context.js.map +0 -1
  2804. package/dist/src/tunnel/pair-url.js.map +0 -1
  2805. package/dist/src/tunnel/pairing-rate-limit.js.map +0 -1
  2806. package/dist/src/tunnel/pairing.js.map +0 -1
  2807. package/dist/src/tunnel/tunnel-audit.js.map +0 -1
  2808. package/dist/src/tunnel/tunnel-config.js.map +0 -1
  2809. package/dist/src/tunnel/tunnel-persist.js.map +0 -1
  2810. package/dist/src/tunnel/tunnel-qr.js.map +0 -1
  2811. package/dist/src/tunnel/tunnel-rate-limit.js.map +0 -1
  2812. package/dist/src/tunnel/tunnel-service.js.map +0 -1
  2813. package/dist/src/tunnel/tunnel-state.js.map +0 -1
  2814. package/dist/src/tunnel/well-known.js.map +0 -1
  2815. package/dist/src/user-context/config.js.map +0 -1
  2816. package/dist/src/user-context/import.js.map +0 -1
  2817. package/dist/src/user-context/owner.js.map +0 -1
  2818. package/dist/src/user-context/profile.js.map +0 -1
  2819. package/dist/src/user-context/projection.js.map +0 -1
  2820. package/dist/src/user-context/runtime.js.map +0 -1
  2821. package/dist/src/user-context/source-recommendations.js.map +0 -1
  2822. package/dist/src/user-context/trust-policy.js.map +0 -1
  2823. package/dist/src/utils/global-singleton.js.map +0 -1
  2824. package/dist/src/utils/helpers.js.map +0 -1
  2825. package/dist/src/utils/index.js.map +0 -1
  2826. package/dist/src/utils/is-record.js.map +0 -1
  2827. package/dist/src/utils/logger/audit.js.map +0 -1
  2828. package/dist/src/utils/logger/config.js.map +0 -1
  2829. package/dist/src/utils/logger/context.js.map +0 -1
  2830. package/dist/src/utils/logger/exporters.js.map +0 -1
  2831. package/dist/src/utils/logger/index.js.map +0 -1
  2832. package/dist/src/utils/logger/log-store.js.map +0 -1
  2833. package/dist/src/utils/logger/log-stream.js.map +0 -1
  2834. package/dist/src/utils/logger/pino-record.js.map +0 -1
  2835. package/dist/src/utils/logger/redact.js.map +0 -1
  2836. package/dist/src/utils/logger/rotation.js.map +0 -1
  2837. package/dist/src/utils/logger/shutdown.js.map +0 -1
  2838. package/dist/src/utils/logger/stats.js.map +0 -1
  2839. package/dist/src/utils/logger/streams.js.map +0 -1
  2840. package/dist/src/utils/logger/types.js.map +0 -1
  2841. package/dist/src/utils/logger.js.map +0 -1
  2842. package/dist/src/utils/redact-sensitive-url.js.map +0 -1
  2843. package/dist/src/utils/sanitize-log.js.map +0 -1
  2844. package/dist/src/utils/string-coerce.js.map +0 -1
  2845. package/dist/src/voice/language-profile.js.map +0 -1
  2846. package/dist/src/voice/local/model-files.js.map +0 -1
  2847. package/dist/src/voice/local/model-manager.js.map +0 -1
  2848. package/dist/src/voice/local/models.js.map +0 -1
  2849. package/dist/src/voice/local/runtime-client.js.map +0 -1
  2850. package/dist/src/voice/local/runtime-dispatcher.js.map +0 -1
  2851. package/dist/src/voice/local/runtime-worker.js.map +0 -1
  2852. package/dist/src/voice/local/wav.js.map +0 -1
  2853. package/dist/src/voice/metadata/builtin.js.map +0 -1
  2854. package/dist/src/voice/metadata/registry.js.map +0 -1
  2855. package/dist/src/voice/stt/availability.js.map +0 -1
  2856. package/dist/src/voice/stt/config-slice.js.map +0 -1
  2857. package/dist/src/voice/stt/factory.js.map +0 -1
  2858. package/dist/src/voice/stt/index.js.map +0 -1
  2859. package/dist/src/voice/stt/list-providers.js.map +0 -1
  2860. package/dist/src/voice/stt/mention.js.map +0 -1
  2861. package/dist/src/voice/stt/preflight.js.map +0 -1
  2862. package/dist/src/voice/stt/providers/alibaba-transcription.js.map +0 -1
  2863. package/dist/src/voice/stt/providers/local-transcription.js.map +0 -1
  2864. package/dist/src/voice/stt/providers/openai-transcription.js.map +0 -1
  2865. package/dist/src/voice/stt/transcribe-core.js.map +0 -1
  2866. package/dist/src/voice/stt/types.js.map +0 -1
  2867. package/dist/src/voice/tts/audio.js.map +0 -1
  2868. package/dist/src/voice/tts/config-slice.js.map +0 -1
  2869. package/dist/src/voice/tts/directives.js.map +0 -1
  2870. package/dist/src/voice/tts/factory.js.map +0 -1
  2871. package/dist/src/voice/tts/list-providers.js.map +0 -1
  2872. package/dist/src/voice/tts/merge-config.js.map +0 -1
  2873. package/dist/src/voice/tts/openai-compatible-speech.js.map +0 -1
  2874. package/dist/src/voice/tts/payload.js.map +0 -1
  2875. package/dist/src/voice/tts/preprocess.js.map +0 -1
  2876. package/dist/src/voice/tts/providers/alibaba-speech.js.map +0 -1
  2877. package/dist/src/voice/tts/providers/edge-speech.js.map +0 -1
  2878. package/dist/src/voice/tts/providers/minimax-speech.js.map +0 -1
  2879. package/dist/src/voice/tts/providers/openai-speech.js.map +0 -1
  2880. package/dist/src/voice/tts/sentence-boundary.js.map +0 -1
  2881. package/dist/src/voice/tts/service.js.map +0 -1
  2882. package/dist/src/voice/tts/speak-core.js.map +0 -1
  2883. package/dist/src/voice/tts/speech-registry.js.map +0 -1
  2884. package/dist/src/voice/tts/status-tracker.js.map +0 -1
  2885. package/dist/src/voice/tts/summarize.js.map +0 -1
  2886. package/dist/src/voice/tts/types.js.map +0 -1
  2887. package/dist/src/work-discovery/analyzer.js.map +0 -1
  2888. package/dist/src/work-discovery/probe.js.map +0 -1
  2889. package/dist/src/work-discovery/repository.js.map +0 -1
  2890. package/dist/src/work-discovery/service.js.map +0 -1
  2891. package/dist/src/work-items/agent-context.js.map +0 -1
  2892. package/dist/src/work-items/work-item-service.js.map +0 -1
  2893. package/dist/src/work-items/work-item-store.js.map +0 -1
  2894. package/dist/src/work-items/work-item-workflow-judge.js.map +0 -1
  2895. package/dist/src/workflows/authoring/workflow-draft-store.js.map +0 -1
  2896. package/dist/src/workflows/domain/definition-utils.js.map +0 -1
  2897. package/dist/src/workflows/domain/run.js.map +0 -1
  2898. package/dist/src/workflows/domain/schema-validation.js.map +0 -1
  2899. package/dist/src/workflows/domain/validation.js.map +0 -1
  2900. package/dist/src/workflows/draft/workflow-draft-prompt.js.map +0 -1
  2901. package/dist/src/workflows/draft/workflow-draft-service.js.map +0 -1
  2902. package/dist/src/workflows/draft/workflow-draft-validator.js.map +0 -1
  2903. package/dist/src/workflows/engine/projector.js.map +0 -1
  2904. package/dist/src/workflows/engine/workflow-engine.js.map +0 -1
  2905. package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +0 -1
  2906. package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +0 -1
  2907. package/dist/src/workflows/service/run-view-to-snapshot.js.map +0 -1
  2908. package/dist/src/workflows/service/workflow-run-service.js.map +0 -1
  2909. package/dist/src/workflows/service/workflow-session-bridge.js.map +0 -1
  2910. package/dist/src/workflows/service/workflow-session-key.js.map +0 -1
  2911. package/dist/src/workflows/store/event-store.js.map +0 -1
  2912. package/dist/src/workflows/store/paths.js.map +0 -1
  2913. package/dist/src/workflows/store/run-index-store.js.map +0 -1
  2914. package/dist/src/workflows/store/run-store.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui-transcript-tree-picker.js","names":[],"sources":["../../../src/tui/tui-transcript-tree-picker.ts"],"sourcesContent":["import {\n Input,\n type Component,\n type Focusable,\n type Keybinding,\n type KeybindingsManager,\n type SelectItem,\n truncateToWidth,\n visibleWidth,\n} from '@earendil-works/pi-tui';\nimport { randomUUID } from 'node:crypto';\n\nimport { SearchableSelectList } from './components/searchable-select-list.js';\nimport { formatKeyIds, formatKeyText } from './format-tui-hotkeys.js';\nimport type { TuiTranscriptTreeEntry } from './tui-backend.js';\nimport { searchableSelectListTheme, theme } from './theme.js';\nimport type { TuiSettings, TreeFilterMode } from './tui-settings.js';\nimport {\n filterTuiTranscriptTreeEntries,\n formatTuiTranscriptTreeEntryDisplayText,\n} from './tui-transcript-tree.js';\n\nfunction formatSelectNavigationHint(keybindings: KeybindingsManager): string {\n const up = formatKeyIds(keybindings, 'tui.select.up', { capitalize: true });\n const down = formatKeyIds(keybindings, 'tui.select.down', { capitalize: true });\n return `${up}/${down}`;\n}\n\nexport function formatTranscriptTreeOpenedHint(keybindings: KeybindingsManager): string {\n const nav = formatSelectNavigationHint(keybindings);\n const confirm = formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true });\n const cancel = formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true });\n return `Transcript tree (${nav} · type to filter · ${confirm} inspect · ${cancel} close)`;\n}\n\nexport function formatTranscriptTreeFilterHint(\n keybindings: KeybindingsManager,\n filterMode: TuiSettings['treeFilterMode'],\n): string {\n const base = formatTranscriptTreeOpenedHint(keybindings);\n const fold = formatKeyIds(keybindings, 'app.tree.foldOrUp', { capitalize: true });\n const unfold = formatKeyIds(keybindings, 'app.tree.unfoldOrDown', { capitalize: true });\n const editLabel = formatKeyIds(keybindings, 'app.tree.editLabel', { capitalize: true });\n const cycle = formatKeyIds(keybindings, 'app.tree.filter.cycleForward', { capitalize: true });\n const filter = filterMode === 'default' ? '' : ` [${filterMode}]`;\n return `${base}${filter} · ${fold}/${unfold} fold · ${editLabel} label · ${cycle} filter`;\n}\n\nconst TRANSCRIPT_TREE_HELP_ITEMS: Array<{\n keys: Keybinding[];\n label: string;\n labelFirst?: boolean;\n}> = [\n { keys: ['tui.select.up', 'tui.select.down'], label: 'move' },\n { keys: ['tui.editor.cursorLeft', 'tui.editor.cursorRight'], label: 'page' },\n { keys: ['app.tree.foldOrUp', 'app.tree.unfoldOrDown'], label: 'branch' },\n { keys: ['app.tree.editLabel'], label: 'label' },\n { keys: ['app.tree.toggleLabelTimestamp'], label: 'label time' },\n {\n keys: [\n 'app.tree.filter.default',\n 'app.tree.filter.noTools',\n 'app.tree.filter.userOnly',\n 'app.tree.filter.labeledOnly',\n 'app.tree.filter.all',\n ],\n label: 'filters',\n labelFirst: true,\n },\n {\n keys: ['app.tree.filter.cycleForward', 'app.tree.filter.cycleBackward'],\n label: 'cycle',\n labelFirst: true,\n },\n];\n\nexport function formatTranscriptTreeHelpLines(\n keybindings: KeybindingsManager,\n width: number,\n): string[] {\n const availableWidth = Math.max(1, width);\n const items = TRANSCRIPT_TREE_HELP_ITEMS.map(({ keys, label, labelFirst }) => {\n const keyText = formatTranscriptTreeHelpKeys(keybindings, keys);\n if (!keyText) return label;\n return labelFirst ? `${label} ${keyText}` : `${keyText} ${label}`;\n });\n const indent = ' ';\n const separator = ' · ';\n const lines: string[] = [];\n let current = '';\n\n for (const item of items) {\n const indentedItem = `${indent}${item}`;\n const candidate = current ? `${current}${separator}${item}` : indentedItem;\n if (!current || visibleWidth(candidate) <= availableWidth) {\n current = candidate;\n continue;\n }\n lines.push(truncateToWidth(current, availableWidth, ''));\n current = visibleWidth(indentedItem) <= availableWidth ? indentedItem : item;\n }\n\n if (current) {\n lines.push(truncateToWidth(current, availableWidth, ''));\n }\n return lines;\n}\n\nfunction formatTranscriptTreeHelpKeys(\n keybindings: KeybindingsManager,\n ids: Keybinding[],\n): string {\n const keys = ids.map((id) => keybindings.getKeys(id)[0]).filter((key) => key !== undefined);\n if (keys.length === 0) return '';\n return formatTranscriptTreeHelpKeyText(compactTranscriptTreeHelpKeys(keys.map(String)));\n}\n\nfunction compactTranscriptTreeHelpKeys(keys: string[]): string {\n if (keys.length === 1) return keys[0] ?? '';\n const parts = keys.map((key) => {\n const separatorIndex = key.lastIndexOf('+');\n return separatorIndex === -1\n ? { prefix: '', suffix: key }\n : { prefix: key.slice(0, separatorIndex + 1), suffix: key.slice(separatorIndex + 1) };\n });\n const prefix = parts[0]?.prefix ?? '';\n return prefix && parts.every((part) => part.prefix === prefix)\n ? `${prefix}${parts.map((part) => part.suffix).join('/')}`\n : keys.join('/');\n}\n\nfunction formatTranscriptTreeHelpKeyText(key: string): string {\n return formatKeyText(key, { capitalize: true })\n .replace(/\\bpageUp\\b/gi, 'pgup')\n .replace(/\\bpageDown\\b/gi, 'pgdn')\n .replace(/\\bup\\b/gi, '↑')\n .replace(/\\bdown\\b/gi, '↓')\n .replace(/\\bleft\\b/gi, '←')\n .replace(/\\bright\\b/gi, '→');\n}\n\nexport function formatUserMessageForkOpenedHint(keybindings: KeybindingsManager): string {\n const nav = formatSelectNavigationHint(keybindings);\n const confirm = formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true });\n const cancel = formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true });\n return `Fork from message (${nav} · type to filter · ${confirm} fork · ${cancel} close)`;\n}\n\nexport function defaultTranscriptForkKey(currentSessionKey: string, entryId: string): string {\n const suffix = randomUUID().slice(0, 8);\n const cleanEntry = entryId.replace(/[^a-z0-9_.-]+/gi, '-');\n return `${currentSessionKey}:fork:${cleanEntry}-${suffix}`;\n}\n\nfunction formatLabelTimestamp(timestamp: string, now = new Date()): string {\n const date = new Date(timestamp);\n if (Number.isNaN(date.getTime())) return '';\n const hours = date.getHours().toString().padStart(2, '0');\n const minutes = date.getMinutes().toString().padStart(2, '0');\n const time = `${hours}:${minutes}`;\n if (\n date.getFullYear() === now.getFullYear() &&\n date.getMonth() === now.getMonth() &&\n date.getDate() === now.getDate()\n ) {\n return time;\n }\n const month = date.getMonth() + 1;\n const day = date.getDate();\n if (date.getFullYear() === now.getFullYear()) {\n return `${month}/${day} ${time}`;\n }\n const year = date.getFullYear().toString().slice(-2);\n return `${year}/${month}/${day} ${time}`;\n}\n\nfunction transcriptTreeLabel(\n entry: TuiTranscriptTreeEntry,\n options: { showLabelTimestamps?: boolean; prefix?: string } = {},\n): string {\n const marker = options.prefix ?? (entry.depth === 0 ? '- ' : ' └─ ');\n const activeMarker = entry.isOnActivePath || entry.isCurrentLeaf ? '• ' : '';\n const turn = entry.turn > 0 ? `#${entry.turn} ` : '';\n const labelTime =\n options.showLabelTimestamps && entry.labelTimestamp\n ? `${formatLabelTimestamp(entry.labelTimestamp)} `\n : '';\n const userLabel = entry.userLabel ? `[${entry.userLabel}] ${labelTime}` : '';\n return `${marker}${activeMarker}${turn}${userLabel}${formatTuiTranscriptTreeEntryDisplayText(entry)}`;\n}\n\nexport function transcriptTreeSelectItems(\n entries: TuiTranscriptTreeEntry[],\n options: {\n showLabelTimestamps?: boolean;\n foldedIds?: ReadonlySet<string>;\n foldableIds?: ReadonlySet<string>;\n allEntries?: TuiTranscriptTreeEntry[];\n } = {},\n): SelectItem[] {\n const prefixes = transcriptTreePrefixes(entries, options.allEntries ?? entries);\n return entries.map((entry) => {\n const displayText = formatTuiTranscriptTreeEntryDisplayText(entry);\n return {\n value: entry.id,\n label: `${formatTranscriptFoldMarker(entry.id, options)}${transcriptTreeLabel(entry, {\n ...options,\n prefix: prefixes.get(entry.id),\n })}`,\n description: entry.createdAt ?? entry.id,\n searchText: [\n entry.id,\n entry.parentId ?? '',\n entry.label,\n displayText,\n entry.userLabel ?? '',\n entry.labelTimestamp ?? '',\n entry.isOnActivePath || entry.isCurrentLeaf ? 'active current' : '',\n entry.role ?? '',\n entry.preview ?? '',\n entry.createdAt ?? '',\n ].join(' '),\n };\n });\n}\n\nfunction transcriptTreePrefixes(\n entries: TuiTranscriptTreeEntry[],\n allEntries: TuiTranscriptTreeEntry[] = entries,\n): Map<string, string> {\n const byId = new Map(allEntries.map((entry) => [entry.id, entry]));\n const visibleIds = new Set(entries.map((entry) => entry.id));\n const parentByEntryId = new Map<string, string | null>();\n const childrenByParentId = new Map<string | null, string[]>();\n\n const nearestVisibleParent = (entry: TuiTranscriptTreeEntry, index: number): string | null => {\n let parentId = entry.parentId;\n while (parentId) {\n if (visibleIds.has(parentId)) return parentId;\n parentId = byId.get(parentId)?.parentId;\n }\n if (entry.depth > 0) {\n for (let i = index - 1; i >= 0; i -= 1) {\n const candidate = entries[i];\n if (candidate && candidate.depth < entry.depth) return candidate.id;\n }\n }\n return null;\n };\n\n for (const [index, entry] of entries.entries()) {\n const parentId = nearestVisibleParent(entry, index);\n parentByEntryId.set(entry.id, parentId);\n const children = childrenByParentId.get(parentId) ?? [];\n children.push(entry.id);\n childrenByParentId.set(parentId, children);\n }\n\n const prefixes = new Map<string, string>();\n for (const entry of entries) {\n const visibleParentId = parentByEntryId.get(entry.id) ?? null;\n if (visibleParentId === null) {\n prefixes.set(entry.id, '- ');\n continue;\n }\n\n const ancestors: string[] = [];\n let parentId: string | null | undefined = visibleParentId;\n while (parentId) {\n ancestors.unshift(parentId);\n parentId = parentByEntryId.get(parentId) ?? null;\n }\n\n let prefix = ' ';\n for (const ancestor of ancestors.slice(1)) {\n prefix += hasFollowingSibling(ancestor, parentByEntryId.get(ancestor) ?? null, childrenByParentId)\n ? '│ '\n : ' ';\n }\n prefix += hasFollowingSibling(entry.id, visibleParentId, childrenByParentId) ? '├─ ' : '└─ ';\n prefixes.set(entry.id, prefix);\n }\n return prefixes;\n}\n\nfunction hasFollowingSibling(\n entryId: string,\n parentId: string | null,\n childrenByParentId: Map<string | null, string[]>,\n): boolean {\n const siblings = childrenByParentId.get(parentId) ?? [];\n return siblings.indexOf(entryId) < siblings.length - 1;\n}\n\nfunction formatTranscriptFoldMarker(\n entryId: string,\n options: { foldedIds?: ReadonlySet<string>; foldableIds?: ReadonlySet<string> },\n): string {\n if (options.foldedIds?.has(entryId)) return '⊞ ';\n if (options.foldableIds?.has(entryId)) return '⊟ ';\n return '';\n}\n\nconst TREE_FILTER_MODES: TreeFilterMode[] = ['default', 'no-tools', 'user-only', 'labeled-only', 'all'];\n\nfunction transcriptTreeStatusLabels(mode: TreeFilterMode, showLabelTimestamps: boolean): string {\n const labels: string[] = [];\n if (mode === 'no-tools') labels.push('[no-tools]');\n if (mode === 'user-only') labels.push('[user]');\n if (mode === 'labeled-only') labels.push('[labeled]');\n if (mode === 'all') labels.push('[all]');\n if (showLabelTimestamps) labels.push('[+label time]');\n return labels.length > 0 ? ` ${labels.join(' ')}` : '';\n}\n\nfunction filterTranscriptTreeSelectItems(items: SelectItem[], query: string): SelectItem[] {\n const tokens = query.toLowerCase().split(/\\s+/).filter(Boolean);\n if (tokens.length === 0) return items;\n return items.filter((item) => {\n const searchText = (item as SelectItem & { searchText?: string }).searchText ?? '';\n const text = [item.label, item.description ?? '', searchText].join(' ').toLowerCase();\n return tokens.every((token) => text.includes(token));\n });\n}\n\nexport class TranscriptTreeSelectList implements Component, Focusable {\n private readonly list: SearchableSelectList;\n private filterMode: TreeFilterMode;\n private labelInput: Input | null = null;\n private labelEntry: TuiTranscriptTreeEntry | null = null;\n private showLabelTimestamps = false;\n private readonly foldedEntryIds = new Set<string>();\n private lastSelectedEntryId: string | undefined;\n\n onSelect?: (item: SelectItem) => void;\n onCancel?: () => void;\n onFilterChange?: (mode: TreeFilterMode) => void;\n onLabelSubmit?: (entry: TuiTranscriptTreeEntry, label: string | undefined) => void;\n\n constructor(\n private readonly entries: TuiTranscriptTreeEntry[],\n initialFilterMode: TreeFilterMode,\n private readonly keybindings: KeybindingsManager,\n private readonly maxVisible: number,\n ) {\n this.filterMode = initialFilterMode;\n this.list = new SearchableSelectList(\n transcriptTreeSelectItems(filterTuiTranscriptTreeEntries(entries, this.filterMode), {\n showLabelTimestamps: this.showLabelTimestamps,\n }),\n maxVisible,\n searchableSelectListTheme,\n {\n searchPromptText: 'Type to search: ',\n filterItems: filterTranscriptTreeSelectItems,\n },\n );\n this.list.onSelect = (item) => this.onSelect?.(item);\n this.list.onCancel = () => this.onCancel?.();\n this.refreshItems({ selectedId: this.initialSelectedEntryId() });\n }\n\n get focused(): boolean {\n return this.labelInput?.focused ?? this.list.focused;\n }\n\n set focused(value: boolean) {\n if (this.labelInput) {\n this.labelInput.focused = value;\n return;\n }\n this.list.focused = value;\n }\n\n getFilterMode(): TreeFilterMode {\n return this.filterMode;\n }\n\n private initialSelectedEntryId(): string | undefined {\n return (\n this.entries.find((entry) => entry.isCurrentLeaf)?.id ??\n [...this.entries].reverse().find((entry) => entry.isOnActivePath)?.id\n );\n }\n\n private filteredEntries(mode: TreeFilterMode): TuiTranscriptTreeEntry[] {\n const baseEntries = filterTuiTranscriptTreeEntries(this.entries, mode);\n if (this.foldedEntryIds.size === 0) return baseEntries;\n const byId = new Map(this.entries.map((entry) => [entry.id, entry]));\n return baseEntries.filter((entry) => {\n let parentId = entry.parentId;\n while (parentId) {\n if (this.foldedEntryIds.has(parentId)) return false;\n parentId = byId.get(parentId)?.parentId;\n }\n return true;\n });\n }\n\n private visibleUnfoldedEntries(mode = this.filterMode): TuiTranscriptTreeEntry[] {\n return filterTuiTranscriptTreeEntries(this.entries, mode);\n }\n\n private hasVisibleChild(entryId: string): boolean {\n const maps = this.visibleTreeMaps(this.visibleUnfoldedEntries());\n return this.isFoldableEntryId(entryId, maps);\n }\n\n private isFoldableEntryId(\n entryId: string,\n maps: {\n childrenByParentId: Map<string | null, string[]>;\n parentByEntryId: Map<string, string | null>;\n },\n ): boolean {\n const children = maps.childrenByParentId.get(entryId);\n if (!children || children.length === 0) return false;\n const parentId = maps.parentByEntryId.get(entryId);\n if (!parentId) return true;\n return (maps.childrenByParentId.get(parentId)?.length ?? 0) > 1;\n }\n\n private nearestVisibleEntryId(\n entryId: string | undefined,\n visibleEntries: TuiTranscriptTreeEntry[],\n ): string | undefined {\n if (!entryId) return undefined;\n const visibleIds = new Set(visibleEntries.map((entry) => entry.id));\n const byId = new Map(this.entries.map((entry) => [entry.id, entry]));\n let currentId: string | undefined = entryId;\n while (currentId) {\n if (visibleIds.has(currentId)) return currentId;\n currentId = byId.get(currentId)?.parentId;\n }\n return undefined;\n }\n\n private visibleTreeMaps(visibleEntries: TuiTranscriptTreeEntry[]): {\n childrenByParentId: Map<string | null, string[]>;\n parentByEntryId: Map<string, string | null>;\n indexByEntryId: Map<string, number>;\n } {\n const visibleIds = new Set(visibleEntries.map((entry) => entry.id));\n const byId = new Map(this.entries.map((entry) => [entry.id, entry]));\n const childrenByParentId = new Map<string | null, string[]>();\n const parentByEntryId = new Map<string, string | null>();\n const indexByEntryId = new Map<string, number>();\n\n childrenByParentId.set(null, []);\n const nearestVisibleParent = (entry: TuiTranscriptTreeEntry): string | null => {\n let parentId = entry.parentId;\n while (parentId) {\n if (visibleIds.has(parentId)) return parentId;\n parentId = byId.get(parentId)?.parentId;\n }\n return null;\n };\n\n visibleEntries.forEach((entry, index) => {\n const parentId = nearestVisibleParent(entry);\n parentByEntryId.set(entry.id, parentId);\n indexByEntryId.set(entry.id, index);\n const siblings = childrenByParentId.get(parentId) ?? [];\n siblings.push(entry.id);\n childrenByParentId.set(parentId, siblings);\n });\n\n return { childrenByParentId, parentByEntryId, indexByEntryId };\n }\n\n private moveToBranchSegment(direction: 'up' | 'down'): void {\n const selectedId = this.list.getSelectedItem()?.value;\n if (!selectedId) return;\n const visibleEntries = this.filteredEntries(this.filterMode);\n const maps = this.visibleTreeMaps(visibleEntries);\n let currentId = selectedId;\n\n if (direction === 'down') {\n while (true) {\n const children = maps.childrenByParentId.get(currentId) ?? [];\n if (children.length === 0) {\n this.list.setSelectedValue(currentId);\n return;\n }\n if (children.length > 1) {\n this.list.setSelectedValue(children[0]!);\n return;\n }\n currentId = children[0]!;\n }\n }\n\n while (true) {\n const parentId = maps.parentByEntryId.get(currentId) ?? null;\n if (parentId === null) {\n this.list.setSelectedValue(currentId);\n return;\n }\n const children = maps.childrenByParentId.get(parentId) ?? [];\n if (children.length > 1) {\n const segmentIndex = maps.indexByEntryId.get(currentId);\n const selectedIndex = maps.indexByEntryId.get(selectedId);\n if (segmentIndex !== undefined && selectedIndex !== undefined && segmentIndex < selectedIndex) {\n this.list.setSelectedValue(currentId);\n return;\n }\n }\n currentId = parentId;\n }\n }\n\n private refreshItems(options: { mode?: TreeFilterMode; selectedId?: string } = {}): void {\n const mode = options.mode ?? this.filterMode;\n const selectedId = options.selectedId ?? this.list.getSelectedItem()?.value ?? this.lastSelectedEntryId;\n const visibleEntries = this.filteredEntries(mode);\n const unfoldedVisibleEntries = this.visibleUnfoldedEntries(mode);\n const unfoldedMaps = this.visibleTreeMaps(unfoldedVisibleEntries);\n const foldableIds = new Set(\n unfoldedVisibleEntries\n .filter((entry) => this.isFoldableEntryId(entry.id, unfoldedMaps))\n .map((entry) => entry.id),\n );\n this.list.setItems(\n transcriptTreeSelectItems(visibleEntries, {\n showLabelTimestamps: this.showLabelTimestamps,\n foldedIds: this.foldedEntryIds,\n foldableIds,\n allEntries: this.entries,\n }),\n );\n const targetId = this.nearestVisibleEntryId(selectedId, visibleEntries);\n if (targetId) {\n this.list.setSelectedValue(targetId);\n }\n this.rememberSelectedEntry();\n }\n\n private setFilterMode(mode: TreeFilterMode): void {\n const selectedId = this.list.getSelectedItem()?.value;\n this.filterMode = mode;\n this.foldedEntryIds.clear();\n this.refreshItems({ mode, selectedId });\n this.onFilterChange?.(mode);\n }\n\n private foldSelectedEntry(): boolean {\n const selectedId = this.list.getSelectedItem()?.value;\n if (!selectedId || !this.hasVisibleChild(selectedId) || this.foldedEntryIds.has(selectedId)) {\n return false;\n }\n this.foldedEntryIds.add(selectedId);\n this.refreshItems({ selectedId });\n return true;\n }\n\n private unfoldSelectedEntry(): boolean {\n const selectedId = this.list.getSelectedItem()?.value;\n if (!selectedId || !this.foldedEntryIds.delete(selectedId)) {\n return false;\n }\n this.refreshItems({ selectedId });\n return true;\n }\n\n private clearSearchAndFolds(): boolean {\n if (this.list.getSearchQuery().length === 0) return false;\n const selectedId = this.list.getSelectedItem()?.value ?? this.lastSelectedEntryId;\n this.foldedEntryIds.clear();\n this.refreshItems({ selectedId });\n this.list.clearSearch({ selectedValue: selectedId });\n this.rememberSelectedEntry();\n return true;\n }\n\n private pageSelection(direction: 'up' | 'down'): void {\n const visibleEntries = this.filteredEntries(this.filterMode);\n const selectedId = this.list.getSelectedItem()?.value;\n const selectedIndex = selectedId\n ? visibleEntries.findIndex((entry) => entry.id === selectedId)\n : 0;\n const currentIndex = selectedIndex >= 0 ? selectedIndex : 0;\n const delta = direction === 'up' ? -this.maxVisible : this.maxVisible;\n const nextIndex = Math.max(0, Math.min(visibleEntries.length - 1, currentIndex + delta));\n const nextEntry = visibleEntries[nextIndex];\n if (nextEntry) {\n this.list.setSelectedValue(nextEntry.id);\n }\n }\n\n updateEntryLabel(entryId: string, label: string | undefined): void {\n const entry = this.entries.find((candidate) => candidate.id === entryId);\n if (!entry) return;\n if (label?.trim()) {\n entry.userLabel = label.trim();\n entry.labelTimestamp = new Date().toISOString();\n } else {\n delete entry.userLabel;\n delete entry.labelTimestamp;\n }\n this.refreshItems();\n }\n\n private toggleFilterMode(mode: TreeFilterMode): void {\n this.setFilterMode(this.filterMode === mode ? 'default' : mode);\n }\n\n private cycleFilter(delta: 1 | -1): void {\n const idx = TREE_FILTER_MODES.indexOf(this.filterMode);\n const next = TREE_FILTER_MODES[(idx + delta + TREE_FILTER_MODES.length) % TREE_FILTER_MODES.length]!;\n this.setFilterMode(next);\n }\n\n private rememberSelectedEntry(): void {\n const selectedId = this.list.getSelectedItem()?.value;\n if (selectedId) {\n this.lastSelectedEntryId = selectedId;\n }\n }\n\n handleInput(keyData: string): void {\n if (this.labelInput) {\n if (this.keybindings.matches(keyData, 'tui.select.confirm')) {\n const value = this.labelInput.getValue().trim();\n const entry = this.labelEntry;\n this.labelInput = null;\n this.labelEntry = null;\n if (entry) {\n this.onLabelSubmit?.(entry, value || undefined);\n }\n return;\n }\n if (this.keybindings.matches(keyData, 'tui.select.cancel')) {\n this.labelInput = null;\n this.labelEntry = null;\n return;\n }\n this.labelInput.handleInput(keyData);\n return;\n }\n\n if (this.keybindings.matches(keyData, 'app.tree.filter.default')) {\n this.setFilterMode('default');\n return;\n }\n if (this.keybindings.matches(keyData, 'app.tree.filter.noTools')) {\n this.toggleFilterMode('no-tools');\n return;\n }\n if (this.keybindings.matches(keyData, 'app.tree.filter.userOnly')) {\n this.toggleFilterMode('user-only');\n return;\n }\n if (this.keybindings.matches(keyData, 'app.tree.filter.labeledOnly')) {\n this.toggleFilterMode('labeled-only');\n return;\n }\n if (this.keybindings.matches(keyData, 'app.tree.filter.all')) {\n this.toggleFilterMode('all');\n return;\n }\n if (this.keybindings.matches(keyData, 'app.tree.filter.cycleForward')) {\n this.cycleFilter(1);\n return;\n }\n if (this.keybindings.matches(keyData, 'app.tree.filter.cycleBackward')) {\n this.cycleFilter(-1);\n return;\n }\n if (this.keybindings.matches(keyData, 'app.tree.foldOrUp')) {\n if (!this.foldSelectedEntry()) {\n this.moveToBranchSegment('up');\n }\n return;\n }\n if (this.keybindings.matches(keyData, 'app.tree.unfoldOrDown')) {\n if (!this.unfoldSelectedEntry()) {\n this.moveToBranchSegment('down');\n }\n return;\n }\n if (\n this.keybindings.matches(keyData, 'tui.editor.cursorLeft') ||\n this.keybindings.matches(keyData, 'tui.select.pageUp')\n ) {\n this.pageSelection('up');\n return;\n }\n if (\n this.keybindings.matches(keyData, 'tui.editor.cursorRight') ||\n this.keybindings.matches(keyData, 'tui.select.pageDown')\n ) {\n this.pageSelection('down');\n return;\n }\n if (this.keybindings.matches(keyData, 'tui.select.cancel')) {\n if (this.clearSearchAndFolds()) return;\n this.onCancel?.();\n return;\n }\n if (this.keybindings.matches(keyData, 'app.tree.editLabel')) {\n const item = this.list.getSelectedItem();\n const entry = item ? this.entries.find((candidate) => candidate.id === item.value) : undefined;\n if (entry) {\n this.labelEntry = entry;\n this.labelInput = new Input();\n if (entry.userLabel) {\n this.labelInput.setValue(entry.userLabel);\n }\n this.labelInput.focused = this.list.focused;\n }\n return;\n }\n if (this.keybindings.matches(keyData, 'app.tree.toggleLabelTimestamp')) {\n this.showLabelTimestamps = !this.showLabelTimestamps;\n this.refreshItems();\n return;\n }\n const queryBefore = this.list.getSearchQuery();\n const selectedId = this.list.getSelectedItem()?.value ?? this.lastSelectedEntryId;\n if (this.list.getSelectedItem()?.value) {\n this.lastSelectedEntryId = this.list.getSelectedItem()?.value;\n }\n this.list.handleInput(keyData);\n if (this.list.getSearchQuery() !== queryBefore) {\n if (this.foldedEntryIds.size > 0) {\n this.foldedEntryIds.clear();\n this.refreshItems({ selectedId });\n return;\n }\n if (selectedId) {\n this.list.setSelectedValue(selectedId);\n }\n this.rememberSelectedEntry();\n }\n }\n\n render(width: number): string[] {\n const stats = this.list.getSelectionStats();\n const statusText = theme.dim(\n `(${stats.selected}/${stats.total})${transcriptTreeStatusLabels(this.filterMode, this.showLabelTimestamps)}`,\n );\n if (this.labelInput) {\n const target = this.labelEntry?.userLabel ?? this.labelEntry?.label ?? this.labelEntry?.id ?? 'entry';\n const confirm = formatKeyIds(this.keybindings, 'tui.select.confirm', { capitalize: true });\n const cancel = formatKeyIds(this.keybindings, 'tui.select.cancel', { capitalize: true });\n return [\n statusText,\n theme.dim(`label ${target} (empty to clear)`),\n ...this.labelInput.render(Math.max(1, width)),\n theme.dim(`${confirm} save · ${cancel} cancel`),\n ];\n }\n const listLines = this.list.render(width);\n const renderedListLines =\n stats.total === 0\n ? listLines.map((line) =>\n line.includes('No matches') ? searchableSelectListTheme.noMatch(' No entries found') : line,\n )\n : listLines;\n return [\n statusText,\n ...renderedListLines,\n '',\n ...formatTranscriptTreeHelpLines(this.keybindings, width).map((line) => theme.dim(line)),\n ];\n }\n\n invalidate(): void {\n this.list.invalidate();\n }\n\n getSelectedItem(): SelectItem | null {\n return this.list.getSelectedItem();\n }\n}\n\nexport function userMessageForkSelectItems(entries: TuiTranscriptTreeEntry[]): SelectItem[] {\n return entries\n .filter((entry) => entry.role === 'user')\n .map((entry, index, all) => ({\n value: entry.id,\n label: entry.preview?.trim() || `User message ${index + 1}`,\n description: `Message ${index + 1} of ${all.length}`,\n searchText: [entry.id, entry.preview ?? '', entry.contentText ?? '', entry.createdAt ?? ''].join(' '),\n }));\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui-transcript-tree.js","names":[],"sources":["../../../src/tui/tui-transcript-tree.ts"],"sourcesContent":["import type { TranscriptStoredRow } from '../session/session-context-for-llm.js';\nimport { buildTranscriptOutline } from '../session/transcript-outline.js';\nimport type { TuiTranscriptTreeEntry } from './tui-backend.js';\nimport type { TreeFilterMode } from './tui-settings.js';\n\nconst TRANSCRIPT_ROW_ID_RE = /^row-(\\d+)$/;\n\nexport function transcriptTreeEntryIdToRowNumber(entryId: string): number | null {\n const match = TRANSCRIPT_ROW_ID_RE.exec(entryId.trim());\n if (!match) return null;\n const row = Number.parseInt(match[1], 10);\n return Number.isFinite(row) && row > 0 ? row : null;\n}\n\nexport function buildTuiTranscriptTree(rows: TranscriptStoredRow[]): TuiTranscriptTreeEntry[] {\n return buildTranscriptOutline(rows).map((entry) => ({\n id: entry.id,\n ...(entry.parentId ? { parentId: entry.parentId } : {}),\n depth: entry.depth,\n label: entry.label,\n ...(entry.role ? { role: entry.role } : {}),\n ...(entry.userLabel ? { userLabel: entry.userLabel } : {}),\n ...(entry.labelTimestamp ? { labelTimestamp: entry.labelTimestamp } : {}),\n turn: entry.turn,\n ...(entry.preview ? { preview: entry.preview } : {}),\n ...(entry.contentText ? { contentText: entry.contentText } : {}),\n ...(entry.toolCallPreview ? { toolCallPreview: entry.toolCallPreview } : {}),\n ...(entry.createdAt ? { createdAt: entry.createdAt } : {}),\n ...(entry.isOnActivePath ? { isOnActivePath: entry.isOnActivePath } : {}),\n ...(entry.isCurrentLeaf ? { isCurrentLeaf: entry.isCurrentLeaf } : {}),\n }));\n}\n\nexport function filterTuiTranscriptTreeEntries(\n entries: TuiTranscriptTreeEntry[],\n mode: TreeFilterMode,\n): TuiTranscriptTreeEntry[] {\n if (mode === 'all') return entries;\n return entries.filter((entry) => {\n if (!entry.isCurrentLeaf && isEmptyAssistantTreeEntry(entry)) {\n return false;\n }\n if (mode === 'user-only') {\n return entry.role === 'user';\n }\n if (mode === 'labeled-only') {\n return Boolean(entry.userLabel);\n }\n const isTool = entry.role === 'tool' || entry.role === 'toolResult' || entry.label.startsWith('tool:');\n const isBookkeeping =\n entry.label === 'context' ||\n entry.label === 'model_change' ||\n entry.label === 'thinking_level_change' ||\n entry.label === 'session_info' ||\n entry.label.startsWith('custom:') ||\n entry.label.startsWith('label:');\n if (mode === 'no-tools') {\n return !isTool && !isBookkeeping;\n }\n return !isBookkeeping;\n });\n}\n\nfunction isEmptyAssistantTreeEntry(entry: TuiTranscriptTreeEntry): boolean {\n if (entry.role !== 'assistant') return false;\n const preview = entry.preview?.trim();\n if (!preview) return true;\n return /^(?:\\[[^\\]]+\\]\\s*)+$/.test(preview);\n}\n\nexport function formatTuiTranscriptTreeEntryDisplayText(entry: TuiTranscriptTreeEntry): string {\n const preview = entry.preview?.trim();\n const toolCallPreview = entry.toolCallPreview?.trim();\n const role = entry.role?.trim() || entry.label;\n if (!preview) {\n if (role === 'assistant') return 'assistant: (no content)';\n if (role === 'tool' || role === 'toolResult' || entry.label.startsWith('tool:')) {\n return `[${formatTuiTranscriptToolDisplayName(entry.label)}]`;\n }\n return entry.label;\n }\n if (role === 'user' || role === 'assistant') {\n return `${role}: ${preview}`;\n }\n if (role === 'bashExecution' || entry.label === 'bashExecution') {\n return `[bash]: ${preview}`;\n }\n if (role === 'tool' || role === 'toolResult' || entry.label.startsWith('tool:')) {\n if (toolCallPreview) return toolCallPreview;\n return `[${formatTuiTranscriptToolDisplayName(entry.label)}]`;\n }\n if (entry.label === 'model_change') {\n const model = preview.includes('/') ? (preview.split('/').pop() ?? preview) : preview;\n return `[model: ${model}]`;\n }\n if (entry.label === 'thinking_level_change') {\n return `[${preview}]`;\n }\n if (entry.label === 'session_info') {\n return `[${preview}]`;\n }\n if (entry.label.startsWith('label:')) {\n return `[${preview}]`;\n }\n if (entry.label === 'compaction') {\n return `[compaction: ${preview}]`;\n }\n if (entry.label === 'branch_summary') {\n return `[branch summary]: ${preview}`;\n }\n if (entry.label.startsWith('custom:')) {\n return `[${entry.label}]${preview ? `: ${preview}` : ''}`;\n }\n return `${entry.label}: ${preview}`;\n}\n\nfunction formatTuiTranscriptToolDisplayName(label: string): string {\n return label.startsWith('tool:') ? label.slice('tool:'.length) || 'tool' : label;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui-types.js","names":[],"sources":["../../../src/tui/tui-types.ts"],"sourcesContent":["import type { GatewayCredential } from '../gateway/credential.js';\n\n/** TUI configuration options passed from CLI. */\nexport interface TuiOptions {\n /** Connect to a running gateway instead of embedded mode. */\n url?: string;\n /** Gateway shared credential for remote mode. */\n credential?: GatewayCredential;\n /** Session key to resume. */\n session?: string;\n /** Agent id for a fresh TUI session. */\n agentId?: string;\n /** Thinking level override. */\n thinking?: string;\n /** Single message to send on start, then stay open. */\n message?: string;\n /** Workspace directory for the new TUI session. */\n workdir?: string;\n /** Use the launch directory as the new TUI session workspace when no workdir is set. */\n useStartupCwd?: boolean;\n /** Run in embedded (local) mode — no gateway required. */\n local?: boolean;\n /** Theme id: `auto`, `dark`, `light`, or custom name under `~/.xopc/themes/`. */\n theme?: string;\n /** Open the session picker after the TUI connects instead of loading the startup session. */\n openSessionPickerOnStart?: boolean;\n}\n\nexport type TuiExitReason = 'exit' | 'signal';\n\nexport interface TuiResult {\n exitReason: TuiExitReason;\n}\n\n/** Parsed SSE event from the stream. */\nexport interface ParsedSSEEvent {\n event: string;\n data: string;\n id?: string;\n}\n\n/** Activity status for the TUI status bar. */\nexport type ActivityStatus =\n | 'idle'\n | 'sending'\n | 'waiting'\n | 'streaming'\n | 'running'\n | 'compacting'\n | 'stalled'\n | 'recovering'\n | 'aborting';\n\nexport type TuiEventSource = 'agent-response' | 'agent-resume' | 'broadcast' | 'embedded' | 'unknown';\n\nexport type TuiRunPhase =\n | 'idle'\n | 'sending'\n | 'waiting'\n | 'streaming'\n | 'tool'\n | 'progress'\n | 'stalled'\n | 'recovering'\n | 'aborting';\n\nexport interface TuiRunStatus {\n phase: TuiRunPhase;\n runId: string | null;\n directStreamRunId: string | null;\n lastCompletedRunId: string | null;\n source: TuiEventSource;\n lastEvent: string | null;\n startedAt: number | null;\n lastActivityAt: number | null;\n stalledAt: number | null;\n recoveredAt: number | null;\n}\n\n/** Session metadata shown in the TUI footer. */\nexport interface SessionInfo {\n model?: string;\n modelProvider?: string;\n thinkingLevel?: string;\n reasoningLevel?: string;\n verboseLevel?: string;\n contextTokens?: number | null;\n totalTokens?: number | null;\n contextWindow?: number | null;\n contextUsagePercent?: number | null;\n displayName?: string;\n effectiveWorkspacePath?: string;\n workingDirectoryLocked?: boolean;\n}\n\n/** Mutable state bag for the TUI runtime. */\nexport interface TuiState {\n currentSessionKey: string;\n activeRunId: string | null;\n isConnected: boolean;\n activityStatus: ActivityStatus;\n runStatus: TuiRunStatus;\n connectionStatus: string;\n sessionInfo: SessionInfo;\n autoMessageSent: boolean;\n historyLoaded: boolean;\n toolsExpanded: boolean;\n showThinking: boolean;\n /** Last Ctrl+C timestamp for double-press exit (see `resolveCtrlCAction`). */\n lastCtrlCAt: number;\n exitRequested: boolean;\n /** Queued via Alt+Enter while a run is active; flushed FIFO when the run ends. */\n messageFollowUpQueue: string[];\n /** Queued Enter-while-busy steering messages after the first in-flight steer. */\n steeringQueue: string[];\n /** Ctrl+P cycle filter; `null` = all models from catalog. */\n scopedModelRefs: string[] | null;\n /** Last Escape timestamp for double-press actions. */\n lastEscapeAt: number;\n /** Human-readable progress from SSE `progress` events. */\n progressMessage: string | null;\n /** Session compaction in flight (local /compact handler). */\n isCompacting: boolean;\n /** Messages queued while compacting. */\n compactionQueue: string[];\n}\n\nexport function createInitialState(sessionKey: string): TuiState {\n return {\n currentSessionKey: sessionKey,\n activeRunId: null,\n isConnected: false,\n activityStatus: 'idle',\n runStatus: {\n phase: 'idle',\n runId: null,\n directStreamRunId: null,\n lastCompletedRunId: null,\n source: 'unknown',\n lastEvent: null,\n startedAt: null,\n lastActivityAt: null,\n stalledAt: null,\n recoveredAt: null,\n },\n connectionStatus: 'connecting',\n sessionInfo: {},\n autoMessageSent: false,\n historyLoaded: false,\n toolsExpanded: false,\n showThinking: false,\n lastCtrlCAt: 0,\n exitRequested: false,\n messageFollowUpQueue: [],\n steeringQueue: [],\n scopedModelRefs: null,\n lastEscapeAt: 0,\n progressMessage: null,\n isCompacting: false,\n compactionQueue: [],\n };\n}\n"],"mappings":";AA+HA,SAAgB,mBAAmB,YAA8B;AAC/D,QAAO;EACL,mBAAmB;EACnB,aAAa;EACb,aAAa;EACb,gBAAgB;EAChB,WAAW;GACT,OAAO;GACP,OAAO;GACP,mBAAmB;GACnB,oBAAoB;GACpB,QAAQ;GACR,WAAW;GACX,WAAW;GACX,gBAAgB;GAChB,WAAW;GACX,aAAa;GACd;EACD,kBAAkB;EAClB,aAAa,EAAE;EACf,iBAAiB;EACjB,eAAe;EACf,eAAe;EACf,cAAc;EACd,aAAa;EACb,eAAe;EACf,sBAAsB,EAAE;EACxB,eAAe,EAAE;EACjB,iBAAiB;EACjB,cAAc;EACd,iBAAiB;EACjB,cAAc;EACd,iBAAiB,EAAE;EACpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui-workflow-slash.js","names":[],"sources":["../../../src/tui/tui-workflow-slash.ts"],"sourcesContent":["/**\n * Helper for {@link createTuiCommandHandler}: when the user types an unknown\n * slash command in the TUI, check whether the name matches a saved workflow\n * and, if so, rewrite the input into a natural-language prompt that\n * deterministically triggers the `workflow` tool.\n *\n * Why a rewrite and not a direct execution?\n * Slash commands in xopc are handled by the chat-commands framework whose\n * handlers return text shown back to the user — there is no hook to \"inject\n * the result as the next user message and start an agent turn\". So the\n * shortest reliable path is to turn `/audit_repo` into the same plain-text\n * request the model already knows how to handle.\n *\n * Why catalog the workflow list at the TUI layer?\n * The catalog reads `~/.xopc/workflows/` synchronously (single `readdir`),\n * so the slash dispatch stays sync and the user sees no latency. The lookup\n * only runs for inputs that started with `/` and didn't match any built-in\n * or extension command, so the cost is negligible.\n *\n * Built-in TUI command names that overlap with a workflow file name keep their\n * existing TUI behaviour — the slash dispatcher matches the built-in switch\n * cases before this helper is consulted.\n */\n\nimport { createWorkflowCatalog } from '../agent/workflow/catalog.js';\n\nlet cachedNames: Set<string> | null = null;\nlet cachedAt = 0;\nconst CACHE_TTL_MS = 5_000;\n\n/** Reset the cache (for tests, or after a `/workflow save`). */\nexport function resetWorkflowSlashCache(): void {\n cachedNames = null;\n cachedAt = 0;\n}\n\nfunction knownWorkflowNames(): Set<string> {\n const now = Date.now();\n if (cachedNames && now - cachedAt < CACHE_TTL_MS) return cachedNames;\n try {\n const catalog = createWorkflowCatalog();\n cachedNames = new Set(catalog.list().map((e) => e.name));\n } catch {\n cachedNames = new Set();\n }\n cachedAt = now;\n return cachedNames;\n}\n\n/**\n * Returns a rewritten user message when `name` matches a known workflow,\n * otherwise `null`. Args after the slash are passed along as a hint to the\n * model — most workflows expect free-form context, not strict JSON, and the\n * model can shape the call.\n */\nexport function rewriteUnknownSlashAsWorkflow(\n name: string,\n args: string,\n resolver: () => Set<string> = knownWorkflowNames,\n): string | null {\n const normalized = name.trim();\n if (!normalized) return null;\n if (!resolver().has(normalized)) return null;\n\n const tail = args.trim();\n if (!tail) {\n return `Run the ${normalized} workflow (call workflow tool with name=\"${normalized}\").`;\n }\n return (\n `Run the ${normalized} workflow (call workflow tool with name=\"${normalized}\").\\n` +\n `Use this argument: ${tail}`\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAI,cAAkC;AACtC,IAAI,WAAW;AACf,MAAM,eAAe;;AAGrB,SAAgB,0BAAgC;AAC9C,eAAc;AACd,YAAW;;AAGb,SAAS,qBAAkC;CACzC,MAAM,MAAM,KAAK,KAAK;AACtB,KAAI,eAAe,MAAM,WAAW,aAAc,QAAO;AACzD,KAAI;EACF,MAAM,UAAU,uBAAuB;AACvC,gBAAc,IAAI,IAAI,QAAQ,MAAM,CAAC,KAAK,MAAM,EAAE,KAAK,CAAC;SAClD;AACN,gCAAc,IAAI,KAAK;;AAEzB,YAAW;AACX,QAAO;;;;;;;;AAST,SAAgB,8BACd,MACA,MACA,WAA8B,oBACf;CACf,MAAM,aAAa,KAAK,MAAM;AAC9B,KAAI,CAAC,WAAY,QAAO;AACxB,KAAI,CAAC,UAAU,CAAC,IAAI,WAAW,CAAE,QAAO;CAExC,MAAM,OAAO,KAAK,MAAM;AACxB,KAAI,CAAC,KACH,QAAO,WAAW,WAAW,2CAA2C,WAAW;AAErF,QACE,WAAW,WAAW,2CAA2C,WAAW,0BACtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui.js","names":["packageJson.version"],"sources":["../../../src/tui/tui.ts"],"sourcesContent":["import {\n Container,\n Loader,\n type LoaderIndicatorOptions,\n ProcessTerminal,\n setKeybindings,\n TUI,\n type Component,\n type EditorComponent,\n type OverlayHandle,\n type OverlayOptions,\n} from '@earendil-works/pi-tui';\nimport type { AgentMessage } from '@earendil-works/pi-agent-core';\nimport { Buffer } from 'node:buffer';\nimport { randomUUID } from 'node:crypto';\nimport { mkdirSync, mkdtempSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { dirname, isAbsolute, join, relative, resolve } from 'node:path';\nimport { spawnSync } from 'node:child_process';\n\nimport type { ReasoningLevel, ThinkLevel, VerboseLevel } from '../agent/transcript/thinking-types.js';\nimport { resolveEffectiveAgentProfileForSession } from '../config/agent-profile.js';\nimport { loadConfig } from '../config/index.js';\nimport { resolveStateDir, resolveXopcDatabasePath } from '../config/paths.js';\nimport { ensureStarterAgentsInitialized } from '../agent/starter-agents.js';\nimport { MAX_CHAT_ATTACHMENTS, MAX_WEBCHAT_ATTACHMENT_FILE_BYTES } from '../gateway/chat-limits.js';\nimport { resolveTuiSessionKey, resolveTuiStartupSessionKey } from '../routing/resolve-tui-session-key.js';\nimport { normalizeAgentId, parseAgentSessionKey } from '../routing/agent-session-key.js';\nimport type {\n TuiBackend,\n TuiCompactionResult,\n TuiEvent,\n TuiExportFormat,\n TuiInboundAttachment,\n TuiModelChoice,\n TuiShareRequest,\n TuiStartupResources,\n} from './tui-backend.js';\nimport { EmbeddedBackend } from './backends/embedded-backend.js';\nimport { GatewaySseBackend } from './backends/gateway-sse-backend.js';\nimport {\n clearSeenStreamEvents,\n clearSeenStreamEventsForRun,\n DEFAULT_STREAMING_WATCHDOG_MS,\n dispatchAgentEvent,\n} from './tui-agent-events.js';\nimport { ChatLog } from './components/chat-log.js';\nimport { CustomEditor } from './components/custom-editor.js';\nimport { TuiBottomBar } from './components/tui-bottom-bar.js';\nimport { TuiHeader } from './components/tui-header.js';\nimport { createTuiCommandHandler, getSlashCommands, type SlashCommandDef } from './tui-commands.js';\nimport {\n formatTuiCompactionResult,\n formatTuiShareResult,\n type TuiExportRequest,\n type TuiImportRequest,\n} from './tui-command-formatters.js';\nimport { createLocalShellRunner } from './tui-local-shell.js';\nimport { drainFollowUpQueue, restoreQueuedMessages } from './tui-follow-up-queue.js';\nimport { createBackspaceDeduper, drainAndStopTuiSafely, resolveCtrlCAction } from './tui-lifecycle.js';\nimport {\n openAgentPickerOverlay,\n openProjectTrustOverlay,\n openReviewLauncherOverlay,\n openScopedModelsOverlay,\n openSessionPickerOverlay,\n openSessionTreeOverlay,\n openSettingsOverlay,\n openTimelineOverlay,\n openTranscriptTreeOverlay,\n openThinkingSelectorOverlay,\n openUserMessageForkOverlay,\n} from './tui-picker-overlay.js';\nimport { openModelPickerOverlay } from './tui-model-picker.js';\nimport { runTuiOAuthLogin } from './tui-oauth-login.js';\nimport {\n createEditorSubmitHandler,\n createSubmitBurstCoalescer,\n shouldEnableWindowsGitBashPasteFallback,\n} from './tui-submit.js';\nimport { installTuiStdioFilter } from './tui-stdio-filter.js';\nimport { withTuiSuspended } from './tui-suspend.js';\nimport { extensionForImageMimeType, readClipboardImage } from './clipboard-image.js';\nimport { copyTextToClipboard } from './clipboard-text.js';\nimport { renderWorkflowFinalSummary, renderWorkflowPanel } from '../agent/workflow/snapshot.js';\nimport { isTerminalWorkflowRunStatus, type WorkflowRunView } from '../workflows/domain/index.js';\nimport { runViewToSnapshot } from '../workflows/service/run-view-to-snapshot.js';\nimport {\n applyThemeById,\n getCustomThemesDir,\n getThemeExports,\n getBashExcludeBorderColor,\n getBashModeBorderColor,\n getThinkingBorderColor,\n initTuiTheme,\n listAvailableThemeIds,\n resolveThemePalette,\n} from './theme-manager.js';\nimport { editorTheme, theme } from './theme.js';\nimport { loadTuiSettings, saveTuiSettings, type TuiSettings } from './tui-settings.js';\nimport { resolveFdPath } from './tui-fd-path.js';\nimport packageJson from '../../package.json' with { type: 'json' };\nimport { createSessionActions } from './tui-session-actions.js';\nimport { createInitialState, type TuiOptions, type TuiResult, type TuiState } from './tui-types.js';\nimport { createXopcTuiKeybindingsManager } from './tui-keybindings-file.js';\nimport { formatKeyIds } from './format-tui-hotkeys.js';\nimport { formatTuiStartupText } from './tui-startup-text.js';\nimport { filterModelsForCycle, loadScopedModelRefs, saveScopedModelRefs } from './tui-scoped-models.js';\nimport {\n formatBusyResponseHint,\n formatSteerUnavailableHint,\n formatSuspendUnsupportedHint,\n} from './tui-runtime-hints.js';\nimport { loadExtensionsForTuiLocalMode } from './extension-host/load-extensions.js';\nimport { createTuiExtensionRuntime } from './extension-host/runtime.js';\nimport { TuiSessionSnapshot } from './tui-session-snapshot.js';\nimport {\n extensionCustomMessageContentToText,\n extensionCustomMessageToTurnText,\n extensionUserMessageContentToText,\n} from './tui-extension-user-message.js';\nimport type { ExtensionRegistryImpl } from '../extensions/loader.js';\nimport type {\n ExtensionCustomMessage,\n ExtensionSendMessageOptions,\n ExtensionSendUserMessageOptions,\n ExtensionUserMessageContent,\n} from '../extensions/types/core.js';\nimport type {\n TuiEditorFactory,\n TuiForkOptions,\n TuiModelRegistryModel,\n TuiNavigateTreeOptions,\n TuiNewSessionOptions,\n TuiReasoningLevel,\n TuiReplacedSessionContext,\n TuiReplacementResult,\n TuiSwitchSessionOptions,\n TuiThinkingLevel,\n TuiVerboseLevel,\n} from '../extensions/types/tui.js';\nimport { getAllModels, getAllProviders, getApiKey, isProviderConfiguredSync } from '../providers/index.js';\nimport { hasTrustRequiringProjectResources, ProjectTrustStore } from '../project-trust/trust-store.js';\nimport { transcriptTreeEntryIdToRowNumber } from './tui-transcript-tree.js';\nimport {\n isActiveRunStreamStale,\n markActiveRunStalled,\n markRunSending,\n markRunRecovering,\n markRunRecoveryComplete,\n} from './tui-run-state.js';\nimport { formatActiveRunStatus, formatRunDuration } from './tui-run-status-format.js';\n\nexport type { TuiOptions, TuiResult };\n\nexport {\n createBackspaceDeduper,\n drainAndStopTuiSafely,\n type DrainableTui,\n isIgnorableTuiStopError,\n resolveCtrlCAction,\n stopTuiSafely,\n} from './tui-lifecycle.js';\n\nexport { withTuiSuspended } from './tui-suspend.js';\n\nconst THINK_LEVEL_CYCLE: ThinkLevel[] = ['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'adaptive'];\n\nfunction nextThinkLevel(current: string | undefined): ThinkLevel {\n const c = (current ?? 'medium').toLowerCase();\n const idx = THINK_LEVEL_CYCLE.indexOf(c as ThinkLevel);\n const mediumIdx = THINK_LEVEL_CYCLE.indexOf('medium');\n const base = idx >= 0 ? idx : mediumIdx >= 0 ? mediumIdx : 0;\n return THINK_LEVEL_CYCLE[(base + 1) % THINK_LEVEL_CYCLE.length]!;\n}\n\nconst DOUBLE_ESCAPE_WINDOW_MS = 500;\n\nfunction escapeHtml(text: string): string {\n return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');\n}\n\nfunction exportExtension(format: TuiExportFormat): string {\n if (format === 'json') return 'json';\n if (format === 'markdown') return 'md';\n return 'html';\n}\n\nfunction wrapMarkdownExportAsHtml(markdown: string): string {\n return [\n '<!doctype html>',\n '<html>',\n '<head>',\n '<meta charset=\"utf-8\">',\n '<title>xopc session export</title>',\n '<style>body{font:14px/1.5 system-ui,sans-serif;margin:32px;max-width:960px}pre{white-space:pre-wrap}</style>',\n '</head>',\n '<body>',\n '<pre>',\n escapeHtml(markdown),\n '</pre>',\n '</body>',\n '</html>',\n '',\n ].join('\\n');\n}\n\nfunction defaultExportPath(sessionKey: string, format: TuiExportFormat): string {\n const safeKey = sessionKey.replace(/[^a-z0-9_.-]+/gi, '_').replace(/^_+|_+$/g, '') || 'session';\n const stamp = new Date().toISOString().replace(/[:.]/g, '-');\n return resolve(process.cwd(), `xopc-session-${safeKey}-${stamp}.${exportExtension(format)}`);\n}\n\nfunction userDisplayContentForAttachments(\n text: string,\n attachments: readonly TuiInboundAttachment[] | undefined,\n): string | unknown[] {\n if (!attachments?.length) return text;\n const blocks: unknown[] = [];\n if (text.trim()) {\n blocks.push({ type: 'text', text });\n }\n for (const att of attachments) {\n if (att.mimeType?.startsWith('image/') || att.type === 'image' || att.type === 'photo') {\n blocks.push({ type: 'image', name: att.name });\n continue;\n }\n blocks.push({ type: 'file', name: att.name });\n }\n return blocks;\n}\n\nfunction shellQuote(value: string): string {\n if (/^[A-Za-z0-9_/:@%+=,.-]+$/.test(value)) {\n return value;\n }\n return `'${value.replace(/'/g, `'\\\\''`)}'`;\n}\n\nfunction formatTuiResumeCommand(opts: TuiOptions, sessionKey: string): string {\n const parts = ['xopc', 'tui'];\n if (opts.local === true) {\n parts.push('--local');\n }\n if (opts.url) {\n parts.push('--url', shellQuote(opts.url));\n }\n parts.push('--session', shellQuote(sessionKey));\n return parts.join(' ');\n}\n\nfunction isLoopbackGatewayUrl(rawUrl: string): boolean {\n try {\n const hostname = new URL(rawUrl).hostname.toLowerCase();\n return hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '::1' || hostname === '[::1]';\n } catch {\n return false;\n }\n}\n\nfunction resolveStartupWorkingDirectory(opts: TuiOptions, isLocalMode: boolean): string | undefined {\n const explicit = opts.workdir?.trim();\n if (explicit) {\n return resolve(explicit);\n }\n if (opts.useStartupCwd === false || opts.session?.trim()) {\n return undefined;\n }\n const gatewayUrl = opts.url ?? 'http://localhost:3120';\n if (isLocalMode || isLoopbackGatewayUrl(gatewayUrl)) {\n return process.cwd();\n }\n return undefined;\n}\n\nfunction isPathSameOrInside(parentDir: string, childDir: string): boolean {\n const rel = relative(resolve(parentDir), resolve(childDir));\n return rel === '' || (!!rel && !rel.startsWith('..') && !isAbsolute(rel));\n}\n\nfunction assistantMessagePlainText(message: AgentMessage): string {\n const content = (message as { content?: unknown }).content;\n if (typeof content === 'string') return content;\n if (!Array.isArray(content)) return '';\n return content\n .map((block) => {\n if (!block || typeof block !== 'object') return '';\n const rec = block as { type?: unknown; text?: unknown };\n return rec.type === 'text' && typeof rec.text === 'string' ? rec.text : '';\n })\n .join('');\n}\n\nexport async function runTui(opts: TuiOptions): Promise<TuiResult> {\n const stdioFilter = installTuiStdioFilter();\n const restoreStdio = () => stdioFilter.restore();\n\n const isLocalMode = opts.local === true;\n const loadedConfig = loadConfig();\n const config = isLocalMode ? ensureStarterAgentsInitialized(loadedConfig).config : loadedConfig;\n const startup = resolveTuiStartupSessionKey({\n cfg: config,\n sessionOption: opts.session,\n agentOption: opts.agentId,\n cwd: process.cwd(),\n });\n let currentAgentId = startup.agentId;\n const sessionScope = startup.sessionScope;\n const sessionMainKey = startup.sessionMainKey;\n const resolveSessionKey = (raw?: string) =>\n resolveTuiSessionKey({\n raw,\n sessionScope,\n currentAgentId,\n sessionMainKey,\n });\n let tuiSettings = loadTuiSettings();\n initTuiTheme({ themeId: opts.theme ?? tuiSettings.theme });\n const state = createInitialState(startup.sessionKey);\n const startupWorkingDirectory = resolveStartupWorkingDirectory(opts, isLocalMode);\n const implicitTrustedWorkspace = startupWorkingDirectory ?? (isLocalMode ? process.cwd() : undefined);\n const projectTrustStore = new ProjectTrustStore();\n let projectTrustSessionDecision: boolean | null = null;\n const isCurrentProjectTrusted = () => {\n if (projectTrustSessionDecision !== null) return projectTrustSessionDecision;\n const persisted = projectTrustStore.get(process.cwd());\n if (persisted !== null) return persisted;\n if (!hasTrustRequiringProjectResources(process.cwd())) return true;\n return !!implicitTrustedWorkspace && isPathSameOrInside(implicitTrustedWorkspace, process.cwd());\n };\n const sessionStateDir = resolveStateDir();\n const sessionDatabasePath = resolveXopcDatabasePath();\n const sessionSnapshot = new TuiSessionSnapshot(\n () => state.currentSessionKey,\n () => process.cwd(),\n () => state.sessionInfo.displayName,\n () => `${sessionDatabasePath}#session=${encodeURIComponent(state.currentSessionKey)}`,\n () => sessionStateDir,\n );\n state.scopedModelRefs = loadScopedModelRefs();\n state.showThinking = tuiSettings.showThinking;\n state.toolsExpanded = tuiSettings.toolsExpanded;\n let pendingImageAttachments: TuiInboundAttachment[] = [];\n const pendingNextTurnCustomMessages: string[] = [];\n let lastRetryMessageText: string | null = null;\n let setExtensionLabel = (_entryId: string, _label: string | undefined): void => {};\n let sendExtensionUserMessage = (\n _content: ExtensionUserMessageContent,\n _options?: ExtensionSendUserMessageOptions,\n ): void => {};\n let appendExtensionEntry = <T = unknown>(_customType: string, _data?: T): void => {};\n let sendExtensionMessage = <T = unknown>(\n _message: ExtensionCustomMessage<T>,\n _options?: ExtensionSendMessageOptions,\n ): void => {};\n\n let extensionRegistry: ExtensionRegistryImpl | undefined;\n if (isLocalMode) {\n extensionRegistry = await loadExtensionsForTuiLocalMode({\n setLabel: (entryId, label) => setExtensionLabel(entryId, label),\n sendUserMessage: (content, options) => sendExtensionUserMessage(content, options),\n appendEntry: (customType, data) => appendExtensionEntry(customType, data),\n sendMessage: (message, options) => sendExtensionMessage(message, options),\n });\n }\n\n const client: TuiBackend = isLocalMode\n ? new EmbeddedBackend({\n config,\n extensionRegistry,\n implicitTrustedWorkspace,\n isWorkspaceTrusted: () => projectTrustSessionDecision,\n })\n : new GatewaySseBackend({\n url: opts.url ?? 'http://localhost:3120',\n credential: opts.credential,\n });\n if (startupWorkingDirectory) {\n state.sessionInfo.effectiveWorkspacePath = startupWorkingDirectory;\n }\n let startupWorkingDirectoryApplied = false;\n let startupProjectApplied = false;\n\n const keybindings = createXopcTuiKeybindingsManager();\n setKeybindings(keybindings);\n\n let modelChoices: TuiModelChoice[] = [];\n const cycleModelChoices = (): TuiModelChoice[] => filterModelsForCycle(modelChoices, state.scopedModelRefs);\n\n const refreshCycleModels = () => {\n bottomBar.invalidate();\n tui.requestRender();\n };\n\n const tui = new TUI(new ProcessTerminal());\n tui.setShowHardwareCursor(tuiSettings.showHardwareCursor);\n tui.setClearOnShrink(tuiSettings.clearOnShrink);\n const dedupeBackspace = createBackspaceDeduper();\n tui.addInputListener((data) => {\n const next = dedupeBackspace(data);\n if (next.length === 0) {\n return { consume: true };\n }\n return { data: next };\n });\n\n const header = new TuiHeader(\n () => ({\n version: packageJson.version ?? 'dev',\n connectionLabel: client.connectionLabel,\n sessionKey: state.currentSessionKey,\n showHints: tuiSettings.showStartupHints,\n }),\n keybindings,\n );\n const statusContainer = new Container();\n const bottomBar = new TuiBottomBar(\n () => state,\n () => opts.thinking,\n () => formatKeyIds(keybindings, 'app.message.dequeue', { capitalize: true }),\n );\n const chatLog = new ChatLog(keybindings);\n chatLog.setViewportRowsProvider(() => Math.max(8, tui.terminal.rows - 8));\n let startupResources: TuiStartupResources | undefined;\n let startupCardShown = false;\n chatLog.setShowThinking(state.showThinking);\n chatLog.setToolsExpanded(state.toolsExpanded);\n chatLog.setToolImageOptions({\n showImages: tuiSettings.showImages,\n imageWidthCells: tuiSettings.imageWidthCells,\n cwd: process.cwd(),\n });\n setExtensionLabel = (entryId, label) => {\n sessionSnapshot.setLabel(entryId, label);\n void client\n .setTranscriptLabel(state.currentSessionKey, entryId, label)\n .catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Label update failed: ${errorMessage}`);\n })\n .finally(() => {\n updateFooter();\n tui.requestRender();\n });\n };\n appendExtensionEntry = (customType, data) => {\n const normalized = customType.trim();\n if (!normalized) {\n throw new Error('appendEntry requires customType.');\n }\n sessionSnapshot.appendCustomEntry(normalized, data);\n void client\n .appendCustomEntry(state.currentSessionKey, normalized, data)\n .catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Custom entry append failed: ${errorMessage}`);\n })\n .finally(() => {\n updateFooter();\n tui.requestRender();\n });\n };\n sendExtensionMessage = (message, options) => {\n const customType = message.customType.trim();\n if (!customType) {\n throw new Error('sendMessage requires customType.');\n }\n const display = message.display ?? true;\n const nextMessage = {\n customType,\n content: message.content,\n display,\n details: message.details,\n };\n sessionSnapshot.appendCustomMessage(nextMessage);\n if (display) {\n chatLog.addCustomMessage({\n customType,\n content: extensionCustomMessageContentToText(message.content),\n rawContent: message.content,\n details: message.details,\n display,\n });\n tui.requestRender();\n }\n const persist = client\n .appendCustomMessage(state.currentSessionKey, nextMessage)\n .catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Custom message append failed: ${errorMessage}`);\n throw err;\n })\n .finally(() => {\n updateFooter();\n tui.requestRender();\n });\n\n const turnText = extensionCustomMessageToTurnText(nextMessage).trim();\n if (!turnText) {\n return;\n }\n void persist\n .then(() => {\n const controlText = `Continue with the extension message \"${customType}\" above.`;\n if (options?.deliverAs === 'nextTurn') {\n pendingNextTurnCustomMessages.push(controlText);\n chatLog.addSystem(\n theme.dim(`Queued extension message for next turn (${pendingNextTurnCustomMessages.length}).`),\n );\n bottomBar.invalidate();\n tui.requestRender();\n return;\n }\n if (state.activeRunId) {\n if (options?.deliverAs === 'followUp') {\n state.messageFollowUpQueue.push(controlText);\n chatLog.addSystem(\n theme.dim(\n `Queued extension follow-up (${state.messageFollowUpQueue.length} in queue). ${tuiSettings.followUpMode === 'all' ? 'All queued messages send together when this reply finishes.' : 'Next sends when this reply finishes.'}`,\n ),\n );\n bottomBar.invalidate();\n tui.requestRender();\n return;\n }\n steerMessage(turnText);\n return;\n }\n if (options?.triggerTurn) {\n sendMessage(controlText);\n }\n })\n .catch(() => {});\n };\n const defaultEditor = new CustomEditor(tui, editorTheme, keybindings, {\n paddingX: tuiSettings.editorPaddingX,\n autocompleteMaxVisible: tuiSettings.autocompleteMaxVisible,\n });\n let editor: EditorComponent = defaultEditor;\n let editorComponentFactory: TuiEditorFactory | undefined;\n const editorContainer = new Container();\n editorContainer.addChild(editor as Component);\n const root = new Container();\n root.addChild(header);\n root.addChild(chatLog);\n root.addChild(statusContainer);\n root.addChild(editorContainer);\n root.addChild(bottomBar);\n tui.addChild(root);\n tui.setFocus(editor as Component);\n\n let editorMode: 'chat' | 'shell' = 'chat';\n let isBashMode = false;\n let isBashExcludeContext = false;\n\n const updateEditorBorderColor = () => {\n if (editorMode === 'shell' || isBashMode) {\n editor.borderColor = isBashExcludeContext ? getBashExcludeBorderColor() : getBashModeBorderColor();\n } else {\n const level = state.sessionInfo.thinkingLevel ?? opts.thinking ?? 'off';\n editor.borderColor = getThinkingBorderColor(level);\n }\n tui.requestRender();\n };\n\n editor.onChange = (text: string) => {\n const trimmed = text.trimStart();\n const nextExclude = trimmed.startsWith('!!');\n const nextBash = editorMode === 'shell' || trimmed.startsWith('!');\n if (nextBash !== isBashMode || nextExclude !== isBashExcludeContext) {\n isBashMode = nextBash;\n isBashExcludeContext = nextExclude;\n updateEditorBorderColor();\n }\n };\n\n const copyDefaultEditorAppHandlers = (target: EditorComponent) => {\n const customEditor = target as unknown as {\n actionHandlers?: unknown;\n onEscape?: () => void;\n onCtrlD?: () => void;\n onPasteImage?: () => void;\n onExtensionShortcut?: (data: string) => boolean;\n };\n if (!(customEditor.actionHandlers instanceof Map)) return;\n customEditor.onEscape ??= () => defaultEditor.onEscape?.();\n customEditor.onCtrlD ??= () => defaultEditor.onCtrlD?.();\n customEditor.onPasteImage ??= () => defaultEditor.onPasteImage?.();\n customEditor.onExtensionShortcut ??= (data: string) => defaultEditor.onExtensionShortcut?.(data) ?? false;\n for (const [action, handler] of defaultEditor.actionHandlers) {\n customEditor.actionHandlers.set(action, handler);\n }\n };\n\n const setEditorExtensionShortcut = () => {\n const customEditor = editor as unknown as {\n onExtensionShortcut?: (data: string) => boolean;\n };\n customEditor.onExtensionShortcut = (data: string) => extensionRuntime.handleShortcut(data);\n };\n\n const setEditorComponent = (factory: TuiEditorFactory | undefined) => {\n editorComponentFactory = factory;\n const currentText = editor.getText();\n editorContainer.clear();\n if (factory) {\n const nextEditor = factory(tui, editorTheme, keybindings) as EditorComponent;\n nextEditor.onSubmit = defaultEditor.onSubmit;\n nextEditor.onChange = defaultEditor.onChange;\n nextEditor.setText(currentText);\n if (nextEditor.borderColor !== undefined) {\n nextEditor.borderColor = defaultEditor.borderColor;\n }\n nextEditor.setPaddingX?.(tuiSettings.editorPaddingX);\n nextEditor.setAutocompleteMaxVisible?.(tuiSettings.autocompleteMaxVisible);\n nextEditor.setAutocompleteProvider?.(extensionRuntime.autocompleteProvider);\n copyDefaultEditorAppHandlers(nextEditor);\n editor = nextEditor;\n } else {\n defaultEditor.setText(currentText);\n editor = defaultEditor;\n }\n editorContainer.addChild(editor as Component);\n setEditorExtensionShortcut();\n tui.setFocus(editor as Component);\n updateEditorBorderColor();\n tui.requestRender();\n };\n\n let activeEditorSelectorClose: (() => void) | null = null;\n\n const closeEditorSelector = () => {\n const close = activeEditorSelectorClose;\n close?.();\n };\n\n const openEditorSelector = (component: Component, focus: Component = component) => {\n closeEditorSelector();\n editorContainer.clear();\n editorContainer.addChild(component);\n tui.setFocus(focus);\n tui.requestRender();\n const close = () => {\n if (activeEditorSelectorClose !== close) return;\n activeEditorSelectorClose = null;\n editorContainer.clear();\n editorContainer.addChild(editor as Component);\n tui.setFocus(editor as Component);\n tui.requestRender();\n };\n activeEditorSelectorClose = close;\n return close;\n };\n\n const openCommandOverlay = (component: Component, _options?: OverlayOptions): OverlayHandle => {\n let hidden = false;\n let closeCurrent = openEditorSelector(component, component);\n return {\n hide: () => closeCurrent(),\n setHidden: (nextHidden: boolean) => {\n hidden = nextHidden;\n if (nextHidden) {\n closeCurrent();\n } else {\n closeCurrent = openEditorSelector(component, component);\n }\n },\n isHidden: () => hidden,\n focus: () => tui.setFocus(component),\n unfocus: () => tui.setFocus(editor as Component),\n isFocused: () => false,\n };\n };\n\n const closeCommandOverlay = () => {\n closeEditorSelector();\n };\n\n const slashCommands = getSlashCommands(isLocalMode, keybindings);\n const resourceSlashCommands: SlashCommandDef[] = [];\n const skillSlashCommands: SlashCommandDef[] = [];\n const workflowSlashCommands: SlashCommandDef[] = [];\n const visibleWorkflowRunIds = new Set<string>();\n const syncResourceSlashCommands = (resources: TuiStartupResources | undefined) => {\n resourceSlashCommands.length = 0;\n skillSlashCommands.length = 0;\n for (const name of resources?.skills ?? []) {\n const skillName = name.trim();\n if (!skillName) continue;\n const command = {\n name: `skill:${skillName}`,\n description: 'Apply skill to the next turn',\n };\n skillSlashCommands.push(command);\n resourceSlashCommands.push(command);\n }\n workflowSlashCommands.length = 0;\n for (const name of resources?.workflows ?? []) {\n const workflowName = name.trim();\n if (!workflowName) continue;\n const command = {\n name: `workflow:${workflowName}`,\n description: 'Run workflow',\n };\n workflowSlashCommands.push(command);\n resourceSlashCommands.push(command);\n }\n };\n let extensionWorkingMessage: string | undefined;\n let extensionWorkingVisible = true;\n let extensionWorkingIndicator: LoaderIndicatorOptions | undefined;\n\n const getAllExtensionThemes = () => {\n const customDir = getCustomThemesDir();\n return listAvailableThemeIds().map((name) => ({\n name,\n path: name === 'auto' || name === 'dark' || name === 'light' ? undefined : join(customDir, `${name}.json`),\n }));\n };\n\n const getExtensionTheme = (name: string) => {\n const normalized = name.trim().toLowerCase() || 'auto';\n if (!listAvailableThemeIds().includes(normalized)) return undefined;\n const currentTheme = tuiSettings.theme;\n applyThemeById(normalized);\n const resolved = getThemeExports().theme;\n applyThemeById(currentTheme);\n return resolved;\n };\n\n const setExtensionTheme = (nextTheme: string) => {\n const normalized = nextTheme.trim().toLowerCase() || 'auto';\n if (!listAvailableThemeIds().includes(normalized)) {\n return { success: false, error: `Unknown theme: ${nextTheme}` };\n }\n try {\n resolveThemePalette(normalized);\n tuiSettings = { ...tuiSettings, theme: normalized };\n saveTuiSettings(tuiSettings);\n applyThemeById(normalized);\n updateEditorBorderColor();\n chatLog.invalidate();\n header.invalidate();\n bottomBar.invalidate();\n tui.requestRender();\n return { success: true };\n } catch (err) {\n return {\n success: false,\n error: err instanceof Error ? err.message : String(err),\n };\n }\n };\n\n const getAvailableProviderCount = () =>\n getAllProviders().filter((provider) => isProviderConfiguredSync(provider)).length;\n\n const getExtensionSystemPrompt = () =>\n resolveEffectiveAgentProfileForSession(config, state.currentSessionKey).systemPromptOverride ?? '';\n\n const waitForTuiIdle = async () => {\n while (\n state.activeRunId != null ||\n state.isCompacting ||\n state.activityStatus === 'sending' ||\n state.activityStatus === 'waiting' ||\n state.activityStatus === 'streaming' ||\n state.activityStatus === 'running' ||\n state.activityStatus === 'compacting'\n ) {\n await new Promise((resolveDelay) => setTimeout(resolveDelay, 50));\n }\n };\n\n const createReplacementContext = (): TuiReplacedSessionContext => {\n const model = state.sessionInfo.model\n ? {\n ...(state.sessionInfo.modelProvider ? { provider: state.sessionInfo.modelProvider } : {}),\n id: state.sessionInfo.model,\n ref: state.sessionInfo.modelProvider\n ? `${state.sessionInfo.modelProvider}/${state.sessionInfo.model}`\n : state.sessionInfo.model,\n contextWindow: state.sessionInfo.contextWindow ?? null,\n }\n : undefined;\n return {\n mode: 'tui',\n hasUI: true,\n signal: client.getActiveSignal?.(),\n ui: {\n select: async () => undefined,\n confirm: async () => false,\n input: async () => undefined,\n notify: (message, level) => {\n const prefix = level === 'error' ? 'Error: ' : level === 'warn' || level === 'warning' ? 'Warning: ' : '';\n chatLog.addSystem(`${prefix}${message}`);\n tui.requestRender();\n },\n onTerminalInput: (handler) => tui.addInputListener(handler),\n setStatus: () => {},\n setWorkingMessage: (message) => {\n extensionWorkingMessage = message?.trim() || undefined;\n renderStatus();\n },\n setWorkingVisible: (visible) => {\n extensionWorkingVisible = visible;\n renderStatus();\n },\n setWorkingIndicator: (indicator) => {\n extensionWorkingIndicator = indicator ?? undefined;\n statusLoader?.setIndicator(indicator ?? undefined);\n renderStatus();\n },\n setHiddenThinkingLabel: (label) => {\n chatLog.setHiddenThinkingLabel(label ?? undefined);\n tui.requestRender();\n },\n setWidget: () => {},\n setFooter: () => {},\n setHeader: () => {},\n custom: async () => undefined as never,\n setTitle: (title) => tui.terminal.setTitle(title),\n pasteToEditor: (text) => editor.handleInput(`\\x1b[200~${text}\\x1b[201~`),\n setEditorText: (text) => editor.setText(text),\n getEditorText: () => editor.getExpandedText?.() ?? editor.getText(),\n editor: async () => undefined,\n addAutocompleteProvider: () => () => {},\n setEditorComponent,\n getEditorComponent: () => editorComponentFactory,\n theme,\n getAllThemes: getAllExtensionThemes,\n getTheme: getExtensionTheme,\n setTheme: setExtensionTheme,\n getToolsExpanded: () => state.toolsExpanded,\n setToolsExpanded: (expanded) => {\n state.toolsExpanded = expanded;\n tuiSettings = { ...tuiSettings, toolsExpanded: expanded };\n saveTuiSettings(tuiSettings);\n chatLog.setToolsExpanded(expanded);\n updateFooter();\n tui.requestRender();\n },\n },\n sessionManager: sessionSnapshot.manager(),\n modelRegistry: {\n find(provider, modelId) {\n return getAllModels().find(\n (candidate) => candidate.provider === provider && candidate.id === modelId,\n ) as unknown as TuiModelRegistryModel | undefined;\n },\n async getApiKeyAndHeaders(nextModel) {\n const provider = typeof nextModel.provider === 'string' ? nextModel.provider : undefined;\n if (!provider) return { ok: false, error: 'Model provider is missing.' };\n try {\n return { ok: true, apiKey: await getApiKey(provider), headers: {} };\n } catch (error) {\n return {\n ok: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n },\n },\n model,\n cwd: process.cwd(),\n sessionKey: state.currentSessionKey,\n isProjectTrusted: isCurrentProjectTrusted,\n isIdle: () => !state.activeRunId && !state.isCompacting,\n hasPendingMessages: () =>\n state.messageFollowUpQueue.length > 0 || state.steeringQueue.length > 0 || state.compactionQueue.length > 0,\n abort: () => abortActive(),\n shutdown: () => requestExit(),\n compact: (options) =>\n runCompaction(options?.customInstructions, {\n onComplete: options?.onComplete,\n onError: options?.onError,\n }),\n getSystemPrompt: getExtensionSystemPrompt,\n getSystemPromptOptions: () => ({\n cwd: process.cwd(),\n sessionKey: state.currentSessionKey,\n ...(model ? { model } : {}),\n }),\n waitForIdle: waitForTuiIdle,\n newSession: (options) => runExtensionNewSession(options),\n fork: (entryId, options) => runExtensionFork(entryId, options),\n navigateTree: (targetId, options) => runExtensionNavigateTree(targetId, options),\n switchSession: (sessionPath, options) => runExtensionSwitchSession(sessionPath, options),\n reload: async () => {\n await loadSessionHistory({ merge: true });\n await refreshSessionInfoWithBorder();\n },\n getModel: () => model,\n setModel: (modelRef) => switchCurrentModel(modelRef),\n getThinkingLevel: () => state.sessionInfo.thinkingLevel as TuiThinkingLevel | undefined,\n setThinkingLevel,\n getReasoningLevel: () => state.sessionInfo.reasoningLevel as TuiReasoningLevel | undefined,\n setReasoningLevel,\n getVerboseLevel: () => state.sessionInfo.verboseLevel as TuiVerboseLevel | undefined,\n setVerboseLevel,\n getCommands: () =>\n slashCommands.map((command) => ({\n name: command.name,\n description: command.description,\n source: 'builtin' as const,\n })),\n getContextUsage: () => {\n const tokens = state.sessionInfo.totalTokens ?? state.sessionInfo.contextTokens ?? null;\n const contextWindow = state.sessionInfo.contextWindow ?? null;\n const percent = state.sessionInfo.contextUsagePercent ?? null;\n if (tokens == null && contextWindow == null) return undefined;\n return {\n estimatedTokens: tokens,\n tokens,\n contextWindow,\n usagePercent: percent,\n percent,\n };\n },\n notify: (message, level) => {\n const prefix = level === 'error' ? 'Error: ' : level === 'warn' || level === 'warning' ? 'Warning: ' : '';\n chatLog.addSystem(`${prefix}${message}`);\n tui.requestRender();\n },\n sendMessage: async (message, options) => sendExtensionMessage(message, options),\n sendUserMessage: async (content, options) =>\n sendExtensionUserMessage(content as ExtensionUserMessageContent, options),\n };\n };\n\n const runWithReplacementContext = async (\n callback: ((ctx: TuiReplacedSessionContext) => Promise<void>) | undefined,\n ) => {\n if (callback) {\n await callback(createReplacementContext());\n }\n };\n\n const runExtensionNewSession = async (options?: TuiNewSessionOptions): Promise<TuiReplacementResult> => {\n await abortActive({ clearUi: false });\n const targetKey = resolveSessionKey(`session-${randomUUID()}`);\n await setSession(targetKey);\n await options?.setup?.(sessionSnapshot.manager());\n await runWithReplacementContext(options?.withSession);\n return { cancelled: false };\n };\n\n const runExtensionFork = async (entryId: string, options?: TuiForkOptions): Promise<TuiReplacementResult> => {\n const rowNumber = transcriptTreeEntryIdToRowNumber(entryId);\n if (rowNumber == null) {\n throw new Error(`Invalid entry ID for forking: ${entryId}`);\n }\n const throughRow = options?.position === 'before' ? rowNumber - 1 : rowNumber;\n if (throughRow <= 0) {\n throw new Error(`Invalid entry ID for forking: ${entryId}`);\n }\n const sourceSessionKey = state.currentSessionKey;\n const targetKey = resolveSessionKey(`fork-${randomUUID()}`);\n await abortActive({ clearUi: false });\n const result = await client.forkSessionAt(sourceSessionKey, targetKey, `row-${throughRow}`);\n await setSession(result.sessionKey);\n chatLog.addBranchSummary({\n sourceSessionKey,\n targetSessionKey: result.sessionKey,\n rowCount: result.rowCount,\n entryId,\n });\n await runWithReplacementContext(options?.withSession);\n return { cancelled: false };\n };\n\n const runExtensionNavigateTree = async (\n targetId: string,\n options?: TuiNavigateTreeOptions,\n ): Promise<TuiReplacementResult> => {\n if (options?.label) {\n setExtensionLabel(targetId, options.label);\n }\n return runExtensionFork(targetId, { position: 'at' });\n };\n\n const runExtensionSwitchSession = async (\n sessionPath: string,\n options?: TuiSwitchSessionOptions,\n ): Promise<TuiReplacementResult> => {\n await abortActive({ clearUi: false });\n await setSession(sessionPath);\n await runWithReplacementContext(options?.withSession);\n return { cancelled: false };\n };\n\n const extensionRuntime = createTuiExtensionRuntime({\n registry: extensionRegistry,\n tui,\n chatLog,\n header,\n bottomBar,\n getState: () => state,\n baseSlashCommands: slashCommands,\n additionalSlashCommands: resourceSlashCommands,\n keybindings,\n addInputListener: (handler) => tui.addInputListener(handler),\n setTitle: (title) => tui.terminal.setTitle(title),\n pasteToEditor: (text) => editor.handleInput(`\\x1b[200~${text}\\x1b[201~`),\n setEditorText: (text) => editor.setText(text),\n getEditorText: () => editor.getExpandedText?.() ?? editor.getText(),\n setEditorComponent,\n getEditorComponent: () => editorComponentFactory,\n searchWorkspaceFiles: (sessionKey, query, options) =>\n client.searchWorkspaceFiles?.(sessionKey, query, options) ?? Promise.resolve([]),\n getThemeObject: () => theme,\n getAllThemes: getAllExtensionThemes,\n getTheme: getExtensionTheme,\n setTheme: setExtensionTheme,\n getToolsExpanded: () => state.toolsExpanded,\n setToolsExpanded: (expanded) => {\n state.toolsExpanded = expanded;\n tuiSettings = { ...tuiSettings, toolsExpanded: expanded };\n saveTuiSettings(tuiSettings);\n chatLog.setToolsExpanded(expanded);\n updateFooter();\n tui.requestRender();\n },\n getAvailableProviderCount,\n getActiveSignal: () => client.getActiveSignal?.(),\n isProjectTrusted: isCurrentProjectTrusted,\n getSessionManager: () => sessionSnapshot.manager(),\n getSystemPrompt: getExtensionSystemPrompt,\n getSystemPromptOptions: () => ({\n cwd: process.cwd(),\n sessionKey: state.currentSessionKey,\n ...(state.sessionInfo.model\n ? {\n model: {\n ...(state.sessionInfo.modelProvider ? { provider: state.sessionInfo.modelProvider } : {}),\n id: state.sessionInfo.model,\n ref: state.sessionInfo.modelProvider\n ? `${state.sessionInfo.modelProvider}/${state.sessionInfo.model}`\n : state.sessionInfo.model,\n contextWindow: state.sessionInfo.contextWindow ?? null,\n },\n }\n : {}),\n }),\n waitForIdle: waitForTuiIdle,\n newSession: runExtensionNewSession,\n forkSession: runExtensionFork,\n navigateTree: runExtensionNavigateTree,\n switchSession: runExtensionSwitchSession,\n reload: async () => {\n await loadSessionHistory();\n await refreshSessionInfoWithBorder();\n },\n sendUserMessage: async (content, options) =>\n sendExtensionUserMessage(content as ExtensionUserMessageContent, options),\n sendMessage: async (message, options) => sendExtensionMessage(message, options),\n cwd: process.cwd(),\n fdPath: resolveFdPath(),\n openOverlay: openCommandOverlay,\n closeOverlay: closeCommandOverlay,\n onInvalidate: () => {\n updateHeader();\n updateFooter();\n tui.requestRender();\n },\n abortActive: () => abortActive(),\n requestExit: () => requestExit(),\n compactSession: (options) =>\n runCompaction(options?.customInstructions, {\n onComplete: options?.onComplete,\n onError: options?.onError,\n }),\n setModel: (modelRef) => switchCurrentModel(modelRef),\n setThinkingLevel: (level) => setThinkingLevel(level),\n setReasoningLevel: (level) => setReasoningLevel(level),\n setVerboseLevel: (level) => setVerboseLevel(level),\n setWorkingMessage: (message?: string) => {\n extensionWorkingMessage = message?.trim() || undefined;\n renderStatus();\n },\n setWorkingVisible: (visible: boolean) => {\n extensionWorkingVisible = visible;\n renderStatus();\n },\n setWorkingIndicator: (indicator?: LoaderIndicatorOptions) => {\n extensionWorkingIndicator = indicator;\n statusLoader?.setIndicator(indicator);\n renderStatus();\n },\n });\n\n editor.setAutocompleteProvider?.(extensionRuntime.autocompleteProvider);\n setEditorExtensionShortcut();\n\n let statusLoader: Loader | null = null;\n let statusStartedAt: number | null = null;\n let lastActivityStatus = '';\n let elapsedTimerId: ReturnType<typeof setInterval> | null = null;\n const busyStates = new Set([\n 'sending',\n 'waiting',\n 'streaming',\n 'running',\n 'compacting',\n 'stalled',\n 'recovering',\n 'aborting',\n ]);\n\n const syncTerminalProgress = () => {\n if (!tuiSettings.showTerminalProgress) {\n tui.terminal.setProgress(false);\n return;\n }\n tui.terminal.setProgress(busyStates.has(state.activityStatus));\n };\n\n let lastStreamActivityAt = Date.now();\n let streamWatchdogId: ReturnType<typeof setInterval> | null = null;\n\n const touchStreamingActivity = () => {\n lastStreamActivityAt = Date.now();\n if (state.activeRunId && state.runStatus.lastActivityAt == null) {\n state.runStatus = {\n ...state.runStatus,\n runId: state.activeRunId,\n startedAt: state.runStatus.startedAt ?? lastStreamActivityAt,\n lastActivityAt: lastStreamActivityAt,\n };\n }\n };\n\n const renderStatus = () => {\n const isBusy = busyStates.has(state.activityStatus);\n if (isBusy && extensionWorkingVisible) {\n if (!statusStartedAt || lastActivityStatus !== state.activityStatus) {\n statusStartedAt = Date.now();\n }\n if (!statusLoader) {\n statusContainer.clear();\n statusLoader = new Loader(\n tui,\n (spinner) => theme.accent(spinner),\n (text) => theme.bold(theme.accentSoft(text)),\n '',\n extensionWorkingIndicator,\n );\n statusContainer.addChild(statusLoader);\n }\n const renderLoaderMessage = () => {\n const activeRunStatus = formatActiveRunStatus(state);\n if (activeRunStatus) return activeRunStatus;\n const elapsed = formatRunDuration(Date.now() - statusStartedAt!);\n const message = state.progressMessage ?? extensionWorkingMessage ?? state.activityStatus;\n return `${message} (${elapsed})`;\n };\n statusLoader.setMessage(`xopc • ${renderLoaderMessage()} | ${state.connectionStatus}`);\n if (!elapsedTimerId) {\n elapsedTimerId = setInterval(() => {\n if (statusStartedAt && statusLoader) {\n statusLoader.setMessage(`xopc • ${renderLoaderMessage()} | ${state.connectionStatus}`);\n }\n }, 1000);\n }\n } else {\n if (!isBusy) {\n state.progressMessage = null;\n statusStartedAt = null;\n }\n if (elapsedTimerId) {\n clearInterval(elapsedTimerId);\n elapsedTimerId = null;\n }\n statusLoader?.stop();\n statusLoader = null;\n statusContainer.clear();\n }\n lastActivityStatus = state.activityStatus;\n bottomBar.invalidate();\n syncTerminalProgress();\n tui.requestRender();\n };\n\n const setActivityStatus = (status: string) => {\n state.activityStatus = status as TuiState['activityStatus'];\n renderStatus();\n };\n\n const setConnectionStatus = (text: string) => {\n state.connectionStatus = text;\n renderStatus();\n };\n\n const updateHeader = () => {\n header.invalidate();\n syncTerminalTitle();\n };\n\n const syncTerminalTitle = () => {\n const shortKey =\n state.currentSessionKey.length > 48 ? `${state.currentSessionKey.slice(0, 45)}…` : state.currentSessionKey;\n tui.terminal.setTitle(`xopc · ${shortKey}`);\n };\n\n const updateFooter = () => {\n bottomBar.invalidate();\n };\n\n const refreshModelChoices = async () => {\n try {\n modelChoices = await client.listModels();\n } catch {\n modelChoices = [];\n }\n bottomBar.invalidate();\n tui.requestRender();\n };\n\n let finishTui: (() => void) | null = null;\n let exitResult: TuiResult = { exitReason: 'exit' };\n\n const requestExit = (options?: { showResumeHint?: boolean }) => {\n if (state.exitRequested) return;\n state.exitRequested = true;\n if (elapsedTimerId) {\n clearInterval(elapsedTimerId);\n elapsedTimerId = null;\n }\n if (streamWatchdogId) {\n clearInterval(streamWatchdogId);\n streamWatchdogId = null;\n }\n client.stop();\n tui.terminal.setProgress(false);\n void drainAndStopTuiSafely(tui).then(() => {\n restoreStdio();\n if (options?.showResumeHint !== false) {\n process.stdout.write(`\\nTo resume this session: ${formatTuiResumeCommand(opts, state.currentSessionKey)}\\n`);\n }\n finishTui?.();\n process.exit(0);\n });\n };\n\n const sessionActions = createSessionActions({\n client,\n chatLog,\n tui,\n state,\n resolveSessionKey,\n updateHeader,\n updateFooter,\n setActivityStatus,\n sessionSnapshot,\n onAgentIdChange: (agentId) => {\n currentAgentId = agentId;\n },\n });\n\n const {\n refreshSessionInfo,\n loadHistory: loadSessionHistory,\n loadHistoryWindow,\n setSession,\n abortActive,\n resetCurrentSession,\n clearChatForSessionSwitch,\n } = sessionActions;\n\n const refreshSessionInfoWithBorder = async () => {\n await refreshSessionInfo();\n updateEditorBorderColor();\n };\n\n const refreshStartupResources = async () => {\n if (!client.getStartupResources) {\n startupResources = undefined;\n syncResourceSlashCommands(undefined);\n return;\n }\n try {\n startupResources = await client.getStartupResources(state.currentSessionKey);\n } catch {\n startupResources = undefined;\n }\n syncResourceSlashCommands(startupResources);\n };\n\n const showStartupCardOnce = () => {\n if (startupCardShown) return;\n startupCardShown = true;\n chatLog.addSystem(\n formatTuiStartupText({\n state,\n isLocal: isLocalMode,\n keybindings,\n resources: startupResources,\n expanded: false,\n }),\n );\n };\n\n const applyStartupWorkingDirectory = async () => {\n if (startupWorkingDirectoryApplied || !startupWorkingDirectory) return;\n startupWorkingDirectoryApplied = true;\n await client.patchSession(state.currentSessionKey, {\n workingDirectory: startupWorkingDirectory,\n });\n state.sessionInfo.effectiveWorkspacePath = startupWorkingDirectory;\n state.sessionInfo.workingDirectoryLocked = true;\n };\n\n const applyStartupProject = async () => {\n if (startupProjectApplied || !startupWorkingDirectory || opts.useStartupCwd === false || opts.session?.trim())\n return;\n startupProjectApplied = true;\n const result = await client.resolveStartupProject?.({\n workspacePath: startupWorkingDirectory,\n sessionKey: state.currentSessionKey,\n agentId: currentAgentId,\n autoCreate: true,\n });\n if (!result?.project) return;\n const projectAgentId = result.project.defaultAgentId?.trim()\n ? normalizeAgentId(result.project.defaultAgentId)\n : undefined;\n const currentParsed = parseAgentSessionKey(state.currentSessionKey);\n if (!opts.agentId?.trim() && currentParsed?.rest && projectAgentId && projectAgentId !== currentAgentId) {\n const targetSessionKey = `agent:${projectAgentId}:${currentParsed.rest}`;\n await setSession(targetSessionKey);\n currentAgentId = projectAgentId;\n await client.patchSession(state.currentSessionKey, {\n projectId: result.project.id,\n workingDirectory: startupWorkingDirectory,\n });\n state.sessionInfo.effectiveWorkspacePath = startupWorkingDirectory;\n state.sessionInfo.workingDirectoryLocked = true;\n } else {\n await client.patchSession(state.currentSessionKey, {\n projectId: result.project.id,\n });\n }\n const verb = result.created ? 'Created project' : 'Using project';\n chatLog.addStatus(theme.dim(`${verb}: ${result.project.name}`));\n };\n\n let streamRecoveryPromise: Promise<void> | null = null;\n const recoverActiveRunFromHistory = (reason: string) => {\n if (!state.activeRunId) return Promise.resolve();\n if (streamRecoveryPromise) return streamRecoveryPromise;\n const runId = state.activeRunId;\n markRunRecovering(state, Date.now());\n state.progressMessage = 'Reconnecting output';\n setActivityStatus('recovering');\n streamRecoveryPromise = (async () => {\n try {\n await loadSessionHistory();\n await refreshSessionInfoWithBorder();\n if (state.activeRunId === runId) {\n clearSeenStreamEventsForRun(runId);\n if (client.resumeChat) {\n const resumed = await client.resumeChat({\n sessionKey: state.currentSessionKey,\n runId,\n });\n if (resumed.ok) {\n state.progressMessage = 'Reconnecting output';\n setActivityStatus('recovering');\n } else {\n markRunRecoveryComplete(state, Date.now());\n state.progressMessage = 'Output stale';\n setActivityStatus('stalled');\n chatLog.addSystem(\n theme.dim(\n `Output connection is stale. The task may still be running, but xopc could not reattach to live output: ${resumed.reason ?? 'run relay unavailable'}. Press Escape or /abort to stop it.`,\n ),\n );\n }\n } else {\n markRunRecoveryComplete(state, Date.now());\n state.progressMessage = 'Output stale';\n setActivityStatus('stalled');\n chatLog.addSystem(\n theme.dim(\n 'Output connection is stale. The task may still be running. Press Escape or /abort to stop it.',\n ),\n );\n }\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n chatLog.addSystem(theme.dim(`Stream recovery failed after ${reason}: ${errorMessage}`));\n if (state.activeRunId === runId) {\n markRunRecoveryComplete(state, Date.now());\n setActivityStatus('stalled');\n }\n } finally {\n streamRecoveryPromise = null;\n updateFooter();\n tui.requestRender();\n }\n })();\n return streamRecoveryPromise;\n };\n\n const setThinkingLevel = async (level: ThinkLevel) => {\n try {\n await client.patchSession(state.currentSessionKey, {\n thinkingLevel: level,\n });\n state.sessionInfo.thinkingLevel = level;\n await refreshSessionInfoWithBorder();\n updateFooter();\n chatLog.addStatus(theme.dim(`Thinking level: ${level}`));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Thinking level change failed: ${errorMessage}`);\n } finally {\n tui.requestRender();\n }\n };\n\n const setReasoningLevel = async (level: ReasoningLevel) => {\n try {\n await client.patchSession(state.currentSessionKey, {\n reasoningLevel: level,\n });\n state.sessionInfo.reasoningLevel = level;\n await refreshSessionInfoWithBorder();\n updateFooter();\n chatLog.addStatus(theme.dim(`Reasoning visibility: ${level}`));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Reasoning visibility change failed: ${errorMessage}`);\n } finally {\n tui.requestRender();\n }\n };\n\n const setVerboseLevel = async (level: VerboseLevel) => {\n try {\n await client.patchSession(state.currentSessionKey, {\n verboseLevel: level,\n });\n state.sessionInfo.verboseLevel = level;\n await refreshSessionInfoWithBorder();\n updateFooter();\n chatLog.addStatus(theme.dim(`Verbose mode: ${level}`));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Verbose mode change failed: ${errorMessage}`);\n } finally {\n tui.requestRender();\n }\n };\n\n const copyLastAssistant = async () => {\n const text = chatLog.getLastAssistantText().trim();\n if (!text) {\n chatLog.addSystem('No assistant messages to copy yet.');\n tui.requestRender();\n return;\n }\n try {\n await copyTextToClipboard(text);\n chatLog.addStatus(theme.dim('Copied last assistant message to clipboard'));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Copy failed: ${errorMessage}`);\n } finally {\n tui.requestRender();\n }\n };\n\n const renameCurrentSession = async (name: string) => {\n const nextName = name.trim();\n if (!nextName) {\n chatLog.addSystem('Usage: /name <name>');\n tui.requestRender();\n return;\n }\n try {\n const result = await client.renameSession(state.currentSessionKey, nextName);\n if (!result.ok) {\n chatLog.addSystem('Session rename failed.');\n tui.requestRender();\n return;\n }\n state.sessionInfo.displayName = nextName;\n updateFooter();\n updateHeader();\n chatLog.addStatus(theme.dim(`Session name set: ${nextName}`));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Session rename failed: ${errorMessage}`);\n } finally {\n tui.requestRender();\n }\n };\n\n const resolveModelChoiceIndex = (): number => {\n const choices = cycleModelChoices();\n if (choices.length === 0) return -1;\n const p = state.sessionInfo.modelProvider;\n const m = state.sessionInfo.model;\n if (p && m) {\n const byParts = choices.findIndex((x) => x.provider === p && x.id === m);\n if (byParts >= 0) return byParts;\n }\n if (m?.includes('/')) {\n const [a, b] = m.split('/', 2);\n const bySlash = choices.findIndex((x) => x.provider === a && x.id === b);\n if (bySlash >= 0) return bySlash;\n }\n return 0;\n };\n\n const cycleModel = (dir: 'forward' | 'backward') => {\n const choices = cycleModelChoices();\n if (choices.length === 0) {\n void refreshModelChoices().then(() => {\n if (cycleModelChoices().length === 0) {\n chatLog.addSystem('No models available to cycle.');\n tui.requestRender();\n return;\n }\n cycleModel(dir);\n });\n return;\n }\n const idx = resolveModelChoiceIndex();\n const base = idx >= 0 ? idx : 0;\n const delta = dir === 'forward' ? 1 : -1;\n const next = choices[(base + delta + choices.length) % choices.length]!;\n void switchCurrentModel(`${next.provider}/${next.id}`);\n };\n\n const listCurrentModels = async (): Promise<TuiModelChoice[]> => {\n if (modelChoices.length === 0) {\n await refreshModelChoices();\n }\n return modelChoices;\n };\n\n const switchCurrentModel = async (modelRef: string) => {\n const trimmed = modelRef.trim();\n if (!trimmed.includes('/')) {\n chatLog.addSystem('Usage: /switch <provider/model>');\n tui.requestRender();\n return;\n }\n if (modelChoices.length === 0) {\n await refreshModelChoices();\n }\n const [provider, id] = trimmed.split('/', 2);\n const selected = modelChoices.find((choice) => choice.provider === provider && choice.id === id);\n if (!selected) {\n chatLog.addSystem(`Model not found: ${trimmed}`);\n tui.requestRender();\n return;\n }\n try {\n await client.patchSession(state.currentSessionKey, { model: trimmed });\n state.sessionInfo.modelProvider = selected.provider;\n state.sessionInfo.model = selected.id;\n if (selected.contextWindow != null) {\n state.sessionInfo.contextWindow = selected.contextWindow;\n }\n await refreshSessionInfoWithBorder();\n updateFooter();\n updateHeader();\n chatLog.addStatus(theme.dim(`Model: ${trimmed}`));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Model switch failed: ${errorMessage}`);\n } finally {\n tui.requestRender();\n }\n };\n\n const exportCurrentSession = async (request: TuiExportRequest) => {\n const outputPath = request.outputPath\n ? isAbsolute(request.outputPath)\n ? request.outputPath\n : resolve(process.cwd(), request.outputPath)\n : defaultExportPath(state.currentSessionKey, request.format);\n try {\n const backendFormat = request.format === 'json' ? 'json' : 'markdown';\n const raw = await client.exportSession(state.currentSessionKey, backendFormat);\n const content = request.format === 'html' ? wrapMarkdownExportAsHtml(raw) : raw;\n mkdirSync(dirname(outputPath), { recursive: true });\n writeFileSync(outputPath, content, 'utf8');\n chatLog.addStatus(theme.dim(`Exported ${request.format} session to: ${outputPath}`));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Export failed: ${errorMessage}`);\n } finally {\n tui.requestRender();\n }\n };\n\n const importSessionExport = async (request: TuiImportRequest) => {\n const rawPath = request.inputPath?.trim();\n if (!rawPath) {\n chatLog.addSystem('Usage: /import <path.json> [target-session]');\n tui.requestRender();\n return;\n }\n const inputPath = isAbsolute(rawPath) ? rawPath : resolve(process.cwd(), rawPath);\n const targetRaw = request.targetKey?.trim() || `import-${randomUUID()}`;\n const targetKey = resolveSessionKey(targetRaw);\n try {\n const content = readFileSync(inputPath, 'utf8');\n const result = await client.importSession(targetKey, content);\n await setSession(result.sessionKey);\n chatLog.addStatus(theme.dim(`Imported ${result.rowCount} transcript rows from: ${inputPath}`));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Import failed: ${errorMessage}`);\n } finally {\n tui.requestRender();\n }\n };\n\n const createShareLink = async (request: TuiShareRequest) => {\n try {\n chatLog.addStatus(theme.dim(`Creating share for: ${request.path}`));\n tui.requestRender();\n const result = await client.createShare(state.currentSessionKey, request, {\n agentId: currentAgentId,\n });\n chatLog.addSystem(formatTuiShareResult(result));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Share failed: ${errorMessage}`);\n } finally {\n tui.requestRender();\n }\n };\n\n const startWorkflowRun = async (request: { definitionId: string; goal?: string }) => {\n if (!client.startWorkflowRun) {\n throw new Error('Workflow runs are not available in this mode.');\n }\n const result = await client.startWorkflowRun({\n sessionKey: state.currentSessionKey,\n definitionId: request.definitionId,\n agentId: currentAgentId,\n goal: request.goal,\n });\n visibleWorkflowRunIds.add(result.runId);\n return result;\n };\n\n const runBtwQuery = async (question: string) => {\n const previousStatus = state.activityStatus;\n const runId = `btw-${randomUUID()}`;\n try {\n setActivityStatus('waiting');\n state.progressMessage = 'btw';\n chatLog.addUser(`/btw ${question}`);\n chatLog.addStatus(theme.dim('BTW running...'));\n tui.requestRender();\n const result = await client.btwQuery(state.currentSessionKey, question);\n if (result.error) {\n chatLog.addSystem(`BTW failed: ${result.error}`);\n return;\n }\n chatLog.finalizeAssistant(\n {\n role: 'assistant',\n content: [{ type: 'text', text: `BTW\\n\\n${result.text}` }],\n timestamp: Date.now(),\n } as AgentMessage,\n runId,\n );\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`BTW failed: ${errorMessage}`);\n } finally {\n state.activityStatus = previousStatus;\n renderStatus();\n tui.requestRender();\n }\n };\n\n const forkCurrentSession = async (rawKey?: string) => {\n const targetRaw = rawKey?.trim() || `fork-${randomUUID()}`;\n const targetKey = resolveSessionKey(targetRaw);\n if (targetKey === state.currentSessionKey) {\n chatLog.addSystem('Fork target must be different from the current session.');\n tui.requestRender();\n return;\n }\n const sourceSessionKey = state.currentSessionKey;\n try {\n await abortActive({ clearUi: false });\n const result = await client.forkSession(sourceSessionKey, targetKey);\n await setSession(result.sessionKey);\n chatLog.addBranchSummary({\n sourceSessionKey,\n targetSessionKey: result.sessionKey,\n rowCount: result.rowCount,\n });\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Fork failed: ${errorMessage}`);\n } finally {\n tui.requestRender();\n }\n };\n\n const handleCtrlZ = () => {\n if (process.platform === 'win32') {\n chatLog.addSystem(formatSuspendUnsupportedHint(keybindings));\n tui.requestRender();\n return;\n }\n const suspendKeepAlive = setInterval(() => {}, 2 ** 30);\n const ignoreSigint = () => {};\n process.on('SIGINT', ignoreSigint);\n process.once('SIGCONT', () => {\n clearInterval(suspendKeepAlive);\n process.removeListener('SIGINT', ignoreSigint);\n tui.start();\n tui.setFocus(editor);\n tui.requestRender(true);\n });\n try {\n tui.stop();\n process.kill(0, 'SIGTSTP');\n } catch {\n clearInterval(suspendKeepAlive);\n process.removeListener('SIGINT', ignoreSigint);\n }\n };\n\n const openExternalEditor = () => {\n const dir = mkdtempSync(join(tmpdir(), 'xopc-tui-edit-'));\n const filePath = join(dir, 'message.md');\n writeFileSync(filePath, editor.getText(), 'utf8');\n const editorBin = process.env.EDITOR || process.env.VISUAL || 'vi';\n void (async () => {\n await withTuiSuspended(tui, async () => {\n spawnSync(editorBin, [filePath], { stdio: 'inherit' });\n });\n try {\n const next = readFileSync(filePath, 'utf8');\n editor.setText(next.replace(/\\r\\n/g, '\\n'));\n } catch {\n // ignore\n }\n try {\n unlinkSync(filePath);\n } catch {\n // ignore\n }\n tui.setFocus(editor);\n tui.requestRender(true);\n })();\n };\n\n const isAgentBusy = () => state.activeRunId != null || state.isCompacting || busyStates.has(state.activityStatus);\n\n let steeringInFlightForRunId: string | null = null;\n\n const sendSteeringToActiveRun = (text: string) => {\n chatLog.addUser(text);\n touchStreamingActivity();\n tui.requestRender();\n void client\n .steerChat({ sessionKey: state.currentSessionKey, message: text })\n .then(({ ok }) => {\n if (!ok) {\n chatLog.addSystem(theme.dim(formatSteerUnavailableHint(keybindings)));\n } else {\n chatLog.addSystem(theme.dim('Steered — message injects at the next tool boundary (pi-style).'));\n }\n tui.requestRender();\n })\n .catch((error: unknown) => {\n const errorMessage = error instanceof Error ? error.message : String(error);\n chatLog.addSystem(theme.dim(`Steer failed: ${errorMessage}`));\n tui.requestRender();\n });\n };\n\n const flushSteeringQueue = () => {\n if (state.exitRequested) return;\n if (state.activeRunId) return;\n const next = drainFollowUpQueue(state.steeringQueue, tuiSettings.steeringMode);\n if (next === undefined) return;\n sendMessage(next);\n };\n\n const steerMessage = (text: string) => {\n if (!state.activeRunId) {\n sendMessage(text);\n return;\n }\n if (steeringInFlightForRunId === state.activeRunId) {\n state.steeringQueue.push(text);\n chatLog.addSystem(\n theme.dim(\n `Queued steering (${state.steeringQueue.length} in queue). ${tuiSettings.steeringMode === 'all' ? 'All queued steering sends together after this reply.' : 'Next sends after this reply.'}`,\n ),\n );\n bottomBar.invalidate();\n tui.requestRender();\n return;\n }\n steeringInFlightForRunId = state.activeRunId;\n sendSteeringToActiveRun(text);\n };\n\n const sendMessage = (text: string) => {\n chatLog.jumpToLatest();\n if (state.activeRunId && pendingImageAttachments.length > 0) {\n chatLog.addSystem(\n theme.dim('Image attachments cannot be steered into an active run. Wait for this reply to finish, then send.'),\n );\n tui.requestRender();\n return;\n }\n const pendingCustomText = pendingNextTurnCustomMessages.splice(0).join('\\n\\n').trim();\n const messageText = [text, pendingCustomText].filter(Boolean).join('\\n\\n');\n const attachments = pendingImageAttachments;\n pendingImageAttachments = [];\n if (state.isCompacting) {\n state.compactionQueue.push(messageText);\n if (attachments.length > 0) {\n pendingImageAttachments.unshift(...attachments);\n }\n chatLog.addSystem(\n theme.dim(`Queued during compaction (${state.compactionQueue.length}). Sends when compact finishes.`),\n );\n bottomBar.invalidate();\n tui.requestRender();\n return;\n }\n\n if (state.activeRunId) {\n chatLog.addSystem(formatBusyResponseHint(keybindings));\n if (pendingCustomText) {\n pendingNextTurnCustomMessages.unshift(pendingCustomText);\n }\n if (attachments.length > 0) {\n pendingImageAttachments.unshift(...attachments);\n }\n tui.requestRender();\n return;\n }\n\n chatLog.addUser(userDisplayContentForAttachments(text, attachments));\n sessionSnapshot.appendMessage('user', messageText);\n lastRetryMessageText = messageText;\n markRunSending(state);\n setActivityStatus('sending');\n touchStreamingActivity();\n tui.requestRender();\n\n void client\n .sendChat({\n sessionKey: state.currentSessionKey,\n message: messageText,\n attachments: attachments.length > 0 ? attachments : undefined,\n thinking: opts.thinking,\n })\n .catch((error: unknown) => {\n const errorMessage = error instanceof Error ? error.message : String(error);\n if (attachments.length > 0) {\n pendingImageAttachments.unshift(...attachments);\n }\n chatLog.addSystem(`❌ Failed to send: ${errorMessage}`);\n setActivityStatus('idle');\n tui.requestRender();\n });\n };\n\n sendExtensionUserMessage = (content, options) => {\n const text = extensionUserMessageContentToText(content).trim();\n if (!text) {\n throw new Error('sendUserMessage requires text content.');\n }\n if (!state.activeRunId) {\n sendMessage(text);\n return;\n }\n if (options?.deliverAs === 'steer') {\n steerMessage(text);\n return;\n }\n if (options?.deliverAs === 'followUp') {\n state.messageFollowUpQueue.push(text);\n chatLog.addSystem(\n theme.dim(\n `Queued follow-up (${state.messageFollowUpQueue.length} in queue). ${tuiSettings.followUpMode === 'all' ? 'All queued messages send together when this reply finishes.' : 'Next sends when this reply finishes.'}`,\n ),\n );\n bottomBar.invalidate();\n tui.requestRender();\n return;\n }\n throw new Error('Agent is busy. Use deliverAs: \"steer\" or \"followUp\".');\n };\n\n const runCompaction = async (\n instructions?: string,\n callbacks?: {\n onComplete?: (result: TuiCompactionResult) => void;\n onError?: (error: Error) => void;\n },\n ): Promise<TuiCompactionResult | undefined> => {\n if (state.isCompacting) return undefined;\n state.isCompacting = true;\n setActivityStatus('compacting');\n chatLog.addSystem(\n theme.dim(instructions ? `Compacting session with instructions: ${instructions}` : 'Compacting session…'),\n );\n tui.requestRender();\n try {\n const result = await client.compactSession(state.currentSessionKey, {\n force: true,\n instructions,\n });\n if (result.compacted) {\n clearSeenStreamEvents();\n state.historyLoaded = false;\n await loadSessionHistory();\n chatLog.addCompactionSummary(result);\n } else {\n chatLog.addSystem(formatTuiCompactionResult(result));\n }\n callbacks?.onComplete?.(result);\n return result;\n } catch (error: unknown) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n chatLog.addSystem(`❌ Compaction failed: ${errorMessage}`);\n callbacks?.onError?.(error instanceof Error ? error : new Error(errorMessage));\n return undefined;\n } finally {\n state.isCompacting = false;\n setActivityStatus('idle');\n await refreshSessionInfoWithBorder();\n const queued = state.compactionQueue.shift();\n if (queued && !state.activeRunId) {\n sendMessage(queued);\n }\n updateFooter();\n tui.requestRender();\n }\n };\n\n const applyTuiSettings = (settings: TuiSettings) => {\n tuiSettings = { ...settings };\n saveTuiSettings(tuiSettings);\n state.showThinking = tuiSettings.showThinking;\n state.toolsExpanded = tuiSettings.toolsExpanded;\n chatLog.setShowThinking(tuiSettings.showThinking);\n chatLog.setToolsExpanded(tuiSettings.toolsExpanded);\n chatLog.setToolImageOptions({\n showImages: tuiSettings.showImages,\n imageWidthCells: tuiSettings.imageWidthCells,\n cwd: process.cwd(),\n });\n tui.setShowHardwareCursor(tuiSettings.showHardwareCursor);\n tui.setClearOnShrink(tuiSettings.clearOnShrink);\n defaultEditor.setPaddingX(tuiSettings.editorPaddingX);\n defaultEditor.setAutocompleteMaxVisible(tuiSettings.autocompleteMaxVisible);\n if (editor !== defaultEditor) {\n editor.setPaddingX?.(tuiSettings.editorPaddingX);\n editor.setAutocompleteMaxVisible?.(tuiSettings.autocompleteMaxVisible);\n }\n applyThemeById(tuiSettings.theme);\n header.invalidate();\n updateEditorBorderColor();\n syncTerminalProgress();\n bottomBar.invalidate();\n tui.requestRender();\n };\n\n const previewTheme = (themeId: string) => {\n applyThemeById(themeId);\n updateEditorBorderColor();\n tui.requestRender();\n };\n\n const reloadTuiRuntime = async () => {\n if (state.activeRunId) {\n throw new Error('Wait for the current response to finish before reloading.');\n }\n if (state.isCompacting) {\n throw new Error('Wait for compaction to finish before reloading.');\n }\n keybindings.reload();\n setKeybindings(keybindings);\n applyTuiSettings(loadTuiSettings());\n extensionRuntime.dispose();\n await extensionRuntime.activate();\n editor.setAutocompleteProvider?.(extensionRuntime.autocompleteProvider);\n setEditorExtensionShortcut();\n updateHeader();\n updateFooter();\n tui.requestRender();\n };\n\n const uiOverlays = {\n openModelPicker: (_initialSearch?: string) => {},\n openAgentPicker: () => {},\n openReviewLauncher: () => {},\n openSessionPicker: () => {},\n openSessionTree: () => {},\n openTimeline: (_initialSearch?: string) => {},\n openTranscriptTree: () => {},\n openUserMessageFork: () => {},\n openScopedModels: () => {},\n openThinkingSelector: () => {},\n openSettings: () => {},\n openProjectTrust: () => {},\n reloadKeybindings: () => reloadTuiRuntime(),\n };\n\n const recoverCurrentStream = async () => {\n if (state.activeRunId) {\n await recoverActiveRunFromHistory('manual recover');\n return;\n }\n await loadSessionHistory({ merge: true });\n await refreshSessionInfoWithBorder();\n chatLog.addSystem(theme.dim('Reloaded persisted history; no active run to recover.'));\n tui.requestRender();\n };\n\n const retryLastMessage = async () => {\n const message = lastRetryMessageText?.trim();\n if (!message) {\n chatLog.addSystem('No previous user message to retry.');\n return;\n }\n if (state.activeRunId) {\n await abortActive({ clearUi: false });\n }\n sendMessage(message);\n };\n\n const switchAgentSession = async (sessionKey: string, agentId: string) => {\n const previousWorkspace = state.sessionInfo.effectiveWorkspacePath?.trim();\n await setSession(sessionKey);\n await refreshStartupResources();\n if (previousWorkspace && state.sessionInfo.workingDirectoryLocked !== true) {\n try {\n await client.patchSession(state.currentSessionKey, {\n workingDirectory: previousWorkspace,\n });\n state.sessionInfo.effectiveWorkspacePath = previousWorkspace;\n state.sessionInfo.workingDirectoryLocked = true;\n await refreshSessionInfoWithBorder();\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Switched agent, but workspace was not copied: ${errorMessage}`);\n }\n }\n currentAgentId = agentId;\n updateHeader();\n updateFooter();\n };\n\n const handleCommand = createTuiCommandHandler({\n state,\n chatLog,\n tui,\n isLocalMode,\n abortActive,\n sendMessage,\n requestExit,\n updateFooter,\n keybindings,\n recoverStream: recoverCurrentStream,\n retryLastMessage,\n uiOverlays,\n setThinkingLevel,\n setReasoningLevel,\n setVerboseLevel,\n copyLastAssistant,\n renameCurrentSession,\n runCompaction,\n listModels: listCurrentModels,\n switchModel: switchCurrentModel,\n listSessions: () => client.listSessions(),\n listAgents: () => client.listAgents(),\n setTuiDefaultAgent: (agentId) => client.setTuiDefaultAgent?.(agentId) ?? Promise.reject(new Error('Not available')),\n switchAgentSession,\n getSessionStats: () => client.getSessionStats(state.currentSessionKey),\n getStartupResources: () => startupResources,\n loadTranscriptTree: () => client.loadTranscriptTree(state.currentSessionKey),\n loadTimeline: () => client.loadTimeline(state.currentSessionKey),\n loadHistoryWindow,\n loadSessionHistory: () => loadSessionHistory(),\n exportSession: exportCurrentSession,\n importSession: importSessionExport,\n createShare: createShareLink,\n startWorkflowRun,\n runBtwQuery,\n forkSession: forkCurrentSession,\n extensionSlashCommands: extensionRuntime.slashCommands,\n skillSlashCommands,\n workflowSlashCommands,\n extensionShortcuts: extensionRuntime.shortcuts,\n currentAgentId,\n setSession: async (rawKey) => {\n await setSession(rawKey);\n await refreshStartupResources();\n },\n resetSession: resetCurrentSession,\n projectTrust: {\n cwd: process.cwd(),\n hasProjectResources: () => hasTrustRequiringProjectResources(process.cwd()),\n getStorePath: () => projectTrustStore.getPath(),\n getEntry: () => projectTrustStore.getEntry(process.cwd()),\n getSessionDecision: () => projectTrustSessionDecision,\n },\n runLogin: (provider) =>\n runTuiOAuthLogin(provider, {\n chatLog,\n tui,\n editor,\n openOverlay: openCommandOverlay,\n closeOverlay: closeCommandOverlay,\n keybindings,\n }),\n });\n\n const { runLocalShellLine } = createLocalShellRunner({\n chatLog,\n tui,\n editor,\n openOverlay: openCommandOverlay,\n closeOverlay: closeCommandOverlay,\n pauseStdioFilter: () => stdioFilter.pause(),\n resumeStdioFilter: () => stdioFilter.resume(),\n runWithInheritedStdio: async (work) => {\n await withTuiSuspended(tui, work);\n },\n keybindings,\n getCwd: () => {\n const workspace = state.sessionInfo.effectiveWorkspacePath?.trim();\n if (!workspace) {\n throw new Error('Workspace is not loaded yet.');\n }\n return workspace;\n },\n onComplete: async (entry) => {\n await client\n .appendBashExecution(state.currentSessionKey, entry)\n .catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Bash transcript append failed: ${errorMessage}`);\n })\n .finally(() => {\n updateFooter();\n tui.requestRender();\n });\n },\n });\n\n const enterShellMode = () => {\n editorMode = 'shell';\n editor.setText('');\n isBashMode = true;\n isBashExcludeContext = false;\n updateEditorBorderColor();\n updateFooter();\n tui.requestRender();\n };\n\n const exitShellMode = () => {\n if (editorMode !== 'shell') return;\n editorMode = 'chat';\n isBashMode = editor.getText().trimStart().startsWith('!');\n isBashExcludeContext = editor.getText().trimStart().startsWith('!!');\n updateEditorBorderColor();\n updateFooter();\n tui.requestRender();\n };\n\n const submitCore = createEditorSubmitHandler({\n editor: {\n setText: (value) => editor.setText(value),\n addToHistory: (value) => editor.addToHistory?.(value),\n },\n handleCommand,\n sendMessage,\n handleBangLine: runLocalShellLine,\n getMode: () => editorMode,\n enterShellMode,\n exitShellMode,\n isAgentBusy,\n steerWhileBusy: steerMessage,\n hasPendingAttachments: () => pendingImageAttachments.length > 0,\n defaultAttachmentMessage: 'Please analyze the attached image.',\n });\n\n const submitBurst = createSubmitBurstCoalescer({\n submit: submitCore,\n enabled: shouldEnableWindowsGitBashPasteFallback(),\n });\n defaultEditor.onSubmit = submitBurst;\n\n const flushFollowUpQueue = () => {\n if (state.exitRequested) return;\n if (state.activeRunId) return;\n const next = drainFollowUpQueue(state.messageFollowUpQueue, tuiSettings.followUpMode);\n if (next === undefined) return;\n sendMessage(next);\n };\n\n const handleFollowUp = () => {\n const text = editor.getText().trim();\n if (!text && pendingImageAttachments.length === 0) return;\n if (isAgentBusy()) {\n if (pendingImageAttachments.length > 0) {\n chatLog.addSystem(\n theme.dim(\n 'Image attachments cannot be queued while the agent is busy. Wait for this reply to finish, then send.',\n ),\n );\n tui.requestRender();\n return;\n }\n editor.addToHistory(text);\n state.messageFollowUpQueue.push(text);\n editor.setText('');\n chatLog.addSystem(\n theme.dim(\n `Queued follow-up (${state.messageFollowUpQueue.length} in queue). ${tuiSettings.followUpMode === 'all' ? 'All queued messages send together when this reply finishes.' : 'Next sends when this reply finishes.'}`,\n ),\n );\n bottomBar.invalidate();\n tui.requestRender();\n return;\n }\n submitBurst(text);\n };\n\n const handleDequeue = () => {\n const restored = restoreQueuedMessages(\n {\n steeringQueue: state.steeringQueue,\n followUpQueue: state.messageFollowUpQueue,\n },\n editor.getText(),\n );\n if (restored.restoredCount === 0) {\n chatLog.addStatus(theme.dim('No queued messages to restore.'));\n tui.requestRender();\n return;\n }\n editor.setText(restored.text);\n chatLog.addStatus(\n theme.dim(`Restored ${restored.restoredCount} queued message${restored.restoredCount > 1 ? 's' : ''} to editor.`),\n );\n bottomBar.invalidate();\n tui.requestRender();\n };\n\n const setSessionKey = (key: string) => {\n state.currentSessionKey = resolveSessionKey(key);\n updateAgentFromPicker(key);\n };\n\n const updateAgentFromPicker = (key: string) => {\n const parsed = parseAgentSessionKey(resolveSessionKey(key));\n if (parsed?.agentId) {\n currentAgentId = parsed.agentId;\n }\n };\n\n let ctrlCHandling = false;\n const handleCtrlC = () => {\n if (ctrlCHandling) return;\n ctrlCHandling = true;\n try {\n const now = Date.now();\n const decision = resolveCtrlCAction({\n hasInput: editor.getText().trim().length > 0,\n now,\n lastCtrlCAt: state.lastCtrlCAt,\n });\n state.lastCtrlCAt = decision.nextLastCtrlCAt;\n if (decision.action === 'clear') {\n editor.setText('');\n setActivityStatus('cleared input; press ctrl+c again to exit');\n tui.requestRender();\n return;\n }\n if (decision.action === 'exit') {\n requestExit();\n return;\n }\n setActivityStatus('press ctrl+c again to exit');\n tui.requestRender();\n } finally {\n ctrlCHandling = false;\n }\n };\n\n const setModelChoices = (models: TuiModelChoice[]) => {\n modelChoices = models;\n };\n\n const pickerSvc = {\n tui,\n editor,\n openOverlay: openCommandOverlay,\n closeOverlay: closeCommandOverlay,\n chatLog,\n client,\n sendMessage,\n switchModel: switchCurrentModel,\n openEditorSelector,\n refreshSessionInfo,\n updateHeader,\n state,\n setSessionKey,\n switchAgentSession,\n clearChatForSessionSwitch,\n loadSessionHistory,\n loadHistoryWindow,\n setEditorText: (text: string) => editor.setText(text),\n setModelChoices,\n getScopedModelRefs: () => state.scopedModelRefs,\n setScopedModelRefs: (refs: string[] | null) => {\n state.scopedModelRefs = refs;\n saveScopedModelRefs(refs);\n },\n refreshCycleModels,\n getTuiSettings: () => ({ ...tuiSettings }),\n applyTuiSettings,\n previewTheme,\n reloadKeybindings: reloadTuiRuntime,\n setThinkingLevel,\n getProjectTrustStore: () => projectTrustStore,\n getProjectTrustSessionDecision: () => projectTrustSessionDecision,\n setProjectTrustSessionDecision: (decision: boolean | null) => {\n projectTrustSessionDecision = decision;\n },\n keybindings,\n };\n\n uiOverlays.openModelPicker = (initialSearch?: string) => void openModelPickerOverlay(pickerSvc, initialSearch);\n uiOverlays.openAgentPicker = () => void openAgentPickerOverlay(pickerSvc);\n uiOverlays.openReviewLauncher = () => void openReviewLauncherOverlay(pickerSvc);\n uiOverlays.openSessionPicker = () => void openSessionPickerOverlay(pickerSvc);\n uiOverlays.openSessionTree = () => void openSessionTreeOverlay(pickerSvc);\n uiOverlays.openTimeline = (initialSearch?: string) => void openTimelineOverlay(pickerSvc, initialSearch);\n uiOverlays.openTranscriptTree = () => void openTranscriptTreeOverlay(pickerSvc);\n uiOverlays.openUserMessageFork = () => void openUserMessageForkOverlay(pickerSvc);\n uiOverlays.openScopedModels = () => void openScopedModelsOverlay(pickerSvc);\n uiOverlays.openThinkingSelector = () => openThinkingSelectorOverlay(pickerSvc);\n uiOverlays.openSettings = () => openSettingsOverlay(pickerSvc);\n uiOverlays.openProjectTrust = () => openProjectTrustOverlay(pickerSvc);\n\n const showSessionTree = () => {\n uiOverlays.openTranscriptTree();\n };\n\n const handleDoubleEscape = () => {\n switch (tuiSettings.doubleEscapeAction) {\n case 'tree':\n showSessionTree();\n break;\n case 'fork':\n uiOverlays.openUserMessageFork();\n break;\n default:\n break;\n }\n };\n\n defaultEditor.onEscape = () => {\n if (editorMode === 'shell') {\n editor.setText('');\n exitShellMode();\n return;\n }\n if (state.activeRunId) {\n void abortActive();\n return;\n }\n if (editor.getText().trim().length > 0) return;\n const now = Date.now();\n if (now - state.lastEscapeAt <= DOUBLE_ESCAPE_WINDOW_MS) {\n state.lastEscapeAt = 0;\n handleDoubleEscape();\n return;\n }\n state.lastEscapeAt = now;\n };\n defaultEditor.onCtrlD = () => requestExit();\n\n defaultEditor.onAction('app.clear', handleCtrlC);\n defaultEditor.onAction('app.exit', () => requestExit());\n defaultEditor.onAction('app.suspend', handleCtrlZ);\n defaultEditor.onAction('app.thinking.cycle', () => {\n const cur = state.sessionInfo.thinkingLevel ?? opts.thinking ?? 'medium';\n void setThinkingLevel(nextThinkLevel(cur));\n });\n defaultEditor.onAction('app.model.cycleForward', () => cycleModel('forward'));\n defaultEditor.onAction('app.model.cycleBackward', () => cycleModel('backward'));\n defaultEditor.onAction('app.model.select', () => uiOverlays.openModelPicker());\n defaultEditor.onAction('app.session.resume', () => void openSessionPickerOverlay(pickerSvc));\n defaultEditor.onAction('app.session.tree', showSessionTree);\n defaultEditor.onAction('app.session.fork', () => uiOverlays.openUserMessageFork());\n defaultEditor.onAction('app.tools.expand', () => {\n state.toolsExpanded = !state.toolsExpanded;\n tuiSettings = { ...tuiSettings, toolsExpanded: state.toolsExpanded };\n saveTuiSettings(tuiSettings);\n chatLog.setToolsExpanded(state.toolsExpanded);\n setActivityStatus(state.toolsExpanded ? 'tools expanded' : 'tools collapsed');\n tui.requestRender();\n });\n defaultEditor.onAction('app.thinking.toggle', () => {\n state.showThinking = !state.showThinking;\n tuiSettings = { ...tuiSettings, showThinking: state.showThinking };\n saveTuiSettings(tuiSettings);\n chatLog.setShowThinking(state.showThinking);\n updateFooter();\n tui.requestRender();\n });\n defaultEditor.onAction('app.editor.external', openExternalEditor);\n defaultEditor.onPasteImage = () => {\n void (async () => {\n const image = await readClipboardImage();\n if (!image) {\n chatLog.addStatus(theme.dim('No image found on clipboard.'));\n tui.requestRender();\n return;\n }\n if (pendingImageAttachments.length >= MAX_CHAT_ATTACHMENTS) {\n chatLog.addSystem(`Attachment limit reached (${MAX_CHAT_ATTACHMENTS}). Send or clear the current draft first.`);\n tui.requestRender();\n return;\n }\n if (image.bytes.byteLength > MAX_WEBCHAT_ATTACHMENT_FILE_BYTES) {\n chatLog.addSystem(\n `Clipboard image is too large (${image.bytes.byteLength} bytes; max ${MAX_WEBCHAT_ATTACHMENT_FILE_BYTES}).`,\n );\n tui.requestRender();\n return;\n }\n const ext = extensionForImageMimeType(image.mimeType) ?? 'png';\n const name = `clipboard-${pendingImageAttachments.length + 1}.${ext}`;\n pendingImageAttachments.push({\n type: 'image',\n mimeType: image.mimeType,\n data: Buffer.from(image.bytes).toString('base64'),\n name,\n size: image.bytes.byteLength,\n });\n chatLog.addStatus(\n theme.dim(`Attached image: ${name} (${pendingImageAttachments.length} pending). Send a message to include it.`),\n );\n tui.requestRender();\n })();\n };\n defaultEditor.onAction('app.message.followUp', handleFollowUp);\n defaultEditor.onAction('app.message.dequeue', handleDequeue);\n\n streamWatchdogId = setInterval(() => {\n const now = Date.now();\n if (!isActiveRunStreamStale(state, now, DEFAULT_STREAMING_WATCHDOG_MS)) return;\n if (!markActiveRunStalled(state, now)) return;\n state.progressMessage = 'Reconnecting output';\n setActivityStatus('stalled');\n void recoverActiveRunFromHistory('stream watchdog');\n tui.requestRender();\n }, 5000);\n\n const onAgentRunEnded = () => {\n state.progressMessage = null;\n steeringInFlightForRunId = null;\n void refreshSessionInfoWithBorder().finally(() => {\n updateFooter();\n tui.requestRender();\n });\n flushSteeringQueue();\n flushFollowUpQueue();\n };\n\n const handleWorkflowRunUpdated = (data: Record<string, unknown>): boolean => {\n const runId = typeof data.runId === 'string' ? data.runId : '';\n const view = data.view && typeof data.view === 'object' ? (data.view as WorkflowRunView) : null;\n if (!runId || !view || !visibleWorkflowRunIds.has(runId)) return false;\n\n const snapshot = runViewToSnapshot(view);\n const completed = isTerminalWorkflowRunStatus(view.run.status);\n chatLog.updateWorkflowRun(runId, renderWorkflowPanel(snapshot, { status: view.run.status }));\n if (completed) {\n chatLog.addSystem(renderWorkflowFinalSummary(snapshot, { status: view.run.status }));\n visibleWorkflowRunIds.delete(runId);\n void refreshSessionInfoWithBorder().finally(() => {\n updateFooter();\n });\n }\n tui.requestRender();\n return true;\n };\n\n client.onEvent = (evt: TuiEvent) => {\n const data = (evt.data ?? {}) as Record<string, unknown>;\n if (evt.event === 'workflow.run.updated' && handleWorkflowRunUpdated(data)) {\n return;\n }\n dispatchAgentEvent(\n evt.event,\n data,\n state,\n chatLog,\n tui,\n setActivityStatus,\n touchStreamingActivity,\n onAgentRunEnded,\n (message) => sessionSnapshot.appendMessage('assistant', assistantMessagePlainText(message)),\n evt.source,\n );\n };\n\n let startupSessionPickerOpened = false;\n\n client.onConnected = () => {\n state.isConnected = true;\n setConnectionStatus(isLocalMode ? 'local ready' : 'gateway connected');\n touchStreamingActivity();\n void (async () => {\n if (opts.openSessionPickerOnStart && !startupSessionPickerOpened) {\n startupSessionPickerOpened = true;\n await openSessionPickerOverlay(pickerSvc, {\n onCancel: () => requestExit({ showResumeHint: false }),\n onEmpty: () => requestExit({ showResumeHint: false }),\n onResume: () => {\n void refreshStartupResources().then(() => {\n updateFooter();\n tui.requestRender();\n });\n },\n });\n return;\n }\n try {\n await applyStartupWorkingDirectory();\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Working directory not changed: ${errorMessage}`);\n }\n try {\n await applyStartupProject();\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Project not selected: ${errorMessage}`);\n }\n await refreshSessionInfoWithBorder();\n await refreshModelChoices();\n await loadSessionHistory({ merge: true });\n showStartupCardOnce();\n void refreshStartupResources().then(() => {\n updateFooter();\n tui.requestRender();\n });\n if (state.activeRunId) {\n void recoverActiveRunFromHistory('broadcast reconnect');\n }\n updateHeader();\n updateFooter();\n tui.requestRender();\n if (!state.autoMessageSent && opts.message) {\n state.autoMessageSent = true;\n sendMessage(opts.message);\n }\n })();\n };\n\n client.onDisconnected = (reason: string) => {\n const wasConnected = state.isConnected;\n state.isConnected = false;\n touchStreamingActivity();\n if (isLocalMode) {\n setConnectionStatus(`local stopped: ${reason}`);\n } else {\n const hint =\n wasConnected || state.historyLoaded\n ? ` (${reason}). Reconnecting broadcast stream…`\n : `. Ensure gateway is running (xopc gateway) or use --local.`;\n setConnectionStatus(`disconnected${hint}`);\n if (!wasConnected && !state.historyLoaded) {\n const gatewayUrl = opts.url ?? 'http://localhost:3120';\n chatLog.addSystem(\n `Cannot reach gateway at ${gatewayUrl}.\\n` +\n 'Start the gateway (`xopc gateway`) or run `xopc tui --local` for embedded mode.',\n );\n }\n }\n tui.requestRender();\n };\n\n client.onGap = (info) => {\n chatLog.addSystem(\n `⚠️ Event gap: expected ${info.expected}, received ${info.received}. Some updates may be missing.`,\n );\n setConnectionStatus(`event gap: expected ${info.expected}, got ${info.received}`);\n if (state.activeRunId) {\n void recoverActiveRunFromHistory('broadcast event gap');\n } else {\n void loadSessionHistory({ merge: true });\n }\n tui.requestRender();\n };\n\n const sigintHandler = () => handleCtrlC();\n const sigtermHandler = () => requestExit();\n process.on('SIGINT', sigintHandler);\n process.on('SIGTERM', sigtermHandler);\n\n updateHeader();\n updateEditorBorderColor();\n setConnectionStatus(isLocalMode ? 'starting local runtime' : 'connecting');\n updateFooter();\n await extensionRuntime.activate();\n tui.start();\n client.start();\n\n await new Promise<void>((resolve) => {\n finishTui = () => {\n process.removeListener('SIGINT', sigintHandler);\n process.removeListener('SIGTERM', sigtermHandler);\n if (streamWatchdogId) {\n clearInterval(streamWatchdogId);\n streamWatchdogId = null;\n }\n finishTui = null;\n resolve();\n };\n });\n\n return exitResult;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xopc-tui-keybindings.js","names":[],"sources":["../../../src/tui/xopc-tui-keybindings.ts"],"sourcesContent":["import {\n TUI_KEYBINDINGS,\n type KeybindingDefinitions,\n} from '@earendil-works/pi-tui';\n\n// Re-export removed — `./tui-keybindings-file.js` imports `XOPC_TUI_KEYBINDINGS`\n// from this file, so re-exporting from it created a circular cycle. Callers\n// (tui.ts, test files) import the manager directly from `./tui-keybindings-file.js`.\n\n/** App-level bindings wired by xopc TUI (subset of pi coding-agent). */\nexport type XopcTuiAppKeybinding =\n | 'app.interrupt'\n | 'app.clear'\n | 'app.exit'\n | 'app.suspend'\n | 'app.thinking.cycle'\n | 'app.model.cycleForward'\n | 'app.model.cycleBackward'\n | 'app.model.select'\n | 'app.tools.expand'\n | 'app.thinking.toggle'\n | 'app.session.resume'\n | 'app.session.tree'\n | 'app.session.fork'\n | 'app.session.togglePath'\n | 'app.session.toggleSort'\n | 'app.session.toggleNamedFilter'\n | 'app.session.rename'\n | 'app.session.delete'\n | 'app.session.deleteNoninvasive'\n | 'app.tree.foldOrUp'\n | 'app.tree.unfoldOrDown'\n | 'app.tree.filter.default'\n | 'app.tree.filter.noTools'\n | 'app.tree.filter.userOnly'\n | 'app.tree.filter.labeledOnly'\n | 'app.tree.filter.all'\n | 'app.tree.filter.cycleForward'\n | 'app.tree.filter.cycleBackward'\n | 'app.tree.editLabel'\n | 'app.tree.toggleLabelTimestamp'\n | 'app.editor.external'\n | 'app.clipboard.pasteImage'\n | 'app.message.followUp'\n | 'app.message.dequeue'\n | 'app.models.save'\n | 'app.models.enableAll'\n | 'app.models.clearAll'\n | 'app.models.toggleProvider'\n | 'app.models.reorderUp'\n | 'app.models.reorderDown';\n\ndeclare module '@earendil-works/pi-tui' {\n interface Keybindings {\n 'app.interrupt': true;\n 'app.clear': true;\n 'app.exit': true;\n 'app.suspend': true;\n 'app.thinking.cycle': true;\n 'app.model.cycleForward': true;\n 'app.model.cycleBackward': true;\n 'app.model.select': true;\n 'app.tools.expand': true;\n 'app.thinking.toggle': true;\n 'app.session.resume': true;\n 'app.session.tree': true;\n 'app.session.fork': true;\n 'app.session.togglePath': true;\n 'app.session.toggleSort': true;\n 'app.session.toggleNamedFilter': true;\n 'app.session.rename': true;\n 'app.session.delete': true;\n 'app.session.deleteNoninvasive': true;\n 'app.tree.foldOrUp': true;\n 'app.tree.unfoldOrDown': true;\n 'app.tree.filter.default': true;\n 'app.tree.filter.noTools': true;\n 'app.tree.filter.userOnly': true;\n 'app.tree.filter.labeledOnly': true;\n 'app.tree.filter.all': true;\n 'app.tree.filter.cycleForward': true;\n 'app.tree.filter.cycleBackward': true;\n 'app.tree.editLabel': true;\n 'app.tree.toggleLabelTimestamp': true;\n 'app.editor.external': true;\n 'app.clipboard.pasteImage': true;\n 'app.message.followUp': true;\n 'app.message.dequeue': true;\n 'app.models.save': true;\n 'app.models.enableAll': true;\n 'app.models.clearAll': true;\n 'app.models.toggleProvider': true;\n 'app.models.reorderUp': true;\n 'app.models.reorderDown': true;\n }\n}\n\nexport const XOPC_TUI_KEYBINDINGS = {\n ...TUI_KEYBINDINGS,\n 'app.interrupt': { defaultKeys: 'escape', description: 'Abort run (or cancel overlay)' },\n 'app.clear': { defaultKeys: 'ctrl+c', description: 'Clear input; repeat within 0.5s to exit' },\n 'app.exit': { defaultKeys: 'ctrl+d', description: 'Exit when input empty' },\n 'app.suspend': {\n defaultKeys: process.platform === 'win32' ? [] : 'ctrl+z',\n description: 'Suspend to shell (SIGTSTP)',\n },\n 'app.thinking.cycle': {\n defaultKeys: 'shift+tab',\n description: 'Cycle /think level',\n },\n 'app.model.cycleForward': {\n defaultKeys: 'ctrl+p',\n description: 'Next model (/switch)',\n },\n 'app.model.cycleBackward': {\n defaultKeys: 'shift+ctrl+p',\n description: 'Previous model (/switch)',\n },\n 'app.model.select': { defaultKeys: 'ctrl+l', description: 'Model picker' },\n 'app.tools.expand': { defaultKeys: 'ctrl+o', description: 'Toggle tool output' },\n 'app.thinking.toggle': {\n defaultKeys: 'ctrl+t',\n description: 'Toggle thinking block display',\n },\n 'app.session.resume': {\n defaultKeys: 'ctrl+shift+p',\n description: 'Session picker',\n },\n 'app.session.tree': {\n defaultKeys: [],\n description: 'Show session tree',\n },\n 'app.session.fork': {\n defaultKeys: [],\n description: 'Fork current session',\n },\n 'app.session.togglePath': {\n defaultKeys: 'ctrl+p',\n description: 'Toggle session key display',\n },\n 'app.session.toggleSort': {\n defaultKeys: 'ctrl+s',\n description: 'Toggle session sort mode',\n },\n 'app.session.toggleNamedFilter': {\n defaultKeys: 'ctrl+n',\n description: 'Toggle named session filter',\n },\n 'app.session.rename': {\n defaultKeys: 'ctrl+r',\n description: 'Rename selected session',\n },\n 'app.session.delete': {\n defaultKeys: 'ctrl+d',\n description: 'Delete selected session',\n },\n 'app.session.deleteNoninvasive': {\n defaultKeys: 'ctrl+backspace',\n description: 'Delete session when query is empty',\n },\n 'app.tree.foldOrUp': {\n defaultKeys: ['ctrl+left', 'alt+left'],\n description: 'Fold tree branch or move up',\n },\n 'app.tree.unfoldOrDown': {\n defaultKeys: ['ctrl+right', 'alt+right'],\n description: 'Unfold tree branch or move down',\n },\n 'app.tree.filter.default': {\n defaultKeys: 'ctrl+d',\n description: 'Tree filter: default view',\n },\n 'app.tree.filter.noTools': {\n defaultKeys: 'ctrl+t',\n description: 'Tree filter: hide tool results',\n },\n 'app.tree.filter.userOnly': {\n defaultKeys: 'ctrl+u',\n description: 'Tree filter: user messages only',\n },\n 'app.tree.filter.labeledOnly': {\n defaultKeys: 'ctrl+l',\n description: 'Tree filter: labeled entries only',\n },\n 'app.tree.filter.all': {\n defaultKeys: 'ctrl+a',\n description: 'Tree filter: show all entries',\n },\n 'app.tree.filter.cycleForward': {\n defaultKeys: 'ctrl+o',\n description: 'Tree filter: cycle forward',\n },\n 'app.tree.filter.cycleBackward': {\n defaultKeys: 'shift+ctrl+o',\n description: 'Tree filter: cycle backward',\n },\n 'app.tree.editLabel': {\n defaultKeys: 'shift+l',\n description: 'Edit tree label',\n },\n 'app.tree.toggleLabelTimestamp': {\n defaultKeys: 'shift+t',\n description: 'Toggle tree label timestamps',\n },\n 'app.editor.external': {\n defaultKeys: 'ctrl+g',\n description: 'Edit input in $EDITOR',\n },\n 'app.clipboard.pasteImage': {\n defaultKeys: process.platform === 'win32' ? 'alt+v' : 'ctrl+v',\n description: 'Paste image from clipboard',\n },\n 'app.message.followUp': {\n defaultKeys: 'alt+enter',\n description: 'Queue message while busy (or submit when idle)',\n },\n 'app.message.dequeue': {\n defaultKeys: 'alt+up',\n description: 'Restore queued messages to editor',\n },\n 'app.models.save': {\n defaultKeys: 'ctrl+s',\n description: 'Save scoped model selection',\n },\n 'app.models.enableAll': {\n defaultKeys: 'ctrl+a',\n description: 'Enable all scoped models',\n },\n 'app.models.clearAll': {\n defaultKeys: 'ctrl+x',\n description: 'Clear scoped models',\n },\n 'app.models.toggleProvider': {\n defaultKeys: 'ctrl+p',\n description: 'Toggle selected provider models',\n },\n 'app.models.reorderUp': {\n defaultKeys: 'alt+up',\n description: 'Move scoped model up',\n },\n 'app.models.reorderDown': {\n defaultKeys: 'alt+down',\n description: 'Move scoped model down',\n },\n} as const satisfies KeybindingDefinitions;\n\n/** Order for `/hotkeys` and docs (pi-style UX). */\nexport const XOPC_TUI_HOTKEY_ORDER: XopcTuiAppKeybinding[] = [\n 'app.interrupt',\n 'app.clear',\n 'app.exit',\n 'app.suspend',\n 'app.thinking.cycle',\n 'app.model.cycleForward',\n 'app.model.cycleBackward',\n 'app.model.select',\n 'app.session.resume',\n 'app.session.tree',\n 'app.session.fork',\n 'app.session.togglePath',\n 'app.session.toggleSort',\n 'app.session.toggleNamedFilter',\n 'app.session.rename',\n 'app.session.delete',\n 'app.session.deleteNoninvasive',\n 'app.tree.foldOrUp',\n 'app.tree.unfoldOrDown',\n 'app.tree.filter.default',\n 'app.tree.filter.noTools',\n 'app.tree.filter.userOnly',\n 'app.tree.filter.labeledOnly',\n 'app.tree.filter.all',\n 'app.tree.filter.cycleForward',\n 'app.tree.filter.cycleBackward',\n 'app.tree.editLabel',\n 'app.tree.toggleLabelTimestamp',\n 'app.tools.expand',\n 'app.thinking.toggle',\n 'app.editor.external',\n 'app.clipboard.pasteImage',\n 'app.message.followUp',\n 'app.message.dequeue',\n 'app.models.save',\n 'app.models.enableAll',\n 'app.models.clearAll',\n 'app.models.toggleProvider',\n 'app.models.reorderUp',\n 'app.models.reorderDown',\n];\n"],"mappings":";;AAiGA,MAAa,uBAAuB;CAClC,GAAG;CACH,iBAAiB;EAAE,aAAa;EAAU,aAAa;EAAiC;CACxF,aAAa;EAAE,aAAa;EAAU,aAAa;EAA2C;CAC9F,YAAY;EAAE,aAAa;EAAU,aAAa;EAAyB;CAC3E,eAAe;EACb,aAAa,QAAQ,aAAa,UAAU,EAAE,GAAG;EACjD,aAAa;EACd;CACD,sBAAsB;EACpB,aAAa;EACb,aAAa;EACd;CACD,0BAA0B;EACxB,aAAa;EACb,aAAa;EACd;CACD,2BAA2B;EACzB,aAAa;EACb,aAAa;EACd;CACD,oBAAoB;EAAE,aAAa;EAAU,aAAa;EAAgB;CAC1E,oBAAoB;EAAE,aAAa;EAAU,aAAa;EAAsB;CAChF,uBAAuB;EACrB,aAAa;EACb,aAAa;EACd;CACD,sBAAsB;EACpB,aAAa;EACb,aAAa;EACd;CACD,oBAAoB;EAClB,aAAa,EAAE;EACf,aAAa;EACd;CACD,oBAAoB;EAClB,aAAa,EAAE;EACf,aAAa;EACd;CACD,0BAA0B;EACxB,aAAa;EACb,aAAa;EACd;CACD,0BAA0B;EACxB,aAAa;EACb,aAAa;EACd;CACD,iCAAiC;EAC/B,aAAa;EACb,aAAa;EACd;CACD,sBAAsB;EACpB,aAAa;EACb,aAAa;EACd;CACD,sBAAsB;EACpB,aAAa;EACb,aAAa;EACd;CACD,iCAAiC;EAC/B,aAAa;EACb,aAAa;EACd;CACD,qBAAqB;EACnB,aAAa,CAAC,aAAa,WAAW;EACtC,aAAa;EACd;CACD,yBAAyB;EACvB,aAAa,CAAC,cAAc,YAAY;EACxC,aAAa;EACd;CACD,2BAA2B;EACzB,aAAa;EACb,aAAa;EACd;CACD,2BAA2B;EACzB,aAAa;EACb,aAAa;EACd;CACD,4BAA4B;EAC1B,aAAa;EACb,aAAa;EACd;CACD,+BAA+B;EAC7B,aAAa;EACb,aAAa;EACd;CACD,uBAAuB;EACrB,aAAa;EACb,aAAa;EACd;CACD,gCAAgC;EAC9B,aAAa;EACb,aAAa;EACd;CACD,iCAAiC;EAC/B,aAAa;EACb,aAAa;EACd;CACD,sBAAsB;EACpB,aAAa;EACb,aAAa;EACd;CACD,iCAAiC;EAC/B,aAAa;EACb,aAAa;EACd;CACD,uBAAuB;EACrB,aAAa;EACb,aAAa;EACd;CACD,4BAA4B;EAC1B,aAAa,QAAQ,aAAa,UAAU,UAAU;EACtD,aAAa;EACd;CACD,wBAAwB;EACtB,aAAa;EACb,aAAa;EACd;CACD,uBAAuB;EACrB,aAAa;EACb,aAAa;EACd;CACD,mBAAmB;EACjB,aAAa;EACb,aAAa;EACd;CACD,wBAAwB;EACtB,aAAa;EACb,aAAa;EACd;CACD,uBAAuB;EACrB,aAAa;EACb,aAAa;EACd;CACD,6BAA6B;EAC3B,aAAa;EACb,aAAa;EACd;CACD,wBAAwB;EACtB,aAAa;EACb,aAAa;EACd;CACD,0BAA0B;EACxB,aAAa;EACb,aAAa;EACd;CACF;;AAGD,MAAa,wBAAgD;CAC3D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker-client.js","names":[],"sources":["../../../src/tunnel/broker-client.ts"],"sourcesContent":["import { createLogger } from '../utils/logger.js';\nimport type { TunnelRegistration } from './tunnel-types.js';\n\nconst log = createLogger('TunnelBroker');\n\nexport type BrokerRegisterInput = {\n brokerUrl: string;\n registrationSecret: string;\n gatewayVersion: string;\n platform: string;\n gatewayTokenHash: string;\n preferredSubdomain?: string;\n};\n\nexport class TunnelBrokerClient {\n constructor(private readonly baseUrl: string) {}\n\n private apiUrl(path: string): string {\n const base = this.baseUrl.replace(/\\/+$/, '');\n const normalized = path.startsWith('/') ? path : `/${path}`;\n return `${base}${normalized}`;\n }\n\n async register(input: BrokerRegisterInput): Promise<TunnelRegistration> {\n const url = this.apiUrl('/tunnels/register');\n const res = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Registration-Secret': input.registrationSecret,\n },\n body: JSON.stringify({\n gatewayVersion: input.gatewayVersion,\n platform: input.platform,\n gatewayTokenHash: input.gatewayTokenHash,\n preferredSubdomain: input.preferredSubdomain,\n }),\n });\n if (!res.ok) {\n const body = await res.text().catch(() => '');\n log.error({ status: res.status, url, bodyPreview: body.slice(0, 200) }, 'Tunnel register failed');\n throw new Error(`Tunnel register failed: ${res.status} ${res.statusText}`);\n }\n return (await res.json()) as TunnelRegistration;\n }\n\n async heartbeat(tunnelId: string, tunnelToken: string): Promise<void> {\n const res = await fetch(this.apiUrl(`/tunnels/${encodeURIComponent(tunnelId)}/heartbeat`), {\n method: 'POST',\n headers: { 'X-Tunnel-Token': tunnelToken },\n });\n if (res.status === 401 || res.status === 410) {\n throw new Error(`Tunnel heartbeat rejected: ${res.status}`);\n }\n if (!res.ok) {\n throw new Error(`Tunnel heartbeat failed: ${res.status}`);\n }\n }\n\n async deregister(tunnelId: string, tunnelToken: string): Promise<void> {\n const res = await fetch(this.apiUrl(`/tunnels/${encodeURIComponent(tunnelId)}`), {\n method: 'DELETE',\n headers: { 'X-Tunnel-Token': tunnelToken },\n });\n if (!res.ok && res.status !== 404) {\n log.warn({ tunnelId, status: res.status }, 'Tunnel deregister returned non-OK');\n }\n }\n\n async setDnsChallenge(input: {\n tunnelId: string;\n tunnelToken: string;\n subdomain: string;\n txtValue: string;\n }): Promise<{ recordId: string; fqdn: string }> {\n const res = await fetch(this.apiUrl('/dns/challenge'), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Tunnel-Token': input.tunnelToken,\n },\n body: JSON.stringify({\n tunnelId: input.tunnelId,\n subdomain: input.subdomain,\n txtValue: input.txtValue,\n }),\n });\n if (!res.ok) {\n const body = await res.text().catch(() => '');\n throw new Error(`Broker DNS challenge failed: ${res.status} ${body.slice(0, 200)}`);\n }\n return (await res.json()) as { recordId: string; fqdn: string };\n }\n\n async cleanupDnsChallenge(input: {\n tunnelId: string;\n tunnelToken: string;\n recordId: string;\n }): Promise<void> {\n const res = await fetch(this.apiUrl('/dns/cleanup'), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Tunnel-Token': input.tunnelToken,\n },\n body: JSON.stringify({\n tunnelId: input.tunnelId,\n recordId: input.recordId,\n }),\n });\n if (!res.ok && res.status !== 404) {\n log.warn({ recordId: input.recordId, status: res.status }, 'Broker DNS cleanup returned non-OK');\n }\n }\n}\n\nexport function resolveBrokerApiBase(brokerUrl: string): string {\n const trimmed = brokerUrl.replace(/\\/+$/, '');\n if (trimmed.endsWith('/api')) return trimmed;\n return `${trimmed}/api`;\n}\n"],"mappings":";;;aAAkD;AAGlD,MAAM,MAAM,aAAa,eAAe;AAWxC,IAAa,qBAAb,MAAgC;CAC9B,YAAY,SAAkC;AAAjB,OAAA,UAAA;;CAE7B,OAAe,MAAsB;AAGnC,SAAO,GAFM,KAAK,QAAQ,QAAQ,QAAQ,GAE5B,GADK,KAAK,WAAW,IAAI,GAAG,OAAO,IAAI;;CAIvD,MAAM,SAAS,OAAyD;EACtE,MAAM,MAAM,KAAK,OAAO,oBAAoB;EAC5C,MAAM,MAAM,MAAM,MAAM,KAAK;GAC3B,QAAQ;GACR,SAAS;IACP,gBAAgB;IAChB,yBAAyB,MAAM;IAChC;GACD,MAAM,KAAK,UAAU;IACnB,gBAAgB,MAAM;IACtB,UAAU,MAAM;IAChB,kBAAkB,MAAM;IACxB,oBAAoB,MAAM;IAC3B,CAAC;GACH,CAAC;AACF,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,OAAO,MAAM,IAAI,MAAM,CAAC,YAAY,GAAG;AAC7C,OAAI,MAAM;IAAE,QAAQ,IAAI;IAAQ;IAAK,aAAa,KAAK,MAAM,GAAG,IAAI;IAAE,EAAE,yBAAyB;AACjG,SAAM,IAAI,MAAM,2BAA2B,IAAI,OAAO,GAAG,IAAI,aAAa;;AAE5E,SAAQ,MAAM,IAAI,MAAM;;CAG1B,MAAM,UAAU,UAAkB,aAAoC;EACpE,MAAM,MAAM,MAAM,MAAM,KAAK,OAAO,YAAY,mBAAmB,SAAS,CAAC,YAAY,EAAE;GACzF,QAAQ;GACR,SAAS,EAAE,kBAAkB,aAAa;GAC3C,CAAC;AACF,MAAI,IAAI,WAAW,OAAO,IAAI,WAAW,IACvC,OAAM,IAAI,MAAM,8BAA8B,IAAI,SAAS;AAE7D,MAAI,CAAC,IAAI,GACP,OAAM,IAAI,MAAM,4BAA4B,IAAI,SAAS;;CAI7D,MAAM,WAAW,UAAkB,aAAoC;EACrE,MAAM,MAAM,MAAM,MAAM,KAAK,OAAO,YAAY,mBAAmB,SAAS,GAAG,EAAE;GAC/E,QAAQ;GACR,SAAS,EAAE,kBAAkB,aAAa;GAC3C,CAAC;AACF,MAAI,CAAC,IAAI,MAAM,IAAI,WAAW,IAC5B,KAAI,KAAK;GAAE;GAAU,QAAQ,IAAI;GAAQ,EAAE,oCAAoC;;CAInF,MAAM,gBAAgB,OAK0B;EAC9C,MAAM,MAAM,MAAM,MAAM,KAAK,OAAO,iBAAiB,EAAE;GACrD,QAAQ;GACR,SAAS;IACP,gBAAgB;IAChB,kBAAkB,MAAM;IACzB;GACD,MAAM,KAAK,UAAU;IACnB,UAAU,MAAM;IAChB,WAAW,MAAM;IACjB,UAAU,MAAM;IACjB,CAAC;GACH,CAAC;AACF,MAAI,CAAC,IAAI,IAAI;GACX,MAAM,OAAO,MAAM,IAAI,MAAM,CAAC,YAAY,GAAG;AAC7C,SAAM,IAAI,MAAM,gCAAgC,IAAI,OAAO,GAAG,KAAK,MAAM,GAAG,IAAI,GAAG;;AAErF,SAAQ,MAAM,IAAI,MAAM;;CAG1B,MAAM,oBAAoB,OAIR;EAChB,MAAM,MAAM,MAAM,MAAM,KAAK,OAAO,eAAe,EAAE;GACnD,QAAQ;GACR,SAAS;IACP,gBAAgB;IAChB,kBAAkB,MAAM;IACzB;GACD,MAAM,KAAK,UAAU;IACnB,UAAU,MAAM;IAChB,UAAU,MAAM;IACjB,CAAC;GACH,CAAC;AACF,MAAI,CAAC,IAAI,MAAM,IAAI,WAAW,IAC5B,KAAI,KAAK;GAAE,UAAU,MAAM;GAAU,QAAQ,IAAI;GAAQ,EAAE,qCAAqC;;;AAKtG,SAAgB,qBAAqB,WAA2B;CAC9D,MAAM,UAAU,UAAU,QAAQ,QAAQ,GAAG;AAC7C,KAAI,QAAQ,SAAS,OAAO,CAAE,QAAO;AACrC,QAAO,GAAG,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"consent.js","names":[],"sources":["../../../src/tunnel/consent.ts"],"sourcesContent":["import type { Config } from '../config/schema.js';\n\n/** Bump when risk copy or terms change; users must re-accept. */\nexport const CURRENT_TUNNEL_CONSENT_VERSION = '2026-05';\n\n/** Bump when Tailscale Serve risk copy changes. */\nexport const CURRENT_TAILSCALE_CONSENT_VERSION = '2026-05-serve';\n\nexport function hasValidTailscaleConsent(config: Config): boolean {\n const consent = config.gateway?.tailscale?.consent;\n if (!consent?.acceptedAt?.trim()) return false;\n return consent.version === CURRENT_TAILSCALE_CONSENT_VERSION;\n}\n\nexport function buildTailscaleConsentRecord() {\n return {\n version: CURRENT_TAILSCALE_CONSENT_VERSION,\n acceptedAt: new Date().toISOString(),\n };\n}\n\nexport const TUNNEL_CONSENT_REQUIRED_CODE = 'TUNNEL_CONSENT_REQUIRED';\n\nexport class TunnelConsentError extends Error {\n readonly code = TUNNEL_CONSENT_REQUIRED_CODE;\n\n constructor(message: string) {\n super(message);\n this.name = 'TunnelConsentError';\n }\n}\n\nexport type TunnelConsentState = {\n valid: boolean;\n consentRequired: boolean;\n acceptedAt: string | null;\n acceptedVersion: string | null;\n currentVersion: string;\n canAutoStart: boolean;\n};\n\nexport function hasValidTunnelConsent(config: Config): boolean {\n const consent = config.tunnel?.consent;\n if (!consent?.acceptedAt?.trim()) return false;\n return consent.version === CURRENT_TUNNEL_CONSENT_VERSION;\n}\n\nexport function getTunnelConsentState(config: Config): TunnelConsentState {\n const consent = config.tunnel?.consent;\n const valid = hasValidTunnelConsent(config);\n const enabled = config.tunnel?.enabled === true;\n return {\n valid,\n consentRequired: !valid,\n acceptedAt: consent?.acceptedAt ?? null,\n acceptedVersion: consent?.version ?? null,\n currentVersion: CURRENT_TUNNEL_CONSENT_VERSION,\n canAutoStart: valid && enabled,\n };\n}\n\n/** Gate tunnel start and autostart paths. */\nexport function assertTunnelMayStart(config: Config): void {\n if (!hasValidTunnelConsent(config)) {\n throw new TunnelConsentError(\n `Remote access requires accepting the security notice (version ${CURRENT_TUNNEL_CONSENT_VERSION}). ` +\n 'Use the gateway settings page or `xopc tunnel start --accept-risk` after reading the risks.',\n );\n }\n}\n\nexport function assertTunnelAutoStartAllowed(config: Config): void {\n assertTunnelMayStart(config);\n if (config.tunnel?.enabled !== true) {\n throw new TunnelConsentError(\n 'tunnel.autoStart requires remote access to be enabled (start the tunnel once from settings or CLI).',\n );\n }\n}\n\nexport function buildTunnelConsentRecord(): NonNullable<Config['tunnel']>['consent'] {\n return {\n version: CURRENT_TUNNEL_CONSENT_VERSION,\n acceptedAt: new Date().toISOString(),\n };\n}\n\n/** Short risk summary for CLI (keep in sync with web i18n). */\nexport const TUNNEL_RISK_SUMMARY_LINES = [\n 'Starting remote access exposes your gateway on the public internet via frp.xopc.ai.',\n 'Anyone with the public URL or pairing QR may use your gateway Bearer token.',\n 'Traffic is proxied through third-party infrastructure; use a strong token and stop the tunnel when not needed.',\n] as const;\n"],"mappings":";;AAGA,MAAa,iCAAiC;;AAG9C,MAAa,oCAAoC;AAEjD,SAAgB,yBAAyB,QAAyB;CAChE,MAAM,UAAU,OAAO,SAAS,WAAW;AAC3C,KAAI,CAAC,SAAS,YAAY,MAAM,CAAE,QAAO;AACzC,QAAO,QAAQ,YAAY;;AAG7B,SAAgB,8BAA8B;AAC5C,QAAO;EACL,SAAS;EACT,6BAAY,IAAI,MAAM,EAAC,aAAa;EACrC;;AAGH,MAAa,+BAA+B;AAE5C,IAAa,qBAAb,cAAwC,MAAM;CAC5C,OAAgB;CAEhB,YAAY,SAAiB;AAC3B,QAAM,QAAQ;AACd,OAAK,OAAO;;;AAahB,SAAgB,sBAAsB,QAAyB;CAC7D,MAAM,UAAU,OAAO,QAAQ;AAC/B,KAAI,CAAC,SAAS,YAAY,MAAM,CAAE,QAAO;AACzC,QAAO,QAAQ,YAAY;;AAG7B,SAAgB,sBAAsB,QAAoC;CACxE,MAAM,UAAU,OAAO,QAAQ;CAC/B,MAAM,QAAQ,sBAAsB,OAAO;CAC3C,MAAM,UAAU,OAAO,QAAQ,YAAY;AAC3C,QAAO;EACL;EACA,iBAAiB,CAAC;EAClB,YAAY,SAAS,cAAc;EACnC,iBAAiB,SAAS,WAAW;EACrC,gBAAgB;EAChB,cAAc,SAAS;EACxB;;;AAIH,SAAgB,qBAAqB,QAAsB;AACzD,KAAI,CAAC,sBAAsB,OAAO,CAChC,OAAM,IAAI,mBACR,iEAAiE,+BAA+B,kGAEjG;;AAIL,SAAgB,6BAA6B,QAAsB;AACjE,sBAAqB,OAAO;AAC5B,KAAI,OAAO,QAAQ,YAAY,KAC7B,OAAM,IAAI,mBACR,sGACD;;AAIL,SAAgB,2BAAqE;AACnF,QAAO;EACL,SAAS;EACT,6BAAY,IAAI,MAAM,EAAC,aAAa;EACrC;;;AAIH,MAAa,4BAA4B;CACvC;CACA;CACA;CACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"enable-lan-pairing.js","names":[],"sources":["../../../src/tunnel/enable-lan-pairing.ts"],"sourcesContent":["import type { Config } from '../config/schema.js';\nimport {\n isNetworkAccessibleBindHost,\n resolveGatewayBindMode,\n resolveGatewayEffectiveHost,\n} from '../config/gateway-bind.js';\nimport { resolveGatewayAuth, assertGatewayAuthConfigured } from '../gateway/auth.js';\nimport { buildDefaultCorsOrigins } from '../gateway/host.js';\nimport { assertGatewayRuntimeConfig } from '../gateway/runtime-config.js';\nimport { enumerateLanGatewayCandidates } from './tunnel-qr.js';\n\nfunction mergeCorsOriginsForLan(config: Config, port: number, bindHost: string): void {\n if (!config.gateway) return;\n const existing = new Set(\n (config.gateway.corsOrigins ?? []).map((o) => o.trim()).filter(Boolean),\n );\n for (const origin of buildDefaultCorsOrigins({ port, bindHost })) {\n existing.add(origin);\n }\n for (const candidate of enumerateLanGatewayCandidates(port)) {\n existing.add(candidate.url);\n }\n config.gateway.corsOrigins = [...existing];\n}\n\nexport function applyLanPairingGatewayPatch(\n config: Config,\n): { ok: true; changed: boolean } | { ok: false; message: string } {\n const bindMode = resolveGatewayBindMode(config);\n const listenHost = resolveGatewayEffectiveHost(config);\n if (bindMode === 'lan' && isNetworkAccessibleBindHost(listenHost)) {\n return { ok: true, changed: false };\n }\n\n if (!config.gateway) {\n return { ok: false, message: 'Gateway section missing from config' };\n }\n\n config.gateway.bind = 'lan';\n delete config.gateway.customBindHost;\n\n const port = config.gateway.port ?? 18790;\n const bindHost = resolveGatewayEffectiveHost(config);\n mergeCorsOriginsForLan(config, port, bindHost);\n\n try {\n const auth = resolveGatewayAuth({ authConfig: config.gateway.auth });\n assertGatewayAuthConfigured(auth);\n assertGatewayRuntimeConfig({\n cfg: config,\n auth,\n port,\n });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return { ok: false, message };\n }\n\n return { ok: true, changed: true };\n}\n"],"mappings":";;;;;;AAWA,SAAS,uBAAuB,QAAgB,MAAc,UAAwB;AACpF,KAAI,CAAC,OAAO,QAAS;CACrB,MAAM,WAAW,IAAI,KAClB,OAAO,QAAQ,eAAe,EAAE,EAAE,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,QAAQ,CACxE;AACD,MAAK,MAAM,UAAU,wBAAwB;EAAE;EAAM;EAAU,CAAC,CAC9D,UAAS,IAAI,OAAO;AAEtB,MAAK,MAAM,aAAa,8BAA8B,KAAK,CACzD,UAAS,IAAI,UAAU,IAAI;AAE7B,QAAO,QAAQ,cAAc,CAAC,GAAG,SAAS;;AAG5C,SAAgB,4BACd,QACiE;CACjE,MAAM,WAAW,uBAAuB,OAAO;CAC/C,MAAM,aAAa,4BAA4B,OAAO;AACtD,KAAI,aAAa,SAAS,4BAA4B,WAAW,CAC/D,QAAO;EAAE,IAAI;EAAM,SAAS;EAAO;AAGrC,KAAI,CAAC,OAAO,QACV,QAAO;EAAE,IAAI;EAAO,SAAS;EAAuC;AAGtE,QAAO,QAAQ,OAAO;AACtB,QAAO,OAAO,QAAQ;CAEtB,MAAM,OAAO,OAAO,QAAQ,QAAQ;AAEpC,wBAAuB,QAAQ,MADd,4BAA4B,OACA,CAAC;AAE9C,KAAI;EACF,MAAM,OAAO,mBAAmB,EAAE,YAAY,OAAO,QAAQ,MAAM,CAAC;AACpE,8BAA4B,KAAK;AACjC,6BAA2B;GACzB,KAAK;GACL;GACA;GACD,CAAC;UACK,KAAK;AAEZ,SAAO;GAAE,IAAI;GAAO,SADJ,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;GACnC;;AAG/B,QAAO;EAAE,IAAI;EAAM,SAAS;EAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.js","names":[],"sources":["../../../src/tunnel/env.ts"],"sourcesContent":["import type { Config } from '../config/schema.js';\n\nconst DEV_REGISTRATION_SECRET = 'dev-registration-secret';\n\nexport const TUNNEL_MASKED_SECRET_SENTINELS = ['***', '••••••••••••'] as const;\n\nexport type TunnelRegistrationSecretSource = 'env' | 'config' | 'dev_default' | 'missing';\n\nexport type TunnelRegistrationSecretMeta = {\n configured: boolean;\n source: TunnelRegistrationSecretSource;\n};\n\nfunction brokerHostname(brokerUrl: string): string | null {\n try {\n const normalized = brokerUrl.includes('://') ? brokerUrl : `https://${brokerUrl}`;\n return new URL(normalized.replace(/\\/+$/, '')).hostname;\n } catch {\n return null;\n }\n}\n\n/** True when the broker is the public frp.xopc.ai service (not local dev). */\nexport function isProductionTunnelBroker(brokerUrl: string): boolean {\n const host = brokerHostname(brokerUrl);\n if (!host) return true;\n if (host === 'localhost' || host === '127.0.0.1' || host === '::1') return false;\n if (host.endsWith('.local')) return false;\n return host === 'frp.xopc.ai';\n}\n\nexport function maskTunnelSecretForWeb(secret: string): string {\n const trimmed = secret.trim();\n if (!trimmed) return '';\n return '•'.repeat(trimmed.length);\n}\n\nexport function isMaskedTunnelSecretPatchValue(value: string): boolean {\n if ((TUNNEL_MASKED_SECRET_SENTINELS as readonly string[]).includes(value)) return true;\n return /^•+$/.test(value);\n}\n\nfunction effectiveBrokerUrl(\n brokerUrl: string | undefined,\n env: NodeJS.ProcessEnv,\n): string {\n return brokerUrl ?? env.XOPC_TUNNEL_BROKER_URL ?? 'https://frp.xopc.ai/api';\n}\n\n/**\n * Describe where the tunnel registration secret will be resolved from (no secret value returned).\n */\n/** Plaintext registration secret from config file only (never env). */\nexport function readTunnelRegistrationSecretFromConfigOnly(\n config: Config | undefined,\n): string | null {\n const secret = config?.tunnel?.registrationSecret?.trim();\n return secret || null;\n}\n\nexport function getTunnelRegistrationSecretMeta(\n config: Config | undefined,\n env: NodeJS.ProcessEnv = process.env,\n brokerUrl?: string,\n): TunnelRegistrationSecretMeta {\n if (env.XOPC_TUNNEL_REGISTRATION_SECRET?.trim()) {\n return { configured: true, source: 'env' };\n }\n\n if (config?.tunnel?.registrationSecret?.trim()) {\n return { configured: true, source: 'config' };\n }\n\n const effectiveUrl = effectiveBrokerUrl(brokerUrl ?? config?.tunnel?.brokerUrl, env);\n if (isProductionTunnelBroker(effectiveUrl)) {\n return { configured: false, source: 'missing' };\n }\n\n return { configured: true, source: 'dev_default' };\n}\n\n/**\n * Registration secret for Tunnel Broker register API.\n * Priority: env `XOPC_TUNNEL_REGISTRATION_SECRET` → `tunnel.registrationSecret` in config → dev default (non-production brokers only).\n */\nexport function resolveTunnelRegistrationSecret(\n env: NodeJS.ProcessEnv = process.env,\n brokerUrl?: string,\n configSecret?: string,\n): string {\n const fromEnv = env.XOPC_TUNNEL_REGISTRATION_SECRET?.trim();\n if (fromEnv) return fromEnv;\n\n const fromConfig = configSecret?.trim();\n if (fromConfig) return fromConfig;\n\n const effectiveUrl = effectiveBrokerUrl(brokerUrl, env);\n\n if (isProductionTunnelBroker(effectiveUrl)) {\n throw new Error(\n 'Tunnel registration secret is required for the production broker (frp.xopc.ai). ' +\n 'Create a Tunnel Registration Key at https://console.xopc.ai/keys/tunnel and save it under Remote access → Public internet.',\n );\n }\n\n return DEV_REGISTRATION_SECRET;\n}\n\nexport function resolveTunnelBrokerUrl(\n configBrokerUrl: string | undefined,\n env: NodeJS.ProcessEnv = process.env,\n): string {\n return env.XOPC_TUNNEL_BROKER_URL ?? configBrokerUrl ?? 'https://frp.xopc.ai/api';\n}\n"],"mappings":";AAEA,MAAM,0BAA0B;AAEhC,MAAa,iCAAiC,CAAC,OAAO,eAAe;AASrE,SAAS,eAAe,WAAkC;AACxD,KAAI;EACF,MAAM,aAAa,UAAU,SAAS,MAAM,GAAG,YAAY,WAAW;AACtE,SAAO,IAAI,IAAI,WAAW,QAAQ,QAAQ,GAAG,CAAC,CAAC;SACzC;AACN,SAAO;;;;AAKX,SAAgB,yBAAyB,WAA4B;CACnE,MAAM,OAAO,eAAe,UAAU;AACtC,KAAI,CAAC,KAAM,QAAO;AAClB,KAAI,SAAS,eAAe,SAAS,eAAe,SAAS,MAAO,QAAO;AAC3E,KAAI,KAAK,SAAS,SAAS,CAAE,QAAO;AACpC,QAAO,SAAS;;AAGlB,SAAgB,uBAAuB,QAAwB;CAC7D,MAAM,UAAU,OAAO,MAAM;AAC7B,KAAI,CAAC,QAAS,QAAO;AACrB,QAAO,IAAI,OAAO,QAAQ,OAAO;;AAGnC,SAAgB,+BAA+B,OAAwB;AACrE,KAAK,+BAAqD,SAAS,MAAM,CAAE,QAAO;AAClF,QAAO,OAAO,KAAK,MAAM;;AAG3B,SAAS,mBACP,WACA,KACQ;AACR,QAAO,aAAa,IAAI,0BAA0B;;;;;;AAOpD,SAAgB,2CACd,QACe;AAEf,QADe,QAAQ,QAAQ,oBAAoB,MAAM,IACxC;;AAGnB,SAAgB,gCACd,QACA,MAAyB,QAAQ,KACjC,WAC8B;AAC9B,KAAI,IAAI,iCAAiC,MAAM,CAC7C,QAAO;EAAE,YAAY;EAAM,QAAQ;EAAO;AAG5C,KAAI,QAAQ,QAAQ,oBAAoB,MAAM,CAC5C,QAAO;EAAE,YAAY;EAAM,QAAQ;EAAU;AAI/C,KAAI,yBADiB,mBAAmB,aAAa,QAAQ,QAAQ,WAAW,IACvC,CAAC,CACxC,QAAO;EAAE,YAAY;EAAO,QAAQ;EAAW;AAGjD,QAAO;EAAE,YAAY;EAAM,QAAQ;EAAe;;;;;;AAOpD,SAAgB,gCACd,MAAyB,QAAQ,KACjC,WACA,cACQ;CACR,MAAM,UAAU,IAAI,iCAAiC,MAAM;AAC3D,KAAI,QAAS,QAAO;CAEpB,MAAM,aAAa,cAAc,MAAM;AACvC,KAAI,WAAY,QAAO;AAIvB,KAAI,yBAFiB,mBAAmB,WAAW,IAEV,CAAC,CACxC,OAAM,IAAI,MACR,6MAED;AAGH,QAAO;;AAGT,SAAgB,uBACd,iBACA,MAAyB,QAAQ,KACzB;AACR,QAAO,IAAI,0BAA0B,mBAAmB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"frp-subdomain-host.js","names":[],"sources":["../../../src/tunnel/frp-subdomain-host.ts"],"sourcesContent":["/** Broker subdomain host derived from broker URL. */\nexport function resolveFrpSubdomainHost(brokerUrl: string, override?: string): string {\n if (override?.trim()) return override.trim();\n try {\n const host = new URL(brokerUrl.replace(/\\/api\\/?$/, '')).hostname;\n if (host === 'frp.xopc.ai' || host.endsWith('.frp.xopc.ai')) return 'frp.xopc.ai';\n if (host.includes('.')) return host;\n } catch {\n /* fall through */\n }\n return 'frp.xopc.ai';\n}\n"],"mappings":";;AACA,SAAgB,wBAAwB,WAAmB,UAA2B;AACpF,KAAI,UAAU,MAAM,CAAE,QAAO,SAAS,MAAM;AAC5C,KAAI;EACF,MAAM,OAAO,IAAI,IAAI,UAAU,QAAQ,aAAa,GAAG,CAAC,CAAC;AACzD,MAAI,SAAS,iBAAiB,KAAK,SAAS,eAAe,CAAE,QAAO;AACpE,MAAI,KAAK,SAAS,IAAI,CAAE,QAAO;SACzB;AAGR,QAAO"}