@xopcai/xopc 0.0.178 → 0.0.179

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 (343) 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/{activity-store-BzGX__8I.js → activity-store-A5FUMjeV.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BzxntcaZ.js → agent-avatar-dicebear-NghNiDWx.js} +1 -1
  5. package/dist/gateway/static/root/assets/agents-Baq8Shzy.js +2 -0
  6. package/dist/gateway/static/root/assets/{api-hi6f2Xtp.js → api-Bmzslx0Z.js} +1 -1
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-fTY1F7ac.js → app-management-settings-panel-DDWS_BBJ.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-BZ-IxQfB.js → appearance-settings-C6znvVtX.js} +1 -1
  9. package/dist/gateway/static/root/assets/apps-page-d-Y0Jbe1.js +1 -0
  10. package/dist/gateway/static/root/assets/{archive-plugin-ZSLLG8wB.js → archive-plugin-fvTZhPUr.js} +1 -1
  11. package/dist/gateway/static/root/assets/{attachment-load-D4YktqIF.js → attachment-load-BFEgvg-Q.js} +1 -1
  12. package/dist/gateway/static/root/assets/automations-page-CFYOCBlQ.js +6 -0
  13. package/dist/gateway/static/root/assets/{binary-plugins-BIkPxfxj.js → binary-plugins-CuI2bOc7.js} +1 -1
  14. package/dist/gateway/static/root/assets/{block-editor-Q3v_YQom.js → block-editor-Z_k8W0al.js} +46 -46
  15. package/dist/gateway/static/root/assets/browser-settings-page-CGApoYPr.js +8 -0
  16. package/dist/gateway/static/root/assets/{browser-workflow-inputs-M5lTEW1I.js → browser-workflow-inputs-gs6b5e9-.js} +1 -1
  17. package/dist/gateway/static/root/assets/{browser-workflows-page-B3T1KYk4.js → browser-workflows-page-Cq5qXStp.js} +2 -2
  18. package/dist/gateway/static/root/assets/capabilities-settings-panel-BC-8n4Hl.js +7 -0
  19. package/dist/gateway/static/root/assets/{capability-presets-api-DE09c0VB.js → capability-presets-api-BTKhPoDC.js} +1 -1
  20. package/dist/gateway/static/root/assets/capability-presets-settings-panel-D7WQ0oBN.js +1 -0
  21. package/dist/gateway/static/root/assets/{channel-recipient-api-CFR5FBfS.js → channel-recipient-api-TwMak0SE.js} +1 -1
  22. package/dist/gateway/static/root/assets/channels-settings-DysELlO_.js +1 -0
  23. package/dist/gateway/static/root/assets/channels-status-swr-BAC-R8IK.js +1 -0
  24. package/dist/gateway/static/root/assets/{connector-logo-B1mD-3pM.js → connector-logo-DBKotvNr.js} +1 -1
  25. package/dist/gateway/static/root/assets/connectors-page-QH-0WnOo.js +2 -0
  26. package/dist/gateway/static/root/assets/desktop-pet-Dwml8znf.js +1 -0
  27. package/dist/gateway/static/root/assets/desktop-pet-settings-CyIg2jJp.js +1 -0
  28. package/dist/gateway/static/root/assets/{directory-picker-path-field-BYQJ2XUS.js → directory-picker-path-field-B6fc_7SL.js} +1 -1
  29. package/dist/gateway/static/root/assets/{dreaming-settings-BXcb8fwx.js → dreaming-settings-CUQxGnDf.js} +3 -3
  30. package/dist/gateway/static/root/assets/{extension-debug-page-O1Xu1r4Q.js → extension-debug-page-AbRNi2ON.js} +1 -1
  31. package/dist/gateway/static/root/assets/{extension-page-C2Jraq8l.js → extension-page-ClYfiLXC.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-settings-page-DcXQDTpG.js → extension-settings-page-BGVP2hw1.js} +1 -1
  33. package/dist/gateway/static/root/assets/{gateway-config-api-DmPIZrvg.js → gateway-config-api-B7GqtklK.js} +1 -1
  34. package/dist/gateway/static/root/assets/gateway-settings-BMeK8igT.js +1 -0
  35. package/dist/gateway/static/root/assets/{gateway-startup-retry-BZEkOdPm.js → gateway-startup-retry-CKKL96r_.js} +1 -1
  36. package/dist/gateway/static/root/assets/goals-settings-Dj0ao2qA.js +1 -0
  37. package/dist/gateway/static/root/assets/{heartbeat-settings-BtKu2NWT.js → heartbeat-settings-CTI2nPKa.js} +1 -1
  38. package/dist/gateway/static/root/assets/{image-generation-api-05Gg8wsU.js → image-generation-api-BY3VQ5Mv.js} +1 -1
  39. package/dist/gateway/static/root/assets/index-B0Tdge_q.css +1 -0
  40. package/dist/gateway/static/root/assets/index-BDzspHrg.js +224 -0
  41. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CfmDR9Sc.js → keyboard-shortcuts-settings-CELtDFz3.js} +1 -1
  42. package/dist/gateway/static/root/assets/local-app-workbench-page-m8CTSGix.js +2 -0
  43. package/dist/gateway/static/root/assets/{local-apps-page-Df8BW1A_.js → local-apps-page-CF5uUd1n.js} +1 -1
  44. package/dist/gateway/static/root/assets/{locale-store-CTwSy7yW.js → locale-store-DIVc0AQs.js} +1 -1
  45. package/dist/gateway/static/root/assets/logs-page-DmH7Tk4k.js +7 -0
  46. package/dist/gateway/static/root/assets/{markdown-split-B3FvKbaP.js → markdown-split-CN85EdB8.js} +1 -1
  47. package/dist/gateway/static/root/assets/{media-plugins-DsjrvvB6.js → media-plugins-CxYEc-b8.js} +1 -1
  48. package/dist/gateway/static/root/assets/messages-DYqBwJAK.js +3 -0
  49. package/dist/gateway/static/root/assets/{notes-page-tuzIwy3c.js → notes-page-Goab4781.js} +1 -1
  50. package/dist/gateway/static/root/assets/notes-workbench-C4jDBVBN.js +4 -0
  51. package/dist/gateway/static/root/assets/outcome-detail-page-DNRfeLZp.js +1 -0
  52. package/dist/gateway/static/root/assets/{page-tabs-ke9s4nYi.js → page-tabs-tQNQcAts.js} +1 -1
  53. package/dist/gateway/static/root/assets/{preview-open-alternatives-Cp1eI4S9.js → preview-open-alternatives-BSTlgsDB.js} +1 -1
  54. package/dist/gateway/static/root/assets/product-delivery-BVG-eWQO.js +1 -0
  55. package/dist/gateway/static/root/assets/{product-open-page-dXQCMAtH.js → product-open-page-iQ5gTCip.js} +1 -1
  56. package/dist/gateway/static/root/assets/project-detail-page-D7anK-eu.js +1 -0
  57. package/dist/gateway/static/root/assets/projects-page-BePESKWy.js +1 -0
  58. package/dist/gateway/static/root/assets/remote-access-hub-CHrzBKIs.js +1 -0
  59. package/dist/gateway/static/root/assets/{save-bar-controls-Bl30zjHc.js → save-bar-controls-BsPf5Gkk.js} +1 -1
  60. package/dist/gateway/static/root/assets/{schedule-field-DqhmXQKo.js → schedule-field-kAytH7mq.js} +1 -1
  61. package/dist/gateway/static/root/assets/{schema-form-DkUCy6vf.js → schema-form-Bbw8l2ri.js} +1 -1
  62. package/dist/gateway/static/root/assets/{schemas-DgQq6Z5S.js → schemas-C6onAggk.js} +2 -2
  63. package/dist/gateway/static/root/assets/sessions-page-He5YAczL.js +1 -0
  64. package/dist/gateway/static/root/assets/settings-advanced-gate-2eAC9GCP.js +1 -0
  65. package/dist/gateway/static/root/assets/{settings-form-section-C6ZbNpdy.js → settings-form-section-BqbibcnJ.js} +1 -1
  66. package/dist/gateway/static/root/assets/{settings-loading-skeleton-Bk58_cr7.js → settings-loading-skeleton-DNLNCEGT.js} +1 -1
  67. package/dist/gateway/static/root/assets/{settings-page-k8iE_NdX.js → settings-page-BR6Ss0bK.js} +1 -1
  68. package/dist/gateway/static/root/assets/{settings-page-layout-DgFSya2e.js → settings-page-layout-Cdb1e2Cz.js} +1 -1
  69. package/dist/gateway/static/root/assets/{setup-status-panel-B_KDlyZA.js → setup-status-panel-moT-D-ia.js} +1 -1
  70. package/dist/gateway/static/root/assets/{share-preview-page-CV7nL_J9.js → share-preview-page-CkrASny2.js} +1 -1
  71. package/dist/gateway/static/root/assets/shares-settings-X49zY21H.js +1 -0
  72. package/dist/gateway/static/root/assets/skill-reload-api-CjpnFfOH.js +1 -0
  73. package/dist/gateway/static/root/assets/skills-page-DEwfSOUE.js +2 -0
  74. package/dist/gateway/static/root/assets/{skills-page.utils-kahBIHg0.js → skills-page.utils-BG5dGkyA.js} +1 -1
  75. package/dist/gateway/static/root/assets/{system-settings-panel-JV3-MG5F.js → system-settings-panel-XdY8eyYf.js} +1 -1
  76. package/dist/gateway/static/root/assets/{theme-store-DFLyzoLO.js → theme-store-DtwI_VLT.js} +1 -1
  77. package/dist/gateway/static/root/assets/time-picker-UghsQu_I.js +1 -0
  78. package/dist/gateway/static/root/assets/{typed-models-lib-60Aqo-UJ.js → typed-models-lib-DOnpwsrE.js} +1 -1
  79. package/dist/gateway/static/root/assets/{use-channel-catalog-CnTkHDnw.js → use-channel-catalog-BWDtfNvQ.js} +1 -1
  80. package/dist/gateway/static/root/assets/user-context-page-BtNBEtKj.js +1 -0
  81. package/dist/gateway/static/root/assets/{voice-api-key-field-CNa8qUgS.js → voice-api-key-field-DP80jW-W.js} +1 -1
  82. package/dist/gateway/static/root/assets/work-copy-hQmivDgT.js +1 -0
  83. package/dist/gateway/static/root/assets/work-discovery-page-CkDOVZBr.js +1 -0
  84. package/dist/gateway/static/root/assets/work-item-detail-page-CqvkcFcR.js +1 -0
  85. package/dist/gateway/static/root/assets/work-page-BL8TZW4Z.js +3 -0
  86. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-yV_x595t.js → workflow-run-setup-panel-BLlVqKdA.js} +2 -2
  87. package/dist/gateway/static/root/assets/workflows-page-BgsdRu3_.js +11 -0
  88. package/dist/gateway/static/root/index.html +9 -10
  89. package/dist/package.js +1 -1
  90. package/dist/packages/gateway-contract/src/outcomes.js +137 -0
  91. package/dist/packages/gateway-contract/src/product-delivery.js +1 -0
  92. package/dist/packages/gateway-contract/src/work-intake.js +85 -0
  93. package/dist/src/activity/service.d.ts +1 -0
  94. package/dist/src/activity/service.js +4 -1
  95. package/dist/src/agent/code-intelligence/binary.js +1 -1
  96. package/dist/src/agent/context/execution-scope.d.ts +1 -1
  97. package/dist/src/agent/context/execution-scope.js +6 -4
  98. package/dist/src/agent/goals/post-turn.js +6 -5
  99. package/dist/src/agent/mcp/mcp-stdio-transport.js +1 -1
  100. package/dist/src/agent/memory/user-context-coordinator.d.ts +1 -0
  101. package/dist/src/agent/memory/user-context-coordinator.js +17 -1
  102. package/dist/src/agent/outcomes/{task-evaluation.d.ts → execution-evaluation.d.ts} +3 -3
  103. package/dist/src/agent/outcomes/{task-evaluation.js → execution-evaluation.js} +5 -5
  104. package/dist/src/agent/outcomes/execution-verifier.d.ts +29 -0
  105. package/dist/src/agent/outcomes/{task-verifier.js → execution-verifier.js} +4 -4
  106. package/dist/src/agent/service/process-direct-streaming.js +3 -1
  107. package/dist/src/agent/tools/factory.js +16 -1
  108. package/dist/src/agent/tools/goal-tool.js +5 -3
  109. package/dist/src/agent/tools/todo-tool.d.ts +5 -0
  110. package/dist/src/agent/tools/todo-tool.js +16 -4
  111. package/dist/src/agent/tools/update-plan-tool.d.ts +1 -0
  112. package/dist/src/agent/tools/update-plan-tool.js +6 -0
  113. package/dist/src/browser/providers/cloakbrowser.js +2 -2
  114. package/dist/src/channels/attachments/voice-stt-webchat.d.ts +0 -3
  115. package/dist/src/channels/attachments/voice-stt-webchat.js +1 -24
  116. package/dist/src/chat-commands/builtins/goal.js +5 -4
  117. package/dist/src/cli/commands/agents.js +1 -1
  118. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  119. package/dist/src/cli/commands/goal.js +6 -5
  120. package/dist/src/cli/commands/tunnel.js +3 -3
  121. package/dist/src/connectors/learning-coordinator.js +7 -1
  122. package/dist/src/connectors/source-change-publisher.d.ts +17 -0
  123. package/dist/src/connectors/source-change-publisher.js +148 -0
  124. package/dist/src/discussions/analyzer.d.ts +35 -0
  125. package/dist/src/discussions/analyzer.js +127 -0
  126. package/dist/src/discussions/index.d.ts +7 -0
  127. package/dist/src/discussions/index.js +7 -0
  128. package/dist/src/discussions/live-worker.d.ts +33 -0
  129. package/dist/src/discussions/live-worker.js +148 -0
  130. package/dist/src/discussions/pipeline.d.ts +33 -0
  131. package/dist/src/discussions/pipeline.js +205 -0
  132. package/dist/src/discussions/project-inference.d.ts +13 -0
  133. package/dist/src/discussions/project-inference.js +19 -0
  134. package/dist/src/discussions/repository.d.ts +29 -0
  135. package/dist/src/discussions/repository.js +255 -0
  136. package/dist/src/discussions/service.d.ts +51 -0
  137. package/dist/src/discussions/service.js +335 -0
  138. package/dist/src/discussions/transcript.d.ts +3 -0
  139. package/dist/src/discussions/transcript.js +15 -0
  140. package/dist/src/discussions/types.d.ts +116 -0
  141. package/dist/src/discussions/types.js +10 -0
  142. package/dist/src/discussions/worker.d.ts +18 -0
  143. package/dist/src/discussions/worker.js +74 -0
  144. package/dist/src/extensions/activation-context.js +2 -1
  145. package/dist/src/extensions/sdk/testing.js +1 -1
  146. package/dist/src/gateway/agents-admin.js +1 -1
  147. package/dist/src/gateway/chat-stream/mapper.js +53 -3
  148. package/dist/src/gateway/chat-stream/protocol.d.ts +17 -1
  149. package/dist/src/gateway/heartbeat/service.js +1 -1
  150. package/dist/src/gateway/hono/app.js +8 -3
  151. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  152. package/dist/src/gateway/hono/middleware/auth.js +2 -2
  153. package/dist/src/gateway/hono/middleware/logger.js +1 -1
  154. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +1 -1
  155. package/dist/src/gateway/hono/routes/agents.js +1 -1
  156. package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
  157. package/dist/src/gateway/hono/routes/connectors.js +79 -0
  158. package/dist/src/gateway/hono/routes/discussions.d.ts +3 -0
  159. package/dist/src/gateway/hono/routes/discussions.js +177 -0
  160. package/dist/src/gateway/hono/routes/execution-receipts.d.ts +3 -0
  161. package/dist/src/gateway/hono/routes/execution-receipts.js +163 -0
  162. package/dist/src/gateway/hono/routes/exposure.js +1 -1
  163. package/dist/src/gateway/hono/routes/goals.js +3 -288
  164. package/dist/src/gateway/hono/routes/home.d.ts +2 -102
  165. package/dist/src/gateway/hono/routes/home.js +8 -424
  166. package/dist/src/gateway/hono/routes/index.js +6 -2
  167. package/dist/src/gateway/hono/routes/memory.js +7 -7
  168. package/dist/src/gateway/hono/routes/notes.js +30 -0
  169. package/dist/src/gateway/hono/routes/projects.js +8 -152
  170. package/dist/src/gateway/hono/routes/shares.js +1 -1
  171. package/dist/src/gateway/hono/routes/status.js +2 -2
  172. package/dist/src/gateway/hono/routes/tunnel.js +3 -3
  173. package/dist/src/gateway/hono/routes/voice.js +1 -1
  174. package/dist/src/gateway/hono/routes/work.d.ts +3 -0
  175. package/dist/src/gateway/hono/routes/work.js +207 -0
  176. package/dist/src/gateway/hono/routes/you.js +12 -14
  177. package/dist/src/gateway/index.js +2 -2
  178. package/dist/src/gateway/runtime-config.js +2 -2
  179. package/dist/src/gateway/security/audit.js +2 -2
  180. package/dist/src/gateway/security/index.js +1 -1
  181. package/dist/src/gateway/service/config-coordinator.js +1 -1
  182. package/dist/src/gateway/service/run-gateway-agent.js +46 -51
  183. package/dist/src/gateway/service.d.ts +8 -1
  184. package/dist/src/gateway/service.js +139 -12
  185. package/dist/src/goals/goal-queue-store.d.ts +1 -0
  186. package/dist/src/goals/goal-queue-store.js +5 -1
  187. package/dist/src/goals/goal-queue-types.d.ts +11 -1
  188. package/dist/src/goals/goal-runner.js +10 -6
  189. package/dist/src/goals/goal-service.d.ts +2 -15
  190. package/dist/src/goals/goal-service.js +9 -42
  191. package/dist/src/goals/goal-store.d.ts +1 -18
  192. package/dist/src/goals/goal-store.js +25 -231
  193. package/dist/src/goals/index.d.ts +0 -4
  194. package/dist/src/goals/index.js +1 -3
  195. package/dist/src/goals/types.d.ts +4 -66
  196. package/dist/src/heartbeat/index.js +1 -1
  197. package/dist/src/notes/agent-context.js +1 -1
  198. package/dist/src/notes/service.d.ts +1 -0
  199. package/dist/src/notes/service.js +9 -0
  200. package/dist/src/notes/types.d.ts +1 -0
  201. package/dist/src/proactive/events/product-event-bridge.d.ts +7 -0
  202. package/dist/src/proactive/events/product-event-bridge.js +84 -0
  203. package/dist/src/proactive/execution/context.d.ts +27 -11
  204. package/dist/src/proactive/execution/context.js +259 -25
  205. package/dist/src/proactive/execution/repository.js +18 -5
  206. package/dist/src/proactive/execution/types.d.ts +7 -1
  207. package/dist/src/proactive/execution/worker.js +7 -6
  208. package/dist/src/proactive/inbox/repository.js +8 -2
  209. package/dist/src/proactive/index.d.ts +4 -2
  210. package/dist/src/proactive/index.js +5 -3
  211. package/dist/src/proactive/temporal/worker.d.ts +16 -0
  212. package/dist/src/proactive/temporal/worker.js +110 -0
  213. package/dist/src/share/share-zip.js +1 -1
  214. package/dist/src/share/site-proxy.js +1 -1
  215. package/dist/src/storage/sqlite/activity-repository.d.ts +1 -0
  216. package/dist/src/storage/sqlite/activity-repository.js +4 -1
  217. package/dist/src/storage/sqlite/connector-sync-policy-repository.d.ts +20 -0
  218. package/dist/src/storage/sqlite/connector-sync-policy-repository.js +50 -0
  219. package/dist/src/storage/sqlite/execution-receipt-repository.d.ts +146 -0
  220. package/dist/src/storage/sqlite/execution-receipt-repository.js +235 -0
  221. package/dist/src/storage/sqlite/index.d.ts +4 -2
  222. package/dist/src/storage/sqlite/index.js +6 -4
  223. package/dist/src/storage/sqlite/knowledge-repository.d.ts +3 -0
  224. package/dist/src/storage/sqlite/knowledge-repository.js +9 -1
  225. package/dist/src/storage/sqlite/memory-records-repository.js +1 -1
  226. package/dist/src/storage/sqlite/migrations/075_connector_sync_policies.sql +13 -0
  227. package/dist/src/storage/sqlite/migrations/076_meeting_preparation_scenario.sql +29 -0
  228. package/dist/src/storage/sqlite/migrations/077_proactive_insight_fingerprints.sql +4 -0
  229. package/dist/src/storage/sqlite/migrations/078_discussion_captures.sql +64 -0
  230. package/dist/src/storage/sqlite/migrations/079_discussion_follow_up_scenario.sql +29 -0
  231. package/dist/src/storage/sqlite/migrations/080_task_outcome_context.sql +15 -0
  232. package/dist/src/storage/sqlite/migrations/081_project_monitoring_policies.sql +10 -0
  233. package/dist/src/storage/sqlite/migrations/082_one_click_live_discussions.sql +100 -0
  234. package/dist/src/storage/sqlite/migrations/083_session_task_plans.sql +9 -0
  235. package/dist/src/storage/sqlite/migrations/084_work_intake_lifecycle.sql +26 -0
  236. package/dist/src/storage/sqlite/migrations/085_task_outcome_projection.sql +19 -0
  237. package/dist/src/storage/sqlite/migrations/086_outcome_aggregates.sql +168 -0
  238. package/dist/src/storage/sqlite/migrations/087_context_snapshots.sql +21 -0
  239. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  240. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  241. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  242. package/dist/src/storage/sqlite/notes-repository.js +9 -0
  243. package/dist/src/storage/sqlite/schema.js +1 -1
  244. package/dist/src/storage/sqlite/schema.sql +89 -44
  245. package/dist/src/storage/sqlite/session-repository.js +1 -1
  246. package/dist/src/storage/sqlite/session-task-plan-repository.d.ts +20 -0
  247. package/dist/src/storage/sqlite/session-task-plan-repository.js +77 -0
  248. package/dist/src/tui/backends/embedded-backend.js +1 -1
  249. package/dist/src/tunnel/frpc-binary.js +1 -1
  250. package/dist/src/tunnel/frpc-extract.js +1 -1
  251. package/dist/src/tunnel/index.js +2 -2
  252. package/dist/src/user-context/context-compiler.d.ts +31 -0
  253. package/dist/src/user-context/context-compiler.js +51 -0
  254. package/dist/src/voice/local/model-files.js +1 -1
  255. package/dist/src/voice/stt/config.d.ts +4 -0
  256. package/dist/src/voice/stt/config.js +26 -0
  257. package/dist/src/voice/stt/index.d.ts +1 -0
  258. package/dist/src/voice/stt/index.js +2 -1
  259. package/dist/src/voice/stt/list-providers.js +1 -1
  260. package/dist/src/work/attention-governor.d.ts +20 -0
  261. package/dist/src/work/attention-governor.js +46 -0
  262. package/dist/src/work/execution-context.d.ts +16 -0
  263. package/dist/src/work/execution-context.js +66 -0
  264. package/dist/src/work/home-query-service.d.ts +118 -0
  265. package/dist/src/work/home-query-service.js +389 -0
  266. package/dist/src/work/index.d.ts +14 -0
  267. package/dist/src/work/index.js +15 -0
  268. package/dist/src/work/outcome-contract-definition.d.ts +8 -0
  269. package/dist/src/work/outcome-contract-definition.js +15 -0
  270. package/dist/src/work/outcome-execution-service.d.ts +27 -0
  271. package/dist/src/work/outcome-execution-service.js +60 -0
  272. package/dist/src/work/outcome-projection-service.d.ts +7 -0
  273. package/dist/src/work/outcome-projection-service.js +51 -0
  274. package/dist/src/work/outcome-receipt-service.d.ts +13 -0
  275. package/dist/src/work/outcome-receipt-service.js +55 -0
  276. package/dist/src/work/outcome-repository.d.ts +50 -0
  277. package/dist/src/work/outcome-repository.js +112 -0
  278. package/dist/src/work/outcome-run-coordinator.d.ts +25 -0
  279. package/dist/src/work/outcome-run-coordinator.js +117 -0
  280. package/dist/src/work/project-monitoring-service.d.ts +21 -0
  281. package/dist/src/work/project-monitoring-service.js +76 -0
  282. package/dist/src/work/project-operating-view-service.d.ts +10 -0
  283. package/dist/src/work/project-operating-view-service.js +46 -0
  284. package/dist/src/work/work-intake-repository.d.ts +49 -0
  285. package/dist/src/work/work-intake-repository.js +97 -0
  286. package/dist/src/work/work-intake-service.d.ts +26 -0
  287. package/dist/src/work/work-intake-service.js +171 -0
  288. package/dist/src/work/work-value-metrics-service.d.ts +4 -0
  289. package/dist/src/work/work-value-metrics-service.js +88 -0
  290. package/dist/src/work-items/work-item-service.d.ts +0 -2
  291. package/dist/src/work-items/work-item-service.js +0 -28
  292. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  293. package/dist/src/workflows/service/workflow-session-bridge.js +2 -2
  294. package/package.json +1 -1
  295. package/dist/gateway/static/root/assets/agents-DC9F12Kw.js +0 -2
  296. package/dist/gateway/static/root/assets/apps-page-5bKr05Fa.js +0 -1
  297. package/dist/gateway/static/root/assets/automation-suggestion-card-B7mxFRtf.js +0 -1
  298. package/dist/gateway/static/root/assets/automations-page-Dg6dmt5g.js +0 -6
  299. package/dist/gateway/static/root/assets/browser-settings-page-BHoo6Rpq.js +0 -8
  300. package/dist/gateway/static/root/assets/capabilities-settings-panel-BlsqN8Fu.js +0 -7
  301. package/dist/gateway/static/root/assets/capability-presets-settings-panel-DJeT8_B4.js +0 -1
  302. package/dist/gateway/static/root/assets/channels-settings-C4VVjYEm.js +0 -1
  303. package/dist/gateway/static/root/assets/channels-status-swr-vdf8kB16.js +0 -1
  304. package/dist/gateway/static/root/assets/circle-alert-BEjgurr2.js +0 -1
  305. package/dist/gateway/static/root/assets/connectors-page-DNcrDThX.js +0 -2
  306. package/dist/gateway/static/root/assets/desktop-pet-B1urphOZ.js +0 -1
  307. package/dist/gateway/static/root/assets/desktop-pet-settings-DTL6J3EP.js +0 -1
  308. package/dist/gateway/static/root/assets/gateway-settings-DmObBx9b.js +0 -1
  309. package/dist/gateway/static/root/assets/goal-create-dialog-BRhmmBe9.js +0 -1
  310. package/dist/gateway/static/root/assets/goal-detail-page-C1k7_s_O.js +0 -4
  311. package/dist/gateway/static/root/assets/goals-config-api-Fwu1wjEP.js +0 -1
  312. package/dist/gateway/static/root/assets/goals-page-hOu9uA3q.js +0 -2
  313. package/dist/gateway/static/root/assets/goals-settings-DY-JjvHz.js +0 -1
  314. package/dist/gateway/static/root/assets/index-C0CGebQ1.js +0 -212
  315. package/dist/gateway/static/root/assets/index-eqq25gvV.css +0 -1
  316. package/dist/gateway/static/root/assets/local-app-workbench-page-EjsNT7nJ.js +0 -2
  317. package/dist/gateway/static/root/assets/logs-page-Dswjlraa.js +0 -7
  318. package/dist/gateway/static/root/assets/messages-DP6tPKk-.js +0 -3
  319. package/dist/gateway/static/root/assets/notes-workbench-DSh3-hMY.js +0 -4
  320. package/dist/gateway/static/root/assets/product-delivery-BTRT9kCS.js +0 -1
  321. package/dist/gateway/static/root/assets/project-detail-page-D0QPRHR_.js +0 -1
  322. package/dist/gateway/static/root/assets/projects-page-CI5Vz62F.js +0 -1
  323. package/dist/gateway/static/root/assets/remote-access-hub-S1jpzBS5.js +0 -1
  324. package/dist/gateway/static/root/assets/sessions-page-CTm66k7h.js +0 -1
  325. package/dist/gateway/static/root/assets/settings-advanced-gate-CU52AUVD.js +0 -1
  326. package/dist/gateway/static/root/assets/shares-settings-DK6XK95e.js +0 -1
  327. package/dist/gateway/static/root/assets/skill-reload-api-Bvv_u4ii.js +0 -1
  328. package/dist/gateway/static/root/assets/skills-page-BGHvVbay.js +0 -2
  329. package/dist/gateway/static/root/assets/time-picker-XwpxdZFr.js +0 -1
  330. package/dist/gateway/static/root/assets/user-context-page-DBCMk-Vn.js +0 -1
  331. package/dist/gateway/static/root/assets/work-discovery-page-C1UIdsCl.js +0 -1
  332. package/dist/gateway/static/root/assets/work-item-detail-page-DEAQepB8.js +0 -1
  333. package/dist/gateway/static/root/assets/work-page-D5qYmCTq.js +0 -3
  334. package/dist/gateway/static/root/assets/workflows-page-yrK17ZZ5.js +0 -11
  335. package/dist/src/agent/outcomes/task-verifier.d.ts +0 -29
  336. package/dist/src/gateway/hono/routes/task-outcomes.d.ts +0 -3
  337. package/dist/src/gateway/hono/routes/task-outcomes.js +0 -109
  338. package/dist/src/goals/goal-contract-draft.d.ts +0 -15
  339. package/dist/src/goals/goal-contract-draft.js +0 -112
  340. package/dist/src/goals/goal-evidence-review.d.ts +0 -15
  341. package/dist/src/goals/goal-evidence-review.js +0 -89
  342. package/dist/src/storage/sqlite/task-outcome-repository.d.ts +0 -90
  343. package/dist/src/storage/sqlite/task-outcome-repository.js +0 -138
