@xopcai/xopc 0.0.385 → 0.0.387

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 (360) hide show
  1. package/dist/browser-ext/dist/sidepanel.js +1 -1
  2. package/dist/browser-ext/manifest.json +1 -1
  3. package/dist/extensions/telegram/xopc.extension.json +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Cb9eaXxR.js → agent-avatar-dicebear-Bv8M5ygD.js} +1 -1
  5. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-DEV-xtgm.js → agent-defaults-settings-panel-UBy01-65.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agent-plugin-dialog-DXKc3Luj.js → agent-plugin-dialog-Q9guA8kU.js} +1 -1
  7. package/dist/gateway/static/root/assets/{agents-DcNxwpJQ.js → agents-yfJFubD0.js} +3 -3
  8. package/dist/gateway/static/root/assets/{app-management-settings-panel-X5i0Tz7_.js → app-management-settings-panel-Cdyad8c1.js} +1 -1
  9. package/dist/gateway/static/root/assets/{appearance-settings-CmHHzquT.js → appearance-settings-DPPvnKH_.js} +1 -1
  10. package/dist/gateway/static/root/assets/{apps-page-ChFA4Zp0.js → apps-page-Bn_jwaeA.js} +1 -1
  11. package/dist/gateway/static/root/assets/{automations-page-BFqsIqOI.js → automations-page-CAB2sLJ5.js} +1 -1
  12. package/dist/gateway/static/root/assets/{automations-workspace-Blfak-fT.js → automations-workspace-CYRUhhH4.js} +1 -1
  13. package/dist/gateway/static/root/assets/{block-editor-CpOLG3Co.js → block-editor-B9DmMEa8.js} +1 -1
  14. package/dist/gateway/static/root/assets/{browser-automations-page-BSbTJ9j2.js → browser-automations-page-BHAWpZE2.js} +1 -1
  15. package/dist/gateway/static/root/assets/{browser-settings-page-BUlILJrB.js → browser-settings-page-BG_17NcQ.js} +2 -2
  16. package/dist/gateway/static/root/assets/{capabilities-2Do3eKMM.js → capabilities-BX1rCiVm.js} +1 -1
  17. package/dist/gateway/static/root/assets/{capabilities-XFwwUNU3.js → capabilities-CW389yo6.js} +1 -1
  18. package/dist/gateway/static/root/assets/{capabilities-page-CeRdkwRf.js → capabilities-page-BAnBYWlY.js} +2 -2
  19. package/dist/gateway/static/root/assets/{capabilities-settings-panel-S-cKsGja.js → capabilities-settings-panel-Ca-d6lXk.js} +3 -3
  20. package/dist/gateway/static/root/assets/{capability-header-actions-6w8pQhnn.js → capability-header-actions-B3TL8TcF.js} +1 -1
  21. package/dist/gateway/static/root/assets/{channels-DfNTGBmp.js → channels-BadpS-nq.js} +1 -1
  22. package/dist/gateway/static/root/assets/{chat-terminal-dock-DnoQHpDc.js → chat-terminal-dock-C_vntFpP.js} +1 -1
  23. package/dist/gateway/static/root/assets/{chunk-KS7C4IRE-BMYIfy9x.js → chunk-KS7C4IRE--EKdQGRF.js} +1 -1
  24. package/dist/gateway/static/root/assets/{computer-settings-page-7yliE7sG.js → computer-settings-page-B-5kxk70.js} +1 -1
  25. package/dist/gateway/static/root/assets/{connector-service-page-DOLAUFSW.js → connector-service-page-DTnfpLHL.js} +1 -1
  26. package/dist/gateway/static/root/assets/{connectors-page-DAsn97XG.js → connectors-page-CmJV7gqj.js} +1 -1
  27. package/dist/gateway/static/root/assets/constants-DeXt1mV-.js +1 -0
  28. package/dist/gateway/static/root/assets/{date-picker-DNDqr4Fk.js → date-picker-D5zYeC8q.js} +1 -1
  29. package/dist/gateway/static/root/assets/{dependency-picker-B5oG7RgE.js → dependency-picker-D72vT-tb.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-K7kUCX1O.js → desktop-pet-DvoeVPf_.js} +1 -1
  31. package/dist/gateway/static/root/assets/{desktop-pet-settings-KgOAuqSh.js → desktop-pet-settings-Dfb392hs.js} +1 -1
  32. package/dist/gateway/static/root/assets/{device-pairing-wizard-DvqniZDm.js → device-pairing-wizard-B06Sqn5D.js} +1 -1
  33. package/dist/gateway/static/root/assets/{directory-picker-path-field-BmOguLDl.js → directory-picker-path-field-CA3H3bc-.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-debug-page-DtHNy4TE.js → extension-debug-page-B0wTBCx4.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-page-DSSuMQxp.js → extension-page-BeHiXhB1.js} +1 -1
  36. package/dist/gateway/static/root/assets/{extension-provider-nbgU7xBS.js → extension-provider-CJZ5EVpQ.js} +1 -1
  37. package/dist/gateway/static/root/assets/{extension-settings-page-DSd__mNd.js → extension-settings-page-Q88-LFCJ.js} +1 -1
  38. package/dist/gateway/static/root/assets/{fallback-models-D7bjbiwZ.js → fallback-models-BXoPCvzq.js} +1 -1
  39. package/dist/gateway/static/root/assets/{gateway-settings-hSXGWumL.js → gateway-settings-IICLMGDI.js} +1 -1
  40. package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-C7xJwE61.js → highlighted-body-KQOG7T2V-D336so8z.js} +1 -1
  41. package/dist/gateway/static/root/assets/home-page--MvqsFhQ.js +2 -0
  42. package/dist/gateway/static/root/assets/{imports-page-BufZPzGE.js → imports-page-muV1SduS.js} +1 -1
  43. package/dist/gateway/static/root/assets/index-D0qMv3jf.js +260 -0
  44. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-B8pPP5RF.js → keyboard-shortcuts-settings-i1sDWcwl.js} +1 -1
  45. package/dist/gateway/static/root/assets/{local-app-workbench-page-zEtvE7pJ.js → local-app-workbench-page-DY9tXEO6.js} +1 -1
  46. package/dist/gateway/static/root/assets/{local-apps-page-Bli7e_eg.js → local-apps-page-BHD73STy.js} +1 -1
  47. package/dist/gateway/static/root/assets/local-session-drafts-Be4BGM4Z.js +1 -0
  48. package/dist/gateway/static/root/assets/{logs-page-BimZk3R4.js → logs-page-DsPpe8Ws.js} +1 -1
  49. package/dist/gateway/static/root/assets/{management-settings-5Y4COyU9.js → management-settings-Buwi2wQE.js} +1 -1
  50. package/dist/gateway/static/root/assets/{markdown-view-DHfQAvZQ.js → markdown-view-CBjl-XEc.js} +2 -2
  51. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-D2mip-f9.js +1 -0
  52. package/dist/gateway/static/root/assets/{note-detail-panel-KLDPLVg7.js → note-detail-panel-D8n80Gbr.js} +3 -3
  53. package/dist/gateway/static/root/assets/{notes-api-nqN2wKYc.js → notes-api-BlGP533W.js} +1 -1
  54. package/dist/gateway/static/root/assets/{notes-page-DST0oPXD.js → notes-page-Btf-jSS_.js} +5 -5
  55. package/dist/gateway/static/root/assets/{page-context-capture-button-Bmed83-6.js → page-context-capture-button-97RL8Gc7.js} +1 -1
  56. package/dist/gateway/static/root/assets/{personal-page-BG4Ystrm.js → personal-page-B04L8Oz5.js} +1 -1
  57. package/dist/gateway/static/root/assets/product-open-page-9zEDvZa7.js +1 -0
  58. package/dist/gateway/static/root/assets/{product-preview-content-DjmupQSq.js → product-preview-content-DynBrIXq.js} +1 -1
  59. package/dist/gateway/static/root/assets/{project-detail-page-CzBmV0P6.js → project-detail-page-BM7MsoVA.js} +1 -1
  60. package/dist/gateway/static/root/assets/{projects-page-DByqe5Em.js → projects-page-pcyeEJnz.js} +1 -1
  61. package/dist/gateway/static/root/assets/{remote-access-hub-DTjj-odF.js → remote-access-hub-CphyTu22.js} +1 -1
  62. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-B_ptn3T8.js → runtime-tools-settings-panel-DPafoO0G.js} +1 -1
  63. package/dist/gateway/static/root/assets/{scenes-page-wkua4l5y.js → scenes-page-j97FrDRW.js} +2 -2
  64. package/dist/gateway/static/root/assets/{schema-form-VvOSM84Y.js → schema-form-CuJNwKHO.js} +1 -1
  65. package/dist/gateway/static/root/assets/{send-session-input-BCAF-Ikt.js → send-session-input-C293-Hbx.js} +1 -1
  66. package/dist/gateway/static/root/assets/session-manager-COd9RECl.js +16 -0
  67. package/dist/gateway/static/root/assets/{sessions-page-D06XwYAT.js → sessions-page-D8t_8fMl.js} +1 -1
  68. package/dist/gateway/static/root/assets/settings-advanced-gate-CDkitNHA.js +1 -0
  69. package/dist/gateway/static/root/assets/{settings-page-C-6BJdb1.js → settings-page-DS9DMYUe.js} +1 -1
  70. package/dist/gateway/static/root/assets/{setup-status-panel-L0JSG0K-.js → setup-status-panel-DRDvm9yZ.js} +1 -1
  71. package/dist/gateway/static/root/assets/{share-link-dialog-C47Xgzta.js → share-link-dialog-BKGI8Kr0.js} +1 -1
  72. package/dist/gateway/static/root/assets/{share-preview-page-nJ2FWAEP.js → share-preview-page-BF2WaO43.js} +1 -1
  73. package/dist/gateway/static/root/assets/{shares-settings-BbgAUM3v.js → shares-settings-DQTQZu6V.js} +1 -1
  74. package/dist/gateway/static/root/assets/{skill-api-BFU1tPyw.js → skill-api-DzVa7G-O.js} +1 -1
  75. package/dist/gateway/static/root/assets/{skills-page-DZw6el4o.js → skills-page-CfJIjRdS.js} +1 -1
  76. package/dist/gateway/static/root/assets/{system-settings-panel-DshSGWNg.js → system-settings-panel-Bzhqed-a.js} +1 -1
  77. package/dist/gateway/static/root/assets/task-detail-page-BYQFC0-U.js +2 -0
  78. package/dist/gateway/static/root/assets/task-expandable-content-C9ohICpw.js +1 -0
  79. package/dist/gateway/static/root/assets/{tasks-DJIeIk9C.js → tasks-PuIUgF9L.js} +1 -1
  80. package/dist/gateway/static/root/assets/{tunnel-api-DFDXwWnU.js → tunnel-api-DrgpZ81I.js} +1 -1
  81. package/dist/gateway/static/root/assets/{usage-page-2RJLg54s.js → usage-page-Drk8FWnj.js} +1 -1
  82. package/dist/gateway/static/root/assets/{use-composer-attachments-BFP3k6oC.js → use-composer-attachments-rgW7h4sD.js} +1 -1
  83. package/dist/gateway/static/root/assets/{use-file-preview-expanded-B1BiTQNS.js → use-file-preview-expanded-DSKIxfz9.js} +1 -1
  84. package/dist/gateway/static/root/assets/{user-model-page-y1gjGYPI.js → user-model-page-07t2-nFE.js} +2 -2
  85. package/dist/gateway/static/root/assets/{work-discovery-overlay-Ch-KfpCF.js → work-discovery-overlay-TQ5bjVot.js} +1 -1
  86. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CTu297Hc.js → workflow-run-setup-panel-C9HP2uGG.js} +1 -1
  87. package/dist/gateway/static/root/assets/{workflows-page-CRZXG_rm.js → workflows-page-DK01JRI1.js} +3 -3
  88. package/dist/gateway/static/root/assets/{workspace-api-Xr3wz8T3.js → workspace-api-JWHOFos6.js} +2 -2
  89. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-hEfjVjnc.js → xopc-cloud-account-card-B-BhQdAf.js} +1 -1
  90. package/dist/gateway/static/root/index.html +16 -16
  91. package/dist/package.js +1 -1
  92. package/dist/packages/gateway-contract/src/index.js +4 -0
  93. package/dist/packages/gateway-contract/src/result-reference.js +25 -0
  94. package/dist/packages/gateway-contract/src/session-input-command.js +2 -1
  95. package/dist/packages/gateway-contract/src/task-research-result.js +90 -0
  96. package/dist/packages/gateway-contract/src/task-result-delivery.js +21 -0
  97. package/dist/packages/gateway-contract/src/tasks.js +7 -1
  98. package/dist/packages/gateway-contract/src/turn-outcome.js +4 -0
  99. package/dist/src/agent/agent-manager.js +3 -3
  100. package/dist/src/agent/background-review/run-background-review.js +1 -1
  101. package/dist/src/agent/child-agent-factory.d.ts +4 -1
  102. package/dist/src/agent/child-agent-factory.js +86 -12
  103. package/dist/src/agent/context/connection-objective-context.d.ts +1 -0
  104. package/dist/src/agent/context/connection-objective-context.js +33 -0
  105. package/dist/src/agent/data-acquisition/service.js +41 -6
  106. package/dist/src/agent/data-acquisition/types.d.ts +2 -0
  107. package/dist/src/agent/embedded/agent-profile-context.d.ts +7 -0
  108. package/dist/src/agent/embedded/agent-profile-context.js +92 -0
  109. package/dist/src/agent/embedded/run-for-session.js +5 -2
  110. package/dist/src/agent/embedded/run-turn.js +19 -6
  111. package/dist/src/agent/embedded/runs.d.ts +9 -2
  112. package/dist/src/agent/embedded/runs.js +30 -7
  113. package/dist/src/agent/embedded/session-runner.js +5 -2
  114. package/dist/src/agent/embedded/types.d.ts +4 -0
  115. package/dist/src/agent/embedded/xopc-tools-bridge.js +13 -2
  116. package/dist/src/agent/external-tools/cliProvider.js +1 -1
  117. package/dist/src/agent/external-tools/composio-provider.js +2 -2
  118. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  119. package/dist/src/agent/external-tools/gateway-tools.js +8 -4
  120. package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
  121. package/dist/src/agent/orchestration/agent-run-supervisor.js +2 -1
  122. package/dist/src/agent/orchestration/agent-turn-policy.js +5 -1
  123. package/dist/src/agent/orchestration/delegation-budget.d.ts +7 -1
  124. package/dist/src/agent/orchestration/delegation-budget.js +17 -9
  125. package/dist/src/agent/orchestration/research-checkpoint.d.ts +56 -0
  126. package/dist/src/agent/orchestration/research-checkpoint.js +64 -0
  127. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +3 -1
  128. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +15 -2
  129. package/dist/src/agent/orchestration/run-termination.d.ts +12 -0
  130. package/dist/src/agent/orchestration/run-termination.js +24 -0
  131. package/dist/src/agent/orchestration/turn-recovery.d.ts +4 -1
  132. package/dist/src/agent/orchestration/turn-recovery.js +19 -3
  133. package/dist/src/agent/prompt/sections/agent-identity.js +12 -7
  134. package/dist/src/agent/prompt/sections/messaging-runtime.js +1 -1
  135. package/dist/src/agent/prompt/sections/project-context.js +1 -1
  136. package/dist/src/agent/prompt/sections/response-language.d.ts +1 -1
  137. package/dist/src/agent/prompt/sections/response-language.js +6 -2
  138. package/dist/src/agent/prompt/subagent-context.js +1 -1
  139. package/dist/src/agent/prompt/system-prompt.js +4 -6
  140. package/dist/src/agent/service/direct-turn-helpers.d.ts +2 -0
  141. package/dist/src/agent/service/direct-turn-helpers.js +4 -0
  142. package/dist/src/agent/service/process-direct-one-shot.js +4 -1
  143. package/dist/src/agent/service/process-direct-streaming.js +3 -2
  144. package/dist/src/agent/service.js +2 -2
  145. package/dist/src/agent/skills/index.js +1 -1
  146. package/dist/src/agent/skills/managed-store.js +1 -1
  147. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  148. package/dist/src/agent/source-context/index.js +1 -1
  149. package/dist/src/agent/source-context/result-context.d.ts +2 -0
  150. package/dist/src/agent/source-context/result-context.js +32 -0
  151. package/dist/src/agent/source-context/types.d.ts +2 -2
  152. package/dist/src/agent/source-context/types.js +1 -1
  153. package/dist/src/agent/tasks/task-judge-service.js +3 -1
  154. package/dist/src/agent/tools/apply-patch.js +1 -1
  155. package/dist/src/agent/tools/delegate-tool.js +216 -121
  156. package/dist/src/agent/tools/delegation-policy.js +13 -1
  157. package/dist/src/agent/tools/exec-command.js +47 -2
  158. package/dist/src/agent/tools/factory.js +19 -10
  159. package/dist/src/agent/tools/index.d.ts +1 -0
  160. package/dist/src/agent/tools/index.js +2 -1
  161. package/dist/src/agent/tools/language-diagnostics.js +1 -1
  162. package/dist/src/agent/tools/personal-performance.d.ts +2 -0
  163. package/dist/src/agent/tools/personal-performance.js +82 -0
  164. package/dist/src/agent/tools/personal-read-tool.js +1 -1
  165. package/dist/src/agent/tools/personal-request-tool.js +9 -14
  166. package/dist/src/agent/tools/personal-result-tool.d.ts +2 -0
  167. package/dist/src/agent/tools/personal-result-tool.js +106 -0
  168. package/dist/src/agent/tools/personal-task-tool.d.ts +12 -3
  169. package/dist/src/agent/tools/personal-task-tool.js +115 -10
  170. package/dist/src/agent/tools/publish-artifacts.js +1 -1
  171. package/dist/src/agent/tools/research-checkpoint-tool.d.ts +3 -0
  172. package/dist/src/agent/tools/research-checkpoint-tool.js +28 -0
  173. package/dist/src/agent/tools/review-workspace.js +21 -2
  174. package/dist/src/agent/tools/search/cache.d.ts +20 -0
  175. package/dist/src/agent/tools/search/cache.js +19 -0
  176. package/dist/src/agent/tools/search/errors.d.ts +19 -0
  177. package/dist/src/agent/tools/search/errors.js +69 -0
  178. package/dist/src/agent/tools/search/providers/bing-api.js +2 -1
  179. package/dist/src/agent/tools/search/providers/bing-html.js +2 -1
  180. package/dist/src/agent/tools/search/providers/brave.js +2 -1
  181. package/dist/src/agent/tools/search/providers/duckduckgo-html.js +2 -1
  182. package/dist/src/agent/tools/search/providers/searxng.js +2 -1
  183. package/dist/src/agent/tools/search/providers/tavily.js +2 -1
  184. package/dist/src/agent/tools/search/providers/xopc-cloud.d.ts +1 -0
  185. package/dist/src/agent/tools/search/providers/xopc-cloud.js +7 -2
  186. package/dist/src/agent/tools/search/registry.d.ts +21 -5
  187. package/dist/src/agent/tools/search/registry.js +252 -25
  188. package/dist/src/agent/tools/search/types.d.ts +25 -0
  189. package/dist/src/agent/tools/send-media.js +1 -1
  190. package/dist/src/agent/tools/task-collaboration-tool.d.ts +9 -1
  191. package/dist/src/agent/tools/task-collaboration-tool.js +121 -2
  192. package/dist/src/agent/tools/task-evidence.d.ts +3 -0
  193. package/dist/src/agent/tools/task-evidence.js +71 -0
  194. package/dist/src/agent/tools/task-result-tool.d.ts +2 -0
  195. package/dist/src/agent/tools/task-result-tool.js +93 -0
  196. package/dist/src/agent/tools/tool-media.js +1 -1
  197. package/dist/src/agent/tools/web.d.ts +16 -2
  198. package/dist/src/agent/tools/web.js +74 -29
  199. package/dist/src/agent/tools/xopc-use-tool.js +27 -6
  200. package/dist/src/agent/workspace-runtime/registry.js +1 -1
  201. package/dist/src/agent-catalog/capabilities.js +2 -2
  202. package/dist/src/automations/capabilities/drafts.js +1 -1
  203. package/dist/src/automations/capabilities/write.d.ts +4 -4
  204. package/dist/src/automations/domain/validation.d.ts +8 -8
  205. package/dist/src/automations/draft/automation-draft-validator.d.ts +2 -2
  206. package/dist/src/automations/service/action-executor.js +1 -1
  207. package/dist/src/bootstrap/application-state.js +1 -1
  208. package/dist/src/browser/automations/schema.d.ts +2 -2
  209. package/dist/src/browser/automations/service.d.ts +2 -2
  210. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  211. package/dist/src/capabilities/runtime/product.js +1 -1
  212. package/dist/src/chat-commands/agent-edit.js +1 -1
  213. package/dist/src/cli/commands/agent.js +1 -1
  214. package/dist/src/cli/commands/agents.js +1 -1
  215. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  216. package/dist/src/cli/commands/models.js +1 -1
  217. package/dist/src/cli/commands/onboard/model.js +1 -1
  218. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  219. package/dist/src/config/agent-profile.js +2 -2
  220. package/dist/src/config/index.js +2 -2
  221. package/dist/src/config/loader.js +1 -1
  222. package/dist/src/config/models-json.js +1 -1
  223. package/dist/src/config/schema.d.ts +1 -0
  224. package/dist/src/config/schema.js +5 -2
  225. package/dist/src/connectors/connection-recovery-service.d.ts +3 -1
  226. package/dist/src/connectors/connection-recovery-service.js +67 -6
  227. package/dist/src/discussions/action-tasks.d.ts +2 -2
  228. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  229. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  230. package/dist/src/gateway/agents-admin.js +2 -2
  231. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  232. package/dist/src/gateway/hono/routes/agent-stream.js +1 -1
  233. package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
  234. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  235. package/dist/src/gateway/hono/routes/context-sources.js +1 -1
  236. package/dist/src/gateway/hono/routes/notes.js +2 -2
  237. package/dist/src/gateway/hono/routes/projects.js +3 -3
  238. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +18 -2
  239. package/dist/src/gateway/hono/routes/session-input-handler.js +2 -2
  240. package/dist/src/gateway/hono/routes/tasks.js +2 -2
  241. package/dist/src/gateway/image-generation-setup.js +1 -1
  242. package/dist/src/gateway/lock.js +1 -1
  243. package/dist/src/gateway/media-access.js +1 -1
  244. package/dist/src/gateway/service/agent-runner.d.ts +2 -0
  245. package/dist/src/gateway/service/agent-runner.js +30 -17
  246. package/dist/src/gateway/service/run-gateway-agent.js +32 -2
  247. package/dist/src/gateway/service/session-input-coordinator.d.ts +10 -1
  248. package/dist/src/gateway/service/session-input-coordinator.js +214 -27
  249. package/dist/src/gateway/service.d.ts +1 -0
  250. package/dist/src/gateway/service.js +49 -16
  251. package/dist/src/gateway/session-context-summary.js +1 -1
  252. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  253. package/dist/src/home-intelligence/host.js +2 -2
  254. package/dist/src/local-apps/service.js +1 -1
  255. package/dist/src/media/session-references.js +1 -1
  256. package/dist/src/personal-agent/communication.js +1 -0
  257. package/dist/src/personal-agent/performance.d.ts +83 -0
  258. package/dist/src/personal-agent/performance.js +65 -0
  259. package/dist/src/personal-agent/policy.d.ts +1 -1
  260. package/dist/src/personal-agent/policy.js +1 -0
  261. package/dist/src/personal-agent/proactivity/service.js +1 -1
  262. package/dist/src/personal-agent/prompt-context.js +3 -1
  263. package/dist/src/personal-agent/prompts.js +10 -4
  264. package/dist/src/personal-agent/reply-composer.d.ts +1 -0
  265. package/dist/src/personal-agent/reply-composer.js +149 -20
  266. package/dist/src/personal-agent/reply-style.d.ts +1 -1
  267. package/dist/src/personal-agent/reply-style.js +1 -0
  268. package/dist/src/personal-agent/repository.d.ts +1 -1
  269. package/dist/src/personal-agent/repository.js +1 -1
  270. package/dist/src/personal-agent/request-delivery.js +3 -1
  271. package/dist/src/personal-agent/request-repository.d.ts +2 -0
  272. package/dist/src/personal-agent/request-service.d.ts +4 -0
  273. package/dist/src/personal-agent/request-service.js +91 -20
  274. package/dist/src/personal-agent/result-extraction.d.ts +42 -0
  275. package/dist/src/personal-agent/result-extraction.js +209 -0
  276. package/dist/src/personal-agent/result-file-links.d.ts +3 -0
  277. package/dist/src/personal-agent/result-file-links.js +21 -0
  278. package/dist/src/personal-agent/result-read-continuations.d.ts +13 -0
  279. package/dist/src/personal-agent/result-read-continuations.js +78 -0
  280. package/dist/src/personal-agent/result-reader.d.ts +43 -0
  281. package/dist/src/personal-agent/result-reader.js +461 -0
  282. package/dist/src/personal-agent/service.js +2 -2
  283. package/dist/src/personal-agent/task-cancel.js +85 -35
  284. package/dist/src/providers/model-catalog-persistence.js +1 -1
  285. package/dist/src/routing/resolve-route.js +1 -1
  286. package/dist/src/routing/resolve-tui-session-key.js +1 -1
  287. package/dist/src/scenes/taskFollowUp/service.d.ts +15 -5
  288. package/dist/src/session/client-history.d.ts +1 -1
  289. package/dist/src/session/client-history.js +1 -1
  290. package/dist/src/session/session-context-for-llm.js +4 -2
  291. package/dist/src/session/store.d.ts +3 -1
  292. package/dist/src/session/store.js +13 -3
  293. package/dist/src/share/hosted-session-share.js +1 -1
  294. package/dist/src/storage/sqlite/connection-wait-repository.d.ts +5 -2
  295. package/dist/src/storage/sqlite/connection-wait-repository.js +42 -17
  296. package/dist/src/storage/sqlite/index.d.ts +1 -0
  297. package/dist/src/storage/sqlite/index.js +3 -1
  298. package/dist/src/storage/sqlite/migrations/250_research_checkpoints.sql +15 -0
  299. package/dist/src/storage/sqlite/migrations/251_personal_result_reads.sql +40 -0
  300. package/dist/src/storage/sqlite/migrations/252_task_work_revisions.sql +15 -0
  301. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  302. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  303. package/dist/src/storage/sqlite/research-checkpoint-repository.d.ts +24 -0
  304. package/dist/src/storage/sqlite/research-checkpoint-repository.js +91 -0
  305. package/dist/src/storage/sqlite/schema.js +1 -1
  306. package/dist/src/storage/sqlite/session-creation-repository.js +3 -2
  307. package/dist/src/storage/sqlite/session-input-repository.d.ts +16 -0
  308. package/dist/src/storage/sqlite/session-input-repository.js +41 -7
  309. package/dist/src/tasks/capabilities/management.d.ts +2 -2
  310. package/dist/src/tasks/capabilities/read.js +2 -2
  311. package/dist/src/tasks/capabilities/relations.d.ts +7 -7
  312. package/dist/src/tasks/capabilities/write.d.ts +2 -2
  313. package/dist/src/tasks/capabilities/write.js +1 -1
  314. package/dist/src/tasks/index.js +1 -1
  315. package/dist/src/tasks/task-allocation-service.d.ts +2 -0
  316. package/dist/src/tasks/task-allocation-service.js +100 -8
  317. package/dist/src/tasks/task-application-service.d.ts +18 -0
  318. package/dist/src/tasks/task-application-service.js +133 -2
  319. package/dist/src/tasks/task-context-assembler.js +13 -5
  320. package/dist/src/tasks/task-continuation.d.ts +1 -0
  321. package/dist/src/tasks/task-continuation.js +1 -0
  322. package/dist/src/tasks/task-contract-definition.d.ts +3 -0
  323. package/dist/src/tasks/task-contract-planner.d.ts +1 -0
  324. package/dist/src/tasks/task-contract-planner.js +61 -20
  325. package/dist/src/tasks/task-conversation-repository.js +1 -1
  326. package/dist/src/tasks/task-evidence-ranges.d.ts +7 -0
  327. package/dist/src/tasks/task-evidence-ranges.js +20 -0
  328. package/dist/src/tasks/task-execution-capabilities.d.ts +26 -0
  329. package/dist/src/tasks/task-execution-capabilities.js +117 -0
  330. package/dist/src/tasks/task-handoff-service.js +1 -1
  331. package/dist/src/tasks/task-handoff.d.ts +56 -0
  332. package/dist/src/tasks/task-handoff.js +510 -0
  333. package/dist/src/tasks/task-model-call.d.ts +7 -0
  334. package/dist/src/tasks/task-model-call.js +35 -0
  335. package/dist/src/tasks/task-read-model-projector.d.ts +6 -0
  336. package/dist/src/tasks/task-read-model-projector.js +12 -1
  337. package/dist/src/tasks/task-research-repair.d.ts +19 -0
  338. package/dist/src/tasks/task-research-repair.js +79 -0
  339. package/dist/src/tasks/task-research-result.d.ts +99 -0
  340. package/dist/src/tasks/task-research-result.js +478 -0
  341. package/dist/src/tasks/task-result-delivery-repository.js +37 -3
  342. package/dist/src/tasks/task-result-delivery-service.js +38 -10
  343. package/dist/src/tasks/task-run-coordinator.js +71 -15
  344. package/dist/src/tasks/task-run-dispatcher.d.ts +1 -0
  345. package/dist/src/tasks/task-run-dispatcher.js +3 -1
  346. package/dist/src/tasks/task-run-repository.d.ts +5 -0
  347. package/dist/src/tasks/task-run-repository.js +88 -1
  348. package/dist/src/tui/backends/embedded-backend.js +2 -2
  349. package/dist/src/voice/realtime/persona-context.js +1 -1
  350. package/package.json +12 -6
  351. package/dist/gateway/static/root/assets/constants-Dy8Gw0sF.js +0 -1
  352. package/dist/gateway/static/root/assets/home-page-DJNmlMfH.js +0 -2
  353. package/dist/gateway/static/root/assets/index-K8SXDtxr.js +0 -260
  354. package/dist/gateway/static/root/assets/local-session-drafts-D_tYFy7d.js +0 -1
  355. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-DBRj4-1-.js +0 -1
  356. package/dist/gateway/static/root/assets/product-open-page-CXkYP9xE.js +0 -1
  357. package/dist/gateway/static/root/assets/session-manager-_yy4bxhT.js +0 -16
  358. package/dist/gateway/static/root/assets/settings-advanced-gate-DoAHy1wj.js +0 -1
  359. package/dist/gateway/static/root/assets/task-detail-page-CfZhq4XZ.js +0 -2
  360. package/dist/gateway/static/root/assets/task-expandable-content-CF6Bj-Qa.js +0 -1
