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.
- package/dist/access-control.js +6 -6
- package/dist/apps/runtime.d.ts +2 -2
- package/dist/apps/runtime.js +28 -28
- package/dist/apps-host/client.d.ts +1 -1
- package/dist/apps-host/host.js +7 -7
- package/dist/apps-host/ipc-types.d.ts +2 -2
- package/dist/apps-host/ipc-types.js +10 -10
- package/dist/cli/read.d.ts +0 -1
- package/dist/cli/read.js +1 -6
- package/dist/dialog-display-state.d.ts +6 -6
- package/dist/dialog-display-state.js +46 -46
- package/dist/dialog-factory.d.ts +12 -12
- package/dist/dialog-factory.js +33 -30
- package/dist/dialog-fork.d.ts +2 -2
- package/dist/dialog-fork.js +140 -115
- package/dist/dialog-global-registry.d.ts +5 -5
- package/dist/dialog-global-registry.js +11 -11
- package/dist/dialog-instance-registry.d.ts +3 -3
- package/dist/dialog-instance-registry.js +52 -41
- package/dist/dialog.d.ts +100 -113
- package/dist/dialog.js +274 -229
- package/dist/docs/agent-priming.md +5 -5
- package/dist/docs/agent-priming.zh.md +5 -5
- package/dist/docs/app-constitution.md +1 -1
- package/dist/docs/app-constitution.zh.md +1 -1
- package/dist/docs/cli-usage.md +1 -1
- package/dist/docs/cli-usage.zh.md +1 -1
- package/dist/docs/design.md +14 -14
- package/dist/docs/design.zh.md +14 -14
- package/dist/docs/dialog-persistence.md +58 -58
- package/dist/docs/dialog-persistence.zh.md +61 -61
- package/dist/docs/dialog-system.md +363 -367
- package/dist/docs/dialog-system.zh.md +355 -357
- package/dist/docs/diligence-push.md +18 -18
- package/dist/docs/diligence-push.zh.md +17 -17
- package/dist/docs/dominds-agent-collaboration.zh.md +3 -3
- package/dist/docs/dominds-terminology.md +46 -47
- package/dist/docs/encapsulated-taskdoc.md +4 -4
- package/dist/docs/encapsulated-taskdoc.zh.md +3 -3
- package/dist/docs/fbr.md +30 -30
- package/dist/docs/fbr.zh.md +15 -15
- package/dist/docs/i18n.md +2 -2
- package/dist/docs/i18n.zh.md +2 -2
- package/dist/docs/mcp-support.md +5 -4
- package/dist/docs/mcp-support.zh.md +3 -2
- package/dist/docs/memory-system.md +4 -4
- package/dist/docs/memory-system.zh.md +1 -1
- package/dist/docs/mottos.md +1 -1
- package/dist/docs/mottos.zh.md +1 -1
- package/dist/docs/q4h.md +3 -3
- package/dist/docs/q4h.zh.md +1 -1
- package/dist/docs/roadmap.md +2 -2
- package/dist/docs/team_mgmt-toolset.md +11 -3
- package/dist/docs/team_mgmt-toolset.zh.md +9 -2
- package/dist/docs/tellask-collab.md +18 -18
- package/dist/docs/tellask-collab.zh.md +8 -8
- package/dist/docs/tellask-revive-context-refactor.zh.md +591 -0
- package/dist/evt-registry.d.ts +1 -2
- package/dist/evt-registry.js +2 -7
- package/dist/llm/gen/mock.js +9 -0
- package/dist/llm/kernel-driver/context.d.ts +1 -2
- package/dist/llm/kernel-driver/context.js +12 -26
- package/dist/llm/kernel-driver/drive.js +99 -75
- package/dist/llm/kernel-driver/engine.d.ts +2 -2
- package/dist/llm/kernel-driver/engine.js +10 -10
- package/dist/llm/kernel-driver/fbr.js +6 -6
- package/dist/llm/kernel-driver/flow.d.ts +1 -1
- package/dist/llm/kernel-driver/flow.js +129 -93
- package/dist/llm/kernel-driver/guardrails.js +4 -4
- package/dist/llm/kernel-driver/index.d.ts +1 -1
- package/dist/llm/kernel-driver/index.js +2 -2
- package/dist/llm/kernel-driver/loop.js +30 -30
- package/dist/llm/kernel-driver/reply-guidance.js +47 -52
- package/dist/llm/kernel-driver/restore.d.ts +3 -3
- package/dist/llm/kernel-driver/restore.js +23 -28
- package/dist/llm/kernel-driver/runtime.d.ts +1 -1
- package/dist/llm/kernel-driver/runtime.js +1 -1
- package/dist/llm/kernel-driver/sideDialog-txn.d.ts +8 -0
- package/dist/llm/kernel-driver/{subdialog-txn.js → sideDialog-txn.js} +13 -13
- package/dist/llm/kernel-driver/{subdialog.d.ts → sideDialog.d.ts} +13 -13
- package/dist/llm/kernel-driver/{subdialog.js → sideDialog.js} +203 -170
- package/dist/llm/kernel-driver/tellask-special.d.ts +7 -3
- package/dist/llm/kernel-driver/tellask-special.js +474 -497
- package/dist/llm/kernel-driver/types.d.ts +25 -9
- package/dist/mcp/config.d.ts +1 -0
- package/dist/mcp/config.js +7 -2
- package/dist/mcp/supervisor.d.ts +2 -0
- package/dist/mcp/supervisor.js +2 -1
- package/dist/minds/builtin/pangu/persona.en.md +4 -4
- package/dist/minds/load.js +6 -6
- package/dist/minds/system-prompt-parts.d.ts +1 -1
- package/dist/minds/system-prompt-parts.js +12 -12
- package/dist/minds/system-prompt.d.ts +1 -1
- package/dist/minds/system-prompt.js +56 -56
- package/dist/persistence-errors.d.ts +1 -1
- package/dist/persistence.d.ts +126 -121
- package/dist/persistence.js +1190 -786
- package/dist/priming.d.ts +3 -3
- package/dist/priming.js +62 -61
- package/dist/recovery/reply-special.js +5 -5
- package/dist/runtime/driver-messages.d.ts +3 -2
- package/dist/runtime/driver-messages.js +68 -57
- package/dist/runtime/inter-dialog-format.d.ts +12 -10
- package/dist/runtime/inter-dialog-format.js +80 -35
- package/dist/runtime/interjection-pause-stop.js +1 -1
- package/dist/runtime/reply-prompt-copy.d.ts +7 -3
- package/dist/runtime/reply-prompt-copy.js +39 -14
- package/dist/server/api-routes.js +87 -83
- package/dist/server/static-server.js +1 -1
- package/dist/server/websocket-handler.js +163 -153
- package/dist/tool-availability.js +1 -1
- package/dist/tools/app-reminders.js +17 -4
- package/dist/tools/ctrl.js +5 -5
- package/dist/tools/os.js +16 -16
- package/dist/tools/pending-tellask-reminder.js +20 -14
- package/dist/tools/prompts/control/en/index.md +1 -1
- package/dist/tools/prompts/control/en/principles.md +8 -8
- package/dist/tools/prompts/control/en/scenarios.md +7 -7
- package/dist/tools/prompts/control/en/tools.md +7 -7
- package/dist/tools/prompts/control/zh/principles.md +4 -4
- package/dist/tools/prompts/control/zh/scenarios.md +5 -5
- package/dist/tools/prompts/control/zh/tools.md +3 -3
- package/dist/tools/prompts/team_memory/en/scenarios.md +1 -1
- package/dist/tools/prompts/team_memory/zh/scenarios.md +1 -1
- package/dist/tools/team_mgmt-manual.js +2 -2
- package/dist/tools/team_mgmt-mcp-manual.js +10 -0
- package/dist/tools/team_mgmt.js +4 -4
- package/dist/utils/taskdoc.js +12 -12
- package/package.json +3 -3
- package/webapp/dist/assets/{_basePickBy-BPJaiZdW.js → _basePickBy-B7M9Q0Fa.js} +3 -3
- package/webapp/dist/assets/_basePickBy-B7M9Q0Fa.js.map +1 -0
- package/webapp/dist/assets/{_baseUniq-BEetT15i.js → _baseUniq-DAeYoL6j.js} +2 -2
- package/webapp/dist/assets/_baseUniq-DAeYoL6j.js.map +1 -0
- package/webapp/dist/assets/{arc-Dm7Zf36f.js → arc-Bh4nDbNR.js} +2 -2
- package/webapp/dist/assets/arc-Bh4nDbNR.js.map +1 -0
- package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-BpTPtkuo.js → architectureDiagram-2XIMDMQ5-CxqmdsIm.js} +26 -8
- package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-CxqmdsIm.js.map +1 -0
- package/webapp/dist/assets/{blockDiagram-VD42YOAC-C8fLN0iu.js → blockDiagram-WCTKOSBZ-CxIWLtpt.js} +187 -170
- package/webapp/dist/assets/blockDiagram-WCTKOSBZ-CxIWLtpt.js.map +1 -0
- package/webapp/dist/assets/{c4Diagram-YG6GDRKO-BpPr62CH.js → c4Diagram-IC4MRINW-1qErOIgG.js} +4 -4
- package/webapp/dist/assets/c4Diagram-IC4MRINW-1qErOIgG.js.map +1 -0
- package/webapp/dist/assets/{channel-EMYoPjW3.js → channel-DkgZHNUe.js} +2 -2
- package/webapp/dist/assets/channel-DkgZHNUe.js.map +1 -0
- package/webapp/dist/assets/{chunk-4BX2VUAB-CefNtjWG.js → chunk-4BX2VUAB-BmdMbU9v.js} +2 -2
- package/webapp/dist/assets/chunk-4BX2VUAB-BmdMbU9v.js.map +1 -0
- package/webapp/dist/assets/{chunk-55IACEB6-C_X7T43V.js → chunk-55IACEB6-D6LDTDBy.js} +2 -2
- package/webapp/dist/assets/chunk-55IACEB6-D6LDTDBy.js.map +1 -0
- package/webapp/dist/assets/{chunk-FMBD7UC4-ORmtkrtS.js → chunk-FMBD7UC4-C-BdCe4C.js} +2 -2
- package/webapp/dist/assets/chunk-FMBD7UC4-C-BdCe4C.js.map +1 -0
- package/webapp/dist/assets/{chunk-TZMSLE5B-Gao4qrq7.js → chunk-JSJVCQXG-WA_BLIm9.js} +14 -6
- package/webapp/dist/assets/chunk-JSJVCQXG-WA_BLIm9.js.map +1 -0
- package/webapp/dist/assets/{chunk-QN33PNHL-LTAOVhWu.js → chunk-KX2RTZJC-CA7sDJO5.js} +2 -2
- package/webapp/dist/assets/chunk-KX2RTZJC-CA7sDJO5.js.map +1 -0
- package/webapp/dist/assets/{chunk-DI55MBZ5-CbvrsI_w.js → chunk-NQ4KR5QH-wlvxalE3.js} +9 -7
- package/webapp/dist/assets/chunk-NQ4KR5QH-wlvxalE3.js.map +1 -0
- package/webapp/dist/assets/{chunk-QZHKN3VN-ZoUM_4u5.js → chunk-QZHKN3VN-Bo1VMcph.js} +2 -2
- package/webapp/dist/assets/chunk-QZHKN3VN-Bo1VMcph.js.map +1 -0
- package/webapp/dist/assets/{chunk-B4BG7PRW-BRe3_2oA.js → chunk-WL4C6EOR-B-Pk44be.js} +171 -121
- package/webapp/dist/assets/chunk-WL4C6EOR-B-Pk44be.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-2ON5EDUG-uha1vIGN.js → classDiagram-VBA2DB6C-BqKuyb49.js} +7 -6
- package/webapp/dist/assets/classDiagram-VBA2DB6C-BqKuyb49.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-uha1vIGN.js → classDiagram-v2-RAHNMMFH-BqKuyb49.js} +7 -6
- package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-BqKuyb49.js.map +1 -0
- package/webapp/dist/assets/{clone-_9Ayb1Gp.js → clone-BX5z8WVZ.js} +2 -2
- package/webapp/dist/assets/clone-BX5z8WVZ.js.map +1 -0
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-C8wDw3NY.js → cose-bilkent-S5V4N54A-B-s11SgN.js} +2 -2
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-B-s11SgN.js.map +1 -0
- package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
- package/webapp/dist/assets/{dagre-6UL2VRFP-BUSeNot0.js → dagre-KLK3FWXG-DmQFV2qK.js} +7 -7
- package/webapp/dist/assets/dagre-KLK3FWXG-DmQFV2qK.js.map +1 -0
- package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
- package/webapp/dist/assets/{diagram-PSM6KHXK-CMZAksVC.js → diagram-E7M64L7V-QRaBfST8.js} +10 -10
- package/webapp/dist/assets/diagram-E7M64L7V-QRaBfST8.js.map +1 -0
- package/webapp/dist/assets/{diagram-QEK2KX5R-BQKoRtwy.js → diagram-IFDJBPK2-lrWn1Obo.js} +9 -8
- package/webapp/dist/assets/diagram-IFDJBPK2-lrWn1Obo.js.map +1 -0
- package/webapp/dist/assets/{diagram-S2PKOQOG-DjMG97kd.js → diagram-P4PSJMXO-sTU7Hh-Y.js} +8 -8
- package/webapp/dist/assets/diagram-P4PSJMXO-sTU7Hh-Y.js.map +1 -0
- package/webapp/dist/assets/{erDiagram-Q2GNP2WA-BujwA137.js → erDiagram-INFDFZHY-Cx6jc9Wq.js} +96 -75
- package/webapp/dist/assets/erDiagram-INFDFZHY-Cx6jc9Wq.js.map +1 -0
- package/webapp/dist/assets/{flowDiagram-NV44I4VS-DgwPjg4y.js → flowDiagram-PKNHOUZH-DfGI49Dz.js} +98 -81
- package/webapp/dist/assets/flowDiagram-PKNHOUZH-DfGI49Dz.js.map +1 -0
- package/webapp/dist/assets/{ganttDiagram-JELNMOA3-Db2ykf3E.js → ganttDiagram-A5KZAMGK-nrcHWWaM.js} +28 -3
- package/webapp/dist/assets/ganttDiagram-A5KZAMGK-nrcHWWaM.js.map +1 -0
- package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-D_gSifkv.js → gitGraphDiagram-K3NZZRJ6-D8ivAqd6.js} +38 -46
- package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-D8ivAqd6.js.map +1 -0
- package/webapp/dist/assets/graph-R5G-y8tB.js +782 -0
- package/webapp/dist/assets/graph-R5G-y8tB.js.map +1 -0
- package/webapp/dist/assets/{index-DLajsIDJ.js → index--fy89xGh.js} +2214 -2023
- package/webapp/dist/assets/index--fy89xGh.js.map +1 -0
- package/webapp/dist/assets/{index-xvYYeHuy.css → index-DZFkLLVz.css} +18 -10
- package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BDba5pKs.js → infoDiagram-LFFYTUFH-PIoZHr7s.js} +7 -7
- package/webapp/dist/assets/infoDiagram-LFFYTUFH-PIoZHr7s.js.map +1 -0
- package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-oCM-LYk1.js +966 -0
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-oCM-LYk1.js.map +1 -0
- package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-CmJAbmlm.js → journeyDiagram-4ABVD52K-C2qidjQ5.js} +5 -5
- package/webapp/dist/assets/journeyDiagram-4ABVD52K-C2qidjQ5.js.map +1 -0
- package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-DxQeBTDk.js → kanban-definition-K7BYSVSG-Du0TC8WS.js} +5 -3
- package/webapp/dist/assets/kanban-definition-K7BYSVSG-Du0TC8WS.js.map +1 -0
- package/webapp/dist/assets/{layout-DteV_yE8.js → layout-VmEo1OEB.js} +5 -5
- package/webapp/dist/assets/layout-VmEo1OEB.js.map +1 -0
- package/webapp/dist/assets/{linear-zItbPrND.js → linear-B662YHAc.js} +2 -2
- package/webapp/dist/assets/linear-B662YHAc.js.map +1 -0
- package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-BJXI7UqO.js → mindmap-definition-YRQLILUH-D7arZj95.js} +7 -5
- package/webapp/dist/assets/mindmap-definition-YRQLILUH-D7arZj95.js.map +1 -0
- package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
- package/webapp/dist/assets/{pieDiagram-ADFJNKIX-BpM-aH2p.js → pieDiagram-SKSYHLDU-DvjPP4PA.js} +8 -8
- package/webapp/dist/assets/pieDiagram-SKSYHLDU-DvjPP4PA.js.map +1 -0
- package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-NXdIpA15.js → quadrantDiagram-337W2JSQ-B_JUGMj_.js} +3 -3
- package/webapp/dist/assets/quadrantDiagram-337W2JSQ-B_JUGMj_.js.map +1 -0
- package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-D1AICAA0.js → requirementDiagram-Z7DCOOCP-DF0mpvE3.js} +16 -6
- package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-DF0mpvE3.js.map +1 -0
- package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-WiReDPfo.js → sankeyDiagram-WA2Y5GQK-CoXlxv00.js} +2 -2
- package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-CoXlxv00.js.map +1 -0
- package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-Cw76oP8t.js → sequenceDiagram-2WXFIKYE-DYqT5Pg7.js} +601 -201
- package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-DYqT5Pg7.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-QjCeRczs.js → stateDiagram-RAJIS63D-D9b1mN8-.js} +9 -9
- package/webapp/dist/assets/stateDiagram-RAJIS63D-D9b1mN8-.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-IClqxQ4s.js → stateDiagram-v2-FVOUBMTO-DNzgudL_.js} +5 -5
- package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-DNzgudL_.js.map +1 -0
- package/webapp/dist/assets/{timeline-definition-IT6M3QCI-BfyfTY7m.js → timeline-definition-YZTLITO2-CkyKUY7A.js} +3 -3
- package/webapp/dist/assets/timeline-definition-YZTLITO2-CkyKUY7A.js.map +1 -0
- package/webapp/dist/assets/{treemap-GDKQZRPO-C5MiL6--.js → treemap-KZPCXAKY-CZd09kF-.js} +37 -24
- package/webapp/dist/assets/treemap-KZPCXAKY-CZd09kF-.js.map +1 -0
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-BxVF5Olo.js +2487 -0
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-BxVF5Olo.js.map +1 -0
- package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-ybaJrSry.js → xychartDiagram-JWTSCODW-BRwRloPc.js} +4 -4
- package/webapp/dist/assets/xychartDiagram-JWTSCODW-BRwRloPc.js.map +1 -0
- package/webapp/dist/index.html +2 -2
- package/dist/docs/issues/global-dialog-event-broadcaster-missing.md +0 -128
- package/dist/llm/kernel-driver/subdialog-txn.d.ts +0 -8
- package/webapp/dist/assets/_basePickBy-BPJaiZdW.js.map +0 -1
- package/webapp/dist/assets/_baseUniq-BEetT15i.js.map +0 -1
- package/webapp/dist/assets/arc-Dm7Zf36f.js.map +0 -1
- package/webapp/dist/assets/architectureDiagram-VXUJARFQ-BpTPtkuo.js.map +0 -1
- package/webapp/dist/assets/blockDiagram-VD42YOAC-C8fLN0iu.js.map +0 -1
- package/webapp/dist/assets/c4Diagram-YG6GDRKO-BpPr62CH.js.map +0 -1
- package/webapp/dist/assets/channel-EMYoPjW3.js.map +0 -1
- package/webapp/dist/assets/chunk-4BX2VUAB-CefNtjWG.js.map +0 -1
- package/webapp/dist/assets/chunk-55IACEB6-C_X7T43V.js.map +0 -1
- package/webapp/dist/assets/chunk-B4BG7PRW-BRe3_2oA.js.map +0 -1
- package/webapp/dist/assets/chunk-DI55MBZ5-CbvrsI_w.js.map +0 -1
- package/webapp/dist/assets/chunk-FMBD7UC4-ORmtkrtS.js.map +0 -1
- package/webapp/dist/assets/chunk-QN33PNHL-LTAOVhWu.js.map +0 -1
- package/webapp/dist/assets/chunk-QZHKN3VN-ZoUM_4u5.js.map +0 -1
- package/webapp/dist/assets/chunk-TZMSLE5B-Gao4qrq7.js.map +0 -1
- package/webapp/dist/assets/classDiagram-2ON5EDUG-uha1vIGN.js.map +0 -1
- package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-uha1vIGN.js.map +0 -1
- package/webapp/dist/assets/clone-_9Ayb1Gp.js.map +0 -1
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-C8wDw3NY.js.map +0 -1
- package/webapp/dist/assets/dagre-6UL2VRFP-BUSeNot0.js.map +0 -1
- package/webapp/dist/assets/diagram-PSM6KHXK-CMZAksVC.js.map +0 -1
- package/webapp/dist/assets/diagram-QEK2KX5R-BQKoRtwy.js.map +0 -1
- package/webapp/dist/assets/diagram-S2PKOQOG-DjMG97kd.js.map +0 -1
- package/webapp/dist/assets/erDiagram-Q2GNP2WA-BujwA137.js.map +0 -1
- package/webapp/dist/assets/flowDiagram-NV44I4VS-DgwPjg4y.js.map +0 -1
- package/webapp/dist/assets/ganttDiagram-JELNMOA3-Db2ykf3E.js.map +0 -1
- package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-D_gSifkv.js.map +0 -1
- package/webapp/dist/assets/graph-BHjCU5xP.js +0 -425
- package/webapp/dist/assets/graph-BHjCU5xP.js.map +0 -1
- package/webapp/dist/assets/index-DLajsIDJ.js.map +0 -1
- package/webapp/dist/assets/infoDiagram-HS3SLOUP-BDba5pKs.js.map +0 -1
- package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-CmJAbmlm.js.map +0 -1
- package/webapp/dist/assets/kanban-definition-3W4ZIXB7-DxQeBTDk.js.map +0 -1
- package/webapp/dist/assets/layout-DteV_yE8.js.map +0 -1
- package/webapp/dist/assets/linear-zItbPrND.js.map +0 -1
- package/webapp/dist/assets/mindmap-definition-VGOIOE7T-BJXI7UqO.js.map +0 -1
- package/webapp/dist/assets/pieDiagram-ADFJNKIX-BpM-aH2p.js.map +0 -1
- package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-NXdIpA15.js.map +0 -1
- package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-D1AICAA0.js.map +0 -1
- package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-WiReDPfo.js.map +0 -1
- package/webapp/dist/assets/sequenceDiagram-WL72ISMW-Cw76oP8t.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-FKZM4ZOC-QjCeRczs.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3-IClqxQ4s.js.map +0 -1
- package/webapp/dist/assets/timeline-definition-IT6M3QCI-BfyfTY7m.js.map +0 -1
- package/webapp/dist/assets/treemap-GDKQZRPO-C5MiL6--.js.map +0 -1
- package/webapp/dist/assets/xychartDiagram-PRI3JC2R-ybaJrSry.js.map +0 -1
|
@@ -21,62 +21,62 @@ function formatDriveTriggerForLog(trigger) {
|
|
|
21
21
|
}
|
|
22
22
|
async function driveQueuedDialogsOnce() {
|
|
23
23
|
const dialogsToDrive = dialog_global_registry_1.globalDialogRegistry.getDialogsNeedingDrive();
|
|
24
|
-
for (const
|
|
24
|
+
for (const mainDialog of dialogsToDrive) {
|
|
25
25
|
try {
|
|
26
|
-
const latest = await persistence_1.DialogPersistence.loadDialogLatest(
|
|
26
|
+
const latest = await persistence_1.DialogPersistence.loadDialogLatest(mainDialog.id, 'running');
|
|
27
27
|
const executionMarker = latest?.executionMarker;
|
|
28
|
-
const stopRequested = (0, dialog_display_state_1.getStopRequestedReason)(
|
|
28
|
+
const stopRequested = (0, dialog_display_state_1.getStopRequestedReason)(mainDialog.id);
|
|
29
29
|
const interruptedRequiresExplicitResume = executionMarker?.kind === 'interrupted' &&
|
|
30
30
|
(0, dialog_interruption_1.doesInterruptionReasonRequireExplicitResume)(executionMarker.reason);
|
|
31
31
|
if (interruptedRequiresExplicitResume || stopRequested !== undefined) {
|
|
32
|
-
dialog_global_registry_1.globalDialogRegistry.markNotNeedingDrive(
|
|
32
|
+
dialog_global_registry_1.globalDialogRegistry.markNotNeedingDrive(mainDialog.id.rootId, {
|
|
33
33
|
source: 'kernel_driver_backend_loop',
|
|
34
34
|
reason: interruptedRequiresExplicitResume
|
|
35
35
|
? 'execution_marker_blocked:interrupted'
|
|
36
36
|
: `stop_requested:${stopRequested}`,
|
|
37
37
|
});
|
|
38
|
-
await persistence_1.DialogPersistence.setNeedsDrive(
|
|
38
|
+
await persistence_1.DialogPersistence.setNeedsDrive(mainDialog.id, false, mainDialog.status);
|
|
39
39
|
continue;
|
|
40
40
|
}
|
|
41
|
-
if ((0, dialog_display_state_1.hasActiveRun)(
|
|
41
|
+
if ((0, dialog_display_state_1.hasActiveRun)(mainDialog.id)) {
|
|
42
42
|
log_1.log.debug('Backend driver deferred queued root drive because dialog already has an active run', undefined, {
|
|
43
|
-
dialogId:
|
|
44
|
-
rootId:
|
|
43
|
+
dialogId: mainDialog.id.valueOf(),
|
|
44
|
+
rootId: mainDialog.id.rootId,
|
|
45
45
|
});
|
|
46
|
-
dialog_global_registry_1.globalDialogRegistry.noteActiveRunBlockedQueuedDrive(
|
|
46
|
+
dialog_global_registry_1.globalDialogRegistry.noteActiveRunBlockedQueuedDrive(mainDialog.id.rootId);
|
|
47
47
|
continue;
|
|
48
48
|
}
|
|
49
|
-
if (!(await
|
|
49
|
+
if (!(await mainDialog.canDrive())) {
|
|
50
50
|
continue;
|
|
51
51
|
}
|
|
52
|
-
await (0, engine_1.driveDialogStream)(
|
|
52
|
+
await (0, engine_1.driveDialogStream)(mainDialog, undefined, true, {
|
|
53
53
|
source: 'kernel_driver_backend_loop',
|
|
54
54
|
reason: 'global_dialog_registry_needs_drive',
|
|
55
55
|
});
|
|
56
|
-
const status = await
|
|
57
|
-
const shouldStayQueued =
|
|
56
|
+
const status = await mainDialog.getSuspensionStatus();
|
|
57
|
+
const shouldStayQueued = mainDialog.hasUpNext() || !status.canDrive;
|
|
58
58
|
if (shouldStayQueued) {
|
|
59
|
-
dialog_global_registry_1.globalDialogRegistry.markNeedsDrive(
|
|
59
|
+
dialog_global_registry_1.globalDialogRegistry.markNeedsDrive(mainDialog.id.rootId, {
|
|
60
60
|
source: 'kernel_driver_backend_loop',
|
|
61
|
-
reason:
|
|
61
|
+
reason: mainDialog.hasUpNext() ? 'post_drive_upnext_pending' : 'post_drive_suspended',
|
|
62
62
|
});
|
|
63
|
-
await persistence_1.DialogPersistence.setNeedsDrive(
|
|
63
|
+
await persistence_1.DialogPersistence.setNeedsDrive(mainDialog.id, true, mainDialog.status);
|
|
64
64
|
}
|
|
65
65
|
else {
|
|
66
|
-
dialog_global_registry_1.globalDialogRegistry.markNotNeedingDrive(
|
|
66
|
+
dialog_global_registry_1.globalDialogRegistry.markNotNeedingDrive(mainDialog.id.rootId, {
|
|
67
67
|
source: 'kernel_driver_backend_loop',
|
|
68
68
|
reason: 'post_drive_idle',
|
|
69
69
|
});
|
|
70
|
-
await persistence_1.DialogPersistence.setNeedsDrive(
|
|
70
|
+
await persistence_1.DialogPersistence.setNeedsDrive(mainDialog.id, false, mainDialog.status);
|
|
71
71
|
}
|
|
72
|
-
const lastTrigger = dialog_global_registry_1.globalDialogRegistry.getLastDriveTrigger(
|
|
72
|
+
const lastTrigger = dialog_global_registry_1.globalDialogRegistry.getLastDriveTrigger(mainDialog.id.rootId);
|
|
73
73
|
const lastTriggerAgeMs = lastTrigger !== undefined ? Math.max(0, Date.now() - lastTrigger.emittedAtMs) : undefined;
|
|
74
|
-
if (status.
|
|
75
|
-
log_1.log.debug(`Dialog ${
|
|
76
|
-
rootId:
|
|
74
|
+
if (status.sideDialogs) {
|
|
75
|
+
log_1.log.debug(`Dialog ${mainDialog.id.rootId} suspended, waiting for sideDialogs`, undefined, {
|
|
76
|
+
rootId: mainDialog.id.rootId,
|
|
77
77
|
waitingQ4H: status.q4h,
|
|
78
|
-
|
|
79
|
-
hasQueuedUpNext:
|
|
78
|
+
waitingSideDialogs: status.sideDialogs,
|
|
79
|
+
hasQueuedUpNext: mainDialog.hasUpNext(),
|
|
80
80
|
lastDriveTrigger: lastTrigger
|
|
81
81
|
? {
|
|
82
82
|
action: lastTrigger.action,
|
|
@@ -92,11 +92,11 @@ async function driveQueuedDialogsOnce() {
|
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
if (status.q4h) {
|
|
95
|
-
log_1.log.debug(`Dialog ${
|
|
96
|
-
rootId:
|
|
95
|
+
log_1.log.debug(`Dialog ${mainDialog.id.rootId} awaiting Q4H answer`, undefined, {
|
|
96
|
+
rootId: mainDialog.id.rootId,
|
|
97
97
|
waitingQ4H: status.q4h,
|
|
98
|
-
|
|
99
|
-
hasQueuedUpNext:
|
|
98
|
+
waitingSideDialogs: status.sideDialogs,
|
|
99
|
+
hasQueuedUpNext: mainDialog.hasUpNext(),
|
|
100
100
|
lastDriveTrigger: lastTrigger
|
|
101
101
|
? {
|
|
102
102
|
action: lastTrigger.action,
|
|
@@ -113,8 +113,8 @@ async function driveQueuedDialogsOnce() {
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
catch (err) {
|
|
116
|
-
log_1.log.error(`Error driving dialog ${
|
|
117
|
-
dialogId:
|
|
116
|
+
log_1.log.error(`Error driving dialog ${mainDialog.id.rootId}:`, err, undefined, {
|
|
117
|
+
dialogId: mainDialog.id.rootId,
|
|
118
118
|
});
|
|
119
119
|
}
|
|
120
120
|
}
|
|
@@ -14,28 +14,22 @@ const tellask_special_1 = require("./tellask-special");
|
|
|
14
14
|
const REPLY_TOOL_REMINDER_PREFIX_EN = '[Dominds replyTellask required]';
|
|
15
15
|
const REPLY_TOOL_REMINDER_PREFIX_ZH = '[Dominds 必须调用回复工具]';
|
|
16
16
|
async function resolveReplyTargetAgentId(args) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (!rootDialog) {
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
const targetDialogId = new dialog_1.DialogID(args.directive.targetDialogId, rootDialog.id.rootId);
|
|
28
|
-
const targetDialog = rootDialog.lookupDialog(targetDialogId.selfId) ??
|
|
29
|
-
(await (0, dialog_instance_registry_1.ensureDialogLoaded)(rootDialog, targetDialogId, rootDialog.status));
|
|
30
|
-
return targetDialog?.agentId;
|
|
31
|
-
}
|
|
32
|
-
case 'replyTellask':
|
|
33
|
-
case 'replyTellaskSessionless':
|
|
34
|
-
return args.dlg instanceof dialog_1.SubDialog ? args.dlg.assignmentFromSup.originMemberId : undefined;
|
|
17
|
+
const mainDialog = args.dlg instanceof dialog_1.MainDialog
|
|
18
|
+
? args.dlg
|
|
19
|
+
: args.dlg instanceof dialog_1.SideDialog
|
|
20
|
+
? args.dlg.mainDialog
|
|
21
|
+
: undefined;
|
|
22
|
+
if (!mainDialog) {
|
|
23
|
+
return undefined;
|
|
35
24
|
}
|
|
25
|
+
const targetDialogId = new dialog_1.DialogID(args.directive.targetDialogId, mainDialog.id.rootId);
|
|
26
|
+
const targetDialog = mainDialog.lookupDialog(targetDialogId.selfId) ??
|
|
27
|
+
(await (0, dialog_instance_registry_1.ensureDialogLoaded)(mainDialog, targetDialogId, mainDialog.status));
|
|
28
|
+
return targetDialog?.agentId;
|
|
36
29
|
}
|
|
37
30
|
function buildPromptContentWithExactReplyToolName(args) {
|
|
38
|
-
const
|
|
31
|
+
const isFbrSideDialog = args.dlg instanceof dialog_1.SideDialog &&
|
|
32
|
+
args.dlg.assignmentFromAsker.callName === 'freshBootsReasoning';
|
|
39
33
|
const noActivePrefix = args.language === 'zh'
|
|
40
34
|
? '[Dominds 当前无跨对话回复义务]'
|
|
41
35
|
: '[Dominds no active inter-dialog reply]';
|
|
@@ -48,10 +42,10 @@ function buildPromptContentWithExactReplyToolName(args) {
|
|
|
48
42
|
];
|
|
49
43
|
const directive = args.activeReplyDirective;
|
|
50
44
|
if (!directive) {
|
|
51
|
-
if (
|
|
45
|
+
if (isFbrSideDialog) {
|
|
52
46
|
return args.prompt.content;
|
|
53
47
|
}
|
|
54
|
-
if (!(args.dlg instanceof dialog_1.
|
|
48
|
+
if (!(args.dlg instanceof dialog_1.SideDialog)) {
|
|
55
49
|
return args.prompt.content;
|
|
56
50
|
}
|
|
57
51
|
if (args.prompt.content.startsWith(noActivePrefix)) {
|
|
@@ -89,33 +83,33 @@ function hasSameReplyDirective(left, right) {
|
|
|
89
83
|
if (left.expectedReplyCallName !== right.expectedReplyCallName) {
|
|
90
84
|
return false;
|
|
91
85
|
}
|
|
92
|
-
if (left.
|
|
86
|
+
if (left.targetDialogId !== right.targetDialogId ||
|
|
87
|
+
left.targetCallId !== right.targetCallId ||
|
|
88
|
+
left.tellaskContent !== right.tellaskContent) {
|
|
93
89
|
return false;
|
|
94
90
|
}
|
|
95
|
-
if (left.expectedReplyCallName === 'replyTellaskBack') {
|
|
96
|
-
return (right.expectedReplyCallName === 'replyTellaskBack' &&
|
|
97
|
-
left.targetDialogId === right.targetDialogId);
|
|
98
|
-
}
|
|
99
91
|
return true;
|
|
100
92
|
}
|
|
101
|
-
function
|
|
102
|
-
switch (dlg.
|
|
93
|
+
function buildCurrentSideDialogAssignmentDirective(dlg) {
|
|
94
|
+
switch (dlg.assignmentFromAsker.callName) {
|
|
103
95
|
case 'tellask':
|
|
104
96
|
return {
|
|
105
97
|
expectedReplyCallName: 'replyTellask',
|
|
106
|
-
|
|
107
|
-
|
|
98
|
+
targetDialogId: dlg.assignmentFromAsker.askerDialogId,
|
|
99
|
+
targetCallId: dlg.assignmentFromAsker.callId,
|
|
100
|
+
tellaskContent: dlg.assignmentFromAsker.tellaskContent,
|
|
108
101
|
};
|
|
109
102
|
case 'tellaskSessionless':
|
|
110
103
|
case 'freshBootsReasoning':
|
|
111
104
|
return {
|
|
112
105
|
expectedReplyCallName: 'replyTellaskSessionless',
|
|
113
|
-
|
|
114
|
-
|
|
106
|
+
targetDialogId: dlg.assignmentFromAsker.askerDialogId,
|
|
107
|
+
targetCallId: dlg.assignmentFromAsker.callId,
|
|
108
|
+
tellaskContent: dlg.assignmentFromAsker.tellaskContent,
|
|
115
109
|
};
|
|
116
110
|
default: {
|
|
117
|
-
const _exhaustive = dlg.
|
|
118
|
-
throw new Error(`Unsupported
|
|
111
|
+
const _exhaustive = dlg.assignmentFromAsker.callName;
|
|
112
|
+
throw new Error(`Unsupported sideDialog assignment callName: ${_exhaustive}`);
|
|
119
113
|
}
|
|
120
114
|
}
|
|
121
115
|
}
|
|
@@ -128,15 +122,15 @@ async function hasCurrentCourseHumanPromptRecord(args) {
|
|
|
128
122
|
}
|
|
129
123
|
return false;
|
|
130
124
|
}
|
|
131
|
-
async function
|
|
132
|
-
if (!(args.dlg instanceof dialog_1.
|
|
125
|
+
async function resolveFreshCurrentSideDialogAssignmentDirective(args) {
|
|
126
|
+
if (!(args.dlg instanceof dialog_1.SideDialog) || args.prompt?.origin !== 'runtime') {
|
|
133
127
|
return undefined;
|
|
134
128
|
}
|
|
135
129
|
const promptDirective = args.prompt.tellaskReplyDirective;
|
|
136
130
|
if (!promptDirective) {
|
|
137
131
|
return undefined;
|
|
138
132
|
}
|
|
139
|
-
const currentAssignmentDirective =
|
|
133
|
+
const currentAssignmentDirective = buildCurrentSideDialogAssignmentDirective(args.dlg);
|
|
140
134
|
if (!hasSameReplyDirective(promptDirective, currentAssignmentDirective)) {
|
|
141
135
|
return undefined;
|
|
142
136
|
}
|
|
@@ -174,23 +168,23 @@ async function resolveFreshPendingAskBackReplyDirective(args) {
|
|
|
174
168
|
})) {
|
|
175
169
|
return undefined;
|
|
176
170
|
}
|
|
177
|
-
const
|
|
171
|
+
const mainDialog = args.dlg instanceof dialog_1.MainDialog
|
|
178
172
|
? args.dlg
|
|
179
|
-
: args.dlg instanceof dialog_1.
|
|
180
|
-
? args.dlg.
|
|
173
|
+
: args.dlg instanceof dialog_1.SideDialog
|
|
174
|
+
? args.dlg.mainDialog
|
|
181
175
|
: undefined;
|
|
182
|
-
if (!
|
|
176
|
+
if (!mainDialog) {
|
|
183
177
|
return undefined;
|
|
184
178
|
}
|
|
185
|
-
const
|
|
186
|
-
const latest = await persistence_1.DialogPersistence.loadDialogLatest(
|
|
179
|
+
const askBackAskerDialogId = new dialog_1.DialogID(prompt.tellaskReplyDirective.targetDialogId, mainDialog.id.rootId);
|
|
180
|
+
const latest = await persistence_1.DialogPersistence.loadDialogLatest(askBackAskerDialogId, mainDialog.status);
|
|
187
181
|
if (!latest) {
|
|
188
182
|
return undefined;
|
|
189
183
|
}
|
|
190
184
|
const targetCallId = prompt.tellaskReplyDirective.targetCallId.trim();
|
|
191
185
|
let sawAskBackCall = false;
|
|
192
186
|
for (let course = latest.currentCourse; course >= 1; course -= 1) {
|
|
193
|
-
const events = await persistence_1.DialogPersistence.loadCourseEvents(
|
|
187
|
+
const events = await persistence_1.DialogPersistence.loadCourseEvents(askBackAskerDialogId, course, mainDialog.status);
|
|
194
188
|
for (const event of events) {
|
|
195
189
|
if (event.type === 'tellask_result_record' && event.callId.trim() === targetCallId) {
|
|
196
190
|
return undefined;
|
|
@@ -234,7 +228,7 @@ async function shouldSuppressInterDialogReplyGuidanceForUserInterjection(args) {
|
|
|
234
228
|
// 3. manual Continue later decides from fresh persistence facts whether the dialog should stay
|
|
235
229
|
// blocked or resume real driving.
|
|
236
230
|
//
|
|
237
|
-
// Do not "simplify" this into a pure display-state check or a pure pending-
|
|
231
|
+
// Do not "simplify" this into a pure display-state check or a pure pending-sideDialog check.
|
|
238
232
|
// Proceeding dialogs with a still-active reply obligation are part of the same rule: a fresh
|
|
239
233
|
// user interjection should still suppress the live reply obligation and answer locally first.
|
|
240
234
|
// The business anchor is the deferred reply reassertion, while the paused execution marker keeps
|
|
@@ -257,20 +251,20 @@ async function shouldSuppressInterDialogReplyGuidanceForUserInterjection(args) {
|
|
|
257
251
|
(0, interjection_pause_stop_1.isUserInterjectionPauseStopReason)(latest.executionMarker.reason)) {
|
|
258
252
|
return true;
|
|
259
253
|
}
|
|
260
|
-
const activeReplyDirective = await (0, tellask_special_1.
|
|
254
|
+
const activeReplyDirective = await (0, tellask_special_1.loadActiveTellaskReplyDirective)(args.dlg);
|
|
261
255
|
if (activeReplyDirective) {
|
|
262
256
|
return true;
|
|
263
257
|
}
|
|
264
258
|
// Use strict persistence reads here. This branch changes business behavior, so a read failure
|
|
265
|
-
// must loud-fail the round instead of being silently treated as "pending
|
|
266
|
-
const
|
|
267
|
-
return
|
|
259
|
+
// must loud-fail the round instead of being silently treated as "pending sideDialogs exist".
|
|
260
|
+
const pendingSideDialogs = await persistence_1.DialogPersistence.loadPendingSideDialogs(args.dlg.id, args.dlg.status);
|
|
261
|
+
return pendingSideDialogs.length > 0;
|
|
268
262
|
}
|
|
269
263
|
async function resolvePromptReplyGuidance(args) {
|
|
270
264
|
const prompt = args.prompt;
|
|
271
265
|
const isQ4HAnswerPrompt = typeof prompt?.q4hAnswerCallId === 'string' && prompt.q4hAnswerCallId.trim() !== '';
|
|
272
266
|
const latest = await persistence_1.DialogPersistence.loadDialogLatest(args.dlg.id, args.dlg.status);
|
|
273
|
-
const
|
|
267
|
+
const persistedCurrentSideDialogAssignmentDirective = await resolveFreshCurrentSideDialogAssignmentDirective({
|
|
274
268
|
dlg: args.dlg,
|
|
275
269
|
prompt,
|
|
276
270
|
});
|
|
@@ -283,10 +277,11 @@ async function resolvePromptReplyGuidance(args) {
|
|
|
283
277
|
latest.pendingCourseStartPrompt.origin === 'runtime'
|
|
284
278
|
? latest.pendingCourseStartPrompt.tellaskReplyDirective
|
|
285
279
|
: undefined;
|
|
286
|
-
const
|
|
280
|
+
const persistedActiveReplyObligation = await (0, tellask_special_1.loadActiveTellaskReplyDirective)(args.dlg);
|
|
281
|
+
const persistedActiveReplyDirective = persistedCurrentSideDialogAssignmentDirective ??
|
|
287
282
|
persistedPendingAskBackReplyDirective ??
|
|
288
283
|
persistedPendingCourseStartDirective ??
|
|
289
|
-
|
|
284
|
+
persistedActiveReplyObligation;
|
|
290
285
|
const suppressInterDialogReplyGuidance = isQ4HAnswerPrompt
|
|
291
286
|
? false
|
|
292
287
|
: await shouldSuppressInterDialogReplyGuidanceForUserInterjection({
|
|
@@ -5,9 +5,9 @@ type RestoreSummary = {
|
|
|
5
5
|
totalCourses: number;
|
|
6
6
|
completionStatus: 'incomplete' | 'complete' | 'failed';
|
|
7
7
|
};
|
|
8
|
-
export declare function restoreDialogHierarchy(
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
export declare function restoreDialogHierarchy(mainDialogId: string, status?: RestoreStatus): Promise<{
|
|
9
|
+
mainDialog: Dialog;
|
|
10
|
+
sideDialogs: Map<string, Dialog>;
|
|
11
11
|
summary: RestoreSummary;
|
|
12
12
|
}>;
|
|
13
13
|
export {};
|
|
@@ -11,45 +11,40 @@ const dialog_global_registry_1 = require("../../dialog-global-registry");
|
|
|
11
11
|
const dialog_instance_registry_1 = require("../../dialog-instance-registry");
|
|
12
12
|
const log_1 = require("../../log");
|
|
13
13
|
const persistence_1 = require("../../persistence");
|
|
14
|
-
async function restoreDialogHierarchy(
|
|
14
|
+
async function restoreDialogHierarchy(mainDialogId, status = 'running') {
|
|
15
15
|
try {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
throw new Error(`Expected root dialog ${rootDialogId} but found subdialog metadata with supdialogId: ${rootMeta.supdialogId}`);
|
|
16
|
+
const mainDialog = await (0, dialog_instance_registry_1.getOrRestoreMainDialog)(mainDialogId, status);
|
|
17
|
+
if (!mainDialog) {
|
|
18
|
+
throw new Error(`Failed to restore dialog hierarchy for ${mainDialogId} from status ${status}`);
|
|
20
19
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const subdialogs = new Map();
|
|
27
|
-
const rootPath = persistence_1.DialogPersistence.getRootDialogPath(rootDialogIdent, status);
|
|
28
|
-
const subdialogsPath = path_1.default.join(rootPath, 'subdialogs');
|
|
29
|
-
let allSubdialogIds = [];
|
|
20
|
+
dialog_global_registry_1.globalDialogRegistry.register(mainDialog);
|
|
21
|
+
const sideDialogs = new Map();
|
|
22
|
+
const rootPath = persistence_1.DialogPersistence.getMainDialogPath(mainDialog.id, status);
|
|
23
|
+
const sideDialogsPath = path_1.default.join(rootPath, 'sideDialogs');
|
|
24
|
+
let allSideDialogIds = [];
|
|
30
25
|
try {
|
|
31
|
-
const entries = await fs_1.default.promises.readdir(
|
|
32
|
-
|
|
26
|
+
const entries = await fs_1.default.promises.readdir(sideDialogsPath, { withFileTypes: true });
|
|
27
|
+
allSideDialogIds = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);
|
|
33
28
|
}
|
|
34
29
|
catch (err) {
|
|
35
30
|
const code = typeof err === 'object' && err !== null && 'code' in err
|
|
36
31
|
? err.code
|
|
37
32
|
: undefined;
|
|
38
33
|
if (code !== 'ENOENT') {
|
|
39
|
-
log_1.log.warn(`Failed to read
|
|
34
|
+
log_1.log.warn(`Failed to read sideDialogs directory: ${sideDialogsPath}, returning empty array`, err);
|
|
40
35
|
}
|
|
41
|
-
|
|
36
|
+
allSideDialogIds = [];
|
|
42
37
|
}
|
|
43
|
-
for (const
|
|
44
|
-
const
|
|
45
|
-
const dialog = await (0, dialog_instance_registry_1.ensureDialogLoaded)(
|
|
38
|
+
for (const sideDialogId of allSideDialogIds) {
|
|
39
|
+
const restoredSideDialogId = new dialog_1.DialogID(sideDialogId, mainDialog.id.rootId);
|
|
40
|
+
const dialog = await (0, dialog_instance_registry_1.ensureDialogLoaded)(mainDialog, restoredSideDialogId, status);
|
|
46
41
|
if (dialog && dialog.id.selfId !== dialog.id.rootId) {
|
|
47
|
-
|
|
42
|
+
sideDialogs.set(sideDialogId, dialog);
|
|
48
43
|
}
|
|
49
44
|
}
|
|
50
|
-
let totalMessages =
|
|
51
|
-
let totalCourses =
|
|
52
|
-
for (const dialog of
|
|
45
|
+
let totalMessages = mainDialog.msgs.length;
|
|
46
|
+
let totalCourses = mainDialog.currentCourse;
|
|
47
|
+
for (const dialog of sideDialogs.values()) {
|
|
53
48
|
totalMessages += dialog.msgs.length;
|
|
54
49
|
if (dialog.currentCourse > totalCourses) {
|
|
55
50
|
totalCourses = dialog.currentCourse;
|
|
@@ -61,13 +56,13 @@ async function restoreDialogHierarchy(rootDialogId, status = 'running') {
|
|
|
61
56
|
completionStatus: 'incomplete',
|
|
62
57
|
};
|
|
63
58
|
return {
|
|
64
|
-
|
|
65
|
-
|
|
59
|
+
mainDialog,
|
|
60
|
+
sideDialogs,
|
|
66
61
|
summary,
|
|
67
62
|
};
|
|
68
63
|
}
|
|
69
64
|
catch (error) {
|
|
70
|
-
log_1.log.error(`Failed to restore dialog hierarchy for ${
|
|
65
|
+
log_1.log.error(`Failed to restore dialog hierarchy for ${mainDialogId}:`, error);
|
|
71
66
|
throw error;
|
|
72
67
|
}
|
|
73
68
|
}
|
|
@@ -22,7 +22,7 @@ export declare class LlmRequestFailedError extends Error {
|
|
|
22
22
|
}
|
|
23
23
|
export declare function maybePrepareDiligenceAutoContinuePrompt(options: {
|
|
24
24
|
dlg: Dialog;
|
|
25
|
-
|
|
25
|
+
isMainDialog: boolean;
|
|
26
26
|
remainingBudget: number;
|
|
27
27
|
diligencePushMax: number;
|
|
28
28
|
suppressDiligencePush?: boolean;
|
|
@@ -122,7 +122,7 @@ async function resolveRtwsDiligenceConfig() {
|
|
|
122
122
|
};
|
|
123
123
|
}
|
|
124
124
|
async function maybePrepareDiligenceAutoContinuePrompt(options) {
|
|
125
|
-
if (!options.
|
|
125
|
+
if (!options.isMainDialog) {
|
|
126
126
|
return { kind: 'disabled', nextRemainingBudget: options.remainingBudget };
|
|
127
127
|
}
|
|
128
128
|
if (options.dlg.disableDiligencePush || options.suppressDiligencePush === true) {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DialogID } from '../../dialog';
|
|
2
|
+
import { DialogPersistence } from '../../persistence';
|
|
3
|
+
export type TakenSideDialogResponse = Awaited<ReturnType<typeof DialogPersistence.takeSideDialogResponses>>[number];
|
|
4
|
+
export declare function takeSideDialogResponses(dialogId: DialogID): Promise<TakenSideDialogResponse[]>;
|
|
5
|
+
export declare function commitTakenSideDialogResponses(dialogId: DialogID): Promise<void>;
|
|
6
|
+
export declare function rollbackTakenSideDialogResponses(dialogId: DialogID): Promise<void>;
|
|
7
|
+
export declare function withSideDialogTxnLock<T>(dialogId: DialogID, fn: () => Promise<T>): Promise<T>;
|
|
8
|
+
export declare function withSideDialogTxnLocks<T>(dialogIds: readonly DialogID[], fn: () => Promise<T>): Promise<T>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
3
|
+
exports.takeSideDialogResponses = takeSideDialogResponses;
|
|
4
|
+
exports.commitTakenSideDialogResponses = commitTakenSideDialogResponses;
|
|
5
|
+
exports.rollbackTakenSideDialogResponses = rollbackTakenSideDialogResponses;
|
|
6
|
+
exports.withSideDialogTxnLock = withSideDialogTxnLock;
|
|
7
|
+
exports.withSideDialogTxnLocks = withSideDialogTxnLocks;
|
|
8
8
|
const persistence_1 = require("../../persistence");
|
|
9
9
|
const async_fifo_mutex_1 = require("../../runtime/async-fifo-mutex");
|
|
10
10
|
const suspensionStateMutexes = new Map();
|
|
@@ -23,25 +23,25 @@ async function withSuspensionStateLock(dialogId, fn) {
|
|
|
23
23
|
release();
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
async function
|
|
26
|
+
async function takeSideDialogResponses(dialogId) {
|
|
27
27
|
return await withSuspensionStateLock(dialogId, async () => {
|
|
28
|
-
return await persistence_1.DialogPersistence.
|
|
28
|
+
return await persistence_1.DialogPersistence.takeSideDialogResponses(dialogId);
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
-
async function
|
|
31
|
+
async function commitTakenSideDialogResponses(dialogId) {
|
|
32
32
|
await withSuspensionStateLock(dialogId, async () => {
|
|
33
|
-
await persistence_1.DialogPersistence.
|
|
33
|
+
await persistence_1.DialogPersistence.commitTakenSideDialogResponses(dialogId);
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
-
async function
|
|
36
|
+
async function rollbackTakenSideDialogResponses(dialogId) {
|
|
37
37
|
await withSuspensionStateLock(dialogId, async () => {
|
|
38
|
-
await persistence_1.DialogPersistence.
|
|
38
|
+
await persistence_1.DialogPersistence.rollbackTakenSideDialogResponses(dialogId);
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
-
async function
|
|
41
|
+
async function withSideDialogTxnLock(dialogId, fn) {
|
|
42
42
|
return await withSuspensionStateLock(dialogId, fn);
|
|
43
43
|
}
|
|
44
|
-
async function
|
|
44
|
+
async function withSideDialogTxnLocks(dialogIds, fn) {
|
|
45
45
|
const ordered = [
|
|
46
46
|
...new Map(dialogIds.map((dialogId) => [dialogId.key(), dialogId])).values(),
|
|
47
47
|
].sort((left, right) => left.key().localeCompare(right.key()));
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { Dialog, DialogID,
|
|
3
|
-
import type { KernelDriverDriveCallOptions,
|
|
4
|
-
export type
|
|
1
|
+
import { type AskerCourseNumber } from '@longrun-ai/kernel/types/storage';
|
|
2
|
+
import { Dialog, DialogID, SideDialog } from '../../dialog';
|
|
3
|
+
import type { KernelDriverDriveCallOptions, KernelDriverSideDialogReplyTarget } from './types';
|
|
4
|
+
export type SideDialogReplyTarget = KernelDriverSideDialogReplyTarget;
|
|
5
5
|
export type ScheduleDriveFn = (dialog: Dialog, options: KernelDriverDriveCallOptions) => void;
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function supplyResponseToAskerDialog(args: {
|
|
7
7
|
parentDialog: Dialog;
|
|
8
|
-
|
|
8
|
+
sideDialogId: DialogID;
|
|
9
9
|
responseText: string;
|
|
10
10
|
callType: 'A' | 'B' | 'C';
|
|
11
11
|
callId?: string;
|
|
@@ -19,15 +19,15 @@ export declare function supplyResponseToSupdialog(args: {
|
|
|
19
19
|
course: number;
|
|
20
20
|
genseq: number;
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
askerCourseOverride?: AskerCourseNumber;
|
|
23
23
|
scheduleDrive: ScheduleDriveFn;
|
|
24
|
-
|
|
24
|
+
sideDialog?: SideDialog;
|
|
25
25
|
}): Promise<void>;
|
|
26
|
-
export declare function
|
|
27
|
-
|
|
26
|
+
export declare function supplySideDialogResponseToSpecificAskerIfPendingV2(args: {
|
|
27
|
+
sideDialog: SideDialog;
|
|
28
28
|
responseText: string;
|
|
29
29
|
responseGenseq: number;
|
|
30
|
-
target:
|
|
30
|
+
target: SideDialogReplyTarget;
|
|
31
31
|
deliveryMode?: 'reply_tool' | 'direct_fallback';
|
|
32
32
|
replyResolution?: {
|
|
33
33
|
callId: string;
|
|
@@ -35,8 +35,8 @@ export declare function supplySubdialogResponseToSpecificCallerIfPendingV2(args:
|
|
|
35
35
|
};
|
|
36
36
|
scheduleDrive: ScheduleDriveFn;
|
|
37
37
|
}): Promise<boolean>;
|
|
38
|
-
export declare function
|
|
39
|
-
|
|
38
|
+
export declare function supplySideDialogResponseToAssignedAskerIfPendingV2(args: {
|
|
39
|
+
sideDialog: SideDialog;
|
|
40
40
|
responseText: string;
|
|
41
41
|
responseGenseq: number;
|
|
42
42
|
deliveryMode?: 'reply_tool' | 'direct_fallback';
|