@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":"runtime.js","names":[],"sources":["../../../../src/agent/code-intelligence/runtime.ts"],"sourcesContent":["import { mkdirSync } from 'node:fs';\nimport { isAbsolute, join, relative, resolve, sep } from 'node:path';\n\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\nimport type { Config } from '../../config/schema.js';\nimport { resolveStateDir } from '../../config/paths.js';\nimport { createLogger } from '../../utils/logger.js';\nimport { XopcStdioClientTransport } from '../mcp/mcp-stdio-transport.js';\nimport { ensureCodebaseMemoryBinary } from './binary.js';\nimport type {\n CodeIntelligenceRuntimeLike,\n CodeIntelligenceState,\n CodeIntelligenceStatus,\n CodeIntelligenceToolResult,\n} from './types.js';\n\nconst log = createLogger('CodeIntelligence');\n\ntype JsonRecord = Record<string, unknown>;\n\nfunction deriveProjectName(workspace: string): string {\n return workspace\n .replace(/^[\\\\/]+/, '')\n .replace(/[\\\\/:]+/g, '-')\n .replace(/-+/g, '-')\n .replace(/^-|-$/g, '');\n}\n\nfunction timeout<T>(promise: Promise<T>, timeoutMs: number, operation: string): Promise<T> {\n return new Promise<T>((resolvePromise, reject) => {\n const timer = setTimeout(\n () => reject(new Error(`${operation} timed out after ${timeoutMs}ms`)),\n timeoutMs,\n );\n promise.then(\n (value) => {\n clearTimeout(timer);\n resolvePromise(value);\n },\n (error) => {\n clearTimeout(timer);\n reject(error);\n },\n );\n });\n}\n\nfunction resultText(result: CallToolResult): string {\n const parts: string[] = [];\n for (const item of result.content ?? []) {\n if (item.type === 'text' && typeof item.text === 'string') {\n parts.push(item.text);\n }\n }\n return parts.join('\\n').trim();\n}\n\nfunction parseJsonRecord(text: string): JsonRecord | undefined {\n try {\n const parsed = JSON.parse(text) as unknown;\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? parsed as JsonRecord\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction abortError(): Error {\n return new DOMException('Code intelligence operation aborted', 'AbortError');\n}\n\nexport class CodeIntelligenceRuntime implements CodeIntelligenceRuntimeLike {\n private readonly workspace: string;\n private readonly project: string;\n private readonly getConfig: () => Config;\n private state: CodeIntelligenceState = 'idle';\n private coverage: CodeIntelligenceStatus['coverage'] = 'unknown';\n private indexedAt: string | undefined;\n private errorMessage: string | undefined;\n private dirtyPaths = new Set<string>();\n private dirtyVersion = 0;\n private refreshTimer: ReturnType<typeof setTimeout> | undefined;\n private connectionPromise: Promise<void> | undefined;\n private indexPromise: Promise<void> | undefined;\n private client: Client | undefined;\n private transport: XopcStdioClientTransport | undefined;\n private availableTools = new Set<string>();\n private disposed = false;\n\n constructor(options: { workspace: string; getConfig: () => Config }) {\n this.workspace = resolve(options.workspace);\n this.project = deriveProjectName(this.workspace);\n this.getConfig = options.getConfig;\n }\n\n getStatus(): CodeIntelligenceStatus {\n return {\n state: this.state,\n workspace: this.workspace,\n project: this.project,\n indexedAt: this.indexedAt,\n dirtyPaths: [...this.dirtyPaths].toSorted(),\n coverage: this.coverage,\n errorMessage: this.errorMessage,\n };\n }\n\n supportsTool(name: string): boolean {\n return this.availableTools.has(name);\n }\n\n async prime(): Promise<void> {\n const config = this.getConfig().codeIntelligence;\n if (!config.enabled || !config.autoIndex || this.disposed) return;\n if (this.indexPromise) return this.indexPromise;\n if (this.indexedAt && this.dirtyPaths.size === 0) return;\n await this.refreshIndex();\n }\n\n markDirty(paths: readonly string[]): void {\n const config = this.getConfig().codeIntelligence;\n if (!config.enabled || !config.autoRefresh || this.disposed) return;\n\n let changed = false;\n for (const input of paths) {\n if (!input?.trim()) continue;\n const absolute = isAbsolute(input) ? resolve(input) : resolve(this.workspace, input);\n const rel = relative(this.workspace, absolute);\n if (!rel || rel === '..' || rel.startsWith(`..${sep}`) || isAbsolute(rel)) continue;\n this.dirtyPaths.add(rel.split(sep).join('/'));\n changed = true;\n }\n if (!changed) return;\n\n this.dirtyVersion += 1;\n if (this.state === 'ready' || this.state === 'degraded') {\n this.state = 'dirty';\n }\n if (this.refreshTimer) clearTimeout(this.refreshTimer);\n this.refreshTimer = setTimeout(() => {\n this.refreshTimer = undefined;\n void this.refreshIndex().catch(() => {});\n }, config.refreshDebounceMs);\n this.refreshTimer.unref?.();\n }\n\n async callTool(\n toolNames: string | readonly string[],\n input: Record<string, unknown>,\n signal?: AbortSignal,\n ): Promise<CodeIntelligenceToolResult> {\n if (signal?.aborted) throw abortError();\n const config = this.getConfig().codeIntelligence;\n if (!config.enabled) {\n throw new Error('Code intelligence is disabled');\n }\n\n if (\n config.autoIndex &&\n (this.indexedAt === undefined || this.state === 'idle' || this.dirtyPaths.size > 0)\n ) {\n await this.refreshIndex();\n } else {\n await this.ensureConnected();\n }\n if (signal?.aborted) throw abortError();\n\n const names = typeof toolNames === 'string' ? [toolNames] : [...toolNames];\n const toolName = names.find((name) => this.availableTools.has(name));\n if (!toolName) {\n throw new Error(`CBM does not expose a supported tool: ${names.join(' or ')}`);\n }\n const result = await this.callRaw(toolName, input, config.queryTimeoutMs);\n const text = resultText(result);\n if (result.isError) {\n throw new Error(text || `CBM ${toolName} failed`);\n }\n return { text, status: this.getStatus() };\n }\n\n private async ensureConnected(): Promise<void> {\n if (this.disposed) throw new Error('Code intelligence runtime is disposed');\n if (this.client && this.transport) return;\n if (this.connectionPromise) return this.connectionPromise;\n\n this.connectionPromise = (async () => {\n this.state = 'connecting';\n const config = this.getConfig().codeIntelligence;\n const binary = await ensureCodebaseMemoryBinary(config.binaryPath);\n const cacheDir = join(resolveStateDir(), 'code-intelligence', 'cbm');\n mkdirSync(cacheDir, { recursive: true });\n const transport = new XopcStdioClientTransport({\n command: binary,\n cwd: this.workspace,\n env: {\n CBM_ALLOWED_ROOT: this.workspace,\n CBM_CACHE_DIR: cacheDir,\n CBM_LOG_LEVEL: process.env.XOPC_LOG_LEVEL === 'debug' ? 'debug' : 'warn',\n },\n stderr: 'pipe',\n });\n const client = new Client({ name: 'xopc-code-intelligence', version: '1.0.0' });\n transport.stderr?.on('data', (chunk: Buffer | string) => {\n for (const line of String(chunk).split(/\\r?\\n/)) {\n if (line.trim()) log.debug({ workspace: this.workspace }, `CBM: ${line.trim()}`);\n }\n });\n\n try {\n await timeout(client.connect(transport), 30_000, 'CBM connection');\n const toolNames = new Set<string>();\n let cursor: string | undefined;\n do {\n const page = await timeout(\n client.listTools(cursor ? { cursor } : undefined),\n 20_000,\n 'CBM tool discovery',\n );\n for (const tool of page.tools) toolNames.add(tool.name);\n cursor = page.nextCursor;\n } while (cursor);\n this.client = client;\n this.transport = transport;\n this.availableTools = toolNames;\n this.state = this.dirtyPaths.size > 0 ? 'dirty' : 'idle';\n this.errorMessage = undefined;\n log.info(\n { workspace: this.workspace, project: this.project, toolCount: this.availableTools.size },\n 'Code intelligence runtime connected',\n );\n } catch (error) {\n await transport.close().catch(() => {});\n await client.close().catch(() => {});\n throw error;\n }\n })();\n\n try {\n await this.connectionPromise;\n } catch (error) {\n this.state = 'unavailable';\n this.errorMessage = error instanceof Error ? error.message : String(error);\n log.warn(\n { err: error, workspace: this.workspace, project: this.project },\n `Code intelligence unavailable: ${this.errorMessage}`,\n );\n throw error;\n } finally {\n this.connectionPromise = undefined;\n }\n }\n\n private async refreshIndex(): Promise<void> {\n if (this.disposed) throw new Error('Code intelligence runtime is disposed');\n if (this.indexPromise) return this.indexPromise;\n\n const versionAtStart = this.dirtyVersion;\n this.indexPromise = (async () => {\n await this.ensureConnected();\n const config = this.getConfig().codeIntelligence;\n this.state = 'indexing';\n const result = await this.callRaw(\n 'index_repository',\n {\n repo_path: this.workspace,\n name: this.project,\n mode: config.indexMode,\n persistence: false,\n },\n config.indexTimeoutMs,\n );\n const text = resultText(result);\n const parsed = parseJsonRecord(text);\n const resultStatus = typeof parsed?.status === 'string' ? parsed.status : 'indexed';\n if (result.isError || resultStatus === 'error') {\n throw new Error(text || 'CBM indexing failed');\n }\n\n this.indexedAt = new Date().toISOString();\n this.coverage = resultStatus === 'degraded' ? 'partial' : 'unknown';\n this.errorMessage = undefined;\n if (versionAtStart === this.dirtyVersion) {\n this.dirtyPaths.clear();\n this.state = resultStatus === 'degraded' ? 'degraded' : 'ready';\n } else {\n this.state = 'dirty';\n }\n log.info(\n {\n workspace: this.workspace,\n project: this.project,\n indexMode: config.indexMode,\n status: resultStatus,\n dirtyPaths: this.dirtyPaths.size,\n },\n 'Code intelligence index refreshed',\n );\n })();\n\n try {\n await this.indexPromise;\n } catch (error) {\n this.state = 'degraded';\n this.coverage = 'unknown';\n this.errorMessage = error instanceof Error ? error.message : String(error);\n log.warn(\n { err: error, workspace: this.workspace, project: this.project },\n `Code intelligence indexing failed: ${this.errorMessage}`,\n );\n throw error;\n } finally {\n this.indexPromise = undefined;\n if (!this.disposed && this.dirtyPaths.size > 0 && versionAtStart !== this.dirtyVersion) {\n queueMicrotask(() => void this.refreshIndex().catch(() => {}));\n }\n }\n }\n\n private async callRaw(\n toolName: string,\n input: Record<string, unknown>,\n timeoutMs: number,\n ): Promise<CallToolResult> {\n await this.ensureConnected();\n if (!this.client) throw new Error('CBM client is not connected');\n if (!this.availableTools.has(toolName)) {\n throw new Error(`CBM tool is unavailable: ${toolName}`);\n }\n try {\n return await timeout(\n this.client.callTool({ name: toolName, arguments: input }) as Promise<CallToolResult>,\n timeoutMs,\n `CBM ${toolName}`,\n );\n } catch (error) {\n this.state = 'unavailable';\n this.errorMessage = error instanceof Error ? error.message : String(error);\n await this.resetConnection();\n throw error;\n }\n }\n\n private async resetConnection(): Promise<void> {\n const transport = this.transport;\n const client = this.client;\n this.transport = undefined;\n this.client = undefined;\n this.availableTools.clear();\n await client?.close().catch(() => {});\n await transport?.close().catch(() => {});\n }\n\n async dispose(): Promise<void> {\n if (this.disposed) return;\n this.disposed = true;\n this.state = 'disposed';\n if (this.refreshTimer) clearTimeout(this.refreshTimer);\n this.refreshTimer = undefined;\n await this.resetConnection();\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.js","names":[],"sources":["../../../../src/agent/code-intelligence/tools.ts"],"sourcesContent":["import { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport { Type } from '@sinclair/typebox';\n\nimport type {\n CodeIntelligenceRuntimeLike,\n CodeIntelligenceStatus,\n CodeIntelligenceToolResult,\n} from './types.js';\n\nexport interface CodeIntelligenceToolDeps {\n getRuntime: () => CodeIntelligenceRuntimeLike;\n}\n\ntype ToolDetails = { codeIntelligence: CodeIntelligenceStatus };\nconst execFileAsync = promisify(execFile);\n\nfunction statusHeader(status: CodeIntelligenceStatus): string {\n const fields = [\n `project=${status.project}`,\n `freshness=${status.state}`,\n `coverage=${status.coverage}`,\n ];\n if (status.indexedAt) fields.push(`indexedAt=${status.indexedAt}`);\n if (status.dirtyPaths.length > 0) fields.push(`dirtyPaths=${status.dirtyPaths.length}`);\n return `[Code intelligence: ${fields.join(', ')}]`;\n}\n\nfunction success(result: CodeIntelligenceToolResult): AgentToolResult<ToolDetails> {\n return {\n content: [{ type: 'text', text: `${statusHeader(result.status)}\\n${result.text}`.trim() }],\n details: { codeIntelligence: result.status },\n };\n}\n\nfunction failure(error: unknown, runtime: CodeIntelligenceRuntimeLike): AgentToolResult<ToolDetails> {\n const status = runtime.getStatus();\n const message = error instanceof Error ? error.message : String(error);\n return {\n content: [{\n type: 'text',\n text: `${statusHeader(status)}\\nCode intelligence failed: ${message}\\nUse grep/find/read_file for direct source inspection and do not infer absence from the graph.`,\n }],\n details: { codeIntelligence: status },\n };\n}\n\nfunction searchWasEmpty(text: string): boolean {\n try {\n const parsed = JSON.parse(text) as { total?: unknown };\n return parsed.total === 0;\n } catch {\n return /(?:^|\\n)total:\\s*0(?:\\n|$)/.test(text);\n }\n}\n\nfunction escapeCypherString(value: string): string {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\");\n}\n\nfunction normalizeDetectChangesResult(\n result: CodeIntelligenceToolResult,\n limit: number,\n): CodeIntelligenceToolResult {\n try {\n const parsed = JSON.parse(result.text) as Record<string, unknown>;\n if (!Array.isArray(parsed.changed_files)) return result;\n const changedFiles = [...new Set(parsed.changed_files.filter(\n (file): file is string => typeof file === 'string',\n ))];\n const impactedSymbols = Array.isArray(parsed.impacted_symbols)\n ? parsed.impacted_symbols\n : [];\n const impactedSymbolCount = impactedSymbols.length;\n return {\n ...result,\n text: JSON.stringify({\n ...parsed,\n changed_files: changedFiles,\n changed_count: changedFiles.length,\n impacted_symbols: impactedSymbols.slice(0, limit),\n impacted_symbol_count: impactedSymbolCount,\n impacted_symbols_truncated: impactedSymbolCount > limit,\n }),\n };\n } catch {\n return result;\n }\n}\n\nasync function changedFilesForImpact(params: {\n workspace: string;\n since?: string;\n baseBranch?: string;\n scope?: string;\n}): Promise<string[]> {\n const args = ['diff', '--name-only'];\n if (params.baseBranch) {\n args.push(`${params.baseBranch}...HEAD`);\n } else {\n args.push(params.since ?? 'HEAD');\n }\n args.push('--');\n if (params.scope) args.push(params.scope);\n const untrackedArgs = ['ls-files', '--others', '--exclude-standard', '--'];\n if (params.scope) untrackedArgs.push(params.scope);\n const [diff, untracked] = await Promise.all([\n execFileAsync('git', args, {\n cwd: params.workspace,\n timeout: 20_000,\n maxBuffer: 1024 * 1024,\n }),\n execFileAsync('git', untrackedArgs, {\n cwd: params.workspace,\n timeout: 20_000,\n maxBuffer: 1024 * 1024,\n }),\n ]);\n return [...new Set(`${diff.stdout}\\n${untracked.stdout}`\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter(Boolean))].slice(0, 100);\n}\n\nasync function queryImpactCompatibility(\n runtime: CodeIntelligenceRuntimeLike,\n params: { since?: string; baseBranch?: string; scope?: string; depth?: number; limit?: number },\n signal?: AbortSignal,\n): Promise<CodeIntelligenceToolResult> {\n const status = runtime.getStatus();\n const files = await changedFilesForImpact({\n workspace: status.workspace,\n since: params.since,\n baseBranch: params.baseBranch,\n scope: params.scope,\n });\n if (files.length === 0) {\n return { text: 'No changed files found for the requested Git comparison.', status };\n }\n const predicate = files\n .map((file) => `changed.file_path = '${escapeCypherString(file)}'`)\n .join(' OR ');\n const depth = Math.max(1, Math.min(5, Math.floor(params.depth ?? 3)));\n const limit = Math.max(1, Math.min(500, Math.floor(params.limit ?? 100)));\n const query = [\n 'MATCH (changed)',\n `WHERE ${predicate}`,\n `OPTIONAL MATCH (caller)-[:CALLS*1..${depth}]->(changed)`,\n 'RETURN DISTINCT changed.qualified_name AS changed_symbol, changed.file_path AS changed_file,',\n 'caller.qualified_name AS affected_caller, caller.file_path AS affected_file',\n `LIMIT ${limit}`,\n ].join(' ');\n const result = await runtime.callTool('query_graph', {\n project: status.project,\n query,\n max_rows: limit,\n }, signal);\n return {\n ...result,\n text: `Changed files (${files.length}):\\n${files.join('\\n')}\\n\\nGraph impact:\\n${result.text}`,\n };\n}\n\nfunction buildTool<T extends Record<string, unknown>>(options: {\n name: string;\n description: string;\n parameters: ReturnType<typeof Type.Object>;\n run: (runtime: CodeIntelligenceRuntimeLike, params: T, signal?: AbortSignal) => Promise<CodeIntelligenceToolResult>;\n deps: CodeIntelligenceToolDeps;\n}): AgentTool {\n return {\n name: options.name,\n label: options.name,\n description: options.description,\n parameters: options.parameters,\n supportsParallel: true,\n idempotent: true,\n async execute(_toolCallId, params, signal) {\n const runtime = options.deps.getRuntime();\n try {\n return success(await options.run(runtime, params as T, signal));\n } catch (error) {\n return failure(error, runtime);\n }\n },\n } as AgentTool;\n}\n\nconst SearchSchema = Type.Object({\n query: Type.String({ description: 'Natural-language intent or symbol keywords' }),\n label: Type.Optional(Type.String({ description: 'Optional graph label such as Function, Method, Class, Interface, or Route' })),\n filePattern: Type.Optional(Type.String({ description: 'Optional file/path pattern to narrow the search' })),\n semanticKeywords: Type.Optional(Type.Array(Type.String(), { description: 'Optional semantic concepts; use 2-4 concise terms' })),\n limit: Type.Optional(Type.Number({ description: 'Maximum results, default 20' })),\n});\n\nconst ReadSymbolSchema = Type.Object({\n qualifiedName: Type.String({ description: 'Exact qualified_name returned by code_search' }),\n includeNeighbors: Type.Optional(Type.Boolean({ description: 'Include nearby source context' })),\n});\n\nconst TraceSchema = Type.Object({\n functionName: Type.String({ description: 'Exact or unambiguous function/method name' }),\n direction: Type.Optional(Type.Union([\n Type.Literal('inbound'),\n Type.Literal('outbound'),\n Type.Literal('both'),\n ])),\n depth: Type.Optional(Type.Number({ description: 'Traversal depth, default 3' })),\n mode: Type.Optional(Type.Union([\n Type.Literal('calls'),\n Type.Literal('data_flow'),\n Type.Literal('cross_service'),\n ])),\n parameterName: Type.Optional(Type.String({ description: 'Parameter to follow in data_flow mode' })),\n includeTests: Type.Optional(Type.Boolean()),\n riskLabels: Type.Optional(Type.Boolean()),\n});\n\nconst ImpactSchema = Type.Object({\n since: Type.Optional(Type.String({ description: 'Git ref or date, for example HEAD~1 or a tag' })),\n baseBranch: Type.Optional(Type.String({ description: 'Base branch for comparison' })),\n scope: Type.Optional(Type.String({ description: 'Optional file or directory scope' })),\n depth: Type.Optional(Type.Number({ description: 'Impact traversal depth, default 3' })),\n limit: Type.Optional(Type.Number({ description: 'Maximum impacted symbols, default 100, maximum 500' })),\n});\n\nconst ArchitectureSchema = Type.Object({\n aspects: Type.Optional(Type.Array(Type.String(), {\n description: 'Optional aspects such as packages, boundaries, layers, entry_points, hotspots, or clusters',\n })),\n});\n\nexport function createCodeIntelligenceTools(deps: CodeIntelligenceToolDeps): AgentTool[] {\n return [\n buildTool({\n name: 'code_search',\n description: 'Search the repository knowledge graph for definitions, implementations, routes, types, and structurally important symbols. Prefer this over grep for code discovery.',\n parameters: SearchSchema,\n deps,\n run: async (runtime, params: {\n query: string;\n label?: string;\n filePattern?: string;\n semanticKeywords?: string[];\n limit?: number;\n }, signal) => {\n const graphResult = await runtime.callTool('search_graph', {\n project: runtime.getStatus().project,\n query: params.query,\n ...(params.label ? { label: params.label } : {}),\n ...(params.filePattern ? { file_pattern: params.filePattern } : {}),\n ...(params.semanticKeywords?.length ? { semantic_query: params.semanticKeywords } : {}),\n limit: params.limit ?? 20,\n }, signal);\n if (!searchWasEmpty(graphResult.text)) return graphResult;\n const textResult = await runtime.callTool('search_code', {\n project: runtime.getStatus().project,\n pattern: params.query,\n ...(params.filePattern ? { path_filter: params.filePattern } : {}),\n mode: 'compact',\n limit: params.limit ?? 20,\n }, signal);\n return {\n ...textResult,\n text: `No graph symbol matched; graph-augmented text fallback:\\n${textResult.text}`,\n };\n },\n }),\n buildTool({\n name: 'code_read_symbol',\n description: 'Read the exact source for a symbol returned by code_search. Use this to ground graph results in current source before editing.',\n parameters: ReadSymbolSchema,\n deps,\n run: (runtime, params: { qualifiedName: string; includeNeighbors?: boolean }, signal) =>\n runtime.callTool('get_code_snippet', {\n project: runtime.getStatus().project,\n qualified_name: params.qualifiedName,\n include_neighbors: params.includeNeighbors ?? false,\n }, signal),\n }),\n buildTool({\n name: 'code_trace',\n description: 'Trace callers, callees, data flow, or cross-service paths for a function or method.',\n parameters: TraceSchema,\n deps,\n run: (runtime, params: {\n functionName: string;\n direction?: 'inbound' | 'outbound' | 'both';\n depth?: number;\n mode?: 'calls' | 'data_flow' | 'cross_service';\n parameterName?: string;\n includeTests?: boolean;\n riskLabels?: boolean;\n }, signal) => runtime.callTool(['trace_path', 'trace_call_path'], {\n project: runtime.getStatus().project,\n function_name: params.functionName,\n direction: params.direction ?? 'both',\n depth: params.depth ?? 3,\n mode: params.mode ?? 'calls',\n ...(params.parameterName ? { parameter_name: params.parameterName } : {}),\n include_tests: params.includeTests ?? false,\n risk_labels: params.riskLabels ?? false,\n }, signal),\n }),\n buildTool({\n name: 'code_impact',\n description: 'Map the current git diff or a git range to changed symbols, callers, and blast radius before or after edits.',\n parameters: ImpactSchema,\n deps,\n run: async (runtime, params: { since?: string; baseBranch?: string; scope?: string; depth?: number; limit?: number }, signal) => {\n const limit = Math.max(1, Math.min(500, Math.floor(params.limit ?? 100)));\n if (runtime.supportsTool('detect_changes')) {\n const result = await runtime.callTool('detect_changes', {\n project: runtime.getStatus().project,\n ...(params.since || !params.baseBranch ? { since: params.since ?? 'HEAD' } : {}),\n ...(params.baseBranch ? { base_branch: params.baseBranch } : {}),\n ...(params.scope ? { scope: params.scope } : {}),\n depth: params.depth ?? 3,\n }, signal);\n return normalizeDetectChangesResult(result, limit);\n }\n return queryImpactCompatibility(runtime, params, signal);\n },\n }),\n buildTool({\n name: 'code_architecture',\n description: 'Get a compact repository architecture map including packages, boundaries, layers, entry points, hotspots, and graph-derived clusters.',\n parameters: ArchitectureSchema,\n deps,\n run: (runtime, params: { aspects?: string[] }, signal) => runtime.callTool('get_architecture', {\n project: runtime.getStatus().project,\n ...(params.aspects?.length ? { aspects: params.aspects } : {}),\n }, signal),\n }),\n ];\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"turn-diff-tracker.js","names":[],"sources":["../../../../src/agent/coding/turn-diff-tracker.ts"],"sourcesContent":["export type WorkspaceMutationKind = 'add' | 'update' | 'delete' | 'move' | 'rewrite' | 'unknown';\n\nexport interface TurnFileChange {\n kind: WorkspaceMutationKind;\n path: string;\n moveTo?: string;\n added?: number;\n removed?: number;\n diff?: string;\n toolName: string;\n at: number;\n}\n\nexport interface TurnVerificationRecord {\n toolName: string;\n command?: string;\n success: boolean;\n status?: string;\n exitCode?: number | null;\n timedOut?: boolean;\n}\n\nexport interface TurnDiffState {\n sessionKey: string;\n turnId: string;\n changedFiles: string[];\n changes: TurnFileChange[];\n cumulativeDiff: string;\n added: number;\n removed: number;\n dirty: boolean;\n dirtyReason?: string;\n diffReviewed: boolean;\n verificationAttempted: boolean;\n lastVerification?: TurnVerificationRecord;\n}\n\nconst DEFAULT_TURN_ID = 'default';\n\nfunction createState(sessionKey: string, turnId = DEFAULT_TURN_ID): TurnDiffState {\n return {\n sessionKey,\n turnId,\n changedFiles: [],\n changes: [],\n cumulativeDiff: '',\n added: 0,\n removed: 0,\n dirty: false,\n diffReviewed: false,\n verificationAttempted: false,\n };\n}\n\nfunction readRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === 'object' ? (value as Record<string, unknown>) : null;\n}\n\nfunction readDetails(result: unknown): Record<string, unknown> | null {\n const rec = readRecord(result);\n return readRecord(rec?.details);\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() ? value : undefined;\n}\n\nfunction readNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\nfunction readExitCode(value: unknown): number | null | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n if (value === null) return null;\n return undefined;\n}\n\nfunction readStringArray(value: unknown): string[] {\n return Array.isArray(value) ? value.filter((item): item is string => typeof item === 'string' && item.trim().length > 0) : [];\n}\n\nfunction uniqueSorted(values: Iterable<string>): string[] {\n return Array.from(new Set(Array.from(values).filter(Boolean))).sort();\n}\n\nfunction extractExecCommand(args?: unknown, result?: unknown): string {\n const argRec = readRecord(args);\n const fromArgs = readString(argRec?.cmd) ?? readString(argRec?.command);\n if (fromArgs) return fromArgs;\n const details = readDetails(result);\n return readString(details?.command) ?? '';\n}\n\nfunction isDiffReviewCommand(command: string): boolean {\n return /\\bgit\\s+(diff|status)\\b/i.test(command);\n}\n\nfunction isVerificationCommand(command: string): boolean {\n return /\\b(test|vitest|jest|mocha|ava|playwright|typecheck|type-check|tsc|build|lint)\\b/i.test(command);\n}\n\nfunction commandMayMutateWorkspace(command: string): boolean {\n return /\\b(sed\\s+-i|perl\\s+-pi|rm\\s+|mv\\s+|cp\\s+|git\\s+(checkout|reset|clean|apply|merge|rebase)|writeFile|write\\(|open\\([^)]*['\"]w['\"])/i.test(command);\n}\n\nfunction execSuccess(isError: boolean | undefined, result: unknown): boolean {\n if (isError) return false;\n const details = readDetails(result);\n if (!details) return false;\n if (details.timedOut === true) return false;\n if (details.status === 'success') return true;\n return details.exitCode === 0;\n}\n\nfunction appendSection(lines: string[], title: string, body: string[]): void {\n if (body.length === 0) return;\n lines.push(title, ...body);\n}\n\nexport class TurnDiffTracker {\n private readonly states = new Map<string, TurnDiffState>();\n\n beginTurn(sessionKey: string, turnId = `${Date.now()}`): void {\n this.states.set(sessionKey, createState(sessionKey, turnId));\n }\n\n getState(sessionKey: string): TurnDiffState {\n const state = this.states.get(sessionKey) ?? createState(sessionKey);\n return {\n ...state,\n changedFiles: [...state.changedFiles],\n changes: state.changes.map((change) => ({ ...change })),\n lastVerification: state.lastVerification ? { ...state.lastVerification } : undefined,\n };\n }\n\n reset(sessionKey: string): void {\n this.states.delete(sessionKey);\n }\n\n recordToolResult(input: {\n sessionKey: string;\n toolName: string;\n args?: unknown;\n result?: unknown;\n isError?: boolean;\n }): void {\n if (input.isError) return;\n const name = input.toolName.toLowerCase();\n if (name === 'apply_patch') {\n this.recordApplyPatch(input.sessionKey, input.toolName, input.result);\n return;\n }\n if (name === 'write_file') {\n this.recordWriteFile(input.sessionKey, input.toolName, input.args, input.result);\n return;\n }\n if (name === 'exec_command') {\n this.recordExecCommand(input.sessionKey, input.toolName, input.args, input.result, input.isError);\n }\n }\n\n recordMutation(input: { sessionKey: string; toolName: string; changes: TurnFileChange[] }): void {\n const state = this.mutableState(input.sessionKey);\n for (const change of input.changes) {\n state.changes.push({ ...change, toolName: input.toolName });\n state.added += change.added ?? 0;\n state.removed += change.removed ?? 0;\n if (change.diff) {\n state.cumulativeDiff = [state.cumulativeDiff.trimEnd(), change.diff.trimEnd()]\n .filter(Boolean)\n .join('\\n');\n }\n }\n state.changedFiles = uniqueSorted([\n ...state.changedFiles,\n ...input.changes.flatMap((change) => [change.path, change.moveTo].filter(Boolean) as string[]),\n ]);\n }\n\n recordDiffReviewed(sessionKey: string): void {\n this.mutableState(sessionKey).diffReviewed = true;\n }\n\n recordVerification(input: {\n sessionKey: string;\n toolName: string;\n command?: string;\n success: boolean;\n status?: string;\n exitCode?: number | null;\n timedOut?: boolean;\n }): void {\n const state = this.mutableState(input.sessionKey);\n state.verificationAttempted = true;\n state.lastVerification = {\n toolName: input.toolName,\n command: input.command,\n success: input.success,\n status: input.status,\n exitCode: input.exitCode,\n timedOut: input.timedOut,\n };\n }\n\n markDirty(sessionKey: string, reason: string): void {\n const state = this.mutableState(sessionKey);\n state.dirty = true;\n state.dirtyReason = reason;\n }\n\n buildFinalGuardContext(sessionKey: string): string {\n const state = this.states.get(sessionKey);\n if (!state) return '';\n const hasChanges = state.changedFiles.length > 0 || state.changes.length > 0 || state.dirty;\n if (!hasChanges) return '';\n\n const needsDiff = !state.diffReviewed;\n const needsVerification = !state.verificationAttempted;\n const failedVerification = state.lastVerification && !state.lastVerification.success;\n if (!needsDiff && !needsVerification && !failedVerification) return '';\n\n const lines: string[] = ['## Coding final check reminder'];\n if (state.changedFiles.length > 0) {\n appendSection(lines, 'This turn changed workspace files:', state.changedFiles.map((file) => `- ${file}`));\n }\n if (state.dirty && needsDiff) {\n lines.push(`A command may have modified the workspace${state.dirtyReason ? `: ${state.dirtyReason}` : '.'}`);\n }\n const actions: string[] = [];\n if (needsDiff) actions.push('- Inspect the diff/status with `git_status` before final response.');\n if (needsVerification) actions.push('- Run the smallest meaningful verification command if feasible.');\n if (failedVerification) {\n const v = state.lastVerification!;\n actions.push(`- Last verification failed${v.command ? `: ${v.command}` : ''}. Do not claim success until fixed or clearly report the blocker.`);\n }\n actions.push('- If skipping verification, say why in the final answer.');\n appendSection(lines, 'Before final response:', actions);\n return lines.join('\\n');\n }\n\n private mutableState(sessionKey: string): TurnDiffState {\n let state = this.states.get(sessionKey);\n if (!state) {\n state = createState(sessionKey);\n this.states.set(sessionKey, state);\n }\n return state;\n }\n\n private recordApplyPatch(sessionKey: string, toolName: string, result: unknown): void {\n const details = readDetails(result);\n if (!details) return;\n const now = Date.now();\n const rawChanges = Array.isArray(details.changes) ? details.changes : [];\n const changes: TurnFileChange[] = rawChanges.flatMap((raw) => {\n const rec = readRecord(raw);\n const path = readString(rec?.path);\n if (!path) return [];\n return [{\n kind: (readString(rec?.kind) as WorkspaceMutationKind | undefined) ?? 'update',\n path,\n moveTo: readString(rec?.moveTo),\n added: readNumber(rec?.added),\n removed: readNumber(rec?.removed),\n diff: readString(rec?.diff),\n toolName,\n at: now,\n }];\n });\n if (changes.length === 0) {\n const files = readStringArray(details.files);\n for (const file of files) {\n changes.push({ kind: 'unknown', path: file, toolName, at: now });\n }\n }\n this.recordMutation({ sessionKey, toolName, changes });\n const state = this.mutableState(sessionKey);\n state.added = readNumber(details.added) ?? state.added;\n state.removed = readNumber(details.removed) ?? state.removed;\n const diff = readString(details.diff);\n if (diff && !state.cumulativeDiff.includes(diff.trim())) {\n state.cumulativeDiff = [state.cumulativeDiff.trimEnd(), diff.trimEnd()].filter(Boolean).join('\\n');\n }\n }\n\n private recordWriteFile(sessionKey: string, toolName: string, args: unknown, result: unknown): void {\n const details = readDetails(result);\n if (typeof details?.size !== 'number') return;\n const path = readString(readRecord(args)?.path);\n if (!path) return;\n this.recordMutation({\n sessionKey,\n toolName,\n changes: [{ kind: 'rewrite', path, toolName, at: Date.now() }],\n });\n this.markDirty(sessionKey, '`write_file` rewrote file content without a captured unified diff');\n }\n\n private recordExecCommand(sessionKey: string, toolName: string, args: unknown, result: unknown, isError?: boolean): void {\n const command = extractExecCommand(args, result);\n const details = readDetails(result);\n if (command && isDiffReviewCommand(command)) {\n this.recordDiffReviewed(sessionKey);\n }\n if (command && isVerificationCommand(command)) {\n this.recordVerification({\n sessionKey,\n toolName,\n command,\n success: execSuccess(isError, result),\n status: readString(details?.status),\n exitCode: readExitCode(details?.exitCode),\n timedOut: details?.timedOut === true,\n });\n }\n if (command && commandMayMutateWorkspace(command)) {\n this.markDirty(sessionKey, `exec_command may have changed files: ${command.slice(0, 120)}`);\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"expand-at-file-mentions.js","names":[],"sources":["../../../../src/agent/context/expand-at-file-mentions.ts"],"sourcesContent":["import { readFile, readdir, stat } from 'node:fs/promises';\n\nimport { resolveWorkspaceSafePath } from '../../gateway/workspace-editor-path.js';\n\n/** Aligned with web `file-wire-pattern.ts`: unquoted path or quoted for spaces. */\nconst QUOTED_INNER = String.raw`((?:[^\"\\\\]|\\\\.)*)`;\nconst UNQUOTED = String.raw`[a-zA-Z0-9_./\\-\\p{L}\\p{N}]+`;\nconst FILE_RE = new RegExp(`@file:(?:\"${QUOTED_INNER}\"|(${UNQUOTED}))`, 'gu');\n\nconst MAX_PATH_BYTES = 50_000;\nconst MAX_DIR_ENTRIES = 120;\n\ninterface TokenHit {\n start: number;\n end: number;\n value: string;\n}\n\nfunction pathFromFileWireExec(m: RegExpExecArray): string {\n const unquoted = m[2];\n if (unquoted != null && unquoted !== '') return unquoted;\n const q = m[1];\n return q != null ? q.replace(/\\\\(.)/g, (_: string, ch: string) => ch) : '';\n}\n\nfunction escapeXmlAttr(s: string): string {\n return s.replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;');\n}\n\nfunction collectFileTokens(text: string): TokenHit[] {\n const out: TokenHit[] = [];\n const r = new RegExp(FILE_RE.source, 'gu');\n let m: RegExpExecArray | null;\n while ((m = r.exec(text)) !== null) {\n const v = pathFromFileWireExec(m).trim();\n if (v) out.push({ start: m.index, end: m.index + m[0].length, value: v });\n }\n return out;\n}\n\nasync function workspacePathSnippet(rel: string, workspaceRoot: string): Promise<string> {\n const abs = resolveWorkspaceSafePath(workspaceRoot, rel);\n if (!abs) return '[invalid path]';\n try {\n const st = await stat(abs);\n if (st.isDirectory()) {\n const entries = await readdir(abs, { withFileTypes: true });\n const lines = entries\n .filter((e) => !e.name.startsWith('.'))\n .slice(0, MAX_DIR_ENTRIES)\n .map((e) => `${e.isDirectory() ? '(dir)' : '(file)'} ${e.name}`)\n .join('\\n');\n return `[directory, first ${MAX_DIR_ENTRIES} non-hidden entries]\\n${lines}`;\n }\n if (st.isFile()) {\n const buf = await readFile(abs);\n const s = buf.toString('utf8');\n return s.length > MAX_PATH_BYTES ? `${s.slice(0, MAX_PATH_BYTES)}\\n\\n[... truncated ...]` : s;\n }\n return '[not a file or directory]';\n } catch {\n return '[unreadable or missing]';\n }\n}\n\n/**\n * Prepend `<file path=\"…\">` blocks for `@file:` references before the raw user text.\n */\nexport async function expandAtFileMentionsInPlainText(text: string, workspaceRoot: string): Promise<string> {\n if (!text.includes('@file:')) return text;\n const tokens = collectFileTokens(text);\n if (tokens.length === 0) return text;\n\n const seen = new Set<string>();\n const blocks: string[] = [];\n\n for (const t of tokens) {\n if (seen.has(t.value)) continue;\n seen.add(t.value);\n const body = await workspacePathSnippet(t.value, workspaceRoot);\n blocks.push(`<file path=\"${escapeXmlAttr(t.value)}\">\\n${body}\\n</file>`);\n }\n\n if (blocks.length === 0) return text;\n return `${blocks.join('\\n\\n')}\\n\\n${text}`;\n}\n"],"mappings":";;;;AAKA,MAAM,eAAe,OAAO,GAAG;AAC/B,MAAM,WAAW,OAAO,GAAG;AAC3B,MAAM,UAAU,IAAI,OAAO,aAAa,aAAa,KAAK,SAAS,KAAK,KAAK;AAE7E,MAAM,iBAAiB;AACvB,MAAM,kBAAkB;AAQxB,SAAS,qBAAqB,GAA4B;CACxD,MAAM,WAAW,EAAE;AACnB,KAAI,YAAY,QAAQ,aAAa,GAAI,QAAO;CAChD,MAAM,IAAI,EAAE;AACZ,QAAO,KAAK,OAAO,EAAE,QAAQ,WAAW,GAAW,OAAe,GAAG,GAAG;;AAG1E,SAAS,cAAc,GAAmB;AACxC,QAAO,EAAE,QAAQ,MAAM,QAAQ,CAAC,QAAQ,MAAM,SAAS,CAAC,QAAQ,MAAM,OAAO;;AAG/E,SAAS,kBAAkB,MAA0B;CACnD,MAAM,MAAkB,EAAE;CAC1B,MAAM,IAAI,IAAI,OAAO,QAAQ,QAAQ,KAAK;CAC1C,IAAI;AACJ,SAAQ,IAAI,EAAE,KAAK,KAAK,MAAM,MAAM;EAClC,MAAM,IAAI,qBAAqB,EAAE,CAAC,MAAM;AACxC,MAAI,EAAG,KAAI,KAAK;GAAE,OAAO,EAAE;GAAO,KAAK,EAAE,QAAQ,EAAE,GAAG;GAAQ,OAAO;GAAG,CAAC;;AAE3E,QAAO;;AAGT,eAAe,qBAAqB,KAAa,eAAwC;CACvF,MAAM,MAAM,yBAAyB,eAAe,IAAI;AACxD,KAAI,CAAC,IAAK,QAAO;AACjB,KAAI;EACF,MAAM,KAAK,MAAM,KAAK,IAAI;AAC1B,MAAI,GAAG,aAAa,CAOlB,QAAO,qBAAqB,gBAAgB,yBAL9B,MADQ,QAAQ,KAAK,EAAE,eAAe,MAAM,CAAC,EAExD,QAAQ,MAAM,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,CACtC,MAAM,GAAG,gBAAgB,CACzB,KAAK,MAAM,GAAG,EAAE,aAAa,GAAG,UAAU,SAAS,GAAG,EAAE,OAAO,CAC/D,KAAK,KACiE;AAE3E,MAAI,GAAG,QAAQ,EAAE;GAEf,MAAM,KAAI,MADQ,SAAS,IAAI,EACjB,SAAS,OAAO;AAC9B,UAAO,EAAE,SAAS,iBAAiB,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC,2BAA2B;;AAE9F,SAAO;SACD;AACN,SAAO;;;;;;AAOX,eAAsB,gCAAgC,MAAc,eAAwC;AAC1G,KAAI,CAAC,KAAK,SAAS,SAAS,CAAE,QAAO;CACrC,MAAM,SAAS,kBAAkB,KAAK;AACtC,KAAI,OAAO,WAAW,EAAG,QAAO;CAEhC,MAAM,uBAAO,IAAI,KAAa;CAC9B,MAAM,SAAmB,EAAE;AAE3B,MAAK,MAAM,KAAK,QAAQ;AACtB,MAAI,KAAK,IAAI,EAAE,MAAM,CAAE;AACvB,OAAK,IAAI,EAAE,MAAM;EACjB,MAAM,OAAO,MAAM,qBAAqB,EAAE,OAAO,cAAc;AAC/D,SAAO,KAAK,eAAe,cAAc,EAAE,MAAM,CAAC,MAAM,KAAK,WAAW;;AAG1E,KAAI,OAAO,WAAW,EAAG,QAAO;AAChC,QAAO,GAAG,OAAO,KAAK,OAAO,CAAC,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-context.js","names":[],"sources":["../../../../src/agent/context/project-context.ts"],"sourcesContent":["import { GoalService, type GoalWithDetails } from '../../goals/index.js';\nimport { LocalAppStore } from '../../local-apps/store.js';\nimport {\n getProjectForSession,\n getProjectWorkspacePathForSession,\n} from '../../projects/workspace.js';\nimport type { Project } from '../../projects/types.js';\nimport { ProjectStore } from '../../projects/project-store.js';\nimport { listMemoryRecords } from '../../storage/sqlite/index.js';\nimport { sanitizeForPromptLiteral } from '../prompt/sanitize-for-prompt.js';\n\nconst MAX_TEXT = 1200;\nconst MAX_GOALS = 5;\nconst MAX_SESSIONS = 5;\nconst MAX_MEMORY = 5;\n\nfunction truncateText(value: string | undefined, max = MAX_TEXT): string | undefined {\n const trimmed = value?.trim();\n if (!trimmed) return undefined;\n if (trimmed.length <= max) return trimmed;\n return `${trimmed.slice(0, max - 1).trimEnd()}...`;\n}\n\nfunction formatGoal(goal: GoalWithDetails): string {\n const parts = [`- ${sanitizeForPromptLiteral(goal.title)}`, `status=${goal.status}`, `priority=${goal.priority}`];\n if (goal.nextAction?.trim()) {\n parts.push(`next=${sanitizeForPromptLiteral(truncateText(goal.nextAction, 200) ?? '')}`);\n }\n if (goal.blockedReason?.trim()) {\n parts.push(`blocked=${sanitizeForPromptLiteral(truncateText(goal.blockedReason, 200) ?? '')}`);\n }\n return parts.join(' | ');\n}\n\nexport function buildActiveProjectContextForPrompt(sessionKey: string): string | undefined {\n const project = getProjectForSession(sessionKey);\n if (!project) return undefined;\n const localAppStore = new LocalAppStore();\n const localApp = localAppStore.findByProjectId(project.id);\n const latestAcceptance = localApp ? localAppStore.listAcceptanceRuns(localApp.id, 1)[0] : undefined;\n return formatActiveProjectContextForPrompt({\n project,\n workspacePath: getProjectWorkspacePathForSession(sessionKey) ?? project.workspaceRoot,\n activeGoals: new GoalService().list({\n projectId: project.id,\n status: ['active', 'paused', 'blocked', 'needs_input'],\n limit: MAX_GOALS,\n }),\n recentSessions: new ProjectStore().getRecentSessions(project.id, MAX_SESSIONS),\n memoryRecords: listMemoryRecords({\n projectId: project.id,\n status: 'active',\n limit: MAX_MEMORY,\n }),\n localApp: localApp ? {\n extensionId: localApp.extensionId,\n draftVersion: localApp.draftVersion,\n activeVersion: localApp.activeVersion,\n installationState: localApp.installationState,\n enabled: localApp.enabled,\n retainedVersions: localAppStore.listReleases(localApp.id).map((release) => release.version),\n latestAcceptance: latestAcceptance ? {\n status: latestAcceptance.status,\n sourceHash: latestAcceptance.sourceHash,\n failures: latestAcceptance.checks\n .filter((check) => check.status === 'failed')\n .map((check) => check.message),\n createdAt: latestAcceptance.createdAt,\n } : undefined,\n } : undefined,\n });\n}\n\nexport function formatActiveProjectContextForPrompt(input: {\n project: Project;\n workspacePath?: string;\n activeGoals: GoalWithDetails[];\n recentSessions: Array<{ key: string; name?: string; updatedAt: string; agentId: string }>;\n memoryRecords?: Array<{ kind: string; content: string; updatedAt: string }>;\n localApp?: {\n extensionId: string;\n draftVersion: number;\n activeVersion?: number;\n installationState: 'not_installed' | 'installed';\n enabled: boolean;\n retainedVersions: number[];\n latestAcceptance?: {\n status: 'passed' | 'failed';\n sourceHash: string;\n failures: string[];\n createdAt: number;\n };\n };\n}): string {\n const lines: string[] = [\n '# Active Project',\n '',\n `Project: ${sanitizeForPromptLiteral(input.project.name)}`,\n `Status: ${input.project.status}`,\n ];\n\n const workspace = input.workspacePath?.trim();\n if (workspace) {\n lines.push(`Workspace root: ${sanitizeForPromptLiteral(workspace)}`);\n lines.push('This project session uses the project workspace. Do not switch working directories unless the user moves the session to another project.');\n }\n\n const brief = truncateText(input.project.brief ?? input.project.description);\n if (brief) {\n lines.push('', '## Brief', brief);\n }\n\n const instructions = truncateText(input.project.instructions);\n if (instructions) {\n lines.push(\n '',\n '## Project Instructions',\n 'Follow these project-level instructions unless they conflict with higher-priority system, developer, safety, or direct user instructions.',\n instructions,\n );\n }\n\n if (input.localApp) {\n const retained = input.localApp.retainedVersions.length\n ? input.localApp.retainedVersions.map((version) => `v${version}`).join(', ')\n : 'none';\n lines.push(\n '',\n '## Local App Runtime',\n `Extension id: ${sanitizeForPromptLiteral(input.localApp.extensionId)}`,\n `Draft version: v${input.localApp.draftVersion}`,\n `Installed version: ${input.localApp.activeVersion ? `v${input.localApp.activeVersion}` : 'none'}`,\n `Installation: ${input.localApp.installationState} | enabled=${String(input.localApp.enabled)}`,\n `Retained releases: ${retained}`,\n input.localApp.latestAcceptance\n ? `Latest acceptance: ${input.localApp.latestAcceptance.status} | source=${sanitizeForPromptLiteral(input.localApp.latestAcceptance.sourceHash.slice(0, 12))} | checked=${new Date(input.localApp.latestAcceptance.createdAt).toISOString()}`\n : 'Latest acceptance: none',\n ...(input.localApp.latestAcceptance?.failures.map((failure) => (\n `Acceptance failure: ${sanitizeForPromptLiteral(truncateText(failure, 240) ?? '')}`\n )) ?? []),\n 'Edit only the Project draft. Do not modify installed release artifacts directly; installation and rollback are host-managed.',\n );\n }\n\n lines.push('', '## Active Goals');\n if (input.activeGoals.length === 0) {\n lines.push('- None recorded.');\n } else {\n lines.push(...input.activeGoals.map(formatGoal));\n }\n\n lines.push('', '## Recent Project Sessions');\n if (input.recentSessions.length === 0) {\n lines.push('- None recorded.');\n } else {\n for (const session of input.recentSessions) {\n const label = sanitizeForPromptLiteral(session.name?.trim() || session.key);\n lines.push(`- ${label} | agent=${sanitizeForPromptLiteral(session.agentId)} | updated=${sanitizeForPromptLiteral(session.updatedAt)}`);\n }\n }\n\n lines.push('', '## Project Memory');\n const memoryRecords = input.memoryRecords ?? [];\n if (memoryRecords.length === 0) {\n lines.push('- None recorded.');\n } else {\n for (const record of memoryRecords) {\n const content = sanitizeForPromptLiteral(truncateText(record.content, 240) ?? '');\n lines.push(`- ${sanitizeForPromptLiteral(record.kind)} | updated=${sanitizeForPromptLiteral(record.updatedAt)} | ${content}`);\n }\n }\n\n return lines.join('\\n');\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-seed.js","names":[],"sources":["../../../../src/agent/context/workspace-seed.ts"],"sourcesContent":["/**\n * Seed profile Markdown files into `agents/<agentId>/profile/` (and optionally `git init` the Markdown workspace).\n * Resolution order per file: `XOPC_TEMPLATE_PATH` or repo `docs/reference/templates`, then bundled `./workspace-templates/`.\n */\n\nimport { execFileSync } from 'node:child_process';\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport type { Config } from '../../config/schema.js';\nimport {\n resolveAgentProfileDir,\n resolveAgentWorkspaceDir,\n resolveDefaultAgentId,\n} from '../agent-scope.js';\nimport { WORKSPACE_FILES } from '../../config/paths.js';\nimport { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES } from './workspace.js';\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('WorkspaceSeed');\n\n/** Marker in bundled/reference `IDENTITY.md` templates; replaced on agent creation when a display name is known. */\nexport const IDENTITY_NAME_PLACEHOLDER = '_(pick something you like)_';\n\nexport type SeedWorkspaceProfileMarkdownOptions = {\n /** Fills the **Name** line in `IDENTITY.md` when the template still contains the placeholder. */\n displayName?: string;\n};\n\nconst SEED_FILENAMES: readonly string[] = [...AGENT_PROFILE_MARKDOWN_SYSTEM_FILES];\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nfunction resolveBundledTemplatesDir(): string {\n return join(__dirname, 'workspace-templates');\n}\n\n/** Walk ancestors for `docs/reference/templates` (dev checkout or local install with docs). */\nfunction resolveDocsTemplatesDirFromWalk(): string | null {\n let dir = __dirname;\n for (let i = 0; i < 12; i++) {\n const candidate = join(dir, 'docs', 'reference', 'templates');\n if (existsSync(candidate)) {\n return candidate;\n }\n const parent = dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\n/** Same convention as CLI `templates.ts`: env override, then docs tree, else null. */\nfunction resolvePrimaryTemplatesBaseDir(): string | null {\n const envPath = process.env.XOPC_TEMPLATE_PATH?.trim();\n if (envPath && existsSync(envPath)) {\n return envPath;\n }\n return resolveDocsTemplatesDirFromWalk();\n}\n\nfunction readTemplate(name: string): string | null {\n const primary = resolvePrimaryTemplatesBaseDir();\n if (primary) {\n const p = join(primary, name);\n if (existsSync(p)) {\n return readFileSync(p, 'utf-8');\n }\n }\n const bundled = join(resolveBundledTemplatesDir(), name);\n if (existsSync(bundled)) {\n return readFileSync(bundled, 'utf-8');\n }\n return null;\n}\n\nfunction writeFileIfMissing(targetPath: string, content: string): boolean {\n if (existsSync(targetPath)) {\n return false;\n }\n writeFileSync(targetPath, content, 'utf-8');\n return true;\n}\n\nfunction personalizeIdentityTemplate(content: string, displayName?: string): string {\n const n = displayName?.trim();\n if (!n || !content.includes(IDENTITY_NAME_PLACEHOLDER)) {\n return content;\n }\n return content.replaceAll(IDENTITY_NAME_PLACEHOLDER, n);\n}\n\n/**\n * Seed profile Markdown into `profileDir` (`agents/<id>/profile/`).\n * When `markdownWorkspaceDir` is set, runs `git init` on a brand-new Markdown workspace only (never under `profile/`).\n * Does not overwrite existing files.\n */\nexport function seedAgentProfileMarkdownFiles(\n profileDir: string,\n markdownWorkspaceDir: string,\n options?: SeedWorkspaceProfileMarkdownOptions,\n): void {\n const wsPreExisted = existsSync(markdownWorkspaceDir);\n mkdirSync(profileDir, { recursive: true });\n mkdirSync(markdownWorkspaceDir, { recursive: true });\n\n const isBrandNewWorkspace = !wsPreExisted;\n\n let seeded = 0;\n for (const name of SEED_FILENAMES) {\n const targetPath = join(profileDir, name);\n const tpl = readTemplate(name);\n if (!tpl) {\n log.warn({ name }, 'Missing workspace template file; skip seeding');\n continue;\n }\n const body =\n name === WORKSPACE_FILES.IDENTITY ? personalizeIdentityTemplate(tpl, options?.displayName) : tpl;\n if (writeFileIfMissing(targetPath, body)) {\n seeded++;\n }\n }\n\n if (seeded > 0) {\n log.info({ profileDir, seeded }, 'Seeded profile Markdown files');\n }\n\n ensureGitRepo(markdownWorkspaceDir, isBrandNewWorkspace);\n}\n\n/** Attempt `git init` on a brand-new Markdown workspace; silently skip on failure. */\nfunction ensureGitRepo(markdownWorkspaceDir: string, isBrandNew: boolean): void {\n if (!isBrandNew) {\n return;\n }\n if (existsSync(join(markdownWorkspaceDir, '.git'))) {\n return;\n }\n try {\n execFileSync('git', ['init'], { cwd: markdownWorkspaceDir, stdio: 'ignore', timeout: 5_000 });\n log.info({ markdownWorkspaceDir }, 'Initialized git repo in Markdown workspace');\n } catch {\n log.debug({ markdownWorkspaceDir }, 'git init skipped (git not available or failed)');\n }\n}\n\n/**\n * Ensure default (`main`) agent has reference profile Markdown templates (missing files only).\n */\nexport function seedMainAgentProfileMarkdown(cfg: Config): void {\n const agentId = resolveDefaultAgentId(cfg);\n seedAgentProfileMarkdownFiles(\n resolveAgentProfileDir(cfg, agentId),\n resolveAgentWorkspaceDir(cfg, agentId),\n { displayName: agentId },\n );\n}\n"],"mappings":";;;;;;;;;;;;;;kBAe2B;YAC6B;aAEH;AAErD,MAAM,MAAM,aAAa,gBAAgB;;AAGzC,MAAa,4BAA4B;AAOzC,MAAM,iBAAoC,CAAC,GAAG,oCAAoC;AAElF,MAAM,YAAY,QAAQ,cAAc,OAAO,KAAK,IAAI,CAAC;AAEzD,SAAS,6BAAqC;AAC5C,QAAO,KAAK,WAAW,sBAAsB;;;AAI/C,SAAS,kCAAiD;CACxD,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;EAC3B,MAAM,YAAY,KAAK,KAAK,QAAQ,aAAa,YAAY;AAC7D,MAAI,WAAW,UAAU,CACvB,QAAO;EAET,MAAM,SAAS,QAAQ,IAAI;AAC3B,MAAI,WAAW,IAAK;AACpB,QAAM;;AAER,QAAO;;;AAIT,SAAS,iCAAgD;CACvD,MAAM,UAAU,QAAQ,IAAI,oBAAoB,MAAM;AACtD,KAAI,WAAW,WAAW,QAAQ,CAChC,QAAO;AAET,QAAO,iCAAiC;;AAG1C,SAAS,aAAa,MAA6B;CACjD,MAAM,UAAU,gCAAgC;AAChD,KAAI,SAAS;EACX,MAAM,IAAI,KAAK,SAAS,KAAK;AAC7B,MAAI,WAAW,EAAE,CACf,QAAO,aAAa,GAAG,QAAQ;;CAGnC,MAAM,UAAU,KAAK,4BAA4B,EAAE,KAAK;AACxD,KAAI,WAAW,QAAQ,CACrB,QAAO,aAAa,SAAS,QAAQ;AAEvC,QAAO;;AAGT,SAAS,mBAAmB,YAAoB,SAA0B;AACxE,KAAI,WAAW,WAAW,CACxB,QAAO;AAET,eAAc,YAAY,SAAS,QAAQ;AAC3C,QAAO;;AAGT,SAAS,4BAA4B,SAAiB,aAA8B;CAClF,MAAM,IAAI,aAAa,MAAM;AAC7B,KAAI,CAAC,KAAK,CAAC,QAAQ,SAAA,8BAAmC,CACpD,QAAO;AAET,QAAO,QAAQ,WAAW,2BAA2B,EAAE;;;;;;;AAQzD,SAAgB,8BACd,YACA,sBACA,SACM;CACN,MAAM,eAAe,WAAW,qBAAqB;AACrD,WAAU,YAAY,EAAE,WAAW,MAAM,CAAC;AAC1C,WAAU,sBAAsB,EAAE,WAAW,MAAM,CAAC;CAEpD,MAAM,sBAAsB,CAAC;CAE7B,IAAI,SAAS;AACb,MAAK,MAAM,QAAQ,gBAAgB;EACjC,MAAM,aAAa,KAAK,YAAY,KAAK;EACzC,MAAM,MAAM,aAAa,KAAK;AAC9B,MAAI,CAAC,KAAK;AACR,OAAI,KAAK,EAAE,MAAM,EAAE,gDAAgD;AACnE;;AAIF,MAAI,mBAAmB,YADrB,SAAS,gBAAgB,WAAW,4BAA4B,KAAK,SAAS,YAAY,GAAG,IACvD,CACtC;;AAIJ,KAAI,SAAS,EACX,KAAI,KAAK;EAAE;EAAY;EAAQ,EAAE,gCAAgC;AAGnE,eAAc,sBAAsB,oBAAoB;;;AAI1D,SAAS,cAAc,sBAA8B,YAA2B;AAC9E,KAAI,CAAC,WACH;AAEF,KAAI,WAAW,KAAK,sBAAsB,OAAO,CAAC,CAChD;AAEF,KAAI;AACF,eAAa,OAAO,CAAC,OAAO,EAAE;GAAE,KAAK;GAAsB,OAAO;GAAU,SAAS;GAAO,CAAC;AAC7F,MAAI,KAAK,EAAE,sBAAsB,EAAE,6CAA6C;SAC1E;AACN,MAAI,MAAM,EAAE,sBAAsB,EAAE,iDAAiD;;;;;;AAOzF,SAAgB,6BAA6B,KAAmB;CAC9D,MAAM,UAAU,sBAAsB,IAAI;AAC1C,+BACE,uBAAuB,KAAK,QAAQ,EACpC,yBAAyB,KAAK,QAAQ,EACtC,EAAE,aAAa,SAAS,CACzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-state.js","names":[],"sources":["../../../../src/agent/context/workspace-state.ts"],"sourcesContent":["/**\n * Workspace setup metadata in `<markdownWorkspace>/.xopc/workspace.json`\n * (same path as `resolveWorkspaceStatePath` / `xopc init`).\n */\n\nimport { mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\n\nimport type { Config } from '../../config/schema.js';\nimport { FILENAMES, resolveWorkspaceStatePath } from '../../config/paths.js';\n\nexport { resolveWorkspaceStatePath };\n\nconst WORKSPACE_STATE_VERSION = 1;\n\nexport interface WorkspaceSetupState {\n version: number;\n /** Set by `xopc init` for the agent id owning this workspace. */\n agentId?: string;\n /** ISO timestamp when profile Markdown was first seeded (init / agents add). */\n profileMarkdownSeededAt?: string;\n}\n\nfunction parseWorkspaceState(raw: string): WorkspaceSetupState | null {\n try {\n const parsed = JSON.parse(raw) as Record<string, unknown>;\n if (!parsed || typeof parsed !== 'object') {\n return null;\n }\n return {\n version: WORKSPACE_STATE_VERSION,\n agentId: typeof parsed.agentId === 'string' ? parsed.agentId : undefined,\n profileMarkdownSeededAt:\n typeof parsed.profileMarkdownSeededAt === 'string' ? parsed.profileMarkdownSeededAt : undefined,\n };\n } catch {\n return null;\n }\n}\n\nfunction readWorkspaceState(statePath: string): WorkspaceSetupState {\n try {\n const raw = readFileSync(statePath, 'utf-8');\n return parseWorkspaceState(raw) ?? { version: WORKSPACE_STATE_VERSION };\n } catch (err: unknown) {\n const code = (err as { code?: string }).code;\n if (code !== 'ENOENT') {\n throw err;\n }\n return { version: WORKSPACE_STATE_VERSION };\n }\n}\n\nfunction writeWorkspaceState(statePath: string, patch: Partial<WorkspaceSetupState>): void {\n const merged = { ...readWorkspaceState(statePath), ...patch, version: WORKSPACE_STATE_VERSION };\n mkdirSync(dirname(statePath), { recursive: true });\n writeFileSync(statePath, `${JSON.stringify(merged, null, 2)}\\n`, 'utf-8');\n}\n\n/** Resolve workspace state path when only the Markdown workspace root is known. */\nexport function resolveWorkspaceStatePathForMarkdownWorkspace(markdownWorkspaceDir: string): string {\n return join(markdownWorkspaceDir, '.xopc', FILENAMES.WORKSPACE_STATE);\n}\n\n/** Resolve workspace state path from config + agent id. */\nexport function resolveAgentWorkspaceStatePath(config: Config, agentId: string): string {\n return resolveWorkspaceStatePath(config, agentId);\n}\n\n/** Record profile Markdown seed time (idempotent). */\nexport function markProfileMarkdownSeeded(statePath: string): void {\n const state = readWorkspaceState(statePath);\n if (state.profileMarkdownSeededAt) {\n return;\n }\n writeWorkspaceState(statePath, { profileMarkdownSeededAt: new Date().toISOString() });\n}\n"],"mappings":";;;;;;;;YAS6E;AAI7E,MAAM,0BAA0B;AAUhC,SAAS,oBAAoB,KAAyC;AACpE,KAAI;EACF,MAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,MAAI,CAAC,UAAU,OAAO,WAAW,SAC/B,QAAO;AAET,SAAO;GACL,SAAS;GACT,SAAS,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU,KAAA;GAC/D,yBACE,OAAO,OAAO,4BAA4B,WAAW,OAAO,0BAA0B,KAAA;GACzF;SACK;AACN,SAAO;;;AAIX,SAAS,mBAAmB,WAAwC;AAClE,KAAI;AAEF,SAAO,oBADK,aAAa,WAAW,QACN,CAAC,IAAI,EAAE,SAAS,yBAAyB;UAChE,KAAc;AAErB,MADc,IAA0B,SAC3B,SACX,OAAM;AAER,SAAO,EAAE,SAAS,yBAAyB;;;AAI/C,SAAS,oBAAoB,WAAmB,OAA2C;CACzF,MAAM,SAAS;EAAE,GAAG,mBAAmB,UAAU;EAAE,GAAG;EAAO,SAAS;EAAyB;AAC/F,WAAU,QAAQ,UAAU,EAAE,EAAE,WAAW,MAAM,CAAC;AAClD,eAAc,WAAW,GAAG,KAAK,UAAU,QAAQ,MAAM,EAAE,CAAC,KAAK,QAAQ;;;AAI3E,SAAgB,8CAA8C,sBAAsC;AAClG,QAAO,KAAK,sBAAsB,SAAS,UAAU,gBAAgB;;;AAIvE,SAAgB,+BAA+B,QAAgB,SAAyB;AACtF,QAAO,0BAA0B,QAAQ,QAAQ;;;AAInD,SAAgB,0BAA0B,WAAyB;AAEjE,KADc,mBAAmB,UACxB,CAAC,wBACR;AAEF,qBAAoB,WAAW,EAAE,0CAAyB,IAAI,MAAM,EAAC,aAAa,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace.js","names":[],"sources":["../../../../src/agent/context/workspace.ts"],"sourcesContent":["/**\n * Agent profile Markdown (filenames, load order, system prompt assembly) and\n * small helpers for message content extraction.\n *\n * Canonical on-disk root: `agents/<agentId>/profile/`.\n */\n\nimport { readFileSync, existsSync } from 'fs';\nimport { join, resolve } from 'path';\nimport { createLogger } from '../../utils/logger.js';\nimport { parseFrontmatter } from '../../markdown/frontmatter.js';\n\nconst log = createLogger('Workspace');\n\n// =============================================================================\n// Profile Markdown filenames & types (SOUL.md, IDENTITY.md, … under `profile/`)\n// =============================================================================\n\nexport const DEFAULT_AGENTS_FILENAME = 'AGENTS.md';\nexport const DEFAULT_SOUL_FILENAME = 'SOUL.md';\nexport const DEFAULT_TOOLS_FILENAME = 'TOOLS.md';\nexport const DEFAULT_IDENTITY_FILENAME = 'IDENTITY.md';\nexport const DEFAULT_HEARTBEAT_FILENAME = 'HEARTBEAT.md';\n\nexport type AgentProfileMarkdownFilename =\n | typeof DEFAULT_AGENTS_FILENAME\n | typeof DEFAULT_SOUL_FILENAME\n | typeof DEFAULT_TOOLS_FILENAME\n | typeof DEFAULT_IDENTITY_FILENAME\n | typeof DEFAULT_HEARTBEAT_FILENAME;\n\n/**\n * Order for loading profile Markdown files into the system prompt (persona / user before repo guide, etc.).\n */\nexport const AGENT_PROFILE_MARKDOWN_SYSTEM_FILES: readonly AgentProfileMarkdownFilename[] = [\n DEFAULT_SOUL_FILENAME,\n DEFAULT_IDENTITY_FILENAME,\n DEFAULT_TOOLS_FILENAME,\n DEFAULT_AGENTS_FILENAME,\n DEFAULT_HEARTBEAT_FILENAME,\n];\n\n/** Files that should be surfaced when missing. Other profile files are optional overlays. */\nexport const REQUIRED_AGENT_PROFILE_MARKDOWN_FILES: readonly AgentProfileMarkdownFilename[] = [\n DEFAULT_SOUL_FILENAME,\n DEFAULT_IDENTITY_FILENAME,\n];\n\nexport const REQUIRED_AGENT_PROFILE_MARKDOWN_FILE_SET: ReadonlySet<string> = new Set(\n REQUIRED_AGENT_PROFILE_MARKDOWN_FILES,\n);\n\nexport interface WorkspaceProfileMarkdownFile {\n name: AgentProfileMarkdownFilename;\n path: string;\n content?: string;\n missing: boolean;\n}\n\n/**\n * Strip YAML front matter from markdown content.\n */\nexport function stripFrontMatter(content: string): string {\n return parseFrontmatter(content).content;\n}\n\n// =============================================================================\n// Load & truncate profile Markdown for system prompt\n// =============================================================================\n\n/** Maximum characters to inject from workspace files into system prompt */\nexport const PROFILE_MARKDOWN_MAX_CHARS = 20_000;\n\n/** Profile Markdown truncation: fraction of `maxChars` kept from the start of the file */\nconst HEAD_TRUNCATION_RATIO = 0.7;\n/** Profile Markdown truncation: fraction of `maxChars` kept from the end of the file */\nconst TAIL_TRUNCATION_RATIO = 0.2;\n\nexport interface TruncateResult {\n content: string;\n truncated: boolean;\n originalLength: number;\n}\n\n/**\n * Truncate workspace file content to prevent token overflow.\n * Keeps head (HEAD_TRUNCATION_RATIO, 70%) and tail (TAIL_TRUNCATION_RATIO, 20%) with a\n * truncation marker in between; the remainder is reserved for the marker.\n */\nexport function truncateProfileMarkdownContent(content: string, maxChars: number): TruncateResult {\n const trimmed = content.trimEnd();\n if (trimmed.length <= maxChars) {\n return {\n content: trimmed,\n truncated: false,\n originalLength: trimmed.length,\n };\n }\n\n const headChars = Math.floor(maxChars * HEAD_TRUNCATION_RATIO);\n const tailChars = Math.floor(maxChars * TAIL_TRUNCATION_RATIO);\n const head = trimmed.slice(0, headChars);\n const tail = trimmed.slice(-tailChars);\n\n const marker = [\n '',\n '[...content truncated, read the full file for complete content...]',\n `...(truncated: kept ${headChars}+${tailChars} chars of ${trimmed.length})...`,\n '',\n ].join('\\n');\n\n return {\n content: head + marker + tail,\n truncated: true,\n originalLength: trimmed.length,\n };\n}\n\nexport interface ProfileMarkdownFile {\n name: AgentProfileMarkdownFilename;\n path?: string;\n content: string;\n missing?: boolean;\n}\n\n/**\n * Convert {@link ProfileMarkdownFile} to {@link WorkspaceProfileMarkdownFile} (adds required path field).\n * @param pathFallbackDir — used when `file.path` is absent (e.g. canonical `profile/` root).\n */\nexport function toWorkspaceProfileMarkdownFile(file: ProfileMarkdownFile, pathFallbackDir: string): {\n name: AgentProfileMarkdownFilename;\n path: string;\n content?: string;\n missing: boolean;\n} {\n return {\n name: file.name,\n path: file.path || join(pathFallbackDir, file.name),\n content: file.missing ? undefined : file.content,\n missing: file.missing ?? false,\n };\n}\n\n/**\n * Load profile Markdown from `profileDir` (`agents/<agentId>/profile/`).\n */\nexport function loadProfileMarkdownFiles(profileDir: string): ProfileMarkdownFile[] {\n const files: ProfileMarkdownFile[] = [];\n let loadedCount = 0;\n let missingCount = 0;\n\n for (const filename of AGENT_PROFILE_MARKDOWN_SYSTEM_FILES) {\n const filePath = join(profileDir, filename);\n\n if (existsSync(filePath)) {\n try {\n let content = readFileSync(filePath, 'utf-8');\n\n content = stripFrontMatter(content);\n\n const result = truncateProfileMarkdownContent(content, PROFILE_MARKDOWN_MAX_CHARS);\n\n if (result.content) {\n files.push({\n name: filename,\n content: result.content,\n path: resolve(filePath),\n });\n loadedCount++;\n\n if (result.truncated) {\n log.warn(\n {\n file: filename,\n originalLength: result.originalLength,\n keptLength: result.content.length,\n },\n 'Profile Markdown truncated in system prompt (too long)',\n );\n } else {\n log.debug({ file: filename, path: filePath }, 'Profile Markdown file loaded');\n }\n }\n } catch (err) {\n log.warn({ file: filename, err }, 'Failed to load profile Markdown file');\n }\n } else if (REQUIRED_AGENT_PROFILE_MARKDOWN_FILE_SET.has(filename)) {\n const hint = join(profileDir, filename);\n files.push({\n name: filename,\n content: `[MISSING] Create this file at: ${hint}`,\n missing: true,\n path: resolve(hint),\n });\n missingCount++;\n log.debug({ file: filename }, 'Profile Markdown file missing');\n }\n }\n\n log.debug({ loaded: loadedCount, missing: missingCount, profileDir }, 'Profile Markdown scan done');\n\n return files;\n}\n\n// =============================================================================\n// Message content helpers\n// =============================================================================\n\n/**\n * Extract text content from agent message content array\n */\nexport function extractTextContent(\n content: Array<{ type: string; text?: string }>\n): string {\n return content\n .filter((c) => c.type === 'text')\n .map((c) => c.text || '')\n .join('');\n}\n\nconst THINKING_BLOCK_TYPES = new Set(['thinking', 'thinking_delta', 'redacted_thinking']);\n\n/**\n * Concatenate thinking / reasoning content blocks from assistant message.content.\n * pi-ai may use `thinking` or `text` on `type: \"thinking\"` blocks.\n */\nexport function extractThinkingContent(\n content: Array<{ type: string; thinking?: string; text?: string }> | undefined\n): string {\n if (!Array.isArray(content)) return '';\n return content\n .filter((c) => THINKING_BLOCK_TYPES.has(c.type))\n .map((c) => (typeof c.thinking === 'string' ? c.thinking : c.text) || '')\n .join('');\n}\n\n/**\n * Extended thinking on the assistant message (e.g. Anthropic reasoning / pi-ai reasoning_details).\n */\nexport function extractThinkingFromAssistantMessage(\n message: { role?: string; reasoning_details?: { thinking?: string } } | undefined\n): string {\n if (!message || message.role !== 'assistant') return '';\n const t = message.reasoning_details?.thinking;\n return typeof t === 'string' ? t : '';\n}\n"],"mappings":";;;;;;;;;;;;aASqD;AAGrD,MAAM,MAAM,aAAa,YAAY;AAMrC,MAAa,0BAA0B;AACvC,MAAa,wBAAwB;AACrC,MAAa,yBAAyB;AACtC,MAAa,4BAA4B;AACzC,MAAa,6BAA6B;;;;AAY1C,MAAa,sCAA+E;CAC1F;CACA;CACA;CACA;CACA;CACD;;AAGD,MAAa,wCAAiF,CAC5F,uBACA,0BACD;AAED,MAAa,2CAAgE,IAAI,IAC/E,sCACD;;;;AAYD,SAAgB,iBAAiB,SAAyB;AACxD,QAAO,iBAAiB,QAAQ,CAAC;;;AAQnC,MAAa,6BAA6B;;AAG1C,MAAM,wBAAwB;;AAE9B,MAAM,wBAAwB;;;;;;AAa9B,SAAgB,+BAA+B,SAAiB,UAAkC;CAChG,MAAM,UAAU,QAAQ,SAAS;AACjC,KAAI,QAAQ,UAAU,SACpB,QAAO;EACL,SAAS;EACT,WAAW;EACX,gBAAgB,QAAQ;EACzB;CAGH,MAAM,YAAY,KAAK,MAAM,WAAW,sBAAsB;CAC9D,MAAM,YAAY,KAAK,MAAM,WAAW,sBAAsB;CAC9D,MAAM,OAAO,QAAQ,MAAM,GAAG,UAAU;CACxC,MAAM,OAAO,QAAQ,MAAM,CAAC,UAAU;AAStC,QAAO;EACL,SAAS,OARI;GACb;GACA;GACA,uBAAuB,UAAU,GAAG,UAAU,YAAY,QAAQ,OAAO;GACzE;GACD,CAAC,KAAK,KAGiB,GAAG;EACzB,WAAW;EACX,gBAAgB,QAAQ;EACzB;;;;;;AAcH,SAAgB,+BAA+B,MAA2B,iBAKxE;AACA,QAAO;EACL,MAAM,KAAK;EACX,MAAM,KAAK,QAAQ,KAAK,iBAAiB,KAAK,KAAK;EACnD,SAAS,KAAK,UAAU,KAAA,IAAY,KAAK;EACzC,SAAS,KAAK,WAAW;EAC1B;;;;;AAMH,SAAgB,yBAAyB,YAA2C;CAClF,MAAM,QAA+B,EAAE;CACvC,IAAI,cAAc;CAClB,IAAI,eAAe;AAEnB,MAAK,MAAM,YAAY,qCAAqC;EAC1D,MAAM,WAAW,KAAK,YAAY,SAAS;AAE3C,MAAI,WAAW,SAAS,CACtB,KAAI;GACF,IAAI,UAAU,aAAa,UAAU,QAAQ;AAE7C,aAAU,iBAAiB,QAAQ;GAEnC,MAAM,SAAS,+BAA+B,SAAS,2BAA2B;AAElF,OAAI,OAAO,SAAS;AAClB,UAAM,KAAK;KACT,MAAM;KACN,SAAS,OAAO;KAChB,MAAM,QAAQ,SAAS;KACxB,CAAC;AACF;AAEA,QAAI,OAAO,UACT,KAAI,KACF;KACE,MAAM;KACN,gBAAgB,OAAO;KACvB,YAAY,OAAO,QAAQ;KAC5B,EACD,yDACD;QAED,KAAI,MAAM;KAAE,MAAM;KAAU,MAAM;KAAU,EAAE,+BAA+B;;WAG1E,KAAK;AACZ,OAAI,KAAK;IAAE,MAAM;IAAU;IAAK,EAAE,uCAAuC;;WAElE,yCAAyC,IAAI,SAAS,EAAE;GACjE,MAAM,OAAO,KAAK,YAAY,SAAS;AACvC,SAAM,KAAK;IACT,MAAM;IACN,SAAS,kCAAkC;IAC3C,SAAS;IACT,MAAM,QAAQ,KAAK;IACpB,CAAC;AACF;AACA,OAAI,MAAM,EAAE,MAAM,UAAU,EAAE,gCAAgC;;;AAIlE,KAAI,MAAM;EAAE,QAAQ;EAAa,SAAS;EAAc;EAAY,EAAE,6BAA6B;AAEnG,QAAO;;;;;AAUT,SAAgB,mBACd,SACQ;AACR,QAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,OAAO,CAChC,KAAK,MAAM,EAAE,QAAQ,GAAG,CACxB,KAAK,GAAG;;AAGb,MAAM,uBAAuB,IAAI,IAAI;CAAC;CAAY;CAAkB;CAAoB,CAAC;;;;;AAMzF,SAAgB,uBACd,SACQ;AACR,KAAI,CAAC,MAAM,QAAQ,QAAQ,CAAE,QAAO;AACpC,QAAO,QACJ,QAAQ,MAAM,qBAAqB,IAAI,EAAE,KAAK,CAAC,CAC/C,KAAK,OAAO,OAAO,EAAE,aAAa,WAAW,EAAE,WAAW,EAAE,SAAS,GAAG,CACxE,KAAK,GAAG;;;;;AAMb,SAAgB,oCACd,SACQ;AACR,KAAI,CAAC,WAAW,QAAQ,SAAS,YAAa,QAAO;CACrD,MAAM,IAAI,QAAQ,mBAAmB;AACrC,QAAO,OAAO,MAAM,WAAW,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-for-session.js","names":[],"sources":["../../../../src/agent/embedded/run-for-session.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport type { AgentMessage, ThinkingLevel } from '@earendil-works/pi-agent-core';\n\nimport type { Config } from '../../config/schema.js';\nimport type { AgentInstanceGateway } from '../agent-instance-gateway.js';\nimport type { ModelManager } from '../models/index.js';\nimport type { SessionStore } from '../../session/store.js';\nimport { resolveAgentTurnTimeoutMs } from '../orchestration/run-agent-turn-with-timeout.js';\nimport { runXopcEmbeddedTurn } from './run-turn.js';\nimport type { EmbeddedStreamEvent, RunXopcEmbeddedTurnParams, RunXopcEmbeddedTurnResult } from './types.js';\nimport { applyStartupContextToUserMessage } from '../reply/apply-turn-user-enrichment.js';\nimport {\n mergeTurnTools,\n resolveEmbeddedMcpToolsForTurn,\n} from '../mcp/resolve-embedded-mcp-tools.js';\nimport { createLogger } from '../../utils/logger.js';\nimport { resolveModel } from '../../providers/index.js';\n\nconst log = createLogger('EmbeddedTurnForSession');\n\nexport type RunEmbeddedForSessionParams = {\n sessionKey: string;\n runId?: string;\n userMessage: AgentMessage;\n llmImages?: import('@earendil-works/pi-ai').ImageContent[];\n sessionStore: SessionStore;\n agentManager: AgentInstanceGateway;\n modelManager: ModelManager;\n thinkingOverride?: string | null;\n abortSignal?: AbortSignal;\n onEvent?: (event: EmbeddedStreamEvent) => void;\n getConfig?: () => Config | undefined;\n beforeTurn?: () => void | Promise<void>;\n afterTurn?: (userPlain: string) => void | Promise<void>;\n startupAction?: 'new' | 'reset';\n forceStartupContext?: boolean;\n applyStartupContext?: boolean;\n /** When true, dispose session MCP runtime after this turn completes. */\n cleanupBundleMcpOnRunEnd?: boolean;\n};\n\nexport async function runEmbeddedTurnForSession(\n params: RunEmbeddedForSessionParams,\n): Promise<RunXopcEmbeddedTurnResult> {\n const { sessionKey, agentManager, modelManager, sessionStore, userMessage } = params;\n const runId = params.runId ?? crypto.randomUUID();\n\n await params.beforeTurn?.();\n\n const agent = (agentManager as any).getOrCreateAgent(sessionKey) as {\n state: {\n tools: RunXopcEmbeddedTurnParams['tools'];\n systemPrompt?: string;\n thinkingLevel?: ThinkingLevel;\n };\n };\n const mm = modelManager as any;\n await mm.applyModelForSession(agent, sessionKey);\n\n const modelRef = String(mm.getModelForSession(sessionKey));\n agentManager.setModelForSession(sessionKey, modelRef);\n const model = mm.getResolvedModelForSession(sessionKey) as RunXopcEmbeddedTurnParams['model'];\n const tools = agent.state.tools;\n const systemPrompt = agent.state.systemPrompt ?? '';\n const thinkingLevel = (params.thinkingOverride as ThinkingLevel | undefined) ?? agent.state.thinkingLevel;\n const workspaceDir = agentManager.getResolvedWorkspaceForSession(sessionKey);\n const config = params.getConfig?.();\n\n // --- Pre-turn automatic compaction ---\n await maybeAutoCompactBeforeTurn({\n sessionKey,\n sessionStore,\n agentManager,\n model,\n config,\n onEvent: params.onEvent,\n });\n\n let userMessageForTurn = userMessage;\n if (params.applyStartupContext !== false) {\n userMessageForTurn = await applyStartupContextToUserMessage({\n userMessage,\n sessionKey,\n workspaceDir,\n cfg: config,\n sessionStore,\n startupAction: params.startupAction,\n force: params.forceStartupContext,\n });\n }\n\n const result = await (async () => {\n const mcpResolved = await resolveEmbeddedMcpToolsForTurn({\n sessionKey,\n workspaceDir,\n cfg: config,\n baseTools: tools,\n cleanupOnTurnEnd: params.cleanupBundleMcpOnRunEnd === true,\n });\n const turnTools = mergeTurnTools(tools, mcpResolved.tools);\n try {\n const candidates = typeof mm.getFallbackCandidatesForSession === 'function'\n ? mm.getFallbackCandidatesForSession(sessionKey)\n : [];\n const candidateModelRefs = candidates.length > 0\n ? candidates.map((candidate: { provider: string; model: string }) => `${candidate.provider}/${candidate.model}`)\n : [modelRef];\n log.info(\n { sessionKey, runId, primaryModelRef: candidateModelRefs[0], candidateModelRefs },\n 'Agent model fallback candidates resolved',\n );\n\n let lastResult: RunXopcEmbeddedTurnResult | undefined;\n let lastError: unknown;\n const primaryModelRef = candidateModelRefs[0] ?? modelRef;\n const beforeLen = Array.isArray((agent as any).state?.messages)\n ? (agent as any).state.messages.length\n : undefined;\n\n for (let i = 0; i < candidateModelRefs.length; i++) {\n const candidateModelRef = candidateModelRefs[i] ?? modelRef;\n const isFallbackAttempt = i > 0;\n let candidateModel = model;\n if (candidateModelRef !== modelRef) {\n try {\n candidateModel = resolveModel(candidateModelRef) as RunXopcEmbeddedTurnParams['model'];\n } catch (err) {\n lastError = err;\n log.warn(\n { err, sessionKey, runId, modelRef: candidateModelRef, attempt: i + 1, total: candidateModelRefs.length },\n 'Skipping model fallback candidate (resolve failed)',\n );\n continue;\n }\n }\n\n if (typeof mm.applyResolvedModel === 'function') {\n mm.applyResolvedModel(agent, candidateModel, candidateModelRef);\n }\n agentManager.setModelForSession(sessionKey, candidateModelRef);\n\n if (isFallbackAttempt) {\n log.info(\n {\n sessionKey,\n runId,\n primaryModelRef,\n fallbackModelRef: candidateModelRef,\n attempt: i + 1,\n total: candidateModelRefs.length,\n },\n 'Agent model fallback started',\n );\n }\n\n try {\n const turnResult = await runXopcEmbeddedTurn({\n sessionKey,\n runId,\n userMessage: userMessageForTurn,\n images: params.llmImages,\n model: candidateModel,\n modelRef: candidateModelRef,\n tools: turnTools,\n systemPrompt,\n thinkingLevel,\n workspaceDir,\n sessionStore,\n timeoutMs: resolveAgentTurnTimeoutMs(config),\n abortSignal: params.abortSignal,\n onEvent: params.onEvent,\n });\n\n if (turnResult.ok) {\n if (isFallbackAttempt) {\n log.info(\n {\n sessionKey,\n runId,\n primaryModelRef,\n fallbackModelRef: candidateModelRef,\n attempt: i + 1,\n total: candidateModelRefs.length,\n },\n 'Agent model fallback succeeded',\n );\n }\n return turnResult;\n }\n\n lastResult = turnResult;\n const hasNextCandidate = i + 1 < candidateModelRefs.length;\n log.warn(\n {\n sessionKey,\n runId,\n modelRef: candidateModelRef,\n attempt: i + 1,\n total: candidateModelRefs.length,\n hasNextCandidate,\n errorMessage: turnResult.errorMessage,\n },\n hasNextCandidate\n ? 'Agent model turn failed, trying fallback'\n : 'Agent model turn failed, no fallback remains',\n );\n } catch (err) {\n lastError = err;\n if (err instanceof DOMException && err.name === 'AbortError') {\n throw err;\n }\n const hasNextCandidate = i + 1 < candidateModelRefs.length;\n log.warn(\n { err, sessionKey, runId, modelRef: candidateModelRef, attempt: i + 1, total: candidateModelRefs.length, hasNextCandidate },\n hasNextCandidate\n ? 'Agent model call threw, trying fallback'\n : 'Agent model call threw, no fallback remains',\n );\n }\n\n if (beforeLen !== undefined && Array.isArray((agent as any).state?.messages)) {\n (agent as any).state.messages = (agent as any).state.messages.slice(0, beforeLen);\n }\n }\n\n if (lastResult) return lastResult;\n if (lastError instanceof Error) throw lastError;\n if (lastError != null) throw new Error(String(lastError));\n return { ok: false, errorMessage: 'No model candidates available' };\n } finally {\n await mcpResolved.dispose().catch(() => {});\n }\n })();\n\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Pre-turn automatic compaction\n// ---------------------------------------------------------------------------\n\nasync function maybeAutoCompactBeforeTurn(opts: {\n sessionKey: string;\n sessionStore: SessionStore;\n agentManager: AgentInstanceGateway;\n model: RunXopcEmbeddedTurnParams['model'];\n config: Config | undefined;\n onEvent?: (event: EmbeddedStreamEvent) => void;\n}): Promise<void> {\n const { sessionKey, sessionStore, agentManager, model, config, onEvent } = opts;\n if (config) {\n try {\n if (config.userContext.memory.retention?.compaction === false) {\n return;\n }\n } catch {\n // Keep compaction enabled when manifest resolution is unavailable.\n }\n }\n\n const contextWindow = (model as { contextWindow?: number }).contextWindow ?? 128_000;\n const messages = await sessionStore.load(sessionKey);\n const prep = sessionStore.prepareCompaction(sessionKey, messages, contextWindow);\n\n if (!prep.needsCompaction) {\n return;\n }\n\n log.info(\n { sessionKey, reason: prep.stats?.reason, usagePercent: prep.stats?.usagePercent, contextWindow },\n 'Pre-turn auto-compaction triggered',\n );\n\n onEvent?.({\n type: 'compaction',\n status: 'started',\n tokensBefore: prep.stats?.usagePercent != null\n ? Math.round((prep.stats.usagePercent as number) * contextWindow)\n : undefined,\n });\n\n try {\n const result = await sessionStore.compact(sessionKey, messages, contextWindow);\n\n if (result.compacted) {\n // Evict the cached agent so the next turn reloads from the compacted transcript\n agentManager.removeAgent(sessionKey);\n\n log.info(\n { sessionKey, tokensBefore: result.tokensBefore, tokensAfter: result.tokensAfter },\n 'Pre-turn auto-compaction completed',\n );\n\n onEvent?.({\n type: 'compaction',\n status: 'completed',\n tokensBefore: result.tokensBefore,\n tokensAfter: result.tokensAfter,\n summary: result.summary.length > 200 ? `${result.summary.slice(0, 200)}…` : result.summary,\n });\n } else {\n onEvent?.({ type: 'compaction', status: 'skipped' });\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n log.warn({ err, sessionKey }, `Pre-turn auto-compaction failed: ${errorMessage}`);\n // Non-fatal: let the turn proceed even if compaction fails\n onEvent?.({ type: 'compaction', status: 'skipped' });\n }\n}\n"],"mappings":";;;;;;;;;aAeqD;gBACG;AAExD,MAAM,MAAM,aAAa,yBAAyB;AAuBlD,eAAsB,0BACpB,QACoC;CACpC,MAAM,EAAE,YAAY,cAAc,cAAc,cAAc,gBAAgB;CAC9E,MAAM,QAAQ,OAAO,SAAS,OAAO,YAAY;AAEjD,OAAM,OAAO,cAAc;CAE3B,MAAM,QAAS,aAAqB,iBAAiB,WAAW;CAOhE,MAAM,KAAK;AACX,OAAM,GAAG,qBAAqB,OAAO,WAAW;CAEhD,MAAM,WAAW,OAAO,GAAG,mBAAmB,WAAW,CAAC;AAC1D,cAAa,mBAAmB,YAAY,SAAS;CACrD,MAAM,QAAQ,GAAG,2BAA2B,WAAW;CACvD,MAAM,QAAQ,MAAM,MAAM;CAC1B,MAAM,eAAe,MAAM,MAAM,gBAAgB;CACjD,MAAM,gBAAiB,OAAO,oBAAkD,MAAM,MAAM;CAC5F,MAAM,eAAe,aAAa,+BAA+B,WAAW;CAC5E,MAAM,SAAS,OAAO,aAAa;AAGnC,OAAM,2BAA2B;EAC/B;EACA;EACA;EACA;EACA;EACA,SAAS,OAAO;EACjB,CAAC;CAEF,IAAI,qBAAqB;AACzB,KAAI,OAAO,wBAAwB,MACjC,sBAAqB,MAAM,iCAAiC;EAC1D;EACA;EACA;EACA,KAAK;EACL;EACA,eAAe,OAAO;EACtB,OAAO,OAAO;EACf,CAAC;AAkJJ,QAAO,OA/Ie,YAAY;EAChC,MAAM,cAAc,MAAM,+BAA+B;GACvD;GACA;GACA,KAAK;GACL,WAAW;GACX,kBAAkB,OAAO,6BAA6B;GACvD,CAAC;EACF,MAAM,YAAY,eAAe,OAAO,YAAY,MAAM;AAC1D,MAAI;GACF,MAAM,aAAa,OAAO,GAAG,oCAAoC,aAC7D,GAAG,gCAAgC,WAAW,GAC9C,EAAE;GACN,MAAM,qBAAqB,WAAW,SAAS,IAC3C,WAAW,KAAK,cAAmD,GAAG,UAAU,SAAS,GAAG,UAAU,QAAQ,GAC9G,CAAC,SAAS;AACd,OAAI,KACF;IAAE;IAAY;IAAO,iBAAiB,mBAAmB;IAAI;IAAoB,EACjF,2CACD;GAED,IAAI;GACJ,IAAI;GACJ,MAAM,kBAAkB,mBAAmB,MAAM;GACjD,MAAM,YAAY,MAAM,QAAS,MAAc,OAAO,SAAS,GAC1D,MAAc,MAAM,SAAS,SAC9B,KAAA;AAEJ,QAAK,IAAI,IAAI,GAAG,IAAI,mBAAmB,QAAQ,KAAK;IAClD,MAAM,oBAAoB,mBAAmB,MAAM;IACnD,MAAM,oBAAoB,IAAI;IAC9B,IAAI,iBAAiB;AACrB,QAAI,sBAAsB,SACxB,KAAI;AACF,sBAAiB,aAAa,kBAAkB;aACzC,KAAK;AACZ,iBAAY;AACZ,SAAI,KACF;MAAE;MAAK;MAAY;MAAO,UAAU;MAAmB,SAAS,IAAI;MAAG,OAAO,mBAAmB;MAAQ,EACzG,qDACD;AACD;;AAIJ,QAAI,OAAO,GAAG,uBAAuB,WACnC,IAAG,mBAAmB,OAAO,gBAAgB,kBAAkB;AAEjE,iBAAa,mBAAmB,YAAY,kBAAkB;AAE9D,QAAI,kBACF,KAAI,KACF;KACE;KACA;KACA;KACA,kBAAkB;KAClB,SAAS,IAAI;KACb,OAAO,mBAAmB;KAC3B,EACD,+BACD;AAGH,QAAI;KACF,MAAM,aAAa,MAAM,oBAAoB;MAC3C;MACA;MACA,aAAa;MACb,QAAQ,OAAO;MACf,OAAO;MACP,UAAU;MACV,OAAO;MACP;MACA;MACA;MACA;MACA,WAAW,0BAA0B,OAAO;MAC5C,aAAa,OAAO;MACpB,SAAS,OAAO;MACjB,CAAC;AAEF,SAAI,WAAW,IAAI;AACjB,UAAI,kBACF,KAAI,KACF;OACE;OACA;OACA;OACA,kBAAkB;OAClB,SAAS,IAAI;OACb,OAAO,mBAAmB;OAC3B,EACD,iCACD;AAEH,aAAO;;AAGT,kBAAa;KACb,MAAM,mBAAmB,IAAI,IAAI,mBAAmB;AACpD,SAAI,KACF;MACE;MACA;MACA,UAAU;MACV,SAAS,IAAI;MACb,OAAO,mBAAmB;MAC1B;MACA,cAAc,WAAW;MAC1B,EACD,mBACI,6CACA,+CACL;aACM,KAAK;AACZ,iBAAY;AACZ,SAAI,eAAe,gBAAgB,IAAI,SAAS,aAC9C,OAAM;KAER,MAAM,mBAAmB,IAAI,IAAI,mBAAmB;AACpD,SAAI,KACF;MAAE;MAAK;MAAY;MAAO,UAAU;MAAmB,SAAS,IAAI;MAAG,OAAO,mBAAmB;MAAQ;MAAkB,EAC3H,mBACI,4CACA,8CACL;;AAGH,QAAI,cAAc,KAAA,KAAa,MAAM,QAAS,MAAc,OAAO,SAAS,CACzE,OAAc,MAAM,WAAY,MAAc,MAAM,SAAS,MAAM,GAAG,UAAU;;AAIrF,OAAI,WAAY,QAAO;AACvB,OAAI,qBAAqB,MAAO,OAAM;AACtC,OAAI,aAAa,KAAM,OAAM,IAAI,MAAM,OAAO,UAAU,CAAC;AACzD,UAAO;IAAE,IAAI;IAAO,cAAc;IAAiC;YAC3D;AACR,SAAM,YAAY,SAAS,CAAC,YAAY,GAAG;;KAE3C;;AASN,eAAe,2BAA2B,MAOxB;CAChB,MAAM,EAAE,YAAY,cAAc,cAAc,OAAO,QAAQ,YAAY;AAC3E,KAAI,OACF,KAAI;AACF,MAAI,OAAO,YAAY,OAAO,WAAW,eAAe,MACtD;SAEI;CAKV,MAAM,gBAAiB,MAAqC,iBAAiB;CAC7E,MAAM,WAAW,MAAM,aAAa,KAAK,WAAW;CACpD,MAAM,OAAO,aAAa,kBAAkB,YAAY,UAAU,cAAc;AAEhF,KAAI,CAAC,KAAK,gBACR;AAGF,KAAI,KACF;EAAE;EAAY,QAAQ,KAAK,OAAO;EAAQ,cAAc,KAAK,OAAO;EAAc;EAAe,EACjG,qCACD;AAED,WAAU;EACR,MAAM;EACN,QAAQ;EACR,cAAc,KAAK,OAAO,gBAAgB,OACtC,KAAK,MAAO,KAAK,MAAM,eAA0B,cAAc,GAC/D,KAAA;EACL,CAAC;AAEF,KAAI;EACF,MAAM,SAAS,MAAM,aAAa,QAAQ,YAAY,UAAU,cAAc;AAE9E,MAAI,OAAO,WAAW;AAEpB,gBAAa,YAAY,WAAW;AAEpC,OAAI,KACF;IAAE;IAAY,cAAc,OAAO;IAAc,aAAa,OAAO;IAAa,EAClF,qCACD;AAED,aAAU;IACR,MAAM;IACN,QAAQ;IACR,cAAc,OAAO;IACrB,aAAa,OAAO;IACpB,SAAS,OAAO,QAAQ,SAAS,MAAM,GAAG,OAAO,QAAQ,MAAM,GAAG,IAAI,CAAC,KAAK,OAAO;IACpF,CAAC;QAEF,WAAU;GAAE,MAAM;GAAc,QAAQ;GAAW,CAAC;UAE/C,KAAK;EACZ,MAAM,eAAe,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AACrE,MAAI,KAAK;GAAE;GAAK;GAAY,EAAE,oCAAoC,eAAe;AAEjF,YAAU;GAAE,MAAM;GAAc,QAAQ;GAAW,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-turn.js","names":[],"sources":["../../../../src/agent/embedded/run-turn.ts"],"sourcesContent":["import type { AgentMessage } from '@earendil-works/pi-agent-core';\nimport type { Model, Api } from '@earendil-works/pi-ai';\n\nimport { createLogger } from '../../utils/logger.js';\nimport { registerEmbeddedRun, unregisterEmbeddedRun } from './runs.js';\nimport { subscribeEmbeddedSessionEvents, lastAssistantPlainText } from './subscribe-session.js';\nimport type { RunXopcEmbeddedTurnParams, RunXopcEmbeddedTurnResult } from './types.js';\nimport {\n getAssistantTurnErrorMessage,\n isAssistantTurnAborted,\n isAssistantTurnFailed,\n maybeRetryTurnAfterTransientLlmFailure,\n} from '../orchestration/llm-turn-retry.js';\nimport { runAgentTurnWithTimeout, resolveAgentTurnTimeoutMs } from '../orchestration/run-agent-turn-with-timeout.js';\nimport { detectToolLoops, type RecentToolCall } from '../orchestration/loop-guard.js';\nimport {\n acquireEmbeddedSessionRunner,\n resolveEmbeddedTranscriptInputs,\n} from './session-runner.js';\nimport { wrapStreamFnForXopcExtensions } from './xopc-stream-bridge.js';\n\nconst log = createLogger('EmbeddedRun');\nconst LOG_PREVIEW_MAX_CHARS = 300;\n\nfunction truncateForLog(value: string, maxChars = LOG_PREVIEW_MAX_CHARS): string {\n return value.length > maxChars ? `${value.slice(0, maxChars)}…` : value;\n}\n\nfunction extractTextFromContent(content: unknown): string {\n if (typeof content === 'string') {\n return content;\n }\n if (!Array.isArray(content)) {\n return '';\n }\n return content\n .filter((block): block is { type: string; text: string } => {\n return !!block && typeof block === 'object' && (block as { type?: string }).type === 'text';\n })\n .map((block) => block.text)\n .join('');\n}\n\nfunction extractRecentToolCalls(messages: readonly { role?: string; content?: unknown }[]): RecentToolCall[] {\n const calls: RecentToolCall[] = [];\n for (const message of messages) {\n if (message.role !== 'assistant' || !Array.isArray(message.content)) continue;\n for (const block of message.content) {\n if (block && typeof block === 'object' && (block as { type?: string }).type === 'toolCall') {\n const toolCall = block as { name: string; arguments: unknown };\n calls.push({ name: toolCall.name, params: toolCall.arguments });\n }\n }\n }\n return calls;\n}\n\nfunction getLastUserMessagePreview(messages: readonly { role?: string; content?: unknown }[]): string | undefined {\n for (let messageIndex = messages.length - 1; messageIndex >= 0; messageIndex--) {\n const message = messages[messageIndex];\n if (message?.role !== 'user') {\n continue;\n }\n const text = extractTextFromContent(message.content).trim();\n return text ? truncateForLog(text) : undefined;\n }\n return undefined;\n}\n\nfunction requireEmbeddedModel(model: Model<Api> | undefined, modelRef: string): Model<Api> {\n if (!model?.id || !model?.provider) {\n throw new Error(`Invalid model for embedded run: ${modelRef}`);\n }\n return model;\n}\n\nfunction userMessageToPromptText(message: AgentMessage): string {\n const content = (message as { content?: unknown }).content;\n if (typeof content === 'string') {\n return content;\n }\n if (Array.isArray(content)) {\n return content\n .filter((block): block is { type: 'text'; text: string } => {\n return !!block && typeof block === 'object' && (block as { type?: string }).type === 'text';\n })\n .map((block) => block.text)\n .join('');\n }\n return '';\n}\n\nexport async function runXopcEmbeddedTurn(params: RunXopcEmbeddedTurnParams): Promise<RunXopcEmbeddedTurnResult> {\n const {\n sessionKey,\n runId,\n userMessage,\n model,\n tools,\n systemPrompt,\n thinkingLevel,\n workspaceDir,\n sessionStore,\n onEvent,\n } = params;\n\n const timeoutMs = params.timeoutMs || resolveAgentTurnTimeoutMs();\n const resolvedModel = requireEmbeddedModel(model, params.modelRef);\n const transcript = await resolveEmbeddedTranscriptInputs(sessionStore, sessionKey);\n\n let runner: Awaited<ReturnType<typeof acquireEmbeddedSessionRunner>> | undefined;\n let unsubscribe: (() => void) | undefined;\n\n try {\n runner = await acquireEmbeddedSessionRunner({\n sessionKey,\n sessionId: transcript.sessionId,\n workspaceDir,\n model: resolvedModel,\n modelRef: params.modelRef,\n tools,\n systemPrompt,\n thinkingLevel: thinkingLevel ?? 'medium',\n });\n\n const { session, reused } = runner;\n\n const streamFnWithXopcExtensions = wrapStreamFnForXopcExtensions(session.agent.streamFn);\n const loggingStreamFn: typeof session.agent.streamFn = (streamModel, context, options) => {\n const recentToolCalls = extractRecentToolCalls(context.messages);\n const loopGuard = detectToolLoops(recentToolCalls);\n\n let effectiveContext = context;\n if (loopGuard.injection || loopGuard.hiddenTools.size > 0) {\n const messages = loopGuard.injection\n ? [...context.messages, { role: 'user' as const, content: loopGuard.injection, timestamp: Date.now() }]\n : context.messages;\n\n const contextTools = loopGuard.hiddenTools.size > 0 && context.tools\n ? context.tools.filter((t) => !loopGuard.hiddenTools.has(t.name))\n : context.tools;\n\n effectiveContext = { ...context, messages, tools: contextTools };\n }\n\n log.debug(\n {\n sessionKey,\n runId,\n reusedRunner: reused,\n modelRef: `${streamModel.provider}/${streamModel.id}`,\n systemPromptLength: effectiveContext.systemPrompt?.length ?? 0,\n messageCount: effectiveContext.messages.length,\n toolCount: effectiveContext.tools?.length ?? 0,\n lastUserMessagePreview: getLastUserMessagePreview(effectiveContext.messages),\n loopWarningInjected: !!loopGuard.injection,\n hiddenToolCount: loopGuard.hiddenTools.size,\n ...(process.env.XOPC_LOG_LLM_PAYLOAD === 'true'\n ? {\n effectiveContext: {\n systemPrompt: effectiveContext.systemPrompt,\n messages: effectiveContext.messages,\n tools: effectiveContext.tools,\n },\n }\n : {}),\n },\n 'Sending messages to AI',\n );\n return streamFnWithXopcExtensions(streamModel, effectiveContext, options);\n };\n session.agent.streamFn = loggingStreamFn;\n\n if (onEvent) {\n unsubscribe = subscribeEmbeddedSessionEvents(session, (event) => {\n onEvent({ ...event, runId });\n });\n }\n\n const handle = {\n sessionKey,\n sessionId: transcript.sessionId,\n runId,\n session,\n abort: async () => {\n await session.abort();\n },\n };\n registerEmbeddedRun(handle);\n\n const abortListener = () => {\n void session.abort();\n };\n if (params.abortSignal) {\n if (params.abortSignal.aborted) {\n await session.abort();\n return { ok: false, errorMessage: 'aborted' };\n }\n params.abortSignal.addEventListener('abort', abortListener, { once: true });\n }\n\n try {\n await runAgentTurnWithTimeout(\n session.agent,\n async () => {\n const text = userMessageToPromptText(userMessage);\n const images = params.images ?? [];\n await session.prompt(text, images.length > 0 ? { images } : undefined);\n await session.agent.waitForIdle();\n await maybeRetryTurnAfterTransientLlmFailure(session.agent, { sessionKey, log });\n },\n timeoutMs,\n );\n\n if (isAssistantTurnAborted(session.agent)) {\n return { ok: true, lastAssistantText: lastAssistantPlainText(session) };\n }\n if (isAssistantTurnFailed(session.agent)) {\n return {\n ok: false,\n errorMessage: getAssistantTurnErrorMessage(session.agent) ?? 'Assistant turn failed',\n lastAssistantText: lastAssistantPlainText(session),\n };\n }\n\n return { ok: true, lastAssistantText: lastAssistantPlainText(session) };\n } finally {\n params.abortSignal?.removeEventListener('abort', abortListener);\n unregisterEmbeddedRun(handle);\n }\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n log.error({ err, sessionKey, runId }, `Embedded run failed: ${em}`);\n onEvent?.({ type: 'error', content: em, runId });\n return { ok: false, errorMessage: em };\n } finally {\n unsubscribe?.();\n try {\n runner?.piSm.flushPendingToolResults?.();\n } catch {\n /* ignore */\n }\n runner?.release();\n }\n}\n\nexport { abortEmbeddedRun, queueEmbeddedSteer } from './runs.js';\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runs.js","names":[],"sources":["../../../../src/agent/embedded/runs.ts"],"sourcesContent":["import type { AgentSession } from '@earendil-works/pi-coding-agent';\n\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('EmbeddedRunRegistry');\n\nexport type EmbeddedRunHandle = {\n sessionKey: string;\n sessionId: string;\n runId: string;\n session: AgentSession;\n abort: () => Promise<void>;\n};\n\n/**\n * Tracks in-flight embedded agent turns so we can abort/steer them by sessionKey or runId.\n *\n * The previous implementation used two module-level Maps; this class is the supported\n * single-instance state, while {@link defaultEmbeddedRunRegistry} preserves the previous\n * free-function API for callers that have not yet been moved to dependency injection.\n */\nexport class EmbeddedRunRegistry {\n private readonly bySessionKey = new Map<string, EmbeddedRunHandle>();\n private readonly byRunId = new Map<string, EmbeddedRunHandle>();\n\n /**\n * Register a new in-flight run. If a run is already registered for the same\n * sessionKey we drop the stale handle (the new run takes ownership). The caller\n * is responsible for aborting the previous run before re-registering if needed —\n * we warn loudly so this does not happen silently.\n */\n register(handle: EmbeddedRunHandle): void {\n const previous = this.bySessionKey.get(handle.sessionKey);\n if (previous && previous !== handle) {\n log.warn(\n {\n sessionKey: handle.sessionKey,\n previousRunId: previous.runId,\n newRunId: handle.runId,\n },\n 'Replacing already-registered embedded run for sessionKey (caller did not unregister first)',\n );\n this.byRunId.delete(previous.runId);\n }\n this.bySessionKey.set(handle.sessionKey, handle);\n this.byRunId.set(handle.runId, handle);\n }\n\n unregister(handle: EmbeddedRunHandle): void {\n const current = this.bySessionKey.get(handle.sessionKey);\n if (current === handle) {\n this.bySessionKey.delete(handle.sessionKey);\n }\n this.byRunId.delete(handle.runId);\n }\n\n getBySessionKey(sessionKey: string): EmbeddedRunHandle | undefined {\n return this.bySessionKey.get(sessionKey);\n }\n\n getByRunId(runId: string): EmbeddedRunHandle | undefined {\n return this.byRunId.get(runId);\n }\n\n async abortBySessionKey(sessionKey: string): Promise<boolean> {\n const handle = this.bySessionKey.get(sessionKey);\n if (!handle) {\n return false;\n }\n await handle.abort();\n return true;\n }\n\n async steerBySessionKey(sessionKey: string, text: string): Promise<boolean> {\n const handle = this.bySessionKey.get(sessionKey);\n if (!handle) {\n return false;\n }\n await handle.session.steer(text);\n return true;\n }\n\n /** Test-only helper to drop all registrations without touching live sessions. */\n resetForTest(): void {\n this.bySessionKey.clear();\n this.byRunId.clear();\n }\n\n size(): number {\n return this.bySessionKey.size;\n }\n}\n\n/**\n * Process-wide default registry. Prefer constructing a dedicated `EmbeddedRunRegistry`\n * and injecting it; the module-level singleton stays so the existing free functions\n * keep working until every caller has been migrated.\n */\nexport const defaultEmbeddedRunRegistry = new EmbeddedRunRegistry();\n\nexport function registerEmbeddedRun(handle: EmbeddedRunHandle): void {\n defaultEmbeddedRunRegistry.register(handle);\n}\n\nexport function unregisterEmbeddedRun(handle: EmbeddedRunHandle): void {\n defaultEmbeddedRunRegistry.unregister(handle);\n}\n\nexport function getEmbeddedRunBySessionKey(sessionKey: string): EmbeddedRunHandle | undefined {\n return defaultEmbeddedRunRegistry.getBySessionKey(sessionKey);\n}\n\nexport function getEmbeddedRunByRunId(runId: string): EmbeddedRunHandle | undefined {\n return defaultEmbeddedRunRegistry.getByRunId(runId);\n}\n\nexport function abortEmbeddedRun(sessionKey: string): Promise<boolean> {\n return defaultEmbeddedRunRegistry.abortBySessionKey(sessionKey);\n}\n\nexport function queueEmbeddedSteer(sessionKey: string, text: string): Promise<boolean> {\n return defaultEmbeddedRunRegistry.steerBySessionKey(sessionKey, text);\n}\n"],"mappings":";;;aAEqD;AAErD,MAAM,MAAM,aAAa,sBAAsB;;;;;;;;AAiB/C,IAAa,sBAAb,MAAiC;CAC/B,+BAAgC,IAAI,KAAgC;CACpE,0BAA2B,IAAI,KAAgC;;;;;;;CAQ/D,SAAS,QAAiC;EACxC,MAAM,WAAW,KAAK,aAAa,IAAI,OAAO,WAAW;AACzD,MAAI,YAAY,aAAa,QAAQ;AACnC,OAAI,KACF;IACE,YAAY,OAAO;IACnB,eAAe,SAAS;IACxB,UAAU,OAAO;IAClB,EACD,6FACD;AACD,QAAK,QAAQ,OAAO,SAAS,MAAM;;AAErC,OAAK,aAAa,IAAI,OAAO,YAAY,OAAO;AAChD,OAAK,QAAQ,IAAI,OAAO,OAAO,OAAO;;CAGxC,WAAW,QAAiC;AAE1C,MADgB,KAAK,aAAa,IAAI,OAAO,WAClC,KAAK,OACd,MAAK,aAAa,OAAO,OAAO,WAAW;AAE7C,OAAK,QAAQ,OAAO,OAAO,MAAM;;CAGnC,gBAAgB,YAAmD;AACjE,SAAO,KAAK,aAAa,IAAI,WAAW;;CAG1C,WAAW,OAA8C;AACvD,SAAO,KAAK,QAAQ,IAAI,MAAM;;CAGhC,MAAM,kBAAkB,YAAsC;EAC5D,MAAM,SAAS,KAAK,aAAa,IAAI,WAAW;AAChD,MAAI,CAAC,OACH,QAAO;AAET,QAAM,OAAO,OAAO;AACpB,SAAO;;CAGT,MAAM,kBAAkB,YAAoB,MAAgC;EAC1E,MAAM,SAAS,KAAK,aAAa,IAAI,WAAW;AAChD,MAAI,CAAC,OACH,QAAO;AAET,QAAM,OAAO,QAAQ,MAAM,KAAK;AAChC,SAAO;;;CAIT,eAAqB;AACnB,OAAK,aAAa,OAAO;AACzB,OAAK,QAAQ,OAAO;;CAGtB,OAAe;AACb,SAAO,KAAK,aAAa;;;;;;;;AAS7B,MAAa,6BAA6B,IAAI,qBAAqB;AAEnE,SAAgB,oBAAoB,QAAiC;AACnE,4BAA2B,SAAS,OAAO;;AAG7C,SAAgB,sBAAsB,QAAiC;AACrE,4BAA2B,WAAW,OAAO;;AAG/C,SAAgB,2BAA2B,YAAmD;AAC5F,QAAO,2BAA2B,gBAAgB,WAAW;;AAG/D,SAAgB,sBAAsB,OAA8C;AAClF,QAAO,2BAA2B,WAAW,MAAM;;AAGrD,SAAgB,iBAAiB,YAAsC;AACrE,QAAO,2BAA2B,kBAAkB,WAAW;;AAGjE,SAAgB,mBAAmB,YAAoB,MAAgC;AACrF,QAAO,2BAA2B,kBAAkB,YAAY,KAAK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager-init.js","names":[],"sources":["../../../../src/agent/embedded/session-manager-init.ts"],"sourcesContent":["type SessionHeaderEntry = { type: \"session\"; id?: string; cwd?: string };\ntype SessionMessageEntry = {\n type: \"message\";\n message?: {\n role?: string;\n stopReason?: string;\n usage?: Record<string, unknown>;\n };\n};\n\n/** pi-coding-agent auto-compaction calls `calculateContextTokens(usage)` without a null check. */\nconst EMPTY_ASSISTANT_USAGE = {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n totalTokens: 0,\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n};\n\n/**\n * Legacy xopc transcripts may omit `usage` on assistant rows; pi AgentSession crashes on turn end.\n */\nexport function repairAssistantUsageInSessionManager(sessionManager: unknown): void {\n const sm = sessionManager as { fileEntries?: Array<SessionHeaderEntry | SessionMessageEntry | { type: string }> };\n if (!Array.isArray(sm.fileEntries)) {\n return;\n }\n for (const entry of sm.fileEntries) {\n if (entry.type !== \"message\") {\n continue;\n }\n const msg = (entry as SessionMessageEntry).message;\n if (msg?.role !== \"assistant\") {\n continue;\n }\n if (msg.stopReason === \"aborted\" || msg.stopReason === \"error\") {\n continue;\n }\n if (!msg.usage || typeof msg.usage !== \"object\") {\n msg.usage = { ...EMPTY_ASSISTANT_USAGE };\n } else if (msg.usage.totalTokens === undefined) {\n const u = msg.usage;\n const input = typeof u.input === \"number\" ? u.input : 0;\n const output = typeof u.output === \"number\" ? u.output : 0;\n const cacheRead = typeof u.cacheRead === \"number\" ? u.cacheRead : 0;\n const cacheWrite = typeof u.cacheWrite === \"number\" ? u.cacheWrite : 0;\n msg.usage = {\n ...EMPTY_ASSISTANT_USAGE,\n ...u,\n input,\n output,\n cacheRead,\n cacheWrite,\n totalTokens: input + output + cacheRead + cacheWrite,\n };\n }\n }\n}\n"],"mappings":";;AAWA,MAAM,wBAAwB;CAC5B,OAAO;CACP,QAAQ;CACR,WAAW;CACX,YAAY;CACZ,aAAa;CACb,MAAM;EAAE,OAAO;EAAG,QAAQ;EAAG,WAAW;EAAG,YAAY;EAAG,OAAO;EAAG;CACrE;;;;AAKD,SAAgB,qCAAqC,gBAA+B;CAClF,MAAM,KAAK;AACX,KAAI,CAAC,MAAM,QAAQ,GAAG,YAAY,CAChC;AAEF,MAAK,MAAM,SAAS,GAAG,aAAa;AAClC,MAAI,MAAM,SAAS,UACjB;EAEF,MAAM,MAAO,MAA8B;AAC3C,MAAI,KAAK,SAAS,YAChB;AAEF,MAAI,IAAI,eAAe,aAAa,IAAI,eAAe,QACrD;AAEF,MAAI,CAAC,IAAI,SAAS,OAAO,IAAI,UAAU,SACrC,KAAI,QAAQ,EAAE,GAAG,uBAAuB;WAC/B,IAAI,MAAM,gBAAgB,KAAA,GAAW;GAC9C,MAAM,IAAI,IAAI;GACd,MAAM,QAAQ,OAAO,EAAE,UAAU,WAAW,EAAE,QAAQ;GACtD,MAAM,SAAS,OAAO,EAAE,WAAW,WAAW,EAAE,SAAS;GACzD,MAAM,YAAY,OAAO,EAAE,cAAc,WAAW,EAAE,YAAY;GAClE,MAAM,aAAa,OAAO,EAAE,eAAe,WAAW,EAAE,aAAa;AACrE,OAAI,QAAQ;IACV,GAAG;IACH,GAAG;IACH;IACA;IACA;IACA;IACA,aAAa,QAAQ,SAAS,YAAY;IAC3C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-runner.js","names":[],"sources":["../../../../src/agent/embedded/session-runner.ts"],"sourcesContent":["import type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { ThinkingLevel } from '@earendil-works/pi-agent-core';\nimport {\n createAgentSession,\n DefaultResourceLoader,\n getAgentDir,\n SettingsManager,\n type AgentSession,\n} from '@earendil-works/pi-coding-agent';\nimport type { Model, Api } from '@earendil-works/pi-ai';\n\nimport { createLogger } from '../../utils/logger.js';\nimport { guardSessionManager, type GuardedPiTranscriptManager } from './session-tool-result-guard.js';\nimport { transformUserMessageForPersistence } from '../inbound/attachment-pipeline.js';\nimport { openSqliteHydratingSessionManager } from './sqlite-hydrating-session-manager.js';\nimport { applyXopcProviderApiKey, createEmbeddedModelRuntime } from './xopc-auth-storage.js';\nimport { wrapStreamFnForXopcExtensions } from './xopc-stream-bridge.js';\nimport { xopcToolsToDefinitions } from './xopc-tools-bridge.js';\nimport { applySystemPromptOverrideToSession } from './system-prompt-override.js';\n\nconst log = createLogger('EmbeddedSessionRunner');\n\nconst DEFAULT_IDLE_TTL_MS = 5 * 60_000;\n\nexport type EmbeddedRunnerFingerprintInput = {\n sessionId: string;\n workspaceDir: string;\n modelRef: string;\n toolNames: readonly string[];\n systemPrompt: string;\n thinkingLevel: string;\n};\n\nexport function buildEmbeddedRunnerFingerprint(input: EmbeddedRunnerFingerprintInput): string {\n const tools = [...input.toolNames].sort().join('\\0');\n const promptMarker = `${input.systemPrompt.length}:${input.systemPrompt.slice(0, 128)}`;\n return [\n input.sessionId,\n input.workspaceDir,\n input.modelRef,\n tools,\n promptMarker,\n input.thinkingLevel,\n ].join('\u001f');\n}\n\ntype PooledRunner = {\n sessionKey: string;\n fingerprint: string;\n session: AgentSession;\n piSm: GuardedPiTranscriptManager;\n settingsManager: SettingsManager;\n baseStreamFn: AgentSession['agent']['streamFn'];\n lastUsedAt: number;\n idleTimer: ReturnType<typeof setTimeout> | null;\n};\n\nexport type AcquireEmbeddedSessionRunnerParams = {\n sessionKey: string;\n sessionId: string;\n workspaceDir: string;\n model: Model<Api>;\n modelRef: string;\n tools: AgentTool[];\n systemPrompt: string;\n thinkingLevel: ThinkingLevel;\n};\n\nexport type AcquiredEmbeddedSessionRunner = {\n session: AgentSession;\n piSm: GuardedPiTranscriptManager;\n reused: boolean;\n release: () => void;\n};\n\nexport interface EmbeddedSessionRunnerPoolStats {\n acquires: number;\n reuses: number;\n creates: number;\n evictions: number;\n pooled: number;\n}\n\nexport function isEmbeddedSessionRunnerEnabled(): boolean {\n const raw = process.env.XOPC_SESSION_RUNNER?.trim().toLowerCase();\n if (raw === '0' || raw === 'false' || raw === 'off') {\n return false;\n }\n return true;\n}\n\nexport function getEmbeddedSessionRunnerIdleTtlMs(): number {\n const raw = process.env.XOPC_SESSION_RUNNER_TTL_MS?.trim();\n if (!raw) {\n return DEFAULT_IDLE_TTL_MS;\n }\n const parsed = Number.parseInt(raw, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_IDLE_TTL_MS;\n}\n\nfunction createEmbeddedSettingsManager(cwd: string): SettingsManager {\n const sm = SettingsManager.inMemory({ compaction: { enabled: false } });\n sm.setCompactionEnabled(false);\n void cwd;\n return sm;\n}\n\nexport interface EmbeddedSessionRunnerPoolOptions {\n /** Override for the env-driven enable flag (testing). */\n isEnabled?: () => boolean;\n /** Override for the env-driven idle TTL (testing). */\n getIdleTtlMs?: () => number;\n}\n\n/**\n * Owns the per-session pool of pi `AgentSession` runners. The class is the supported,\n * injectable owner; {@link defaultEmbeddedSessionRunnerPool} keeps the historic\n * module-level free functions working until every caller is migrated to DI.\n */\nexport class EmbeddedSessionRunnerPool {\n private readonly pool = new Map<string, PooledRunner>();\n private readonly isEnabledFn: () => boolean;\n private readonly getIdleTtlMsFn: () => number;\n\n private stats: Omit<EmbeddedSessionRunnerPoolStats, 'pooled'> = {\n acquires: 0,\n reuses: 0,\n creates: 0,\n evictions: 0,\n };\n\n constructor(opts: EmbeddedSessionRunnerPoolOptions = {}) {\n this.isEnabledFn = opts.isEnabled ?? isEmbeddedSessionRunnerEnabled;\n this.getIdleTtlMsFn = opts.getIdleTtlMs ?? getEmbeddedSessionRunnerIdleTtlMs;\n }\n\n getStats(): Readonly<EmbeddedSessionRunnerPoolStats> {\n return { ...this.stats, pooled: this.pool.size };\n }\n\n resetForTest(): void {\n for (const entry of this.pool.values()) {\n this.clearIdleTimer(entry);\n }\n this.pool.clear();\n this.stats = { acquires: 0, reuses: 0, creates: 0, evictions: 0 };\n }\n\n evict(sessionKey: string, reason = 'explicit'): void {\n const entry = this.pool.get(sessionKey);\n if (!entry) {\n return;\n }\n this.disposePooledRunner(sessionKey, entry, reason);\n }\n\n evictAll(reason = 'dispose_all'): void {\n for (const sessionKey of [...this.pool.keys()]) {\n this.evict(sessionKey, reason);\n }\n }\n\n async acquire(params: AcquireEmbeddedSessionRunnerParams): Promise<AcquiredEmbeddedSessionRunner> {\n this.stats.acquires += 1;\n\n const fingerprint = buildEmbeddedRunnerFingerprint({\n sessionId: params.sessionId,\n workspaceDir: params.workspaceDir,\n modelRef: params.modelRef,\n toolNames: params.tools.map((t) => t.name),\n systemPrompt: params.systemPrompt,\n thinkingLevel: params.thinkingLevel ?? 'medium',\n });\n\n const reuseEnabled = this.isEnabledFn();\n const existing = this.pool.get(params.sessionKey);\n\n let entry: PooledRunner;\n let reused = false;\n\n if (reuseEnabled && existing && existing.fingerprint === fingerprint) {\n this.clearIdleTimer(existing);\n entry = existing;\n entry.lastUsedAt = Date.now();\n reused = true;\n this.stats.reuses += 1;\n applySystemPromptOverrideToSession(entry.session, params.systemPrompt);\n entry.session.agent.streamFn = entry.baseStreamFn;\n log.debug({ sessionKey: params.sessionKey }, 'Reusing pooled embedded session runner');\n } else {\n if (existing) {\n this.disposePooledRunner(params.sessionKey, existing, 'fingerprint_mismatch');\n }\n entry = await this.createPooledRunner(params);\n this.pool.set(params.sessionKey, entry);\n this.stats.creates += 1;\n log.debug({ sessionKey: params.sessionKey }, 'Created embedded session runner');\n }\n\n return {\n session: entry.session,\n piSm: entry.piSm,\n reused,\n release: () => {\n if (!this.isEnabledFn()) {\n this.disposePooledRunner(params.sessionKey, entry, 'runner_disabled');\n return;\n }\n entry.lastUsedAt = Date.now();\n this.scheduleIdleEviction(params.sessionKey, entry);\n },\n };\n }\n\n private clearIdleTimer(entry: PooledRunner): void {\n if (entry.idleTimer) {\n clearTimeout(entry.idleTimer);\n entry.idleTimer = null;\n }\n }\n\n private scheduleIdleEviction(sessionKey: string, entry: PooledRunner): void {\n this.clearIdleTimer(entry);\n const ttlMs = this.getIdleTtlMsFn();\n entry.idleTimer = setTimeout(() => {\n const current = this.pool.get(sessionKey);\n if (current === entry) {\n this.disposePooledRunner(sessionKey, entry, 'idle_ttl');\n }\n }, ttlMs);\n entry.idleTimer.unref?.();\n }\n\n private disposePooledRunner(sessionKey: string, entry: PooledRunner, reason: string): void {\n this.clearIdleTimer(entry);\n this.pool.delete(sessionKey);\n this.stats.evictions += 1;\n try {\n entry.piSm.flushPendingToolResults?.();\n } catch {\n /* ignore */\n }\n log.debug({ sessionKey, reason }, 'Embedded session runner evicted');\n }\n\n private async createPooledRunner(params: AcquireEmbeddedSessionRunnerParams): Promise<PooledRunner> {\n const { sessionKey, sessionId, workspaceDir, model, thinkingLevel, tools, systemPrompt } = params;\n\n const settingsManager = createEmbeddedSettingsManager(workspaceDir);\n\n const piSm = guardSessionManager(\n openSqliteHydratingSessionManager({\n sessionKey,\n sessionId,\n cwd: workspaceDir,\n }),\n {\n sessionKey,\n contextWindowTokens: model.contextWindow ?? 128_000,\n transformMessageForPersistence: (message) =>\n transformUserMessageForPersistence(sessionKey, message),\n },\n );\n\n const toolDefs = xopcToolsToDefinitions(tools);\n const toolNames = tools.map((t) => t.name);\n\n const modelRuntime = await createEmbeddedModelRuntime();\n await applyXopcProviderApiKey(modelRuntime, model.provider);\n\n const resourceLoader = new DefaultResourceLoader({\n cwd: workspaceDir,\n agentDir: getAgentDir(),\n settingsManager,\n noContextFiles: true,\n });\n await resourceLoader.reload();\n\n const { session } = await createAgentSession({\n cwd: workspaceDir,\n model,\n thinkingLevel: thinkingLevel ?? 'medium',\n sessionManager: piSm,\n settingsManager,\n modelRuntime,\n resourceLoader,\n noTools: 'builtin',\n customTools: toolDefs,\n tools: toolNames,\n });\n\n applySystemPromptOverrideToSession(session, systemPrompt);\n const baseStreamFn = wrapStreamFnForXopcExtensions(session.agent.streamFn);\n session.agent.streamFn = baseStreamFn;\n\n const fingerprint = buildEmbeddedRunnerFingerprint({\n sessionId,\n workspaceDir,\n modelRef: params.modelRef,\n toolNames,\n systemPrompt,\n thinkingLevel: thinkingLevel ?? 'medium',\n });\n\n return {\n sessionKey,\n fingerprint,\n session,\n piSm,\n settingsManager,\n baseStreamFn,\n lastUsedAt: Date.now(),\n idleTimer: null,\n };\n }\n}\n\nexport const defaultEmbeddedSessionRunnerPool = new EmbeddedSessionRunnerPool();\n\nexport function getEmbeddedSessionRunnerStats(): Readonly<EmbeddedSessionRunnerPoolStats> {\n return defaultEmbeddedSessionRunnerPool.getStats();\n}\n\nexport function resetEmbeddedSessionRunnerForTest(): void {\n defaultEmbeddedSessionRunnerPool.resetForTest();\n}\n\nexport function evictEmbeddedSessionRunner(sessionKey: string, reason = 'explicit'): void {\n defaultEmbeddedSessionRunnerPool.evict(sessionKey, reason);\n}\n\nexport function evictAllEmbeddedSessionRunners(reason = 'dispose_all'): void {\n defaultEmbeddedSessionRunnerPool.evictAll(reason);\n}\n\nexport function acquireEmbeddedSessionRunner(\n params: AcquireEmbeddedSessionRunnerParams,\n): Promise<AcquiredEmbeddedSessionRunner> {\n return defaultEmbeddedSessionRunnerPool.acquire(params);\n}\n\n/** Resolve session identity used by embedded runner acquire and turn execution. */\nexport async function resolveEmbeddedTranscriptInputs(\n sessionStore: import('../../session/store.js').SessionStore,\n sessionKey: string,\n): Promise<{\n sessionId: string;\n sessionKey: string;\n}> {\n return sessionStore.resolveTranscriptPath(sessionKey);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-tool-result-guard.js","names":[],"sources":["../../../../src/agent/embedded/session-tool-result-guard.ts"],"sourcesContent":["/**\n * Session tool-result guard — wraps a pi `SessionManager.appendMessage` to:\n * 1. cap oversized tool-result text + details so they cannot blow up the next\n * LLM request (size + persistence limits).\n * 2. track pending tool-call IDs so missing tool results can be synthesised\n * (some providers refuse a turn that has an orphan tool_use block).\n * 3. drop assistant `toolCall` blocks whose tool name is not in the allowlist\n * (these would also trigger provider 400s).\n * 4. broadcast `xopc:transcript-row` updates so the gateway UI can stream them.\n *\n * Previously this module shipped with three sibling files\n * (`session-tool-result-state.ts`, `session-raw-append-message.ts`,\n * `session-tool-result-guard-wrapper.ts`). They are now consolidated here as\n * private constructs around the `ToolResultGuard` class. Pi-coding-agent owns\n * the `SessionManager` instance and calls `appendMessage` from inside the\n * runtime, so we still need to monkey-patch that method — but the patched\n * implementation is just `guard.guardedAppend.bind(guard)` and all state lives\n * on the class.\n */\n\nimport type { AgentMessage } from '@earendil-works/pi-agent-core';\nimport type { SessionManager } from '@earendil-works/pi-coding-agent';\n\nimport type { Config } from '../../config/schema.js';\nimport {\n boundedJsonUtf8Bytes,\n firstEnumerableOwnKeys,\n jsonUtf8BytesOrInfinity,\n type BoundedJsonUtf8Bytes,\n} from '../../infra/json-utf8-bytes.js';\nimport { emitSessionTranscriptUpdate } from '../../session/transcript-events.js';\nimport { normalizeOptionalString } from '../../utils/string-coerce.js';\nimport { formatContextLimitTruncationNotice } from './tool-result-context-guard.js';\nimport {\n DEFAULT_MAX_LIVE_TOOL_RESULT_CHARS,\n resolveLiveToolResultMaxChars,\n truncateToolResultMessage,\n} from './tool-result-truncation.js';\nimport {\n makeMissingToolResult,\n sanitizeToolCallInputs,\n} from '../transcript/session-transcript-repair.js';\nimport {\n extractToolCallsFromAssistant,\n extractToolResultId,\n} from '../transcript/tool-call-id.js';\n\n// ── Public surface ──────────────────────────────────────────────────────────\n\nexport type BeforeMessageWriteHookEvent = { message: AgentMessage };\nexport type BeforeMessageWriteHookResult =\n | { block?: boolean; message?: AgentMessage }\n | undefined;\n\nexport interface ToolResultGuardOptions {\n /** Optional session key for transcript update broadcasts. */\n sessionKey?: string;\n /** Optional transform applied to any message before persistence. */\n transformMessageForPersistence?: (message: AgentMessage) => AgentMessage;\n /**\n * Optional, synchronous transform applied to toolResult messages *before* they are\n * persisted to the session transcript.\n */\n transformToolResultForPersistence?: (\n message: AgentMessage,\n meta: { toolCallId?: string; toolName?: string; isSynthetic?: boolean },\n ) => AgentMessage;\n /**\n * Whether to synthesize missing tool results to satisfy strict providers.\n * Defaults to true.\n */\n allowSyntheticToolResults?: boolean;\n missingToolResultText?: string;\n /**\n * Optional set/list of tool names accepted for assistant toolCall/toolUse blocks.\n * When set, tool calls with unknown names are dropped before persistence.\n */\n allowedToolNames?: Iterable<string>;\n /**\n * Synchronous hook invoked before any message is written to the session JSONL.\n * If the hook returns { block: true }, the message is silently dropped.\n * If it returns { message }, the modified message is written instead.\n */\n beforeMessageWriteHook?: (event: BeforeMessageWriteHookEvent) => BeforeMessageWriteHookResult;\n maxToolResultChars?: number;\n}\n\nexport interface InstallSessionToolResultGuardResult {\n flushPendingToolResults: () => void;\n clearPendingToolResults: () => void;\n getPendingIds: () => string[];\n}\n\n/** Idempotent wrapper that also adds the helper methods consumers expect. */\nexport type GuardedPiTranscriptManager = SessionManager & {\n flushPendingToolResults?: () => void;\n clearPendingToolResults?: () => void;\n};\n\n/**\n * Install the guard on a SessionManager and return its control API.\n * Subsequent assistant/toolResult writes by pi-coding-agent flow through the\n * guard transparently.\n */\nexport function installSessionToolResultGuard(\n sessionManager: SessionManager,\n opts: ToolResultGuardOptions = {},\n): InstallSessionToolResultGuardResult {\n const guard = new ToolResultGuard(sessionManager, opts);\n guard.attach();\n return {\n flushPendingToolResults: () => guard.flushPending(),\n clearPendingToolResults: () => guard.clearPending(),\n getPendingIds: () => guard.getPendingIds(),\n };\n}\n\n/**\n * Convenience wrapper used by the embedded runner pool: install the guard\n * (idempotent), pin the size cap from the model context window, and expose\n * `flushPendingToolResults` / `clearPendingToolResults` directly on the\n * SessionManager instance so callers do not need to keep the install result.\n */\nexport function guardSessionManager(\n sessionManager: SessionManager,\n opts?: {\n agentId?: string;\n sessionKey?: string;\n config?: Config;\n contextWindowTokens?: number;\n allowSyntheticToolResults?: boolean;\n missingToolResultText?: string;\n allowedToolNames?: Iterable<string>;\n transformMessageForPersistence?: (message: AgentMessage) => AgentMessage;\n },\n): GuardedPiTranscriptManager {\n if (typeof (sessionManager as GuardedPiTranscriptManager).flushPendingToolResults === 'function') {\n return sessionManager as GuardedPiTranscriptManager;\n }\n\n const result = installSessionToolResultGuard(sessionManager, {\n sessionKey: opts?.sessionKey,\n transformMessageForPersistence: opts?.transformMessageForPersistence,\n allowSyntheticToolResults: opts?.allowSyntheticToolResults,\n missingToolResultText: opts?.missingToolResultText,\n allowedToolNames: opts?.allowedToolNames,\n maxToolResultChars:\n typeof opts?.contextWindowTokens === 'number'\n ? resolveLiveToolResultMaxChars({\n contextWindowTokens: opts.contextWindowTokens,\n cfg: opts?.config,\n agentId: opts?.agentId,\n })\n : undefined,\n });\n const tagged = sessionManager as GuardedPiTranscriptManager;\n tagged.flushPendingToolResults = result.flushPendingToolResults;\n tagged.clearPendingToolResults = result.clearPendingToolResults;\n return tagged;\n}\n\n/**\n * Recover the original (un-guarded) appendMessage for a session manager.\n * Useful for callers that need a low-level \"bypass the guard\" write path.\n */\nexport function getRawSessionAppendMessage(\n sessionManager: SessionManager,\n): SessionManager['appendMessage'] {\n const stored = (sessionManager as SessionManagerWithRawAppend)[RAW_APPEND_MESSAGE];\n return stored ?? sessionManager.appendMessage.bind(sessionManager);\n}\n\n// ── Internal: persistence + truncation helpers ──────────────────────────────\n\nfunction resolveMaxToolResultChars(opts: { maxToolResultChars?: number }): number {\n return Math.max(1, opts.maxToolResultChars ?? DEFAULT_MAX_LIVE_TOOL_RESULT_CHARS);\n}\n\nfunction capToolResultSize(msg: AgentMessage, maxChars: number): AgentMessage {\n if ((msg as { role?: string }).role !== 'toolResult') {\n return msg;\n }\n return truncateToolResultMessage(msg, maxChars, {\n suffix: (truncatedChars) => formatContextLimitTruncationNotice(truncatedChars),\n minKeepChars: 2_000,\n });\n}\n\n// `details` is runtime/UI metadata, not model-visible tool output. Keep the\n// session JSONL useful for debugging without letting metadata blobs dominate\n// disk, replay repair, transcript broadcasts, or future tooling that reads raw\n// sessions. Model-visible text belongs in tool result `content`.\nconst MAX_PERSISTED_TOOL_RESULT_DETAILS_BYTES = 8_192;\nconst MAX_PERSISTED_DETAIL_STRING_CHARS = 2_000;\nconst MAX_PERSISTED_DETAIL_SESSION_COUNT = 10;\nconst MAX_PERSISTED_DETAIL_FALLBACK_STRING_CHARS = 200;\n\nfunction originalDetailsSizeFields(size: BoundedJsonUtf8Bytes): Record<string, number> {\n return size.complete\n ? { originalDetailsBytes: size.bytes }\n : { originalDetailsBytesAtLeast: size.bytes };\n}\n\nfunction truncatePersistedDetailString(\n value: string,\n maxChars = MAX_PERSISTED_DETAIL_STRING_CHARS,\n): string {\n if (value.length <= maxChars) {\n return value;\n }\n return `${value.slice(0, maxChars)}\\n\\n[xopc persisted detail truncated: ${\n value.length - maxChars\n } chars omitted]`;\n}\n\nfunction sanitizePersistedSessionDetail(value: unknown): unknown {\n if (!value || typeof value !== 'object') {\n return value;\n }\n const src = value as Record<string, unknown>;\n const out: Record<string, unknown> = {};\n for (const key of [\n 'sessionId',\n 'status',\n 'pid',\n 'startedAt',\n 'endedAt',\n 'runtimeMs',\n 'cwd',\n 'name',\n 'truncated',\n 'exitCode',\n 'exitSignal',\n ]) {\n const field = src[key];\n if (field !== undefined) {\n out[key] = typeof field === 'string' ? truncatePersistedDetailString(field, 500) : field;\n }\n }\n if (typeof src.command === 'string') {\n out.command = truncatePersistedDetailString(src.command, 500);\n }\n return out;\n}\n\nfunction buildPersistedDetailsFallback(\n src: Record<string, unknown> | undefined,\n originalSize: BoundedJsonUtf8Bytes,\n sanitizedBytes?: number,\n): Record<string, unknown> {\n const fallback: Record<string, unknown> = {\n persistedDetailsTruncated: true,\n finalDetailsTruncated: true,\n ...originalDetailsSizeFields(originalSize),\n };\n if (sanitizedBytes !== undefined) {\n fallback.sanitizedDetailsBytes = sanitizedBytes;\n }\n if (src) {\n fallback.originalDetailKeys = firstEnumerableOwnKeys(src, 40);\n for (const key of ['status', 'sessionId', 'pid', 'exitCode', 'exitSignal', 'truncated']) {\n const field = src[key];\n if (field !== undefined) {\n fallback[key] =\n typeof field === 'string'\n ? truncatePersistedDetailString(field, MAX_PERSISTED_DETAIL_FALLBACK_STRING_CHARS)\n : field;\n }\n }\n }\n return fallback;\n}\n\nfunction enforcePersistedDetailsByteCap(\n value: Record<string, unknown>,\n src: Record<string, unknown> | undefined,\n originalSize: BoundedJsonUtf8Bytes,\n): Record<string, unknown> {\n const sanitizedBytes = jsonUtf8BytesOrInfinity(value);\n if (sanitizedBytes <= MAX_PERSISTED_TOOL_RESULT_DETAILS_BYTES) {\n return value;\n }\n const fallback = buildPersistedDetailsFallback(src, originalSize, sanitizedBytes);\n if (jsonUtf8BytesOrInfinity(fallback) <= MAX_PERSISTED_TOOL_RESULT_DETAILS_BYTES) {\n return fallback;\n }\n return {\n persistedDetailsTruncated: true,\n finalDetailsTruncated: true,\n ...originalDetailsSizeFields(originalSize),\n sanitizedDetailsBytes: sanitizedBytes,\n };\n}\n\nfunction sanitizeToolResultDetailsForPersistence(details: unknown): unknown {\n if (details === undefined || details === null) {\n return details;\n }\n const originalSize = boundedJsonUtf8Bytes(details, MAX_PERSISTED_TOOL_RESULT_DETAILS_BYTES);\n if (originalSize.complete && originalSize.bytes <= MAX_PERSISTED_TOOL_RESULT_DETAILS_BYTES) {\n return details;\n }\n if (typeof details !== 'object') {\n return enforcePersistedDetailsByteCap(\n {\n persistedDetailsTruncated: true,\n ...originalDetailsSizeFields(originalSize),\n valueType: typeof details,\n },\n undefined,\n originalSize,\n );\n }\n const src = details as Record<string, unknown>;\n const out: Record<string, unknown> = {\n persistedDetailsTruncated: true,\n ...originalDetailsSizeFields(originalSize),\n originalDetailKeys: firstEnumerableOwnKeys(src, 40),\n };\n for (const key of [\n 'status',\n 'sessionId',\n 'pid',\n 'startedAt',\n 'endedAt',\n 'cwd',\n 'name',\n 'exitCode',\n 'exitSignal',\n 'retryInMs',\n 'total',\n 'totalLines',\n 'totalChars',\n 'truncated',\n 'fullOutputPath',\n 'truncation',\n ]) {\n const field = src[key];\n if (field !== undefined) {\n out[key] = typeof field === 'string' ? truncatePersistedDetailString(field) : field;\n }\n }\n if (typeof src.tail === 'string') {\n out.tail = truncatePersistedDetailString(src.tail);\n }\n if (Array.isArray(src.sessions)) {\n out.sessions = src.sessions\n .slice(0, MAX_PERSISTED_DETAIL_SESSION_COUNT)\n .map(sanitizePersistedSessionDetail);\n if (src.sessions.length > MAX_PERSISTED_DETAIL_SESSION_COUNT) {\n out.sessionsTruncated = src.sessions.length - MAX_PERSISTED_DETAIL_SESSION_COUNT;\n }\n }\n return enforcePersistedDetailsByteCap(out, src, originalSize);\n}\n\nfunction capToolResultDetails(msg: AgentMessage): AgentMessage {\n if ((msg as { role?: string }).role !== 'toolResult') {\n return msg;\n }\n const details = (msg as { details?: unknown }).details;\n const sanitizedDetails = sanitizeToolResultDetailsForPersistence(details);\n if (sanitizedDetails === details) {\n return msg;\n }\n const next = { ...msg } as AgentMessage & { details?: unknown };\n next.details = sanitizedDetails;\n return next;\n}\n\nfunction capToolResultForPersistence(msg: AgentMessage, maxChars: number): AgentMessage {\n return capToolResultDetails(capToolResultSize(msg, maxChars));\n}\n\nfunction normalizePersistedToolResultName(\n message: AgentMessage,\n fallbackName?: string,\n): AgentMessage {\n if ((message as { role?: unknown }).role !== 'toolResult') {\n return message;\n }\n const toolResult = message as Extract<AgentMessage, { role: 'toolResult' }>;\n const rawToolName = (toolResult as { toolName?: unknown }).toolName;\n const normalizedToolName = normalizeOptionalString(rawToolName);\n if (normalizedToolName) {\n if (rawToolName === normalizedToolName) {\n return toolResult;\n }\n return { ...toolResult, toolName: normalizedToolName };\n }\n\n const normalizedFallback = normalizeOptionalString(fallbackName);\n if (normalizedFallback) {\n return { ...toolResult, toolName: normalizedFallback };\n }\n\n if (typeof rawToolName === 'string') {\n return { ...toolResult, toolName: 'unknown' };\n }\n return toolResult;\n}\n\n// ── Internal: raw-append symbol storage ─────────────────────────────────────\n\nconst RAW_APPEND_MESSAGE = Symbol('xopc.session.rawAppendMessage');\n\ntype SessionManagerWithRawAppend = SessionManager & {\n [RAW_APPEND_MESSAGE]?: SessionManager['appendMessage'];\n};\n\nfunction rememberOriginalAppend(\n sessionManager: SessionManager,\n): SessionManager['appendMessage'] {\n const tagged = sessionManager as SessionManagerWithRawAppend;\n const stored = tagged[RAW_APPEND_MESSAGE];\n if (stored) {\n return stored;\n }\n const original = sessionManager.appendMessage.bind(sessionManager);\n tagged[RAW_APPEND_MESSAGE] = original;\n return original;\n}\n\n// ── Internal: pending tool-call state ──────────────────────────────────────\n\ntype PendingToolCall = { id: string; name?: string };\n\nclass PendingToolCallTracker {\n private readonly pending = new Map<string, string | undefined>();\n\n size(): number {\n return this.pending.size;\n }\n\n getToolName(id: string): string | undefined {\n return this.pending.get(id);\n }\n\n delete(id: string): void {\n this.pending.delete(id);\n }\n\n clear(): void {\n this.pending.clear();\n }\n\n trackToolCalls(calls: readonly PendingToolCall[]): void {\n for (const call of calls) {\n this.pending.set(call.id, call.name);\n }\n }\n\n entries(): IterableIterator<[string, string | undefined]> {\n return this.pending.entries();\n }\n\n getPendingIds(): string[] {\n return Array.from(this.pending.keys());\n }\n\n shouldFlushForSanitizedDrop(): boolean {\n return this.pending.size > 0;\n }\n\n shouldFlushBeforeNonToolResult(nextRole: unknown, toolCallCount: number): boolean {\n return this.pending.size > 0 && (toolCallCount === 0 || nextRole !== 'assistant');\n }\n\n shouldFlushBeforeNewToolCalls(toolCallCount: number): boolean {\n return this.pending.size > 0 && toolCallCount > 0;\n }\n}\n\n// ── ToolResultGuard class ──────────────────────────────────────────────────\n\nclass ToolResultGuard {\n private readonly sessionManager: SessionManager;\n private readonly opts: ToolResultGuardOptions;\n private readonly pending = new PendingToolCallTracker();\n private readonly originalAppend: SessionManager['appendMessage'];\n private readonly allowSyntheticToolResults: boolean;\n private readonly maxToolResultChars: number;\n\n constructor(sessionManager: SessionManager, opts: ToolResultGuardOptions) {\n this.sessionManager = sessionManager;\n this.opts = opts;\n this.originalAppend = rememberOriginalAppend(sessionManager);\n this.allowSyntheticToolResults = opts.allowSyntheticToolResults ?? true;\n this.maxToolResultChars = resolveMaxToolResultChars(opts);\n }\n\n /** Monkey-patch the session manager so pi-coding-agent's internal appendMessage flows through us. */\n attach(): void {\n const bound = this.guardedAppend.bind(this);\n this.sessionManager.appendMessage = bound as SessionManager['appendMessage'];\n }\n\n flushPending(): void {\n if (this.pending.size() === 0) {\n return;\n }\n if (this.allowSyntheticToolResults) {\n for (const [id, name] of this.pending.entries()) {\n const synthetic = makeMissingToolResult({\n toolCallId: id,\n toolName: name,\n text: this.opts.missingToolResultText,\n });\n const flushed = this.applyBeforeWriteHook(\n this.persistToolResult(this.persistMessage(synthetic), {\n toolCallId: id,\n toolName: name,\n isSynthetic: true,\n }),\n );\n if (flushed) {\n this.originalAppend(capToolResultForPersistence(flushed, this.maxToolResultChars) as never);\n }\n }\n }\n this.pending.clear();\n }\n\n clearPending(): void {\n this.pending.clear();\n }\n\n getPendingIds(): string[] {\n return this.pending.getPendingIds();\n }\n\n private persistMessage(message: AgentMessage): AgentMessage {\n const transformer = this.opts.transformMessageForPersistence;\n return transformer ? transformer(message) : message;\n }\n\n private persistToolResult(\n message: AgentMessage,\n meta: { toolCallId?: string; toolName?: string; isSynthetic?: boolean },\n ): AgentMessage {\n const transformer = this.opts.transformToolResultForPersistence;\n return transformer ? transformer(message, meta) : message;\n }\n\n /**\n * Run the before_message_write hook. Returns the (possibly modified) message,\n * or null if the message should be blocked.\n */\n private applyBeforeWriteHook(msg: AgentMessage): AgentMessage | null {\n const beforeWrite = this.opts.beforeMessageWriteHook;\n if (!beforeWrite) {\n return msg;\n }\n const result = beforeWrite({ message: msg });\n if (result?.block) {\n return null;\n }\n if (result?.message) {\n return result.message;\n }\n return msg;\n }\n\n private guardedAppend(message: AgentMessage): unknown {\n let nextMessage = message;\n const role = (message as { role?: unknown }).role;\n if (role === 'assistant') {\n const sanitized = sanitizeToolCallInputs([message], {\n allowedToolNames: this.opts.allowedToolNames,\n });\n if (sanitized.length === 0) {\n if (this.pending.shouldFlushForSanitizedDrop()) {\n this.flushPending();\n }\n return undefined;\n }\n nextMessage = sanitized[0];\n }\n const nextRole = (nextMessage as { role?: unknown }).role;\n\n if (nextRole === 'toolResult') {\n const id = extractToolResultId(nextMessage as Extract<AgentMessage, { role: 'toolResult' }>);\n const toolName = id ? this.pending.getToolName(id) : undefined;\n if (id) {\n this.pending.delete(id);\n }\n const normalizedToolResult = normalizePersistedToolResultName(nextMessage, toolName);\n // Apply hard size cap before persistence to prevent oversized tool results\n // from consuming the entire context window on subsequent LLM calls.\n const capped = capToolResultForPersistence(\n this.persistMessage(normalizedToolResult),\n this.maxToolResultChars,\n );\n const persisted = this.applyBeforeWriteHook(\n this.persistToolResult(capped, {\n toolCallId: id ?? undefined,\n toolName,\n isSynthetic: false,\n }),\n );\n if (!persisted) {\n return undefined;\n }\n const finalToolResult = capToolResultForPersistence(persisted, this.maxToolResultChars);\n const result = this.originalAppend(finalToolResult as never);\n\n if (this.opts.sessionKey) {\n emitSessionTranscriptUpdate({\n sessionKey: this.opts.sessionKey,\n message: finalToolResult,\n messageId: typeof result === 'string' ? result : undefined,\n });\n }\n\n return result;\n }\n\n // Skip tool call extraction for aborted/errored assistant messages.\n // When stopReason is \"error\" or \"aborted\", the tool_use blocks may be incomplete\n // and should not have synthetic tool_results created. Creating synthetic results\n // for incomplete tool calls causes API 400 errors:\n // \"unexpected tool_use_id found in tool_result blocks\"\n // This matches the behavior in repairToolUseResultPairing (session-transcript-repair.ts)\n const stopReason = (nextMessage as { stopReason?: string }).stopReason;\n const toolCalls =\n nextRole === 'assistant' && stopReason !== 'aborted' && stopReason !== 'error'\n ? extractToolCallsFromAssistant(nextMessage as Extract<AgentMessage, { role: 'assistant' }>)\n : [];\n\n // Always clear pending tool call state before appending non-tool-result messages.\n // flushPendingToolResults() only inserts synthetic results when allowSyntheticToolResults\n // is true; it always clears the pending map. Without this, providers that disable\n // synthetic results (e.g. OpenAI) accumulate stale pending state when a user message\n // interrupts in-flight tool calls, leaving orphaned tool_use blocks in the transcript\n // that cause API 400 errors on subsequent requests.\n if (this.pending.shouldFlushBeforeNonToolResult(nextRole, toolCalls.length)) {\n this.flushPending();\n }\n // If new tool calls arrive while older ones are pending, flush the old ones first.\n if (this.pending.shouldFlushBeforeNewToolCalls(toolCalls.length)) {\n this.flushPending();\n }\n\n const finalMessage = this.applyBeforeWriteHook(this.persistMessage(nextMessage));\n if (!finalMessage) {\n return undefined;\n }\n const result = this.originalAppend(finalMessage as never);\n\n if (this.opts.sessionKey) {\n emitSessionTranscriptUpdate({\n sessionKey: this.opts.sessionKey,\n message: finalMessage,\n messageId: typeof result === 'string' ? result : undefined,\n });\n }\n\n if (toolCalls.length > 0) {\n this.pending.trackToolCalls(toolCalls);\n }\n\n return result;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite-hydrating-session-manager.js","names":[],"sources":["../../../../src/agent/embedded/sqlite-hydrating-session-manager.ts"],"sourcesContent":["import { SessionManager, type FileEntry } from '@earendil-works/pi-coding-agent';\n\nimport {\n ensureSessionRecord,\n loadTranscriptRowsForSession,\n requireXopcDatabase,\n} from '../../storage/sqlite/index.js';\nimport { storedRowsToFileEntries } from '../../session/stored-rows-to-file-entries.js';\nimport { repairAssistantUsageInSessionManager } from './session-manager-init.js';\n\ntype SessionManagerHydrationTarget = {\n fileEntries: FileEntry[];\n sessionId: string;\n flushed: boolean;\n byId: Map<string, unknown>;\n labelsById: Map<string, unknown>;\n leafId: string | null;\n _buildIndex: () => void;\n};\n\n/**\n * Open an in-memory pi SessionManager hydrated from the SQLite transcript.\n * File persistence is disabled; writes flow through the tool-result guard into SQLite.\n */\nexport function openSqliteHydratingSessionManager(params: {\n sessionKey: string;\n sessionId: string;\n cwd: string;\n}): SessionManager {\n requireXopcDatabase();\n\n ensureSessionRecord(params.sessionKey, params.cwd);\n const rows = loadTranscriptRowsForSession(params.sessionKey);\n const sm = SessionManager.inMemory(params.cwd);\n const entries = storedRowsToFileEntries({\n sessionId: params.sessionId,\n cwd: params.cwd,\n rows,\n });\n\n const internal = sm as unknown as SessionManagerHydrationTarget;\n internal.fileEntries = entries;\n internal.sessionId = params.sessionId;\n internal.flushed = true;\n internal._buildIndex();\n repairAssistantUsageInSessionManager(sm);\n return sm;\n}\n"],"mappings":";;;;;;;;;;;;AAwBA,SAAgB,kCAAkC,QAI/B;AACjB,sBAAqB;AAErB,qBAAoB,OAAO,YAAY,OAAO,IAAI;CAClD,MAAM,OAAO,6BAA6B,OAAO,WAAW;CAC5D,MAAM,KAAK,eAAe,SAAS,OAAO,IAAI;CAC9C,MAAM,UAAU,wBAAwB;EACtC,WAAW,OAAO;EAClB,KAAK,OAAO;EACZ;EACD,CAAC;CAEF,MAAM,WAAW;AACjB,UAAS,cAAc;AACvB,UAAS,YAAY,OAAO;AAC5B,UAAS,UAAU;AACnB,UAAS,aAAa;AACtB,sCAAqC,GAAG;AACxC,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"subscribe-session.js","names":[],"sources":["../../../../src/agent/embedded/subscribe-session.ts"],"sourcesContent":["import type { AgentSession, AgentSessionEvent } from '@earendil-works/pi-coding-agent';\nimport type { AgentEvent } from '@earendil-works/pi-agent-core';\n\nimport { extractTextContent } from '../context/workspace.js';\nimport type { EmbeddedStreamEvent } from './types.js';\n\nexport function subscribeEmbeddedSessionEvents(\n session: AgentSession,\n onEvent: (event: EmbeddedStreamEvent) => void,\n): () => void {\n return session.subscribe((event: AgentSessionEvent) => {\n const base = event as AgentEvent;\n switch (base.type) {\n case 'agent_start':\n onEvent({ type: 'agent_start' });\n break;\n case 'agent_end':\n onEvent({ type: 'agent_end' });\n break;\n case 'message_start': {\n const m = (base as Extract<AgentEvent, { type: 'message_start' }>).message;\n onEvent({ type: 'message_start', message: m });\n break;\n }\n case 'message_update': {\n const u = base as Extract<AgentEvent, { type: 'message_update' }>;\n onEvent({\n type: 'message_update',\n message: u.message,\n assistantMessageEvent: u.assistantMessageEvent,\n });\n break;\n }\n case 'message_end': {\n const m = (base as Extract<AgentEvent, { type: 'message_end' }>).message;\n onEvent({ type: 'message_end', message: m });\n break;\n }\n case 'tool_execution_start': {\n const t = base as Extract<AgentEvent, { type: 'tool_execution_start' }>;\n onEvent({\n type: 'tool_execution_start',\n toolName: t.toolName,\n toolCallId: t.toolCallId,\n args: t.args,\n });\n break;\n }\n case 'tool_execution_end': {\n const t = base as Extract<AgentEvent, { type: 'tool_execution_end' }>;\n onEvent({\n type: 'tool_execution_end',\n toolName: t.toolName,\n toolCallId: t.toolCallId,\n isError: t.isError,\n result: t.result,\n });\n break;\n }\n case 'tool_execution_update': {\n const t = base as Extract<AgentEvent, { type: 'tool_execution_update' }>;\n onEvent({\n type: 'tool_execution_update',\n toolName: t.toolName,\n toolCallId: t.toolCallId,\n args: t.args,\n partialResult: t.partialResult,\n });\n break;\n }\n default:\n break;\n }\n });\n}\n\nexport function lastAssistantPlainText(session: AgentSession): string | undefined {\n const messages = session.agent.state.messages;\n for (let i = messages.length - 1; i >= 0; i--) {\n const msg = messages[i];\n if (msg.role !== 'assistant') {\n continue;\n }\n const content = msg.content;\n if (typeof content === 'string') {\n return content;\n }\n if (Array.isArray(content)) {\n return extractTextContent(content as Array<{ type: string; text?: string }>);\n }\n }\n return undefined;\n}\n"],"mappings":";;AAMA,SAAgB,+BACd,SACA,SACY;AACZ,QAAO,QAAQ,WAAW,UAA6B;EACrD,MAAM,OAAO;AACb,UAAQ,KAAK,MAAb;GACE,KAAK;AACH,YAAQ,EAAE,MAAM,eAAe,CAAC;AAChC;GACF,KAAK;AACH,YAAQ,EAAE,MAAM,aAAa,CAAC;AAC9B;GACF,KAAK,iBAAiB;IACpB,MAAM,IAAK,KAAwD;AACnE,YAAQ;KAAE,MAAM;KAAiB,SAAS;KAAG,CAAC;AAC9C;;GAEF,KAAK,kBAAkB;IACrB,MAAM,IAAI;AACV,YAAQ;KACN,MAAM;KACN,SAAS,EAAE;KACX,uBAAuB,EAAE;KAC1B,CAAC;AACF;;GAEF,KAAK,eAAe;IAClB,MAAM,IAAK,KAAsD;AACjE,YAAQ;KAAE,MAAM;KAAe,SAAS;KAAG,CAAC;AAC5C;;GAEF,KAAK,wBAAwB;IAC3B,MAAM,IAAI;AACV,YAAQ;KACN,MAAM;KACN,UAAU,EAAE;KACZ,YAAY,EAAE;KACd,MAAM,EAAE;KACT,CAAC;AACF;;GAEF,KAAK,sBAAsB;IACzB,MAAM,IAAI;AACV,YAAQ;KACN,MAAM;KACN,UAAU,EAAE;KACZ,YAAY,EAAE;KACd,SAAS,EAAE;KACX,QAAQ,EAAE;KACX,CAAC;AACF;;GAEF,KAAK,yBAAyB;IAC5B,MAAM,IAAI;AACV,YAAQ;KACN,MAAM;KACN,UAAU,EAAE;KACZ,YAAY,EAAE;KACd,MAAM,EAAE;KACR,eAAe,EAAE;KAClB,CAAC;AACF;;GAEF,QACE;;GAEJ;;AAGJ,SAAgB,uBAAuB,SAA2C;CAChF,MAAM,WAAW,QAAQ,MAAM,MAAM;AACrC,MAAK,IAAI,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;EAC7C,MAAM,MAAM,SAAS;AACrB,MAAI,IAAI,SAAS,YACf;EAEF,MAAM,UAAU,IAAI;AACpB,MAAI,OAAO,YAAY,SACrB,QAAO;AAET,MAAI,MAAM,QAAQ,QAAQ,CACxB,QAAO,mBAAmB,QAAkD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"system-prompt-override.js","names":[],"sources":["../../../../src/agent/embedded/system-prompt-override.ts"],"sourcesContent":["import type { AgentSession } from '@earendil-works/pi-coding-agent';\n\nexport function applySystemPromptOverrideToSession(session: AgentSession, override: string): void {\n const prompt = override.trim();\n session.agent.state.systemPrompt = prompt;\n const mutableSession = session as unknown as {\n _baseSystemPrompt?: string;\n _rebuildSystemPrompt?: (toolNames: string[]) => string;\n };\n mutableSession._baseSystemPrompt = prompt;\n mutableSession._rebuildSystemPrompt = () => prompt;\n}\n"],"mappings":";AAEA,SAAgB,mCAAmC,SAAuB,UAAwB;CAChG,MAAM,SAAS,SAAS,MAAM;AAC9B,SAAQ,MAAM,MAAM,eAAe;CACnC,MAAM,iBAAiB;AAIvB,gBAAe,oBAAoB;AACnC,gBAAe,6BAA6B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-result-context-guard.js","names":[],"sources":["../../../../src/agent/embedded/tool-result-context-guard.ts"],"sourcesContent":["export const CONTEXT_LIMIT_TRUNCATION_NOTICE = 'more characters truncated';\n\nexport function formatContextLimitTruncationNotice(truncatedChars: number): string {\n return `[... ${Math.max(1, Math.floor(truncatedChars))} ${CONTEXT_LIMIT_TRUNCATION_NOTICE}]`;\n}\n"],"mappings":";AAAA,MAAa,kCAAkC;AAE/C,SAAgB,mCAAmC,gBAAgC;AACjF,QAAO,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM,eAAe,CAAC,CAAC,GAAG,gCAAgC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-result-truncation.js","names":[],"sources":["../../../../src/agent/embedded/tool-result-truncation.ts"],"sourcesContent":["import type { AgentMessage } from '@earendil-works/pi-agent-core';\nimport type { TextContent } from '@earendil-works/pi-ai';\n\nimport type { Config } from '../../config/schema.js';\nimport { normalizeLowercaseStringOrEmpty } from '../../utils/string-coerce.js';\nimport { formatContextLimitTruncationNotice } from './tool-result-context-guard.js';\n\nconst MAX_TOOL_RESULT_CONTEXT_SHARE = 0.3;\n\nexport const DEFAULT_MAX_LIVE_TOOL_RESULT_CHARS = 16_000;\nexport const HARD_MAX_TOOL_RESULT_CHARS = DEFAULT_MAX_LIVE_TOOL_RESULT_CHARS;\n\nconst MIN_KEEP_CHARS = 2_000;\n\ntype ToolResultTruncationOptions = {\n suffix?: string | ((truncatedChars: number) => string);\n minKeepChars?: number;\n};\n\nconst DEFAULT_SUFFIX = (truncatedChars: number) => formatContextLimitTruncationNotice(truncatedChars);\n\nfunction resolveSuffixFactory(\n suffix: ToolResultTruncationOptions['suffix'],\n): (truncatedChars: number) => string {\n if (typeof suffix === 'function') {\n return suffix;\n }\n if (typeof suffix === 'string') {\n return () => suffix;\n }\n return DEFAULT_SUFFIX;\n}\n\nfunction resolveEffectiveMinKeepChars(params: {\n maxChars: number;\n minKeepChars: number;\n suffixFactory: (truncatedChars: number) => string;\n}): number {\n const suffixFloor = params.suffixFactory(1).length;\n return Math.max(0, Math.min(params.minKeepChars, Math.max(0, params.maxChars - suffixFloor)));\n}\n\nfunction appendBoundedTruncationSuffix(params: {\n keptText: string;\n originalTextLength: number;\n maxChars: number;\n suffixFactory: (truncatedChars: number) => string;\n}): string {\n const build = (keptText: string) =>\n keptText + params.suffixFactory(Math.max(1, params.originalTextLength - keptText.length));\n\n let keptText = params.keptText;\n while (true) {\n const finalText = build(keptText);\n if (finalText.length <= params.maxChars) {\n return finalText;\n }\n if (keptText.length === 0) {\n return finalText.slice(0, params.maxChars);\n }\n const overflow = finalText.length - params.maxChars;\n const nextKeptText = keptText.slice(0, Math.max(0, keptText.length - overflow));\n keptText = nextKeptText.length < keptText.length ? nextKeptText : keptText.slice(0, -1);\n }\n}\n\nconst MIDDLE_OMISSION_MARKER =\n '\\n\\n[... middle content omitted — showing head and tail ...]\\n\\n';\n\nfunction hasImportantTail(text: string): boolean {\n const tail = normalizeLowercaseStringOrEmpty(text.slice(-2000));\n return (\n /\\b(error|exception|failed|fatal|traceback|panic|stack trace|errno|exit code)\\b/.test(tail) ||\n /\\}\\s*$/.test(tail.trim()) ||\n /\\b(total|summary|result|complete|finished|done)\\b/.test(tail)\n );\n}\n\nexport function truncateToolResultText(\n text: string,\n maxChars: number,\n options: ToolResultTruncationOptions = {},\n): string {\n const suffixFactory = resolveSuffixFactory(options.suffix);\n const minKeepChars = resolveEffectiveMinKeepChars({\n maxChars,\n minKeepChars: options.minKeepChars ?? MIN_KEEP_CHARS,\n suffixFactory,\n });\n if (text.length <= maxChars) {\n return text;\n }\n const defaultSuffix = suffixFactory(Math.max(1, text.length - maxChars));\n const budget = Math.max(minKeepChars, maxChars - defaultSuffix.length);\n\n if (hasImportantTail(text) && budget > minKeepChars * 2) {\n const tailBudget = Math.min(Math.floor(budget * 0.3), 4_000);\n const headBudget = budget - tailBudget - MIDDLE_OMISSION_MARKER.length;\n\n if (headBudget > minKeepChars) {\n let headCut = headBudget;\n const headNewline = text.lastIndexOf('\\n', headBudget);\n if (headNewline > headBudget * 0.8) {\n headCut = headNewline;\n }\n\n let tailStart = text.length - tailBudget;\n const tailNewline = text.indexOf('\\n', tailStart);\n if (tailNewline !== -1 && tailNewline < tailStart + tailBudget * 0.2) {\n tailStart = tailNewline + 1;\n }\n\n const keptText = text.slice(0, headCut) + MIDDLE_OMISSION_MARKER + text.slice(tailStart);\n return appendBoundedTruncationSuffix({\n keptText,\n originalTextLength: text.length,\n maxChars,\n suffixFactory,\n });\n }\n }\n\n let cutPoint = budget;\n const lastNewline = text.lastIndexOf('\\n', budget);\n if (lastNewline > budget * 0.8) {\n cutPoint = lastNewline;\n }\n const keptText = text.slice(0, cutPoint);\n return appendBoundedTruncationSuffix({\n keptText,\n originalTextLength: text.length,\n maxChars,\n suffixFactory,\n });\n}\n\nexport function calculateMaxToolResultCharsWithCap(\n contextWindowTokens: number,\n hardCapChars: number,\n): number {\n const maxTokens = Math.floor(contextWindowTokens * MAX_TOOL_RESULT_CONTEXT_SHARE);\n const maxChars = maxTokens * 4;\n return Math.min(maxChars, Math.max(1, hardCapChars));\n}\n\nexport function resolveLiveToolResultMaxChars(params: {\n contextWindowTokens: number;\n cfg?: Config;\n agentId?: string | null;\n}): number {\n const configuredCap = DEFAULT_MAX_LIVE_TOOL_RESULT_CHARS;\n return calculateMaxToolResultCharsWithCap(params.contextWindowTokens, configuredCap);\n}\n\nexport function getToolResultTextLength(msg: AgentMessage): number {\n if (!msg || (msg as { role?: string }).role !== 'toolResult') {\n return 0;\n }\n const content = (msg as { content?: unknown }).content;\n if (!Array.isArray(content)) {\n return 0;\n }\n let totalLength = 0;\n for (const block of content) {\n if (block && typeof block === 'object' && (block as { type?: string }).type === 'text') {\n const text = (block as TextContent).text;\n if (typeof text === 'string') {\n totalLength += text.length;\n }\n }\n }\n return totalLength;\n}\n\nexport function truncateToolResultMessage(\n msg: AgentMessage,\n maxChars: number,\n options: ToolResultTruncationOptions = {},\n): AgentMessage {\n const suffixFactory = resolveSuffixFactory(options.suffix);\n const minKeepChars = resolveEffectiveMinKeepChars({\n maxChars,\n minKeepChars: options.minKeepChars ?? MIN_KEEP_CHARS,\n suffixFactory,\n });\n const content = (msg as { content?: unknown }).content;\n if (!Array.isArray(content)) {\n return msg;\n }\n\n const totalTextChars = getToolResultTextLength(msg);\n if (totalTextChars <= maxChars) {\n return msg;\n }\n\n const newContent = content.map((block: unknown) => {\n if (!block || typeof block !== 'object' || (block as { type?: string }).type !== 'text') {\n return block;\n }\n const textBlock = block as TextContent;\n if (typeof textBlock.text !== 'string') {\n return block;\n }\n const blockShare = textBlock.text.length / totalTextChars;\n const defaultSuffix = suffixFactory(\n Math.max(1, textBlock.text.length - Math.floor(maxChars * blockShare)),\n );\n const proportionalBudget = Math.floor(maxChars * blockShare);\n const blockBudget = Math.max(\n 1,\n Math.min(maxChars, Math.max(minKeepChars + defaultSuffix.length, proportionalBudget)),\n );\n return Object.assign({}, textBlock, {\n text: truncateToolResultText(textBlock.text, blockBudget, {\n suffix: suffixFactory,\n minKeepChars,\n }),\n });\n });\n\n return { ...msg, content: newContent } as AgentMessage;\n}\n"],"mappings":";;;oBAI+E;AAG/E,MAAM,gCAAgC;AAEtC,MAAa,qCAAqC;AAClD,MAAa,6BAA6B;AAE1C,MAAM,iBAAiB;AAOvB,MAAM,kBAAkB,mBAA2B,mCAAmC,eAAe;AAErG,SAAS,qBACP,QACoC;AACpC,KAAI,OAAO,WAAW,WACpB,QAAO;AAET,KAAI,OAAO,WAAW,SACpB,cAAa;AAEf,QAAO;;AAGT,SAAS,6BAA6B,QAI3B;CACT,MAAM,cAAc,OAAO,cAAc,EAAE,CAAC;AAC5C,QAAO,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,cAAc,KAAK,IAAI,GAAG,OAAO,WAAW,YAAY,CAAC,CAAC;;AAG/F,SAAS,8BAA8B,QAK5B;CACT,MAAM,SAAS,aACb,WAAW,OAAO,cAAc,KAAK,IAAI,GAAG,OAAO,qBAAqB,SAAS,OAAO,CAAC;CAE3F,IAAI,WAAW,OAAO;AACtB,QAAO,MAAM;EACX,MAAM,YAAY,MAAM,SAAS;AACjC,MAAI,UAAU,UAAU,OAAO,SAC7B,QAAO;AAET,MAAI,SAAS,WAAW,EACtB,QAAO,UAAU,MAAM,GAAG,OAAO,SAAS;EAE5C,MAAM,WAAW,UAAU,SAAS,OAAO;EAC3C,MAAM,eAAe,SAAS,MAAM,GAAG,KAAK,IAAI,GAAG,SAAS,SAAS,SAAS,CAAC;AAC/E,aAAW,aAAa,SAAS,SAAS,SAAS,eAAe,SAAS,MAAM,GAAG,GAAG;;;AAI3F,MAAM,yBACJ;AAEF,SAAS,iBAAiB,MAAuB;CAC/C,MAAM,OAAO,gCAAgC,KAAK,MAAM,KAAM,CAAC;AAC/D,QACE,iFAAiF,KAAK,KAAK,IAC3F,SAAS,KAAK,KAAK,MAAM,CAAC,IAC1B,oDAAoD,KAAK,KAAK;;AAIlE,SAAgB,uBACd,MACA,UACA,UAAuC,EAAE,EACjC;CACR,MAAM,gBAAgB,qBAAqB,QAAQ,OAAO;CAC1D,MAAM,eAAe,6BAA6B;EAChD;EACA,cAAc,QAAQ,gBAAgB;EACtC;EACD,CAAC;AACF,KAAI,KAAK,UAAU,SACjB,QAAO;CAET,MAAM,gBAAgB,cAAc,KAAK,IAAI,GAAG,KAAK,SAAS,SAAS,CAAC;CACxE,MAAM,SAAS,KAAK,IAAI,cAAc,WAAW,cAAc,OAAO;AAEtE,KAAI,iBAAiB,KAAK,IAAI,SAAS,eAAe,GAAG;EACvD,MAAM,aAAa,KAAK,IAAI,KAAK,MAAM,SAAS,GAAI,EAAE,IAAM;EAC5D,MAAM,aAAa,SAAS,aAAa;AAEzC,MAAI,aAAa,cAAc;GAC7B,IAAI,UAAU;GACd,MAAM,cAAc,KAAK,YAAY,MAAM,WAAW;AACtD,OAAI,cAAc,aAAa,GAC7B,WAAU;GAGZ,IAAI,YAAY,KAAK,SAAS;GAC9B,MAAM,cAAc,KAAK,QAAQ,MAAM,UAAU;AACjD,OAAI,gBAAgB,MAAM,cAAc,YAAY,aAAa,GAC/D,aAAY,cAAc;AAI5B,UAAO,8BAA8B;IACnC,UAFe,KAAK,MAAM,GAAG,QAAQ,GAAG,yBAAyB,KAAK,MAAM,UAAU;IAGtF,oBAAoB,KAAK;IACzB;IACA;IACD,CAAC;;;CAIN,IAAI,WAAW;CACf,MAAM,cAAc,KAAK,YAAY,MAAM,OAAO;AAClD,KAAI,cAAc,SAAS,GACzB,YAAW;AAGb,QAAO,8BAA8B;EACnC,UAFe,KAAK,MAAM,GAAG,SAErB;EACR,oBAAoB,KAAK;EACzB;EACA;EACD,CAAC;;AAGJ,SAAgB,mCACd,qBACA,cACQ;CAER,MAAM,WADY,KAAK,MAAM,sBAAsB,8BACzB,GAAG;AAC7B,QAAO,KAAK,IAAI,UAAU,KAAK,IAAI,GAAG,aAAa,CAAC;;AAGtD,SAAgB,8BAA8B,QAInC;CACT,MAAM,gBAAgB;AACtB,QAAO,mCAAmC,OAAO,qBAAqB,cAAc;;AAGtF,SAAgB,wBAAwB,KAA2B;AACjE,KAAI,CAAC,OAAQ,IAA0B,SAAS,aAC9C,QAAO;CAET,MAAM,UAAW,IAA8B;AAC/C,KAAI,CAAC,MAAM,QAAQ,QAAQ,CACzB,QAAO;CAET,IAAI,cAAc;AAClB,MAAK,MAAM,SAAS,QAClB,KAAI,SAAS,OAAO,UAAU,YAAa,MAA4B,SAAS,QAAQ;EACtF,MAAM,OAAQ,MAAsB;AACpC,MAAI,OAAO,SAAS,SAClB,gBAAe,KAAK;;AAI1B,QAAO;;AAGT,SAAgB,0BACd,KACA,UACA,UAAuC,EAAE,EAC3B;CACd,MAAM,gBAAgB,qBAAqB,QAAQ,OAAO;CAC1D,MAAM,eAAe,6BAA6B;EAChD;EACA,cAAc,QAAQ,gBAAgB;EACtC;EACD,CAAC;CACF,MAAM,UAAW,IAA8B;AAC/C,KAAI,CAAC,MAAM,QAAQ,QAAQ,CACzB,QAAO;CAGT,MAAM,iBAAiB,wBAAwB,IAAI;AACnD,KAAI,kBAAkB,SACpB,QAAO;CAGT,MAAM,aAAa,QAAQ,KAAK,UAAmB;AACjD,MAAI,CAAC,SAAS,OAAO,UAAU,YAAa,MAA4B,SAAS,OAC/E,QAAO;EAET,MAAM,YAAY;AAClB,MAAI,OAAO,UAAU,SAAS,SAC5B,QAAO;EAET,MAAM,aAAa,UAAU,KAAK,SAAS;EAC3C,MAAM,gBAAgB,cACpB,KAAK,IAAI,GAAG,UAAU,KAAK,SAAS,KAAK,MAAM,WAAW,WAAW,CAAC,CACvE;EACD,MAAM,qBAAqB,KAAK,MAAM,WAAW,WAAW;EAC5D,MAAM,cAAc,KAAK,IACvB,GACA,KAAK,IAAI,UAAU,KAAK,IAAI,eAAe,cAAc,QAAQ,mBAAmB,CAAC,CACtF;AACD,SAAO,OAAO,OAAO,EAAE,EAAE,WAAW,EAClC,MAAM,uBAAuB,UAAU,MAAM,aAAa;GACxD,QAAQ;GACR;GACD,CAAC,EACH,CAAC;GACF;AAEF,QAAO;EAAE,GAAG;EAAK,SAAS;EAAY"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xopc-auth-storage.js","names":[],"sources":["../../../../src/agent/embedded/xopc-auth-storage.ts"],"sourcesContent":["import { InMemoryCredentialStore } from '@earendil-works/pi-ai';\nimport { ModelRuntime } from '@earendil-works/pi-coding-agent';\n\nimport { resolveProviderApiKeySync } from '../../auth/sync-provider-auth.js';\nimport { resolveModelsJsonPath } from '../../config/paths.js';\nimport { getApiKeySync } from '../../providers/index.js';\n\n/**\n * Resolve API keys the same way as {@link AgentManager} / gateway settings:\n * auth-profiles (agent + global), OAuth files, models.json, then env.\n */\nexport function resolveXopcProviderApiKey(providerId: string): string | undefined {\n return resolveProviderApiKeySync(providerId) ?? getApiKeySync(providerId);\n}\n\n/**\n * pi-coding-agent {@link createAgentSession} defaults to `~/.pi/agent/auth.json` and env.\n * Gateway / webchat turns inject xopc credentials through {@link applyXopcProviderApiKey}.\n */\nexport function createEmbeddedCredentialStore(): InMemoryCredentialStore {\n return new InMemoryCredentialStore();\n}\n\n/** Create the pi model runtime used by embedded gateway / channel turns. */\nexport function createEmbeddedModelRuntime(): Promise<ModelRuntime> {\n return ModelRuntime.create({\n credentials: createEmbeddedCredentialStore(),\n modelsPath: resolveModelsJsonPath(),\n });\n}\n\n/**\n * Inject the resolved key as a runtime override (highest-priority, in-memory only) before\n * the session starts so request-time auth resolution finds it.\n */\nexport async function applyXopcProviderApiKey(\n modelRuntime: Pick<ModelRuntime, 'setRuntimeApiKey'>,\n providerId: string,\n): Promise<void> {\n const key = resolveXopcProviderApiKey(providerId);\n if (key && key !== 'extension-managed') {\n await modelRuntime.setRuntimeApiKey(providerId, key);\n }\n}\n"],"mappings":";;;;;;yBAG6E;YACf;gBACL;;;;;AAMzD,SAAgB,0BAA0B,YAAwC;AAChF,QAAO,0BAA0B,WAAW,IAAI,cAAc,WAAW;;;;;;AAO3E,SAAgB,gCAAyD;AACvE,QAAO,IAAI,yBAAyB;;;AAItC,SAAgB,6BAAoD;AAClE,QAAO,aAAa,OAAO;EACzB,aAAa,+BAA+B;EAC5C,YAAY,uBAAuB;EACpC,CAAC;;;;;;AAOJ,eAAsB,wBACpB,cACA,YACe;CACf,MAAM,MAAM,0BAA0B,WAAW;AACjD,KAAI,OAAO,QAAQ,oBACjB,OAAM,aAAa,iBAAiB,YAAY,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xopc-stream-bridge.js","names":[],"sources":["../../../../src/agent/embedded/xopc-stream-bridge.ts"],"sourcesContent":["import type { Model, Api, Context, SimpleStreamOptions } from '@earendil-works/pi-ai';\nimport type { StreamFn } from '@earendil-works/pi-agent-core';\n\nimport { EXTENSION_PROVIDER_BASE_URL } from '../../providers/index.js';\nimport { createExtensionAwareStreamFn } from '../../providers/extension-stream-bridge.js';\n\n/**\n * pi-coding-agent's default {@link createAgentSession} streamFn always routes through\n * pi-ai's HTTP `streamSimple`, so xopc plugin providers (whose models carry the sentinel\n * `EXTENSION_PROVIDER_BASE_URL`) never reach their {@link ProviderPluginRegistry}\n * implementation. Wrap the original streamFn so plugin models go through xopc's bridge\n * and everything else falls through to the original auth-aware streamFn.\n *\n * Use this by reassigning {@link Agent.streamFn} after `createAgentSession` returns.\n */\nexport function wrapStreamFnForXopcExtensions(originalStreamFn: StreamFn): StreamFn {\n const extensionStreamFn = createExtensionAwareStreamFn();\n\n return ((model: Model<Api>, context: Context, options?: SimpleStreamOptions) => {\n if (model.baseUrl === EXTENSION_PROVIDER_BASE_URL) {\n return extensionStreamFn(model, context, options);\n }\n return originalStreamFn(model, context, options);\n }) as StreamFn;\n}\n"],"mappings":";;;;gBAGuE;;;;;;;;;;AAYvE,SAAgB,8BAA8B,kBAAsC;CAClF,MAAM,oBAAoB,8BAA8B;AAExD,UAAS,OAAmB,SAAkB,YAAkC;AAC9E,MAAI,MAAM,YAAA,8BACR,QAAO,kBAAkB,OAAO,SAAS,QAAQ;AAEnD,SAAO,iBAAiB,OAAO,SAAS,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xopc-tools-bridge.js","names":[],"sources":["../../../../src/agent/embedded/xopc-tools-bridge.ts"],"sourcesContent":["import type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { ToolDefinition } from '@earendil-works/pi-coding-agent';\n\nconst APPLY_PATCH_BEGIN_MARKER = '*** Begin Patch';\nconst APPLY_PATCH_END_MARKER = '*** End Patch';\n\nexport type ApplyPatchEnvelopeError = {\n code: 'invalid_patch_envelope';\n field: 'patch';\n issue: 'missing_patch' | 'first_line' | 'control_line' | 'last_line';\n expected: string;\n received?: string;\n retryHint: string;\n};\n\nconst TOOL_PROMPT_HINTS: Record<string, { promptSnippet?: string; promptGuidelines?: string[] }> = {\n read_file: {\n promptSnippet: 'Read targeted file contents',\n promptGuidelines: ['Use read_file to inspect source files before editing.'],\n },\n write_file: {\n promptSnippet: 'Create new files or intentional complete rewrites',\n promptGuidelines: ['Prefer apply_patch for code changes. Use write_file only for non-code artifacts or deliberate full-file rewrites.'],\n },\n apply_patch: {\n promptSnippet: 'Apply patches using the exact apply_patch envelope',\n promptGuidelines: [\n 'Use apply_patch for source edits. Keep patches small and verify with exec_command.',\n 'The patch must start exactly with `*** Begin Patch` and end exactly with `*** End Patch`.',\n 'Patch control lines must not end in ` ***`; do not wrap the patch in a Markdown code fence or add prose.',\n 'Use this shape: `*** Begin Patch\\\\n*** Update File: path\\\\n@@\\\\n-old\\\\n+new\\\\n*** End Patch`.',\n 'If apply_patch rejects the envelope, regenerate the complete patch from this exact shape instead of repeating it.',\n ],\n },\n exec_command: {\n promptSnippet: 'Run tests, type checks, builds, package scripts, and safe inspection commands',\n promptGuidelines: ['Use exec_command for verification and safe inspection, not routine file editing.'],\n },\n update_plan: {\n promptSnippet: 'Update the visible multi-step coding plan',\n promptGuidelines: ['Use update_plan for multi-step coding work and keep the active step current.'],\n },\n grep: {\n promptSnippet: 'Search file contents for literals, errors, config values, and docs',\n },\n find: {\n promptSnippet: 'Find files by glob pattern',\n },\n};\n\nexport function validateApplyPatchEnvelope(params: unknown): ApplyPatchEnvelopeError | null {\n if (!params || typeof params !== 'object' || Array.isArray(params)) {\n return {\n code: 'invalid_patch_envelope',\n field: 'patch',\n issue: 'missing_patch',\n expected: APPLY_PATCH_BEGIN_MARKER,\n retryHint: 'Pass a patch string beginning with the exact marker `*** Begin Patch`.',\n };\n }\n\n const patch = (params as { patch?: unknown }).patch;\n if (typeof patch !== 'string') {\n return {\n code: 'invalid_patch_envelope',\n field: 'patch',\n issue: 'missing_patch',\n expected: APPLY_PATCH_BEGIN_MARKER,\n retryHint: 'Pass a patch string beginning with the exact marker `*** Begin Patch`.',\n };\n }\n\n const lines = patch.split(/\\r?\\n/);\n const firstLine = lines[0] ?? '';\n if (firstLine !== APPLY_PATCH_BEGIN_MARKER) {\n return {\n code: 'invalid_patch_envelope',\n field: 'patch',\n issue: 'first_line',\n expected: APPLY_PATCH_BEGIN_MARKER,\n received: firstLine,\n retryHint: 'Use `*** Begin Patch` exactly. Do not add trailing ` ***`, prose, or a Markdown code fence.',\n };\n }\n\n const malformedControlLine = lines.slice(1, -1).find((line) => line.startsWith('*** ') && line.endsWith(' ***'));\n if (malformedControlLine) {\n return {\n code: 'invalid_patch_envelope',\n field: 'patch',\n issue: 'control_line',\n expected: malformedControlLine.slice(0, -4),\n received: malformedControlLine,\n retryHint: 'Patch control lines must not end in ` ***`. Remove the trailing stars from this control line.',\n };\n }\n\n const lastLine = lines.at(-1) ?? '';\n if (lastLine !== APPLY_PATCH_END_MARKER) {\n return {\n code: 'invalid_patch_envelope',\n field: 'patch',\n issue: 'last_line',\n expected: APPLY_PATCH_END_MARKER,\n received: lastLine,\n retryHint: 'End the patch with `*** End Patch` exactly. Do not add trailing ` ***` or prose.',\n };\n }\n\n return null;\n}\n\nfunction invalidApplyPatchEnvelopeResult(error: ApplyPatchEnvelopeError) {\n const received = error.received === undefined ? '' : ` Received: ${JSON.stringify(error.received)}.`;\n return {\n content: [{\n type: 'text' as const,\n text: `apply_patch input rejected (${error.issue}). Expected: ${error.expected}.${received} ${error.retryHint} Use this exact envelope:\\n${APPLY_PATCH_BEGIN_MARKER}\\n*** Update File: path\\n@@\\n-old\\n+new\\n${APPLY_PATCH_END_MARKER}`,\n }],\n details: error,\n };\n}\n\n/** Map xopc {@link AgentTool} instances to pi-coding-agent {@link ToolDefinition}s for `createAgentSession`. */\nexport function xopcToolsToDefinitions(tools: AgentTool[]): ToolDefinition[] {\n return tools.map((tool) => {\n const promptHints = TOOL_PROMPT_HINTS[tool.name];\n const def = {\n name: tool.name,\n label: tool.label ?? tool.name,\n description: tool.description ?? tool.name,\n ...(promptHints?.promptSnippet ? { promptSnippet: promptHints.promptSnippet } : {}),\n ...(promptHints?.promptGuidelines ? { promptGuidelines: promptHints.promptGuidelines } : {}),\n parameters: tool.parameters,\n async execute(\n toolCallId: string,\n params: unknown,\n signal: AbortSignal | undefined,\n onUpdate: unknown,\n ) {\n if (tool.name === 'apply_patch') {\n const envelopeError = validateApplyPatchEnvelope(params);\n if (envelopeError) {\n return invalidApplyPatchEnvelopeResult(envelopeError) as never;\n }\n }\n\n return (tool as { execute: (...a: never[]) => unknown }).execute(\n toolCallId as never,\n params as never,\n signal as never,\n onUpdate as never,\n ) as never;\n },\n };\n return def as unknown as ToolDefinition;\n });\n}\n"],"mappings":";AAGA,MAAM,2BAA2B;AACjC,MAAM,yBAAyB;AAW/B,MAAM,oBAA6F;CACjG,WAAW;EACT,eAAe;EACf,kBAAkB,CAAC,wDAAwD;EAC5E;CACD,YAAY;EACV,eAAe;EACf,kBAAkB,CAAC,oHAAoH;EACxI;CACD,aAAa;EACX,eAAe;EACf,kBAAkB;GAChB;GACA;GACA;GACA;GACA;GACD;EACF;CACD,cAAc;EACZ,eAAe;EACf,kBAAkB,CAAC,mFAAmF;EACvG;CACD,aAAa;EACX,eAAe;EACf,kBAAkB,CAAC,+EAA+E;EACnG;CACD,MAAM,EACJ,eAAe,sEAChB;CACD,MAAM,EACJ,eAAe,8BAChB;CACF;AAED,SAAgB,2BAA2B,QAAiD;AAC1F,KAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,CAChE,QAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,UAAU;EACV,WAAW;EACZ;CAGH,MAAM,QAAS,OAA+B;AAC9C,KAAI,OAAO,UAAU,SACnB,QAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,UAAU;EACV,WAAW;EACZ;CAGH,MAAM,QAAQ,MAAM,MAAM,QAAQ;CAClC,MAAM,YAAY,MAAM,MAAM;AAC9B,KAAI,cAAc,yBAChB,QAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,UAAU;EACV,UAAU;EACV,WAAW;EACZ;CAGH,MAAM,uBAAuB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,SAAS,KAAK,WAAW,OAAO,IAAI,KAAK,SAAS,OAAO,CAAC;AAChH,KAAI,qBACF,QAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,UAAU,qBAAqB,MAAM,GAAG,GAAG;EAC3C,UAAU;EACV,WAAW;EACZ;CAGH,MAAM,WAAW,MAAM,GAAG,GAAG,IAAI;AACjC,KAAI,aAAa,uBACf,QAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,UAAU;EACV,UAAU;EACV,WAAW;EACZ;AAGH,QAAO;;AAGT,SAAS,gCAAgC,OAAgC;CACvE,MAAM,WAAW,MAAM,aAAa,KAAA,IAAY,KAAK,cAAc,KAAK,UAAU,MAAM,SAAS,CAAC;AAClG,QAAO;EACL,SAAS,CAAC;GACR,MAAM;GACN,MAAM,+BAA+B,MAAM,MAAM,eAAe,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,UAAU,6BAA6B,yBAAyB,2CAA2C;GAChN,CAAC;EACF,SAAS;EACV;;;AAIH,SAAgB,uBAAuB,OAAsC;AAC3E,QAAO,MAAM,KAAK,SAAS;EACzB,MAAM,cAAc,kBAAkB,KAAK;AA6B3C,SAAO;GA3BL,MAAM,KAAK;GACX,OAAO,KAAK,SAAS,KAAK;GAC1B,aAAa,KAAK,eAAe,KAAK;GACtC,GAAI,aAAa,gBAAgB,EAAE,eAAe,YAAY,eAAe,GAAG,EAAE;GAClF,GAAI,aAAa,mBAAmB,EAAE,kBAAkB,YAAY,kBAAkB,GAAG,EAAE;GAC3F,YAAY,KAAK;GACjB,MAAM,QACJ,YACA,QACA,QACA,UACA;AACA,QAAI,KAAK,SAAS,eAAe;KAC/B,MAAM,gBAAgB,2BAA2B,OAAO;AACxD,SAAI,cACF,QAAO,gCAAgC,cAAc;;AAIzD,WAAQ,KAAiD,QACvD,YACA,QACA,QACA,SACD;;GAGK;GACV"}