@xopcai/xopc 0.0.384 → 0.0.386

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 (280) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSel9yf8.js → agent-avatar-dicebear-D-86VOlb.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-DgHMyhuY.js → agent-defaults-settings-panel-SmeUVHY8.js} +1 -1
  5. package/dist/gateway/static/root/assets/{agent-plugin-dialog-BosuN4dO.js → agent-plugin-dialog-BVT3wXq5.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agents-B-pw5RKI.js → agents-D7rLQFhX.js} +3 -3
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-DuOqKkfH.js → app-management-settings-panel-CUR7n5iP.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-8JF9rXFr.js → appearance-settings-BCotSGep.js} +1 -1
  9. package/dist/gateway/static/root/assets/{apps-page-Cuclpk0A.js → apps-page-hk0bo9LT.js} +1 -1
  10. package/dist/gateway/static/root/assets/{automations-page-D7NwNy2I.js → automations-page-CqxuUwox.js} +1 -1
  11. package/dist/gateway/static/root/assets/{automations-workspace-CSxW4wX0.js → automations-workspace-11_Z69pr.js} +1 -1
  12. package/dist/gateway/static/root/assets/{block-editor-Dnb7CH_l.js → block-editor-eldB84Mj.js} +1 -1
  13. package/dist/gateway/static/root/assets/{browser-automations-page-GBgDe21o.js → browser-automations-page-D4TaUPYT.js} +1 -1
  14. package/dist/gateway/static/root/assets/{browser-settings-page-B2FXaO3n.js → browser-settings-page-BXRlxeGV.js} +1 -1
  15. package/dist/gateway/static/root/assets/{capabilities-XFwwUNU3.js → capabilities-BkKgImWi.js} +1 -1
  16. package/dist/gateway/static/root/assets/{capabilities-2Do3eKMM.js → capabilities-DVj9n65C.js} +1 -1
  17. package/dist/gateway/static/root/assets/{capabilities-page-f2-MquJn.js → capabilities-page-CyYlueEd.js} +2 -2
  18. package/dist/gateway/static/root/assets/{capabilities-settings-panel-D9F0mw16.js → capabilities-settings-panel-uVEgfvo0.js} +1 -1
  19. package/dist/gateway/static/root/assets/{capability-header-actions-DVRxJPQP.js → capability-header-actions-BXv0xu56.js} +1 -1
  20. package/dist/gateway/static/root/assets/{channels-CnDm5T1t.js → channels-fNb3SOzm.js} +1 -1
  21. package/dist/gateway/static/root/assets/{chat-terminal-dock-BxSCDbK7.js → chat-terminal-dock-CnLtparQ.js} +1 -1
  22. package/dist/gateway/static/root/assets/{computer-settings-page-DVAB-kQw.js → computer-settings-page-xM0AnOlP.js} +1 -1
  23. package/dist/gateway/static/root/assets/{connector-service-page-D2EeLXei.js → connector-service-page-CdG2WUb6.js} +1 -1
  24. package/dist/gateway/static/root/assets/{connectors-page-DK9n4hgZ.js → connectors-page-BRd08GH6.js} +1 -1
  25. package/dist/gateway/static/root/assets/constants-CpWu0oHS.js +1 -0
  26. package/dist/gateway/static/root/assets/{date-picker-Cl9KfFj8.js → date-picker-DIBbE-O8.js} +1 -1
  27. package/dist/gateway/static/root/assets/{dependency-picker-Ei6aX5WM.js → dependency-picker-DDD8zokD.js} +1 -1
  28. package/dist/gateway/static/root/assets/{desktop-pet-4Evl4RKX.js → desktop-pet-KlF390Xn.js} +1 -1
  29. package/dist/gateway/static/root/assets/{desktop-pet-settings-DAD_OWcX.js → desktop-pet-settings-CgqQMKDC.js} +1 -1
  30. package/dist/gateway/static/root/assets/{device-pairing-wizard-BA21epMn.js → device-pairing-wizard-BR6isfG2.js} +1 -1
  31. package/dist/gateway/static/root/assets/{directory-picker-path-field-B_Zb5nNR.js → directory-picker-path-field-vPQsW05P.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-DtHNy4TE.js → extension-debug-page-ZHLPrLbH.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-8gWSThWP.js → extension-page-DJ42KFRN.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-provider-nbgU7xBS.js → extension-provider-6IcsyNaV.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-settings-page-CunUbB09.js → extension-settings-page-D7-5v0V4.js} +1 -1
  36. package/dist/gateway/static/root/assets/{fallback-models-BSAfzXby.js → fallback-models-DnYn7qOV.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-settings-CN-2229W.js → gateway-settings-Bwe3JWX-.js} +1 -1
  38. package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-DktBCtHF.js → highlighted-body-KQOG7T2V-DefTxF3q.js} +1 -1
  39. package/dist/gateway/static/root/assets/{home-page-CUJcNW3H.js → home-page-BtSy2hRV.js} +1 -1
  40. package/dist/gateway/static/root/assets/{imports-page-DQm1MNNC.js → imports-page-CTdBYZib.js} +1 -1
  41. package/dist/gateway/static/root/assets/{index-BPNL54bv.js → index-B08iR7fT.js} +10 -10
  42. package/dist/gateway/static/root/assets/index-DBRwvWzm.css +1 -0
  43. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DaC5YjuJ.js → keyboard-shortcuts-settings-CXKp57O_.js} +1 -1
  44. package/dist/gateway/static/root/assets/{local-app-workbench-page-DwQyyo7a.js → local-app-workbench-page-DzD_OzGY.js} +1 -1
  45. package/dist/gateway/static/root/assets/{local-apps-page-CpZhivpf.js → local-apps-page-B0E0vttg.js} +1 -1
  46. package/dist/gateway/static/root/assets/{logs-page-Db43nh1M.js → logs-page-eL4fYcMl.js} +1 -1
  47. package/dist/gateway/static/root/assets/{management-settings-DrKejBEZ.js → management-settings-DSpjodMC.js} +1 -1
  48. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-BTrk2wWv.js +1 -0
  49. package/dist/gateway/static/root/assets/{note-detail-panel-a8NSwmmW.js → note-detail-panel-CsY5tQp5.js} +3 -3
  50. package/dist/gateway/static/root/assets/{notes-page-BKRke43F.js → notes-page-D09LjNoj.js} +1 -1
  51. package/dist/gateway/static/root/assets/{page-context-capture-button-DUaMkmxv.js → page-context-capture-button-DO-aP3D9.js} +1 -1
  52. package/dist/gateway/static/root/assets/{personal-page-BqF-HHw1.js → personal-page-E8F2aGNB.js} +1 -1
  53. package/dist/gateway/static/root/assets/{product-open-page-GrhtTQIz.js → product-open-page-aUoA-uPw.js} +1 -1
  54. package/dist/gateway/static/root/assets/{product-preview-content-zdP7gN0y.js → product-preview-content-B-cz-pIV.js} +1 -1
  55. package/dist/gateway/static/root/assets/{project-detail-page-9Vd_AqDW.js → project-detail-page-WhefAh8E.js} +1 -1
  56. package/dist/gateway/static/root/assets/{projects-page-DGunhjoM.js → projects-page-CyqAs0tO.js} +1 -1
  57. package/dist/gateway/static/root/assets/{remote-access-hub-BoRsF3Lx.js → remote-access-hub-BwhRGL6m.js} +1 -1
  58. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-W0HDm--J.js → runtime-tools-settings-panel-o26dmPNq.js} +1 -1
  59. package/dist/gateway/static/root/assets/{scenes-page-CYsFOfVJ.js → scenes-page-D_e19kv_.js} +1 -1
  60. package/dist/gateway/static/root/assets/{schema-form-CBxEbBQq.js → schema-form-DLLdqUC3.js} +1 -1
  61. package/dist/gateway/static/root/assets/{send-session-input-BCAF-Ikt.js → send-session-input-2I-nFJcE.js} +1 -1
  62. package/dist/gateway/static/root/assets/session-manager-Co5ozD0l.js +16 -0
  63. package/dist/gateway/static/root/assets/{sessions-page-Dthfx_vc.js → sessions-page-DX6INsiS.js} +1 -1
  64. package/dist/gateway/static/root/assets/settings-advanced-gate-C4_gW1vw.js +1 -0
  65. package/dist/gateway/static/root/assets/{settings-page-CFs-WP_2.js → settings-page-Bc_zxxRu.js} +1 -1
  66. package/dist/gateway/static/root/assets/{setup-status-panel-D2-9fXYL.js → setup-status-panel-FpF_cPPr.js} +1 -1
  67. package/dist/gateway/static/root/assets/{share-preview-page-nJ2FWAEP.js → share-preview-page-BOCcPBqQ.js} +1 -1
  68. package/dist/gateway/static/root/assets/{shares-settings-DTb88RHD.js → shares-settings-CInxjxgJ.js} +1 -1
  69. package/dist/gateway/static/root/assets/{skill-api-DJ8UBsxq.js → skill-api-Bjd8WAA4.js} +1 -1
  70. package/dist/gateway/static/root/assets/{skills-page-DjbBOikT.js → skills-page-8CKS3Oo2.js} +1 -1
  71. package/dist/gateway/static/root/assets/{system-settings-panel-Dt5GkLhM.js → system-settings-panel-BgQdsrNw.js} +1 -1
  72. package/dist/gateway/static/root/assets/task-detail-page-BnG5ehZ6.js +2 -0
  73. package/dist/gateway/static/root/assets/task-expandable-content-BCuc70Vc.js +1 -0
  74. package/dist/gateway/static/root/assets/{tasks-DJIeIk9C.js → tasks-PuIUgF9L.js} +1 -1
  75. package/dist/gateway/static/root/assets/{tunnel-api-JHttXi63.js → tunnel-api-CY7MoDGf.js} +1 -1
  76. package/dist/gateway/static/root/assets/{usage-page-B3rUa0fW.js → usage-page-s8Sv_PIG.js} +1 -1
  77. package/dist/gateway/static/root/assets/{use-composer-attachments-BFP3k6oC.js → use-composer-attachments-D0S2iZF4.js} +1 -1
  78. package/dist/gateway/static/root/assets/{use-file-preview-expanded-B1BiTQNS.js → use-file-preview-expanded-BElqELib.js} +1 -1
  79. package/dist/gateway/static/root/assets/{user-model-page-Cq1VSsZw.js → user-model-page-CyWrEtHY.js} +1 -1
  80. package/dist/gateway/static/root/assets/{work-discovery-overlay-BAtG_JHv.js → work-discovery-overlay-DmZXLs1v.js} +1 -1
  81. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Cw12NFgx.js → workflow-run-setup-panel-BdLOzHm4.js} +1 -1
  82. package/dist/gateway/static/root/assets/{workflows-page-kR5ouOuM.js → workflows-page-Cx3I3AV5.js} +1 -1
  83. package/dist/gateway/static/root/assets/{workspace-api-Xr3wz8T3.js → workspace-api-Du7-xJ0q.js} +2 -2
  84. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-BTBVKpSg.js → xopc-cloud-account-card-D8B136vW.js} +1 -1
  85. package/dist/gateway/static/root/index.html +12 -12
  86. package/dist/package.js +1 -1
  87. package/dist/packages/gateway-contract/src/index.js +2 -0
  88. package/dist/packages/gateway-contract/src/task-research-result.js +89 -0
  89. package/dist/packages/gateway-contract/src/tasks.js +7 -1
  90. package/dist/packages/gateway-contract/src/turn-outcome.js +3 -0
  91. package/dist/src/agent/child-agent-factory.d.ts +4 -1
  92. package/dist/src/agent/child-agent-factory.js +91 -11
  93. package/dist/src/agent/context/connection-objective-context.d.ts +1 -0
  94. package/dist/src/agent/context/connection-objective-context.js +33 -0
  95. package/dist/src/agent/data-acquisition/service.js +41 -6
  96. package/dist/src/agent/data-acquisition/types.d.ts +2 -0
  97. package/dist/src/agent/embedded/agent-profile-context.d.ts +7 -0
  98. package/dist/src/agent/embedded/agent-profile-context.js +92 -0
  99. package/dist/src/agent/embedded/execution-tool-policy.d.ts +1 -1
  100. package/dist/src/agent/embedded/execution-tool-policy.js +3 -2
  101. package/dist/src/agent/embedded/run-for-session.js +37 -14
  102. package/dist/src/agent/embedded/run-turn.js +123 -26
  103. package/dist/src/agent/embedded/runs.d.ts +9 -2
  104. package/dist/src/agent/embedded/runs.js +30 -7
  105. package/dist/src/agent/embedded/session-runner.js +14 -3
  106. package/dist/src/agent/embedded/types.d.ts +6 -1
  107. package/dist/src/agent/external-tools/cliProvider.d.ts +1 -0
  108. package/dist/src/agent/external-tools/cliProvider.js +1 -0
  109. package/dist/src/agent/external-tools/composio-provider.js +2 -0
  110. package/dist/src/agent/external-tools/gateway-tools.js +15 -5
  111. package/dist/src/agent/external-tools/service.d.ts +1 -0
  112. package/dist/src/agent/external-tools/service.js +3 -1
  113. package/dist/src/agent/external-tools/types.d.ts +4 -0
  114. package/dist/src/agent/orchestration/agent-run-supervisor.js +2 -1
  115. package/dist/src/agent/orchestration/agent-turn-policy.d.ts +1 -0
  116. package/dist/src/agent/orchestration/agent-turn-policy.js +5 -1
  117. package/dist/src/agent/orchestration/delegation-budget.d.ts +7 -1
  118. package/dist/src/agent/orchestration/delegation-budget.js +19 -10
  119. package/dist/src/agent/orchestration/llm-turn-retry.d.ts +5 -0
  120. package/dist/src/agent/orchestration/llm-turn-retry.js +15 -5
  121. package/dist/src/agent/orchestration/research-checkpoint.d.ts +56 -0
  122. package/dist/src/agent/orchestration/research-checkpoint.js +64 -0
  123. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +3 -1
  124. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +15 -2
  125. package/dist/src/agent/orchestration/run-termination.d.ts +12 -0
  126. package/dist/src/agent/orchestration/run-termination.js +24 -0
  127. package/dist/src/agent/orchestration/turn-recovery.d.ts +9 -0
  128. package/dist/src/agent/orchestration/turn-recovery.js +45 -0
  129. package/dist/src/agent/prompt/sections/agent-identity.js +12 -7
  130. package/dist/src/agent/prompt/sections/messaging-runtime.js +1 -1
  131. package/dist/src/agent/prompt/sections/project-context.js +1 -1
  132. package/dist/src/agent/prompt/sections/response-language.d.ts +1 -1
  133. package/dist/src/agent/prompt/sections/response-language.js +6 -2
  134. package/dist/src/agent/prompt/subagent-context.js +1 -1
  135. package/dist/src/agent/prompt/system-prompt.js +4 -6
  136. package/dist/src/agent/service/direct-turn-helpers.js +6 -5
  137. package/dist/src/agent/service/process-direct-streaming.js +7 -1
  138. package/dist/src/agent/tasks/task-judge-service.js +30 -10
  139. package/dist/src/agent/tools/apply-patch.js +1 -1
  140. package/dist/src/agent/tools/delegate-tool.js +216 -121
  141. package/dist/src/agent/tools/delegation-policy.js +13 -1
  142. package/dist/src/agent/tools/factory.js +12 -1
  143. package/dist/src/agent/tools/index.d.ts +2 -0
  144. package/dist/src/agent/tools/index.js +3 -1
  145. package/dist/src/agent/tools/language-diagnostics.js +1 -1
  146. package/dist/src/agent/tools/personal-request-result-tool.js +20 -3
  147. package/dist/src/agent/tools/personal-request-tool.js +165 -23
  148. package/dist/src/agent/tools/personal-task-tool.d.ts +6 -3
  149. package/dist/src/agent/tools/personal-task-tool.js +146 -23
  150. package/dist/src/agent/tools/publish-artifacts.js +1 -1
  151. package/dist/src/agent/tools/research-checkpoint-tool.d.ts +3 -0
  152. package/dist/src/agent/tools/research-checkpoint-tool.js +28 -0
  153. package/dist/src/agent/tools/review-workspace.js +1 -1
  154. package/dist/src/agent/tools/search/cache.d.ts +20 -0
  155. package/dist/src/agent/tools/search/cache.js +19 -0
  156. package/dist/src/agent/tools/search/errors.d.ts +19 -0
  157. package/dist/src/agent/tools/search/errors.js +69 -0
  158. package/dist/src/agent/tools/search/providers/bing-api.js +2 -1
  159. package/dist/src/agent/tools/search/providers/bing-html.js +2 -1
  160. package/dist/src/agent/tools/search/providers/brave.js +2 -1
  161. package/dist/src/agent/tools/search/providers/duckduckgo-html.js +2 -1
  162. package/dist/src/agent/tools/search/providers/searxng.js +2 -1
  163. package/dist/src/agent/tools/search/providers/tavily.js +2 -1
  164. package/dist/src/agent/tools/search/providers/xopc-cloud.d.ts +1 -0
  165. package/dist/src/agent/tools/search/providers/xopc-cloud.js +7 -2
  166. package/dist/src/agent/tools/search/registry.d.ts +21 -5
  167. package/dist/src/agent/tools/search/registry.js +252 -25
  168. package/dist/src/agent/tools/search/types.d.ts +25 -0
  169. package/dist/src/agent/tools/task-collaboration-tool.d.ts +16 -0
  170. package/dist/src/agent/tools/task-collaboration-tool.js +153 -0
  171. package/dist/src/agent/tools/task-result-tool.d.ts +2 -0
  172. package/dist/src/agent/tools/task-result-tool.js +73 -0
  173. package/dist/src/agent/tools/web.d.ts +16 -2
  174. package/dist/src/agent/tools/web.js +74 -29
  175. package/dist/src/agent/tools/xopc-use-tool.js +3 -3
  176. package/dist/src/automations/capabilities/write.d.ts +4 -4
  177. package/dist/src/automations/domain/validation.d.ts +8 -8
  178. package/dist/src/automations/draft/automation-draft-validator.d.ts +2 -2
  179. package/dist/src/browser/automations/schema.d.ts +2 -2
  180. package/dist/src/browser/automations/service.d.ts +2 -2
  181. package/dist/src/cli/commands/channels.js +1 -1
  182. package/dist/src/cli/commands/connectors.js +1 -1
  183. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  184. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  185. package/dist/src/cli/commands/models.js +1 -1
  186. package/dist/src/cli/commands/onboard.js +1 -1
  187. package/dist/src/config/index.js +2 -2
  188. package/dist/src/config/schema.d.ts +1 -0
  189. package/dist/src/config/schema.js +4 -1
  190. package/dist/src/connectors/connection-recovery-service.d.ts +9 -1
  191. package/dist/src/connectors/connection-recovery-service.js +213 -33
  192. package/dist/src/discussions/action-tasks.d.ts +2 -2
  193. package/dist/src/extensions/sdk/index.js +1 -1
  194. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  195. package/dist/src/gateway/hono/routes/connection-waits.js +3 -1
  196. package/dist/src/gateway/hono/routes/projects.js +1 -1
  197. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +16 -0
  198. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  199. package/dist/src/gateway/service/agent-runner.d.ts +2 -0
  200. package/dist/src/gateway/service/agent-runner.js +30 -17
  201. package/dist/src/gateway/service/run-gateway-agent.js +21 -6
  202. package/dist/src/gateway/service/session-input-coordinator.d.ts +10 -1
  203. package/dist/src/gateway/service/session-input-coordinator.js +216 -27
  204. package/dist/src/gateway/service.d.ts +1 -0
  205. package/dist/src/gateway/service.js +6 -4
  206. package/dist/src/gateway/session-context-summary.js +1 -1
  207. package/dist/src/personal-agent/prompts.js +10 -3
  208. package/dist/src/personal-agent/reply-composer.d.ts +1 -0
  209. package/dist/src/personal-agent/reply-composer.js +91 -19
  210. package/dist/src/personal-agent/reply-style.d.ts +1 -1
  211. package/dist/src/personal-agent/reply-style.js +1 -0
  212. package/dist/src/personal-agent/repository.d.ts +1 -1
  213. package/dist/src/personal-agent/repository.js +1 -1
  214. package/dist/src/personal-agent/request-access.d.ts +3 -0
  215. package/dist/src/personal-agent/request-access.js +31 -0
  216. package/dist/src/personal-agent/request-delivery.js +9 -4
  217. package/dist/src/personal-agent/request-repository.d.ts +3 -0
  218. package/dist/src/personal-agent/request-service.d.ts +6 -0
  219. package/dist/src/personal-agent/request-service.js +121 -25
  220. package/dist/src/personal-agent/result-file-links.d.ts +3 -0
  221. package/dist/src/personal-agent/result-file-links.js +21 -0
  222. package/dist/src/personal-agent/task-cancel.js +85 -35
  223. package/dist/src/providers/model-response.js +13 -2
  224. package/dist/src/scenes/taskFollowUp/service.d.ts +15 -5
  225. package/dist/src/session/session-context-for-llm.js +2 -2
  226. package/dist/src/session/store.d.ts +3 -1
  227. package/dist/src/session/store.js +30 -7
  228. package/dist/src/storage/sqlite/connection-wait-repository.d.ts +7 -2
  229. package/dist/src/storage/sqlite/connection-wait-repository.js +124 -20
  230. package/dist/src/storage/sqlite/index.d.ts +1 -0
  231. package/dist/src/storage/sqlite/index.js +3 -1
  232. package/dist/src/storage/sqlite/migrations/250_research_checkpoints.sql +15 -0
  233. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  234. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  235. package/dist/src/storage/sqlite/research-checkpoint-repository.d.ts +24 -0
  236. package/dist/src/storage/sqlite/research-checkpoint-repository.js +91 -0
  237. package/dist/src/storage/sqlite/schema.js +1 -1
  238. package/dist/src/storage/sqlite/session-creation-repository.js +3 -2
  239. package/dist/src/storage/sqlite/session-input-repository.d.ts +16 -0
  240. package/dist/src/storage/sqlite/session-input-repository.js +41 -7
  241. package/dist/src/storage/sqlite/transcript-repository.d.ts +2 -0
  242. package/dist/src/storage/sqlite/transcript-repository.js +25 -1
  243. package/dist/src/tasks/capabilities/management.d.ts +2 -2
  244. package/dist/src/tasks/capabilities/relations.d.ts +7 -7
  245. package/dist/src/tasks/capabilities/write.d.ts +2 -2
  246. package/dist/src/tasks/index.js +1 -1
  247. package/dist/src/tasks/task-allocation-service.d.ts +2 -0
  248. package/dist/src/tasks/task-allocation-service.js +43 -2
  249. package/dist/src/tasks/task-application-service.js +3 -3
  250. package/dist/src/tasks/task-collaboration-delivery.js +4 -1
  251. package/dist/src/tasks/task-collaboration-repository.d.ts +3 -0
  252. package/dist/src/tasks/task-collaboration-repository.js +11 -1
  253. package/dist/src/tasks/task-context-assembler.js +19 -6
  254. package/dist/src/tasks/task-continuation.d.ts +6 -0
  255. package/dist/src/tasks/task-continuation.js +33 -0
  256. package/dist/src/tasks/task-contract-planner.d.ts +1 -0
  257. package/dist/src/tasks/task-contract-planner.js +22 -15
  258. package/dist/src/tasks/task-main-update-delivery.js +13 -8
  259. package/dist/src/tasks/task-model-call.d.ts +7 -0
  260. package/dist/src/tasks/task-model-call.js +35 -0
  261. package/dist/src/tasks/task-read-model-projector.js +1 -1
  262. package/dist/src/tasks/task-research-repair.d.ts +19 -0
  263. package/dist/src/tasks/task-research-repair.js +75 -0
  264. package/dist/src/tasks/task-research-result.d.ts +85 -0
  265. package/dist/src/tasks/task-research-result.js +394 -0
  266. package/dist/src/tasks/task-result-delivery-repository.js +13 -2
  267. package/dist/src/tasks/task-result-delivery-service.js +1 -1
  268. package/dist/src/tasks/task-run-coordinator.d.ts +1 -0
  269. package/dist/src/tasks/task-run-coordinator.js +80 -11
  270. package/dist/src/tasks/task-run-dispatcher.js +12 -0
  271. package/dist/src/tasks/task-run-repository.d.ts +13 -0
  272. package/dist/src/tasks/task-run-repository.js +120 -2
  273. package/package.json +7 -3
  274. package/dist/gateway/static/root/assets/constants-Dy8Gw0sF.js +0 -1
  275. package/dist/gateway/static/root/assets/index-yseLAt9D.css +0 -1
  276. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-C4VzqE9z.js +0 -1
  277. package/dist/gateway/static/root/assets/session-manager-_yy4bxhT.js +0 -16
  278. package/dist/gateway/static/root/assets/settings-advanced-gate-O_0Lk38S.js +0 -1
  279. package/dist/gateway/static/root/assets/task-detail-page-88EShcbs.js +0 -2
  280. package/dist/gateway/static/root/assets/task-expandable-content-CF6Bj-Qa.js +0 -1
