@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":"failover-error.js","names":["o"],"sources":["../../../src/agent/failover-error.ts"],"sourcesContent":["/**\n * FailoverError — uniform terminal error after all candidate provider/model\n * attempts have failed.\n *\n * Used by capability runtimes (image / audio / video) so that:\n * - the agent surface gets a single error message\n * - the tool layer can serialize structured `attempts` for the LLM and UI\n * - downstream code can reason about a \"reason\" enum instead of parsing\n * vendor-specific status codes.\n *\n * Step 1: pure model. Step 2 wires it into the new image-generation runtime.\n */\n\nimport { ProviderHttpError, isTimeoutAbortError } from '../media-shared/http/index.js';\n\n/**\n * Coarse failure category. UI / LLM should branch on this rather than\n * `error.message`.\n */\nexport type FailoverReason =\n | 'timeout'\n | 'aborted'\n | 'auth'\n | 'rate_limit'\n | 'bad_request'\n | 'not_found'\n | 'server_error'\n | 'network'\n | 'capability_unsupported'\n | 'config'\n | 'unknown';\n\n/** One attempt against a single provider/model. */\nexport interface FallbackAttempt {\n /** Provider id, e.g. \"openai\". */\n provider: string;\n /** Model id, e.g. \"gpt-image-1\". */\n model: string;\n /** Short, human-readable failure summary. */\n error: string;\n /** Coarse category. */\n reason: FailoverReason;\n /** HTTP status when applicable. */\n status?: number;\n /** Vendor-specific code when assertOk could parse one. */\n code?: string;\n /** Wall-clock duration of this attempt in ms. */\n durationMs?: number;\n}\n\nexport interface FailoverErrorInit {\n /** Capability that failed, e.g. \"image-generation\", \"tts\". */\n capability: string;\n /** Ordered attempts that ran. */\n attempts: FallbackAttempt[];\n /** Optional final aggregate message; default summarises attempts. */\n message?: string;\n /** Last underlying error for `cause` chain. */\n cause?: unknown;\n}\n\nexport class FailoverError extends Error {\n readonly capability: string;\n readonly attempts: ReadonlyArray<FallbackAttempt>;\n /** Convenience: reason from the last attempt, or 'unknown' if empty. */\n readonly reason: FailoverReason;\n /** Convenience: status from the last attempt. */\n readonly status?: number;\n /** Convenience: code from the last attempt. */\n readonly code?: string;\n /** Convenience: provider from the last attempt. */\n readonly provider?: string;\n /** Convenience: model from the last attempt. */\n readonly model?: string;\n\n constructor(init: FailoverErrorInit) {\n const last = init.attempts[init.attempts.length - 1];\n const message = init.message ?? defaultMessage(init.capability, init.attempts);\n super(message);\n this.name = 'FailoverError';\n this.capability = init.capability;\n this.attempts = Object.freeze([...init.attempts]);\n this.reason = last?.reason ?? 'unknown';\n this.status = last?.status;\n this.code = last?.code;\n this.provider = last?.provider;\n this.model = last?.model;\n if (init.cause !== undefined) {\n // Standard Error.cause (Node 16+).\n (this as { cause?: unknown }).cause = init.cause;\n }\n }\n}\n\n/** Cross-realm-safe predicate (instanceof breaks across vm boundaries). */\nexport function isFailoverError(e: unknown): e is FailoverError {\n if (e instanceof FailoverError) return true;\n if (!e || typeof e !== 'object') return false;\n const obj = e as { name?: unknown; capability?: unknown; attempts?: unknown };\n return obj.name === 'FailoverError' && typeof obj.capability === 'string' && Array.isArray(obj.attempts);\n}\n\n/**\n * Pretty multi-line description for logs / CLI output. Each line is\n * `<i>. <provider>/<model> [<reason>] (status=<n>): <error>`.\n */\nexport function describeFailoverError(e: FailoverError): string {\n const head = `[${e.capability}] ${e.attempts.length} attempt(s) failed`;\n const lines = e.attempts.map((a, i) => {\n const parts = [`${i + 1}. ${a.provider}/${a.model}`, `[${a.reason}]`];\n if (a.status !== undefined) parts.push(`status=${a.status}`);\n if (a.code) parts.push(`code=${a.code}`);\n parts.push(`- ${a.error}`);\n return parts.join(' ');\n });\n return [head, ...lines].join('\\n');\n}\n\n/**\n * Map an HTTP status to a {@link FailoverReason}.\n */\nexport function reasonFromHttpStatus(status: number | undefined): FailoverReason {\n if (typeof status !== 'number' || !Number.isFinite(status)) return 'unknown';\n if (status === 401 || status === 403) return 'auth';\n if (status === 404) return 'not_found';\n if (status === 408) return 'timeout';\n if (status === 429) return 'rate_limit';\n if (status >= 400 && status < 500) return 'bad_request';\n if (status >= 500 && status < 600) return 'server_error';\n return 'unknown';\n}\n\n/**\n * Best-effort classifier from an arbitrary thrown value into a\n * {@link FallbackAttempt}-friendly shape.\n */\nexport function classifyAttemptError(e: unknown): {\n reason: FailoverReason;\n status?: number;\n code?: string;\n message: string;\n} {\n if (e instanceof ProviderHttpError) {\n return {\n reason: reasonFromHttpStatus(e.status),\n status: e.status,\n code: e.code,\n message: e.message,\n };\n }\n if (isTimeoutAbortError(e)) {\n return { reason: 'timeout', message: e.message };\n }\n if (isAbortError(e)) {\n return { reason: 'aborted', message: 'Request aborted by caller' };\n }\n if (isFetchTransportError(e)) {\n const em = e instanceof Error ? e.message : String(e);\n return { reason: 'network', message: em };\n }\n const em = e instanceof Error ? e.message : String(e);\n return { reason: 'unknown', message: em };\n}\n\nfunction defaultMessage(capability: string, attempts: FallbackAttempt[]): string {\n if (attempts.length === 0) {\n return `Capability \"${capability}\" failed: no candidates were attempted.`;\n }\n const last = attempts[attempts.length - 1];\n const summary = `${last.provider}/${last.model} failed with ${last.reason}`;\n return `Capability \"${capability}\" failed after ${attempts.length} attempt(s); last: ${summary}: ${last.error}`;\n}\n\nfunction isAbortError(e: unknown): boolean {\n if (!e || typeof e !== 'object') return false;\n const o = e as { name?: unknown };\n return o.name === 'AbortError';\n}\n\nfunction isFetchTransportError(e: unknown): boolean {\n if (!(e instanceof Error)) return false;\n const msg = e.message.toLowerCase();\n return (\n msg.includes('fetch failed') ||\n msg.includes('network') ||\n msg.includes('econnrefused') ||\n msg.includes('econnreset') ||\n msg.includes('enotfound')\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"candidates.js","names":["parseModelRefUtil"],"sources":["../../../../src/agent/fallback/candidates.ts"],"sourcesContent":["import type { Config } from '../../config/schema.js';\nimport { isProviderConfiguredSync } from '../../providers/index.js';\nimport { getDefaultModelSync } from '../../providers/index.js';\nimport { parseModelRef as parseModelRefUtil, normalizeProviderId } from '../models/selection.js';\n\nexport interface ModelCandidate {\n provider: string;\n model: string;\n}\n\nfunction getDefaultModelParts(config?: Config): ModelCandidate | null {\n const defaultModel = getDefaultModelSync(config);\n if (!defaultModel) return null;\n const parts = defaultModel.split('/');\n if (!parts[0] || !parts[1]) return null;\n return { provider: parts[0], model: parts[1] };\n}\n\n/**\n * Parse model reference string into provider/model parts.\n * Uses the unified implementation from selection.ts.\n */\nfunction parseModelRef(raw: string, defaultProvider?: string): ModelCandidate | null {\n const result = parseModelRefUtil(raw, defaultProvider);\n if (!result) return null;\n return {\n provider: normalizeProviderId(result.provider),\n model: result.model,\n };\n}\n\nexport function resolveFallbackCandidates(params: {\n cfg: Config | undefined;\n provider: string;\n model: string;\n fallbacksOverride?: string[];\n}): ModelCandidate[] {\n const { cfg, provider: inputProvider, model: inputModel, fallbacksOverride } = params;\n\n const primaryRef = getDefaultModelSync(cfg);\n const fallbacks = fallbacksOverride;\n\n const defaultParts = getDefaultModelParts(cfg);\n const primaryResolved = parseModelRef(primaryRef || getDefaultModelSync(cfg));\n const provider = inputProvider.trim() || primaryResolved?.provider || defaultParts?.provider || '';\n const model = inputModel.trim() || primaryResolved?.model || defaultParts?.model || '';\n\n const candidates: ModelCandidate[] = [];\n const seen = new Set<string>();\n\n const addCandidate = (c: ModelCandidate) => {\n const key = `${c.provider}/${c.model}`.toLowerCase();\n if (seen.has(key)) return;\n // Skip providers that are not configured (no API key)\n if (!isProviderConfiguredSync(c.provider)) return;\n seen.add(key);\n candidates.push(c);\n };\n\n if (provider && model) {\n addCandidate({ provider, model });\n }\n\n if (fallbacks) {\n for (const fb of fallbacks) {\n const resolved = parseModelRef(fb, provider);\n if (resolved) addCandidate(resolved);\n }\n }\n\n if (!fallbacksOverride && primaryResolved) {\n addCandidate(primaryResolved);\n }\n\n return candidates;\n}\n"],"mappings":";;;gBACoE;AASpE,SAAS,qBAAqB,QAAwC;CACpE,MAAM,eAAe,oBAAoB,OAAO;AAChD,KAAI,CAAC,aAAc,QAAO;CAC1B,MAAM,QAAQ,aAAa,MAAM,IAAI;AACrC,KAAI,CAAC,MAAM,MAAM,CAAC,MAAM,GAAI,QAAO;AACnC,QAAO;EAAE,UAAU,MAAM;EAAI,OAAO,MAAM;EAAI;;;;;;AAOhD,SAAS,cAAc,KAAa,iBAAiD;CACnF,MAAM,SAASA,gBAAkB,KAAK,gBAAgB;AACtD,KAAI,CAAC,OAAQ,QAAO;AACpB,QAAO;EACL,UAAU,oBAAoB,OAAO,SAAS;EAC9C,OAAO,OAAO;EACf;;AAGH,SAAgB,0BAA0B,QAKrB;CACnB,MAAM,EAAE,KAAK,UAAU,eAAe,OAAO,YAAY,sBAAsB;CAE/E,MAAM,aAAa,oBAAoB,IAAI;CAC3C,MAAM,YAAY;CAElB,MAAM,eAAe,qBAAqB,IAAI;CAC9C,MAAM,kBAAkB,cAAc,cAAc,oBAAoB,IAAI,CAAC;CAC7E,MAAM,WAAW,cAAc,MAAM,IAAI,iBAAiB,YAAY,cAAc,YAAY;CAChG,MAAM,QAAQ,WAAW,MAAM,IAAI,iBAAiB,SAAS,cAAc,SAAS;CAEpF,MAAM,aAA+B,EAAE;CACvC,MAAM,uBAAO,IAAI,KAAa;CAE9B,MAAM,gBAAgB,MAAsB;EAC1C,MAAM,MAAM,GAAG,EAAE,SAAS,GAAG,EAAE,QAAQ,aAAa;AACpD,MAAI,KAAK,IAAI,IAAI,CAAE;AAEnB,MAAI,CAAC,yBAAyB,EAAE,SAAS,CAAE;AAC3C,OAAK,IAAI,IAAI;AACb,aAAW,KAAK,EAAE;;AAGpB,KAAI,YAAY,MACd,cAAa;EAAE;EAAU;EAAO,CAAC;AAGnC,KAAI,UACF,MAAK,MAAM,MAAM,WAAW;EAC1B,MAAM,WAAW,cAAc,IAAI,SAAS;AAC5C,MAAI,SAAU,cAAa,SAAS;;AAIxC,KAAI,CAAC,qBAAqB,gBACxB,cAAa,gBAAgB;AAG/B,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reason.js","names":[],"sources":["../../../../src/agent/fallback/reason.ts"],"sourcesContent":["export type FailoverReason =\n | 'auth'\n | 'format'\n | 'rate_limit'\n | 'billing'\n | 'timeout'\n | 'unknown';\n\nexport function isRateLimitErrorMessage(raw: string): boolean {\n return raw.toLowerCase().includes('rate limit') || /429/i.test(raw);\n}\n\nexport function isTimeoutErrorMessage(raw: string): boolean {\n return raw.toLowerCase().includes('timeout') || raw.toLowerCase().includes('timed out');\n}\n\nexport function isBillingErrorMessage(raw: string): boolean {\n const lower = raw.toLowerCase();\n return lower.includes('402') || lower.includes('billing') || lower.includes('insufficient credit');\n}\n\nexport function isAuthErrorMessage(raw: string): boolean {\n const lower = raw.toLowerCase();\n return lower.includes('401') || lower.includes('403') || lower.includes('unauthorized') || lower.includes('invalid api key');\n}\n\nexport function isFormatErrorMessage(raw: string): boolean {\n return raw.toLowerCase().includes('invalid request format') || raw.toLowerCase().includes('tool_use.id');\n}\n\nfunction getStatusCode(err: unknown): number | undefined {\n if (!err || typeof err !== 'object') return undefined;\n const status = (err as { status?: unknown }).status ?? (err as { statusCode?: unknown }).statusCode;\n if (typeof status === 'number') return status;\n if (typeof status === 'string' && /^\\d+$/.test(status)) return Number(status);\n return undefined;\n}\n\nfunction getErrorCode(err: unknown): string | undefined {\n if (!err || typeof err !== 'object') return undefined;\n const code = (err as { code?: unknown }).code;\n if (typeof code === 'string') return code.trim() || undefined;\n return undefined;\n}\n\nfunction getErrorMessage(err: unknown): string {\n if (err instanceof Error) return err.message;\n if (typeof err === 'string') return err;\n if (err && typeof err === 'object') {\n const msg = (err as { message?: unknown }).message;\n if (typeof msg === 'string') return msg;\n }\n return String(err);\n}\n\nexport function classifyFailoverReason(err: unknown): FailoverReason {\n const status = getStatusCode(err);\n if (status === 402) return 'billing';\n if (status === 429) return 'rate_limit';\n if (status === 401 || status === 403) return 'auth';\n if (status === 408) return 'timeout';\n if (status === 400) return 'format';\n\n const code = (getErrorCode(err) ?? '').toUpperCase();\n if (['ETIMEDOUT', 'ECONNRESET'].includes(code)) return 'timeout';\n\n const message = getErrorMessage(err);\n if (!message) return 'unknown';\n\n if (isRateLimitErrorMessage(message)) return 'rate_limit';\n if (isBillingErrorMessage(message)) return 'billing';\n if (isTimeoutErrorMessage(message)) return 'timeout';\n if (isAuthErrorMessage(message)) return 'auth';\n if (isFormatErrorMessage(message)) return 'format';\n\n const lower = message.toLowerCase();\n if (\n lower.includes('fetch failed') ||\n lower.includes('econnreset') ||\n lower.includes('enotfound') ||\n lower.includes('socket hang up') ||\n lower.includes('getaddrinfo')\n ) {\n return 'timeout';\n }\n\n return 'unknown';\n}\n"],"mappings":";AAQA,SAAgB,wBAAwB,KAAsB;AAC5D,QAAO,IAAI,aAAa,CAAC,SAAS,aAAa,IAAI,OAAO,KAAK,IAAI;;AAGrE,SAAgB,sBAAsB,KAAsB;AAC1D,QAAO,IAAI,aAAa,CAAC,SAAS,UAAU,IAAI,IAAI,aAAa,CAAC,SAAS,YAAY;;AAGzF,SAAgB,sBAAsB,KAAsB;CAC1D,MAAM,QAAQ,IAAI,aAAa;AAC/B,QAAO,MAAM,SAAS,MAAM,IAAI,MAAM,SAAS,UAAU,IAAI,MAAM,SAAS,sBAAsB;;AAGpG,SAAgB,mBAAmB,KAAsB;CACvD,MAAM,QAAQ,IAAI,aAAa;AAC/B,QAAO,MAAM,SAAS,MAAM,IAAI,MAAM,SAAS,MAAM,IAAI,MAAM,SAAS,eAAe,IAAI,MAAM,SAAS,kBAAkB;;AAG9H,SAAgB,qBAAqB,KAAsB;AACzD,QAAO,IAAI,aAAa,CAAC,SAAS,yBAAyB,IAAI,IAAI,aAAa,CAAC,SAAS,cAAc;;AAG1G,SAAS,cAAc,KAAkC;AACvD,KAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO,KAAA;CAC5C,MAAM,SAAU,IAA6B,UAAW,IAAiC;AACzF,KAAI,OAAO,WAAW,SAAU,QAAO;AACvC,KAAI,OAAO,WAAW,YAAY,QAAQ,KAAK,OAAO,CAAE,QAAO,OAAO,OAAO;;AAI/E,SAAS,aAAa,KAAkC;AACtD,KAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO,KAAA;CAC5C,MAAM,OAAQ,IAA2B;AACzC,KAAI,OAAO,SAAS,SAAU,QAAO,KAAK,MAAM,IAAI,KAAA;;AAItD,SAAS,gBAAgB,KAAsB;AAC7C,KAAI,eAAe,MAAO,QAAO,IAAI;AACrC,KAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,KAAI,OAAO,OAAO,QAAQ,UAAU;EAClC,MAAM,MAAO,IAA8B;AAC3C,MAAI,OAAO,QAAQ,SAAU,QAAO;;AAEtC,QAAO,OAAO,IAAI;;AAGpB,SAAgB,uBAAuB,KAA8B;CACnE,MAAM,SAAS,cAAc,IAAI;AACjC,KAAI,WAAW,IAAK,QAAO;AAC3B,KAAI,WAAW,IAAK,QAAO;AAC3B,KAAI,WAAW,OAAO,WAAW,IAAK,QAAO;AAC7C,KAAI,WAAW,IAAK,QAAO;AAC3B,KAAI,WAAW,IAAK,QAAO;CAE3B,MAAM,QAAQ,aAAa,IAAI,IAAI,IAAI,aAAa;AACpD,KAAI,CAAC,aAAa,aAAa,CAAC,SAAS,KAAK,CAAE,QAAO;CAEvD,MAAM,UAAU,gBAAgB,IAAI;AACpC,KAAI,CAAC,QAAS,QAAO;AAErB,KAAI,wBAAwB,QAAQ,CAAE,QAAO;AAC7C,KAAI,sBAAsB,QAAQ,CAAE,QAAO;AAC3C,KAAI,sBAAsB,QAAQ,CAAE,QAAO;AAC3C,KAAI,mBAAmB,QAAQ,CAAE,QAAO;AACxC,KAAI,qBAAqB,QAAQ,CAAE,QAAO;CAE1C,MAAM,QAAQ,QAAQ,aAAa;AACnC,KACE,MAAM,SAAS,eAAe,IAC9B,MAAM,SAAS,aAAa,IAC5B,MAAM,SAAS,YAAY,IAC3B,MAAM,SAAS,iBAAiB,IAChC,MAAM,SAAS,cAAc,CAE7B,QAAO;AAGT,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"feedback-coordinator.js","names":[],"sources":["../../../../src/agent/feedback/feedback-coordinator.ts"],"sourcesContent":["/**\n * Feedback Coordinator - Coordinates all feedback mechanisms\n *\n * Unifies progress feedback, stream updates, and direct messages\n * into a single coherent feedback system.\n */\n\nimport type { MessageBus } from '../../infra/bus/index.js';\nimport type { SessionContext } from '../session/session-context.js';\nimport type { ProgressFeedbackManager, ProgressStage, ProgressMessage } from '../lifecycle/progress.js';\nimport type { StreamHandle } from '../messaging/stream-manager.js';\nimport { formatProgressMessage, formatHeartbeatMessage } from '../lifecycle/progress.js';\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('FeedbackCoordinator');\n\nexport interface FeedbackCoordinatorConfig {\n progressManager: ProgressFeedbackManager;\n bus: MessageBus;\n}\n\nexport class FeedbackCoordinator {\n private progressManager: ProgressFeedbackManager;\n private bus: MessageBus;\n private currentStreamHandle: StreamHandle | null = null;\n private currentContext: SessionContext | null = null;\n\n constructor(config: FeedbackCoordinatorConfig) {\n this.progressManager = config.progressManager;\n this.bus = config.bus;\n }\n\n /**\n * Set the current context for feedback\n */\n setContext(context: SessionContext): void {\n this.currentContext = context;\n }\n\n /**\n * Clear the current context\n */\n clearContext(): void {\n this.currentContext = null;\n }\n\n /**\n * Start a task and initialize feedback\n */\n startTask(): void {\n this.progressManager.startTask();\n }\n\n /**\n * End a task and cleanup feedback\n */\n endTask(): void {\n this.progressManager.endTask();\n this.clearStreamHandle();\n }\n\n /**\n * Set the stream handle for progress updates\n */\n setStreamHandle(handle: StreamHandle): void {\n this.currentStreamHandle = handle;\n \n if (handle) {\n // Setup callbacks to send progress via stream\n this.progressManager.setCallbacks({\n onProgress: (msg) => this.sendProgressMessage(msg),\n onStreamStart: (toolName, toolArgs) => {\n const stage = this.getToolStage(toolName);\n if (this.currentStreamHandle?.setProgress) {\n let detail: string | undefined;\n if (toolArgs.path) {\n detail = String(toolArgs.path);\n } else if (toolArgs.command) {\n const cmd = String(toolArgs.command);\n detail = cmd.length > 30 ? cmd.slice(0, 30) + '...' : cmd;\n }\n this.currentStreamHandle.setProgress(stage, detail);\n }\n },\n onStreamEnd: () => {\n if (this.currentStreamHandle?.setProgress) {\n this.currentStreamHandle.setProgress('idle');\n }\n },\n onHeartbeat: (elapsedMs, stage) => {\n this.sendHeartbeat(elapsedMs, stage);\n },\n });\n }\n }\n\n /**\n * Clear the stream handle\n */\n clearStreamHandle(): void {\n this.currentStreamHandle = null;\n }\n\n /**\n * Send progress message via stream or direct message\n */\n private async sendProgressMessage(msg: ProgressMessage): Promise<void> {\n if (!this.currentContext) return;\n\n // Try stream update first\n if (this.currentStreamHandle?.updateProgress && msg.stage !== 'idle') {\n this.currentStreamHandle.updateProgress('', msg.stage as ProgressStage, msg.message);\n } else if (msg.type === 'error') {\n // Send error as direct message\n const formatted = formatProgressMessage(msg);\n await this.bus.publishOutbound({\n channel: this.currentContext.channel,\n chat_id: this.currentContext.chatId,\n content: formatted,\n type: 'message',\n });\n }\n }\n\n /**\n * Send heartbeat for long-running tasks\n */\n private async sendHeartbeat(elapsedMs: number, stage: ProgressStage): Promise<void> {\n if (!this.currentContext) return;\n\n log.info({ elapsedMs, stage }, 'Progress heartbeat');\n\n const formatted = formatHeartbeatMessage(elapsedMs, stage);\n await this.bus.publishOutbound({\n channel: this.currentContext.channel,\n chat_id: this.currentContext.chatId,\n content: formatted,\n type: 'message',\n });\n }\n\n /**\n * Map tool name to progress stage\n */\n private getToolStage(toolName: string): ProgressStage {\n const name = toolName.toLowerCase();\n if (name.includes('read') || name.includes('file')) return 'reading';\n if (name.includes('search') || name.includes('grep') || name.includes('web')) return 'searching';\n if (name.includes('write') || name.includes('edit')) return 'writing';\n if (name.includes('bash') || name.includes('shell') || name.includes('exec')) return 'executing';\n return 'executing';\n }\n\n /**\n * Update progress via stream\n */\n updateProgress(text: string, stage: ProgressStage, detail?: string): void {\n if (this.currentStreamHandle?.updateProgress) {\n this.currentStreamHandle.updateProgress(text, stage, detail);\n }\n }\n\n /**\n * Set progress stage\n */\n setProgress(stage: ProgressStage, detail?: string): void {\n if (this.currentStreamHandle?.setProgress) {\n this.currentStreamHandle.setProgress(stage, detail);\n }\n }\n\n /**\n * Send a direct message to the current context\n */\n async sendMessage(content: string): Promise<void> {\n if (!this.currentContext) {\n log.warn(\n {\n hasStreamHandle: Boolean(this.currentStreamHandle),\n contentPreview: content.slice(0, 80),\n },\n 'Outbound message skipped: no session context (setContext not called or cleared)',\n );\n return;\n }\n\n await this.bus.publishOutbound({\n channel: this.currentContext.channel,\n chat_id: this.currentContext.chatId,\n content,\n type: 'message',\n });\n }\n\n /**\n * Get the progress manager instance\n */\n getProgressManager(): ProgressFeedbackManager {\n return this.progressManager;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"checklist-judge.js","names":[],"sources":["../../../../src/agent/goals/checklist-judge.ts"],"sourcesContent":["import type { UserMessage } from '@earendil-works/pi-ai';\n\nimport { resolveModel } from '../../providers/index.js';\nimport { completeWithResolvedCredentials } from '../../providers/model-call.js';\n\nimport {\n DEFAULT_JUDGE_TIMEOUT_MS,\n extractAssistantText,\n getAssistantMessageErrorReason,\n resolveGoalJudgeApiKey,\n stripCodeFences,\n truncateGoalText,\n} from './judge.js';\nimport type { GoalUiLocale } from './goal-locale.js';\nimport {\n goalUiLocaleOrFallback,\n judgeReasonText,\n judgeResponseLanguageNote,\n JUDGE_REASON_EN,\n localizeJudgeReasonText,\n} from './goal-locale.js';\n\nconst GOAL_TRUNC = 4000;\nconst RESPONSE_SNIPPET = 4000;\nconst HISTORY_TRUNC = 24_000;\n\nconst DECOMPOSE_SYSTEM = (\n 'You break a user goal into an EXTREMELY detailed checklist of concrete, verifiable completion criteria. ' +\n 'Bias toward more items. Each item is one factual statement about finished work.\\n\\n' +\n 'If existing acceptance criteria are provided, return only missing supplemental criteria. ' +\n 'Do not repeat, rewrite, or replace existing criteria.\\n\\n' +\n 'Reply ONLY with a single JSON object on one line:\\n' +\n '{\"items\":[{\"text\":\"...\"},...]}\\n' +\n 'Use at least 3 items when the goal warrants it.'\n);\n\nconst DECOMPOSE_USER = 'Goal:\\n{goal}\\n\\nReturn JSON only.';\n\nconst EVALUATE_CHECKLIST_SYSTEM = (\n 'You evaluate an autonomous agent\\'s progress on a goal with a numbered checklist.\\n' +\n 'For each pending item, decide if evidence in the agent snippet and/or history excerpt shows it is satisfied.\\n' +\n 'Flip pending→completed only with clear evidence; pending→impossible only if truly unachievable here.\\n' +\n 'Do not regress completed/impossible items — omit them from updates.\\n\\n' +\n 'Reply ONLY with one JSON object on one line:\\n' +\n '{\"verdict\":\"continue|done|blocked|needs_input\",\"confidence\":0.0,\"reason\":\"...\",' +\n '\"nextAction\":\"...\",\"missingEvidence\":[\"...\"],\"userQuestion\":\"...\",' +\n '\"updates\":[{\"index\":1,\"status\":\"completed|impossible\",\"evidence\":\"short citation\"}],' +\n '\"new_items\":[{\"text\":\"...\"}]}\\n' +\n 'Use verdict=done only when all checklist criteria are complete/impossible. ' +\n 'Use needs_input when the next step requires user input. Use blocked when external progress is impossible.'\n);\n\nfunction extractJsonObject(raw: string): Record<string, unknown> | null {\n if (!raw?.trim()) return null;\n const text = stripCodeFences(raw);\n try {\n const data = JSON.parse(text) as unknown;\n return data && typeof data === 'object' && !Array.isArray(data) ? (data as Record<string, unknown>) : null;\n } catch {\n const start = text.indexOf('{');\n const end = text.lastIndexOf('}');\n if (start === -1 || end <= start) return null;\n try {\n const data = JSON.parse(text.slice(start, end + 1)) as unknown;\n return data && typeof data === 'object' && !Array.isArray(data) ? (data as Record<string, unknown>) : null;\n } catch {\n return null;\n }\n }\n}\n\nexport type DecomposeChecklistResult = {\n items: { text: string }[];\n parseFailed: boolean;\n errorReason?: string;\n};\n\nexport async function decomposeGoalChecklist(opts: {\n goal: string;\n existingChecklist?: string;\n judgeModelRef: string;\n signal?: AbortSignal;\n judgeTimeoutMs?: number;\n uiLocale?: GoalUiLocale;\n}): Promise<DecomposeChecklistResult> {\n const locale = goalUiLocaleOrFallback(opts.uiLocale);\n const goal = opts.goal.trim();\n if (!goal)\n return { items: [], parseFailed: false, errorReason: judgeReasonText('empty_goal', locale) };\n\n let model: ReturnType<typeof resolveModel>;\n try {\n model = resolveModel(opts.judgeModelRef);\n } catch {\n return {\n items: [],\n parseFailed: false,\n errorReason: judgeReasonText('judge_model_not_configured', locale),\n };\n }\n\n const timeoutMs =\n typeof opts.judgeTimeoutMs === 'number' && Number.isFinite(opts.judgeTimeoutMs)\n ? Math.max(5_000, Math.min(120_000, Math.floor(opts.judgeTimeoutMs)))\n : DEFAULT_JUDGE_TIMEOUT_MS;\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n const merged = opts.signal ? AbortSignal.any([opts.signal, controller.signal]) : controller.signal;\n\n try {\n const existingChecklist = opts.existingChecklist?.trim();\n const decomposeUser = DECOMPOSE_USER.replace('{goal}', truncateGoalText(goal, GOAL_TRUNC)) +\n (existingChecklist\n ? `\\n\\nExisting acceptance criteria:\\n${truncateGoalText(existingChecklist, GOAL_TRUNC)}\\n\\nReturn only missing supplemental criteria as JSON.`\n : '');\n const user: UserMessage = {\n role: 'user',\n content:\n `${DECOMPOSE_SYSTEM}\\n\\n${decomposeUser}` +\n judgeResponseLanguageNote(locale),\n timestamp: Date.now(),\n };\n const apiKey = await resolveGoalJudgeApiKey(model);\n const result = await completeWithResolvedCredentials(\n model,\n { messages: [user] },\n { apiKey, maxTokens: 2000, temperature: 0, signal: merged },\n );\n const errorReason = getAssistantMessageErrorReason(result);\n if (errorReason) {\n return {\n items: [],\n parseFailed: false,\n errorReason: judgeReasonText('decompose_call_failed', locale),\n };\n }\n\n const text = extractAssistantText(result.content);\n const data = extractJsonObject(text);\n if (!data)\n return {\n items: [],\n parseFailed: true,\n errorReason: judgeReasonText('decompose_reply_not_json', locale),\n };\n const rawItems = data.items ?? data.checklist;\n if (!Array.isArray(rawItems))\n return {\n items: [],\n parseFailed: true,\n errorReason: judgeReasonText('missing_items_array', locale),\n };\n const items: { text: string }[] = [];\n for (const row of rawItems) {\n if (typeof row === 'string') {\n const t = row.trim();\n if (t) items.push({ text: t });\n } else if (row && typeof row === 'object' && !Array.isArray(row)) {\n const t = String((row as { text?: string }).text ?? '').trim();\n if (t) items.push({ text: t });\n }\n }\n if (!items.length)\n return { items: [], parseFailed: true, errorReason: judgeReasonText('empty_checklist', locale) };\n return { items, parseFailed: false };\n } catch {\n return {\n items: [],\n parseFailed: false,\n errorReason: judgeReasonText('decompose_call_failed', locale),\n };\n } finally {\n clearTimeout(timer);\n }\n}\n\nexport type ChecklistJudgeUpdate = {\n index: number;\n status: 'completed' | 'impossible';\n evidence?: string | null;\n};\n\nexport type ChecklistEvaluateParsed = {\n verdict: 'continue' | 'done' | 'blocked' | 'needs_input';\n confidence: number;\n updates: ChecklistJudgeUpdate[];\n newItems: { text: string }[];\n reason: string;\n nextAction?: string;\n missingEvidence?: string[];\n userQuestion?: string;\n};\n\nexport type EvaluateChecklistResult = {\n parsed: ChecklistEvaluateParsed;\n parseFailed: boolean;\n};\n\nexport async function evaluateGoalChecklistJudge(opts: {\n goal: string;\n numberedChecklist: string;\n lastResponse: string;\n historyExcerpt: string;\n goalContextExcerpt?: string;\n judgeModelRef: string;\n signal?: AbortSignal;\n judgeTimeoutMs?: number;\n uiLocale?: GoalUiLocale;\n}): Promise<EvaluateChecklistResult> {\n const locale = goalUiLocaleOrFallback(opts.uiLocale);\n let model: ReturnType<typeof resolveModel>;\n try {\n model = resolveModel(opts.judgeModelRef);\n } catch {\n return {\n parsed: {\n verdict: 'continue',\n confidence: 0,\n updates: [],\n newItems: [],\n reason: judgeReasonText('judge_model_not_configured', locale),\n },\n parseFailed: false,\n };\n }\n\n const userBody =\n `Goal:\\n${truncateGoalText(opts.goal, 2000)}\\n\\n` +\n `Current checklist (1-based indices):\\n${opts.numberedChecklist}\\n\\n` +\n `Original goal context and attachments:\\n${truncateGoalText(opts.goalContextExcerpt ?? '', 4000) || '(none)'}\\n\\n` +\n `Agent's most recent response (snippet):\\n${truncateGoalText(opts.lastResponse, RESPONSE_SNIPPET)}\\n\\n` +\n `Recent conversation excerpt (JSON or text, may be truncated):\\n` +\n `${truncateGoalText(opts.historyExcerpt, HISTORY_TRUNC) || '(none)'}`;\n\n const timeoutMs =\n typeof opts.judgeTimeoutMs === 'number' && Number.isFinite(opts.judgeTimeoutMs)\n ? Math.max(5_000, Math.min(120_000, Math.floor(opts.judgeTimeoutMs)))\n : DEFAULT_JUDGE_TIMEOUT_MS;\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n const merged = opts.signal ? AbortSignal.any([opts.signal, controller.signal]) : controller.signal;\n\n try {\n const user: UserMessage = {\n role: 'user',\n content: `${EVALUATE_CHECKLIST_SYSTEM}\\n\\n${userBody}` + judgeResponseLanguageNote(locale),\n timestamp: Date.now(),\n };\n const apiKey = await resolveGoalJudgeApiKey(model);\n const result = await completeWithResolvedCredentials(\n model,\n { messages: [user] },\n { apiKey, maxTokens: 1500, temperature: 0, signal: merged },\n );\n const errorReason = getAssistantMessageErrorReason(result);\n if (errorReason) {\n return {\n parsed: {\n verdict: 'continue',\n confidence: 0,\n updates: [],\n newItems: [],\n reason: judgeReasonText('judge_call_failed', locale),\n },\n parseFailed: false,\n };\n }\n\n const text = extractAssistantText(result.content);\n const data = extractJsonObject(text);\n if (!data) {\n return {\n parsed: {\n verdict: 'continue',\n confidence: 0,\n updates: [],\n newItems: [],\n reason: judgeReasonText('judge_reply_not_json', locale),\n },\n parseFailed: true,\n };\n }\n const updatesRaw = data.updates;\n const newRaw = data.new_items ?? data.newItems;\n const verdictRaw = String(data.verdict ?? '').trim().toLowerCase();\n const verdict =\n verdictRaw === 'done' || verdictRaw === 'blocked' || verdictRaw === 'needs_input'\n ? verdictRaw\n : 'continue';\n const confidenceRaw = Number(data.confidence);\n const confidence = Number.isFinite(confidenceRaw) ? Math.max(0, Math.min(1, confidenceRaw)) : 0;\n const nextAction = typeof data.nextAction === 'string' ? data.nextAction.trim() : undefined;\n const userQuestion = typeof data.userQuestion === 'string' ? data.userQuestion.trim() : undefined;\n const missingEvidenceRaw = data.missingEvidence ?? data.missing_evidence;\n const trimmed = typeof data.reason === 'string' ? data.reason.trim() : '';\n const inner = trimmed || JUDGE_REASON_EN.no_reason_provided;\n const reason = localizeJudgeReasonText(inner, locale);\n const updates: ChecklistJudgeUpdate[] = [];\n if (Array.isArray(updatesRaw)) {\n for (const u of updatesRaw) {\n if (!u || typeof u !== 'object' || Array.isArray(u)) continue;\n const rec = u as Record<string, unknown>;\n const idx1 = Number(rec.index);\n if (!Number.isFinite(idx1)) continue;\n const idx0 = Math.floor(idx1) - 1;\n const st = String(rec.status ?? '').trim().toLowerCase();\n if (st !== 'completed' && st !== 'impossible') continue;\n const evidence = typeof rec.evidence === 'string' ? rec.evidence : null;\n updates.push({ index: idx0, status: st, evidence });\n }\n }\n const newItems: { text: string }[] = [];\n if (Array.isArray(newRaw)) {\n for (const row of newRaw) {\n if (typeof row === 'string') {\n const t = row.trim();\n if (t) newItems.push({ text: t });\n } else if (row && typeof row === 'object' && !Array.isArray(row)) {\n const t = String((row as { text?: string }).text ?? '').trim();\n if (t) newItems.push({ text: t });\n }\n }\n }\n const missingEvidence: string[] = [];\n if (Array.isArray(missingEvidenceRaw)) {\n for (const item of missingEvidenceRaw) {\n if (typeof item === 'string' && item.trim()) missingEvidence.push(item.trim());\n }\n }\n return {\n parsed: {\n verdict,\n confidence,\n updates,\n newItems,\n reason: reason || judgeReasonText('no_reason_provided', locale),\n ...(nextAction ? { nextAction } : {}),\n ...(missingEvidence.length ? { missingEvidence } : {}),\n ...(userQuestion ? { userQuestion } : {}),\n },\n parseFailed: false,\n };\n } catch {\n return {\n parsed: {\n verdict: 'continue',\n confidence: 0,\n updates: [],\n newItems: [],\n reason: judgeReasonText('judge_call_failed', locale),\n },\n parseFailed: false,\n };\n } finally {\n clearTimeout(timer);\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"checklist-types.js","names":[],"sources":["../../../../src/agent/goals/checklist-types.ts"],"sourcesContent":["export const CHECKLIST_ITEM_PENDING = 'pending' as const;\nexport const CHECKLIST_ITEM_COMPLETED = 'completed' as const;\nexport const CHECKLIST_ITEM_IMPOSSIBLE = 'impossible' as const;\n\nexport type ChecklistItemStatus =\n | typeof CHECKLIST_ITEM_PENDING\n | typeof CHECKLIST_ITEM_COMPLETED\n | typeof CHECKLIST_ITEM_IMPOSSIBLE;\n\nexport const TERMINAL_CHECKLIST_STATUSES: ReadonlySet<ChecklistItemStatus> = new Set([\n CHECKLIST_ITEM_COMPLETED,\n CHECKLIST_ITEM_IMPOSSIBLE,\n]);\n\nexport type ChecklistItemAddedBy = 'judge' | 'user';\n\nexport interface GoalChecklistItem {\n text: string;\n status: ChecklistItemStatus;\n addedBy: ChecklistItemAddedBy;\n addedAt: number;\n completedAt?: number;\n evidence?: string;\n}\n\nexport function checklistCounts(items: GoalChecklistItem[]): {\n total: number;\n completed: number;\n impossible: number;\n pending: number;\n} {\n const total = items.length;\n let completed = 0;\n let impossible = 0;\n for (const it of items) {\n if (it.status === CHECKLIST_ITEM_COMPLETED) completed += 1;\n else if (it.status === CHECKLIST_ITEM_IMPOSSIBLE) impossible += 1;\n }\n return { total, completed, impossible, pending: total - completed - impossible };\n}\n\nexport function allChecklistTerminal(items: GoalChecklistItem[]): boolean {\n if (!items.length) return false;\n return items.every((it) => TERMINAL_CHECKLIST_STATUSES.has(it.status));\n}\n"],"mappings":";AAAA,MAAa,yBAAyB;AACtC,MAAa,2BAA2B;AACxC,MAAa,4BAA4B;AAOzC,MAAa,8BAAgE,IAAI,IAAI,CACnF,0BACA,0BACD,CAAC;AAaF,SAAgB,gBAAgB,OAK9B;CACA,MAAM,QAAQ,MAAM;CACpB,IAAI,YAAY;CAChB,IAAI,aAAa;AACjB,MAAK,MAAM,MAAM,MACf,KAAI,GAAG,WAAA,YAAqC,cAAa;UAChD,GAAG,WAAA,aAAsC,eAAc;AAElE,QAAO;EAAE;EAAO;EAAW;EAAY,SAAS,QAAQ,YAAY;EAAY;;AAGlF,SAAgB,qBAAqB,OAAqC;AACxE,KAAI,CAAC,MAAM,OAAQ,QAAO;AAC1B,QAAO,MAAM,OAAO,OAAO,4BAA4B,IAAI,GAAG,OAAO,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluate-turn.js","names":[],"sources":["../../../../src/agent/goals/evaluate-turn.ts"],"sourcesContent":["import type { GoalsConfig } from '../../config/schema.js';\n\nimport { decomposeGoalChecklist, evaluateGoalChecklistJudge } from './checklist-judge.js';\nimport { allChecklistTerminal, checklistCounts } from './checklist-types.js';\nimport {\n buildContinuationPromptFromState,\n checklistProgressSuffix,\n CONTINUATION_PROMPT_TEMPLATE_EN,\n CONTINUATION_PROMPT_WITH_CHECKLIST_TEMPLATE_EN,\n goalEvaluateUserCopy,\n resolveGoalUiLocale,\n type GoalUiLocale,\n} from './goal-locale.js';\nimport { judgeGoalHermesStyle } from './judge.js';\nimport {\n applyJudgeChecklistUpdates,\n mergeDecomposedChecklistItems,\n renderChecklistNumbered,\n type PersistentGoalState,\n} from './state.js';\n\n/** Hermes `CONTINUATION_PROMPT_TEMPLATE` (English; parity / tests). */\nexport const CONTINUATION_PROMPT_TEMPLATE = CONTINUATION_PROMPT_TEMPLATE_EN;\n\n/** Hermes `CONTINUATION_PROMPT_WITH_CHECKLIST_TEMPLATE` (English; parity / tests). */\nexport const CONTINUATION_PROMPT_WITH_CHECKLIST_TEMPLATE = CONTINUATION_PROMPT_WITH_CHECKLIST_TEMPLATE_EN;\n\nexport type GoalsEvaluateConfigSlice = Pick<\n GoalsConfig,\n | 'checklistMode'\n | 'checklistDecomposePolicy'\n | 'maxConsecutiveParseFailures'\n | 'judgeTimeoutMs'\n | 'checklistHistoryChars'\n>;\n\nexport type GoalPostTurnDecision = {\n newState: PersistentGoalState | null;\n shouldContinue: boolean;\n continuationPrompt: string | null;\n verdict: 'done' | 'continue' | 'blocked' | 'needs_input' | 'skipped' | 'inactive' | 'decompose';\n reason: string;\n message: string;\n confidence?: number;\n missingEvidence?: string[];\n userQuestion?: string;\n completedChecklistItemIndexes?: number[];\n};\n\nfunction cloneState(s: PersistentGoalState): PersistentGoalState {\n return {\n ...s,\n checklist: s.checklist?.map((it) => ({ ...it })),\n };\n}\n\n/**\n * Hermes `GoalManager.evaluate_after_turn` equivalent (minus SessionDB I/O).\n */\nexport async function evaluateAfterTurnHermesLike(\n state: PersistentGoalState,\n lastResponse: string,\n judgeModelRef: string,\n signal?: AbortSignal,\n opts?: {\n goalsSlice?: Partial<GoalsEvaluateConfigSlice>;\n historyExcerpt?: string;\n goalContextExcerpt?: string;\n uiLocale?: GoalUiLocale;\n },\n): Promise<GoalPostTurnDecision> {\n const locale = opts?.uiLocale ?? resolveGoalUiLocale(state);\n const copy = goalEvaluateUserCopy(locale);\n\n if (state.status !== 'active') {\n return {\n newState: state,\n shouldContinue: false,\n continuationPrompt: null,\n verdict: 'inactive',\n reason: 'no active goal',\n message: '',\n };\n }\n\n const slice = opts?.goalsSlice;\n const checklistMode = slice?.checklistMode !== false;\n const maxParseFailures = slice?.maxConsecutiveParseFailures ?? 3;\n const judgeTimeoutMs = slice?.judgeTimeoutMs;\n\n const next = cloneState(state);\n next.turnsUsed += 1;\n next.lastTurnAt = Date.now();\n\n const bumpParse = () => {\n next.consecutiveParseFailures = (next.consecutiveParseFailures ?? 0) + 1;\n };\n const resetParse = () => {\n next.consecutiveParseFailures = 0;\n };\n\n const pauseIfParseStorm = (reason: string): GoalPostTurnDecision | null => {\n const n = next.consecutiveParseFailures ?? 0;\n if (n < maxParseFailures) return null;\n next.status = 'paused';\n next.pausedReason = `judge parse failures (${n} consecutive)`;\n return {\n newState: next,\n shouldContinue: false,\n continuationPrompt: null,\n verdict: 'continue',\n reason,\n message: copy.pauseParse(n),\n };\n };\n\n const pauseIfBudget = (reason: string): GoalPostTurnDecision | null => {\n if (next.turnsUsed < next.maxTurns) return null;\n next.status = 'paused';\n next.pausedReason = `turn budget exhausted (${next.turnsUsed}/${next.maxTurns})`;\n return {\n newState: next,\n shouldContinue: false,\n continuationPrompt: null,\n verdict: 'continue',\n reason,\n message: copy.pauseBudget(next.turnsUsed, next.maxTurns),\n };\n };\n\n // ── Phase A: decompose (once per goal when checklist mode is on) ──\n if (checklistMode && !next.decomposed) {\n const dec = await decomposeGoalChecklist({\n goal: next.goal,\n existingChecklist: next.checklist?.length ? renderChecklistNumbered(next.checklist) : undefined,\n judgeModelRef,\n signal,\n judgeTimeoutMs,\n uiLocale: locale,\n });\n next.decomposed = true;\n if (!dec.parseFailed && dec.items.length > 0) {\n const prior = next.checklist ?? [];\n next.checklist = mergeDecomposedChecklistItems(prior, dec.items);\n const mergedCount = next.checklist.length;\n next.lastVerdict = 'decompose';\n next.lastReason = copy.decomposedReason(mergedCount);\n resetParse();\n const budgetEarly = pauseIfBudget(next.lastReason);\n if (budgetEarly) return budgetEarly;\n return {\n newState: next,\n shouldContinue: true,\n continuationPrompt: buildContinuationPromptFromState(next, locale),\n verdict: 'decompose',\n reason: next.lastReason ?? '',\n message: copy.checklistReady(mergedCount),\n };\n }\n next.lastReason = dec.errorReason\n ? copy.decomposeFallbackReason(dec.errorReason)\n : copy.noChecklistFallback();\n }\n\n // ── Phase B: checklist judge ──\n const checklist = next.checklist ?? [];\n if (checklist.length > 0) {\n const evalResult = await evaluateGoalChecklistJudge({\n goal: next.goal,\n numberedChecklist: renderChecklistNumbered(checklist),\n lastResponse,\n historyExcerpt: opts?.historyExcerpt ?? '',\n goalContextExcerpt: opts?.goalContextExcerpt ?? '',\n judgeModelRef,\n signal,\n judgeTimeoutMs,\n uiLocale: locale,\n });\n\n if (evalResult.parseFailed) {\n bumpParse();\n } else {\n resetParse();\n next.checklist = applyJudgeChecklistUpdates(checklist, {\n updates: evalResult.parsed.updates,\n newItems: evalResult.parsed.newItems,\n });\n }\n\n next.lastVerdict = 'continue';\n next.lastReason = evalResult.parsed.reason;\n\n const completedChecklistItemIndexes = evalResult.parsed.updates\n .filter((update) => update.status === 'completed' || update.status === 'impossible')\n .map((update) => update.index);\n const structuredNextAction = evalResult.parsed.nextAction?.trim();\n const continuationPrompt = structuredNextAction || buildContinuationPromptFromState(next, locale);\n\n if (!evalResult.parseFailed && allChecklistTerminal(next.checklist ?? [])) {\n next.status = 'done';\n next.lastVerdict = 'done';\n return {\n newState: next,\n shouldContinue: false,\n continuationPrompt: null,\n verdict: 'done',\n reason: evalResult.parsed.reason,\n message: copy.goalAchieved(evalResult.parsed.reason),\n confidence: evalResult.parsed.confidence,\n missingEvidence: evalResult.parsed.missingEvidence,\n userQuestion: evalResult.parsed.userQuestion,\n completedChecklistItemIndexes,\n };\n }\n\n if (!evalResult.parseFailed && (evalResult.parsed.verdict === 'blocked' || evalResult.parsed.verdict === 'needs_input')) {\n next.status = 'paused';\n next.pausedReason = evalResult.parsed.reason;\n return {\n newState: next,\n shouldContinue: false,\n continuationPrompt: null,\n verdict: evalResult.parsed.verdict,\n reason: evalResult.parsed.reason,\n message: evalResult.parsed.verdict === 'needs_input'\n ? `Goal needs input: ${evalResult.parsed.userQuestion || evalResult.parsed.reason}`\n : `Goal blocked: ${evalResult.parsed.reason}`,\n confidence: evalResult.parsed.confidence,\n missingEvidence: evalResult.parsed.missingEvidence,\n userQuestion: evalResult.parsed.userQuestion,\n completedChecklistItemIndexes,\n };\n }\n\n const parseStorm = pauseIfParseStorm(evalResult.parsed.reason);\n if (parseStorm) return parseStorm;\n\n const budget = pauseIfBudget(evalResult.parsed.reason);\n if (budget) return budget;\n\n const { total, completed, impossible } = checklistCounts(next.checklist ?? []);\n const done = completed + impossible;\n const progressSuffix = checklistProgressSuffix(done, total, locale);\n\n return {\n newState: next,\n shouldContinue: true,\n continuationPrompt,\n verdict: 'continue',\n reason: evalResult.parsed.reason,\n message: copy.continuingWithProgress(\n next.turnsUsed,\n next.maxTurns,\n progressSuffix,\n evalResult.parsed.reason,\n ),\n confidence: evalResult.parsed.confidence,\n missingEvidence: evalResult.parsed.missingEvidence,\n userQuestion: evalResult.parsed.userQuestion,\n completedChecklistItemIndexes,\n };\n }\n\n // ── Freeform judge (no checklist) ──\n const j = await judgeGoalHermesStyle(state.goal, lastResponse, judgeModelRef, signal, {\n judgeTimeoutMs,\n uiLocale: locale,\n });\n next.lastVerdict = j.verdict === 'skipped' ? 'skipped' : j.verdict;\n next.lastReason = j.reason;\n\n if (j.parseFailed) bumpParse();\n else resetParse();\n\n if (j.verdict === 'done') {\n next.status = 'done';\n return {\n newState: next,\n shouldContinue: false,\n continuationPrompt: null,\n verdict: 'done',\n reason: j.reason,\n message: copy.goalAchieved(j.reason),\n };\n }\n\n const parseStorm = pauseIfParseStorm(j.reason);\n if (parseStorm) return parseStorm;\n\n const budget = pauseIfBudget(j.reason);\n if (budget) return budget;\n\n return {\n newState: next,\n shouldContinue: true,\n continuationPrompt: buildContinuationPromptFromState(next, locale),\n verdict: 'continue',\n reason: j.reason,\n message: copy.continuing(next.turnsUsed, next.maxTurns, j.reason),\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"goal-locale.js","names":[],"sources":["../../../../src/agent/goals/goal-locale.ts"],"sourcesContent":["import { checklistCounts } from './checklist-types.js';\nimport {\n renderChecklistPlain,\n type PersistentGoalState,\n} from './state.js';\n\nimport { formatI18n } from '../../i18n/format.js';\nimport {\n goalsChecklistProgressSuffix,\n goalsContinuationChecklistTemplate,\n goalsContinuationPlainTemplate,\n goalsEvaluateCopy,\n goalsJudgeReason,\n goalsJudgeResponseLanguageNote,\n JUDGE_REASON_EN,\n type JudgeReasonId,\n} from '../../i18n/goals-bundle.js';\nimport {\n DEFAULT_SERVER_LOCALE,\n normalizeServerLocale,\n SERVER_LOCALES,\n type ServerLocale,\n serverLocaleOrFallback,\n isServerLocale,\n} from '../../i18n/locale.js';\n\n// ── Goal-facing aliases (persistent goal uses same locale set as server i18n) ──\n\nexport const GOAL_UI_LOCALES = SERVER_LOCALES;\nexport type GoalUiLocale = ServerLocale;\nexport const DEFAULT_GOAL_UI_LOCALE = DEFAULT_SERVER_LOCALE;\n\nexport const isGoalUiLocale = isServerLocale;\nexport const normalizeGoalUiLocale = normalizeServerLocale;\nexport const goalUiLocaleOrFallback = serverLocaleOrFallback;\n\nexport function resolveGoalUiLocale(state: PersistentGoalState | undefined | null): GoalUiLocale {\n return goalUiLocaleOrFallback(state?.uiLocale);\n}\n\n// ── Hermes-style English continuation (tests / parity; sourced from server i18n JSON) ──\n\nexport const CONTINUATION_PROMPT_TEMPLATE_EN = goalsContinuationPlainTemplate('en');\nexport const CONTINUATION_PROMPT_WITH_CHECKLIST_TEMPLATE_EN = goalsContinuationChecklistTemplate('en');\n\nexport function buildContinuationPromptFromState(state: PersistentGoalState, locale: GoalUiLocale): string {\n const L = goalUiLocaleOrFallback(locale);\n const cl = state.checklist ?? [];\n if (cl.length) {\n const plain = renderChecklistPlain(cl);\n const { total, completed, impossible } = checklistCounts(cl);\n const done = completed + impossible;\n const tpl = goalsContinuationChecklistTemplate(L);\n return formatI18n(tpl, {\n goal: state.goal,\n done,\n total,\n checklist: plain,\n });\n }\n return formatI18n(goalsContinuationPlainTemplate(L), { goal: state.goal });\n}\n\nexport function judgeResponseLanguageNote(locale: GoalUiLocale): string {\n return goalsJudgeResponseLanguageNote(goalUiLocaleOrFallback(locale));\n}\n\nexport { JUDGE_REASON_EN, type JudgeReasonId };\n\nconst JUDGE_REASON_ID_BY_EN = new Map<string, JudgeReasonId>(\n (Object.entries(JUDGE_REASON_EN) as [JudgeReasonId, string][]).map(([id, s]) => [s, id]),\n);\n\nexport function judgeReasonText(id: JudgeReasonId, locale: GoalUiLocale): string {\n return goalsJudgeReason(id, goalUiLocaleOrFallback(locale));\n}\n\nexport function localizeJudgeReasonText(reason: string, locale: GoalUiLocale): string {\n const id = JUDGE_REASON_ID_BY_EN.get(reason);\n if (!id) return reason;\n return judgeReasonText(id, locale);\n}\n\nexport function judgeFreeformBuiltinMessages(locale: GoalUiLocale) {\n const L = goalUiLocaleOrFallback(locale);\n return {\n emptyGoal: judgeReasonText('empty_goal', L),\n emptyResponse: judgeReasonText('empty_response', L),\n noModel: judgeReasonText('judge_model_not_configured', L),\n callFailed: judgeReasonText('judge_call_failed', L),\n };\n}\n\nexport function checklistProgressSuffix(done: number, total: number, locale: GoalUiLocale): string {\n return goalsChecklistProgressSuffix(done, total, goalUiLocaleOrFallback(locale));\n}\n\nexport type GoalEvaluateUserCopyPack = ReturnType<typeof goalsEvaluateCopy>;\n\nexport function goalEvaluateUserCopy(locale: GoalUiLocale): GoalEvaluateUserCopyPack {\n return goalsEvaluateCopy(goalUiLocaleOrFallback(locale));\n}\n"],"mappings":";;;;;;AA4BA,MAAa,kBAAkB;AAE/B,MAAa,yBAAA;AAEb,MAAa,iBAAiB;AAC9B,MAAa,wBAAwB;AACrC,MAAa,yBAAyB;AAEtC,SAAgB,oBAAoB,OAA6D;AAC/F,QAAO,uBAAuB,OAAO,SAAS;;AAKhD,MAAa,kCAAkC,+BAA+B,KAAK;AACnF,MAAa,iDAAiD,mCAAmC,KAAK;AAEtG,SAAgB,iCAAiC,OAA4B,QAA8B;CACzG,MAAM,IAAI,uBAAuB,OAAO;CACxC,MAAM,KAAK,MAAM,aAAa,EAAE;AAChC,KAAI,GAAG,QAAQ;EACb,MAAM,QAAQ,qBAAqB,GAAG;EACtC,MAAM,EAAE,OAAO,WAAW,eAAe,gBAAgB,GAAG;EAC5D,MAAM,OAAO,YAAY;AAEzB,SAAO,WADK,mCAAmC,EAC1B,EAAE;GACrB,MAAM,MAAM;GACZ;GACA;GACA,WAAW;GACZ,CAAC;;AAEJ,QAAO,WAAW,+BAA+B,EAAE,EAAE,EAAE,MAAM,MAAM,MAAM,CAAC;;AAG5E,SAAgB,0BAA0B,QAA8B;AACtE,QAAO,+BAA+B,uBAAuB,OAAO,CAAC;;AAKvE,MAAM,wBAAwB,IAAI,IAC/B,OAAO,QAAQ,gBAAgB,CAA+B,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,CACzF;AAED,SAAgB,gBAAgB,IAAmB,QAA8B;AAC/E,QAAO,iBAAiB,IAAI,uBAAuB,OAAO,CAAC;;AAG7D,SAAgB,wBAAwB,QAAgB,QAA8B;CACpF,MAAM,KAAK,sBAAsB,IAAI,OAAO;AAC5C,KAAI,CAAC,GAAI,QAAO;AAChB,QAAO,gBAAgB,IAAI,OAAO;;AAGpC,SAAgB,6BAA6B,QAAsB;CACjE,MAAM,IAAI,uBAAuB,OAAO;AACxC,QAAO;EACL,WAAW,gBAAgB,cAAc,EAAE;EAC3C,eAAe,gBAAgB,kBAAkB,EAAE;EACnD,SAAS,gBAAgB,8BAA8B,EAAE;EACzD,YAAY,gBAAgB,qBAAqB,EAAE;EACpD;;AAGH,SAAgB,wBAAwB,MAAc,OAAe,QAA8B;AACjG,QAAO,6BAA6B,MAAM,OAAO,uBAAuB,OAAO,CAAC;;AAKlF,SAAgB,qBAAqB,QAAgD;AACnF,QAAO,kBAAkB,uBAAuB,OAAO,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"judge.js","names":[],"sources":["../../../../src/agent/goals/judge.ts"],"sourcesContent":["import type { UserMessage } from '@earendil-works/pi-ai';\n\nimport { getApiKey, resolveModel } from '../../providers/index.js';\nimport { completeWithResolvedCredentials } from '../../providers/model-call.js';\n\nimport type { GoalUiLocale } from './goal-locale.js';\nimport {\n goalUiLocaleOrFallback,\n judgeFreeformBuiltinMessages,\n JUDGE_REASON_EN,\n judgeResponseLanguageNote,\n localizeJudgeReasonText,\n} from './goal-locale.js';\n\nconst JUDGE_RESPONSE_SNIPPET_CHARS = 4000;\n\n/**\n * Extract visible text from a pi-ai `AssistantMessage.content` array.\n * Handles `TextContent` (`type: 'text'`) and falls back to `ThinkingContent`\n * (`type: 'thinking'`) when the text blocks are empty — reasoning models\n * (DeepSeek-R1, Qwen-thinking, etc.) may place the entire response inside\n * thinking blocks, leaving the text portion blank.\n */\nexport function extractAssistantText(content: unknown): string {\n if (!Array.isArray(content)) return '';\n\n let textParts = '';\n let thinkingParts = '';\n\n for (const block of content) {\n if (!block || typeof block !== 'object') continue;\n const typed = block as Record<string, unknown>;\n const blockType = typed.type;\n if (blockType === 'text' && typeof typed.text === 'string') {\n textParts += typed.text;\n } else if (blockType === 'thinking') {\n const thinking =\n typeof typed.thinking === 'string'\n ? typed.thinking\n : typeof typed.text === 'string'\n ? typed.text\n : '';\n thinkingParts += thinking;\n }\n }\n\n // Prefer text blocks; fall back to thinking blocks when text is empty.\n return textParts.trim() ? textParts : thinkingParts;\n}\n\n/**\n * Strip markdown code fences (opening AND closing) from raw model output.\n * Handles `` ```json ``, `` ``` ``, and trailing `` ``` `` with optional whitespace.\n */\nexport function stripCodeFences(raw: string): string {\n let text = raw.trim();\n\n // Remove opening code fence: ```<optional-lang>\\n\n const openMatch = text.match(/^`{3,}[^\\n]*\\n?/);\n if (openMatch) {\n text = text.slice(openMatch[0].length);\n }\n\n // Remove closing code fence: \\n```<optional-whitespace>\n const closeMatch = text.match(/\\n?`{3,}\\s*$/);\n if (closeMatch) {\n text = text.slice(0, -closeMatch[0].length);\n }\n\n return text.trim();\n}\n\n/** Mirrors `hermes_cli/goals.py` — strict judge, JSON-only reply. */\nexport const JUDGE_SYSTEM_PROMPT =\n 'You are a strict judge evaluating whether an autonomous agent has ' +\n \"achieved a user's stated goal. You receive the goal text and the \" +\n \"agent's most recent response. Your only job is to decide whether \" +\n 'the goal is fully satisfied based on that response.\\n\\n' +\n 'A goal is DONE only when:\\n' +\n '- The response explicitly confirms the goal was completed, OR\\n' +\n '- The response clearly shows the final deliverable was produced, OR\\n' +\n '- The response explains the goal is unachievable / blocked / needs ' +\n 'user input (treat this as DONE with reason describing the block).\\n\\n' +\n 'Otherwise the goal is NOT done — CONTINUE.\\n\\n' +\n 'Reply ONLY with a single JSON object on one line:\\n' +\n '{\"done\": <true|false>, \"reason\": \"<one-sentence rationale>\"}';\n\nexport const JUDGE_USER_PROMPT_TEMPLATE =\n 'Goal:\\n{goal}\\n\\n' + \"Agent's most recent response:\\n{response}\\n\\n\" + 'Is the goal satisfied?';\n\nexport const DEFAULT_JUDGE_TIMEOUT_MS = 60_000;\n\nexport function truncateGoalText(text: string, limit: number): string {\n if (!text) return '';\n if (text.length <= limit) return text;\n return text.slice(0, limit) + '… [truncated]';\n}\n\nexport async function resolveGoalJudgeApiKey(\n model: ReturnType<typeof resolveModel>,\n): Promise<string | undefined> {\n try {\n return await getApiKey(model.provider);\n } catch {\n return undefined;\n }\n}\n\nexport function getAssistantMessageErrorReason(message: unknown): string | null {\n if (!message || typeof message !== 'object') return null;\n\n const record = message as Record<string, unknown>;\n const stopReason = record.stopReason;\n const errorMessage = typeof record.errorMessage === 'string' ? record.errorMessage.trim() : '';\n\n if (stopReason === 'error') {\n return errorMessage || 'Judge model call failed.';\n }\n\n return null;\n}\n\n/** Parse judge JSON — fail-open to **continue** (Hermes semantics). */\nexport function parseJudgeResponseFailOpen(raw: string): {\n done: boolean;\n reason: string;\n parseFailed: boolean;\n} {\n if (!raw?.trim()) {\n return { done: false, reason: JUDGE_REASON_EN.judge_returned_empty, parseFailed: true };\n }\n\n const text = stripCodeFences(raw);\n\n let data: Record<string, unknown> | null = null;\n try {\n data = JSON.parse(text) as Record<string, unknown>;\n } catch {\n const start = text.indexOf('{');\n const end = text.lastIndexOf('}');\n if (start !== -1 && end > start) {\n try {\n data = JSON.parse(text.slice(start, end + 1)) as Record<string, unknown>;\n } catch {\n data = null;\n }\n }\n }\n\n if (!data || typeof data !== 'object') {\n return { done: false, reason: JUDGE_REASON_EN.judge_reply_not_json, parseFailed: true };\n }\n\n const doneVal = data.done;\n let done: boolean;\n if (typeof doneVal === 'string') {\n done = ['true', 'yes', '1', 'done'].includes(doneVal.trim().toLowerCase());\n } else {\n done = Boolean(doneVal);\n }\n const reason = typeof data.reason === 'string' ? data.reason.trim() : '';\n return { done, reason: reason || JUDGE_REASON_EN.no_reason_provided, parseFailed: false };\n}\n\nexport type GoalJudgeVerdict = 'done' | 'continue' | 'skipped';\n\n/**\n * Ask the configured model whether the goal is satisfied.\n * Fail-open: any error → `continue` (Hermes — turn budget is the backstop).\n */\nexport async function judgeGoalHermesStyle(\n goal: string,\n lastResponse: string,\n judgeModelRef: string,\n signal?: AbortSignal,\n opts?: { judgeTimeoutMs?: number; uiLocale?: GoalUiLocale },\n): Promise<{ verdict: GoalJudgeVerdict; reason: string; parseFailed: boolean }> {\n const locale = goalUiLocaleOrFallback(opts?.uiLocale);\n const b = judgeFreeformBuiltinMessages(locale);\n\n if (!goal.trim()) {\n return { verdict: 'skipped', reason: b.emptyGoal, parseFailed: false };\n }\n if (!lastResponse.trim()) {\n return { verdict: 'continue', reason: b.emptyResponse, parseFailed: false };\n }\n\n let model: ReturnType<typeof resolveModel>;\n try {\n model = resolveModel(judgeModelRef);\n } catch {\n return { verdict: 'continue', reason: b.noModel, parseFailed: false };\n }\n\n const userContent =\n JUDGE_USER_PROMPT_TEMPLATE.replace('{goal}', truncateGoalText(goal, 2000)).replace(\n '{response}',\n truncateGoalText(lastResponse, JUDGE_RESPONSE_SNIPPET_CHARS),\n ) + judgeResponseLanguageNote(locale);\n\n const timeoutMs =\n typeof opts?.judgeTimeoutMs === 'number' && Number.isFinite(opts.judgeTimeoutMs)\n ? Math.max(5_000, Math.min(120_000, Math.floor(opts.judgeTimeoutMs)))\n : DEFAULT_JUDGE_TIMEOUT_MS;\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n const merged = signal ? AbortSignal.any([signal, controller.signal]) : controller.signal;\n\n try {\n const combinedUser: UserMessage = {\n role: 'user',\n content: `${JUDGE_SYSTEM_PROMPT}\\n\\n${userContent}`,\n timestamp: Date.now(),\n };\n\n const apiKey = await resolveGoalJudgeApiKey(model);\n const result = await completeWithResolvedCredentials(\n model,\n {\n messages: [combinedUser],\n },\n { apiKey, maxTokens: 200, temperature: 0, signal: merged },\n );\n const errorReason = getAssistantMessageErrorReason(result);\n if (errorReason) {\n return { verdict: 'continue', reason: b.callFailed, parseFailed: false };\n }\n\n const text = extractAssistantText(result.content);\n const { done, reason, parseFailed } = parseJudgeResponseFailOpen(text);\n const reasonOut = localizeJudgeReasonText(reason, locale);\n return { verdict: done ? 'done' : 'continue', reason: reasonOut, parseFailed };\n } catch {\n return { verdict: 'continue', reason: b.callFailed, parseFailed: false };\n } finally {\n clearTimeout(timer);\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistent-goal-service.js","names":[],"sources":["../../../../src/agent/goals/persistent-goal-service.ts"],"sourcesContent":["/**\n * PersistentGoalService — owns the \"/goal\" runtime: continuation scheduling,\n * the `PersistentGoalApis` bag that command handlers receive, and the post-turn\n * verdict hook called from `OutboundCoordinator`.\n *\n * Previously this logic was scattered across `AgentService`:\n * - `setPersistentGoalWebchatContinuationScheduler` + a private callback field\n * - `schedulePersistentGoalContinuation` (bus vs webchat fork)\n * - `getPersistentGoalApisForCommand` (~40-line API factory)\n * - `recordPersistentGoalStreamOutcome` / `takePersistentGoalStreamOutcome`\n * - the `/goal` half of `emitSessionTurnComplete` (delegated to\n * `handlePersistentGoalPostTurn`)\n *\n * Concentrating it here gives the rest of `AgentService` a cleaner surface\n * (one collaborator instead of five methods) and makes the goal runtime\n * unit-testable in isolation.\n */\n\nimport type { AgentMessage } from '@earendil-works/pi-agent-core';\n\nimport type { Config } from '../../config/schema.js';\nimport type { MessageBus } from '../../infra/bus/index.js';\nimport type { ModelManager } from '../models/index.js';\nimport type { SessionStore } from '../../session/store.js';\nimport type { SessionStateBag } from '../session/index.js';\nimport type { GoalWithDetails } from '../../goals/types.js';\nimport { createLogger } from '../../utils/logger.js';\nimport type { PersistentGoalApis } from './persistent-goal-apis.js';\nimport { handlePersistentGoalPostTurn } from './post-turn.js';\n\nconst log = createLogger('PersistentGoalService');\n\nexport interface PersistentGoalRouting {\n sessionKey: string;\n channel: string;\n chatId: string;\n inboundMetadata?: Record<string, unknown>;\n}\n\nexport interface SessionTurnCompletionForGoal {\n sessionKey: string;\n channel: string;\n chatId: string;\n assistantPlainText: string;\n aborted: boolean;\n streamError?: string;\n skipPersistentGoalPostTurn?: boolean;\n outboundMetadata?: Record<string, unknown>;\n}\n\nexport interface PersistentGoalServiceOptions {\n bus: MessageBus;\n sessionStore: SessionStore;\n modelManager: ModelManager;\n sessionState: SessionStateBag;\n /** Effective config snapshot accessor. */\n getConfig: () => Config | undefined;\n /** Resolve the workspace directory for `appendAssistantReceipt` writes. */\n getResolvedWorkspaceForSession: (sessionKey: string) => string;\n /** Notify the gateway UI after a metadata change (replaces the in-bag emit). */\n onSessionMetadataUpdated?: (sessionKey: string) => void;\n /** Push an assistant token + transcript refresh into a live webchat stream. */\n notifyWebchatTranscriptAppend: (sessionKey: string, assistantText: string) => void;\n /** Gateway: durable goal status changed after post-turn judge. */\n onGoalStatusUpdated?: (payload: {\n goalId: string;\n sessionKey: string;\n previousStatus: string;\n status: string;\n goal: GoalWithDetails;\n }) => void;\n}\n\nexport class PersistentGoalService {\n private readonly opts: PersistentGoalServiceOptions;\n /** Gateway only: webchat continuations bypass the bus and reuse `runGatewayAgent`. */\n private webchatContinuationScheduler?: (sessionKey: string, message: string) => void;\n\n constructor(opts: PersistentGoalServiceOptions) {\n this.opts = opts;\n }\n\n /** Register the gateway-side webchat continuation hook (set from `web-agent` wiring). */\n setWebchatContinuationScheduler(\n fn: ((sessionKey: string, message: string) => void) | undefined,\n ): void {\n this.webchatContinuationScheduler = fn;\n }\n\n /**\n * Continue a session after `/goal` decides the previous turn needs follow-up.\n * Webchat sessions go through the scheduler; bus-driven channels re-publish the\n * follow-up message as an inbound bus event so the existing inbound loop picks it up.\n */\n scheduleContinuation(\n sessionKey: string,\n message: string,\n routing: { channel: string; chatId: string; inboundMetadata?: Record<string, unknown> },\n ): void {\n if (routing.channel === 'webchat' && this.webchatContinuationScheduler) {\n this.webchatContinuationScheduler(sessionKey, message);\n return;\n }\n queueMicrotask(() => {\n void this.opts.bus\n .publishInbound({\n channel: routing.channel,\n chat_id: routing.chatId,\n sender_id: 'persistent-goal',\n content: message,\n metadata: { sessionKey, ...routing.inboundMetadata },\n })\n .catch((err) => {\n log.warn({ err, sessionKey }, 'Persistent goal: publishInbound failed');\n });\n });\n }\n\n /** Build the per-command `PersistentGoalApis` bag (transcript writers + scheduler closures). */\n buildApisForRouting(routing: PersistentGoalRouting): PersistentGoalApis {\n return {\n getSessionMetadata: (k) => this.opts.sessionStore.getMetadata(k),\n updateSessionMetadata: async (k, u) => {\n await this.opts.sessionStore.updateMetadata(k, u);\n this.opts.onSessionMetadataUpdated?.(k);\n },\n loadMessages: (k) => this.opts.sessionStore.loadMessages(k),\n appendAssistantReceipt: async (k, text) => {\n const trimmed = text.trim();\n if (!trimmed) return;\n await this.opts.sessionStore.appendTranscriptMessage(k, {\n role: 'assistant',\n content: [{ type: 'text', text: trimmed }],\n timestamp: Date.now(),\n } as AgentMessage);\n this.opts.notifyWebchatTranscriptAppend(k, trimmed);\n },\n scheduleContinuation: (sk, msg) => {\n this.scheduleContinuation(sk, msg, {\n channel: routing.channel,\n chatId: routing.chatId,\n inboundMetadata: routing.inboundMetadata,\n });\n },\n inboundConcurrentDepth: (sk) => this.opts.sessionState.getInboundTurnDepth(sk),\n };\n }\n\n recordStreamOutcome(sessionKey: string, outcome: { skipPersistentGoalPostTurn: boolean }): void {\n this.opts.sessionState.recordPersistentGoalStreamOutcome(sessionKey, outcome);\n }\n\n takeStreamOutcome(sessionKey: string): { skipPersistentGoalPostTurn: boolean } | undefined {\n return this.opts.sessionState.takePersistentGoalStreamOutcome(sessionKey);\n }\n\n /**\n * Run the `/goal` post-turn verdict for a completed user turn (called from\n * `OutboundCoordinator.emitSessionTurnComplete`).\n */\n async runPostTurn(payload: SessionTurnCompletionForGoal): Promise<void> {\n const apis = this.buildApisForRouting({\n sessionKey: payload.sessionKey,\n channel: payload.channel,\n chatId: payload.chatId,\n inboundMetadata: payload.outboundMetadata,\n });\n\n const isWebchat = payload.channel === 'webchat';\n const publishVerdict =\n !isWebchat && payload.channel !== 'cli'\n ? async (text: string) => {\n await this.opts.bus.publishOutbound({\n channel: payload.channel,\n chat_id: payload.chatId,\n content: text,\n type: 'message',\n metadata: {\n accountId: payload.outboundMetadata?.accountId,\n threadId: payload.outboundMetadata?.threadId,\n },\n });\n }\n : undefined;\n\n let runtimeSessionModelRef: string | undefined;\n try {\n runtimeSessionModelRef = this.opts.modelManager.getModelForSession(payload.sessionKey);\n } catch {\n runtimeSessionModelRef = undefined;\n }\n\n await handlePersistentGoalPostTurn({\n apis,\n sessionKey: payload.sessionKey,\n assistantPlainText: payload.assistantPlainText,\n aborted: payload.aborted,\n ...(payload.streamError !== undefined ? { streamError: payload.streamError } : {}),\n skipPersistentGoalPostTurn: payload.skipPersistentGoalPostTurn ?? false,\n config: this.opts.getConfig(),\n runtimeSessionModelRef,\n publishVerdictToChannel: publishVerdict,\n onGoalStatusUpdated: this.opts.onGoalStatusUpdated,\n });\n }\n}\n"],"mappings":";;;;aA0BqD;AAIrD,MAAM,MAAM,aAAa,wBAAwB;AA2CjD,IAAa,wBAAb,MAAmC;CACjC;;CAEA;CAEA,YAAY,MAAoC;AAC9C,OAAK,OAAO;;;CAId,gCACE,IACM;AACN,OAAK,+BAA+B;;;;;;;CAQtC,qBACE,YACA,SACA,SACM;AACN,MAAI,QAAQ,YAAY,aAAa,KAAK,8BAA8B;AACtE,QAAK,6BAA6B,YAAY,QAAQ;AACtD;;AAEF,uBAAqB;AACd,QAAK,KAAK,IACZ,eAAe;IACd,SAAS,QAAQ;IACjB,SAAS,QAAQ;IACjB,WAAW;IACX,SAAS;IACT,UAAU;KAAE;KAAY,GAAG,QAAQ;KAAiB;IACrD,CAAC,CACD,OAAO,QAAQ;AACd,QAAI,KAAK;KAAE;KAAK;KAAY,EAAE,yCAAyC;KACvE;IACJ;;;CAIJ,oBAAoB,SAAoD;AACtE,SAAO;GACL,qBAAqB,MAAM,KAAK,KAAK,aAAa,YAAY,EAAE;GAChE,uBAAuB,OAAO,GAAG,MAAM;AACrC,UAAM,KAAK,KAAK,aAAa,eAAe,GAAG,EAAE;AACjD,SAAK,KAAK,2BAA2B,EAAE;;GAEzC,eAAe,MAAM,KAAK,KAAK,aAAa,aAAa,EAAE;GAC3D,wBAAwB,OAAO,GAAG,SAAS;IACzC,MAAM,UAAU,KAAK,MAAM;AAC3B,QAAI,CAAC,QAAS;AACd,UAAM,KAAK,KAAK,aAAa,wBAAwB,GAAG;KACtD,MAAM;KACN,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM;MAAS,CAAC;KAC1C,WAAW,KAAK,KAAK;KACtB,CAAiB;AAClB,SAAK,KAAK,8BAA8B,GAAG,QAAQ;;GAErD,uBAAuB,IAAI,QAAQ;AACjC,SAAK,qBAAqB,IAAI,KAAK;KACjC,SAAS,QAAQ;KACjB,QAAQ,QAAQ;KAChB,iBAAiB,QAAQ;KAC1B,CAAC;;GAEJ,yBAAyB,OAAO,KAAK,KAAK,aAAa,oBAAoB,GAAG;GAC/E;;CAGH,oBAAoB,YAAoB,SAAwD;AAC9F,OAAK,KAAK,aAAa,kCAAkC,YAAY,QAAQ;;CAG/E,kBAAkB,YAAyE;AACzF,SAAO,KAAK,KAAK,aAAa,gCAAgC,WAAW;;;;;;CAO3E,MAAM,YAAY,SAAsD;EACtE,MAAM,OAAO,KAAK,oBAAoB;GACpC,YAAY,QAAQ;GACpB,SAAS,QAAQ;GACjB,QAAQ,QAAQ;GAChB,iBAAiB,QAAQ;GAC1B,CAAC;EAGF,MAAM,iBACJ,EAFgB,QAAQ,YAAY,cAEtB,QAAQ,YAAY,QAC9B,OAAO,SAAiB;AACtB,SAAM,KAAK,KAAK,IAAI,gBAAgB;IAClC,SAAS,QAAQ;IACjB,SAAS,QAAQ;IACjB,SAAS;IACT,MAAM;IACN,UAAU;KACR,WAAW,QAAQ,kBAAkB;KACrC,UAAU,QAAQ,kBAAkB;KACrC;IACF,CAAC;MAEJ,KAAA;EAEN,IAAI;AACJ,MAAI;AACF,4BAAyB,KAAK,KAAK,aAAa,mBAAmB,QAAQ,WAAW;UAChF;AACN,4BAAyB,KAAA;;AAG3B,QAAM,6BAA6B;GACjC;GACA,YAAY,QAAQ;GACpB,oBAAoB,QAAQ;GAC5B,SAAS,QAAQ;GACjB,GAAI,QAAQ,gBAAgB,KAAA,IAAY,EAAE,aAAa,QAAQ,aAAa,GAAG,EAAE;GACjF,4BAA4B,QAAQ,8BAA8B;GAClE,QAAQ,KAAK,KAAK,WAAW;GAC7B;GACA,yBAAyB;GACzB,qBAAqB,KAAK,KAAK;GAChC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"post-turn.js","names":[],"sources":["../../../../src/agent/goals/post-turn.ts"],"sourcesContent":["import type { AgentMessage } from '@earendil-works/pi-agent-core';\n\nimport type { Config, GoalsConfig } from '../../config/schema.js';\nimport { getAgentDefaultModelRef } from '../../config/schema.js';\nimport { resolveEffectiveAgentProfileForSession } from '../../config/agent-profile.js';\nimport { GoalService } from '../../goals/index.js';\nimport { createLogger } from '../../utils/logger.js';\n\nimport { evaluateAfterTurnHermesLike } from './evaluate-turn.js';\nimport { resolveGoalUiLocale } from './goal-locale.js';\nimport type { PersistentGoalApis } from './persistent-goal-apis.js';\nimport type { PersistentGoalState } from './state.js';\n\nconst log = createLogger('PersistentGoal');\nconst goalService = new GoalService();\n\nfunction buildHistoryExcerpt(messages: AgentMessage[], maxChars: number): string {\n if (maxChars <= 0) return '';\n try {\n const raw = JSON.stringify(messages);\n if (raw.length <= maxChars) return raw;\n return raw.slice(-maxChars);\n } catch {\n return '';\n }\n}\n\nfunction buildGoalContextText(goal: NonNullable<ReturnType<GoalService['get']>>): string {\n const lines = [`Title: ${goal.contract?.objective || goal.title}`];\n if (goal.contract?.scopeBoundary) {\n lines.push(`Scope boundary:\\n${goal.contract.scopeBoundary}`);\n }\n if (goal.contract?.evidencePlan.length) {\n lines.push(`Expected completion evidence:\\n${goal.contract.evidencePlan.map((item) => `- ${item}`).join('\\n')}`);\n }\n if (goal.contextMessage?.text.trim()) {\n lines.push(`Context:\\n${goal.contextMessage.text.trim()}`);\n }\n if (goal.contextMessage?.attachments.length) {\n lines.push(\n [\n 'Attachments:',\n ...goal.contextMessage.attachments.map((attachment) =>\n `- ${attachment.name} (${attachment.mimeType}, ${attachment.size} bytes) ${attachment.uri}`,\n ),\n ].join('\\n'),\n );\n }\n return lines.join('\\n\\n');\n}\n\nfunction resolveJudgeModelRef(\n config: Config | undefined,\n sessionKey: string,\n storedJudge?: string,\n runtimeSessionModelRef?: string,\n): string | undefined {\n const fromCfg = config?.goals?.judgeModelRef?.trim();\n if (fromCfg) return fromCfg;\n if (storedJudge?.trim()) return storedJudge.trim();\n if (config) {\n const profile = resolveEffectiveAgentProfileForSession(config, sessionKey);\n if (profile.primaryModelRef?.trim()) return profile.primaryModelRef.trim();\n }\n if (runtimeSessionModelRef?.trim()) return runtimeSessionModelRef.trim();\n if (config) return getAgentDefaultModelRef(config);\n return undefined;\n}\n\nexport function shouldRunInitialChecklistDecomposition(input: {\n checklistLength: number;\n turnsUsed: number;\n checklistDecomposePolicy?: GoalsConfig['checklistDecomposePolicy'];\n}): boolean {\n if (input.checklistLength === 0) return true;\n return input.checklistDecomposePolicy === 'supplement_existing' && input.turnsUsed === 0;\n}\n\nasync function appendAssistantLine(apis: PersistentGoalApis, sessionKey: string, text: string): Promise<void> {\n await apis.appendAssistantReceipt(sessionKey, text);\n}\n\nexport async function handlePersistentGoalPostTurn(opts: {\n apis: PersistentGoalApis;\n sessionKey: string;\n assistantPlainText: string;\n aborted: boolean;\n streamError?: string;\n skipPersistentGoalPostTurn: boolean;\n config: Config | undefined;\n /** Active session model (overrides, per-agent defaults) when goals/global defaults are unset. */\n runtimeSessionModelRef?: string;\n signal?: AbortSignal;\n /** Hermes-style: verdict line also sent as a normal outbound message (non-webchat). */\n publishVerdictToChannel?: (text: string) => Promise<void>;\n onGoalStatusUpdated?: (payload: {\n goalId: string;\n sessionKey: string;\n previousStatus: string;\n status: string;\n goal: import('../../goals/types.js').GoalWithDetails;\n }) => void;\n}): Promise<void> {\n const {\n apis,\n sessionKey,\n assistantPlainText,\n aborted,\n streamError,\n skipPersistentGoalPostTurn,\n config,\n runtimeSessionModelRef,\n signal,\n publishVerdictToChannel,\n onGoalStatusUpdated,\n } = opts;\n\n if (skipPersistentGoalPostTurn) return;\n if (aborted || streamError) return;\n\n const meta = await apis.getSessionMetadata(sessionKey);\n if (!meta) return;\n\n const goal = goalService.getActiveForSession(sessionKey);\n if (!goal || goal.status !== 'active') return;\n\n const goalsCfg = config?.goals;\n const shouldDecomposeChecklist = shouldRunInitialChecklistDecomposition({\n checklistLength: goal.checklist.length,\n turnsUsed: goal.turnsUsed,\n checklistDecomposePolicy: goalsCfg?.checklistDecomposePolicy,\n });\n const state: PersistentGoalState = {\n goal: buildGoalContextText(goal),\n status: 'active',\n turnsUsed: goal.turnsUsed,\n maxTurns: goal.maxTurns,\n createdAt: goal.createdAt,\n lastTurnAt: goal.updatedAt,\n lastReason: goal.blockedReason,\n judgeModelRef: goal.judgeModelRef,\n decomposed: shouldDecomposeChecklist ? undefined : true,\n uiLocale: goal.uiLocale,\n checklist: goal.checklist.map((it) => ({\n text: it.text,\n status: it.status,\n addedBy: it.addedBy,\n addedAt: it.addedAt,\n completedAt: it.completedAt,\n evidence: it.evidenceSummary,\n })),\n };\n\n const judgeRef = resolveJudgeModelRef(config, sessionKey, state.judgeModelRef, runtimeSessionModelRef);\n if (!judgeRef) {\n log.warn({ sessionKey }, 'Persistent goal: no judge model ref; skipping post-turn');\n return;\n }\n\n const historyCap = goalsCfg?.checklistHistoryChars ?? 24_000;\n let historyExcerpt = '';\n try {\n const msgs = await apis.loadMessages(sessionKey);\n historyExcerpt = buildHistoryExcerpt(msgs, historyCap);\n } catch (err) {\n log.debug(\n { err, sessionKey },\n `Persistent goal: could not load messages for judge context: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n\n let decision = await evaluateAfterTurnHermesLike(state, assistantPlainText, judgeRef, signal, {\n goalsSlice: goalsCfg,\n historyExcerpt,\n goalContextExcerpt: buildGoalContextText(goal),\n uiLocale: resolveGoalUiLocale(state),\n });\n\n const completionReadiness = goalService.getCompletionReadiness(goal.id);\n const executionGaps = completionReadiness\n ? [...completionReadiness.missingEvidence, ...completionReadiness.pendingOutcome]\n : [];\n if (decision.verdict === 'done' && executionGaps.length > 0 && decision.newState) {\n const reason = `Completion evidence or outcome still needed: ${executionGaps.join('; ')}`;\n decision = {\n ...decision,\n newState: {\n ...decision.newState,\n status: 'active',\n lastVerdict: 'continue',\n lastReason: reason,\n },\n shouldContinue: true,\n continuationPrompt: `Before declaring the goal complete, address these gaps:\\n${executionGaps.map((item) => `- ${item}`).join('\\n')}`,\n verdict: 'continue',\n reason,\n message: reason,\n missingEvidence: executionGaps,\n };\n }\n\n if (decision.newState) {\n const ns = decision.newState;\n const completedChecklistItemIds = decision.completedChecklistItemIndexes\n ?.map((index) => goal.checklist[index]?.id)\n .filter((id): id is string => typeof id === 'string' && id.length > 0);\n try {\n const updatedGoal = goalService.syncPostTurnState({\n goalId: goal.id,\n sessionKey,\n source: 'chat',\n status: ns.status === 'done'\n ? 'done'\n : decision.verdict === 'blocked'\n ? 'blocked'\n : decision.verdict === 'needs_input'\n ? 'needs_input'\n : ns.status === 'paused'\n ? 'paused'\n : 'active',\n turnsUsed: ns.turnsUsed,\n maxTurns: ns.maxTurns,\n reason: ns.pausedReason ?? decision.reason,\n nextAction: decision.continuationPrompt ?? undefined,\n assistantPreview: assistantPlainText,\n verdict: decision.verdict === 'done'\n ? 'done'\n : decision.verdict === 'decompose'\n ? 'decompose'\n : decision.verdict === 'blocked'\n ? 'blocked'\n : decision.verdict === 'needs_input'\n ? 'needs_input'\n : 'continue',\n confidence: decision.confidence,\n missingEvidence: decision.missingEvidence,\n userQuestion: decision.userQuestion,\n completedChecklistItemIds,\n checklist: ns.checklist?.map((it) => ({\n text: it.text,\n status: it.status,\n addedBy: it.addedBy,\n addedAt: it.addedAt,\n completedAt: it.completedAt,\n evidenceSummary: it.evidence,\n })),\n });\n if (updatedGoal && updatedGoal.status !== goal.status) {\n onGoalStatusUpdated?.({\n goalId: goal.id,\n sessionKey,\n previousStatus: goal.status,\n status: updatedGoal.status,\n goal: updatedGoal,\n });\n }\n } catch (err) {\n log.warn(\n { err, sessionKey, goalId: goal.id },\n `Persistent goal: SQLite goal update failed: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n\n if (decision.message) {\n if (publishVerdictToChannel) {\n try {\n await publishVerdictToChannel(decision.message);\n } catch (err) {\n log.warn(\n { err, sessionKey },\n `Persistent goal: channel verdict send failed: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n } else {\n try {\n await appendAssistantLine(apis, sessionKey, decision.message);\n } catch (err) {\n log.warn(\n { err, sessionKey },\n `Persistent goal: failed to append status message: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n }\n\n if (decision.shouldContinue && decision.continuationPrompt) {\n apis.scheduleContinuation(sessionKey, decision.continuationPrompt);\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","names":[],"sources":["../../../../src/agent/goals/state.ts"],"sourcesContent":["import {\n CHECKLIST_ITEM_PENDING,\n TERMINAL_CHECKLIST_STATUSES,\n type ChecklistItemStatus,\n type GoalChecklistItem,\n} from './checklist-types.js';\n\n// Direct import of the underlying locale type — `goal-locale.ts` aliases this as\n// `GoalUiLocale` AND imports values from `state.ts`, so going through `./goal-locale.js`\n// would create a circular module cycle.\nimport type { ServerLocale as GoalUiLocale } from '../../i18n/locale.js';\n\nexport type PersistentGoalStatus = 'active' | 'paused' | 'done' | 'cleared';\n\nexport interface PersistentGoalState {\n goal: string;\n status: PersistentGoalStatus;\n turnsUsed: number;\n maxTurns: number;\n createdAt: number;\n lastTurnAt: number;\n lastVerdict?: 'done' | 'continue' | 'skipped' | 'decompose';\n lastReason?: string;\n pausedReason?: string;\n judgeModelRef?: string;\n /** Hermes-style: judge JSON parse failures in a row (API errors do not increment). */\n consecutiveParseFailures?: number;\n /** After first successful decomposition, checklist drives Phase-B judging. */\n decomposed?: boolean;\n checklist?: GoalChecklistItem[];\n /** Gateway console language: drives judge `reason` language and system messages. */\n uiLocale?: GoalUiLocale;\n}\n\nexport function defaultMaxTurns(cfg: { maxTurns?: number } | undefined): number {\n const n = cfg?.maxTurns;\n if (typeof n === 'number' && Number.isFinite(n)) {\n return Math.max(1, Math.min(500, Math.floor(n)));\n }\n return 20;\n}\n\n/** Render checklist for continuation prompt (Hermes-style, no numbers in body). */\nexport function renderChecklistPlain(items: GoalChecklistItem[]): string {\n if (!items.length) return '(empty)';\n const lines: string[] = [];\n for (const it of items) {\n const marker =\n it.status === 'completed' ? '[x]' : it.status === 'impossible' ? '[!]' : '[ ]';\n let line = `${marker} ${it.text}`;\n if (it.status === 'impossible' && it.evidence) line += ` (impossible: ${it.evidence})`;\n lines.push(line);\n }\n return lines.join('\\n');\n}\n\n/** Numbered checklist for judge user prompts (1-based indices). */\nexport function renderChecklistNumbered(items: GoalChecklistItem[]): string {\n if (!items.length) return '(empty)';\n const lines: string[] = [];\n for (let i = 0; i < items.length; i++) {\n const it = items[i]!;\n const n = i + 1;\n const marker =\n it.status === 'completed' ? '[x]' : it.status === 'impossible' ? '[!]' : '[ ]';\n let line = `${n}. ${marker} ${it.text}`;\n if (it.status === 'impossible' && it.evidence) line += ` (impossible: ${it.evidence})`;\n lines.push(line);\n }\n return lines.join('\\n');\n}\n\n/**\n * After LLM decomposition, keep existing checklist rows (e.g. user-added acceptance criteria)\n * and append judge-generated items, skipping duplicate text (case-insensitive trim).\n */\nexport function mergeDecomposedChecklistItems(\n existing: GoalChecklistItem[],\n decomposedTexts: { text: string }[],\n): GoalChecklistItem[] {\n const now = Date.now();\n const next = existing.map((it) => ({ ...it }));\n const seen = new Set(next.map((it) => it.text.trim().toLowerCase()));\n for (const row of decomposedTexts) {\n const t = row.text.trim();\n if (!t) continue;\n const key = t.toLowerCase();\n if (seen.has(key)) continue;\n seen.add(key);\n next.push({\n text: t,\n status: CHECKLIST_ITEM_PENDING,\n addedBy: 'judge',\n addedAt: now,\n });\n }\n return next;\n}\n\nexport function applyJudgeChecklistUpdates(\n items: GoalChecklistItem[],\n parsed: {\n updates: { index: number; status: ChecklistItemStatus; evidence?: string | null }[];\n newItems: { text: string }[];\n },\n): GoalChecklistItem[] {\n const next = items.map((it) => ({ ...it }));\n const now = Date.now();\n for (const upd of parsed.updates) {\n const idx = upd.index;\n if (idx < 0 || idx >= next.length) continue;\n const item = next[idx]!;\n if (TERMINAL_CHECKLIST_STATUSES.has(item.status)) continue;\n if (!TERMINAL_CHECKLIST_STATUSES.has(upd.status)) continue;\n item.status = upd.status;\n item.completedAt = now;\n if (upd.evidence?.trim()) item.evidence = upd.evidence.trim();\n }\n for (const ni of parsed.newItems) {\n const t = ni.text.trim();\n if (!t) continue;\n next.push({\n text: t,\n status: CHECKLIST_ITEM_PENDING,\n addedBy: 'judge',\n addedAt: now,\n });\n }\n return next;\n}\n"],"mappings":";;AAkCA,SAAgB,gBAAgB,KAAgD;CAC9E,MAAM,IAAI,KAAK;AACf,KAAI,OAAO,MAAM,YAAY,OAAO,SAAS,EAAE,CAC7C,QAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC;AAElD,QAAO;;;AAIT,SAAgB,qBAAqB,OAAoC;AACvE,KAAI,CAAC,MAAM,OAAQ,QAAO;CAC1B,MAAM,QAAkB,EAAE;AAC1B,MAAK,MAAM,MAAM,OAAO;EAGtB,IAAI,OAAO,GADT,GAAG,WAAW,cAAc,QAAQ,GAAG,WAAW,eAAe,QAAQ,MACtD,GAAG,GAAG;AAC3B,MAAI,GAAG,WAAW,gBAAgB,GAAG,SAAU,SAAQ,iBAAiB,GAAG,SAAS;AACpF,QAAM,KAAK,KAAK;;AAElB,QAAO,MAAM,KAAK,KAAK;;;AAIzB,SAAgB,wBAAwB,OAAoC;AAC1E,KAAI,CAAC,MAAM,OAAQ,QAAO;CAC1B,MAAM,QAAkB,EAAE;AAC1B,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,MAAM,KAAK,MAAM;EAIjB,IAAI,OAAO,GAHD,IAAI,EAGE,IADd,GAAG,WAAW,cAAc,QAAQ,GAAG,WAAW,eAAe,QAAQ,MAChD,GAAG,GAAG;AACjC,MAAI,GAAG,WAAW,gBAAgB,GAAG,SAAU,SAAQ,iBAAiB,GAAG,SAAS;AACpF,QAAM,KAAK,KAAK;;AAElB,QAAO,MAAM,KAAK,KAAK;;;;;;AAOzB,SAAgB,8BACd,UACA,iBACqB;CACrB,MAAM,MAAM,KAAK,KAAK;CACtB,MAAM,OAAO,SAAS,KAAK,QAAQ,EAAE,GAAG,IAAI,EAAE;CAC9C,MAAM,OAAO,IAAI,IAAI,KAAK,KAAK,OAAO,GAAG,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC;AACpE,MAAK,MAAM,OAAO,iBAAiB;EACjC,MAAM,IAAI,IAAI,KAAK,MAAM;AACzB,MAAI,CAAC,EAAG;EACR,MAAM,MAAM,EAAE,aAAa;AAC3B,MAAI,KAAK,IAAI,IAAI,CAAE;AACnB,OAAK,IAAI,IAAI;AACb,OAAK,KAAK;GACR,MAAM;GACN,QAAQ;GACR,SAAS;GACT,SAAS;GACV,CAAC;;AAEJ,QAAO;;AAGT,SAAgB,2BACd,OACA,QAIqB;CACrB,MAAM,OAAO,MAAM,KAAK,QAAQ,EAAE,GAAG,IAAI,EAAE;CAC3C,MAAM,MAAM,KAAK,KAAK;AACtB,MAAK,MAAM,OAAO,OAAO,SAAS;EAChC,MAAM,MAAM,IAAI;AAChB,MAAI,MAAM,KAAK,OAAO,KAAK,OAAQ;EACnC,MAAM,OAAO,KAAK;AAClB,MAAI,4BAA4B,IAAI,KAAK,OAAO,CAAE;AAClD,MAAI,CAAC,4BAA4B,IAAI,IAAI,OAAO,CAAE;AAClD,OAAK,SAAS,IAAI;AAClB,OAAK,cAAc;AACnB,MAAI,IAAI,UAAU,MAAM,CAAE,MAAK,WAAW,IAAI,SAAS,MAAM;;AAE/D,MAAK,MAAM,MAAM,OAAO,UAAU;EAChC,MAAM,IAAI,GAAG,KAAK,MAAM;AACxB,MAAI,CAAC,EAAG;AACR,OAAK,KAAK;GACR,MAAM;GACN,QAAQ;GACR,SAAS;GACT,SAAS;GACV,CAAC;;AAEJ,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundled-registry.js","names":[],"sources":["../../../../../src/agent/image/generation/bundled-registry.ts"],"sourcesContent":["/**\n * Bundled image-generation provider registration helper.\n *\n * Step 3: vendor providers live under `extensions/<vendor>/src/image-generation-provider.ts`\n * and export a `buildXxxImageGenerationProvider()` factory. The generated file\n * `src/generated/bundled-image-generation-providers.ts` collects every such\n * factory; this helper walks that list and feeds each one into the registry.\n *\n * Side-effect-only: callers should `import './bundled.js'` once at runtime\n * load (see {@link ./bundled.ts}).\n */\n\nimport { createLogger } from '../../../utils/logger.js';\nimport {\n registerImageGenerationProvider,\n type ImageGenerationProvider,\n} from './provider-registry.js';\n\nconst log = createLogger('ImageGen:Bundled');\n\nexport type ImageGenerationProviderFactory = () => ImageGenerationProvider;\n\n/**\n * Register every bundled provider factory exactly once. Failures in a single\n * factory are isolated so one broken vendor does not knock out the rest.\n */\nexport function registerBundledImageGenerationProviders(\n factories: ReadonlyArray<ImageGenerationProviderFactory>,\n): void {\n for (const factory of factories) {\n let provider: ImageGenerationProvider;\n try {\n provider = factory();\n } catch (err) {\n log.warn(\n { err, phase: 'factory_invoke' },\n `Skipping bundled image-generation provider factory: ${\n err instanceof Error ? err.message : String(err)\n }`,\n );\n continue;\n }\n try {\n registerImageGenerationProvider(provider);\n } catch (err) {\n log.warn(\n { err, providerId: provider?.id, phase: 'register' },\n `Failed to register bundled image-generation provider: ${\n err instanceof Error ? err.message : String(err)\n }`,\n );\n }\n }\n}\n"],"mappings":";;;;aAYwD;AAMxD,MAAM,MAAM,aAAa,mBAAmB;;;;;AAQ5C,SAAgB,wCACd,WACM;AACN,MAAK,MAAM,WAAW,WAAW;EAC/B,IAAI;AACJ,MAAI;AACF,cAAW,SAAS;WACb,KAAK;AACZ,OAAI,KACF;IAAE;IAAK,OAAO;IAAkB,EAChC,uDACE,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI,GAEnD;AACD;;AAEF,MAAI;AACF,mCAAgC,SAAS;WAClC,KAAK;AACZ,OAAI,KACF;IAAE;IAAK,YAAY,UAAU;IAAI,OAAO;IAAY,EACpD,yDACE,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI,GAEnD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundled.js","names":[],"sources":["../../../../../src/agent/image/generation/bundled.ts"],"sourcesContent":["/**\n * Bundled image-generation providers — side-effect entry point.\n *\n * Imported once from {@link ./runtime.ts}. Every vendor provider listed in\n * `src/generated/bundled-image-generation-providers.ts` (regenerated via\n * `pnpm run generate:bundled-image-providers`) is registered via the bundled\n * helper, mirroring how `src/channels/plugins/bundled.ts` wires bundled\n * channel plugins.\n */\n\nimport { bundledImageGenerationProviderBuilders } from '../../../generated/bundled-image-generation-providers.js';\nimport { registerBundledImageGenerationProviders } from './bundled-registry.js';\n\nregisterBundledImageGenerationProviders(bundledImageGenerationProviderBuilders);\n"],"mappings":";;;;;;;;;;;;AAaA,wCAAwC,uCAAuC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-assets.js","names":[],"sources":["../../../../../src/agent/image/generation/image-assets.ts"],"sourcesContent":["/**\n * Image asset helpers — base64 / data-url decode + MIME sniffing + extension\n * mapping. Pure functions reused across vendor providers.\n */\n\nconst PNG_MAGIC = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\nconst JPEG_MAGIC = Buffer.from([0xff, 0xd8, 0xff]);\nconst GIF_MAGIC = Buffer.from('GIF8');\nconst WEBP_RIFF = Buffer.from('RIFF');\nconst WEBP_FORMAT = Buffer.from('WEBP');\n\nexport interface SniffedImage {\n mimeType: string;\n fileExtension: string;\n}\n\nconst DEFAULT_SNIFFED: SniffedImage = { mimeType: 'image/png', fileExtension: 'png' };\n\n/** Detect a common image format from its leading bytes. Defaults to PNG. */\nexport function sniffImageMimeType(buffer: Buffer | Uint8Array): SniffedImage {\n const view = buffer instanceof Buffer ? buffer : Buffer.from(buffer);\n if (view.length >= 8 && view.subarray(0, 8).equals(PNG_MAGIC)) {\n return { mimeType: 'image/png', fileExtension: 'png' };\n }\n if (view.length >= 3 && view.subarray(0, 3).equals(JPEG_MAGIC)) {\n return { mimeType: 'image/jpeg', fileExtension: 'jpg' };\n }\n if (view.length >= 4 && view.subarray(0, 4).equals(GIF_MAGIC)) {\n return { mimeType: 'image/gif', fileExtension: 'gif' };\n }\n if (\n view.length >= 12 &&\n view.subarray(0, 4).equals(WEBP_RIFF) &&\n view.subarray(8, 12).equals(WEBP_FORMAT)\n ) {\n return { mimeType: 'image/webp', fileExtension: 'webp' };\n }\n return DEFAULT_SNIFFED;\n}\n\n/** Map a MIME type to a canonical file extension (no dot). */\nexport function imageFileExtensionForMimeType(mimeType: string | undefined): string {\n if (!mimeType) return 'png';\n const lower = mimeType.toLowerCase();\n if (lower.includes('png')) return 'png';\n if (lower.includes('jpeg') || lower.includes('jpg')) return 'jpg';\n if (lower.includes('webp')) return 'webp';\n if (lower.includes('gif')) return 'gif';\n if (lower.includes('bmp')) return 'bmp';\n if (lower.includes('svg')) return 'svg';\n return 'png';\n}\n\nexport interface ParsedImageDataUrl {\n mimeType: string;\n base64: string;\n}\n\n/**\n * Parse a `data:image/<format>;base64,<payload>` URL.\n * Returns null on malformed input or non-image data URLs.\n */\nexport function parseImageDataUrl(input: string): ParsedImageDataUrl | null {\n if (typeof input !== 'string') return null;\n const m = /^data:(image\\/[\\w.+-]+)(;base64)?,([\\s\\S]*)$/i.exec(input.trim());\n if (!m) return null;\n const mimeType = m[1].toLowerCase();\n const isBase64 = Boolean(m[2]);\n const payload = m[3] ?? '';\n if (!isBase64) {\n // Treat as URL-encoded text; convert to base64 for uniform downstream handling.\n return {\n mimeType,\n base64: Buffer.from(decodeURIComponent(payload), 'utf8').toString('base64'),\n };\n }\n // Strip whitespace that some clients introduce.\n return { mimeType, base64: payload.replace(/\\s+/g, '') };\n}\n\n/** Convert a base64 string into a sniffed asset descriptor. */\nexport function imageAssetFromBase64(params: {\n base64: string;\n mimeType?: string;\n fileName?: string;\n}): { buffer: Buffer; mimeType: string; fileName?: string } {\n const buffer = Buffer.from(params.base64.replace(/\\s+/g, ''), 'base64');\n const detected = sniffImageMimeType(buffer);\n const mimeType = params.mimeType?.trim() || detected.mimeType;\n return {\n buffer,\n mimeType,\n ...(params.fileName ? { fileName: params.fileName } : {}),\n };\n}\n\n/** Convert a data URL into a sniffed asset descriptor. */\nexport function imageAssetFromDataUrl(input: string, fileName?: string): {\n buffer: Buffer;\n mimeType: string;\n fileName?: string;\n} | null {\n const parsed = parseImageDataUrl(input);\n if (!parsed) return null;\n return imageAssetFromBase64({ base64: parsed.base64, mimeType: parsed.mimeType, fileName });\n}\n\n/** Best-effort MIME type from a file name (suffix only). */\nexport function mimeTypeFromFileName(fileName: string | undefined): string | undefined {\n if (!fileName) return undefined;\n const lower = fileName.toLowerCase();\n if (lower.endsWith('.png')) return 'image/png';\n if (lower.endsWith('.jpg') || lower.endsWith('.jpeg')) return 'image/jpeg';\n if (lower.endsWith('.webp')) return 'image/webp';\n if (lower.endsWith('.gif')) return 'image/gif';\n if (lower.endsWith('.bmp')) return 'image/bmp';\n if (lower.endsWith('.svg')) return 'image/svg+xml';\n return undefined;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-ref.js","names":[],"sources":["../../../../../src/agent/image/generation/model-ref.ts"],"sourcesContent":["/**\n * Image-generation model reference parser.\n *\n * Thin wrapper over {@link parseCapabilityModelRef} (cross-capability) so\n * `runtime.ts` and tests have a stable image-specific entry point.\n */\n\nimport {\n parseCapabilityModelRef,\n type ParsedCapabilityModelRef,\n} from '../../media-generation/index.js';\n\nexport type ParsedImageGenerationModelRef = ParsedCapabilityModelRef;\n\nexport function parseImageGenerationModelRef(\n raw: string | undefined | null,\n): ParsedImageGenerationModelRef | null {\n return parseCapabilityModelRef(raw);\n}\n"],"mappings":";;;;;;;;;AAcA,SAAgB,6BACd,KACsC;AACtC,QAAO,wBAAwB,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalization.js","names":[],"sources":["../../../../../src/agent/image/generation/normalization.ts"],"sourcesContent":["/**\n * Image-generation parameter normalization.\n *\n * Reconciles user-supplied geometry / output overrides against the active\n * provider's declared {@link ImageGenerationProviderCapabilities}. Returns:\n * - the actually-applied values to forward to the provider\n * - per-field {@link MediaNormalizationEntry} (requested / applied / derivedFrom)\n * - a list of {@link ImageGenerationIgnoredOverride} entries for unsupported\n * soft fields (so the LLM / UI can surface a Note)\n *\n * Hard errors (unsupported edit, too many input images) are thrown so the\n * caller can fail fast — they are NOT downgraded to ignored overrides.\n *\n * Decision table — see docs/image-generation-rearchitecture.md §6.3\n */\n\nimport {\n resolveClosestAspectRatio,\n resolveClosestResolution,\n resolveClosestSize,\n} from '../../media-generation/index.js';\nimport type {\n ImageGenerationBackground,\n ImageGenerationGeometryCapability,\n ImageGenerationIgnoredOverride,\n ImageGenerationIgnoredOverrideKey,\n ImageGenerationNormalization,\n ImageGenerationOutputFormat,\n ImageGenerationProvider,\n ImageGenerationProviderCapabilities,\n ImageGenerationQuality,\n ImageGenerationResolution,\n ImageGenerationSourceImage,\n} from './types.js';\n\nexport interface ResolveImageGenerationOverridesParams {\n provider: ImageGenerationProvider;\n size?: string;\n aspectRatio?: string;\n resolution?: ImageGenerationResolution;\n quality?: ImageGenerationQuality;\n outputFormat?: ImageGenerationOutputFormat;\n background?: ImageGenerationBackground;\n inputImages?: ImageGenerationSourceImage[];\n}\n\nexport interface ResolvedImageGenerationOverrides {\n size?: string;\n aspectRatio?: string;\n resolution?: ImageGenerationResolution;\n quality?: ImageGenerationQuality;\n outputFormat?: ImageGenerationOutputFormat;\n background?: ImageGenerationBackground;\n ignoredOverrides: ImageGenerationIgnoredOverride[];\n normalization?: ImageGenerationNormalization;\n}\n\nexport function resolveImageGenerationOverrides(\n params: ResolveImageGenerationOverridesParams,\n): ResolvedImageGenerationOverrides {\n const provider = params.provider;\n const caps = provider.capabilities ?? {};\n const isEdit = (params.inputImages?.length ?? 0) > 0;\n\n // Hard checks (throw, do not downgrade) ---------------------------------\n assertEditSupported(provider, isEdit, params.inputImages);\n\n const modeCaps = isEdit ? caps.edit : caps.generate;\n const supportsSize = modeCaps?.supportsSize === true;\n const supportsAspectRatio = modeCaps?.supportsAspectRatio === true;\n const supportsResolution = caps.generate?.supportsResolution === true && !isEdit;\n\n const ignoredOverrides: ImageGenerationIgnoredOverride[] = [];\n const normalization: ImageGenerationNormalization = {};\n\n // Geometry --------------------------------------------------------------\n const { size, aspectRatio, resolution } = resolveGeometry({\n requestedSize: params.size,\n requestedAspectRatio: params.aspectRatio,\n requestedResolution: params.resolution,\n supportsSize,\n supportsAspectRatio,\n supportsResolution,\n geometry: caps.geometry,\n ignoredOverrides,\n normalization,\n });\n\n // Soft fields (drop into ignoredOverrides on mismatch) -----------------\n const quality = filterEnumOverride<'quality', ImageGenerationQuality>({\n key: 'quality',\n requested: params.quality,\n supported: caps.output?.qualities,\n ignoredOverrides,\n });\n const outputFormat = filterEnumOverride<'outputFormat', ImageGenerationOutputFormat>({\n key: 'outputFormat',\n requested: params.outputFormat,\n supported: caps.output?.formats,\n ignoredOverrides,\n });\n const background = filterEnumOverride<'background', ImageGenerationBackground>({\n key: 'background',\n requested: params.background,\n supported: caps.output?.backgrounds,\n ignoredOverrides,\n });\n\n return {\n ...(size !== undefined ? { size } : {}),\n ...(aspectRatio !== undefined ? { aspectRatio } : {}),\n ...(resolution !== undefined ? { resolution } : {}),\n ...(quality !== undefined ? { quality } : {}),\n ...(outputFormat !== undefined ? { outputFormat } : {}),\n ...(background !== undefined ? { background } : {}),\n ignoredOverrides,\n ...(hasAnyEntry(normalization) ? { normalization } : {}),\n };\n}\n\n// ============================================\n// Geometry decision table (§6.3)\n// ============================================\n\ninterface ResolveGeometryParams {\n requestedSize?: string;\n requestedAspectRatio?: string;\n requestedResolution?: ImageGenerationResolution;\n supportsSize: boolean;\n supportsAspectRatio: boolean;\n supportsResolution: boolean;\n geometry: ImageGenerationGeometryCapability | undefined;\n ignoredOverrides: ImageGenerationIgnoredOverride[];\n normalization: ImageGenerationNormalization;\n}\n\nfunction resolveGeometry(params: ResolveGeometryParams): {\n size?: string;\n aspectRatio?: string;\n resolution?: ImageGenerationResolution;\n} {\n const supportedSizes = params.geometry?.sizes;\n const supportedAspectRatios = params.geometry?.aspectRatios;\n const supportedResolutions = params.geometry?.resolutions;\n\n let size: string | undefined;\n let aspectRatio: string | undefined;\n let resolution: ImageGenerationResolution | undefined;\n\n // ----- size -----------------------------------------------------------\n if (params.requestedSize) {\n if (params.supportsSize) {\n const applied = resolveClosestSize({\n requestedSize: params.requestedSize,\n supportedSizes,\n });\n if (applied) {\n size = applied;\n params.normalization.size = entry({\n requested: params.requestedSize,\n applied,\n supportedValues: supportedSizes,\n });\n } else {\n // No supported list → forward as-is.\n size = params.requestedSize;\n }\n } else if (params.supportsAspectRatio) {\n const derived = resolveClosestAspectRatio({\n requestedSize: params.requestedSize,\n supportedAspectRatios,\n });\n if (derived) {\n aspectRatio = derived;\n params.normalization.aspectRatio = entry({\n applied: derived,\n derivedFrom: 'size',\n supportedValues: supportedAspectRatios,\n });\n } else {\n ignored(params.ignoredOverrides, 'size', params.requestedSize);\n }\n } else {\n ignored(params.ignoredOverrides, 'size', params.requestedSize);\n }\n }\n\n // ----- aspectRatio -----------------------------------------------------\n if (params.requestedAspectRatio) {\n if (params.supportsAspectRatio) {\n const applied = resolveClosestAspectRatio({\n requestedAspectRatio: params.requestedAspectRatio,\n supportedAspectRatios,\n });\n const finalApplied = applied ?? params.requestedAspectRatio;\n aspectRatio = finalApplied;\n params.normalization.aspectRatio = entry({\n requested: params.requestedAspectRatio,\n applied: finalApplied,\n supportedValues: supportedAspectRatios,\n });\n } else if (params.supportsSize && size === undefined) {\n const derived = resolveClosestSize({\n requestedAspectRatio: params.requestedAspectRatio,\n supportedSizes,\n });\n if (derived) {\n size = derived;\n params.normalization.size = entry({\n applied: derived,\n derivedFrom: 'aspectRatio',\n supportedValues: supportedSizes,\n });\n } else {\n ignored(params.ignoredOverrides, 'aspectRatio', params.requestedAspectRatio);\n }\n } else if (!params.supportsSize) {\n ignored(params.ignoredOverrides, 'aspectRatio', params.requestedAspectRatio);\n }\n // else: size already supplied and provider only supports size → ignore\n // to avoid contradiction; record in ignoredOverrides as well.\n if (\n !params.supportsAspectRatio &&\n params.supportsSize &&\n size !== undefined &&\n params.normalization.size?.derivedFrom !== 'aspectRatio'\n ) {\n ignored(params.ignoredOverrides, 'aspectRatio', params.requestedAspectRatio);\n }\n }\n\n // ----- resolution ------------------------------------------------------\n if (params.requestedResolution) {\n if (params.supportsResolution) {\n const applied = resolveClosestResolution({\n requestedResolution: params.requestedResolution,\n supportedResolutions,\n });\n const finalApplied = applied ?? params.requestedResolution;\n resolution = finalApplied;\n params.normalization.resolution = entry({\n requested: params.requestedResolution,\n applied: finalApplied,\n supportedValues: supportedResolutions,\n });\n } else {\n ignored(params.ignoredOverrides, 'resolution', params.requestedResolution);\n }\n }\n\n return { size, aspectRatio, resolution };\n}\n\n// ============================================\n// Hard-check helpers\n// ============================================\n\nfunction assertEditSupported(\n provider: ImageGenerationProvider,\n isEdit: boolean,\n inputImages: ImageGenerationSourceImage[] | undefined,\n): void {\n if (!isEdit) return;\n const caps = provider.capabilities ?? {};\n const editCap = caps.edit;\n const enabled = editCap?.enabled === true;\n if (!enabled) {\n throw new Error(`${provider.id} image editing is not supported.`);\n }\n const max = editCap.maxInputImages;\n if (typeof max === 'number' && (inputImages?.length ?? 0) > max) {\n throw new Error(\n `${provider.id} accepts at most ${max} input image(s); got ${inputImages?.length ?? 0}.`,\n );\n }\n}\n\n// ============================================\n// Tiny helpers\n// ============================================\n\ninterface FilterEnumOverrideParams<TKey extends ImageGenerationIgnoredOverrideKey, TValue extends string> {\n key: TKey;\n requested: TValue | undefined;\n supported: ReadonlyArray<TValue> | undefined;\n ignoredOverrides: ImageGenerationIgnoredOverride[];\n}\n\nfunction filterEnumOverride<TKey extends ImageGenerationIgnoredOverrideKey, TValue extends string>(\n params: FilterEnumOverrideParams<TKey, TValue>,\n): TValue | undefined {\n if (params.requested === undefined) return undefined;\n if (!params.supported || params.supported.length === 0) {\n // Provider declares no constraint → forward.\n return params.requested;\n }\n if (params.supported.includes(params.requested)) return params.requested;\n ignored(params.ignoredOverrides, params.key, params.requested);\n return undefined;\n}\n\nfunction ignored(\n list: ImageGenerationIgnoredOverride[],\n key: ImageGenerationIgnoredOverrideKey,\n value: string,\n): void {\n list.push({ key, value });\n}\n\nfunction entry<T extends string>(init: {\n requested?: T;\n applied?: T;\n derivedFrom?: 'size' | 'aspectRatio' | 'resolution';\n supportedValues?: ReadonlyArray<T>;\n}) {\n return {\n ...(init.requested !== undefined ? { requested: init.requested } : {}),\n ...(init.applied !== undefined ? { applied: init.applied } : {}),\n ...(init.derivedFrom !== undefined ? { derivedFrom: init.derivedFrom } : {}),\n ...(init.supportedValues ? { supportedValues: [...init.supportedValues] } : {}),\n };\n}\n\nfunction hasAnyEntry(n: ImageGenerationNormalization): boolean {\n return (\n n.size !== undefined || n.aspectRatio !== undefined || n.resolution !== undefined\n );\n}\n\n// Re-export for convenience so callers don't need a second import.\nexport type { ImageGenerationProviderCapabilities };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAyDA,SAAgB,gCACd,QACkC;CAClC,MAAM,WAAW,OAAO;CACxB,MAAM,OAAO,SAAS,gBAAgB,EAAE;CACxC,MAAM,UAAU,OAAO,aAAa,UAAU,KAAK;AAGnD,qBAAoB,UAAU,QAAQ,OAAO,YAAY;CAEzD,MAAM,WAAW,SAAS,KAAK,OAAO,KAAK;CAC3C,MAAM,eAAe,UAAU,iBAAiB;CAChD,MAAM,sBAAsB,UAAU,wBAAwB;CAC9D,MAAM,qBAAqB,KAAK,UAAU,uBAAuB,QAAQ,CAAC;CAE1E,MAAM,mBAAqD,EAAE;CAC7D,MAAM,gBAA8C,EAAE;CAGtD,MAAM,EAAE,MAAM,aAAa,eAAe,gBAAgB;EACxD,eAAe,OAAO;EACtB,sBAAsB,OAAO;EAC7B,qBAAqB,OAAO;EAC5B;EACA;EACA;EACA,UAAU,KAAK;EACf;EACA;EACD,CAAC;CAGF,MAAM,UAAU,mBAAsD;EACpE,KAAK;EACL,WAAW,OAAO;EAClB,WAAW,KAAK,QAAQ;EACxB;EACD,CAAC;CACF,MAAM,eAAe,mBAAgE;EACnF,KAAK;EACL,WAAW,OAAO;EAClB,WAAW,KAAK,QAAQ;EACxB;EACD,CAAC;CACF,MAAM,aAAa,mBAA4D;EAC7E,KAAK;EACL,WAAW,OAAO;EAClB,WAAW,KAAK,QAAQ;EACxB;EACD,CAAC;AAEF,QAAO;EACL,GAAI,SAAS,KAAA,IAAY,EAAE,MAAM,GAAG,EAAE;EACtC,GAAI,gBAAgB,KAAA,IAAY,EAAE,aAAa,GAAG,EAAE;EACpD,GAAI,eAAe,KAAA,IAAY,EAAE,YAAY,GAAG,EAAE;EAClD,GAAI,YAAY,KAAA,IAAY,EAAE,SAAS,GAAG,EAAE;EAC5C,GAAI,iBAAiB,KAAA,IAAY,EAAE,cAAc,GAAG,EAAE;EACtD,GAAI,eAAe,KAAA,IAAY,EAAE,YAAY,GAAG,EAAE;EAClD;EACA,GAAI,YAAY,cAAc,GAAG,EAAE,eAAe,GAAG,EAAE;EACxD;;AAmBH,SAAS,gBAAgB,QAIvB;CACA,MAAM,iBAAiB,OAAO,UAAU;CACxC,MAAM,wBAAwB,OAAO,UAAU;CAC/C,MAAM,uBAAuB,OAAO,UAAU;CAE9C,IAAI;CACJ,IAAI;CACJ,IAAI;AAGJ,KAAI,OAAO,cACT,KAAI,OAAO,cAAc;EACvB,MAAM,UAAU,mBAAmB;GACjC,eAAe,OAAO;GACtB;GACD,CAAC;AACF,MAAI,SAAS;AACX,UAAO;AACP,UAAO,cAAc,OAAO,MAAM;IAChC,WAAW,OAAO;IAClB;IACA,iBAAiB;IAClB,CAAC;QAGF,QAAO,OAAO;YAEP,OAAO,qBAAqB;EACrC,MAAM,UAAU,0BAA0B;GACxC,eAAe,OAAO;GACtB;GACD,CAAC;AACF,MAAI,SAAS;AACX,iBAAc;AACd,UAAO,cAAc,cAAc,MAAM;IACvC,SAAS;IACT,aAAa;IACb,iBAAiB;IAClB,CAAC;QAEF,SAAQ,OAAO,kBAAkB,QAAQ,OAAO,cAAc;OAGhE,SAAQ,OAAO,kBAAkB,QAAQ,OAAO,cAAc;AAKlE,KAAI,OAAO,sBAAsB;AAC/B,MAAI,OAAO,qBAAqB;GAK9B,MAAM,eAJU,0BAA0B;IACxC,sBAAsB,OAAO;IAC7B;IACD,CAC2B,IAAI,OAAO;AACvC,iBAAc;AACd,UAAO,cAAc,cAAc,MAAM;IACvC,WAAW,OAAO;IAClB,SAAS;IACT,iBAAiB;IAClB,CAAC;aACO,OAAO,gBAAgB,SAAS,KAAA,GAAW;GACpD,MAAM,UAAU,mBAAmB;IACjC,sBAAsB,OAAO;IAC7B;IACD,CAAC;AACF,OAAI,SAAS;AACX,WAAO;AACP,WAAO,cAAc,OAAO,MAAM;KAChC,SAAS;KACT,aAAa;KACb,iBAAiB;KAClB,CAAC;SAEF,SAAQ,OAAO,kBAAkB,eAAe,OAAO,qBAAqB;aAErE,CAAC,OAAO,aACjB,SAAQ,OAAO,kBAAkB,eAAe,OAAO,qBAAqB;AAI9E,MACE,CAAC,OAAO,uBACR,OAAO,gBACP,SAAS,KAAA,KACT,OAAO,cAAc,MAAM,gBAAgB,cAE3C,SAAQ,OAAO,kBAAkB,eAAe,OAAO,qBAAqB;;AAKhF,KAAI,OAAO,oBACT,KAAI,OAAO,oBAAoB;EAK7B,MAAM,eAJU,yBAAyB;GACvC,qBAAqB,OAAO;GAC5B;GACD,CAC2B,IAAI,OAAO;AACvC,eAAa;AACb,SAAO,cAAc,aAAa,MAAM;GACtC,WAAW,OAAO;GAClB,SAAS;GACT,iBAAiB;GAClB,CAAC;OAEF,SAAQ,OAAO,kBAAkB,cAAc,OAAO,oBAAoB;AAI9E,QAAO;EAAE;EAAM;EAAa;EAAY;;AAO1C,SAAS,oBACP,UACA,QACA,aACM;AACN,KAAI,CAAC,OAAQ;CAEb,MAAM,WADO,SAAS,gBAAgB,EAAE,EACnB;AAErB,KAAI,EADY,SAAS,YAAY,MAEnC,OAAM,IAAI,MAAM,GAAG,SAAS,GAAG,kCAAkC;CAEnE,MAAM,MAAM,QAAQ;AACpB,KAAI,OAAO,QAAQ,aAAa,aAAa,UAAU,KAAK,IAC1D,OAAM,IAAI,MACR,GAAG,SAAS,GAAG,mBAAmB,IAAI,uBAAuB,aAAa,UAAU,EAAE,GACvF;;AAeL,SAAS,mBACP,QACoB;AACpB,KAAI,OAAO,cAAc,KAAA,EAAW,QAAO,KAAA;AAC3C,KAAI,CAAC,OAAO,aAAa,OAAO,UAAU,WAAW,EAEnD,QAAO,OAAO;AAEhB,KAAI,OAAO,UAAU,SAAS,OAAO,UAAU,CAAE,QAAO,OAAO;AAC/D,SAAQ,OAAO,kBAAkB,OAAO,KAAK,OAAO,UAAU;;AAIhE,SAAS,QACP,MACA,KACA,OACM;AACN,MAAK,KAAK;EAAE;EAAK;EAAO,CAAC;;AAG3B,SAAS,MAAwB,MAK9B;AACD,QAAO;EACL,GAAI,KAAK,cAAc,KAAA,IAAY,EAAE,WAAW,KAAK,WAAW,GAAG,EAAE;EACrE,GAAI,KAAK,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,SAAS,GAAG,EAAE;EAC/D,GAAI,KAAK,gBAAgB,KAAA,IAAY,EAAE,aAAa,KAAK,aAAa,GAAG,EAAE;EAC3E,GAAI,KAAK,kBAAkB,EAAE,iBAAiB,CAAC,GAAG,KAAK,gBAAgB,EAAE,GAAG,EAAE;EAC/E;;AAGH,SAAS,YAAY,GAA0C;AAC7D,QACE,EAAE,SAAS,KAAA,KAAa,EAAE,gBAAgB,KAAA,KAAa,EAAE,eAAe,KAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-compatible-image-provider.js","names":[],"sources":["../../../../../src/agent/image/generation/openai-compatible-image-provider.ts"],"sourcesContent":["/**\n * OpenAI-compatible image provider factory.\n *\n * Many image providers (OpenAI, Azure OpenAI, OpenAI-compatible gateways)\n * speak the same `/images/generations` and `/images/edits` REST shape.\n * This factory wraps that wire format on top of shared provider HTTP, normalization,\n * and auth-runtime so vendor modules only need to declare:\n * - id / aliases / models / capabilities\n * - baseUrl resolution\n * - apiKey resolution\n * - optional request body / response transforms\n *\n */\n\nimport { createLogger } from '../../../utils/logger.js';\nimport {\n pickTimeoutMsOrFallback,\n postJsonRequest,\n postMultipartRequest,\n privateNetworkPolicyToSsrfGuardOptions,\n resolveProviderHttpRequestConfig,\n} from '../../../media-shared/http/index.js';\nimport {\n imageAssetFromBase64,\n imageFileExtensionForMimeType,\n} from './image-assets.js';\nimport type { ImageProviderUiMetadata } from './image-provider-ui.js';\nimport type {\n GeneratedImageAsset,\n ImageGenerationProvider,\n ImageGenerationProviderCapabilities,\n ImageGenerationProviderConfiguredContext,\n ImageGenerationRequest,\n ImageGenerationResult,\n ImageGenerationSourceImage,\n} from './types.js';\n\nconst log = createLogger('ImageGen:OpenAICompat');\n\nconst DEFAULT_OUTPUT_MIME = 'image/png';\nconst DEFAULT_TIMEOUT_MS = 120_000;\n\n/** Subset of the official OpenAI image response we map. */\nexport interface OpenAiCompatibleImageResponse {\n data?: Array<{\n b64_json?: string;\n revised_prompt?: string;\n [k: string]: unknown;\n }>;\n [k: string]: unknown;\n}\n\nexport interface OpenAiCompatibleEndpointResolution {\n /** Base URL without trailing slash, e.g. `https://api.openai.com/v1`. */\n baseUrl: string;\n /** Optional override for the generations sub-path; defaults to `/images/generations`. */\n generationsPath?: string;\n /** Optional override for the edits sub-path; defaults to `/images/edits`. */\n editsPath?: string;\n /** Extra headers merged into the request (e.g. `api-key` for Azure). */\n headers?: Record<string, string>;\n /**\n * Override Authorization header logic. When omitted, the factory adds\n * `Authorization: Bearer <apiKey>` if `apiKey` is present.\n */\n authorization?: { kind: 'none' } | { kind: 'bearer' } | { kind: 'header'; headerName: string };\n}\n\nexport interface OpenAiCompatibleImageProviderOptions {\n id: string;\n aliases?: string[];\n label?: string;\n defaultModel: string;\n models: string[];\n capabilities: ImageGenerationProviderCapabilities;\n\n /** Sync env / cfg lookup that decides if the provider has any usable credential. */\n isConfigured: (ctx: ImageGenerationProviderConfiguredContext) => boolean;\n\n /** Resolve API key for one request. May return null when using OAuth/header auth. */\n resolveApiKey: (req: ImageGenerationRequest) => string | null | undefined;\n\n /** Resolve endpoint info per-request (region, baseUrl override, Azure deployment, …). */\n resolveEndpoint: (req: ImageGenerationRequest) => OpenAiCompatibleEndpointResolution;\n\n /** Default per-call timeout. Combined with provider-level config in provider-http. */\n defaultTimeoutMs?: number;\n\n /**\n * Hook to enrich the JSON body sent to `/images/generations`. Mutate the\n * returned object freely; the factory keeps standard fields stable.\n */\n buildGenerateRequestBody?: (\n req: ImageGenerationRequest,\n base: Record<string, unknown>,\n ) => Record<string, unknown>;\n\n /** Hook to enrich the multipart form for `/images/edits`. */\n buildEditFormFields?: (\n req: ImageGenerationRequest,\n fields: Record<string, string>,\n ) => Record<string, string>;\n\n /**\n * Optional response mapper. Default: `mapDefaultOpenAiResponse`. Vendor\n * implementations can override to handle non-standard response shapes.\n */\n mapResponse?: (raw: unknown, req: ImageGenerationRequest) => GeneratedImageAsset[];\n\n /** Default count clamp. Provider may also enforce via `capabilities.generate.maxCount`. */\n defaultCount?: number;\n defaultSize?: string;\n /** Gateway console presets for `cfg.providers.<id>.baseUrl`. */\n ui?: ImageProviderUiMetadata;\n}\n\nexport function createOpenAiCompatibleImageProvider(\n options: OpenAiCompatibleImageProviderOptions,\n): ImageGenerationProvider {\n const defaultMaxCount = options.capabilities.generate?.maxCount ?? 4;\n const defaultCount = options.defaultCount ?? 1;\n const defaultSize = options.defaultSize ?? '1024x1024';\n\n return {\n id: options.id,\n ...(options.aliases ? { aliases: options.aliases } : {}),\n ...(options.label ? { label: options.label } : {}),\n defaultModel: options.defaultModel,\n models: options.models,\n capabilities: options.capabilities,\n isConfigured: options.isConfigured,\n ...(options.ui ? { ui: options.ui } : {}),\n async generateImage(req): Promise<ImageGenerationResult> {\n const apiKey = options.resolveApiKey(req) ?? null;\n const endpoint = options.resolveEndpoint(req);\n const httpDefaults = resolveProviderHttpRequestConfig({\n providerId: options.id,\n cfg: req.cfg,\n fallbackTimeoutMs: options.defaultTimeoutMs ?? DEFAULT_TIMEOUT_MS,\n });\n\n const headers: Record<string, string> = {\n ...httpDefaults.headers,\n ...(endpoint.headers ?? {}),\n };\n applyAuthorizationHeader({ headers, endpoint, apiKey });\n\n const isEdit = (req.inputImages?.length ?? 0) > 0;\n const count = clampCount(req.count, defaultCount, defaultMaxCount);\n const size = req.size?.trim() || defaultSize;\n const url = isEdit\n ? joinPath(endpoint.baseUrl, endpoint.editsPath ?? '/images/edits')\n : joinPath(endpoint.baseUrl, endpoint.generationsPath ?? '/images/generations');\n\n log.debug(\n {\n providerId: options.id,\n model: req.model,\n phase: isEdit ? 'edit_request' : 'generate_request',\n count,\n size,\n },\n `OpenAI-compatible ${isEdit ? 'edit' : 'generate'} request`,\n );\n\n const responseJson = isEdit\n ? await postEditRequest({\n providerId: options.id,\n req,\n url,\n headers,\n count,\n size,\n httpDefaults,\n buildEditFormFields: options.buildEditFormFields,\n })\n : await postGenerateRequest({\n providerId: options.id,\n req,\n url,\n headers,\n count,\n size,\n httpDefaults,\n buildGenerateRequestBody: options.buildGenerateRequestBody,\n });\n\n const mapped = (options.mapResponse ?? mapDefaultOpenAiResponse)(responseJson, req);\n if (mapped.length === 0) {\n throw new Error(`${options.id} returned no images.`);\n }\n return {\n images: mapped,\n model: req.model,\n };\n },\n };\n}\n\n// ============================================\n// Default helpers\n// ============================================\n\ninterface PostHelperParams {\n providerId: string;\n req: ImageGenerationRequest;\n url: string;\n headers: Record<string, string>;\n count: number;\n size: string;\n httpDefaults: { timeoutMs?: number };\n}\n\nasync function postGenerateRequest(\n params: PostHelperParams & {\n buildGenerateRequestBody?: OpenAiCompatibleImageProviderOptions['buildGenerateRequestBody'];\n },\n): Promise<unknown> {\n const baseBody: Record<string, unknown> = {\n model: params.req.model,\n prompt: params.req.prompt,\n n: params.count,\n size: params.size,\n response_format: 'b64_json',\n };\n applyOpenAiOptions(baseBody, params.req);\n const body = params.buildGenerateRequestBody\n ? params.buildGenerateRequestBody(params.req, baseBody)\n : baseBody;\n\n const timeoutMs = pickTimeoutMsOrFallback(\n params.req.timeoutMs,\n params.httpDefaults.timeoutMs,\n DEFAULT_TIMEOUT_MS,\n );\n const res = await postJsonRequest(params.url, {\n label: params.providerId,\n timeoutMs,\n signal: params.req.signal,\n body,\n headers: params.headers,\n ...privateNetworkPolicyToSsrfGuardOptions(),\n });\n return await res.json();\n}\n\nasync function postEditRequest(\n params: PostHelperParams & {\n buildEditFormFields?: OpenAiCompatibleImageProviderOptions['buildEditFormFields'];\n },\n): Promise<unknown> {\n const inputImages = params.req.inputImages ?? [];\n const fields: Record<string, string> = {\n model: params.req.model,\n prompt: params.req.prompt,\n n: String(params.count),\n size: params.size,\n response_format: 'b64_json',\n };\n const merged = params.buildEditFormFields\n ? params.buildEditFormFields(params.req, fields)\n : fields;\n\n const form = new FormData();\n for (const [k, v] of Object.entries(merged)) {\n if (typeof v === 'string') form.append(k, v);\n }\n for (let idx = 0; idx < inputImages.length; idx++) {\n const img = inputImages[idx]!;\n const field = idx === 0 ? 'image' : `image[${idx}]`;\n const u8 = img.buffer instanceof Uint8Array ? img.buffer : new Uint8Array(img.buffer);\n const copy = new Uint8Array(u8.byteLength);\n copy.set(u8);\n form.append(\n field,\n new Blob([copy], { type: img.mimeType || DEFAULT_OUTPUT_MIME }),\n pickEditFileName(img, idx),\n );\n }\n\n const headers = new Headers(params.headers);\n headers.delete('content-type');\n\n const timeoutMs = pickTimeoutMsOrFallback(\n params.req.timeoutMs,\n params.httpDefaults.timeoutMs,\n DEFAULT_TIMEOUT_MS,\n );\n const res = await postMultipartRequest(params.url, {\n label: params.providerId,\n timeoutMs,\n signal: params.req.signal,\n body: form,\n headers,\n ...privateNetworkPolicyToSsrfGuardOptions(),\n });\n return await res.json();\n}\n\nexport function mapDefaultOpenAiResponse(\n raw: unknown,\n req: ImageGenerationRequest,\n): GeneratedImageAsset[] {\n if (!raw || typeof raw !== 'object') return [];\n const data = (raw as OpenAiCompatibleImageResponse).data;\n if (!Array.isArray(data)) return [];\n const ext = imageFileExtensionForMimeType(req.outputFormat ? `image/${req.outputFormat}` : DEFAULT_OUTPUT_MIME);\n const out: GeneratedImageAsset[] = [];\n data.forEach((entry, index) => {\n const b64 = entry?.b64_json;\n if (typeof b64 !== 'string' || b64.length === 0) return;\n const asset = imageAssetFromBase64({\n base64: b64,\n mimeType: req.outputFormat ? `image/${req.outputFormat}` : undefined,\n fileName: `image-${index + 1}.${ext}`,\n });\n out.push({\n ...asset,\n ...(typeof entry.revised_prompt === 'string' ? { revisedPrompt: entry.revised_prompt } : {}),\n });\n });\n return out;\n}\n\n// ============================================\n// Local helpers\n// ============================================\n\nfunction applyAuthorizationHeader(params: {\n headers: Record<string, string>;\n endpoint: OpenAiCompatibleEndpointResolution;\n apiKey: string | null;\n}): void {\n const auth = params.endpoint.authorization ?? { kind: 'bearer' as const };\n if (auth.kind === 'none') return;\n if (!params.apiKey) return;\n if (auth.kind === 'bearer') {\n params.headers['authorization'] = `Bearer ${params.apiKey}`;\n return;\n }\n if (auth.kind === 'header') {\n params.headers[auth.headerName.toLowerCase()] = params.apiKey;\n }\n}\n\nfunction applyOpenAiOptions(body: Record<string, unknown>, req: ImageGenerationRequest): void {\n if (req.quality) body.quality = req.quality;\n if (req.outputFormat) body.output_format = req.outputFormat;\n if (req.background) body.background = req.background;\n const opts = req.providerOptions?.openai;\n if (!opts) return;\n if (opts.moderation) body.moderation = opts.moderation;\n if (typeof opts.outputCompression === 'number') body.output_compression = opts.outputCompression;\n if (typeof opts.user === 'string' && opts.user) body.user = opts.user;\n if (opts.background && !body.background) body.background = opts.background;\n}\n\nfunction pickEditFileName(img: ImageGenerationSourceImage, idx: number): string {\n const safe = img.fileName?.trim().replace(/[^\\w.-]/g, '_');\n if (safe) return safe;\n const ext = imageFileExtensionForMimeType(img.mimeType);\n return `image-${idx + 1}.${ext}`;\n}\n\nfunction clampCount(requested: number | undefined, fallback: number, max: number): number {\n if (typeof requested !== 'number' || !Number.isFinite(requested) || requested <= 0) return fallback;\n return Math.min(max, Math.max(1, Math.floor(requested)));\n}\n\nfunction joinPath(baseUrl: string, subPath: string): string {\n const left = baseUrl.replace(/\\/+$/, '');\n const right = subPath.startsWith('/') ? subPath : `/${subPath}`;\n return `${left}${right}`;\n}\n"],"mappings":";;;;;;;;;aAcwD;AAuBxD,MAAM,MAAM,aAAa,wBAAwB;AAEjD,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AA4E3B,SAAgB,oCACd,SACyB;CACzB,MAAM,kBAAkB,QAAQ,aAAa,UAAU,YAAY;CACnE,MAAM,eAAe,QAAQ,gBAAgB;CAC7C,MAAM,cAAc,QAAQ,eAAe;AAE3C,QAAO;EACL,IAAI,QAAQ;EACZ,GAAI,QAAQ,UAAU,EAAE,SAAS,QAAQ,SAAS,GAAG,EAAE;EACvD,GAAI,QAAQ,QAAQ,EAAE,OAAO,QAAQ,OAAO,GAAG,EAAE;EACjD,cAAc,QAAQ;EACtB,QAAQ,QAAQ;EAChB,cAAc,QAAQ;EACtB,cAAc,QAAQ;EACtB,GAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,IAAI,GAAG,EAAE;EACxC,MAAM,cAAc,KAAqC;GACvD,MAAM,SAAS,QAAQ,cAAc,IAAI,IAAI;GAC7C,MAAM,WAAW,QAAQ,gBAAgB,IAAI;GAC7C,MAAM,eAAe,iCAAiC;IACpD,YAAY,QAAQ;IACpB,KAAK,IAAI;IACT,mBAAmB,QAAQ,oBAAoB;IAChD,CAAC;GAEF,MAAM,UAAkC;IACtC,GAAG,aAAa;IAChB,GAAI,SAAS,WAAW,EAAE;IAC3B;AACD,4BAAyB;IAAE;IAAS;IAAU;IAAQ,CAAC;GAEvD,MAAM,UAAU,IAAI,aAAa,UAAU,KAAK;GAChD,MAAM,QAAQ,WAAW,IAAI,OAAO,cAAc,gBAAgB;GAClE,MAAM,OAAO,IAAI,MAAM,MAAM,IAAI;GACjC,MAAM,MAAM,SACR,SAAS,SAAS,SAAS,SAAS,aAAa,gBAAgB,GACjE,SAAS,SAAS,SAAS,SAAS,mBAAmB,sBAAsB;AAEjF,OAAI,MACF;IACE,YAAY,QAAQ;IACpB,OAAO,IAAI;IACX,OAAO,SAAS,iBAAiB;IACjC;IACA;IACD,EACD,qBAAqB,SAAS,SAAS,WAAW,UACnD;GAED,MAAM,eAAe,SACjB,MAAM,gBAAgB;IACpB,YAAY,QAAQ;IACpB;IACA;IACA;IACA;IACA;IACA;IACA,qBAAqB,QAAQ;IAC9B,CAAC,GACF,MAAM,oBAAoB;IACxB,YAAY,QAAQ;IACpB;IACA;IACA;IACA;IACA;IACA;IACA,0BAA0B,QAAQ;IACnC,CAAC;GAEN,MAAM,UAAU,QAAQ,eAAe,0BAA0B,cAAc,IAAI;AACnF,OAAI,OAAO,WAAW,EACpB,OAAM,IAAI,MAAM,GAAG,QAAQ,GAAG,sBAAsB;AAEtD,UAAO;IACL,QAAQ;IACR,OAAO,IAAI;IACZ;;EAEJ;;AAiBH,eAAe,oBACb,QAGkB;CAClB,MAAM,WAAoC;EACxC,OAAO,OAAO,IAAI;EAClB,QAAQ,OAAO,IAAI;EACnB,GAAG,OAAO;EACV,MAAM,OAAO;EACb,iBAAiB;EAClB;AACD,oBAAmB,UAAU,OAAO,IAAI;CACxC,MAAM,OAAO,OAAO,2BAChB,OAAO,yBAAyB,OAAO,KAAK,SAAS,GACrD;CAEJ,MAAM,YAAY,wBAChB,OAAO,IAAI,WACX,OAAO,aAAa,WACpB,mBACD;AASD,QAAO,OAAM,MARK,gBAAgB,OAAO,KAAK;EAC5C,OAAO,OAAO;EACd;EACA,QAAQ,OAAO,IAAI;EACnB;EACA,SAAS,OAAO;EAChB,GAAG,wCAAwC;EAC5C,CAAC,EACe,MAAM;;AAGzB,eAAe,gBACb,QAGkB;CAClB,MAAM,cAAc,OAAO,IAAI,eAAe,EAAE;CAChD,MAAM,SAAiC;EACrC,OAAO,OAAO,IAAI;EAClB,QAAQ,OAAO,IAAI;EACnB,GAAG,OAAO,OAAO,MAAM;EACvB,MAAM,OAAO;EACb,iBAAiB;EAClB;CACD,MAAM,SAAS,OAAO,sBAClB,OAAO,oBAAoB,OAAO,KAAK,OAAO,GAC9C;CAEJ,MAAM,OAAO,IAAI,UAAU;AAC3B,MAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,OAAO,CACzC,KAAI,OAAO,MAAM,SAAU,MAAK,OAAO,GAAG,EAAE;AAE9C,MAAK,IAAI,MAAM,GAAG,MAAM,YAAY,QAAQ,OAAO;EACjD,MAAM,MAAM,YAAY;EACxB,MAAM,QAAQ,QAAQ,IAAI,UAAU,SAAS,IAAI;EACjD,MAAM,KAAK,IAAI,kBAAkB,aAAa,IAAI,SAAS,IAAI,WAAW,IAAI,OAAO;EACrF,MAAM,OAAO,IAAI,WAAW,GAAG,WAAW;AAC1C,OAAK,IAAI,GAAG;AACZ,OAAK,OACH,OACA,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,IAAI,YAAY,qBAAqB,CAAC,EAC/D,iBAAiB,KAAK,IAAI,CAC3B;;CAGH,MAAM,UAAU,IAAI,QAAQ,OAAO,QAAQ;AAC3C,SAAQ,OAAO,eAAe;CAE9B,MAAM,YAAY,wBAChB,OAAO,IAAI,WACX,OAAO,aAAa,WACpB,mBACD;AASD,QAAO,OAAM,MARK,qBAAqB,OAAO,KAAK;EACjD,OAAO,OAAO;EACd;EACA,QAAQ,OAAO,IAAI;EACnB,MAAM;EACN;EACA,GAAG,wCAAwC;EAC5C,CAAC,EACe,MAAM;;AAGzB,SAAgB,yBACd,KACA,KACuB;AACvB,KAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO,EAAE;CAC9C,MAAM,OAAQ,IAAsC;AACpD,KAAI,CAAC,MAAM,QAAQ,KAAK,CAAE,QAAO,EAAE;CACnC,MAAM,MAAM,8BAA8B,IAAI,eAAe,SAAS,IAAI,iBAAiB,oBAAoB;CAC/G,MAAM,MAA6B,EAAE;AACrC,MAAK,SAAS,OAAO,UAAU;EAC7B,MAAM,MAAM,OAAO;AACnB,MAAI,OAAO,QAAQ,YAAY,IAAI,WAAW,EAAG;EACjD,MAAM,QAAQ,qBAAqB;GACjC,QAAQ;GACR,UAAU,IAAI,eAAe,SAAS,IAAI,iBAAiB,KAAA;GAC3D,UAAU,SAAS,QAAQ,EAAE,GAAG;GACjC,CAAC;AACF,MAAI,KAAK;GACP,GAAG;GACH,GAAI,OAAO,MAAM,mBAAmB,WAAW,EAAE,eAAe,MAAM,gBAAgB,GAAG,EAAE;GAC5F,CAAC;GACF;AACF,QAAO;;AAOT,SAAS,yBAAyB,QAIzB;CACP,MAAM,OAAO,OAAO,SAAS,iBAAiB,EAAE,MAAM,UAAmB;AACzE,KAAI,KAAK,SAAS,OAAQ;AAC1B,KAAI,CAAC,OAAO,OAAQ;AACpB,KAAI,KAAK,SAAS,UAAU;AAC1B,SAAO,QAAQ,mBAAmB,UAAU,OAAO;AACnD;;AAEF,KAAI,KAAK,SAAS,SAChB,QAAO,QAAQ,KAAK,WAAW,aAAa,IAAI,OAAO;;AAI3D,SAAS,mBAAmB,MAA+B,KAAmC;AAC5F,KAAI,IAAI,QAAS,MAAK,UAAU,IAAI;AACpC,KAAI,IAAI,aAAc,MAAK,gBAAgB,IAAI;AAC/C,KAAI,IAAI,WAAY,MAAK,aAAa,IAAI;CAC1C,MAAM,OAAO,IAAI,iBAAiB;AAClC,KAAI,CAAC,KAAM;AACX,KAAI,KAAK,WAAY,MAAK,aAAa,KAAK;AAC5C,KAAI,OAAO,KAAK,sBAAsB,SAAU,MAAK,qBAAqB,KAAK;AAC/E,KAAI,OAAO,KAAK,SAAS,YAAY,KAAK,KAAM,MAAK,OAAO,KAAK;AACjE,KAAI,KAAK,cAAc,CAAC,KAAK,WAAY,MAAK,aAAa,KAAK;;AAGlE,SAAS,iBAAiB,KAAiC,KAAqB;CAC9E,MAAM,OAAO,IAAI,UAAU,MAAM,CAAC,QAAQ,YAAY,IAAI;AAC1D,KAAI,KAAM,QAAO;CACjB,MAAM,MAAM,8BAA8B,IAAI,SAAS;AACvD,QAAO,SAAS,MAAM,EAAE,GAAG;;AAG7B,SAAS,WAAW,WAA+B,UAAkB,KAAqB;AACxF,KAAI,OAAO,cAAc,YAAY,CAAC,OAAO,SAAS,UAAU,IAAI,aAAa,EAAG,QAAO;AAC3F,QAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,UAAU,CAAC,CAAC;;AAG1D,SAAS,SAAS,SAAiB,SAAyB;AAG1D,QAAO,GAFM,QAAQ,QAAQ,QAAQ,GAEvB,GADA,QAAQ,WAAW,IAAI,GAAG,UAAU,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-registry.js","names":[],"sources":["../../../../../src/agent/image/generation/provider-registry.ts"],"sourcesContent":["import type { Config } from '../../../config/schema.js';\nimport type { ImageProviderUiMetadata } from './image-provider-ui.js';\nimport type {\n ImageGenerationProviderCapabilities,\n ImageGenerationRequest,\n ImageGenerationResult,\n} from './types.js';\n\n/** Lifecycle context for {@link ImageGenerationProvider#isConfigured}. */\nexport interface ImageGenerationProviderConfiguredContext {\n cfg?: Config;\n agentDir?: string;\n}\n\nexport interface ImageGenerationProvider {\n /** Lower-case provider id (registry key). */\n id: string;\n /** Optional aliases — alternate ids that resolve to this provider. */\n aliases?: string[];\n label?: string;\n defaultModel?: string;\n models?: string[];\n /** Provider capability map. */\n capabilities?: ImageGenerationProviderCapabilities;\n /**\n * Synchronous configuration check (Step 2 — was async in Step 1).\n * MUST NOT touch keychain or trigger OS prompts.\n */\n isConfigured?: (ctx: ImageGenerationProviderConfiguredContext) => boolean;\n /** Gateway console presets (regions / base URLs); defined by each bundled extension. */\n ui?: ImageProviderUiMetadata;\n generateImage(req: ImageGenerationRequest): Promise<ImageGenerationResult>;\n}\n\n/**\n * Provider ids that must never be registered (defensive — guards against\n * accidentally shadowing well-known internal namespaces / prototype keys).\n */\nconst UNSAFE_PROVIDER_IDS = new Set<string>(['__proto__', 'constructor', 'prototype']);\n\nconst registry = new Map<string, ImageGenerationProvider>();\nconst aliasIndex = new Map<string, string>();\n\nfunction normalizeId(id: string): string {\n return id.trim().toLowerCase();\n}\n\nfunction isExtensionDisabled(cfg: Config | undefined, providerId: string): boolean {\n if (!cfg) return false;\n // `cfg.extensions[<id>].enabled === false` ⇒ skip the provider in listings.\n // We keep the lookup in a defensively-typed shape; Step 4 may move this to\n // a typed schema entry.\n const extensions = (cfg as unknown as { extensions?: Record<string, unknown> } | undefined)?.extensions;\n if (!extensions || typeof extensions !== 'object') return false;\n const entry = (extensions as Record<string, unknown>)[providerId];\n if (!entry || typeof entry !== 'object') return false;\n const enabled = (entry as { enabled?: unknown }).enabled;\n return enabled === false;\n}\n\nexport function registerImageGenerationProvider(provider: ImageGenerationProvider): void {\n if (!provider.id?.trim()) {\n throw new Error('Image generation provider id is required');\n }\n const id = normalizeId(provider.id);\n if (UNSAFE_PROVIDER_IDS.has(id)) {\n throw new Error(`Image generation provider id is reserved: ${provider.id}`);\n }\n // Drop any stale alias entries that pointed at the previous registration.\n for (const [alias, target] of [...aliasIndex.entries()]) {\n if (target === id) aliasIndex.delete(alias);\n }\n registry.set(id, provider);\n for (const aliasRaw of provider.aliases ?? []) {\n if (typeof aliasRaw !== 'string') continue;\n const alias = normalizeId(aliasRaw);\n if (!alias || alias === id) continue;\n if (UNSAFE_PROVIDER_IDS.has(alias)) continue;\n if (registry.has(alias)) continue; // Real ids always win over aliases.\n aliasIndex.set(alias, id);\n }\n}\n\n/**\n * Resolve a provider by id or alias.\n *\n * `cfg` is honoured to skip providers disabled via `cfg.extensions[<id>].enabled = false`.\n */\nexport function getImageGenerationProvider(\n providerId: string,\n cfg?: Config,\n): ImageGenerationProvider | undefined {\n if (typeof providerId !== 'string') return undefined;\n const id = normalizeId(providerId);\n if (!id) return undefined;\n const direct = registry.get(id);\n if (direct) {\n return isExtensionDisabled(cfg, direct.id) ? undefined : direct;\n }\n const aliasTarget = aliasIndex.get(id);\n if (!aliasTarget) return undefined;\n const aliased = registry.get(aliasTarget);\n if (!aliased) return undefined;\n return isExtensionDisabled(cfg, aliased.id) ? undefined : aliased;\n}\n\nexport function listImageGenerationProviders(cfg?: Config): ImageGenerationProvider[] {\n const out: ImageGenerationProvider[] = [];\n for (const provider of registry.values()) {\n if (isExtensionDisabled(cfg, provider.id)) continue;\n out.push(provider);\n }\n return out;\n}\n\nexport interface ImageGenerationProviderSummary {\n id: string;\n label?: string;\n defaultModel?: string;\n models: string[];\n aliases?: string[];\n capabilities?: ImageGenerationProviderCapabilities;\n ui?: ImageProviderUiMetadata;\n}\n\nexport function listImageGenerationProvidersSummary(\n cfg?: Config,\n): ImageGenerationProviderSummary[] {\n return listImageGenerationProviders(cfg).map((provider) => ({\n id: provider.id,\n ...(provider.label ? { label: provider.label } : {}),\n ...(provider.defaultModel ? { defaultModel: provider.defaultModel } : {}),\n models: provider.models ?? (provider.defaultModel ? [provider.defaultModel] : []),\n ...(provider.aliases?.length ? { aliases: [...provider.aliases] } : {}),\n ...(provider.capabilities ? { capabilities: provider.capabilities } : {}),\n ...(provider.ui ? { ui: provider.ui } : {}),\n }));\n}\n\nexport function clearImageGenerationRegistryForTests(): void {\n registry.clear();\n aliasIndex.clear();\n}\n"],"mappings":";;;;;AAsCA,MAAM,sBAAsB,IAAI,IAAY;CAAC;CAAa;CAAe;CAAY,CAAC;AAEtF,MAAM,2BAAW,IAAI,KAAsC;AAC3D,MAAM,6BAAa,IAAI,KAAqB;AAE5C,SAAS,YAAY,IAAoB;AACvC,QAAO,GAAG,MAAM,CAAC,aAAa;;AAGhC,SAAS,oBAAoB,KAAyB,YAA6B;AACjF,KAAI,CAAC,IAAK,QAAO;CAIjB,MAAM,aAAc,KAAyE;AAC7F,KAAI,CAAC,cAAc,OAAO,eAAe,SAAU,QAAO;CAC1D,MAAM,QAAS,WAAuC;AACtD,KAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAEhD,QADiB,MAAgC,YAC9B;;AAGrB,SAAgB,gCAAgC,UAAyC;AACvF,KAAI,CAAC,SAAS,IAAI,MAAM,CACtB,OAAM,IAAI,MAAM,2CAA2C;CAE7D,MAAM,KAAK,YAAY,SAAS,GAAG;AACnC,KAAI,oBAAoB,IAAI,GAAG,CAC7B,OAAM,IAAI,MAAM,6CAA6C,SAAS,KAAK;AAG7E,MAAK,MAAM,CAAC,OAAO,WAAW,CAAC,GAAG,WAAW,SAAS,CAAC,CACrD,KAAI,WAAW,GAAI,YAAW,OAAO,MAAM;AAE7C,UAAS,IAAI,IAAI,SAAS;AAC1B,MAAK,MAAM,YAAY,SAAS,WAAW,EAAE,EAAE;AAC7C,MAAI,OAAO,aAAa,SAAU;EAClC,MAAM,QAAQ,YAAY,SAAS;AACnC,MAAI,CAAC,SAAS,UAAU,GAAI;AAC5B,MAAI,oBAAoB,IAAI,MAAM,CAAE;AACpC,MAAI,SAAS,IAAI,MAAM,CAAE;AACzB,aAAW,IAAI,OAAO,GAAG;;;;;;;;AAS7B,SAAgB,2BACd,YACA,KACqC;AACrC,KAAI,OAAO,eAAe,SAAU,QAAO,KAAA;CAC3C,MAAM,KAAK,YAAY,WAAW;AAClC,KAAI,CAAC,GAAI,QAAO,KAAA;CAChB,MAAM,SAAS,SAAS,IAAI,GAAG;AAC/B,KAAI,OACF,QAAO,oBAAoB,KAAK,OAAO,GAAG,GAAG,KAAA,IAAY;CAE3D,MAAM,cAAc,WAAW,IAAI,GAAG;AACtC,KAAI,CAAC,YAAa,QAAO,KAAA;CACzB,MAAM,UAAU,SAAS,IAAI,YAAY;AACzC,KAAI,CAAC,QAAS,QAAO,KAAA;AACrB,QAAO,oBAAoB,KAAK,QAAQ,GAAG,GAAG,KAAA,IAAY;;AAG5D,SAAgB,6BAA6B,KAAyC;CACpF,MAAM,MAAiC,EAAE;AACzC,MAAK,MAAM,YAAY,SAAS,QAAQ,EAAE;AACxC,MAAI,oBAAoB,KAAK,SAAS,GAAG,CAAE;AAC3C,MAAI,KAAK,SAAS;;AAEpB,QAAO;;AAaT,SAAgB,oCACd,KACkC;AAClC,QAAO,6BAA6B,IAAI,CAAC,KAAK,cAAc;EAC1D,IAAI,SAAS;EACb,GAAI,SAAS,QAAQ,EAAE,OAAO,SAAS,OAAO,GAAG,EAAE;EACnD,GAAI,SAAS,eAAe,EAAE,cAAc,SAAS,cAAc,GAAG,EAAE;EACxE,QAAQ,SAAS,WAAW,SAAS,eAAe,CAAC,SAAS,aAAa,GAAG,EAAE;EAChF,GAAI,SAAS,SAAS,SAAS,EAAE,SAAS,CAAC,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;EACtE,GAAI,SAAS,eAAe,EAAE,cAAc,SAAS,cAAc,GAAG,EAAE;EACxE,GAAI,SAAS,KAAK,EAAE,IAAI,SAAS,IAAI,GAAG,EAAE;EAC3C,EAAE;;AAGL,SAAgB,uCAA6C;AAC3D,UAAS,OAAO;AAChB,YAAW,OAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","names":["listProvidersSummaryFromRegistry"],"sources":["../../../../../src/agent/image/generation/runtime.ts"],"sourcesContent":["import type { Config } from '../../../config/schema.js';\nimport { PROVIDER_ENV_MAP } from '../../../providers/env-keys.js';\nimport { createLogger } from '../../../utils/logger.js';\nimport {\n buildMediaGenerationNormalizationMetadata,\n buildNoCapabilityModelConfiguredMessage,\n recordCapabilityCandidateFailure,\n resolveCapabilityModelCandidates,\n throwCapabilityGenerationFailure,\n type CapabilityProviderCandidate,\n} from '../../media-generation/index.js';\nimport { describeFailoverError, isFailoverError, type FallbackAttempt } from '../../failover-error.js';\nimport { parseImageGenerationModelRef } from './model-ref.js';\nimport { resolveImageGenerationOverrides } from './normalization.js';\nimport {\n getImageGenerationProvider,\n listImageGenerationProviders,\n listImageGenerationProvidersSummary as listProvidersSummaryFromRegistry,\n type ImageGenerationProvider,\n type ImageGenerationProviderSummary,\n} from './provider-registry.js';\nimport type {\n ImageGenerationProviderCapabilities,\n ImageGenerationRequest,\n ImageGenerationSourceImage,\n} from './types.js';\n\n// Side-effect: registers every bundled image-generation provider listed in\n// src/generated/bundled-image-generation-providers.ts (regenerated via\n// `pnpm run generate:bundled-image-providers`). Vendor implementations live\n// under extensions/<vendor>/src/image-generation-provider.ts.\nimport './bundled.js';\n\nexport type {\n GenerateImageParams,\n GenerateImageRuntimeResult,\n ImageGenerationRuntimeDeps,\n} from './runtime-types.js';\n\nimport type {\n GenerateImageParams,\n GenerateImageRuntimeResult,\n ImageGenerationRuntimeDeps,\n} from './runtime-types.js';\n\nconst log = createLogger('ImageGen');\n\n/**\n * Generate one or more images, walking the candidate model list with\n * structured failover. See {@link GenerateImageParams} / {@link GenerateImageRuntimeResult}.\n */\nexport async function generateImage(\n params: GenerateImageParams,\n deps: ImageGenerationRuntimeDeps = {},\n): Promise<GenerateImageRuntimeResult> {\n const listProviders = (cfg?: Config) =>\n (deps.listProviders ?? listImageGenerationProviders)(cfg);\n const getProvider = (id: string, cfg?: Config) =>\n (deps.getProvider ?? getImageGenerationProvider)(id, cfg);\n\n const candidates = resolveCapabilityModelCandidates({\n cfg: params.cfg,\n modelConfig: params.modelConfig,\n modelOverride: params.modelOverride,\n parseModelRef: parseImageGenerationModelRef,\n agentDir: params.agentDir,\n listProviders: (cfg) => listProviders(cfg).map(toCapabilityCandidate),\n autoProviderFallback: params.autoProviderFallback,\n });\n\n if (candidates.length === 0) {\n throw new Error(buildNoImageGenerationModelConfiguredMessage(params.cfg, deps));\n }\n\n const attempts: FallbackAttempt[] = [];\n let lastError: unknown;\n\n for (const candidate of candidates) {\n const startedAt = Date.now();\n const provider = getProvider(candidate.provider, params.cfg);\n if (!provider) {\n const errorMessage = `Image generation provider not registered: ${candidate.provider}`;\n attempts.push({\n provider: candidate.provider,\n model: candidate.model,\n error: errorMessage,\n reason: 'config',\n });\n lastError = new Error(errorMessage);\n log.warn(\n { provider: candidate.provider, model: candidate.model, phase: 'candidate_skipped' },\n `image-generation candidate skipped: ${errorMessage}`,\n );\n continue;\n }\n\n try {\n const sanitized = resolveImageGenerationOverrides({\n provider,\n size: params.size,\n aspectRatio: params.aspectRatio,\n resolution: params.resolution,\n quality: params.quality,\n outputFormat: params.outputFormat,\n background: params.background,\n inputImages: params.inputImages,\n });\n\n const request = buildProviderRequest({\n provider,\n candidate,\n params,\n sanitized,\n });\n\n log.debug(\n {\n provider: candidate.provider,\n model: candidate.model,\n phase: 'provider_invoked',\n normalizationCount: sanitized.normalization\n ? Object.keys(sanitized.normalization).length\n : 0,\n ignoredCount: sanitized.ignoredOverrides.length,\n },\n `image-generation provider invoked: ${candidate.provider}/${candidate.model}`,\n );\n\n const result = await provider.generateImage(request);\n if (!result.images?.length) {\n throw new Error('Image generation provider returned no images.');\n }\n\n const normalizationMetadata = buildMediaGenerationNormalizationMetadata({\n normalization: sanitized.normalization as Record<string, unknown> | undefined,\n });\n\n return {\n images: result.images,\n provider: candidate.provider,\n model: result.model ?? candidate.model,\n attempts,\n ...(sanitized.normalization ? { normalization: sanitized.normalization } : {}),\n ignoredOverrides: sanitized.ignoredOverrides,\n metadata: { ...(result.metadata ?? {}), ...normalizationMetadata },\n };\n } catch (err) {\n lastError = err;\n const durationMs = Date.now() - startedAt;\n recordCapabilityCandidateFailure({\n attempts,\n provider: candidate.provider,\n model: candidate.model,\n error: err,\n durationMs,\n });\n const last = attempts[attempts.length - 1];\n const description = isFailoverError(err) ? describeFailoverError(err) : undefined;\n log.warn(\n {\n err,\n provider: candidate.provider,\n model: candidate.model,\n status: last?.status,\n reason: last?.reason,\n durationMs,\n phase: 'candidate_failed',\n attemptCount: attempts.length,\n },\n `image-generation candidate failed: ${candidate.provider}/${candidate.model}: ${\n description ?? last?.error ?? (err instanceof Error ? err.message : String(err))\n }`,\n );\n }\n }\n\n return throwCapabilityGenerationFailure({\n capabilityLabel: 'image generation',\n attempts,\n lastError,\n });\n}\n\nexport function listImageGenerationProvidersSummary(\n cfg?: Config,\n): ImageGenerationProviderSummary[] {\n return listProvidersSummaryFromRegistry(cfg);\n}\n\n// ============================================\n// Helpers\n// ============================================\n\nfunction buildProviderRequest(input: {\n provider: ImageGenerationProvider;\n candidate: { provider: string; model: string };\n params: GenerateImageParams;\n sanitized: ReturnType<typeof resolveImageGenerationOverrides>;\n}): ImageGenerationRequest {\n const { provider, candidate, params, sanitized } = input;\n const inputImages = params.inputImages\n ? cloneInputImages(params.inputImages)\n : undefined;\n return {\n provider: provider.id,\n model: candidate.model,\n prompt: params.prompt,\n ...(params.cfg ? { cfg: params.cfg } : {}),\n ...(params.agentDir ? { agentDir: params.agentDir } : {}),\n ...(params.authStore ? { authStore: params.authStore } : {}),\n ...(typeof params.timeoutMs === 'number' ? { timeoutMs: params.timeoutMs } : {}),\n ...(params.signal ? { signal: params.signal } : {}),\n ...(typeof params.count === 'number' ? { count: params.count } : {}),\n ...(sanitized.size !== undefined ? { size: sanitized.size } : {}),\n ...(sanitized.aspectRatio !== undefined ? { aspectRatio: sanitized.aspectRatio } : {}),\n ...(sanitized.resolution !== undefined ? { resolution: sanitized.resolution } : {}),\n ...(sanitized.quality !== undefined ? { quality: sanitized.quality } : {}),\n ...(sanitized.outputFormat !== undefined ? { outputFormat: sanitized.outputFormat } : {}),\n ...(sanitized.background !== undefined ? { background: sanitized.background } : {}),\n ...(inputImages ? { inputImages } : {}),\n ...(params.providerOptions ? { providerOptions: params.providerOptions } : {}),\n };\n}\n\nfunction cloneInputImages(images: ImageGenerationSourceImage[]): ImageGenerationSourceImage[] {\n return images.map((img) => ({\n buffer: img.buffer,\n mimeType: img.mimeType,\n ...(img.fileName ? { fileName: img.fileName } : {}),\n ...(img.metadata ? { metadata: img.metadata } : {}),\n }));\n}\n\nfunction toCapabilityCandidate(provider: ImageGenerationProvider): CapabilityProviderCandidate {\n return {\n id: provider.id,\n ...(provider.aliases ? { aliases: provider.aliases } : {}),\n defaultModel: provider.defaultModel ?? null,\n models: provider.models ?? [],\n isConfigured: provider.isConfigured,\n };\n}\n\nfunction buildNoImageGenerationModelConfiguredMessage(\n cfg: Config | undefined,\n deps: ImageGenerationRuntimeDeps,\n): string {\n const list = (deps.listProviders ?? listImageGenerationProviders)(cfg);\n return buildNoCapabilityModelConfiguredMessage({\n capabilityLabel: 'image-generation',\n modelConfigKey: 'imageGenerationModel',\n providers: list.map(toCapabilityCandidate),\n getProviderEnvVars: deps.getProviderEnvVars ?? ((id) => PROVIDER_ENV_MAP[id]),\n });\n}\n\n// Re-export the canonical capability type for callers consuming this barrel.\nexport type { ImageGenerationProviderCapabilities };\n// Re-export the provider-registry surface that gateway routes / CLI consume\n// through this single barrel module. NOTE: `listImageGenerationProvidersSummary`\n// is implemented locally above (it overlays cfg-aware `configured` flags), so\n// it must not be re-exported from the registry to avoid a name clash.\nexport {\n getImageGenerationProvider,\n listImageGenerationProviders,\n} from './provider-registry.js';\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-helpers.js","names":[],"sources":["../../../../src/agent/image/image-helpers.ts"],"sourcesContent":["import type { AgentToolResult } from '@earendil-works/pi-agent-core';\nimport type { AssistantMessage } from '@earendil-works/pi-ai';\nimport type { Config } from '../../config/schema.js';\nimport { extractTextContent } from '../context/workspace.js';\nimport type { ImageAttempt } from './image-model-fallback.js';\nimport { coerceToolModelConfig, type ToolModelConfig } from './tool-model-config.js';\n\nexport type ImageModelConfig = ToolModelConfig;\n\nexport function decodeDataUrl(dataUrl: string): {\n buffer: Buffer;\n mimeType: string;\n kind: 'image';\n} {\n const trimmed = dataUrl.trim();\n const match = /^data:([^;,]+);base64,([a-z0-9+/=\\r\\n]+)$/i.exec(trimmed);\n if (!match) {\n throw new Error('Invalid data URL (expected base64 data: URL).');\n }\n const mimeType = (match[1] ?? '').trim().toLowerCase();\n if (!mimeType.startsWith('image/')) {\n throw new Error(`Unsupported data URL type: ${mimeType || 'unknown'}`);\n }\n const b64 = (match[2] ?? '').trim();\n const buffer = Buffer.from(b64, 'base64');\n if (buffer.length === 0) {\n throw new Error('Invalid data URL: empty payload.');\n }\n return { buffer, mimeType, kind: 'image' };\n}\n\nexport function coerceImageAssistantText(params: {\n message: AssistantMessage;\n provider: string;\n model: string;\n}): string {\n const stop = params.message.stopReason;\n const errorMessage = params.message.errorMessage?.trim();\n if (stop === 'error' || stop === 'aborted') {\n throw new Error(\n errorMessage\n ? `Image model failed (${params.provider}/${params.model}): ${errorMessage}`\n : `Image model failed (${params.provider}/${params.model})`,\n );\n }\n if (errorMessage) {\n throw new Error(`Image model failed (${params.provider}/${params.model}): ${errorMessage}`);\n }\n const text = extractTextContent(\n params.message.content as Array<{ type: string; text?: string }>,\n );\n if (text.trim()) {\n return text.trim();\n }\n throw new Error(`Image model returned no text (${params.provider}/${params.model}).`);\n}\n\nexport function coerceImageModelConfig(_cfg?: Config): ImageModelConfig {\n return coerceToolModelConfig(undefined);\n}\n\nexport function applyImageGenerationModelConfigDefaults(\n cfg: Config | undefined,\n imageGenerationModelConfig: ToolModelConfig,\n): Config | undefined {\n if (!cfg) {\n return undefined;\n }\n const primary = imageGenerationModelConfig.primary?.trim();\n if (!primary) {\n return cfg;\n }\n return cfg;\n}\n\nexport function resolvePromptAndModelOverride(\n args: Record<string, unknown>,\n defaultPrompt: string,\n): {\n prompt: string;\n modelOverride?: string;\n} {\n const prompt =\n typeof args.prompt === 'string' && args.prompt.trim() ? args.prompt.trim() : defaultPrompt;\n const modelOverride =\n typeof args.model === 'string' && args.model.trim() ? args.model.trim() : undefined;\n return { prompt, modelOverride };\n}\n\nexport function buildImageToolTextResult(\n result: { text: string; provider: string; model: string; attempts: ImageAttempt[] },\n extraDetails: Record<string, unknown>,\n): AgentToolResult<Record<string, unknown>> {\n return {\n content: [{ type: 'text', text: result.text }],\n details: {\n model: `${result.provider}/${result.model}`,\n ...extraDetails,\n attempts: result.attempts,\n },\n };\n}\n"],"mappings":";;;AASA,SAAgB,cAAc,SAI5B;CACA,MAAM,UAAU,QAAQ,MAAM;CAC9B,MAAM,QAAQ,6CAA6C,KAAK,QAAQ;AACxE,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,gDAAgD;CAElE,MAAM,YAAY,MAAM,MAAM,IAAI,MAAM,CAAC,aAAa;AACtD,KAAI,CAAC,SAAS,WAAW,SAAS,CAChC,OAAM,IAAI,MAAM,8BAA8B,YAAY,YAAY;CAExE,MAAM,OAAO,MAAM,MAAM,IAAI,MAAM;CACnC,MAAM,SAAS,OAAO,KAAK,KAAK,SAAS;AACzC,KAAI,OAAO,WAAW,EACpB,OAAM,IAAI,MAAM,mCAAmC;AAErD,QAAO;EAAE;EAAQ;EAAU,MAAM;EAAS;;AAG5C,SAAgB,yBAAyB,QAI9B;CACT,MAAM,OAAO,OAAO,QAAQ;CAC5B,MAAM,eAAe,OAAO,QAAQ,cAAc,MAAM;AACxD,KAAI,SAAS,WAAW,SAAS,UAC/B,OAAM,IAAI,MACR,eACI,uBAAuB,OAAO,SAAS,GAAG,OAAO,MAAM,KAAK,iBAC5D,uBAAuB,OAAO,SAAS,GAAG,OAAO,MAAM,GAC5D;AAEH,KAAI,aACF,OAAM,IAAI,MAAM,uBAAuB,OAAO,SAAS,GAAG,OAAO,MAAM,KAAK,eAAe;CAE7F,MAAM,OAAO,mBACX,OAAO,QAAQ,QAChB;AACD,KAAI,KAAK,MAAM,CACb,QAAO,KAAK,MAAM;AAEpB,OAAM,IAAI,MAAM,iCAAiC,OAAO,SAAS,GAAG,OAAO,MAAM,IAAI;;AAGvF,SAAgB,uBAAuB,MAAiC;AACtE,QAAO,sBAAsB,KAAA,EAAU;;AAGzC,SAAgB,wCACd,KACA,4BACoB;AACpB,KAAI,CAAC,IACH;AAGF,KAAI,CADY,2BAA2B,SAAS,MAAM,CAExD,QAAO;AAET,QAAO;;AAGT,SAAgB,8BACd,MACA,eAIA;AAKA,QAAO;EAAE,QAHP,OAAO,KAAK,WAAW,YAAY,KAAK,OAAO,MAAM,GAAG,KAAK,OAAO,MAAM,GAAG;EAG9D,eADf,OAAO,KAAK,UAAU,YAAY,KAAK,MAAM,MAAM,GAAG,KAAK,MAAM,MAAM,GAAG,KAAA;EAC5C;;AAGlC,SAAgB,yBACd,QACA,cAC0C;AAC1C,QAAO;EACL,SAAS,CAAC;GAAE,MAAM;GAAQ,MAAM,OAAO;GAAM,CAAC;EAC9C,SAAS;GACP,OAAO,GAAG,OAAO,SAAS,GAAG,OAAO;GACpC,GAAG;GACH,UAAU,OAAO;GAClB;EACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-model-fallback.js","names":[],"sources":["../../../../src/agent/image/image-model-fallback.ts"],"sourcesContent":["import type { ToolModelConfig } from './tool-model-config.js';\n\nexport type ImageAttempt = { provider: string; model: string; error: string };\n\nfunction collectModelRefs(params: {\n toolConfig: ToolModelConfig;\n modelOverride?: string;\n}): string[] {\n const refs: string[] = [];\n const add = (raw: string | undefined) => {\n const t = raw?.trim();\n if (t?.includes('/')) {\n refs.push(t);\n }\n };\n add(params.modelOverride);\n add(params.toolConfig.primary);\n for (const f of params.toolConfig.fallbacks ?? []) {\n add(f);\n }\n const seen = new Set<string>();\n const out: string[] = [];\n for (const r of refs) {\n if (!seen.has(r)) {\n seen.add(r);\n out.push(r);\n }\n }\n return out;\n}\n\nexport async function runWithImageModelFallback<T>(params: {\n toolConfig: ToolModelConfig;\n modelOverride?: string;\n run: (modelRef: string) => Promise<T>;\n}): Promise<{ result: T; attempts: ImageAttempt[] }> {\n const refs = collectModelRefs({\n toolConfig: params.toolConfig,\n modelOverride: params.modelOverride,\n });\n if (refs.length === 0) {\n throw new Error(\n 'No image-capable model is available.',\n );\n }\n\n const attempts: ImageAttempt[] = [];\n let lastErr: unknown;\n\n for (const modelRef of refs) {\n try {\n const result = await params.run(modelRef);\n return { result, attempts };\n } catch (err) {\n lastErr = err;\n const msg = err instanceof Error ? err.message : String(err);\n const slash = modelRef.indexOf('/');\n attempts.push({\n provider: slash > 0 ? modelRef.slice(0, slash) : modelRef,\n model: slash > 0 ? modelRef.slice(slash + 1) : '',\n error: msg,\n });\n }\n }\n\n const summary = attempts.map((a) => `${a.provider}/${a.model}: ${a.error}`).join(' | ');\n throw new Error(\n `All image models failed (${attempts.length}): ${summary || (lastErr instanceof Error ? lastErr.message : String(lastErr))}`,\n );\n}\n"],"mappings":";AAIA,SAAS,iBAAiB,QAGb;CACX,MAAM,OAAiB,EAAE;CACzB,MAAM,OAAO,QAA4B;EACvC,MAAM,IAAI,KAAK,MAAM;AACrB,MAAI,GAAG,SAAS,IAAI,CAClB,MAAK,KAAK,EAAE;;AAGhB,KAAI,OAAO,cAAc;AACzB,KAAI,OAAO,WAAW,QAAQ;AAC9B,MAAK,MAAM,KAAK,OAAO,WAAW,aAAa,EAAE,CAC/C,KAAI,EAAE;CAER,MAAM,uBAAO,IAAI,KAAa;CAC9B,MAAM,MAAgB,EAAE;AACxB,MAAK,MAAM,KAAK,KACd,KAAI,CAAC,KAAK,IAAI,EAAE,EAAE;AAChB,OAAK,IAAI,EAAE;AACX,MAAI,KAAK,EAAE;;AAGf,QAAO;;AAGT,eAAsB,0BAA6B,QAIE;CACnD,MAAM,OAAO,iBAAiB;EAC5B,YAAY,OAAO;EACnB,eAAe,OAAO;EACvB,CAAC;AACF,KAAI,KAAK,WAAW,EAClB,OAAM,IAAI,MACR,uCACD;CAGH,MAAM,WAA2B,EAAE;CACnC,IAAI;AAEJ,MAAK,MAAM,YAAY,KACrB,KAAI;AAEF,SAAO;GAAE,QAAA,MADY,OAAO,IAAI,SAAS;GACxB;GAAU;UACpB,KAAK;AACZ,YAAU;EACV,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;EAC5D,MAAM,QAAQ,SAAS,QAAQ,IAAI;AACnC,WAAS,KAAK;GACZ,UAAU,QAAQ,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG;GACjD,OAAO,QAAQ,IAAI,SAAS,MAAM,QAAQ,EAAE,GAAG;GAC/C,OAAO;GACR,CAAC;;CAIN,MAAM,UAAU,SAAS,KAAK,MAAM,GAAG,EAAE,SAAS,GAAG,EAAE,MAAM,IAAI,EAAE,QAAQ,CAAC,KAAK,MAAM;AACvF,OAAM,IAAI,MACR,4BAA4B,SAAS,OAAO,KAAK,YAAY,mBAAmB,QAAQ,QAAQ,UAAU,OAAO,QAAQ,IAC1H"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbound-image-handling.js","names":[],"sources":["../../../../src/agent/image/inbound-image-handling.ts"],"sourcesContent":["import type { Config } from '../../config/schema.js';\nimport { describeImagesWithFallback } from './understanding/runtime.js';\nimport { resolveImageModelConfigForTool } from './tool-model-config.js';\nimport { resolveImageHandlingStrategy } from './vision-detection.js';\n\nexport async function resolveInboundImageContentParts(params: {\n modelRef: string;\n cfg?: Config;\n agentId?: string;\n userTextForContext: string;\n images: Array<{ data: string; mimeType: string }>;\n}): Promise<Array<{ type: 'image'; data: string; mimeType: string } | { type: 'text'; text: string }>> {\n const strategy = resolveImageHandlingStrategy(params.modelRef);\n if (strategy === 'native') {\n return params.images.map((att) => ({\n type: 'image' as const,\n data: att.data,\n mimeType: att.mimeType,\n }));\n }\n\n const toolCfg = resolveImageModelConfigForTool({ cfg: params.cfg, agentId: params.agentId });\n const primary = toolCfg?.primary;\n const fallbacks = toolCfg?.fallbacks ?? [];\n\n if (!primary) {\n return [\n {\n type: 'text' as const,\n text: `[${params.images.length} image(s) attached; no image-capable model is available to describe them.]`,\n },\n ];\n }\n\n try {\n const buffers = params.images.map((att) => ({\n buffer: Buffer.from(att.data, 'base64'),\n mimeType: att.mimeType,\n }));\n const prompt = params.userTextForContext.trim()\n ? `Describe these images in the context of the user's message: \"${params.userTextForContext}\"`\n : 'Describe these images in detail.';\n const result = await describeImagesWithFallback({\n modelRef: primary,\n fallbacks,\n images: buffers,\n prompt,\n maxTokens: 1024,\n timeoutMs: 30_000,\n });\n return [{ type: 'text' as const, text: `[Image description: ${result.text}]` }];\n } catch (err) {\n return [\n {\n type: 'text' as const,\n text: `[${params.images.length} image(s) attached but could not be described: ${err instanceof Error ? err.message : String(err)}]`,\n },\n ];\n }\n}\n"],"mappings":";;;;AAKA,eAAsB,gCAAgC,QAMiD;AAErG,KADiB,6BAA6B,OAAO,SACzC,KAAK,SACf,QAAO,OAAO,OAAO,KAAK,SAAS;EACjC,MAAM;EACN,MAAM,IAAI;EACV,UAAU,IAAI;EACf,EAAE;CAGL,MAAM,UAAU,+BAA+B;EAAE,KAAK,OAAO;EAAK,SAAS,OAAO;EAAS,CAAC;CAC5F,MAAM,UAAU,SAAS;CACzB,MAAM,YAAY,SAAS,aAAa,EAAE;AAE1C,KAAI,CAAC,QACH,QAAO,CACL;EACE,MAAM;EACN,MAAM,IAAI,OAAO,OAAO,OAAO;EAChC,CACF;AAGH,KAAI;AAgBF,SAAO,CAAC;GAAE,MAAM;GAAiB,MAAM,wBAAuB,MARzC,2BAA2B;IAC9C,UAAU;IACV;IACA,QAVc,OAAO,OAAO,KAAK,SAAS;KAC1C,QAAQ,OAAO,KAAK,IAAI,MAAM,SAAS;KACvC,UAAU,IAAI;KACf,EAOgB;IACf,QAPa,OAAO,mBAAmB,MAAM,GAC3C,gEAAgE,OAAO,mBAAmB,KAC1F;IAMF,WAAW;IACX,WAAW;IACZ,CAAC,EACmE,KAAK;GAAI,CAAC;UACxE,KAAK;AACZ,SAAO,CACL;GACE,MAAM;GACN,MAAM,IAAI,OAAO,OAAO,OAAO,iDAAiD,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI,CAAC;GAClI,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"load-image-media.js","names":["fs"],"sources":["../../../../src/agent/image/load-image-media.ts"],"sourcesContent":["import { promises as fs } from 'node:fs';\nimport { homedir } from 'node:os';\nimport path from 'node:path';\nimport { checkFileSafety } from '../prompt/safety.js';\nimport { decodeDataUrl } from './image-helpers.js';\n\nexport type LoadedImage = { buffer: Buffer; mimeType: string };\n\nfunction expandUser(p: string): string {\n if (p.startsWith('~/') || p === '~') {\n return path.join(homedir(), p.slice(1));\n }\n return p;\n}\n\nfunction isPathUnderRoots(resolved: string, roots: string[]): boolean {\n const norm = path.normalize(resolved);\n for (const root of roots) {\n const r = path.normalize(root);\n if (norm === r || norm.startsWith(r + path.sep)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Load image bytes from a data URL, http(s) URL, or local path.\n * Local paths must stay under `workspace` or `localRoots` when provided.\n */\nexport async function loadImageForToolInput(\n rawInput: string,\n opts: {\n maxBytes: number;\n workspace: string;\n localRoots?: string[];\n },\n): Promise<LoadedImage> {\n const trimmed = rawInput.trim();\n const input = trimmed.startsWith('@') ? trimmed.slice(1).trim() : trimmed;\n if (!input) {\n throw new Error('empty image reference');\n }\n\n const looksLikeWindowsDrive = /^[a-zA-Z]:[\\\\/]/.test(input);\n const hasScheme = /^[a-z][a-z0-9+.-]*:/i.test(input);\n const isFileUrl = /^file:/i.test(input);\n const isHttpUrl = /^https?:\\/\\//i.test(input);\n const isDataUrl = /^data:/i.test(input);\n\n if (hasScheme && !looksLikeWindowsDrive && !isFileUrl && !isHttpUrl && !isDataUrl) {\n throw new Error(\n `Unsupported image reference: ${rawInput}. Use a file path, file://, data:, or http(s) URL.`,\n );\n }\n\n if (isDataUrl) {\n const d = decodeDataUrl(input);\n if (d.buffer.length > opts.maxBytes) {\n throw new Error(`Image too large (${d.buffer.length} bytes, max ${opts.maxBytes})`);\n }\n return { buffer: d.buffer, mimeType: d.mimeType };\n }\n\n if (isHttpUrl) {\n const res = await fetch(input, { redirect: 'follow' });\n if (!res.ok) {\n throw new Error(`Failed to fetch image: HTTP ${res.status}`);\n }\n const buf = Buffer.from(await res.arrayBuffer());\n if (buf.length > opts.maxBytes) {\n throw new Error(`Image too large (${buf.length} bytes, max ${opts.maxBytes})`);\n }\n const ct = res.headers.get('content-type') || 'image/png';\n return { buffer: buf, mimeType: ct.split(';')[0]?.trim() || 'image/png' };\n }\n\n let filePath = input;\n if (isFileUrl) {\n filePath = input.slice('file://'.length);\n }\n filePath = expandUser(filePath);\n if (!path.isAbsolute(filePath)) {\n filePath = path.resolve(opts.workspace, filePath);\n } else {\n filePath = path.normalize(filePath);\n }\n\n const safety = checkFileSafety('read', filePath);\n if (!safety.allowed) {\n throw new Error(safety.message ?? 'File path not allowed');\n }\n\n const roots = [...(opts.localRoots ?? []), opts.workspace].filter(Boolean);\n const realPath = await fs.realpath(filePath).catch(() => filePath);\n const workspaceReal = await fs.realpath(opts.workspace).catch(() => opts.workspace);\n const resolvedRoots = await Promise.all(roots.map((r) => fs.realpath(r).catch(() => r)));\n if (!isPathUnderRoots(realPath, [workspaceReal, ...resolvedRoots])) {\n throw new Error(`Path not under workspace or allowed roots: ${filePath}`);\n }\n\n const st = await fs.stat(realPath);\n if (!st.isFile()) {\n throw new Error(`Not a file: ${filePath}`);\n }\n if (st.size > opts.maxBytes) {\n throw new Error(`Image too large (${st.size} bytes, max ${opts.maxBytes})`);\n }\n\n const buffer = await fs.readFile(realPath);\n const ext = path.extname(realPath).toLowerCase();\n const mime =\n ext === '.png'\n ? 'image/png'\n : ext === '.jpg' || ext === '.jpeg'\n ? 'image/jpeg'\n : ext === '.gif'\n ? 'image/gif'\n : ext === '.webp'\n ? 'image/webp'\n : 'image/png';\n\n return { buffer, mimeType: mime };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-model-config.js","names":[],"sources":["../../../../src/agent/image/tool-model-config.ts"],"sourcesContent":["import type { AgentModelConfig, Config } from '../../config/schema.js';\nimport {\n getAgentDefaultImageModelConfig,\n getAgentDefaultModelRef,\n parseModelRef,\n} from '../../config/schema.js';\nimport { resolveEffectiveAgentManifestForAgent } from '../../config/agent-profile.js';\nimport {\n resolveAgentModelFallbackValues,\n resolveAgentModelPrimaryValue,\n} from '../../config/model-input.js';\nimport { resolveDefaultAgentId } from '../agent-scope.js';\nimport {\n getDefaultModelSync,\n getModelsByProvider,\n isProviderConfiguredSync,\n resolveModel,\n} from '../../providers/index.js';\n\nexport type ToolModelConfig = {\n primary?: string;\n fallbacks?: string[];\n timeoutMs?: number;\n autoProviderFallback?: boolean;\n};\n\nexport type ImageModelResolutionSource = 'explicit' | 'auto-role' | 'auto-provider' | 'none';\n\nexport type ResolvedImageModelConfig = ToolModelConfig & {\n source: ImageModelResolutionSource;\n roleId?: string;\n roleDescription?: string;\n};\n\nexport function hasToolModelConfig(model: ToolModelConfig | undefined): boolean {\n return Boolean(\n model?.primary?.trim() || (model?.fallbacks ?? []).some((entry) => entry.trim().length > 0),\n );\n}\n\nexport function resolveDefaultModelRef(cfg?: Config): { provider: string; model: string } {\n const ref = cfg ? getAgentDefaultModelRef(cfg) : undefined;\n if (ref) {\n const p = parseModelRef(ref);\n if (p) {\n return p;\n }\n }\n const fallback = getDefaultModelSync(cfg);\n const p2 = parseModelRef(fallback);\n if (p2) {\n return p2;\n }\n return { provider: 'deepseek', model: 'deepseek-v4-flash' };\n}\n\nexport function coerceToolModelConfig(model?: AgentModelConfig): ToolModelConfig {\n const primary = resolveAgentModelPrimaryValue(model);\n const fallbacks = resolveAgentModelFallbackValues(model);\n return {\n ...(primary?.trim() ? { primary: primary.trim() } : {}),\n ...(fallbacks.length > 0 ? { fallbacks } : {}),\n };\n}\n\nfunction resolveEffectiveModelsConfig(params: {\n cfg?: Config;\n agentId?: string;\n}): {\n defaultRole?: string;\n roles?: Record<string, { model: string; fallbacks?: string[]; description?: string }>;\n imageModel?: AgentModelConfig;\n} | undefined {\n if (!params.cfg) {\n return undefined;\n }\n try {\n const agentId = params.agentId?.trim() || resolveDefaultAgentId(params.cfg);\n return resolveEffectiveAgentManifestForAgent(params.cfg, agentId).models;\n } catch {\n return undefined;\n }\n}\n\nexport function resolveConfiguredImageModelConfig(params: {\n cfg?: Config;\n agentId?: string;\n}): ToolModelConfig {\n const models = resolveEffectiveModelsConfig(params);\n const config = models?.imageModel ?? (params.cfg ? getAgentDefaultImageModelConfig(params.cfg) : undefined);\n return coerceToolModelConfig(config);\n}\n\nfunction modelRefSupportsImage(modelRef: string): boolean {\n try {\n return resolveModel(modelRef).input?.includes('image') === true;\n } catch {\n return false;\n }\n}\n\nfunction configuredImageModelRef(modelRef: string): string | null {\n const trimmed = modelRef.trim();\n const parsed = parseModelRef(trimmed);\n if (!parsed || !isProviderConfiguredSync(parsed.provider)) {\n return null;\n }\n return modelRefSupportsImage(trimmed) ? trimmed : null;\n}\n\nfunction addCandidate(\n candidates: Array<{ ref: string; roleId?: string; roleDescription?: string }>,\n seen: Set<string>,\n entry: { ref: string; roleId?: string; roleDescription?: string },\n): void {\n const ref = configuredImageModelRef(entry.ref);\n if (!ref || seen.has(ref)) {\n return;\n }\n seen.add(ref);\n candidates.push({\n ref,\n ...(entry.roleId ? { roleId: entry.roleId } : {}),\n ...(entry.roleDescription ? { roleDescription: entry.roleDescription } : {}),\n });\n}\n\nfunction collectRoleImageModelCandidates(params: {\n cfg?: Config;\n agentId?: string;\n}): Array<{ ref: string; roleId?: string; roleDescription?: string }> {\n const models = resolveEffectiveModelsConfig(params);\n const roles = models?.roles ?? {};\n const roleIds = Object.keys(roles);\n if (roleIds.length === 0) {\n return [];\n }\n\n const orderedRoleIds = [\n ...(models?.defaultRole && roles[models.defaultRole] ? [models.defaultRole] : []),\n ...roleIds.filter((roleId) => roleId !== models?.defaultRole),\n ];\n const seen = new Set<string>();\n const candidates: Array<{ ref: string; roleId?: string; roleDescription?: string }> = [];\n\n for (const roleId of orderedRoleIds) {\n const role = roles[roleId];\n if (!role) {\n continue;\n }\n const refs = [role.model, ...(role.fallbacks ?? [])];\n for (const ref of refs) {\n addCandidate(candidates, seen, {\n ref,\n roleId,\n ...(role.description ? { roleDescription: role.description } : {}),\n });\n }\n }\n\n return candidates;\n}\n\nfunction resolveDefaultModelRefForAgent(params: {\n cfg?: Config;\n agentId?: string;\n}): { provider: string; model: string } {\n const models = resolveEffectiveModelsConfig(params);\n const role = models?.defaultRole ? models.roles?.[models.defaultRole] : undefined;\n const ref = role?.model?.trim();\n if (ref) {\n const parsed = parseModelRef(ref);\n if (parsed) {\n return parsed;\n }\n }\n return resolveDefaultModelRef(params.cfg);\n}\n\nexport function buildToolModelConfigFromCandidates(params: {\n explicit: ToolModelConfig;\n candidates: Array<string | null | undefined>;\n source?: ImageModelResolutionSource;\n}): ResolvedImageModelConfig | null {\n if (hasToolModelConfig(params.explicit)) {\n return { ...params.explicit, source: 'explicit' };\n }\n\n const deduped: string[] = [];\n for (const candidate of params.candidates) {\n const trimmed = candidate?.trim();\n if (!trimmed || !trimmed.includes('/')) {\n continue;\n }\n const provider = trimmed.slice(0, trimmed.indexOf('/')).trim();\n if (!provider || !isProviderConfiguredSync(provider)) {\n continue;\n }\n if (!deduped.includes(trimmed)) {\n deduped.push(trimmed);\n }\n }\n\n if (deduped.length === 0) {\n return null;\n }\n\n return {\n primary: deduped[0],\n ...(deduped.length > 1 ? { fallbacks: deduped.slice(1) } : {}),\n source: params.source ?? 'auto-provider',\n };\n}\n\nfunction firstVisionModelRef(provider: string): string | undefined {\n const m = getModelsByProvider(provider).find((x) => x.input?.includes('image'));\n return m ? `${provider}/${m.id}` : undefined;\n}\n\n/**\n * Effective image understanding model inferred from configured providers.\n */\nexport function resolveEffectiveImageModelConfig(params: {\n cfg?: Config;\n agentId?: string;\n}): ResolvedImageModelConfig | null {\n const explicit = resolveConfiguredImageModelConfig(params);\n if (hasToolModelConfig(explicit)) {\n return { ...explicit, source: 'explicit' };\n }\n\n const roleCandidates = collectRoleImageModelCandidates(params);\n if (roleCandidates.length > 0) {\n const [first, ...rest] = roleCandidates;\n return {\n primary: first!.ref,\n ...(rest.length > 0 ? { fallbacks: rest.map((entry) => entry.ref) } : {}),\n source: 'auto-role',\n ...(first!.roleId ? { roleId: first!.roleId } : {}),\n ...(first!.roleDescription ? { roleDescription: first!.roleDescription } : {}),\n };\n }\n\n const primary = resolveDefaultModelRefForAgent(params);\n const primaryCandidates: string[] = [];\n const vision = firstVisionModelRef(primary.provider);\n if (vision) {\n primaryCandidates.push(vision);\n }\n\n return buildToolModelConfigFromCandidates({\n explicit,\n candidates: [\n ...primaryCandidates,\n firstVisionModelRef('openai'),\n firstVisionModelRef('anthropic'),\n ],\n source: 'auto-provider',\n });\n}\n\nexport function resolveImageModelConfigForTool(params: {\n cfg?: Config;\n agentId?: string;\n}): ResolvedImageModelConfig | null {\n return resolveEffectiveImageModelConfig(params);\n}\n"],"mappings":"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"}