@xopcai/xopc 0.0.249 → 0.0.251

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 (273) 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-B759R_qf.js → activity-store-DfBjTSo9.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BUu7EnwM.js → agent-avatar-dicebear-Bo_dmLv8.js} +1 -1
  5. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-kILWelNb.js +1 -0
  6. package/dist/gateway/static/root/assets/{agents-DK9HjHO0.js → agents-yuUn8n-f.js} +1 -1
  7. package/dist/gateway/static/root/assets/{api-Cg0v7Lpn.js → api-zxpcJfgj.js} +1 -1
  8. package/dist/gateway/static/root/assets/{app-management-settings-panel-C9DkCW_d.js → app-management-settings-panel-Cz56nrVF.js} +1 -1
  9. package/dist/gateway/static/root/assets/{appearance-settings-CFggS95Y.js → appearance-settings-DxSws5U4.js} +1 -1
  10. package/dist/gateway/static/root/assets/apps-page-BnizTdgs.js +1 -0
  11. package/dist/gateway/static/root/assets/{archive-plugin-BQrilVVv.js → archive-plugin-7k15-hqo.js} +1 -1
  12. package/dist/gateway/static/root/assets/{attachment-load-BG0BliqV.js → attachment-load-B-SFpjd9.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automations-page-Bo4RiTkh.js → automations-page-Qy36j19q.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-workspace-CZRKqSqY.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-BCnyNU0C.js → binary-plugins-CPOZQt8F.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-Db8DlVvg.js → block-editor-DhvVlIp9.js} +4 -4
  17. package/dist/gateway/static/root/assets/browser-settings-page-pN5LbChY.js +8 -0
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-C71vfl0b.js → browser-workflow-inputs-BX1-uM9L.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-vvmSYKsO.js → browser-workflows-page-C65MI57t.js} +2 -2
  20. package/dist/gateway/static/root/assets/capabilities-settings-panel-CJw2e16J.js +7 -0
  21. package/dist/gateway/static/root/assets/channels-settings-CRgjb4Ck.js +1 -0
  22. package/dist/gateway/static/root/assets/{channels-status-swr-CKyV3jY5.js → channels-status-swr-CX-yWwLD.js} +1 -1
  23. package/dist/gateway/static/root/assets/{chat-terminal-dock-B1Xd6OFB.js → chat-terminal-dock-1PJoxRuV.js} +2 -2
  24. package/dist/gateway/static/root/assets/connectors-page-Dcpdy06y.js +2 -0
  25. package/dist/gateway/static/root/assets/{cron-expression-D-F9vjtE.js → cron-expression-CBCc6zFA.js} +1 -1
  26. package/dist/gateway/static/root/assets/{date-picker-B2OoYvic.js → date-picker-u8K5Kt_N.js} +1 -1
  27. package/dist/gateway/static/root/assets/{dependency-picker-BiGx9Sbj.js → dependency-picker-y_i_cnpz.js} +1 -1
  28. package/dist/gateway/static/root/assets/{desktop-pet-BNMRqipe.js → desktop-pet-DyL0JxLm.js} +1 -1
  29. package/dist/gateway/static/root/assets/{desktop-pet-settings-DeYbIV7A.js → desktop-pet-settings-d2d_IsyP.js} +1 -1
  30. package/dist/gateway/static/root/assets/{extension-debug-page-COyn05ub.js → extension-debug-page-DqIBKJwl.js} +1 -1
  31. package/dist/gateway/static/root/assets/{extension-page-oH43chS2.js → extension-page-DUW1xxj2.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-settings-page-BMO59994.js → extension-settings-page-BHY9qaNw.js} +1 -1
  33. package/dist/gateway/static/root/assets/files-BArWTfr7.js +1 -0
  34. package/dist/gateway/static/root/assets/{gateway-config-api-cimpViGk.js → gateway-config-api-e3BRcgDx.js} +1 -1
  35. package/dist/gateway/static/root/assets/{gateway-config-swr-BGdHwT4e.js → gateway-config-swr-CMNbl0FZ.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-settings-BHJtnSic.js → gateway-settings-Cheo0Rkc.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-startup-retry-CuaM3b4c.js → gateway-startup-retry-CR7Xg8As.js} +1 -1
  38. package/dist/gateway/static/root/assets/{heartbeat-settings-DNhrZHqx.js → heartbeat-settings-7CD9iPR7.js} +1 -1
  39. package/dist/gateway/static/root/assets/home-page-DVrTRqNc.js +1 -0
  40. package/dist/gateway/static/root/assets/{image-generation-api-D7duj7Uj.js → image-generation-api-C5mn73ca.js} +1 -1
  41. package/dist/gateway/static/root/assets/{index-DGeGmj4k.css → index-B7CX4Qob.css} +1 -1
  42. package/dist/gateway/static/root/assets/index-BHrpyJ4t.js +72 -0
  43. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-D8Zw_lYd.js → keyboard-shortcuts-settings-BtlqMleF.js} +1 -1
  44. package/dist/gateway/static/root/assets/languages-5WaOu0Lf.js +2 -0
  45. package/dist/gateway/static/root/assets/local-app-workbench-page-BjxfkjxE.js +2 -0
  46. package/dist/gateway/static/root/assets/{local-apps-page-CvPDPRwb.js → local-apps-page-B7xqQe2s.js} +1 -1
  47. package/dist/gateway/static/root/assets/{locale-store-zEL8bkwx.js → locale-store-CF4erhjB.js} +1 -1
  48. package/dist/gateway/static/root/assets/logs-page-kACaPZKL.js +2 -0
  49. package/dist/gateway/static/root/assets/{management-settings-D8moh99U.js → management-settings-A432siER.js} +1 -1
  50. package/dist/gateway/static/root/assets/markdown-editor-BjMTIM-m.js +1 -0
  51. package/dist/gateway/static/root/assets/{markdown-view-DGRN-8wP.js → markdown-view-CQvzsE24.js} +1 -1
  52. package/dist/gateway/static/root/assets/{media-plugins-BLaE5b1Y.js → media-plugins-CpvYiauZ.js} +1 -1
  53. package/dist/gateway/static/root/assets/messages-Cf5hpZE6.js +3 -0
  54. package/dist/gateway/static/root/assets/{mobile-pairing-wizard-DiVDuCxl.js → mobile-pairing-wizard-DyjVGngO.js} +1 -1
  55. package/dist/gateway/static/root/assets/note-detail-panel-CUd8O4K7.js +5 -0
  56. package/dist/gateway/static/root/assets/notes-page-BLQwd39W.js +8 -0
  57. package/dist/gateway/static/root/assets/{page-tabs-BFMGjA60.js → page-tabs-B3FKzjR6.js} +1 -1
  58. package/dist/gateway/static/root/assets/{preview-open-alternatives-DNEWZN7H.js → preview-open-alternatives-DnjrwAHD.js} +1 -1
  59. package/dist/gateway/static/root/assets/{product-open-page-Co5u7asH.js → product-open-page-COcr_NUJ.js} +1 -1
  60. package/dist/gateway/static/root/assets/project-detail-page-NttW338u.js +1 -0
  61. package/dist/gateway/static/root/assets/projects-page-BzH8pjEz.js +1 -0
  62. package/dist/gateway/static/root/assets/{registry-api-Cg92zSod.js → registry-api-BsRBlji7.js} +1 -1
  63. package/dist/gateway/static/root/assets/remote-access-hub-BxpjSDnL.js +1 -0
  64. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-C0ByNmlV.js → runtime-tools-settings-panel-LO4wZ_dO.js} +1 -1
  65. package/dist/gateway/static/root/assets/{schema-form-Dq_VQpuY.js → schema-form-crcj4-Pm.js} +1 -1
  66. package/dist/gateway/static/root/assets/sessions-page-BLMaibOb.js +1 -0
  67. package/dist/gateway/static/root/assets/settings-advanced-gate-BRvvKhoH.js +1 -0
  68. package/dist/gateway/static/root/assets/{settings-form-section-CZu6FX4k.js → settings-form-section-Bl4MvTmq.js} +1 -1
  69. package/dist/gateway/static/root/assets/{settings-page-S8ekeUZd.js → settings-page-DplrjZ6x.js} +1 -1
  70. package/dist/gateway/static/root/assets/{setup-status-panel-BdVmwXMv.js → setup-status-panel-DTOsxQC1.js} +1 -1
  71. package/dist/gateway/static/root/assets/{share-preview-page-D2fEidbn.js → share-preview-page-CJP1kURj.js} +1 -1
  72. package/dist/gateway/static/root/assets/shares-settings-CemgzEi4.js +1 -0
  73. package/dist/gateway/static/root/assets/skill-reload-api-BWYanBlQ.js +1 -0
  74. package/dist/gateway/static/root/assets/{skills-page-AYiPlgZE.js → skills-page-DsjcKg9Q.js} +1 -1
  75. package/dist/gateway/static/root/assets/{skills-page.utils-DGzl-ib-.js → skills-page.utils-D6gWBbvy.js} +1 -1
  76. package/dist/gateway/static/root/assets/source-workspace-editor-CVWzt0oT.js +1 -0
  77. package/dist/gateway/static/root/assets/{system-settings-panel-5Xd5mIiR.js → system-settings-panel-_eCXfqCo.js} +1 -1
  78. package/dist/gateway/static/root/assets/{task-detail-page-BQAUaCDD.js → task-detail-page-D0Z_K5JT.js} +1 -1
  79. package/dist/gateway/static/root/assets/{theme-store-ZVClZKQ0.js → theme-store-BOgkc_9D.js} +1 -1
  80. package/dist/gateway/static/root/assets/{tunnel-api-CdZN1Jin.js → tunnel-api-W5mktxl1.js} +1 -1
  81. package/dist/gateway/static/root/assets/{use-autosave-czRI0NBc.js → use-autosave-Na2DYzT3.js} +1 -1
  82. package/dist/gateway/static/root/assets/user-model-page-B_-SNat-.js +2 -0
  83. package/dist/gateway/static/root/assets/{vendor-codemirror--gTq3YAI.js → vendor-codemirror-Qdcjid65.js} +1 -1
  84. package/dist/gateway/static/root/assets/{voice-api-key-field-8YEvA3cU.js → voice-api-key-field-OXweUxS_.js} +1 -1
  85. package/dist/gateway/static/root/assets/{voice-config-api-CopF64lY.js → voice-config-api-C-ryeIxj.js} +1 -1
  86. package/dist/gateway/static/root/assets/{work-discovery-overlay-keLtqYYJ.js → work-discovery-overlay-BqOsO47I.js} +1 -1
  87. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Dy5WgYMO.js → workflow-run-setup-panel-B9S_lfT1.js} +2 -2
  88. package/dist/gateway/static/root/assets/workflows-page-CNOT2Coo.js +5 -0
  89. package/dist/gateway/static/root/index.html +11 -11
  90. package/dist/package.js +1 -1
  91. package/dist/packages/gateway-contract/src/user-message-display.js +18 -0
  92. package/dist/src/agent/agent-instance-gateway.d.ts +1 -1
  93. package/dist/src/agent/agent-manager.d.ts +9 -9
  94. package/dist/src/agent/agent-manager.js +50 -32
  95. package/dist/src/agent/background-review/prompts.d.ts +1 -1
  96. package/dist/src/agent/background-review/prompts.js +11 -2
  97. package/dist/src/agent/background-review/run-background-review.js +1 -1
  98. package/dist/src/agent/context/audit.d.ts +3 -1
  99. package/dist/src/agent/context/audit.js +32 -6
  100. package/dist/src/agent/context/coordinator.d.ts +6 -1
  101. package/dist/src/agent/context/coordinator.js +14 -13
  102. package/dist/src/agent/context/execution-context.d.ts +6 -47
  103. package/dist/src/agent/context/execution-context.js +79 -15
  104. package/dist/src/agent/context/execution-context.types.d.ts +50 -0
  105. package/dist/src/agent/context/execution-context.types.js +1 -0
  106. package/dist/src/agent/context/execution-scope.d.ts +5 -1
  107. package/dist/src/agent/context/execution-scope.js +6 -2
  108. package/dist/src/agent/context/project-context.d.ts +3 -0
  109. package/dist/src/agent/context/project-context.js +5 -3
  110. package/dist/src/agent/embedded/model-runtime.js +1 -1
  111. package/dist/src/agent/embedded/run-for-session.js +1 -1
  112. package/dist/src/agent/external-tools/index.d.ts +1 -0
  113. package/dist/src/agent/external-tools/index.js +1 -0
  114. package/dist/src/agent/external-tools/memory-provider.d.ts +1 -0
  115. package/dist/src/agent/external-tools/memory-provider.js +1 -0
  116. package/dist/src/agent/image/tool-model-config.js +1 -1
  117. package/dist/src/agent/inbound/attachment-pipeline.js +5 -1
  118. package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +1 -1
  119. package/dist/src/agent/memory/compaction-promotion.d.ts +1 -0
  120. package/dist/src/agent/memory/compaction-promotion.js +7 -2
  121. package/dist/src/agent/memory/index.d.ts +1 -1
  122. package/dist/src/agent/memory/index.js +3 -3
  123. package/dist/src/agent/memory/memory-config.d.ts +0 -5
  124. package/dist/src/agent/memory/memory-config.js +1 -8
  125. package/dist/src/agent/orchestration/context-overflow.js +1 -0
  126. package/dist/src/agent/service/direct-turn-helpers.d.ts +2 -2
  127. package/dist/src/agent/service/direct-turn-helpers.js +2 -2
  128. package/dist/src/agent/service/process-direct-streaming.js +3 -4
  129. package/dist/src/agent/service.js +2 -2
  130. package/dist/src/agent/session/session-inspector.js +1 -1
  131. package/dist/src/agent/skills/hub-lock.js +1 -1
  132. package/dist/src/agent/tasks/task-judge-service.js +3 -3
  133. package/dist/src/agent/tools/factory.d.ts +1 -0
  134. package/dist/src/agent/tools/factory.js +37 -7
  135. package/dist/src/agent/tools/knowledge-memory-tool.d.ts +6 -0
  136. package/dist/src/agent/tools/knowledge-memory-tool.js +81 -26
  137. package/dist/src/agent/tools/session-search-tool.d.ts +1 -0
  138. package/dist/src/agent/tools/session-search-tool.js +7 -0
  139. package/dist/src/agent/tools/user-context-tool.d.ts +2 -0
  140. package/dist/src/agent/tools/user-context-tool.js +21 -4
  141. package/dist/src/ai-assist/text-assist.js +1 -1
  142. package/dist/src/auth/credentials.js +2 -2
  143. package/dist/src/auth/profiles/store.js +1 -1
  144. package/dist/src/auth/sync-provider-auth.js +2 -2
  145. package/dist/src/automations/service/automation-service.d.ts +2 -1
  146. package/dist/src/automations/service/automation-service.js +6 -2
  147. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  148. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  149. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  150. package/dist/src/cli/commands/models.js +1 -1
  151. package/dist/src/config/index.js +4 -4
  152. package/dist/src/config/loader.js +1 -1
  153. package/dist/src/config/models-json.js +1 -1
  154. package/dist/src/connectors/connection-recovery-service.d.ts +1 -0
  155. package/dist/src/connectors/connection-recovery-service.js +46 -22
  156. package/dist/src/extensions/lockfile.js +1 -1
  157. package/dist/src/files/file-service.js +142 -14
  158. package/dist/src/gateway/agents-admin.js +1 -1
  159. package/dist/src/gateway/file-path-classifier.js +1 -1
  160. package/dist/src/gateway/heartbeat/service.js +1 -1
  161. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  162. package/dist/src/gateway/hono/routes/connectors.js +17 -3
  163. package/dist/src/gateway/hono/routes/files.js +23 -2
  164. package/dist/src/gateway/hono/routes/models.js +1 -1
  165. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  166. package/dist/src/gateway/security/gateway-scopes.js +2 -0
  167. package/dist/src/gateway/service/agent-runner.js +1 -1
  168. package/dist/src/gateway/service/config-coordinator.js +1 -1
  169. package/dist/src/gateway/service/run-gateway-agent.js +1 -1
  170. package/dist/src/gateway/service/session-input-coordinator.js +1 -1
  171. package/dist/src/gateway/service.js +12 -8
  172. package/dist/src/heartbeat/index.js +1 -1
  173. package/dist/src/knowledge-memory/domain.d.ts +1 -0
  174. package/dist/src/knowledge-memory/index.js +2 -2
  175. package/dist/src/knowledge-memory/repository.d.ts +4 -1
  176. package/dist/src/knowledge-memory/repository.js +16 -2
  177. package/dist/src/notifications/planner.js +7 -3
  178. package/dist/src/proactive/actions/service.d.ts +0 -1
  179. package/dist/src/proactive/actions/service.js +1 -10
  180. package/dist/src/proactive/execution/context.d.ts +6 -8
  181. package/dist/src/proactive/execution/context.js +78 -32
  182. package/dist/src/proactive/execution/insight.d.ts +4 -1
  183. package/dist/src/proactive/execution/insight.js +5 -2
  184. package/dist/src/proactive/execution/repository.d.ts +1 -0
  185. package/dist/src/proactive/execution/repository.js +9 -1
  186. package/dist/src/proactive/execution/types.d.ts +0 -1
  187. package/dist/src/proactive/execution/worker.js +7 -5
  188. package/dist/src/proactive/inbox/repository.js +8 -2
  189. package/dist/src/proactive/inbox/service.js +2 -2
  190. package/dist/src/proactive/inbox/types.d.ts +1 -0
  191. package/dist/src/proactive/inbox/worker.d.ts +1 -0
  192. package/dist/src/proactive/inbox/worker.js +7 -0
  193. package/dist/src/proactive/index.d.ts +1 -0
  194. package/dist/src/proactive/index.js +2 -1
  195. package/dist/src/proactive/maintenance.d.ts +4 -0
  196. package/dist/src/proactive/maintenance.js +21 -0
  197. package/dist/src/proactive/scenarios/repository.d.ts +1 -1
  198. package/dist/src/proactive/scenarios/repository.js +10 -3
  199. package/dist/src/proactive/scenarios/types.d.ts +7 -0
  200. package/dist/src/proactive/service.d.ts +7 -0
  201. package/dist/src/proactive/service.js +17 -1
  202. package/dist/src/projects/project-service.d.ts +2 -1
  203. package/dist/src/projects/project-service.js +3 -2
  204. package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
  205. package/dist/src/providers/index.js +2 -2
  206. package/dist/src/providers/model-registry.js +1 -1
  207. package/dist/src/providers/register-runtime-providers.js +1 -1
  208. package/dist/src/session/index.js +1 -1
  209. package/dist/src/session/store.js +5 -2
  210. package/dist/src/storage/sqlite/collaboration-rule-repository.d.ts +3 -1
  211. package/dist/src/storage/sqlite/collaboration-rule-repository.js +1 -1
  212. package/dist/src/storage/sqlite/config-repository.js +1 -1
  213. package/dist/src/storage/sqlite/connection-wait-repository.js +2 -2
  214. package/dist/src/storage/sqlite/index.js +2 -2
  215. package/dist/src/storage/sqlite/migrations/151_proactive_scope_cleanup.sql +6 -0
  216. package/dist/src/storage/sqlite/migrations/152_proactive_scenario_contract.sql +140 -0
  217. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  218. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  219. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  220. package/dist/src/storage/sqlite/row-mappers.js +2 -2
  221. package/dist/src/storage/sqlite/schema.js +1 -1
  222. package/dist/src/storage/sqlite/session-input-repository.js +1 -1
  223. package/dist/src/storage/sqlite/session-instance-repository.d.ts +2 -0
  224. package/dist/src/storage/sqlite/session-instance-repository.js +6 -0
  225. package/dist/src/storage/sqlite/session-repository.d.ts +1 -1
  226. package/dist/src/storage/sqlite/session-repository.js +3 -5
  227. package/dist/src/storage/sqlite/transcript-repository.js +2 -1
  228. package/dist/src/tasks/home-query-service.js +35 -13
  229. package/dist/src/tasks/project-monitoring-service.d.ts +2 -0
  230. package/dist/src/tasks/project-monitoring-service.js +4 -1
  231. package/dist/src/tui/backends/embedded-backend.js +1 -1
  232. package/dist/src/tui/tui-startup-resources.js +1 -1
  233. package/dist/src/tui/tui.js +1 -1
  234. package/dist/src/user-context/access-policy.d.ts +11 -0
  235. package/dist/src/user-context/access-policy.js +26 -0
  236. package/dist/src/user-model/capture/executor.d.ts +10 -0
  237. package/dist/src/user-model/capture/executor.js +99 -3
  238. package/dist/src/user-model/capture/semantic.d.ts +18 -0
  239. package/dist/src/user-model/capture/semantic.js +72 -6
  240. package/dist/src/user-model/goals.d.ts +4 -0
  241. package/dist/src/user-model/goals.js +4 -2
  242. package/dist/src/voice/realtime/agentEngine.js +0 -1
  243. package/dist/src/work-discovery/service.js +1 -1
  244. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  245. package/package.json +1 -1
  246. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-C1rXNUAG.js +0 -1
  247. package/dist/gateway/static/root/assets/apps-page-jOvT-fzU.js +0 -1
  248. package/dist/gateway/static/root/assets/automations-workspace-BKjKTlW8.js +0 -6
  249. package/dist/gateway/static/root/assets/browser-settings-page-Dzq18pO1.js +0 -8
  250. package/dist/gateway/static/root/assets/capabilities-settings-panel-DW4SBQf4.js +0 -7
  251. package/dist/gateway/static/root/assets/channels-settings-57OGuewD.js +0 -1
  252. package/dist/gateway/static/root/assets/code-editor-D4_k-6QN.js +0 -1
  253. package/dist/gateway/static/root/assets/connectors-page-CT_I3kbR.js +0 -2
  254. package/dist/gateway/static/root/assets/files-D6vf3S30.js +0 -1
  255. package/dist/gateway/static/root/assets/home-page-BiHwiBnQ.js +0 -1
  256. package/dist/gateway/static/root/assets/html-workspace-editor-C3DKAkMc.js +0 -1
  257. package/dist/gateway/static/root/assets/index-aBs0EfQB.js +0 -72
  258. package/dist/gateway/static/root/assets/local-app-workbench-page-eBFVWmtH.js +0 -2
  259. package/dist/gateway/static/root/assets/logs-page-ClvcWlL6.js +0 -2
  260. package/dist/gateway/static/root/assets/markdown-editor-nDLmA_LF.js +0 -2
  261. package/dist/gateway/static/root/assets/markdown-split-D7V3j0vE.js +0 -1
  262. package/dist/gateway/static/root/assets/messages-W5P19VTF.js +0 -11
  263. package/dist/gateway/static/root/assets/note-detail-panel-CEEvR-fV.js +0 -5
  264. package/dist/gateway/static/root/assets/notes-page-BLqgXNCx.js +0 -8
  265. package/dist/gateway/static/root/assets/project-detail-page-CIiFJ5tk.js +0 -1
  266. package/dist/gateway/static/root/assets/projects-page-B3UF-Pfm.js +0 -1
  267. package/dist/gateway/static/root/assets/remote-access-hub-BUtpkJPG.js +0 -1
  268. package/dist/gateway/static/root/assets/sessions-page-UgJmG-V4.js +0 -1
  269. package/dist/gateway/static/root/assets/settings-advanced-gate-DDCzpdkl.js +0 -1
  270. package/dist/gateway/static/root/assets/shares-settings-BdsqnCYj.js +0 -1
  271. package/dist/gateway/static/root/assets/skill-reload-api-ghzAQKna.js +0 -1
  272. package/dist/gateway/static/root/assets/user-model-page-W3GTm6nA.js +0 -2
  273. package/dist/gateway/static/root/assets/workflows-page-BbAV3h7n.js +0 -5
