dominds 1.25.0 → 1.25.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/README.zh.md +4 -3
- package/dist/dialog-display-state.d.ts +3 -3
- package/dist/dialog-display-state.js +12 -8
- package/dist/dialog.d.ts +3 -3
- package/dist/dialog.js +42 -20
- package/dist/docs/design.md +4 -0
- package/dist/docs/design.zh.md +4 -0
- package/dist/docs/dlg-drive-algo.zh.md +5 -0
- package/dist/docs/roadmap.md +2 -0
- package/dist/docs/roadmap.zh.md +2 -0
- package/dist/llm/gen/mock.d.ts +2 -2
- package/dist/llm/gen/mock.js +2 -2
- package/dist/llm/kernel-driver/drive.js +41 -14
- package/dist/llm/kernel-driver/engine.d.ts +1 -1
- package/dist/llm/kernel-driver/idle-reminder-wake.js +1 -1
- package/dist/llm/kernel-driver/sideDialog.d.ts +1 -1
- package/dist/llm/kernel-driver/sideDialog.js +7 -3
- package/dist/llm/kernel-driver/tellask-special.js +1 -6
- package/dist/llm/kernel-driver/types.d.ts +1 -1
- package/dist/minds/system-prompt-parts.js +4 -4
- package/dist/persistence.d.ts +1 -7
- package/dist/persistence.js +186 -149
- package/dist/priming.js +116 -35
- package/dist/runtime/driver-messages.d.ts +1 -1
- package/dist/runtime/driver-messages.js +37 -19
- package/dist/server/api-routes.js +18 -0
- package/dist/server/server-core.d.ts +1 -0
- package/dist/server/server-core.js +11 -0
- package/dist/server/websocket-handler.js +2 -1
- package/dist/shared-reminders.d.ts +11 -3
- package/dist/shared-reminders.js +62 -34
- package/dist/team.js +4 -1
- package/dist/tool.d.ts +1 -1
- package/dist/tool.js +1 -1
- package/dist/tools/app-reminders.js +8 -2
- package/dist/tools/builtins.js +30 -0
- package/dist/tools/ctrl.js +34 -109
- package/dist/tools/fs.d.ts +2 -0
- package/dist/tools/fs.js +281 -2
- package/dist/tools/os.d.ts +11 -0
- package/dist/tools/os.js +26 -15
- package/dist/tools/picture.d.ts +1 -0
- package/dist/tools/picture.js +64 -1
- package/dist/tools/prompts/codex_inspect_and_patch_tools/en/tools.md +5 -0
- package/dist/tools/prompts/codex_inspect_and_patch_tools/zh/tools.md +5 -0
- package/dist/tools/prompts/control/en/errors.md +5 -19
- package/dist/tools/prompts/control/en/index.md +5 -4
- package/dist/tools/prompts/control/en/principles.md +23 -19
- package/dist/tools/prompts/control/en/scenarios.md +17 -11
- package/dist/tools/prompts/control/en/tools.md +4 -6
- package/dist/tools/prompts/control/zh/errors.md +5 -19
- package/dist/tools/prompts/control/zh/index.md +5 -4
- package/dist/tools/prompts/control/zh/principles.md +22 -19
- package/dist/tools/prompts/control/zh/scenarios.md +17 -11
- package/dist/tools/prompts/control/zh/tools.md +4 -6
- package/dist/tools/prompts/fs_read/en/errors.md +6 -0
- package/dist/tools/prompts/fs_read/en/index.md +17 -0
- package/dist/tools/prompts/fs_read/en/principles.md +5 -0
- package/dist/tools/prompts/fs_read/en/scenarios.md +3 -0
- package/dist/tools/prompts/fs_read/en/tools.md +11 -0
- package/dist/tools/prompts/fs_read/zh/errors.md +6 -0
- package/dist/tools/prompts/fs_read/zh/index.md +17 -0
- package/dist/tools/prompts/fs_read/zh/principles.md +5 -0
- package/dist/tools/prompts/fs_read/zh/scenarios.md +3 -0
- package/dist/tools/prompts/fs_read/zh/tools.md +11 -0
- package/dist/tools/prompts/os/en/index.md +1 -1
- package/dist/tools/prompts/os/en/principles.md +1 -1
- package/dist/tools/prompts/os/en/scenarios.md +21 -0
- package/dist/tools/prompts/os/en/tools.md +6 -0
- package/dist/tools/prompts/os/zh/index.md +1 -1
- package/dist/tools/prompts/os/zh/principles.md +1 -1
- package/dist/tools/prompts/os/zh/scenarios.md +21 -0
- package/dist/tools/prompts/os/zh/tools.md +6 -0
- package/dist/tools/prompts/personal_memory/en/index.md +1 -1
- package/dist/tools/prompts/personal_memory/en/principles.md +2 -2
- package/dist/tools/prompts/personal_memory/zh/index.md +1 -1
- package/dist/tools/prompts/personal_memory/zh/principles.md +2 -2
- package/dist/tools/registry.d.ts +6 -0
- package/dist/tools/ripgrep.d.ts +5 -0
- package/dist/tools/ripgrep.js +482 -1
- package/dist/tools/team_mgmt.js +8 -8
- package/dist/tools/txt.d.ts +34 -0
- package/dist/tools/txt.js +221 -1
- package/package.json +3 -3
- package/webapp/dist/assets/{_basePickBy-ZLV93S3E.js → _basePickBy-CbWZ8qnS.js} +3 -3
- package/webapp/dist/assets/_basePickBy-CbWZ8qnS.js.map +1 -0
- package/webapp/dist/assets/{_baseUniq-D0wSOJ06.js → _baseUniq-IY-Vfzx1.js} +2 -2
- package/webapp/dist/assets/_baseUniq-IY-Vfzx1.js.map +1 -0
- package/webapp/dist/assets/{arc-BHclbMTS.js → arc--U2Vks6y.js} +2 -2
- package/webapp/dist/assets/arc--U2Vks6y.js.map +1 -0
- package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CK99gE_D.js → architectureDiagram-VXUJARFQ-DpryGqjy.js} +8 -26
- package/webapp/dist/assets/architectureDiagram-VXUJARFQ-DpryGqjy.js.map +1 -0
- package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-fE5MBTEU.js → blockDiagram-VD42YOAC-TTufCfiE.js} +170 -187
- package/webapp/dist/assets/blockDiagram-VD42YOAC-TTufCfiE.js.map +1 -0
- package/webapp/dist/assets/{c4Diagram-IC4MRINW-BSLyPyoU.js → c4Diagram-YG6GDRKO-B4RPsw5H.js} +4 -4
- package/webapp/dist/assets/c4Diagram-YG6GDRKO-B4RPsw5H.js.map +1 -0
- package/webapp/dist/assets/{channel-DSvMpp-a.js → channel-DAtGYJHZ.js} +2 -2
- package/webapp/dist/assets/channel-DAtGYJHZ.js.map +1 -0
- package/webapp/dist/assets/{chunk-4BX2VUAB-OXEX170k.js → chunk-4BX2VUAB-JtO__vAF.js} +2 -2
- package/webapp/dist/assets/chunk-4BX2VUAB-JtO__vAF.js.map +1 -0
- package/webapp/dist/assets/{chunk-55IACEB6-BFQ_spQD.js → chunk-55IACEB6-JMRC8yG1.js} +2 -2
- package/webapp/dist/assets/chunk-55IACEB6-JMRC8yG1.js.map +1 -0
- package/webapp/dist/assets/{chunk-WL4C6EOR-PtH-blkK.js → chunk-B4BG7PRW-BDIpf8Iz.js} +121 -171
- package/webapp/dist/assets/chunk-B4BG7PRW-BDIpf8Iz.js.map +1 -0
- package/webapp/dist/assets/{chunk-NQ4KR5QH-B_ZhWMXR.js → chunk-DI55MBZ5-j9B4rifK.js} +7 -9
- package/webapp/dist/assets/chunk-DI55MBZ5-j9B4rifK.js.map +1 -0
- package/webapp/dist/assets/{chunk-FMBD7UC4-CbQ2BBPs.js → chunk-FMBD7UC4-DFXKLjHC.js} +2 -2
- package/webapp/dist/assets/chunk-FMBD7UC4-DFXKLjHC.js.map +1 -0
- package/webapp/dist/assets/{chunk-KX2RTZJC-BMd-daMY.js → chunk-QN33PNHL-BKzkeJ-b.js} +2 -2
- package/webapp/dist/assets/chunk-QN33PNHL-BKzkeJ-b.js.map +1 -0
- package/webapp/dist/assets/{chunk-QZHKN3VN-Cbf92xIw.js → chunk-QZHKN3VN-DiZd3UNl.js} +2 -2
- package/webapp/dist/assets/chunk-QZHKN3VN-DiZd3UNl.js.map +1 -0
- package/webapp/dist/assets/{chunk-JSJVCQXG-C4P1mjCL.js → chunk-TZMSLE5B-BaE4C244.js} +6 -14
- package/webapp/dist/assets/chunk-TZMSLE5B-BaE4C244.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-VBA2DB6C-Dc3ncaD0.js → classDiagram-2ON5EDUG-CNF8ZohD.js} +6 -7
- package/webapp/dist/assets/classDiagram-2ON5EDUG-CNF8ZohD.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-Dc3ncaD0.js → classDiagram-v2-WZHVMYZB-CNF8ZohD.js} +6 -7
- package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-CNF8ZohD.js.map +1 -0
- package/webapp/dist/assets/{clone-E9Ad85BC.js → clone-Nq0Ko0Gv.js} +2 -2
- package/webapp/dist/assets/clone-Nq0Ko0Gv.js.map +1 -0
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-B-nj0o74.js → cose-bilkent-S5V4N54A-uHPLSeKv.js} +2 -2
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-uHPLSeKv.js.map +1 -0
- package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
- package/webapp/dist/assets/{dagre-KLK3FWXG-CyJYNIbm.js → dagre-6UL2VRFP-C1awWpU3.js} +7 -7
- package/webapp/dist/assets/dagre-6UL2VRFP-C1awWpU3.js.map +1 -0
- package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
- package/webapp/dist/assets/{diagram-E7M64L7V-C8eweQ7b.js → diagram-PSM6KHXK-Bf69p76M.js} +10 -10
- package/webapp/dist/assets/diagram-PSM6KHXK-Bf69p76M.js.map +1 -0
- package/webapp/dist/assets/{diagram-IFDJBPK2-DMdygRl0.js → diagram-QEK2KX5R-Bvlbx8Jp.js} +8 -9
- package/webapp/dist/assets/diagram-QEK2KX5R-Bvlbx8Jp.js.map +1 -0
- package/webapp/dist/assets/{diagram-P4PSJMXO-BQDZHb0a.js → diagram-S2PKOQOG-CGjGalBu.js} +8 -8
- package/webapp/dist/assets/diagram-S2PKOQOG-CGjGalBu.js.map +1 -0
- package/webapp/dist/assets/{erDiagram-INFDFZHY-C1HaXN6E.js → erDiagram-Q2GNP2WA-Ds3qhwkG.js} +75 -96
- package/webapp/dist/assets/erDiagram-Q2GNP2WA-Ds3qhwkG.js.map +1 -0
- package/webapp/dist/assets/{flowDiagram-PKNHOUZH-24nNqQyo.js → flowDiagram-NV44I4VS-B1wDG_l5.js} +81 -98
- package/webapp/dist/assets/flowDiagram-NV44I4VS-B1wDG_l5.js.map +1 -0
- package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-BWPOFaLV.js → ganttDiagram-JELNMOA3-BwuYt2bO.js} +3 -28
- package/webapp/dist/assets/ganttDiagram-JELNMOA3-BwuYt2bO.js.map +1 -0
- package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-D7_L-p_Y.js → gitGraphDiagram-V2S2FVAM-B2Tw773z.js} +46 -38
- package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-B2Tw773z.js.map +1 -0
- package/webapp/dist/assets/graph-CS_H7jBi.js +425 -0
- package/webapp/dist/assets/graph-CS_H7jBi.js.map +1 -0
- package/webapp/dist/assets/{index-CDCDAfqP.js → index-arD81Nnh.js} +1086 -1044
- package/webapp/dist/assets/{index-CDCDAfqP.js.map → index-arD81Nnh.js.map} +1 -1
- package/webapp/dist/assets/{index-BQoNJEGT.css → index-yycTJNYb.css} +1 -1
- package/webapp/dist/assets/{infoDiagram-LFFYTUFH-CvaBM5j6.js → infoDiagram-HS3SLOUP-C9_JKYhm.js} +7 -7
- package/webapp/dist/assets/infoDiagram-HS3SLOUP-C9_JKYhm.js.map +1 -0
- package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
- package/webapp/dist/assets/{journeyDiagram-4ABVD52K-TQR6_teO.js → journeyDiagram-XKPGCS4Q-BhZggYOL.js} +5 -5
- package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-BhZggYOL.js.map +1 -0
- package/webapp/dist/assets/{kanban-definition-K7BYSVSG-B-BOuC-U.js → kanban-definition-3W4ZIXB7-B-R2Xm4Y.js} +3 -5
- package/webapp/dist/assets/kanban-definition-3W4ZIXB7-B-R2Xm4Y.js.map +1 -0
- package/webapp/dist/assets/{layout-B8yqIqbx.js → layout-BzMatxDa.js} +5 -5
- package/webapp/dist/assets/layout-BzMatxDa.js.map +1 -0
- package/webapp/dist/assets/{linear-CoLfiZKK.js → linear-BuuJkw_U.js} +2 -2
- package/webapp/dist/assets/linear-BuuJkw_U.js.map +1 -0
- package/webapp/dist/assets/{mindmap-definition-YRQLILUH-P70BMIHI.js → mindmap-definition-VGOIOE7T-BR7oDKBR.js} +5 -7
- package/webapp/dist/assets/mindmap-definition-VGOIOE7T-BR7oDKBR.js.map +1 -0
- package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
- package/webapp/dist/assets/{pieDiagram-SKSYHLDU-DsS_4dTB.js → pieDiagram-ADFJNKIX--QWeT2vZ.js} +8 -8
- package/webapp/dist/assets/pieDiagram-ADFJNKIX--QWeT2vZ.js.map +1 -0
- package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-DoM9PEq-.js → quadrantDiagram-AYHSOK5B-BpqtmN3r.js} +3 -3
- package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-BpqtmN3r.js.map +1 -0
- package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-Bn3lYMMI.js → requirementDiagram-UZGBJVZJ-CIXjIi4F.js} +6 -16
- package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-CIXjIi4F.js.map +1 -0
- package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-97kCegRT.js → sankeyDiagram-TZEHDZUN-DJIt7SRz.js} +2 -2
- package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-DJIt7SRz.js.map +1 -0
- package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DXqjQjf6.js → sequenceDiagram-WL72ISMW-BpDK1ROT.js} +201 -601
- package/webapp/dist/assets/sequenceDiagram-WL72ISMW-BpDK1ROT.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-RAJIS63D-DQcTPKWP.js → stateDiagram-FKZM4ZOC-BoKGfmHf.js} +9 -9
- package/webapp/dist/assets/stateDiagram-FKZM4ZOC-BoKGfmHf.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-DHmxRVJn.js → stateDiagram-v2-4FDKWEC3--haXC2JK.js} +5 -5
- package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3--haXC2JK.js.map +1 -0
- package/webapp/dist/assets/{timeline-definition-YZTLITO2-BlovQQ4B.js → timeline-definition-IT6M3QCI-BmSg3Hjf.js} +3 -3
- package/webapp/dist/assets/timeline-definition-IT6M3QCI-BmSg3Hjf.js.map +1 -0
- package/webapp/dist/assets/{treemap-KZPCXAKY-CGu93c9S.js → treemap-GDKQZRPO-D9OuyDVA.js} +24 -37
- package/webapp/dist/assets/treemap-GDKQZRPO-D9OuyDVA.js.map +1 -0
- package/webapp/dist/assets/{xychartDiagram-JWTSCODW-BKa1DxVq.js → xychartDiagram-PRI3JC2R-CVqSvO_S.js} +4 -4
- package/webapp/dist/assets/xychartDiagram-PRI3JC2R-CVqSvO_S.js.map +1 -0
- package/webapp/dist/index.html +2 -2
- package/webapp/dist/assets/_basePickBy-ZLV93S3E.js.map +0 -1
- package/webapp/dist/assets/_baseUniq-D0wSOJ06.js.map +0 -1
- package/webapp/dist/assets/arc-BHclbMTS.js.map +0 -1
- package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-CK99gE_D.js.map +0 -1
- package/webapp/dist/assets/blockDiagram-WCTKOSBZ-fE5MBTEU.js.map +0 -1
- package/webapp/dist/assets/c4Diagram-IC4MRINW-BSLyPyoU.js.map +0 -1
- package/webapp/dist/assets/channel-DSvMpp-a.js.map +0 -1
- package/webapp/dist/assets/chunk-4BX2VUAB-OXEX170k.js.map +0 -1
- package/webapp/dist/assets/chunk-55IACEB6-BFQ_spQD.js.map +0 -1
- package/webapp/dist/assets/chunk-FMBD7UC4-CbQ2BBPs.js.map +0 -1
- package/webapp/dist/assets/chunk-JSJVCQXG-C4P1mjCL.js.map +0 -1
- package/webapp/dist/assets/chunk-KX2RTZJC-BMd-daMY.js.map +0 -1
- package/webapp/dist/assets/chunk-NQ4KR5QH-B_ZhWMXR.js.map +0 -1
- package/webapp/dist/assets/chunk-QZHKN3VN-Cbf92xIw.js.map +0 -1
- package/webapp/dist/assets/chunk-WL4C6EOR-PtH-blkK.js.map +0 -1
- package/webapp/dist/assets/classDiagram-VBA2DB6C-Dc3ncaD0.js.map +0 -1
- package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-Dc3ncaD0.js.map +0 -1
- package/webapp/dist/assets/clone-E9Ad85BC.js.map +0 -1
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-B-nj0o74.js.map +0 -1
- package/webapp/dist/assets/dagre-KLK3FWXG-CyJYNIbm.js.map +0 -1
- package/webapp/dist/assets/diagram-E7M64L7V-C8eweQ7b.js.map +0 -1
- package/webapp/dist/assets/diagram-IFDJBPK2-DMdygRl0.js.map +0 -1
- package/webapp/dist/assets/diagram-P4PSJMXO-BQDZHb0a.js.map +0 -1
- package/webapp/dist/assets/erDiagram-INFDFZHY-C1HaXN6E.js.map +0 -1
- package/webapp/dist/assets/flowDiagram-PKNHOUZH-24nNqQyo.js.map +0 -1
- package/webapp/dist/assets/ganttDiagram-A5KZAMGK-BWPOFaLV.js.map +0 -1
- package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-D7_L-p_Y.js.map +0 -1
- package/webapp/dist/assets/graph-OHu4dL2n.js +0 -782
- package/webapp/dist/assets/graph-OHu4dL2n.js.map +0 -1
- package/webapp/dist/assets/infoDiagram-LFFYTUFH-CvaBM5j6.js.map +0 -1
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DB1l2Uue.js +0 -966
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DB1l2Uue.js.map +0 -1
- package/webapp/dist/assets/journeyDiagram-4ABVD52K-TQR6_teO.js.map +0 -1
- package/webapp/dist/assets/kanban-definition-K7BYSVSG-B-BOuC-U.js.map +0 -1
- package/webapp/dist/assets/layout-B8yqIqbx.js.map +0 -1
- package/webapp/dist/assets/linear-CoLfiZKK.js.map +0 -1
- package/webapp/dist/assets/mindmap-definition-YRQLILUH-P70BMIHI.js.map +0 -1
- package/webapp/dist/assets/pieDiagram-SKSYHLDU-DsS_4dTB.js.map +0 -1
- package/webapp/dist/assets/quadrantDiagram-337W2JSQ-DoM9PEq-.js.map +0 -1
- package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-Bn3lYMMI.js.map +0 -1
- package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-97kCegRT.js.map +0 -1
- package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-DXqjQjf6.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-RAJIS63D-DQcTPKWP.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-DHmxRVJn.js.map +0 -1
- package/webapp/dist/assets/timeline-definition-YZTLITO2-BlovQQ4B.js.map +0 -1
- package/webapp/dist/assets/treemap-KZPCXAKY-CGu93c9S.js.map +0 -1
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-Do1jprrz.js +0 -2487
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-Do1jprrz.js.map +0 -1
- package/webapp/dist/assets/xychartDiagram-JWTSCODW-BKa1DxVq.js.map +0 -1
package/dist/shared-reminders.js
CHANGED
|
@@ -33,32 +33,60 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
37
|
-
exports.
|
|
38
|
-
exports.
|
|
36
|
+
exports.loadSharedReminders = loadSharedReminders;
|
|
37
|
+
exports.replaceSharedReminders = replaceSharedReminders;
|
|
38
|
+
exports.mutateSharedReminders = mutateSharedReminders;
|
|
39
39
|
const time_1 = require("@longrun-ai/kernel/utils/time");
|
|
40
40
|
const node_crypto_1 = require("node:crypto");
|
|
41
41
|
const fs = __importStar(require("node:fs/promises"));
|
|
42
42
|
const path = __importStar(require("node:path"));
|
|
43
|
+
const zlib_1 = require("zlib");
|
|
43
44
|
const async_fifo_mutex_1 = require("./runtime/async-fifo-mutex");
|
|
44
45
|
const tool_1 = require("./tool");
|
|
45
46
|
const registry_1 = require("./tools/registry");
|
|
46
47
|
const sharedReminderLocks = new Map();
|
|
47
|
-
function
|
|
48
|
-
|
|
48
|
+
function getSharedReminderTargetKey(target) {
|
|
49
|
+
switch (target.kind) {
|
|
50
|
+
case 'agent':
|
|
51
|
+
return `agent:${target.agentId}`;
|
|
52
|
+
case 'task':
|
|
53
|
+
return `task:${target.agentId}:${target.taskDocPath}`;
|
|
54
|
+
}
|
|
55
|
+
const _exhaustive = target;
|
|
56
|
+
return _exhaustive;
|
|
57
|
+
}
|
|
58
|
+
function getSharedReminderLock(target) {
|
|
59
|
+
const key = getSharedReminderTargetKey(target);
|
|
60
|
+
const existing = sharedReminderLocks.get(key);
|
|
49
61
|
if (existing)
|
|
50
62
|
return existing;
|
|
51
63
|
const created = new async_fifo_mutex_1.AsyncFifoMutex();
|
|
52
|
-
sharedReminderLocks.set(
|
|
64
|
+
sharedReminderLocks.set(key, created);
|
|
53
65
|
return created;
|
|
54
66
|
}
|
|
55
|
-
function clearSharedReminderLockIfIdle(
|
|
56
|
-
|
|
57
|
-
|
|
67
|
+
function clearSharedReminderLockIfIdle(target, lock) {
|
|
68
|
+
const key = getSharedReminderTargetKey(target);
|
|
69
|
+
if (sharedReminderLocks.get(key) === lock && !lock.isLocked()) {
|
|
70
|
+
sharedReminderLocks.delete(key);
|
|
58
71
|
}
|
|
59
72
|
}
|
|
60
|
-
function
|
|
61
|
-
|
|
73
|
+
function getTaskDocPathStorageKey(taskDocPath) {
|
|
74
|
+
const normalized = taskDocPath.trim().replace(/\\/g, '/').replace(/\/+$/g, '');
|
|
75
|
+
if (normalized === '') {
|
|
76
|
+
throw new Error('task-scoped reminders require a non-empty taskDocPath');
|
|
77
|
+
}
|
|
78
|
+
const checksum = (0, zlib_1.crc32)(normalized) >>> 0;
|
|
79
|
+
return `crc32-${checksum.toString(16).padStart(8, '0')}`;
|
|
80
|
+
}
|
|
81
|
+
function getSharedReminderDirPath(target) {
|
|
82
|
+
switch (target.kind) {
|
|
83
|
+
case 'agent':
|
|
84
|
+
return path.resolve(process.cwd(), '.dialogs', 'reminders', 'agents', target.agentId);
|
|
85
|
+
case 'task':
|
|
86
|
+
return path.resolve(process.cwd(), '.dialogs', 'reminders', 'agent_tasks', target.agentId, getTaskDocPathStorageKey(target.taskDocPath));
|
|
87
|
+
}
|
|
88
|
+
const _exhaustive = target;
|
|
89
|
+
return _exhaustive;
|
|
62
90
|
}
|
|
63
91
|
function ensureReminderIdPathSegment(reminderId) {
|
|
64
92
|
if (!/^[A-Za-z0-9_-]+$/.test(reminderId)) {
|
|
@@ -66,8 +94,8 @@ function ensureReminderIdPathSegment(reminderId) {
|
|
|
66
94
|
}
|
|
67
95
|
return reminderId;
|
|
68
96
|
}
|
|
69
|
-
function getSharedReminderFilePath(
|
|
70
|
-
return path.join(getSharedReminderDirPath(
|
|
97
|
+
function getSharedReminderFilePath(target, reminderId) {
|
|
98
|
+
return path.join(getSharedReminderDirPath(target), `${ensureReminderIdPathSegment(reminderId)}.json`);
|
|
71
99
|
}
|
|
72
100
|
function serializeReminder(reminder) {
|
|
73
101
|
return {
|
|
@@ -78,7 +106,7 @@ function serializeReminder(reminder) {
|
|
|
78
106
|
ownerName: reminder.owner?.name,
|
|
79
107
|
meta: reminder.meta,
|
|
80
108
|
echoback: reminder.echoback,
|
|
81
|
-
scope: reminder.scope ?? '
|
|
109
|
+
scope: reminder.scope ?? 'agent',
|
|
82
110
|
renderMode: reminder.renderMode ?? 'markdown',
|
|
83
111
|
createdAt: reminder.createdAt ?? (0, time_1.formatUnifiedTimestamp)(new Date()),
|
|
84
112
|
priority: reminder.priority ?? 'medium',
|
|
@@ -94,7 +122,7 @@ function materializeStoredReminder(snapshot) {
|
|
|
94
122
|
owner,
|
|
95
123
|
meta: snapshot.meta,
|
|
96
124
|
echoback: snapshot.echoback,
|
|
97
|
-
scope: snapshot.scope ?? '
|
|
125
|
+
scope: snapshot.scope ?? 'agent',
|
|
98
126
|
renderMode: snapshot.renderMode ?? 'markdown',
|
|
99
127
|
createdAt: snapshot.createdAt,
|
|
100
128
|
priority: snapshot.priority,
|
|
@@ -115,8 +143,8 @@ async function listPerReminderJsonFiles(dirPath) {
|
|
|
115
143
|
.filter((entry) => entry.isFile() && entry.name.endsWith('.json'))
|
|
116
144
|
.map((entry) => entry.name);
|
|
117
145
|
}
|
|
118
|
-
async function readSharedRemindersUnlocked(
|
|
119
|
-
const dirPath = getSharedReminderDirPath(
|
|
146
|
+
async function readSharedRemindersUnlocked(target) {
|
|
147
|
+
const dirPath = getSharedReminderDirPath(target);
|
|
120
148
|
let fileNames;
|
|
121
149
|
try {
|
|
122
150
|
fileNames = await listPerReminderJsonFiles(dirPath);
|
|
@@ -135,55 +163,55 @@ async function readSharedRemindersUnlocked(agentId) {
|
|
|
135
163
|
reminders.sort(tool_1.compareReminderDisplayOrder);
|
|
136
164
|
return reminders;
|
|
137
165
|
}
|
|
138
|
-
async function writeSharedRemindersUnlocked(
|
|
139
|
-
const dirPath = getSharedReminderDirPath(
|
|
166
|
+
async function writeSharedRemindersUnlocked(target, reminders) {
|
|
167
|
+
const dirPath = getSharedReminderDirPath(target);
|
|
140
168
|
await fs.mkdir(dirPath, { recursive: true });
|
|
141
169
|
const existingFileNames = await listPerReminderJsonFiles(dirPath);
|
|
142
170
|
const desiredIds = new Set();
|
|
143
171
|
for (const reminder of reminders) {
|
|
144
172
|
if (desiredIds.has(reminder.id)) {
|
|
145
|
-
throw new Error(`Duplicate shared reminder_id detected while persisting
|
|
173
|
+
throw new Error(`Duplicate shared reminder_id detected while persisting ${getSharedReminderTargetKey(target)}: ${reminder.id}`);
|
|
146
174
|
}
|
|
147
175
|
desiredIds.add(reminder.id);
|
|
148
176
|
}
|
|
149
177
|
await Promise.all(existingFileNames
|
|
150
178
|
.filter((fileName) => !desiredIds.has(fileName.slice(0, -'.json'.length)))
|
|
151
179
|
.map((fileName) => fs.unlink(path.join(dirPath, fileName))));
|
|
152
|
-
await Promise.all(reminders.map((reminder) => writeReminderSnapshotFile(getSharedReminderFilePath(
|
|
180
|
+
await Promise.all(reminders.map((reminder) => writeReminderSnapshotFile(getSharedReminderFilePath(target, reminder.id), serializeReminder(reminder))));
|
|
153
181
|
}
|
|
154
|
-
async function
|
|
155
|
-
const lock = getSharedReminderLock(
|
|
182
|
+
async function loadSharedReminders(target) {
|
|
183
|
+
const lock = getSharedReminderLock(target);
|
|
156
184
|
const release = await lock.acquire();
|
|
157
185
|
try {
|
|
158
|
-
return cloneReminderList(await readSharedRemindersUnlocked(
|
|
186
|
+
return cloneReminderList(await readSharedRemindersUnlocked(target));
|
|
159
187
|
}
|
|
160
188
|
finally {
|
|
161
189
|
release();
|
|
162
|
-
clearSharedReminderLockIfIdle(
|
|
190
|
+
clearSharedReminderLockIfIdle(target, lock);
|
|
163
191
|
}
|
|
164
192
|
}
|
|
165
|
-
async function
|
|
166
|
-
const lock = getSharedReminderLock(
|
|
193
|
+
async function replaceSharedReminders(target, reminders) {
|
|
194
|
+
const lock = getSharedReminderLock(target);
|
|
167
195
|
const release = await lock.acquire();
|
|
168
196
|
try {
|
|
169
|
-
await writeSharedRemindersUnlocked(
|
|
197
|
+
await writeSharedRemindersUnlocked(target, reminders);
|
|
170
198
|
}
|
|
171
199
|
finally {
|
|
172
200
|
release();
|
|
173
|
-
clearSharedReminderLockIfIdle(
|
|
201
|
+
clearSharedReminderLockIfIdle(target, lock);
|
|
174
202
|
}
|
|
175
203
|
}
|
|
176
|
-
async function
|
|
177
|
-
const lock = getSharedReminderLock(
|
|
204
|
+
async function mutateSharedReminders(target, mutate) {
|
|
205
|
+
const lock = getSharedReminderLock(target);
|
|
178
206
|
const release = await lock.acquire();
|
|
179
207
|
try {
|
|
180
|
-
const reminders = await readSharedRemindersUnlocked(
|
|
208
|
+
const reminders = await readSharedRemindersUnlocked(target);
|
|
181
209
|
const result = await mutate(reminders);
|
|
182
|
-
await writeSharedRemindersUnlocked(
|
|
210
|
+
await writeSharedRemindersUnlocked(target, reminders);
|
|
183
211
|
return result;
|
|
184
212
|
}
|
|
185
213
|
finally {
|
|
186
214
|
release();
|
|
187
|
-
clearSharedReminderLockIfIdle(
|
|
215
|
+
clearSharedReminderLockIfIdle(target, lock);
|
|
188
216
|
}
|
|
189
217
|
}
|
package/dist/team.js
CHANGED
|
@@ -586,11 +586,14 @@ exports.Team = Team;
|
|
|
586
586
|
const resolved = [];
|
|
587
587
|
const seen = new Set();
|
|
588
588
|
const isAssignableToolset = (name) => (0, registry_1.getToolsetMeta)(name)?.assignable !== false;
|
|
589
|
+
const isWildcardAssignableToolset = (name) => (0, registry_1.getToolsetMeta)(name)?.wildcardAssignable !== false;
|
|
589
590
|
for (const toolsetName of [...staticToolsets, ...dynamicToolsetNames]) {
|
|
590
591
|
if (toolsetName.startsWith('!'))
|
|
591
592
|
continue;
|
|
592
593
|
const toolsetNames = toolsetName === '*'
|
|
593
|
-
? Object.keys((0, registry_1.listToolsets)()).filter((n) => !excludedToolsets.has(n) &&
|
|
594
|
+
? Object.keys((0, registry_1.listToolsets)()).filter((n) => !excludedToolsets.has(n) &&
|
|
595
|
+
isAssignableToolset(n) &&
|
|
596
|
+
isWildcardAssignableToolset(n))
|
|
594
597
|
: excludedToolsets.has(toolsetName)
|
|
595
598
|
? []
|
|
596
599
|
: [toolsetName];
|
package/dist/tool.d.ts
CHANGED
|
@@ -53,7 +53,7 @@ export interface ReminderOptions {
|
|
|
53
53
|
readonly scope?: ReminderScope;
|
|
54
54
|
readonly renderMode?: ReminderRenderMode;
|
|
55
55
|
}
|
|
56
|
-
export type ReminderScope = 'dialog' | '
|
|
56
|
+
export type ReminderScope = 'dialog' | 'task' | 'agent' | 'runtime';
|
|
57
57
|
export type ReminderRenderMode = 'plain' | 'markdown';
|
|
58
58
|
export type ReminderPriority = 'high' | 'medium' | 'low';
|
|
59
59
|
export interface Reminder extends ReminderOptions {
|
package/dist/tool.js
CHANGED
|
@@ -128,7 +128,7 @@ function parseReminderSortTimestamp(value) {
|
|
|
128
128
|
return (0, time_1.parseUnifiedTimestampMs)(value);
|
|
129
129
|
}
|
|
130
130
|
// Reminder presentation order is a framework-level concern distinct from owner semantics.
|
|
131
|
-
// Keep it centralized so dialog-local reminders and
|
|
131
|
+
// Keep it centralized so dialog-local reminders and runtime reminders stay in the same
|
|
132
132
|
// newest-first order everywhere they are merged, rendered, or injected.
|
|
133
133
|
function compareReminderDisplayOrder(a, b) {
|
|
134
134
|
const aDisplayTs = extractReminderDisplayTimestamp(a);
|
|
@@ -182,10 +182,16 @@ function wrapAppRenderedReminder(message, language) {
|
|
|
182
182
|
}
|
|
183
183
|
async function persistAndPublishReminders(dlg) {
|
|
184
184
|
await dlg.dlgStore.persistReminders(dlg, dlg.reminders);
|
|
185
|
-
const
|
|
185
|
+
const taskSharedReminders = await (0, shared_reminders_1.loadSharedReminders)({
|
|
186
|
+
kind: 'task',
|
|
187
|
+
agentId: dlg.agentId,
|
|
188
|
+
taskDocPath: dlg.taskDocPath,
|
|
189
|
+
});
|
|
190
|
+
const runtimeReminders = await (0, shared_reminders_1.loadSharedReminders)({ kind: 'agent', agentId: dlg.agentId });
|
|
186
191
|
const visibleReminders = [
|
|
187
192
|
...dlg.reminders.map((reminder) => (0, tool_1.cloneReminder)(reminder)),
|
|
188
|
-
...
|
|
193
|
+
...taskSharedReminders,
|
|
194
|
+
...runtimeReminders,
|
|
189
195
|
];
|
|
190
196
|
visibleReminders.sort(tool_1.compareReminderDisplayOrder);
|
|
191
197
|
const reminders = visibleReminders.map((reminder) => ({
|
package/dist/tools/builtins.js
CHANGED
|
@@ -54,8 +54,12 @@ function manualSpecFor(toolsetId) {
|
|
|
54
54
|
(0, registry_1.registerTool)(fs_1.moveDirTool);
|
|
55
55
|
(0, registry_1.registerTool)(fs_1.readSymlinkTool);
|
|
56
56
|
(0, registry_1.registerTool)(fs_1.createSymlinkTool);
|
|
57
|
+
(0, registry_1.registerTool)(fs_1.fsListDirTool);
|
|
58
|
+
(0, registry_1.registerTool)(fs_1.fsReadSymlinkTool);
|
|
57
59
|
(0, registry_1.registerTool)(txt_1.readFileTool);
|
|
60
|
+
(0, registry_1.registerTool)(txt_1.fsReadFileTool);
|
|
58
61
|
(0, registry_1.registerTool)(picture_1.readPictureTool);
|
|
62
|
+
(0, registry_1.registerTool)(picture_1.fsReadPictureTool);
|
|
59
63
|
(0, registry_1.registerTool)(picture_1.writePictureTool);
|
|
60
64
|
(0, registry_1.registerTool)(txt_1.createNewFileTool);
|
|
61
65
|
(0, registry_1.registerTool)(txt_1.overwriteEntireFileTool);
|
|
@@ -71,6 +75,11 @@ function manualSpecFor(toolsetId) {
|
|
|
71
75
|
(0, registry_1.registerTool)(ripgrep_1.ripgrepCountTool);
|
|
72
76
|
(0, registry_1.registerTool)(ripgrep_1.ripgrepFixedTool);
|
|
73
77
|
(0, registry_1.registerTool)(ripgrep_1.ripgrepSearchTool);
|
|
78
|
+
(0, registry_1.registerTool)(ripgrep_1.fsRipgrepFilesTool);
|
|
79
|
+
(0, registry_1.registerTool)(ripgrep_1.fsRipgrepSnippetsTool);
|
|
80
|
+
(0, registry_1.registerTool)(ripgrep_1.fsRipgrepCountTool);
|
|
81
|
+
(0, registry_1.registerTool)(ripgrep_1.fsRipgrepFixedTool);
|
|
82
|
+
(0, registry_1.registerTool)(ripgrep_1.fsRipgrepSearchTool);
|
|
74
83
|
// OS tools
|
|
75
84
|
(0, registry_1.registerTool)(os_1.shellCmdTool);
|
|
76
85
|
(0, registry_1.registerTool)(os_1.readonlyShellTool);
|
|
@@ -252,6 +261,27 @@ for (const tool of team_mgmt_1.teamMgmtTools) {
|
|
|
252
261
|
promptFilesI18n: promptFilesFor('ws_read'),
|
|
253
262
|
manualSpec: manualSpecFor('ws_read'),
|
|
254
263
|
});
|
|
264
|
+
(0, registry_1.registerToolset)('fs_read', [
|
|
265
|
+
fs_1.fsListDirTool,
|
|
266
|
+
fs_1.fsReadSymlinkTool,
|
|
267
|
+
txt_1.fsReadFileTool,
|
|
268
|
+
picture_1.fsReadPictureTool,
|
|
269
|
+
ripgrep_1.fsRipgrepFilesTool,
|
|
270
|
+
ripgrep_1.fsRipgrepSnippetsTool,
|
|
271
|
+
ripgrep_1.fsRipgrepCountTool,
|
|
272
|
+
ripgrep_1.fsRipgrepFixedTool,
|
|
273
|
+
ripgrep_1.fsRipgrepSearchTool,
|
|
274
|
+
]);
|
|
275
|
+
(0, registry_1.setToolsetMeta)('fs_read', {
|
|
276
|
+
source: 'dominds',
|
|
277
|
+
wildcardAssignable: false,
|
|
278
|
+
descriptionI18n: {
|
|
279
|
+
en: 'Local filesystem read-only access without rtws path restriction: list directories, read text/images, and search files.',
|
|
280
|
+
zh: '本机文件系统只读访问,不限制路径必须位于 rtws 内:列目录、读文本/图片、检索文件。',
|
|
281
|
+
},
|
|
282
|
+
promptFilesI18n: promptFilesFor('fs_read'),
|
|
283
|
+
manualSpec: manualSpecFor('fs_read'),
|
|
284
|
+
});
|
|
255
285
|
(0, registry_1.registerToolset)('ws_mod', [
|
|
256
286
|
fs_1.listDirTool,
|
|
257
287
|
fs_1.rmDirTool,
|
package/dist/tools/ctrl.js
CHANGED
|
@@ -73,13 +73,6 @@ const work_language_1 = require("../runtime/work-language");
|
|
|
73
73
|
const shared_reminders_1 = require("../shared-reminders");
|
|
74
74
|
const tool_1 = require("../tool");
|
|
75
75
|
const task_package_1 = require("../utils/task-package");
|
|
76
|
-
class InvalidReminderPositionError extends Error {
|
|
77
|
-
constructor(positionHuman, totalPlusOne) {
|
|
78
|
-
super(`Invalid reminder position ${positionHuman} (max ${String(totalPlusOne)})`);
|
|
79
|
-
this.positionHuman = positionHuman;
|
|
80
|
-
this.totalPlusOne = totalPlusOne;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
76
|
function isRecord(value) {
|
|
84
77
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
85
78
|
}
|
|
@@ -152,42 +145,6 @@ function formatManualUpdateBlockedError(language, altInstruction) {
|
|
|
152
145
|
? `错误:该提醒项不能用 update_reminder 修改;请改按此处理:${altInstruction}`
|
|
153
146
|
: `Error: This reminder cannot be edited via update_reminder. Follow instead: ${altInstruction}`;
|
|
154
147
|
}
|
|
155
|
-
function listListedReminderIndices(reminders) {
|
|
156
|
-
return listListedReminderIndicesBy(reminders, () => true);
|
|
157
|
-
}
|
|
158
|
-
function listListedReminderIndicesBy(reminders, predicate) {
|
|
159
|
-
const indices = [];
|
|
160
|
-
for (let index = 0; index < reminders.length; index += 1) {
|
|
161
|
-
const reminder = reminders[index];
|
|
162
|
-
if (!reminder || !(0, tool_1.reminderIsListed)(reminder) || !predicate(reminder)) {
|
|
163
|
-
continue;
|
|
164
|
-
}
|
|
165
|
-
indices.push(index);
|
|
166
|
-
}
|
|
167
|
-
return indices;
|
|
168
|
-
}
|
|
169
|
-
function computeReminderInsertIndex(reminders, positionValue, predicate) {
|
|
170
|
-
const listedIndices = listListedReminderIndicesBy(reminders, predicate);
|
|
171
|
-
let insertIndex = reminders.length;
|
|
172
|
-
if (positionValue === undefined) {
|
|
173
|
-
return insertIndex;
|
|
174
|
-
}
|
|
175
|
-
if (typeof positionValue !== 'number' || !Number.isInteger(positionValue)) {
|
|
176
|
-
throw new Error('invalid_add_position_format');
|
|
177
|
-
}
|
|
178
|
-
const position = positionValue - 1;
|
|
179
|
-
if (position < 0 || position > listedIndices.length) {
|
|
180
|
-
throw new InvalidReminderPositionError(String(positionValue), listedIndices.length + 1);
|
|
181
|
-
}
|
|
182
|
-
if (position < listedIndices.length) {
|
|
183
|
-
const targetIndex = listedIndices[position];
|
|
184
|
-
if (targetIndex === undefined) {
|
|
185
|
-
throw new InvalidReminderPositionError(String(positionValue), listedIndices.length + 1);
|
|
186
|
-
}
|
|
187
|
-
insertIndex = targetIndex;
|
|
188
|
-
}
|
|
189
|
-
return insertIndex;
|
|
190
|
-
}
|
|
191
148
|
function parseReminderRenderMode(value) {
|
|
192
149
|
if (value === undefined)
|
|
193
150
|
return 'markdown';
|
|
@@ -283,8 +240,8 @@ function findReminderIndexById(sourceLabel, reminders, reminderId) {
|
|
|
283
240
|
}
|
|
284
241
|
return foundIndex;
|
|
285
242
|
}
|
|
286
|
-
async function deleteSharedReminderById(
|
|
287
|
-
return (0, shared_reminders_1.
|
|
243
|
+
async function deleteSharedReminderById(target, reminderId) {
|
|
244
|
+
return (0, shared_reminders_1.mutateSharedReminders)(target, (reminders) => {
|
|
288
245
|
const index = findReminderIndexById('shared', reminders, reminderId);
|
|
289
246
|
if (index === null)
|
|
290
247
|
return false;
|
|
@@ -292,8 +249,8 @@ async function deleteSharedReminderById(agentId, reminderId) {
|
|
|
292
249
|
return true;
|
|
293
250
|
});
|
|
294
251
|
}
|
|
295
|
-
async function updateSharedReminderById(
|
|
296
|
-
return (0, shared_reminders_1.
|
|
252
|
+
async function updateSharedReminderById(target, reminderId, updateReminder) {
|
|
253
|
+
return (0, shared_reminders_1.mutateSharedReminders)(target, (reminders) => {
|
|
297
254
|
const index = findReminderIndexById('shared', reminders, reminderId);
|
|
298
255
|
if (index === null)
|
|
299
256
|
return false;
|
|
@@ -328,8 +285,8 @@ async function deleteResolvedReminderTarget(dlg, target) {
|
|
|
328
285
|
dlg.deleteReminder(index);
|
|
329
286
|
});
|
|
330
287
|
}
|
|
331
|
-
case '
|
|
332
|
-
const deleted = await deleteSharedReminderById(target.
|
|
288
|
+
case 'runtime': {
|
|
289
|
+
const deleted = await deleteSharedReminderById(target.target, target.reminder.id);
|
|
333
290
|
if (deleted)
|
|
334
291
|
dlg.touchReminders();
|
|
335
292
|
return deleted;
|
|
@@ -348,8 +305,8 @@ async function updateResolvedReminderTarget(dlg, target, content, meta, renderMo
|
|
|
348
305
|
dlg.updateReminder(index, content, meta, { renderMode });
|
|
349
306
|
});
|
|
350
307
|
}
|
|
351
|
-
case '
|
|
352
|
-
const updated = await updateSharedReminderById(target.
|
|
308
|
+
case 'runtime': {
|
|
309
|
+
const updated = await updateSharedReminderById(target.target, target.reminder.id, (current) => replaceReminderContent(current, content, meta, renderMode));
|
|
353
310
|
if (updated)
|
|
354
311
|
dlg.touchReminders();
|
|
355
312
|
return updated;
|
|
@@ -364,10 +321,8 @@ function getCtrlMessages(language) {
|
|
|
364
321
|
invalidFormatDelete: '参数格式不对。用法:delete_reminder({ reminder_id: string })',
|
|
365
322
|
reminderDoesNotExist: (reminderId) => `提醒项 '${reminderId}' 不存在。`,
|
|
366
323
|
reminderTargetChanged: '错误:提醒项列表已变化,这条提醒项当前不在可见列表中。请重新查看提醒项列表后,用当前的 reminder_id 重试。',
|
|
367
|
-
invalidFormatAdd: '参数格式不对。用法:add_reminder({ content: string,
|
|
368
|
-
personalPositionUnsupported: 'personal 范围提醒当前只支持追加,不能指定 position。',
|
|
324
|
+
invalidFormatAdd: '参数格式不对。用法:add_reminder({ content: string, scope?: "dialog" | "task" | "agent" })(省略 scope 表示 task)',
|
|
369
325
|
reminderContentEmpty: '提醒内容不能为空',
|
|
370
|
-
invalidReminderPosition: (positionHuman, totalPlusOne) => `位置 ${positionHuman} 无效。有效范围:1-${totalPlusOne}`,
|
|
371
326
|
invalidFormatUpdate: '参数格式不对。用法:update_reminder({ reminder_id: string, content: string })',
|
|
372
327
|
invalidFormatDoMind: '参数格式不对。用法:do_mind({ selector: string, category?: string, content: string })',
|
|
373
328
|
invalidFormatChangeMind: '参数格式不对。用法:change_mind({ selector: string, category?: string, content: string, previous_content_hash: string })',
|
|
@@ -413,10 +368,8 @@ function getCtrlMessages(language) {
|
|
|
413
368
|
invalidFormatDelete: 'Error: Invalid args. Use: delete_reminder({ reminder_id: string })',
|
|
414
369
|
reminderDoesNotExist: (reminderId) => `Error: Reminder '${reminderId}' does not exist.`,
|
|
415
370
|
reminderTargetChanged: 'Error: The reminder list changed, and this reminder is no longer visible. Refresh the reminders and retry with the current reminder_id.',
|
|
416
|
-
invalidFormatAdd: 'Error: Invalid args. Use: add_reminder({ content: string,
|
|
417
|
-
personalPositionUnsupported: 'Error: personal-scope reminders currently support append only; do not pass position.',
|
|
371
|
+
invalidFormatAdd: 'Error: Invalid args. Use: add_reminder({ content: string, scope?: "dialog" | "task" | "agent" }) (omitting scope means task).',
|
|
418
372
|
reminderContentEmpty: 'Error: Reminder content cannot be empty',
|
|
419
|
-
invalidReminderPosition: (positionHuman, totalPlusOne) => `Error: Invalid reminder position ${positionHuman}. Valid range: 1-${totalPlusOne}`,
|
|
420
373
|
invalidFormatUpdate: 'Error: Invalid args. Use: update_reminder({ reminder_id: string, content: string })',
|
|
421
374
|
invalidFormatDoMind: 'Error: Invalid args. Use: do_mind({ selector: string, category?: string, content: string })',
|
|
422
375
|
invalidFormatChangeMind: 'Error: Invalid args. Use: change_mind({ selector: string, category?: string, content: string, previous_content_hash: string })',
|
|
@@ -499,10 +452,10 @@ exports.deleteReminderTool = {
|
|
|
499
452
|
exports.addReminderTool = {
|
|
500
453
|
type: 'func',
|
|
501
454
|
name: 'add_reminder',
|
|
502
|
-
description: 'Add a manually maintained
|
|
455
|
+
description: 'Add a manually maintained reminder for current work. Scope defaults to task so the reminder survives continuing the same Taskdoc in another dialog; dialog is only for truly dialog-local notes; agent is visible to this agent across dialogs and should be reserved for urgent short-lived global cues. Do not manually record runtime-maintained environment state such as background process status or in-flight background asks.',
|
|
503
456
|
descriptionI18n: {
|
|
504
|
-
en: 'Add a manually maintained
|
|
505
|
-
zh: '
|
|
457
|
+
en: 'Add a manually maintained reminder for current work. Scope defaults to task so the reminder survives continuing the same Taskdoc in another dialog; dialog is only for truly dialog-local notes; agent is visible to this agent across dialogs and should be reserved for urgent short-lived global cues. Do not manually record runtime-maintained environment state such as background process status or in-flight background asks.',
|
|
458
|
+
zh: '添加手工维护的手头工作提醒。scope 默认 task,以便同一差遣牒任务换新对话继续时仍可见;dialog 只用于真正对话局部的事项;agent 会在本智能体所有对话中可见,仅用于紧急、短期、全局刺眼提醒。不要手工记录后台进程状态、后台进行中诉请等 runtime 会自动维护的环境状态。',
|
|
506
459
|
},
|
|
507
460
|
parameters: {
|
|
508
461
|
type: 'object',
|
|
@@ -510,11 +463,10 @@ exports.addReminderTool = {
|
|
|
510
463
|
required: ['content'],
|
|
511
464
|
properties: {
|
|
512
465
|
content: { type: 'string', description: 'Reminder content.' },
|
|
513
|
-
position: { type: 'integer', description: 'Insert position (1-based). Defaults to append.' },
|
|
514
466
|
scope: {
|
|
515
467
|
type: 'string',
|
|
516
|
-
enum: ['dialog', '
|
|
517
|
-
description: 'Reminder visibility scope. Defaults to
|
|
468
|
+
enum: ['dialog', 'task', 'agent'],
|
|
469
|
+
description: 'Reminder visibility scope. Defaults to task.',
|
|
518
470
|
},
|
|
519
471
|
render_mode: {
|
|
520
472
|
type: 'string',
|
|
@@ -533,8 +485,8 @@ exports.addReminderTool = {
|
|
|
533
485
|
return (0, tool_1.toolFailure)(t.reminderContentEmpty);
|
|
534
486
|
const scopeValue = args['scope'];
|
|
535
487
|
const reminderScope = scopeValue === undefined
|
|
536
|
-
? '
|
|
537
|
-
: scopeValue === 'dialog' || scopeValue === '
|
|
488
|
+
? 'task'
|
|
489
|
+
: scopeValue === 'dialog' || scopeValue === 'task' || scopeValue === 'agent'
|
|
538
490
|
? scopeValue
|
|
539
491
|
: null;
|
|
540
492
|
if (reminderScope === null) {
|
|
@@ -544,7 +496,6 @@ exports.addReminderTool = {
|
|
|
544
496
|
if (reminderRenderMode === null) {
|
|
545
497
|
return (0, tool_1.toolFailure)(t.invalidFormatAdd);
|
|
546
498
|
}
|
|
547
|
-
const positionValue = args['position'];
|
|
548
499
|
const contextHealthLevel = getContinuationPackageContextHealthLevel(dlg.getLastContextHealth());
|
|
549
500
|
const reminderMeta = contextHealthLevel === undefined
|
|
550
501
|
? undefined
|
|
@@ -553,52 +504,26 @@ exports.addReminderTool = {
|
|
|
553
504
|
contextHealthLevel,
|
|
554
505
|
});
|
|
555
506
|
if (reminderScope === 'dialog') {
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
scope: 'dialog',
|
|
560
|
-
renderMode: reminderRenderMode,
|
|
561
|
-
});
|
|
562
|
-
return (0, tool_result_messages_1.formatToolActionResult)(language, 'added');
|
|
563
|
-
}
|
|
564
|
-
catch (error) {
|
|
565
|
-
if (error instanceof InvalidReminderPositionError) {
|
|
566
|
-
return (0, tool_1.toolFailure)(t.invalidReminderPosition(error.positionHuman, error.totalPlusOne));
|
|
567
|
-
}
|
|
568
|
-
if (error instanceof Error && error.message === 'invalid_add_position_format') {
|
|
569
|
-
return (0, tool_1.toolFailure)(t.invalidFormatAdd);
|
|
570
|
-
}
|
|
571
|
-
throw error;
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
try {
|
|
575
|
-
await (0, shared_reminders_1.mutateAgentSharedReminders)(dlg.agentId, (reminders) => {
|
|
576
|
-
if (positionValue !== undefined) {
|
|
577
|
-
throw new Error('personal_add_position_unsupported');
|
|
578
|
-
}
|
|
579
|
-
const reminder = (0, tool_1.materializeReminder)({
|
|
580
|
-
content: reminderContent,
|
|
581
|
-
meta: reminderMeta,
|
|
582
|
-
scope: 'personal',
|
|
583
|
-
renderMode: reminderRenderMode,
|
|
584
|
-
});
|
|
585
|
-
reminders.push(reminder);
|
|
507
|
+
dlg.addReminder(reminderContent, undefined, reminderMeta, undefined, {
|
|
508
|
+
scope: 'dialog',
|
|
509
|
+
renderMode: reminderRenderMode,
|
|
586
510
|
});
|
|
587
|
-
dlg.touchReminders();
|
|
588
511
|
return (0, tool_result_messages_1.formatToolActionResult)(language, 'added');
|
|
589
512
|
}
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
}
|
|
513
|
+
const sharedTarget = reminderScope === 'task'
|
|
514
|
+
? { kind: 'task', agentId: dlg.agentId, taskDocPath: dlg.taskDocPath }
|
|
515
|
+
: { kind: 'agent', agentId: dlg.agentId };
|
|
516
|
+
await (0, shared_reminders_1.mutateSharedReminders)(sharedTarget, (reminders) => {
|
|
517
|
+
const reminder = (0, tool_1.materializeReminder)({
|
|
518
|
+
content: reminderContent,
|
|
519
|
+
meta: reminderMeta,
|
|
520
|
+
scope: reminderScope,
|
|
521
|
+
renderMode: reminderRenderMode,
|
|
522
|
+
});
|
|
523
|
+
reminders.push(reminder);
|
|
524
|
+
});
|
|
525
|
+
dlg.touchReminders();
|
|
526
|
+
return (0, tool_result_messages_1.formatToolActionResult)(language, 'added');
|
|
602
527
|
},
|
|
603
528
|
};
|
|
604
529
|
exports.updateReminderTool = {
|
package/dist/tools/fs.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { FuncTool } from '../tool';
|
|
2
2
|
export declare const listDirTool: FuncTool;
|
|
3
|
+
export declare const fsListDirTool: FuncTool;
|
|
3
4
|
export declare const rmDirTool: FuncTool;
|
|
4
5
|
export declare const rmFileTool: FuncTool;
|
|
5
6
|
export declare const mkDirTool: FuncTool;
|
|
6
7
|
export declare const moveFileTool: FuncTool;
|
|
7
8
|
export declare const moveDirTool: FuncTool;
|
|
8
9
|
export declare const readSymlinkTool: FuncTool;
|
|
10
|
+
export declare const fsReadSymlinkTool: FuncTool;
|
|
9
11
|
export declare const createSymlinkTool: FuncTool;
|
|
10
12
|
export declare const rmSymlinkTool: FuncTool;
|