dominds 1.23.10 → 1.24.2

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 (257) hide show
  1. package/dist/apps/runtime.js +2 -2
  2. package/dist/dialog-display-state.d.ts +2 -3
  3. package/dist/dialog-display-state.js +53 -145
  4. package/dist/dialog-drive-work.d.ts +4 -0
  5. package/dist/dialog-drive-work.js +40 -0
  6. package/dist/dialog-fork.d.ts +0 -1
  7. package/dist/dialog-fork.js +28 -32
  8. package/dist/dialog-generation-run.d.ts +4 -0
  9. package/dist/dialog-generation-run.js +24 -0
  10. package/dist/dialog-global-registry.d.ts +7 -8
  11. package/dist/dialog-global-registry.js +39 -33
  12. package/dist/dialog-instance-registry.js +12 -12
  13. package/dist/dialog-interruption.js +2 -2
  14. package/dist/dialog-latest-state.d.ts +4 -0
  15. package/dist/dialog-latest-state.js +14 -0
  16. package/dist/dialog.d.ts +31 -30
  17. package/dist/dialog.js +146 -56
  18. package/dist/docs/agent-priming.md +1 -1
  19. package/dist/docs/agent-priming.zh.md +1 -1
  20. package/dist/docs/app-constitution.md +1 -1
  21. package/dist/docs/app-constitution.zh.md +1 -1
  22. package/dist/docs/dialog-persistence.md +2 -2
  23. package/dist/docs/dialog-persistence.zh.md +2 -2
  24. package/dist/docs/dialog-system.md +72 -75
  25. package/dist/docs/dialog-system.zh.md +79 -82
  26. package/dist/docs/diligence-push.md +30 -40
  27. package/dist/docs/diligence-push.zh.md +15 -20
  28. package/dist/docs/dominds-agent-collaboration.zh.md +12 -10
  29. package/dist/docs/dominds-terminology.md +5 -2
  30. package/dist/docs/idle-reminder-wake.md +1 -1
  31. package/dist/docs/idle-reminder-wake.zh.md +1 -1
  32. package/dist/docs/issues/tellask-background-continuation-live-bugs-2026-05-17.zh.md +101 -0
  33. package/dist/docs/mcp-prompts-resources.md +13 -6
  34. package/dist/docs/mcp-support.md +18 -9
  35. package/dist/docs/mcp-support.zh.md +13 -8
  36. package/dist/docs/memory-system.md +51 -1
  37. package/dist/docs/memory-system.zh.md +51 -1
  38. package/dist/docs/team_mgmt-toolset.md +27 -10
  39. package/dist/docs/team_mgmt-toolset.zh.md +20 -9
  40. package/dist/docs/tellask-background-continuation-refactor.zh.md +1017 -0
  41. package/dist/docs/tellask-collab.md +4 -4
  42. package/dist/docs/tellask-collab.zh.md +4 -4
  43. package/dist/evt-registry.js +1 -0
  44. package/dist/llm/defaults.yaml +12 -9
  45. package/dist/llm/kernel-driver/drive.js +315 -67
  46. package/dist/llm/kernel-driver/engine.d.ts +1 -1
  47. package/dist/llm/kernel-driver/engine.js +4 -4
  48. package/dist/llm/kernel-driver/flow.js +203 -131
  49. package/dist/llm/kernel-driver/idle-reminder-wake.js +2 -4
  50. package/dist/llm/kernel-driver/loop.d.ts +4 -1
  51. package/dist/llm/kernel-driver/loop.js +268 -62
  52. package/dist/llm/kernel-driver/reply-guidance.js +29 -50
  53. package/dist/llm/kernel-driver/runtime.d.ts +10 -0
  54. package/dist/llm/kernel-driver/runtime.js +29 -84
  55. package/dist/llm/kernel-driver/sideDialog-txn.js +3 -0
  56. package/dist/llm/kernel-driver/sideDialog.d.ts +4 -13
  57. package/dist/llm/kernel-driver/sideDialog.js +165 -161
  58. package/dist/llm/kernel-driver/tellask-special.d.ts +5 -2
  59. package/dist/llm/kernel-driver/tellask-special.js +166 -184
  60. package/dist/llm/kernel-driver/types.d.ts +12 -8
  61. package/dist/mcp/config.d.ts +13 -5
  62. package/dist/mcp/config.js +37 -24
  63. package/dist/mcp/resources.d.ts +14 -3
  64. package/dist/mcp/resources.js +9 -6
  65. package/dist/mcp/supervisor.js +6 -1
  66. package/dist/mcp/tool-names.d.ts +2 -2
  67. package/dist/mcp/tool-names.js +4 -7
  68. package/dist/minds/system-prompt-parts.js +3 -0
  69. package/dist/persistence-errors.d.ts +1 -1
  70. package/dist/persistence.d.ts +81 -51
  71. package/dist/persistence.js +1747 -427
  72. package/dist/priming.d.ts +1 -1
  73. package/dist/priming.js +2 -2
  74. package/dist/recovery/proceeding-drive.js +46 -11
  75. package/dist/recovery/reply-special.js +42 -35
  76. package/dist/runtime/background-callee-summary.d.ts +2 -0
  77. package/dist/runtime/background-callee-summary.js +14 -0
  78. package/dist/runtime/driver-messages.d.ts +0 -8
  79. package/dist/runtime/driver-messages.js +0 -59
  80. package/dist/server/api-routes.js +40 -27
  81. package/dist/server/websocket-handler.js +39 -78
  82. package/dist/server.js +2 -2
  83. package/dist/shared-reminders.js +14 -3
  84. package/dist/skills/load.d.ts +7 -0
  85. package/dist/tools/cmd-runner.js +2 -0
  86. package/dist/tools/ctrl.js +6 -6
  87. package/dist/tools/os.js +2 -0
  88. package/dist/tools/pending-tellask-reminder.js +9 -9
  89. package/dist/tools/prompts/control/en/index.md +2 -0
  90. package/dist/tools/prompts/control/en/principles.md +1 -0
  91. package/dist/tools/prompts/control/en/tools.md +3 -0
  92. package/dist/tools/prompts/control/zh/index.md +2 -0
  93. package/dist/tools/prompts/control/zh/principles.md +1 -0
  94. package/dist/tools/prompts/control/zh/tools.md +3 -0
  95. package/dist/tools/prompts/personal_memory/en/principles.md +4 -1
  96. package/dist/tools/prompts/personal_memory/zh/principles.md +4 -1
  97. package/dist/tools/prompts/skills/en/index.md +1 -1
  98. package/dist/tools/prompts/skills/en/principles.md +5 -1
  99. package/dist/tools/prompts/skills/zh/index.md +1 -1
  100. package/dist/tools/prompts/skills/zh/principles.md +5 -1
  101. package/dist/tools/prompts/team_memory/en/principles.md +3 -0
  102. package/dist/tools/prompts/team_memory/en/scenarios.md +1 -1
  103. package/dist/tools/prompts/team_memory/zh/principles.md +3 -0
  104. package/dist/tools/prompts/team_memory/zh/scenarios.md +1 -1
  105. package/dist/tools/shell-capture-env.d.ts +1 -0
  106. package/dist/tools/shell-capture-env.js +44 -0
  107. package/dist/tools/skills.js +2 -0
  108. package/dist/tools/team_mgmt-mcp-manual.js +8 -8
  109. package/dist/tools/team_mgmt.js +34 -12
  110. package/dist/utils/task-package.js +9 -1
  111. package/package.json +3 -3
  112. package/webapp/dist/assets/{_basePickBy-CBh9Agsi.js → _basePickBy-DBvh4H3k.js} +3 -3
  113. package/webapp/dist/assets/_basePickBy-DBvh4H3k.js.map +1 -0
  114. package/webapp/dist/assets/{_baseUniq-D2UXV506.js → _baseUniq-CQmc9B-o.js} +2 -2
  115. package/webapp/dist/assets/_baseUniq-CQmc9B-o.js.map +1 -0
  116. package/webapp/dist/assets/{arc-CmeRUuzC.js → arc-DfLiOX_4.js} +2 -2
  117. package/webapp/dist/assets/arc-DfLiOX_4.js.map +1 -0
  118. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-D5hfsb4A.js → architectureDiagram-2XIMDMQ5-CaTVJ5ev.js} +26 -8
  119. package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-CaTVJ5ev.js.map +1 -0
  120. package/webapp/dist/assets/{blockDiagram-VD42YOAC-BVswEa9D.js → blockDiagram-WCTKOSBZ-DlmAtUca.js} +187 -170
  121. package/webapp/dist/assets/blockDiagram-WCTKOSBZ-DlmAtUca.js.map +1 -0
  122. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-Bgm6yzGX.js → c4Diagram-IC4MRINW-CNHKD5Sl.js} +4 -4
  123. package/webapp/dist/assets/c4Diagram-IC4MRINW-CNHKD5Sl.js.map +1 -0
  124. package/webapp/dist/assets/{channel-CDo0v82C.js → channel-BTWhZYd5.js} +2 -2
  125. package/webapp/dist/assets/channel-BTWhZYd5.js.map +1 -0
  126. package/webapp/dist/assets/{chunk-4BX2VUAB-DMqSdYxu.js → chunk-4BX2VUAB-CV1n0Uhy.js} +2 -2
  127. package/webapp/dist/assets/chunk-4BX2VUAB-CV1n0Uhy.js.map +1 -0
  128. package/webapp/dist/assets/{chunk-55IACEB6-CudmE3Fx.js → chunk-55IACEB6-C5r77i_p.js} +2 -2
  129. package/webapp/dist/assets/chunk-55IACEB6-C5r77i_p.js.map +1 -0
  130. package/webapp/dist/assets/{chunk-FMBD7UC4-BSVSuNxy.js → chunk-FMBD7UC4-DJ1yHxrH.js} +2 -2
  131. package/webapp/dist/assets/chunk-FMBD7UC4-DJ1yHxrH.js.map +1 -0
  132. package/webapp/dist/assets/{chunk-TZMSLE5B-aW2uEdtS.js → chunk-JSJVCQXG-Ahg9hCCm.js} +14 -6
  133. package/webapp/dist/assets/chunk-JSJVCQXG-Ahg9hCCm.js.map +1 -0
  134. package/webapp/dist/assets/{chunk-QN33PNHL-Cbf-pIxI.js → chunk-KX2RTZJC-qBrewKt0.js} +2 -2
  135. package/webapp/dist/assets/chunk-KX2RTZJC-qBrewKt0.js.map +1 -0
  136. package/webapp/dist/assets/{chunk-DI55MBZ5-CZCetJxI.js → chunk-NQ4KR5QH-1lEdM6Wi.js} +9 -7
  137. package/webapp/dist/assets/chunk-NQ4KR5QH-1lEdM6Wi.js.map +1 -0
  138. package/webapp/dist/assets/{chunk-QZHKN3VN-DYyIY8_q.js → chunk-QZHKN3VN-ChVR749G.js} +2 -2
  139. package/webapp/dist/assets/chunk-QZHKN3VN-ChVR749G.js.map +1 -0
  140. package/webapp/dist/assets/{chunk-B4BG7PRW-d5dfiagO.js → chunk-WL4C6EOR-BAUXgk0K.js} +171 -121
  141. package/webapp/dist/assets/chunk-WL4C6EOR-BAUXgk0K.js.map +1 -0
  142. package/webapp/dist/assets/{classDiagram-2ON5EDUG-C4-5PgVL.js → classDiagram-VBA2DB6C-DlqyhKve.js} +7 -6
  143. package/webapp/dist/assets/classDiagram-VBA2DB6C-DlqyhKve.js.map +1 -0
  144. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-C4-5PgVL.js → classDiagram-v2-RAHNMMFH-DlqyhKve.js} +7 -6
  145. package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-DlqyhKve.js.map +1 -0
  146. package/webapp/dist/assets/{clone-DivPByZ0.js → clone-BFiIqUsc.js} +2 -2
  147. package/webapp/dist/assets/clone-BFiIqUsc.js.map +1 -0
  148. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-CwBAjMT3.js → cose-bilkent-S5V4N54A-JYvhtd6J.js} +2 -2
  149. package/webapp/dist/assets/cose-bilkent-S5V4N54A-JYvhtd6J.js.map +1 -0
  150. package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
  151. package/webapp/dist/assets/{dagre-6UL2VRFP-tC56AIio.js → dagre-KLK3FWXG-CCGcQh6w.js} +7 -7
  152. package/webapp/dist/assets/dagre-KLK3FWXG-CCGcQh6w.js.map +1 -0
  153. package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
  154. package/webapp/dist/assets/{diagram-PSM6KHXK-dEF_O6uj.js → diagram-E7M64L7V-BXC4AxAd.js} +10 -10
  155. package/webapp/dist/assets/diagram-E7M64L7V-BXC4AxAd.js.map +1 -0
  156. package/webapp/dist/assets/{diagram-QEK2KX5R-BC3CyB81.js → diagram-IFDJBPK2-B--Sb3XT.js} +9 -8
  157. package/webapp/dist/assets/diagram-IFDJBPK2-B--Sb3XT.js.map +1 -0
  158. package/webapp/dist/assets/{diagram-S2PKOQOG-BV-YMbA_.js → diagram-P4PSJMXO-CVqgtrh3.js} +8 -8
  159. package/webapp/dist/assets/diagram-P4PSJMXO-CVqgtrh3.js.map +1 -0
  160. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-DIgdtwce.js → erDiagram-INFDFZHY-BniHaRTt.js} +96 -75
  161. package/webapp/dist/assets/erDiagram-INFDFZHY-BniHaRTt.js.map +1 -0
  162. package/webapp/dist/assets/{flowDiagram-NV44I4VS-C7Mawlld.js → flowDiagram-PKNHOUZH-wLKFBWTR.js} +98 -81
  163. package/webapp/dist/assets/flowDiagram-PKNHOUZH-wLKFBWTR.js.map +1 -0
  164. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-DgaYLOeL.js → ganttDiagram-A5KZAMGK-DrptcitZ.js} +28 -3
  165. package/webapp/dist/assets/ganttDiagram-A5KZAMGK-DrptcitZ.js.map +1 -0
  166. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-Dwv1ZLFB.js → gitGraphDiagram-K3NZZRJ6-C6l5aP44.js} +38 -46
  167. package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-C6l5aP44.js.map +1 -0
  168. package/webapp/dist/assets/graph-DXuQGYQN.js +782 -0
  169. package/webapp/dist/assets/graph-DXuQGYQN.js.map +1 -0
  170. package/webapp/dist/assets/{index-BGdI3lWA.css → index-BQoNJEGT.css} +19 -27
  171. package/webapp/dist/assets/{index-BsSFGqVX.js → index-DuQ1OCMG.js} +1435 -1348
  172. package/webapp/dist/assets/{index-BsSFGqVX.js.map → index-DuQ1OCMG.js.map} +1 -1
  173. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-PDKRqD6y.js → infoDiagram-LFFYTUFH-BbleCSjW.js} +7 -7
  174. package/webapp/dist/assets/infoDiagram-LFFYTUFH-BbleCSjW.js.map +1 -0
  175. package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
  176. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DmV-LZuk.js +966 -0
  177. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DmV-LZuk.js.map +1 -0
  178. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-DDD6YlTa.js → journeyDiagram-4ABVD52K-D3sQFfac.js} +5 -5
  179. package/webapp/dist/assets/journeyDiagram-4ABVD52K-D3sQFfac.js.map +1 -0
  180. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-CK-CJzXm.js → kanban-definition-K7BYSVSG-BEeBlBtM.js} +5 -3
  181. package/webapp/dist/assets/kanban-definition-K7BYSVSG-BEeBlBtM.js.map +1 -0
  182. package/webapp/dist/assets/{layout-DRs2ltCp.js → layout-g7jjgV-W.js} +5 -5
  183. package/webapp/dist/assets/layout-g7jjgV-W.js.map +1 -0
  184. package/webapp/dist/assets/{linear-CiMu0dYF.js → linear-D_X91Yek.js} +2 -2
  185. package/webapp/dist/assets/linear-D_X91Yek.js.map +1 -0
  186. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-C8yEoHXx.js → mindmap-definition-YRQLILUH-NkMAIgRY.js} +7 -5
  187. package/webapp/dist/assets/mindmap-definition-YRQLILUH-NkMAIgRY.js.map +1 -0
  188. package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
  189. package/webapp/dist/assets/{pieDiagram-ADFJNKIX-BhtVILXQ.js → pieDiagram-SKSYHLDU-Z6E4GEPC.js} +8 -8
  190. package/webapp/dist/assets/pieDiagram-SKSYHLDU-Z6E4GEPC.js.map +1 -0
  191. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-B7Xuuv_G.js → quadrantDiagram-337W2JSQ-BH8hfOuU.js} +3 -3
  192. package/webapp/dist/assets/quadrantDiagram-337W2JSQ-BH8hfOuU.js.map +1 -0
  193. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-DY6Q4U6l.js → requirementDiagram-Z7DCOOCP-DRJkvoQI.js} +16 -6
  194. package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-DRJkvoQI.js.map +1 -0
  195. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-DZPox4PX.js → sankeyDiagram-WA2Y5GQK-D2VwjtJo.js} +2 -2
  196. package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-D2VwjtJo.js.map +1 -0
  197. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-Bg6GPP0w.js → sequenceDiagram-2WXFIKYE-Cq-gEPOw.js} +601 -201
  198. package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-Cq-gEPOw.js.map +1 -0
  199. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-CcskYNpn.js → stateDiagram-RAJIS63D-CFM8Jqke.js} +9 -9
  200. package/webapp/dist/assets/stateDiagram-RAJIS63D-CFM8Jqke.js.map +1 -0
  201. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-Dja5UwuW.js → stateDiagram-v2-FVOUBMTO-Dip5iGX_.js} +5 -5
  202. package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-Dip5iGX_.js.map +1 -0
  203. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-CA-Wvxg8.js → timeline-definition-YZTLITO2-OI9JzMjX.js} +3 -3
  204. package/webapp/dist/assets/timeline-definition-YZTLITO2-OI9JzMjX.js.map +1 -0
  205. package/webapp/dist/assets/{treemap-GDKQZRPO-CF_Fur4n.js → treemap-KZPCXAKY-CtNF416A.js} +37 -24
  206. package/webapp/dist/assets/treemap-KZPCXAKY-CtNF416A.js.map +1 -0
  207. package/webapp/dist/assets/vennDiagram-LZ73GAT5-CjaPj4FZ.js +2487 -0
  208. package/webapp/dist/assets/vennDiagram-LZ73GAT5-CjaPj4FZ.js.map +1 -0
  209. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-CYc3vOkZ.js → xychartDiagram-JWTSCODW-21mBt9iu.js} +4 -4
  210. package/webapp/dist/assets/xychartDiagram-JWTSCODW-21mBt9iu.js.map +1 -0
  211. package/webapp/dist/index.html +2 -2
  212. package/dist/docs/tellask-revive-context-refactor.zh.md +0 -604
  213. package/webapp/dist/assets/_basePickBy-CBh9Agsi.js.map +0 -1
  214. package/webapp/dist/assets/_baseUniq-D2UXV506.js.map +0 -1
  215. package/webapp/dist/assets/arc-CmeRUuzC.js.map +0 -1
  216. package/webapp/dist/assets/architectureDiagram-VXUJARFQ-D5hfsb4A.js.map +0 -1
  217. package/webapp/dist/assets/blockDiagram-VD42YOAC-BVswEa9D.js.map +0 -1
  218. package/webapp/dist/assets/c4Diagram-YG6GDRKO-Bgm6yzGX.js.map +0 -1
  219. package/webapp/dist/assets/channel-CDo0v82C.js.map +0 -1
  220. package/webapp/dist/assets/chunk-4BX2VUAB-DMqSdYxu.js.map +0 -1
  221. package/webapp/dist/assets/chunk-55IACEB6-CudmE3Fx.js.map +0 -1
  222. package/webapp/dist/assets/chunk-B4BG7PRW-d5dfiagO.js.map +0 -1
  223. package/webapp/dist/assets/chunk-DI55MBZ5-CZCetJxI.js.map +0 -1
  224. package/webapp/dist/assets/chunk-FMBD7UC4-BSVSuNxy.js.map +0 -1
  225. package/webapp/dist/assets/chunk-QN33PNHL-Cbf-pIxI.js.map +0 -1
  226. package/webapp/dist/assets/chunk-QZHKN3VN-DYyIY8_q.js.map +0 -1
  227. package/webapp/dist/assets/chunk-TZMSLE5B-aW2uEdtS.js.map +0 -1
  228. package/webapp/dist/assets/classDiagram-2ON5EDUG-C4-5PgVL.js.map +0 -1
  229. package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-C4-5PgVL.js.map +0 -1
  230. package/webapp/dist/assets/clone-DivPByZ0.js.map +0 -1
  231. package/webapp/dist/assets/cose-bilkent-S5V4N54A-CwBAjMT3.js.map +0 -1
  232. package/webapp/dist/assets/dagre-6UL2VRFP-tC56AIio.js.map +0 -1
  233. package/webapp/dist/assets/diagram-PSM6KHXK-dEF_O6uj.js.map +0 -1
  234. package/webapp/dist/assets/diagram-QEK2KX5R-BC3CyB81.js.map +0 -1
  235. package/webapp/dist/assets/diagram-S2PKOQOG-BV-YMbA_.js.map +0 -1
  236. package/webapp/dist/assets/erDiagram-Q2GNP2WA-DIgdtwce.js.map +0 -1
  237. package/webapp/dist/assets/flowDiagram-NV44I4VS-C7Mawlld.js.map +0 -1
  238. package/webapp/dist/assets/ganttDiagram-JELNMOA3-DgaYLOeL.js.map +0 -1
  239. package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-Dwv1ZLFB.js.map +0 -1
  240. package/webapp/dist/assets/graph-saC_350a.js +0 -425
  241. package/webapp/dist/assets/graph-saC_350a.js.map +0 -1
  242. package/webapp/dist/assets/infoDiagram-HS3SLOUP-PDKRqD6y.js.map +0 -1
  243. package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-DDD6YlTa.js.map +0 -1
  244. package/webapp/dist/assets/kanban-definition-3W4ZIXB7-CK-CJzXm.js.map +0 -1
  245. package/webapp/dist/assets/layout-DRs2ltCp.js.map +0 -1
  246. package/webapp/dist/assets/linear-CiMu0dYF.js.map +0 -1
  247. package/webapp/dist/assets/mindmap-definition-VGOIOE7T-C8yEoHXx.js.map +0 -1
  248. package/webapp/dist/assets/pieDiagram-ADFJNKIX-BhtVILXQ.js.map +0 -1
  249. package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-B7Xuuv_G.js.map +0 -1
  250. package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-DY6Q4U6l.js.map +0 -1
  251. package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-DZPox4PX.js.map +0 -1
  252. package/webapp/dist/assets/sequenceDiagram-WL72ISMW-Bg6GPP0w.js.map +0 -1
  253. package/webapp/dist/assets/stateDiagram-FKZM4ZOC-CcskYNpn.js.map +0 -1
  254. package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3-Dja5UwuW.js.map +0 -1
  255. package/webapp/dist/assets/timeline-definition-IT6M3QCI-CA-Wvxg8.js.map +0 -1
  256. package/webapp/dist/assets/treemap-GDKQZRPO-CF_Fur4n.js.map +0 -1
  257. package/webapp/dist/assets/xychartDiagram-PRI3JC2R-CYc3vOkZ.js.map +0 -1