@@ -5,6 +5,8 @@ import "../../knowledge-memory/index.js";
5
5
  import { retrievalLexicalSimilarity } from "../../retrieval/textFeatures.js";
6
6
  import { calculateExecutionValue } from "../../user-model/importance.js";
7
7
  import { listUserAssertions } from "../../user-model/repository.js";
8
+ import { getExecutionContextFeedbackScores } from "./audit.js";
9
+ import { buildUserContextBlock } from "../memory/context-fence.js";
8
10
  import { randomUUID } from "node:crypto";
9
11
  //#region src/agent/context/execution-context.ts
10
12
  function scopeVisible(scope, context) {
@@ -16,6 +18,22 @@ function scopeVisible(scope, context) {
16
18
  session: context.sessionId
17
19
  }[scope.type];
18
20
  }
21
+ function applicabilityVisible(applicability, context) {
22
+ const operation = applicability.operation;
23
+ if (typeof operation === "string" && operation !== "response") return false;
24
+ if (Array.isArray(operation) && !operation.some((value) => value === "response")) return false;
25
+ for (const [key, actual] of [
26
+ ["agentId", context.agentId],
27
+ ["workspaceId", context.workspaceId],
28
+ ["projectId", context.projectId],
29
+ ["sessionId", context.sessionId]
30
+ ]) {
31
+ const expected = applicability[key];
32
+ if (typeof expected === "string" && expected !== actual) return false;
33
+ if (Array.isArray(expected) && !expected.some((value) => typeof value === "string" && value === actual)) return false;
34
+ }
35
+ return true;
36
+ }
19
37
  function urgency(assertion, asOf) {
20
38
  const deadline = assertion.validTo ?? assertion.reviewAt;
21
39
  if (deadline === void 0) return 0;
@@ -23,7 +41,7 @@ function urgency(assertion, asOf) {
23
41
  if (remaining <= 0) return 1;
24
42
  return Math.max(0, 1 - remaining / (720 * 60 * 60 * 1e3));
25
43
  }
26
- function rankAssertion(assertion, query, asOf) {
44
+ function rankAssertion(assertion, query, asOf, feedbackScore) {
27
45
  const taskRelevance = retrievalLexicalSimilarity(query, `${assertion.statement} ${assertion.normalizedValue}`);
28
46
  return {
29
47
  assertion,
@@ -34,12 +52,14 @@ function rankAssertion(assertion, query, asOf) {
34
52
  actionability: assertion.actionability,
35
53
  taskRelevance,
36
54
  urgency: urgency(assertion, asOf)
37
- }),
55
+ }) + feedbackScore,
38
56
  reasons: [
39
57
  taskRelevance >= .35 ? "task_relevant" : "",
40
58
  assertion.declaredImportance !== void 0 ? "user_declared_importance" : "",
41
59
  assertion.consequence === "critical" || assertion.consequence === "high" ? "high_consequence" : "",
42
- assertion.kind === "identity" || assertion.kind === "preference" ? "stable_personalization" : ""
60
+ assertion.kind === "identity" || assertion.kind === "preference" ? "stable_personalization" : "",
61
+ feedbackScore > 0 ? "historically_helpful" : "",
62
+ feedbackScore < 0 ? "historically_irrelevant" : ""
43
63
  ].filter(Boolean)
44
64
  };