@@ -0,0 +1,40 @@
1
+ CREATE TABLE personal_result_documents (
2
+ document_id TEXT PRIMARY KEY,
3
+ delivery_id TEXT NOT NULL REFERENCES task_result_deliveries(delivery_id) ON DELETE CASCADE,
4
+ source_id TEXT NOT NULL,
5
+ status TEXT NOT NULL CHECK(status IN ('pending', 'ready', 'unsupported', 'failed')),
6
+ lease_token TEXT,
7
+ lease_until INTEGER NOT NULL DEFAULT 0,
8
+ parser_version INTEGER NOT NULL,
9
+ content_revision TEXT,
10
+ content TEXT,
11
+ sections_json TEXT NOT NULL DEFAULT '[]',
12
+ limitations_json TEXT NOT NULL DEFAULT '[]',
13
+ fingerprint TEXT,
14
+ error TEXT,
15
+ UNIQUE(delivery_id, source_id)
16
+ );
17
+ CREATE VIRTUAL TABLE personal_result_search USING fts5(
18
+ document_id UNINDEXED, start_offset UNINDEXED, text, tokenize='trigram'
19
+ );
20
+ CREATE TABLE personal_result_sections (
21
+ document_id TEXT NOT NULL REFERENCES personal_result_documents(document_id) ON DELETE CASCADE,
22
+ section_id TEXT NOT NULL,
23
+ ordinal INTEGER NOT NULL,
24
+ title TEXT NOT NULL,
25
+ start_offset INTEGER NOT NULL,
26
+ char_length INTEGER NOT NULL,
27
+ locator_json TEXT NOT NULL,
28
+ PRIMARY KEY(document_id, section_id)
29
+ );
30
+ CREATE INDEX idx_personal_result_sections_order ON personal_result_sections(document_id, ordinal);
31
+ CREATE TABLE personal_result_read_waits (
32
+ input_id TEXT PRIMARY KEY REFERENCES session_inputs(id) ON DELETE CASCADE,
33
+ conversation_id TEXT NOT NULL REFERENCES sessions(conversation_id) ON DELETE CASCADE,
34
+ transcript_id TEXT NOT NULL,
35
+ requests_json TEXT NOT NULL,
36
+ status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending','queued','done','stale'))
37
+ );
38
+ CREATE TRIGGER personal_result_documents_delete AFTER DELETE ON personal_result_documents BEGIN
39
+ DELETE FROM personal_result_search WHERE document_id = old.document_id;
40
+ END;
@@ -0,0 +1,15 @@
1
+ CREATE TABLE task_work_revisions (
2
+ revision_id TEXT PRIMARY KEY,
3
+ task_id TEXT NOT NULL REFERENCES tasks(task_id) ON DELETE CASCADE,
4
+ contract_version INTEGER NOT NULL,
5
+ baseline_delivery_id TEXT NOT NULL,
6
+ baseline_version TEXT NOT NULL,
7
+ instruction_entry_id TEXT NOT NULL,
8
+ input_id TEXT,
9
+ idempotency_key TEXT NOT NULL UNIQUE,
10
+ request_hash TEXT NOT NULL,
11
+ supersedes_json TEXT NOT NULL DEFAULT '[]',
12
+ original_body TEXT,
13
+ created_at INTEGER NOT NULL,
14
+ UNIQUE(task_id, contract_version)
15
+ );
@@ -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 = 249;
6
+ export declare const XOPC_DB_SCHEMA_VERSION = 252;
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 ?? 249;
62
+ const targetVersion = options.targetVersion ?? 252;
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 ?? 249;
100
+ const appVersion = options.targetVersion ?? 252;
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 = 249;
143
+ XOPC_DB_SCHEMA_VERSION = 252;
144
144
  }));
