dominds 1.18.2 → 1.19.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 (277) hide show
  1. package/dist/access-control.js +6 -6
  2. package/dist/apps/runtime.d.ts +2 -2
  3. package/dist/apps/runtime.js +28 -28
  4. package/dist/apps-host/client.d.ts +1 -1
  5. package/dist/apps-host/host.js +7 -7
  6. package/dist/apps-host/ipc-types.d.ts +2 -2
  7. package/dist/apps-host/ipc-types.js +10 -10
  8. package/dist/cli/read.d.ts +0 -1
  9. package/dist/cli/read.js +1 -6
  10. package/dist/dialog-display-state.d.ts +6 -6
  11. package/dist/dialog-display-state.js +46 -46
  12. package/dist/dialog-factory.d.ts +12 -12
  13. package/dist/dialog-factory.js +33 -30
  14. package/dist/dialog-fork.d.ts +2 -2
  15. package/dist/dialog-fork.js +140 -115
  16. package/dist/dialog-global-registry.d.ts +5 -5
  17. package/dist/dialog-global-registry.js +11 -11
  18. package/dist/dialog-instance-registry.d.ts +3 -3
  19. package/dist/dialog-instance-registry.js +52 -41
  20. package/dist/dialog.d.ts +100 -113
  21. package/dist/dialog.js +274 -229
  22. package/dist/docs/agent-priming.md +5 -5
  23. package/dist/docs/agent-priming.zh.md +5 -5
  24. package/dist/docs/app-constitution.md +1 -1
  25. package/dist/docs/app-constitution.zh.md +1 -1
  26. package/dist/docs/cli-usage.md +1 -1
  27. package/dist/docs/cli-usage.zh.md +1 -1
  28. package/dist/docs/design.md +14 -14
  29. package/dist/docs/design.zh.md +14 -14
  30. package/dist/docs/dialog-persistence.md +58 -58
  31. package/dist/docs/dialog-persistence.zh.md +61 -61
  32. package/dist/docs/dialog-system.md +363 -367
  33. package/dist/docs/dialog-system.zh.md +355 -357
  34. package/dist/docs/diligence-push.md +18 -18
  35. package/dist/docs/diligence-push.zh.md +17 -17
  36. package/dist/docs/dominds-agent-collaboration.zh.md +3 -3
  37. package/dist/docs/dominds-terminology.md +46 -47
  38. package/dist/docs/encapsulated-taskdoc.md +4 -4
  39. package/dist/docs/encapsulated-taskdoc.zh.md +3 -3
  40. package/dist/docs/fbr.md +30 -30
  41. package/dist/docs/fbr.zh.md +15 -15
  42. package/dist/docs/i18n.md +2 -2
  43. package/dist/docs/i18n.zh.md +2 -2
  44. package/dist/docs/mcp-support.md +5 -4
  45. package/dist/docs/mcp-support.zh.md +3 -2
  46. package/dist/docs/memory-system.md +4 -4
  47. package/dist/docs/memory-system.zh.md +1 -1
  48. package/dist/docs/mottos.md +1 -1
  49. package/dist/docs/mottos.zh.md +1 -1
  50. package/dist/docs/q4h.md +3 -3
  51. package/dist/docs/q4h.zh.md +1 -1
  52. package/dist/docs/roadmap.md +2 -2
  53. package/dist/docs/team_mgmt-toolset.md +11 -3
  54. package/dist/docs/team_mgmt-toolset.zh.md +9 -2
  55. package/dist/docs/tellask-collab.md +18 -18
  56. package/dist/docs/tellask-collab.zh.md +8 -8
  57. package/dist/docs/tellask-revive-context-refactor.zh.md +591 -0
  58. package/dist/evt-registry.d.ts +1 -2
  59. package/dist/evt-registry.js +2 -7
  60. package/dist/llm/gen/mock.js +9 -0
  61. package/dist/llm/kernel-driver/context.d.ts +1 -2
  62. package/dist/llm/kernel-driver/context.js +12 -26
  63. package/dist/llm/kernel-driver/drive.js +99 -75
  64. package/dist/llm/kernel-driver/engine.d.ts +2 -2
  65. package/dist/llm/kernel-driver/engine.js +10 -10
  66. package/dist/llm/kernel-driver/fbr.js +6 -6
  67. package/dist/llm/kernel-driver/flow.d.ts +1 -1
  68. package/dist/llm/kernel-driver/flow.js +129 -93
  69. package/dist/llm/kernel-driver/guardrails.js +4 -4
  70. package/dist/llm/kernel-driver/index.d.ts +1 -1
  71. package/dist/llm/kernel-driver/index.js +2 -2
  72. package/dist/llm/kernel-driver/loop.js +30 -30
  73. package/dist/llm/kernel-driver/reply-guidance.js +47 -52
  74. package/dist/llm/kernel-driver/restore.d.ts +3 -3
  75. package/dist/llm/kernel-driver/restore.js +23 -28
  76. package/dist/llm/kernel-driver/runtime.d.ts +1 -1
  77. package/dist/llm/kernel-driver/runtime.js +1 -1
  78. package/dist/llm/kernel-driver/sideDialog-txn.d.ts +8 -0
  79. package/dist/llm/kernel-driver/{subdialog-txn.js → sideDialog-txn.js} +13 -13
  80. package/dist/llm/kernel-driver/{subdialog.d.ts → sideDialog.d.ts} +13 -13
  81. package/dist/llm/kernel-driver/{subdialog.js → sideDialog.js} +203 -170
  82. package/dist/llm/kernel-driver/tellask-special.d.ts +7 -3
  83. package/dist/llm/kernel-driver/tellask-special.js +474 -497
  84. package/dist/llm/kernel-driver/types.d.ts +25 -9
  85. package/dist/mcp/config.d.ts +1 -0
  86. package/dist/mcp/config.js +7 -2
  87. package/dist/mcp/supervisor.d.ts +2 -0
  88. package/dist/mcp/supervisor.js +2 -1
  89. package/dist/minds/builtin/pangu/persona.en.md +4 -4
  90. package/dist/minds/load.js +6 -6
  91. package/dist/minds/system-prompt-parts.d.ts +1 -1
  92. package/dist/minds/system-prompt-parts.js +12 -12
  93. package/dist/minds/system-prompt.d.ts +1 -1
  94. package/dist/minds/system-prompt.js +56 -56
  95. package/dist/persistence-errors.d.ts +1 -1
  96. package/dist/persistence.d.ts +126 -121
  97. package/dist/persistence.js +1190 -786
  98. package/dist/priming.d.ts +3 -3
  99. package/dist/priming.js +62 -61
  100. package/dist/recovery/reply-special.js +5 -5
  101. package/dist/runtime/driver-messages.d.ts +3 -2
  102. package/dist/runtime/driver-messages.js +68 -57
  103. package/dist/runtime/inter-dialog-format.d.ts +12 -10
  104. package/dist/runtime/inter-dialog-format.js +80 -35
  105. package/dist/runtime/interjection-pause-stop.js +1 -1
  106. package/dist/runtime/reply-prompt-copy.d.ts +7 -3
  107. package/dist/runtime/reply-prompt-copy.js +39 -14
  108. package/dist/server/api-routes.js +87 -83
  109. package/dist/server/static-server.js +1 -1
  110. package/dist/server/websocket-handler.js +163 -153
  111. package/dist/tool-availability.js +1 -1
  112. package/dist/tools/app-reminders.js +17 -4
  113. package/dist/tools/ctrl.js +5 -5
  114. package/dist/tools/os.js +16 -16
  115. package/dist/tools/pending-tellask-reminder.js +20 -14
  116. package/dist/tools/prompts/control/en/index.md +1 -1
  117. package/dist/tools/prompts/control/en/principles.md +8 -8
  118. package/dist/tools/prompts/control/en/scenarios.md +7 -7
  119. package/dist/tools/prompts/control/en/tools.md +7 -7
  120. package/dist/tools/prompts/control/zh/principles.md +4 -4
  121. package/dist/tools/prompts/control/zh/scenarios.md +5 -5
  122. package/dist/tools/prompts/control/zh/tools.md +3 -3
  123. package/dist/tools/prompts/team_memory/en/scenarios.md +1 -1
  124. package/dist/tools/prompts/team_memory/zh/scenarios.md +1 -1
  125. package/dist/tools/team_mgmt-manual.js +2 -2
  126. package/dist/tools/team_mgmt-mcp-manual.js +10 -0
  127. package/dist/tools/team_mgmt.js +4 -4
  128. package/dist/utils/taskdoc.js +12 -12
  129. package/package.json +3 -3
  130. package/webapp/dist/assets/{_basePickBy-BPJaiZdW.js → _basePickBy-B7M9Q0Fa.js} +3 -3
  131. package/webapp/dist/assets/_basePickBy-B7M9Q0Fa.js.map +1 -0
  132. package/webapp/dist/assets/{_baseUniq-BEetT15i.js → _baseUniq-DAeYoL6j.js} +2 -2
  133. package/webapp/dist/assets/_baseUniq-DAeYoL6j.js.map +1 -0
  134. package/webapp/dist/assets/{arc-Dm7Zf36f.js → arc-Bh4nDbNR.js} +2 -2
  135. package/webapp/dist/assets/arc-Bh4nDbNR.js.map +1 -0
  136. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-BpTPtkuo.js → architectureDiagram-2XIMDMQ5-CxqmdsIm.js} +26 -8
  137. package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-CxqmdsIm.js.map +1 -0
  138. package/webapp/dist/assets/{blockDiagram-VD42YOAC-C8fLN0iu.js → blockDiagram-WCTKOSBZ-CxIWLtpt.js} +187 -170
  139. package/webapp/dist/assets/blockDiagram-WCTKOSBZ-CxIWLtpt.js.map +1 -0
  140. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-BpPr62CH.js → c4Diagram-IC4MRINW-1qErOIgG.js} +4 -4
  141. package/webapp/dist/assets/c4Diagram-IC4MRINW-1qErOIgG.js.map +1 -0
  142. package/webapp/dist/assets/{channel-EMYoPjW3.js → channel-DkgZHNUe.js} +2 -2
  143. package/webapp/dist/assets/channel-DkgZHNUe.js.map +1 -0
  144. package/webapp/dist/assets/{chunk-4BX2VUAB-CefNtjWG.js → chunk-4BX2VUAB-BmdMbU9v.js} +2 -2
  145. package/webapp/dist/assets/chunk-4BX2VUAB-BmdMbU9v.js.map +1 -0
  146. package/webapp/dist/assets/{chunk-55IACEB6-C_X7T43V.js → chunk-55IACEB6-D6LDTDBy.js} +2 -2
  147. package/webapp/dist/assets/chunk-55IACEB6-D6LDTDBy.js.map +1 -0
  148. package/webapp/dist/assets/{chunk-FMBD7UC4-ORmtkrtS.js → chunk-FMBD7UC4-C-BdCe4C.js} +2 -2
  149. package/webapp/dist/assets/chunk-FMBD7UC4-C-BdCe4C.js.map +1 -0
  150. package/webapp/dist/assets/{chunk-TZMSLE5B-Gao4qrq7.js → chunk-JSJVCQXG-WA_BLIm9.js} +14 -6
  151. package/webapp/dist/assets/chunk-JSJVCQXG-WA_BLIm9.js.map +1 -0
  152. package/webapp/dist/assets/{chunk-QN33PNHL-LTAOVhWu.js → chunk-KX2RTZJC-CA7sDJO5.js} +2 -2
  153. package/webapp/dist/assets/chunk-KX2RTZJC-CA7sDJO5.js.map +1 -0
  154. package/webapp/dist/assets/{chunk-DI55MBZ5-CbvrsI_w.js → chunk-NQ4KR5QH-wlvxalE3.js} +9 -7
  155. package/webapp/dist/assets/chunk-NQ4KR5QH-wlvxalE3.js.map +1 -0
  156. package/webapp/dist/assets/{chunk-QZHKN3VN-ZoUM_4u5.js → chunk-QZHKN3VN-Bo1VMcph.js} +2 -2
  157. package/webapp/dist/assets/chunk-QZHKN3VN-Bo1VMcph.js.map +1 -0
  158. package/webapp/dist/assets/{chunk-B4BG7PRW-BRe3_2oA.js → chunk-WL4C6EOR-B-Pk44be.js} +171 -121
  159. package/webapp/dist/assets/chunk-WL4C6EOR-B-Pk44be.js.map +1 -0
  160. package/webapp/dist/assets/{classDiagram-2ON5EDUG-uha1vIGN.js → classDiagram-VBA2DB6C-BqKuyb49.js} +7 -6
  161. package/webapp/dist/assets/classDiagram-VBA2DB6C-BqKuyb49.js.map +1 -0
  162. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-uha1vIGN.js → classDiagram-v2-RAHNMMFH-BqKuyb49.js} +7 -6
  163. package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-BqKuyb49.js.map +1 -0
  164. package/webapp/dist/assets/{clone-_9Ayb1Gp.js → clone-BX5z8WVZ.js} +2 -2
  165. package/webapp/dist/assets/clone-BX5z8WVZ.js.map +1 -0
  166. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-C8wDw3NY.js → cose-bilkent-S5V4N54A-B-s11SgN.js} +2 -2
  167. package/webapp/dist/assets/cose-bilkent-S5V4N54A-B-s11SgN.js.map +1 -0
  168. package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
  169. package/webapp/dist/assets/{dagre-6UL2VRFP-BUSeNot0.js → dagre-KLK3FWXG-DmQFV2qK.js} +7 -7
  170. package/webapp/dist/assets/dagre-KLK3FWXG-DmQFV2qK.js.map +1 -0
  171. package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
  172. package/webapp/dist/assets/{diagram-PSM6KHXK-CMZAksVC.js → diagram-E7M64L7V-QRaBfST8.js} +10 -10
  173. package/webapp/dist/assets/diagram-E7M64L7V-QRaBfST8.js.map +1 -0
  174. package/webapp/dist/assets/{diagram-QEK2KX5R-BQKoRtwy.js → diagram-IFDJBPK2-lrWn1Obo.js} +9 -8
  175. package/webapp/dist/assets/diagram-IFDJBPK2-lrWn1Obo.js.map +1 -0
  176. package/webapp/dist/assets/{diagram-S2PKOQOG-DjMG97kd.js → diagram-P4PSJMXO-sTU7Hh-Y.js} +8 -8
  177. package/webapp/dist/assets/diagram-P4PSJMXO-sTU7Hh-Y.js.map +1 -0
  178. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-BujwA137.js → erDiagram-INFDFZHY-Cx6jc9Wq.js} +96 -75
  179. package/webapp/dist/assets/erDiagram-INFDFZHY-Cx6jc9Wq.js.map +1 -0
  180. package/webapp/dist/assets/{flowDiagram-NV44I4VS-DgwPjg4y.js → flowDiagram-PKNHOUZH-DfGI49Dz.js} +98 -81
  181. package/webapp/dist/assets/flowDiagram-PKNHOUZH-DfGI49Dz.js.map +1 -0
  182. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-Db2ykf3E.js → ganttDiagram-A5KZAMGK-nrcHWWaM.js} +28 -3
  183. package/webapp/dist/assets/ganttDiagram-A5KZAMGK-nrcHWWaM.js.map +1 -0
  184. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-D_gSifkv.js → gitGraphDiagram-K3NZZRJ6-D8ivAqd6.js} +38 -46
  185. package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-D8ivAqd6.js.map +1 -0
  186. package/webapp/dist/assets/graph-R5G-y8tB.js +782 -0
  187. package/webapp/dist/assets/graph-R5G-y8tB.js.map +1 -0
  188. package/webapp/dist/assets/{index-DLajsIDJ.js → index--fy89xGh.js} +2214 -2023
  189. package/webapp/dist/assets/index--fy89xGh.js.map +1 -0
  190. package/webapp/dist/assets/{index-xvYYeHuy.css → index-DZFkLLVz.css} +18 -10
  191. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BDba5pKs.js → infoDiagram-LFFYTUFH-PIoZHr7s.js} +7 -7
  192. package/webapp/dist/assets/infoDiagram-LFFYTUFH-PIoZHr7s.js.map +1 -0
  193. package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
  194. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-oCM-LYk1.js +966 -0
  195. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-oCM-LYk1.js.map +1 -0
  196. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-CmJAbmlm.js → journeyDiagram-4ABVD52K-C2qidjQ5.js} +5 -5
  197. package/webapp/dist/assets/journeyDiagram-4ABVD52K-C2qidjQ5.js.map +1 -0
  198. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-DxQeBTDk.js → kanban-definition-K7BYSVSG-Du0TC8WS.js} +5 -3
  199. package/webapp/dist/assets/kanban-definition-K7BYSVSG-Du0TC8WS.js.map +1 -0
  200. package/webapp/dist/assets/{layout-DteV_yE8.js → layout-VmEo1OEB.js} +5 -5
  201. package/webapp/dist/assets/layout-VmEo1OEB.js.map +1 -0
  202. package/webapp/dist/assets/{linear-zItbPrND.js → linear-B662YHAc.js} +2 -2
  203. package/webapp/dist/assets/linear-B662YHAc.js.map +1 -0
  204. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-BJXI7UqO.js → mindmap-definition-YRQLILUH-D7arZj95.js} +7 -5
  205. package/webapp/dist/assets/mindmap-definition-YRQLILUH-D7arZj95.js.map +1 -0
  206. package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
  207. package/webapp/dist/assets/{pieDiagram-ADFJNKIX-BpM-aH2p.js → pieDiagram-SKSYHLDU-DvjPP4PA.js} +8 -8
  208. package/webapp/dist/assets/pieDiagram-SKSYHLDU-DvjPP4PA.js.map +1 -0
  209. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-NXdIpA15.js → quadrantDiagram-337W2JSQ-B_JUGMj_.js} +3 -3
  210. package/webapp/dist/assets/quadrantDiagram-337W2JSQ-B_JUGMj_.js.map +1 -0
  211. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-D1AICAA0.js → requirementDiagram-Z7DCOOCP-DF0mpvE3.js} +16 -6
  212. package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-DF0mpvE3.js.map +1 -0
  213. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-WiReDPfo.js → sankeyDiagram-WA2Y5GQK-CoXlxv00.js} +2 -2
  214. package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-CoXlxv00.js.map +1 -0
  215. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-Cw76oP8t.js → sequenceDiagram-2WXFIKYE-DYqT5Pg7.js} +601 -201
  216. package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-DYqT5Pg7.js.map +1 -0
  217. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-QjCeRczs.js → stateDiagram-RAJIS63D-D9b1mN8-.js} +9 -9
  218. package/webapp/dist/assets/stateDiagram-RAJIS63D-D9b1mN8-.js.map +1 -0
  219. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-IClqxQ4s.js → stateDiagram-v2-FVOUBMTO-DNzgudL_.js} +5 -5
  220. package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-DNzgudL_.js.map +1 -0
  221. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-BfyfTY7m.js → timeline-definition-YZTLITO2-CkyKUY7A.js} +3 -3
  222. package/webapp/dist/assets/timeline-definition-YZTLITO2-CkyKUY7A.js.map +1 -0
  223. package/webapp/dist/assets/{treemap-GDKQZRPO-C5MiL6--.js → treemap-KZPCXAKY-CZd09kF-.js} +37 -24
  224. package/webapp/dist/assets/treemap-KZPCXAKY-CZd09kF-.js.map +1 -0
  225. package/webapp/dist/assets/vennDiagram-LZ73GAT5-BxVF5Olo.js +2487 -0
  226. package/webapp/dist/assets/vennDiagram-LZ73GAT5-BxVF5Olo.js.map +1 -0
  227. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-ybaJrSry.js → xychartDiagram-JWTSCODW-BRwRloPc.js} +4 -4
  228. package/webapp/dist/assets/xychartDiagram-JWTSCODW-BRwRloPc.js.map +1 -0
  229. package/webapp/dist/index.html +2 -2
  230. package/dist/docs/issues/global-dialog-event-broadcaster-missing.md +0 -128
  231. package/dist/llm/kernel-driver/subdialog-txn.d.ts +0 -8
  232. package/webapp/dist/assets/_basePickBy-BPJaiZdW.js.map +0 -1
  233. package/webapp/dist/assets/_baseUniq-BEetT15i.js.map +0 -1
  234. package/webapp/dist/assets/arc-Dm7Zf36f.js.map +0 -1
  235. package/webapp/dist/assets/architectureDiagram-VXUJARFQ-BpTPtkuo.js.map +0 -1
  236. package/webapp/dist/assets/blockDiagram-VD42YOAC-C8fLN0iu.js.map +0 -1
  237. package/webapp/dist/assets/c4Diagram-YG6GDRKO-BpPr62CH.js.map +0 -1
  238. package/webapp/dist/assets/channel-EMYoPjW3.js.map +0 -1
  239. package/webapp/dist/assets/chunk-4BX2VUAB-CefNtjWG.js.map +0 -1
  240. package/webapp/dist/assets/chunk-55IACEB6-C_X7T43V.js.map +0 -1
  241. package/webapp/dist/assets/chunk-B4BG7PRW-BRe3_2oA.js.map +0 -1
  242. package/webapp/dist/assets/chunk-DI55MBZ5-CbvrsI_w.js.map +0 -1
  243. package/webapp/dist/assets/chunk-FMBD7UC4-ORmtkrtS.js.map +0 -1
  244. package/webapp/dist/assets/chunk-QN33PNHL-LTAOVhWu.js.map +0 -1
  245. package/webapp/dist/assets/chunk-QZHKN3VN-ZoUM_4u5.js.map +0 -1
  246. package/webapp/dist/assets/chunk-TZMSLE5B-Gao4qrq7.js.map +0 -1
  247. package/webapp/dist/assets/classDiagram-2ON5EDUG-uha1vIGN.js.map +0 -1
  248. package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-uha1vIGN.js.map +0 -1
  249. package/webapp/dist/assets/clone-_9Ayb1Gp.js.map +0 -1
  250. package/webapp/dist/assets/cose-bilkent-S5V4N54A-C8wDw3NY.js.map +0 -1
  251. package/webapp/dist/assets/dagre-6UL2VRFP-BUSeNot0.js.map +0 -1
  252. package/webapp/dist/assets/diagram-PSM6KHXK-CMZAksVC.js.map +0 -1
  253. package/webapp/dist/assets/diagram-QEK2KX5R-BQKoRtwy.js.map +0 -1
  254. package/webapp/dist/assets/diagram-S2PKOQOG-DjMG97kd.js.map +0 -1
  255. package/webapp/dist/assets/erDiagram-Q2GNP2WA-BujwA137.js.map +0 -1
  256. package/webapp/dist/assets/flowDiagram-NV44I4VS-DgwPjg4y.js.map +0 -1
  257. package/webapp/dist/assets/ganttDiagram-JELNMOA3-Db2ykf3E.js.map +0 -1
  258. package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-D_gSifkv.js.map +0 -1
  259. package/webapp/dist/assets/graph-BHjCU5xP.js +0 -425
  260. package/webapp/dist/assets/graph-BHjCU5xP.js.map +0 -1
  261. package/webapp/dist/assets/index-DLajsIDJ.js.map +0 -1
  262. package/webapp/dist/assets/infoDiagram-HS3SLOUP-BDba5pKs.js.map +0 -1
  263. package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-CmJAbmlm.js.map +0 -1
  264. package/webapp/dist/assets/kanban-definition-3W4ZIXB7-DxQeBTDk.js.map +0 -1
  265. package/webapp/dist/assets/layout-DteV_yE8.js.map +0 -1
  266. package/webapp/dist/assets/linear-zItbPrND.js.map +0 -1
  267. package/webapp/dist/assets/mindmap-definition-VGOIOE7T-BJXI7UqO.js.map +0 -1
  268. package/webapp/dist/assets/pieDiagram-ADFJNKIX-BpM-aH2p.js.map +0 -1
  269. package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-NXdIpA15.js.map +0 -1
  270. package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-D1AICAA0.js.map +0 -1
  271. package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-WiReDPfo.js.map +0 -1
  272. package/webapp/dist/assets/sequenceDiagram-WL72ISMW-Cw76oP8t.js.map +0 -1
  273. package/webapp/dist/assets/stateDiagram-FKZM4ZOC-QjCeRczs.js.map +0 -1
  274. package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3-IClqxQ4s.js.map +0 -1
  275. package/webapp/dist/assets/timeline-definition-IT6M3QCI-BfyfTY7m.js.map +0 -1
  276. package/webapp/dist/assets/treemap-GDKQZRPO-C5MiL6--.js.map +0 -1
  277. package/webapp/dist/assets/xychartDiagram-PRI3JC2R-ybaJrSry.js.map +0 -1
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.forkRootDialogTreeAtGeneration = forkRootDialogTreeAtGeneration;
6
+ exports.forkMainDialogTreeAtGeneration = forkMainDialogTreeAtGeneration;
7
7
  const promises_1 = __importDefault(require("node:fs/promises"));
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
9
  const storage_1 = require("@longrun-ai/kernel/types/storage");
