@xopcai/xopc 0.0.124 → 0.0.125

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 (304) 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/Combination-BzaXOLd9.js +41 -0
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-B5uSVAyJ.js → agent-avatar-dicebear-BKDKICZV.js} +1 -1
  5. package/dist/gateway/static/root/assets/agents-BnTB7-c5.js +2 -0
  6. package/dist/gateway/static/root/assets/app-management-settings-panel-DI4BqHKW.js +1 -0
  7. package/dist/gateway/static/root/assets/appearance-settings-6_ie3NQ4.js +1 -0
  8. package/dist/gateway/static/root/assets/apps-page-B6bG65SW.js +1 -0
  9. package/dist/gateway/static/root/assets/{archive-plugin-CXUGRp2i.js → archive-plugin-kUHEJ1HK.js} +1 -1
  10. package/dist/gateway/static/root/assets/{attachment-load-Cmiub3Wg.js → attachment-load-Dm-9prpU.js} +1 -1
  11. package/dist/gateway/static/root/assets/automation-suggestion-card-OTxQTPnC.js +1 -0
  12. package/dist/gateway/static/root/assets/automations-page-1lVbo0dS.js +1 -0
  13. package/dist/gateway/static/root/assets/{binary-plugins-0Izz-N3p.js → binary-plugins-DllA_jQ0.js} +1 -1
  14. package/dist/gateway/static/root/assets/{block-editor-C1Kv0IkJ.js → block-editor-Cm6CWNj1.js} +6 -6
  15. package/dist/gateway/static/root/assets/browser-settings-page-CzDBlOK0.js +8 -0
  16. package/dist/gateway/static/root/assets/capability-presets-api-VJ89b6I2.js +1 -0
  17. package/dist/gateway/static/root/assets/capability-presets-settings-panel-BaPj8wC2.js +1 -0
  18. package/dist/gateway/static/root/assets/{channel-recipient-api-BeA2aVor.js → channel-recipient-api-B5PwBEUx.js} +1 -1
  19. package/dist/gateway/static/root/assets/channels-settings-Df4m7p1k.js +1 -0
  20. package/dist/gateway/static/root/assets/code-editor-gbRgS14t.js +1 -0
  21. package/dist/gateway/static/root/assets/connectors-page-BMTphmHS.js +2 -0
  22. package/dist/gateway/static/root/assets/{directory-picker-path-field-2rjzUu57.js → directory-picker-path-field-DySMzOF6.js} +1 -1
  23. package/dist/gateway/static/root/assets/dist-By6Rh2ee.js +1 -0
  24. package/dist/gateway/static/root/assets/dist-CkobR7mk.js +1 -0
  25. package/dist/gateway/static/root/assets/dist-DokQNVMQ.js +1 -0
  26. package/dist/gateway/static/root/assets/dreaming-settings-D_AjSnV_.js +3 -0
  27. package/dist/gateway/static/root/assets/extension-debug-page-BaM0FpW7.js +1 -0
  28. package/dist/gateway/static/root/assets/extension-page-DuZWVOGA.js +1 -0
  29. package/dist/gateway/static/root/assets/extension-settings-page-DarVtbmJ.js +1 -0
  30. package/dist/gateway/static/root/assets/{fetch-BU5S0Sn7.js → fetch-NFKfkqrd.js} +1 -1
  31. package/dist/gateway/static/root/assets/{gateway-config-api-BIPGwrl1.js → gateway-config-api-CFEm9rgy.js} +1 -1
  32. package/dist/gateway/static/root/assets/gateway-settings-BMk2S5td.js +1 -0
  33. package/dist/gateway/static/root/assets/{gateway-startup-retry-Cd0Zz30N.js → gateway-startup-retry-Dtwh_yGg.js} +1 -1
  34. package/dist/gateway/static/root/assets/goal-create-dialog-BKP7ylcG.js +1 -0
  35. package/dist/gateway/static/root/assets/goal-detail-page-C2cTxf71.js +1 -0
  36. package/dist/gateway/static/root/assets/{goals-config-api-B95KdGMj.js → goals-config-api-DTWZNA_Y.js} +1 -1
  37. package/dist/gateway/static/root/assets/goals-page-CTmA3hWK.js +2 -0
  38. package/dist/gateway/static/root/assets/goals-settings-Bhct0ZT-.js +1 -0
  39. package/dist/gateway/static/root/assets/heartbeat-settings-C-UxSU4a.js +1 -0
  40. package/dist/gateway/static/root/assets/{html-workspace-editor-CQLWDiwE.js → html-workspace-editor-DV90ddkE.js} +1 -1
  41. package/dist/gateway/static/root/assets/index-BNHDd2j1.css +1 -0
  42. package/dist/gateway/static/root/assets/index-BPXLPMuY.js +193 -0
  43. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-DCjy2y4d.js +1 -0
  44. package/dist/gateway/static/root/assets/logs-page-CGc3_CQU.js +2 -0
  45. package/dist/gateway/static/root/assets/{markdown-editor-AssmZFx4.js → markdown-editor-BFOjBBla.js} +2 -2
  46. package/dist/gateway/static/root/assets/markdown-split-BaqxP-GQ.js +1 -0
  47. package/dist/gateway/static/root/assets/{media-plugins-BhIQU5yS.js → media-plugins-DQ_EXloK.js} +1 -1
  48. package/dist/gateway/static/root/assets/messages-CjuIJcZl.js +3 -0
  49. package/dist/gateway/static/root/assets/models-hub-panel-Drz4UQMb.js +2 -0
  50. package/dist/gateway/static/root/assets/notes-page-CY1ylng1.js +1 -0
  51. package/dist/gateway/static/root/assets/notes-workbench-X7IaD--t.js +2 -0
  52. package/dist/gateway/static/root/assets/page-tabs-EIZhLppK.js +1 -0
  53. package/dist/gateway/static/root/assets/{preview-open-alternatives-DGzet1d7.js → preview-open-alternatives-r_uB4Epr.js} +1 -1
  54. package/dist/gateway/static/root/assets/project-detail-page-DE5adRBE.js +1 -0
  55. package/dist/gateway/static/root/assets/projects-page-CuOb1k6F.js +1 -0
  56. package/dist/gateway/static/root/assets/remote-access-hub-BOxNrUVA.js +1 -0
  57. package/dist/gateway/static/root/assets/{save-bar-controls-Cqgb-jqa.js → save-bar-controls-B132Uf-2.js} +1 -1
  58. package/dist/gateway/static/root/assets/{schedule-field-DVZcI8Yt.js → schedule-field-B5qshALm.js} +1 -1
  59. package/dist/gateway/static/root/assets/{schema-form-Bj7sOxC8.js → schema-form-CvLmkdS9.js} +1 -1
  60. package/dist/gateway/static/root/assets/sessions-page-CY0IQcGW.js +1 -0
  61. package/dist/gateway/static/root/assets/settings-advanced-gate-D4NBNVCB.js +1 -0
  62. package/dist/gateway/static/root/assets/{settings-collapsible-section-BmXn-8N6.js → settings-collapsible-section-pRlvqsAf.js} +1 -1
  63. package/dist/gateway/static/root/assets/{settings-form-section-BnqYMWHR.js → settings-form-section-BBYUDLVd.js} +1 -1
  64. package/dist/gateway/static/root/assets/settings-page-DaO7zYZM.js +1 -0
  65. package/dist/gateway/static/root/assets/{settings-page-layout-CdWZU1hd.js → settings-page-layout-D8g9PAek.js} +1 -1
  66. package/dist/gateway/static/root/assets/setup-status-panel-Bks0CLLT.js +1 -0
  67. package/dist/gateway/static/root/assets/{share-preview-page-IB1v8i86.js → share-preview-page-v6-IOp8t.js} +1 -1
  68. package/dist/gateway/static/root/assets/shares-settings-CEZsKm9r.js +1 -0
  69. package/dist/gateway/static/root/assets/skill-reload-api-oTkHbb9W.js +1 -0
  70. package/dist/gateway/static/root/assets/skills-page-DigsbZ6K.js +2 -0
  71. package/dist/gateway/static/root/assets/{system-settings-panel-BxQ384RC.js → system-settings-panel-HUU2FFjM.js} +1 -1
  72. package/dist/gateway/static/root/assets/{typed-models-lib-BkcpvFYO.js → typed-models-lib-AH160QHh.js} +1 -1
  73. package/dist/gateway/static/root/assets/{use-channel-catalog-Cd0FaEQ4.js → use-channel-catalog-BXzDmjCQ.js} +1 -1
  74. package/dist/gateway/static/root/assets/{user-profile-settings-panel-DQ7NnRSY.js → user-profile-settings-panel-DxwnQvQ3.js} +1 -1
  75. package/dist/gateway/static/root/assets/{utils-YKhVf7Ka.js → utils-i5POEtqd.js} +1 -1
  76. package/dist/gateway/static/root/assets/{vendor-codemirror-CNP1wPe7.js → vendor-codemirror-BvNgyE1Q.js} +1 -1
  77. package/dist/gateway/static/root/assets/voice-api-key-field-CEJklEgb.js +1 -0
  78. package/dist/gateway/static/root/assets/work-item-detail-page-CD6FL_Rs.js +1 -0
  79. package/dist/gateway/static/root/assets/workflow-run-setup-panel-ClVVMgN-.js +3 -0
  80. package/dist/gateway/static/root/assets/{workflow-start-dialog-BNJVCWoS.js → workflow-start-dialog-Dv4ZA1T0.js} +1 -1
  81. package/dist/gateway/static/root/assets/workflows-page-OLQiUpoW.js +18 -0
  82. package/dist/gateway/static/root/index.html +8 -7
  83. package/dist/package.js +1 -1
  84. package/dist/src/agent/agent-manager.js +6 -2
  85. package/dist/src/agent/agent-manager.js.map +1 -1
  86. package/dist/src/agent/child-agent-factory.d.ts +2 -0
  87. package/dist/src/agent/child-agent-factory.js +2 -0
  88. package/dist/src/agent/child-agent-factory.js.map +1 -1
  89. package/dist/src/agent/coding/index.d.ts +1 -0
  90. package/dist/src/agent/coding/index.js +2 -0
  91. package/dist/src/agent/coding/turn-diff-tracker.d.ts +67 -0
  92. package/dist/src/agent/coding/turn-diff-tracker.js +233 -0
  93. package/dist/src/agent/coding/turn-diff-tracker.js.map +1 -0
  94. package/dist/src/agent/memory/dreaming/config.d.ts +2 -2
  95. package/dist/src/agent/memory/dreaming/config.js +3 -3
  96. package/dist/src/agent/memory/dreaming/config.js.map +1 -1
  97. package/dist/src/agent/memory/dreaming/constants.d.ts +1 -1
  98. package/dist/src/agent/memory/dreaming/constants.js +1 -1
  99. package/dist/src/agent/memory/dreaming/constants.js.map +1 -1
  100. package/dist/src/agent/memory/dreaming/deep-promotion.d.ts +1 -0
  101. package/dist/src/agent/memory/dreaming/deep-promotion.js +11 -20
  102. package/dist/src/agent/memory/dreaming/deep-promotion.js.map +1 -1
  103. package/dist/src/agent/memory/dreaming/events.d.ts +3 -3
  104. package/dist/src/agent/memory/dreaming/events.js +6 -6
  105. package/dist/src/agent/memory/dreaming/events.js.map +1 -1
  106. package/dist/src/agent/memory/dreaming/last-run.d.ts +2 -2
  107. package/dist/src/agent/memory/dreaming/last-run.js +1 -1
  108. package/dist/src/agent/memory/dreaming/last-run.js.map +1 -1
  109. package/dist/src/agent/memory/dreaming/light-sweep.d.ts +1 -1
  110. package/dist/src/agent/memory/dreaming/light-sweep.js +3 -3
  111. package/dist/src/agent/memory/dreaming/light-sweep.js.map +1 -1
  112. package/dist/src/agent/memory/dreaming/preview.d.ts +1 -0
  113. package/dist/src/agent/memory/dreaming/preview.js +2 -2
  114. package/dist/src/agent/memory/dreaming/preview.js.map +1 -1
  115. package/dist/src/agent/memory/dreaming/rem-patterns.d.ts +1 -1
  116. package/dist/src/agent/memory/dreaming/rem-patterns.js +13 -13
  117. package/dist/src/agent/memory/dreaming/rem-patterns.js.map +1 -1
  118. package/dist/src/agent/memory/dreaming/scope.d.ts +14 -0
  119. package/dist/src/agent/memory/dreaming/scope.js +27 -0
  120. package/dist/src/agent/memory/dreaming/scope.js.map +1 -0
  121. package/dist/src/agent/memory/dreaming/short-term-store.d.ts +4 -4
  122. package/dist/src/agent/memory/dreaming/short-term-store.js +17 -17
  123. package/dist/src/agent/memory/dreaming/short-term-store.js.map +1 -1
  124. package/dist/src/agent/orchestration/agent-event-handler.d.ts +2 -0
  125. package/dist/src/agent/orchestration/agent-event-handler.js +13 -0
  126. package/dist/src/agent/orchestration/agent-event-handler.js.map +1 -1
  127. package/dist/src/agent/orchestration/agent-orchestrator.js +22 -12
  128. package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
  129. package/dist/src/agent/sandbox/command-validator.js +12 -0
  130. package/dist/src/agent/sandbox/command-validator.js.map +1 -1
  131. package/dist/src/agent/service.d.ts +2 -1
  132. package/dist/src/agent/service.js +18 -6
  133. package/dist/src/agent/service.js.map +1 -1
  134. package/dist/src/agent/session/session-inspector.d.ts +5 -3
  135. package/dist/src/agent/session/session-inspector.js +16 -7
  136. package/dist/src/agent/session/session-inspector.js.map +1 -1
  137. package/dist/src/agent/source-context/types.d.ts +1 -1
  138. package/dist/src/agent/source-context/types.js +1 -1
  139. package/dist/src/agent/source-context/types.js.map +1 -1
  140. package/dist/src/agent/tools/apply-patch.js +116 -62
  141. package/dist/src/agent/tools/apply-patch.js.map +1 -1
  142. package/dist/src/agent/tools/concurrency.d.ts +8 -0
  143. package/dist/src/agent/tools/concurrency.js +31 -0
  144. package/dist/src/agent/tools/concurrency.js.map +1 -0
  145. package/dist/src/agent/tools/dreaming-tool.d.ts +2 -0
  146. package/dist/src/agent/tools/dreaming-tool.js +13 -10
  147. package/dist/src/agent/tools/dreaming-tool.js.map +1 -1
  148. package/dist/src/agent/tools/exec-command.js +4 -0
  149. package/dist/src/agent/tools/exec-command.js.map +1 -1
  150. package/dist/src/agent/tools/executor.d.ts +6 -4
  151. package/dist/src/agent/tools/executor.js +7 -4
  152. package/dist/src/agent/tools/executor.js.map +1 -1
  153. package/dist/src/agent/tools/factory.d.ts +3 -0
  154. package/dist/src/agent/tools/factory.js +7 -1
  155. package/dist/src/agent/tools/factory.js.map +1 -1
  156. package/dist/src/agent/tools/find.js +2 -0
  157. package/dist/src/agent/tools/find.js.map +1 -1
  158. package/dist/src/agent/tools/grep.js +2 -0
  159. package/dist/src/agent/tools/grep.js.map +1 -1
  160. package/dist/src/agent/tools/index.d.ts +2 -0
  161. package/dist/src/agent/tools/index.js +3 -1
  162. package/dist/src/agent/tools/list-dir.js +2 -0
  163. package/dist/src/agent/tools/list-dir.js.map +1 -1
  164. package/dist/src/agent/tools/memory-tool.d.ts +1 -0
  165. package/dist/src/agent/tools/memory-tool.js +2 -2
  166. package/dist/src/agent/tools/memory-tool.js.map +1 -1
  167. package/dist/src/agent/tools/metadata.d.ts +15 -0
  168. package/dist/src/agent/tools/metadata.js +26 -0
  169. package/dist/src/agent/tools/metadata.js.map +1 -0
  170. package/dist/src/agent/tools/read.js +2 -0
  171. package/dist/src/agent/tools/read.js.map +1 -1
  172. package/dist/src/agent/tools/write.js +6 -0
  173. package/dist/src/agent/tools/write.js.map +1 -1
  174. package/dist/src/agent/workflow/subagent-runner.d.ts +1 -0
  175. package/dist/src/agent/workflow/subagent-runner.js +5 -1
  176. package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
  177. package/dist/src/agent/workflow/workflow-child-tools.js +5 -0
  178. package/dist/src/agent/workflow/workflow-child-tools.js.map +1 -1
  179. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  180. package/dist/src/connectors/health.d.ts +2 -1
  181. package/dist/src/connectors/health.js +59 -1
  182. package/dist/src/connectors/health.js.map +1 -1
  183. package/dist/src/connectors/install.d.ts +1 -0
  184. package/dist/src/connectors/install.js +28 -1
  185. package/dist/src/connectors/install.js.map +1 -1
  186. package/dist/src/connectors/instances.js +7 -0
  187. package/dist/src/connectors/instances.js.map +1 -1
  188. package/dist/src/connectors/materialize.js +2 -1
  189. package/dist/src/connectors/materialize.js.map +1 -1
  190. package/dist/src/connectors/registries/modelscope.js +38 -13
  191. package/dist/src/connectors/registries/modelscope.js.map +1 -1
  192. package/dist/src/connectors/types.d.ts +2 -0
  193. package/dist/src/gateway/dreaming-automation-reconciler.d.ts +1 -0
  194. package/dist/src/gateway/dreaming-automation-reconciler.js +62 -42
  195. package/dist/src/gateway/dreaming-automation-reconciler.js.map +1 -1
  196. package/dist/src/gateway/hono/app.js +7 -1
  197. package/dist/src/gateway/hono/app.js.map +1 -1
  198. package/dist/src/gateway/hono/routes/connectors.js +46 -2
  199. package/dist/src/gateway/hono/routes/connectors.js.map +1 -1
  200. package/dist/src/gateway/hono/routes/dreaming.js +111 -66
  201. package/dist/src/gateway/hono/routes/dreaming.js.map +1 -1
  202. package/dist/src/gateway/hono/routes/projects.js +846 -43
  203. package/dist/src/gateway/hono/routes/projects.js.map +1 -1
  204. package/dist/src/gateway/hono/routes/sessions.js +1 -0
  205. package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
  206. package/dist/src/gateway/service.js +17 -8
  207. package/dist/src/gateway/service.js.map +1 -1
  208. package/dist/src/media/store.js +1 -1
  209. package/dist/src/media/store.js.map +1 -1
  210. package/dist/src/media/types.d.ts +1 -1
  211. package/dist/src/media/uri.js +2 -1
  212. package/dist/src/media/uri.js.map +1 -1
  213. package/dist/src/session/session-context-for-llm.d.ts +2 -0
  214. package/dist/src/session/session-context-for-llm.js +14 -1
  215. package/dist/src/session/session-context-for-llm.js.map +1 -1
  216. package/dist/src/session/store.js +2 -2
  217. package/dist/src/session/store.js.map +1 -1
  218. package/dist/src/storage/sqlite/migrations/022_work_items.sql +61 -0
  219. package/dist/src/storage/sqlite/migrations/023_work_item_attachments.sql +15 -0
  220. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  221. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  222. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
  223. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  224. package/dist/src/storage/sqlite/schema.js +1 -1
  225. package/dist/src/storage/sqlite/schema.sql +78 -0
  226. package/dist/src/tui/components/assistant-message.js +12 -2
  227. package/dist/src/tui/components/assistant-message.js.map +1 -1
  228. package/dist/src/tui/components/tool-execution.d.ts +8 -0
  229. package/dist/src/tui/components/tool-execution.js +87 -77
  230. package/dist/src/tui/components/tool-execution.js.map +1 -1
  231. package/dist/src/tui/components/visual-truncate.d.ts +1 -0
  232. package/dist/src/tui/components/visual-truncate.js +28 -1
  233. package/dist/src/tui/components/visual-truncate.js.map +1 -1
  234. package/dist/src/tui/tool-summary.d.ts +22 -0
  235. package/dist/src/tui/tool-summary.js +212 -0
  236. package/dist/src/tui/tool-summary.js.map +1 -0
  237. package/dist/src/tui/tui-tool-diff.d.ts +15 -0
  238. package/dist/src/tui/tui-tool-diff.js +178 -7
  239. package/dist/src/tui/tui-tool-diff.js.map +1 -1
  240. package/dist/src/work-items/agent-context.d.ts +3 -0
  241. package/dist/src/work-items/agent-context.js +39 -0
  242. package/dist/src/work-items/agent-context.js.map +1 -0
  243. package/dist/src/work-items/index.d.ts +4 -0
  244. package/dist/src/work-items/index.js +4 -0
  245. package/dist/src/work-items/types.d.ts +112 -0
  246. package/dist/src/work-items/types.js +1 -0
  247. package/dist/src/work-items/work-item-service.d.ts +33 -0
  248. package/dist/src/work-items/work-item-service.js +180 -0
  249. package/dist/src/work-items/work-item-service.js.map +1 -0
  250. package/dist/src/work-items/work-item-store.d.ts +21 -0
  251. package/dist/src/work-items/work-item-store.js +302 -0
  252. package/dist/src/work-items/work-item-store.js.map +1 -0
  253. package/dist/src/workflows/service/workflow-run-service.js +4 -3
  254. package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
  255. package/dist/src/workflows/service/workflow-session-bridge.js +3 -0
  256. package/dist/src/workflows/service/workflow-session-bridge.js.map +1 -1
  257. package/package.json +1 -1
  258. package/dist/gateway/static/root/assets/Combination-HAlzriaz.js +0 -41
  259. package/dist/gateway/static/root/assets/agents-BjIxt67Z.js +0 -2
  260. package/dist/gateway/static/root/assets/app-management-settings-panel-CYCONLIL.js +0 -1
  261. package/dist/gateway/static/root/assets/appearance-settings-Clw3ryKg.js +0 -1
  262. package/dist/gateway/static/root/assets/apps-page-QICTeGjX.js +0 -1
  263. package/dist/gateway/static/root/assets/automation-suggestion-card-CU0-4nQ-.js +0 -1
  264. package/dist/gateway/static/root/assets/automations-page-Car-jtiz.js +0 -1
  265. package/dist/gateway/static/root/assets/browser-settings-page-CMeBJzlS.js +0 -8
  266. package/dist/gateway/static/root/assets/capability-presets-api-BmQTM9Il.js +0 -1
  267. package/dist/gateway/static/root/assets/capability-presets-settings-panel-DZEJEoCF.js +0 -1
  268. package/dist/gateway/static/root/assets/channels-settings-kkW-xFau.js +0 -1
  269. package/dist/gateway/static/root/assets/code-editor-dZTY2dRW.js +0 -1
  270. package/dist/gateway/static/root/assets/connectors-page-BvaQvO5F.js +0 -2
  271. package/dist/gateway/static/root/assets/dist-Mys7eFJ5.js +0 -1
  272. package/dist/gateway/static/root/assets/dist-wO9a2_ID.js +0 -1
  273. package/dist/gateway/static/root/assets/dreaming-settings-DnHO686d.js +0 -1
  274. package/dist/gateway/static/root/assets/extension-debug-page-BGLRuWVN.js +0 -1
  275. package/dist/gateway/static/root/assets/extension-page-D978ePp9.js +0 -1
  276. package/dist/gateway/static/root/assets/extension-settings-page-B6Ih4Swx.js +0 -1
  277. package/dist/gateway/static/root/assets/gateway-settings-CMEA3r5u.js +0 -1
  278. package/dist/gateway/static/root/assets/goal-create-dialog-B-KHKeXN.js +0 -1
  279. package/dist/gateway/static/root/assets/goal-detail-page-BxrSoWdj.js +0 -1
  280. package/dist/gateway/static/root/assets/goals-page-BTJzIl28.js +0 -2
  281. package/dist/gateway/static/root/assets/goals-settings-BJyEuLLm.js +0 -1
  282. package/dist/gateway/static/root/assets/heartbeat-settings-wkOjYNQT.js +0 -1
  283. package/dist/gateway/static/root/assets/index-BLaXr6Ev.css +0 -1
  284. package/dist/gateway/static/root/assets/index-c_9TVr_C.js +0 -191
  285. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BT8T4DyC.js +0 -1
  286. package/dist/gateway/static/root/assets/logs-page-CrxBJUgI.js +0 -2
  287. package/dist/gateway/static/root/assets/markdown-split-Dv66bO2b.js +0 -1
  288. package/dist/gateway/static/root/assets/messages-O6TAtdFC.js +0 -3
  289. package/dist/gateway/static/root/assets/models-hub-panel-DOOpz6y1.js +0 -2
  290. package/dist/gateway/static/root/assets/notes-page-Br16pK9v.js +0 -1
  291. package/dist/gateway/static/root/assets/notes-workbench-PSJAi0ZC.js +0 -2
  292. package/dist/gateway/static/root/assets/project-detail-page-CIGGgKuw.js +0 -1
  293. package/dist/gateway/static/root/assets/projects-page-B2grhsBt.js +0 -1
  294. package/dist/gateway/static/root/assets/remote-access-hub-CXMORxBD.js +0 -1
  295. package/dist/gateway/static/root/assets/sessions-page-Bi2wkBzU.js +0 -1
  296. package/dist/gateway/static/root/assets/settings-advanced-gate-B1L3G4IA.js +0 -1
  297. package/dist/gateway/static/root/assets/settings-page-BfRSHJmO.js +0 -1
  298. package/dist/gateway/static/root/assets/setup-status-panel-CWtPM7RK.js +0 -1
  299. package/dist/gateway/static/root/assets/shares-settings-ngbsBgij.js +0 -1
  300. package/dist/gateway/static/root/assets/skill-reload-api-BIe442Gv.js +0 -1
  301. package/dist/gateway/static/root/assets/skills-page-BfchZRVa.js +0 -2
  302. package/dist/gateway/static/root/assets/voice-api-key-field-C5Ov8Uk_.js +0 -1
  303. package/dist/gateway/static/root/assets/workflow-run-setup-panel-BYD9BtOq.js +0 -3
  304. package/dist/gateway/static/root/assets/workflows-page-BYF29ANm.js +0 -18