@@ -9,6 +9,7 @@ const node_path_1 = __importDefault(require("node:path"));
9
9
  const storage_1 = require("@longrun-ai/kernel/types/storage");
10
10
  const time_1 = require("@longrun-ai/kernel/utils/time");
11
11
  const dialog_1 = require("./dialog");
12
+ const dialog_latest_state_1 = require("./dialog-latest-state");
12
13
  const persistence_1 = require("./persistence");
13
14
  const tool_1 = require("./tool");
14
15
  const id_1 = require("./utils/id");
@@ -49,8 +50,8 @@ function cloneQuestions(questions) {
49
50
  callSiteRef: { ...question.callSiteRef },
50
51
  }));
51
52
  }
52
- function clonePendingSideDialogs(pendingSideDialogs) {
53
- return pendingSideDialogs.map((entry) => ({
53
+ function cloneActiveCalleeDispatches(activeCalleeDispatches) {
54
+ return activeCalleeDispatches.map((entry) => ({
54
55
  ...entry,
55
56
  mentionList: entry.mentionList ? [...entry.mentionList] : undefined,
56
57
  }));
@@ -111,7 +112,7 @@ function isForkStateRecord(record) {
111
112
  case 'sideDialog_created_record':
112
113
  case 'reminders_reconciled_record':
113
114
  case 'questions4human_reconciled_record':
114
- case 'pending_sideDialogs_reconciled_record':
115
+ case 'active_callees_reconciled_record':
115
116
  case 'sideDialog_registry_reconciled_record':
116
117
  case 'sideDialog_responses_reconciled_record':
117
118
  return record;
@@ -147,7 +148,7 @@ function isPersistedMessageRecord(record) {
147
148
  case 'sideDialog_created_record':
148
149
  case 'reminders_reconciled_record':
149
150
  case 'questions4human_reconciled_record':
150
- case 'pending_sideDialogs_reconciled_record':
151
+ case 'active_callees_reconciled_record':
151
152
  case 'sideDialog_registry_reconciled_record':
152
153
  case 'sideDialog_responses_reconciled_record':
153
154
  return false;
@@ -242,7 +243,7 @@ function rewriteRecordForFork(record, newRootId) {
242
243
  case 'sideDialog_created_record':
243
244
  case 'reminders_reconciled_record':
244
245
  case 'questions4human_reconciled_record':
245
- case 'pending_sideDialogs_reconciled_record':
246
+ case 'active_callees_reconciled_record':
246
247
  case 'sideDialog_registry_reconciled_record':
247
248
  case 'sideDialog_responses_reconciled_record':
248
249
  throw new Error(`Fork transcript copy must not include state record ${record.type}`);
@@ -275,16 +276,9 @@ function computeRootForkDisplayState(args) {
275
276
  return { kind: 'idle_waiting_user' };
276
277
  }
277
278
  const hasQ4H = args.questions.length > 0;
278
- const hasSideDialogs = args.pendingSideDialogs.length > 0;
279
- if (hasQ4H && hasSideDialogs) {
280
- return { kind: 'blocked', reason: { kind: 'needs_human_input_and_sideDialogs' } };
281
- }
282
279
  if (hasQ4H) {
283
280
  return { kind: 'blocked', reason: { kind: 'needs_human_input' } };
284
281
  }
285
- if (hasSideDialogs) {
286
- return { kind: 'blocked', reason: { kind: 'waiting_for_sideDialogs' } };
287
- }
288
282
  return { kind: 'stopped', reason: { kind: 'fork_continue_ready' }, continueEnabled: true };
289
283
  }
290
284
  async function copyArtifactsIfPresent(sourceId, targetId, sourceStatus) {
@@ -329,7 +323,7 @@ async function collectForkSnapshot(dialogId, status, cutoffAnchor) {
329
323
  const courseNumbers = await listDialogCourseNumbers(dialogId, status);
330
324
  let latestReminders = null;
331
325
  let latestQuestions = null;
332
- let latestPending = null;
326
+ let latestActiveCalleeDispatches = null;
333
327
  let latestRegistry = null;
334
328
  let latestResponses = null;
335
329
  for (const course of courseNumbers) {
@@ -347,8 +341,8 @@ async function collectForkSnapshot(dialogId, status, cutoffAnchor) {
347
341
  case 'questions4human_reconciled_record':
348
342
  latestQuestions = cloneQuestions(stateRecord.questions);
349
343
  break;
350
- case 'pending_sideDialogs_reconciled_record':
351
- latestPending = clonePendingSideDialogs(stateRecord.pendingSideDialogs);
344
+ case 'active_callees_reconciled_record':
345
+ latestActiveCalleeDispatches = cloneActiveCalleeDispatches(stateRecord.activeCalleeDispatches);
352
346
  break;
353
347
  case 'sideDialog_registry_reconciled_record':
354
348
  latestRegistry = cloneRegistryEntries(stateRecord.entries);
@@ -368,7 +362,7 @@ async function collectForkSnapshot(dialogId, status, cutoffAnchor) {
368
362
  return {
369
363
  reminders: latestReminders !== null ? latestReminders.map((item) => cloneReminderSnapshot(item)) : [],
370
364
  questions: latestQuestions ?? [],
371
- pendingSideDialogs: latestPending ?? [],
365
+ activeCalleeDispatches: latestActiveCalleeDispatches ?? [],
372
366
  registryEntries: latestRegistry ?? [],
373
367
  sideDialogResponses: latestResponses ?? [],
374
368
  };
@@ -378,15 +372,15 @@ async function collectIncludedSideDialogs(args) {
378
372
  const scannedDialogSelfIds = new Set();
379
373
  const included = new Map();
380
374
  while (queue.length > 0) {
381
- const ownerDialogId = queue.shift();
382
- if (!ownerDialogId)
375
+ const sourceDialogId = queue.shift();
376
+ if (!sourceDialogId)
383
377
  break;
384
- if (scannedDialogSelfIds.has(ownerDialogId.selfId))
378
+ if (scannedDialogSelfIds.has(sourceDialogId.selfId))
385
379
  continue;
386
- scannedDialogSelfIds.add(ownerDialogId.selfId);
387
- const courseNumbers = await listDialogCourseNumbers(ownerDialogId, args.sourceStatus);
380
+ scannedDialogSelfIds.add(sourceDialogId.selfId);
381
+ const courseNumbers = await listDialogCourseNumbers(sourceDialogId, args.sourceStatus);
388
382
  for (const course of courseNumbers) {
389
- const events = await persistence_1.DialogPersistence.readCourseEvents(ownerDialogId, course, args.sourceStatus);
383
+ const events = await persistence_1.DialogPersistence.readCourseEvents(sourceDialogId, course, args.sourceStatus);
390
384
  for (const event of events) {
391
385
  if (event.type !== 'sideDialog_created_record')
392
386
  continue;
@@ -457,7 +451,7 @@ async function buildDialogForkPlan(args) {
457
451
  currentCourse: retainedCurrentCourse,
458
452
  reminders: snapshot.reminders,
459
453
  questions: snapshot.questions,
460
- pendingSideDialogs: snapshot.pendingSideDialogs,
454
+ activeCalleeDispatches: snapshot.activeCalleeDispatches,
461
455
  registryEntries: snapshot.registryEntries,
462
456
  sideDialogResponses: snapshot.sideDialogResponses,
463
457
  childCount: args.childCount,
@@ -489,11 +483,11 @@ async function appendForkBaselineState(plan, baselineSideDialogCreatedRecords) {
489
483
  ...FORK_BASELINE_ANCHOR,
490
484
  questions: cloneQuestions(plan.questions),
491
485
  };
492
- const pendingRecord = {
486
+ const activeCalleesRecord = {
493
487
  ts: baselineTs,
494
- type: 'pending_sideDialogs_reconciled_record',
488
+ type: 'active_callees_reconciled_record',
495
489
  ...FORK_BASELINE_ANCHOR,
496
- pendingSideDialogs: clonePendingSideDialogs(plan.pendingSideDialogs),
490
+ activeCalleeDispatches: cloneActiveCalleeDispatches(plan.activeCalleeDispatches),
497
491
  };
498
492
  const registryRecord = {
499
493
  ts: baselineTs,
@@ -509,7 +503,7 @@ async function appendForkBaselineState(plan, baselineSideDialogCreatedRecords) {
509
503
  };
510
504
  await persistence_1.DialogPersistence.appendEvent(plan.targetId, 1, remindersRecord, 'running');
511
505
  await persistence_1.DialogPersistence.appendEvent(plan.targetId, 1, q4hRecord, 'running');
512
- await persistence_1.DialogPersistence.appendEvent(plan.targetId, 1, pendingRecord, 'running');
506
+ await persistence_1.DialogPersistence.appendEvent(plan.targetId, 1, activeCalleesRecord, 'running');
513
507
  await persistence_1.DialogPersistence.appendEvent(plan.targetId, 1, registryRecord, 'running');
514
508
  await persistence_1.DialogPersistence.appendEvent(plan.targetId, 1, responsesRecord, 'running');
515
509
  }
@@ -549,7 +543,9 @@ async function persistForkPlan(args) {
549
543
  await appendForkBaselineState(plan, args.baselineRecordsByParentSelfId.get(plan.targetId.selfId) ?? []);
550
544
  await persistence_1.DialogPersistence._saveReminderState(plan.targetId, [...plan.reminders], 'running');
551
545
  await persistence_1.DialogPersistence._saveQuestions4HumanState(plan.targetId, [...plan.questions], 'running');
552
- await persistence_1.DialogPersistence.savePendingSideDialogs(plan.targetId, [...plan.pendingSideDialogs], undefined, 'running');
546
+ for (const record of plan.activeCalleeDispatches) {
547
+ await persistence_1.DialogPersistence.appendActiveCalleeDispatch(plan.targetId, record, undefined, 'running');
548
+ }
553
549
  await persistence_1.DialogPersistence.saveSideDialogRegistry(plan.targetId, plan.registryEntries.map((entry) => ({
554
550
  key: entry.key,
555
551
  sideDialogId: new dialog_1.DialogID(entry.sideDialogId, plan.targetId.rootId),
@@ -563,7 +559,6 @@ async function persistForkPlan(args) {
563
559
  ? computeRootForkDisplayState({
564
560
  action: args.action,
565
561
  questions: plan.questions,
566
- pendingSideDialogs: plan.pendingSideDialogs,
567
562
  })
568
563
  : { kind: 'idle_waiting_user' };
569
564
  await persistence_1.DialogPersistence.mutateDialogLatest(plan.targetId, () => ({
@@ -576,7 +571,9 @@ async function persistForkPlan(args) {
576
571
  functionCallCount: countFunctionCalls(currentCourseEvents),
577
572
  sideDialogCount: plan.childCount,
578
573
  generating: false,
579
- needsDrive: false,
574
+ nextStep: (0, dialog_latest_state_1.createEmptyDialogNextStepState)(),
575
+ tellaskCalls: (0, dialog_latest_state_1.createEmptyDialogTellaskCallState)(),
576
+ tellaskResults: (0, dialog_latest_state_1.createEmptyDialogTellaskResultState)(),
580
577
  displayState,
581
578
  disableDiligencePush: plan.targetId.selfId === plan.targetId.rootId ? args.latestDisableDiligencePush : false,
582
579
  diligencePushRemainingBudget: plan.targetId.selfId === plan.targetId.rootId
@@ -642,11 +639,10 @@ async function forkMainDialogTreeAtGeneration(args) {
642
639
  });
643
640
  const action = draftUserText !== null
644
641
  ? { kind: 'draft_user_text', userText: draftUserText }
645
- : rootPlan.questions.length > 0 || rootPlan.pendingSideDialogs.length > 0
642
+ : rootPlan.questions.length > 0
646
643
  ? {
647
644
  kind: 'restore_pending',
648
645
  pendingQ4H: rootPlan.questions.length > 0,
649
- pendingSideDialogs: rootPlan.pendingSideDialogs.length > 0,
650
646
  }
651
647
  : { kind: 'auto_continue' };
652
648
  const sideDialogPlans = [];
@@ -0,0 +1,4 @@
1
+ import type { DialogGenerationRunState, DialogLatestFile } from '@longrun-ai/kernel/types/storage';
2
+ export declare function getRecoverableGenerationRunState(latest: DialogLatestFile | null | undefined): Extract<DialogGenerationRunState, {
3
+ kind: 'open';
4
+ }> | undefined;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRecoverableGenerationRunState = getRecoverableGenerationRunState;
4
+ function getRecoverableGenerationRunState(latest) {
5
+ if (!latest) {
6
+ return undefined;
7
+ }
8
+ if (latest.generationRunState?.kind !== 'open') {
9
+ return undefined;
10
+ }
11
+ const marker = latest.executionMarker;
12
+ if (!marker) {
13
+ return latest.generationRunState;
14
+ }
15
+ if (marker.kind === 'dead') {
16
+ return undefined;
17
+ }
18
+ if (marker.kind !== 'interrupted' ||
19
+ marker.reason.kind === 'pending_runtime_prompt' ||
20
+ marker.reason.kind === 'pending_reply_obligation') {
21
+ return latest.generationRunState;
22
+ }
23
+ return undefined;
24
+ }
@@ -1,11 +1,11 @@
1
- import type { MainDialog } from './dialog';
1
+ import { type MainDialog } from './dialog';
2
2
  export type DriveTriggerEvent = Readonly<{
3
3
  type: 'drive_trigger_evt';
4
- action: 'mark_needs_drive' | 'mark_not_needing_drive' | 'active_run_cleared';
4
+ action: 'wake_drive' | 'clear_drive_wake' | 'active_run_cleared';
5
5
  rootId: string;
6
6
  entryFound: boolean;
7
- previousNeedsDrive: boolean | null;
8
- nextNeedsDrive: boolean;
7
+ previousWakeQueued: boolean | null;
8
+ nextWakeQueued: boolean;
9
9
  source: string;
10
10
  reason: string;
11
11
  emittedAtMs: number;
@@ -26,13 +26,12 @@ declare class GlobalDialogRegistry {
26
26
  unregister(rootId: string): void;
27
27
  private publishDriveTrigger;
28
28
  waitForDriveTrigger(): Promise<DriveTriggerEvent>;
29
- markNeedsDrive(rootId: string, meta?: DriveTriggerMeta): void;
30
- markNotNeedingDrive(rootId: string, meta?: DriveTriggerMeta): void;
29
+ wakeDrive(rootId: string, meta?: DriveTriggerMeta): void;
30
+ clearDriveWake(rootId: string, meta?: DriveTriggerMeta): void;
31
31
  notifyActiveRunCleared(rootId: string, meta?: DriveTriggerMeta): void;
32
32
  noteActiveRunBlockedQueuedDrive(rootId: string): void;
33
33
  hasPendingActiveRunClearedWake(rootId: string): boolean;
34
- isMarkedNeedingDrive(rootId: string): boolean;
35
- getDialogsNeedingDrive(): MainDialog[];
34
+ isDriveWakeQueued(rootId: string): boolean;
36
35
  getLastDriveTrigger(rootId: string): DriveTriggerEvent | undefined;
37
36
  getAll(): MainDialog[];
38
37
  get size(): number;
@@ -2,7 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.globalDialogRegistry = void 0;
4
4
  const evt_1 = require("@longrun-ai/kernel/evt");
5
+ const dialog_1 = require("./dialog");
6
+ const log_1 = require("./log");
5
7
  const persistence_1 = require("./persistence");
8
+ const log = (0, log_1.createLogger)('dialog-global-registry');
6
9
  class GlobalDialogRegistry {
7
10
  constructor() {
8
11
  this.entries = new Map();
@@ -31,26 +34,34 @@ class GlobalDialogRegistry {
31
34
  }
32
35
  this.entries.set(mainDialog.id.rootId, {
33
36
  mainDialog,
34
- needsDrive: false,
37
+ wakeQueued: false,
35
38
  activeRunClearedWakePending: false,
36
39
  });
37
40
  void (async () => {
38
41
  try {
39
- const needsDrive = await persistence_1.DialogPersistence.getNeedsDrive(mainDialog.id);
40
- if (needsDrive) {
41
- this.markNeedsDrive(mainDialog.id.rootId, {
42
+ const hasPendingNextStepTriggers = await persistence_1.DialogPersistence.hasPendingNextStepTriggers(mainDialog.id);
43
+ const watchedDialogIds = await persistence_1.DialogPersistence.loadDriveWatchedDialogIds(mainDialog.id);
44
+ if (hasPendingNextStepTriggers || watchedDialogIds.length > 0) {
45
+ this.wakeDrive(mainDialog.id.rootId, {
42
46
  source: 'dialog_registry_hydration',
43
- reason: 'persisted_needs_drive_true',
47
+ reason: hasPendingNextStepTriggers
48
+ ? 'persisted_next_step_triggers'
49
+ : 'persisted_drive_watch',
44
50
  });
45
51
  }
46
52
  }
47
- catch {
48
- // Best-effort hydration; backend driver will still function for runtime-triggered drives.
53
+ catch (error) {
54
+ log.warn('Failed to hydrate persisted drive wake for registered main dialog', error, {
55
+ rootId: mainDialog.id.rootId,
56
+ selfId: mainDialog.id.selfId,
57
+ });
49
58
  }
50
59
  })();
51
60
  }
52
61
  unregister(rootId) {
53
62
  this.entries.delete(rootId);
63
+ this.lastDriveTriggerByRootId.delete(rootId);
64
+ (0, dialog_1.scheduleGlobalDialogMutexCleanupForRoot)(rootId);
54
65
  }
55
66
  publishDriveTrigger(args) {
56
67
  const trigger = {
@@ -58,8 +69,8 @@ class GlobalDialogRegistry {
58
69
  action: args.action,
59
70
  rootId: args.rootId,
60
71
  entryFound: args.entryFound,
61
- previousNeedsDrive: args.previousNeedsDrive,
62
- nextNeedsDrive: args.nextNeedsDrive,
72
+ previousWakeQueued: args.previousWakeQueued,
73
+ nextWakeQueued: args.nextWakeQueued,
63
74
  source: args.meta.source,
64
75
  reason: args.meta.reason,
65
76
  emittedAtMs: Date.now(),
@@ -77,44 +88,44 @@ class GlobalDialogRegistry {
77
88
  this.driveTriggerSubChan = (0, evt_1.createSubChan)(this.driveTriggerPubChan);
78
89
  }
79
90
  }
80
- markNeedsDrive(rootId, meta) {
91
+ wakeDrive(rootId, meta) {
81
92
  const triggerMeta = meta ?? {
82
93
  source: 'unknown',
83
94
  reason: 'unspecified',
84
95
  };
85
96
  const entry = this.entries.get(rootId);
86
- const previousNeedsDrive = entry ? entry.needsDrive : null;
97
+ const previousWakeQueued = entry ? entry.wakeQueued : null;
87
98
  if (entry) {
88
- entry.needsDrive = true;
99
+ entry.wakeQueued = true;
89
100
  // A fresh queueing trigger supersedes any earlier "wake me once active run clears" debt.
90
101
  entry.activeRunClearedWakePending = false;
91
102
  }
92
103
  this.publishDriveTrigger({
93
- action: 'mark_needs_drive',
104
+ action: 'wake_drive',
94
105
  rootId,
95
106
  entryFound: entry !== undefined,
96
- previousNeedsDrive,
97
- nextNeedsDrive: true,
107
+ previousWakeQueued,
108
+ nextWakeQueued: true,
98
109
  meta: triggerMeta,
99
110
  });
100
111
  }
101
- markNotNeedingDrive(rootId, meta) {
112
+ clearDriveWake(rootId, meta) {
102
113
  const triggerMeta = meta ?? {
103
114
  source: 'unknown',
104
115
  reason: 'unspecified',
105
116
  };
106
117
  const entry = this.entries.get(rootId);
107
- const previousNeedsDrive = entry ? entry.needsDrive : null;
118
+ const previousWakeQueued = entry ? entry.wakeQueued : null;
108
119
  if (entry) {
109
- entry.needsDrive = false;
120
+ entry.wakeQueued = false;
110
121
  entry.activeRunClearedWakePending = false;
111
122
  }
112
123
  this.publishDriveTrigger({
113
- action: 'mark_not_needing_drive',
124
+ action: 'clear_drive_wake',
114
125
  rootId,
115
126
  entryFound: entry !== undefined,
116
- previousNeedsDrive,
117
- nextNeedsDrive: false,
127
+ previousWakeQueued,
128
+ nextWakeQueued: false,
118
129
  meta: triggerMeta,
119
130
  });
120
131
  }
@@ -127,24 +138,24 @@ class GlobalDialogRegistry {
127
138
  if (!entry) {
128
139
  return;
129
140
  }
130
- if (!entry.activeRunClearedWakePending || !entry.needsDrive) {
141
+ if (!entry.activeRunClearedWakePending || !entry.wakeQueued) {
131
142
  entry.activeRunClearedWakePending = false;
132
143
  return;
133
144
  }
134
- const currentNeedsDrive = entry ? entry.needsDrive : null;
145
+ const currentWakeQueued = entry ? entry.wakeQueued : null;
135
146
  entry.activeRunClearedWakePending = false;
136
147
  this.publishDriveTrigger({
137
148
  action: 'active_run_cleared',
138
149
  rootId,
139
150
  entryFound: true,
140
- previousNeedsDrive: currentNeedsDrive,
141
- nextNeedsDrive: entry.needsDrive,
151
+ previousWakeQueued: currentWakeQueued,
152
+ nextWakeQueued: entry.wakeQueued,
142
153
  meta: triggerMeta,
143
154
  });
144
155
  }
145
156
  noteActiveRunBlockedQueuedDrive(rootId) {
146
157
  const entry = this.entries.get(rootId);
147
- if (!entry || !entry.needsDrive) {
158
+ if (!entry || !entry.wakeQueued) {
148
159
  return;
149
160
  }
150
161
  entry.activeRunClearedWakePending = true;
@@ -152,13 +163,8 @@ class GlobalDialogRegistry {
152
163
  hasPendingActiveRunClearedWake(rootId) {
153
164
  return this.entries.get(rootId)?.activeRunClearedWakePending === true;
154
165
  }
155
- isMarkedNeedingDrive(rootId) {
156
- return this.entries.get(rootId)?.needsDrive === true;
157
- }
158
- getDialogsNeedingDrive() {
159
- return Array.from(this.entries.values())
160
- .filter((entry) => entry.needsDrive)
161
- .map((entry) => entry.mainDialog);
166
+ isDriveWakeQueued(rootId) {
167
+ return this.entries.get(rootId)?.wakeQueued === true;
162
168
  }
163
169
  getLastDriveTrigger(rootId) {
164
170
  return this.lastDriveTriggerByRootId.get(rootId);
@@ -24,28 +24,28 @@ function clampNonNegativeFiniteInt(value, fallback) {
24
24
  return fallback;
25
25
  return Math.max(0, Math.floor(value));
26
26
  }
27
- async function resolvePendingCourseStartPromptForRestore(args) {
28
- const pending = args.latest?.pendingCourseStartPrompt;
27
+ async function resolvePendingRuntimePromptForRestore(args) {
28
+ const pending = args.latest?.pendingRuntimePrompt;
29
29
  if (!pending) {
30
- return { pendingCourseStartPrompt: undefined };
30
+ return { pendingRuntimePrompt: undefined };
31
31
  }
32
32
  const alreadyPersisted = args.messages.some((message) => {
33
33
  return message.type === 'prompting_msg' && message.msgId === pending.msgId;
34
34
  });
35
35
  if (alreadyPersisted) {
36
36
  if (args.status === 'running') {
37
- await persistence_1.DialogPersistence.clearPendingCourseStartPrompt(args.dialogId, pending.msgId, args.status);
37
+ await persistence_1.DialogPersistence.clearPendingRuntimePrompt(args.dialogId, pending.msgId, args.status);
38
38
  }
39
- return { pendingCourseStartPrompt: undefined };
39
+ return { pendingRuntimePrompt: undefined };
40
40
  }
41
- return { pendingCourseStartPrompt: pending };
41
+ return { pendingRuntimePrompt: pending };
42
42
  }
43
43
  async function getOrRestoreMainDialog(rootId, status) {
44
44
  const existing = dialog_global_registry_1.globalDialogRegistry.get(rootId);
45
45
  if (existing) {
46
46
  existing.setPersistenceStatus(status);
47
47
  await existing.loadSideDialogRegistry();
48
- await existing.loadPendingSideDialogsFromPersistence();
48
+ await existing.loadActiveCalleeDispatchesFromPersistence();
49
49
  return existing;
50
50
  }
51
51
  const mainDialogId = new dialog_1.DialogID(rootId);
@@ -54,7 +54,7 @@ async function getOrRestoreMainDialog(rootId, status) {
54
54
  return undefined;
55
55
  const rootMetadata = rootState.metadata;
56
56
  const latest = await persistence_1.DialogPersistence.loadDialogLatest(mainDialogId, status);
57
- const { pendingCourseStartPrompt } = await resolvePendingCourseStartPromptForRestore({
57
+ const { pendingRuntimePrompt } = await resolvePendingRuntimePromptForRestore({
58
58
  dialogId: mainDialogId,
59
59
  status,
60
60
  messages: rootState.messages,
@@ -75,7 +75,7 @@ async function getOrRestoreMainDialog(rootId, status) {
75
75
  reminders: rootState.reminders,
76
76
  currentCourse: rootState.currentCourse,
77
77
  contextHealth: rootState.contextHealth,
78
- pendingCourseStartPrompt,
78
+ pendingRuntimePrompt,
79
79
  });
80
80
  const persistedDisableDiligencePush = latest && typeof latest.disableDiligencePush === 'boolean'
81
81
  ? latest.disableDiligencePush
@@ -93,7 +93,7 @@ async function getOrRestoreMainDialog(rootId, status) {
93
93
  // Keep the in-memory main dialog fully hydrated regardless of persistence status
94
94
  // (running/completed/archived) so sideDialog lookup is stable across UI navigation.
95
95
  await mainDialog.loadSideDialogRegistry();
96
- await mainDialog.loadPendingSideDialogsFromPersistence();
96
+ await mainDialog.loadActiveCalleeDispatchesFromPersistence();
97
97
  return mainDialog;
98
98
  }
99
99
  async function ensureDialogLoaded(mainDialog, targetId, status, visitedSelfIds = new Set()) {
@@ -124,7 +124,7 @@ async function ensureDialogLoaded(mainDialog, targetId, status, visitedSelfIds =
124
124
  if (!state)
125
125
  return undefined;
126
126
  const latest = await persistence_1.DialogPersistence.loadDialogLatest(targetId, status);
127
- const { pendingCourseStartPrompt } = await resolvePendingCourseStartPromptForRestore({
127
+ const { pendingRuntimePrompt } = await resolvePendingRuntimePromptForRestore({
128
128
  dialogId: targetId,
129
129
  status,
130
130
  messages: state.messages,
@@ -151,7 +151,7 @@ async function ensureDialogLoaded(mainDialog, targetId, status, visitedSelfIds =
151
151
  reminders: state.reminders,
152
152
  currentCourse: state.currentCourse,
153
153
  contextHealth: state.contextHealth,
154
- pendingCourseStartPrompt,
154
+ pendingRuntimePrompt,
155
155
  });
156
156
  sideDialog.disableDiligencePush =
157
157
  latest && typeof latest.disableDiligencePush === 'boolean'
@@ -23,7 +23,7 @@ function isInterruptionReasonManualResumeEligible(reason) {
23
23
  case 'user_stop':
24
24
  case 'emergency_stop':
25
25
  case 'server_restart':
26
- case 'pending_course_start':
26
+ case 'pending_runtime_prompt':
27
27
  case 'pending_reply_obligation':
28
28
  case 'fork_continue_ready':
29
29
  case 'system_stop':
@@ -37,7 +37,7 @@ function isInterruptionReasonManualResumeEligible(reason) {
37
37
  }
38
38
  function doesInterruptionReasonRequireExplicitResume(reason) {
39
39
  switch (reason.kind) {
40
- case 'pending_course_start':
40
+ case 'pending_runtime_prompt':
41
41
  case 'pending_reply_obligation':
42
42
  return false;
43
43
  case 'user_stop':
@@ -0,0 +1,4 @@
1
+ import type { DialogNextStepTriggerState, DialogTellaskCallState, DialogTellaskResultState } from '@longrun-ai/kernel/types/storage';
2
+ export declare function createEmptyDialogNextStepState(): DialogNextStepTriggerState;
3
+ export declare function createEmptyDialogTellaskCallState(): DialogTellaskCallState;
4
+ export declare function createEmptyDialogTellaskResultState(): DialogTellaskResultState;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEmptyDialogNextStepState = createEmptyDialogNextStepState;
4
+ exports.createEmptyDialogTellaskCallState = createEmptyDialogTellaskCallState;
5
+ exports.createEmptyDialogTellaskResultState = createEmptyDialogTellaskResultState;
6
+ function createEmptyDialogNextStepState() {
7
+ return { nextSeq: 1, triggers: [] };
8
+ }
9
+ function createEmptyDialogTellaskCallState() {
10
+ return { calls: [] };
11
+ }
12
+ function createEmptyDialogTellaskResultState() {
13
+ return { results: [] };
14
+ }