@@ -0,0 +1,110 @@
1
+ import { createLogger } from "../../utils/logger/index.js";
2
+ import { init_logger } from "../../utils/logger.js";
3
+ import { listKnowledgeSourceItems } from "../../storage/sqlite/knowledge-repository.js";
4
+ import { getConnectorSyncPolicy } from "../../storage/sqlite/connector-sync-policy-repository.js";
5
+ //#region src/proactive/temporal/worker.ts
6
+ init_logger();
7
+ const log = createLogger("Proactive:Temporal");
8
+ const MEETING_SCENARIO = "meeting_preparation";
9
+ function metadataString(metadata, key) {
10
+ const value = metadata[key];
11
+ return typeof value === "string" && value.trim() ? value : void 0;
12
+ }
13
+ function meetingWindow(startMs, nowMs) {
14
+ const untilStart = startMs - nowMs;
15
+ if (untilStart <= 0) return null;
16
+ if (untilStart <= 120 * 6e4) return "2h";
17
+ if (untilStart <= 1440 * 6e4) return "24h";
18
+ return null;
19
+ }
20
+ var ProactiveTemporalWorker = class {
21
+ timer = null;
22
+ running = false;
23
+ constructor(events, intervalMs = 6e4) {
24
+ this.events = events;
25
+ this.intervalMs = intervalMs;
26
+ }
27
+ start() {
28
+ if (this.timer) return;
29
+ this.tick();
30
+ this.timer = setInterval(() => void this.tick(), Math.max(5e3, this.intervalMs));
31
+ this.timer.unref?.();
32
+ }
33
+ stop() {
34
+ if (this.timer) clearInterval(this.timer);
35
+ this.timer = null;
36
+ }
37
+ async tick(now = /* @__PURE__ */ new Date()) {
38
+ if (this.running) return {
39
+ scanned: 0,
40
+ published: 0,
41
+ skipped: 0
42
+ };
43
+ this.running = true;
44
+ const result = {
45
+ scanned: 0,
46
+ published: 0,
47
+ skipped: 0
48
+ };
49
+ try {
50
+ const nowMs = now.getTime();
51
+ const pageSize = 500;
52
+ for (let offset = 0;; offset += pageSize) {
53
+ const items = listKnowledgeSourceItems({
54
+ itemType: "calendar_event",
55
+ occurredAfterMs: nowMs,
56
+ occurredBeforeMs: nowMs + 1440 * 6e4,
57
+ orderBy: "occurred_asc",
58
+ limit: pageSize,
59
+ offset
60
+ });
61
+ for (const item of items) {
62
+ result.scanned += 1;
63
+ const connectionId = metadataString(item.metadata, "connectionId");
64
+ const workspaceId = metadataString(item.metadata, "workspaceId");
65
+ const connectorId = metadataString(item.metadata, "connectorId");
66
+ const agentId = metadataString(item.metadata, "agentId");
67
+ const window = meetingWindow(item.occurredAt ? Date.parse(item.occurredAt) : NaN, nowMs);
68
+ const policy = connectionId ? getConnectorSyncPolicy(connectionId) : void 0;
69
+ const scenarioAllowed = !policy?.allowedScenarioKeys.length || policy.allowedScenarioKeys.includes(MEETING_SCENARIO);
70
+ if (!connectionId || !workspaceId || !connectorId || !window || !policy?.scanEnabled || !policy.proactiveEnabled || !scenarioAllowed || item.sensitivity === "secret" || item.sensitivity === "regulated") {
71
+ result.skipped += 1;
72
+ continue;
73
+ }
74
+ if (this.events.publish({
75
+ type: "connected_source.calendar_window.v1",
76
+ schemaVersion: 1,
77
+ source: {
78
+ kind: "connector",
79
+ id: connectionId
80
+ },
81
+ subject: {
82
+ kind: "knowledge_source_item",
83
+ id: item.id
84
+ },
85
+ actor: { kind: "system" },
86
+ scope: {
87
+ workspaceId,
88
+ ...agentId ? { agentId } : {}
89
+ },
90
+ occurredAt: now.toISOString(),
91
+ dedupeKey: `calendar-window:${item.id}:${item.occurredAt}:${window}`,
92
+ sensitivity: item.sensitivity === "normal" ? "personal" : item.sensitivity,
93
+ payload: {
94
+ sourceItemId: item.id,
95
+ meetingStartsAt: item.occurredAt,
96
+ window
97
+ }
98
+ }, now).inserted) result.published += 1;
99
+ }
100
+ if (items.length < pageSize) break;
101
+ }
102
+ if (result.published > 0) log.info(result, "Temporal meeting signals published");
103
+ return result;
104
+ } finally {
105
+ this.running = false;
106
+ }
107
+ }
108
+ };
109
+ //#endregion
110
+ export { ProactiveTemporalWorker };
@@ -2,8 +2,8 @@ import { isPathUnderWorkspace } from "../gateway/workspace-editor-path.js";
2
2
  import { relative, resolve } from "node:path";
