dominds 1.19.3 → 1.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/access-control.js +2 -2
- package/dist/dialog.d.ts +6 -1
- package/dist/dialog.js +13 -4
- package/dist/docs/context-health.md +39 -13
- package/dist/docs/context-health.zh.md +14 -7
- package/dist/docs/idle-reminder-wake.md +227 -0
- package/dist/docs/idle-reminder-wake.zh.md +227 -0
- package/dist/llm/client.d.ts +2 -0
- package/dist/llm/client.js +32 -2
- package/dist/llm/defaults.yaml +51 -10
- package/dist/llm/gen/codex.js +15 -0
- package/dist/llm/gen/failure-classifier.js +22 -1
- package/dist/llm/kernel-driver/drive.js +6 -0
- package/dist/llm/kernel-driver/flow.js +9 -0
- package/dist/llm/kernel-driver/idle-reminder-wake.d.ts +4 -0
- package/dist/llm/kernel-driver/idle-reminder-wake.js +351 -0
- package/dist/llm/kernel-driver/types.d.ts +1 -1
- package/dist/minds/load.js +2 -1
- package/dist/minds/minds-i18n.js +2 -2
- package/dist/minds/system-prompt-parts.js +56 -20
- package/dist/minds/system-prompt.js +10 -10
- package/dist/persistence.js +1 -1
- package/dist/runtime/driver-messages.d.ts +3 -0
- package/dist/runtime/driver-messages.js +91 -8
- package/dist/server/setup-routes.js +5 -5
- package/dist/tool.d.ts +8 -0
- package/dist/tools/builtins.js +4 -2
- package/dist/tools/ctrl.d.ts +2 -0
- package/dist/tools/ctrl.js +255 -68
- package/dist/tools/os.js +198 -0
- package/dist/tools/prompts/control/en/errors.md +2 -2
- package/dist/tools/prompts/control/en/index.md +1 -1
- package/dist/tools/prompts/control/en/principles.md +21 -14
- package/dist/tools/prompts/control/en/scenarios.md +12 -4
- package/dist/tools/prompts/control/en/tools.md +45 -5
- package/dist/tools/prompts/control/zh/errors.md +2 -2
- package/dist/tools/prompts/control/zh/index.md +1 -1
- package/dist/tools/prompts/control/zh/principles.md +21 -14
- package/dist/tools/prompts/control/zh/scenarios.md +10 -4
- package/dist/tools/prompts/control/zh/tools.md +40 -5
- package/dist/tools/prompts/personal_memory/en/principles.md +1 -1
- package/dist/tools/prompts/personal_memory/zh/principles.md +1 -1
- package/dist/tools/prompts/team_memory/en/principles.md +1 -1
- package/dist/tools/prompts/team_memory/zh/principles.md +1 -1
- package/dist/tools/team_mgmt.js +5 -8
- package/dist/utils/task-package.d.ts +7 -0
- package/dist/utils/task-package.js +65 -28
- package/dist/utils/taskdoc.js +21 -17
- package/package.json +4 -4
- package/webapp/dist/assets/{_basePickBy-Dnh413xT.js → _basePickBy-B7M9Q0Fa.js} +3 -3
- package/webapp/dist/assets/_basePickBy-B7M9Q0Fa.js.map +1 -0
- package/webapp/dist/assets/{_baseUniq-DWzYqpN_.js → _baseUniq-DAeYoL6j.js} +2 -2
- package/webapp/dist/assets/_baseUniq-DAeYoL6j.js.map +1 -0
- package/webapp/dist/assets/{arc-vfBkNCOx.js → arc-Bh4nDbNR.js} +2 -2
- package/webapp/dist/assets/arc-Bh4nDbNR.js.map +1 -0
- package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-DiUEBXOa.js → architectureDiagram-2XIMDMQ5-CxqmdsIm.js} +26 -8
- package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-CxqmdsIm.js.map +1 -0
- package/webapp/dist/assets/{blockDiagram-VD42YOAC-BqK1KM2m.js → blockDiagram-WCTKOSBZ-CxIWLtpt.js} +187 -170
- package/webapp/dist/assets/blockDiagram-WCTKOSBZ-CxIWLtpt.js.map +1 -0
- package/webapp/dist/assets/{c4Diagram-YG6GDRKO-ClHNu1Uo.js → c4Diagram-IC4MRINW-1qErOIgG.js} +4 -4
- package/webapp/dist/assets/c4Diagram-IC4MRINW-1qErOIgG.js.map +1 -0
- package/webapp/dist/assets/{channel-BbWLVc8W.js → channel-DkgZHNUe.js} +2 -2
- package/webapp/dist/assets/channel-DkgZHNUe.js.map +1 -0
- package/webapp/dist/assets/{chunk-4BX2VUAB-CItdSmZH.js → chunk-4BX2VUAB-BmdMbU9v.js} +2 -2
- package/webapp/dist/assets/chunk-4BX2VUAB-BmdMbU9v.js.map +1 -0
- package/webapp/dist/assets/{chunk-55IACEB6-DSCX9WCf.js → chunk-55IACEB6-D6LDTDBy.js} +2 -2
- package/webapp/dist/assets/chunk-55IACEB6-D6LDTDBy.js.map +1 -0
- package/webapp/dist/assets/{chunk-FMBD7UC4-BJ1vT2se.js → chunk-FMBD7UC4-C-BdCe4C.js} +2 -2
- package/webapp/dist/assets/chunk-FMBD7UC4-C-BdCe4C.js.map +1 -0
- package/webapp/dist/assets/{chunk-TZMSLE5B-D2g6Tj7Z.js → chunk-JSJVCQXG-WA_BLIm9.js} +14 -6
- package/webapp/dist/assets/chunk-JSJVCQXG-WA_BLIm9.js.map +1 -0
- package/webapp/dist/assets/{chunk-QN33PNHL-CGyezTSD.js → chunk-KX2RTZJC-CA7sDJO5.js} +2 -2
- package/webapp/dist/assets/chunk-KX2RTZJC-CA7sDJO5.js.map +1 -0
- package/webapp/dist/assets/{chunk-DI55MBZ5-CRMf6XZu.js → chunk-NQ4KR5QH-wlvxalE3.js} +9 -7
- package/webapp/dist/assets/chunk-NQ4KR5QH-wlvxalE3.js.map +1 -0
- package/webapp/dist/assets/{chunk-QZHKN3VN-9xs15j8C.js → chunk-QZHKN3VN-Bo1VMcph.js} +2 -2
- package/webapp/dist/assets/chunk-QZHKN3VN-Bo1VMcph.js.map +1 -0
- package/webapp/dist/assets/{chunk-B4BG7PRW-5CRXFeD9.js → chunk-WL4C6EOR-B-Pk44be.js} +171 -121
- package/webapp/dist/assets/chunk-WL4C6EOR-B-Pk44be.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-2ON5EDUG-BQFGGJNm.js → classDiagram-VBA2DB6C-BqKuyb49.js} +7 -6
- package/webapp/dist/assets/classDiagram-VBA2DB6C-BqKuyb49.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-BQFGGJNm.js → classDiagram-v2-RAHNMMFH-BqKuyb49.js} +7 -6
- package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-BqKuyb49.js.map +1 -0
- package/webapp/dist/assets/{clone-DOfPd4cz.js → clone-BX5z8WVZ.js} +2 -2
- package/webapp/dist/assets/clone-BX5z8WVZ.js.map +1 -0
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BYN-vqm8.js → cose-bilkent-S5V4N54A-B-s11SgN.js} +2 -2
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-B-s11SgN.js.map +1 -0
- package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
- package/webapp/dist/assets/{dagre-6UL2VRFP-ClEaFABE.js → dagre-KLK3FWXG-DmQFV2qK.js} +7 -7
- package/webapp/dist/assets/dagre-KLK3FWXG-DmQFV2qK.js.map +1 -0
- package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
- package/webapp/dist/assets/{diagram-PSM6KHXK-CM4hLE_0.js → diagram-E7M64L7V-QRaBfST8.js} +10 -10
- package/webapp/dist/assets/diagram-E7M64L7V-QRaBfST8.js.map +1 -0
- package/webapp/dist/assets/{diagram-QEK2KX5R-BZjGFX-2.js → diagram-IFDJBPK2-lrWn1Obo.js} +9 -8
- package/webapp/dist/assets/diagram-IFDJBPK2-lrWn1Obo.js.map +1 -0
- package/webapp/dist/assets/{diagram-S2PKOQOG-Bvw01OOG.js → diagram-P4PSJMXO-sTU7Hh-Y.js} +8 -8
- package/webapp/dist/assets/diagram-P4PSJMXO-sTU7Hh-Y.js.map +1 -0
- package/webapp/dist/assets/{erDiagram-Q2GNP2WA-ctHu5zQL.js → erDiagram-INFDFZHY-Cx6jc9Wq.js} +96 -75
- package/webapp/dist/assets/erDiagram-INFDFZHY-Cx6jc9Wq.js.map +1 -0
- package/webapp/dist/assets/{flowDiagram-NV44I4VS-m7ofIhri.js → flowDiagram-PKNHOUZH-DfGI49Dz.js} +98 -81
- package/webapp/dist/assets/flowDiagram-PKNHOUZH-DfGI49Dz.js.map +1 -0
- package/webapp/dist/assets/{ganttDiagram-JELNMOA3-D9wS5Veb.js → ganttDiagram-A5KZAMGK-nrcHWWaM.js} +28 -3
- package/webapp/dist/assets/ganttDiagram-A5KZAMGK-nrcHWWaM.js.map +1 -0
- package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-B86qqJx7.js → gitGraphDiagram-K3NZZRJ6-D8ivAqd6.js} +38 -46
- package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-D8ivAqd6.js.map +1 -0
- package/webapp/dist/assets/graph-R5G-y8tB.js +782 -0
- package/webapp/dist/assets/graph-R5G-y8tB.js.map +1 -0
- package/webapp/dist/assets/{index-tinPEZoH.js → index--fy89xGh.js} +1034 -1059
- package/webapp/dist/assets/{index-tinPEZoH.js.map → index--fy89xGh.js.map} +1 -1
- package/webapp/dist/assets/{index-BGdI3lWA.css → index-DZFkLLVz.css} +1 -1
- package/webapp/dist/assets/{infoDiagram-HS3SLOUP-DwRPUctP.js → infoDiagram-LFFYTUFH-PIoZHr7s.js} +7 -7
- package/webapp/dist/assets/infoDiagram-LFFYTUFH-PIoZHr7s.js.map +1 -0
- package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-oCM-LYk1.js +966 -0
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-oCM-LYk1.js.map +1 -0
- package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-B91ZO-ec.js → journeyDiagram-4ABVD52K-C2qidjQ5.js} +5 -5
- package/webapp/dist/assets/journeyDiagram-4ABVD52K-C2qidjQ5.js.map +1 -0
- package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-CoogrZ07.js → kanban-definition-K7BYSVSG-Du0TC8WS.js} +5 -3
- package/webapp/dist/assets/kanban-definition-K7BYSVSG-Du0TC8WS.js.map +1 -0
- package/webapp/dist/assets/{layout-BrzQmqFJ.js → layout-VmEo1OEB.js} +5 -5
- package/webapp/dist/assets/layout-VmEo1OEB.js.map +1 -0
- package/webapp/dist/assets/{linear-C6H7K9Zy.js → linear-B662YHAc.js} +2 -2
- package/webapp/dist/assets/linear-B662YHAc.js.map +1 -0
- package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-UDHZQkNZ.js → mindmap-definition-YRQLILUH-D7arZj95.js} +7 -5
- package/webapp/dist/assets/mindmap-definition-YRQLILUH-D7arZj95.js.map +1 -0
- package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
- package/webapp/dist/assets/{pieDiagram-ADFJNKIX-M81uyQ1J.js → pieDiagram-SKSYHLDU-DvjPP4PA.js} +8 -8
- package/webapp/dist/assets/pieDiagram-SKSYHLDU-DvjPP4PA.js.map +1 -0
- package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-ClzIh9Gb.js → quadrantDiagram-337W2JSQ-B_JUGMj_.js} +3 -3
- package/webapp/dist/assets/quadrantDiagram-337W2JSQ-B_JUGMj_.js.map +1 -0
- package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-DLK3A-pn.js → requirementDiagram-Z7DCOOCP-DF0mpvE3.js} +16 -6
- package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-DF0mpvE3.js.map +1 -0
- package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-CYqju8I1.js → sankeyDiagram-WA2Y5GQK-CoXlxv00.js} +2 -2
- package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-CoXlxv00.js.map +1 -0
- package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-2guv6eOd.js → sequenceDiagram-2WXFIKYE-DYqT5Pg7.js} +601 -201
- package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-DYqT5Pg7.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-iujqSp0X.js → stateDiagram-RAJIS63D-D9b1mN8-.js} +9 -9
- package/webapp/dist/assets/stateDiagram-RAJIS63D-D9b1mN8-.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-BxzY81ky.js → stateDiagram-v2-FVOUBMTO-DNzgudL_.js} +5 -5
- package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-DNzgudL_.js.map +1 -0
- package/webapp/dist/assets/{timeline-definition-IT6M3QCI-DjCFSC8d.js → timeline-definition-YZTLITO2-CkyKUY7A.js} +3 -3
- package/webapp/dist/assets/timeline-definition-YZTLITO2-CkyKUY7A.js.map +1 -0
- package/webapp/dist/assets/{treemap-GDKQZRPO-iaBzDWCP.js → treemap-KZPCXAKY-CZd09kF-.js} +37 -24
- package/webapp/dist/assets/treemap-KZPCXAKY-CZd09kF-.js.map +1 -0
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-BxVF5Olo.js +2487 -0
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-BxVF5Olo.js.map +1 -0
- package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-R6Jl1c89.js → xychartDiagram-JWTSCODW-BRwRloPc.js} +4 -4
- package/webapp/dist/assets/xychartDiagram-JWTSCODW-BRwRloPc.js.map +1 -0
- package/webapp/dist/index.html +2 -2
- package/webapp/dist/assets/_basePickBy-Dnh413xT.js.map +0 -1
- package/webapp/dist/assets/_baseUniq-DWzYqpN_.js.map +0 -1
- package/webapp/dist/assets/arc-vfBkNCOx.js.map +0 -1
- package/webapp/dist/assets/architectureDiagram-VXUJARFQ-DiUEBXOa.js.map +0 -1
- package/webapp/dist/assets/blockDiagram-VD42YOAC-BqK1KM2m.js.map +0 -1
- package/webapp/dist/assets/c4Diagram-YG6GDRKO-ClHNu1Uo.js.map +0 -1
- package/webapp/dist/assets/channel-BbWLVc8W.js.map +0 -1
- package/webapp/dist/assets/chunk-4BX2VUAB-CItdSmZH.js.map +0 -1
- package/webapp/dist/assets/chunk-55IACEB6-DSCX9WCf.js.map +0 -1
- package/webapp/dist/assets/chunk-B4BG7PRW-5CRXFeD9.js.map +0 -1
- package/webapp/dist/assets/chunk-DI55MBZ5-CRMf6XZu.js.map +0 -1
- package/webapp/dist/assets/chunk-FMBD7UC4-BJ1vT2se.js.map +0 -1
- package/webapp/dist/assets/chunk-QN33PNHL-CGyezTSD.js.map +0 -1
- package/webapp/dist/assets/chunk-QZHKN3VN-9xs15j8C.js.map +0 -1
- package/webapp/dist/assets/chunk-TZMSLE5B-D2g6Tj7Z.js.map +0 -1
- package/webapp/dist/assets/classDiagram-2ON5EDUG-BQFGGJNm.js.map +0 -1
- package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-BQFGGJNm.js.map +0 -1
- package/webapp/dist/assets/clone-DOfPd4cz.js.map +0 -1
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-BYN-vqm8.js.map +0 -1
- package/webapp/dist/assets/dagre-6UL2VRFP-ClEaFABE.js.map +0 -1
- package/webapp/dist/assets/diagram-PSM6KHXK-CM4hLE_0.js.map +0 -1
- package/webapp/dist/assets/diagram-QEK2KX5R-BZjGFX-2.js.map +0 -1
- package/webapp/dist/assets/diagram-S2PKOQOG-Bvw01OOG.js.map +0 -1
- package/webapp/dist/assets/erDiagram-Q2GNP2WA-ctHu5zQL.js.map +0 -1
- package/webapp/dist/assets/flowDiagram-NV44I4VS-m7ofIhri.js.map +0 -1
- package/webapp/dist/assets/ganttDiagram-JELNMOA3-D9wS5Veb.js.map +0 -1
- package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-B86qqJx7.js.map +0 -1
- package/webapp/dist/assets/graph-u844GGQC.js +0 -425
- package/webapp/dist/assets/graph-u844GGQC.js.map +0 -1
- package/webapp/dist/assets/infoDiagram-HS3SLOUP-DwRPUctP.js.map +0 -1
- package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-B91ZO-ec.js.map +0 -1
- package/webapp/dist/assets/kanban-definition-3W4ZIXB7-CoogrZ07.js.map +0 -1
- package/webapp/dist/assets/layout-BrzQmqFJ.js.map +0 -1
- package/webapp/dist/assets/linear-C6H7K9Zy.js.map +0 -1
- package/webapp/dist/assets/mindmap-definition-VGOIOE7T-UDHZQkNZ.js.map +0 -1
- package/webapp/dist/assets/pieDiagram-ADFJNKIX-M81uyQ1J.js.map +0 -1
- package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-ClzIh9Gb.js.map +0 -1
- package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-DLK3A-pn.js.map +0 -1
- package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-CYqju8I1.js.map +0 -1
- package/webapp/dist/assets/sequenceDiagram-WL72ISMW-2guv6eOd.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-FKZM4ZOC-iujqSp0X.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3-BxzY81ky.js.map +0 -1
- package/webapp/dist/assets/timeline-definition-IT6M3QCI-DjCFSC8d.js.map +0 -1
- package/webapp/dist/assets/treemap-GDKQZRPO-iaBzDWCP.js.map +0 -1
- package/webapp/dist/assets/xychartDiagram-PRI3JC2R-R6Jl1c89.js.map +0 -1
|
@@ -24,12 +24,15 @@ export declare function formatDomindsNoteTellaskForTeammatesOnly(language: Langu
|
|
|
24
24
|
export declare function formatDomindsNoteQ4HRegisterFailed(language: LanguageCode, args: {
|
|
25
25
|
error: string;
|
|
26
26
|
}): string;
|
|
27
|
+
export type ContextHealthV3RemediationDialogScope = 'mainDialog' | 'sideDialog';
|
|
27
28
|
export type ContextHealthV3RemediationGuideArgs = {
|
|
28
29
|
kind: 'caution';
|
|
29
30
|
mode: 'soft';
|
|
31
|
+
dialogScope: ContextHealthV3RemediationDialogScope;
|
|
30
32
|
} | {
|
|
31
33
|
kind: 'critical';
|
|
32
34
|
mode: 'countdown';
|
|
35
|
+
dialogScope: ContextHealthV3RemediationDialogScope;
|
|
33
36
|
promptsRemainingAfterThis: number;
|
|
34
37
|
promptsTotal: number;
|
|
35
38
|
};
|
|
@@ -372,8 +372,28 @@ function formatDomindsNoteQ4HRegisterFailed(language, args) {
|
|
|
372
372
|
`- Next: retry; if this keeps failing, delete the dialog's \`q4h.yaml\` (will drop pending questions) or check server logs.`);
|
|
373
373
|
}
|
|
374
374
|
function formatAgentFacingContextHealthV3RemediationGuide(language, args) {
|
|
375
|
+
const isSideDialog = args.dialogScope === 'sideDialog';
|
|
375
376
|
if (language === 'zh') {
|
|
376
377
|
if (args.kind === 'caution' && args.mode === 'soft') {
|
|
378
|
+
if (isSideDialog) {
|
|
379
|
+
return [
|
|
380
|
+
`${formatSystemNoticePrefix(language)} 上下文状态:🟡 吃紧`,
|
|
381
|
+
'',
|
|
382
|
+
'这是一条运行时处置指令,不是新的用户诉求;不要只回复“收到/好的/我先整理提醒项”,而要直接执行下面的处置动作。',
|
|
383
|
+
'',
|
|
384
|
+
'影响:对话历史中的工具调用/结果信息很多已经过时,成为你的思考负担。',
|
|
385
|
+
'',
|
|
386
|
+
'行动:你当前处于支线对话。本程不要维护差遣牒,也不要整理差遣牒更新提案;当前目标是维护足够详尽的接续包提醒项,然后主动 clear_mind 开启新一程继续工作。',
|
|
387
|
+
'',
|
|
388
|
+
'提醒项应覆盖:当前对话历史中下一程需要知道的讨论细节、下一步行动、关键定位信息、运行/验证信息、临时路径/ID/样例输入,以及任何恢复工作容易丢的判断依据。提醒项长度没有技术限制,宁可完整一些;允许写成多条粗略提醒项,不必在当前程强行压成单条。',
|
|
389
|
+
'',
|
|
390
|
+
'当前已处于吃紧处置阶段:不要继续扩张上下文,也不要提前进入“按接续包做清醒复核”的模式;真正清理冗余、合并提醒项,放到系统开启新一程后再做。',
|
|
391
|
+
'',
|
|
392
|
+
'操作:',
|
|
393
|
+
'- 优先新增详尽接续包提醒项:add_reminder({ "content": "..." })',
|
|
394
|
+
'- 只有在确实能就地复用现有提醒项、且不会额外增加当前程认知负担时,才更新:update_reminder({ "reminder_id": "<现有 reminder_id>", "content": "..." })',
|
|
395
|
+
].join('\n');
|
|
396
|
+
}
|
|
377
397
|
return [
|
|
378
398
|
`${formatSystemNoticePrefix(language)} 上下文状态:🟡 吃紧`,
|
|
379
399
|
'',
|
|
@@ -381,15 +401,36 @@ function formatAgentFacingContextHealthV3RemediationGuide(language, args) {
|
|
|
381
401
|
'',
|
|
382
402
|
'影响:对话历史中的工具调用/结果信息很多已经过时,成为你的思考负担。',
|
|
383
403
|
'',
|
|
384
|
-
'
|
|
404
|
+
'行动:你当前处于主线对话。先把当前对话历史中尚未落实到文档、且下一程需要知会的讨论细节落到差遣牒合适章节。然后再把差遣牒仍未覆盖、但恢复工作会丢的信息记进新提醒项过桥(下一步行动 + 关键定位信息 + 运行/验证信息 + 容易丢的临时细节);允许先带着一定冗余,也允许先写成多条粗略提醒项,不必在当前程强行压成单条。',
|
|
385
405
|
'',
|
|
386
|
-
'
|
|
406
|
+
'当前已处于吃紧处置阶段:不要继续扩张上下文,也不要提前进入“按接续包做清醒复核”的模式;那是系统真正开启新一程后的第一步。当前程的目标是先把未落文档的讨论细节补进差遣牒,再把差遣牒仍未覆盖、但恢复工作会丢的信息带过桥;真正清理冗余、合并提醒项,放到新一程再做。然后主动 clear_mind,开启新一程对话继续工作。',
|
|
387
407
|
'',
|
|
388
408
|
'操作:',
|
|
409
|
+
'- 先写差遣牒:mind_more({ "items": ["..."] });需要删旧/重排/压缩时改用 change_mind({ ... })',
|
|
389
410
|
'- 优先新增过桥提醒项:add_reminder({ "content": "..." })',
|
|
390
411
|
'- 只有在确实能就地复用现有提醒项、且不会额外增加当前程认知负担时,才更新:update_reminder({ "reminder_id": "<现有 reminder_id>", "content": "..." })',
|
|
391
412
|
].join('\n');
|
|
392
413
|
}
|
|
414
|
+
if (isSideDialog) {
|
|
415
|
+
return [
|
|
416
|
+
`${formatSystemNoticePrefix(language)} 上下文状态:🔴 告急`,
|
|
417
|
+
'',
|
|
418
|
+
'这是一条运行时处置指令,不是新的用户诉求;不要只回复“收到/好的/我先整理提醒项”,而要直接执行下面的处置动作。',
|
|
419
|
+
'',
|
|
420
|
+
`系统最多再提醒你 ${args.promptsRemainingAfterThis} 次,之后将自动清理头脑开启新一程对话。`,
|
|
421
|
+
'',
|
|
422
|
+
'行动:你当前处于支线对话。本程不要维护差遣牒,也不要整理差遣牒更新提案;当前目标是尽快维护足够详尽的接续包提醒项,然后 clear_mind。',
|
|
423
|
+
'',
|
|
424
|
+
'提醒项应覆盖:当前对话历史中下一程需要知道的讨论细节、下一步行动、关键定位信息、运行/验证信息、临时路径/ID/样例输入,以及任何恢复工作容易丢的判断依据。提醒项长度没有技术限制,宁可完整一些;允许写成多条粗略提醒项,甚至带一定冗余也可以,不必在当前程强行整理干净。',
|
|
425
|
+
'',
|
|
426
|
+
'操作:',
|
|
427
|
+
'- 优先新增详尽接续包提醒项:add_reminder({ "content": "..." })',
|
|
428
|
+
'- 只有在确实能就地复用现有提醒项、且不会额外增加当前程认知负担时,才更新:update_reminder({ "reminder_id": "<现有 reminder_id>", "content": "..." })',
|
|
429
|
+
'- clear_mind({})',
|
|
430
|
+
'',
|
|
431
|
+
'当前处于告急处置阶段时,不要提前做“新一程清醒复核”;系统真正开启新一程后,第一步才是重新审视并整理:删除冗余、纠正偏激/失真思路、合并并压缩成高质量提醒项。',
|
|
432
|
+
].join('\n');
|
|
433
|
+
}
|
|
393
434
|
return [
|
|
394
435
|
`${formatSystemNoticePrefix(language)} 上下文状态:🔴 告急`,
|
|
395
436
|
'',
|
|
@@ -397,17 +438,37 @@ function formatAgentFacingContextHealthV3RemediationGuide(language, args) {
|
|
|
397
438
|
'',
|
|
398
439
|
`系统最多再提醒你 ${args.promptsRemainingAfterThis} 次,之后将自动清理头脑开启新一程对话。`,
|
|
399
440
|
'',
|
|
400
|
-
'
|
|
441
|
+
'行动:你当前处于主线对话。尽快保住易丢信息,然后 clear_mind。当前处于告急处置阶段时,先把当前对话历史中尚未落实到文档、且下一程需要知会的讨论细节落到差遣牒合适章节。然后再把差遣牒仍未覆盖、但恢复工作会丢的信息新增提醒项带过桥;允许先保留多条粗略提醒项,甚至带一定冗余也可以,不必在当前程强行整理干净。',
|
|
401
442
|
'',
|
|
402
443
|
'操作:',
|
|
444
|
+
'- 先写差遣牒:mind_more({ "items": ["..."] });需要删旧/重排/压缩时改用 change_mind({ ... })',
|
|
403
445
|
'- 优先新增过桥提醒项:add_reminder({ "content": "..." })',
|
|
404
446
|
'- 只有在确实能就地复用现有提醒项、且不会额外增加当前程认知负担时,才更新:update_reminder({ "reminder_id": "<现有 reminder_id>", "content": "..." })',
|
|
405
447
|
'- clear_mind({})',
|
|
406
448
|
'',
|
|
407
|
-
'接续包要点:下一步行动 + 关键定位信息 + 运行验证方式 +
|
|
449
|
+
'接续包要点:下一步行动 + 关键定位信息 + 运行验证方式 + 容易丢的临时细节;不要重复差遣牒已有内容,本程刚落入差遣牒的讨论细节只需提示下一程先查差遣牒。当前处于告急处置阶段时,不要提前做“新一程清醒复核”;系统真正开启新一程后,第一步才是重新审视并整理:删除冗余、纠正偏激/失真思路、合并并压缩成高质量提醒项。',
|
|
408
450
|
].join('\n');
|
|
409
451
|
}
|
|
410
452
|
if (args.kind === 'caution' && args.mode === 'soft') {
|
|
453
|
+
if (isSideDialog) {
|
|
454
|
+
return [
|
|
455
|
+
`${formatSystemNoticePrefix(language)} Context state: 🟡 caution`,
|
|
456
|
+
'',
|
|
457
|
+
'This is a runtime remediation instruction, not a new user request; do not reply with a standalone "acknowledged/ok/I will organize reminders first", and instead perform the remediation actions directly.',
|
|
458
|
+
'',
|
|
459
|
+
'Impact: stale call/results in dialog history are creating cognitive noise.',
|
|
460
|
+
'',
|
|
461
|
+
'Action: you are in a Side Dialog. Do not maintain Taskdoc in this course, and do not draft Taskdoc update proposals. The current goal is to maintain sufficiently detailed continuation-package reminders, then proactively clear_mind to start a new dialog course.',
|
|
462
|
+
'',
|
|
463
|
+
'Reminders should cover: 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 any reasoning needed to resume safely. Reminder length has no technical limit, so prefer being complete; rough multi-reminder carry-over is acceptable, and you do not need to force everything into one clean reminder in the current course.',
|
|
464
|
+
'',
|
|
465
|
+
'You are already in caution remediation for the current course, so do not keep expanding context and do not switch early into “clear-headed continuation-package review” mode; reminder cleanup and dedup belong to the new course.',
|
|
466
|
+
'',
|
|
467
|
+
'Operations:',
|
|
468
|
+
'- Prefer adding a detailed continuation-package reminder first: add_reminder({ "content": "..." })',
|
|
469
|
+
'- Only if an existing reminder is clearly the right place, and updating it would not add extra cognitive load in the current course: update_reminder({ "reminder_id": "<existing reminder_id>", "content": "..." })',
|
|
470
|
+
].join('\n');
|
|
471
|
+
}
|
|
411
472
|
return [
|
|
412
473
|
`${formatSystemNoticePrefix(language)} Context state: 🟡 caution`,
|
|
413
474
|
'',
|
|
@@ -415,15 +476,36 @@ function formatAgentFacingContextHealthV3RemediationGuide(language, args) {
|
|
|
415
476
|
'',
|
|
416
477
|
'Impact: stale call/results in dialog history are creating cognitive noise.',
|
|
417
478
|
'',
|
|
418
|
-
'Action:
|
|
479
|
+
'Action: you are in the Main Dialog. First record current-dialog discussion details that are not yet documented but the next course needs to know into the appropriate Taskdoc sections. Then write information still not covered by Taskdoc but easy to lose into new bridge reminders (next step + key pointers + run/verify info + easy-to-lose volatile details). Some redundancy is acceptable, and rough multi-reminder carry-over is acceptable too; do not force everything into one clean reminder in the current course.',
|
|
419
480
|
'',
|
|
420
|
-
'You are already in caution remediation for the current course, so do not keep expanding context and do not switch early into “clear-headed continuation-package review” mode; that is the first step only after the system actually starts the new course. In the current course, the goal is to carry forward details not
|
|
481
|
+
'You are already in caution remediation for the current course, so do not keep expanding context and do not switch early into “clear-headed continuation-package review” mode; that is the first step only after the system actually starts the new course. In the current course, the goal is to first fill Taskdoc with undocumented discussion details, then carry forward details still not covered by Taskdoc; reminder cleanup and dedup belong to the new course. Then proactively clear_mind to start a new dialog course.',
|
|
421
482
|
'',
|
|
422
483
|
'Operations:',
|
|
484
|
+
'- First write Taskdoc: mind_more({ "items": ["..."] }); use change_mind({ ... }) instead when deletion/reordering/compression is needed',
|
|
423
485
|
'- Prefer adding a bridge reminder first: add_reminder({ "content": "..." })',
|
|
424
486
|
'- Only if an existing reminder is clearly the right place, and updating it would not add extra cognitive load in the current course: update_reminder({ "reminder_id": "<existing reminder_id>", "content": "..." })',
|
|
425
487
|
].join('\n');
|
|
426
488
|
}
|
|
489
|
+
if (isSideDialog) {
|
|
490
|
+
return [
|
|
491
|
+
`${formatSystemNoticePrefix(language)} Context state: 🔴 critical`,
|
|
492
|
+
'',
|
|
493
|
+
'This is a runtime remediation instruction, not a new user request; do not reply with a standalone "acknowledged/ok/I will organize reminders first", and instead perform the remediation actions directly.',
|
|
494
|
+
'',
|
|
495
|
+
`System will remind you ${args.promptsRemainingAfterThis} more time(s), then automatically clear mind.`,
|
|
496
|
+
'',
|
|
497
|
+
'Action: you are in a Side Dialog. Do not maintain Taskdoc in this course, and do not draft Taskdoc update proposals. The current goal is to maintain sufficiently detailed continuation-package reminders as soon as possible, then clear_mind.',
|
|
498
|
+
'',
|
|
499
|
+
'Reminders should cover: 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 any reasoning needed to resume safely. Reminder length has no technical limit, so prefer being complete; multiple rough reminders, including some redundancy, are acceptable as a bridge.',
|
|
500
|
+
'',
|
|
501
|
+
'Operations:',
|
|
502
|
+
'- Prefer adding a detailed continuation-package reminder first: add_reminder({ "content": "..." })',
|
|
503
|
+
'- Only if an existing reminder is clearly the right place, and updating it would not add extra cognitive load in the current course: update_reminder({ "reminder_id": "<existing reminder_id>", "content": "..." })',
|
|
504
|
+
'- clear_mind({})',
|
|
505
|
+
'',
|
|
506
|
+
'During critical remediation in the current course, do not start the new-course cleanup early; once the system actually starts the new course, the first step is to reconcile rough bridge reminders by removing redundancy, correcting biased or distorted bridge notes, and merging/compressing them into high-quality reminders.',
|
|
507
|
+
].join('\n');
|
|
508
|
+
}
|
|
427
509
|
return [
|
|
428
510
|
`${formatSystemNoticePrefix(language)} Context state: 🔴 critical`,
|
|
429
511
|
'',
|
|
@@ -431,14 +513,15 @@ function formatAgentFacingContextHealthV3RemediationGuide(language, args) {
|
|
|
431
513
|
'',
|
|
432
514
|
`System will remind you ${args.promptsRemainingAfterThis} more time(s), then automatically clear mind.`,
|
|
433
515
|
'',
|
|
434
|
-
'Action:
|
|
516
|
+
'Action: you are in the Main Dialog. Preserve easy-to-lose information, then clear_mind. In critical remediation, first record current-dialog discussion details that are not yet documented but the next course needs to know into the appropriate Taskdoc sections. Then add bridge reminders for information still not covered by Taskdoc but easy to lose. Multiple rough reminders, including some redundancy, are acceptable as a bridge; do not spend the current course forcing them into a clean final package.',
|
|
435
517
|
'',
|
|
436
518
|
'Operations:',
|
|
519
|
+
'- First write Taskdoc: mind_more({ "items": ["..."] }); use change_mind({ ... }) instead when deletion/reordering/compression is needed',
|
|
437
520
|
'- Prefer adding a bridge reminder first: add_reminder({ "content": "..." })',
|
|
438
521
|
'- Only if an existing reminder is clearly the right place, and updating it would not add extra cognitive load in the current course: update_reminder({ "reminder_id": "<existing reminder_id>", "content": "..." })',
|
|
439
522
|
'- clear_mind({})',
|
|
440
523
|
'',
|
|
441
|
-
'Continuation package: next step + key pointers + run/verify info + easy-to-lose volatile details. Do not duplicate Taskdoc content. During critical remediation in the current course, do not start the new-course cleanup early; once the system actually starts the new course, the first step is to reconcile rough bridge reminders by removing redundancy, correcting biased or distorted bridge notes, and merging/compressing them into high-quality reminders.',
|
|
524
|
+
'Continuation package: next step + key pointers + run/verify info + easy-to-lose volatile details. Do not duplicate Taskdoc content; for discussion details just written into Taskdoc in this course, only remind the next course to review Taskdoc first. During critical remediation in the current course, do not start the new-course cleanup early; once the system actually starts the new course, the first step is to reconcile rough bridge reminders by removing redundancy, correcting biased or distorted bridge notes, and merging/compressing them into high-quality reminders.',
|
|
442
525
|
].join('\n');
|
|
443
526
|
}
|
|
444
527
|
function formatDomindsNoteDirectSelfCall(language) {
|
|
@@ -20,7 +20,6 @@ const log = (0, log_1.createLogger)('setup-routes');
|
|
|
20
20
|
const TEAM_YAML_PATH = path_1.default.join('.minds', 'team.yaml');
|
|
21
21
|
const RTWS_LLM_YAML_PATH = path_1.default.join('.minds', 'llm.yaml');
|
|
22
22
|
const RTWS_ENV_LOCAL_PATH = '.env.local';
|
|
23
|
-
const BUILTIN_DEFAULTS_YAML_PATH = path_1.default.join(__dirname, '..', 'llm', 'defaults.yaml');
|
|
24
23
|
const DOMINDS_ENV_BLOCK_START = '# >>> dominds env >>>';
|
|
25
24
|
const DOMINDS_ENV_BLOCK_END = '# <<< dominds env <<<';
|
|
26
25
|
async function buildSetupStatusResponse() {
|
|
@@ -85,15 +84,16 @@ async function buildSetupStatusResponse() {
|
|
|
85
84
|
}
|
|
86
85
|
async function buildSetupFileResponse(kind) {
|
|
87
86
|
if (kind === 'defaults_yaml') {
|
|
87
|
+
const builtinDefaultsYamlPath = (0, client_1.getBuiltinDefaultsYamlPath)();
|
|
88
88
|
try {
|
|
89
|
-
const raw = await
|
|
90
|
-
return { success: true, kind, path:
|
|
89
|
+
const raw = await (0, client_1.readBuiltinDefaultsYamlRaw)();
|
|
90
|
+
return { success: true, kind, path: builtinDefaultsYamlPath, raw };
|
|
91
91
|
}
|
|
92
92
|
catch {
|
|
93
93
|
return {
|
|
94
94
|
success: false,
|
|
95
95
|
kind,
|
|
96
|
-
path:
|
|
96
|
+
path: builtinDefaultsYamlPath,
|
|
97
97
|
error: 'Failed to read defaults.yaml',
|
|
98
98
|
};
|
|
99
99
|
}
|
|
@@ -260,7 +260,7 @@ async function handleWriteRtwsLlmYaml(rawBody) {
|
|
|
260
260
|
}
|
|
261
261
|
async function loadBuiltinProviders() {
|
|
262
262
|
try {
|
|
263
|
-
const raw = await
|
|
263
|
+
const raw = await (0, client_1.readBuiltinDefaultsYamlRaw)();
|
|
264
264
|
const doc = yaml_1.default.parseDocument(raw);
|
|
265
265
|
const parsed = doc.toJS();
|
|
266
266
|
if (!isRecord(parsed) || !isRecord(parsed.providers)) {
|
package/dist/tool.d.ts
CHANGED
|
@@ -87,10 +87,18 @@ export declare function getReminderOwnerName(reminder: Pick<Reminder, 'owner'>):
|
|
|
87
87
|
export declare function reminderOwnedBy(reminder: Reminder, owner: ReminderOwner | string): boolean;
|
|
88
88
|
export type ReminderTreatment = 'drop' | 'keep' | 'update';
|
|
89
89
|
export type ReminderUpdateResult = KernelReminderUpdateResult;
|
|
90
|
+
export type ReminderWakeEvent = Readonly<{
|
|
91
|
+
eventId: string;
|
|
92
|
+
reminderId: string;
|
|
93
|
+
content: string;
|
|
94
|
+
updatedContent?: string;
|
|
95
|
+
updatedMeta?: JsonValue;
|
|
96
|
+
}>;
|
|
90
97
|
export interface ReminderOwner {
|
|
91
98
|
readonly name: string;
|
|
92
99
|
updateReminder(dlg: Dialog, reminder: Reminder): Promise<ReminderUpdateResult>;
|
|
93
100
|
renderReminder(dlg: Dialog, reminder: Reminder): Promise<ChatMessage>;
|
|
101
|
+
waitForReminderWakeEvent?(dlg: Dialog, reminders: readonly Reminder[], signal: AbortSignal): Promise<ReminderWakeEvent | readonly ReminderWakeEvent[] | null>;
|
|
94
102
|
}
|
|
95
103
|
export declare function validateArgs(schema: JsonSchema, args: unknown): {
|
|
96
104
|
ok: true;
|
package/dist/tools/builtins.js
CHANGED
|
@@ -97,6 +97,7 @@ function manualSpecFor(toolsetId) {
|
|
|
97
97
|
(0, registry_1.registerTool)(ctrl_1.updateReminderTool);
|
|
98
98
|
(0, registry_1.registerTool)(ctrl_1.clearMindTool);
|
|
99
99
|
(0, registry_1.registerTool)(ctrl_1.changeMindTool);
|
|
100
|
+
(0, registry_1.registerTool)(ctrl_1.mindMoreTool);
|
|
100
101
|
(0, registry_1.registerTool)(ctrl_1.recallTaskdocTool);
|
|
101
102
|
// Team management tools (scoped to `.minds/**`)
|
|
102
103
|
for (const tool of team_mgmt_1.teamMgmtTools) {
|
|
@@ -139,13 +140,14 @@ for (const tool of team_mgmt_1.teamMgmtTools) {
|
|
|
139
140
|
ctrl_1.updateReminderTool,
|
|
140
141
|
ctrl_1.clearMindTool,
|
|
141
142
|
ctrl_1.changeMindTool,
|
|
143
|
+
ctrl_1.mindMoreTool,
|
|
142
144
|
ctrl_1.recallTaskdocTool,
|
|
143
145
|
]);
|
|
144
146
|
(0, registry_1.setToolsetMeta)('control', {
|
|
145
147
|
source: 'dominds',
|
|
146
148
|
descriptionI18n: {
|
|
147
|
-
en: 'Dialog control: manage reminders, Taskdoc sections, and course resets
|
|
148
|
-
zh: '
|
|
149
|
+
en: 'Dialog control: manage reminders, Taskdoc sections, and course resets.',
|
|
150
|
+
zh: '对话控制:维护提醒项、差遣牒分段,并管理对话进程重置。',
|
|
149
151
|
},
|
|
150
152
|
promptFilesI18n: promptFilesFor('control'),
|
|
151
153
|
manualSpec: manualSpecFor('control'),
|
package/dist/tools/ctrl.d.ts
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* - update_reminder: Update reminder content
|
|
15
15
|
* - clear_mind: Start a new course, optionally add a reminder
|
|
16
16
|
* - change_mind: Update a `.tsk/` Taskdoc section without starting a new course
|
|
17
|
+
* - mind_more: Append entries to a `.tsk/` Taskdoc section without starting a new course
|
|
17
18
|
* - recall_taskdoc: Read a Taskdoc section from `*.tsk/` by (category, selector)
|
|
18
19
|
*
|
|
19
20
|
* USAGE CONTEXT:
|
|
@@ -31,4 +32,5 @@ export declare const addReminderTool: FuncTool;
|
|
|
31
32
|
export declare const updateReminderTool: FuncTool;
|
|
32
33
|
export declare const clearMindTool: FuncTool;
|
|
33
34
|
export declare const changeMindTool: FuncTool;
|
|
35
|
+
export declare const mindMoreTool: FuncTool;
|
|
34
36
|
export declare const recallTaskdocTool: FuncTool;
|