dominds 1.23.10 → 1.24.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apps/runtime.js +2 -2
- package/dist/dialog-display-state.d.ts +2 -3
- package/dist/dialog-display-state.js +53 -145
- package/dist/dialog-drive-work.d.ts +4 -0
- package/dist/dialog-drive-work.js +40 -0
- package/dist/dialog-fork.d.ts +0 -1
- package/dist/dialog-fork.js +28 -32
- package/dist/dialog-generation-run.d.ts +4 -0
- package/dist/dialog-generation-run.js +24 -0
- package/dist/dialog-global-registry.d.ts +7 -8
- package/dist/dialog-global-registry.js +39 -33
- package/dist/dialog-instance-registry.js +12 -12
- package/dist/dialog-interruption.js +2 -2
- package/dist/dialog-latest-state.d.ts +4 -0
- package/dist/dialog-latest-state.js +14 -0
- package/dist/dialog.d.ts +31 -30
- package/dist/dialog.js +146 -56
- package/dist/docs/agent-priming.md +1 -1
- package/dist/docs/agent-priming.zh.md +1 -1
- package/dist/docs/app-constitution.md +1 -1
- package/dist/docs/app-constitution.zh.md +1 -1
- package/dist/docs/dialog-persistence.md +2 -2
- package/dist/docs/dialog-persistence.zh.md +2 -2
- package/dist/docs/dialog-system.md +72 -75
- package/dist/docs/dialog-system.zh.md +79 -82
- package/dist/docs/diligence-push.md +30 -40
- package/dist/docs/diligence-push.zh.md +15 -20
- package/dist/docs/dominds-agent-collaboration.zh.md +12 -10
- package/dist/docs/dominds-terminology.md +5 -2
- package/dist/docs/idle-reminder-wake.md +1 -1
- package/dist/docs/idle-reminder-wake.zh.md +1 -1
- package/dist/docs/issues/tellask-background-continuation-live-bugs-2026-05-17.zh.md +101 -0
- package/dist/docs/mcp-prompts-resources.md +13 -6
- package/dist/docs/mcp-support.md +18 -9
- package/dist/docs/mcp-support.zh.md +13 -8
- package/dist/docs/memory-system.md +51 -1
- package/dist/docs/memory-system.zh.md +51 -1
- package/dist/docs/team_mgmt-toolset.md +27 -10
- package/dist/docs/team_mgmt-toolset.zh.md +20 -9
- package/dist/docs/tellask-background-continuation-refactor.zh.md +1017 -0
- package/dist/docs/tellask-collab.md +4 -4
- package/dist/docs/tellask-collab.zh.md +4 -4
- package/dist/evt-registry.js +1 -0
- package/dist/llm/defaults.yaml +12 -9
- package/dist/llm/kernel-driver/drive.js +315 -67
- package/dist/llm/kernel-driver/engine.d.ts +1 -1
- package/dist/llm/kernel-driver/engine.js +4 -4
- package/dist/llm/kernel-driver/flow.js +203 -131
- package/dist/llm/kernel-driver/idle-reminder-wake.js +2 -4
- package/dist/llm/kernel-driver/loop.d.ts +4 -1
- package/dist/llm/kernel-driver/loop.js +268 -62
- package/dist/llm/kernel-driver/reply-guidance.js +29 -50
- package/dist/llm/kernel-driver/runtime.d.ts +10 -0
- package/dist/llm/kernel-driver/runtime.js +29 -84
- package/dist/llm/kernel-driver/sideDialog-txn.js +3 -0
- package/dist/llm/kernel-driver/sideDialog.d.ts +4 -13
- package/dist/llm/kernel-driver/sideDialog.js +165 -161
- package/dist/llm/kernel-driver/tellask-special.d.ts +5 -2
- package/dist/llm/kernel-driver/tellask-special.js +166 -184
- package/dist/llm/kernel-driver/types.d.ts +12 -8
- package/dist/mcp/config.d.ts +13 -5
- package/dist/mcp/config.js +37 -24
- package/dist/mcp/resources.d.ts +14 -3
- package/dist/mcp/resources.js +9 -6
- package/dist/mcp/supervisor.js +6 -1
- package/dist/mcp/tool-names.d.ts +2 -2
- package/dist/mcp/tool-names.js +4 -7
- package/dist/minds/system-prompt-parts.js +3 -0
- package/dist/persistence-errors.d.ts +1 -1
- package/dist/persistence.d.ts +81 -51
- package/dist/persistence.js +1747 -427
- package/dist/priming.d.ts +1 -1
- package/dist/priming.js +2 -2
- package/dist/recovery/proceeding-drive.js +46 -11
- package/dist/recovery/reply-special.js +42 -35
- package/dist/runtime/background-callee-summary.d.ts +2 -0
- package/dist/runtime/background-callee-summary.js +14 -0
- package/dist/runtime/driver-messages.d.ts +0 -8
- package/dist/runtime/driver-messages.js +0 -59
- package/dist/server/api-routes.js +40 -27
- package/dist/server/websocket-handler.js +39 -78
- package/dist/server.js +2 -2
- package/dist/shared-reminders.js +14 -3
- package/dist/skills/load.d.ts +7 -0
- package/dist/tools/cmd-runner.js +2 -0
- package/dist/tools/ctrl.js +6 -6
- package/dist/tools/os.js +2 -0
- package/dist/tools/pending-tellask-reminder.js +9 -9
- package/dist/tools/prompts/control/en/index.md +2 -0
- package/dist/tools/prompts/control/en/principles.md +1 -0
- package/dist/tools/prompts/control/en/tools.md +3 -0
- package/dist/tools/prompts/control/zh/index.md +2 -0
- package/dist/tools/prompts/control/zh/principles.md +1 -0
- package/dist/tools/prompts/control/zh/tools.md +3 -0
- package/dist/tools/prompts/personal_memory/en/principles.md +4 -1
- package/dist/tools/prompts/personal_memory/zh/principles.md +4 -1
- package/dist/tools/prompts/skills/en/index.md +1 -1
- package/dist/tools/prompts/skills/en/principles.md +5 -1
- package/dist/tools/prompts/skills/zh/index.md +1 -1
- package/dist/tools/prompts/skills/zh/principles.md +5 -1
- package/dist/tools/prompts/team_memory/en/principles.md +3 -0
- package/dist/tools/prompts/team_memory/en/scenarios.md +1 -1
- package/dist/tools/prompts/team_memory/zh/principles.md +3 -0
- package/dist/tools/prompts/team_memory/zh/scenarios.md +1 -1
- package/dist/tools/shell-capture-env.d.ts +1 -0
- package/dist/tools/shell-capture-env.js +44 -0
- package/dist/tools/skills.js +2 -0
- package/dist/tools/team_mgmt-mcp-manual.js +8 -8
- package/dist/tools/team_mgmt.js +34 -12
- package/dist/utils/task-package.js +9 -1
- package/package.json +3 -3
- package/webapp/dist/assets/{_basePickBy-CBh9Agsi.js → _basePickBy-DBvh4H3k.js} +3 -3
- package/webapp/dist/assets/_basePickBy-DBvh4H3k.js.map +1 -0
- package/webapp/dist/assets/{_baseUniq-D2UXV506.js → _baseUniq-CQmc9B-o.js} +2 -2
- package/webapp/dist/assets/_baseUniq-CQmc9B-o.js.map +1 -0
- package/webapp/dist/assets/{arc-CmeRUuzC.js → arc-DfLiOX_4.js} +2 -2
- package/webapp/dist/assets/arc-DfLiOX_4.js.map +1 -0
- package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-D5hfsb4A.js → architectureDiagram-2XIMDMQ5-CaTVJ5ev.js} +26 -8
- package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-CaTVJ5ev.js.map +1 -0
- package/webapp/dist/assets/{blockDiagram-VD42YOAC-BVswEa9D.js → blockDiagram-WCTKOSBZ-DlmAtUca.js} +187 -170
- package/webapp/dist/assets/blockDiagram-WCTKOSBZ-DlmAtUca.js.map +1 -0
- package/webapp/dist/assets/{c4Diagram-YG6GDRKO-Bgm6yzGX.js → c4Diagram-IC4MRINW-CNHKD5Sl.js} +4 -4
- package/webapp/dist/assets/c4Diagram-IC4MRINW-CNHKD5Sl.js.map +1 -0
- package/webapp/dist/assets/{channel-CDo0v82C.js → channel-BTWhZYd5.js} +2 -2
- package/webapp/dist/assets/channel-BTWhZYd5.js.map +1 -0
- package/webapp/dist/assets/{chunk-4BX2VUAB-DMqSdYxu.js → chunk-4BX2VUAB-CV1n0Uhy.js} +2 -2
- package/webapp/dist/assets/chunk-4BX2VUAB-CV1n0Uhy.js.map +1 -0
- package/webapp/dist/assets/{chunk-55IACEB6-CudmE3Fx.js → chunk-55IACEB6-C5r77i_p.js} +2 -2
- package/webapp/dist/assets/chunk-55IACEB6-C5r77i_p.js.map +1 -0
- package/webapp/dist/assets/{chunk-FMBD7UC4-BSVSuNxy.js → chunk-FMBD7UC4-DJ1yHxrH.js} +2 -2
- package/webapp/dist/assets/chunk-FMBD7UC4-DJ1yHxrH.js.map +1 -0
- package/webapp/dist/assets/{chunk-TZMSLE5B-aW2uEdtS.js → chunk-JSJVCQXG-Ahg9hCCm.js} +14 -6
- package/webapp/dist/assets/chunk-JSJVCQXG-Ahg9hCCm.js.map +1 -0
- package/webapp/dist/assets/{chunk-QN33PNHL-Cbf-pIxI.js → chunk-KX2RTZJC-qBrewKt0.js} +2 -2
- package/webapp/dist/assets/chunk-KX2RTZJC-qBrewKt0.js.map +1 -0
- package/webapp/dist/assets/{chunk-DI55MBZ5-CZCetJxI.js → chunk-NQ4KR5QH-1lEdM6Wi.js} +9 -7
- package/webapp/dist/assets/chunk-NQ4KR5QH-1lEdM6Wi.js.map +1 -0
- package/webapp/dist/assets/{chunk-QZHKN3VN-DYyIY8_q.js → chunk-QZHKN3VN-ChVR749G.js} +2 -2
- package/webapp/dist/assets/chunk-QZHKN3VN-ChVR749G.js.map +1 -0
- package/webapp/dist/assets/{chunk-B4BG7PRW-d5dfiagO.js → chunk-WL4C6EOR-BAUXgk0K.js} +171 -121
- package/webapp/dist/assets/chunk-WL4C6EOR-BAUXgk0K.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-2ON5EDUG-C4-5PgVL.js → classDiagram-VBA2DB6C-DlqyhKve.js} +7 -6
- package/webapp/dist/assets/classDiagram-VBA2DB6C-DlqyhKve.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-C4-5PgVL.js → classDiagram-v2-RAHNMMFH-DlqyhKve.js} +7 -6
- package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-DlqyhKve.js.map +1 -0
- package/webapp/dist/assets/{clone-DivPByZ0.js → clone-BFiIqUsc.js} +2 -2
- package/webapp/dist/assets/clone-BFiIqUsc.js.map +1 -0
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-CwBAjMT3.js → cose-bilkent-S5V4N54A-JYvhtd6J.js} +2 -2
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-JYvhtd6J.js.map +1 -0
- package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
- package/webapp/dist/assets/{dagre-6UL2VRFP-tC56AIio.js → dagre-KLK3FWXG-CCGcQh6w.js} +7 -7
- package/webapp/dist/assets/dagre-KLK3FWXG-CCGcQh6w.js.map +1 -0
- package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
- package/webapp/dist/assets/{diagram-PSM6KHXK-dEF_O6uj.js → diagram-E7M64L7V-BXC4AxAd.js} +10 -10
- package/webapp/dist/assets/diagram-E7M64L7V-BXC4AxAd.js.map +1 -0
- package/webapp/dist/assets/{diagram-QEK2KX5R-BC3CyB81.js → diagram-IFDJBPK2-B--Sb3XT.js} +9 -8
- package/webapp/dist/assets/diagram-IFDJBPK2-B--Sb3XT.js.map +1 -0
- package/webapp/dist/assets/{diagram-S2PKOQOG-BV-YMbA_.js → diagram-P4PSJMXO-CVqgtrh3.js} +8 -8
- package/webapp/dist/assets/diagram-P4PSJMXO-CVqgtrh3.js.map +1 -0
- package/webapp/dist/assets/{erDiagram-Q2GNP2WA-DIgdtwce.js → erDiagram-INFDFZHY-BniHaRTt.js} +96 -75
- package/webapp/dist/assets/erDiagram-INFDFZHY-BniHaRTt.js.map +1 -0
- package/webapp/dist/assets/{flowDiagram-NV44I4VS-C7Mawlld.js → flowDiagram-PKNHOUZH-wLKFBWTR.js} +98 -81
- package/webapp/dist/assets/flowDiagram-PKNHOUZH-wLKFBWTR.js.map +1 -0
- package/webapp/dist/assets/{ganttDiagram-JELNMOA3-DgaYLOeL.js → ganttDiagram-A5KZAMGK-DrptcitZ.js} +28 -3
- package/webapp/dist/assets/ganttDiagram-A5KZAMGK-DrptcitZ.js.map +1 -0
- package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-Dwv1ZLFB.js → gitGraphDiagram-K3NZZRJ6-C6l5aP44.js} +38 -46
- package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-C6l5aP44.js.map +1 -0
- package/webapp/dist/assets/graph-DXuQGYQN.js +782 -0
- package/webapp/dist/assets/graph-DXuQGYQN.js.map +1 -0
- package/webapp/dist/assets/{index-BGdI3lWA.css → index-BQoNJEGT.css} +19 -27
- package/webapp/dist/assets/{index-BsSFGqVX.js → index-DuQ1OCMG.js} +1435 -1348
- package/webapp/dist/assets/{index-BsSFGqVX.js.map → index-DuQ1OCMG.js.map} +1 -1
- package/webapp/dist/assets/{infoDiagram-HS3SLOUP-PDKRqD6y.js → infoDiagram-LFFYTUFH-BbleCSjW.js} +7 -7
- package/webapp/dist/assets/infoDiagram-LFFYTUFH-BbleCSjW.js.map +1 -0
- package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DmV-LZuk.js +966 -0
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DmV-LZuk.js.map +1 -0
- package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-DDD6YlTa.js → journeyDiagram-4ABVD52K-D3sQFfac.js} +5 -5
- package/webapp/dist/assets/journeyDiagram-4ABVD52K-D3sQFfac.js.map +1 -0
- package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-CK-CJzXm.js → kanban-definition-K7BYSVSG-BEeBlBtM.js} +5 -3
- package/webapp/dist/assets/kanban-definition-K7BYSVSG-BEeBlBtM.js.map +1 -0
- package/webapp/dist/assets/{layout-DRs2ltCp.js → layout-g7jjgV-W.js} +5 -5
- package/webapp/dist/assets/layout-g7jjgV-W.js.map +1 -0
- package/webapp/dist/assets/{linear-CiMu0dYF.js → linear-D_X91Yek.js} +2 -2
- package/webapp/dist/assets/linear-D_X91Yek.js.map +1 -0
- package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-C8yEoHXx.js → mindmap-definition-YRQLILUH-NkMAIgRY.js} +7 -5
- package/webapp/dist/assets/mindmap-definition-YRQLILUH-NkMAIgRY.js.map +1 -0
- package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
- package/webapp/dist/assets/{pieDiagram-ADFJNKIX-BhtVILXQ.js → pieDiagram-SKSYHLDU-Z6E4GEPC.js} +8 -8
- package/webapp/dist/assets/pieDiagram-SKSYHLDU-Z6E4GEPC.js.map +1 -0
- package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-B7Xuuv_G.js → quadrantDiagram-337W2JSQ-BH8hfOuU.js} +3 -3
- package/webapp/dist/assets/quadrantDiagram-337W2JSQ-BH8hfOuU.js.map +1 -0
- package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-DY6Q4U6l.js → requirementDiagram-Z7DCOOCP-DRJkvoQI.js} +16 -6
- package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-DRJkvoQI.js.map +1 -0
- package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-DZPox4PX.js → sankeyDiagram-WA2Y5GQK-D2VwjtJo.js} +2 -2
- package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-D2VwjtJo.js.map +1 -0
- package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-Bg6GPP0w.js → sequenceDiagram-2WXFIKYE-Cq-gEPOw.js} +601 -201
- package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-Cq-gEPOw.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-CcskYNpn.js → stateDiagram-RAJIS63D-CFM8Jqke.js} +9 -9
- package/webapp/dist/assets/stateDiagram-RAJIS63D-CFM8Jqke.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-Dja5UwuW.js → stateDiagram-v2-FVOUBMTO-Dip5iGX_.js} +5 -5
- package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-Dip5iGX_.js.map +1 -0
- package/webapp/dist/assets/{timeline-definition-IT6M3QCI-CA-Wvxg8.js → timeline-definition-YZTLITO2-OI9JzMjX.js} +3 -3
- package/webapp/dist/assets/timeline-definition-YZTLITO2-OI9JzMjX.js.map +1 -0
- package/webapp/dist/assets/{treemap-GDKQZRPO-CF_Fur4n.js → treemap-KZPCXAKY-CtNF416A.js} +37 -24
- package/webapp/dist/assets/treemap-KZPCXAKY-CtNF416A.js.map +1 -0
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-CjaPj4FZ.js +2487 -0
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-CjaPj4FZ.js.map +1 -0
- package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-CYc3vOkZ.js → xychartDiagram-JWTSCODW-21mBt9iu.js} +4 -4
- package/webapp/dist/assets/xychartDiagram-JWTSCODW-21mBt9iu.js.map +1 -0
- package/webapp/dist/index.html +2 -2
- package/dist/docs/tellask-revive-context-refactor.zh.md +0 -604
- package/webapp/dist/assets/_basePickBy-CBh9Agsi.js.map +0 -1
- package/webapp/dist/assets/_baseUniq-D2UXV506.js.map +0 -1
- package/webapp/dist/assets/arc-CmeRUuzC.js.map +0 -1
- package/webapp/dist/assets/architectureDiagram-VXUJARFQ-D5hfsb4A.js.map +0 -1
- package/webapp/dist/assets/blockDiagram-VD42YOAC-BVswEa9D.js.map +0 -1
- package/webapp/dist/assets/c4Diagram-YG6GDRKO-Bgm6yzGX.js.map +0 -1
- package/webapp/dist/assets/channel-CDo0v82C.js.map +0 -1
- package/webapp/dist/assets/chunk-4BX2VUAB-DMqSdYxu.js.map +0 -1
- package/webapp/dist/assets/chunk-55IACEB6-CudmE3Fx.js.map +0 -1
- package/webapp/dist/assets/chunk-B4BG7PRW-d5dfiagO.js.map +0 -1
- package/webapp/dist/assets/chunk-DI55MBZ5-CZCetJxI.js.map +0 -1
- package/webapp/dist/assets/chunk-FMBD7UC4-BSVSuNxy.js.map +0 -1
- package/webapp/dist/assets/chunk-QN33PNHL-Cbf-pIxI.js.map +0 -1
- package/webapp/dist/assets/chunk-QZHKN3VN-DYyIY8_q.js.map +0 -1
- package/webapp/dist/assets/chunk-TZMSLE5B-aW2uEdtS.js.map +0 -1
- package/webapp/dist/assets/classDiagram-2ON5EDUG-C4-5PgVL.js.map +0 -1
- package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-C4-5PgVL.js.map +0 -1
- package/webapp/dist/assets/clone-DivPByZ0.js.map +0 -1
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-CwBAjMT3.js.map +0 -1
- package/webapp/dist/assets/dagre-6UL2VRFP-tC56AIio.js.map +0 -1
- package/webapp/dist/assets/diagram-PSM6KHXK-dEF_O6uj.js.map +0 -1
- package/webapp/dist/assets/diagram-QEK2KX5R-BC3CyB81.js.map +0 -1
- package/webapp/dist/assets/diagram-S2PKOQOG-BV-YMbA_.js.map +0 -1
- package/webapp/dist/assets/erDiagram-Q2GNP2WA-DIgdtwce.js.map +0 -1
- package/webapp/dist/assets/flowDiagram-NV44I4VS-C7Mawlld.js.map +0 -1
- package/webapp/dist/assets/ganttDiagram-JELNMOA3-DgaYLOeL.js.map +0 -1
- package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-Dwv1ZLFB.js.map +0 -1
- package/webapp/dist/assets/graph-saC_350a.js +0 -425
- package/webapp/dist/assets/graph-saC_350a.js.map +0 -1
- package/webapp/dist/assets/infoDiagram-HS3SLOUP-PDKRqD6y.js.map +0 -1
- package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-DDD6YlTa.js.map +0 -1
- package/webapp/dist/assets/kanban-definition-3W4ZIXB7-CK-CJzXm.js.map +0 -1
- package/webapp/dist/assets/layout-DRs2ltCp.js.map +0 -1
- package/webapp/dist/assets/linear-CiMu0dYF.js.map +0 -1
- package/webapp/dist/assets/mindmap-definition-VGOIOE7T-C8yEoHXx.js.map +0 -1
- package/webapp/dist/assets/pieDiagram-ADFJNKIX-BhtVILXQ.js.map +0 -1
- package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-B7Xuuv_G.js.map +0 -1
- package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-DY6Q4U6l.js.map +0 -1
- package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-DZPox4PX.js.map +0 -1
- package/webapp/dist/assets/sequenceDiagram-WL72ISMW-Bg6GPP0w.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-FKZM4ZOC-CcskYNpn.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3-Dja5UwuW.js.map +0 -1
- package/webapp/dist/assets/timeline-definition-IT6M3QCI-CA-Wvxg8.js.map +0 -1
- package/webapp/dist/assets/treemap-GDKQZRPO-CF_Fur4n.js.map +0 -1
- package/webapp/dist/assets/xychartDiagram-PRI3JC2R-CYc3vOkZ.js.map +0 -1
|
@@ -62,11 +62,11 @@ A **Q4H** is a pending question raised by a dialog (main or sideDialog) that req
|
|
|
62
62
|
|
|
63
63
|
### SideDialog Index (subdlg.yaml)
|
|
64
64
|
|
|
65
|
-
A **subdlg.yaml** file indexes pending
|
|
65
|
+
A **subdlg.yaml** file indexes pending background callee dialogs for an askerDialog. Like `q4h.yaml`, it is an index file, not the source of truth:
|
|
66
66
|
|
|
67
|
-
- The index tracks which sideDialog IDs
|
|
67
|
+
- The index tracks which sideDialog IDs still owe a response to the caller
|
|
68
68
|
- Actual sideDialog state is verified from disk (done/ directory)
|
|
69
|
-
- Used by the backend coroutine for crash recovery and
|
|
69
|
+
- Used by the backend coroutine for crash recovery, observability, and result-arrival handling
|
|
70
70
|
|
|
71
71
|
### SideDialog Registry
|
|
72
72
|
|
|
@@ -113,13 +113,13 @@ Each Dialog object carries an exclusive mutex with an associated wait queue. Whe
|
|
|
113
113
|
Backend coroutines drive dialogs using the following pattern:
|
|
114
114
|
|
|
115
115
|
1. Scan the Global Registry to identify main dialogs needing driving
|
|
116
|
-
2. For each candidate, check
|
|
116
|
+
2. For each candidate, check concrete drive sources (Q4H answered, queued prompt, result arrival, open generation recovery, etc.)
|
|
117
117
|
3. Acquire the dialog's mutex before driving
|
|
118
|
-
4. Execute the generation loop until
|
|
118
|
+
4. Execute the generation loop until it naturally idles, reaches Q4H, or completes
|
|
119
119
|
5. Release the mutex
|
|
120
120
|
6. Persist all state changes to storage
|
|
121
121
|
|
|
122
|
-
The driving loop continues until a dialog
|
|
122
|
+
The driving loop continues until a dialog naturally idles, reaches Q4H, or completes. Pending sideDialogs are background callee work; they do not suspend the caller by themselves. However, when the only remaining fact is a pending active callee dispatch and there is no other concrete drive source, the caller should naturally idle rather than keep the mainline spinning through Diligence Push. When a user answers Q4H or a callee result arrives, the backend records that concrete fact and drives the affected dialog only from that fact.
|
|
123
123
|
|
|
124
124
|
### Frontend Integration
|
|
125
125
|
|
|
@@ -149,8 +149,8 @@ Missing broadcaster is therefore a runtime bootstrap invariant violation, not a
|
|
|
149
149
|
Dialog state is persisted to storage at key points:
|
|
150
150
|
|
|
151
151
|
- After each message generation
|
|
152
|
-
-
|
|
153
|
-
-
|
|
152
|
+
- When Q4H is raised, a background callee dialog is created, or another observable fact changes
|
|
153
|
+
- When Q4H is answered or a callee result arrives
|
|
154
154
|
- On completion
|
|
155
155
|
|
|
156
156
|
This ensures crash recovery and enables the backend to resume from any persisted state without depending on frontend state.
|
|
@@ -175,23 +175,23 @@ When a dialog still carries an inter-dialog reply obligation, but the user tempo
|
|
|
175
175
|
After the user clicks `Continue`, the backend MUST re-evaluate fresh persistence facts and decide which true-source case now applies. It must not infer the result purely from the visible `displayState`:
|
|
176
176
|
|
|
177
177
|
- **Case 1: the dialog no longer has a reply obligation**
|
|
178
|
-
If there is also no
|
|
179
|
-
- **Case 2: the dialog still has a reply obligation and is
|
|
180
|
-
|
|
178
|
+
If there is also no user-wait fact such as Q4H, the dialog should simply continue driving. If it has already become ordinary idle-waiting-user, then `resume_dialog` is no longer actually resumable.
|
|
179
|
+
- **Case 2: the dialog still has a reply obligation and is waiting for user input**
|
|
180
|
+
The canonical example is pending Q4H. In this case, `Continue` should exit the interjection-paused projection and restore the true `blocked` state.
|
|
181
181
|
- **Case 3: the dialog still has a reply obligation but is no longer suspended and is eligible to proceed**
|
|
182
|
-
For example, the
|
|
182
|
+
For example, the Q4H/user-wait fact has disappeared, or a queued prompt provides a valid continuation path. In this case, `Continue` must not first fall back to an intermediate placeholder `blocked/idle` state; it should keep driving immediately.
|
|
183
183
|
|
|
184
184
|
**This leads to two implementation constraints**:
|
|
185
185
|
|
|
186
186
|
- `refreshRunControlProjectionFromPersistenceFacts()` MUST preserve the special "interjection handled; original task paused" `stopped` projection until the user explicitly clicks `Continue`; otherwise the UI collapses back to ordinary `blocked` too early and breaks multi-turn interjection UX. Conversely, when there is no parked original task, this paused projection should not be created at all.
|
|
187
187
|
- The actual outcome of `Continue` MUST be decided in the resume drive path by re-reading fresh persistence facts. "Continue is clickable" does not mean "the dialog will definitely enter proceeding immediately".
|
|
188
188
|
- If `Continue` reveals that the true state is still `blocked`, the reply-obligation reassertion copy should be materialized immediately as a runtime guide in both `dlg.msgs` and persisted course history, while also surfacing as a frontend bubble. That lets the later real resume path rely on ordinary context replay instead of synthesizing a second duplicate runtime prompt.
|
|
189
|
-
- The run-control toolbar's `resumable` count should align with "manual Continue attempt is meaningful". Therefore an interjection-paused `stopped` dialog still counts as resumable even when underlying
|
|
189
|
+
- The run-control toolbar's `resumable` count should align with "manual Continue attempt is meaningful". Therefore an interjection-paused `stopped` dialog still counts as resumable even when underlying user-wait facts remain, because the business meaning of `Continue` there is "exit the temporary paused projection and re-evaluate from source-of-truth facts".
|
|
190
190
|
|
|
191
191
|
**Mental-model warning**:
|
|
192
192
|
|
|
193
193
|
- Do not reason about this flow from `displayState.kind === 'stopped'` alone.
|
|
194
|
-
- Do not reason about it from
|
|
194
|
+
- Do not reason about it from user-wait facts alone and then wonder why the UI still shows `stopped`.
|
|
195
195
|
- Do not reason about it from `resume_dialog` eligibility alone and assume resumption always means immediate running.
|
|
196
196
|
- Do not flatten every `origin === 'user'` prompt into "interjection"; a non-empty `q4hAnswerCallId` means askHuman answer continuation and follows a different semantic path.
|
|
197
197
|
|
|
@@ -225,10 +225,10 @@ flowchart TD
|
|
|
225
225
|
|
|
226
226
|
**Behavior**:
|
|
227
227
|
|
|
228
|
-
1. Current
|
|
228
|
+
1. Current callee records the ask-back and waits for the tellasker's answer
|
|
229
229
|
2. Driver switches to drive the **tellasker** (direct askerDialog for TYPE A; uses `sideDialog.askerDialog` reference)
|
|
230
230
|
3. Tellasker response flows back to the sideDialog
|
|
231
|
-
4.
|
|
231
|
+
4. Callee continues with the tellasker's response in context
|
|
232
232
|
|
|
233
233
|
**Key Characteristics**:
|
|
234
234
|
|
|
@@ -241,9 +241,9 @@ flowchart TD
|
|
|
241
241
|
|
|
242
242
|
- If a Side Dialog has completed all assigned goals and can deliver the final result, it MUST reply directly with the response body; do not use `tellaskBack` to send final delivery.
|
|
243
243
|
- Runtime treats that direct reply as the completion delivery to the tellasker and injects the work-language marker automatically (`【Completed】` in English work language, `【最终完成】` in Chinese work language).
|
|
244
|
-
- There is no separate technical state for keeping Side Dialogs active. A Side Dialog continues because normal business state still requires work: a tool result needs reaction, Q4H is pending, a downstream
|
|
244
|
+
- There is no separate technical state for keeping Side Dialogs active. A Side Dialog continues because normal business state still requires work: a tool result needs reaction, Q4H is pending, a downstream callee reply is pending, or an explicit runtime/user prompt is queued. Do not add a side path whose only purpose is to keep a dialog active.
|
|
245
245
|
- Reply-obligation tail handling is one small state machine: after runtime reaches a non-suspended tail, it inspects the newest non-empty assistant generation candidate produced by the current drive, preferring public saying over thinking when both exist on the same generation. If a Side Dialog still owes `replyTellask*` and has produced that candidate content without using the exact reply tool, runtime queues one reply-tool reminder. If the next answer to that reminder is still only thinking/saying, runtime intentionally delivers that content through direct-reply fallback and marks it as fallback.
|
|
246
|
-
- Runtime must not infer this tail state by scanning historical message text. Historical context is for the model and the UI; scheduling state must be carried explicitly by the current drive result, active reply obligation, pending
|
|
246
|
+
- Runtime must not infer this tail state by scanning historical message text. Historical context is for the model and the UI; scheduling state must be carried explicitly by the current drive result, active reply obligation, pending Q4H indexes, or queued prompts.
|
|
247
247
|
- If the work is unfinished, do not default to `tellaskBack`; first use team SOP / role ownership to judge whether a responsible owner is already clear, and if yes for execution work, directly use `tellask` / `tellaskSessionless` for that owner.
|
|
248
248
|
- Use `tellaskBack({ tellaskContent: "..." })` only when the tellasker must clarify the request, decide a tradeoff, confirm acceptance criteria, provide missing input, or current SOP cannot determine ownership.
|
|
249
249
|
- **FBR exception**: FBR Side Dialogs forbid all tellask calls (including `tellaskBack` / `tellask` / `tellaskSessionless` / `askHuman`); they must list missing context and return.
|
|
@@ -280,10 +280,10 @@ Tellasker: "orchestrator" (agentId)
|
|
|
280
280
|
LLM emits: tellaskSessionless({ targetAgentId: "orchestrator", tellaskContent: "..." }) How should I handle the database migration?
|
|
281
281
|
|
|
282
282
|
Result:
|
|
283
|
-
- sub-001
|
|
283
|
+
- sub-001 records the ask-back and waits for the tellasker's answer
|
|
284
284
|
- Driver drives orchestrator with the question
|
|
285
285
|
- orchestrator responds with guidance
|
|
286
|
-
- sub-001
|
|
286
|
+
- sub-001 continues with orchestrator's response
|
|
287
287
|
```
|
|
288
288
|
|
|
289
289
|
### TYPE B: Registered SideDialog Tellask (Type B / `Tellask Session` / Registered Session Tellask)
|
|
@@ -307,9 +307,9 @@ headline text is ignored for tellaskSession parsing.
|
|
|
307
307
|
1. Check registry for existing sideDialog with key `agentId!sessionSlug`
|
|
308
308
|
2. **If exists**: Resume the registered sideDialog
|
|
309
309
|
3. **If not exists**: Create NEW sideDialog AND register it with key `agentId!sessionSlug`
|
|
310
|
-
4. Tellasker
|
|
311
|
-
5. SideDialog response flows back to the tellasker
|
|
312
|
-
6.
|
|
310
|
+
4. Tellasker records a background callee fact; active callee dispatches do not suspend the tellasker by themselves
|
|
311
|
+
5. SideDialog response flows back to the tellasker as a result-arrival fact
|
|
312
|
+
6. The tellasker may continue from result arrival, a queued prompt, user input, Diligence Push when no active callee is pending, or another explicit driving source
|
|
313
313
|
|
|
314
314
|
**Current Tellasker Tracking (important for reuse):**
|
|
315
315
|
|
|
@@ -356,20 +356,18 @@ Result (first call):
|
|
|
356
356
|
- Registry lookup: no "researcher!market-analysis" exists
|
|
357
357
|
- Create new sideDialog "researcher!market-analysis"
|
|
358
358
|
- Register it in main dialog's registry
|
|
359
|
-
- orchestrator
|
|
359
|
+
- orchestrator records background callee work
|
|
360
360
|
- Drive researcher sideDialog
|
|
361
|
-
- Response
|
|
362
|
-
- orchestrator resumes
|
|
361
|
+
- Response arrives back to orchestrator as a concrete fact
|
|
363
362
|
|
|
364
363
|
LLM emits again: tellask({ targetAgentId: "researcher", sessionSlug: "market-analysis", tellaskContent: "..." })
|
|
365
364
|
|
|
366
365
|
Result (second call):
|
|
367
366
|
- Registry lookup: "researcher!market-analysis" exists
|
|
368
367
|
- Resume existing sideDialog
|
|
369
|
-
- orchestrator
|
|
368
|
+
- orchestrator records background callee work
|
|
370
369
|
- Drive existing researcher sideDialog from where it left off
|
|
371
|
-
- Response
|
|
372
|
-
- orchestrator resumes
|
|
370
|
+
- Response arrives back to orchestrator as a concrete fact
|
|
373
371
|
```
|
|
374
372
|
|
|
375
373
|
### TYPE C: Transient SideDialog Tellask (Type C / `Fresh Tellask` / One-shot Tellask)
|
|
@@ -384,13 +382,13 @@ Result (second call):
|
|
|
384
382
|
|
|
385
383
|
**Behavior**:
|
|
386
384
|
|
|
387
|
-
1. Current dialog
|
|
385
|
+
1. Current dialog records a background callee fact; active callee dispatches do not suspend it by themselves
|
|
388
386
|
2. Create **NEW sideDialog** with the specified agentId
|
|
389
387
|
3. Drive the new sideDialog:
|
|
390
388
|
- For general Type C, the sideDialog is full-fledged (TellaskBack, teammate Tellasks, tools per config).
|
|
391
389
|
- For `freshBootsReasoning({ tellaskContent: "..." })`, runtime applies the FBR tool-less policy (no tools; no Tellasks).
|
|
392
|
-
4. SideDialog response flows back to the tellasker
|
|
393
|
-
5.
|
|
390
|
+
4. SideDialog response flows back to the tellasker as a result-arrival fact
|
|
391
|
+
5. The tellasker may continue from result arrival, a queued prompt, user input, Diligence Push when no active callee is pending, or another explicit driving source
|
|
394
392
|
|
|
395
393
|
**Key Characteristics**:
|
|
396
394
|
|
|
@@ -411,19 +409,18 @@ Current dialog: orchestrator
|
|
|
411
409
|
LLM emits: @code-reviewer Please review this PR
|
|
412
410
|
|
|
413
411
|
Result:
|
|
414
|
-
- orchestrator
|
|
412
|
+
- orchestrator records background callee work
|
|
415
413
|
- Create NEW sideDialog with agentId "code-reviewer"
|
|
416
414
|
- Drive the code-reviewer sideDialog (it can make its own Tellasks, tools, etc.)
|
|
417
|
-
- code-reviewer completes
|
|
418
|
-
- orchestrator resumes with review in context
|
|
415
|
+
- code-reviewer completes; review findings arrive as a result-arrival fact
|
|
419
416
|
|
|
420
417
|
LLM emits again: @code-reviewer Review this other PR
|
|
421
418
|
|
|
422
419
|
Result:
|
|
423
|
-
- orchestrator
|
|
420
|
+
- orchestrator records background callee work
|
|
424
421
|
- Create ANOTHER NEW sideDialog (not the same as before!)
|
|
425
422
|
- Drive the new code-reviewer sideDialog
|
|
426
|
-
-
|
|
423
|
+
- the new review arrives as a result-arrival fact
|
|
427
424
|
```
|
|
428
425
|
|
|
429
426
|
### Comparison Summary
|
|
@@ -435,7 +432,7 @@ Result:
|
|
|
435
432
|
| **Registry Lookup** | No (uses `sideDialog.askerDialog`) | Yes (`agentId!sessionSlug`) | No (never registered) |
|
|
436
433
|
| **Resumption** | No (askerDialog not a sideDialog) | Yes (lookup finds existing) | No (always new) |
|
|
437
434
|
| **Registration** | Not applicable | Created AND registered | Never registered |
|
|
438
|
-
| **Tellasker Behavior** |
|
|
435
|
+
| **Tellasker Behavior** | Callee waits for tellasker reply | Records background callee fact | Records background callee fact |
|
|
439
436
|
| **SideDialog Capabilities** | Full (TellaskBack, teammates, tools) | Full (TellaskBack, teammates, tools) | Full (TellaskBack, teammates, tools) |
|
|
440
437
|
| **Use Case** | Clarification from tellasker (`TellaskBack`) | Resume persistent subtask (`Tellask Session`) | One-off independent task (`Fresh Tellask`) |
|
|
441
438
|
|
|
@@ -663,7 +660,7 @@ sequenceDiagram
|
|
|
663
660
|
participant Driver as driveDialogStream
|
|
664
661
|
|
|
665
662
|
Asker->>Side: creates sideDialog (Type B or C)
|
|
666
|
-
Note over Asker: AskerDialog
|
|
663
|
+
Note over Asker: AskerDialog records background callee work
|
|
667
664
|
|
|
668
665
|
Side->>WS: emits askHuman({ tellaskContent: "..." }) question
|
|
669
666
|
WS-->>UI: questions_count_update
|
|
@@ -672,7 +669,7 @@ sequenceDiagram
|
|
|
672
669
|
UI->>WS: drive_dialog_by_user_answer(dialog=sideDialogId, questionId, content)
|
|
673
670
|
WS->>Driver: driveDialogStream(sideDialog, human answer)
|
|
674
671
|
Driver-->>Side: sideDialog resumes
|
|
675
|
-
Side-->>Asker: response supplied (clears pending
|
|
672
|
+
Side-->>Asker: response supplied (result-arrival fact; clears this pending callee)
|
|
676
673
|
```
|
|
677
674
|
|
|
678
675
|
### Q4H and Mental Clarity Operations
|
|
@@ -730,39 +727,38 @@ sequenceDiagram
|
|
|
730
727
|
Asker->>Driver: create sideDialog (adds to pending list)
|
|
731
728
|
Driver->>Side: drive sideDialog (detached execution)
|
|
732
729
|
Side-->>Store: persist final response
|
|
733
|
-
Driver-->>Asker: supply
|
|
734
|
-
opt
|
|
735
|
-
Driver-->>Asker: set needsDrive=true
|
|
730
|
+
Driver-->>Asker: supply result-arrival fact + clear pending callee
|
|
731
|
+
opt result arrival creates an explicit drive source
|
|
732
|
+
Driver-->>Asker: set needsDrive=true
|
|
736
733
|
end
|
|
737
734
|
```
|
|
738
735
|
|
|
739
|
-
### SideDialog Q4H and
|
|
736
|
+
### SideDialog Q4H and Tellasker Result Arrival
|
|
740
737
|
|
|
741
|
-
When a sideDialog has raised Q4H and is waiting for human input, the
|
|
738
|
+
When a sideDialog has raised Q4H and is waiting for human input, the tellasker's result-arrival logic must respect that no callee result exists yet:
|
|
742
739
|
|
|
743
740
|
```typescript
|
|
744
|
-
//
|
|
745
|
-
async function
|
|
746
|
-
const pending = await
|
|
741
|
+
// Tellasker checks callee completion status
|
|
742
|
+
async function checkCalleeResultArrival(tellasker: Dialog): Promise<void> {
|
|
743
|
+
const pending = await loadActiveCalleeDispatches(tellasker.id);
|
|
747
744
|
|
|
748
745
|
for (const p of pending) {
|
|
749
|
-
// Check if
|
|
746
|
+
// Check if callee has unresolved Q4H
|
|
750
747
|
const sideDialogQ4H = await DialogPersistence.loadQuestions4HumanState(p.sideDialogId);
|
|
751
748
|
|
|
752
749
|
if (sideDialogQ4H.length > 0) {
|
|
753
|
-
//
|
|
754
|
-
// Do NOT auto-revive - wait for human to answer Q4H
|
|
750
|
+
// Callee is waiting for human input; no result-arrival fact exists yet.
|
|
755
751
|
log.debug(
|
|
756
|
-
`
|
|
752
|
+
`callee ${p.sideDialogId} has ${sideDialogQ4H.length} Q4H, skipping result arrival`,
|
|
757
753
|
);
|
|
758
754
|
continue;
|
|
759
755
|
}
|
|
760
756
|
|
|
761
|
-
//
|
|
757
|
+
// Callee has no Q4H, check if it's done
|
|
762
758
|
const isDone = await isSideDialogCompleted(p.sideDialogId);
|
|
763
759
|
if (isDone) {
|
|
764
|
-
// Incorporate response and
|
|
765
|
-
await incorporateSideDialogResponse(
|
|
760
|
+
// Incorporate response and schedule from this concrete fact.
|
|
761
|
+
await incorporateSideDialogResponse(tellasker, p.sideDialogId);
|
|
766
762
|
}
|
|
767
763
|
}
|
|
768
764
|
}
|
|
@@ -1090,8 +1086,8 @@ An entire main dialog tree can be forked at the start of a chosen root generatio
|
|
|
1090
1086
|
**Post-fork actions** (returned by backend to UI):
|
|
1091
1087
|
|
|
1092
1088
|
- `draft_user_text`: if the target generation is a user message, prefill that text into the new dialog input and wait for user confirmation
|
|
1093
|
-
- `restore_pending`: if there
|
|
1094
|
-
- `auto_continue`: if there is no pending
|
|
1089
|
+
- `restore_pending`: if there was pending Q4H before the cutoff, restore that user-wait state in the new main dialog; active callee dispatches are copied as background callee facts, not blockers
|
|
1090
|
+
- `auto_continue`: if there is no pending Q4H or other user-wait fact before the cutoff, initialize the new main dialog as `interrupted(system_stop: fork_dialog_continue)` and have UI immediately send `resume_dialog`
|
|
1095
1091
|
|
|
1096
1092
|
**Consistency requirements**:
|
|
1097
1093
|
|
|
@@ -1108,7 +1104,7 @@ An entire main dialog tree can be forked at the start of a chosen root generatio
|
|
|
1108
1104
|
- Tasks are finished successfully
|
|
1109
1105
|
- Agents explicitly mark them complete
|
|
1110
1106
|
- AskerDialogs determine subtasks are no longer needed
|
|
1111
|
-
-
|
|
1107
|
+
- The responsible Dialog Responder determines no pending callee result or Q4H is still needed before completion
|
|
1112
1108
|
|
|
1113
1109
|
**Registry on Completion**: When a main dialog completes, its registry moves with it to the `done/` directory and is preserved for potential restoration.
|
|
1114
1110
|
|
|
@@ -1213,7 +1209,7 @@ Additionally, some providers (especially Anthropic-compatible endpoints) enforce
|
|
|
1213
1209
|
|
|
1214
1210
|
**Tool Invocation**: Mental clarity tools are invoked through CLI commands or agent actions.
|
|
1215
1211
|
|
|
1216
|
-
**Status Monitoring**: Dialog status,
|
|
1212
|
+
**Status Monitoring**: Dialog status, active callee dispatches, Q4H count, and registered sideDialogs can be inspected through CLI tools.
|
|
1217
1213
|
|
|
1218
1214
|
### Agent Integration
|
|
1219
1215
|
|
|
@@ -1236,7 +1232,7 @@ driven is derived from persisted facts:
|
|
|
1236
1232
|
|
|
1237
1233
|
- Persisted status (API/index): `running | completed | archived`
|
|
1238
1234
|
- Persisted `latest.yaml`: `status`, `needsDrive`, `generating`
|
|
1239
|
-
- Derived gates: `hasPendingQ4H()
|
|
1235
|
+
- Derived gates: `hasPendingQ4H()`; active callee dispatches are background callee facts, not a drive gate
|
|
1240
1236
|
|
|
1241
1237
|
**Persisted status lifecycle:**
|
|
1242
1238
|
|
|
@@ -1252,9 +1248,10 @@ stateDiagram-v2
|
|
|
1252
1248
|
|
|
1253
1249
|
```mermaid
|
|
1254
1250
|
flowchart TD
|
|
1255
|
-
A[status=running] --> B{canDrive?\\n(no pending Q4H
|
|
1256
|
-
B -- no --> S[Suspended\\n(waiting on Q4H
|
|
1257
|
-
S -->|Q4H answered
|
|
1251
|
+
A[status=running] --> B{canDrive?\\n(no pending Q4H)}
|
|
1252
|
+
B -- no --> S[Suspended\\n(waiting on Q4H)]
|
|
1253
|
+
S -->|Q4H answered| C{needsDrive?}
|
|
1254
|
+
R[result arrival] --> C
|
|
1258
1255
|
B -- yes --> C{needsDrive?}
|
|
1259
1256
|
C -- no --> I[Idle\\n(waiting for trigger)]
|
|
1260
1257
|
C -- yes --> D[Drive loop\\n(generating=true while streaming)]
|
|
@@ -1307,9 +1304,9 @@ sequenceDiagram
|
|
|
1307
1304
|
Driver->>Side: create + register + drive
|
|
1308
1305
|
end
|
|
1309
1306
|
Side-->>Driver: final response
|
|
1310
|
-
Driver-->>Tellasker: supply
|
|
1311
|
-
opt
|
|
1312
|
-
Driver-->>Tellasker: set `needsDrive=true`
|
|
1307
|
+
Driver-->>Tellasker: supply result-arrival fact + clear pending callee
|
|
1308
|
+
opt result arrival creates an explicit drive source
|
|
1309
|
+
Driver-->>Tellasker: set `needsDrive=true`
|
|
1313
1310
|
end
|
|
1314
1311
|
```
|
|
1315
1312
|
|
|
@@ -1371,7 +1368,7 @@ sequenceDiagram
|
|
|
1371
1368
|
participant Driver as driveDialogStream
|
|
1372
1369
|
|
|
1373
1370
|
Asker->>Side: create sideDialog (Type B or C)
|
|
1374
|
-
Note over Asker,Side: AskerDialog
|
|
1371
|
+
Note over Asker,Side: AskerDialog records background callee work
|
|
1375
1372
|
Side->>WS: emits askHuman({ tellaskContent: "..." }) question (Q4H)
|
|
1376
1373
|
WS-->>UI: questions_count_update (global)
|
|
1377
1374
|
|
|
@@ -1381,10 +1378,10 @@ sequenceDiagram
|
|
|
1381
1378
|
WS->>Side: clear q4h.yaml entry
|
|
1382
1379
|
WS->>Driver: driveDialogStream(sideDialog, user answer)
|
|
1383
1380
|
Driver-->>Side: sideDialog resumes and continues
|
|
1384
|
-
Side-->>Asker: sideDialog response supplied to tellasker (clears pending
|
|
1381
|
+
Side-->>Asker: sideDialog response supplied to tellasker (result-arrival fact; clears this pending callee)
|
|
1385
1382
|
|
|
1386
|
-
opt Asker
|
|
1387
|
-
Asker-->>Asker: set needsDrive=true (
|
|
1383
|
+
opt Asker has a result-arrival drive source
|
|
1384
|
+
Asker-->>Asker: set needsDrive=true (result-arrival handling)
|
|
1388
1385
|
end
|
|
1389
1386
|
```
|
|
1390
1387
|
|
|
@@ -1426,7 +1423,7 @@ sequenceDiagram
|
|
|
1426
1423
|
Asker->>Side: createSideDialog()
|
|
1427
1424
|
Side->>Store: recordQuestionForHuman()
|
|
1428
1425
|
Side-->>UI: questions_count_update (sideDialog)
|
|
1429
|
-
Asker-->>Asker:
|
|
1426
|
+
Asker-->>Asker: records background callee work; only Q4H is a user-wait blocker
|
|
1430
1427
|
|
|
1431
1428
|
User->>UI: select sideDialog Q4H
|
|
1432
1429
|
User->>Asker: drive_dialog_by_user_answer(targetSideDialogId)
|
|
@@ -1435,7 +1432,7 @@ sequenceDiagram
|
|
|
1435
1432
|
Side->>Store: clearQuestions4HumanState()
|
|
1436
1433
|
Side-->>Side: driveDialogStream(answer)
|
|
1437
1434
|
Side->>Store: write response.yaml
|
|
1438
|
-
Side-->>Asker: supply
|
|
1435
|
+
Side-->>Asker: supply result-arrival fact
|
|
1439
1436
|
```
|
|
1440
1437
|
|
|
1441
1438
|
### 3. Registered SideDialog Tellask (TYPE B / `Tellask Session` / Registered Session Tellask)
|
|
@@ -1449,14 +1446,14 @@ sequenceDiagram
|
|
|
1449
1446
|
Main->>Store: lookup registry key "researcher!market"
|
|
1450
1447
|
alt not found
|
|
1451
1448
|
Main->>Store: create sideDialog + save registry.yaml
|
|
1452
|
-
Main->>Side: drive (
|
|
1449
|
+
Main->>Side: drive (background callee work)
|
|
1453
1450
|
else found
|
|
1454
1451
|
Main->>Store: load sideDialog + update lastAccessed
|
|
1455
|
-
Main->>Side: drive (
|
|
1452
|
+
Main->>Side: drive (background callee work)
|
|
1456
1453
|
end
|
|
1457
1454
|
|
|
1458
1455
|
Side->>Store: write response.yaml
|
|
1459
|
-
Side-->>Main: supply
|
|
1456
|
+
Side-->>Main: supply result-arrival fact
|
|
1460
1457
|
```
|
|
1461
1458
|
|
|
1462
1459
|
### 4. Clarity Operations Preserve Registry
|