@xopcai/xopc 0.0.174 → 0.0.176

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 (242) 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-CyEDJeIt.js → activity-store-DsFM1upC.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DF7Bol6I.js → agent-avatar-dicebear-DvdMLOga.js} +1 -1
  5. package/dist/gateway/static/root/assets/agents-BVjlpbeZ.js +2 -0
  6. package/dist/gateway/static/root/assets/{api-DYunqroX.js → api-BdPLCCBm.js} +1 -1
  7. package/dist/gateway/static/root/assets/{api-DwyUxpgY.js → api-Bop4IQRW.js} +1 -1
  8. package/dist/gateway/static/root/assets/{app-management-settings-panel-B4xJyvDu.js → app-management-settings-panel-DMLDOHul.js} +1 -1
  9. package/dist/gateway/static/root/assets/appearance-settings-DbI9foFR.js +1 -0
  10. package/dist/gateway/static/root/assets/apps-page-njqxLWYD.js +1 -0
  11. package/dist/gateway/static/root/assets/{archive-plugin-DWhBmmjD.js → archive-plugin-Dfdxuwvb.js} +1 -1
  12. package/dist/gateway/static/root/assets/{attachment-load-BOpZfa_I.js → attachment-load-Dn3RlnYD.js} +2 -2
  13. package/dist/gateway/static/root/assets/{attachment-preview-renderer-DonnL2dL.js → attachment-preview-renderer-Cmo-5BP5.js} +2 -2
  14. package/dist/gateway/static/root/assets/{attachment-process-heavy-RnGYy9bC.js → attachment-process-heavy-B2_kr5EA.js} +3 -3
  15. package/dist/gateway/static/root/assets/{automation-suggestion-card-Byu3I7Rs.js → automation-suggestion-card-Bc0Y7A9u.js} +1 -1
  16. package/dist/gateway/static/root/assets/automations-page-D-eweHZJ.js +6 -0
  17. package/dist/gateway/static/root/assets/{binary-plugins-6AG1qatz.js → binary-plugins-0XtB-xC0.js} +2 -2
  18. package/dist/gateway/static/root/assets/{block-editor-CJhrn98_.js → block-editor-C4fXWbEE.js} +6 -6
  19. package/dist/gateway/static/root/assets/browser-settings-page-lC86-drr.js +8 -0
  20. package/dist/gateway/static/root/assets/{browser-workflow-inputs-CBVb4mt9.js → browser-workflow-inputs-CZmzNymN.js} +1 -1
  21. package/dist/gateway/static/root/assets/{browser-workflows-page-Cq4XUKbu.js → browser-workflows-page-CBYM9HqG.js} +2 -2
  22. package/dist/gateway/static/root/assets/capabilities-settings-panel-6tYNfHqJ.js +7 -0
  23. package/dist/gateway/static/root/assets/{capability-presets-api-hbW4NAKO.js → capability-presets-api-BiJxmmhW.js} +1 -1
  24. package/dist/gateway/static/root/assets/capability-presets-settings-panel-Co-ymbd9.js +1 -0
  25. package/dist/gateway/static/root/assets/{channel-recipient-api-CzMjHb17.js → channel-recipient-api-BKTUZDp-.js} +1 -1
  26. package/dist/gateway/static/root/assets/channels-settings-D46eVjaQ.js +1 -0
  27. package/dist/gateway/static/root/assets/channels-status-swr-BMRAO4zZ.js +1 -0
  28. package/dist/gateway/static/root/assets/{connector-logo-B9Au6gMZ.js → connector-logo-Pr4RIKjj.js} +1 -1
  29. package/dist/gateway/static/root/assets/connectors-page-Dw1eYbRi.js +2 -0
  30. package/dist/gateway/static/root/assets/desktop-pet-B8cZuQUt.js +1 -0
  31. package/dist/gateway/static/root/assets/{desktop-pet-settings-CNff5TFb.js → desktop-pet-settings-CEQacUDF.js} +1 -1
  32. package/dist/gateway/static/root/assets/{directory-picker-path-field-Bf956uo-.js → directory-picker-path-field-DWnxdZtc.js} +1 -1
  33. package/dist/gateway/static/root/assets/{dreaming-settings-CHM8FE1g.js → dreaming-settings-D2e2w2Ho.js} +3 -3
  34. package/dist/gateway/static/root/assets/{extension-debug-page-ZqM_0eUs.js → extension-debug-page-BLjTGbv3.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-page-D4hvXOMM.js → extension-page-D2_UC6hy.js} +1 -1
  36. package/dist/gateway/static/root/assets/{extension-settings-page-GsqxaJjA.js → extension-settings-page-BsH6o_PX.js} +1 -1
  37. package/dist/gateway/static/root/assets/{focus-detail-page-CE6uwrl1.js → focus-detail-page-BBXUtxRB.js} +1 -1
  38. package/dist/gateway/static/root/assets/{gateway-config-api-B4THmgnS.js → gateway-config-api-C-DkC6UJ.js} +1 -1
  39. package/dist/gateway/static/root/assets/{gateway-settings-CPv-MxGE.js → gateway-settings-DEOGiimF.js} +1 -1
  40. package/dist/gateway/static/root/assets/{gateway-startup-retry-MP3K71pP.js → gateway-startup-retry-BlSLh1TF.js} +1 -1
  41. package/dist/gateway/static/root/assets/goal-create-dialog-CSFcRE_N.js +1 -0
  42. package/dist/gateway/static/root/assets/goal-detail-page-VjRArfAJ.js +4 -0
  43. package/dist/gateway/static/root/assets/{goals-config-api-DCcDuIjG.js → goals-config-api-CcdS9qek.js} +1 -1
  44. package/dist/gateway/static/root/assets/goals-page-BAcErdch.js +2 -0
  45. package/dist/gateway/static/root/assets/{goals-settings-o9QMXvNq.js → goals-settings-BY7crl0z.js} +1 -1
  46. package/dist/gateway/static/root/assets/{heartbeat-settings-DixwpXnH.js → heartbeat-settings-DtTkS0gs.js} +1 -1
  47. package/dist/gateway/static/root/assets/{image-generation-api-BOGH9FGi.js → image-generation-api-WGgkbwDZ.js} +1 -1
  48. package/dist/gateway/static/root/assets/index-2UImfRDC.js +212 -0
  49. package/dist/gateway/static/root/assets/index-CS9sVShT.css +1 -0
  50. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-D4o4ZPF6.js → keyboard-shortcuts-settings-C5lpWQ3f.js} +1 -1
  51. package/dist/gateway/static/root/assets/local-app-workbench-page-Cl0fcPL4.js +2 -0
  52. package/dist/gateway/static/root/assets/{local-apps-page-GzMmpO7G.js → local-apps-page-b05wWvXG.js} +1 -1
  53. package/dist/gateway/static/root/assets/{locale-store-CAuhEGCn.js → locale-store-sToMfHX_.js} +1 -1
  54. package/dist/gateway/static/root/assets/logs-page-cDE1jLJv.js +7 -0
  55. package/dist/gateway/static/root/assets/{markdown-split-CIX8D1pv.js → markdown-split-0gPVst5y.js} +1 -1
  56. package/dist/gateway/static/root/assets/{media-plugins-Bp3eIA45.js → media-plugins-Rxyq_KTm.js} +1 -1
  57. package/dist/gateway/static/root/assets/messages-CarlxqXV.js +3 -0
  58. package/dist/gateway/static/root/assets/{notes-page-RVFiYAoO.js → notes-page-DRhNDl_Q.js} +1 -1
  59. package/dist/gateway/static/root/assets/notes-workbench-BKNBk0Uf.js +4 -0
  60. package/dist/gateway/static/root/assets/{page-tabs-BGAYH3Ef.js → page-tabs-cOEOQqHh.js} +1 -1
  61. package/dist/gateway/static/root/assets/pdf-D4PI9qAw.js +54 -0
  62. package/dist/gateway/static/root/assets/pdf.worker.min-CHFwMXne.mjs +29 -0
  63. package/dist/gateway/static/root/assets/{preview-open-alternatives-BM6pDkHp.js → preview-open-alternatives-BopOLFvu.js} +1 -1
  64. package/dist/gateway/static/root/assets/{product-open-page-BiMetEmn.js → product-open-page-DWVPmmOq.js} +1 -1
  65. package/dist/gateway/static/root/assets/project-detail-page-BhjEXNQW.js +1 -0
  66. package/dist/gateway/static/root/assets/projects-page-B80e69PH.js +1 -0
  67. package/dist/gateway/static/root/assets/remote-access-hub-CwdVob6H.js +1 -0
  68. package/dist/gateway/static/root/assets/{save-bar-controls-BdjV8MK5.js → save-bar-controls-BfZmKe1t.js} +1 -1
  69. package/dist/gateway/static/root/assets/{schedule-field-ChlqXU46.js → schedule-field-Cpi4jCRV.js} +1 -1
  70. package/dist/gateway/static/root/assets/{schema-form-DDKf5ZSH.js → schema-form-OXFkcZQe.js} +1 -1
  71. package/dist/gateway/static/root/assets/sessions-page-BGt3Asj6.js +1 -0
  72. package/dist/gateway/static/root/assets/settings-advanced-gate-BnTdM9Nn.js +1 -0
  73. package/dist/gateway/static/root/assets/{settings-form-section-CPG0KGVs.js → settings-form-section-BwqkZCHJ.js} +1 -1
  74. package/dist/gateway/static/root/assets/{settings-loading-skeleton-DRSDHucM.js → settings-loading-skeleton-BbqH_S3Y.js} +1 -1
  75. package/dist/gateway/static/root/assets/{settings-page-CeB7_xD0.js → settings-page-BoxC-JSa.js} +1 -1
  76. package/dist/gateway/static/root/assets/{settings-page-layout-BENrkwd0.js → settings-page-layout-Ddu2iGaW.js} +1 -1
  77. package/dist/gateway/static/root/assets/setup-status-panel-z1Lwv0js.js +1 -0
  78. package/dist/gateway/static/root/assets/{share-preview-page-DIzczJkG.js → share-preview-page-CVazOFjy.js} +2 -2
  79. package/dist/gateway/static/root/assets/shares-settings-C4lXuyQj.js +1 -0
  80. package/dist/gateway/static/root/assets/skill-reload-api-DSuIDkeI.js +1 -0
  81. package/dist/gateway/static/root/assets/skills-page-xgZczqVe.js +2 -0
  82. package/dist/gateway/static/root/assets/skills-page.utils-DgyB1tSo.js +1 -0
  83. package/dist/gateway/static/root/assets/{system-settings-panel-Dp4d5Q1B.js → system-settings-panel-BoLSQL65.js} +1 -1
  84. package/dist/gateway/static/root/assets/{theme-store-CbGc1laW.js → theme-store-CBNcGOfj.js} +1 -1
  85. package/dist/gateway/static/root/assets/time-picker-gochWrny.js +1 -0
  86. package/dist/gateway/static/root/assets/{typed-models-lib-DwPk3OPL.js → typed-models-lib-DvRnr7YB.js} +1 -1
  87. package/dist/gateway/static/root/assets/{use-channel-catalog-CXrEu2dw.js → use-channel-catalog-CA9BFVB7.js} +1 -1
  88. package/dist/gateway/static/root/assets/user-context-page-CEfIy4WZ.js +1 -0
  89. package/dist/gateway/static/root/assets/{voice-api-key-field-DFoA79LB.js → voice-api-key-field-v8tgylEZ.js} +1 -1
  90. package/dist/gateway/static/root/assets/work-discovery-page-B-3MClaf.js +1 -0
  91. package/dist/gateway/static/root/assets/work-item-detail-page-CEsFEdax.js +1 -0
  92. package/dist/gateway/static/root/assets/work-page-CT9AHnq6.js +3 -0
  93. package/dist/gateway/static/root/assets/workflow-run-setup-panel-CC3cJn5k.js +3 -0
  94. package/dist/gateway/static/root/assets/workflows-page-C-1-_Zp1.js +11 -0
  95. package/dist/gateway/static/root/index.html +7 -7
  96. package/dist/package.js +1 -1
  97. package/dist/src/agent/agent-manager.js +8 -8
  98. package/dist/src/agent/context/execution-scope.d.ts +26 -0
  99. package/dist/src/agent/context/execution-scope.js +84 -0
  100. package/dist/src/agent/context/project-context.d.ts +3 -1
  101. package/dist/src/agent/context/project-context.js +26 -8
  102. package/dist/src/agent/embedded/model-runtime.d.ts +1 -2
  103. package/dist/src/agent/embedded/model-runtime.js +17 -29
  104. package/dist/src/agent/embedded/session-runner.js +2 -3
  105. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  106. package/dist/src/agent/prompt/service-prompt-builder.js +1 -0
  107. package/dist/src/agent/prompt/system-prompt.js +1 -1
  108. package/dist/src/agent/service/process-direct-streaming.js +7 -4
  109. package/dist/src/agent/service.js +1 -1
  110. package/dist/src/agent/session/session-config-service.d.ts +4 -1
  111. package/dist/src/agent/session/session-config-service.js +5 -3
  112. package/dist/src/agent/session/session-inspector.d.ts +6 -0
  113. package/dist/src/agent/session/session-inspector.js +9 -2
  114. package/dist/src/agent/skills/hub-pull.js +1 -1
  115. package/dist/src/agent/skills/index.d.ts +2 -0
  116. package/dist/src/agent/skills/index.js +14 -5
  117. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +1 -1
  118. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  119. package/dist/src/agent/skills/test-framework.js +1 -1
  120. package/dist/src/agent/workflow/subagent-runner.js +2 -0
  121. package/dist/src/agent/workflow/types.d.ts +1 -0
  122. package/dist/src/auth/model-credential-store.d.ts +17 -0
  123. package/dist/src/auth/model-credential-store.js +110 -0
  124. package/dist/src/auth/oauth/github-copilot.js +2 -2
  125. package/dist/src/auth/oauth/openai-codex.js +98 -7
  126. package/dist/src/auth/oauth/types.d.ts +4 -1
  127. package/dist/src/auth/oauth/xopc-cloud.js +124 -6
  128. package/dist/src/automations/domain/defaults.d.ts +1 -0
  129. package/dist/src/automations/domain/defaults.js +4 -0
  130. package/dist/src/automations/domain/index.d.ts +1 -0
  131. package/dist/src/automations/domain/index.js +2 -1
  132. package/dist/src/automations/index.js +2 -1
  133. package/dist/src/automations/service/action-executor.js +2 -2
  134. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  135. package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
  136. package/dist/src/cli/commands/skills.js +1 -1
  137. package/dist/src/cli/commands/update.js +1 -1
  138. package/dist/src/config/agent-profile.js +1 -1
  139. package/dist/src/config/index.js +2 -2
  140. package/dist/src/config/schema.d.ts +21 -0
  141. package/dist/src/config/schema.js +12 -2
  142. package/dist/src/gateway/agents-admin.js +1 -1
  143. package/dist/src/gateway/heartbeat/service.js +1 -1
  144. package/dist/src/gateway/hono/lib/config-payload.d.ts +3 -0
  145. package/dist/src/gateway/hono/lib/config-payload.js +1 -0
  146. package/dist/src/gateway/hono/oauth-async.d.ts +5 -0
  147. package/dist/src/gateway/hono/oauth-async.js +20 -8
  148. package/dist/src/gateway/hono/routes/config-patch/gateway.d.ts +1 -1
  149. package/dist/src/gateway/hono/routes/config-patch/gateway.js +9 -0
  150. package/dist/src/gateway/hono/routes/goals.js +13 -0
  151. package/dist/src/gateway/hono/routes/home.d.ts +16 -3
  152. package/dist/src/gateway/hono/routes/home.js +98 -25
  153. package/dist/src/gateway/hono/routes/index.js +2 -0
  154. package/dist/src/gateway/hono/routes/local-apps.js +1 -1
  155. package/dist/src/gateway/hono/routes/project-skills.d.ts +3 -0
  156. package/dist/src/gateway/hono/routes/project-skills.js +119 -0
  157. package/dist/src/gateway/hono/routes/update.js +2 -2
  158. package/dist/src/gateway/index.js +1 -1
  159. package/dist/src/gateway/run-loop.js +1 -1
  160. package/dist/src/gateway/service/sessions-api.d.ts +2 -1
  161. package/dist/src/gateway/service.js +5 -5
  162. package/dist/src/heartbeat/index.js +1 -1
  163. package/dist/src/infra/gateway-processes.js +1 -1
  164. package/dist/src/infra/update-restart.js +1 -1
  165. package/dist/src/infra/update-runner.js +2 -2
  166. package/dist/src/infra/update-startup.js +1 -1
  167. package/dist/src/mcp/channel-bridge.js +1 -1
  168. package/dist/src/projects/index.d.ts +1 -0
  169. package/dist/src/projects/index.js +2 -1
  170. package/dist/src/projects/project-skill-service.d.ts +67 -0
  171. package/dist/src/projects/project-skill-service.js +131 -0
  172. package/dist/src/providers/index.js +4 -2
  173. package/dist/src/providers/provider-auth-service.d.ts +22 -0
  174. package/dist/src/providers/provider-auth-service.js +66 -0
  175. package/dist/src/providers/register-runtime-providers.d.ts +6 -0
  176. package/dist/src/providers/register-runtime-providers.js +55 -0
  177. package/dist/src/providers/xopc-cloud-account-service.d.ts +2 -2
  178. package/dist/src/providers/xopc-cloud-account-service.js +6 -5
  179. package/dist/src/providers/xopc-cloud-config.d.ts +3 -0
  180. package/dist/src/providers/xopc-cloud-config.js +13 -0
  181. package/dist/src/providers/xopc-cloud-model-source.d.ts +2 -2
  182. package/dist/src/providers/xopc-cloud-model-source.js +6 -5
  183. package/dist/src/session/index.d.ts +1 -1
  184. package/dist/src/session/index.js +2 -2
  185. package/dist/src/session/thinking-resolve.d.ts +8 -0
  186. package/dist/src/session/thinking-resolve.js +6 -3
  187. package/dist/src/storage/sqlite/home-attention-repository.d.ts +3 -0
  188. package/dist/src/storage/sqlite/home-attention-repository.js +21 -0
  189. package/dist/src/storage/sqlite/index.d.ts +1 -0
  190. package/dist/src/storage/sqlite/index.js +2 -1
  191. package/dist/src/storage/sqlite/migrations/067_home_attention_acknowledgements.sql +9 -0
  192. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  193. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  194. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  195. package/dist/src/storage/sqlite/schema.js +1 -1
  196. package/dist/src/storage/sqlite/schema.sql +10 -0
  197. package/dist/src/tui/tui-startup-resources.js +1 -1
  198. package/dist/src/tui/tui.js +2 -2
  199. package/dist/src/tui/xopc-tui-keybindings.d.ts +44 -4
  200. package/dist/src/workflows/engine/workflow-engine.d.ts +1 -0
  201. package/dist/src/workflows/engine/workflow-engine.js +2 -0
  202. package/dist/src/workflows/service/workflow-run-service.js +11 -5
  203. package/dist/src/workflows/service/workflow-session-bridge.js +2 -1
  204. package/package.json +5 -5
  205. package/dist/gateway/static/root/assets/agents-BVxEFPQ5.js +0 -2
  206. package/dist/gateway/static/root/assets/appearance-settings-B2PQxRiu.js +0 -1
  207. package/dist/gateway/static/root/assets/apps-page-BtIgd82S.js +0 -1
  208. package/dist/gateway/static/root/assets/automations-page-CG_SCH5b.js +0 -6
  209. package/dist/gateway/static/root/assets/browser-settings-page-CfLqPWZC.js +0 -8
  210. package/dist/gateway/static/root/assets/capabilities-settings-panel-DCJmm6cR.js +0 -7
  211. package/dist/gateway/static/root/assets/capability-presets-settings-panel-CnkAYvWI.js +0 -1
  212. package/dist/gateway/static/root/assets/channels-settings-DtqqFpDn.js +0 -1
  213. package/dist/gateway/static/root/assets/channels-status-swr-C-5yHbc0.js +0 -1
  214. package/dist/gateway/static/root/assets/connectors-page-CaHfs8YF.js +0 -2
  215. package/dist/gateway/static/root/assets/desktop-pet-CvFMKYdb.js +0 -1
  216. package/dist/gateway/static/root/assets/goal-create-dialog-DAeb82xP.js +0 -1
  217. package/dist/gateway/static/root/assets/goal-detail-page-CwLSp01r.js +0 -4
  218. package/dist/gateway/static/root/assets/goals-page-DvJQ6_4M.js +0 -2
  219. package/dist/gateway/static/root/assets/index-CfXiRNN5.css +0 -1
  220. package/dist/gateway/static/root/assets/index-eyttVNS_.js +0 -212
  221. package/dist/gateway/static/root/assets/local-app-workbench-page-CPcfqn_A.js +0 -2
  222. package/dist/gateway/static/root/assets/logs-page-DXABWCZp.js +0 -7
  223. package/dist/gateway/static/root/assets/messages-BiBdO1-O.js +0 -3
  224. package/dist/gateway/static/root/assets/notes-workbench-DgJzZRX3.js +0 -4
  225. package/dist/gateway/static/root/assets/pdf-epILhEOn.js +0 -54
  226. package/dist/gateway/static/root/assets/pdf.worker.min-iDqQPrd3.mjs +0 -31
  227. package/dist/gateway/static/root/assets/project-detail-page-DF7F70Vg.js +0 -1
  228. package/dist/gateway/static/root/assets/projects-page-Cw3jyi5s.js +0 -1
  229. package/dist/gateway/static/root/assets/remote-access-hub-ChAJsaNY.js +0 -1
  230. package/dist/gateway/static/root/assets/sessions-page-BxZIxt7z.js +0 -1
  231. package/dist/gateway/static/root/assets/settings-advanced-gate-DcDLS0xV.js +0 -1
  232. package/dist/gateway/static/root/assets/setup-status-panel-4Xa9NA7v.js +0 -1
  233. package/dist/gateway/static/root/assets/shares-settings-BpN0o5Cf.js +0 -1
  234. package/dist/gateway/static/root/assets/skill-reload-api-DvF2UAaL.js +0 -1
  235. package/dist/gateway/static/root/assets/skills-page-CGKXpNfy.js +0 -2
  236. package/dist/gateway/static/root/assets/time-picker-BhgCeDuO.js +0 -1
  237. package/dist/gateway/static/root/assets/user-context-page-Dy_fKAK_.js +0 -1
  238. package/dist/gateway/static/root/assets/work-discovery-page-BWkjb1NK.js +0 -1
  239. package/dist/gateway/static/root/assets/work-item-detail-page-DLBNFse5.js +0 -1
  240. package/dist/gateway/static/root/assets/work-page-Bn5RXMIE.js +0 -1
  241. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BuniGPO0.js +0 -3
  242. package/dist/gateway/static/root/assets/workflows-page-_vFhRrAl.js +0 -11
