dominds 1.26.2 → 1.26.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/README.zh.md +2 -0
- package/dist/docs/cli-usage.md +1 -1
- package/dist/docs/cli-usage.zh.md +1 -1
- package/dist/llm/gen/mock.js +11 -3
- package/dist/llm/kernel-driver/context-health.d.ts +1 -0
- package/dist/llm/kernel-driver/context-health.js +7 -0
- package/dist/llm/kernel-driver/drive.js +23 -30
- package/dist/llm/kernel-driver/idle-reminder-wake.js +6 -2
- package/dist/llm/kernel-driver/reminder-context.d.ts +25 -0
- package/dist/llm/kernel-driver/reminder-context.js +81 -0
- package/dist/llm/kernel-driver/reply-guidance.js +10 -4
- package/dist/llm/kernel-driver/tellask-special.js +50 -35
- package/dist/mcp/supervisor.js +2 -2
- package/dist/minds/system-prompt-parts.js +30 -30
- package/dist/minds/system-prompt.js +55 -40
- package/dist/persistence.js +15 -1
- package/dist/runtime/driver-messages.d.ts +32 -7
- package/dist/runtime/driver-messages.js +279 -118
- package/dist/runtime/inter-dialog-format.js +24 -12
- package/dist/runtime/reply-prompt-copy.d.ts +8 -8
- package/dist/runtime/reply-prompt-copy.js +69 -38
- package/dist/server/certificates.js +65 -25
- package/dist/tools/mcp.js +12 -12
- package/dist/tools/prompts/control/en/index.md +2 -2
- package/dist/tools/prompts/control/en/principles.md +12 -12
- package/dist/tools/prompts/control/en/scenarios.md +5 -5
- package/dist/tools/prompts/control/en/tools.md +10 -10
- package/dist/tools/prompts/control/zh/index.md +3 -3
- package/dist/tools/prompts/control/zh/principles.md +12 -12
- package/dist/tools/prompts/control/zh/scenarios.md +7 -7
- package/dist/tools/prompts/control/zh/tools.md +11 -11
- package/dist/tools/prompts/mcp_admin/en/principles.md +4 -4
- package/dist/tools/prompts/mcp_admin/en/scenarios.md +1 -1
- package/dist/tools/prompts/mcp_admin/en/tools.md +3 -3
- package/dist/tools/prompts/mcp_admin/zh/principles.md +4 -4
- package/dist/tools/prompts/mcp_admin/zh/scenarios.md +1 -1
- package/dist/tools/prompts/mcp_admin/zh/tools.md +3 -3
- package/dist/tools/team_mgmt-mcp-manual.js +12 -12
- package/package.json +4 -3
- package/webapp/dist/assets/{_basePickBy-DUivPKf7.js → _basePickBy-DTJFxmut.js} +3 -3
- package/webapp/dist/assets/{_basePickBy-DUivPKf7.js.map → _basePickBy-DTJFxmut.js.map} +1 -1
- package/webapp/dist/assets/{_baseUniq-hcs024vD.js → _baseUniq-CVu4lo4P.js} +2 -2
- package/webapp/dist/assets/{_baseUniq-hcs024vD.js.map → _baseUniq-CVu4lo4P.js.map} +1 -1
- package/webapp/dist/assets/{arc-Dr6-FXp5.js → arc-4mEKx1Qr.js} +2 -2
- package/webapp/dist/assets/{arc-Dr6-FXp5.js.map → arc-4mEKx1Qr.js.map} +1 -1
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DXqcDq4R.js → architectureDiagram-2XIMDMQ5-CmUkdSiN.js} +7 -7
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DXqcDq4R.js.map → architectureDiagram-2XIMDMQ5-CmUkdSiN.js.map} +1 -1
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-IIP6LGXS.js → blockDiagram-WCTKOSBZ-CijmZ89y.js} +7 -7
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-IIP6LGXS.js.map → blockDiagram-WCTKOSBZ-CijmZ89y.js.map} +1 -1
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-D_d3F9XD.js → c4Diagram-IC4MRINW-D0GcQMKs.js} +3 -3
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-D_d3F9XD.js.map → c4Diagram-IC4MRINW-D0GcQMKs.js.map} +1 -1
- package/webapp/dist/assets/{channel-CWWjsXtU.js → channel-6pgfGez4.js} +2 -2
- package/webapp/dist/assets/{channel-CWWjsXtU.js.map → channel-6pgfGez4.js.map} +1 -1
- package/webapp/dist/assets/{chunk-4BX2VUAB-BF4yph2W.js → chunk-4BX2VUAB-BQDAaqXK.js} +2 -2
- package/webapp/dist/assets/{chunk-4BX2VUAB-BF4yph2W.js.map → chunk-4BX2VUAB-BQDAaqXK.js.map} +1 -1
- package/webapp/dist/assets/{chunk-55IACEB6-Hn3CmDYz.js → chunk-55IACEB6-DGYbZ_6j.js} +2 -2
- package/webapp/dist/assets/{chunk-55IACEB6-Hn3CmDYz.js.map → chunk-55IACEB6-DGYbZ_6j.js.map} +1 -1
- package/webapp/dist/assets/{chunk-FMBD7UC4-C05pl9Ov.js → chunk-FMBD7UC4-EVNnQ_SU.js} +2 -2
- package/webapp/dist/assets/{chunk-FMBD7UC4-C05pl9Ov.js.map → chunk-FMBD7UC4-EVNnQ_SU.js.map} +1 -1
- package/webapp/dist/assets/{chunk-JSJVCQXG-BVlq_BAS.js → chunk-JSJVCQXG-BSQe2NHw.js} +2 -2
- package/webapp/dist/assets/{chunk-JSJVCQXG-BVlq_BAS.js.map → chunk-JSJVCQXG-BSQe2NHw.js.map} +1 -1
- package/webapp/dist/assets/{chunk-KX2RTZJC-BQoaRWif.js → chunk-KX2RTZJC-I1LMYfrr.js} +2 -2
- package/webapp/dist/assets/{chunk-KX2RTZJC-BQoaRWif.js.map → chunk-KX2RTZJC-I1LMYfrr.js.map} +1 -1
- package/webapp/dist/assets/{chunk-NQ4KR5QH-0okCAXtW.js → chunk-NQ4KR5QH-C9HmN9dA.js} +4 -4
- package/webapp/dist/assets/{chunk-NQ4KR5QH-0okCAXtW.js.map → chunk-NQ4KR5QH-C9HmN9dA.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QZHKN3VN-DEiprgz-.js → chunk-QZHKN3VN-73ijGXNd.js} +2 -2
- package/webapp/dist/assets/{chunk-QZHKN3VN-DEiprgz-.js.map → chunk-QZHKN3VN-73ijGXNd.js.map} +1 -1
- package/webapp/dist/assets/{chunk-WL4C6EOR-B-Xkb3lo.js → chunk-WL4C6EOR-DeVu-9ac.js} +6 -6
- package/webapp/dist/assets/{chunk-WL4C6EOR-B-Xkb3lo.js.map → chunk-WL4C6EOR-DeVu-9ac.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-DCCQrdwF.js → classDiagram-VBA2DB6C-2HURCFLk.js} +7 -7
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-DCCQrdwF.js.map → classDiagram-VBA2DB6C-2HURCFLk.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-DCCQrdwF.js → classDiagram-v2-RAHNMMFH-2HURCFLk.js} +7 -7
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-DCCQrdwF.js.map → classDiagram-v2-RAHNMMFH-2HURCFLk.js.map} +1 -1
- package/webapp/dist/assets/{clone-Drtik9pk.js → clone-BNPlfGMh.js} +2 -2
- package/webapp/dist/assets/{clone-Drtik9pk.js.map → clone-BNPlfGMh.js.map} +1 -1
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BBWvHErL.js → cose-bilkent-S5V4N54A-BeoZCFA5.js} +2 -2
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BBWvHErL.js.map → cose-bilkent-S5V4N54A-BeoZCFA5.js.map} +1 -1
- package/webapp/dist/assets/{dagre-KLK3FWXG-2qk0ikdt.js → dagre-KLK3FWXG-DYxCt50h.js} +7 -7
- package/webapp/dist/assets/{dagre-KLK3FWXG-2qk0ikdt.js.map → dagre-KLK3FWXG-DYxCt50h.js.map} +1 -1
- package/webapp/dist/assets/{diagram-E7M64L7V-C1DbHDbf.js → diagram-E7M64L7V-BWxcTI3B.js} +8 -8
- package/webapp/dist/assets/{diagram-E7M64L7V-C1DbHDbf.js.map → diagram-E7M64L7V-BWxcTI3B.js.map} +1 -1
- package/webapp/dist/assets/{diagram-IFDJBPK2-DToz8zk9.js → diagram-IFDJBPK2-BAIPE4Rn.js} +7 -7
- package/webapp/dist/assets/{diagram-IFDJBPK2-DToz8zk9.js.map → diagram-IFDJBPK2-BAIPE4Rn.js.map} +1 -1
- package/webapp/dist/assets/{diagram-P4PSJMXO-B9V-tQMe.js → diagram-P4PSJMXO-CvcxPsVp.js} +7 -7
- package/webapp/dist/assets/{diagram-P4PSJMXO-B9V-tQMe.js.map → diagram-P4PSJMXO-CvcxPsVp.js.map} +1 -1
- package/webapp/dist/assets/{erDiagram-INFDFZHY-CV68FwGf.js → erDiagram-INFDFZHY-BDO90e-f.js} +5 -5
- package/webapp/dist/assets/{erDiagram-INFDFZHY-CV68FwGf.js.map → erDiagram-INFDFZHY-BDO90e-f.js.map} +1 -1
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-CW06almb.js → flowDiagram-PKNHOUZH-hd4TorKR.js} +7 -7
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-CW06almb.js.map → flowDiagram-PKNHOUZH-hd4TorKR.js.map} +1 -1
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-C96NncCU.js → ganttDiagram-A5KZAMGK-mID1sFSl.js} +3 -3
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-C96NncCU.js.map → ganttDiagram-A5KZAMGK-mID1sFSl.js.map} +1 -1
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-CAuIexWi.js → gitGraphDiagram-K3NZZRJ6-DaA7yodM.js} +8 -8
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-CAuIexWi.js.map → gitGraphDiagram-K3NZZRJ6-DaA7yodM.js.map} +1 -1
- package/webapp/dist/assets/{graph-CvhwAY6w.js → graph-B86JxOkQ.js} +3 -3
- package/webapp/dist/assets/{graph-CvhwAY6w.js.map → graph-B86JxOkQ.js.map} +1 -1
- package/webapp/dist/assets/{index-BOO_zFrI.js → index-DYO4ZL8y.js} +369 -389
- package/webapp/dist/assets/{index-BOO_zFrI.js.map → index-DYO4ZL8y.js.map} +1 -1
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-C16Sckpz.js → infoDiagram-LFFYTUFH-DxF36W9g.js} +6 -6
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-C16Sckpz.js.map → infoDiagram-LFFYTUFH-DxF36W9g.js.map} +1 -1
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-oNG6I0p3.js → ishikawaDiagram-PHBUUO56-wvAzRzSO.js} +2 -2
- package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-oNG6I0p3.js.map → ishikawaDiagram-PHBUUO56-wvAzRzSO.js.map} +1 -1
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-437hhFHC.js → journeyDiagram-4ABVD52K-CIBXsttK.js} +5 -5
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-437hhFHC.js.map → journeyDiagram-4ABVD52K-CIBXsttK.js.map} +1 -1
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-DsCV_Tpx.js → kanban-definition-K7BYSVSG-DQTPyM5m.js} +3 -3
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-DsCV_Tpx.js.map → kanban-definition-K7BYSVSG-DQTPyM5m.js.map} +1 -1
- package/webapp/dist/assets/{layout-BttZf7fQ.js → layout-BG7IzQAG.js} +5 -5
- package/webapp/dist/assets/{layout-BttZf7fQ.js.map → layout-BG7IzQAG.js.map} +1 -1
- package/webapp/dist/assets/{linear-B75vD4Ho.js → linear-5XR-mXYw.js} +2 -2
- package/webapp/dist/assets/{linear-B75vD4Ho.js.map → linear-5XR-mXYw.js.map} +1 -1
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-DA1-XaNi.js → mindmap-definition-YRQLILUH-BwTQE6uN.js} +4 -4
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-DA1-XaNi.js.map → mindmap-definition-YRQLILUH-BwTQE6uN.js.map} +1 -1
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-Bx6hUJ4Q.js → pieDiagram-SKSYHLDU-ZYB35zd5.js} +8 -8
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-Bx6hUJ4Q.js.map → pieDiagram-SKSYHLDU-ZYB35zd5.js.map} +1 -1
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-zyduIle0.js → quadrantDiagram-337W2JSQ-BM041Q-W.js} +3 -3
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-zyduIle0.js.map → quadrantDiagram-337W2JSQ-BM041Q-W.js.map} +1 -1
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-BgfjyEJM.js → requirementDiagram-Z7DCOOCP-r_xMoroM.js} +4 -4
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-BgfjyEJM.js.map → requirementDiagram-Z7DCOOCP-r_xMoroM.js.map} +1 -1
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-lmOWaczS.js → sankeyDiagram-WA2Y5GQK-Ju2-t24N.js} +2 -2
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-lmOWaczS.js.map → sankeyDiagram-WA2Y5GQK-Ju2-t24N.js.map} +1 -1
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DqJz-iYI.js → sequenceDiagram-2WXFIKYE-D83Bocd1.js} +4 -4
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DqJz-iYI.js.map → sequenceDiagram-2WXFIKYE-D83Bocd1.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-CngWYuX-.js → stateDiagram-RAJIS63D-mTmpZzpU.js} +9 -9
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-CngWYuX-.js.map → stateDiagram-RAJIS63D-mTmpZzpU.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-BxyHvrvU.js → stateDiagram-v2-FVOUBMTO-BCn7mFeH.js} +5 -5
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-BxyHvrvU.js.map → stateDiagram-v2-FVOUBMTO-BCn7mFeH.js.map} +1 -1
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-C7t6WVS3.js → timeline-definition-YZTLITO2-C1QBcYz8.js} +3 -3
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-C7t6WVS3.js.map → timeline-definition-YZTLITO2-C1QBcYz8.js.map} +1 -1
- package/webapp/dist/assets/{treemap-KZPCXAKY-BDZ3n5TC.js → treemap-KZPCXAKY-BEyfK-Fo.js} +5 -5
- package/webapp/dist/assets/{treemap-KZPCXAKY-BDZ3n5TC.js.map → treemap-KZPCXAKY-BEyfK-Fo.js.map} +1 -1
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-CEw7GPed.js → vennDiagram-LZ73GAT5-C6SZhLMq.js} +2 -2
- package/webapp/dist/assets/{vennDiagram-LZ73GAT5-CEw7GPed.js.map → vennDiagram-LZ73GAT5-C6SZhLMq.js.map} +1 -1
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-DmS8BiaA.js → xychartDiagram-JWTSCODW-BUlvexnm.js} +3 -3
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-DmS8BiaA.js.map → xychartDiagram-JWTSCODW-BUlvexnm.js.map} +1 -1
- package/webapp/dist/index.html +1 -1
|
@@ -138,39 +138,39 @@ function getMemoryPromptCopy(ctx) {
|
|
|
138
138
|
const runtimeMarkers = (0, inter_dialog_format_1.getRuntimeTransferMarkers)(ctx.language);
|
|
139
139
|
const contextHealthLineZh = ctx.contextHealthPromptMode === 'critical'
|
|
140
140
|
? ctx.isSideDialog
|
|
141
|
-
? '
|
|
142
|
-
: '
|
|
141
|
+
? 'Dominds 已提醒上下文告急:立即停止继续大实现/大阅读。你当前处于支线对话;本程不维护差遣牒,也不整理差遣牒更新提案,只维护足够详尽的接续包提醒项并 `clear_mind`。提醒项没有固定长度限制。'
|
|
142
|
+
: 'Dominds 已提醒上下文告急:立即停止继续大实现/大阅读。本程只做保信息:先把当前对话历史中尚未落实到文档、且下一程需要知会的讨论细节落到差遣牒合适章节,再提炼接续包提醒项并 `clear_mind`。'
|
|
143
143
|
: ctx.contextHealthPromptMode === 'caution'
|
|
144
144
|
? ctx.isSideDialog
|
|
145
|
-
? '
|
|
146
|
-
: '
|
|
147
|
-
: '
|
|
145
|
+
? 'Dominds 已提醒上下文吃紧:不要继续扩张上下文。你当前处于支线对话;本程不维护差遣牒,也不整理差遣牒更新提案,优先维护足够详尽的接续包提醒项并尽快 `clear_mind`。提醒项没有固定长度限制。'
|
|
146
|
+
: 'Dominds 已提醒上下文吃紧:不要继续扩张上下文。本程优先把尚未落实到文档、且下一程需要知会的讨论细节落到差遣牒合适章节,再提炼提醒项并尽快 `clear_mind`,不要继续大实现/大阅读。'
|
|
147
|
+
: '当前没有生效中的上下文保全提示,按正常工作流推进。';
|
|
148
148
|
const taskdocLogLineZh = ctx.contextHealthPromptMode === 'critical'
|
|
149
149
|
? ctx.isSideDialog
|
|
150
|
-
? '
|
|
151
|
-
: '不要把长日志/大段 tool output
|
|
150
|
+
? 'Dominds 已提醒上下文告急:支线对话不要维护差遣牒,也不要整理差遣牒更新提案;把当前对话历史中下一程需要知道的讨论细节、下一步、关键定位、运行/验证信息、临时路径/ID/样例输入和恢复依据写入接续包提醒项。提醒项没有固定长度限制,宁可完整一些;允许多条粗略提醒项求稳,但不要在当前程提前做“新一程清醒复核”。Dominds 真正开启新一程后,第一步再复核整理:删除冗余、纠正偏激/失真思路,再收敛成高质量提醒项。'
|
|
151
|
+
: '不要把长日志/大段 tool output 直接塞进差遣牒;差遣牒只写结论+下一步。Dominds 已提醒上下文告急:先检查当前对话历史里尚未落文档的讨论细节;能作为全队共享状态/决策/约束/目标的,主线优先用 `do_mind` 新增章节保存;只有在确实需要改写已有章节、已完成合并并先调用 `recall_taskdoc` 取得当前 `content_hash` 作为 `previous_content_hash` 时,才用 `change_mind`。接续包提醒项只留差遣牒仍未覆盖、但恢复工作容易丢的细节;本程允许先保留多条粗略提醒项求稳,但不要在当前程提前做“新一程清醒复核”。Dominds 真正开启新一程后,第一步再复核整理:删除冗余、纠正偏激/失真思路,再收敛成高质量提醒项。'
|
|
152
152
|
: ctx.contextHealthPromptMode === 'caution'
|
|
153
153
|
? ctx.isSideDialog
|
|
154
|
-
? '
|
|
155
|
-
: '不要把长日志/大段 tool output
|
|
154
|
+
? 'Dominds 已提醒上下文吃紧:支线对话不要维护差遣牒,也不要整理差遣牒更新提案;把当前对话历史中下一程需要知道的讨论细节、下一步、关键定位、运行/验证信息、临时路径/ID/样例输入和恢复依据写入接续包提醒项。提醒项没有固定长度限制,宁可完整一些;若一时来不及,可先保留多条粗略提醒项过桥,但不要在当前程提前做“新一程清醒复核”。Dominds 真正开启新一程后,第一步再复核整理:删除冗余、纠正偏激/失真思路,再收敛成高质量提醒项。'
|
|
155
|
+
: '不要把长日志/大段 tool output 直接塞进差遣牒;差遣牒只写结论+下一步。Dominds 已提醒上下文吃紧:先检查当前对话历史里尚未落文档的讨论细节;能作为全队共享状态/决策/约束/目标的,主线优先用 `do_mind` 新增章节保存;只有在确实需要改写已有章节、已完成合并并先调用 `recall_taskdoc` 取得当前 `content_hash` 作为 `previous_content_hash` 时,才用 `change_mind`。接续包提醒项只留差遣牒仍未覆盖、但恢复工作容易丢的细节;若一时来不及,可先保留多条粗略提醒项过桥,但不要在当前程提前做“新一程清醒复核”。Dominds 真正开启新一程后,第一步再复核整理:删除冗余、纠正偏激/失真思路,再收敛成高质量提醒项。'
|
|
156
156
|
: '不要把长日志/大段 tool output 直接塞进差遣牒;差遣牒只写结论+下一步;提醒项也只留可扫读摘录。接续包提醒项默认应保持结构化、便于快速恢复。';
|
|
157
157
|
const contextHealthLineEn = ctx.contextHealthPromptMode === 'critical'
|
|
158
158
|
? ctx.isSideDialog
|
|
159
|
-
? '
|
|
160
|
-
: '
|
|
159
|
+
? 'Dominds has warned that context is critical: stop large implementations/reads immediately. You are in a Side Dialog; in this course, do not maintain Taskdoc and do not draft Taskdoc update proposals. Only maintain sufficiently detailed continuation-package reminders and `clear_mind`. Reminders have no fixed length limit.'
|
|
160
|
+
: 'Dominds has warned that context is critical: stop large implementations/reads immediately. In this course, only preserve information: first record current-dialog discussion details that are not yet documented but the next course needs to know into the appropriate Taskdoc sections, then distill continuation-package reminders and `clear_mind`.'
|
|
161
161
|
: ctx.contextHealthPromptMode === 'caution'
|
|
162
162
|
? ctx.isSideDialog
|
|
163
|
-
? '
|
|
164
|
-
: '
|
|
165
|
-
: 'There is no active context-
|
|
163
|
+
? 'Dominds has warned that context is tight: do not keep expanding context. You are in a Side Dialog; in this course, do not maintain Taskdoc and do not draft Taskdoc update proposals. Prioritize sufficiently detailed continuation-package reminders and `clear_mind`. Reminders have no fixed length limit.'
|
|
164
|
+
: 'Dominds has warned that context is tight: do not keep expanding context. In this course, first record undocumented discussion details that the next course needs to know into the appropriate Taskdoc sections, then distill reminders and `clear_mind`; do not continue large implementations/reads.'
|
|
165
|
+
: 'There is no active context-preservation notice in effect right now; proceed with the normal workflow.';
|
|
166
166
|
const taskdocLogLineEn = ctx.contextHealthPromptMode === 'critical'
|
|
167
167
|
? ctx.isSideDialog
|
|
168
|
-
? '
|
|
169
|
-
: 'Do not paste long logs/tool outputs into Taskdoc; Taskdoc should record decisions + next steps.
|
|
168
|
+
? 'Dominds has warned that context is critical: in a Side Dialog, do not maintain Taskdoc and do not draft Taskdoc update proposals. Put discussion details from current dialog history that the next course needs to know, next actions, key pointers, run/verify info, volatile paths/IDs/sample inputs, and resume reasoning into continuation-package reminders. Reminders have no fixed length limit, so prefer being complete. Rough multi-reminder bridge notes are acceptable in this course, but do not perform the new-course “clear-headed review” early. Once Dominds actually starts the new course, the first step is to review/rewrite them: remove redundancy, correct biased or distorted bridge notes, then compress them into high-quality reminders.'
|
|
169
|
+
: 'Do not paste long logs/tool outputs into Taskdoc; Taskdoc should record decisions + next steps. Dominds has warned that context is critical: first review current-dialog discussion details not yet written into documentation. If they belong to team-shared state, decisions, constraints, or goals, prefer creating a new section with `do_mind`; use `change_mind` only when an existing section truly needs rewriting, you have merged against the current content, and you have first called `recall_taskdoc` to get the current `content_hash` as `previous_content_hash`. Continuation-package reminders should keep only details still not covered by Taskdoc but easy to lose during resume. Rough multi-reminder bridge notes are acceptable in this course, but do not perform the new-course “clear-headed review” early. Once Dominds actually starts the new course, the first step is to review/rewrite them: remove redundancy, correct biased or distorted bridge notes, then compress them into high-quality reminders.'
|
|
170
170
|
: ctx.contextHealthPromptMode === 'caution'
|
|
171
171
|
? ctx.isSideDialog
|
|
172
|
-
? '
|
|
173
|
-
: 'Do not paste long logs/tool outputs into Taskdoc; Taskdoc should record decisions + next steps.
|
|
172
|
+
? 'Dominds has warned that context is tight: in a Side Dialog, do not maintain Taskdoc and do not draft Taskdoc update proposals. Put discussion details from current dialog history that the next course needs to know, next actions, key pointers, run/verify info, volatile paths/IDs/sample inputs, and resume reasoning into continuation-package reminders. Reminders have no fixed length limit, so prefer being complete. If needed, rough multi-reminder bridge notes are acceptable, but do not perform the new-course “clear-headed review” early. Once Dominds actually starts the new course, the first step is to review/rewrite them: remove redundancy, correct biased or distorted bridge notes, then compress them into high-quality reminders.'
|
|
173
|
+
: 'Do not paste long logs/tool outputs into Taskdoc; Taskdoc should record decisions + next steps. Dominds has warned that context is tight: first review current-dialog discussion details not yet written into documentation. If they belong to team-shared state, decisions, constraints, or goals, prefer creating a new section with `do_mind`; use `change_mind` only when an existing section truly needs rewriting, you have merged against the current content, and you have first called `recall_taskdoc` to get the current `content_hash` as `previous_content_hash`. Continuation-package reminders should keep only details still not covered by Taskdoc but easy to lose during resume. If needed, rough multi-reminder bridge notes are acceptable, but do not perform the new-course “clear-headed review” early. Once Dominds actually starts the new course, the first step is to review/rewrite them: remove redundancy, correct biased or distorted bridge notes, then compress them into high-quality reminders.'
|
|
174
174
|
: 'Do not paste long logs/tool outputs into Taskdoc; Taskdoc should record decisions + next steps; reminders should also keep only scannable excerpts. Keep continuation-package reminders structured and fast to resume from by default.';
|
|
175
175
|
if (ctx.language === 'zh') {
|
|
176
176
|
return {
|
|
@@ -180,29 +180,29 @@ function getMemoryPromptCopy(ctx) {
|
|
|
180
180
|
taskdocContractLine: '- 差遣牒(`*.tsk/`):全队共享的任务契约(goals/constraints/progress);不是个人笔记,保持足够短,每轮都应可通读。',
|
|
181
181
|
taskdocSemanticsLine: '- 章节语义约定:`progress` 是全队共享、准实时、可扫读的任务公告牌,用来记录当前有效状态、关键决策、下一步与仍成立阻塞;不是流水账,也不是个人工作记录。`goals` / `constraints` 是较稳定的任务契约;每次更新都必须保留仍然有效的他人条目。',
|
|
182
182
|
taskdocSectionReplaceLine: ctx.isSideDialog && ctx.contextHealthPromptMode !== 'normal'
|
|
183
|
-
? '-
|
|
183
|
+
? '- Dominds 已提醒当前上下文吃紧/告急,且你处于支线对话:本程不要维护差遣牒,也不要整理差遣牒更新提案;把下一程需要恢复的细节写入足够详尽的接续包提醒项。'
|
|
184
184
|
: `- 更新差遣牒时:少量新增条目可用 \`mind_more\` 追加(默认 progress);缺失章节用 \`do_mind\` 创建;需要删除陈旧项、重排结构或压缩时,先对照上下文中注入的当前内容完成合并,再调用 \`recall_taskdoc\` 取得当前 \`content_hash\`,然后用带 \`previous_content_hash\` 的 \`change_mind\` 整章替换;需要删除整章文件时用 \`never_mind\`;禁止覆盖/抹掉他人条目;自己负责维护的条目必须标注责任人(例如 \`- [owner:@${ctx.agentId}] ...\` 或用 \`### @${ctx.agentId}\` 分块)。`,
|
|
185
185
|
progressLine: ctx.isSideDialog && ctx.contextHealthPromptMode !== 'normal'
|
|
186
|
-
? '-
|
|
186
|
+
? '- Dominds 已提醒当前上下文吃紧/告急,且你处于支线对话:本程不更新 `progress`;只把下一程接续所需信息写入提醒项。'
|
|
187
187
|
: '- 更新 `progress` 时:它必须始终是可供全队扫读的完整当前快照,而不是只追加自己这一轮的零散笔记。',
|
|
188
188
|
injectedTaskdocLine: '- 重要:差遣牒内容会被系统以内联形式注入到上下文中(本轮生成视角下即为最新;注入内容不包括全局约束)。需要回顾时请直接基于上下文里的差遣牒内容回顾与决策,不要试图用通用文件工具读取 `*.tsk/` 下的文件(会被拒绝)。',
|
|
189
189
|
constraintsLine: '- 约定:`constraints` 只写任务特有的硬要求,不得写入系统提示/工具文档里已明确且由系统强制执行的通用规则(例如 `*.tsk/` 封装禁止通用文件工具)。一经发现重复,必须删除并告知用户。',
|
|
190
190
|
remindersLine: ctx.isSideDialog
|
|
191
|
-
? '- 提醒项(以 `reminder_id` 标识,手头工作):当前对话的高频工作记录/关键细节(偏私有,不作为全队公告);默认保持少量(常见 1–3 条),优先 `update_reminder` 压缩/合并,不再需要就 `delete_reminder`。准备 `clear_mind` 开启新一程对话时,整理“结构化接续包提醒项”;提醒项保留恢复工作容易丢的细节(如第一步、关键定位、运行/验证信息、临时 ids
|
|
192
|
-
: '- 提醒项(以 `reminder_id` 标识,手头工作):当前对话的高频工作记录/关键细节(偏私有,不作为全队公告);默认保持少量(常见 1–3 条),优先 `update_reminder` 压缩/合并,不再需要就 `delete_reminder`。准备 `clear_mind` 开启新一程对话时,先把尚未落实到文档、且下一程需要知会的讨论细节落到差遣牒合适章节,再整理“结构化接续包提醒项”;提醒项只保留差遣牒仍未覆盖、但恢复工作容易丢的细节(如第一步、关键定位、运行/验证信息、临时 ids
|
|
191
|
+
? '- 提醒项(以 `reminder_id` 标识,手头工作):当前对话的高频工作记录/关键细节(偏私有,不作为全队公告);默认保持少量(常见 1–3 条),优先 `update_reminder` 压缩/合并,不再需要就 `delete_reminder`。准备 `clear_mind` 开启新一程对话时,整理“结构化接续包提醒项”;提醒项保留恢复工作容易丢的细节(如第一步、关键定位、运行/验证信息、临时 ids/路径)。若 Dominds 已提醒当前程吃紧/告急,支线对话不要维护差遣牒,也不要整理差遣牒更新提案;只维护足够详尽的接续包提醒项,提醒项没有固定长度限制,允许先保留多条粗略提醒项把信息带过桥;当前程只做保信息 + clear_mind;只有 Dominds 实际开启新一程后,第一步才是以清醒头脑复核并整理这些接续包/粗略提醒项:删除冗余、纠正偏激或失真的过桥思路、压缩成高质量提醒项。'
|
|
192
|
+
: '- 提醒项(以 `reminder_id` 标识,手头工作):当前对话的高频工作记录/关键细节(偏私有,不作为全队公告);默认保持少量(常见 1–3 条),优先 `update_reminder` 压缩/合并,不再需要就 `delete_reminder`。准备 `clear_mind` 开启新一程对话时,先把尚未落实到文档、且下一程需要知会的讨论细节落到差遣牒合适章节,再整理“结构化接续包提醒项”;提醒项只保留差遣牒仍未覆盖、但恢复工作容易丢的细节(如第一步、关键定位、运行/验证信息、临时 ids/路径)。若 Dominds 已提醒当前程吃紧/告急,则允许先保留多条粗略提醒项把信息带过桥;当前程只做落文档、保信息 + clear_mind;只有 Dominds 实际开启新一程后,第一步才是以清醒头脑复核并整理这些接续包/粗略提醒项:删除冗余、纠正偏激或失真的过桥思路、压缩成高质量提醒项。',
|
|
193
193
|
teamMemoryLine: '- 团队记忆:稳定的团队约定/工程规约(跨任务共享)。',
|
|
194
194
|
personalMemoryLine: '- 个人记忆:稳定的个人习惯/偏好与职责域知识;记忆会在每次生成时自动注入上下文,应保持少量且准确(关键文档/代码的精确路径 + 最小必要事实)。不要记录具体任务状态。',
|
|
195
195
|
skillsLine: '- Skills:可复用操作指引/检查清单/触发条件与边界。工作区关联强的事实、路径、局部契约进 memory/env;独立于工作区内容的“怎么做”进 skill。skill 不授予工具权限;需要脚本/MCP/外部能力时应配套 app/toolset/权限配置。',
|
|
196
196
|
sideDialogDutyLine: ctx.contextHealthPromptMode === 'normal'
|
|
197
197
|
? `你当前处于支线对话:此处不允许 \`do_mind\` / \`mind_more\` / \`change_mind\` / \`never_mind\`。当你判断需要更新差遣牒(尤其是 progress 公告牌)时,请在合适时机直接诉请差遣牒维护人 \`@${ctx.taskdocMaintainerId}\` 执行更新,并给出要新增的章节、要追加的条目、已合并好的“新全文/替换稿”,或要删除的章节。不要声称已更新,除非看到回执。`
|
|
198
|
-
: '
|
|
198
|
+
: '你当前处于支线对话,且 Dominds 已提醒上下文吃紧/告急:本程不要维护差遣牒,也不要整理差遣牒更新提案。请把下一程需要恢复的讨论细节、定位、验证方式和临时信息写入足够详尽的接续包提醒项。',
|
|
199
199
|
mainDialogDutyLine: '你当前处于主线对话:你负责综合维护全队共享差遣牒(尤其是 progress 公告牌)。当队友/支线对话提出更新建议时,及时合并、压缩并保持清晰。',
|
|
200
200
|
teammateTellaskRoundDoneLine: `队友诉请重要语义:当你在诉请者上下文中收到带${runtimeMarkers.finalCompleted}标记的回贴,表示该轮诉请已经结束;对方不会继续执行同一轮诉请。此时如果目标未达成,“等待”是错误的:必须显式发起新一轮 tellask 才能继续推进。并行语义:不要把智能体队友当成真人同事;祂不会因为你又发一条诉请而被打扰。同一个队友 + 同一个 sessionSlug = 接着同一件事说,并更新那件正在做的事;tellaskSessionless 或不同 sessionSlug = 另一件独立任务。`,
|
|
201
201
|
teamMemoryHintLine: '提示:你具备团队记忆工具(`add_team_memory` / `replace_team_memory` / `drop_team_memory` / `clear_team_memory`),可在必要时维护团队记忆(谨慎、少量、只写稳定约定)。',
|
|
202
202
|
personalMemoryHintLine: `提示:你具备个人记忆工具(\`add_personal_memory\` / \`replace_personal_memory\` / \`drop_personal_memory\` / \`clear_personal_memory\`)。个人记忆仅对当前智能体可见,且系统会自动按成员隔离到 \`.minds/memory/individual/<member-id>/...\`;因此 \`path\` 不应包含你的成员 id(不要写 \`${ctx.agentId}/...\`)。首次创建时直接用 \`add_personal_memory\` 即可,目录会由系统自动创建。记忆会在每次生成时自动注入上下文:保持少量、保持准确、按“未来会一起更新的内容”合并;写稳定事实(关键路径 + 最小必要约定),不要写任务进度/当天状态;一旦你修改了相关文件或发现记忆过期/冲突,立刻用 \`replace_personal_memory\` 更新。`,
|
|
203
203
|
sideDialogWorkflowLine: ctx.contextHealthPromptMode === 'normal'
|
|
204
204
|
? `工作流:先做事 → 再提炼(\`update_reminder\`;必要时整理差遣牒追加条目/更新提案并诉请 \`@${ctx.taskdocMaintainerId}\` 合并写入)→ 然后 \`clear_mind\` 清空噪音。`
|
|
205
|
-
: '工作流:停止扩张上下文 → 维护足够详尽的接续包提醒项(`add_reminder` 或 `update_reminder
|
|
205
|
+
: '工作流:停止扩张上下文 → 维护足够详尽的接续包提醒项(`add_reminder` 或 `update_reminder`,没有固定长度限制)→ 然后 `clear_mind` 开启新一程。',
|
|
206
206
|
mainDialogWorkflowLine: '工作流:先做事 -> 再提炼(`update_reminder` + `mind_more(progress)`;需要压缩/删旧时先 `recall_taskdoc` 取得 `content_hash`,再用带 `previous_content_hash` 的 `change_mind`;要删除整章文件时用 `never_mind`)-> 然后 `clear_mind` 清空噪音。',
|
|
207
207
|
...(ctx.isSideDialog
|
|
208
208
|
? {}
|
|
@@ -220,29 +220,29 @@ function getMemoryPromptCopy(ctx) {
|
|
|
220
220
|
taskdocContractLine: '- Taskdoc (`*.tsk/`): the team-shared task contract (goals/constraints/progress). It is not a personal notebook; keep it small enough to read every course.',
|
|
221
221
|
taskdocSemanticsLine: '- Section semantics: `progress` is the team-shared, quasi-real-time, scannable task bulletin board for current effective state, key decisions, next steps, and still-active blockers; it is not a raw log or personal work record. `goals` / `constraints` are the more stable task contract; every update must preserve still-valid entries from others.',
|
|
222
222
|
taskdocSectionReplaceLine: ctx.isSideDialog && ctx.contextHealthPromptMode !== 'normal'
|
|
223
|
-
? '-
|
|
223
|
+
? '- Dominds has warned that context is tight/critical in this Side Dialog: do not maintain Taskdoc and do not draft Taskdoc update proposals in this course; put resume-critical details into sufficiently detailed continuation-package reminders.'
|
|
224
224
|
: `- When updating Taskdoc: use \`mind_more\` for small append-only additions (defaults to progress); create missing sections with \`do_mind\`; when stale entries must be removed, reordered, or compressed, first merge against the current injected content, then call \`recall_taskdoc\` to get the current \`content_hash\`, then use \`change_mind\` for a full-section replacement with that value as \`previous_content_hash\`; when a whole section file should be removed, use \`never_mind\`; do not overwrite other contributors; add an explicit owner tag for entries you maintain (e.g., \`- [owner:@${ctx.agentId}] ...\` or a \`### @${ctx.agentId}\` block).`,
|
|
225
225
|
progressLine: ctx.isSideDialog && ctx.contextHealthPromptMode !== 'normal'
|
|
226
|
-
? '-
|
|
226
|
+
? '- Dominds has warned that context is tight/critical in this Side Dialog: do not update `progress` in this course; put resume-critical information into reminders only.'
|
|
227
227
|
: '- When updating `progress`, keep it as a complete, team-scannable current snapshot instead of appending only your own latest notes.',
|
|
228
228
|
injectedTaskdocLine: '- Important: the Taskdoc content is injected inline into the context (the latest as of this generation; injected content excludes global constraints). Review the injected Taskdoc instead of trying to read files under `*.tsk/` via general file tools (they will be rejected).',
|
|
229
229
|
constraintsLine: '- Convention: Taskdoc `constraints` must contain task-specific requirements only; do not include global, system-enforced rules already stated in system prompt/tool docs (e.g. `.tsk/` encapsulation bans general file tools). If duplication is found, you MUST remove it and notify the user.',
|
|
230
230
|
remindersLine: ctx.isSideDialog
|
|
231
|
-
? '- Reminders (addressed by `reminder_id`, current work): your high-frequency per-dialog worklog + critical details (not a team bulletin board); keep it small by default (often 1–3 items), prefer `update_reminder` to compress/merge, and delete when obsolete. When preparing `clear_mind` to start a new course, create a structured continuation-package reminder that preserves details easy to lose during resume (first step, key pointers, run/verify info, volatile ids/paths). If
|
|
232
|
-
: '- Reminders (addressed by `reminder_id`, current work): your high-frequency per-dialog worklog + critical details (not a team bulletin board); keep it small by default (often 1–3 items), prefer `update_reminder` to compress/merge, and delete when obsolete. When preparing `clear_mind` to start a new course, first record undocumented discussion details that the next course needs to know into the appropriate Taskdoc sections, then create a structured continuation-package reminder. Reminders should keep only details still not covered by Taskdoc but easy to lose during resume (first step, key pointers, run/verify info, volatile ids/paths). If
|
|
231
|
+
? '- Reminders (addressed by `reminder_id`, current work): your high-frequency per-dialog worklog + critical details (not a team bulletin board); keep it small by default (often 1–3 items), prefer `update_reminder` to compress/merge, and delete when obsolete. When preparing `clear_mind` to start a new course, create a structured continuation-package reminder that preserves details easy to lose during resume (first step, key pointers, run/verify info, volatile ids/paths). If Dominds has warned that the current course is tight/critical, you are in a Side Dialog: do not maintain Taskdoc and do not draft Taskdoc update proposals; only maintain sufficiently detailed continuation-package reminders. Reminders have no fixed length limit, rough multi-reminder bridge notes are acceptable, and in the current course you should only preserve volatile information and clear_mind. Only after Dominds actually starts the new course does the mandatory first step become reviewing and rewriting those continuation/rough reminders with a clear head: remove redundancy, correct biased or distorted bridge notes, and compress them into high-quality reminders.'
|
|
232
|
+
: '- Reminders (addressed by `reminder_id`, current work): your high-frequency per-dialog worklog + critical details (not a team bulletin board); keep it small by default (often 1–3 items), prefer `update_reminder` to compress/merge, and delete when obsolete. When preparing `clear_mind` to start a new course, first record undocumented discussion details that the next course needs to know into the appropriate Taskdoc sections, then create a structured continuation-package reminder. Reminders should keep only details still not covered by Taskdoc but easy to lose during resume (first step, key pointers, run/verify info, volatile ids/paths). If Dominds has warned that the current course is tight/critical, rough multi-reminder bridge notes are acceptable; in the current course, only document missing details, preserve volatile information, and clear_mind. Only after Dominds actually starts the new course does the mandatory first step become reviewing and rewriting those continuation/rough reminders with a clear head: remove redundancy, correct biased or distorted bridge notes, and compress them into high-quality reminders.',
|
|
233
233
|
teamMemoryLine: '- Team memory: stable shared conventions (cross-task).',
|
|
234
234
|
personalMemoryLine: '- Personal memory: stable personal habits/preferences and responsibility-scope knowledge. Memory is automatically injected into context on each generation: keep it small and accurate (exact key doc/code paths + minimal key facts); do not store per-task state.',
|
|
235
235
|
skillsLine: '- Skills: reusable operating guidance, checklists, triggers, and boundaries. Workspace-coupled facts, paths, and local contracts belong in memory/env; workspace-independent “how to do it” procedures belong in skills. Skills do not grant tool permissions; pair scripts/MCP/external capabilities with apps/toolsets/permission configuration.',
|
|
236
236
|
sideDialogDutyLine: ctx.contextHealthPromptMode === 'normal'
|
|
237
237
|
? `You are currently in a Side Dialog: \`do_mind\` / \`mind_more\` / \`change_mind\` / \`never_mind\` are not allowed here. When Taskdoc should be updated (especially the shared progress bulletin board), tellask the Taskdoc maintainer \`@${ctx.taskdocMaintainerId}\` with the new section to create, entries to append, a fully merged replacement draft, or the section to delete. Do not claim it is updated until you see a receipt.`
|
|
238
|
-
: 'You are currently in a Side Dialog
|
|
238
|
+
: 'You are currently in a Side Dialog, and Dominds has warned that context is tight/critical: do not maintain Taskdoc and do not draft Taskdoc update proposals in this course. Put discussion details, pointers, verification method, and volatile resume information into sufficiently detailed continuation-package reminders.',
|
|
239
239
|
mainDialogDutyLine: 'You are currently in the Main Dialog: you are responsible for keeping the team-shared Taskdoc coherent and up to date (especially the progress bulletin board). Merge proposals from teammates/Side Dialogs promptly and keep it concise.',
|
|
240
240
|
teammateTellaskRoundDoneLine: `Teammate Tellask semantics: when you receive a tellasker reply with the ${runtimeMarkers.finalCompleted} marker, that Tellask round is finished; the tellaskee will not keep executing the same call in the background. If the objective is not met, “waiting” is wrong: you must explicitly start a new Tellask round to continue. Parallel semantics: do not treat an agent teammate like a human coworker who can only handle one conversation at a time. Same teammate + same sessionSlug = continue the same task and update that task; tellaskSessionless or a different sessionSlug = another independent task.`,
|
|
241
241
|
teamMemoryHintLine: 'Hint: you have team-memory tools (`add_team_memory` / `replace_team_memory` / `drop_team_memory` / `clear_team_memory`) and may maintain team memory when it is truly stable and worth sharing.',
|
|
242
242
|
personalMemoryHintLine: `Hint: you have personal-memory tools (\`add_personal_memory\` / \`replace_personal_memory\` / \`drop_personal_memory\` / \`clear_personal_memory\`). Personal memory is private to the current agent and is automatically isolated under \`.minds/memory/individual/<member-id>/...\`; therefore \`path\` MUST NOT include your member id (do not write \`${ctx.agentId}/...\`). For first-time setup, just call \`add_personal_memory\`—the directory will be created automatically. Memory is automatically injected into context on each generation: keep it small, keep it accurate, and group facts that are updated together. Store stable facts (exact key paths + minimal contracts), not daily state/progress. If you changed those files or detect staleness/conflicts, immediately \`replace_personal_memory\` to keep it accurate.`,
|
|
243
243
|
sideDialogWorkflowLine: ctx.contextHealthPromptMode === 'normal'
|
|
244
244
|
? `Workflow: do work → distill (\`update_reminder\`; when Taskdoc needs updates, draft append entries, a merged replacement, or a section deletion and ask \`@${ctx.taskdocMaintainerId}\`) → then \`clear_mind\` to drop noise.`
|
|
245
|
-
: 'Workflow: stop expanding context → maintain sufficiently detailed continuation-package reminders (`add_reminder` or `update_reminder`, with no
|
|
245
|
+
: 'Workflow: stop expanding context → maintain sufficiently detailed continuation-package reminders (`add_reminder` or `update_reminder`, with no fixed length limit) → then `clear_mind` to start a new course.',
|
|
246
246
|
mainDialogWorkflowLine: 'Workflow: do work -> distill (`update_reminder` + `mind_more(progress)`; when compression/deletion is needed, first use `recall_taskdoc` to get `content_hash`, then use `change_mind` with `previous_content_hash`; use `never_mind` when removing a whole section file) -> then `clear_mind` to drop noise.',
|
|
247
247
|
...(ctx.isSideDialog
|
|
248
248
|
? {}
|
|
@@ -47,32 +47,32 @@ function buildFbrContextHealthScopeRule(scope, language, contextHealthPromptMode
|
|
|
47
47
|
if (contextHealthPromptMode === 'critical') {
|
|
48
48
|
return pickLocalized(language, {
|
|
49
49
|
zh: scope === 'mainDialog'
|
|
50
|
-
? '-
|
|
51
|
-
: '-
|
|
50
|
+
? '- Dominds 已提醒上下文告急:本程禁止发起 FBR。先按上下文保全要求把尚未落实到差遣牒、且下一程需要知会的讨论细节写入合适章节,再维护接续包提醒项,并立即 `clear_mind`;Dominds 真正开启新一程并完成接续包复核后,再恢复 FBR。'
|
|
51
|
+
: '- Dominds 已提醒上下文告急:本程禁止发起 FBR。你当前处于支线对话:不要维护差遣牒,也不要整理差遣牒更新提案;先按上下文保全要求维护足够详尽的接续包提醒项,并立即 `clear_mind`;Dominds 真正开启新一程并完成接续包复核后,再恢复 FBR。',
|
|
52
52
|
en: scope === 'mainDialog'
|
|
53
|
-
? '-
|
|
54
|
-
: '-
|
|
53
|
+
? '- Dominds has warned that context is critical: do not start FBR in this course. First write discussion details not yet in Taskdoc but needed by the next course into the appropriate sections, then maintain continuation-package reminders and clear immediately; resume FBR only after Dominds starts the new course and the continuation package has been reviewed.'
|
|
54
|
+
: '- Dominds has warned that context is critical: do not start FBR in this course. You are in a Side Dialog: do not maintain Taskdoc and do not draft Taskdoc update proposals; first maintain sufficiently detailed continuation-package reminders, then clear immediately. Resume FBR only after Dominds starts the new course and the continuation package has been reviewed.',
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
if (contextHealthPromptMode === 'caution') {
|
|
58
58
|
return pickLocalized(language, {
|
|
59
59
|
zh: scope === 'mainDialog'
|
|
60
|
-
? '-
|
|
61
|
-
: '-
|
|
60
|
+
? '- Dominds 已提醒上下文吃紧:本程不要发起 FBR。先按上下文保全要求把尚未落实到差遣牒、且下一程需要知会的讨论细节写入合适章节,再提炼提醒项并尽快 `clear_mind`;Dominds 真正开启新一程并完成接续包复核后,再恢复 FBR。'
|
|
61
|
+
: '- Dominds 已提醒上下文吃紧:本程不要发起 FBR。你当前处于支线对话:不要维护差遣牒,也不要整理差遣牒更新提案;先按上下文保全要求维护足够详尽的接续包提醒项并尽快 `clear_mind`;Dominds 真正开启新一程并完成接续包复核后,再恢复 FBR。',
|
|
62
62
|
en: scope === 'mainDialog'
|
|
63
|
-
? '-
|
|
64
|
-
: '-
|
|
63
|
+
? '- Dominds has warned that context is tight: do not start FBR in this course. First write discussion details not yet in Taskdoc but needed by the next course into the appropriate sections, then distill reminders and clear soon; resume FBR only after Dominds starts the new course and the continuation package has been reviewed.'
|
|
64
|
+
: '- Dominds has warned that context is tight: do not start FBR in this course. You are in a Side Dialog: do not maintain Taskdoc and do not draft Taskdoc update proposals; first maintain sufficiently detailed continuation-package reminders, then clear soon. Resume FBR only after Dominds starts the new course and the continuation package has been reviewed.',
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
67
|
if (scope === 'mainDialog') {
|
|
68
68
|
return pickLocalized(language, {
|
|
69
|
-
zh: '-
|
|
70
|
-
en: '- There is no active context-
|
|
69
|
+
zh: '- 当前没有生效中的上下文保全提示,可以按正常流程进行 FBR。完成 FBR 后,基于当前可观测事实调用 `mind_more` 或 `change_mind` 更新差遣牒,体现任务最新进展情况。FBR 自诉请正文不要冗余包含差遣牒已有信息。',
|
|
70
|
+
en: '- There is no active context-preservation notice in effect, so FBR may proceed normally. After FBR, call `mind_more` or `change_mind` based on currently observable facts to update the Taskdoc with the latest progress; do not redundantly include information already present in the Taskdoc in the FBR body.',
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
return pickLocalized(language, {
|
|
74
|
-
zh: '-
|
|
75
|
-
en: '- There is no active context-
|
|
74
|
+
zh: '- 当前没有生效中的上下文保全提示,可以按正常流程进行 FBR。随后基于当前可观测事实分析是否与差遣牒内容存在差异,并将发现的情况包含在 FBR 自诉请正文中。',
|
|
75
|
+
en: '- There is no active context-preservation notice in effect, so FBR may proceed normally. Then analyze whether currently observable facts differ from the Taskdoc, and include the findings in the FBR body.',
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
78
|
function buildFbrPhaseContract(language) {
|
|
@@ -104,9 +104,9 @@ function buildTeammateTellaskPhaseContract(language) {
|
|
|
104
104
|
'- 只有长线诉请(`tellask` + `sessionSlug`)能接着同一件事说、更新同一件正在做的事;一次性诉请(`tellaskSessionless`)做不到。再次发起 `tellaskSessionless` 只是另一件独立任务,不会更新、更不会要求旧任务停止;若你后来发现可能需要改要求/提前收口,一开始就不该选择 `tellaskSessionless`。',
|
|
105
105
|
'- 不要把智能体队友当成真人同事:祂不会因为你又发一条诉请而被打扰。同一个队友可以同时做多件独立任务,系统会分开处理。记住这个简单规则:同一个队友 + 同一个 `sessionSlug` = 接着同一件事说,并更新那件正在做的事;`tellaskSessionless` 或不同 `sessionSlug` = 另一件独立任务。只要任务独立、目标清楚,就直接并行诉请。',
|
|
106
106
|
'- 能由队友诉请完成的执行性工作,禁止转交 `askHuman` 做“转发员”;当你写“让 @X 执行 Y”时,必须在同一回复内直接发出 `tellask` 或 `tellaskSessionless`。',
|
|
107
|
-
`- 当你在诉请正文里定义“回贴格式/交付格式”时,只写业务交付结构即可;不要要求被诉请者手写 \`${runtimeMarkers.finalCompleted}\` / \`${runtimeMarkers.tellaskBack}\` / FBR 标记(\`${runtimeMarkers.fbrDirectReply}\` / \`${runtimeMarkers.fbrReasoningOnly}\`),这些标记由 Dominds
|
|
107
|
+
`- 当你在诉请正文里定义“回贴格式/交付格式”时,只写业务交付结构即可;不要要求被诉请者手写 \`${runtimeMarkers.finalCompleted}\` / \`${runtimeMarkers.tellaskBack}\` / FBR 标记(\`${runtimeMarkers.fbrDirectReply}\` / \`${runtimeMarkers.fbrReasoningOnly}\`),这些标记由 Dominds 自动注入。`,
|
|
108
108
|
'- 当你处于队友诉请触发的支线时,不要把“阻塞/不确定”默认等同于 `tellaskBack`:若按当前团队规程/SOP/职责卡已能明确判定执行负责人,直接用 `tellask` / `tellaskSessionless` 诉请对应负责人;只有确实需要诉请者补充需求、做裁决、澄清验收口径、提供缺失输入,或现有规程无法明确判责时,才使用 `tellaskBack`。`tellaskBack` 不携带 `sessionSlug`。',
|
|
109
|
-
`-
|
|
109
|
+
`- 回贴文本标记由 Dominds 在跨对话传递正文中按语义自动添加(例如 \`${runtimeMarkers.tellaskBack}\` / \`${runtimeMarkers.finalCompleted}\` / FBR 标记 \`${runtimeMarkers.fbrDirectReply}\` / \`${runtimeMarkers.fbrReasoningOnly}\`);该传递正文会进入目标智能体上下文,且 UI 与其一致。你不应手写这些标记。`,
|
|
110
110
|
],
|
|
111
111
|
en: [
|
|
112
112
|
'- Teammate Tellasks MUST follow four phases: “initiate -> wait -> judge -> continue”. If the objective is not met, immediately send the next Tellask round.',
|
|
@@ -117,44 +117,50 @@ function buildTeammateTellaskPhaseContract(language) {
|
|
|
117
117
|
'- Only a sessioned Tellask (`tellask` + `sessionSlug`) can continue the same task and update that task. A one-shot Tellask (`tellaskSessionless`) cannot: another `tellaskSessionless` is a separate task and does not update, stop, or instruct the earlier task to stop. If you may need later correction or earlier wrap-up, do not choose `tellaskSessionless` in the first place.',
|
|
118
118
|
'- Do not treat an agent teammate like a human coworker who can only handle one conversation at a time. The same teammate can work on several independent tasks at once, and the system keeps them separate. Simple rule: same teammate + same `sessionSlug` = continue the same task and update that task; `tellaskSessionless` or a different `sessionSlug` = another independent task. When tasks are independent and clear, tellask in parallel.',
|
|
119
119
|
'- Do not use `askHuman` as a relay for executable teammate work. If you write “ask @X to do Y”, emit `tellask` or `tellaskSessionless` in the same response.',
|
|
120
|
-
`- When you define a “reply/delivery format” inside tellask body, keep it to the business delivery structure; do not require the tellaskee to hand-write \`${runtimeMarkers.finalCompleted}\` / \`${runtimeMarkers.tellaskBack}\` / FBR markers (\`${runtimeMarkers.fbrDirectReply}\` / \`${runtimeMarkers.fbrReasoningOnly}\`), because Dominds
|
|
120
|
+
`- When you define a “reply/delivery format” inside tellask body, keep it to the business delivery structure; do not require the tellaskee to hand-write \`${runtimeMarkers.finalCompleted}\` / \`${runtimeMarkers.tellaskBack}\` / FBR markers (\`${runtimeMarkers.fbrDirectReply}\` / \`${runtimeMarkers.fbrReasoningOnly}\`), because Dominds injects those markers automatically.`,
|
|
121
121
|
'- In a teammate-triggered Side Dialog, do not treat “blocked / uncertain” as an automatic `tellaskBack`: if current team SOP / role ownership already identifies the responsible executor, directly use `tellask` / `tellaskSessionless` for that owner; use `tellaskBack` only when you truly need the tellasker to clarify, decide, confirm acceptance criteria, provide missing input, or when existing SOP cannot determine ownership. `tellaskBack` must not carry `sessionSlug`.',
|
|
122
|
-
`- Reply markers are auto-added by
|
|
122
|
+
`- Reply markers are auto-added by Dominds in the inter-dialog transfer payload (for example \`${runtimeMarkers.tellaskBack}\` / \`${runtimeMarkers.finalCompleted}\` / FBR markers \`${runtimeMarkers.fbrDirectReply}\` / \`${runtimeMarkers.fbrReasoningOnly}\`); that same transfer payload is what the target agent receives in context and what UI shows. Do not hand-write markers.`,
|
|
123
123
|
],
|
|
124
124
|
});
|
|
125
125
|
return lines.join('\n');
|
|
126
126
|
}
|
|
127
127
|
function buildSideDialogTellaskerReplyMarkerRules(language) {
|
|
128
128
|
const runtimeMarkers = (0, inter_dialog_format_1.getRuntimeTransferMarkers)(language);
|
|
129
|
+
// Business scenario: Side Dialogs use the same visible conversation surface for three very
|
|
130
|
+
// different acts: asking another teammate (`tellask*`), asking the requester a question
|
|
131
|
+
// (`tellaskBack`), and sending the final answer back through a runtime-selected reply tool.
|
|
132
|
+
// Models often blur those acts when the prompt names all tools at once. These rules deliberately
|
|
133
|
+
// make runtime the authority for "is somebody waiting for my final reply" and "which reply tool
|
|
134
|
+
// sends it", while leaving business ownership/SOP decisions to the model.
|
|
129
135
|
const lines = pickLocalized(language, {
|
|
130
136
|
zh: [
|
|
131
137
|
'- 本规则仅用于当前支线向诉请者回复;`tellask` 用于**发起新的下游诉请对话**(委托队友做事),不用于向诉请者汇报。',
|
|
132
138
|
'- 当前支线未完成时,不要默认直接 `tellaskBack`。先判断当前团队规程/SOP/职责卡能否明确负责人:若能明确且属于执行性处理,直接 `tellask` / `tellaskSessionless` 对应负责人;只有当必须向诉请者补充需求、做业务裁决、澄清验收口径、提供缺失输入,或现有规程无法明确判责时,才发起 `tellaskBack({ tellaskContent: "..." })`,并在 `tellaskContent` 中给出具体问题。',
|
|
133
|
-
'-
|
|
134
|
-
'-
|
|
135
|
-
`-
|
|
136
|
-
'-
|
|
137
|
-
'- "不得发普通文本中间汇报"
|
|
139
|
+
'- 是否有别的对话正在等你发送最终回贴、以及发送时该用哪个精确回复工具,均由 Dominds 根据当前对话状态判断;Dominds 会在任务开头或最新 Dominds/user 提示里直接点名。',
|
|
140
|
+
'- 若 Dominds 点名了精确回复工具,你只需调用那个被点名的工具;不要自己从历史上下文猜工具变体。禁止调用 `tellaskBack` 发送最终结果,也禁止用 `tellask` 向诉请者发送最终结果。',
|
|
141
|
+
`- 正式完成路径:只有在 Dominds 当前明确点名了某个精确回复工具,且你通过那个工具回复时,Dominds 才会把该回复作为完成结果投递给诉请者,并在传递正文中添加 ${runtimeMarkers.finalCompleted}。不要只发普通文本;对方可能收不到正式回贴。`,
|
|
142
|
+
'- 若 Dominds 当前明确提示“无需回贴”,说明这就是当前对话里的普通回合;按当前用户/Dominds 消息正常交流和处理即可。',
|
|
143
|
+
'- "不得发普通文本中间汇报"只针对未完成态;若你已经完成任务并能给出最终交付,就应使用 Dominds 当前点名的精确回复工具,不要使用 `tellaskBack` 或 `tellask`。',
|
|
138
144
|
'- 例外:FBR 支线为工具禁用模式(不得调用 `tellaskBack`);其回贴标记(`' +
|
|
139
145
|
runtimeMarkers.fbrDirectReply +
|
|
140
146
|
'` / `' +
|
|
141
147
|
runtimeMarkers.fbrReasoningOnly +
|
|
142
|
-
'`)
|
|
148
|
+
'`)也由 Dominds 在传递正文中注入。',
|
|
143
149
|
'- 若人类用户在支线对话中插入消息或补问:直接正常回复即可,不需要向诉请者汇报(支线不需要主动汇报诉请者,默认行为就是直接回复)。',
|
|
144
150
|
],
|
|
145
151
|
en: [
|
|
146
152
|
'- This rule applies only when replying to the tellasker from the current Side Dialog; tellask is for initiating a new downstream tellask dialog (delegating work to a teammate), not for reporting back to the tellasker.',
|
|
147
153
|
'- If the current Side Dialog is unfinished, do not default to `tellaskBack`. First judge whether current team SOP / role ownership already identifies the responsible executor: if yes and the issue is execution work, directly use `tellask` / `tellaskSessionless` for that owner; use `tellaskBack({ tellaskContent: "..." })` only when the tellasker must provide clarification, business decision, acceptance-criteria confirmation, missing input, or when existing SOP cannot determine ownership. Put concrete questions in `tellaskContent`.',
|
|
148
|
-
'-
|
|
149
|
-
'- If
|
|
150
|
-
`- Formal completion path: only replies sent through the exact reply
|
|
151
|
-
'- If
|
|
152
|
-
'- "Do not post a plain-text progress update" only applies to unfinished states; if the task is done and you can deliver the final result, use the exact reply
|
|
154
|
+
'- Dominds decides from the current dialog state whether another dialog is waiting for your final reply, and which exact reply tool sends it; Dominds will state that directly in the task header or the latest Dominds/user prompt.',
|
|
155
|
+
'- If Dominds names an exact reply tool, call that named tool and do not choose a variant by yourself. Do not use `tellaskBack` or `tellask` to send final delivery.',
|
|
156
|
+
`- Formal completion path: only replies sent through the exact reply tool currently named by Dominds are delivered to the tellasker as completion results and marked with ${runtimeMarkers.finalCompleted}. Do not rely on plain text; the other dialog may not receive a formal reply that way.`,
|
|
157
|
+
'- If Dominds explicitly says no reply is needed right now, this is just a normal turn in the current conversation; handle the current user/Dominds message normally.',
|
|
158
|
+
'- "Do not post a plain-text progress update" only applies to unfinished states; if the task is done and you can deliver the final result, use the exact reply tool currently named by Dominds instead of `tellaskBack` or `tellask`.',
|
|
153
159
|
'- Exception: FBR Side Dialog is tool-less (no \`tellaskBack\`); its reply markers (`' +
|
|
154
160
|
runtimeMarkers.fbrDirectReply +
|
|
155
161
|
'` / `' +
|
|
156
162
|
runtimeMarkers.fbrReasoningOnly +
|
|
157
|
-
'`) are also injected by
|
|
163
|
+
'`) are also injected by Dominds into the transfer payload.',
|
|
158
164
|
'- If a human user inserts a message or asks a follow-up in the Side Dialog: just reply normally; no need to report back to the tellasker (Side Dialog has no standing obligation to report to the tellasker).',
|
|
159
165
|
],
|
|
160
166
|
});
|
|
@@ -163,25 +169,34 @@ function buildSideDialogTellaskerReplyMarkerRules(language) {
|
|
|
163
169
|
function buildTellaskReplyMarkerScopePolicy(language, dialogScope) {
|
|
164
170
|
const runtimeMarkers = (0, inter_dialog_format_1.getRuntimeTransferMarkers)(language);
|
|
165
171
|
if (dialogScope === 'sideDialog') {
|
|
172
|
+
// Business scenario: this policy is embedded in the standing Side Dialog system prompt, so
|
|
173
|
+
// it must teach the stable rule without forcing the model to infer the live state. The live
|
|
174
|
+
// state comes from runtime prompts such as "[Dominds 回复路径]" or "[Dominds 无需回贴]"; this
|
|
175
|
+
// standing text only says how to obey those runtime facts when they appear.
|
|
176
|
+
//
|
|
177
|
+
// The "no reply needed" wording is deliberately phrased as "normal current turn" instead of
|
|
178
|
+
// as a broad tool/reminder prohibition. A completed Sideline Dialog follow-up may still need
|
|
179
|
+
// tools, reminder cleanup, or ordinary explanation if the user asks for them; the key business
|
|
180
|
+
// fact is only that no requester is waiting for formal final delivery anymore.
|
|
166
181
|
return [
|
|
167
182
|
...pickLocalized(language, {
|
|
168
183
|
zh: [
|
|
169
|
-
`-
|
|
170
|
-
'-
|
|
184
|
+
`- 回贴文本标记由 Dominds 在跨对话传递正文中自动添加(常规完成=${runtimeMarkers.finalCompleted};FBR=${runtimeMarkers.fbrDirectReply} 或 ${runtimeMarkers.fbrReasoningOnly});该正文直接进入诉请者上下文,且 UI 展示与其一致。你无需、也不应手写标记。`,
|
|
185
|
+
'- 若你在正文中给下游写“回贴格式”,只写业务交付结构;不得要求下游手写任何标记,Dominds 会自动注入。',
|
|
171
186
|
'- `tellaskBack` 只允许用于回问诉请者;仅当必须向诉请者补需求/澄清/裁决/缺失输入,或现有团队规程无法明确判责时才使用。禁止用 `tellaskBack` 发送最终结果。',
|
|
172
187
|
'- 当前支线未完成时,不得把“阻塞/不确定”机械等同于 `tellaskBack`;若团队规程/SOP/职责卡已明确负责人,应直接 `tellask` / `tellaskSessionless` 对应负责人,不得发普通文本中间汇报。',
|
|
173
188
|
`- ${(0, reply_prompt_copy_1.buildSideDialogCompletionRule)('zh')}`,
|
|
174
|
-
`-
|
|
175
|
-
'-
|
|
189
|
+
`- 正式完成路径中,仅当 Dominds 当前明确点名了某个精确回复工具,且你通过那个工具回复时,Dominds 才会把该回复投递给诉请者并标注 ${runtimeMarkers.finalCompleted};不要只发普通文本,对方可能收不到正式回贴。`,
|
|
190
|
+
'- 若 Dominds 当前明确提示“无需回贴”,说明这轮没有别的对话在等你发送最终回贴;这是当前对话里的普通回合,按当前消息正常交流和处理即可。',
|
|
176
191
|
],
|
|
177
192
|
en: [
|
|
178
|
-
`- Reply markers are
|
|
179
|
-
'- If you define a reply format for downstream, keep it to the business delivery structure; do not require downstream to hand-write any marker, because
|
|
193
|
+
`- Reply markers are added by Dominds in the inter-dialog transfer payload (regular completed reply = ${runtimeMarkers.finalCompleted}; FBR = ${runtimeMarkers.fbrDirectReply} or ${runtimeMarkers.fbrReasoningOnly}); this payload is delivered to tellasker context and shown identically in UI. Do not hand-write markers.`,
|
|
194
|
+
'- If you define a reply format for downstream, keep it to the business delivery structure; do not require downstream to hand-write any marker, because Dominds injects markers automatically.',
|
|
180
195
|
'- `tellaskBack` is only for asking the tellasker back; use it only when tellasker clarification / decision / missing input is required, or current team SOP cannot determine ownership. Do not use `tellaskBack` to send final results.',
|
|
181
196
|
'- If the current Side Dialog is unfinished, do not mechanically map “blocked / uncertain” to `tellaskBack`; when team SOP / role ownership already identifies the responsible owner, directly use `tellask` / `tellaskSessionless` for that owner instead of posting a plain-text progress update.',
|
|
182
197
|
`- ${(0, reply_prompt_copy_1.buildSideDialogCompletionRule)('en')}`,
|
|
183
|
-
`- In the formal completion path,
|
|
184
|
-
'- If
|
|
198
|
+
`- In the formal completion path, Dominds marks ${runtimeMarkers.finalCompleted} and delivers to the tellasker only when Dominds currently names an exact reply tool and you reply through that named tool; do not rely on plain text, because the other dialog may not receive a formal reply that way.`,
|
|
199
|
+
'- If Dominds currently tells you no reply is needed, then no other dialog is waiting for your final reply in this turn; this is a normal turn in the current conversation, so handle the current message normally.',
|
|
185
200
|
],
|
|
186
201
|
}),
|
|
187
202
|
];
|
|
@@ -230,7 +245,7 @@ function buildFbrGuidelines(language, dialogScope, contextHealthPromptMode) {
|
|
|
230
245
|
const lines = pickLocalized(language, {
|
|
231
246
|
zh: [
|
|
232
247
|
'- FBR 由 `freshBootsReasoning` 触发,不属于普通队友诉请分类;请按本节规则执行。',
|
|
233
|
-
'- FBR 不可调用 `tellaskBack
|
|
248
|
+
'- FBR 不可调用 `tellaskBack`;其回贴标记由 Dominds 在跨对话传递正文中自动注入。',
|
|
234
249
|
'- FBR 禁止一切 tellask(包括 `tellaskBack` / `tellask` / `tellaskSessionless` / `askHuman`)。',
|
|
235
250
|
'- 当用户明确要求“做一次 FBR/扪心自问”,对话主理人必须发起 `freshBootsReasoning`。',
|
|
236
251
|
fbrContextHealthRule,
|
|
@@ -247,7 +262,7 @@ function buildFbrGuidelines(language, dialogScope, contextHealthPromptMode) {
|
|
|
247
262
|
],
|
|
248
263
|
en: [
|
|
249
264
|
'- FBR is triggered by `freshBootsReasoning`, not by normal teammate tellasks; follow this section’s rules.',
|
|
250
|
-
'- FBR cannot call `tellaskBack`; its reply marker is injected by
|
|
265
|
+
'- FBR cannot call `tellaskBack`; its reply marker is injected by Dominds into the inter-dialog transfer payload.',
|
|
251
266
|
'- FBR forbids all tellask calls (including `tellaskBack` / `tellask` / `tellaskSessionless` / `askHuman`).',
|
|
252
267
|
'- When the user explicitly requests “do an FBR / fresh boots reasoning”, the Dialog Responder must call `freshBootsReasoning`.',
|
|
253
268
|
fbrContextHealthRule,
|
|
@@ -316,7 +331,7 @@ function formatMcpToolsetRuntimeNote(language, notices) {
|
|
|
316
331
|
return '';
|
|
317
332
|
const lines = language === 'zh'
|
|
318
333
|
? [
|
|
319
|
-
'以下 MCP toolset 已配置给你,且在 `.minds/mcp.yaml`
|
|
334
|
+
'以下 MCP toolset 已配置给你,且在 `.minds/mcp.yaml` 中有声明,但当前没有可调用的 MCP 工具。',
|
|
320
335
|
'其中有些可能是暂时不可达(例如 stdio transport 进程启动失败,或 streamable HTTP transport 当前无法连接),有些可能是被明确禁用;这不代表你的权限被撤销,也不应视为系统级功能降级。',
|
|
321
336
|
...notices.map((notice) => {
|
|
322
337
|
if (notice.status === 'disabled') {
|
|
@@ -331,7 +346,7 @@ function formatMcpToolsetRuntimeNote(language, notices) {
|
|
|
331
346
|
'若当前任务依赖这些能力,应明确说明对应 MCP toolset 眼下不可用,并优先继续使用其余可用工具/路径推进。',
|
|
332
347
|
]
|
|
333
348
|
: [
|
|
334
|
-
'The following MCP toolsets are assigned to you and declared in `.minds/mcp.yaml`, but they do not currently provide callable
|
|
349
|
+
'The following MCP toolsets are assigned to you and declared in `.minds/mcp.yaml`, but they do not currently provide callable MCP tools.',
|
|
335
350
|
'Some may be temporarily unavailable (for example a stdio transport process failing to start right now, or a streamable HTTP transport being unreachable right now), and some may be explicitly disabled. This does not mean your permission was revoked, and it should not be treated as a system-level capability downgrade.',
|
|
336
351
|
...notices.map((notice) => {
|
|
337
352
|
if (notice.status === 'disabled') {
|
package/dist/persistence.js
CHANGED
|
@@ -388,8 +388,14 @@ function isSuppressedTellaskPlaceholderFuncResult(args) {
|
|
|
388
388
|
if (raw === '') {
|
|
389
389
|
return false;
|
|
390
390
|
}
|
|
391
|
+
// Business scenario: these generated tool results are only waiting/status placeholders. They
|
|
392
|
+
// must be suppressed when reconstructing the conversation so the model does not confuse them
|
|
393
|
+
// with a real teammate/human answer. Keep the old prefixes for persisted records, and include
|
|
394
|
+
// the newer plain-language prefixes so the suppression logic matches the current copy.
|
|
391
395
|
if (raw === 'Q4H 已结束等待状态,请参考 askHuman 结果气泡。' ||
|
|
392
|
-
raw === 'Q4H wait is resolved; refer to the askHuman result bubble.'
|
|
396
|
+
raw === 'Q4H wait is resolved; refer to the askHuman result bubble.' ||
|
|
397
|
+
raw === '人类已经回答;请参考 askHuman 结果气泡。' ||
|
|
398
|
+
raw === 'The human has answered; refer to the askHuman result bubble.') {
|
|
393
399
|
return true;
|
|
394
400
|
}
|
|
395
401
|
if (raw.startsWith('Q4H 仍在等待人类回复,已持续 ') ||
|
|
@@ -404,6 +410,14 @@ function isSuppressedTellaskPlaceholderFuncResult(args) {
|
|
|
404
410
|
(raw.includes('当前仍在等待') || raw.includes('is still waiting'))) {
|
|
405
411
|
return true;
|
|
406
412
|
}
|
|
413
|
+
if (raw.startsWith('[Dominds 等待人类回复]') ||
|
|
414
|
+
raw.startsWith('[Dominds waiting for human answer]') ||
|
|
415
|
+
raw.startsWith('[Dominds 等待队友回贴]') ||
|
|
416
|
+
raw.startsWith('[Dominds waiting for teammate reply]') ||
|
|
417
|
+
raw.startsWith('[Dominds 队友回贴状态]') ||
|
|
418
|
+
raw.startsWith('[Dominds teammate reply status]')) {
|
|
419
|
+
return true;
|
|
420
|
+
}
|
|
407
421
|
return false;
|
|
408
422
|
}
|
|
409
423
|
function isYamlUnexpectedEofLikeError(error) {
|
|
@@ -12,14 +12,39 @@ export declare function formatNewCourseStartPrompt(language: LanguageCode, args:
|
|
|
12
12
|
}): string;
|
|
13
13
|
export declare function formatDiligenceAutoContinuePrompt(language: LanguageCode, diligenceText: string): string;
|
|
14
14
|
export declare function formatReminderContextGuide(language: LanguageCode): string;
|
|
15
|
-
export type
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
export type ReminderContextFollowingMessage = Readonly<{
|
|
16
|
+
kind: 'user_message';
|
|
17
|
+
}> | Readonly<{
|
|
18
|
+
kind: 'human_answer';
|
|
19
|
+
}> | Readonly<{
|
|
20
|
+
kind: 'runtime_notice';
|
|
21
|
+
}> | Readonly<{
|
|
22
|
+
kind: 'none';
|
|
23
|
+
}>;
|
|
24
|
+
export type ReminderContextHealth = Readonly<{
|
|
25
|
+
kind: 'normal';
|
|
26
|
+
}> | Readonly<{
|
|
27
|
+
kind: 'caution';
|
|
28
|
+
}> | Readonly<{
|
|
29
|
+
kind: 'critical';
|
|
30
|
+
}>;
|
|
31
|
+
export type ReminderContextBusiness = Readonly<{
|
|
32
|
+
kind: 'none';
|
|
33
|
+
}> | Readonly<{
|
|
34
|
+
kind: 'active_reply_obligation';
|
|
35
|
+
}> | Readonly<{
|
|
36
|
+
kind: 'pending_user_interjection';
|
|
37
|
+
}> | Readonly<{
|
|
38
|
+
kind: 'pending_user_interjection_with_active_reply';
|
|
39
|
+
}> | Readonly<{
|
|
40
|
+
kind: 'pending_user_interjection_with_parked_reply';
|
|
41
|
+
}> | Readonly<{
|
|
42
|
+
kind: 'user_followup_after_completed_handoff';
|
|
43
|
+
}>;
|
|
18
44
|
export type ReminderContextFooterState = Readonly<{
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
contextHealthState: ReminderContextHealthState;
|
|
45
|
+
followingMessage: ReminderContextFollowingMessage;
|
|
46
|
+
contextHealth: ReminderContextHealth;
|
|
47
|
+
business: ReminderContextBusiness;
|
|
23
48
|
}>;
|
|
24
49
|
export declare function formatReminderContextFooter(language: LanguageCode, state: ReminderContextFooterState): string;
|
|
25
50
|
export type ReminderMaintenanceReferenceItem = Readonly<{
|