145
145
  //#endregion
146
146
  init_runner();
@@ -0,0 +1,24 @@
1
+ import type { SearchCacheEntry } from '../../agent/tools/search/cache.js';
2
+ import { type ResearchCheckpoint, type ResearchCheckpointUpdate, type ResearchEvidence } from '../../agent/orchestration/research-checkpoint.js';
3
+ export interface StoredResearchCheckpoint {
4
+ id: string;
5
+ conversationId: string;
6
+ workspace: string;
7
+ goal: string;
8
+ checkpoint: ResearchCheckpoint;
9
+ status: 'running' | 'partial' | 'completed' | 'failed' | 'cancelled';
10
+ attempts: number;
11
+ stopReason?: string;
12
+ summary: string;
13
+ leaseToken?: string;
14
+ leaseExpiresAt?: number;
15
+ }
16
+ export declare function getResearchCheckpoint(id: string, conversationId: string, workspace: string): StoredResearchCheckpoint | undefined;
17
+ export declare function createResearchCheckpoint(conversationId: string, workspace: string, goal: string): StoredResearchCheckpoint;
18
+ /** Lease ownership fences late tool callbacks and competing resume requests. */
19
+ export declare function claimResearchCheckpoint(record: StoredResearchCheckpoint, timeoutMs: number, now?: number): StoredResearchCheckpoint;
20
+ export declare function saveResearchCheckpoint(record: StoredResearchCheckpoint, update: ResearchCheckpointUpdate): ResearchCheckpoint;
21
+ export declare function recordResearchEvidence(record: StoredResearchCheckpoint, evidence: ResearchEvidence): void;
22
+ export declare function finishResearchCheckpoint(record: StoredResearchCheckpoint, status: StoredResearchCheckpoint['status'], stopReason: string, summary: string): void;
23
+ /** Keep successful public search results with the same task lease and a bounded envelope. */
24
+ export declare function recordResearchSearch(record: StoredResearchCheckpoint, entry: SearchCacheEntry): void;
@@ -0,0 +1,91 @@
1
+ import { __esmMin } from "../../../_virtual/_rolldown/runtime.js";
2
+ import { getSqliteDatabase, init_transaction, runSqliteWriteTransaction } from "./transaction.js";
3
+ import { init_research_checkpoint, mergeResearchCheckpoint } from "../../agent/orchestration/research-checkpoint.js";
4
+ import { randomUUID } from "node:crypto";
5
+ //#region src/storage/sqlite/research-checkpoint-repository.ts
6
+ function decode(row) {
7
+ return {
8
+ id: row.id,
9
+ conversationId: row.conversation_id,
10
+ workspace: row.workspace,
11
+ goal: row.goal,
12
+ checkpoint: JSON.parse(row.checkpoint_json),
13
+ status: row.status,
14
+ attempts: row.attempts,
15
+ stopReason: row.stop_reason ?? void 0,
16
+ summary: row.summary,
17
+ leaseToken: row.lease_token ?? void 0,
18
+ leaseExpiresAt: row.lease_expires_at ?? void 0
19
+ };
20
+ }
21
+ function getResearchCheckpoint(id, conversationId, workspace) {
22
+ const row = getSqliteDatabase().prepare("SELECT * FROM research_checkpoints WHERE id = ? AND conversation_id = ? AND workspace = ?").get(id, conversationId, workspace);
23
+ return row ? decode(row) : void 0;
24
+ }
25
+ function createResearchCheckpoint(conversationId, workspace, goal) {
26
+ const id = randomUUID();
27
+ const checkpoint = {
28
+ findings: [],
29
+ evidence: [],
30
+ nextSteps: [goal.slice(0, 500)]
31
+ };
32
+ runSqliteWriteTransaction((db) => db.prepare(`INSERT INTO research_checkpoints
33
+ (id, conversation_id, workspace, goal, checkpoint_json, status, updated_at) VALUES (?, ?, ?, ?, ?, 'partial', ?)`).run(id, conversationId, workspace, goal, JSON.stringify(checkpoint), Date.now()));
34
+ return getResearchCheckpoint(id, conversationId, workspace);
35
+ }
36
+ /** Lease ownership fences late tool callbacks and competing resume requests. */
37
+ function claimResearchCheckpoint(record, timeoutMs, now = Date.now()) {
38
+ return runSqliteWriteTransaction((db) => {
39
+ const token = randomUUID();
40
+ if (!db.prepare(`UPDATE research_checkpoints SET status = 'running', attempts = attempts + 1,
41
+ lease_token = ?, lease_expires_at = ?, updated_at = ? WHERE id = ? AND conversation_id = ? AND workspace = ?
42
+ AND status != 'completed' AND (lease_token IS NULL OR lease_expires_at <= ?)`).run(token, now + timeoutMs, now, record.id, record.conversationId, record.workspace, now).changes) throw new Error("Research checkpoint is complete or already running");
43
+ return getResearchCheckpoint(record.id, record.conversationId, record.workspace);
44
+ });
45
+ }
46
+ function mutate(record, transform) {
47
+ return runSqliteWriteTransaction((db) => {
48
+ const current = getResearchCheckpoint(record.id, record.conversationId, record.workspace);
49
+ if (!current || !record.leaseToken || current.leaseToken !== record.leaseToken || current.status !== "running" || (current.leaseExpiresAt ?? 0) <= Date.now()) throw new Error("Research checkpoint lease expired");
50
+ const checkpoint = transform(current.checkpoint);
51
+ db.prepare("UPDATE research_checkpoints SET checkpoint_json = ?, updated_at = ? WHERE id = ? AND lease_token = ?").run(JSON.stringify(checkpoint), Date.now(), record.id, record.leaseToken);
52
+ return checkpoint;
53
+ });
54
+ }
55
+ function saveResearchCheckpoint(record, update) {
56
+ return mutate(record, (current) => mergeResearchCheckpoint(current, update));
57
+ }
58
+ function recordResearchEvidence(record, evidence) {
59
+ mutate(record, (current) => ({
60
+ ...current,
61
+ evidence: [...current.evidence.filter((item) => item.toolCallId !== evidence.toolCallId || item.runId !== evidence.runId), {
62
+ ...evidence,
63
+ excerpt: evidence.excerpt.slice(0, 2e3)
64
+ }].slice(-30)
65
+ }));
66
+ }
67
+ function finishResearchCheckpoint(record, status, stopReason, summary) {
68
+ if (!runSqliteWriteTransaction((db) => db.prepare(`UPDATE research_checkpoints SET status = ?, stop_reason = ?, summary = ?,
69
+ lease_token = NULL, lease_expires_at = NULL, updated_at = ? WHERE id = ? AND lease_token = ?`).run(status, stopReason, summary.slice(0, 8e3), Date.now(), record.id, record.leaseToken ?? "")).changes) throw new Error("Research checkpoint lease was replaced");
70
+ }
71
+ /** Keep successful public search results with the same task lease and a bounded envelope. */
72
+ function recordResearchSearch(record, entry) {
73
+ mutate(record, (current) => {
74
+ const searches = [...(current.searches ?? []).filter((item) => item.key !== entry.key), entry].slice(-20);
75
+ while (searches.length && JSON.stringify({
76
+ ...current,
77
+ searches
78
+ }).length > 2e5) searches.shift();
79
+ return {
80
+ ...current,
81
+ searches
82
+ };
83
+ });
84
+ }
85
+ var init_research_checkpoint_repository = __esmMin((() => {
86
+ init_research_checkpoint();
87
+ init_transaction();
88
+ }));
89
+ //#endregion
90
+ init_research_checkpoint_repository();
91
+ export { claimResearchCheckpoint, createResearchCheckpoint, finishResearchCheckpoint, getResearchCheckpoint, init_research_checkpoint_repository, recordResearchEvidence, recordResearchSearch, saveResearchCheckpoint };
@@ -28,7 +28,7 @@ function ensureXopcDatabaseSchema(db, options = {}) {
28
28
  currentVersion = 165;
29
29
  }