@@ -1,14 +1,12 @@
1
- import { init_agent_scope, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
2
- import { resolveEffectiveAgentManifestForAgent } from "../../../config/agent-profile.js";
1
+ import { init_agent_scope, normalizeAgentId, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
3
2
  import { DREAMING_DIR_RELATIVE, DREAMING_LAST_RUN_RELATIVE, SHORT_TERM_PROMOTION_LOCK_RELATIVE, SHORT_TERM_RECALL_STORE_RELATIVE } from "../../../agent/memory/dreaming/constants.js";
4
3
  import { loadDreamingStore, saveDreamingStore } from "../../../agent/memory/dreaming/short-term-store.js";
5
- import { resolveDreamingConfig } from "../../../agent/memory/dreaming/config.js";
4
+ import { resolveDreamingAgentScope } from "../../../agent/memory/dreaming/scope.js";
6
5
  import { parseDreamingLastRunFile } from "../../../agent/memory/dreaming/last-run.js";
7
6
  import { runDreamingDeepPromotion } from "../../../agent/memory/dreaming/deep-promotion.js";
8
7
  import { readDreamingEvents } from "../../../agent/memory/dreaming/events.js";
9
8
  import { runLightSweep } from "../../../agent/memory/dreaming/light-sweep.js";
10
9
  import { runRemPatterns } from "../../../agent/memory/dreaming/rem-patterns.js";
11
- import { getWorkspacePath } from "../../../config/workspace-path-helpers.js";
12
10
  import { previewDreamingDeepPromotion } from "../../../agent/memory/dreaming/preview.js";
13
11
  import path from "node:path";
14
12
  import fs from "node:fs/promises";
@@ -17,8 +15,20 @@ init_agent_scope();
17
15
  function isRecord(v) {
18
16
  return v !== null && typeof v === "object" && !Array.isArray(v);
19
17
  }
20
- async function readLockInfo(workspaceDir) {
21
- const lockPath = path.join(workspaceDir, SHORT_TERM_PROMOTION_LOCK_RELATIVE);
18
+ function requestedAgentIdFrom(c, body) {
19
+ return (isRecord(body) && typeof body.agentId === "string" ? body.agentId : void 0) ?? c.req.query("agentId");
20
+ }
21
+ function hasEnabledAgent(cfg, agentId) {
22
+ const normalized = normalizeAgentId(agentId);
23
+ return cfg.agents.list.some((agent) => agent.enabled !== false && normalizeAgentId(agent.id) === normalized);
24
+ }
25
+ function resolveRouteScope(cfg, requestedAgentId) {
26
+ const agentId = normalizeAgentId(requestedAgentId || resolveDefaultAgentId(cfg));
27
+ if (!hasEnabledAgent(cfg, agentId)) throw new Error(`Agent not found: ${agentId}`);
28
+ return resolveDreamingAgentScope(cfg, agentId);
29
+ }
30
+ async function readLockInfo(dreamingRoot) {
31
+ const lockPath = path.join(dreamingRoot, SHORT_TERM_PROMOTION_LOCK_RELATIVE);
22
32
  try {
23
33
  const [content, st] = await Promise.all([fs.readFile(lockPath, "utf-8"), fs.stat(lockPath)]);
24
34
  return {
@@ -37,8 +47,8 @@ async function readLockInfo(workspaceDir) {
37
47
  };
38
48
  }
39
49
  }
40
- async function readLastRun(workspaceDir) {
41
- const fullPath = path.join(workspaceDir, DREAMING_LAST_RUN_RELATIVE);
50
+ async function readLastRun(dreamingRoot) {
51
+ const fullPath = path.join(dreamingRoot, DREAMING_LAST_RUN_RELATIVE);
42
52
  try {
43
53
  const text = await fs.readFile(fullPath, "utf-8");
44
54
  let raw;
@@ -72,9 +82,9 @@ async function readLastRun(workspaceDir) {
72
82
  };
73
83
  }
74
84
  }
75
- async function readPhaseLastRun(workspaceDir, filename) {
85
+ async function readPhaseLastRun(dreamingRoot, filename) {
76
86
  const relPath = path.join(DREAMING_DIR_RELATIVE, filename);
77
- const fullPath = path.join(workspaceDir, relPath);
87
+ const fullPath = path.join(dreamingRoot, relPath);
78
88
  try {
79
89
  const text = await fs.readFile(fullPath, "utf-8");
80
90
  return {
@@ -103,29 +113,32 @@ function registerDreamingRoutes(authenticated, deps) {
103
113
  const { service } = deps;
104
114
  authenticated.get("/api/dreaming", async (c) => {
105
115
  const cfg = service.currentConfig;
106
- const workspaceDir = getWorkspacePath(cfg);
107
- if (!workspaceDir) return c.json({
108
- ok: false,
109
- error: { message: "Workspace not configured" }
110
- }, 400);
111
- const agentId = resolveDefaultAgentId(cfg);
112
- const manifest = resolveEffectiveAgentManifestForAgent(cfg, agentId);
113
- const resolved = resolveDreamingConfig(cfg);
114
- const { store } = await loadDreamingStore({ workspaceDir });
115
- const lock = await readLockInfo(workspaceDir);
116
+ let scope;
117
+ try {
118
+ scope = resolveRouteScope(cfg, c.req.query("agentId"));
119
+ } catch (err) {
120
+ const message = err instanceof Error ? err.message : String(err);
121
+ return c.json({
122
+ ok: false,
123
+ error: { message }
124
+ }, 404);
125
+ }
126
+ const { store } = await loadDreamingStore({ dreamingRoot: scope.memoriesDir });
127
+ const lock = await readLockInfo(scope.memoriesDir);
116
128
  const [lastRun, lightLastRun, remLastRun] = await Promise.all([
117
- readLastRun(workspaceDir),
118
- readPhaseLastRun(workspaceDir, "last-run-light.json"),
119
- readPhaseLastRun(workspaceDir, "last-run-rem.json")
129
+ readLastRun(scope.memoriesDir),
130
+ readPhaseLastRun(scope.memoriesDir, "last-run-light.json"),
131
+ readPhaseLastRun(scope.memoriesDir, "last-run-rem.json")
120
132
  ]);
121
133
  return c.json({
122
134
  ok: true,
123
135
  payload: {
124
- agentId,
125
- memory: manifest.memory,
126
- workspaceDir,
127
- config: resolved,
128
- storePath: SHORT_TERM_RECALL_STORE_RELATIVE,
136
+ agentId: scope.agentId,
137
+ memory: scope.memory,
138
+ workspaceDir: scope.workspaceDir,
139
+ memoriesDir: scope.memoriesDir,
140
+ config: scope.config,
141
+ storePath: path.join(scope.memoriesDir, SHORT_TERM_RECALL_STORE_RELATIVE),
129
142
  store: storeStats(store),
130
143
  lock,
131
144
  lastRun,
@@ -136,17 +149,22 @@ function registerDreamingRoutes(authenticated, deps) {
136
149
  });
137
150
  authenticated.get("/api/dreaming/preview", async (c) => {
138
151
  const cfg = service.currentConfig;
139
- const workspaceDir = getWorkspacePath(cfg);
140
- if (!workspaceDir) return c.json({
141
- ok: false,
142
- error: { message: "Workspace not configured" }
143
- }, 400);
144
- const resolved = resolveDreamingConfig(cfg);
152
+ let scope;
153
+ try {
154
+ scope = resolveRouteScope(cfg, c.req.query("agentId"));
155
+ } catch (err) {
156
+ const message = err instanceof Error ? err.message : String(err);
157
+ return c.json({
158
+ ok: false,
159
+ error: { message }
160
+ }, 404);
161
+ }
145
162
  const rawLimit = c.req.query("limit");
146
163
  const limit = rawLimit ? Number(rawLimit) : 20;
147
164
  const preview = await previewDreamingDeepPromotion({
148
- workspaceDir,
149
- config: resolved.deep,
165
+ workspaceDir: scope.workspaceDir,
166
+ dreamingRoot: scope.memoriesDir,
167
+ config: scope.config.deep,
150
168
  limit: Number.isFinite(limit) ? limit : 20
151
169
  });
152
170
  return c.json({
@@ -167,32 +185,40 @@ function registerDreamingRoutes(authenticated, deps) {
167
185
  "rem"
168
186
  ].includes(body.phase) ? body.phase : "deep";
169
187
  const cfg = service.currentConfig;
170
- const workspaceDir = getWorkspacePath(cfg);
171
- if (!workspaceDir) return c.json({
172
- ok: false,
173
- error: { message: "Workspace not configured" }
174
- }, 400);
175
- const dreaming = resolveDreamingConfig(cfg);
188
+ let scope;
189
+ try {
190
+ scope = resolveRouteScope(cfg, requestedAgentIdFrom(c, body));
191
+ } catch (err) {
192
+ const message = err instanceof Error ? err.message : String(err);
193
+ return c.json({
194
+ ok: false,
195
+ error: { message }
196
+ }, 404);
197
+ }
198
+ const dreaming = scope.config;
176
199
  if (!dreaming.enabled || !dreaming.phases[requestedPhase].enabled) return c.json({
177
200
  ok: false,
178
201
  error: { message: `Dreaming ${requestedPhase} phase is disabled in config. Enable it first.` }
179
202
  }, 400);
180
203
  try {
181
204
  service.emit("dreaming.phase.start", {
205
+ agentId: scope.agentId,
182
206
  phase: requestedPhase,
183
207
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
184
208
  });
185
209
  const result = requestedPhase === "light" ? await runLightSweep({
186
- workspaceDir,
210
+ dreamingRoot: scope.memoriesDir,
187
211
  config: dreaming.phases.light
188
212
  }) : requestedPhase === "rem" ? await runRemPatterns({
189
- workspaceDir,
213
+ dreamingRoot: scope.memoriesDir,
190
214
  config: dreaming.phases.rem
191
215
  }) : await runDreamingDeepPromotion({
192
- workspaceDir,
216
+ workspaceDir: scope.workspaceDir,
217
+ dreamingRoot: scope.memoriesDir,
193
218
  config: dreaming.phases.deep
194
219
  });
195
220
  service.emit("dreaming.phase.end", {
221
+ agentId: scope.agentId,
196
222
  phase: requestedPhase,
197
223
  ok: true,
198
224
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
@@ -200,6 +226,7 @@ function registerDreamingRoutes(authenticated, deps) {
200
226
  return c.json({
201
227
  ok: true,
202
228
  payload: {
229
+ agentId: scope.agentId,
203
230
  phase: requestedPhase,
204
231
  result
205
232
  }
@@ -207,6 +234,7 @@ function registerDreamingRoutes(authenticated, deps) {
207
234
  } catch (err) {
208
235
  const em = err instanceof Error ? err.message : String(err);
209
236
  service.emit("dreaming.phase.end", {
237
+ agentId: scope.agentId,
210
238
  phase: requestedPhase,
211
239
  ok: false,
212
240
  error: em,
@@ -220,11 +248,6 @@ function registerDreamingRoutes(authenticated, deps) {
220
248
  });
221
249
  authenticated.post("/api/dreaming/action", async (c) => {
222
250
  const cfg = service.currentConfig;
223
- const workspaceDir = getWorkspacePath(cfg);
224
- if (!workspaceDir) return c.json({
225
- ok: false,
226
- error: { message: "Workspace not configured" }
227
- }, 400);
228
251
  let body;
229
252
  try {
230
253
  body = await c.req.json();
@@ -232,49 +255,71 @@ function registerDreamingRoutes(authenticated, deps) {
232
255
  body = {};
233
256
  }
234
257
  const action = isRecord(body) && typeof body.action === "string" ? body.action.trim() : "";
258
+ let scope;
259
+ try {
260
+ scope = resolveRouteScope(cfg, requestedAgentIdFrom(c, body));
261
+ } catch (err) {
262
+ const message = err instanceof Error ? err.message : String(err);
263
+ return c.json({
264
+ ok: false,
265
+ error: { message }
266
+ }, 404);
267
+ }
235
268
  if (action !== "reset_store" && action !== "clear_lock") return c.json({
236
269
  ok: false,
237
270
  error: { message: "Invalid action" }
238
271
  }, 400);
239
272
  if (action === "reset_store") {
273
+ const next = {
274
+ version: 1,
275
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
276
+ entries: {}
277
+ };
240
278
  await saveDreamingStore({
241
- workspaceDir,
242
- store: {
243
- version: 1,
244
- updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
245
- entries: {}
246
- }
279
+ dreamingRoot: scope.memoriesDir,
280
+ store: next
247
281
  });
248
282
  return c.json({
249
283
  ok: true,
250
284
  payload: {
285
+ agentId: scope.agentId,
251
286
  reset: true,
252
- storePath: SHORT_TERM_RECALL_STORE_RELATIVE
287
+ storePath: path.join(scope.memoriesDir, SHORT_TERM_RECALL_STORE_RELATIVE)
253
288
  }
254
289
  });
255
290
  }
256
- const lockPath = path.join(workspaceDir, SHORT_TERM_PROMOTION_LOCK_RELATIVE);
291
+ const lockPath = path.join(scope.memoriesDir, SHORT_TERM_PROMOTION_LOCK_RELATIVE);
257
292
  await fs.unlink(lockPath).catch(() => void 0);
258
293
  return c.json({
259
294
  ok: true,
260
295
  payload: {
296
+ agentId: scope.agentId,
261
297
  cleared: true,
262
- lockPath: SHORT_TERM_PROMOTION_LOCK_RELATIVE
298
+ lockPath
263
299
  }
264
300
  });
265
301
  });
266
302
  authenticated.get("/api/dreaming/events", async (c) => {
267
303
  const cfg = service.currentConfig;
268
- const workspaceDir = getWorkspacePath(cfg);
269
- if (!workspaceDir) return c.json({
270
- ok: false,
271
- error: { message: "Workspace not configured" }
272
- }, 400);
304
+ let scope;
305
+ try {
306
+ scope = resolveRouteScope(cfg, c.req.query("agentId"));
307
+ } catch (err) {
308
+ const message = err instanceof Error ? err.message : String(err);
309
+ return c.json({
310
+ ok: false,
311
+ error: { message }
312
+ }, 404);
313
+ }
273
314
  const rawLimit = c.req.query("limit");
274
- const events = await readDreamingEvents(workspaceDir, rawLimit ? Math.min(Math.max(Number(rawLimit) || 50, 1), 200) : 50);
315
+ const limit = rawLimit ? Math.min(Math.max(Number(rawLimit) || 50, 1), 200) : 50;
316
+ const events = await readDreamingEvents(scope.memoriesDir, limit);
275
317
  return c.json({
276
318
  ok: true,
277
- payload: { events }
319
+ payload: {
320
+ agentId: scope.agentId,
321
+ events
322
+ }
278
323
  });
279
324
  });
280
325
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dreaming.js","names":[],"sources":["../../../../../src/gateway/hono/routes/dreaming.ts"],"sourcesContent":["import type { Hono } from 'hono';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\n\nimport { type Config } from '../../../config/schema.js';\nimport { getWorkspacePath } from '../../../config/workspace-path-helpers.js';\nimport { resolveDefaultAgentId } from '../../../agent/agent-scope.js';\nimport { resolveEffectiveAgentManifestForAgent } from '../../../config/agent-profile.js';\nimport { resolveDreamingConfig } from '../../../agent/memory/dreaming/config.js';\nimport {\n DREAMING_DIR_RELATIVE,\n DREAMING_LAST_RUN_RELATIVE,\n SHORT_TERM_PROMOTION_LOCK_RELATIVE,\n SHORT_TERM_RECALL_STORE_RELATIVE,\n type DreamingPhaseId,\n} from '../../../agent/memory/dreaming/constants.js';\nimport { readDreamingEvents } from '../../../agent/memory/dreaming/events.js';\nimport { previewDreamingDeepPromotion } from '../../../agent/memory/dreaming/preview.js';\nimport { runLightSweep } from '../../../agent/memory/dreaming/light-sweep.js';\nimport { runDreamingDeepPromotion } from '../../../agent/memory/dreaming/deep-promotion.js';\nimport { runRemPatterns } from '../../../agent/memory/dreaming/rem-patterns.js';\nimport { parseDreamingLastRunFile, type DreamingDeepLastRun } from '../../../agent/memory/dreaming/last-run.js';\nimport {\n loadDreamingStore,\n saveDreamingStore,\n type DreamingStore,\n} from '../../../agent/memory/dreaming/short-term-store.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n return v !== null && typeof v === 'object' && !Array.isArray(v);\n}\n\nasync function readLockInfo(workspaceDir: string): Promise<\n | { locked: false }\n | { locked: true; path: string; content: string; mtimeMs?: number }\n> {\n const lockPath = path.join(workspaceDir, SHORT_TERM_PROMOTION_LOCK_RELATIVE);\n try {\n const [content, st] = await Promise.all([fs.readFile(lockPath, 'utf-8'), fs.stat(lockPath)]);\n return {\n locked: true,\n path: SHORT_TERM_PROMOTION_LOCK_RELATIVE,\n content: content.trim(),\n mtimeMs: st.mtimeMs,\n };\n } catch (err) {\n const code = (err as NodeJS.ErrnoException | undefined)?.code;\n if (code === 'ENOENT') return { locked: false };\n return { locked: true, path: SHORT_TERM_PROMOTION_LOCK_RELATIVE, content: 'unknown', mtimeMs: undefined };\n }\n}\n\nasync function readLastRun(\n workspaceDir: string,\n): Promise<\n | { exists: false }\n | {\n exists: true;\n path: string;\n raw: unknown;\n record: DreamingDeepLastRun | null;\n parseError: string | null;\n }\n> {\n const fullPath = path.join(workspaceDir, DREAMING_LAST_RUN_RELATIVE);\n try {\n const text = await fs.readFile(fullPath, 'utf-8');\n let raw: unknown;\n try {\n raw = JSON.parse(text) as unknown;\n } catch (parseErr) {\n return {\n exists: true,\n path: DREAMING_LAST_RUN_RELATIVE,\n raw: null,\n record: null,\n parseError: parseErr instanceof Error ? parseErr.message : String(parseErr),\n };\n }\n const record = parseDreamingLastRunFile(raw);\n return {\n exists: true,\n path: DREAMING_LAST_RUN_RELATIVE,\n raw,\n record,\n parseError: record ? null : 'Invalid or unsupported last-run.json (expected v2 deep record).',\n };\n } catch (err) {\n const code = (err as NodeJS.ErrnoException | undefined)?.code;\n if (code === 'ENOENT') return { exists: false };\n return {\n exists: true,\n path: DREAMING_LAST_RUN_RELATIVE,\n raw: null,\n record: null,\n parseError: err instanceof Error ? err.message : String(err),\n };\n }\n}\n\nasync function readPhaseLastRun(\n workspaceDir: string,\n filename: string,\n): Promise<{ exists: false } | { exists: true; path: string; raw: unknown }> {\n const relPath = path.join(DREAMING_DIR_RELATIVE, filename);\n const fullPath = path.join(workspaceDir, relPath);\n try {\n const text = await fs.readFile(fullPath, 'utf-8');\n const raw = JSON.parse(text) as unknown;\n return { exists: true, path: relPath, raw };\n } catch (err) {\n const code = (err as NodeJS.ErrnoException | undefined)?.code;\n if (code === 'ENOENT') return { exists: false };\n return { exists: false };\n }\n}\n\nfunction storeStats(store: DreamingStore): {\n version: number;\n updatedAt: string;\n entryCount: number;\n promotedCount: number;\n lastPromotedAt: string | null;\n} {\n const entries = Object.values(store.entries ?? {});\n const promoted = entries.filter((e) => typeof e.promotedAt === 'string' && e.promotedAt.trim());\n const lastPromotedAt = promoted\n .map((e) => e.promotedAt!)\n .sort((a, b) => (a < b ? 1 : a > b ? -1 : 0))[0];\n return {\n version: store.version,\n updatedAt: store.updatedAt,\n entryCount: entries.length,\n promotedCount: promoted.length,\n lastPromotedAt: lastPromotedAt ?? null,\n };\n}\n\nexport function registerDreamingRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { service } = deps;\n\n authenticated.get('/api/dreaming', async (c) => {\n const cfg = service.currentConfig as Config;\n const workspaceDir = getWorkspacePath(cfg);\n if (!workspaceDir) {\n return c.json({ ok: false, error: { message: 'Workspace not configured' } }, 400);\n }\n\n const agentId = resolveDefaultAgentId(cfg);\n const manifest = resolveEffectiveAgentManifestForAgent(cfg, agentId);\n const resolved = resolveDreamingConfig(cfg);\n const { store } = await loadDreamingStore({ workspaceDir });\n const lock = await readLockInfo(workspaceDir);\n\n // Read all three phase last-run files in parallel.\n const [lastRun, lightLastRun, remLastRun] = await Promise.all([\n readLastRun(workspaceDir),\n readPhaseLastRun(workspaceDir, 'last-run-light.json'),\n readPhaseLastRun(workspaceDir, 'last-run-rem.json'),\n ]);\n\n return c.json({\n ok: true,\n payload: {\n agentId,\n memory: manifest.memory,\n workspaceDir,\n config: resolved,\n storePath: SHORT_TERM_RECALL_STORE_RELATIVE,\n store: storeStats(store),\n lock,\n lastRun,\n lightLastRun,\n remLastRun,\n },\n });\n });\n\n authenticated.get('/api/dreaming/preview', async (c) => {\n const cfg = service.currentConfig as Config;\n const workspaceDir = getWorkspacePath(cfg);\n if (!workspaceDir) {\n return c.json({ ok: false, error: { message: 'Workspace not configured' } }, 400);\n }\n\n const resolved = resolveDreamingConfig(cfg);\n const rawLimit = c.req.query('limit');\n const limit = rawLimit ? Number(rawLimit) : 20;\n\n const preview = await previewDreamingDeepPromotion({\n workspaceDir,\n config: resolved.deep,\n limit: Number.isFinite(limit) ? limit : 20,\n });\n\n return c.json({ ok: true, payload: preview });\n });\n\n authenticated.post('/api/dreaming/run', async (c) => {\n let body: unknown;\n try { body = await c.req.json(); } catch { body = {}; }\n const requestedPhase: DreamingPhaseId =\n isRecord(body) && typeof body.phase === 'string' && ['light', 'deep', 'rem'].includes(body.phase)\n ? (body.phase as DreamingPhaseId)\n : 'deep';\n\n const cfg = service.currentConfig as Config;\n const workspaceDir = getWorkspacePath(cfg);\n if (!workspaceDir) {\n return c.json({ ok: false, error: { message: 'Workspace not configured' } }, 400);\n }\n const dreaming = resolveDreamingConfig(cfg);\n if (!dreaming.enabled || !dreaming.phases[requestedPhase].enabled) {\n return c.json({\n ok: false,\n error: { message: `Dreaming ${requestedPhase} phase is disabled in config. Enable it first.` },\n }, 400);\n }\n\n try {\n service.emit('dreaming.phase.start', { phase: requestedPhase, timestamp: new Date().toISOString() });\n\n const result =\n requestedPhase === 'light'\n ? await runLightSweep({ workspaceDir, config: dreaming.phases.light })\n : requestedPhase === 'rem'\n ? await runRemPatterns({ workspaceDir, config: dreaming.phases.rem })\n : await runDreamingDeepPromotion({\n workspaceDir,\n config: dreaming.phases.deep,\n });\n\n service.emit('dreaming.phase.end', { phase: requestedPhase, ok: true, timestamp: new Date().toISOString() });\n\n return c.json({ ok: true, payload: { phase: requestedPhase, result } });\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n service.emit('dreaming.phase.end', { phase: requestedPhase, ok: false, error: em, timestamp: new Date().toISOString() });\n return c.json({ ok: false, error: { message: em || 'Failed to trigger job' } }, 400);\n }\n });\n\n authenticated.post('/api/dreaming/action', async (c) => {\n const cfg = service.currentConfig as Config;\n const workspaceDir = getWorkspacePath(cfg);\n if (!workspaceDir) {\n return c.json({ ok: false, error: { message: 'Workspace not configured' } }, 400);\n }\n\n let body: unknown;\n try {\n body = await c.req.json();\n } catch {\n body = {};\n }\n const action = isRecord(body) && typeof body.action === 'string' ? body.action.trim() : '';\n\n if (action !== 'reset_store' && action !== 'clear_lock') {\n return c.json({ ok: false, error: { message: 'Invalid action' } }, 400);\n }\n\n if (action === 'reset_store') {\n const nowIso = new Date().toISOString();\n const next: DreamingStore = { version: 1, updatedAt: nowIso, entries: {} };\n await saveDreamingStore({ workspaceDir, store: next });\n return c.json({ ok: true, payload: { reset: true, storePath: SHORT_TERM_RECALL_STORE_RELATIVE } });\n }\n\n const lockPath = path.join(workspaceDir, SHORT_TERM_PROMOTION_LOCK_RELATIVE);\n await fs.unlink(lockPath).catch(() => undefined);\n return c.json({ ok: true, payload: { cleared: true, lockPath: SHORT_TERM_PROMOTION_LOCK_RELATIVE } });\n });\n\n authenticated.get('/api/dreaming/events', async (c) => {\n const cfg = service.currentConfig as Config;\n const workspaceDir = getWorkspacePath(cfg);\n if (!workspaceDir) {\n return c.json({ ok: false, error: { message: 'Workspace not configured' } }, 400);\n }\n\n const rawLimit = c.req.query('limit');\n const limit = rawLimit ? Math.min(Math.max(Number(rawLimit) || 50, 1), 200) : 50;\n\n const events = await readDreamingEvents(workspaceDir, limit);\n return c.json({ ok: true, payload: { events } });\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dreaming.js","names":[],"sources":["../../../../../src/gateway/hono/routes/dreaming.ts"],"sourcesContent":["import type { Hono } from 'hono';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\n\nimport { type Config } from '../../../config/schema.js';\nimport { normalizeAgentId, resolveDefaultAgentId } from '../../../agent/agent-scope.js';\nimport {\n DREAMING_DIR_RELATIVE,\n DREAMING_LAST_RUN_RELATIVE,\n SHORT_TERM_PROMOTION_LOCK_RELATIVE,\n SHORT_TERM_RECALL_STORE_RELATIVE,\n type DreamingPhaseId,\n} from '../../../agent/memory/dreaming/constants.js';\nimport { readDreamingEvents } from '../../../agent/memory/dreaming/events.js';\nimport { previewDreamingDeepPromotion } from '../../../agent/memory/dreaming/preview.js';\nimport { runLightSweep } from '../../../agent/memory/dreaming/light-sweep.js';\nimport { runDreamingDeepPromotion } from '../../../agent/memory/dreaming/deep-promotion.js';\nimport { runRemPatterns } from '../../../agent/memory/dreaming/rem-patterns.js';\nimport { parseDreamingLastRunFile, type DreamingDeepLastRun } from '../../../agent/memory/dreaming/last-run.js';\nimport { resolveDreamingAgentScope, type DreamingAgentScope } from '../../../agent/memory/dreaming/scope.js';\nimport {\n loadDreamingStore,\n saveDreamingStore,\n type DreamingStore,\n} from '../../../agent/memory/dreaming/short-term-store.js';\nimport type { AuthenticatedRouteDeps } from './deps.js';\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n return v !== null && typeof v === 'object' && !Array.isArray(v);\n}\n\nfunction requestedAgentIdFrom(c: { req: { query(name: string): string | undefined } }, body?: unknown): string | undefined {\n const fromBody = isRecord(body) && typeof body.agentId === 'string' ? body.agentId : undefined;\n return fromBody ?? c.req.query('agentId');\n}\n\nfunction hasEnabledAgent(cfg: Config, agentId: string): boolean {\n const normalized = normalizeAgentId(agentId);\n return cfg.agents.list.some((agent) => agent.enabled !== false && normalizeAgentId(agent.id) === normalized);\n}\n\nfunction resolveRouteScope(cfg: Config, requestedAgentId?: string): DreamingAgentScope {\n const agentId = normalizeAgentId(requestedAgentId || resolveDefaultAgentId(cfg));\n if (!hasEnabledAgent(cfg, agentId)) {\n throw new Error(`Agent not found: ${agentId}`);\n }\n return resolveDreamingAgentScope(cfg, agentId);\n}\n\nasync function readLockInfo(dreamingRoot: string): Promise<\n | { locked: false }\n | { locked: true; path: string; content: string; mtimeMs?: number }\n> {\n const lockPath = path.join(dreamingRoot, SHORT_TERM_PROMOTION_LOCK_RELATIVE);\n try {\n const [content, st] = await Promise.all([fs.readFile(lockPath, 'utf-8'), fs.stat(lockPath)]);\n return {\n locked: true,\n path: SHORT_TERM_PROMOTION_LOCK_RELATIVE,\n content: content.trim(),\n mtimeMs: st.mtimeMs,\n };\n } catch (err) {\n const code = (err as NodeJS.ErrnoException | undefined)?.code;\n if (code === 'ENOENT') return { locked: false };\n return { locked: true, path: SHORT_TERM_PROMOTION_LOCK_RELATIVE, content: 'unknown', mtimeMs: undefined };\n }\n}\n\nasync function readLastRun(\n dreamingRoot: string,\n): Promise<\n | { exists: false }\n | {\n exists: true;\n path: string;\n raw: unknown;\n record: DreamingDeepLastRun | null;\n parseError: string | null;\n }\n> {\n const fullPath = path.join(dreamingRoot, DREAMING_LAST_RUN_RELATIVE);\n try {\n const text = await fs.readFile(fullPath, 'utf-8');\n let raw: unknown;\n try {\n raw = JSON.parse(text) as unknown;\n } catch (parseErr) {\n return {\n exists: true,\n path: DREAMING_LAST_RUN_RELATIVE,\n raw: null,\n record: null,\n parseError: parseErr instanceof Error ? parseErr.message : String(parseErr),\n };\n }\n const record = parseDreamingLastRunFile(raw);\n return {\n exists: true,\n path: DREAMING_LAST_RUN_RELATIVE,\n raw,\n record,\n parseError: record ? null : 'Invalid or unsupported last-run.json (expected v2 deep record).',\n };\n } catch (err) {\n const code = (err as NodeJS.ErrnoException | undefined)?.code;\n if (code === 'ENOENT') return { exists: false };\n return {\n exists: true,\n path: DREAMING_LAST_RUN_RELATIVE,\n raw: null,\n record: null,\n parseError: err instanceof Error ? err.message : String(err),\n };\n }\n}\n\nasync function readPhaseLastRun(\n dreamingRoot: string,\n filename: string,\n): Promise<{ exists: false } | { exists: true; path: string; raw: unknown }> {\n const relPath = path.join(DREAMING_DIR_RELATIVE, filename);\n const fullPath = path.join(dreamingRoot, relPath);\n try {\n const text = await fs.readFile(fullPath, 'utf-8');\n const raw = JSON.parse(text) as unknown;\n return { exists: true, path: relPath, raw };\n } catch (err) {\n const code = (err as NodeJS.ErrnoException | undefined)?.code;\n if (code === 'ENOENT') return { exists: false };\n return { exists: false };\n }\n}\n\nfunction storeStats(store: DreamingStore): {\n version: number;\n updatedAt: string;\n entryCount: number;\n promotedCount: number;\n lastPromotedAt: string | null;\n} {\n const entries = Object.values(store.entries ?? {});\n const promoted = entries.filter((e) => typeof e.promotedAt === 'string' && e.promotedAt.trim());\n const lastPromotedAt = promoted\n .map((e) => e.promotedAt!)\n .sort((a, b) => (a < b ? 1 : a > b ? -1 : 0))[0];\n return {\n version: store.version,\n updatedAt: store.updatedAt,\n entryCount: entries.length,\n promotedCount: promoted.length,\n lastPromotedAt: lastPromotedAt ?? null,\n };\n}\n\nexport function registerDreamingRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { service } = deps;\n\n authenticated.get('/api/dreaming', async (c) => {\n const cfg = service.currentConfig as Config;\n let scope: DreamingAgentScope;\n try {\n scope = resolveRouteScope(cfg, c.req.query('agentId'));\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: { message } }, 404);\n }\n const { store } = await loadDreamingStore({ dreamingRoot: scope.memoriesDir });\n const lock = await readLockInfo(scope.memoriesDir);\n\n // Read all three phase last-run files in parallel.\n const [lastRun, lightLastRun, remLastRun] = await Promise.all([\n readLastRun(scope.memoriesDir),\n readPhaseLastRun(scope.memoriesDir, 'last-run-light.json'),\n readPhaseLastRun(scope.memoriesDir, 'last-run-rem.json'),\n ]);\n\n return c.json({\n ok: true,\n payload: {\n agentId: scope.agentId,\n memory: scope.memory,\n workspaceDir: scope.workspaceDir,\n memoriesDir: scope.memoriesDir,\n config: scope.config,\n storePath: path.join(scope.memoriesDir, SHORT_TERM_RECALL_STORE_RELATIVE),\n store: storeStats(store),\n lock,\n lastRun,\n lightLastRun,\n remLastRun,\n },\n });\n });\n\n authenticated.get('/api/dreaming/preview', async (c) => {\n const cfg = service.currentConfig as Config;\n let scope: DreamingAgentScope;\n try {\n scope = resolveRouteScope(cfg, c.req.query('agentId'));\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: { message } }, 404);\n }\n\n const rawLimit = c.req.query('limit');\n const limit = rawLimit ? Number(rawLimit) : 20;\n\n const preview = await previewDreamingDeepPromotion({\n workspaceDir: scope.workspaceDir,\n dreamingRoot: scope.memoriesDir,\n config: scope.config.deep,\n limit: Number.isFinite(limit) ? limit : 20,\n });\n\n return c.json({ ok: true, payload: preview });\n });\n\n authenticated.post('/api/dreaming/run', async (c) => {\n let body: unknown;\n try { body = await c.req.json(); } catch { body = {}; }\n const requestedPhase: DreamingPhaseId =\n isRecord(body) && typeof body.phase === 'string' && ['light', 'deep', 'rem'].includes(body.phase)\n ? (body.phase as DreamingPhaseId)\n : 'deep';\n\n const cfg = service.currentConfig as Config;\n let scope: DreamingAgentScope;\n try {\n scope = resolveRouteScope(cfg, requestedAgentIdFrom(c, body));\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: { message } }, 404);\n }\n const dreaming = scope.config;\n if (!dreaming.enabled || !dreaming.phases[requestedPhase].enabled) {\n return c.json({\n ok: false,\n error: { message: `Dreaming ${requestedPhase} phase is disabled in config. Enable it first.` },\n }, 400);\n }\n\n try {\n service.emit('dreaming.phase.start', {\n agentId: scope.agentId,\n phase: requestedPhase,\n timestamp: new Date().toISOString(),\n });\n\n const result =\n requestedPhase === 'light'\n ? await runLightSweep({ dreamingRoot: scope.memoriesDir, config: dreaming.phases.light })\n : requestedPhase === 'rem'\n ? await runRemPatterns({ dreamingRoot: scope.memoriesDir, config: dreaming.phases.rem })\n : await runDreamingDeepPromotion({\n workspaceDir: scope.workspaceDir,\n dreamingRoot: scope.memoriesDir,\n config: dreaming.phases.deep,\n });\n\n service.emit('dreaming.phase.end', {\n agentId: scope.agentId,\n phase: requestedPhase,\n ok: true,\n timestamp: new Date().toISOString(),\n });\n\n return c.json({ ok: true, payload: { agentId: scope.agentId, phase: requestedPhase, result } });\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n service.emit('dreaming.phase.end', {\n agentId: scope.agentId,\n phase: requestedPhase,\n ok: false,\n error: em,\n timestamp: new Date().toISOString(),\n });\n return c.json({ ok: false, error: { message: em || 'Failed to trigger job' } }, 400);\n }\n });\n\n authenticated.post('/api/dreaming/action', async (c) => {\n const cfg = service.currentConfig as Config;\n\n let body: unknown;\n try {\n body = await c.req.json();\n } catch {\n body = {};\n }\n const action = isRecord(body) && typeof body.action === 'string' ? body.action.trim() : '';\n let scope: DreamingAgentScope;\n try {\n scope = resolveRouteScope(cfg, requestedAgentIdFrom(c, body));\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: { message } }, 404);\n }\n\n if (action !== 'reset_store' && action !== 'clear_lock') {\n return c.json({ ok: false, error: { message: 'Invalid action' } }, 400);\n }\n\n if (action === 'reset_store') {\n const nowIso = new Date().toISOString();\n const next: DreamingStore = { version: 1, updatedAt: nowIso, entries: {} };\n await saveDreamingStore({ dreamingRoot: scope.memoriesDir, store: next });\n return c.json({\n ok: true,\n payload: { agentId: scope.agentId, reset: true, storePath: path.join(scope.memoriesDir, SHORT_TERM_RECALL_STORE_RELATIVE) },\n });\n }\n\n const lockPath = path.join(scope.memoriesDir, SHORT_TERM_PROMOTION_LOCK_RELATIVE);\n await fs.unlink(lockPath).catch(() => undefined);\n return c.json({\n ok: true,\n payload: { agentId: scope.agentId, cleared: true, lockPath },\n });\n });\n\n authenticated.get('/api/dreaming/events', async (c) => {\n const cfg = service.currentConfig as Config;\n let scope: DreamingAgentScope;\n try {\n scope = resolveRouteScope(cfg, c.req.query('agentId'));\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return c.json({ ok: false, error: { message } }, 404);\n }\n\n const rawLimit = c.req.query('limit');\n const limit = rawLimit ? Math.min(Math.max(Number(rawLimit) || 50, 1), 200) : 50;\n\n const events = await readDreamingEvents(scope.memoriesDir, limit);\n return c.json({ ok: true, payload: { agentId: scope.agentId, events } });\n });\n}\n"],"mappings":"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"}