@@ -49,8 +49,8 @@ function cloneQuestions(questions) {
49
49
  callSiteRef: { ...question.callSiteRef },
50
50
  }));
51
51
  }
52
- function clonePendingSubdialogs(pendingSubdialogs) {
53
- return pendingSubdialogs.map((entry) => ({
52
+ function clonePendingSideDialogs(pendingSideDialogs) {
53
+ return pendingSideDialogs.map((entry) => ({
54
54
  ...entry,
55
55
  mentionList: entry.mentionList ? [...entry.mentionList] : undefined,
56
56
  }));
@@ -58,7 +58,7 @@ function clonePendingSubdialogs(pendingSubdialogs) {
58
58
  function cloneRegistryEntries(entries) {
59
59
  return entries.map((entry) => ({ ...entry }));
60
60
  }
61
- function cloneSubdialogResponses(responses) {
61
+ function cloneSideDialogResponses(responses) {
62
62
  return responses.map((response) => ({
63
63
  ...response,
64
64
  mentionList: response.mentionList ? [...response.mentionList] : undefined,
@@ -67,31 +67,53 @@ function cloneSubdialogResponses(responses) {
67
67
  function rewriteForkTreeDialogSelfId(sourceDialogSelfId, sourceRootId, targetRootId) {
68
68
  return sourceDialogSelfId === sourceRootId ? targetRootId : sourceDialogSelfId;
69
69
  }
70
- function rewriteAssignmentFromSupForFork(assignmentFromSup, sourceRootId, targetRootId) {
70
+ function rewriteAssignmentFromAskerForFork(assignmentFromAsker, sourceRootId, targetRootId) {
71
71
  return {
72
- ...assignmentFromSup,
73
- callerDialogId: rewriteForkTreeDialogSelfId(assignmentFromSup.callerDialogId, sourceRootId, targetRootId),
74
- mentionList: assignmentFromSup.mentionList ? [...assignmentFromSup.mentionList] : undefined,
75
- collectiveTargets: assignmentFromSup.collectiveTargets
76
- ? [...assignmentFromSup.collectiveTargets]
72
+ ...assignmentFromAsker,
73
+ askerDialogId: rewriteForkTreeDialogSelfId(assignmentFromAsker.askerDialogId, sourceRootId, targetRootId),
74
+ mentionList: assignmentFromAsker.mentionList ? [...assignmentFromAsker.mentionList] : undefined,
75
+ collectiveTargets: assignmentFromAsker.collectiveTargets
76
+ ? [...assignmentFromAsker.collectiveTargets]
77
77
  : undefined,
78
78
  };
79
79
  }
80
- function rewriteSubdialogMetadataForFork(metadata, sourceRootId, targetRootId) {
80
+ function rewriteSideDialogMetadataForFork(metadata) {
81
81
  return {
82
82
  ...metadata,
83
- supdialogId: rewriteForkTreeDialogSelfId(metadata.supdialogId, sourceRootId, targetRootId),
84
- assignmentFromSup: rewriteAssignmentFromSupForFork(metadata.assignmentFromSup, sourceRootId, targetRootId),
83
+ };
84
+ }
85
+ function rewriteTellaskReplyDirectiveForFork(directive, sourceRootId, targetRootId) {
86
+ return {
87
+ ...directive,
88
+ targetDialogId: rewriteForkTreeDialogSelfId(directive.targetDialogId, sourceRootId, targetRootId),
89
+ };
90
+ }
91
+ function rewriteSideDialogAskerStackStateForFork(state, sourceRootId, targetRootId) {
92
+ return {
93
+ askerStack: state.askerStack.map((frame) => ({
94
+ kind: 'asker_dialog_stack_frame',
95
+ askerDialogId: rewriteForkTreeDialogSelfId(frame.askerDialogId, sourceRootId, targetRootId),
96
+ ...(frame.assignmentFromAsker === undefined
97
+ ? {}
98
+ : {
99
+ assignmentFromAsker: rewriteAssignmentFromAskerForFork(frame.assignmentFromAsker, sourceRootId, targetRootId),
100
+ }),
101
+ ...(frame.tellaskReplyObligation === undefined
102
+ ? {}
103
+ : {
104
+ tellaskReplyObligation: rewriteTellaskReplyDirectiveForFork(frame.tellaskReplyObligation, sourceRootId, targetRootId),
105
+ }),
106
+ })),
85
107
  };
86
108
  }
87
109
  function isForkStateRecord(record) {
88
110
  switch (record.type) {
89
- case 'subdialog_created_record':
111
+ case 'sideDialog_created_record':
90
112
  case 'reminders_reconciled_record':
91
113
  case 'questions4human_reconciled_record':
92
- case 'pending_subdialogs_reconciled_record':
93
- case 'subdialog_registry_reconciled_record':
94
- case 'subdialog_responses_reconciled_record':
114
+ case 'pending_sideDialogs_reconciled_record':
115
+ case 'sideDialog_registry_reconciled_record':
116
+ case 'sideDialog_responses_reconciled_record':
95
117
  return record;
96
118
  default:
97
119
  return null;
@@ -116,17 +138,17 @@ function isPersistedMessageRecord(record) {
116
138
  case 'native_tool_call_record':
117
139
  case 'tool_result_image_ingest_record':
118
140
  case 'user_image_ingest_record':
119
- case 'quest_for_sup_record':
141
+ case 'sideDialog_request_record':
120
142
  case 'tellask_reply_resolution_record':
121
143
  case 'tellask_call_anchor_record':
122
144
  case 'gen_start_record':
123
145
  case 'gen_finish_record':
124
- case 'subdialog_created_record':
146
+ case 'sideDialog_created_record':
125
147
  case 'reminders_reconciled_record':
126
148
  case 'questions4human_reconciled_record':
127
- case 'pending_subdialogs_reconciled_record':
128
- case 'subdialog_registry_reconciled_record':
129
- case 'subdialog_responses_reconciled_record':
149
+ case 'pending_sideDialogs_reconciled_record':
150
+ case 'sideDialog_registry_reconciled_record':
151
+ case 'sideDialog_responses_reconciled_record':
130
152
  return false;
131
153
  default: {
132
154
  const _exhaustive = record;
@@ -188,7 +210,7 @@ function rewriteRecordForFork(record, newRootId) {
188
210
  // not part of baseline state reconciliation and must not make forking fail.
189
211
  case 'web_search_call_record':
190
212
  case 'native_tool_call_record':
191
- case 'quest_for_sup_record':
213
+ case 'sideDialog_request_record':
192
214
  case 'tellask_reply_resolution_record':
193
215
  case 'tellask_call_anchor_record':
194
216
  case 'gen_start_record':
@@ -215,12 +237,12 @@ function rewriteRecordForFork(record, newRootId) {
215
237
  rootId: newRootId,
216
238
  },
217
239
  };
218
- case 'subdialog_created_record':
240
+ case 'sideDialog_created_record':
219
241
  case 'reminders_reconciled_record':
220
242
  case 'questions4human_reconciled_record':
221
- case 'pending_subdialogs_reconciled_record':
222
- case 'subdialog_registry_reconciled_record':
223
- case 'subdialog_responses_reconciled_record':
243
+ case 'pending_sideDialogs_reconciled_record':
244
+ case 'sideDialog_registry_reconciled_record':
245
+ case 'sideDialog_responses_reconciled_record':
224
246
  throw new Error(`Fork transcript copy must not include state record ${record.type}`);
225
247
  default: {
226
248
  const _exhaustive = record;
@@ -251,15 +273,15 @@ function computeRootForkDisplayState(args) {
251
273
  return { kind: 'idle_waiting_user' };
252
274
  }
253
275
  const hasQ4H = args.questions.length > 0;
254
- const hasSubdialogs = args.pendingSubdialogs.length > 0;
255
- if (hasQ4H && hasSubdialogs) {
256
- return { kind: 'blocked', reason: { kind: 'needs_human_input_and_subdialogs' } };
276
+ const hasSideDialogs = args.pendingSideDialogs.length > 0;
277
+ if (hasQ4H && hasSideDialogs) {
278
+ return { kind: 'blocked', reason: { kind: 'needs_human_input_and_sideDialogs' } };
257
279
  }
258
280
  if (hasQ4H) {
259
281
  return { kind: 'blocked', reason: { kind: 'needs_human_input' } };
260
282
  }
261
- if (hasSubdialogs) {
262
- return { kind: 'blocked', reason: { kind: 'waiting_for_subdialogs' } };
283
+ if (hasSideDialogs) {
284
+ return { kind: 'blocked', reason: { kind: 'waiting_for_sideDialogs' } };
263
285
  }
264
286
  return { kind: 'stopped', reason: { kind: 'fork_continue_ready' }, continueEnabled: true };
265
287
  }
@@ -323,16 +345,16 @@ async function collectForkSnapshot(dialogId, status, cutoffAnchor) {
323
345
  case 'questions4human_reconciled_record':
324
346
  latestQuestions = cloneQuestions(stateRecord.questions);
325
347
  break;
326
- case 'pending_subdialogs_reconciled_record':
327
- latestPending = clonePendingSubdialogs(stateRecord.pendingSubdialogs);
348
+ case 'pending_sideDialogs_reconciled_record':
349
+ latestPending = clonePendingSideDialogs(stateRecord.pendingSideDialogs);
328
350
  break;
329
- case 'subdialog_registry_reconciled_record':
351
+ case 'sideDialog_registry_reconciled_record':
330
352
  latestRegistry = cloneRegistryEntries(stateRecord.entries);
331
353
  break;
332
- case 'subdialog_responses_reconciled_record':
333
- latestResponses = cloneSubdialogResponses(stateRecord.responses);
354
+ case 'sideDialog_responses_reconciled_record':
355
+ latestResponses = cloneSideDialogResponses(stateRecord.responses);
334
356
  break;
335
- case 'subdialog_created_record':
357
+ case 'sideDialog_created_record':
336
358
  break;
337
359
  default: {
338
360
  const _exhaustive = stateRecord;
@@ -344,12 +366,12 @@ async function collectForkSnapshot(dialogId, status, cutoffAnchor) {
344
366
  return {
345
367
  reminders: latestReminders !== null ? latestReminders.map((item) => cloneReminderSnapshot(item)) : [],
346
368
  questions: latestQuestions ?? [],
347
- pendingSubdialogs: latestPending ?? [],
369
+ pendingSideDialogs: latestPending ?? [],
348
370
  registryEntries: latestRegistry ?? [],
349
- subdialogResponses: latestResponses ?? [],
371
+ sideDialogResponses: latestResponses ?? [],
350
372
  };
351
373
  }
352
- async function collectIncludedSubdialogs(args) {
374
+ async function collectIncludedSideDialogs(args) {
353
375
  const queue = [new dialog_1.DialogID(args.sourceRootId)];
354
376
  const scannedDialogSelfIds = new Set();
355
377
  const included = new Map();
@@ -364,21 +386,23 @@ async function collectIncludedSubdialogs(args) {
364
386
  for (const course of courseNumbers) {
365
387
  const events = await persistence_1.DialogPersistence.readCourseEvents(ownerDialogId, course, args.sourceStatus);
366
388
  for (const event of events) {
367
- if (event.type !== 'subdialog_created_record')
389
+ if (event.type !== 'sideDialog_created_record')
368
390
  continue;
369
391
  if (!anchorAtOrBefore(event, args.cutoffAnchor))
370
392
  continue;
371
- if (included.has(event.subdialogId))
393
+ if (included.has(event.sideDialogId))
372
394
  continue;
373
- const sourceId = new dialog_1.DialogID(event.subdialogId, args.sourceRootId);
395
+ const sourceId = new dialog_1.DialogID(event.sideDialogId, args.sourceRootId);
374
396
  const metadata = await persistence_1.DialogPersistence.loadDialogMetadata(sourceId, args.sourceStatus);
375
- if (!metadata || metadata.supdialogId === undefined) {
376
- throw new Error(`Missing included subdialog metadata for ${sourceId.valueOf()}`);
397
+ if (!metadata) {
398
+ throw new Error(`Missing included sideDialog metadata for ${sourceId.valueOf()}`);
377
399
  }
378
- included.set(event.subdialogId, {
400
+ const assignmentFromAsker = await persistence_1.DialogPersistence.loadSideDialogAssignmentFromAsker(sourceId, args.sourceStatus);
401
+ included.set(event.sideDialogId, {
379
402
  sourceId,
380
- targetId: new dialog_1.DialogID(event.subdialogId, args.targetRootId),
403
+ targetId: new dialog_1.DialogID(event.sideDialogId, args.targetRootId),
381
404
  metadata,
405
+ assignmentFromAsker,
382
406
  });
383
407
  queue.push(sourceId);
384
408
  }
@@ -389,7 +413,7 @@ async function collectIncludedSubdialogs(args) {
389
413
  for (const selfId of orderedSelfIds) {
390
414
  const item = included.get(selfId);
391
415
  if (!item) {
392
- throw new Error(`Missing ordered included subdialog for ${selfId}`);
416
+ throw new Error(`Missing ordered included sideDialog for ${selfId}`);
393
417
  }
394
418
  orderedIncluded.push(item);
395
419
  }
@@ -400,18 +424,18 @@ async function buildDialogForkPlan(args) {
400
424
  const retainedCourses = [];
401
425
  for (const course of courseNumbers) {
402
426
  const events = await persistence_1.DialogPersistence.readCourseEvents(args.sourceId, course, args.sourceStatus);
403
- const isRootDialog = args.sourceId.selfId === args.sourceId.rootId;
427
+ const isMainDialog = args.sourceId.selfId === args.sourceId.rootId;
404
428
  const retained = events.filter((event, index) => {
405
429
  if (isForkStateRecord(event)) {
406
430
  return false;
407
431
  }
408
- if (args.truncateRootCourse && course === args.truncateRootCourse.course && isRootDialog) {
432
+ if (args.truncateRootCourse && course === args.truncateRootCourse.course && isMainDialog) {
409
433
  return index < args.truncateRootCourse.keepCount;
410
434
  }
411
- if (!isRootDialog) {
435
+ if (!isMainDialog) {
412
436
  const recordAnchor = getRecordRootAnchor(event);
413
437
  if (recordAnchor === null) {
414
- throw new Error(`fork dialog requires root anchor on subdialog transcript record: dialog=${args.sourceId.valueOf()} course=${String(course)} type=${event.type}`);
438
+ throw new Error(`fork dialog requires root anchor on sideDialog transcript record: dialog=${args.sourceId.valueOf()} course=${String(course)} type=${event.type}`);
415
439
  }
416
440
  return anchorAtOrBefore(recordAnchor, args.cutoffAnchor);
417
441
  }
@@ -431,15 +455,15 @@ async function buildDialogForkPlan(args) {
431
455
  currentCourse: retainedCurrentCourse,
432
456
  reminders: snapshot.reminders,
433
457
  questions: snapshot.questions,
434
- pendingSubdialogs: snapshot.pendingSubdialogs,
458
+ pendingSideDialogs: snapshot.pendingSideDialogs,
435
459
  registryEntries: snapshot.registryEntries,
436
- subdialogResponses: snapshot.subdialogResponses,
460
+ sideDialogResponses: snapshot.sideDialogResponses,
437
461
  childCount: args.childCount,
438
462
  };
439
463
  }
440
- async function appendForkBaselineState(plan, baselineSubdialogCreatedRecords) {
464
+ async function appendForkBaselineState(plan, baselineSideDialogCreatedRecords) {
441
465
  const baselineTs = (0, time_1.formatUnifiedTimestamp)(new Date());
442
- for (const record of baselineSubdialogCreatedRecords) {
466
+ for (const record of baselineSideDialogCreatedRecords) {
443
467
  await persistence_1.DialogPersistence.appendEvent(plan.targetId, 1, record, 'running');
444
468
  }
445
469
  const remindersRecord = {
@@ -465,21 +489,21 @@ async function appendForkBaselineState(plan, baselineSubdialogCreatedRecords) {
465
489
  };
466
490
  const pendingRecord = {
467
491
  ts: baselineTs,
468
- type: 'pending_subdialogs_reconciled_record',
492
+ type: 'pending_sideDialogs_reconciled_record',
469
493
  ...FORK_BASELINE_ANCHOR,
470
- pendingSubdialogs: clonePendingSubdialogs(plan.pendingSubdialogs),
494
+ pendingSideDialogs: clonePendingSideDialogs(plan.pendingSideDialogs),
471
495
  };
472
496
  const registryRecord = {
473
497
  ts: baselineTs,
474
- type: 'subdialog_registry_reconciled_record',
498
+ type: 'sideDialog_registry_reconciled_record',
475
499
  ...FORK_BASELINE_ANCHOR,
476
500
  entries: cloneRegistryEntries(plan.registryEntries),
477
501
  };
478
502
  const responsesRecord = {
479
503
  ts: baselineTs,
480
- type: 'subdialog_responses_reconciled_record',
504
+ type: 'sideDialog_responses_reconciled_record',
481
505
  ...FORK_BASELINE_ANCHOR,
482
- responses: cloneSubdialogResponses(plan.subdialogResponses),
506
+ responses: cloneSideDialogResponses(plan.sideDialogResponses),
483
507
  };
484
508
  await persistence_1.DialogPersistence.appendEvent(plan.targetId, 1, remindersRecord, 'running');
485
509
  await persistence_1.DialogPersistence.appendEvent(plan.targetId, 1, q4hRecord, 'running');
@@ -490,27 +514,30 @@ async function appendForkBaselineState(plan, baselineSubdialogCreatedRecords) {
490
514
  async function persistForkPlan(args) {
491
515
  const { plan } = args;
492
516
  if (plan.targetId.selfId === plan.targetId.rootId) {
493
- if (plan.metadata.supdialogId !== undefined ||
494
- plan.metadata.sessionSlug !== undefined ||
495
- plan.metadata.assignmentFromSup !== undefined) {
496
- throw new Error(`fork root plan received subdialog metadata: ${plan.targetId.valueOf()}`);
497
- }
517
+ const priming = 'priming' in plan.metadata ? plan.metadata.priming : undefined;
498
518
  const rewrittenMetadata = {
499
519
  id: plan.targetId.selfId,
500
520
  agentId: plan.metadata.agentId,
501
521
  taskDocPath: plan.metadata.taskDocPath,
502
522
  createdAt: args.now,
503
- ...(plan.metadata.priming ? { priming: plan.metadata.priming } : {}),
523
+ ...(priming ? { priming } : {}),
504
524
  };
505
- await persistence_1.DialogPersistence.saveRootDialogMetadata(plan.targetId, rewrittenMetadata, 'running');
525
+ await persistence_1.DialogPersistence.saveMainDialogMetadata(plan.targetId, rewrittenMetadata, 'running');
506
526
  }
507
527
  else {
508
- if (plan.metadata.supdialogId === undefined) {
509
- throw new Error(`fork subdialog plan missing supdialog metadata: ${plan.targetId.valueOf()}`);
528
+ const rewrittenMetadata = rewriteSideDialogMetadataForFork(plan.metadata);
529
+ const sourceAskerStackState = await persistence_1.DialogPersistence.loadSideDialogAskerStackState(plan.sourceId, args.sourceStatus);
530
+ if (!sourceAskerStackState) {
531
+ throw new Error(`fork sideDialog plan missing asker stack: ${plan.sourceId.valueOf()}`);
510
532
  }
511
- const rewrittenMetadata = rewriteSubdialogMetadataForFork(plan.metadata, plan.sourceId.rootId, plan.targetId.rootId);
512
- await persistence_1.DialogPersistence.ensureSubdialogDirectory(plan.targetId, 'running');
513
- await persistence_1.DialogPersistence.saveSubdialogMetadata(plan.targetId, rewrittenMetadata, 'running');
533
+ const rewrittenAskerStackState = rewriteSideDialogAskerStackStateForFork(sourceAskerStackState, plan.sourceId.rootId, plan.targetId.rootId);
534
+ await persistence_1.DialogPersistence.ensureSideDialogDirectory(plan.targetId, 'running');
535
+ await persistence_1.DialogPersistence.saveSideDialogAskerStackState(plan.targetId, rewrittenAskerStackState, 'running');
536
+ await persistence_1.DialogPersistence.saveSideDialogMetadata(plan.targetId, rewrittenMetadata, 'running');
537
+ }
538
+ const sourceAskerStack = await persistence_1.DialogPersistence.loadDialogAskerStack(plan.sourceId, args.sourceStatus);
539
+ if (sourceAskerStack.askerStack.length > 0) {
540
+ await persistence_1.DialogPersistence.saveDialogAskerStack(plan.targetId, rewriteSideDialogAskerStackStateForFork(sourceAskerStack, plan.sourceId.rootId, plan.targetId.rootId), 'running');
514
541
  }
515
542
  for (const course of plan.retainedCourses) {
516
543
  for (const event of course.events) {
@@ -520,21 +547,21 @@ async function persistForkPlan(args) {
520
547
  await appendForkBaselineState(plan, args.baselineRecordsByParentSelfId.get(plan.targetId.selfId) ?? []);
521
548
  await persistence_1.DialogPersistence._saveReminderState(plan.targetId, [...plan.reminders], 'running');
522
549
  await persistence_1.DialogPersistence._saveQuestions4HumanState(plan.targetId, [...plan.questions], 'running');
523
- await persistence_1.DialogPersistence.savePendingSubdialogs(plan.targetId, [...plan.pendingSubdialogs], undefined, 'running');
524
- await persistence_1.DialogPersistence.saveSubdialogRegistry(plan.targetId, plan.registryEntries.map((entry) => ({
550
+ await persistence_1.DialogPersistence.savePendingSideDialogs(plan.targetId, [...plan.pendingSideDialogs], undefined, 'running');
551
+ await persistence_1.DialogPersistence.saveSideDialogRegistry(plan.targetId, plan.registryEntries.map((entry) => ({
525
552
  key: entry.key,
526
- subdialogId: new dialog_1.DialogID(entry.subdialogId, plan.targetId.rootId),
553
+ sideDialogId: new dialog_1.DialogID(entry.sideDialogId, plan.targetId.rootId),
527
554
  agentId: entry.agentId,
528
555
  sessionSlug: entry.sessionSlug,
529
556
  })), 'running');
530
- await persistence_1.DialogPersistence.saveSubdialogResponses(plan.targetId, [...plan.subdialogResponses], undefined, 'running');
557
+ await persistence_1.DialogPersistence.saveSideDialogResponses(plan.targetId, [...plan.sideDialogResponses], undefined, 'running');
531
558
  await copyArtifactsIfPresent(plan.sourceId, plan.targetId, args.sourceStatus);
532
559
  const currentCourseEvents = plan.retainedCourses.find((item) => item.course === plan.currentCourse)?.events ?? [];
533
560
  const displayState = plan.targetId.selfId === plan.targetId.rootId
534
561
  ? computeRootForkDisplayState({
535
562
  action: args.action,
536
563
  questions: plan.questions,
537
- pendingSubdialogs: plan.pendingSubdialogs,
564
+ pendingSideDialogs: plan.pendingSideDialogs,
538
565
  })
539
566
  : { kind: 'idle_waiting_user' };
540
567
  await persistence_1.DialogPersistence.mutateDialogLatest(plan.targetId, () => ({
@@ -545,7 +572,7 @@ async function persistForkPlan(args) {
545
572
  status: 'active',
546
573
  messageCount: countMessages(currentCourseEvents),
547
574
  functionCallCount: countFunctionCalls(currentCourseEvents),
548
- subdialogCount: plan.childCount,
575
+ sideDialogCount: plan.childCount,
549
576
  generating: false,
550
577
  needsDrive: false,
551
578
  displayState,
@@ -556,7 +583,7 @@ async function persistForkPlan(args) {
556
583
  },
557
584
  }));
558
585
  }
559
- async function forkRootDialogTreeAtGeneration(args) {
586
+ async function forkMainDialogTreeAtGeneration(args) {
560
587
  const sourceRootId = args.sourceRootId.trim();
561
588
  if (sourceRootId === '') {
562
589
  throw new Error('sourceRootId is required');
@@ -567,17 +594,14 @@ async function forkRootDialogTreeAtGeneration(args) {
567
594
  if (!Number.isFinite(args.genseq) || args.genseq <= 0) {
568
595
  throw new Error('genseq must be a positive integer');
569
596
  }
570
- const sourceRootDialogId = new dialog_1.DialogID(sourceRootId);
571
- const sourceMetadata = await persistence_1.DialogPersistence.loadDialogMetadata(sourceRootDialogId, args.sourceStatus);
597
+ const sourceMainDialogId = new dialog_1.DialogID(sourceRootId);
598
+ const sourceMetadata = await persistence_1.DialogPersistence.loadDialogMetadata(sourceMainDialogId, args.sourceStatus);
572
599
  if (!sourceMetadata) {
573
- throw new Error(`Root dialog not found: ${sourceRootId} (${args.sourceStatus})`);
574
- }
575
- if (sourceMetadata.supdialogId !== undefined) {
576
- throw new Error(`fork dialog only supports root dialogs: ${sourceRootId}`);
600
+ throw new Error(`Main dialog not found: ${sourceRootId} (${args.sourceStatus})`);
577
601
  }
578
602
  const targetCourse = Math.floor(args.course);
579
603
  const targetGenseq = Math.floor(args.genseq);
580
- const rootEvents = await persistence_1.DialogPersistence.readCourseEvents(sourceRootDialogId, targetCourse, args.sourceStatus);
604
+ const rootEvents = await persistence_1.DialogPersistence.readCourseEvents(sourceMainDialogId, targetCourse, args.sourceStatus);
581
605
  const targetStartIndex = rootEvents.findIndex((event) => 'genseq' in event && typeof event.genseq === 'number' && event.genseq === targetGenseq);
582
606
  if (targetStartIndex < 0) {
583
607
  throw new Error(`Target genseq ${String(targetGenseq)} not found in dialog ${sourceRootId} course ${String(targetCourse)}`);
@@ -591,21 +615,22 @@ async function forkRootDialogTreeAtGeneration(args) {
591
615
  rootGenseq: targetGenseq - 1,
592
616
  });
593
617
  const draftUserText = normalizeDraftUserText(rootEvents, targetGenseq);
594
- const latest = await persistence_1.DialogPersistence.loadDialogLatest(sourceRootDialogId, args.sourceStatus);
618
+ const latest = await persistence_1.DialogPersistence.loadDialogLatest(sourceMainDialogId, args.sourceStatus);
595
619
  const targetRootId = (0, id_1.generateDialogID)();
596
620
  const now = (0, time_1.formatUnifiedTimestamp)(new Date());
597
- const includedSubdialogs = await collectIncludedSubdialogs({
621
+ const includedSideDialogs = await collectIncludedSideDialogs({
598
622
  sourceRootId,
599
623
  sourceStatus: args.sourceStatus,
600
624
  cutoffAnchor,
601
625
  targetRootId,
602
626
  });
603
627
  const childCountByParentSelfId = new Map();
604
- for (const subdialog of includedSubdialogs) {
605
- childCountByParentSelfId.set(subdialog.metadata.supdialogId, (childCountByParentSelfId.get(subdialog.metadata.supdialogId) ?? 0) + 1);
628
+ for (const sideDialog of includedSideDialogs) {
629
+ const askerDialogId = sideDialog.assignmentFromAsker.askerDialogId;
630
+ childCountByParentSelfId.set(askerDialogId, (childCountByParentSelfId.get(askerDialogId) ?? 0) + 1);
606
631
  }
607
632
  const rootPlan = await buildDialogForkPlan({
608
- sourceId: sourceRootDialogId,
633
+ sourceId: sourceMainDialogId,
609
634
  targetId: new dialog_1.DialogID(targetRootId),
610
635
  sourceStatus: args.sourceStatus,
611
636
  sourceMetadata,
@@ -615,48 +640,48 @@ async function forkRootDialogTreeAtGeneration(args) {
615
640
  });
616
641
  const action = draftUserText !== null
617
642
  ? { kind: 'draft_user_text', userText: draftUserText }
618
- : rootPlan.questions.length > 0 || rootPlan.pendingSubdialogs.length > 0
643
+ : rootPlan.questions.length > 0 || rootPlan.pendingSideDialogs.length > 0
619
644
  ? {
620
645
  kind: 'restore_pending',
621
646
  pendingQ4H: rootPlan.questions.length > 0,
622
- pendingSubdialogs: rootPlan.pendingSubdialogs.length > 0,
647
+ pendingSideDialogs: rootPlan.pendingSideDialogs.length > 0,
623
648
  }
624
649
  : { kind: 'auto_continue' };
625
- const subdialogPlans = [];
626
- for (const subdialog of includedSubdialogs) {
627
- subdialogPlans.push(await buildDialogForkPlan({
628
- sourceId: subdialog.sourceId,
629
- targetId: subdialog.targetId,
650
+ const sideDialogPlans = [];
651
+ for (const sideDialog of includedSideDialogs) {
652
+ sideDialogPlans.push(await buildDialogForkPlan({
653
+ sourceId: sideDialog.sourceId,
654
+ targetId: sideDialog.targetId,
630
655
  sourceStatus: args.sourceStatus,
631
- sourceMetadata: subdialog.metadata,
656
+ sourceMetadata: sideDialog.metadata,
632
657
  cutoffAnchor,
633
- childCount: childCountByParentSelfId.get(subdialog.sourceId.selfId) ?? 0,
658
+ childCount: childCountByParentSelfId.get(sideDialog.sourceId.selfId) ?? 0,
634
659
  }));
635
660
  }
636
661
  const baselineRecordsByParentSelfId = new Map();
637
- for (const subdialog of includedSubdialogs) {
638
- const rewrittenSupdialogId = rewriteForkTreeDialogSelfId(subdialog.metadata.supdialogId, sourceRootId, targetRootId);
662
+ for (const sideDialog of includedSideDialogs) {
663
+ const rewrittenAskerDialogId = rewriteForkTreeDialogSelfId(sideDialog.assignmentFromAsker.askerDialogId, sourceRootId, targetRootId);
639
664
  const rewrittenRecord = {
640
665
  ts: now,
641
- type: 'subdialog_created_record',
666
+ type: 'sideDialog_created_record',
642
667
  ...FORK_BASELINE_ANCHOR,
643
- subdialogId: subdialog.targetId.selfId,
644
- supdialogId: rewrittenSupdialogId,
645
- agentId: subdialog.metadata.agentId,
646
- taskDocPath: subdialog.metadata.taskDocPath,
647
- createdAt: subdialog.metadata.createdAt,
648
- sessionSlug: subdialog.metadata.sessionSlug,
649
- assignmentFromSup: rewriteAssignmentFromSupForFork(subdialog.metadata.assignmentFromSup, sourceRootId, targetRootId),
668
+ sideDialogId: sideDialog.targetId.selfId,
669
+ askerDialogId: rewrittenAskerDialogId,
670
+ agentId: sideDialog.metadata.agentId,
671
+ taskDocPath: sideDialog.metadata.taskDocPath,
672
+ createdAt: sideDialog.metadata.createdAt,
673
+ sessionSlug: sideDialog.metadata.sessionSlug,
674
+ assignmentFromAsker: rewriteAssignmentFromAskerForFork(sideDialog.assignmentFromAsker, sourceRootId, targetRootId),
650
675
  };
651
- const existing = baselineRecordsByParentSelfId.get(rewrittenSupdialogId);
676
+ const existing = baselineRecordsByParentSelfId.get(rewrittenAskerDialogId);
652
677
  if (existing) {
653
678
  existing.push(rewrittenRecord);
654
679
  }
655
680
  else {
656
- baselineRecordsByParentSelfId.set(rewrittenSupdialogId, [rewrittenRecord]);
681
+ baselineRecordsByParentSelfId.set(rewrittenAskerDialogId, [rewrittenRecord]);
657
682
  }
658
683
  }
659
- const allPlans = [rootPlan, ...subdialogPlans];
684
+ const allPlans = [rootPlan, ...sideDialogPlans];
660
685
  for (const plan of allPlans) {
661
686
  await persistForkPlan({
662
687
  plan,
@@ -1,4 +1,4 @@
1
- import type { RootDialog } from './dialog';
1
+ import type { MainDialog } from './dialog';
2
2
  export type DriveTriggerEvent = Readonly<{
3
3
  type: 'drive_trigger_evt';
4
4
  action: 'mark_needs_drive' | 'mark_not_needing_drive' | 'active_run_cleared';
@@ -21,8 +21,8 @@ declare class GlobalDialogRegistry {
21
21
  private readonly driveTriggerPubChan;
22
22
  private driveTriggerSubChan;
23
23
  static getInstance(): GlobalDialogRegistry;
24
- get(rootId: string): RootDialog | undefined;
25
- register(rootDialog: RootDialog): void;
24
+ get(rootId: string): MainDialog | undefined;
25
+ register(mainDialog: MainDialog): void;
26
26
  unregister(rootId: string): void;
27
27
  private publishDriveTrigger;
28
28
  waitForDriveTrigger(): Promise<DriveTriggerEvent>;
@@ -32,9 +32,9 @@ declare class GlobalDialogRegistry {
32
32
  noteActiveRunBlockedQueuedDrive(rootId: string): void;
33
33
  hasPendingActiveRunClearedWake(rootId: string): boolean;
34
34
  isMarkedNeedingDrive(rootId: string): boolean;
35
- getDialogsNeedingDrive(): RootDialog[];
35
+ getDialogsNeedingDrive(): MainDialog[];
36
36
  getLastDriveTrigger(rootId: string): DriveTriggerEvent | undefined;
37
- getAll(): RootDialog[];
37
+ getAll(): MainDialog[];
38
38
  get size(): number;
39
39
  }
40
40
  export declare const globalDialogRegistry: GlobalDialogRegistry;
@@ -17,28 +17,28 @@ class GlobalDialogRegistry {
17
17
  return GlobalDialogRegistry.instance;
18
18
  }
19
19
  get(rootId) {
20
- return this.entries.get(rootId)?.rootDialog;
20
+ return this.entries.get(rootId)?.mainDialog;
21
21
  }
22
- register(rootDialog) {
22
+ register(mainDialog) {
23
23
  // This registry is keyed by the *tree root id*.
24
- // Only the canonical root dialog (selfId === rootId) should be stored here.
25
- if (rootDialog.id.selfId !== rootDialog.id.rootId) {
24
+ // Only the canonical main dialog (selfId === rootId) should be stored here.
25
+ if (mainDialog.id.selfId !== mainDialog.id.rootId) {
26
26
  return;
27
27
  }
28
- const existing = this.entries.get(rootDialog.id.rootId);
28
+ const existing = this.entries.get(mainDialog.id.rootId);
29
29
  if (existing) {
30
30
  return;
31
31
  }
32
- this.entries.set(rootDialog.id.rootId, {
33
- rootDialog,
32
+ this.entries.set(mainDialog.id.rootId, {
33
+ mainDialog,
34
34
  needsDrive: false,
35
35
  activeRunClearedWakePending: false,
36
36
  });
37
37
  void (async () => {
38
38
  try {
39
- const needsDrive = await persistence_1.DialogPersistence.getNeedsDrive(rootDialog.id);
39
+ const needsDrive = await persistence_1.DialogPersistence.getNeedsDrive(mainDialog.id);
40
40
  if (needsDrive) {
41
- this.markNeedsDrive(rootDialog.id.rootId, {
41
+ this.markNeedsDrive(mainDialog.id.rootId, {
42
42
  source: 'dialog_registry_hydration',
43
43
  reason: 'persisted_needs_drive_true',
44
44
  });
@@ -158,13 +158,13 @@ class GlobalDialogRegistry {
158
158
  getDialogsNeedingDrive() {
159
159
  return Array.from(this.entries.values())
160
160
  .filter((entry) => entry.needsDrive)
161
- .map((entry) => entry.rootDialog);
161
+ .map((entry) => entry.mainDialog);
162
162
  }
163
163
  getLastDriveTrigger(rootId) {
164
164
  return this.lastDriveTriggerByRootId.get(rootId);
165
165
  }
166
166
  getAll() {
167
- return Array.from(this.entries.values()).map((entry) => entry.rootDialog);
167
+ return Array.from(this.entries.values()).map((entry) => entry.mainDialog);
168
168
  }
169
169
  get size() {
170
170
  return this.entries.size;
@@ -1,4 +1,4 @@
1
- import { Dialog, DialogID, RootDialog } from './dialog';
1
+ import { Dialog, DialogID, MainDialog } from './dialog';
2
2
  export type DialogPersistenceStatus = 'running' | 'completed' | 'archived';
3
- export declare function getOrRestoreRootDialog(rootId: string, status: DialogPersistenceStatus): Promise<RootDialog | undefined>;
4
- export declare function ensureDialogLoaded(rootDialog: RootDialog, targetId: DialogID, status: DialogPersistenceStatus, visitedSelfIds?: Set<string>): Promise<Dialog | undefined>;
3
+ export declare function getOrRestoreMainDialog(rootId: string, status: DialogPersistenceStatus): Promise<MainDialog | undefined>;
4
+ export declare function ensureDialogLoaded(mainDialog: MainDialog, targetId: DialogID, status: DialogPersistenceStatus, visitedSelfIds?: Set<string>): Promise<Dialog | undefined>;