30
30
  applyPendingMigrations(db, {
31
- targetVersion: 249,
31
+ targetVersion: 252,
32
32
  databasePath: fresh ? void 0 : options.databasePath
33
33
  });
34
34
  }
@@ -3,7 +3,7 @@ import { sessionCommandIdentity } from "../../../packages/gateway-contract/src/s
3
3
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
4
4
  import { init_session_input_repository, insertSessionInput } from "./session-input-repository.js";
5
5
  import { init_clarification_wait_repository, supersedeActiveClarification } from "./clarification-wait-repository.js";
6
- import { init_connection_wait_repository, invalidateConnectionResumeIntent } from "./connection-wait-repository.js";
6
+ import { cancelConnectionObjective, init_connection_wait_repository } from "./connection-wait-repository.js";
7
7
  import { getSessionMetadata } from "./session-read-repository.js";
8
8
  import { init_session_repository } from "./session-repository.js";
9
9
  import { init_config_repository, setSessionConfig } from "./config-repository.js";
@@ -113,7 +113,8 @@ function acceptSessionCommand(input) {
113
113
  expectedTranscriptId: transcriptId
114
114
  });
115
115
  if (inputId) {
116
- invalidateConnectionResumeIntent(conversationId);
116
+ const control = input.preparedInput?.payload;
117
+ if (control?.connectionAction === "cancel") cancelConnectionObjective(conversationId, control.waitId, control.objectiveRevision);
117
118
  supersedeActiveClarification(conversationId);
118
119
  }