45
65
  }
@@ -93,24 +113,33 @@ function loadPriorities(context, asOf) {
93
113
  }
94
114
  function buildExecutionContext(request) {
95
115
  const asOf = request.asOf ?? Date.now();
96
- const assertions = listUserAssertions({
116
+ const includeUserModel = request.includeUserModel !== false;
117
+ const feedbackScores = getExecutionContextFeedbackScores();
118
+ const assertions = includeUserModel ? listUserAssertions({
97
119
  statuses: ["active"],
98
120
  limit: 1e3
99
- }).filter((item) => scopeVisible(getAssertionScope(item.slotId), request)).filter((item) => (item.validFrom === void 0 || item.validFrom <= asOf) && (item.validTo === void 0 || item.validTo >= asOf)).filter((item) => item.sensitivity !== "secret" && item.sensitivity !== "regulated" && item.disclosurePolicy !== "ask_before_reference").map((item) => rankAssertion(item, request.query, asOf)).filter((item) => item.score >= .12 || item.reasons.includes("high_consequence")).sort((left, right) => right.score - left.score).slice(0, Math.max(1, Math.min(100, request.maxAssertions ?? 20)));
121
+ }).filter((item) => scopeVisible(getAssertionScope(item.slotId), request)).filter((item) => applicabilityVisible(item.applicability, request)).filter((item) => (item.validFrom === void 0 || item.validFrom <= asOf) && (item.validTo === void 0 || item.validTo >= asOf)).filter((item) => item.authority !== "external_untrusted").filter((item) => item.sensitivity !== "secret" && item.sensitivity !== "regulated" && item.disclosurePolicy !== "ask_before_reference").map((item) => rankAssertion(item, request.query, asOf, feedbackScores.get(`assertion:${item.id}`) ?? 0)).filter((item) => item.score >= .12 || item.reasons.includes("high_consequence")).sort((left, right) => right.score - left.score).slice(0, Math.max(1, Math.min(100, request.maxAssertions ?? 20))) : [];
122
+ const maxKnowledge = Math.max(0, Math.min(100, request.maxKnowledge ?? 12));
123
+ const knowledge = request.includeKnowledge === false || maxKnowledge === 0 ? [] : searchKnowledgeItems({
124
+ query: request.query,
125
+ context: request,
126
+ asOf,
127
+ trustedOnly: true,
128
+ sources: request.knowledgeSources,
129
+ limit: Math.min(100, maxKnowledge * 2)
130
+ }).map((item) => ({
131
+ item,
132
+ score: retrievalLexicalSimilarity(request.query, item.content) * .7 + item.importance * .3 + (feedbackScores.get(`knowledge:${item.id}`) ?? 0)
133
+ })).sort((left, right) => right.score - left.score).slice(0, maxKnowledge).map(({ item }) => item);
100
134
  return {
101
135
  traceId: randomUUID(),
102
136
  asOf,
103
137
  query: request.query,
104
- rules: loadRules(request),
138
+ rules: includeUserModel ? loadRules(request) : [],
105
139
  assertions,
106
- goals: loadGoals(request, asOf),
107
- priorities: loadPriorities(request, asOf),
108
- knowledge: searchKnowledgeItems({
109
- query: request.query,
110
- context: request,
111
- asOf,
112
- limit: request.maxKnowledge ?? 12
113
- })
140
+ goals: includeUserModel ? loadGoals(request, asOf) : [],
141
+ priorities: includeUserModel ? loadPriorities(request, asOf) : [],
142
+ knowledge
114
143
  };
115
144
  }
