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
|
@@ -7,17 +7,16 @@
|
|
|
7
7
|
Dominds 主线对话旨在长期运行。主线对话"停止"(变为空闲)通常不是操作员想要的:他们希望智能体持续推进,直到:
|
|
8
8
|
|
|
9
9
|
- 合法地暂停等待人类决策(Q4H),或
|
|
10
|
-
-
|
|
10
|
+
- 没有其它本地可推进事项,只保留后台被诉请者事实(pending tellask/backfill)。
|
|
11
11
|
|
|
12
12
|
本文档指定两个相关但不同的运行时控制:
|
|
13
13
|
|
|
14
|
-
-
|
|
15
|
-
- **支线 quirk 恢复续推**:当 provider/API quirk 明确给出一次性 `diligence_push_once` 恢复动作时,支线对话可使用运行时内置模板续推,但仅限当前存在活跃回贴义务(active reply obligation)的场景;模板必须点名运行时确认的唯一 `replyTellask*` 工具。
|
|
14
|
+
- **自动续推注入**:仅针对**主线对话**,当驱动程序即将停止、且没有 Q4H 或 pending active callee dispatch 时,运行时会自动发送一个简短的鞭策语(渲染为正常的用户气泡)并继续生成。pending tellask 是后台被诉请者事实,不是阻塞态;但在没有其它具体驱动来源时,它表示主线已经到达可 idle 的后台等待边界,不应靠鞭策语保持主线空转。
|
|
16
15
|
- **强制工具调用控制**:对于普通的主线/支线对话轮次,`鞭策` 勾选项控制本轮 provider 请求是否必须通过 Dominds 工具结束。勾选时,模型应通过 `askHuman`、`tellask*`、`replyTellask*` 或其他运行时函数完成这一轮,而不是用普通文本直接收尾。FBR 中间轮是刻意例外:它们可以处于无可调用工具状态;FBR 收口阶段则必须调用两个结论工具之一。
|
|
17
16
|
|
|
18
17
|
## 目标
|
|
19
18
|
|
|
20
|
-
-
|
|
19
|
+
- 防止主线对话停止,除非处于 Q4H 等真正等待用户输入的状态,或已自然没有本地可推进事项。
|
|
21
20
|
- 保持行为可预测和有界(无无限循环)。
|
|
22
21
|
- 使鞭策语文本可按 rtws(运行时工作区)和语言配置。
|
|
23
22
|
- 提供清晰的用户控制的"禁用"机制。
|
|
@@ -25,7 +24,7 @@ Dominds 主线对话旨在长期运行。主线对话"停止"(变为空闲)
|
|
|
25
24
|
## 非目标
|
|
26
25
|
|
|
27
26
|
- 自动完成/自动将对话标记为完成。
|
|
28
|
-
-
|
|
27
|
+
- 将鞭策语注入应用于支线对话。支线对话应由普通业务事实继续推进,或向诉请者回贴;非本意的直接回复停止由 direct-reply fallback 与 caller 后续判断处理。
|
|
29
28
|
|
|
30
29
|
## 定义
|
|
31
30
|
|
|
@@ -49,20 +48,17 @@ Dominds 主线对话旨在长期运行。主线对话"停止"(变为空闲)
|
|
|
49
48
|
|
|
50
49
|
### 触发条件(必须全部满足)
|
|
51
50
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
- 没有待处理的 Q4H
|
|
55
|
-
-
|
|
51
|
+
- 对话是**主线对话**。
|
|
52
|
+
- 对话没有会合法停止自动续推的等待事实:
|
|
53
|
+
- 没有待处理的 Q4H。
|
|
54
|
+
- 没有 pending active callee dispatch。
|
|
56
55
|
- 驱动程序即将停止生成循环(即没有工具/函数输出需要另一次迭代)。
|
|
57
56
|
|
|
58
|
-
###
|
|
57
|
+
### provider 死锁恢复
|
|
59
58
|
|
|
60
59
|
某些 provider/API quirk 在识别到已知的 same-context deadlock,并停止沿用同一上下文自动重试后,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
可能正发生在函数结果驱动的生成轮次里。
|
|
64
|
-
|
|
65
|
-
支线对话也可使用这条恢复路径,但必须满足当前仍有活跃回贴义务(active reply obligation);否则不注入鞭策语,保留 retry stopped 状态交给人类处理。支线恢复模板不读取 rtws diligence 文件,而是使用内置双语模板,包含当前时间、当前诉请目标,并点名运行时已确认的唯一 `replyTellask*` 工具(例如 `replyTellaskSessionless({ replyContent })`),禁止让 LLM 自行猜测 reply 变体。Q4H 仍然是硬阻塞条件。
|
|
60
|
+
会请求一次性的鞭策恢复。这不是普通的“对话即将空转停止”路径,但仍必须遵守同一条后台等待边界:
|
|
61
|
+
鞭策恢复注入仅作用于主线对话,且 pending active callee dispatch 会否决这一次鞭策注入。active callee dispatch 是后台被诉请者事实,不是 caller 的阻塞态;它允许 caller 因其它具体事实继续推进,但不能单独成为“保持主线 drive”的理由。支线对话 retry-stopped 恢复不注入鞭策语;后续由普通业务事实、direct-reply fallback 或 caller 的下一步判断决定。
|
|
66
62
|
|
|
67
63
|
### 操作
|
|
68
64
|
|
|
@@ -138,12 +134,11 @@ members:
|
|
|
138
134
|
|
|
139
135
|
在 kernel driver 循环中实现(`dominds/main/llm/kernel-driver/drive.ts`),作为迭代后的小检查:
|
|
140
136
|
|
|
141
|
-
1.
|
|
142
|
-
即那一次恢复专用的鞭策可忽略 pending sideDialog。
|
|
137
|
+
1. 如果对话正在等待 Q4H,或仍有 pending active callee dispatch,则停止。active callee dispatch 是后台被诉请者事实,不是 caller 的阻塞态;但在没有其它具体驱动来源时,它是自然 idle 边界,不能触发鞭策注入。
|
|
143
138
|
2. 如果有任何工具反馈,则正常继续。
|
|
144
139
|
3. 否则尝试 diligence-push 自动继续:
|
|
145
140
|
- 主线对话:按 rtws diligence 文件 / 内置回退文本解析并续推。
|
|
146
|
-
-
|
|
141
|
+
- 支线对话:不注入鞭策语。
|
|
147
142
|
- 如果禁用 → 正常停止。
|
|
148
143
|
- 如果预算耗尽 → 发出一条仅用于提示的 UI 信息,并停止继续自动鞭策当前预算。
|
|
149
144
|
- 否则 → 自动发送鞭策语并继续。
|
|
@@ -176,9 +171,9 @@ members:
|
|
|
176
171
|
|
|
177
172
|
- 主线对话:仅工具输出 → 鞭策语注入 → 继续响应
|
|
178
173
|
- 主线对话:空助手输出 → 鞭策语注入 → 继续响应
|
|
174
|
+
- 主线对话:只派发 pending tellask / active callee dispatch → 无鞭策语注入,保留后台状态并自然 idle
|
|
179
175
|
- 支线对话:普通 idle 无鞭策语注入
|
|
180
|
-
- 支线对话:provider quirk recovery
|
|
181
|
-
- 支线对话:provider quirk recovery + 无活跃回贴义务 → 不注入,保留 stopped/giveup 给人类处理
|
|
176
|
+
- 支线对话:provider quirk recovery 无鞭策语注入;由 direct-reply fallback 或 caller 判断后续业务动作
|
|
182
177
|
- rtws 配置:
|
|
183
178
|
- 当语言特定文件缺失时,`.minds/diligence.md` 被遵守
|
|
184
179
|
- 空的鞭策语文件禁用 diligence-push
|
|
@@ -119,21 +119,23 @@ Dominds 里主要有三种协作诉请:
|
|
|
119
119
|
- 只需要一次性取证、跑一次命令、给一份审阅结果,用 **一次性诉请**
|
|
120
120
|
- 支线发现关键信息缺失,不能猜,就用 **回问诉请**
|
|
121
121
|
|
|
122
|
-
### 4.
|
|
122
|
+
### 4. 协作不是“发消息就结束”,而是后台事实与结果到达
|
|
123
123
|
|
|
124
|
-
Dominds
|
|
124
|
+
Dominds 的关键特征之一,是诉请后的运行态会显式管理 caller / callee 关系:
|
|
125
125
|
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
126
|
+
- pending tellask 是 caller 的后台被诉请者事实,不表示 caller 被阻塞
|
|
127
|
+
- callee 如需澄清,用 `tellaskBack` 回问当前 caller
|
|
128
|
+
- Q4H 是正式等待用户回答的阻塞点
|
|
129
|
+
- 回贴到达会成为 caller 的新事实,并可触发 caller 处理结果
|
|
129
130
|
- 回贴会回到“当前诉请者”
|
|
130
131
|
|
|
131
132
|
因此,从外部智能体的视角,Dominds 协作设计要考虑的不是“谁给谁发消息”,而是:
|
|
132
133
|
|
|
133
134
|
- 谁拥有当前任务真相
|
|
134
|
-
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
135
|
+
- 当前诉请链路上的 caller / callee 分别是谁
|
|
136
|
+
- 哪些事项只是后台进行中,哪些事项真的需要用户回答
|
|
137
|
+
- 谁有权维护差遣牒并继续整体编排
|
|
138
|
+
- 哪个 dispatch batch 的回贴会被路由回哪条工作线
|
|
137
139
|
|
|
138
140
|
### 5. 向人请示(Q4H)是正式阻塞点
|
|
139
141
|
|
|
@@ -200,7 +202,7 @@ Q4H 不是“顺手问一句”,而是一个正式的待答问题:
|
|
|
200
202
|
|
|
201
203
|
- 谁作为 `default_responder`
|
|
202
204
|
- 谁负责维护差遣牒
|
|
203
|
-
-
|
|
205
|
+
- 谁负责汇总 callee 回贴并继续整体推进
|
|
204
206
|
|
|
205
207
|
然后再配置其他成员,例如:
|
|
206
208
|
|
|
@@ -302,7 +304,7 @@ Q4H 不是“顺手问一句”,而是一个正式的待答问题:
|
|
|
302
304
|
- 主线职责:
|
|
303
305
|
- 冻结 goals / constraints / progress
|
|
304
306
|
- 决定派工
|
|
305
|
-
-
|
|
307
|
+
- 汇总 callee 结果
|
|
306
308
|
- 必要时发起 Q4H
|
|
307
309
|
|
|
308
310
|
## 成员清单
|
|
@@ -68,6 +68,9 @@
|
|
|
68
68
|
- EN: These are **Tellask roles**, not hierarchy; the tellasker may or may not be the structural askerDialog.
|
|
69
69
|
- ZH: 这是一次诉请的**角色关系**,不是层级关系;诉请者可能是也可能不是结构上的 askerDialog。
|
|
70
70
|
|
|
71
|
+
- EN: Use **Main Dialog / Side Dialog** for lifecycle, navigation, archival, Taskdoc ownership, and storage topology. Use **tellasker/tellaskee** or **caller/callee** for who asked whom, who owes a reply, result arrival, and continuation decisions.
|
|
72
|
+
- ZH: **主线对话 / 支线对话**只用于生命周期、导航、归档、差遣牒职责与存储拓扑。表达“谁诉请谁、谁欠回贴、结果到达、是否继续推进”时,使用**诉请者/被诉请者**或 **caller/callee**。
|
|
73
|
+
|
|
71
74
|
- EN (cross-reference): In implementation-facing docs/code, the standard class/concept names are `MainDialog` / `main dialog` for **Main Dialog**, and `SideDialog` / `sideDialog` for **Side Dialog**. `rootId` remains a structural identifier field, not the user-facing term.
|
|
72
75
|
- ZH(交叉说明): 在系统实现语境(文档/代码)中,标准类名/概念名是 **MainDialog / main dialog(主线对话)** 与 **SideDialog / sideDialog(支线对话)**。`rootId` 仍是结构标识字段,不是对外术语。
|
|
73
76
|
|
|
@@ -277,8 +280,8 @@ Example / 示例(概念):
|
|
|
277
280
|
|
|
278
281
|
### Skill(技能文档)
|
|
279
282
|
|
|
280
|
-
- EN: A **Skill** is a pure-Markdown capability asset under `.minds/skills
|
|
281
|
-
- ZH: **Skill(技能文档)**是 `.minds/skills/**` 下的纯 Markdown
|
|
283
|
+
- EN: A **Skill** is a pure-Markdown capability asset under `.minds/skills/**`. Dominds injects a skill index into prompts, and agents read skill bodies on demand with `read_skill`. Skills are best for soft guidance, checklists, heuristics, and team-specific methods.
|
|
284
|
+
- ZH: **Skill(技能文档)**是 `.minds/skills/**` 下的纯 Markdown 能力资产。Dominds 会把 skill 索引注入提示词,智能体按需通过 `read_skill` 读取正文。Skill 适合承载软性指导、检查清单、判断口诀与团队特定方法学。
|
|
282
285
|
|
|
283
286
|
- EN: A Skill is **not** an installable App and is **not** the right term for a tool-coupled product capability. Frontmatter such as `allowed-tools` is compatibility metadata, not automatic authorization.
|
|
284
287
|
- ZH: Skill **不是**可安装的 App,也**不是**带稳定工具契约的产品能力包的正确叫法。诸如 `allowed-tools` 的 frontmatter 只是兼容/迁移元数据,不代表自动授权。
|
|
@@ -104,7 +104,7 @@ After the aggregation window, the driver must re-read persistence and verify:
|
|
|
104
104
|
- display state is still `idle_waiting_user`
|
|
105
105
|
- execution marker is not dead and not an interrupted state requiring human resume
|
|
106
106
|
- no pending Q4H exists
|
|
107
|
-
- no blocking
|
|
107
|
+
- no blocking active callee dispatch exists
|
|
108
108
|
- no active run exists
|
|
109
109
|
|
|
110
110
|
Only then may the driver continue with the wake prompt. Otherwise the wake is dropped, while owner idempotence/state updates may still be retained.
|
|
@@ -104,7 +104,7 @@ driver 不应在第一个 wake event 到达后立刻 drive。它应:
|
|
|
104
104
|
- display state 仍是 `idle_waiting_user`
|
|
105
105
|
- execution marker 不是 dead,也不是需要人工 resume 的 interrupted
|
|
106
106
|
- 没有 pending Q4H
|
|
107
|
-
- 没有 blocking
|
|
107
|
+
- 没有 blocking active callee dispatch
|
|
108
108
|
- 当前没有 active run
|
|
109
109
|
|
|
110
110
|
只有这些条件都满足,才允许以 wake prompt 继续驱动。否则丢弃本次 wake,并只保留 owner 的幂等/状态更新。
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Tellask 后台续推与状态推送现场 bug 记录(2026-05-17)
|
|
2
|
+
|
|
3
|
+
本文记录 `tellask-background-continuation-refactor.zh.md` 重构过程中暴露的现场 bug,避免后续实现时遗失上下文。中文语义为准。
|
|
4
|
+
|
|
5
|
+
## 0. 统一原则
|
|
6
|
+
|
|
7
|
+
- caller/callee 是运行时业务关系,不是父子层级关系。实现命名已开始把 `parentDialog` 收敛为 `callerDialog`;剩余历史命名只应出现在明确的旧语义说明或尚未触达的内部实现细节中。
|
|
8
|
+
- 任何会影响前端 badge / run-control / dialog list 的 dialog 状态变化,都必须有实时广播事件或全局状态推送,不能只依赖下一次列表刷新。
|
|
9
|
+
- backend loop 不能全量扫描 root 下所有历史支线。root 长期运行并累积成千上万个支线是正常场景;需要维护 root-local 精确 watch index,只记录当前需要监护的支线子集。
|
|
10
|
+
- recoverable 一致性问题优先保活:日志要 loud,带 rootId/selfId/course/genseq/callId/batchId 等结构化字段;能继续对话时不要 hard stop。
|
|
11
|
+
|
|
12
|
+
## 1. 鞭策机制在 active callee 存在时误发
|
|
13
|
+
|
|
14
|
+
症状:
|
|
15
|
+
|
|
16
|
+
- root dialog 正在等待 active callee 时,不应注入鞭策语保持主线空转。
|
|
17
|
+
- UI 把“鞭策”从未勾选改为勾选状态时,也会触发鞭策发送,即使对应 root dialog 正在等 active callee。
|
|
18
|
+
|
|
19
|
+
期望:
|
|
20
|
+
|
|
21
|
+
- 统一到一个判断函数:只要 dialog 有 pending active callee / background callee boundary,Diligence Push 不应成为主线续推动力。
|
|
22
|
+
- “勾选鞭策”只影响可调用工具约束,不绕过 active callee gate。
|
|
23
|
+
|
|
24
|
+
## 2. caller/callee badge 与状态推送不及时
|
|
25
|
+
|
|
26
|
+
症状:
|
|
27
|
+
|
|
28
|
+
- root 开始 tellask 后,dialog list 节点没有自动打上“电话听筒” badge。
|
|
29
|
+
- 所有 callee 都已回复后,caller 节点仍未去掉 badge。
|
|
30
|
+
- 对支线宣布卡死后,其 caller 应去掉 badge,但 UI 没刷新。
|
|
31
|
+
- 支线等待自己的 callee 时,疑似被主线 caller 的停止状态污染,显示“已停止(可继续)”。
|
|
32
|
+
|
|
33
|
+
当前修复方向:
|
|
34
|
+
|
|
35
|
+
- 新增 `dlg_background_callee_summary_evt`,在 active callee 增删、resolve、declare-dead 路径广播 pending 数量。
|
|
36
|
+
- 前端收到该事件后更新 running dialog list 的 `backgroundCalleeDialogCount` / `backgroundFreshBootsReasoningCalleeCount`。
|
|
37
|
+
- 已覆盖 root tellask 开始、callee resolve、registered tellask 替换旧 owner、declare-dead 重试等高风险路径;后续新增 active-callee mutation 时必须同步维护 summary 广播。
|
|
38
|
+
- 回归脚本:`kernel-driver:root-tellask-background-callee-badge-event`。
|
|
39
|
+
|
|
40
|
+
## 3. duplicate pending replyDelivery 不应 hard stop
|
|
41
|
+
|
|
42
|
+
现场样本:
|
|
43
|
+
|
|
44
|
+
- rtws: `/ws/AiWorks/daowei2026/chatgpt-workstation/.dialogs`
|
|
45
|
+
- error:
|
|
46
|
+
`persistTellaskCall invariant violation: duplicate pending reply delivery (rootId=cb/d9/30f2a99b, selfId=09/62/31c3bfab, existing=tool_UAU0mx13ap5tS7oheJQ5bTEN, incoming=tool_Uw5ITM0NrLfYD6Dh6s6quXoB)`
|
|
47
|
+
|
|
48
|
+
已定位根因:
|
|
49
|
+
|
|
50
|
+
- callee 已写 `tellask_reply_resolution_record` 和 response anchor,但 `latest.replyDelivery.status` 仍停在 `pending`。
|
|
51
|
+
- 后续同一支线产生新的 `replyTellask*` 时,被误判为 duplicate pending delivery。
|
|
52
|
+
|
|
53
|
+
期望:
|
|
54
|
+
|
|
55
|
+
- 成功交付 reply 后同步 `markReplyDeliveryDelivered()`。
|
|
56
|
+
- 如果遇到 stale pending replyDelivery,而新 reply call 对应当前有效 reply obligation,应 loud warn 并替换 pending delivery,继续对话。
|
|
57
|
+
|
|
58
|
+
## 4. 支线 caller 收到 callee 回贴后没有 revive
|
|
59
|
+
|
|
60
|
+
现场样本:
|
|
61
|
+
|
|
62
|
+
- rtws: `/ws/AiWorks/daowei2026/chatgpt-workstation/.dialogs`
|
|
63
|
+
- caller dialog: `rootId=cb/d9/30f2a99b selfId=3e/d1/31cc4b41`
|
|
64
|
+
- callee dialog: `selfId=7e/c5/31decb1f`
|
|
65
|
+
- UI link: `course=1&genseq=3&rootId=cb%2Fd9%2F30f2a99b&selfId=7e%2Fc5%2F31decb1f`
|
|
66
|
+
|
|
67
|
+
现场事实:
|
|
68
|
+
|
|
69
|
+
- callee `7e/c5/31decb1f` 在 course 1 genseq 3 调用了 `replyTellaskSessionless`。
|
|
70
|
+
- caller `3e/d1/31cc4b41/course-001.jsonl` 已写入 `tellask_result_record`。
|
|
71
|
+
- caller `latest.yaml` 仍有:
|
|
72
|
+
- `nextStep.triggers[0].kind = result_arrival`
|
|
73
|
+
- `batchId = dispatch:cb/d9/30f2a99b:3e/d1/31cc4b41:c1:g34`
|
|
74
|
+
- caller `active-callees.json` 中对应 batch 已是 `resolved/final`,但仍未进入下一轮 generation。
|
|
75
|
+
|
|
76
|
+
当前判断:
|
|
77
|
+
|
|
78
|
+
- root backend loop 只照顾 root dialog,不扫描支线 `latest.nextStep`。
|
|
79
|
+
- 支线 caller 的 revive 依赖 `supplyResponseToAskerDialog()` 当场直接 `scheduleDrive(callerDialog)`;一旦 fire-and-forget drive 丢失、被 gate 拦截、实例不是 live,durable `result_arrival` 没有后续兜底。
|
|
80
|
+
|
|
81
|
+
目标修复:
|
|
82
|
+
|
|
83
|
+
- 维护 root-local `drive-watch.json`,只记录需要 backend 监护的支线 selfId 子集。
|
|
84
|
+
- 当支线写入 `nextStep` trigger、open generation 或未完成 `replyDelivery` 时加入 watch;当 trigger 消费、generation closed 且 replyDelivery 完整 recorded 后移除。
|
|
85
|
+
- backend loop 仍由 root wake 唤醒,但只扫描 root 本身 + `drive-watch.json` 中的支线,不全量遍历历史支线目录。
|
|
86
|
+
- 支线 `result_arrival` 写入后应 wake root backend loop,保证 durable trigger 可恢复。
|
|
87
|
+
- 回归脚本:`kernel-driver:sideDialog-caller-result-arrival-backend-watch`。
|
|
88
|
+
|
|
89
|
+
## 5. 文档/实现状态需更新
|
|
90
|
+
|
|
91
|
+
文档位置:
|
|
92
|
+
|
|
93
|
+
- `docs/tellask-background-continuation-refactor.zh.md`
|
|
94
|
+
|
|
95
|
+
需要同步:
|
|
96
|
+
|
|
97
|
+
- kernel-driver 已基本不再用 course JSONL 作为 active callee / reply recovery 运行源。
|
|
98
|
+
- `latest.tellaskResults`、`replyDelivery`、`active-callees.json`、`nextStep.triggers`、drive watch index 是目标运行源。
|
|
99
|
+
- `needsDrive` projection 已删除;`backend_queue` 旧术语仍需继续收敛为显式 next-step API。
|
|
100
|
+
- malformed 边界仍未完全完成:`nextStep` 缺失仍会初始化,尚未做到所有必要状态机元信息缺失均转 malformed。
|
|
101
|
+
- `sideDialog_created_evt` wire 字段已从 `parentDialog` / `parentBackground...` 收敛为 `callerDialog` / `callerBackground...`。
|
|
@@ -26,6 +26,7 @@ Expected behavior:
|
|
|
26
26
|
- Prompt arguments are collected by the UI before insertion when the prompt declares arguments.
|
|
27
27
|
- MCP prompt snippets cannot be edited or saved back through Dominds.
|
|
28
28
|
- Prompt IDs are Dominds-local stable IDs derived from server ID plus transformed MCP prompt name.
|
|
29
|
+
- Prompt IDs use the server-level transform unless `prompts.transform` overrides it.
|
|
29
30
|
|
|
30
31
|
This keeps prompts user-selected while reusing the existing Dominds snippet workflow.
|
|
31
32
|
|
|
@@ -40,6 +41,7 @@ Resource entries:
|
|
|
40
41
|
- Static resource IDs are derived from the resource URI after configured transforms.
|
|
41
42
|
- Template resource IDs are derived from the URI template after configured transforms.
|
|
42
43
|
- The original URI or URI template remains the source of truth used for MCP requests.
|
|
44
|
+
- Resource IDs use the server-level transform unless `resources.transform` overrides it.
|
|
43
45
|
|
|
44
46
|
The resource registry is intentionally separate from Dominds files, docs, and memory. Those
|
|
45
47
|
domains keep their existing dedicated concepts. The resource registry is the generic MCP-shaped
|
|
@@ -67,6 +69,8 @@ Rules:
|
|
|
67
69
|
- The frontmatter must pass the same validation as local Dominds skills.
|
|
68
70
|
- Resource skills are read-only and keep MCP provenance.
|
|
69
71
|
- Invalid or duplicate resource skills are reported loudly through Problems/logs.
|
|
72
|
+
- Resource skill IDs use the nearest enclosing transform: `resources.skills.transform` overrides
|
|
73
|
+
`resources.transform`, which overrides the server-level default.
|
|
70
74
|
|
|
71
75
|
Dominds skills are loaded as an index in the system prompt. Skill bodies are read on demand with
|
|
72
76
|
`read_skill`, so resource skills do not inflate every generation by default.
|
|
@@ -84,11 +88,14 @@ servers:
|
|
|
84
88
|
headers:
|
|
85
89
|
Authorization: Bearer dw
|
|
86
90
|
|
|
91
|
+
transform:
|
|
92
|
+
- prefix: 'workstation_'
|
|
93
|
+
|
|
87
94
|
prompts:
|
|
88
95
|
whitelist:
|
|
89
96
|
- 'workstation.*'
|
|
90
|
-
transform:
|
|
91
|
-
|
|
97
|
+
# transform:
|
|
98
|
+
# - prefix: 'prompt_'
|
|
92
99
|
|
|
93
100
|
resources:
|
|
94
101
|
whitelist:
|
|
@@ -96,8 +103,8 @@ servers:
|
|
|
96
103
|
- 'workstation-skill://*'
|
|
97
104
|
blacklist:
|
|
98
105
|
- '*secret*'
|
|
99
|
-
transform:
|
|
100
|
-
|
|
106
|
+
# transform:
|
|
107
|
+
# - prefix: 'resource_'
|
|
101
108
|
mimeTypes:
|
|
102
109
|
- text/markdown
|
|
103
110
|
- text/plain
|
|
@@ -106,8 +113,8 @@ servers:
|
|
|
106
113
|
enabled: true
|
|
107
114
|
whitelist:
|
|
108
115
|
- 'workstation-skill://*'
|
|
109
|
-
transform:
|
|
110
|
-
|
|
116
|
+
# transform:
|
|
117
|
+
# - prefix: 'skill_'
|
|
111
118
|
```
|
|
112
119
|
|
|
113
120
|
Filtering matches original MCP names/URIs/templates. Transforms only produce Dominds-local IDs.
|
package/dist/docs/mcp-support.md
CHANGED
|
@@ -208,7 +208,7 @@ into Dominds’ tool system, and therefore can never be presented to agents for
|
|
|
208
208
|
|
|
209
209
|
- Patterns use simple wildcard matching with `*` (match any substring).
|
|
210
210
|
- Matching is evaluated against the **original MCP tool name** (before rename transforms). This
|
|
211
|
-
keeps filters stable even if
|
|
211
|
+
keeps filters stable even if ID transforms change.
|
|
212
212
|
|
|
213
213
|
### Semantics
|
|
214
214
|
|
|
@@ -224,15 +224,16 @@ into Dominds’ tool system, and therefore can never be presented to agents for
|
|
|
224
224
|
- Tools that match neither `whitelist` nor `blacklist` are registered (i.e. whitelist does not
|
|
225
225
|
restrict the universe when a blacklist is present).
|
|
226
226
|
|
|
227
|
-
##
|
|
227
|
+
## ID Transforms
|
|
228
228
|
|
|
229
|
-
Transforms are applied to
|
|
229
|
+
Transforms are applied to MCP-derived IDs to produce Dominds-local IDs.
|
|
230
230
|
|
|
231
231
|
### Why transforms exist
|
|
232
232
|
|
|
233
|
-
- MCP servers frequently expose short/common
|
|
234
|
-
collide across servers and with built-ins.
|
|
235
|
-
- Dominds tool names
|
|
233
|
+
- MCP servers frequently expose short/common IDs (`open`, `search`, `list`, handbook URIs, prompt
|
|
234
|
+
names, …) that can collide across servers and with built-ins.
|
|
235
|
+
- Dominds tool names, prompt IDs, resource IDs, and virtual skill IDs are global within their
|
|
236
|
+
registries, so IDs must be made unique and recognizable.
|
|
236
237
|
|
|
237
238
|
### Supported transforms
|
|
238
239
|
|
|
@@ -257,6 +258,11 @@ Notes:
|
|
|
257
258
|
- `prefix: "x_"` always adds `x_` in front of the current name.
|
|
258
259
|
- `prefix: { remove, add }` removes the specified leading substring if present, then adds `add`.
|
|
259
260
|
- `suffix: "_x"` always appends `"_x"` to the current name.
|
|
261
|
+
- `servers.<serverId>.transform` is the default transform for every MCP-derived Dominds ID from
|
|
262
|
+
that server: tools, prompts, resources/resource templates, and resource skills.
|
|
263
|
+
- Nested `tools.transform`, `prompts.transform`, `resources.transform`, and
|
|
264
|
+
`resources.skills.transform` override the enclosing transform for that surface. They do not stack
|
|
265
|
+
with it. An explicit `transform: []` means “no transform for this surface”.
|
|
260
266
|
|
|
261
267
|
## Tool Name Validity (Reject Invalid Names)
|
|
262
268
|
|
|
@@ -441,13 +447,16 @@ servers:
|
|
|
441
447
|
# headers: {} # optional (supports literal, { env: NAME }, or { prefix, env } values)
|
|
442
448
|
# sessionId: '' # optional
|
|
443
449
|
|
|
450
|
+
# Default ID transforms for all MCP-derived Dominds IDs from this server (optional).
|
|
451
|
+
# Nested transforms under tools/prompts/resources/resources.skills override this default.
|
|
452
|
+
transform: []
|
|
453
|
+
|
|
444
454
|
# Tool exposure controls
|
|
445
455
|
tools:
|
|
446
456
|
whitelist: [] # optional
|
|
447
457
|
blacklist: [] # optional
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
transform: []
|
|
458
|
+
# Optional tool-only override; explicit [] disables the top-level transform for tools.
|
|
459
|
+
# transform: []
|
|
451
460
|
|
|
452
461
|
# Optional enhanced manual information; omitting it is allowed but emits a Problems warning.
|
|
453
462
|
# - contentFile: formal runtime manual for man({ "toolsetId": "<serverId>" });
|
|
@@ -164,7 +164,7 @@ Dominds 已经通过提供者支持结构化的"函数调用",包括参数验
|
|
|
164
164
|
### 模式规则
|
|
165
165
|
|
|
166
166
|
- 模式使用简单的通配符匹配,使用 `*`(匹配任何子字符串)。
|
|
167
|
-
- 匹配针对**原始 MCP
|
|
167
|
+
- 匹配针对**原始 MCP 工具名称**评估(在 ID 转换之前)。这使过滤器保持稳定,即使 ID 转换发生变化。
|
|
168
168
|
|
|
169
169
|
### 语义
|
|
170
170
|
|
|
@@ -177,14 +177,14 @@ Dominds 已经通过提供者支持结构化的"函数调用",包括参数验
|
|
|
177
177
|
- 匹配任何 `blacklist` 模式的工具永远不会被注册,**除非**它们也匹配 `whitelist`(白名单覆盖黑名单用于精选)。
|
|
178
178
|
- 既不匹配 `whitelist` 也不匹配 `blacklist` 的工具会被注册(即当黑名单存在时,白名单不限制范围)。
|
|
179
179
|
|
|
180
|
-
##
|
|
180
|
+
## ID 转换
|
|
181
181
|
|
|
182
|
-
转换应用于 MCP
|
|
182
|
+
转换应用于 MCP 派生 ID,用于生成 Dominds 本地 ID。
|
|
183
183
|
|
|
184
184
|
### 为什么存在转换
|
|
185
185
|
|
|
186
|
-
- MCP
|
|
187
|
-
- Dominds
|
|
186
|
+
- MCP 服务器经常暴露短/常见的 ID(`open`、`search`、`list`、手册 URI、prompt 名称……),这些 ID 可能在服务器之间冲突并与内置能力冲突。
|
|
187
|
+
- Dominds 的工具名称、prompt ID、resource ID、虚拟 skill ID 在各自 registry 内是全局的,因此 ID 必须唯一且可识别。
|
|
188
188
|
|
|
189
189
|
### 支持的转换
|
|
190
190
|
|
|
@@ -209,6 +209,8 @@ transform:
|
|
|
209
209
|
- `prefix: "x_"` 始终在当前名称前面添加 `x_`。
|
|
210
210
|
- `prefix: { remove, add }` 删除指定的前导子字符串(如果存在),然后添加 `add`。
|
|
211
211
|
- `suffix: "_x"` 始终将 `"_x"` 附加到当前名称。
|
|
212
|
+
- `servers.<serverId>.transform` 是该 server 派生出的所有 Dominds ID 的默认转换:tools、prompts、resources/resource templates、resource skills 都默认使用它。
|
|
213
|
+
- 内层 `tools.transform`、`prompts.transform`、`resources.transform`、`resources.skills.transform` 会覆盖外层转换,不会与外层叠加。显式 `transform: []` 表示该 surface 不做转换。
|
|
212
214
|
|
|
213
215
|
## 工具名称有效性(拒绝无效名称)
|
|
214
216
|
|
|
@@ -359,13 +361,16 @@ servers:
|
|
|
359
361
|
# headers: {} # 可选(支持字面量、{ env: NAME } 或 { prefix, env } 值)
|
|
360
362
|
# sessionId: '' # 可选
|
|
361
363
|
|
|
364
|
+
# 该 server 派生出的所有 Dominds ID 的默认转换(可选)。
|
|
365
|
+
# tools/prompts/resources/resources.skills 下的内层 transform 会覆盖这个默认值。
|
|
366
|
+
transform: []
|
|
367
|
+
|
|
362
368
|
# 工具暴露控制
|
|
363
369
|
tools:
|
|
364
370
|
whitelist: [] # 可选
|
|
365
371
|
blacklist: [] # 可选
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
transform: []
|
|
372
|
+
# 可选:仅 tools 的覆盖转换;显式 [] 表示 tools 不使用顶层 transform。
|
|
373
|
+
# transform: []
|
|
369
374
|
|
|
370
375
|
# 可选增强手册;省略时仍可接入,但会产生 Problems warning。
|
|
371
376
|
# - contentFile: 给 man({ "toolsetId": "<serverId>" }) 的正式运行时手册;
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Chinese version: [中文版](./memory-system.zh.md)
|
|
4
4
|
|
|
5
|
-
Dominds’ “memory system” is really **context engineering**: put information into the right container based on stability
|
|
5
|
+
Dominds’ “memory system” is really **context engineering**: put information into the right container based on stability, sharing scope, and execution semantics, so long‑running work stays fast, correct, and transparent to humans.
|
|
6
6
|
|
|
7
7
|
TL;DR:
|
|
8
8
|
|
|
9
9
|
- Make dialog history disposable (noise is cheap to drop).
|
|
10
10
|
- Make key artifacts survivable (you can `clear_mind` and still keep moving).
|
|
11
|
+
- Treat skills as first-class context assets: memory stores facts/indexes/consensus, while skills capture reusable “when to do it, how to do it, and where the boundary is” operating guidance.
|
|
11
12
|
- Publicly declare and openly discuss progress in real time (and keep it auditable) to enforce timely coordination: that’s where the real leverage comes from when multiple agents and multiple Main Dialogs work in parallel (Taskdoc / team memory / env notes).
|
|
12
13
|
|
|
13
14
|
Key rule: **the Taskdoc is the task’s live coordination bulletin board**. Put key decisions/status/next steps in `progress`, hard rules in `constraints`, and don’t leave them only in chat or reminders.
|
|
@@ -23,6 +24,8 @@ Related terminology: [dominds-terminology.md](./dominds-terminology.md)
|
|
|
23
24
|
- [B) Task-term memory: Taskdoc is the single source of truth](#b-task-term-memory-taskdoc-is-the-single-source-of-truth)
|
|
24
25
|
- [C) Short-term memory: dialog history is a buffer, reminders are a working set](#c-short-term-memory-dialog-history-is-a-buffer-reminders-are-a-working-set)
|
|
25
26
|
- [Day-to-day workflow (operational health)](#day-to-day-workflow-operational-health)
|
|
27
|
+
- [Where to write what (quick rules)](#where-to-write-what-quick-rules)
|
|
28
|
+
- [Memory vs skills: selection rules](#memory-vs-skills-selection-rules)
|
|
26
29
|
|
|
27
30
|
---
|
|
28
31
|
|
|
@@ -33,13 +36,17 @@ The same information can be categorized by “who needs to see it / who maintain
|
|
|
33
36
|
- **Individual-scope (per-agent / per-dialog)**:
|
|
34
37
|
- `persona` / `knowhow` / `pitfalls` (role definitions assigned per member)
|
|
35
38
|
- individual memory (`personal_memory`)
|
|
39
|
+
- individual skills (`.minds/skills/individual/<member-id>/...`)
|
|
36
40
|
- dialog history (including tool calls and outputs)
|
|
37
41
|
- reminders (working set / worklog)
|
|
38
42
|
- **Collective-scope (shared by team/task)**:
|
|
39
43
|
- rtws-level “env notes” (`.minds/env*.md`): the workspace’s baseline facts, runtime constraints, and gotchas
|
|
40
44
|
- team memory (`team_memory`)
|
|
45
|
+
- team-shared skills (`.minds/skills/team_shared/...`; the `linkable` pool is a reusable source maintained by team management)
|
|
41
46
|
- Taskdoc: in a healthy workflow, the same Taskdoc is expected to be progressed by multiple Main Dialogs (different Dialog Responders), so treat it as the collective single source of truth
|
|
42
47
|
|
|
48
|
+
Skills and memory are both long-lived context assets, but they are not the same thing: **memory is the storage layer for facts, indexes, and consensus; skills are the execution-guidance layer for reusable prompt skills and operating procedures**. At startup, the runtime lists summaries of visible skills and the model can call `read_skill` for the body when needed. Upstream metadata such as `allowed-tools` is advisory for migration only; it does not grant Dominds tool permissions. Team collaboration SOPs should usually be skills: they should describe collaboration roles, inputs/outputs, escalation rules, synchronization cadence, and acceptance policy instead of making current-workspace paths part of the body.
|
|
49
|
+
|
|
43
50
|
### Permissions and division of labor
|
|
44
51
|
|
|
45
52
|
“Collective memory” does not mean “everyone can edit everything”. A core Dominds principle is social division of labor:
|
|
@@ -59,6 +66,7 @@ This doc uses three time horizons: long-term / task-term / short-term (dialog).
|
|
|
59
66
|
- **Org structure (static definitions)**: `persona` / `knowhow` / `pitfalls`
|
|
60
67
|
- **Team governance (shared)**: team memory
|
|
61
68
|
- **Agent-owned**: individual memory
|
|
69
|
+
- **Reusable skill assets**: individual / team-shared skills (prompt guidance), plus MCP resource skills
|
|
62
70
|
- **B) Task-term memory (survives dialog courses)**
|
|
63
71
|
- **Auto-injected Taskdoc core**: `goals` / `constraints` / `progress`
|
|
64
72
|
- **Extra Taskdoc sections (on-demand recall)**: the fixed `bearinmind/` set (`contracts` / `acceptance` / `grants` / `runbook` / `decisions` / `risks`), plus any task-specific sections (see [encapsulated-taskdoc.md](./encapsulated-taskdoc.md))
|
|
@@ -114,6 +122,31 @@ Key notes:
|
|
|
114
122
|
- Personal memory is automatically isolated on disk under `.minds/memory/individual/<member-id>/...`, so your `path` must NOT include your member id (do not write `<member-id>/...`).
|
|
115
123
|
- If you have zero personal memory entries, just call `add_personal_memory` — the directory will be created automatically.
|
|
116
124
|
|
|
125
|
+
#### 4) Skills: reusable operating capability (prompt skill assets)
|
|
126
|
+
|
|
127
|
+
Skills are for **procedural thinking**, **reusable operating paths**, and **trigger/boundary guidance**. A skill answers “when this class of task appears, how should I handle it?”, not “what facts are currently true in this workspace?”.
|
|
128
|
+
|
|
129
|
+
Common forms:
|
|
130
|
+
|
|
131
|
+
- Individual skill: `.minds/skills/individual/<member-id>/<skill-id>/`
|
|
132
|
+
- Team-shared skill: `.minds/skills/team_shared/<skill-id>/`
|
|
133
|
+
- MCP resource skill: a virtual skill exposed by MCP resources
|
|
134
|
+
|
|
135
|
+
Good skill content:
|
|
136
|
+
|
|
137
|
+
- portable debugging/review/design/acceptance routines
|
|
138
|
+
- team collaboration SOPs, responsibility splits, handoff/escalation/synchronization flows, acceptance and rollback policy
|
|
139
|
+
- task-class procedures, checklists, and failure-recovery strategies
|
|
140
|
+
- applicability, non-applicability, and required permissions/tools/inputs
|
|
141
|
+
|
|
142
|
+
Poor skill content:
|
|
143
|
+
|
|
144
|
+
- current rtws paths, file indexes, architecture facts, or temporary state: use `personal_memory` / `team_memory` / `.minds/env*.md` / Taskdoc instead
|
|
145
|
+
- quasi-real-time task state, next steps, or blockers: use Taskdoc `progress`
|
|
146
|
+
- content that really needs scripts, privileged tools, MCP, external binaries, or reusable execution capability: elevate it into a Dominds app / toolset / teammate contract instead of leaving it as a Markdown skill
|
|
147
|
+
|
|
148
|
+
A useful split: **workspace-coupled facts go to memory; workspace-independent operating methods go to skills**. If an experience contains both, split it: put the portable method in a skill, put this repo’s paths, command entrypoints, and local contracts in memory or env notes, and have the skill say to consult those assets first. If an SOP looks path-heavy, first try to abstract it into generic collaboration concepts; keep paths as binding data, not as the SOP body.
|
|
149
|
+
|
|
117
150
|
### B) Task-term memory: Taskdoc is the single source of truth
|
|
118
151
|
|
|
119
152
|
Taskdocs are the canonical task contract shared by the team. They answer: what we want, what we must not violate, and where we are.
|
|
@@ -219,9 +252,26 @@ The goal for agents’ day-to-day work is not “write more docs”. It’s a lo
|
|
|
219
252
|
- **Team memory `team_memory`**: stable team conventions and invariants (worth reusing)
|
|
220
253
|
- **Env notes `.minds/env*.md`**: rtws baseline facts, runtime constraints, gotchas (align humans + all agents to the same environment)
|
|
221
254
|
- **Individual memory `personal_memory`**: personal preferences + responsibility-area rtws index (keep accurate)
|
|
255
|
+
- **Skills**: reusable operating guidance, checklists, triggers, and boundaries (portable procedure, not a fact warehouse)
|
|
222
256
|
- **Reminders**: short-term, high-frequency details (working set / worklog; delete freely)
|
|
223
257
|
- **Dialog history / tool output**: disposable by default; only keep distilled excerpts, not raw dumps
|
|
224
258
|
|
|
259
|
+
### Memory vs skills: selection rules
|
|
260
|
+
|
|
261
|
+
Ask four questions first:
|
|
262
|
+
|
|
263
|
+
1. **Is it strongly tied to the current workspace?** Exact paths, symbols, interface facts, repo conventions, and rtws runtime constraints belong in memory/env; cross-workspace methods belong in skills.
|
|
264
|
+
2. **Is it a fact or a method?** “File X owns Y” is memory. “When reviewing X-class changes, check A/B/C” is a skill.
|
|
265
|
+
3. **Who needs it?** Stable facts everyone must share go to `team_memory`; team collaboration SOPs and team-wide procedures usually go to team-shared skills. A member’s entry map goes to `personal_memory`; that member’s operating preference goes to an individual skill.
|
|
266
|
+
4. **Does it need real execution capability?** If it needs scripts, permissions, MCP, external binaries, or a stable UI/API, do not leave it as a skill only. Design an app/toolset/teammate contract and keep the skill as the usage/judgment guidance.
|
|
267
|
+
|
|
268
|
+
Additional design considerations:
|
|
269
|
+
|
|
270
|
+
- **Context budget**: memory should be short, exact, and frequently maintained; skills may be longer, but their summaries must help the model decide whether to call `read_skill`.
|
|
271
|
+
- **Staleness cost**: facts that change with the repo should not be hidden inside skills, or skills become a stale knowledge source.
|
|
272
|
+
- **Auditability**: team-shared skills and team memory are team assets and should be maintained by governance roles; personal assets must still be updated when they go stale.
|
|
273
|
+
- **Language and semantics**: when user-facing semantics are involved, follow the project i18n rules; Chinese remains the semantic baseline.
|
|
274
|
+
|
|
225
275
|
### Caution/critical: stop the bleeding first
|
|
226
276
|
|
|
227
277
|
When context health enters **caution/critical** (see [context-health.md](./context-health.md)), don’t keep piling on new inputs:
|