@xopcai/xopc 0.0.383 → 0.0.385

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 (527) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/feishu/src/adapters/cli-login.js +3 -3
  3. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  4. package/dist/extensions/telegram/src/inbound-processor.js +2 -2
  5. package/dist/extensions/telegram/src/outbound-sender.js +1 -1
  6. package/dist/extensions/telegram/src/plugin.js +2 -2
  7. package/dist/extensions/telegram/xopc.extension.json +1 -1
  8. package/dist/extensions/weixin/src/api/api.js +2 -2
  9. package/dist/extensions/weixin/src/auth/accounts.js +12 -12
  10. package/dist/extensions/weixin/src/messaging/debug-mode.js +5 -5
  11. package/dist/extensions/weixin/src/messaging/inbound.js +11 -11
  12. package/dist/gateway/static/root/assets/{activity-store-qv0XyrXk.js → activity-store-CB2X4Gmu.js} +1 -1
  13. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-66HwhyEK.js → agent-avatar-dicebear-Cb9eaXxR.js} +1 -1
  14. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DEV-xtgm.js +1 -0
  15. package/dist/gateway/static/root/assets/{agent-plugin-dialog-CebTVaRM.js → agent-plugin-dialog-DXKc3Luj.js} +1 -1
  16. package/dist/gateway/static/root/assets/agents-DcNxwpJQ.js +77 -0
  17. package/dist/gateway/static/root/assets/{agents-admin-api-BGy9IvSr.js → agents-admin-api-BkULgC6Q.js} +1 -1
  18. package/dist/gateway/static/root/assets/{app-management-settings-panel-BKaU6sGT.js → app-management-settings-panel-X5i0Tz7_.js} +1 -1
  19. package/dist/gateway/static/root/assets/{appearance-settings-E5WFcCdZ.js → appearance-settings-CmHHzquT.js} +1 -1
  20. package/dist/gateway/static/root/assets/{apps-page-CExfOhRj.js → apps-page-ChFA4Zp0.js} +1 -1
  21. package/dist/gateway/static/root/assets/{archive-plugin-BvhxzyLJ.js → archive-plugin-De0ND0oA.js} +1 -1
  22. package/dist/gateway/static/root/assets/{automations-page-CWcNFzvK.js → automations-page-BFqsIqOI.js} +1 -1
  23. package/dist/gateway/static/root/assets/automations-workspace-Blfak-fT.js +6 -0
  24. package/dist/gateway/static/root/assets/{binary-plugins-CD0gYKR2.js → binary-plugins-Do535ZGW.js} +1 -1
  25. package/dist/gateway/static/root/assets/{block-editor-CBVXeGAt.js → block-editor-CpOLG3Co.js} +2 -2
  26. package/dist/gateway/static/root/assets/{browser-automation-inputs-B-Qz_411.js → browser-automation-inputs-B9M1RYTm.js} +1 -1
  27. package/dist/gateway/static/root/assets/browser-automations-page-BSbTJ9j2.js +3 -0
  28. package/dist/gateway/static/root/assets/browser-settings-page-BUlILJrB.js +3 -0
  29. package/dist/gateway/static/root/assets/{capabilities-w2GUuF7V.js → capabilities-2Do3eKMM.js} +1 -1
  30. package/dist/gateway/static/root/assets/{capabilities-CaL5RDm3.js → capabilities-XFwwUNU3.js} +1 -1
  31. package/dist/gateway/static/root/assets/capabilities-page-CeRdkwRf.js +2 -0
  32. package/dist/gateway/static/root/assets/{capabilities-settings-panel-CIvwbZps.js → capabilities-settings-panel-S-cKsGja.js} +6 -6
  33. package/dist/gateway/static/root/assets/{capability-header-actions-DKaZAOWW.js → capability-header-actions-6w8pQhnn.js} +1 -1
  34. package/dist/gateway/static/root/assets/{channels-D82wgP8A.js → channels-DfNTGBmp.js} +1 -1
  35. package/dist/gateway/static/root/assets/{chat-terminal-dock-DuqWzcEq.js → chat-terminal-dock-DnoQHpDc.js} +2 -2
  36. package/dist/gateway/static/root/assets/{computer-settings-page-BiM0fCvO.js → computer-settings-page-7yliE7sG.js} +1 -1
  37. package/dist/gateway/static/root/assets/{connector-service-page-o8kuXjVt.js → connector-service-page-DOLAUFSW.js} +1 -1
  38. package/dist/gateway/static/root/assets/connectors-page-DAsn97XG.js +1 -0
  39. package/dist/gateway/static/root/assets/{date-picker-5tzjG3n1.js → date-picker-DNDqr4Fk.js} +1 -1
  40. package/dist/gateway/static/root/assets/{dependency-picker-DLcDUyep.js → dependency-picker-B5oG7RgE.js} +1 -1
  41. package/dist/gateway/static/root/assets/{desktop-pet-D-w8487x.js → desktop-pet-K7kUCX1O.js} +1 -1
  42. package/dist/gateway/static/root/assets/{desktop-pet-settings-D-w7uF8Q.js → desktop-pet-settings-KgOAuqSh.js} +1 -1
  43. package/dist/gateway/static/root/assets/device-pairing-wizard-DvqniZDm.js +1 -0
  44. package/dist/gateway/static/root/assets/{directory-picker-path-field-B7d2s14w.js → directory-picker-path-field-BmOguLDl.js} +1 -1
  45. package/dist/gateway/static/root/assets/{extension-debug-page-sntm2YRN.js → extension-debug-page-DtHNy4TE.js} +1 -1
  46. package/dist/gateway/static/root/assets/{extension-page-CPbWA4Oy.js → extension-page-DSSuMQxp.js} +1 -1
  47. package/dist/gateway/static/root/assets/{extension-provider-CnDGKMN6.js → extension-provider-nbgU7xBS.js} +1 -1
  48. package/dist/gateway/static/root/assets/{extension-settings-page-PAHKn-Az.js → extension-settings-page-DSd__mNd.js} +1 -1
  49. package/dist/gateway/static/root/assets/{fallback-models-BJaSQNiV.js → fallback-models-D7bjbiwZ.js} +1 -1
  50. package/dist/gateway/static/root/assets/{gateway-config-swr-DIhXgHH-.js → gateway-config-swr-D0tBjSgj.js} +1 -1
  51. package/dist/gateway/static/root/assets/{gateway-realtime-BkgWeVUQ.js → gateway-realtime-BnHraJ3O.js} +1 -1
  52. package/dist/gateway/static/root/assets/gateway-realtime-store-BVriF6Zj.js +1 -0
  53. package/dist/gateway/static/root/assets/gateway-settings-hSXGWumL.js +1 -0
  54. package/dist/gateway/static/root/assets/{gateway-startup-retry-DnXc9GNb.js → gateway-startup-retry-C1DQsIH3.js} +1 -1
  55. package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-Cw_HUlEk.js → highlighted-body-KQOG7T2V-C7xJwE61.js} +1 -1
  56. package/dist/gateway/static/root/assets/home-page-DJNmlMfH.js +2 -0
  57. package/dist/gateway/static/root/assets/{image-generation-api-4dtNAW64.js → image-generation-api-DodU6GNC.js} +1 -1
  58. package/dist/gateway/static/root/assets/{imports-page-DVvyrYUy.js → imports-page-BufZPzGE.js} +1 -1
  59. package/dist/gateway/static/root/assets/index-DBRwvWzm.css +1 -0
  60. package/dist/gateway/static/root/assets/{index-B-wZyMBY.js → index-K8SXDtxr.js} +110 -110
  61. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DywXmCvO.js → keyboard-shortcuts-settings-B8pPP5RF.js} +1 -1
  62. package/dist/gateway/static/root/assets/{local-app-workbench-page-dBlBepLG.js → local-app-workbench-page-zEtvE7pJ.js} +1 -1
  63. package/dist/gateway/static/root/assets/{local-apps-page-DdEXqsZw.js → local-apps-page-Bli7e_eg.js} +1 -1
  64. package/dist/gateway/static/root/assets/{local-session-drafts-D-_OuGWH.js → local-session-drafts-D_tYFy7d.js} +1 -1
  65. package/dist/gateway/static/root/assets/{locale-store-BNDrBt2C.js → locale-store-uRu_DsWm.js} +1 -1
  66. package/dist/gateway/static/root/assets/{logs-page-DpSob5Id.js → logs-page-BimZk3R4.js} +2 -2
  67. package/dist/gateway/static/root/assets/{management-settings-10Vl7gLU.js → management-settings-5Y4COyU9.js} +1 -1
  68. package/dist/gateway/static/root/assets/markdown-view-Ct4sKkUf.css +1 -0
  69. package/dist/gateway/static/root/assets/{markdown-view-pEV4TIPK.js → markdown-view-DHfQAvZQ.js} +1 -1
  70. package/dist/gateway/static/root/assets/{media-plugins-DU1Ike3m.js → media-plugins-BombFqsX.js} +1 -1
  71. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-DBRj4-1-.js +1 -0
  72. package/dist/gateway/static/root/assets/messages-DTqbfje6.js +3 -0
  73. package/dist/gateway/static/root/assets/{models-hub-cache-Lp4PAH-A.js → models-hub-cache-Ct6X5zmB.js} +1 -1
  74. package/dist/gateway/static/root/assets/note-detail-panel-KLDPLVg7.js +5 -0
  75. package/dist/gateway/static/root/assets/{notes-api-B_LGV8Lh.js → notes-api-nqN2wKYc.js} +1 -1
  76. package/dist/gateway/static/root/assets/notes-page-DST0oPXD.js +8 -0
  77. package/dist/gateway/static/root/assets/{page-context-capture-button-DzkU3HrQ.js → page-context-capture-button-Bmed83-6.js} +1 -1
  78. package/dist/gateway/static/root/assets/page-tabs-HLrKIjXH.js +1 -0
  79. package/dist/gateway/static/root/assets/personal-page-BG4Ystrm.js +1 -0
  80. package/dist/gateway/static/root/assets/{product-open-page-Dbs3Xtis.js → product-open-page-CXkYP9xE.js} +1 -1
  81. package/dist/gateway/static/root/assets/{product-preview-content-x-EvUxt7.js → product-preview-content-DjmupQSq.js} +1 -1
  82. package/dist/gateway/static/root/assets/project-detail-page-CzBmV0P6.js +1 -0
  83. package/dist/gateway/static/root/assets/{projects-page-CSahay3I.js → projects-page-DByqe5Em.js} +1 -1
  84. package/dist/gateway/static/root/assets/{registry-api-DX5EhiBp.js → registry-api-CYqA7bfl.js} +1 -1
  85. package/dist/gateway/static/root/assets/remote-access-hub-DTjj-odF.js +1 -0
  86. package/dist/gateway/static/root/assets/{runtime-tools-api-DYeTxrEb.js → runtime-tools-api-zzoxjSuR.js} +1 -1
  87. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DbuAW7ky.js → runtime-tools-settings-panel-B_ptn3T8.js} +1 -1
  88. package/dist/gateway/static/root/assets/{scenes-page-DVzrw6Q9.js → scenes-page-wkua4l5y.js} +2 -2
  89. package/dist/gateway/static/root/assets/{schema-form-Ch-wK0Os.js → schema-form-VvOSM84Y.js} +1 -1
  90. package/dist/gateway/static/root/assets/{send-session-input-BKIg9cjN.js → send-session-input-BCAF-Ikt.js} +1 -1
  91. package/dist/gateway/static/root/assets/{session-api-Cf3ACMv7.js → session-api-CzVTrG8n.js} +1 -1
  92. package/dist/gateway/static/root/assets/{session-manager-Djtcwo3n.js → session-manager-_yy4bxhT.js} +1 -1
  93. package/dist/gateway/static/root/assets/sessions-page-D06XwYAT.js +1 -0
  94. package/dist/gateway/static/root/assets/settings-advanced-gate-DoAHy1wj.js +1 -0
  95. package/dist/gateway/static/root/assets/{settings-page-D-Uz-C5u.js → settings-page-C-6BJdb1.js} +1 -1
  96. package/dist/gateway/static/root/assets/setup-status-panel-L0JSG0K-.js +1 -0
  97. package/dist/gateway/static/root/assets/{share-link-dialog-Cke8qSIS.js → share-link-dialog-C47Xgzta.js} +1 -1
  98. package/dist/gateway/static/root/assets/{share-preview-page-CQjfWJVh.js → share-preview-page-nJ2FWAEP.js} +1 -1
  99. package/dist/gateway/static/root/assets/{shares-api-CQapohsa.js → shares-api-B0HlMAzi.js} +1 -1
  100. package/dist/gateway/static/root/assets/shares-settings-BbgAUM3v.js +1 -0
  101. package/dist/gateway/static/root/assets/{skill-api-v1XR_zqL.js → skill-api-BFU1tPyw.js} +1 -1
  102. package/dist/gateway/static/root/assets/{skill-reload-api-CPW9mIZH.js → skill-reload-api-CEJx5rPd.js} +1 -1
  103. package/dist/gateway/static/root/assets/{skills-page-Cu80KslP.js → skills-page-DZw6el4o.js} +1 -1
  104. package/dist/gateway/static/root/assets/specialists-4bkS5rZ4.js +1 -0
  105. package/dist/gateway/static/root/assets/{system-settings-panel-CbIHO53w.js → system-settings-panel-DshSGWNg.js} +1 -1
  106. package/dist/gateway/static/root/assets/{task-detail-page-DvRLEt8e.js → task-detail-page-CfZhq4XZ.js} +2 -2
  107. package/dist/gateway/static/root/assets/{task-expandable-content-CQ9Y17UE.js → task-expandable-content-CF6Bj-Qa.js} +1 -1
  108. package/dist/gateway/static/root/assets/tasks-DJIeIk9C.js +1 -0
  109. package/dist/gateway/static/root/assets/{theme-store-BNDzgUPq.js → theme-store-BUfzeDvL.js} +1 -1
  110. package/dist/gateway/static/root/assets/{tracing-settings-page-DbbQg2I5.js → tracing-settings-page-C2q5B3Kp.js} +1 -1
  111. package/dist/gateway/static/root/assets/{tunnel-api-CQXrU_XI.js → tunnel-api-DFDXwWnU.js} +1 -1
  112. package/dist/gateway/static/root/assets/{usage-page-BdLt6u0c.js → usage-page-2RJLg54s.js} +1 -1
  113. package/dist/gateway/static/root/assets/{use-autosave-CFn9aZYy.js → use-autosave-DgbCgsao.js} +1 -1
  114. package/dist/gateway/static/root/assets/{use-composer-attachments-DXCEME1D.js → use-composer-attachments-BFP3k6oC.js} +1 -1
  115. package/dist/gateway/static/root/assets/{use-file-preview-expanded-CEB7pfWq.js → use-file-preview-expanded-B1BiTQNS.js} +2 -2
  116. package/dist/gateway/static/root/assets/user-model-page-y1gjGYPI.js +2 -0
  117. package/dist/gateway/static/root/assets/{voice-api-key-field-C9s0iBGA.js → voice-api-key-field-4AIkbm9R.js} +1 -1
  118. package/dist/gateway/static/root/assets/{voice-config-api-BIm_aTqX.js → voice-config-api-Kw1pYlLN.js} +1 -1
  119. package/dist/gateway/static/root/assets/{work-discovery-overlay-C3KsL1Ap.js → work-discovery-overlay-Ch-KfpCF.js} +1 -1
  120. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CEx_jYPu.js → workflow-run-setup-panel-CTu297Hc.js} +2 -2
  121. package/dist/gateway/static/root/assets/{workflows-page-BYGPnFEF.js → workflows-page-CRZXG_rm.js} +3 -3
  122. package/dist/gateway/static/root/assets/{workspace-api-uZFF1SlQ.js → workspace-api-Xr3wz8T3.js} +2 -2
  123. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-DcPFuTIk.js → xopc-cloud-account-card-hEfjVjnc.js} +1 -1
  124. package/dist/gateway/static/root/index.html +30 -29
  125. package/dist/package.js +1 -1
  126. package/dist/packages/gateway-contract/src/index.js +1 -1
  127. package/dist/packages/gateway-contract/src/task-lifecycle.js +3 -0
  128. package/dist/packages/gateway-contract/src/tasks.js +41 -10
  129. package/dist/src/agent/agent-manager.d.ts +6 -0
  130. package/dist/src/agent/agent-manager.js +18 -15
  131. package/dist/src/agent/agent-scope.js +2 -2
  132. package/dist/src/agent/background-review/prompts.js +1 -1
  133. package/dist/src/agent/background-review/run-background-review.js +10 -10
  134. package/dist/src/agent/child-agent-factory.js +7 -1
  135. package/dist/src/agent/coding/repository-instructions.js +1 -1
  136. package/dist/src/agent/context/coordinator.js +2 -2
  137. package/dist/src/agent/context/execution-context.js +4 -4
  138. package/dist/src/agent/context/execution-scope.js +1 -1
  139. package/dist/src/agent/context/project-context.js +3 -3
  140. package/dist/src/agent/data-acquisition/service.js +1 -1
  141. package/dist/src/agent/embedded/codemode-extension.js +1 -1
  142. package/dist/src/agent/embedded/execution-tool-policy.d.ts +1 -1
  143. package/dist/src/agent/embedded/execution-tool-policy.js +3 -2
  144. package/dist/src/agent/embedded/index.js +1 -1
  145. package/dist/src/agent/embedded/run-for-session.js +38 -18
  146. package/dist/src/agent/embedded/run-turn.js +119 -35
  147. package/dist/src/agent/embedded/session-runner.js +12 -4
  148. package/dist/src/agent/embedded/session-tool-result-guard.js +2 -2
  149. package/dist/src/agent/embedded/tool-result-truncation.js +1 -1
  150. package/dist/src/agent/embedded/types.d.ts +2 -1
  151. package/dist/src/agent/external-tools/cliProvider.d.ts +1 -0
  152. package/dist/src/agent/external-tools/cliProvider.js +4 -3
  153. package/dist/src/agent/external-tools/composio-provider.js +5 -3
  154. package/dist/src/agent/external-tools/endpoint-provider.js +4 -4
  155. package/dist/src/agent/external-tools/gateway-tools.js +10 -4
  156. package/dist/src/agent/external-tools/index.js +1 -1
  157. package/dist/src/agent/external-tools/service.d.ts +1 -0
  158. package/dist/src/agent/external-tools/service.js +3 -1
  159. package/dist/src/agent/external-tools/types.d.ts +4 -0
  160. package/dist/src/agent/image/generation/openai-images-provider.js +1 -1
  161. package/dist/src/agent/image/generation/runtime.js +1 -1
  162. package/dist/src/agent/image/index.js +1 -1
  163. package/dist/src/agent/image/load-image-media.js +1 -1
  164. package/dist/src/agent/image/tool-model-config.js +1 -1
  165. package/dist/src/agent/inbound/attachment-pipeline.js +2 -2
  166. package/dist/src/agent/inbound/inbound-loop.js +2 -2
  167. package/dist/src/agent/index.js +3 -3
  168. package/dist/src/agent/mcp/config.js +1 -1
  169. package/dist/src/agent/memory/context-budget.js +1 -1
  170. package/dist/src/agent/memory/context-recovery.js +1 -1
  171. package/dist/src/agent/memory/index.js +1 -1
  172. package/dist/src/agent/orchestration/agent-orchestrator.js +1 -1
  173. package/dist/src/agent/orchestration/agent-turn-policy.d.ts +1 -0
  174. package/dist/src/agent/orchestration/delegation-budget.js +2 -1
  175. package/dist/src/agent/orchestration/llm-turn-retry.d.ts +5 -0
  176. package/dist/src/agent/orchestration/llm-turn-retry.js +15 -5
  177. package/dist/src/agent/orchestration/turn-recovery.d.ts +6 -0
  178. package/dist/src/agent/orchestration/turn-recovery.js +29 -0
  179. package/dist/src/agent/prompt/response-language.js +1 -1
  180. package/dist/src/agent/prompt/sections/tooling.js +1 -1
  181. package/dist/src/agent/prompt/service-prompt-builder.js +3 -3
  182. package/dist/src/agent/sandbox/exec-policy.js +1 -1
  183. package/dist/src/agent/service/direct-turn-helpers.js +11 -10
  184. package/dist/src/agent/service/process-direct-streaming.js +12 -6
  185. package/dist/src/agent/service/webchat-tts.js +2 -2
  186. package/dist/src/agent/service.d.ts +6 -0
  187. package/dist/src/agent/service.js +21 -18
  188. package/dist/src/agent/session/session-config-service.js +2 -2
  189. package/dist/src/agent/session/session-hydrator.js +1 -1
  190. package/dist/src/agent/session/session-inspector.js +1 -1
  191. package/dist/src/agent/source-context/index.js +2 -2
  192. package/dist/src/agent/starter-agents.d.ts +1 -0
  193. package/dist/src/agent/starter-agents.js +12 -0
  194. package/dist/src/agent/tasks/task-judge-service.js +32 -14
  195. package/dist/src/agent/tools/create-share-tool.js +3 -3
  196. package/dist/src/agent/tools/dataBatch.js +1 -1
  197. package/dist/src/agent/tools/delegate-tool.js +3 -3
  198. package/dist/src/agent/tools/error-pattern-matcher.js +1 -1
  199. package/dist/src/agent/tools/exec-command.js +3 -1
  200. package/dist/src/agent/tools/executor.js +1 -1
  201. package/dist/src/agent/tools/factory.d.ts +6 -0
  202. package/dist/src/agent/tools/factory.js +50 -40
  203. package/dist/src/agent/tools/fetch-text.js +1 -1
  204. package/dist/src/agent/tools/image-generate-tool.js +3 -3
  205. package/dist/src/agent/tools/index.d.ts +1 -0
  206. package/dist/src/agent/tools/index.js +8 -7
  207. package/dist/src/agent/tools/list-dir.js +1 -1
  208. package/dist/src/agent/tools/personal-attention-tool.d.ts +2 -0
  209. package/dist/src/agent/tools/personal-attention-tool.js +52 -18
  210. package/dist/src/agent/tools/personal-read-tool.js +16 -6
  211. package/dist/src/agent/tools/personal-request-result-tool.js +20 -3
  212. package/dist/src/agent/tools/personal-request-tool.js +216 -17
  213. package/dist/src/agent/tools/personal-result-budget.d.ts +2 -0
  214. package/dist/src/agent/tools/personal-result-budget.js +57 -0
  215. package/dist/src/agent/tools/personal-task-tool.d.ts +17 -21
  216. package/dist/src/agent/tools/personal-task-tool.js +356 -24
  217. package/dist/src/agent/tools/publish-artifacts.js +2 -2
  218. package/dist/src/agent/tools/read.js +2 -2
  219. package/dist/src/agent/tools/review-workspace.js +1 -1
  220. package/dist/src/agent/tools/send-media.js +2 -2
  221. package/dist/src/agent/tools/skills-tools.js +1 -1
  222. package/dist/src/agent/tools/task-collaboration-tool.d.ts +16 -0
  223. package/dist/src/agent/tools/task-collaboration-tool.js +153 -0
  224. package/dist/src/agent/tools/tts-tool.js +1 -1
  225. package/dist/src/agent/tools/user-context-tool.js +1 -1
  226. package/dist/src/agent/tools/write.js +2 -2
  227. package/dist/src/agent/tools/xopc-use-tool.js +25 -13
  228. package/dist/src/agent/transcript/index.js +2 -2
  229. package/dist/src/agent/transcript/transcript-hygiene.js +2 -2
  230. package/dist/src/agent/workflow/subagent-runner.js +1 -1
  231. package/dist/src/agent-config/resolver.js +2 -0
  232. package/dist/src/agent-config/schema.d.ts +8 -0
  233. package/dist/src/agent-config/schema.js +2 -0
  234. package/dist/src/agent-matching/delegation-service.js +1 -1
  235. package/dist/src/agent-matching/selection-repository.d.ts +1 -0
  236. package/dist/src/agent-matching/selection-repository.js +1 -1
  237. package/dist/src/agent-matching/service.js +2 -2
  238. package/dist/src/ai-assist/text-assist.js +1 -1
  239. package/dist/src/auth/sync-provider-auth.js +1 -1
  240. package/dist/src/automations/capabilities/write.d.ts +4 -0
  241. package/dist/src/automations/domain/index.js +2 -2
  242. package/dist/src/automations/domain/validation.d.ts +8 -0
  243. package/dist/src/automations/draft/automation-draft-service.js +1 -1
  244. package/dist/src/automations/draft/automation-draft-validator.d.ts +2 -0
  245. package/dist/src/automations/index.js +4 -4
  246. package/dist/src/automations/service/automation-service.js +2 -2
  247. package/dist/src/backup/archive.js +1 -1
  248. package/dist/src/browser/native-messaging-host.js +1 -1
  249. package/dist/src/channels/attachments/voice-stt-webchat.js +2 -2
  250. package/dist/src/channels/index.js +2 -2
  251. package/dist/src/channels/outbound-sender.js +1 -1
  252. package/dist/src/channels/pairing/allow-from-file.js +9 -9
  253. package/dist/src/channels/pairing/pairing-store.js +6 -6
  254. package/dist/src/chat-commands/agent-edit.js +1 -1
  255. package/dist/src/chat-commands/builtins/config.js +3 -3
  256. package/dist/src/chat-commands/builtins/review.js +1 -1
  257. package/dist/src/chat-commands/builtins/session.js +1 -1
  258. package/dist/src/chat-commands/builtins/thinking.js +1 -1
  259. package/dist/src/chat-commands/builtins/tts.js +1 -1
  260. package/dist/src/chat-commands/builtins/understanding.js +1 -1
  261. package/dist/src/chat-commands/builtins/workflow.js +1 -1
  262. package/dist/src/chat-commands/context.js +4 -4
  263. package/dist/src/chat-commands/index.js +3 -3
  264. package/dist/src/cli/commands/agent.js +8 -8
  265. package/dist/src/cli/commands/config.js +1 -1
  266. package/dist/src/cli/commands/connectors.js +1 -1
  267. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +1 -1
  268. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  269. package/dist/src/cli/commands/doctor/checks/gateway-health.js +1 -1
  270. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  271. package/dist/src/cli/commands/doctor/checks/tool-runtimes.js +1 -1
  272. package/dist/src/cli/commands/extension-agent-plugin.js +1 -1
  273. package/dist/src/cli/commands/extension-dev.js +1 -1
  274. package/dist/src/cli/commands/extension-marketplace.js +3 -3
  275. package/dist/src/cli/commands/extension.js +4 -4
  276. package/dist/src/cli/commands/gateway/token.js +1 -1
  277. package/dist/src/cli/commands/image.js +1 -1
  278. package/dist/src/cli/commands/init.js +1 -1
  279. package/dist/src/cli/commands/mcp.js +1 -1
  280. package/dist/src/cli/commands/models.js +2 -2
  281. package/dist/src/cli/commands/onboard/channels/registry.js +1 -1
  282. package/dist/src/cli/commands/onboard.js +1 -1
  283. package/dist/src/cli/commands/project.js +2 -2
  284. package/dist/src/cli/commands/runtime.js +1 -1
  285. package/dist/src/cli/commands/skills.js +2 -2
  286. package/dist/src/cli/commands/tunnel.js +4 -4
  287. package/dist/src/cli/extension-cli-register.js +6 -6
  288. package/dist/src/cli/utils/gateway-client.js +1 -1
  289. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  290. package/dist/src/cli/utils/session.js +1 -1
  291. package/dist/src/computer/runtime.js +2 -2
  292. package/dist/src/config/agent-model-intents.js +1 -1
  293. package/dist/src/config/index.js +5 -5
  294. package/dist/src/config/loader.js +1 -1
  295. package/dist/src/config/schema.js +5 -5
  296. package/dist/src/connectors/cli/authorization.js +1 -1
  297. package/dist/src/connectors/cli/runtime.js +1 -1
  298. package/dist/src/connectors/composio-sessions.js +1 -1
  299. package/dist/src/connectors/composio.js +1 -1
  300. package/dist/src/connectors/connected-source-ingestion.js +4 -4
  301. package/dist/src/connectors/connected-source-understanding.js +4 -4
  302. package/dist/src/connectors/connection-recovery-service.d.ts +6 -0
  303. package/dist/src/connectors/connection-recovery-service.js +157 -38
  304. package/dist/src/connectors/content-enrichment.js +1 -1
  305. package/dist/src/connectors/health.js +1 -1
  306. package/dist/src/connectors/learning-coordinator.js +2 -2
  307. package/dist/src/discussions/live-worker.js +1 -1
  308. package/dist/src/discussions/recording.js +1 -1
  309. package/dist/src/discussions/sealer.js +1 -1
  310. package/dist/src/endpoint-tools/index.js +1 -1
  311. package/dist/src/endpoint-tools/runtime.js +2 -2
  312. package/dist/src/extensions/activation-context.js +3 -3
  313. package/dist/src/extensions/agent-plugins/source-http-fetch.js +1 -1
  314. package/dist/src/extensions/api.js +4 -4
  315. package/dist/src/extensions/bundled-extension-activation.js +1 -1
  316. package/dist/src/extensions/index.js +3 -3
  317. package/dist/src/extensions/install.js +1 -1
  318. package/dist/src/extensions/loader.js +2 -2
  319. package/dist/src/extensions/sdk/index.js +1 -1
  320. package/dist/src/extensions/sdk/media.js +1 -1
  321. package/dist/src/extensions/update.js +1 -1
  322. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  323. package/dist/src/gateway/agents-admin.js +1 -1
  324. package/dist/src/gateway/device-routes.js +2 -2
  325. package/dist/src/gateway/file-path-classifier.js +2 -2
  326. package/dist/src/gateway/global-defaults-admin.js +1 -1
  327. package/dist/src/gateway/hono/app.js +3 -3
  328. package/dist/src/gateway/hono/lib/config-payload.js +3 -3
  329. package/dist/src/gateway/hono/routes/agents.js +1 -1
  330. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  331. package/dist/src/gateway/hono/routes/commands-skills.js +4 -4
  332. package/dist/src/gateway/hono/routes/config-patch/gateway.js +1 -1
  333. package/dist/src/gateway/hono/routes/config-patch/misc.js +4 -4
  334. package/dist/src/gateway/hono/routes/connection-waits.js +3 -1
  335. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  336. package/dist/src/gateway/hono/routes/context-sources.js +2 -2
  337. package/dist/src/gateway/hono/routes/endpoint-tools.js +1 -1
  338. package/dist/src/gateway/hono/routes/home.js +1 -1
  339. package/dist/src/gateway/hono/routes/mcp.js +1 -1
  340. package/dist/src/gateway/hono/routes/media.js +1 -1
  341. package/dist/src/gateway/hono/routes/memory-learning.js +3 -3
  342. package/dist/src/gateway/hono/routes/models.js +5 -5
  343. package/dist/src/gateway/hono/routes/notes.js +1 -1
  344. package/dist/src/gateway/hono/routes/personal-agent.js +2 -2
  345. package/dist/src/gateway/hono/routes/projects.js +4 -4
  346. package/dist/src/gateway/hono/routes/session-command-handler.js +2 -2
  347. package/dist/src/gateway/hono/routes/session-input-handler.js +4 -4
  348. package/dist/src/gateway/hono/routes/sessions.js +2 -2
  349. package/dist/src/gateway/hono/routes/shares.js +3 -3
  350. package/dist/src/gateway/hono/routes/side-chats.js +1 -1
  351. package/dist/src/gateway/hono/routes/site-shares.js +1 -1
  352. package/dist/src/gateway/hono/routes/tasks.js +3 -2
  353. package/dist/src/gateway/hono/routes/user-model.js +7 -7
  354. package/dist/src/gateway/hono/routes/voice.js +7 -7
  355. package/dist/src/gateway/hono/routes/workflows.js +2 -2
  356. package/dist/src/gateway/image-generation-setup.js +1 -1
  357. package/dist/src/gateway/index.js +1 -1
  358. package/dist/src/gateway/lock.js +11 -11
  359. package/dist/src/gateway/media-access.js +1 -1
  360. package/dist/src/gateway/mobile-privacy.js +2 -2
  361. package/dist/src/gateway/ports.js +6 -6
  362. package/dist/src/gateway/run-loop.js +1 -1
  363. package/dist/src/gateway/scenes/mailContext.js +1 -1
  364. package/dist/src/gateway/scenes/slackThreadSource.js +1 -1
  365. package/dist/src/gateway/server.js +1 -1
  366. package/dist/src/gateway/service/agent-runner.js +2 -2
  367. package/dist/src/gateway/service/config-coordinator.js +2 -2
  368. package/dist/src/gateway/service/marketplace-service.js +1 -1
  369. package/dist/src/gateway/service/run-gateway-agent.js +12 -8
  370. package/dist/src/gateway/service/session-command-service.js +1 -1
  371. package/dist/src/gateway/service/session-input-coordinator.js +4 -2
  372. package/dist/src/gateway/service.d.ts +1 -0
  373. package/dist/src/gateway/service.js +62 -48
  374. package/dist/src/gateway/session-context-summary.js +3 -3
  375. package/dist/src/gateway/workspace-editor-path.js +2 -2
  376. package/dist/src/home-intelligence/generator.js +2 -2
  377. package/dist/src/home-intelligence/host.js +2 -2
  378. package/dist/src/imports/inventory.js +1 -1
  379. package/dist/src/infra/gateway-processes.js +2 -2
  380. package/dist/src/infra/path-env.js +3 -3
  381. package/dist/src/infra/update-global.js +10 -10
  382. package/dist/src/knowledge/connected-knowledge-pipeline.js +2 -2
  383. package/dist/src/knowledge/index.js +1 -1
  384. package/dist/src/knowledge-memory/repository.js +1 -1
  385. package/dist/src/local-apps/service.js +1 -1
  386. package/dist/src/mcp/gateway-http-client.js +1 -1
  387. package/dist/src/media-understanding/openai-compatible-audio.js +1 -1
  388. package/dist/src/memory-learning/source-learning.js +5 -5
  389. package/dist/src/memory-learning/task-receipts.js +1 -1
  390. package/dist/src/notes/agent-context.js +4 -4
  391. package/dist/src/notes/index.js +1 -1
  392. package/dist/src/notes/store.js +1 -1
  393. package/dist/src/personal-agent/capability-service.js +4 -4
  394. package/dist/src/personal-agent/policy.js +2 -7
  395. package/dist/src/personal-agent/proactivity/repository.js +1 -1
  396. package/dist/src/personal-agent/proactivity/routes.js +1 -1
  397. package/dist/src/personal-agent/proactivity/service.js +5 -5
  398. package/dist/src/personal-agent/prompt-context.d.ts +1 -4
  399. package/dist/src/personal-agent/prompt-context.js +9 -34
  400. package/dist/src/personal-agent/prompts.js +35 -10
  401. package/dist/src/personal-agent/reply-composer.js +27 -13
  402. package/dist/src/personal-agent/request-access.d.ts +3 -0
  403. package/dist/src/personal-agent/request-access.js +31 -0
  404. package/dist/src/personal-agent/request-delivery.js +10 -5
  405. package/dist/src/personal-agent/request-repository.d.ts +4 -2
  406. package/dist/src/personal-agent/request-repository.js +4 -4
  407. package/dist/src/personal-agent/request-service.d.ts +3 -1
  408. package/dist/src/personal-agent/request-service.js +131 -38
  409. package/dist/src/personal-agent/task-cancel.d.ts +7 -0
  410. package/dist/src/personal-agent/task-cancel.js +76 -0
  411. package/dist/src/providers/model-reference-auditor.js +1 -1
  412. package/dist/src/providers/model-response.js +13 -2
  413. package/dist/src/realtime/runtime.js +1 -1
  414. package/dist/src/remote-access/exposure-manager.js +1 -1
  415. package/dist/src/scenes/taskFollowUp/agentExecutor.js +4 -4
  416. package/dist/src/scenes/taskFollowUp/resources.js +1 -1
  417. package/dist/src/scenes/taskFollowUp/service.js +5 -5
  418. package/dist/src/session/client-history.js +1 -1
  419. package/dist/src/session/index.js +1 -1
  420. package/dist/src/session/store.js +24 -11
  421. package/dist/src/session/thinking-resolve.js +1 -1
  422. package/dist/src/share/share-store.js +1 -1
  423. package/dist/src/share/share-thumbnail.js +1 -1
  424. package/dist/src/share/share-zip.js +1 -1
  425. package/dist/src/share/site-proxy.js +1 -1
  426. package/dist/src/share/site-share-store.js +1 -1
  427. package/dist/src/storage/sqlite/connection-wait-repository.d.ts +2 -0
  428. package/dist/src/storage/sqlite/connection-wait-repository.js +83 -4
  429. package/dist/src/storage/sqlite/connection.js +9 -9
  430. package/dist/src/storage/sqlite/migrations/249_task_allocations.sql +17 -0
  431. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  432. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  433. package/dist/src/storage/sqlite/schema.js +1 -1
  434. package/dist/src/storage/sqlite/transcript-repository.d.ts +2 -0
  435. package/dist/src/storage/sqlite/transcript-repository.js +25 -1
  436. package/dist/src/tasks/capabilities/read.js +2 -2
  437. package/dist/src/tasks/capabilities/relations.d.ts +38 -2
  438. package/dist/src/tasks/capabilities/write.d.ts +40 -0
  439. package/dist/src/tasks/capabilities/write.js +7 -6
  440. package/dist/src/tasks/execution-context.js +1 -1
  441. package/dist/src/tasks/home-query-service.js +2 -2
  442. package/dist/src/tasks/index.js +5 -5
  443. package/dist/src/tasks/task-allocation-repository.d.ts +25 -0
  444. package/dist/src/tasks/task-allocation-repository.js +82 -0
  445. package/dist/src/tasks/task-allocation-service.d.ts +39 -0
  446. package/dist/src/tasks/task-allocation-service.js +310 -0
  447. package/dist/src/tasks/task-application-service.js +47 -4
  448. package/dist/src/tasks/task-collaboration-delivery.js +5 -2
  449. package/dist/src/tasks/task-collaboration-repository.d.ts +3 -0
  450. package/dist/src/tasks/task-collaboration-repository.js +11 -1
  451. package/dist/src/tasks/task-context-assembler.js +15 -7
  452. package/dist/src/tasks/task-continuation.d.ts +5 -0
  453. package/dist/src/tasks/task-continuation.js +32 -0
  454. package/dist/src/tasks/task-handoff-service.js +2 -2
  455. package/dist/src/tasks/task-main-update-decision-service.js +2 -2
  456. package/dist/src/tasks/task-main-update-delivery.js +15 -8
  457. package/dist/src/tasks/task-origin-repository.d.ts +2 -1
  458. package/dist/src/tasks/task-origin-repository.js +9 -5
  459. package/dist/src/tasks/task-read-model-projector.d.ts +2 -1
  460. package/dist/src/tasks/task-read-model-projector.js +22 -9
  461. package/dist/src/tasks/task-result-delivery-repository.js +1 -1
  462. package/dist/src/tasks/task-result-delivery-service.js +4 -4
  463. package/dist/src/tasks/task-run-coordinator.d.ts +1 -0
  464. package/dist/src/tasks/task-run-coordinator.js +31 -8
  465. package/dist/src/tasks/task-run-dispatcher.d.ts +1 -1
  466. package/dist/src/tasks/task-run-dispatcher.js +16 -4
  467. package/dist/src/tasks/task-run-repository.d.ts +8 -0
  468. package/dist/src/tasks/task-run-repository.js +32 -1
  469. package/dist/src/tui/backends/embedded-backend.js +11 -11
  470. package/dist/src/tui/backends/gateway-realtime-backend.js +2 -2
  471. package/dist/src/tui/extension-host/load-extensions.js +2 -2
  472. package/dist/src/tui/tui-commands.js +6 -6
  473. package/dist/src/tui/tui-picker-overlay.js +1 -1
  474. package/dist/src/tui/tui-skills-autocomplete.js +2 -2
  475. package/dist/src/tui/tui-startup-resources.js +5 -5
  476. package/dist/src/tui/tui.js +7 -7
  477. package/dist/src/tunnel/frpc-binary.js +1 -1
  478. package/dist/src/tunnel/gateway-lifecycle.js +1 -1
  479. package/dist/src/user-context/access-policy.js +1 -1
  480. package/dist/src/user-model/bootstrap.js +1 -1
  481. package/dist/src/user-model/capture/executor.js +1 -1
  482. package/dist/src/user-model/index.js +2 -2
  483. package/dist/src/voice/realtime/memory-context.js +6 -6
  484. package/dist/src/voice/realtime/runtime.js +4 -4
  485. package/dist/src/voice/stt/index.js +2 -2
  486. package/dist/src/voice/stt/preflight.js +1 -1
  487. package/dist/src/voice/stt/providers/alibaba-transcription.js +1 -1
  488. package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +1 -1
  489. package/dist/src/voice/stt/transcribe-core.js +1 -1
  490. package/dist/src/voice/tts/index.js +3 -3
  491. package/dist/src/voice/tts/merge-config.js +1 -1
  492. package/dist/src/voice/tts/payload.js +1 -1
  493. package/dist/src/voice/tts/providers/xopc-cloud-speech.js +1 -1
  494. package/dist/src/voice/tts/speak-core.js +1 -1
  495. package/dist/src/work-discovery/index.js +1 -1
  496. package/dist/src/work-discovery/service.js +7 -7
  497. package/dist/src/workflows/engine/workflow-engine.js +1 -1
  498. package/dist/src/workflows/service/workflow-run-service.js +8 -8
  499. package/dist/src/workflows/service/workflow-session-bridge.js +2 -2
  500. package/package.json +3 -3
  501. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-Bewx00VC.js +0 -1
  502. package/dist/gateway/static/root/assets/agents-ByJbzt3F.js +0 -77
  503. package/dist/gateway/static/root/assets/automations-workspace-DOJnSOJ7.js +0 -6
  504. package/dist/gateway/static/root/assets/browser-automations-page-DGcGOkIq.js +0 -3
  505. package/dist/gateway/static/root/assets/browser-settings-page-CHCWHtkG.js +0 -3
  506. package/dist/gateway/static/root/assets/capabilities-page-CVaH729t.js +0 -2
  507. package/dist/gateway/static/root/assets/connectors-page-BpCGV1Gg.js +0 -1
  508. package/dist/gateway/static/root/assets/device-pairing-wizard-CEfqb0dk.js +0 -1
  509. package/dist/gateway/static/root/assets/gateway-realtime-store-IK77lcix.js +0 -1
  510. package/dist/gateway/static/root/assets/gateway-settings-CnqeYLJI.js +0 -1
  511. package/dist/gateway/static/root/assets/home-page-CKUJdUkK.js +0 -2
  512. package/dist/gateway/static/root/assets/index-BvOYtdnP.css +0 -1
  513. package/dist/gateway/static/root/assets/markdown-view-CZWff4bI.css +0 -1
  514. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-Bd0DNN_v.js +0 -1
  515. package/dist/gateway/static/root/assets/messages-CRy8QVkB.js +0 -3
  516. package/dist/gateway/static/root/assets/note-detail-panel-DiJ5O3Ga.js +0 -5
  517. package/dist/gateway/static/root/assets/notes-page-BEhxVwpX.js +0 -8
  518. package/dist/gateway/static/root/assets/page-tabs-BLGO2VIm.js +0 -1
  519. package/dist/gateway/static/root/assets/personal-page-Dpgj9Y5a.js +0 -1
  520. package/dist/gateway/static/root/assets/project-detail-page-CAM4Q3Kh.js +0 -1
  521. package/dist/gateway/static/root/assets/remote-access-hub-B6y0lXZc.js +0 -1
  522. package/dist/gateway/static/root/assets/sessions-page-DY0UP_lC.js +0 -1
  523. package/dist/gateway/static/root/assets/settings-advanced-gate-BLTR6Opb.js +0 -1
  524. package/dist/gateway/static/root/assets/setup-status-panel-DWAAlzV5.js +0 -1
  525. package/dist/gateway/static/root/assets/shares-settings-DPrpUIj7.js +0 -1
  526. package/dist/gateway/static/root/assets/tasks-DwKXgZ-I.js +0 -1
  527. package/dist/gateway/static/root/assets/user-model-page-BgIW4ITJ.js +0 -2