116
145
  function getAssertionScope(slotId) {
@@ -130,6 +159,41 @@ function renderExecutionContext(context) {
130
159
  if (context.knowledge.length) sections.push(`Relevant knowledge:\n${context.knowledge.map((item) => `- ${item.content}`).join("\n")}`);
131
160
  return sections.join("\n\n");
132
161
  }
162
+ function fitExecutionContextToChars(context, maxChars) {
163
+ const selected = {
164
+ ...context,
165
+ rules: [],
166
+ assertions: [],
167
+ goals: [],
168
+ priorities: [],
169
+ knowledge: []
170
+ };
171
+ const fits = () => buildUserContextBlock(renderExecutionContext(selected)).length <= maxChars;
172
+ for (const item of context.rules) {
173
+ selected.rules.push(item);
174
+ if (!fits()) selected.rules.pop();
175
+ }
176
+ for (const item of context.assertions) {
177
+ selected.assertions.push(item);
178
+ if (!fits()) selected.assertions.pop();
179
+ }
180
+ for (const item of context.goals) {
181
+ selected.goals.push(item);
182
+ if (!fits()) selected.goals.pop();
183
+ }
184
+ for (const item of context.priorities) {
185
+ selected.priorities.push(item);
186
+ if (!fits()) selected.priorities.pop();
187
+ }
188
+ for (const item of context.knowledge) {
189
+ selected.knowledge.push(item);
190
+ if (!fits()) selected.knowledge.pop();
191
+ }
192
+ return {
193
+ context: selected,
194
+ rendered: buildUserContextBlock(renderExecutionContext(selected))
195
+ };
196
+ }
133
197
  function evaluateToolGate(context, operation) {
134
198
  for (const rule of context.rules) {
135
199
  if (rule.enforcementLevel !== "tool_gate") continue;
@@ -144,4 +208,4 @@ function evaluateToolGate(context, operation) {
144
208
  return { allowed: true };
145
209
  }
146
210
  //#endregion
147
- export { buildExecutionContext, evaluateToolGate, renderExecutionContext };
211
+ export { buildExecutionContext, evaluateToolGate, fitExecutionContextToChars, renderExecutionContext };
@@ -0,0 +1,50 @@
1
+ import type { KnowledgeItem, KnowledgeSource, KnowledgeVisibilityContext } from '../../knowledge-memory/index.js';
2
+ import type { UserAssertion } from '../../user-model/domain.js';
3
+ export type RuleEnforcementLevel = 'prompt' | 'planner' | 'tool_gate';
4
+ export interface ExecutionRule {
5
+ id: string;
6
+ statement: string;
7
+ priority: number;
8
+ enforcementLevel: RuleEnforcementLevel;
9
+ conditions: Record<string, unknown>;
10
+ }
11
+ export interface RankedExecutionAssertion {
12
+ assertion: UserAssertion;
13
+ score: number;
14
+ reasons: string[];
15
+ }
16
+ export interface ExecutionGoal {
17
+ id: string;
18
+ title: string;
19
+ desiredOutcome: string;
20
+ status: string;
21
+ declaredImportance?: number;
22
+ targetAt?: number;
23
+ }
24
+ export interface ExecutionPriority {
25
+ id: string;
26
+ targetType: string;
27
+ targetId: string;
28
+ rank: 'primary' | 'secondary' | 'background';
29
+ urgency: number;
30
+ validTo: number;
31
+ }
32
+ export interface ExecutionContext {
33
+ traceId: string;
34
+ asOf: number;
35
+ query: string;
36
+ rules: ExecutionRule[];
37
+ assertions: RankedExecutionAssertion[];
38
+ goals: ExecutionGoal[];
39
+ priorities: ExecutionPriority[];
40
+ knowledge: KnowledgeItem[];
41
+ }
42
+ export interface ExecutionContextRequest extends KnowledgeVisibilityContext {
43
+ query: string;
44
+ asOf?: number;
45
+ maxAssertions?: number;
46
+ maxKnowledge?: number;
47
+ includeUserModel?: boolean;
48
+ includeKnowledge?: boolean;
49
+ knowledgeSources?: readonly KnowledgeSource[];
50
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,4 @@
1
+ import type { KnowledgeSource } from '../../knowledge-memory/index.js';
1
2
  export type ExecutionObjective = {
2
3
  kind: 'task';
3
4
  id: string;
@@ -23,4 +24,7 @@ export interface ExecutionScope {
23
24
  }
24
25
  export declare function resolveExecutionScope(sessionKey: string): ExecutionScope;
25
26
  export declare function formatCurrentWorkForPrompt(scope: ExecutionScope): string | undefined;
26
- export declare function buildExecutionScopeContextForPrompt(sessionKey: string): string | undefined;
27
+ export declare function buildExecutionScopeContextForPrompt(sessionKey: string, options?: {
28
+ includeKnowledge?: boolean;
29
+ knowledgeSources?: readonly KnowledgeSource[];
30
+ }): string | undefined;
@@ -77,9 +77,13 @@ function formatCurrentWorkForPrompt(scope) {
77
77
  lines.push("", "Keep work inside this objective and its project scope. Treat the acceptance criteria and completion evidence as the definition of done.");
78
78
  return lines.join("\n");
79
79
  }
80
- function buildExecutionScopeContextForPrompt(sessionKey) {
80
+ function buildExecutionScopeContextForPrompt(sessionKey, options = {}) {
81
81
  const scope = resolveExecutionScope(sessionKey);
82
- return [buildActiveProjectContextForPrompt(sessionKey, { knowledgeQuery: scope.objective?.objective }), formatCurrentWorkForPrompt(scope)].filter((section) => Boolean(section?.trim())).join("\n\n") || void 0;
82
+ return [buildActiveProjectContextForPrompt(sessionKey, {
83
+ knowledgeQuery: scope.objective?.objective,
84
+ includeKnowledge: options.includeKnowledge,
85
+ knowledgeSources: options.knowledgeSources
86
+ }), formatCurrentWorkForPrompt(scope)].filter((section) => Boolean(section?.trim())).join("\n\n") || void 0;
83
87
  }
84
88
  //#endregion
85
89
  export { buildExecutionScopeContextForPrompt, formatCurrentWorkForPrompt, resolveExecutionScope };
@@ -1,4 +1,5 @@
1
1
  import type { Project } from '../../projects/types.js';
2
+ import { type KnowledgeSource } from '../../knowledge-memory/index.js';
2
3
  export interface ProjectTaskContext {
3
4
  title: string;
4
5
  state: string;
@@ -6,6 +7,8 @@ export interface ProjectTaskContext {
6
7
  }
7
8
  export declare function buildActiveProjectContextForPrompt(sessionKey: string, options?: {
8
9
  knowledgeQuery?: string;
10
+ includeKnowledge?: boolean;
11
+ knowledgeSources?: readonly KnowledgeSource[];
9
12
  }): string | undefined;
10
13
  export declare function formatActiveProjectContextForPrompt(input: {
11
14
  project: Project;
@@ -4,7 +4,7 @@ import { TaskReadModelProjector } from "../../tasks/task-read-model-projector.js
4
4
  import { LocalAppStore } from "../../local-apps/store.js";
5
5
  import { ProjectStore } from "../../projects/project-store.js";
6
6
  import { getProjectForSession, getProjectWorkspacePathForSession } from "../../projects/workspace.js";
7
- import { listKnowledgeItems, searchKnowledgeItems } from "../../knowledge-memory/repository.js";
7
+ import { knowledgeSourceAllowed, listKnowledgeItems, searchKnowledgeItems } from "../../knowledge-memory/repository.js";
8
8
  import "../../knowledge-memory/index.js";
9
9
  //#region src/agent/context/project-context.ts
10
10
  const MAX_TEXT = 1200;
@@ -49,7 +49,7 @@ function buildActiveProjectContextForPrompt(sessionKey, options = {}) {
49
49
  state: `${task.phase}/${new TaskReadModelProjector().project(task).operationalState}`
50
50
  })),
51
51
  recentSessions: new ProjectStore().getRecentSessions(project.id, MAX_SESSIONS),
52
- knowledgeItems: selectProjectKnowledge({
52
+ knowledgeItems: options.includeKnowledge === false ? [] : selectProjectKnowledge({
53
53
  relevant: options.knowledgeQuery?.trim() ? searchKnowledgeItems({
54
54
  query: options.knowledgeQuery,
55
55
  context: {
@@ -58,12 +58,14 @@ function buildActiveProjectContextForPrompt(sessionKey, options = {}) {
58
58
  projectId: project.id,
59
59
  sessionId: sessionKey
60
60
  },
61
+ trustedOnly: true,
62
+ sources: options.knowledgeSources,
61
63
  limit: MAX_RELEVANT_KNOWLEDGE
62
64
  }) : [],
63
65
  recent: listKnowledgeItems({
64
66
  statuses: ["active"],
65
67
  limit: 500
66
- }).filter((item) => item.scope.type === "project" && item.scope.id === project.id).slice(0, MAX_RECENT_KNOWLEDGE)
68
+ }).filter((item) => item.scope.type === "project" && item.scope.id === project.id).filter((item) => item.originClass !== "untrusted").filter((item) => !options.knowledgeSources || knowledgeSourceAllowed(item, options.knowledgeSources)).slice(0, MAX_RECENT_KNOWLEDGE)
67
69
  }),
68
70
  localApp: localApp ? {
69
71
  extensionId: localApp.extensionId,
@@ -1,6 +1,6 @@
1
1
  import { init_paths, resolveModelsJsonPath } from "../../config/paths.js";
2
- import { init_sync_provider_auth, resolveProviderApiKeySync } from "../../auth/sync-provider-auth.js";
3
2
  import { CredentialResolver, init_credentials } from "../../auth/credentials.js";
3
+ import { init_sync_provider_auth, resolveProviderApiKeySync } from "../../auth/sync-provider-auth.js";
4
4
  import { XopcModelCredentialStore, init_model_credential_store } from "../../auth/model-credential-store.js";
5
5
  import { init_register_bundled_oauth_flows, registerBundledOAuthFlows } from "../../providers/register-bundled-oauth-flows.js";
6
6
  import { init_register_runtime_providers, registerRuntimeProviders } from "../../providers/register-runtime-providers.js";
@@ -1,8 +1,8 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
3
  import { parseTurnOutcome } from "../../../packages/gateway-contract/src/turn-outcome.js";
4
- import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
5
4
  import { init_providers, resolveModel } from "../../providers/index.js";
5
+ import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
6
6
  import { resolveAgentTurnTimeoutMs } from "../orchestration/run-agent-turn-with-timeout.js";
7
7
  import { resolvePromptCachePolicy } from "../../providers/prompt-cache-plan.js";
8
8
  import { evaluateContextBudget } from "../memory/context-budget.js";
@@ -16,6 +16,7 @@ export interface DefaultExternalToolGatewayDeps {
16
16
  hookRunner?: ExtensionHookRunner;
17
17
  toolExecutorConfig?: Partial<ToolExecutorConfig>;
18
18
  getMemoryManager?: () => MemoryManager;
19
+ canAccessMemory: () => boolean;
19
20
  }
20
21
  export declare function createDefaultExternalToolGatewayTools(deps: DefaultExternalToolGatewayDeps): import("@earendil-works/pi-agent-core").AgentTool<import("typebox").TSchema, any>[];
21
22
  export { ExternalToolService } from './service.js';
@@ -32,6 +32,7 @@ function createDefaultExternalToolGatewayTools(deps) {
32
32
  getMemoryManager: deps.getMemoryManager,
33
33
  disabledTools: deps.disabledTools,
34
34
  getSessionKey: () => deps.getCurrentContext()?.sessionKey,
35
+ canAccess: deps.canAccessMemory,
35
36
  hookRunner: deps.hookRunner,
36
37
  toolExecutorConfig: deps.toolExecutorConfig
37
38
  })
@@ -6,6 +6,7 @@ export interface MemoryToolProviderDeps {
6
6
  getMemoryManager?: () => MemoryManager;
7
7
  disabledTools?: Set<string>;
8
8
  getSessionKey: () => string | undefined;
9
+ canAccess: () => boolean;
9
10
  hookRunner?: ExtensionHookRunner;
10
11
  toolExecutorConfig?: Partial<ToolExecutorConfig>;
11
12
  }
@@ -44,6 +44,7 @@ var MemoryToolProvider = class {
44
44
  return executeToolWithProtection(resolved.tool, context.toolCallId, executionArgs, context.signal, context.onUpdate, this.deps.toolExecutorConfig);
45
45
  }
46
46
  entries() {
47
+ if (!this.deps.canAccess()) return [];
47
48
  return (this.deps.getMemoryManager?.().getExternalToolEntries() ?? []).filter(({ tool }) => !this.deps.disabledTools?.has(tool.name));
48
49
  }
49
50
  resolve(toolRef) {
@@ -1,7 +1,7 @@
1
1
  import { getAgentDefaultImageModelConfig, getAgentDefaultModelRef, init_schema, parseModelRef } from "../../config/schema.js";
2
2
  import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
3
- import { resolveEffectiveAgentConfigForAgent } from "../../config/agent-profile.js";
4
3
  import { getDefaultModelSync, getModelsByProvider, init_providers, isProviderConfiguredSync, resolveModel } from "../../providers/index.js";
4
+ import { resolveEffectiveAgentConfigForAgent } from "../../config/agent-profile.js";
5
5
  import { resolveAgentModelFallbackValues, resolveAgentModelPrimaryValue } from "../../config/model-input.js";
6
6
  import { buildCapabilityPlansForConfig } from "../../capabilities/readiness/from-config.js";
7
7
  import "../../capabilities/readiness/index.js";
@@ -1,3 +1,4 @@
1
+ import { stripRuntimeUserMessageEnvelope } from "../../../packages/gateway-contract/src/user-message-display.js";
1
2
  import { extractProfileAgentId } from "../../config/agent-profile.js";
2
3
  import { readAgentMessageContent } from "../memory/agent-message-access.js";
3
4
  import { readMediaReferenceBase64 } from "../../media/media-reference.js";
@@ -134,7 +135,10 @@ function pendingMatchesMessage(pending, message) {
134
135
  const actualText = messageTextForPendingCompare(message);
135
136
  if (!pendingText) return true;
136
137
  if (!actualText) return false;
137
- return actualText.includes(pendingText) || pendingText.includes(actualText);
138
+ if (actualText.includes(pendingText) || pendingText.includes(actualText)) return true;
139
+ const pendingUserText = stripRuntimeUserMessageEnvelope(pendingText).trim();
140
+ const actualUserText = stripRuntimeUserMessageEnvelope(actualText).trim();
141
+ return Boolean(pendingUserText) && (actualUserText === pendingUserText || actualUserText.includes(pendingUserText) || pendingUserText.includes(actualUserText));
138
142
  }
139
143
  function setPendingTranscriptUserMessage(sessionKey, message) {
140
144
  assertTranscriptUserMessage(message);
@@ -1,5 +1,5 @@
1
- import { init_paths, resolveMcpOAuthPath } from "../../../config/paths.js";
2
1
  import { init_write_file_atomic, writeTextAtomic } from "../../../infra/write-file-atomic.js";
2
+ import { init_paths, resolveMcpOAuthPath } from "../../../config/paths.js";
3
3
  import { createHash } from "node:crypto";
4
4
  import { readFile, rm } from "node:fs/promises";
5
5
  //#region src/agent/mcp/oauth/mcp-oauth-store.ts
@@ -9,6 +9,7 @@ export interface PromoteCompactionLedgerInput {
9
9
  handover: CompactionHandover;
10
10
  audit: CompactionAudit;
11
11
  sourceEntries: readonly TranscriptSourceEntry[];
12
+ writePolicy: 'deny' | 'confirm' | 'allow';
12
13
  }
13
14
  export interface PromoteCompactionLedgerResult {
14
15
  episodicRecordIds: string[];
@@ -84,6 +84,11 @@ function importanceFor(item) {
84
84
  return .5;
85
85
  }
86
86
  function promoteCompactionLedger(input) {
87
+ if (input.writePolicy === "deny") return {
88
+ episodicRecordIds: [],
89
+ durableRecordIds: [],
90
+ rejectedRecordIds: []
91
+ };
87
92
  const sourceById = new Map(input.sourceEntries.map((entry) => [entry.entryId, entry]));
88
93
  const entriesByTurn = /* @__PURE__ */ new Map();
89
94
  const entriesByRound = /* @__PURE__ */ new Map();
@@ -124,7 +129,7 @@ function promoteCompactionLedger(input) {
124
129
  content: item.text,
125
130
  canonicalKey: `compaction:${input.sessionId}:${item.id}`,
126
131
  confidence: input.audit.status === "passed" ? .82 : .65,
127
- status: active ? "candidate" : "archived",
132
+ status: active ? input.writePolicy === "allow" && originClass !== "untrusted" ? "active" : "candidate" : "archived",
128
133
  importance: importanceFor(item),
129
134
  originClass,
130
135
  sourceAgentId: input.sourceAgentId,
@@ -158,7 +163,7 @@ function promoteCompactionLedger(input) {
158
163
  content: item.text,
159
164
  canonicalKey: `durable:${item.kind}:${stableId("fact", item.text)}`,
160
165
  confidence: .82,
161
- status: "active",
166
+ status: input.writePolicy === "allow" ? "active" : "candidate",
162
167
  importance: importanceFor(item),
163
168
  originClass: "agent",
164
169
  sourceSessionId: input.sessionKey,
@@ -1,6 +1,6 @@
1
1
  export { buildUserContextBlock, sanitizeUserContextFenceEscapes, } from './context-fence.js';
2
2
  export { createMemoryManagerFromConfig } from './create-memory-manager.js';
3
- export { isMemorySubsystemEnabled, shouldPlanUserContextThisTurn, } from './memory-config.js';
3
+ export { isMemorySubsystemEnabled } from './memory-config.js';
4
4
  export { MemoryManager } from './manager.js';
5
5
  export { discoverMemoryPlugins } from './plugin-discovery.js';
6
6
  export type { MemoryPluginMetadata } from './plugin-discovery.js';
@@ -1,8 +1,8 @@
1
- import { isMemorySubsystemEnabled, shouldPlanUserContextThisTurn } from "./memory-config.js";
1
+ import { isMemorySubsystemEnabled } from "./memory-config.js";
2
2
  import { extractAgentUserPlainText } from "./user-message-text.js";
3
+ import { buildUserContextBlock, sanitizeUserContextFenceEscapes } from "./context-fence.js";
3
4
  import { MemoryManager } from "./manager.js";
4
5
  import { discoverMemoryPlugins } from "./plugin-discovery.js";
5
6
  import { createMemoryManagerFromConfig } from "./create-memory-manager.js";
6
- import { buildUserContextBlock, sanitizeUserContextFenceEscapes } from "./context-fence.js";
7
7
  import { StubMemoryProvider } from "./stub-memory-provider.js";
8
- export { MemoryManager, StubMemoryProvider, buildUserContextBlock, createMemoryManagerFromConfig, discoverMemoryPlugins, extractAgentUserPlainText, isMemorySubsystemEnabled, sanitizeUserContextFenceEscapes, shouldPlanUserContextThisTurn };
8
+ export { MemoryManager, StubMemoryProvider, buildUserContextBlock, createMemoryManagerFromConfig, discoverMemoryPlugins, extractAgentUserPlainText, isMemorySubsystemEnabled, sanitizeUserContextFenceEscapes };
@@ -1,8 +1,3 @@
1
1
  import type { Config } from '../../config/schema.js';
2
2
  /** Whether generic workspace and provider-backed memory is available. */
3
3
  export declare function isMemorySubsystemEnabled(config: Config | undefined): boolean;
4
- /**
5
- * Whether to prefix the user message with prefetched external memory this turn.
6
- * `first-turn` only injects on turn 1. `contextCadence` N injects on turns 1, N+1, 2N+1, …
7
- */
8
- export declare function shouldPlanUserContextThisTurn(_config: Config | undefined, turnNumber: number): boolean;
@@ -4,12 +4,5 @@ function isMemorySubsystemEnabled(config) {
4
4
  if (!config) return true;
5
5
  return config.userContext.enabled && config.userContext.knowledgeMemory.enabled;
6
6
  }
7
- /**
8
- * Whether to prefix the user message with prefetched external memory this turn.
9
- * `first-turn` only injects on turn 1. `contextCadence` N injects on turns 1, N+1, 2N+1, …
10
- */
11
- function shouldPlanUserContextThisTurn(_config, turnNumber) {
12
- return turnNumber >= 1;
13
- }
14
7
  //#endregion
15
- export { isMemorySubsystemEnabled, shouldPlanUserContextThisTurn };
8
+ export { isMemorySubsystemEnabled };
@@ -1,6 +1,7 @@
1
1
  //#region src/agent/orchestration/context-overflow.ts
2
2
  const CONTEXT_OVERFLOW_PATTERNS = [
3
3
  /context(?:_|\s|-)*(?:length|window).*(?:exceed|limit|maximum|too (?:large|long))/i,
4
+ /\bexceed(?:s|ed)?\s+(?:the\s+)?context(?:_|\s|-)*(?:length|window)\b/i,
4
5
  /maximum context length/i,
5
6
  /max(?:imum)? tokens?.*(?:exceed|limit)/i,
6
7
  /too many tokens/i,
@@ -78,7 +78,7 @@ export interface RunDirectAgentTurnResult {
78
78
  lastAssistantText?: string;
79
79
  }
80
80
  /**
81
- * Convert a user message into an embedded turn, including the standard memory
82
- * prefetch + background-review nudge wiring used by every direct entry point.
81
+ * Convert a user message into an embedded turn, including structured context
82
+ * planning and background-review wiring used by every direct entry point.
83
83
  */
84
84
  export declare function runDirectAgentTurn(deps: RunDirectAgentTurnDeps, input: RunDirectAgentTurnInput): Promise<RunDirectAgentTurnResult>;
@@ -81,8 +81,8 @@ async function tryRunSlashCommand(deps, ctx, content, options) {
81
81
  }
82
82
  }
83
83
  /**
84
- * Convert a user message into an embedded turn, including the standard memory
85
- * prefetch + background-review nudge wiring used by every direct entry point.
84
+ * Convert a user message into an embedded turn, including structured context
85
+ * planning and background-review wiring used by every direct entry point.
86
86
  */
87
87
  async function runDirectAgentTurn(deps, input) {
88
88
  const turnId = input.runId ?? crypto.randomUUID();
@@ -267,8 +267,7 @@ async function* runProcessDirectStreaming(deps, input) {
267
267
  const skillTurn = deps.agentManager.prepareSkillTurn(sessionKey, mergedUserText);
268
268
  const textForAgent = skillTurn.text;
269
269
  const userMessage = await deps.buildTranscriptUserMessage(textForAgent, prepared, sessionKey);
270
- const turnSourceContexts = input.sourceContexts ?? [];
271
- const sourceContexts = [...turnSourceContexts];
270
+ const sourceContexts = [...input.sourceContexts ?? []];
272
271
  if (deps.sourceContextResolver) {
273
272
  const metadata = await deps.sessionStore.getMetadata(sessionKey).catch(() => null);
274
273
  const sourceBinding = metadata?.customData && typeof metadata.customData === "object" ? metadata.customData.sourceBinding : void 0;
@@ -283,11 +282,11 @@ async function* runProcessDirectStreaming(deps, input) {
283
282
  timestamp: userMessage.timestamp ?? Date.now(),
284
283
  content: readAgentMessageContent(userMessage),
285
284
  media: userMessage.media,
286
- metadata: turnSourceContexts.length > 0 ? { sourceContexts: turnSourceContexts.map(summarizeSourceContext) } : void 0
285
+ metadata: sourceContexts.length > 0 ? { sourceContexts: sourceContexts.map(summarizeSourceContext) } : void 0
287
286
  });
288
287
  if (textForAgent.trim()) deps.enqueueProvisionalSessionTitle?.(sessionKey, textForAgent);
289
288
  }
290
- const pendingUserMessage = turnSourceContexts.length > 0 ? injectSourceContextsIntoUserMessage(userMessage, turnSourceContexts) : userMessage;
289
+ const pendingUserMessage = sourceContexts.length > 0 ? injectSourceContextsIntoUserMessage(userMessage, sourceContexts) : userMessage;
291
290
  if (!isConnectionResume) setPendingTranscriptUserMessage(sessionKey, pendingUserMessage);
292
291
  try {
293
292
  const result = await deps.agentManager.withSkillCapabilities(sessionKey, skillTurn.activatedCapabilityNames, () => runDirectAgentTurn({
@@ -2,10 +2,10 @@ import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
3
  import { parseNoteAttachmentTarget } from "../notes/attachment-ref.js";
4
4
  import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
5
- import { applyConfigOverrides } from "../config/runtime-overrides.js";
6
5
  import { init_agent_scope, resolveAgentHomeDir, resolveDefaultAgentId } from "./agent-scope.js";
7
- import { extractProfileAgentId } from "../config/agent-profile.js";
8
6
  import { init_providers, resolveModel } from "../providers/index.js";
7
+ import { applyConfigOverrides } from "../config/runtime-overrides.js";
8
+ import { extractProfileAgentId } from "../config/agent-profile.js";
9
9
  import { extractTextContent } from "./context/workspace.js";
10
10
  import { effectiveWorkspacePathForSession } from "../session/session-workspace.js";
11
11
  import { getProjectForSession } from "../projects/workspace.js";
@@ -1,8 +1,8 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
3
  import { init_workspace_defaults, resolveDefaultAgentWorkspaceDir } from "../../config/workspace-defaults.js";
4
- import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
5
4
  import { init_providers, resolveModel } from "../../providers/index.js";
5
+ import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
6
6
  import { getExecutionEnvironmentForSession } from "../../execution-environments/subject.js";
7
7
  import { effectiveWorkspacePathForSession, projectWorkspacePath } from "../../session/session-workspace.js";
8
8
  import { getProjectForSession } from "../../projects/workspace.js";
@@ -1,5 +1,5 @@
1
- import { init_paths, resolveSkillsLockPath } from "../../config/paths.js";
2
1
  import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
2
+ import { init_paths, resolveSkillsLockPath } from "../../config/paths.js";
3
3
  import { existsSync, readFileSync } from "node:fs";
4
4
  //#region src/agent/skills/hub-lock.ts
5
5
  /**
@@ -1,15 +1,15 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
3
  import { TaskRunRepository } from "../../tasks/task-run-repository.js";
4
+ import { extractAssistantText, getAssistantMessageErrorReason, stripCodeFences } from "../../providers/model-response.js";
4
5
  import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
5
- import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
6
6
  import { getApiKey, init_providers, resolveModel } from "../../providers/index.js";
7
+ import { completeWithResolvedCredentials } from "../../providers/model-call.js";
8
+ import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
7
9
  import { TaskRepository } from "../../tasks/task-repository.js";
8
10
  import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
9
11
  import { readWorkspaceRevision } from "../coding/workspace-revision.js";
10
- import { completeWithResolvedCredentials } from "../../providers/model-call.js";
11
12
  import { TaskApplicationService } from "../../tasks/task-application-service.js";
12
- import { extractAssistantText, getAssistantMessageErrorReason, stripCodeFences } from "../../providers/model-response.js";
13
13
  //#region src/agent/tasks/task-judge-service.ts
14
14
  init_schema();
15
15
  init_providers();
@@ -92,6 +92,7 @@ export interface CreateCoreToolsOptions {
92
92
  getPrimaryModel?: () => Model<Api>;
93
93
  getMemoryManager?: () => MemoryManager;
94
94
  agentId?: string;
95
+ sessionKey?: string;
95
96
  /** When set, registers local skill tools plus marketplace discovery for this workspace. */
96
97
  getSkillManager?: () => SkillManager;
97
98
  }