3
3
  import { createReadStream } from "node:fs";
4
4
  import { lstat, readdir, realpath, stat } from "node:fs/promises";
5
- import { Readable, Transform } from "node:stream";
6
5
  import { pipeline } from "node:stream/promises";
6
+ import { Readable, Transform } from "node:stream";
7
7
  import { crc32, createDeflateRaw } from "node:zlib";
8
8
  //#region src/share/share-zip.ts
9
9
  const SIG_LOCAL = 67324752;
@@ -1,7 +1,7 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
- import { request } from "undici";
4
3
  import { Readable } from "node:stream";
4
+ import { request } from "undici";
5
5
  import * as ws from "ws";
6
6
  //#region src/share/site-proxy.ts
7
7
  init_logger();
@@ -6,3 +6,4 @@ export declare function listObjectActivityRecords(options: ListObjectActivityOpt
6
6
  export declare function listProjectActivityRecords(options: ListProjectActivityOptions): ActivityListResult;
7
7
  export declare function createObjectLinkRecord(input: CreateObjectLinkInput): ObjectLink;
8
8
  export declare function listObjectLinkRecords(object: ActivityObjectRef): ObjectLink[];
9
+ export declare function deleteObjectLinkRecord(id: string): boolean;
@@ -202,5 +202,8 @@ function listObjectLinkRecords(object) {
202
202
  WHERE (from_kind = ? AND from_id = ?) OR (to_kind = ? AND to_id = ?)
203
203
  ORDER BY created_at DESC, id DESC`).all(object.kind, object.id, object.kind, object.id).map((row) => objectLinkFromRow(row));
204
204
  }
205
+ function deleteObjectLinkRecord(id) {
206
+ return runSqliteWriteTransaction((db) => db.prepare("DELETE FROM object_links WHERE id = ?").run(id).changes > 0);
207
+ }
205
208
  //#endregion
206
- export { createObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent };
209
+ export { createObjectLinkRecord, deleteObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent };
@@ -0,0 +1,20 @@
1
+ export type ConnectorSyncPolicy = {
2
+ connectionId: string;
3
+ scanEnabled: boolean;
4
+ proactiveEnabled: boolean;
5
+ intervalMinutes?: number;
6
+ allowedScenarioKeys: string[];
7
+ revision: number;
8
+ updatedAt: string;
9
+ };
10
+ export declare function getConnectorSyncPolicy(connectionId: string): ConnectorSyncPolicy | undefined;
11
+ export declare function listConnectorSyncPolicies(): ConnectorSyncPolicy[];
12
+ export declare function upsertConnectorSyncPolicy(input: {
13
+ connectionId: string;
14
+ scanEnabled?: boolean;
15
+ proactiveEnabled?: boolean;
16
+ intervalMinutes?: number | null;
17
+ defaultIntervalMinutes?: number;
18
+ allowedScenarioKeys?: string[];
19
+ nowMs?: number;
20
+ }): ConnectorSyncPolicy;
@@ -0,0 +1,50 @@
1
+ import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
2
+ //#region src/storage/sqlite/connector-sync-policy-repository.ts
3
+ function stringArray(value) {
4
+ try {
5
+ const parsed = JSON.parse(value);
6
+ return Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : [];
7
+ } catch {
8
+ return [];
9
+ }
10
+ }
11
+ function fromRow(row) {
12
+ return {
13
+ connectionId: row.connection_id,
14
+ scanEnabled: row.scan_enabled === 1,
15
+ proactiveEnabled: row.proactive_enabled === 1,
16
+ ...row.interval_minutes == null ? {} : { intervalMinutes: row.interval_minutes },
17
+ allowedScenarioKeys: stringArray(row.allowed_scenario_keys_json),
18
+ revision: row.revision,
19
+ updatedAt: new Date(row.updated_at).toISOString()
20
+ };
21
+ }
22
+ function getConnectorSyncPolicy(connectionId) {
23
+ const row = getSqliteDatabase().prepare("SELECT * FROM connector_sync_policies WHERE connection_id = ?").get(connectionId);
24
+ return row ? fromRow(row) : void 0;
25
+ }
26
+ function listConnectorSyncPolicies() {
27
+ return getSqliteDatabase().prepare("SELECT * FROM connector_sync_policies ORDER BY connection_id ASC").all().map(fromRow);
28
+ }
29
+ function upsertConnectorSyncPolicy(input) {
30
+ const current = getConnectorSyncPolicy(input.connectionId);
31
+ const now = input.nowMs ?? Date.now();
32
+ const intervalMinutes = input.intervalMinutes === null ? null : Math.max(5, Math.min(1440, input.intervalMinutes ?? current?.intervalMinutes ?? input.defaultIntervalMinutes ?? 30));
33
+ const allowedScenarioKeys = [...new Set((input.allowedScenarioKeys ?? current?.allowedScenarioKeys ?? []).map((key) => key.trim()).filter(Boolean))].sort();
34
+ runSqliteWriteTransaction((db) => {
35
+ db.prepare(`INSERT INTO connector_sync_policies (
36
+ connection_id, scan_enabled, proactive_enabled, interval_minutes,
37
+ allowed_scenario_keys_json, revision, updated_at
38
+ ) VALUES (?, ?, ?, ?, ?, 1, ?)
39
+ ON CONFLICT(connection_id) DO UPDATE SET
40
+ scan_enabled = excluded.scan_enabled,
41
+ proactive_enabled = excluded.proactive_enabled,
42
+ interval_minutes = excluded.interval_minutes,
43
+ allowed_scenario_keys_json = excluded.allowed_scenario_keys_json,
44
+ revision = connector_sync_policies.revision + 1,
45
+ updated_at = excluded.updated_at`).run(input.connectionId, input.scanEnabled ?? current?.scanEnabled ?? true ? 1 : 0, input.proactiveEnabled ?? current?.proactiveEnabled ?? false ? 1 : 0, intervalMinutes, JSON.stringify(allowedScenarioKeys), now);
46
+ });
47
+ return getConnectorSyncPolicy(input.connectionId);
48
+ }
49
+ //#endregion
50
+ export { getConnectorSyncPolicy, listConnectorSyncPolicies, upsertConnectorSyncPolicy };
@@ -0,0 +1,146 @@
1
+ import { type ExecutionFailureCode, type ExecutionFailurePhase, type ExecutionRecoveryAction, type ExecutionVerification } from '../../agent/outcomes/execution-verifier.js';
2
+ export type ExecutionReceiptStatus = 'running' | 'succeeded' | 'failed' | 'cancelled';
3
+ export type ExecutionFeedbackOutcome = 'helpful' | 'not_helpful';
4
+ export type ExecutionVerdict = 'achieved' | 'partial' | 'not_achieved';
5
+ export type ExecutionReceiptOrigin = 'chat' | 'goal' | 'workflow' | 'automation' | 'browser' | 'proactive';
6
+ export type ExecutionReceiptTrigger = 'user' | 'schedule' | 'webhook' | 'proactive' | 'retry';
7
+ export interface ExecutionReceiptContext {
8
+ outcomeId?: string;
9
+ projectId?: string;
10
+ goalId?: string;
11
+ workItemId?: string;
12
+ origin?: ExecutionReceiptOrigin;
13
+ triggerKind?: ExecutionReceiptTrigger;
14
+ parentRunId?: string;
15
+ contextTraceId?: string;
16
+ }
17
+ export interface ExecutionContract {
18
+ objective: string;
19
+ deliverables: string[];
20
+ acceptanceCriteria: string[];
21
+ constraints: string[];
22
+ approvalRequired: string[];
23
+ }
24
+ export interface ExecutionEvidence {
25
+ kind: 'artifact' | 'test' | 'state' | 'source';
26
+ title: string;
27
+ summary: string;
28
+ uri?: string;
29
+ verifies?: string[];
30
+ }
31
+ export interface ExecutionReceipt {
32
+ runId: string;
33
+ sessionKey: string;
34
+ channel: string;
35
+ objective: string;
36
+ status: ExecutionReceiptStatus;
37
+ summary?: string;
38
+ contract?: ExecutionContract;
39
+ contractVersion?: number;
40
+ attempt: number;
41
+ strategy?: string;
42
+ evidence: ExecutionEvidence[];
43
+ verification: ExecutionVerification;
44
+ context: ExecutionReceiptContext;
45
+ nextAction?: string;
46
+ needsUser: boolean;
47
+ completionVerdict?: ExecutionVerdict;
48
+ completionVerdictSource?: 'system' | 'user';
49
+ correctionText?: string;
50
+ projectionVersion: number;
51
+ projectedAt?: number;
52
+ failure?: {
53
+ code: ExecutionFailureCode;
54
+ phase: ExecutionFailurePhase;
55
+ recoveryAction: ExecutionRecoveryAction;
56
+ };
57
+ feedback?: {
58
+ outcome: ExecutionFeedbackOutcome;
59
+ reason?: string;
60
+ needsCorrection?: boolean;
61
+ supportFit?: boolean;
62
+ };
63
+ startedAt: number;
64
+ completedAt?: number;
65
+ updatedAt: number;
66
+ }
67
+ export interface ExecutionReceiptMetrics {
68
+ total: number;
69
+ completed: number;
70
+ succeeded: number;
71
+ verified: number;
72
+ helpful: number;
73
+ notHelpful: number;
74
+ completionRate: number;
75
+ successRate: number;
76
+ verificationRate: number;
77
+ helpfulRate: number;
78
+ }
79
+ export declare function startExecutionReceipt(input: {
80
+ runId: string;
81
+ sessionKey: string;
82
+ channel: string;
83
+ objective: string;
84
+ context?: ExecutionReceiptContext;
85
+ contract?: ExecutionContract;
86
+ contractVersion?: number;
87
+ attempt?: number;
88
+ strategy?: string;
89
+ now?: number;
90
+ }): ExecutionReceipt;
91
+ export declare function completeExecutionReceipt(input: {
92
+ runId: string;
93
+ status: Exclude<ExecutionReceiptStatus, 'running'>;
94
+ summary: string;
95
+ now?: number;
96
+ }): ExecutionReceipt | undefined;
97
+ export declare function setExecutionVerdict(input: {
98
+ runId: string;
99
+ verdict: ExecutionVerdict;
100
+ correctionText?: string;
101
+ now?: number;
102
+ }): ExecutionReceipt | undefined;
103
+ export declare function markExecutionReceiptProjected(input: {
104
+ runId: string;
105
+ projectionVersion: number;
106
+ now?: number;
107
+ }): ExecutionReceipt | undefined;
108
+ export declare function listUnprojectedExecutionReceipts(input: {
109
+ projectionVersion: number;
110
+ limit?: number;
111
+ }): ExecutionReceipt[];
112
+ export declare function updateExecutionReceipt(input: {
113
+ runId: string;
114
+ contract?: ExecutionContract;
115
+ evidence?: ExecutionEvidence[];
116
+ summary?: string;
117
+ nextAction?: string | null;
118
+ needsUser?: boolean;
119
+ contextTraceId?: string | null;
120
+ now?: number;
121
+ }): ExecutionReceipt | undefined;
122
+ type ExecutionReceiptFeedbackInput = {
123
+ outcome: ExecutionFeedbackOutcome;
124
+ reason?: string;
125
+ needsCorrection?: boolean;
126
+ supportFit?: boolean;
127
+ now?: number;
128
+ };
129
+ export declare function setExecutionReceiptFeedback(input: ExecutionReceiptFeedbackInput & {
130
+ sessionKey: string;
131
+ assistantTimestamp: number;
132
+ }): ExecutionReceipt | undefined;
133
+ export declare function setExecutionReceiptFeedbackByRunId(input: ExecutionReceiptFeedbackInput & {
134
+ runId: string;
135
+ }): ExecutionReceipt | undefined;
136
+ export declare function getExecutionReceipt(runId: string): ExecutionReceipt | undefined;
137
+ export declare function findExecutionReceiptForAssistant(sessionKey: string, assistantTimestamp: number): ExecutionReceipt | undefined;
138
+ export declare function listExecutionReceipts(input?: {
139
+ outcomeId?: string;
140
+ sessionKey?: string;
141
+ projectId?: string;
142
+ workItemId?: string;
143
+ limit?: number;
144
+ }): ExecutionReceipt[];
145
+ export declare function summarizeExecutionReceipts(): ExecutionReceiptMetrics;
146
+ export {};
@@ -0,0 +1,235 @@
1
+ import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
2
+ import { diagnoseExecutionFailure, verifyExecutionCompletion } from "../../agent/outcomes/execution-verifier.js";
3
+ //#region src/storage/sqlite/execution-receipt-repository.ts
4
+ function fromRow(row) {
5
+ const contract = row.contract_json ? JSON.parse(row.contract_json) : void 0;
6
+ const evidence = JSON.parse(row.evidence_json);
7
+ const feedback = row.feedback_outcome ? {
8
+ outcome: row.feedback_outcome,
9
+ ...row.feedback_reason ? { reason: row.feedback_reason } : {},
10
+ ...row.needs_correction === null ? {} : { needsCorrection: row.needs_correction === 1 },
11
+ ...row.support_fit === null ? {} : { supportFit: row.support_fit === 1 }
12
+ } : void 0;
13
+ return {
14
+ runId: row.run_id,
15
+ sessionKey: row.session_key,
16
+ channel: row.channel,
17
+ objective: row.objective,
18
+ status: row.status,
19
+ ...row.summary ? { summary: row.summary } : {},
20
+ ...contract ? { contract } : {},
21
+ ...row.contract_version === null ? {} : { contractVersion: row.contract_version },
22
+ attempt: row.attempt,
23
+ ...row.strategy ? { strategy: row.strategy } : {},
24
+ evidence,
25
+ verification: {
26
+ ...JSON.parse(row.verification_json),
27
+ status: row.verification_status
28
+ },
29
+ context: {
30
+ ...row.outcome_id ? { outcomeId: row.outcome_id } : {},
31
+ ...row.project_id ? { projectId: row.project_id } : {},
32
+ ...row.goal_id ? { goalId: row.goal_id } : {},
33
+ ...row.work_item_id ? { workItemId: row.work_item_id } : {},
34
+ ...row.origin ? { origin: row.origin } : {},
35
+ ...row.trigger_kind ? { triggerKind: row.trigger_kind } : {},
36
+ ...row.parent_run_id ? { parentRunId: row.parent_run_id } : {},
37
+ ...row.context_trace_id ? { contextTraceId: row.context_trace_id } : {}
38
+ },
39
+ ...row.next_action ? { nextAction: row.next_action } : {},
40
+ needsUser: row.needs_user === 1,
41
+ ...row.completion_verdict ? { completionVerdict: row.completion_verdict } : {},
42
+ ...row.completion_verdict_source ? { completionVerdictSource: row.completion_verdict_source } : {},
43
+ ...row.correction_text ? { correctionText: row.correction_text } : {},
44
+ projectionVersion: row.projection_version,
45
+ ...row.projected_at === null ? {} : { projectedAt: row.projected_at },
46
+ ...row.failure_code && row.failure_phase && row.recovery_action ? { failure: {
47
+ code: row.failure_code,
48
+ phase: row.failure_phase,
49
+ recoveryAction: row.recovery_action
50
+ } } : {},
51
+ ...feedback ? { feedback } : {},
52
+ startedAt: row.started_at,
53
+ ...row.completed_at === null ? {} : { completedAt: row.completed_at },
54
+ updatedAt: row.updated_at
55
+ };
56
+ }
57
+ const SELECT_COLUMNS = `run_id, session_key, channel, objective, status, summary,
58
+ contract_json, evidence_json, feedback_outcome, feedback_reason,
59
+ needs_correction, support_fit, started_at, completed_at, updated_at,
60
+ verification_status, verification_json, failure_code, failure_phase, recovery_action,
61
+ project_id, goal_id, work_item_id, origin, trigger_kind, parent_run_id,
62
+ next_action, needs_user, context_trace_id, completion_verdict, completion_verdict_source, correction_text,
63
+ projection_version, projected_at, outcome_id, contract_version, attempt, strategy`;
64
+ function startExecutionReceipt(input) {
65
+ const now = input.now ?? Date.now();
66
+ runSqliteWriteTransaction((db) => {
67
+ const previousAttempt = input.context?.outcomeId ? db.prepare("SELECT COALESCE(MAX(attempt), 0) AS attempt FROM execution_receipts WHERE outcome_id = ?").get(input.context.outcomeId).attempt : 0;
68
+ const attempt = input.attempt ?? previousAttempt + 1;
69
+ const strategy = input.strategy ?? (attempt === 1 ? "primary" : `continuation_${attempt}`);
70
+ db.prepare(`INSERT INTO execution_receipts (
71
+ run_id, session_key, channel, objective, status, contract_json, started_at, updated_at,
72
+ project_id, goal_id, work_item_id, origin, trigger_kind, parent_run_id, context_trace_id,
73
+ outcome_id, contract_version, attempt, strategy
74
+ ) VALUES (?, ?, ?, ?, 'running', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(input.runId, input.sessionKey, input.channel, input.objective, input.contract ? JSON.stringify(input.contract) : null, now, now, input.context?.projectId ?? null, input.context?.goalId ?? null, input.context?.workItemId ?? null, input.context?.origin ?? null, input.context?.triggerKind ?? null, input.context?.parentRunId ?? null, input.context?.contextTraceId ?? null, input.context?.outcomeId ?? null, input.contractVersion ?? null, attempt, strategy);
75
+ });
76
+ return getExecutionReceipt(input.runId);
77
+ }
78
+ function completeExecutionReceipt(input) {
79
+ const now = input.now ?? Date.now();
80
+ const current = getExecutionReceipt(input.runId);
81
+ if (!current) return void 0;
82
+ const verification = verifyExecutionCompletion({
83
+ status: input.status,
84
+ acceptanceCriteria: current.contract?.acceptanceCriteria ?? [],
85
+ evidence: current.evidence
86
+ });
87
+ const failure = input.status === "succeeded" ? void 0 : diagnoseExecutionFailure({
88
+ status: input.status,
89
+ summary: input.summary
90
+ });
91
+ const completionVerdict = input.status === "succeeded" ? verification.status === "passed" ? "achieved" : "partial" : "not_achieved";
92
+ runSqliteWriteTransaction((db) => {
93
+ db.prepare(`UPDATE execution_receipts
94
+ SET status = ?, summary = ?, completed_at = ?, updated_at = ?,
95
+ verification_status = ?, verification_json = ?, failure_code = ?,
96
+ failure_phase = ?, recovery_action = ?, completion_verdict = ?,
97
+ completion_verdict_source = 'system', correction_text = NULL,
98
+ projection_version = 0, projected_at = NULL
99
+ WHERE run_id = ?`).run(input.status, input.summary, now, now, verification.status, JSON.stringify({ checks: verification.checks }), failure?.code ?? null, failure?.phase ?? null, failure?.recoveryAction ?? null, completionVerdict, input.runId);
100
+ });
101
+ return getExecutionReceipt(input.runId);
102
+ }
103
+ function setExecutionVerdict(input) {
104
+ const current = getExecutionReceipt(input.runId);
105
+ if (!current || current.status === "running") return void 0;
106
+ const now = input.now ?? Date.now();
107
+ runSqliteWriteTransaction((db) => {
108
+ db.prepare(`UPDATE execution_receipts
109
+ SET completion_verdict = ?, completion_verdict_source = 'user', correction_text = ?, projection_version = 0,
110
+ projected_at = NULL, updated_at = ?
111
+ WHERE run_id = ?`).run(input.verdict, input.correctionText?.trim() || null, now, input.runId);
112
+ });
113
+ return getExecutionReceipt(input.runId);
114
+ }
115
+ function markExecutionReceiptProjected(input) {
116
+ const now = input.now ?? Date.now();
117
+ runSqliteWriteTransaction((db) => {
118
+ db.prepare(`UPDATE execution_receipts
119
+ SET projection_version = ?, projected_at = ?, updated_at = ?
120
+ WHERE run_id = ? AND status != 'running'`).run(input.projectionVersion, now, now, input.runId);
121
+ });
122
+ return getExecutionReceipt(input.runId);
123
+ }
124
+ function listUnprojectedExecutionReceipts(input) {
125
+ const limit = Math.max(1, Math.min(500, Math.floor(input.limit ?? 100)));
126
+ return getSqliteDatabase().prepare(`SELECT ${SELECT_COLUMNS} FROM execution_receipts
127
+ WHERE status != 'running' AND projection_version < ?
128
+ ORDER BY completed_at ASC
129
+ LIMIT ?`).all(input.projectionVersion, limit).map(fromRow);
130
+ }
131
+ function updateExecutionReceipt(input) {
132
+ const current = getExecutionReceipt(input.runId);
133
+ if (!current) return void 0;
134
+ const now = input.now ?? Date.now();
135
+ const contract = input.contract === void 0 ? current.contract : input.contract;
136
+ const evidence = input.evidence === void 0 ? current.evidence : input.evidence;
137
+ const summary = input.summary === void 0 ? current.summary : input.summary;
138
+ const nextAction = input.nextAction === void 0 ? current.nextAction : input.nextAction ?? void 0;
139
+ const needsUser = input.needsUser === void 0 ? current.needsUser : input.needsUser;
140
+ const contextTraceId = input.contextTraceId === void 0 ? current.context.contextTraceId : input.contextTraceId ?? void 0;
141
+ const verification = current.status !== "running" && current.completionVerdictSource !== "user" ? verifyExecutionCompletion({
142
+ status: current.status,
143
+ acceptanceCriteria: contract?.acceptanceCriteria ?? [],
144
+ evidence
145
+ }) : current.verification;
146
+ const completionVerdict = current.status !== "running" && current.completionVerdictSource !== "user" ? current.status === "succeeded" ? verification.status === "passed" ? "achieved" : "partial" : "not_achieved" : current.completionVerdict;
147
+ runSqliteWriteTransaction((db) => {
148
+ db.prepare(`UPDATE execution_receipts
149
+ SET contract_json = ?, evidence_json = ?, summary = ?, next_action = ?,
150
+ needs_user = ?, context_trace_id = ?, verification_status = ?,
151
+ verification_json = ?, completion_verdict = ?,
152
+ projection_version = CASE WHEN status = 'running' THEN projection_version ELSE 0 END,
153
+ projected_at = CASE WHEN status = 'running' THEN projected_at ELSE NULL END,
154
+ updated_at = ?
155
+ WHERE run_id = ?`).run(contract ? JSON.stringify(contract) : null, JSON.stringify(evidence), summary ?? null, nextAction ?? null, Number(needsUser), contextTraceId ?? null, verification.status, JSON.stringify({ checks: verification.checks }), completionVerdict ?? null, now, input.runId);
156
+ });
157
+ return getExecutionReceipt(input.runId);
158
+ }
159
+ function persistExecutionReceiptFeedback(runId, input) {
160
+ const now = input.now ?? Date.now();
161
+ runSqliteWriteTransaction((db) => {
162
+ db.prepare(`UPDATE execution_receipts
163
+ SET feedback_outcome = ?, feedback_reason = ?, needs_correction = ?, support_fit = ?, updated_at = ?
164
+ WHERE run_id = ?`).run(input.outcome, input.reason ?? null, input.needsCorrection === void 0 ? null : Number(input.needsCorrection), input.supportFit === void 0 ? null : Number(input.supportFit), now, runId);
165
+ });
166
+ return getExecutionReceipt(runId);
167
+ }
168
+ function setExecutionReceiptFeedback(input) {
169
+ const matched = findExecutionReceiptForAssistant(input.sessionKey, input.assistantTimestamp);
170
+ return matched ? persistExecutionReceiptFeedback(matched.runId, input) : void 0;
171
+ }
172
+ function setExecutionReceiptFeedbackByRunId(input) {
173
+ return getExecutionReceipt(input.runId) ? persistExecutionReceiptFeedback(input.runId, input) : void 0;
174
+ }
175
+ function getExecutionReceipt(runId) {
176
+ const row = getSqliteDatabase().prepare(`SELECT ${SELECT_COLUMNS} FROM execution_receipts WHERE run_id = ?`).get(runId);
177
+ return row ? fromRow(row) : void 0;
178
+ }
179
+ function findExecutionReceiptForAssistant(sessionKey, assistantTimestamp) {
180
+ const row = getSqliteDatabase().prepare(`SELECT ${SELECT_COLUMNS}
181
+ FROM execution_receipts
182
+ WHERE session_key = ?
183
+ AND started_at <= ?
184
+ ORDER BY started_at DESC
185
+ LIMIT 1`).get(sessionKey, assistantTimestamp);
186
+ return row ? fromRow(row) : void 0;
187
+ }
188
+ function listExecutionReceipts(input = {}) {
189
+ const limit = Math.max(1, Math.min(100, Math.floor(input.limit ?? 50)));
190
+ const filters = [];
191
+ const values = [];
192
+ if (input.outcomeId) {
193
+ filters.push("outcome_id = ?");
194
+ values.push(input.outcomeId);
195
+ }
196
+ if (input.sessionKey) {
197
+ filters.push("session_key = ?");
198
+ values.push(input.sessionKey);
199
+ }
200
+ if (input.projectId) {
201
+ filters.push("project_id = ?");
202
+ values.push(input.projectId);
203
+ }
204
+ if (input.workItemId) {
205
+ filters.push("work_item_id = ?");
206
+ values.push(input.workItemId);
207
+ }
208
+ const where = filters.length > 0 ? `WHERE ${filters.join(" AND ")}` : "";
209
+ return getSqliteDatabase().prepare(`SELECT ${SELECT_COLUMNS} FROM execution_receipts ${where} ORDER BY started_at DESC LIMIT ?`).all(...values, limit).map((row) => fromRow(row));
210
+ }
211
+ function summarizeExecutionReceipts() {
212
+ const row = getSqliteDatabase().prepare(`SELECT
213
+ COUNT(*) AS total,
214
+ SUM(CASE WHEN status != 'running' THEN 1 ELSE 0 END) AS completed,
215
+ SUM(CASE WHEN status = 'succeeded' THEN 1 ELSE 0 END) AS succeeded,
216
+ SUM(CASE WHEN verification_status = 'passed' THEN 1 ELSE 0 END) AS verified,
217
+ SUM(CASE WHEN feedback_outcome = 'helpful' THEN 1 ELSE 0 END) AS helpful,
218
+ SUM(CASE WHEN feedback_outcome = 'not_helpful' THEN 1 ELSE 0 END) AS not_helpful
219
+ FROM execution_receipts`).get();
220
+ const rated = row.helpful + row.not_helpful;
221
+ return {
222
+ total: row.total,
223
+ completed: row.completed,
224
+ succeeded: row.succeeded,
225
+ verified: row.verified,
226
+ helpful: row.helpful,
227
+ notHelpful: row.not_helpful,
228
+ completionRate: row.total ? row.completed / row.total : 0,
229
+ successRate: row.completed ? row.succeeded / row.completed : 0,
230
+ verificationRate: row.completed ? row.verified / row.completed : 0,
231
+ helpfulRate: rated ? row.helpful / rated : 0
232
+ };
233
+ }
234
+ //#endregion
235
+ export { completeExecutionReceipt, findExecutionReceiptForAssistant, getExecutionReceipt, listExecutionReceipts, listUnprojectedExecutionReceipts, markExecutionReceiptProjected, setExecutionReceiptFeedback, setExecutionReceiptFeedbackByRunId, setExecutionVerdict, startExecutionReceipt, summarizeExecutionReceipts, updateExecutionReceipt };
@@ -10,8 +10,9 @@ export { getUserClaim, linkUserClaimMemoryRecord, listUserClaimEvidence, listUse
10
10
  export { claimNextConnectorLearningJob, enqueueConnectorLearningJob, listConnectorLearningJobs, recoverStaleConnectorLearningJobs, setConnectorLearningPaused, updateConnectorLearningJob, type ConnectorLearningJob, type ConnectorLearningMode, type ConnectorLearningPhase, type ConnectorLearningStatus, } from './connector-learning-repository.js';
11
11
  export { appendComposerInputHistory, clearComposerInputHistory, listComposerInputHistory, COMPOSER_INPUT_HISTORY_LIMIT, type ComposerInputHistoryItem, } from './composer-input-history-repository.js';
12
12
  export { getInteractionState, setInteractionState, updateInteractionStateFromMessage, type InteractionState, } from './interaction-state-repository.js';
13
+ export { getSessionTaskPlan, setSessionTaskPlan, type SessionTaskPlan, type SessionTaskPlanItem, type SessionTaskPlanItemStatus, } from './session-task-plan-repository.js';
13
14
  export { buildRelationshipPrompt, getRelationshipSettings, isProactiveSupportAllowed, updateRelationshipSettings, type RelationshipSettings, type SupportMode, } from './relationship-settings-repository.js';
14
- export { completeTaskOutcome, findTaskOutcomeForAssistant, getTaskOutcome, listTaskOutcomes, setTaskOutcomeFeedback, startTaskOutcome, summarizeTaskOutcomes, updateTaskOutcome, type TaskContract, type TaskEvidence, type TaskFeedbackOutcome, type TaskOutcome, type TaskOutcomeMetrics, type TaskOutcomeStatus, } from './task-outcome-repository.js';
15
+ export { completeExecutionReceipt, findExecutionReceiptForAssistant, getExecutionReceipt, listExecutionReceipts, listUnprojectedExecutionReceipts, markExecutionReceiptProjected, setExecutionVerdict, setExecutionReceiptFeedback, setExecutionReceiptFeedbackByRunId, startExecutionReceipt, summarizeExecutionReceipts, updateExecutionReceipt, type ExecutionContract, type ExecutionVerdict, type ExecutionEvidence, type ExecutionFeedbackOutcome, type ExecutionReceipt, type ExecutionReceiptContext, type ExecutionReceiptMetrics, type ExecutionReceiptOrigin, type ExecutionReceiptStatus, type ExecutionReceiptTrigger, } from './execution-receipt-repository.js';
15
16
  export { buildDefaultSessionMetadata, type SessionMetadataSeed, } from './session-metadata.js';
16
17
  export { buildGlobalSessionStats, classifyStoredRow, estimateTokensFromMessages, extractFtsContent, metadataToSessionInsert, sessionConfigRowToConfig, sessionRowToMetadata, transcriptEntryRowToStoredRow, type SessionConfigRow, type SessionRow, type TranscriptEntryRow, } from './row-mappers.js';
17
18
  export { deleteSessionRecord, ensureSessionRecord, getCurrentSessionId, getGlobalSessionStats, findSessionKeyBySessionId, getSessionPersistedLevels, getSessionMetadata, incrementSessionStatsOnAppend, listSessionMetadata, listSessionsByAgent, patchSessionMetadata, resetSessionRecord, resolveSessionAgentId, updateSessionStats, } from './session-repository.js';
@@ -22,8 +23,9 @@ export { searchMemoryIndex, syncMemoryIndex, type MemorySearchHit, } from './mem
22
23
  export { appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, findLatestMemoryInjectTrace, getMemoryProviderState, getMemoryRecord, hasUnresolvedMemoryConflict, listMemorySignals, listMemoryTraceEvents, listMemoryRecords, markMemoryRecordsConflicted, searchMemoryRecords, setMemoryProviderState, setMemoryTraceFeedback, setLatestMemoryInjectFeedback, summarizeMemoryRecallFeedback, summarizeUserUnderstandingQuality, USER_UNDERSTANDING_REMEDIATION_POLICY, upsertMemoryRecord, type AppendMemorySignalInput, type AppendMemoryTraceEventInput, type FindLatestMemoryInjectTraceInput, type ListMemoryRecordsOptions, type MemoryRecallFeedbackSummary, type MemoryFeedbackRemediationResult, type MemorySignalRowPayload, type MemoryTraceFeedback, type MemoryTraceEventPayload, type UserUnderstandingQualityMetrics, type SearchMemoryRecordsOptions, type SetMemoryTraceFeedbackInput, type SetLatestMemoryInjectFeedbackInput, type UpsertMemoryRecordInput, } from './memory-records-repository.js';
23
24
  export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceItems, listKnowledgeSourceChanges, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeSourceItemSynthesisStatus, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, startKnowledgeSyncRun, upsertKnowledgeSourceItems, } from './knowledge-repository.js';
24
25
  export { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig, } from './config-repository.js';
25
- export { createObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent, } from './activity-repository.js';
26
+ export { createObjectLinkRecord, deleteObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent, } from './activity-repository.js';
26
27
  export { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getConnectorConnection, getConnectorApproval, getConnectorInstallation, getCachedConnectorCatalogEntry, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, type CachedConnectorCatalogEntry, } from './connector-repository.js';
28
+ export { getConnectorSyncPolicy, listConnectorSyncPolicies, upsertConnectorSyncPolicy, type ConnectorSyncPolicy, } from './connector-sync-policy-repository.js';
27
29
  export { getUserTrustPolicy, setUserTrustPolicy, } from './user-trust-repository.js';
28
30
  export { consumeMemoryReferenceConsent, decideMemoryReferenceConsent, ensureMemoryReferenceConsentRequest, hasMemoryReferenceConsent, listMemoryReferenceConsents, revokeMemoryReferenceConsent, type MemoryReferenceConsent, type MemoryReferenceGrantScope, } from './memory-reference-consent-repository.js';
29
31
  export { getUserProfilePromptState, setUserProfilePromptState, } from './user-profile-setup-repository.js';