dominds 1.25.0 → 1.25.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/README.md +4 -3
- package/README.zh.md +4 -3
- package/dist/dialog-display-state.d.ts +3 -3
- package/dist/dialog-display-state.js +12 -8
- package/dist/dialog.d.ts +3 -3
- package/dist/dialog.js +42 -20
- package/dist/docs/design.md +4 -0
- package/dist/docs/design.zh.md +4 -0
- package/dist/docs/dlg-drive-algo.zh.md +5 -0
- package/dist/docs/roadmap.md +2 -0
- package/dist/docs/roadmap.zh.md +2 -0
- package/dist/llm/gen/mock.d.ts +2 -2
- package/dist/llm/gen/mock.js +2 -2
- package/dist/llm/kernel-driver/drive.js +41 -14
- package/dist/llm/kernel-driver/engine.d.ts +1 -1
- package/dist/llm/kernel-driver/idle-reminder-wake.js +1 -1
- package/dist/llm/kernel-driver/sideDialog.d.ts +1 -1
- package/dist/llm/kernel-driver/sideDialog.js +7 -3
- package/dist/llm/kernel-driver/tellask-special.js +1 -6
- package/dist/llm/kernel-driver/types.d.ts +1 -1
- package/dist/minds/system-prompt-parts.js +4 -4
- package/dist/persistence.d.ts +1 -7
- package/dist/persistence.js +186 -149
- package/dist/priming.js +116 -35
- package/dist/runtime/driver-messages.d.ts +1 -1
- package/dist/runtime/driver-messages.js +37 -19
- package/dist/server/api-routes.js +18 -0
- package/dist/server/server-core.d.ts +1 -0
- package/dist/server/server-core.js +11 -0
- package/dist/server/websocket-handler.js +2 -1
- package/dist/shared-reminders.d.ts +11 -3
- package/dist/shared-reminders.js +62 -34
- package/dist/team.js +4 -1
- package/dist/tool.d.ts +1 -1
- package/dist/tool.js +1 -1
- package/dist/tools/app-reminders.js +8 -2
- package/dist/tools/builtins.js +30 -0
- package/dist/tools/ctrl.js +34 -109
- package/dist/tools/fs.d.ts +2 -0
- package/dist/tools/fs.js +281 -2
- package/dist/tools/os.d.ts +11 -0
- package/dist/tools/os.js +26 -15
- package/dist/tools/picture.d.ts +1 -0
- package/dist/tools/picture.js +64 -1
- package/dist/tools/prompts/codex_inspect_and_patch_tools/en/tools.md +5 -0
- package/dist/tools/prompts/codex_inspect_and_patch_tools/zh/tools.md +5 -0
- package/dist/tools/prompts/control/en/errors.md +5 -19
- package/dist/tools/prompts/control/en/index.md +5 -4
- package/dist/tools/prompts/control/en/principles.md +23 -19
- package/dist/tools/prompts/control/en/scenarios.md +17 -11
- package/dist/tools/prompts/control/en/tools.md +4 -6
- package/dist/tools/prompts/control/zh/errors.md +5 -19
- package/dist/tools/prompts/control/zh/index.md +5 -4
- package/dist/tools/prompts/control/zh/principles.md +22 -19
- package/dist/tools/prompts/control/zh/scenarios.md +17 -11
- package/dist/tools/prompts/control/zh/tools.md +4 -6
- package/dist/tools/prompts/fs_read/en/errors.md +6 -0
- package/dist/tools/prompts/fs_read/en/index.md +17 -0
- package/dist/tools/prompts/fs_read/en/principles.md +5 -0
- package/dist/tools/prompts/fs_read/en/scenarios.md +3 -0
- package/dist/tools/prompts/fs_read/en/tools.md +11 -0
- package/dist/tools/prompts/fs_read/zh/errors.md +6 -0
- package/dist/tools/prompts/fs_read/zh/index.md +17 -0
- package/dist/tools/prompts/fs_read/zh/principles.md +5 -0
- package/dist/tools/prompts/fs_read/zh/scenarios.md +3 -0
- package/dist/tools/prompts/fs_read/zh/tools.md +11 -0
- package/dist/tools/prompts/os/en/index.md +1 -1
- package/dist/tools/prompts/os/en/principles.md +1 -1
- package/dist/tools/prompts/os/en/scenarios.md +21 -0
- package/dist/tools/prompts/os/en/tools.md +6 -0
- package/dist/tools/prompts/os/zh/index.md +1 -1
- package/dist/tools/prompts/os/zh/principles.md +1 -1
- package/dist/tools/prompts/os/zh/scenarios.md +21 -0
- package/dist/tools/prompts/os/zh/tools.md +6 -0
- package/dist/tools/prompts/personal_memory/en/index.md +1 -1
- package/dist/tools/prompts/personal_memory/en/principles.md +2 -2
- package/dist/tools/prompts/personal_memory/zh/index.md +1 -1
- package/dist/tools/prompts/personal_memory/zh/principles.md +2 -2
- package/dist/tools/registry.d.ts +6 -0
- package/dist/tools/ripgrep.d.ts +5 -0
- package/dist/tools/ripgrep.js +482 -1
- package/dist/tools/team_mgmt.js +8 -8
- package/dist/tools/txt.d.ts +34 -0
- package/dist/tools/txt.js +221 -1
- package/package.json +3 -3
- package/webapp/dist/assets/{_basePickBy-ZLV93S3E.js → _basePickBy-CbWZ8qnS.js} +3 -3
- package/webapp/dist/assets/_basePickBy-CbWZ8qnS.js.map +1 -0
- package/webapp/dist/assets/{_baseUniq-D0wSOJ06.js → _baseUniq-IY-Vfzx1.js} +2 -2
- package/webapp/dist/assets/_baseUniq-IY-Vfzx1.js.map +1 -0
- package/webapp/dist/assets/{arc-BHclbMTS.js → arc--U2Vks6y.js} +2 -2
- package/webapp/dist/assets/arc--U2Vks6y.js.map +1 -0
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CK99gE_D.js → architectureDiagram-VXUJARFQ-DpryGqjy.js} +8 -26
- package/webapp/dist/assets/architectureDiagram-VXUJARFQ-DpryGqjy.js.map +1 -0
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-fE5MBTEU.js → blockDiagram-VD42YOAC-TTufCfiE.js} +170 -187
- package/webapp/dist/assets/blockDiagram-VD42YOAC-TTufCfiE.js.map +1 -0
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-BSLyPyoU.js → c4Diagram-YG6GDRKO-B4RPsw5H.js} +4 -4
- package/webapp/dist/assets/c4Diagram-YG6GDRKO-B4RPsw5H.js.map +1 -0
- package/webapp/dist/assets/{channel-DSvMpp-a.js → channel-DAtGYJHZ.js} +2 -2
- package/webapp/dist/assets/channel-DAtGYJHZ.js.map +1 -0
- package/webapp/dist/assets/{chunk-4BX2VUAB-OXEX170k.js → chunk-4BX2VUAB-JtO__vAF.js} +2 -2
- package/webapp/dist/assets/chunk-4BX2VUAB-JtO__vAF.js.map +1 -0
- package/webapp/dist/assets/{chunk-55IACEB6-BFQ_spQD.js → chunk-55IACEB6-JMRC8yG1.js} +2 -2
- package/webapp/dist/assets/chunk-55IACEB6-JMRC8yG1.js.map +1 -0
- package/webapp/dist/assets/{chunk-WL4C6EOR-PtH-blkK.js → chunk-B4BG7PRW-BDIpf8Iz.js} +121 -171
- package/webapp/dist/assets/chunk-B4BG7PRW-BDIpf8Iz.js.map +1 -0
- package/webapp/dist/assets/{chunk-NQ4KR5QH-B_ZhWMXR.js → chunk-DI55MBZ5-j9B4rifK.js} +7 -9
- package/webapp/dist/assets/chunk-DI55MBZ5-j9B4rifK.js.map +1 -0
- package/webapp/dist/assets/{chunk-FMBD7UC4-CbQ2BBPs.js → chunk-FMBD7UC4-DFXKLjHC.js} +2 -2
- package/webapp/dist/assets/chunk-FMBD7UC4-DFXKLjHC.js.map +1 -0
- package/webapp/dist/assets/{chunk-KX2RTZJC-BMd-daMY.js → chunk-QN33PNHL-BKzkeJ-b.js} +2 -2
- package/webapp/dist/assets/chunk-QN33PNHL-BKzkeJ-b.js.map +1 -0
- package/webapp/dist/assets/{chunk-QZHKN3VN-Cbf92xIw.js → chunk-QZHKN3VN-DiZd3UNl.js} +2 -2
- package/webapp/dist/assets/chunk-QZHKN3VN-DiZd3UNl.js.map +1 -0
- package/webapp/dist/assets/{chunk-JSJVCQXG-C4P1mjCL.js → chunk-TZMSLE5B-BaE4C244.js} +6 -14
- package/webapp/dist/assets/chunk-TZMSLE5B-BaE4C244.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-Dc3ncaD0.js → classDiagram-2ON5EDUG-CNF8ZohD.js} +6 -7
- package/webapp/dist/assets/classDiagram-2ON5EDUG-CNF8ZohD.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-Dc3ncaD0.js → classDiagram-v2-WZHVMYZB-CNF8ZohD.js} +6 -7
- package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-CNF8ZohD.js.map +1 -0
- package/webapp/dist/assets/{clone-E9Ad85BC.js → clone-Nq0Ko0Gv.js} +2 -2
- package/webapp/dist/assets/clone-Nq0Ko0Gv.js.map +1 -0
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-B-nj0o74.js → cose-bilkent-S5V4N54A-uHPLSeKv.js} +2 -2
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-uHPLSeKv.js.map +1 -0
- package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
- package/webapp/dist/assets/{dagre-KLK3FWXG-CyJYNIbm.js → dagre-6UL2VRFP-C1awWpU3.js} +7 -7
- package/webapp/dist/assets/dagre-6UL2VRFP-C1awWpU3.js.map +1 -0
- package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
- package/webapp/dist/assets/{diagram-E7M64L7V-C8eweQ7b.js → diagram-PSM6KHXK-Bf69p76M.js} +10 -10
- package/webapp/dist/assets/diagram-PSM6KHXK-Bf69p76M.js.map +1 -0
- package/webapp/dist/assets/{diagram-IFDJBPK2-DMdygRl0.js → diagram-QEK2KX5R-Bvlbx8Jp.js} +8 -9
- package/webapp/dist/assets/diagram-QEK2KX5R-Bvlbx8Jp.js.map +1 -0
- package/webapp/dist/assets/{diagram-P4PSJMXO-BQDZHb0a.js → diagram-S2PKOQOG-CGjGalBu.js} +8 -8
- package/webapp/dist/assets/diagram-S2PKOQOG-CGjGalBu.js.map +1 -0
- package/webapp/dist/assets/{erDiagram-INFDFZHY-C1HaXN6E.js → erDiagram-Q2GNP2WA-Ds3qhwkG.js} +75 -96
- package/webapp/dist/assets/erDiagram-Q2GNP2WA-Ds3qhwkG.js.map +1 -0
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-24nNqQyo.js → flowDiagram-NV44I4VS-B1wDG_l5.js} +81 -98
- package/webapp/dist/assets/flowDiagram-NV44I4VS-B1wDG_l5.js.map +1 -0
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-BWPOFaLV.js → ganttDiagram-JELNMOA3-BwuYt2bO.js} +3 -28
- package/webapp/dist/assets/ganttDiagram-JELNMOA3-BwuYt2bO.js.map +1 -0
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-D7_L-p_Y.js → gitGraphDiagram-V2S2FVAM-B2Tw773z.js} +46 -38
- package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-B2Tw773z.js.map +1 -0
- package/webapp/dist/assets/graph-CS_H7jBi.js +425 -0
- package/webapp/dist/assets/graph-CS_H7jBi.js.map +1 -0
- package/webapp/dist/assets/{index-CDCDAfqP.js → index-arD81Nnh.js} +1086 -1044
- package/webapp/dist/assets/{index-CDCDAfqP.js.map → index-arD81Nnh.js.map} +1 -1
- package/webapp/dist/assets/{index-BQoNJEGT.css → index-yycTJNYb.css} +1 -1
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-CvaBM5j6.js → infoDiagram-HS3SLOUP-C9_JKYhm.js} +7 -7
- package/webapp/dist/assets/infoDiagram-HS3SLOUP-C9_JKYhm.js.map +1 -0
- package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-TQR6_teO.js → journeyDiagram-XKPGCS4Q-BhZggYOL.js} +5 -5
- package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-BhZggYOL.js.map +1 -0
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-B-BOuC-U.js → kanban-definition-3W4ZIXB7-B-R2Xm4Y.js} +3 -5
- package/webapp/dist/assets/kanban-definition-3W4ZIXB7-B-R2Xm4Y.js.map +1 -0
- package/webapp/dist/assets/{layout-B8yqIqbx.js → layout-BzMatxDa.js} +5 -5
- package/webapp/dist/assets/layout-BzMatxDa.js.map +1 -0
- package/webapp/dist/assets/{linear-CoLfiZKK.js → linear-BuuJkw_U.js} +2 -2
- package/webapp/dist/assets/linear-BuuJkw_U.js.map +1 -0
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-P70BMIHI.js → mindmap-definition-VGOIOE7T-BR7oDKBR.js} +5 -7
- package/webapp/dist/assets/mindmap-definition-VGOIOE7T-BR7oDKBR.js.map +1 -0
- package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-DsS_4dTB.js → pieDiagram-ADFJNKIX--QWeT2vZ.js} +8 -8
- package/webapp/dist/assets/pieDiagram-ADFJNKIX--QWeT2vZ.js.map +1 -0
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-DoM9PEq-.js → quadrantDiagram-AYHSOK5B-BpqtmN3r.js} +3 -3
- package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-BpqtmN3r.js.map +1 -0
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-Bn3lYMMI.js → requirementDiagram-UZGBJVZJ-CIXjIi4F.js} +6 -16
- package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-CIXjIi4F.js.map +1 -0
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-97kCegRT.js → sankeyDiagram-TZEHDZUN-DJIt7SRz.js} +2 -2
- package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-DJIt7SRz.js.map +1 -0
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DXqjQjf6.js → sequenceDiagram-WL72ISMW-BpDK1ROT.js} +201 -601
- package/webapp/dist/assets/sequenceDiagram-WL72ISMW-BpDK1ROT.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-DQcTPKWP.js → stateDiagram-FKZM4ZOC-BoKGfmHf.js} +9 -9
- package/webapp/dist/assets/stateDiagram-FKZM4ZOC-BoKGfmHf.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-DHmxRVJn.js → stateDiagram-v2-4FDKWEC3--haXC2JK.js} +5 -5
- package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3--haXC2JK.js.map +1 -0
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-BlovQQ4B.js → timeline-definition-IT6M3QCI-BmSg3Hjf.js} +3 -3
- package/webapp/dist/assets/timeline-definition-IT6M3QCI-BmSg3Hjf.js.map +1 -0
- package/webapp/dist/assets/{treemap-KZPCXAKY-CGu93c9S.js → treemap-GDKQZRPO-D9OuyDVA.js} +24 -37
- package/webapp/dist/assets/treemap-GDKQZRPO-D9OuyDVA.js.map +1 -0
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-BKa1DxVq.js → xychartDiagram-PRI3JC2R-CVqSvO_S.js} +4 -4
- package/webapp/dist/assets/xychartDiagram-PRI3JC2R-CVqSvO_S.js.map +1 -0
- package/webapp/dist/index.html +2 -2
- package/webapp/dist/assets/_basePickBy-ZLV93S3E.js.map +0 -1
- package/webapp/dist/assets/_baseUniq-D0wSOJ06.js.map +0 -1
- package/webapp/dist/assets/arc-BHclbMTS.js.map +0 -1
- package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-CK99gE_D.js.map +0 -1
- package/webapp/dist/assets/blockDiagram-WCTKOSBZ-fE5MBTEU.js.map +0 -1
- package/webapp/dist/assets/c4Diagram-IC4MRINW-BSLyPyoU.js.map +0 -1
- package/webapp/dist/assets/channel-DSvMpp-a.js.map +0 -1
- package/webapp/dist/assets/chunk-4BX2VUAB-OXEX170k.js.map +0 -1
- package/webapp/dist/assets/chunk-55IACEB6-BFQ_spQD.js.map +0 -1
- package/webapp/dist/assets/chunk-FMBD7UC4-CbQ2BBPs.js.map +0 -1
- package/webapp/dist/assets/chunk-JSJVCQXG-C4P1mjCL.js.map +0 -1
- package/webapp/dist/assets/chunk-KX2RTZJC-BMd-daMY.js.map +0 -1
- package/webapp/dist/assets/chunk-NQ4KR5QH-B_ZhWMXR.js.map +0 -1
- package/webapp/dist/assets/chunk-QZHKN3VN-Cbf92xIw.js.map +0 -1
- package/webapp/dist/assets/chunk-WL4C6EOR-PtH-blkK.js.map +0 -1
- package/webapp/dist/assets/classDiagram-VBA2DB6C-Dc3ncaD0.js.map +0 -1
- package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-Dc3ncaD0.js.map +0 -1
- package/webapp/dist/assets/clone-E9Ad85BC.js.map +0 -1
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-B-nj0o74.js.map +0 -1
- package/webapp/dist/assets/dagre-KLK3FWXG-CyJYNIbm.js.map +0 -1
- package/webapp/dist/assets/diagram-E7M64L7V-C8eweQ7b.js.map +0 -1
- package/webapp/dist/assets/diagram-IFDJBPK2-DMdygRl0.js.map +0 -1
- package/webapp/dist/assets/diagram-P4PSJMXO-BQDZHb0a.js.map +0 -1
- package/webapp/dist/assets/erDiagram-INFDFZHY-C1HaXN6E.js.map +0 -1
- package/webapp/dist/assets/flowDiagram-PKNHOUZH-24nNqQyo.js.map +0 -1
- package/webapp/dist/assets/ganttDiagram-A5KZAMGK-BWPOFaLV.js.map +0 -1
- package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-D7_L-p_Y.js.map +0 -1
- package/webapp/dist/assets/graph-OHu4dL2n.js +0 -782
- package/webapp/dist/assets/graph-OHu4dL2n.js.map +0 -1
- package/webapp/dist/assets/infoDiagram-LFFYTUFH-CvaBM5j6.js.map +0 -1
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DB1l2Uue.js +0 -966
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DB1l2Uue.js.map +0 -1
- package/webapp/dist/assets/journeyDiagram-4ABVD52K-TQR6_teO.js.map +0 -1
- package/webapp/dist/assets/kanban-definition-K7BYSVSG-B-BOuC-U.js.map +0 -1
- package/webapp/dist/assets/layout-B8yqIqbx.js.map +0 -1
- package/webapp/dist/assets/linear-CoLfiZKK.js.map +0 -1
- package/webapp/dist/assets/mindmap-definition-YRQLILUH-P70BMIHI.js.map +0 -1
- package/webapp/dist/assets/pieDiagram-SKSYHLDU-DsS_4dTB.js.map +0 -1
- package/webapp/dist/assets/quadrantDiagram-337W2JSQ-DoM9PEq-.js.map +0 -1
- package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-Bn3lYMMI.js.map +0 -1
- package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-97kCegRT.js.map +0 -1
- package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-DXqjQjf6.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-RAJIS63D-DQcTPKWP.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-DHmxRVJn.js.map +0 -1
- package/webapp/dist/assets/timeline-definition-YZTLITO2-BlovQQ4B.js.map +0 -1
- package/webapp/dist/assets/treemap-KZPCXAKY-CGu93c9S.js.map +0 -1
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-Do1jprrz.js +0 -2487
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-Do1jprrz.js.map +0 -1
- package/webapp/dist/assets/xychartDiagram-JWTSCODW-BKa1DxVq.js.map +0 -1
package/dist/persistence.d.ts
CHANGED
|
@@ -88,7 +88,6 @@ export declare class DiskFileDialogStore extends DialogStore {
|
|
|
88
88
|
* to ensure proper event ordering on the frontend.
|
|
89
89
|
*/
|
|
90
90
|
notifyGeneratingStart(dialog: Dialog, msgId?: string): Promise<readonly DialogNextStepTrigger[]>;
|
|
91
|
-
private getResultArrivalBatchIdsFromAcceptedTriggers;
|
|
92
91
|
/**
|
|
93
92
|
* Notify end of LLM generation for frontend bubble management
|
|
94
93
|
*/
|
|
@@ -516,7 +515,6 @@ export declare class DialogPersistence {
|
|
|
516
515
|
* Load active callee dispatches projected from active-callees.json.
|
|
517
516
|
*/
|
|
518
517
|
static loadActiveCalleeDispatches(mainDialogId: DialogID, status?: DialogStatusKind): Promise<ActiveCalleeDispatchRecord[]>;
|
|
519
|
-
private static isActiveCalleeDispatchRecord;
|
|
520
518
|
private static activeCalleeDispatchCalleeDialogId;
|
|
521
519
|
private static buildActiveCalleeRecordFromDispatch;
|
|
522
520
|
private static isActiveCalleeCompletion;
|
|
@@ -530,7 +528,7 @@ export declare class DialogPersistence {
|
|
|
530
528
|
static appendActiveCalleeDispatch(mainDialogId: DialogID, record: ActiveCalleeDispatchRecord, rootAnchor?: RootGenerationAnchor, status?: DialogStatusKind): Promise<void>;
|
|
531
529
|
static saveActiveCalleeDispatches(mainDialogId: DialogID, dispatches: ActiveCalleeDispatchRecord[], rootAnchor?: RootGenerationAnchor, status?: DialogStatusKind): Promise<void>;
|
|
532
530
|
static mutateActiveCalleeDispatches(mainDialogId: DialogID, mutator: (previous: ActiveCalleeDispatchRecord[]) => ActiveCalleeDispatchRecord[], rootAnchor?: RootGenerationAnchor, status?: DialogStatusKind): Promise<ActiveCalleeDispatchRecord[]>;
|
|
533
|
-
static removeActiveCalleeDispatch(mainDialogId: DialogID, calleeDialogId: string, rootAnchor?: RootGenerationAnchor, status?: DialogStatusKind): Promise<void>;
|
|
531
|
+
static removeActiveCalleeDispatch(mainDialogId: DialogID, calleeDialogId: string, callId: string, rootAnchor?: RootGenerationAnchor, status?: DialogStatusKind): Promise<void>;
|
|
534
532
|
static clearActiveCalleeDispatches(mainDialogId: DialogID, rootAnchor?: RootGenerationAnchor, status?: DialogStatusKind): Promise<void>;
|
|
535
533
|
private static loadActiveCalleesFromDisk;
|
|
536
534
|
static loadActiveCallees(dialogId: DialogID, status?: DialogStatusKind): Promise<ActiveCalleesFile>;
|
|
@@ -561,10 +559,6 @@ export declare class DialogPersistence {
|
|
|
561
559
|
deliveryMode: 'reply_tool' | 'direct_fallback';
|
|
562
560
|
directFallbackSource?: 'saying' | 'thinking_only';
|
|
563
561
|
}>, status?: DialogStatusKind): Promise<ActiveCalleeResolveOutcome>;
|
|
564
|
-
static removeActiveCallee(dialogId: DialogID, args: Readonly<{
|
|
565
|
-
batchId: string;
|
|
566
|
-
callId: string;
|
|
567
|
-
}>, status?: DialogStatusKind): Promise<void>;
|
|
568
562
|
static removeActiveCalleeBatch(dialogId: DialogID, batchId: string, status?: DialogStatusKind): Promise<void>;
|
|
569
563
|
/**
|
|
570
564
|
* Get the path for storing sideDialog responses (supports both main dialog and sideDialog tellaskers).
|
package/dist/persistence.js
CHANGED
|
@@ -180,6 +180,9 @@ function emitInvariantWarning(message, details) {
|
|
|
180
180
|
...details,
|
|
181
181
|
diagnosticJson,
|
|
182
182
|
});
|
|
183
|
+
if (process.env.DOMINDS_FULL_INVARIANT_DIAGNOSTICS !== '1') {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
183
186
|
if (diagnosticJson !== null) {
|
|
184
187
|
const parts = chunkInvariantDiagnosticJson(diagnosticJson, 1600);
|
|
185
188
|
for (const [index, part] of parts.entries()) {
|
|
@@ -264,7 +267,7 @@ async function normalizeSideDialogIdleWhileReplyObligationPending(dialogId, stat
|
|
|
264
267
|
return latest;
|
|
265
268
|
}
|
|
266
269
|
const top = askerStackState?.askerStack[askerStackState.askerStack.length - 1];
|
|
267
|
-
|
|
270
|
+
log_1.log.debug('Dialog latest projection invariant warning: sideDialog awaiting Q4H attempted to enter idle displayState; healing from persistence facts', undefined, {
|
|
268
271
|
trigger: context.trigger,
|
|
269
272
|
mutationKind: context.mutationKind,
|
|
270
273
|
latestSource: context.latestSource,
|
|
@@ -2270,7 +2273,7 @@ function isReminderPriority(value) {
|
|
|
2270
2273
|
return value === 'high' || value === 'medium' || value === 'low';
|
|
2271
2274
|
}
|
|
2272
2275
|
function isReminderScope(value) {
|
|
2273
|
-
return value === 'dialog' || value === '
|
|
2276
|
+
return value === 'dialog' || value === 'task' || value === 'agent' || value === 'runtime';
|
|
2274
2277
|
}
|
|
2275
2278
|
function isReminderRenderMode(value) {
|
|
2276
2279
|
return value === 'plain' || value === 'markdown';
|
|
@@ -2791,11 +2794,34 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2791
2794
|
(0, evt_registry_1.postDialogEvent)(dialog, genStartEvt);
|
|
2792
2795
|
// Update generating flag in latest.yaml
|
|
2793
2796
|
await DialogPersistence.mutateDialogLatest(this.dialogId, (previous) => {
|
|
2794
|
-
|
|
2797
|
+
const triggerSelection = filterNextStepTriggersForGenerationStart({
|
|
2798
|
+
dialogId: this.dialogId,
|
|
2799
|
+
currentCourse: (0, storage_1.toDialogCourseNumber)(course),
|
|
2800
|
+
msgId,
|
|
2801
|
+
triggers: previous.nextStep.triggers,
|
|
2802
|
+
});
|
|
2803
|
+
acceptedTriggers = triggerSelection.acceptedTriggers;
|
|
2804
|
+
if (triggerSelection.supersededTriggers.length > 0) {
|
|
2805
|
+
log_1.log.debug('Superseded stale next-step triggers while starting queued runtime prompt generation', undefined, {
|
|
2806
|
+
dialogId: this.dialogId.valueOf(),
|
|
2807
|
+
rootId: this.dialogId.rootId,
|
|
2808
|
+
selfId: this.dialogId.selfId,
|
|
2809
|
+
course,
|
|
2810
|
+
genseq,
|
|
2811
|
+
msgId: msgId ?? null,
|
|
2812
|
+
acceptedTriggerIds: acceptedTriggers.map((trigger) => trigger.triggerId),
|
|
2813
|
+
supersededTriggerIds: triggerSelection.supersededTriggers.map((trigger) => trigger.triggerId),
|
|
2814
|
+
reason: 'queued_runtime_prompt_new_course_takes_precedence',
|
|
2815
|
+
});
|
|
2816
|
+
}
|
|
2795
2817
|
const acceptedTriggerIds = acceptedTriggers.map((trigger) => trigger.triggerId);
|
|
2796
|
-
const
|
|
2818
|
+
const consumedTriggerIds = new Set([
|
|
2819
|
+
...acceptedTriggerIds,
|
|
2820
|
+
...triggerSelection.supersededTriggers.map((trigger) => trigger.triggerId),
|
|
2821
|
+
]);
|
|
2822
|
+
const nextStep = consumedTriggerIds.size === 0
|
|
2797
2823
|
? previous.nextStep
|
|
2798
|
-
: removeNextStepTrigger(previous.nextStep, (trigger) =>
|
|
2824
|
+
: removeNextStepTrigger(previous.nextStep, (trigger) => consumedTriggerIds.has(trigger.triggerId));
|
|
2799
2825
|
return {
|
|
2800
2826
|
kind: 'patch',
|
|
2801
2827
|
patch: {
|
|
@@ -2828,16 +2854,6 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2828
2854
|
}
|
|
2829
2855
|
return acceptedTriggers;
|
|
2830
2856
|
}
|
|
2831
|
-
getResultArrivalBatchIdsFromAcceptedTriggers(triggerIds) {
|
|
2832
|
-
const batchIds = [];
|
|
2833
|
-
for (const triggerId of triggerIds) {
|
|
2834
|
-
const prefix = 'result-arrival:';
|
|
2835
|
-
if (triggerId.startsWith(prefix) && triggerId.length > prefix.length) {
|
|
2836
|
-
batchIds.push(triggerId.slice(prefix.length));
|
|
2837
|
-
}
|
|
2838
|
-
}
|
|
2839
|
-
return batchIds;
|
|
2840
|
-
}
|
|
2841
2857
|
/**
|
|
2842
2858
|
* Notify end of LLM generation for frontend bubble management
|
|
2843
2859
|
*/
|
|
@@ -2848,7 +2864,6 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2848
2864
|
throw new Error('Missing active genseq for notifyGeneratingFinish');
|
|
2849
2865
|
}
|
|
2850
2866
|
const finishedAt = (0, time_1.formatUnifiedTimestamp)(new Date());
|
|
2851
|
-
let acceptedTriggerIds = [];
|
|
2852
2867
|
const ev = {
|
|
2853
2868
|
ts: finishedAt,
|
|
2854
2869
|
type: 'gen_finish_record',
|
|
@@ -2876,10 +2891,6 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2876
2891
|
}
|
|
2877
2892
|
// Update generating flag in latest.yaml
|
|
2878
2893
|
await DialogPersistence.mutateDialogLatest(this.dialogId, (previous) => {
|
|
2879
|
-
acceptedTriggerIds =
|
|
2880
|
-
previous.generationRunState?.kind === 'open'
|
|
2881
|
-
? previous.generationRunState.acceptedTriggerIds
|
|
2882
|
-
: [];
|
|
2883
2894
|
return {
|
|
2884
2895
|
kind: 'patch',
|
|
2885
2896
|
patch: {
|
|
@@ -2893,9 +2904,6 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2893
2904
|
},
|
|
2894
2905
|
};
|
|
2895
2906
|
});
|
|
2896
|
-
for (const batchId of this.getResultArrivalBatchIdsFromAcceptedTriggers(acceptedTriggerIds)) {
|
|
2897
|
-
await DialogPersistence.removeActiveCalleeBatch(this.dialogId, batchId);
|
|
2898
|
-
}
|
|
2899
2907
|
}
|
|
2900
2908
|
async sayingStart(dialog) {
|
|
2901
2909
|
const course = dialog.activeGenCourseOrUndefined ?? dialog.currentCourse;
|
|
@@ -3753,7 +3761,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
3753
3761
|
async loadSideDialogRegistry(mainDialog, status) {
|
|
3754
3762
|
const entries = await DialogPersistence.loadSideDialogRegistry(mainDialog.id, status);
|
|
3755
3763
|
const shouldPruneDead = status === 'running';
|
|
3756
|
-
let
|
|
3764
|
+
let prunedRegistryEntries = false;
|
|
3757
3765
|
const restoringSideDialogs = new Map();
|
|
3758
3766
|
const ensureSideDialogLoaded = async (sideDialogId, ancestry = new Set()) => {
|
|
3759
3767
|
if (ancestry.has(sideDialogId.selfId)) {
|
|
@@ -3852,39 +3860,64 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
3852
3860
|
for (const entry of entries) {
|
|
3853
3861
|
if (!entry.sessionSlug)
|
|
3854
3862
|
continue;
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
|
|
3858
|
-
|
|
3859
|
-
|
|
3860
|
-
|
|
3861
|
-
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
3863
|
+
try {
|
|
3864
|
+
if (shouldPruneDead) {
|
|
3865
|
+
const latest = await DialogPersistence.loadDialogLatest(entry.sideDialogId, status);
|
|
3866
|
+
const executionMarker = latest?.executionMarker;
|
|
3867
|
+
if (executionMarker && executionMarker.kind === 'dead') {
|
|
3868
|
+
prunedRegistryEntries = true;
|
|
3869
|
+
mainDialog.unregisterSideDialog(entry.agentId, entry.sessionSlug);
|
|
3870
|
+
log_1.log.debug('Skip dead sideDialog while loading Type B registry', undefined, {
|
|
3871
|
+
rootId: mainDialog.id.rootId,
|
|
3872
|
+
sideDialogId: entry.sideDialogId.selfId,
|
|
3873
|
+
agentId: entry.agentId,
|
|
3874
|
+
sessionSlug: entry.sessionSlug,
|
|
3875
|
+
});
|
|
3876
|
+
continue;
|
|
3877
|
+
}
|
|
3868
3878
|
}
|
|
3879
|
+
const sideDialog = await ensureSideDialogLoaded(entry.sideDialogId);
|
|
3880
|
+
if (!sideDialog.sessionSlug) {
|
|
3881
|
+
throw new Error(`SideDialog registry invariant violation: missing sessionSlug on loaded sideDialog ` +
|
|
3882
|
+
`(rootId=${mainDialog.id.rootId}, selfId=${entry.sideDialogId.selfId}, expectedSessionSlug=${entry.sessionSlug})`);
|
|
3883
|
+
}
|
|
3884
|
+
if (sideDialog.sessionSlug !== entry.sessionSlug) {
|
|
3885
|
+
throw new Error(`SideDialog registry invariant violation: sessionSlug mismatch ` +
|
|
3886
|
+
`(rootId=${mainDialog.id.rootId}, selfId=${entry.sideDialogId.selfId}, ` +
|
|
3887
|
+
`expected=${entry.sessionSlug}, actual=${sideDialog.sessionSlug})`);
|
|
3888
|
+
}
|
|
3889
|
+
if (sideDialog.agentId !== entry.agentId) {
|
|
3890
|
+
throw new Error(`SideDialog registry invariant violation: agentId mismatch ` +
|
|
3891
|
+
`(rootId=${mainDialog.id.rootId}, selfId=${entry.sideDialogId.selfId}, ` +
|
|
3892
|
+
`expected=${entry.agentId}, actual=${sideDialog.agentId})`);
|
|
3893
|
+
}
|
|
3894
|
+
mainDialog.registerSideDialog(sideDialog);
|
|
3869
3895
|
}
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
|
|
3882
|
-
|
|
3883
|
-
|
|
3896
|
+
catch (error) {
|
|
3897
|
+
if ((0, persistence_errors_1.findDomindsPersistenceFileError)(error)) {
|
|
3898
|
+
throw error;
|
|
3899
|
+
}
|
|
3900
|
+
prunedRegistryEntries = true;
|
|
3901
|
+
const loadedDialog = mainDialog.lookupDialog(entry.sideDialogId.selfId);
|
|
3902
|
+
if (loadedDialog instanceof dialog_1.SideDialog &&
|
|
3903
|
+
loadedDialog.sessionSlug &&
|
|
3904
|
+
(loadedDialog.agentId !== entry.agentId || loadedDialog.sessionSlug !== entry.sessionSlug)) {
|
|
3905
|
+
mainDialog.unregisterSideDialog(loadedDialog.agentId, loadedDialog.sessionSlug);
|
|
3906
|
+
}
|
|
3907
|
+
mainDialog.unregisterDialog(entry.sideDialogId.selfId);
|
|
3908
|
+
if (entry.sessionSlug) {
|
|
3909
|
+
mainDialog.unregisterSideDialog(entry.agentId, entry.sessionSlug);
|
|
3910
|
+
}
|
|
3911
|
+
log_1.log.error('Pruned invalid sideDialog registry entry while loading Type B registry', error, {
|
|
3912
|
+
rootId: mainDialog.id.rootId,
|
|
3913
|
+
sideDialogId: entry.sideDialogId.selfId,
|
|
3914
|
+
agentId: entry.agentId,
|
|
3915
|
+
sessionSlug: entry.sessionSlug,
|
|
3916
|
+
status,
|
|
3917
|
+
});
|
|
3884
3918
|
}
|
|
3885
|
-
mainDialog.registerSideDialog(sideDialog);
|
|
3886
3919
|
}
|
|
3887
|
-
if (
|
|
3920
|
+
if (prunedRegistryEntries) {
|
|
3888
3921
|
await mainDialog.saveSideDialogRegistry();
|
|
3889
3922
|
}
|
|
3890
3923
|
}
|
|
@@ -4792,6 +4825,47 @@ function sortNextStepTriggersForConsumption(triggers) {
|
|
|
4792
4825
|
return left.triggerId.localeCompare(right.triggerId);
|
|
4793
4826
|
});
|
|
4794
4827
|
}
|
|
4828
|
+
function filterNextStepTriggersForGenerationStart(args) {
|
|
4829
|
+
const orderedTriggers = sortNextStepTriggersForConsumption(args.triggers);
|
|
4830
|
+
if (typeof args.msgId !== 'string' || args.msgId.trim() === '') {
|
|
4831
|
+
return { acceptedTriggers: orderedTriggers, supersededTriggers: [] };
|
|
4832
|
+
}
|
|
4833
|
+
const promptTrigger = orderedTriggers.find((trigger) => trigger.kind === 'queued_prompt' &&
|
|
4834
|
+
trigger.promptId === args.msgId &&
|
|
4835
|
+
trigger.course === args.currentCourse);
|
|
4836
|
+
if (promptTrigger === undefined) {
|
|
4837
|
+
return { acceptedTriggers: orderedTriggers, supersededTriggers: [] };
|
|
4838
|
+
}
|
|
4839
|
+
const acceptedTriggers = [];
|
|
4840
|
+
const supersededTriggers = [];
|
|
4841
|
+
for (const trigger of orderedTriggers) {
|
|
4842
|
+
const belongsToPromptCourse = (() => {
|
|
4843
|
+
switch (trigger.kind) {
|
|
4844
|
+
case 'queued_prompt':
|
|
4845
|
+
case 'user_input':
|
|
4846
|
+
case 'open_generation_recovery':
|
|
4847
|
+
return trigger.course === args.currentCourse;
|
|
4848
|
+
case 'followup':
|
|
4849
|
+
return trigger.sourceGeneration.course === args.currentCourse;
|
|
4850
|
+
case 'mainline_diligence':
|
|
4851
|
+
case 'result_arrival':
|
|
4852
|
+
case 'reply_delivery_recovery':
|
|
4853
|
+
return true;
|
|
4854
|
+
default: {
|
|
4855
|
+
const _exhaustive = trigger;
|
|
4856
|
+
throw new Error(`next-step trigger filtering invariant violation: unsupported trigger kind for dialog=${args.dialogId.valueOf()}`);
|
|
4857
|
+
}
|
|
4858
|
+
}
|
|
4859
|
+
})();
|
|
4860
|
+
if (belongsToPromptCourse) {
|
|
4861
|
+
acceptedTriggers.push(trigger);
|
|
4862
|
+
}
|
|
4863
|
+
else {
|
|
4864
|
+
supersededTriggers.push(trigger);
|
|
4865
|
+
}
|
|
4866
|
+
}
|
|
4867
|
+
return { acceptedTriggers, supersededTriggers };
|
|
4868
|
+
}
|
|
4795
4869
|
function buildReplyDeliveryId(dialogId, replyCallId) {
|
|
4796
4870
|
return `reply-delivery:${dialogId.rootId}:${dialogId.selfId}:${replyCallId}`;
|
|
4797
4871
|
}
|
|
@@ -6425,66 +6499,6 @@ class DialogPersistence {
|
|
|
6425
6499
|
throw new Error('unreachable after loadActiveCalleeDispatches persistence rethrow');
|
|
6426
6500
|
}
|
|
6427
6501
|
}
|
|
6428
|
-
static isActiveCalleeDispatchRecord(value) {
|
|
6429
|
-
if (!isRecord(value))
|
|
6430
|
-
return false;
|
|
6431
|
-
if (typeof value.calleeDialogId !== 'string')
|
|
6432
|
-
return false;
|
|
6433
|
-
if (value.calleeDialogId.trim() === '')
|
|
6434
|
-
return false;
|
|
6435
|
-
if (typeof value.createdAt !== 'string')
|
|
6436
|
-
return false;
|
|
6437
|
-
if (typeof value.batchId !== 'string')
|
|
6438
|
-
return false;
|
|
6439
|
-
if (value.batchId.trim() === '')
|
|
6440
|
-
return false;
|
|
6441
|
-
if (value.callName !== 'tellask' &&
|
|
6442
|
-
value.callName !== 'tellaskSessionless' &&
|
|
6443
|
-
value.callName !== 'freshBootsReasoning') {
|
|
6444
|
-
return false;
|
|
6445
|
-
}
|
|
6446
|
-
switch (value.callName) {
|
|
6447
|
-
case 'tellask':
|
|
6448
|
-
case 'tellaskSessionless':
|
|
6449
|
-
if (!Array.isArray(value.mentionList))
|
|
6450
|
-
return false;
|
|
6451
|
-
if (!value.mentionList.every((item) => typeof item === 'string'))
|
|
6452
|
-
return false;
|
|
6453
|
-
if (value.mentionList.length < 1)
|
|
6454
|
-
return false;
|
|
6455
|
-
break;
|
|
6456
|
-
case 'freshBootsReasoning':
|
|
6457
|
-
if (value.mentionList !== undefined)
|
|
6458
|
-
return false;
|
|
6459
|
-
break;
|
|
6460
|
-
}
|
|
6461
|
-
if (typeof value.tellaskContent !== 'string')
|
|
6462
|
-
return false;
|
|
6463
|
-
if (typeof value.targetAgentId !== 'string')
|
|
6464
|
-
return false;
|
|
6465
|
-
if (typeof value.callId !== 'string')
|
|
6466
|
-
return false;
|
|
6467
|
-
if (typeof value.callSiteCourse !== 'number')
|
|
6468
|
-
return false;
|
|
6469
|
-
if (!Number.isInteger(value.callSiteCourse))
|
|
6470
|
-
return false;
|
|
6471
|
-
if (value.callSiteCourse <= 0)
|
|
6472
|
-
return false;
|
|
6473
|
-
if (typeof value.callSiteGenseq !== 'number')
|
|
6474
|
-
return false;
|
|
6475
|
-
if (!Number.isInteger(value.callSiteGenseq))
|
|
6476
|
-
return false;
|
|
6477
|
-
if (value.callSiteGenseq <= 0)
|
|
6478
|
-
return false;
|
|
6479
|
-
if (value.callType !== 'A' && value.callType !== 'B' && value.callType !== 'C')
|
|
6480
|
-
return false;
|
|
6481
|
-
if ('sessionSlug' in value) {
|
|
6482
|
-
const sessionSlug = value.sessionSlug;
|
|
6483
|
-
if (sessionSlug !== undefined && typeof sessionSlug !== 'string')
|
|
6484
|
-
return false;
|
|
6485
|
-
}
|
|
6486
|
-
return true;
|
|
6487
|
-
}
|
|
6488
6502
|
static activeCalleeDispatchCalleeDialogId(record) {
|
|
6489
6503
|
const calleeDialogId = record.calleeDialogId;
|
|
6490
6504
|
if (calleeDialogId.trim() === '') {
|
|
@@ -6617,10 +6631,16 @@ class DialogPersistence {
|
|
|
6617
6631
|
if (!value.batches.every((batch) => this.isActiveCalleeBatch(batch)))
|
|
6618
6632
|
return false;
|
|
6619
6633
|
const seenBatchIds = new Set();
|
|
6634
|
+
const seenCallIds = new Set();
|
|
6620
6635
|
for (const batch of value.batches) {
|
|
6621
6636
|
if (seenBatchIds.has(batch.batchId))
|
|
6622
6637
|
return false;
|
|
6623
6638
|
seenBatchIds.add(batch.batchId);
|
|
6639
|
+
for (const callee of batch.callees) {
|
|
6640
|
+
if (seenCallIds.has(callee.callId))
|
|
6641
|
+
return false;
|
|
6642
|
+
seenCallIds.add(callee.callId);
|
|
6643
|
+
}
|
|
6624
6644
|
}
|
|
6625
6645
|
return true;
|
|
6626
6646
|
}
|
|
@@ -6679,7 +6699,13 @@ class DialogPersistence {
|
|
|
6679
6699
|
}
|
|
6680
6700
|
static buildActiveCalleesFileFromDispatches(dispatches) {
|
|
6681
6701
|
const batchesById = new Map();
|
|
6702
|
+
const callIds = new Set();
|
|
6682
6703
|
for (const dispatch of dispatches) {
|
|
6704
|
+
if (callIds.has(dispatch.callId)) {
|
|
6705
|
+
throw new Error(`active-callees dispatch invariant violation: duplicate callId ` +
|
|
6706
|
+
`(calleeDialogId=${dispatch.calleeDialogId}, batchId=${dispatch.batchId}, callId=${dispatch.callId})`);
|
|
6707
|
+
}
|
|
6708
|
+
callIds.add(dispatch.callId);
|
|
6683
6709
|
const existingBatch = batchesById.get(dispatch.batchId);
|
|
6684
6710
|
const callee = this.buildActiveCalleeRecordFromDispatch(dispatch);
|
|
6685
6711
|
if (!existingBatch) {
|
|
@@ -6700,9 +6726,6 @@ class DialogPersistence {
|
|
|
6700
6726
|
throw new Error(`active-callees dispatch invariant violation: batch call-site mismatch ` +
|
|
6701
6727
|
`(calleeDialogId=${dispatch.calleeDialogId}, batchId=${dispatch.batchId})`);
|
|
6702
6728
|
}
|
|
6703
|
-
if (existingBatch.callees.some((entry) => entry.callId === dispatch.callId)) {
|
|
6704
|
-
continue;
|
|
6705
|
-
}
|
|
6706
6729
|
batchesById.set(dispatch.batchId, {
|
|
6707
6730
|
...existingBatch,
|
|
6708
6731
|
callees: [...existingBatch.callees, callee],
|
|
@@ -6734,15 +6757,30 @@ class DialogPersistence {
|
|
|
6734
6757
|
}
|
|
6735
6758
|
return next;
|
|
6736
6759
|
}
|
|
6737
|
-
static async removeActiveCalleeDispatch(mainDialogId, calleeDialogId, rootAnchor, status = 'running') {
|
|
6738
|
-
|
|
6739
|
-
|
|
6740
|
-
|
|
6741
|
-
|
|
6742
|
-
|
|
6743
|
-
|
|
6744
|
-
|
|
6745
|
-
|
|
6760
|
+
static async removeActiveCalleeDispatch(mainDialogId, calleeDialogId, callId, rootAnchor, status = 'running') {
|
|
6761
|
+
const normalizedCallId = callId.trim();
|
|
6762
|
+
if (normalizedCallId === '') {
|
|
6763
|
+
throw new Error(`active-callees remove invariant violation: callId is required ` +
|
|
6764
|
+
`(rootId=${mainDialogId.rootId}, selfId=${mainDialogId.selfId}, calleeDialogId=${calleeDialogId})`);
|
|
6765
|
+
}
|
|
6766
|
+
await this.mutateActiveCallees(mainDialogId, (previous) => {
|
|
6767
|
+
const removedCount = previous.batches.reduce((count, batch) => {
|
|
6768
|
+
return (count +
|
|
6769
|
+
batch.callees.filter((callee) => callee.calleeDialogId === calleeDialogId && callee.callId === normalizedCallId).length);
|
|
6770
|
+
}, 0);
|
|
6771
|
+
if (removedCount !== 1) {
|
|
6772
|
+
throw new Error(`active-callees remove invariant violation: expected exactly one dispatch ` +
|
|
6773
|
+
`(rootId=${mainDialogId.rootId}, selfId=${mainDialogId.selfId}, calleeDialogId=${calleeDialogId}, callId=${normalizedCallId}, removedCount=${removedCount})`);
|
|
6774
|
+
}
|
|
6775
|
+
const batches = [];
|
|
6776
|
+
for (const batch of previous.batches) {
|
|
6777
|
+
const callees = batch.callees.filter((callee) => !(callee.calleeDialogId === calleeDialogId && callee.callId === normalizedCallId));
|
|
6778
|
+
if (callees.length > 0) {
|
|
6779
|
+
batches.push({ ...batch, callees });
|
|
6780
|
+
}
|
|
6781
|
+
}
|
|
6782
|
+
return { batches };
|
|
6783
|
+
}, status);
|
|
6746
6784
|
if (rootAnchor) {
|
|
6747
6785
|
await this.appendActiveCalleesReconciledRecord(mainDialogId, await this.loadActiveCalleeDispatches(mainDialogId, status), rootAnchorWriteTarget(rootAnchor), status);
|
|
6748
6786
|
}
|
|
@@ -6774,6 +6812,11 @@ class DialogPersistence {
|
|
|
6774
6812
|
filePath,
|
|
6775
6813
|
});
|
|
6776
6814
|
}
|
|
6815
|
+
this.assertNoDuplicateSessionedTellaskPendingRecords(this.projectActiveCalleeDispatches(parsed), {
|
|
6816
|
+
rootId: dialogId.rootId,
|
|
6817
|
+
selfId: dialogId.selfId,
|
|
6818
|
+
status,
|
|
6819
|
+
});
|
|
6777
6820
|
return parsed;
|
|
6778
6821
|
}
|
|
6779
6822
|
catch (error) {
|
|
@@ -7225,6 +7268,13 @@ class DialogPersistence {
|
|
|
7225
7268
|
}
|
|
7226
7269
|
static async upsertActiveCalleeFromPendingRecord(dialogId, record, status = 'running') {
|
|
7227
7270
|
await this.mutateActiveCallees(dialogId, (previous) => {
|
|
7271
|
+
const duplicateCallId = previous.batches.some((batch) => batch.batchId === record.batchId
|
|
7272
|
+
? false
|
|
7273
|
+
: batch.callees.some((entry) => entry.callId === record.callId));
|
|
7274
|
+
if (duplicateCallId) {
|
|
7275
|
+
throw new Error(`active-callees duplicate call invariant violation ` +
|
|
7276
|
+
`(rootId=${dialogId.rootId}, selfId=${dialogId.selfId}, batchId=${record.batchId}, callId=${record.callId})`);
|
|
7277
|
+
}
|
|
7228
7278
|
const existingBatch = previous.batches.find((batch) => batch.batchId === record.batchId);
|
|
7229
7279
|
const callee = this.buildActiveCalleeRecordFromDispatch(record);
|
|
7230
7280
|
if (existingBatch === undefined) {
|
|
@@ -7255,12 +7305,8 @@ class DialogPersistence {
|
|
|
7255
7305
|
}
|
|
7256
7306
|
const existingCallee = existingBatch.callees.find((entry) => entry.callId === record.callId);
|
|
7257
7307
|
if (existingCallee !== undefined) {
|
|
7258
|
-
|
|
7259
|
-
|
|
7260
|
-
throw new Error(`active-callees duplicate call invariant violation ` +
|
|
7261
|
-
`(rootId=${dialogId.rootId}, selfId=${dialogId.selfId}, batchId=${record.batchId}, callId=${record.callId})`);
|
|
7262
|
-
}
|
|
7263
|
-
return previous;
|
|
7308
|
+
throw new Error(`active-callees duplicate call invariant violation ` +
|
|
7309
|
+
`(rootId=${dialogId.rootId}, selfId=${dialogId.selfId}, batchId=${record.batchId}, callId=${record.callId})`);
|
|
7264
7310
|
}
|
|
7265
7311
|
return {
|
|
7266
7312
|
batches: previous.batches.map((batch) => batch.batchId === record.batchId
|
|
@@ -7323,27 +7369,18 @@ class DialogPersistence {
|
|
|
7323
7369
|
}
|
|
7324
7370
|
return outcome;
|
|
7325
7371
|
}
|
|
7326
|
-
static async
|
|
7372
|
+
static async removeActiveCalleeBatch(dialogId, batchId, status = 'running') {
|
|
7327
7373
|
await this.mutateActiveCallees(dialogId, (previous) => {
|
|
7328
|
-
const
|
|
7329
|
-
|
|
7330
|
-
|
|
7331
|
-
|
|
7332
|
-
continue;
|
|
7333
|
-
}
|
|
7334
|
-
const callees = batch.callees.filter((callee) => callee.callId !== args.callId);
|
|
7335
|
-
if (callees.length > 0) {
|
|
7336
|
-
batches.push({ ...batch, callees });
|
|
7337
|
-
}
|
|
7374
|
+
const removedCount = previous.batches.filter((batch) => batch.batchId === batchId).length;
|
|
7375
|
+
if (removedCount !== 1) {
|
|
7376
|
+
throw new Error(`active-callees remove batch invariant violation: expected exactly one batch ` +
|
|
7377
|
+
`(rootId=${dialogId.rootId}, selfId=${dialogId.selfId}, batchId=${batchId}, removedCount=${removedCount})`);
|
|
7338
7378
|
}
|
|
7339
|
-
return {
|
|
7379
|
+
return {
|
|
7380
|
+
batches: previous.batches.filter((batch) => batch.batchId !== batchId),
|
|
7381
|
+
};
|
|
7340
7382
|
}, status);
|
|
7341
7383
|
}
|
|
7342
|
-
static async removeActiveCalleeBatch(dialogId, batchId, status = 'running') {
|
|
7343
|
-
await this.mutateActiveCallees(dialogId, (previous) => ({
|
|
7344
|
-
batches: previous.batches.filter((batch) => batch.batchId !== batchId),
|
|
7345
|
-
}), status);
|
|
7346
|
-
}
|
|
7347
7384
|
/**
|
|
7348
7385
|
* Get the path for storing sideDialog responses (supports both main dialog and sideDialog tellaskers).
|
|
7349
7386
|
* For Type C sideDialogs created inside another sideDialog, responses are stored at the parent's level.
|
|
@@ -8561,7 +8598,7 @@ class DialogPersistence {
|
|
|
8561
8598
|
}),
|
|
8562
8599
|
callStack: captureInvariantWarningStack(),
|
|
8563
8600
|
};
|
|
8564
|
-
|
|
8601
|
+
log_1.log.debug('clearPendingRuntimePrompt invariant warning: generating dialog still projected as pending_runtime_prompt; healing displayState to proceeding', undefined, warningDetails);
|
|
8565
8602
|
return { kind: 'proceeding' };
|
|
8566
8603
|
})()
|
|
8567
8604
|
: { kind: 'idle_waiting_user' }
|