@@ -1,8 +1,8 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
+ import { request } from "undici";
3
4
  import { Readable } from "node:stream";
4
5
  import * as ws from "ws";
5
- import { request } from "undici";
6
6
  //#region src/share/site-proxy.ts
7
7
  init_logger();
8
8
  const wsAny = ws;
@@ -3,8 +3,8 @@ import { init_logger } from "../utils/logger.js";
3
3
  import { init_connection, requireXopcDatabase } from "../storage/sqlite/connection.js";
4
4
  import { init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
5
5
  import { DurableState } from "../storage/sqlite/durable-state.js";
6
- import { isPathUnderWorkspace } from "../gateway/workspace-editor-path.js";
7
6
  import { SITE_SHARE_CONFIG_DEFAULTS } from "./site-share-types.js";
7
+ import { isPathUnderWorkspace } from "../gateway/workspace-editor-path.js";
8
8
  import { relative, resolve } from "node:path";
9
9
  import { randomBytes, randomUUID } from "node:crypto";
10
10
  import { lstat, readdir, realpath, stat } from "node:fs/promises";
@@ -35,3 +35,5 @@ export declare function reviseCurrentConnectionObjective(conversationId: string,
35
35
  export declare function cancelConnectionObjective(conversationId: string): void;
36
36
  export declare function getConnectionResumeInput(conversationId: string, runId: string): SessionInput | undefined;
37
37
  export declare function listConnectionWaitsToCheck(): ConnectionWait[];
38
+ /** A queued wait has not crossed consumeConnectionResume's execution boundary. */
39
+ export declare function reconcileConnectionWaits(afterRestart?: boolean): string[];
@@ -203,7 +203,9 @@ function queueConnectionResolution(wait, resolution, resolvePersonal) {
203
203
  ...wait,
204
204
  status: "queued",
205
205
  resolution,
206
- queuedInputId: input.id
206
+ queuedInputId: input.id,
207
+ checking: void 0,
208
+ recoveryError: void 0
207
209
  }, wait.version);
208
210
  });