119
120
  const receipt = {
@@ -8,10 +8,26 @@ export type SessionInputPayload = {
8
8
  waitId: string;
9
9
  objectiveRevision: number;
10
10
  resolution: 'continued' | 'skipped';
11
+ connectionAction?: never;
12
+ connectionBarrier?: never;
11
13
  } | {
12
14
  waitId: string;
13
15
  objectiveRevision: number;
14
16
  resolution: 'answered' | 'agent_decide' | 'cancelled';
17
+ connectionAction?: never;
18
+ connectionBarrier?: never;
19
+ } | {
20
+ waitId: string;
21
+ objectiveRevision: number;
22
+ connectionAction: 'continue' | 'cancel';
23
+ resolution?: never;
24
+ connectionBarrier?: never;
25
+ } | {
26
+ waitId: string;
27
+ objectiveRevision: number;
28
+ connectionBarrier: true;
29
+ connectionAction?: never;
30
+ resolution?: never;
15
31
  };
16
32
  export type SessionInput = {
17
33
  id: string;
@@ -152,23 +152,39 @@ function claimNextSessionInput(conversationId, runId, expectedInputId) {
152
152
  version = version + 1, updated_at_ms = ? WHERE conversation_id = ? AND status = 'queued'
153
153
  AND expected_transcript_id IS NOT NULL AND expected_transcript_id IS NOT ?`).run(Date.now(), conversationId, readCurrentTranscriptId(db, conversationId)).changes) bumpSessionInputRevision(db, conversationId);
154
154
  const row = db.prepare(`${SELECT_INPUTS} WHERE conversation_id = ? AND effective_delivery = 'next'
155
- AND status = 'queued' ORDER BY interrupt_requested DESC, position, created_at_ms, id LIMIT 1`).get(conversationId);
155
+ AND status = 'queued' AND (kind != 'connection_resume' OR NOT EXISTS (
156
+ SELECT 1 FROM session_inputs barrier WHERE barrier.conversation_id = session_inputs.conversation_id
157
+ AND barrier.status = 'interrupted' AND barrier.kind = 'message'
158
+ AND json_extract(barrier.payload_json, '$.connectionBarrier') = 1
159
+ AND json_extract(barrier.payload_json, '$.waitId') = json_extract(session_inputs.payload_json, '$.waitId')
160
+ AND json_extract(barrier.payload_json, '$.objectiveRevision') = json_extract(session_inputs.payload_json, '$.objectiveRevision')
161
+ )) ORDER BY CASE WHEN kind = 'connection_resume' THEN 1 ELSE 0 END,
162
+ interrupt_requested DESC, position, created_at_ms, id LIMIT 1`).get(conversationId);
156
163
  if (!row) return void 0;
157
164
  if (expectedInputId && row.id !== expectedInputId) return void 0;
158
165
  const now = Date.now();
166
+ if (row.kind === "message" && !JSON.parse(row.payload_json ?? "{}").connectionAction) db.prepare(`UPDATE session_inputs SET payload_json = COALESCE((
167
+ SELECT json_object('waitId', wait.id, 'objectiveRevision', json_extract(wait.data_json, '$.objectiveRevision'), 'connectionBarrier', json('true'))
168
+ FROM session_connection_waits wait WHERE wait.conversation_id = session_inputs.conversation_id
169
+ AND wait.transcript_id = ? AND wait.status IN ('open','queued')
170
+ AND (session_inputs.payload_json IS NULL OR wait.id = json_extract(session_inputs.payload_json, '$.waitId'))
171
+ AND session_inputs.id != json_extract(wait.data_json, '$.originInputId') LIMIT 1
172
+ ), payload_json) WHERE id = ?`).run(readCurrentTranscriptId(db, conversationId), row.id);
159
173
  db.prepare(`UPDATE session_inputs SET status = 'running', run_id = ?, version = version + 1,
160
174
  updated_at_ms = ? WHERE id = ?`).run(runId, now, row.id);
161
175
  db.prepare(`UPDATE session_input_runtime SET active_run_id = ?, active_input_id = ?,
162
176
  revision = revision + 1, updated_at_ms = ? WHERE conversation_id = ?`).run(runId, row.id, now, conversationId);
163
177
  const claimed = mapInput(db.prepare(`${SELECT_INPUTS} WHERE id = ?`).get(row.id));
164
178
  const hasMaterial = (value) => Boolean(value.attachments_json && JSON.parse(value.attachments_json).length || value.context_snapshots_json && JSON.parse(value.context_snapshots_json).length);
165
- if (row.interrupt_requested && !hasMaterial(row)) {
179
+ if (row.interrupt_requested && !claimed.payload?.connectionAction && !hasMaterial(row)) {
166
180
  const pending = db.prepare(`${SELECT_INPUTS} WHERE conversation_id = ? AND status = 'queued'
167
181
  ORDER BY interrupt_requested DESC, position, created_at_ms, id LIMIT 10`).all(conversationId);
168
182
  for (const next of pending) {
169
- if (!next.interrupt_requested || next.kind !== "message" || hasMaterial(next) || next.thinking !== row.thinking || next.expected_transcript_id !== row.expected_transcript_id || next.origin_json !== row.origin_json || next.created_at_ms - row.created_at_ms > 500 || claimed.content.length + next.content.length > 64e3) break;
183
+ if (!next.interrupt_requested || next.kind !== "message" || JSON.parse(next.payload_json ?? "{}").connectionAction || hasMaterial(next) || next.thinking !== row.thinking || next.expected_transcript_id !== row.expected_transcript_id || next.origin_json !== row.origin_json || next.created_at_ms - row.created_at_ms > 500 || claimed.content.length + next.content.length > 64e3) break;
184
+ const nextPayload = JSON.parse(next.payload_json ?? "{}");
185
+ if (claimed.payload?.connectionBarrier && nextPayload?.waitId && nextPayload.waitId !== claimed.payload.waitId) break;
170
186
  db.prepare(`UPDATE session_inputs SET status = 'injecting', effective_delivery = 'steer', target_run_id = ?,
171
- version = version + 1, updated_at_ms = ? WHERE id = ?`).run(runId, now, next.id);
187
+ payload_json = ?, version = version + 1, updated_at_ms = ? WHERE id = ?`).run(runId, claimed.payload?.connectionBarrier ? JSON.stringify(claimed.payload) : next.payload_json, now, next.id);
172
188
  claimed.content += `\n\n${next.content}`;
173
189
  }
174
190
  }
@@ -210,9 +226,12 @@ function mutateQueuedSessionInput(input) {
210
226
  ordered.splice(Math.max(0, Math.min(input.position, ordered.length)), 0, row);
211
227
  const stmt = db.prepare(`UPDATE session_inputs SET position = ?, version = version + 1, updated_at_ms = ? WHERE id = ?`);
212
228
  ordered.forEach((item, index) => stmt.run(index + 1, now, item.id));
213
- } else db.prepare(`UPDATE session_inputs SET content = ?, attachments_json = ?, context_refs_json = ?,
214
- context_snapshots_json = ?, thinking = ?, version = version + 1,
215
- updated_at_ms = ? WHERE id = ?`).run(input.content ?? row.content, input.attachments ? JSON.stringify(input.attachments) : row.attachments_json, input.contextRefs ? JSON.stringify(input.contextRefs) : row.context_refs_json, input.contextSnapshots ? JSON.stringify(input.contextSnapshots) : row.context_snapshots_json, input.thinking ?? row.thinking, now, input.id);
229
+ } else {
230
+ const clearControl = Boolean(row.payload_json && JSON.parse(row.payload_json).connectionAction && (input.content !== void 0 && input.content !== row.content || input.attachments?.length || input.contextSnapshots?.length));
231
+ db.prepare(`UPDATE session_inputs SET content = ?, attachments_json = ?, context_refs_json = ?,
232
+ context_snapshots_json = ?, thinking = ?, payload_json = ?, version = version + 1,
233
+ updated_at_ms = ? WHERE id = ?`).run(input.content ?? row.content, input.attachments ? JSON.stringify(input.attachments) : row.attachments_json, input.contextRefs ? JSON.stringify(input.contextRefs) : row.context_refs_json, input.contextSnapshots ? JSON.stringify(input.contextSnapshots) : row.context_snapshots_json, input.thinking ?? row.thinking, clearControl ? null : row.payload_json, now, input.id);
234
+ }
216
235
  bumpSessionInputRevision(db, input.conversationId);
217
236
  return true;
218
237
  });
@@ -230,8 +249,23 @@ function recoverSessionInputState() {
230
249
  return runSqliteWriteTransaction((db) => {
231
250
  const keys = db.prepare(`SELECT DISTINCT conversation_id FROM session_inputs WHERE status IN ('queued','running','injecting')`).all();
232
251
  const now = Date.now();
252
+ db.prepare(`UPDATE session_inputs SET payload_json = (
253
+ SELECT json_object('waitId', wait.id, 'objectiveRevision', json_extract(wait.data_json, '$.objectiveRevision'), 'connectionBarrier', json('true'))
254
+ FROM session_connection_waits wait JOIN sessions session ON session.active_transcript_id = wait.transcript_id
255
+ WHERE wait.conversation_id = session_inputs.conversation_id AND wait.status IN ('open','queued')
256
+ AND (session_inputs.payload_json IS NULL OR wait.id = json_extract(session_inputs.payload_json, '$.waitId'))
257
+ AND (session_inputs.expected_transcript_id IS NULL OR session_inputs.expected_transcript_id = wait.transcript_id)
258
+ AND session_inputs.id != json_extract(wait.data_json, '$.originInputId')
259
+ AND (json_extract(session_inputs.payload_json, '$.connectionBarrier') = 1
260
+ OR session_inputs.created_at_ms >= json_extract(wait.data_json, '$.createdAt')) LIMIT 1
261
+ ) WHERE kind = 'message' AND status IN ('running','injecting')
262
+ AND (payload_json IS NULL OR json_extract(payload_json, '$.connectionBarrier') = 1)`).run();
233
263
  db.prepare(`UPDATE session_inputs SET status = 'interrupted', error = 'Gateway restarted during delivery',
234
264
  version = version + 1, updated_at_ms = ? WHERE status IN ('running','injecting')`).run(now);
265
+ db.prepare(`UPDATE session_inputs SET status = 'queued', error = NULL, version = version + 1,
266
+ updated_at_ms = ? WHERE status = 'interrupted' AND kind = 'message'
267
+ AND error = 'Gateway restarted during delivery'
268
+ AND json_extract(payload_json, '$.connectionAction') IN ('continue','cancel')`).run(now);
235
269
  db.prepare(`UPDATE session_input_runtime SET active_run_id = NULL, active_input_id = NULL,
236
270
  revision = revision + 1, updated_at_ms = ?`).run(now);
237
271
  return keys.map((row) => row.conversation_id);
@@ -7,10 +7,10 @@ export declare const TaskEditOutputSchema: z.ZodObject<{
7
7
  title: z.ZodString;
8
8
  body: z.ZodOptional<z.ZodString>;
9
9
  phase: z.ZodEnum<{
10
+ review: "review";
10
11
  backlog: "backlog";
11
12
  ready: "ready";
12
13
  active: "active";
13
- review: "review";
14
14
  closed: "closed";
15
15
  }>;
16
16
  resolution: z.ZodOptional<z.ZodEnum<{
@@ -78,10 +78,10 @@ export declare const TaskDeleteOutputSchema: z.ZodUnion<readonly [z.ZodObject<{
78
78
  title: z.ZodString;
79
79
  body: z.ZodOptional<z.ZodString>;
80
80
  phase: z.ZodEnum<{
81
+ review: "review";
81
82
  backlog: "backlog";
82
83
  ready: "ready";
83
84
  active: "active";
84
- review: "review";
85
85
  closed: "closed";
86
86
  }>;
87
87
  resolution: z.ZodOptional<z.ZodEnum<{
@@ -2,10 +2,10 @@ import { ProductReadContracts } from "../../../packages/gateway-contract/src/cap
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { TaskRepository, init_task_repository } from "../task-repository.js";
4
4
  import { TaskRunRepository, init_task_run_repository } from "../task-run-repository.js";
5
- import { CapabilityError } from "../../capabilities/runtime/errors.js";
6
- import { defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
7
5
  import { TaskReadModelProjector } from "../task-read-model-projector.js";
8
6
  import { TaskConversationRepository } from "../task-conversation-repository.js";
7
+ import { CapabilityError } from "../../capabilities/runtime/errors.js";
8
+ import { defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
9
9
  import { TaskContextRepository } from "../task-context-repository.js";
10
10
  import { TaskDependencyService } from "../task-dependency-service.js";
11
11
  import { TaskCriterionReviewRepository } from "../task-criterion-review-repository.js";
@@ -7,10 +7,10 @@ export declare const TaskDependenciesOutputSchema: z.ZodObject<{
7
7
  title: z.ZodString;
8
8
  body: z.ZodOptional<z.ZodString>;
9
9
  phase: z.ZodEnum<{
10
+ review: "review";
10
11
  backlog: "backlog";
11
12
  ready: "ready";
12
13
  active: "active";
13
- review: "review";
14
14
  closed: "closed";
15
15
  }>;
16
16
  resolution: z.ZodOptional<z.ZodEnum<{
@@ -74,10 +74,10 @@ export declare const TaskDependenciesOutputSchema: z.ZodObject<{
74
74
  id: z.ZodString;
75
75
  title: z.ZodString;
76
76
  phase: z.ZodEnum<{
77
+ review: "review";
77
78
  backlog: "backlog";
78
79
  ready: "ready";
79
80
  active: "active";
80
- review: "review";
81
81
  closed: "closed";
82
82
  }>;
83
83
  resolution: z.ZodOptional<z.ZodEnum<{
@@ -119,10 +119,10 @@ export declare const TaskDependenciesOutputSchema: z.ZodObject<{
119
119
  id: z.ZodString;
120
120
  title: z.ZodString;
121
121
  phase: z.ZodEnum<{
122
+ review: "review";
122
123
  backlog: "backlog";
123
124
  ready: "ready";
124
125
  active: "active";
125
- review: "review";
126
126
  closed: "closed";
127
127
  }>;
128
128
  resolution: z.ZodOptional<z.ZodEnum<{
@@ -174,15 +174,15 @@ export declare const TaskContextMutationOutputSchema: z.ZodObject<{
174
174
  task: "task";
175
175
  file: "file";
176
176
  memory: "memory";
177
- document: "document";
178
177
  url: "url";
178
+ document: "document";
179
179
  source: "source";
180
180
  artifact: "artifact";
181
181
  }>;
182
182
  targetId: z.ZodString;
183
183
  role: z.ZodEnum<{
184
- evidence: "evidence";
185
184
  input: "input";
185
+ evidence: "evidence";
186
186
  deliverable: "deliverable";
187
187
  reference: "reference";
188
188
  constraint: "constraint";
@@ -211,15 +211,15 @@ export declare const TaskContextMutationOutputSchema: z.ZodObject<{
211
211
  task: "task";
212
212
  file: "file";
213
213
  memory: "memory";
214
- document: "document";
215
214
  url: "url";
215
+ document: "document";
216
216
  source: "source";
217
217
  artifact: "artifact";
218
218
  }>;
219
219
  targetId: z.ZodString;
220
220
  role: z.ZodEnum<{
221
- evidence: "evidence";
222
221
  input: "input";
222
+ evidence: "evidence";
223
223
  deliverable: "deliverable";
224
224
  reference: "reference";
225
225
  constraint: "constraint";
@@ -11,10 +11,10 @@ export declare const TaskMutationOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObj
11
11
  title: z.ZodString;
12
12
  body: z.ZodOptional<z.ZodString>;
13
13
  phase: z.ZodEnum<{
14
+ review: "review";
14
15
  backlog: "backlog";
15
16
  ready: "ready";
16
17
  active: "active";
17
- review: "review";
18
18
  closed: "closed";
19
19
  }>;
20
20
  resolution: z.ZodOptional<z.ZodEnum<{
@@ -134,10 +134,10 @@ export declare const TaskMutationOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObj
134
134
  title: z.ZodString;
135
135
  body: z.ZodOptional<z.ZodString>;
136
136
  phase: z.ZodEnum<{
137
+ review: "review";
137
138
  backlog: "backlog";
138
139
  ready: "ready";
139
140
  active: "active";
140
- review: "review";
141
141
  closed: "closed";
142
142
  }>;
143
143
  resolution: z.ZodOptional<z.ZodEnum<{
@@ -2,9 +2,9 @@ import { TaskCommandRequestSchema, TaskCreateRequestSchema, TaskDetailResponseSc
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { TaskRepository, init_task_repository } from "../task-repository.js";
4
4
  import { TaskRunRepository, init_task_run_repository } from "../task-run-repository.js";
5
+ import { resolveTaskLocale } from "../task-language.js";
5
6
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
6
7
  import { defineAtomicCapability } from "../../capabilities/runtime/dispatcher.js";
7
- import { resolveTaskLocale } from "../task-language.js";
8
8
  import { resolveProjectAgentId } from "../../projects/project-agent.js";
9
9
  import { resolveResponseLanguageForSession } from "../../agent/prompt/response-language.js";
10
10
  import { TaskApplicationService } from "../task-application-service.js";
@@ -3,6 +3,7 @@ import { TaskRepository, init_task_repository } from "./task-repository.js";
3
3
  import { TaskRunRepository, init_task_run_repository } from "./task-run-repository.js";
4
4
  import { TaskReadModelProjector } from "./task-read-model-projector.js";
5
5
  import { TaskConversationConflictError, TaskConversationRepository } from "./task-conversation-repository.js";
6
+ import { defineTaskContract } from "./task-contract-definition.js";
6
7
  import { TaskContextRepository } from "./task-context-repository.js";
7
8
  import { TaskDependencyError, TaskDependencyService } from "./task-dependency-service.js";
8
9
  import { TaskValueMetricsService } from "./task-value-metrics-service.js";
@@ -13,7 +14,6 @@ import { resolveExecutionContext } from "./execution-context.js";
13
14
  import { AttentionGovernor } from "./attention-governor.js";
14
15
  import { HomeQueryService, buildHomeWorkbench, decisionFromTask } from "./home-query-service.js";
15
16
  import { TaskWorkflowCoordinator } from "./task-workflow-coordinator.js";
16
- import { defineTaskContract } from "./task-contract-definition.js";
17
17
  import { ModelTaskContractPlanner, parseTaskContractResponse } from "./task-contract-planner.js";
18
18
  import { assembleTaskContext, buildDelegatedTaskDirective, buildTaskExecutionDirective, getTaskContextManifest, getTaskExecutionBrief } from "./task-context-assembler.js";
19
19
  import { TaskRunCoordinator } from "./task-run-coordinator.js";
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { type MatchingContext, type SpecialistAssessment } from '../agent-matching/service.js';
3
3
  import { TaskRepository } from './task-repository.js';
4
+ import { type TaskContractPlanner } from './task-contract-planner.js';
4
5
  declare const DecisionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
5
6
  kind: z.ZodLiteral<"select">;
6
7
  agentId: z.ZodString;
@@ -26,6 +27,7 @@ export declare class TaskAllocationDispatcher {
26
27
  constructor(deps: {
27
28
  context: (conversationId: string) => MatchingContext;
28
29
  decide?: (input: AllocationDecisionInput) => Promise<AllocationDecision>;
30
+ planner?: TaskContractPlanner;
29
31
  wake: () => void;
30
32
  });
31
33
  dispatch(): void;