@@ -2,12 +2,16 @@ import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.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 { loadTranscriptRowsForSession } from "../storage/sqlite/transcript-repository.js";
6
+ import { init_sqlite } from "../storage/sqlite/index.js";
7
+ import { canResumeAfterModelFailure } from "../agent/orchestration/turn-recovery.js";
5
8
  import { resolveTaskLocale } from "./task-language.js";
6
9
  import { TaskApplicationService } from "./task-application-service.js";
7
10
  //#region src/tasks/task-run-dispatcher.ts
8
11
  init_logger();
9
12
  init_task_repository();
10
13
  init_task_run_repository();
14
+ init_sqlite();
11
15
  const log = createLogger("TaskRunDispatcher");
12
16
  const LEASE_MS = 6e4;
13
17
  const HEARTBEAT_MS = 15e3;
@@ -35,6 +39,7 @@ var TaskRunDispatcher = class {
35
39
  }
36
40
  async drain() {
37
41
  if (this.#stopped) return;
42
+ this.#runs.reconcileCancelledRuns();
38
43
  this.reconcileExpiredRuns();
39
44
  const count = Math.max(1, Math.min(8, this.deps.maxConcurrency ?? 3));
40
45
  await Promise.all(Array.from({ length: count }, (_, slot) => this.drainSlot(`${this.deps.workerId}:${slot}`)));
@@ -43,6 +48,12 @@ var TaskRunDispatcher = class {
43
48
  for (const run of this.#runs.listExpiredLeasedRunning()) {
44
49
  if (this.#activeRunIds.has(run.id)) continue;
45
50
  try {
51
+ if (run.conversationId && canResumeAfterModelFailure(loadTranscriptRowsForSession(run.conversationId)) && this.#runs.scheduleContinuation({
52
+ runId: run.id,
53
+ expectedVersion: run.version,
54
+ reason: "process_restart",
55
+ message: "Execution was interrupted by a process restart. Continue this same task from confirmed tool results. Do not repeat completed operations. If any external effect cannot be confirmed, ask for verification instead of replaying it."
56
+ })) continue;
46
57
  const zh = resolveTaskLocale(this.#tasks.require(run.taskId)) === "zh";
47
58
  this.#application.completeRun({
48
59
  runId: run.id,
@@ -126,6 +137,7 @@ var TaskRunDispatcher = class {
126
137
  } catch (error) {
127
138
  if (this.#stopped) return;
128
139
  const current = this.#runs.get(run.id);
140
+ if (current?.status === "waiting" && current.policySnapshot.continuation) continue;
129
141
  if (current && [
130
142
  "queued",
131
143
  "running",
@@ -56,6 +56,17 @@ export declare class TaskRunRepository {
56
56
  now?: number;
57
57
  }): TaskRun | undefined;
58
58
  listExpiredLeasedRunning(now?: number, limit?: number): TaskRun[];
59
+ /** Finish cancellations persisted before an earlier process could observe execution exit. */
60
+ reconcileCancelledRuns(): number;
61
+ /** Resume the same TaskRun and conversation within its original deadline and attempt budget. */
62
+ scheduleContinuation(input: {
63
+ runId: string;
64
+ expectedVersion: number;
65
+ message: string;
66
+ reason: string;
67
+ repairFingerprint?: string;
68
+ now?: number;
69
+ }): boolean;
59
70
  finalize(input: {
60
71
  runId: string;
61
72
  expectedVersion: number;
@@ -93,6 +104,8 @@ export declare class TaskRunRepository {
93
104
  getWait(waitId: string): TaskWait | undefined;
94
105
  requireWait(waitId: string): TaskWait;
95
106
  listActiveWaits(taskId: string): TaskWait[];
107
+ /** A Run's cancellation owns all its waits, never those of another Run on the same Task. */
108
+ resolveCancelledRunWaits(runId: string, actor: ActorRef): number;
96
109
  resolveWait(input: {
97
110
  waitId: string;
98
111
  actor: ActorRef;
@@ -74,7 +74,7 @@ function receiptFromRow(row) {
74
74
  finalizedAt: row.finalized_at
75
75
  };
76
76
  }
77
- var ACTIVE_RUN_STATUSES, TaskRunRepository;
77
+ var ACTIVE_RUN_STATUSES, CANCELLED_ACTIVE_RUNS, TaskRunRepository;
78
78
  var init_task_run_repository = __esmMin((() => {
79
79
  init_transaction();
80
80
  init_task_change_events();
@@ -85,10 +85,23 @@ var init_task_run_repository = __esmMin((() => {
85
85
  "waiting",
86
86
  "verifying"
87
87
  ];
88
+ CANCELLED_ACTIVE_RUNS = `SELECT run.run_id FROM task_runs run
89
+ WHERE ((run.status = 'cancelled' AND EXISTS (SELECT 1 FROM task_waits remaining
90
+ WHERE remaining.task_run_id = run.run_id AND remaining.status = 'active'))
91
+ OR (run.status IN ('queued','running','waiting','verifying') AND (
92
+ EXISTS (SELECT 1 FROM session_connection_waits wait WHERE wait.status = 'closed'
93
+ AND json_extract(wait.data_json, '$.resolution') = 'cancelled' AND (
94
+ json_extract(wait.data_json, '$.taskRunId') = run.run_id
95
+ OR EXISTS (SELECT 1 FROM session_inputs origin WHERE origin.id = json_extract(wait.data_json, '$.originInputId')
96
+ AND origin.task_run_id = run.run_id)
97
+ OR EXISTS (SELECT 1 FROM task_waits task_wait WHERE task_wait.task_run_id = run.run_id
98
+ AND json_extract(task_wait.condition_json, '$.connectionWaitId') = wait.id)))
99
+ OR EXISTS (SELECT 1 FROM command_deduplication command WHERE command.command_type = 'task.close'
100
+ AND command.subject_id = run.task_id AND json_extract(command.result_json, '$.cancellationRunId') = run.run_id))))`;
88
101
  TaskRunRepository = class {
89
102
  nextAgentInputClientMessageId(runId) {
90
103
  const finished = getSqliteDatabase().prepare(`SELECT COUNT(*) AS count FROM session_inputs
91
- WHERE task_run_id = ? AND status IN ('completed', 'suspended')`).get(runId);
104
+ WHERE task_run_id = ? AND status IN ('completed', 'suspended', 'failed', 'interrupted', 'cancelled')`).get(runId);
92
105
  return finished.count === 0 ? `task:${runId}` : `task:${runId}:resume:${finished.count}`;
93
106
  }
94
107
  create(input) {
@@ -204,6 +217,87 @@ var init_task_run_repository = __esmMin((() => {
204
217
  AND lease_expires_at IS NOT NULL AND lease_expires_at <= ?
205
218
  ORDER BY lease_expires_at LIMIT ?`).all(now, Math.max(1, Math.min(200, Math.floor(limit)))).map(fromRow);
206
219
  }
220
+ /** Finish cancellations persisted before an earlier process could observe execution exit. */
221
+ reconcileCancelledRuns() {
222
+ return runSqliteWriteTransaction((db) => {
223
+ const rows = db.prepare(CANCELLED_ACTIVE_RUNS).all();
224
+ let completed = 0;
225
+ for (const row of rows) {
226
+ const run = this.get(row.run_id);
227
+ if (!run) continue;
228
+ const cleared = this.resolveCancelledRunWaits(run.id, { kind: "system" });
229
+ if (run.status === "cancelled") {
230
+ if (cleared) completed++;
231
+ continue;
232
+ }
233
+ if (run && this.finalize({
234
+ runId: run.id,
235
+ expectedVersion: run.version,
236
+ actor: { kind: "system" },
237
+ terminalCode: "cancelled_by_user",
238
+ receipt: {
239
+ status: "cancelled",
240
+ summary: "Task cancelled",
241
+ changes: [],
242
+ evidence: [],
243
+ verification: {
244
+ status: "unverified",
245
+ checks: []
246
+ },
247
+ remainingWork: [],
248
+ needsUser: false,
249
+ completionVerdict: "not_achieved"
250
+ }
251
+ })) {
252
+ const task = new TaskRepository().require(run.taskId);
253
+ enqueueTaskChangedEvent(db, {
254
+ taskId: task.id,
255
+ projectId: task.projectId,
256
+ version: task.version,
257
+ changedFields: ["runs", "receipts"],
258
+ actor: { kind: "system" },
259
+ source: "runtime"
260
+ });
261
+ completed++;
262
+ }
263
+ }
264
+ return completed;
265
+ });
266
+ }
267
+ /** Resume the same TaskRun and conversation within its original deadline and attempt budget. */
268
+ scheduleContinuation(input) {
269
+ const now = input.now ?? Date.now();
270
+ return runSqliteWriteTransaction((db) => {
271
+ const run = this.get(input.runId);
272
+ if (db.prepare(`${CANCELLED_ACTIVE_RUNS} AND run.run_id = ?`).get(input.runId)) return false;
273
+ if (!run || run.version !== input.expectedVersion || !["running", "verifying"].includes(run.status) || run.parentRunId || !run.conversationId || run.timeoutAt !== void 0 && run.timeoutAt <= now || this.listActiveWaits(run.taskId).length > 0) return false;
274
+ const execution = db.prepare("SELECT active_conversation_id FROM task_conversation_state WHERE task_id = ?").get(run.taskId);
275
+ if (execution?.active_conversation_id && execution.active_conversation_id !== run.conversationId) return false;
276
+ const task = new TaskRepository().require(run.taskId);
277
+ if (task.phase !== "active" || run.contractVersion !== task.latestContractVersion) return false;
278
+ const attempts = Number(run.policySnapshot.continuationAttempts ?? 0);
279
+ const maxAttempts = Math.max(1, Math.min(3, Number(run.retryPolicy.maxAttempts ?? 1)));
280
+ if (!Number.isFinite(attempts) || !Number.isFinite(maxAttempts) || attempts >= maxAttempts - 1) return false;
281
+ if (input.repairFingerprint && run.policySnapshot.repairFingerprint === input.repairFingerprint) return false;
282
+ const policy = {
283
+ ...run.policySnapshot,
284
+ continuationAttempts: attempts + 1,
285
+ ...input.repairFingerprint ? { repairFingerprint: input.repairFingerprint } : {},
286
+ continuation: {
287
+ message: input.message,
288
+ reason: input.reason,
289
+ transcriptId: db.prepare("SELECT active_transcript_id FROM sessions WHERE conversation_id = ?").get(run.conversationId)?.active_transcript_id
290
+ }
291
+ };
292
+ if (!db.prepare(`UPDATE task_runs SET status = 'waiting', policy_snapshot_json = ?,
293
+ lease_owner = NULL, lease_expires_at = NULL, version = version + 1 WHERE run_id = ? AND version = ?`).run(JSON.stringify(policy), run.id, run.version).changes) return false;
294
+ this.appendEvent(db, run.id, "task_run.continuation_scheduled", {
295
+ reason: input.reason,
296
+ attempt: attempts + 2
297
+ }, { kind: "system" }, now);
298
+ return true;
299
+ });
300
+ }
207
301
  finalize(input) {
208
302
  const now = input.now ?? Date.now();
209
303
  return runSqliteWriteTransaction((db) => {
@@ -301,6 +395,30 @@ var init_task_run_repository = __esmMin((() => {
301
395
  return getSqliteDatabase().prepare(`SELECT * FROM task_waits WHERE task_id = ? AND status = 'active'
302
396
  ORDER BY created_at ASC`).all(taskId).map(waitFromRow);
303
397
  }
398
+ /** A Run's cancellation owns all its waits, never those of another Run on the same Task. */
399
+ resolveCancelledRunWaits(runId, actor) {
400
+ return runSqliteWriteTransaction((db) => {
401
+ const run = this.get(runId);
402
+ if (!run) return 0;
403
+ let resolved = 0;
404
+ for (const wait of this.listActiveWaits(run.taskId)) if (wait.taskRunId === run.id && this.resolveWait({
405
+ waitId: wait.id,
406
+ actor,
407
+ resolution: { cancelled: true }
408
+ })) resolved++;
409
+ if (resolved) {
410
+ const task = new TaskRepository().require(run.taskId);
411
+ enqueueTaskChangedEvent(db, {
412
+ taskId: task.id,
413
+ projectId: task.projectId,
414
+ version: task.version,
415
+ changedFields: ["runs"],
416
+ actor
417
+ });
418
+ }
419
+ return resolved;
420
+ });
421
+ }
304
422
  resolveWait(input) {
305
423
  const now = input.now ?? Date.now();
306
424
  return runSqliteWriteTransaction((db) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.384",
3
+ "version": "0.0.386",
4
4
  "description": "Local-first personal AI with Ada, task delegation, files, projects, workflows, and automations. Use cloud or local models.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -170,10 +170,10 @@
170
170
  "vue": "^3.5.35",
171
171
  "@xopcai/browser-control-contract": "0.1.0",
172
172
  "@xopcai/computer-control-contract": "0.1.0",
173
- "@xopcai/endpoint-tools-client": "0.0.0",
174
173
  "@xopcai/endpoint-tools-protocol": "0.0.0",
175
- "@xopcai/image-providers": "0.1.0",
174
+ "@xopcai/endpoint-tools-client": "0.0.0",
176
175
  "@xopcai/gateway-contract": "0.0.0",
176
+ "@xopcai/image-providers": "0.1.0",
177
177
  "@xopcai/realtime-client": "0.0.0",
178
178
  "@xopcai/realtime-protocol": "0.0.0"
179
179
  },
@@ -242,6 +242,10 @@
242
242
  "test:startup:gateway:check": "node --import tsx scripts/bench-gateway-startup.ts --runs 2 --warmup 0 --ready-budget-ms 20000",
243
243
  "test:startup:imports": "node scripts/check-cli-bootstrap-imports.mjs",
244
244
  "eval:coder": "tsx evals/coder/apps/cli/src/main.ts",
245
+ "eval:personal:p0": "tsx scripts/personal-delivery-benchmark.mts",
246
+ "eval:personal:p1": "tsx scripts/personal-delivery-benchmark.mts --suite p1",
247
+ "eval:personal:p2": "tsx scripts/personal-delivery-benchmark.mts --suite p2",
248
+ "eval:personal:live-repair": "tsx scripts/personal-repair-live-benchmark.mts",
245
249
  "eval:coder:check": "pnpm -C evals/coder run check",
246
250
  "eval:coder:smoke": "pnpm -C evals/coder run smoke",
247
251
  "eval:coder:web": "tsx evals/coder/apps/web/src/server.ts",
@@ -1 +0,0 @@
1
- import{i as e,l as t,p as n,r,s as i,t as a,u as o}from"./schemas-CObaziC7.js";var s=a([`document`,`spreadsheet`,`presentation`,`pdf`,`image`,`video`,`audio`,`site`,`archive`,`file`]),c=a([`workspace`,`external_host`,`worktree`,`remote_runtime`,`artifact_store`]),l=a([`materializing`,`available`,`expired`,`missing`,`failed`]),u=a([`preview`,`download`,`open`,`import`,`share`,`regenerate`]),d=o({artifactId:n().min(1),sourceFileId:n().min(1).optional(),title:n().min(1),kind:s,mimeType:n().optional(),sizeBytes:t().nonnegative().optional(),availability:l,location:c,capabilities:r(u),uri:n().optional(),workspaceRelativePath:n().optional(),shareUrl:n().url().optional(),thumbnailUrl:n().optional(),expiresAt:n().optional()}),f=o({path:n().min(1),status:a([`added`,`modified`,`deleted`,`renamed`]).optional(),added:t().nonnegative().optional(),removed:t().nonnegative().optional()}),p=o({changeSetId:n().min(1),files:r(f),added:t().nonnegative(),removed:t().nonnegative(),diff:n(),diffTruncated:e().optional(),environment:a([`workspace`,`worktree`,`remote_runtime`])}),m=o({evidenceId:n().min(1),kind:a([`check`,`screenshot`,`video`,`log`]),label:n().min(1),status:a([`passed`,`failed`,`warning`]),durationMs:t().nonnegative().optional(),command:n().optional(),artifactId:n().optional(),revision:n().optional(),logPath:n().optional()}),h=o({version:i(1),outcomeId:n().min(1),runId:n().min(1),turnId:n().min(1),status:a([`succeeded`,`partial`,`failed`]),summary:n().optional(),deliverables:r(d),changeSet:p.optional(),evidence:r(m),createdAt:n()}),g=`xopc-file:`;function _(e){if(!e.startsWith(g))return null;try{return decodeURIComponent(e.slice(10)).trim()||null}catch{return null}}function v(e){let t=new Map(e.map(e=>[e.artifactId,e])),n=new Map,r=e=>e.availability===`available`?e.location===`artifact_store`?2:1:0;for(let e of t.values()){let t=e.sourceFileId??_(e.uri??``),i=t?`source:${t}`:`artifact:${e.artifactId}`,a=n.get(i);(!a||r(e)>=r(a))&&n.set(i,e)}return[...n.values()]}function y(e){let t=h.safeParse(e);return t.success?{...t.data,deliverables:v(t.data.deliverables)}:null}var b=32*1024*1024;export{y as i,h as n,_ as r,b as t};