209
211
  }
@@ -243,7 +245,8 @@ function consumeConnectionResume(input) {
243
245
  }
244
246
  updateConnectionWait({
245
247
  ...wait,
246
- status: "closed"
248
+ status: "closed",
249
+ checking: void 0
247
250
  }, wait.version);
248
251
  return true;
249
252
  });
@@ -345,6 +348,8 @@ function invalidateConnectionResumeIntent(conversationId) {
345
348
  status: "open",
346
349
  intent: void 0,
347
350
  queuedInputId: void 0,
351
+ checking: void 0,
352
+ recoveryError: void 0,
348
353
  objectiveRevision: wait.objectiveRevision + 1,
349
354
  scopeConfirmedAt: void 0,
350
355
  reviewRequired: true
@@ -372,6 +377,8 @@ function reviseCurrentConnectionObjective(conversationId, summary) {
372
377
  },
373
378
  status: "open",
374
379
  resolution: void 0,
380
+ checking: void 0,
381
+ recoveryError: void 0,
375
382
  intent: void 0,
376
383
  queuedInputId: void 0,
377
384
  scopeConfirmedAt: void 0,
@@ -420,7 +427,8 @@ function cancelConnectionObjective(conversationId) {
420
427
  ...wait,
421
428
  status: "closed",
422
429
  resolution: "cancelled",
423
- intent: void 0
430
+ intent: void 0,
431
+ checking: void 0
424
432
  }, wait.version);