@@ -0,0 +1,55 @@
1
+ import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ import { getOAuthProviderDefinition, init_registry } from "../auth/oauth/registry.js";
3
+ import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-store.js";
4
+ import { XOPC_CLOUD_PROVIDER_ID, init_xopc_cloud_config, resolveXopcModelRouterUrl } from "./xopc-cloud-config.js";
5
+ //#region src/providers/register-runtime-providers.ts
6
+ function registerRuntimeProvider(modelRuntime, source) {
7
+ const oauthDefinition = getOAuthProviderDefinition(source.providerId);
8
+ const oauth = oauthDefinition?.oauthOnly ? {
9
+ name: oauthDefinition.displayName,
10
+ login: oauthDefinition.provider.login.bind(oauthDefinition.provider),
11
+ refreshToken: oauthDefinition.provider.refreshToken.bind(oauthDefinition.provider),
12
+ getApiKey: oauthDefinition.provider.getApiKey.bind(oauthDefinition.provider)
13
+ } : void 0;
14
+ modelRuntime.registerProvider(source.providerId, {
15
+ name: oauthDefinition?.displayName ?? source.providerId,
16
+ baseUrl: source.baseUrl,
17
+ api: source.api,
18
+ oauth,
19
+ models: source.models.filter((model) => model.availability === "available").map((model) => ({
20
+ id: model.id,
21
+ name: model.name,
22
+ reasoning: false,
23
+ input: ["text"],
24
+ cost: {
25
+ input: 0,
26
+ output: 0,
27
+ cacheRead: 0,
28
+ cacheWrite: 0
29
+ },
30
+ contextWindow: 128e3,
31
+ maxTokens: model.maxOutputTokens ?? 16384
32
+ }))
33
+ });
34
+ }
35
+ /** Register dynamically discovered model providers, including their OAuth contract. */
36
+ function registerRuntimeProviders(modelRuntime, catalog = getModelCatalogStore().load()) {
37
+ for (const source of Object.values(catalog.sources)) registerRuntimeProvider(modelRuntime, source);
38
+ if (!catalog.sources["xopc-cloud"]) registerRuntimeProvider(modelRuntime, {
39
+ providerId: XOPC_CLOUD_PROVIDER_ID,
40
+ baseUrl: resolveXopcModelRouterUrl(),
41
+ api: "openai-completions",
42
+ etag: null,
43
+ recommendedModel: null,
44
+ lastSuccessAt: 0,
45
+ models: []
46
+ });
47
+ }
48
+ var init_register_runtime_providers = __esmMin((() => {
49
+ init_registry();
50
+ init_model_catalog_store();
51
+ init_xopc_cloud_config();
52
+ }));
53
+ //#endregion
54
+ init_register_runtime_providers();
55
+ export { init_register_runtime_providers, registerRuntimeProviders };
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { type CredentialResolver } from '../auth/credentials.js';
2
+ import { type ProviderAuthService } from './provider-auth-service.js';
3
3
  declare const accountSummarySchema: z.ZodObject<{
4
4
  balance: z.ZodObject<{
5
5
  credits: z.ZodNumber;
@@ -33,7 +33,7 @@ export declare class XopcCloudAccountService {
33
33
  constructor(options?: {
34
34
  fetchImpl?: typeof fetch;
35
35
  routerUrl?: string;
36
- credentials?: Pick<CredentialResolver, 'resolveApiKey'>;
36
+ credentials?: Pick<ProviderAuthService, 'resolveApiKey'>;
37
37
  });
38
38
  getSummary(days?: 1 | 7 | 30): Promise<XopcCloudAccountSummary | null>;
39
39
  }
@@ -1,8 +1,9 @@
1
- import { getCredentialResolver, init_credentials } from "../auth/credentials.js";
1
+ import { init_xopc_cloud_config, resolveXopcModelRouterUrl } from "./xopc-cloud-config.js";
2
+ import { getProviderAuthService, init_provider_auth_service } from "./provider-auth-service.js";
2
3
  import { z } from "zod";
3
4
  //#region src/providers/xopc-cloud-account-service.ts
4
- init_credentials();
5
- const DEFAULT_ROUTER_URL = "https://router.xopc.ai/v1";
5
+ init_provider_auth_service();
6
+ init_xopc_cloud_config();
6
7
  const accountSummarySchema = z.object({
7
8
  balance: z.object({
8
9
  credits: z.number().int().nonnegative(),
@@ -41,8 +42,8 @@ var XopcCloudAccountService = class {
41
42
  credentials;
42
43
  constructor(options = {}) {
43
44
  this.fetchImpl = options.fetchImpl ?? fetch;
44
- this.routerUrl = (options.routerUrl ?? process.env.XOPC_MODEL_ROUTER_URL ?? DEFAULT_ROUTER_URL).replace(/\/+$/, "");
45
- this.credentials = options.credentials ?? getCredentialResolver();
45
+ this.routerUrl = resolveXopcModelRouterUrl(options.routerUrl);
46
+ this.credentials = options.credentials ?? getProviderAuthService();
46
47
  }
47
48
  async getSummary(days = 7) {
48
49
  const accessToken = await this.credentials.resolveApiKey("xopc-cloud");
@@ -0,0 +1,3 @@
1
+ export declare const XOPC_CLOUD_PROVIDER_ID = "xopc-cloud";
2
+ export declare const DEFAULT_XOPC_MODEL_ROUTER_URL = "https://router.xopc.ai/v1";
3
+ export declare function resolveXopcModelRouterUrl(override?: string): string;
@@ -0,0 +1,13 @@
1
+ import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ //#region src/providers/xopc-cloud-config.ts
3
+ function resolveXopcModelRouterUrl(override) {
4
+ return (override ?? process.env.XOPC_MODEL_ROUTER_URL ?? "https://router.xopc.ai/v1").replace(/\/+$/, "");
5
+ }
6
+ var XOPC_CLOUD_PROVIDER_ID, DEFAULT_XOPC_MODEL_ROUTER_URL;
7
+ var init_xopc_cloud_config = __esmMin((() => {
8
+ XOPC_CLOUD_PROVIDER_ID = "xopc-cloud";
9
+ DEFAULT_XOPC_MODEL_ROUTER_URL = "https://router.xopc.ai/v1";
10
+ }));
11
+ //#endregion
12
+ init_xopc_cloud_config();
13
+ export { DEFAULT_XOPC_MODEL_ROUTER_URL, XOPC_CLOUD_PROVIDER_ID, init_xopc_cloud_config, resolveXopcModelRouterUrl };
@@ -1,5 +1,5 @@
1
- import { type CredentialResolver } from '../auth/credentials.js';
2
1
  import { type ModelCatalogStore } from './model-catalog-store.js';
2
+ import { type ProviderAuthService } from './provider-auth-service.js';
3
3
  export type XopcCloudModelRefreshResult = {
4
4
  status: 'skipped';
5
5
  reason: 'not_configured';
@@ -22,7 +22,7 @@ export declare class XopcCloudModelSource {
22
22
  constructor(options?: {
23
23
  fetchImpl?: typeof fetch;
24
24
  routerUrl?: string;
25
- credentials?: Pick<CredentialResolver, 'resolveApiKey'>;
25
+ credentials?: Pick<ProviderAuthService, 'resolveApiKey'>;
26
26
  catalogStore?: ModelCatalogStore;
27
27
  refreshModels?: () => void;
28
28
  });
@@ -1,11 +1,12 @@
1
1
  import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-store.js";
2
2
  import { getModelRegistry, init_model_registry } from "./model-registry.js";
3
- import { getCredentialResolver, init_credentials } from "../auth/credentials.js";
3
+ import { init_xopc_cloud_config, resolveXopcModelRouterUrl } from "./xopc-cloud-config.js";
4
+ import { getProviderAuthService, init_provider_auth_service } from "./provider-auth-service.js";
4
5
  //#region src/providers/xopc-cloud-model-source.ts
5
- init_credentials();
6
6
  init_model_catalog_store();
7
7
  init_model_registry();
8
- const DEFAULT_ROUTER_URL = "https://router.xopc.ai/v1";
8
+ init_provider_auth_service();
9
+ init_xopc_cloud_config();
9
10
  var XopcCloudModelError = class extends Error {
10
11
  constructor(message, status, code) {
11
12
  super(message);
@@ -22,8 +23,8 @@ var XopcCloudModelSource = class {
22
23
  refreshModels;
23
24
  constructor(options = {}) {
24
25
  this.fetchImpl = options.fetchImpl ?? fetch;
25
- this.routerUrl = (options.routerUrl ?? process.env.XOPC_MODEL_ROUTER_URL ?? DEFAULT_ROUTER_URL).replace(/\/+$/, "");
26
- this.credentials = options.credentials ?? getCredentialResolver();
26
+ this.routerUrl = resolveXopcModelRouterUrl(options.routerUrl);
27
+ this.credentials = options.credentials ?? getProviderAuthService();
27
28
  this.catalogStore = options.catalogStore ?? getModelCatalogStore();
28
29
  this.refreshModels = options.refreshModels ?? (() => getModelRegistry().refresh());
29
30
  }
@@ -3,7 +3,7 @@ export { onSessionTranscriptUpdate, emitSessionTranscriptUpdate, type SessionTra
3
3
  export { SessionStore } from './store.js';
4
4
  export type { SessionStoreOptions } from './store.js';
5
5
  export { SessionConfigStore, resolveThinkingLevel, resolveReasoningLevel, resolveVerboseLevel } from './config-store.js';
6
- export { resolveEffectiveThinkingLevel, resolveEffectiveReasoningLevel } from './thinking-resolve.js';
6
+ export { DEFAULT_ACTIVITY_DETAIL_LEVEL, resolveConfiguredActivityDetailDefault, resolveEffectiveThinkingLevel, resolveEffectiveReasoningLevel, } from './thinking-resolve.js';
7
7
  export type { SessionAgentConfig } from './config-types.js';
8
8
  export { normalizeWorkingDirectoryInput, effectiveWorkspacePathForSession, projectWorkspacePath, } from './session-workspace.js';
9
9
  export { SessionStatus, type SessionMetadata, type SessionDetail, type SessionListQuery, type PaginatedResult, type SessionStats, type ExportFormat, type SessionExport, type SessionTranscriptSummary, type CompactionBoundarySummary, } from './types.js';
@@ -8,7 +8,7 @@ import { SessionStore } from "./store.js";
8
8
  import { applySessionPatchToMetadata } from "./patch-metadata.js";
9
9
  import { SessionIndex } from "./manager.js";
10
10
  import { SessionConfigStore, resolveReasoningLevel, resolveThinkingLevel, resolveVerboseLevel } from "./config-store.js";
11
- import { resolveEffectiveReasoningLevel, resolveEffectiveThinkingLevel } from "./thinking-resolve.js";
11
+ import { DEFAULT_ACTIVITY_DETAIL_LEVEL, resolveConfiguredActivityDetailDefault, resolveEffectiveReasoningLevel, resolveEffectiveThinkingLevel } from "./thinking-resolve.js";
12
12
  import { shouldSkipWebchatInboundByAbortCutoff } from "./abort-cutoff.js";
13
13
  import { DEFAULT_IDLE_MINUTES, DEFAULT_RESET_AT_HOUR, DEFAULT_RESET_MODE, evaluateSessionFreshness, resolveDailyResetAtMs, resolveSessionResetPolicy } from "./reset-policy.js";
14
14
  import { resolveChannelResetConfig, resolveSessionResetType } from "./reset-type.js";
@@ -17,4 +17,4 @@ import { resolveSession, resolveSessionKeyForRequest } from "./resolve-session.j
17
17
  import { DEFAULT_RESET_TRIGGERS, RESET_OVERLAP_COMMANDS, bareResetAckMessage, matchResetTriggers, resolveResetTriggers, shouldSkipResetOverlapCommand, stripLeadingEnvelopeTimestamp } from "./reset-triggers.js";
18
18
  import { initSessionTurn } from "./init-session-turn.js";
19
19
  import { CURRENT_SESSION_TRANSCRIPT_VERSION, XOPC_SESSION_TRANSCRIPT_TYPE } from "./transcript-format.js";
20
- export { CURRENT_SESSION_TRANSCRIPT_VERSION, DEFAULT_IDLE_MINUTES, DEFAULT_RESET_AT_HOUR, DEFAULT_RESET_MODE, DEFAULT_RESET_TRIGGERS, RESET_OVERLAP_COMMANDS, SessionConfigStore, SessionIndex, SessionStatus, SessionStore, XOPC_SESSION_TRANSCRIPT_TYPE, applySessionPatchToMetadata, bareResetAckMessage, buildSessionContextForLlm, effectiveWorkspacePathForSession, emitSessionTranscriptUpdate, evaluateSessionFreshness, fallbackTitleFromMessages, flattenMessageContent, generateSessionTitleFromMessages, getSessionTitleSource, initSessionTurn, isTranscriptContextEntry, isWebchatSessionKey, matchResetTriggers, maybeRefineSessionTitleWithLlm, maybeSetProvisionalSessionTitle, mergeLlmMessagesPreservingContextRows, messagesToClientHistory, normalizeWorkingDirectoryInput, onSessionTranscriptUpdate, projectWorkspacePath, provisionalTitleFromUserText, resolveChannelResetConfig, resolveDailyResetAtMs, resolveEffectiveReasoningLevel, resolveEffectiveThinkingLevel, resolveReasoningLevel, resolveResetTriggers, resolveSession, resolveSessionKeyForRequest, resolveSessionLifecycleTimestamps, resolveSessionResetPolicy, resolveSessionResetType, resolveThinkingLevel, resolveVerboseLevel, sanitizeGeneratedSessionTitle, sanitizeSessionTitle, shouldAutoTitleSessionKey, shouldRefineSessionTitleWithLlm, shouldSkipResetOverlapCommand, shouldSkipWebchatInboundByAbortCutoff, stripLeadingEnvelopeTimestamp, transcriptRowsFromJsonArray };
20
+ export { CURRENT_SESSION_TRANSCRIPT_VERSION, DEFAULT_ACTIVITY_DETAIL_LEVEL, DEFAULT_IDLE_MINUTES, DEFAULT_RESET_AT_HOUR, DEFAULT_RESET_MODE, DEFAULT_RESET_TRIGGERS, RESET_OVERLAP_COMMANDS, SessionConfigStore, SessionIndex, SessionStatus, SessionStore, XOPC_SESSION_TRANSCRIPT_TYPE, applySessionPatchToMetadata, bareResetAckMessage, buildSessionContextForLlm, effectiveWorkspacePathForSession, emitSessionTranscriptUpdate, evaluateSessionFreshness, fallbackTitleFromMessages, flattenMessageContent, generateSessionTitleFromMessages, getSessionTitleSource, initSessionTurn, isTranscriptContextEntry, isWebchatSessionKey, matchResetTriggers, maybeRefineSessionTitleWithLlm, maybeSetProvisionalSessionTitle, mergeLlmMessagesPreservingContextRows, messagesToClientHistory, normalizeWorkingDirectoryInput, onSessionTranscriptUpdate, projectWorkspacePath, provisionalTitleFromUserText, resolveChannelResetConfig, resolveConfiguredActivityDetailDefault, resolveDailyResetAtMs, resolveEffectiveReasoningLevel, resolveEffectiveThinkingLevel, resolveReasoningLevel, resolveResetTriggers, resolveSession, resolveSessionKeyForRequest, resolveSessionLifecycleTimestamps, resolveSessionResetPolicy, resolveSessionResetType, resolveThinkingLevel, resolveVerboseLevel, sanitizeGeneratedSessionTitle, sanitizeSessionTitle, shouldAutoTitleSessionKey, shouldRefineSessionTitleWithLlm, shouldSkipResetOverlapCommand, shouldSkipWebchatInboundByAbortCutoff, stripLeadingEnvelopeTimestamp, transcriptRowsFromJsonArray };
@@ -8,6 +8,14 @@ import { type ThinkLevel, type ReasoningLevel } from '../agent/transcript/thinki
8
8
  * @param requestOverride - Raw value from HTTP/API (e.g. Web pill); wins over persisted session when valid.
9
9
  */
10
10
  export declare function resolveEffectiveThinkingLevel(sessionConfigStore: SessionConfigStore, sessionKey: string, requestOverride?: string | null, agentDefault?: ThinkLevel): Promise<ThinkingLevel>;
11
+ export declare const DEFAULT_ACTIVITY_DETAIL_LEVEL: ReasoningLevel;
12
+ export declare function resolveConfiguredActivityDetailDefault(config?: {
13
+ gateway?: {
14
+ webchat?: {
15
+ activityDetailDefault?: ReasoningLevel;
16
+ };
17
+ };
18
+ }): ReasoningLevel;
11
19
  /**
12
20
  * Session override > runtime default.
13
21
  */
@@ -12,13 +12,16 @@ async function resolveEffectiveThinkingLevel(sessionConfigStore, sessionKey, req
12
12
  if (fromSession !== void 0) return fromSession;
13
13
  return agentDefault ?? FALLBACK;
14
14
  }
15
- const REASONING_FALLBACK = "stream";
15
+ const DEFAULT_ACTIVITY_DETAIL_LEVEL = "on";
16
+ function resolveConfiguredActivityDetailDefault(config) {
17
+ return config?.gateway?.webchat?.activityDetailDefault ?? "on";
18
+ }
16
19
  /**
17
20
  * Session override > runtime default.
18
21
  */
19
22
  async function resolveEffectiveReasoningLevel(sessionConfigStore, sessionKey, agentDefault) {
20
- const def = agentDefault ?? REASONING_FALLBACK;
23
+ const def = agentDefault ?? "on";
21
24
  return await resolveReasoningLevel(sessionConfigStore, sessionKey, def) ?? def;
22
25
  }
23
26
  //#endregion
24
- export { resolveEffectiveReasoningLevel, resolveEffectiveThinkingLevel };
27
+ export { DEFAULT_ACTIVITY_DETAIL_LEVEL, resolveConfiguredActivityDetailDefault, resolveEffectiveReasoningLevel, resolveEffectiveThinkingLevel };
@@ -0,0 +1,3 @@
1
+ export type HomeAttentionSubjectKind = 'automation_run' | 'workflow_run';
2
+ export declare function acknowledgeHomeAttention(subjectKind: HomeAttentionSubjectKind, subjectId: string, acknowledgedAt?: number): void;
3
+ export declare function isHomeAttentionAcknowledged(subjectKind: HomeAttentionSubjectKind, subjectId: string): boolean;
@@ -0,0 +1,21 @@
1
+ import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
2
+ //#region src/storage/sqlite/home-attention-repository.ts
3
+ function acknowledgeHomeAttention(subjectKind, subjectId, acknowledgedAt = Date.now()) {
4
+ runSqliteWriteTransaction((db) => {
5
+ db.prepare(`
6
+ INSERT INTO home_attention_acknowledgements (subject_kind, subject_id, acknowledged_at)
7
+ VALUES (?, ?, ?)
8
+ ON CONFLICT(subject_kind, subject_id) DO UPDATE SET
9
+ acknowledged_at = excluded.acknowledged_at
10
+ `).run(subjectKind, subjectId, acknowledgedAt);
11
+ });
12
+ }
13
+ function isHomeAttentionAcknowledged(subjectKind, subjectId) {
14
+ return getSqliteDatabase().prepare(`
15
+ SELECT 1
16
+ FROM home_attention_acknowledgements
17
+ WHERE subject_kind = ? AND subject_id = ?
18
+ `).get(subjectKind, subjectId) !== void 0;
19
+ }
20
+ //#endregion
21
+ export { acknowledgeHomeAttention, isHomeAttentionAcknowledged };
@@ -5,6 +5,7 @@ export { DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, } from './m
5
5
  export { discoverSqlMigrations, listRegisteredMigrationTargets } from './migrations/discover.js';
6
6
  export { closeXopcDatabase, getXopcDatabase, isXopcDatabaseOpen, openXopcDatabase, requireXopcDatabase, resetXopcDatabaseSingletonForTest, type OpenXopcDatabaseOptions, type XopcDatabase, } from './connection.js';
7
7
  export { getSqliteDatabase, runSqliteWriteTransaction } from './transaction.js';
8
+ export { acknowledgeHomeAttention, isHomeAttentionAcknowledged, type HomeAttentionSubjectKind, } from './home-attention-repository.js';
8
9
  export { getUserClaim, linkUserClaimMemoryRecord, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, removeUserClaimEvidenceForSource, reinforceUserClaim, resolveUserEntity, setUserClaimDecision, type UserClaim, type UserClaimClass, type UserClaimState, type UserEntity, } from './user-claims-repository.js';
9
10
  export { claimNextConnectorLearningJob, enqueueConnectorLearningJob, listConnectorLearningJobs, recoverStaleConnectorLearningJobs, setConnectorLearningPaused, updateConnectorLearningJob, type ConnectorLearningJob, type ConnectorLearningMode, type ConnectorLearningPhase, type ConnectorLearningStatus, } from './connector-learning-repository.js';
10
11
  export { appendComposerInputHistory, clearComposerInputHistory, listComposerInputHistory, COMPOSER_INPUT_HISTORY_LIMIT, type ComposerInputHistoryItem, } from './composer-input-history-repository.js';
@@ -6,6 +6,7 @@ import { XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_SCHEMA_VERSION, applyPendingMi
6
6
  import { ensureXopcDatabaseSchema } from "./schema.js";
7
7
  import { closeXopcDatabase, getXopcDatabase, isXopcDatabaseOpen, openXopcDatabase, requireXopcDatabase, resetXopcDatabaseSingletonForTest } from "./connection.js";
8
8
  import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
9
+ import { acknowledgeHomeAttention, isHomeAttentionAcknowledged } from "./home-attention-repository.js";
9
10
  import { getUserClaim, linkUserClaimMemoryRecord, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, reinforceUserClaim, removeUserClaimEvidenceForSource, resolveUserEntity, setUserClaimDecision } from "./user-claims-repository.js";
10
11
  import { claimNextConnectorLearningJob, enqueueConnectorLearningJob, listConnectorLearningJobs, recoverStaleConnectorLearningJobs, setConnectorLearningPaused, updateConnectorLearningJob } from "./connector-learning-repository.js";
11
12
  import { COMPOSER_INPUT_HISTORY_LIMIT, appendComposerInputHistory, clearComposerInputHistory, listComposerInputHistory } from "./composer-input-history-repository.js";
@@ -27,4 +28,4 @@ import { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeC
27
28
  import { getUserTrustPolicy, setUserTrustPolicy } from "./user-trust-repository.js";
28
29
  import { consumeMemoryReferenceConsent, decideMemoryReferenceConsent, ensureMemoryReferenceConsentRequest, hasMemoryReferenceConsent, listMemoryReferenceConsents, revokeMemoryReferenceConsent } from "./memory-reference-consent-repository.js";
29
30
  import { getUserProfilePromptState, setUserProfilePromptState } from "./user-profile-setup-repository.js";
30
- export { COMPOSER_INPUT_HISTORY_LIMIT, DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, SCHEMA_META_SCHEMA_VERSION_KEY, USER_UNDERSTANDING_REMEDIATION_POLICY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, appendCompactionBoundary, appendComposerInputHistory, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRelationshipPrompt, claimConnectorWebhookDelivery, claimKnowledgeSourceItems, claimNextConnectorLearningJob, classifyStoredRow, clearComposerInputHistory, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, completeTaskOutcome, consumeConnectorApproval, consumeMemoryReferenceConsent, createConnectorApproval, createObjectLinkRecord, decideConnectorApproval, decideMemoryReferenceConsent, deleteConnectorConnection, deleteConnectorInstallation, deleteMemoryEvidenceForRecord, deleteMemoryRecord, deleteNoteAgentContextRecord, deleteNoteRecord, deleteSessionConfig, deleteSessionRecord, discoverSqlMigrations, enqueueConnectorLearningJob, ensureMemoryReferenceConsentRequest, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findLatestMemoryInjectTrace, findSessionKeyBySessionId, findTaskOutcomeForAssistant, finishKnowledgeSyncRun, getActivityEventRecord, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getCurrentSessionId, getGlobalSessionStats, getInteractionState, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getMemoryProviderState, getMemoryRecord, getNoteAgentContextRecord, getNoteRecord, getRelationshipSettings, getSessionConfig, getSessionMetadata, getSessionPersistedLevels, getSqliteDatabase, getTaskOutcome, getUserClaim, getUserProfilePromptState, getUserTrustPolicy, getXopcDatabase, hasMemoryReferenceConsent, hasSessionConfig, hasUnresolvedMemoryConflict, incrementSessionStatsOnAppend, inspectSchemaMigrationStatus, isProactiveSupportAllowed, isXopcDatabaseOpen, linkUserClaimMemoryRecord, listActivityRecords, listCachedConnectorCatalogEntries, listCompactionBoundaries, listComposerInputHistory, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listConnectorLearningJobs, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryRecords, listMemoryReferenceConsents, listMemorySignals, listMemoryTraceEvents, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, listTaskOutcomes, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, markMemoryRecordsConflicted, metadataToSessionInsert, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, pruneBoundedKnowledgeSourceItems, readSchemaVersion, readSchemaVersionForTest, recordActivityEvent, recoverStaleConnectorLearningJobs, reinforceUserClaim, releaseConnectorWebhookDelivery, removeUserClaimEvidenceForSource, replaceConnectorCatalogEntries, replaceTranscriptRows, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveMigrationsDir, resolveSessionAgentId, resolveUserEntity, resolveXopcDatabasePath, restoreBeforeCompactionBoundary, revokeMemoryReferenceConsent, runSqliteWriteTransaction, searchMemoryIndex, searchMemoryRecords, sessionConfigRowToConfig, sessionRowToMetadata, setConnectorLearningPaused, setInteractionState, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setLatestMemoryInjectFeedback, setMemoryProviderState, setMemoryTraceFeedback, setSessionConfig, setTaskOutcomeFeedback, setUserClaimDecision, setUserProfilePromptState, setUserTrustPolicy, startKnowledgeSyncRun, startTaskOutcome, summarizeMemoryRecallFeedback, summarizeTaskOutcomes, summarizeUserUnderstandingQuality, syncMemoryIndex, transcriptEntryRowToStoredRow, updateConnectorLearningJob, updateInteractionStateFromMessage, updateRelationshipSettings, updateSessionConfig, updateSessionStats, updateTaskOutcome, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertKnowledgeSourceItems, upsertMemoryRecord, upsertNoteAgentContextRecord, upsertNoteRecord };
31
+ export { COMPOSER_INPUT_HISTORY_LIMIT, DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, SCHEMA_META_SCHEMA_VERSION_KEY, USER_UNDERSTANDING_REMEDIATION_POLICY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, acknowledgeHomeAttention, appendCompactionBoundary, appendComposerInputHistory, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRelationshipPrompt, claimConnectorWebhookDelivery, claimKnowledgeSourceItems, claimNextConnectorLearningJob, classifyStoredRow, clearComposerInputHistory, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, completeTaskOutcome, consumeConnectorApproval, consumeMemoryReferenceConsent, createConnectorApproval, createObjectLinkRecord, decideConnectorApproval, decideMemoryReferenceConsent, deleteConnectorConnection, deleteConnectorInstallation, deleteMemoryEvidenceForRecord, deleteMemoryRecord, deleteNoteAgentContextRecord, deleteNoteRecord, deleteSessionConfig, deleteSessionRecord, discoverSqlMigrations, enqueueConnectorLearningJob, ensureMemoryReferenceConsentRequest, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findLatestMemoryInjectTrace, findSessionKeyBySessionId, findTaskOutcomeForAssistant, finishKnowledgeSyncRun, getActivityEventRecord, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getCurrentSessionId, getGlobalSessionStats, getInteractionState, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getMemoryProviderState, getMemoryRecord, getNoteAgentContextRecord, getNoteRecord, getRelationshipSettings, getSessionConfig, getSessionMetadata, getSessionPersistedLevels, getSqliteDatabase, getTaskOutcome, getUserClaim, getUserProfilePromptState, getUserTrustPolicy, getXopcDatabase, hasMemoryReferenceConsent, hasSessionConfig, hasUnresolvedMemoryConflict, incrementSessionStatsOnAppend, inspectSchemaMigrationStatus, isHomeAttentionAcknowledged, isProactiveSupportAllowed, isXopcDatabaseOpen, linkUserClaimMemoryRecord, listActivityRecords, listCachedConnectorCatalogEntries, listCompactionBoundaries, listComposerInputHistory, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listConnectorLearningJobs, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryRecords, listMemoryReferenceConsents, listMemorySignals, listMemoryTraceEvents, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, listTaskOutcomes, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, markMemoryRecordsConflicted, metadataToSessionInsert, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, pruneBoundedKnowledgeSourceItems, readSchemaVersion, readSchemaVersionForTest, recordActivityEvent, recoverStaleConnectorLearningJobs, reinforceUserClaim, releaseConnectorWebhookDelivery, removeUserClaimEvidenceForSource, replaceConnectorCatalogEntries, replaceTranscriptRows, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveMigrationsDir, resolveSessionAgentId, resolveUserEntity, resolveXopcDatabasePath, restoreBeforeCompactionBoundary, revokeMemoryReferenceConsent, runSqliteWriteTransaction, searchMemoryIndex, searchMemoryRecords, sessionConfigRowToConfig, sessionRowToMetadata, setConnectorLearningPaused, setInteractionState, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setLatestMemoryInjectFeedback, setMemoryProviderState, setMemoryTraceFeedback, setSessionConfig, setTaskOutcomeFeedback, setUserClaimDecision, setUserProfilePromptState, setUserTrustPolicy, startKnowledgeSyncRun, startTaskOutcome, summarizeMemoryRecallFeedback, summarizeTaskOutcomes, summarizeUserUnderstandingQuality, syncMemoryIndex, transcriptEntryRowToStoredRow, updateConnectorLearningJob, updateInteractionStateFromMessage, updateRelationshipSettings, updateSessionConfig, updateSessionStats, updateTaskOutcome, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertKnowledgeSourceItems, upsertMemoryRecord, upsertNoteAgentContextRecord, upsertNoteRecord };
@@ -0,0 +1,9 @@
1
+ CREATE TABLE IF NOT EXISTS home_attention_acknowledgements (
2
+ subject_kind TEXT NOT NULL CHECK (subject_kind IN ('automation_run', 'workflow_run')),
3
+ subject_id TEXT NOT NULL,
4
+ acknowledged_at INTEGER NOT NULL,
5
+ PRIMARY KEY (subject_kind, subject_id)
6
+ );
7
+
8
+ CREATE INDEX IF NOT EXISTS idx_home_attention_acknowledged_at
9
+ ON home_attention_acknowledgements(acknowledged_at DESC);
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
3
3
  /** Baseline schema version applied from schema.sql on first open. */
4
4
  export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
5
5
  /** Latest schema version this release supports (increment when adding migrations). */
6
- export declare const XOPC_DB_SCHEMA_VERSION = 66;
6
+ export declare const XOPC_DB_SCHEMA_VERSION = 67;
7
7
  export declare function resolveMigrationsDir(override?: string): string;
8
8
  /**
9
9
  * Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
@@ -12,7 +12,7 @@ const log = createLogger("Sqlite:Migrations");
12
12
  /** Baseline schema version applied from schema.sql on first open. */
13
13
  const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
14
14
  /** Latest schema version this release supports (increment when adding migrations). */
15
- const XOPC_DB_SCHEMA_VERSION = 66;
15
+ const XOPC_DB_SCHEMA_VERSION = 67;
16
16
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
17
17
  function resolveMigrationsDir(override) {
18
18
  if (override) return override;
@@ -46,7 +46,7 @@ function applySingleMigration(db, migration) {
46
46
  * Each step runs in its own transaction and updates schema_meta on success.
47
47
  */
48
48
  function applyPendingMigrations(db, options = {}) {
49
- const targetVersion = options.targetVersion ?? 66;
49
+ const targetVersion = options.targetVersion ?? 67;
50
50
  let currentVersion = readSchemaVersion(db);
51
51
  if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
52
52
  if (currentVersion >= targetVersion) return currentVersion;
@@ -62,7 +62,7 @@ function applyPendingMigrations(db, options = {}) {
62
62
  }
63
63
  /** Inspect schema version without mutating the database. */
64
64
  function inspectSchemaMigrationStatus(db, options = {}) {
65
- const appVersion = options.targetVersion ?? 66;
65
+ const appVersion = options.targetVersion ?? 67;
66
66
  const dbVersion = readSchemaVersion(db);
67
67
  if (dbVersion > appVersion) return {
68
68
  dbVersion,
@@ -19,7 +19,7 @@ const log = createLogger('Sqlite:Migrations');
19
19
  export const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
20
20
 
21
21
  /** Latest schema version this release supports (increment when adding migrations). */
22
- export const XOPC_DB_SCHEMA_VERSION = 66;
22
+ export const XOPC_DB_SCHEMA_VERSION = 67;
23
23
 
24
24
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
25
25
 
@@ -31,7 +31,7 @@ function ensureXopcDatabaseSchema(db) {
31
31
  bootstrapFreshDatabase(db);
32
32
  currentVersion = 11;
33
33
  }
34
- applyPendingMigrations(db, { targetVersion: 66 });
34
+ applyPendingMigrations(db, { targetVersion: 67 });
35
35
  }
36
36
  //#endregion
37
37
  export { SCHEMA_META_SCHEMA_VERSION_KEY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_SCHEMA_VERSION, ensureSchemaMetaTable, ensureXopcDatabaseSchema, readSchemaVersion, readSchemaVersionForTest, setSchemaVersion };
@@ -189,6 +189,16 @@ CREATE INDEX IF NOT EXISTS idx_workflow_runs_definition_created
189
189
  CREATE INDEX IF NOT EXISTS idx_workflow_runs_created
190
190
  ON workflow_runs(agent_id, created_at_ms DESC);
191
191
 
192
+ CREATE TABLE IF NOT EXISTS home_attention_acknowledgements (
193
+ subject_kind TEXT NOT NULL CHECK (subject_kind IN ('automation_run', 'workflow_run')),
194
+ subject_id TEXT NOT NULL,
195
+ acknowledged_at INTEGER NOT NULL,
196
+ PRIMARY KEY (subject_kind, subject_id)
197
+ );
198
+
199
+ CREATE INDEX IF NOT EXISTS idx_home_attention_acknowledged_at
200
+ ON home_attention_acknowledgements(acknowledged_at DESC);
201
+
192
202
  CREATE TABLE IF NOT EXISTS notes (
193
203
  note_id TEXT PRIMARY KEY,
194
204
  title TEXT,
@@ -3,8 +3,8 @@ import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.
3
3
  import { init_paths, resolveAgentProfileDir, resolveBundledSkillsDir, resolveUserProfilePath } from "../config/paths.js";
4
4
  import { resolveBootstrapFilesSync } from "../agent/bootstrap/bootstrap-files.js";
5
5
  import { createSkillConfigManager, isSkillEnabled } from "../agent/skills/config.js";
6
- import { createWorkflowCatalog } from "../agent/workflow/catalog.js";
7
6
  import { loadSkills } from "../agent/skills/index.js";
7
+ import { createWorkflowCatalog } from "../agent/workflow/catalog.js";
8
8
  import { listConnectorInstances } from "../connectors/instances.js";
9
9
  import { getWorkspacePath } from "../config/workspace-path-helpers.js";
10
10
  import "../config/index.js";
@@ -59,7 +59,7 @@ import { dirname, isAbsolute, join, relative, resolve } from "node:path";
59
59
  import { mkdirSync, mkdtempSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
60
60
  import { spawnSync } from "node:child_process";
61
61
  import { randomUUID } from "node:crypto";
62
- import { Container, Loader, ProcessTerminal, TUI, setKeybindings } from "@earendil-works/pi-tui";
62
+ import { Container, Loader, ProcessTerminal, TuiMainScreen, setKeybindings } from "@earendil-works/pi-tui";
63
63
  import { Buffer } from "node:buffer";
64
64
  //#region src/tui/tui.ts
65
65
  init_paths();
@@ -252,7 +252,7 @@ async function runTui(opts) {
252
252
  bottomBar.invalidate();
253
253
  tui.requestRender();
254
254
  };
255
- const tui = new TUI(new ProcessTerminal());
255
+ const tui = new TuiMainScreen(new ProcessTerminal());
256
256
  tui.setShowHardwareCursor(tuiSettings.showHardwareCursor);
257
257
  tui.setClearOnShrink(tuiSettings.clearOnShrink);
258
258
  const dedupeBackspace = createBackspaceDeduper();
@@ -213,6 +213,14 @@ export declare const XOPC_TUI_KEYBINDINGS: {
213
213
  readonly defaultKeys: "down";
214
214
  readonly description: "Move cursor down";
215
215
  };
216
+ readonly "tui.editor.historyPrevious": {
217
+ readonly defaultKeys: [];
218
+ readonly description: "Select previous prompt history entry";
219
+ };
220
+ readonly "tui.editor.historyNext": {
221
+ readonly defaultKeys: [];
222
+ readonly description: "Select next prompt history entry";
223
+ };
216
224
  readonly "tui.editor.cursorLeft": {
217
225
  readonly defaultKeys: ["left", "ctrl+b"];
218
226
  readonly description: "Move cursor left";
@@ -230,11 +238,11 @@ export declare const XOPC_TUI_KEYBINDINGS: {
230
238
  readonly description: "Move cursor word right";
231
239
  };
232
240
  readonly "tui.editor.cursorLineStart": {
233
- readonly defaultKeys: ["home", "ctrl+a"];
241
+ readonly defaultKeys: ["home", "ctrl+home", "ctrl+a"];
234
242
  readonly description: "Move to line start";
235
243
  };
236
244
  readonly "tui.editor.cursorLineEnd": {
237
- readonly defaultKeys: ["end", "ctrl+e"];
245
+ readonly defaultKeys: ["end", "ctrl+end", "ctrl+e"];
238
246
  readonly description: "Move to line end";
239
247
  };
240
248
  readonly "tui.editor.jumpForward": {
@@ -246,11 +254,11 @@ export declare const XOPC_TUI_KEYBINDINGS: {
246
254
  readonly description: "Jump backward to character";
247
255
  };
248
256
  readonly "tui.editor.pageUp": {
249
- readonly defaultKeys: "pageUp";
257
+ readonly defaultKeys: ["pageUp", "ctrl+pageUp"];
250
258
  readonly description: "Page up";
251
259
  };
252
260
  readonly "tui.editor.pageDown": {
253
- readonly defaultKeys: "pageDown";
261
+ readonly defaultKeys: ["pageDown", "ctrl+pageDown"];
254
262
  readonly description: "Page down";
255
263
  };
256
264
  readonly "tui.editor.deleteCharBackward": {
@@ -329,6 +337,38 @@ export declare const XOPC_TUI_KEYBINDINGS: {
329
337
  readonly defaultKeys: ["escape", "ctrl+c"];
330
338
  readonly description: "Cancel selection";
331
339
  };
340
+ readonly "tui.altScreen.pageUp": {
341
+ readonly defaultKeys: "pageUp";
342
+ readonly description: "Scroll viewport up one page";
343
+ };
344
+ readonly "tui.altScreen.pageDown": {
345
+ readonly defaultKeys: "pageDown";
346
+ readonly description: "Scroll viewport down one page";
347
+ };
348
+ readonly "tui.altScreen.halfPageUp": {
349
+ readonly defaultKeys: [];
350
+ readonly description: "Scroll viewport up half a page";
351
+ };
352
+ readonly "tui.altScreen.halfPageDown": {
353
+ readonly defaultKeys: [];
354
+ readonly description: "Scroll viewport down half a page";
355
+ };
356
+ readonly "tui.altScreen.previousPrompt": {
357
+ readonly defaultKeys: "ctrl+shift+up";
358
+ readonly description: "Jump to previous semantic prompt";
359
+ };
360
+ readonly "tui.altScreen.nextPrompt": {
361
+ readonly defaultKeys: "ctrl+shift+down";
362
+ readonly description: "Jump to next semantic prompt";
363
+ };
364
+ readonly "tui.altScreen.top": {
365
+ readonly defaultKeys: "home";
366
+ readonly description: "Scroll viewport to top";
367
+ };
368
+ readonly "tui.altScreen.bottom": {
369
+ readonly defaultKeys: "end";
370
+ readonly description: "Scroll viewport to bottom";
371
+ };
332
372
  };
333
373
  /** Order for `/hotkeys` and docs (pi-style UX). */
334
374
  export declare const XOPC_TUI_HOTKEY_ORDER: XopcTuiAppKeybinding[];
@@ -8,6 +8,7 @@ import type { Api, Model } from '@earendil-works/pi-ai';
8
8
  import type { WorkflowAgentInvocationSnapshot } from '../domain/index.js';
9
9
  export interface WorkflowEngineOptions {
10
10
  cwd: string;
11
+ projectId?: string;
11
12
  eventStore: WorkflowEventStore;
12
13
  runStore: WorkflowRunStore;
13
14
  runner: WorkflowRuntimeSubagentRunner;
@@ -164,6 +164,7 @@ var WorkflowEngine = class {
164
164
  sessionKey,
165
165
  sessionMetadata: {
166
166
  parentSessionKey: this.options.parentSessionKey,
167
+ projectId: this.options.projectId,
167
168
  workflowRunId: runId,
168
169
  workflowDefinitionId: definition.id,
169
170
  workflowAgentId: agentId,
@@ -370,6 +371,7 @@ var WorkflowEngine = class {
370
371
  sessionKey,
371
372
  sessionMetadata: {
372
373
  parentSessionKey: this.options.parentSessionKey,
374
+ projectId: this.options.projectId,
373
375
  workflowRunId: params.runId,
374
376
  workflowDefinitionId: params.definition.id,
375
377
  workflowAgentId: target.agentId,
@@ -1,8 +1,9 @@
1
- import { extractProfileAgentId } from "../../config/agent-profile.js";
1
+ import { extractProfileAgentId, resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
2
2
  import { init_providers, resolveModel } from "../../providers/index.js";
3
3
  import { publishAutomationProductEvent } from "../../automations/product-events.js";
4
4
  import { GoalService } from "../../goals/goal-service.js";
5
5
  import "../../goals/index.js";
6
+ import { getProjectWorkspacePathForSession } from "../../projects/workspace.js";
6
7
  import { DelegateSubagentRunner } from "../../agent/workflow/subagent-runner.js";
7
8
  import { resolveModelRef } from "../../config/agent-typed-models.js";
8
9
  import { preflightWorkflowConnectors } from "../../connectors/workflow-preflight.js";
@@ -79,7 +80,8 @@ var WorkflowRunService = class {
79
80
  const engine = this.createWorkflowEngine({
80
81
  eventStore,
81
82
  runStore,
82
- sessionKey
83
+ sessionKey,
84
+ projectId
83
85
  });
84
86
  const limits = resolveWorkflowRunLimits({
85
87
  config: this.options.service.currentConfig,
@@ -201,7 +203,8 @@ var WorkflowRunService = class {
201
203
  const engine = this.createWorkflowEngine({
202
204
  eventStore,
203
205
  runStore: replayRunStore,
204
- sessionKey
206
+ sessionKey,
207
+ projectId
205
208
  });
206
209
  const limits = resolveWorkflowRunLimits({
207
210
  config: this.options.service.currentConfig,
@@ -356,8 +359,10 @@ var WorkflowRunService = class {
356
359
  createWorkflowEngine(params) {
357
360
  const gatewayService = this.options.service;
358
361
  const profileAgentId = extractProfileAgentId(params.sessionKey, gatewayService.currentConfig);
362
+ const agentWorkspace = gatewayService.currentConfig.agents?.list ? resolveEffectiveAgentProfileForSession(gatewayService.currentConfig, params.sessionKey).resolvedWorkspacePath : gatewayService.currentWorkspacePath;
363
+ const workspace = getProjectWorkspacePathForSession(params.sessionKey) ?? agentWorkspace;
359
364
  const runner = new DelegateSubagentRunner({
360
- workspace: gatewayService.currentWorkspacePath,
365
+ workspace,
361
366
  bus: gatewayService.messageBusInstance,
362
367
  agentId: profileAgentId,
363
368
  getDefaultModel: () => resolveModel(gatewayService.agentService.getModelForSession(params.sessionKey)),
@@ -366,7 +371,8 @@ var WorkflowRunService = class {
366
371
  buildChildTools: (childOptions) => this.options.buildChildTools(childOptions)
367
372
  });
368
373
  return new WorkflowEngine({
369
- cwd: gatewayService.currentWorkspacePath,
374
+ cwd: workspace,
375
+ projectId: params.projectId,
370
376
  eventStore: params.eventStore,
371
377
  runStore: params.runStore,
372
378
  runner,
@@ -5,6 +5,7 @@ import { renderWorkflowText } from "../../agent/workflow/snapshot.js";
5
5
  import { runViewToSnapshot } from "./run-view-to-snapshot.js";
6
6
  import { GoalWorkflowJudge } from "../../goals/goal-workflow-judge.js";
7
7
  import "../../goals/index.js";
8
+ import { getProjectWorkspacePathForSession } from "../../projects/workspace.js";
8
9
  import { isTerminalWorkflowRunStatus } from "../domain/run.js";
9
10
  import "../domain/index.js";
10
11
  import { WorkItemWorkflowJudge } from "../../work-items/work-item-workflow-judge.js";
@@ -166,7 +167,7 @@ var WorkflowSessionBridge = class {
166
167
  providerId: "workflow-run",
167
168
  kind: "task_lesson",
168
169
  sourceAgentId: agentId,
169
- workspaceId: this.gateway.currentWorkspacePath,
170
+ workspaceId: getProjectWorkspacePathForSession(sessionKey) ?? this.gateway.currentWorkspacePath,
170
171
  sessionKey,
171
172
  projectId,
172
173
  content: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.174",
3
+ "version": "0.0.176",
4
4
  "description": "Local-first AI system that remembers context, coordinates AI, and sustains long-term progress.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -65,10 +65,10 @@
65
65
  "node": ">=22.19.0"
66
66
  },
67
67
  "dependencies": {
68
- "@earendil-works/pi-agent-core": "0.82.1",
69
- "@earendil-works/pi-ai": "0.82.1",
70
- "@earendil-works/pi-coding-agent": "0.82.1",
71
- "@earendil-works/pi-tui": "0.82.1",
68
+ "@earendil-works/pi-agent-core": "0.84.1",
69
+ "@earendil-works/pi-ai": "0.84.1",
70
+ "@earendil-works/pi-coding-agent": "0.84.1",
71
+ "@earendil-works/pi-tui": "0.84.1",
72
72
  "@grammyjs/runner": "^2.0.3",
73
73
  "@hono/node-server": "^2.0.4",
74
74
  "@inquirer/prompts": "^8.5.0",