425
433
  if (personalRequest && personalRequest.state !== "cancelled") updatePersonalRequest(personalRequest, { state: "cancelled" });
426
434
  });
@@ -439,6 +447,77 @@ function listConnectionWaitsToCheck() {
439
447
  JOIN sessions session ON session.active_transcript_id = wait.transcript_id
440
448
  WHERE wait.status = 'open'`).all().map((row) => JSON.parse(row.data_json)).filter((wait) => wait.principalId === "local-owner" && wait.intent && wait.intent.validUntil > Date.now());
441
449
  }
450
+ /** A queued wait has not crossed consumeConnectionResume's execution boundary. */
451
+ function reconcileConnectionWaits(afterRestart = false) {
452
+ if (!isXopcDatabaseOpen()) return [];
453
+ return runSqliteWriteTransaction((db) => {
454
+ const rows = db.prepare(`SELECT wait.data_json FROM session_connection_waits wait
455
+ JOIN sessions session ON session.active_transcript_id = wait.transcript_id
456
+ WHERE wait.status IN ('open', 'queued')`).all();
457
+ const wake = /* @__PURE__ */ new Set();
458
+ for (const row of rows) {
459
+ const wait = JSON.parse(row.data_json);
460
+ if (wait.status === "open") {
461
+ if (afterRestart && wait.checking) {
462
+ updateConnectionWait({
463
+ ...wait,
464
+ checking: void 0,
465
+ lastAction: void 0,
466
+ recoveryError: "restart_interrupted"
467
+ }, wait.version);
468
+ log.info({
469
+ conversationId: wait.conversationId,
470
+ waitId: wait.id,
471
+ phase: "restart_reconcile"
472
+ }, "Interrupted connection check preserved for recovery");
473
+ publishConnectionWait(wait.conversationId);
474
+ }
475
+ continue;
476
+ }
477
+ const input = wait.queuedInputId ? getSessionInputById(wait.conversationId, wait.queuedInputId) : void 0;
478
+ const matches = input?.kind === "connection_resume" && input.payload?.waitId === wait.id && input.payload.objectiveRevision === wait.objectiveRevision && input.expectedTranscriptId === wait.transcriptId;
479
+ if (matches && input.status === "running") continue;
480
+ if (matches && (input.status === "queued" || input.status === "interrupted")) {
481
+ if (input.status === "interrupted") {
482
+ setSessionInputStatus(input.id, "queued");
483
+ updateConnectionWait({
484
+ ...wait,
485
+ checking: void 0,
486
+ recoveryError: "restart_interrupted"
487
+ }, wait.version);
488
+ log.info({
489
+ conversationId: wait.conversationId,
490
+ waitId: wait.id,
491
+ inputId: input.id,
492
+ phase: "restart_reconcile"
493
+ }, "Unconsumed connection continuation requeued");
494
+ publishConnectionWait(wait.conversationId);
495
+ }
496
+ wake.add(wait.conversationId);
497
+ continue;
498
+ }
499
+ updateConnectionWait({
500
+ ...wait,
501
+ status: "open",
502
+ queuedInputId: void 0,
503
+ intent: void 0,
504
+ checking: void 0,
505
+ recoveryError: "restart_interrupted",
506
+ resolution: void 0,
507
+ objectiveRevision: wait.objectiveRevision + 1
508
+ }, wait.version);
509
+ log.warn({
510
+ conversationId: wait.conversationId,
511
+ waitId: wait.id,
512
+ inputId: wait.queuedInputId,
513
+ inputStatus: input?.status,
514
+ phase: "resume_reconcile"
515
+ }, "Unavailable connection continuation preserved for retry");
516
+ publishConnectionWait(wait.conversationId);
517
+ }
518
+ return [...wake];
519
+ });
520
+ }
442
521
  var log, events;
443
522
  var init_connection_wait_repository = __esmMin((() => {
444
523
  init_logger();
@@ -455,4 +534,4 @@ var init_connection_wait_repository = __esmMin((() => {
455
534
  }));
456
535
  //#endregion
457
536
  init_connection_wait_repository();
458
- export { bindObjectiveAccount, cancelConnectionObjective, connectionBinding, connectionBindings, connectorObjectiveScope, consumeConnectionResume, getActiveConnectionWait, getConnectionResumeInput, getConnectionWait, init_connection_wait_repository, invalidateConnectionResumeIntent, isConnectionSuspended, listConnectionWaitsToCheck, onConnectionWaitChanged, publishConnectionWait, queueConnectionResolution, requireSessionConnection, reviseCurrentConnectionObjective, updateConnectionWait };
537
+ export { bindObjectiveAccount, cancelConnectionObjective, connectionBinding, connectionBindings, connectorObjectiveScope, consumeConnectionResume, getActiveConnectionWait, getConnectionResumeInput, getConnectionWait, init_connection_wait_repository, invalidateConnectionResumeIntent, isConnectionSuspended, listConnectionWaitsToCheck, onConnectionWaitChanged, publishConnectionWait, queueConnectionResolution, reconcileConnectionWaits, requireSessionConnection, reviseCurrentConnectionObjective, updateConnectionWait };
@@ -7,7 +7,7 @@ import { init_node_sqlite, requireNodeSqlite } from "../../infra/node-sqlite.js"
7
7
  import { ensureXopcDatabaseSchema, init_schema } from "./schema.js";
8
8
  import { init_unhandled_rejections, installSqliteTransientRejectionHandler } from "../../infra/unhandled-rejections.js";
9
9
  import path from "node:path";
10
- import fsSync from "node:fs";
10
+ import fs from "node:fs";
11
11
  import childProcess from "node:child_process";
12
12
  //#region src/storage/sqlite/connection.ts
13
13
  function normalizeNonNegativeInteger(value, label) {
@@ -17,7 +17,7 @@ function normalizeNonNegativeInteger(value, label) {
17
17
  function findExistingVolumePath(targetPath) {
18
18
  let current = path.resolve(targetPath);
19
19
  while (true) try {
20
- return fsSync.statSync(current).isDirectory() ? current : path.dirname(current);
20
+ return fs.statSync(current).isDirectory() ? current : path.dirname(current);
21
21
  } catch {
22
22
  const parent = path.dirname(current);
23
23
  if (parent === current) return null;
@@ -64,7 +64,7 @@ function parseMountCommandEntries(contents) {
64
64
  }
65
65
  function readMountEntries() {
66
66
  try {
67
- return parseProcMountInfoEntries(fsSync.readFileSync(PROC_MOUNTINFO_PATH, "utf8"));
67
+ return parseProcMountInfoEntries(fs.readFileSync(PROC_MOUNTINFO_PATH, "utf8"));
68
68
  } catch {}
69
69
  try {
70
70
  return parseMountCommandEntries(String(childProcess.execFileSync("mount", [])));
@@ -91,7 +91,7 @@ function isNetworkMountEntryPath(targetPath) {
91
91
  return mountEntry ? isNetworkMountType(mountEntry.fsType) : false;
92
92
  }
93
93
  function isNetworkBackedPath(targetPath) {
94
- if (typeof fsSync.statfsSync !== "function") return isNetworkMountEntryPath(targetPath);
94
+ if (typeof fs.statfsSync !== "function") return isNetworkMountEntryPath(targetPath);
95
95
  const checkedPath = findExistingVolumePath(targetPath);
96
96
  if (!checkedPath) return false;
97
97
  try {
@@ -100,7 +100,7 @@ function isNetworkBackedPath(targetPath) {
100
100
  4283649346,
101
101
  4266872130,
102
102
  20859
103
- ].includes(fsSync.statfsSync(checkedPath).type >>> 0)) return true;
103
+ ].includes(fs.statfsSync(checkedPath).type >>> 0)) return true;
104
104
  } catch {
105
105
  return isNetworkMountEntryPath(checkedPath);
106
106
  }
@@ -145,13 +145,13 @@ function ensureDatabasePermissions(pathname) {
145
145
  if (pathname === ":memory:") return;
146
146
  const dir = pathname.slice(0, Math.max(pathname.lastIndexOf("/"), pathname.lastIndexOf("\\")));
147
147
  if (dir) {
148
- fsSync.mkdirSync(dir, { recursive: true });
149
- fsSync.chmodSync(dir, DB_DIR_MODE);
148
+ fs.mkdirSync(dir, { recursive: true });
149
+ fs.chmodSync(dir, DB_DIR_MODE);
150
150
  }
151
151
  for (const suffix of DB_SIDECAR_SUFFIXES) {
152
152
  const candidate = `${pathname}${suffix}`;
153
- if (!fsSync.existsSync(candidate)) continue;
154
- fsSync.chmodSync(candidate, DB_FILE_MODE);
153
+ if (!fs.existsSync(candidate)) continue;
154
+ fs.chmodSync(candidate, DB_FILE_MODE);
155
155
  }
156
156
  }
157
157
  function openDatabaseAtPath(pathname) {
@@ -0,0 +1,17 @@
1
+ CREATE TABLE task_allocations (
2
+ id TEXT PRIMARY KEY,
3
+ task_id TEXT NOT NULL UNIQUE REFERENCES tasks(task_id) ON DELETE CASCADE,
4
+ origin_conversation_id TEXT NOT NULL REFERENCES sessions(conversation_id) ON DELETE CASCADE,
5
+ requirements_json TEXT NOT NULL,
6
+ task_version INTEGER NOT NULL,
7
+ status TEXT NOT NULL CHECK(status IN ('pending','selecting','assigned','blocked','failed','cancelled')),
8
+ selected_agent_id TEXT,
9
+ selection_reason TEXT,
10
+ reason_code TEXT,
11
+ attempts INTEGER NOT NULL DEFAULT 0,
12
+ lease_token TEXT,
13
+ lease_expires_at INTEGER,
14
+ next_attempt_at INTEGER NOT NULL,
15
+ updated_at INTEGER NOT NULL
16
+ );
17
+ CREATE INDEX task_allocations_pending ON task_allocations(status, next_attempt_at, lease_expires_at);
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
3
3
  /** Baseline schema version applied from schema.sql on first open. */
4
4
  export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 165;
5
5
  /** Latest schema version this release supports (increment when adding migrations). */
6
- export declare const XOPC_DB_SCHEMA_VERSION = 248;
6
+ export declare const XOPC_DB_SCHEMA_VERSION = 249;
7
7
  export declare function resolveMigrationsDir(override?: string): string;
8
8
  /**
9
9
  * Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
@@ -59,7 +59,7 @@ function applySingleMigration(db, migration, discardOldScenes = false) {
59
59
  function applyPendingMigrations(db, options = {}) {
60
60
  db.function("xopc_memory_search_text", { deterministic: true }, (value) => memorySearchText(String(value ?? "")));
61
61
  db.function("xopc_operation_id", () => currentOperationId() ?? null);
62
- const targetVersion = options.targetVersion ?? 248;
62
+ const targetVersion = options.targetVersion ?? 249;
63
63
  let currentVersion = readSchemaVersion(db);
64
64
  if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
65
65
  if (!options.migrationsDir && currentVersion < 165) throw new DatabaseSchemaTooOldError(currentVersion, 165);
@@ -97,7 +97,7 @@ function applyPendingMigrations(db, options = {}) {
97
97
  }
98
98
  /** Inspect schema version without mutating the database. */
99
99
  function inspectSchemaMigrationStatus(db, options = {}) {
100
- const appVersion = options.targetVersion ?? 248;
100
+ const appVersion = options.targetVersion ?? 249;
101
101
  const dbVersion = readSchemaVersion(db);
102
102
  if (dbVersion > appVersion) return {
103
103
  dbVersion,
@@ -140,7 +140,7 @@ var init_runner = __esmMin((() => {
140
140
  init_errors();
141
141
  log = createLogger("Sqlite:Migrations");
142
142
  XOPC_DB_BASELINE_SCHEMA_VERSION = 165;
143
- XOPC_DB_SCHEMA_VERSION = 248;
143
+ XOPC_DB_SCHEMA_VERSION = 249;
144
144
  }));
145
145
  //#endregion
146
146
  init_runner();
@@ -28,7 +28,7 @@ function ensureXopcDatabaseSchema(db, options = {}) {
28
28
  currentVersion = 165;
29
29
  }
30
30
  applyPendingMigrations(db, {
31
- targetVersion: 248,
31
+ targetVersion: 249,
32
32
  databasePath: fresh ? void 0 : options.databasePath
33
33
  });
34
34
  }
@@ -43,6 +43,8 @@ export declare function findLatestAssistantTranscriptEntryId(conversationId: str
43
43
  /** Attach generated media to one exact assistant row without rewriting the transcript. */
44
44
  export declare function appendMediaToAssistantTranscriptEntry(conversationId: string, entryId: string, media: MediaRef): boolean;
45
45
  export declare function replaceTranscriptRows(conversationId: string, rows: TranscriptStoredRow[]): void;
46
+ /** Keep entry identities and failed-attempt evidence while excluding failed responses from model replay. */
47
+ export declare function archiveFailedModelAttempts(conversationId: string, afterIndex: number): void;
46
48
  export declare function paginateTranscriptMessages(conversationId: string, options?: {
47
49
  offset?: number;
48
50
  limit?: number;
@@ -294,6 +294,30 @@ function replaceTranscriptRows(conversationId, rows) {
294
294
  WHERE conversation_id = ?`).run(llm.length, estimateTokensFromMessages(llm), now, now, now, conversationId);
295
295
  });
296
296
  }
297
+ /** Keep entry identities and failed-attempt evidence while excluding failed responses from model replay. */
298
+ function archiveFailedModelAttempts(conversationId, afterIndex) {
299
+ runSqliteWriteTransaction((db) => {
300
+ const transcriptId = readCurrentTranscriptId(db, conversationId);
301
+ if (!transcriptId) throw new Error(`Session not found: ${conversationId}`);
302
+ const rows = db.prepare(`SELECT entry_id, payload_json FROM transcript_entries
303
+ WHERE transcript_id = ? ORDER BY seq`).all(transcriptId);
304
+ for (const row of rows.slice(afterIndex)) {
305
+ const message = JSON.parse(row.payload_json);
306
+ if (message.role !== "assistant" || message.stopReason !== "error") continue;
307
+ const archived = {
308
+ type: "custom",
309
+ customType: "model_attempt_error",
310
+ data: message,
311
+ timestamp: new Date(message.timestamp ?? Date.now()).toISOString()
312
+ };
313
+ db.prepare(`UPDATE transcript_entries SET role = NULL, entry_kind = 'custom', payload_json = ?
314
+ WHERE transcript_id = ? AND entry_id = ?`).run(JSON.stringify(archived), transcriptId, row.entry_id);
315
+ db.prepare("DELETE FROM transcript_fts WHERE transcript_id = ? AND entry_id = ?").run(transcriptId, row.entry_id);
316
+ }
317
+ const messages = buildSessionContextForLlm(loadTranscriptRowsForSession(conversationId));
318
+ db.prepare("UPDATE sessions SET message_count = ?, estimated_tokens = ? WHERE conversation_id = ?").run(messages.length, estimateTokensFromMessages(messages), conversationId);
319
+ });
320
+ }
297
321
  function paginateTranscriptMessages(conversationId, options = {}) {
298
322
  const transcriptId = getCurrentTranscriptId(conversationId);
299
323
  if (!transcriptId) return {
@@ -422,4 +446,4 @@ var init_transcript_repository = __esmMin((() => {
422
446
  }));
423
447
  //#endregion
424
448
  init_transcript_repository();
425
- export { appendCompactionBoundaryIfUnchanged, appendMediaToAssistantTranscriptEntry, appendTranscriptEntry, findLatestAssistantTranscriptEntryId, init_transcript_repository, listCompactionBoundaries, loadCompactionSourceSnapshot, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary, searchSessionTranscript };
449
+ export { appendCompactionBoundaryIfUnchanged, appendMediaToAssistantTranscriptEntry, appendTranscriptEntry, archiveFailedModelAttempts, findLatestAssistantTranscriptEntryId, init_transcript_repository, listCompactionBoundaries, loadCompactionSourceSnapshot, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary, searchSessionTranscript };
@@ -4,10 +4,10 @@ import { TaskRepository, init_task_repository } from "../task-repository.js";
4
4
  import { TaskRunRepository, init_task_run_repository } from "../task-run-repository.js";
5
5
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
6
6
  import { defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
7
- import { TaskContextRepository } from "../task-context-repository.js";
8
7
  import { TaskReadModelProjector } from "../task-read-model-projector.js";
9
- import { TaskDependencyService } from "../task-dependency-service.js";
10
8
  import { TaskConversationRepository } from "../task-conversation-repository.js";
9
+ import { TaskContextRepository } from "../task-context-repository.js";
10
+ import { TaskDependencyService } from "../task-dependency-service.js";
11
11
  import { TaskCriterionReviewRepository } from "../task-criterion-review-repository.js";
12
12
  import { TaskValueMetricsService } from "../task-value-metrics-service.js";
13
13
  //#region src/tasks/capabilities/read.ts
@@ -86,10 +86,28 @@ export declare const TaskDependenciesOutputSchema: z.ZodObject<{
86
86
  duplicate: "duplicate";
87
87
  wont_do: "wont_do";
88
88
  }>>;
89
+ allocation: z.ZodOptional<z.ZodObject<{
90
+ id: z.ZodString;
91
+ taskId: z.ZodString;
92
+ status: z.ZodEnum<{
93
+ failed: "failed";
94
+ pending: "pending";
95
+ cancelled: "cancelled";
96
+ blocked: "blocked";
97
+ selecting: "selecting";
98
+ assigned: "assigned";
99
+ }>;
100
+ selectedAgentId: z.ZodOptional<z.ZodString>;
101
+ selectionReason: z.ZodOptional<z.ZodString>;
102
+ reasonCode: z.ZodOptional<z.ZodString>;
103
+ attempts: z.ZodNumber;
104
+ updatedAt: z.ZodNumber;
105
+ }, z.core.$strip>>;
89
106
  operationalState: z.ZodEnum<{
90
107
  failed: "failed";
91
108
  waiting: "waiting";
92
109
  cancelled: "cancelled";
110
+ allocating: "allocating";
93
111
  idle: "idle";
94
112
  queued: "queued";
95
113
  running: "running";
@@ -113,10 +131,28 @@ export declare const TaskDependenciesOutputSchema: z.ZodObject<{
113
131
  duplicate: "duplicate";
114
132
  wont_do: "wont_do";
115
133
  }>>;
134
+ allocation: z.ZodOptional<z.ZodObject<{
135
+ id: z.ZodString;
136
+ taskId: z.ZodString;
137
+ status: z.ZodEnum<{
138
+ failed: "failed";
139
+ pending: "pending";
140
+ cancelled: "cancelled";
141
+ blocked: "blocked";
142
+ selecting: "selecting";
143
+ assigned: "assigned";
144
+ }>;
145
+ selectedAgentId: z.ZodOptional<z.ZodString>;
146
+ selectionReason: z.ZodOptional<z.ZodString>;
147
+ reasonCode: z.ZodOptional<z.ZodString>;
148
+ attempts: z.ZodNumber;
149
+ updatedAt: z.ZodNumber;
150
+ }, z.core.$strip>>;
116
151
  operationalState: z.ZodEnum<{
117
152
  failed: "failed";
118
153
  waiting: "waiting";
119
154
  cancelled: "cancelled";
155
+ allocating: "allocating";
120
156
  idle: "idle";
121
157
  queued: "queued";
122
158
  running: "running";
@@ -147,9 +183,9 @@ export declare const TaskContextMutationOutputSchema: z.ZodObject<{
147
183
  role: z.ZodEnum<{
148
184
  evidence: "evidence";
149
185
  input: "input";
186
+ deliverable: "deliverable";
150
187
  reference: "reference";
151
188
  constraint: "constraint";
152
- deliverable: "deliverable";
153
189
  }>;
154
190
  title: z.ZodOptional<z.ZodString>;
155
191
  pinned: z.ZodBoolean;
@@ -184,9 +220,9 @@ export declare const TaskContextMutationOutputSchema: z.ZodObject<{
184
220
  role: z.ZodEnum<{
185
221
  evidence: "evidence";
186
222
  input: "input";
223
+ deliverable: "deliverable";
187
224
  reference: "reference";
188
225
  constraint: "constraint";
189
- deliverable: "deliverable";
190
226
  }>;
191
227
  title: z.ZodOptional<z.ZodString>;
192
228
  pinned: z.ZodBoolean;
@@ -76,6 +76,8 @@ export declare const TaskMutationOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObj
76
76
  }, z.core.$strip>;
77
77
  attention: z.ZodArray<z.ZodObject<{
78
78
  kind: z.ZodEnum<{
79
+ allocation_blocked: "allocation_blocked";
80
+ allocation_failed: "allocation_failed";
79
81
  input_required: "input_required";
80
82
  approval_required: "approval_required";
81
83
  dependency_blocked: "dependency_blocked";
@@ -87,10 +89,28 @@ export declare const TaskMutationOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObj
87
89
  summary: z.ZodString;
88
90
  sourceId: z.ZodOptional<z.ZodString>;
89
91
  }, z.core.$strip>>;
92
+ allocation: z.ZodOptional<z.ZodObject<{
93
+ id: z.ZodString;
94
+ taskId: z.ZodString;
95
+ status: z.ZodEnum<{
96
+ failed: "failed";
97
+ pending: "pending";
98
+ cancelled: "cancelled";
99
+ blocked: "blocked";
100
+ selecting: "selecting";
101
+ assigned: "assigned";
102
+ }>;
103
+ selectedAgentId: z.ZodOptional<z.ZodString>;
104
+ selectionReason: z.ZodOptional<z.ZodString>;
105
+ reasonCode: z.ZodOptional<z.ZodString>;
106
+ attempts: z.ZodNumber;
107
+ updatedAt: z.ZodNumber;
108
+ }, z.core.$strip>>;
90
109
  operationalState: z.ZodEnum<{
91
110
  failed: "failed";
92
111
  waiting: "waiting";
93
112
  cancelled: "cancelled";
113
+ allocating: "allocating";
94
114
  idle: "idle";
95
115
  queued: "queued";
96
116
  running: "running";
@@ -179,6 +199,8 @@ export declare const TaskMutationOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObj
179
199
  }, z.core.$strip>;
180
200
  attention: z.ZodArray<z.ZodObject<{
181
201
  kind: z.ZodEnum<{
202
+ allocation_blocked: "allocation_blocked";
203
+ allocation_failed: "allocation_failed";
182
204
  input_required: "input_required";
183
205
  approval_required: "approval_required";
184
206
  dependency_blocked: "dependency_blocked";
@@ -190,10 +212,28 @@ export declare const TaskMutationOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObj
190
212
  summary: z.ZodString;
191
213
  sourceId: z.ZodOptional<z.ZodString>;
192
214
  }, z.core.$strip>>;
215
+ allocation: z.ZodOptional<z.ZodObject<{
216
+ id: z.ZodString;
217
+ taskId: z.ZodString;
218
+ status: z.ZodEnum<{
219
+ failed: "failed";
220
+ pending: "pending";
221
+ cancelled: "cancelled";
222
+ blocked: "blocked";
223
+ selecting: "selecting";
224
+ assigned: "assigned";
225
+ }>;
226
+ selectedAgentId: z.ZodOptional<z.ZodString>;
227
+ selectionReason: z.ZodOptional<z.ZodString>;
228
+ reasonCode: z.ZodOptional<z.ZodString>;
229
+ attempts: z.ZodNumber;
230
+ updatedAt: z.ZodNumber;
231
+ }, z.core.$strip>>;
193
232
  operationalState: z.ZodEnum<{
194
233
  failed: "failed";
195
234
  waiting: "waiting";
196
235
  cancelled: "cancelled";
236
+ allocating: "allocating";
197
237
  idle: "idle";
198
238
  queued: "queued";
199
239
  running: "running";
@@ -5,9 +5,9 @@ import { TaskRunRepository, init_task_run_repository } from "../task-run-reposit
5
5
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
6
6
  import { defineAtomicCapability } from "../../capabilities/runtime/dispatcher.js";
7
7
  import { resolveTaskLocale } from "../task-language.js";
8
- import { TaskApplicationService } from "../task-application-service.js";
9
8
  import { resolveProjectAgentId } from "../../projects/project-agent.js";
10
9
  import { resolveResponseLanguageForSession } from "../../agent/prompt/response-language.js";
10
+ import { TaskApplicationService } from "../task-application-service.js";
11
11
  import { TaskSignalService } from "../task-signal-service.js";
12
12
  import { z } from "zod";
13
13
  //#region src/tasks/capabilities/write.ts
@@ -18,7 +18,8 @@ const modelSchema = TaskDetailResponseSchema.pick({
18
18
  task: true,
19
19
  operationalState: true,
20
20
  attention: true,
21
- allowedCommands: true
21
+ allowedCommands: true,
22
+ allocation: true
22
23
  });
23
24
  const TaskMutationOutputSchema = z.discriminatedUnion("ok", [z.object({
24
25
  ok: z.literal(true),
@@ -45,7 +46,7 @@ function registerTaskWriteCapabilities(dispatcher, deps) {
45
46
  input: TaskCreateRequestSchema.omit({ idempotencyKey: true }),
46
47
  output: TaskMutationOutputSchema,
47
48
  execute(input, context) {
48
- if (input.activation.mode === "start" && !deps.wake) throw new CapabilityError("UNAVAILABLE", "Task execution service is unavailable");
49
+ if (input.activation.mode !== "capture" && !deps.wake) throw new CapabilityError("UNAVAILABLE", "Task execution service is unavailable");
49
50
  const config = deps.getConfig?.();
50
51
  const projects = deps.getProjects?.();
51
52
  const requestedAgentId = input.delegateAgentId ?? (input.activation.mode === "start" && input.activation.executor?.kind === "agent" ? input.activation.executor.agentId : void 0);
@@ -73,14 +74,14 @@ function registerTaskWriteCapabilities(dispatcher, deps) {
73
74
  ...input,
74
75
  locale,
75
76
  originConversationId,
76
- delegateAgentId: agentId,
77
+ delegateAgentId: input.activation.mode === "allocate" ? void 0 : agentId,
77
78
  activation,
78
79
  idempotencyKey: context.idempotencyKey
79
80
  };
80
81
  return deps.createTask ? deps.createTask(request, context.actor) : new TaskApplicationService().create(request, context.actor);
81
82
  },
82
83
  afterCommit(result) {
83
- if (result.ok) deps.wake?.(Boolean(result.runId));
84
+ if (result.ok) deps.wake?.(Boolean(result.runId || result.model.allocation));
84
85
  }
85
86
  }));
86
87
  dispatcher.register(defineAtomicCapability({
@@ -111,7 +112,7 @@ function registerTaskWriteCapabilities(dispatcher, deps) {
111
112
  const activeRun = new TaskRunRepository().getActiveRoot(input.taskId);
112
113
  if (activeRun?.conversationId && new TaskRepository().get(input.taskId)?.version === result.model.task.version) await deps.abortConversation?.(activeRun.conversationId);
113
114
  }
114
- deps.wake?.(Boolean(result.runId) || command.type === "resolve_wait" || command.type === "close");
115
+ deps.wake?.(Boolean(result.runId || result.model.allocation) || command.type === "resolve_wait" || command.type === "close");
115
116
  }
116
117
  }));
117
118
  }
@@ -1,7 +1,7 @@
1
1
  import { isXopcDatabaseOpen } from "../storage/sqlite/connection.js";
2
2
  import { init_sqlite } from "../storage/sqlite/index.js";
3
- import { TaskConversationRepository } from "./task-conversation-repository.js";
4
3
  import { getExecutionEnvironmentForSession } from "../execution-environments/subject.js";
4
+ import { TaskConversationRepository } from "./task-conversation-repository.js";
5
5
  //#region src/tasks/execution-context.ts
6
6
  init_sqlite();
7
7
  const ORIGINS = new Set([
@@ -4,9 +4,9 @@ import { listConnectorApprovals } from "../storage/sqlite/connector-repository.j
4
4
  import { init_sqlite } from "../storage/sqlite/index.js";
5
5
  import { TaskReadModelProjector } from "./task-read-model-projector.js";
6
6
  import "../automations/domain/defaults.js";
7
- import "../automations/index.js";
8
- import { listGatewayAgents } from "../gateway/agents-admin.js";
9
7
  import { AttentionGovernor } from "./attention-governor.js";
8
+ import { listGatewayAgents } from "../gateway/agents-admin.js";
9
+ import "../automations/index.js";
10
10
  //#region src/tasks/home-query-service.ts
11
11
  init_sqlite();
12
12
  init_task_repository();
@@ -1,21 +1,21 @@
1
1
  import { enqueueTaskAttentionRequiredEvent, enqueueTaskChanged, enqueueTaskChangedEvent, init_task_change_events } from "./task-change-events.js";
2
2
  import { TaskRepository, init_task_repository } from "./task-repository.js";
3
3
  import { TaskRunRepository, init_task_run_repository } from "./task-run-repository.js";
4
- import { TaskContextRepository } from "./task-context-repository.js";
5
4
  import { TaskReadModelProjector } from "./task-read-model-projector.js";
6
- import { TaskDependencyError, TaskDependencyService } from "./task-dependency-service.js";
7
5
  import { TaskConversationConflictError, TaskConversationRepository } from "./task-conversation-repository.js";
8
- import { TaskApplicationService } from "./task-application-service.js";
9
- import { defineTaskContract } from "./task-contract-definition.js";
10
- import { assembleTaskContext, buildDelegatedTaskDirective, buildTaskExecutionDirective, getTaskContextManifest, getTaskExecutionBrief } from "./task-context-assembler.js";
6
+ import { TaskContextRepository } from "./task-context-repository.js";
7
+ import { TaskDependencyError, TaskDependencyService } from "./task-dependency-service.js";
11
8
  import { TaskValueMetricsService } from "./task-value-metrics-service.js";
12
9
  import { TaskDeletionService } from "./task-deletion-service.js";
10
+ import { TaskApplicationService } from "./task-application-service.js";
13
11
  import { TaskSignalService } from "./task-signal-service.js";
14
12
  import { resolveExecutionContext } from "./execution-context.js";
15
13
  import { AttentionGovernor } from "./attention-governor.js";
16
14
  import { HomeQueryService, buildHomeWorkbench, decisionFromTask } from "./home-query-service.js";
17
15
  import { TaskWorkflowCoordinator } from "./task-workflow-coordinator.js";
16
+ import { defineTaskContract } from "./task-contract-definition.js";
18
17
  import { ModelTaskContractPlanner, parseTaskContractResponse } from "./task-contract-planner.js";
18
+ import { assembleTaskContext, buildDelegatedTaskDirective, buildTaskExecutionDirective, getTaskContextManifest, getTaskExecutionBrief } from "./task-context-assembler.js";
19
19
  import { TaskRunCoordinator } from "./task-run-coordinator.js";
20
20
  import { ProjectOperatingViewService, summarizeProjectOperatingView } from "./project-operating-view-service.js";
21
21
  import { TaskHandoffService } from "./task-handoff-service.js";
@@ -0,0 +1,25 @@
1
+ import type { TaskAllocation, SpecialistTaskRequirements } from '@xopcai/gateway-contract';
2
+ export interface AllocationRow {
3
+ id: string;
4
+ task_id: string;
5
+ origin_conversation_id: string;
6
+ requirements_json: string;
7
+ task_version: number;
8
+ status: TaskAllocation['status'];
9
+ selected_agent_id: string | null;
10
+ selection_reason: string | null;
11
+ reason_code: string | null;
12
+ attempts: number;
13
+ lease_token: string | null;
14
+ lease_expires_at: number | null;
15
+ next_attempt_at: number;
16
+ updated_at: number;
17
+ }
18
+ export declare class TaskAllocationRepository {
19
+ get(taskId: string): AllocationRow | undefined;
20
+ summary(taskId: string): TaskAllocation | undefined;
21
+ create(taskId: string, conversationId: string, taskVersion: number, requirements: SpecialistTaskRequirements): void;
22
+ claim(now?: number): AllocationRow | undefined;
23
+ owns(row: AllocationRow): boolean;
24
+ publish(taskId: string, content: string): void;
25
+ }