dominds 1.4.2 → 1.5.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 +24 -0
- package/README.zh.md +24 -0
- package/dist/apps/app-json.js +38 -3
- package/dist/apps/dialog-run-controls.js +4 -0
- package/dist/apps/enabled-apps.js +8 -1
- package/dist/apps/installed-file.js +207 -0
- package/dist/apps/run-app-json.js +6 -6
- package/dist/apps/runtime-port.js +91 -0
- package/dist/apps/runtime.js +316 -68
- package/dist/apps-host/client.js +153 -3
- package/dist/apps-host/host.js +339 -2
- package/dist/apps-host/ipc-types.js +215 -30
- package/dist/cli/install.js +21 -1
- package/dist/dialog-fork.js +609 -0
- package/dist/dialog.js +2 -2
- package/dist/docs/agent-priming.md +38 -0
- package/dist/docs/agent-priming.zh.md +34 -0
- package/dist/docs/app-constitution.md +153 -2
- package/dist/docs/app-constitution.zh.md +153 -2
- package/dist/docs/dialog-persistence.md +31 -0
- package/dist/docs/dialog-persistence.zh.md +31 -0
- package/dist/docs/dialog-system.md +29 -0
- package/dist/docs/dialog-system.zh.md +29 -0
- package/dist/docs/kernel-app-architecture.md +286 -0
- package/dist/docs/kernel-app-architecture.zh.md +285 -0
- package/dist/llm/defaults.yaml +16 -0
- package/dist/llm/driver-entry.js +28 -0
- package/dist/llm/driver-v2/context-health.js +121 -0
- package/dist/llm/driver-v2/context.js +56 -0
- package/dist/llm/driver-v2/core.js +1545 -0
- package/dist/llm/driver-v2/index.js +26 -0
- package/dist/llm/driver-v2/orchestrator.js +158 -0
- package/dist/llm/driver-v2/policy.js +129 -0
- package/dist/llm/driver-v2/restore-dialog-hierarchy.js +73 -0
- package/dist/llm/driver-v2/round.js +366 -0
- package/dist/llm/driver-v2/runtime-utils.js +365 -0
- package/dist/llm/driver-v2/saying-events.js +20 -0
- package/dist/llm/driver-v2/subdialog-txn.js +42 -0
- package/dist/llm/driver-v2/supdialog-response.js +400 -0
- package/dist/llm/driver-v2/tellask-bridge.js +1148 -0
- package/dist/llm/driver-v2/types.js +10 -0
- package/dist/llm/driver-v2-ref-only/context-health.js +121 -0
- package/dist/llm/driver-v2-ref-only/context.js +17 -0
- package/dist/llm/driver-v2-ref-only/core.js +1710 -0
- package/dist/llm/driver-v2-ref-only/index.js +26 -0
- package/dist/llm/driver-v2-ref-only/orchestrator.js +158 -0
- package/dist/llm/driver-v2-ref-only/policy.js +129 -0
- package/dist/llm/driver-v2-ref-only/restore-dialog-hierarchy.js +73 -0
- package/dist/llm/driver-v2-ref-only/round.js +366 -0
- package/dist/llm/driver-v2-ref-only/runtime-utils.js +473 -0
- package/dist/llm/driver-v2-ref-only/saying-events.js +18 -0
- package/dist/llm/driver-v2-ref-only/subdialog-txn.js +42 -0
- package/dist/llm/driver-v2-ref-only/supdialog-response.js +453 -0
- package/dist/llm/driver-v2-ref-only/tellask-bridge.js +1178 -0
- package/dist/llm/driver-v2-ref-only/types.js +10 -0
- package/dist/llm/gen/anthropic.js +68 -15
- package/dist/llm/gen/codex.js +59 -10
- package/dist/llm/gen/openai-compatible.js +38 -9
- package/dist/llm/gen/openai.js +58 -11
- package/dist/llm/gen/tool-output-limit.js +50 -0
- package/dist/llm/kernel-driver/subdialog.js +23 -12
- package/dist/llm/kernel-driver/tellask-special.js +20 -4
- package/dist/minds/load.js +7 -0
- package/dist/persistence.js +216 -30
- package/dist/priming.js +171 -18
- package/dist/server/api-routes.js +82 -0
- package/dist/server/setup-routes.js +15 -0
- package/dist/shared/types/storage.js +77 -0
- package/dist/static/assets/{_basePickBy-B2o4z1Hf.js → _basePickBy-B-A5XrWM.js} +3 -3
- package/dist/static/assets/{_basePickBy-B2o4z1Hf.js.map → _basePickBy-B-A5XrWM.js.map} +1 -1
- package/dist/static/assets/{_baseUniq-CLmcxjdl.js → _baseUniq-BANLb0cu.js} +2 -2
- package/dist/static/assets/{_baseUniq-CLmcxjdl.js.map → _baseUniq-BANLb0cu.js.map} +1 -1
- package/dist/static/assets/{arc-CymD_KN7.js → arc-CYZYnojf.js} +2 -2
- package/dist/static/assets/{arc-CymD_KN7.js.map → arc-CYZYnojf.js.map} +1 -1
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-DJQfSJUH.js → architectureDiagram-VXUJARFQ-Cxf4pmYG.js} +7 -7
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-DJQfSJUH.js.map → architectureDiagram-VXUJARFQ-Cxf4pmYG.js.map} +1 -1
- package/dist/static/assets/{blockDiagram-VD42YOAC-pHVz60D0.js → blockDiagram-VD42YOAC-wvs0G30c.js} +7 -7
- package/dist/static/assets/{blockDiagram-VD42YOAC-pHVz60D0.js.map → blockDiagram-VD42YOAC-wvs0G30c.js.map} +1 -1
- package/dist/static/assets/{c4Diagram-YG6GDRKO-B0WnCfAT.js → c4Diagram-YG6GDRKO-BKFNexn4.js} +3 -3
- package/dist/static/assets/{c4Diagram-YG6GDRKO-B0WnCfAT.js.map → c4Diagram-YG6GDRKO-BKFNexn4.js.map} +1 -1
- package/dist/static/assets/{channel-CX9BlKil.js → channel-_1qpxJWy.js} +2 -2
- package/dist/static/assets/{channel-CX9BlKil.js.map → channel-_1qpxJWy.js.map} +1 -1
- package/dist/static/assets/{chunk-4BX2VUAB-lXArRj3o.js → chunk-4BX2VUAB-BIdC0phm.js} +2 -2
- package/dist/static/assets/{chunk-4BX2VUAB-lXArRj3o.js.map → chunk-4BX2VUAB-BIdC0phm.js.map} +1 -1
- package/dist/static/assets/{chunk-55IACEB6-CdqwynH9.js → chunk-55IACEB6-BNvGenQ9.js} +2 -2
- package/dist/static/assets/{chunk-55IACEB6-CdqwynH9.js.map → chunk-55IACEB6-BNvGenQ9.js.map} +1 -1
- package/dist/static/assets/{chunk-B4BG7PRW-Y-uXcJst.js → chunk-B4BG7PRW-jmf-1Wv7.js} +5 -5
- package/dist/static/assets/{chunk-B4BG7PRW-Y-uXcJst.js.map → chunk-B4BG7PRW-jmf-1Wv7.js.map} +1 -1
- package/dist/static/assets/{chunk-DI55MBZ5-C5xSbRST.js → chunk-DI55MBZ5-nmEmcikR.js} +4 -4
- package/dist/static/assets/{chunk-DI55MBZ5-C5xSbRST.js.map → chunk-DI55MBZ5-nmEmcikR.js.map} +1 -1
- package/dist/static/assets/{chunk-FMBD7UC4-5uefwCjI.js → chunk-FMBD7UC4-kGysaq_j.js} +2 -2
- package/dist/static/assets/{chunk-FMBD7UC4-5uefwCjI.js.map → chunk-FMBD7UC4-kGysaq_j.js.map} +1 -1
- package/dist/static/assets/{chunk-QN33PNHL-DzWVcvpI.js → chunk-QN33PNHL-8JwMLFIJ.js} +2 -2
- package/dist/static/assets/{chunk-QN33PNHL-DzWVcvpI.js.map → chunk-QN33PNHL-8JwMLFIJ.js.map} +1 -1
- package/dist/static/assets/{chunk-QZHKN3VN-BrrvAZdP.js → chunk-QZHKN3VN-DZleEj00.js} +2 -2
- package/dist/static/assets/{chunk-QZHKN3VN-BrrvAZdP.js.map → chunk-QZHKN3VN-DZleEj00.js.map} +1 -1
- package/dist/static/assets/{chunk-TZMSLE5B-DyKOlPTY.js → chunk-TZMSLE5B-CXxl_uqH.js} +2 -2
- package/dist/static/assets/{chunk-TZMSLE5B-DyKOlPTY.js.map → chunk-TZMSLE5B-CXxl_uqH.js.map} +1 -1
- package/dist/static/assets/{classDiagram-2ON5EDUG-FCrnlCWC.js → classDiagram-2ON5EDUG-C-7R0QB6.js} +6 -6
- package/dist/static/assets/{classDiagram-2ON5EDUG-FCrnlCWC.js.map → classDiagram-2ON5EDUG-C-7R0QB6.js.map} +1 -1
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-FCrnlCWC.js → classDiagram-v2-WZHVMYZB-C-7R0QB6.js} +6 -6
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-FCrnlCWC.js.map → classDiagram-v2-WZHVMYZB-C-7R0QB6.js.map} +1 -1
- package/dist/static/assets/{clone-BlI81KqZ.js → clone-BwOKYSj8.js} +2 -2
- package/dist/static/assets/{clone-BlI81KqZ.js.map → clone-BwOKYSj8.js.map} +1 -1
- package/dist/static/assets/{cose-bilkent-S5V4N54A-yM7S2atz.js → cose-bilkent-S5V4N54A-BCBalM7p.js} +2 -2
- package/dist/static/assets/{cose-bilkent-S5V4N54A-yM7S2atz.js.map → cose-bilkent-S5V4N54A-BCBalM7p.js.map} +1 -1
- package/dist/static/assets/{dagre-6UL2VRFP-BcweuZHt.js → dagre-6UL2VRFP-uV2ekQoj.js} +7 -7
- package/dist/static/assets/{dagre-6UL2VRFP-BcweuZHt.js.map → dagre-6UL2VRFP-uV2ekQoj.js.map} +1 -1
- package/dist/static/assets/{diagram-PSM6KHXK-D4-QwLW1.js → diagram-PSM6KHXK-D-ZMog1-.js} +8 -8
- package/dist/static/assets/{diagram-PSM6KHXK-D4-QwLW1.js.map → diagram-PSM6KHXK-D-ZMog1-.js.map} +1 -1
- package/dist/static/assets/{diagram-QEK2KX5R-BVbuejJn.js → diagram-QEK2KX5R-BThSELUH.js} +7 -7
- package/dist/static/assets/{diagram-QEK2KX5R-BVbuejJn.js.map → diagram-QEK2KX5R-BThSELUH.js.map} +1 -1
- package/dist/static/assets/{diagram-S2PKOQOG-pB6N6Tq_.js → diagram-S2PKOQOG-Di-YN5cd.js} +7 -7
- package/dist/static/assets/{diagram-S2PKOQOG-pB6N6Tq_.js.map → diagram-S2PKOQOG-Di-YN5cd.js.map} +1 -1
- package/dist/static/assets/{erDiagram-Q2GNP2WA-DLKmthuw.js → erDiagram-Q2GNP2WA-lBZ9DITn.js} +5 -5
- package/dist/static/assets/{erDiagram-Q2GNP2WA-DLKmthuw.js.map → erDiagram-Q2GNP2WA-lBZ9DITn.js.map} +1 -1
- package/dist/static/assets/{flowDiagram-NV44I4VS-BsBhWukh.js → flowDiagram-NV44I4VS-C_60PNQR.js} +6 -6
- package/dist/static/assets/{flowDiagram-NV44I4VS-BsBhWukh.js.map → flowDiagram-NV44I4VS-C_60PNQR.js.map} +1 -1
- package/dist/static/assets/{ganttDiagram-JELNMOA3-Debz-J-C.js → ganttDiagram-JELNMOA3-Dvqq-VHJ.js} +3 -3
- package/dist/static/assets/{ganttDiagram-JELNMOA3-Debz-J-C.js.map → ganttDiagram-JELNMOA3-Dvqq-VHJ.js.map} +1 -1
- package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-BnAPFBGR.js → gitGraphDiagram-V2S2FVAM-BTj8orRe.js} +8 -8
- package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-BnAPFBGR.js.map → gitGraphDiagram-V2S2FVAM-BTj8orRe.js.map} +1 -1
- package/dist/static/assets/{graph-DbzWiBNK.js → graph-BqCzR2Nl.js} +3 -3
- package/dist/static/assets/{graph-DbzWiBNK.js.map → graph-BqCzR2Nl.js.map} +1 -1
- package/dist/static/assets/{index-B-8J28g7.js → index-DrTqAfFy.js} +386 -201
- package/dist/static/assets/index-DrTqAfFy.js.map +1 -0
- package/dist/static/assets/{infoDiagram-HS3SLOUP-CZ5hWoxV.js → infoDiagram-HS3SLOUP-DlC6wsrv.js} +6 -6
- package/dist/static/assets/{infoDiagram-HS3SLOUP-CZ5hWoxV.js.map → infoDiagram-HS3SLOUP-DlC6wsrv.js.map} +1 -1
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CKN3oSxk.js → journeyDiagram-XKPGCS4Q-Dg_RgtQX.js} +5 -5
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CKN3oSxk.js.map → journeyDiagram-XKPGCS4Q-Dg_RgtQX.js.map} +1 -1
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-BQCMklfJ.js → kanban-definition-3W4ZIXB7-DuGS3lId.js} +3 -3
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-BQCMklfJ.js.map → kanban-definition-3W4ZIXB7-DuGS3lId.js.map} +1 -1
- package/dist/static/assets/{layout-C5B58szc.js → layout-FDz2bstZ.js} +5 -5
- package/dist/static/assets/{layout-C5B58szc.js.map → layout-FDz2bstZ.js.map} +1 -1
- package/dist/static/assets/{linear-_32fut6G.js → linear-CzsdvPGb.js} +2 -2
- package/dist/static/assets/{linear-_32fut6G.js.map → linear-CzsdvPGb.js.map} +1 -1
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-C_goMzjx.js → mindmap-definition-VGOIOE7T-WsAF5UNp.js} +4 -4
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-C_goMzjx.js.map → mindmap-definition-VGOIOE7T-WsAF5UNp.js.map} +1 -1
- package/dist/static/assets/{pieDiagram-ADFJNKIX-BQ2n0cOB.js → pieDiagram-ADFJNKIX-DJpRJ5ei.js} +8 -8
- package/dist/static/assets/{pieDiagram-ADFJNKIX-BQ2n0cOB.js.map → pieDiagram-ADFJNKIX-DJpRJ5ei.js.map} +1 -1
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BLg7_neg.js → quadrantDiagram-AYHSOK5B-CMyIzTkY.js} +3 -3
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BLg7_neg.js.map → quadrantDiagram-AYHSOK5B-CMyIzTkY.js.map} +1 -1
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DwkJt0zi.js → requirementDiagram-UZGBJVZJ-D_yqVXGu.js} +4 -4
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DwkJt0zi.js.map → requirementDiagram-UZGBJVZJ-D_yqVXGu.js.map} +1 -1
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DmxmatUB.js → sankeyDiagram-TZEHDZUN-D4-cF724.js} +2 -2
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DmxmatUB.js.map → sankeyDiagram-TZEHDZUN-D4-cF724.js.map} +1 -1
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-KHU_eApU.js → sequenceDiagram-WL72ISMW-B7J3gWYN.js} +4 -4
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-KHU_eApU.js.map → sequenceDiagram-WL72ISMW-B7J3gWYN.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-B3DBCxAL.js → stateDiagram-FKZM4ZOC-DwEYYCcu.js} +9 -9
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-B3DBCxAL.js.map → stateDiagram-FKZM4ZOC-DwEYYCcu.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-C-uIk7gh.js → stateDiagram-v2-4FDKWEC3-D4LOOQV5.js} +5 -5
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-C-uIk7gh.js.map → stateDiagram-v2-4FDKWEC3-D4LOOQV5.js.map} +1 -1
- package/dist/static/assets/{timeline-definition-IT6M3QCI-SysEcQCC.js → timeline-definition-IT6M3QCI-CyG-TJ_A.js} +3 -3
- package/dist/static/assets/{timeline-definition-IT6M3QCI-SysEcQCC.js.map → timeline-definition-IT6M3QCI-CyG-TJ_A.js.map} +1 -1
- package/dist/static/assets/{treemap-GDKQZRPO-d0AbKEc4.js → treemap-GDKQZRPO-yY4GiKmU.js} +5 -5
- package/dist/static/assets/{treemap-GDKQZRPO-d0AbKEc4.js.map → treemap-GDKQZRPO-yY4GiKmU.js.map} +1 -1
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-CmSQMxUh.js → xychartDiagram-PRI3JC2R-5TYN_q15.js} +3 -3
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-CmSQMxUh.js.map → xychartDiagram-PRI3JC2R-5TYN_q15.js.map} +1 -1
- package/dist/static/index.html +1 -1
- package/dist/team.js +33 -4
- package/dist/tools/app-reminders.js +280 -0
- package/dist/tools/prompts/memory/en/errors.md +155 -0
- package/dist/tools/prompts/memory/en/index.md +47 -0
- package/dist/tools/prompts/memory/en/principles.md +79 -0
- package/dist/tools/prompts/memory/en/scenarios.md +174 -0
- package/dist/tools/prompts/memory/en/tools.md +154 -0
- package/dist/tools/prompts/memory/zh/errors.md +155 -0
- package/dist/tools/prompts/memory/zh/index.md +47 -0
- package/dist/tools/prompts/memory/zh/principles.md +79 -0
- package/dist/tools/prompts/memory/zh/scenarios.md +174 -0
- package/dist/tools/prompts/memory/zh/tools.md +154 -0
- package/dist/tools/ripgrep.js +197 -63
- package/package.json +2 -2
- package/dist/static/assets/index-B-8J28g7.js.map +0 -1
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# memory 使用场景
|
|
2
|
+
|
|
3
|
+
## 模板(场景)
|
|
4
|
+
|
|
5
|
+
### 场景格式
|
|
6
|
+
|
|
7
|
+
- 目标
|
|
8
|
+
- 前置条件
|
|
9
|
+
- 步骤
|
|
10
|
+
- 期望信号
|
|
11
|
+
- 失败分支处理
|
|
12
|
+
- 完成判据
|
|
13
|
+
|
|
14
|
+
## 场景 1:任务进度跟踪
|
|
15
|
+
|
|
16
|
+
### 场景描述
|
|
17
|
+
|
|
18
|
+
在长时间任务中,需要持久化任务进度,以便重启后继续。
|
|
19
|
+
|
|
20
|
+
### 示例
|
|
21
|
+
|
|
22
|
+
**添加任务列表**
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
add_memory({
|
|
26
|
+
path: 'project/i18n-tasks',
|
|
27
|
+
content:
|
|
28
|
+
'## 待办任务\n\n- [ ] 创建 ws_mod 手册\n- [ ] 创建 team_mgmt 手册\n- [ ] 创建 memory 手册\n- [ ] 创建 control 手册\n\n## 进行中\n- [ ] 创建 ws_mod 手册 [100%]',
|
|
29
|
+
});
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**更新任务进度**
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
replace_memory({
|
|
36
|
+
path: 'project/i18n-tasks',
|
|
37
|
+
content:
|
|
38
|
+
'## 待办任务\n\n- [ ] 创建 team_mgmt 手册\n- [ ] 创建 memory 手册\n- [ ] 创建 control 手册\n\n## 已完成\n- [x] 创建 ws_mod 手册\n\n## 进行中\n- [ ] 创建 team_mgmt 手册 [50%]',
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 场景 2:用户偏好存储
|
|
43
|
+
|
|
44
|
+
### 场景描述
|
|
45
|
+
|
|
46
|
+
保存用户偏好设置,例如编程语言、主题等。
|
|
47
|
+
|
|
48
|
+
### 示例
|
|
49
|
+
|
|
50
|
+
**保存用户偏好**
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
add_memory({
|
|
54
|
+
path: 'user/preferences',
|
|
55
|
+
content:
|
|
56
|
+
'## 用户偏好\n\n- 编程语言: TypeScript\n- 代码风格: strict\n- 主题: dark\n- 自动保存: true',
|
|
57
|
+
});
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**更新偏好**
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
replace_memory({
|
|
64
|
+
path: 'user/preferences',
|
|
65
|
+
content:
|
|
66
|
+
'## 用户偏好\n\n- 编程语言: TypeScript\n- 代码风格: strict\n- 主题: light\n- 自动保存: true',
|
|
67
|
+
});
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 场景 3:上下文信息保存
|
|
71
|
+
|
|
72
|
+
### 场景描述
|
|
73
|
+
|
|
74
|
+
在复杂任务中,保存重要的上下文信息,避免重复查询。
|
|
75
|
+
|
|
76
|
+
### 示例
|
|
77
|
+
|
|
78
|
+
**保存 API 信息**
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
add_memory({
|
|
82
|
+
path: 'context/api-endpoints',
|
|
83
|
+
content:
|
|
84
|
+
'## API 端点\n\n- 用户登录: POST /api/auth/login\n- 获取用户信息: GET /api/user/info\n- 更新用户设置: PUT /api/user/settings\n\n## 认证\n- 使用 Bearer Token\n- 有效期: 24 小时',
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**保存技术栈**
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
add_memory({
|
|
92
|
+
path: 'context/tech-stack',
|
|
93
|
+
content:
|
|
94
|
+
'## 技术栈\n\n- 前端: React + TypeScript\n- 后端: Node.js + Express\n- 数据库: PostgreSQL\n- 缓存: Redis',
|
|
95
|
+
});
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## 场景 4:会议记录
|
|
99
|
+
|
|
100
|
+
### 场景描述
|
|
101
|
+
|
|
102
|
+
保存会议要点和决策。
|
|
103
|
+
|
|
104
|
+
### 示例
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
add_memory({
|
|
108
|
+
path: 'meeting/2024-01-15',
|
|
109
|
+
content:
|
|
110
|
+
'## 会议纪要: 2024-01-15\n\n### 参与者\n- @fullstack\n- @i18n\n- @ux\n\n### 议题\n1. i18n 手册创建计划\n2. man 函数 UX 改进\n\n### 决策\n- 优先创建 ws_mod 和 team_mgmt 手册\n- man 函数支持模糊匹配\n\n### 待办\n- @i18n: 创建 memory 手册\n- @fullstack: 优化 man 函数',
|
|
111
|
+
});
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 场景 5:知识库
|
|
115
|
+
|
|
116
|
+
### 场景描述
|
|
117
|
+
|
|
118
|
+
建立个人知识库,保存学习笔记。
|
|
119
|
+
|
|
120
|
+
### 示例
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
add_memory({
|
|
124
|
+
path: 'knowledge/typescript-tips',
|
|
125
|
+
content:
|
|
126
|
+
'## TypeScript 技巧\n\n### 1. 类型推断\nconst x = 1; // 类型推断为 number\n\n### 2. 接口 vs 类型\n- 接口: 可扩展,适合对象类型\n- 类型: 支持联合类型、交叉类型\n\n### 3. strict 模式\n启用 strict 模式可以获得更好的类型安全',
|
|
127
|
+
});
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## 场景 6:临时笔记
|
|
131
|
+
|
|
132
|
+
### 场景描述
|
|
133
|
+
|
|
134
|
+
临时保存需要稍后处理的信息。
|
|
135
|
+
|
|
136
|
+
### 示例
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
add_memory({
|
|
140
|
+
path: 'scratchpad/temp-notes',
|
|
141
|
+
content:
|
|
142
|
+
'## 临时笔记\n\n- TODO: 检查 team.yaml 配置\n- TODO: 验证 man 函数类型\n- TODO: 更新差遣牒进度',
|
|
143
|
+
});
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**处理完后删除**
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
drop_memory({
|
|
150
|
+
path: 'scratchpad/temp-notes',
|
|
151
|
+
});
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## 场景 7:清理过时记忆
|
|
155
|
+
|
|
156
|
+
### 场景描述
|
|
157
|
+
|
|
158
|
+
定期清理不再需要的记忆。
|
|
159
|
+
|
|
160
|
+
### 示例
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
// 查看当前所有记忆(智能体可读取)
|
|
164
|
+
// 逐个删除不需要的记忆
|
|
165
|
+
drop_memory({
|
|
166
|
+
path: 'project/old-feature',
|
|
167
|
+
});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
或者使用 `clear_memory` 清空所有记忆(谨慎使用):
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
clear_memory({});
|
|
174
|
+
```
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# memory 工具参考
|
|
2
|
+
|
|
3
|
+
## 模板(工具)
|
|
4
|
+
|
|
5
|
+
### 阅读方式
|
|
6
|
+
|
|
7
|
+
- "工具契约(Schema)" 为参数/返回的权威来源。
|
|
8
|
+
|
|
9
|
+
### 单工具字段顺序
|
|
10
|
+
|
|
11
|
+
1. 用途
|
|
12
|
+
2. 调用签名
|
|
13
|
+
3. 参数(参见 schema)
|
|
14
|
+
4. 前置条件
|
|
15
|
+
5. 成功信号
|
|
16
|
+
6. 失败/错误
|
|
17
|
+
7. 可直接执行示例
|
|
18
|
+
8. 常见误用
|
|
19
|
+
|
|
20
|
+
## 工具列表
|
|
21
|
+
|
|
22
|
+
### 1. add_memory
|
|
23
|
+
|
|
24
|
+
创建新记忆(路径不存在时)。
|
|
25
|
+
|
|
26
|
+
**参数:**
|
|
27
|
+
|
|
28
|
+
- `path`(必需):记忆的唯一标识符
|
|
29
|
+
- `content`(必需):记忆内容
|
|
30
|
+
|
|
31
|
+
**返回:**
|
|
32
|
+
|
|
33
|
+
```yaml
|
|
34
|
+
status: ok|error
|
|
35
|
+
path: <记忆路径>
|
|
36
|
+
content_size: <内容字节数>
|
|
37
|
+
created_at: <创建时间戳>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**错误:**
|
|
41
|
+
|
|
42
|
+
- `MEMORY_ALREADY_EXISTS`:路径已存在,使用 `replace_memory` 更新
|
|
43
|
+
|
|
44
|
+
### 2. replace_memory
|
|
45
|
+
|
|
46
|
+
更新已有记忆(路径存在时)。
|
|
47
|
+
|
|
48
|
+
**参数:**
|
|
49
|
+
|
|
50
|
+
- `path`(必需):记忆的唯一标识符
|
|
51
|
+
- `content`(必需):新的记忆内容
|
|
52
|
+
|
|
53
|
+
**返回:**
|
|
54
|
+
|
|
55
|
+
```yaml
|
|
56
|
+
status: ok|error
|
|
57
|
+
path: <记忆路径>
|
|
58
|
+
content_size: <内容字节数>
|
|
59
|
+
updated_at: <更新时间戳>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**错误:**
|
|
63
|
+
|
|
64
|
+
- `MEMORY_NOT_FOUND`:路径不存在,使用 `add_memory` 创建
|
|
65
|
+
|
|
66
|
+
### 3. drop_memory
|
|
67
|
+
|
|
68
|
+
删除指定记忆。
|
|
69
|
+
|
|
70
|
+
**参数:**
|
|
71
|
+
|
|
72
|
+
- `path`(必需):要删除的记忆路径
|
|
73
|
+
|
|
74
|
+
**返回:**
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
status: ok|error
|
|
78
|
+
path: <记忆路径>
|
|
79
|
+
deleted_at: <删除时间戳>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**错误:**
|
|
83
|
+
|
|
84
|
+
- `MEMORY_NOT_FOUND`:路径不存在
|
|
85
|
+
|
|
86
|
+
### 4. clear_memory
|
|
87
|
+
|
|
88
|
+
清空所有个人记忆。
|
|
89
|
+
|
|
90
|
+
**警告:** 此操作不可恢复!
|
|
91
|
+
|
|
92
|
+
**参数:** 无
|
|
93
|
+
|
|
94
|
+
**返回:**
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
status: ok|error
|
|
98
|
+
cleared_count: <删除的记忆数量>
|
|
99
|
+
cleared_at: <删除时间戳>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**错误:**
|
|
103
|
+
|
|
104
|
+
- 无(即使没有记忆也会返回成功)
|
|
105
|
+
|
|
106
|
+
## 使用示例
|
|
107
|
+
|
|
108
|
+
### 添加新记忆
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
add_memory({
|
|
112
|
+
path: 'project/todo',
|
|
113
|
+
content: '- 完成 i18n 文档\n- 编写测试用例\n- 更新 README',
|
|
114
|
+
});
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 更新已有记忆
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
replace_memory({
|
|
121
|
+
path: 'project/todo',
|
|
122
|
+
content: '- 完成 i18n 文档 [DONE]\n- 编写测试用例 [IN PROGRESS]\n- 更新 README',
|
|
123
|
+
});
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 删除记忆
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
drop_memory({
|
|
130
|
+
path: 'project/todo',
|
|
131
|
+
});
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 清空所有记忆
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
clear_memory({});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## YAML 输出契约
|
|
141
|
+
|
|
142
|
+
所有工具的输出都使用 YAML 格式,便于程序化处理:
|
|
143
|
+
|
|
144
|
+
- `status`:操作状态,`ok` 表示成功,`error` 表示失败
|
|
145
|
+
- `path`:记忆路径
|
|
146
|
+
- 其他字段:具体操作的附加信息
|
|
147
|
+
|
|
148
|
+
错误时返回:
|
|
149
|
+
|
|
150
|
+
```yaml
|
|
151
|
+
status: error
|
|
152
|
+
error_code: <错误代码>
|
|
153
|
+
message: <错误消息>
|
|
154
|
+
```
|
package/dist/tools/ripgrep.js
CHANGED
|
@@ -23,6 +23,11 @@ function yamlFlowStringArray(values) {
|
|
|
23
23
|
return '[]';
|
|
24
24
|
return `[${values.map(yamlQuote).join(', ')}]`;
|
|
25
25
|
}
|
|
26
|
+
function yamlFlowNumberArray(values) {
|
|
27
|
+
if (values.length === 0)
|
|
28
|
+
return '[]';
|
|
29
|
+
return `[${values.join(', ')}]`;
|
|
30
|
+
}
|
|
26
31
|
function requireNonEmptyStringArg(args, key) {
|
|
27
32
|
const value = args[key];
|
|
28
33
|
if (typeof value !== 'string' || value.trim() === '') {
|
|
@@ -223,6 +228,176 @@ function formatForbiddenSearchPathAccessDeniedYaml(mode, pattern, searchPath, fo
|
|
|
223
228
|
].join('\n');
|
|
224
229
|
return formatYamlCodeBlock(yaml);
|
|
225
230
|
}
|
|
231
|
+
const RIPGREP_SNIPPET_TEXT_CHAR_LIMIT = 400;
|
|
232
|
+
const RIPGREP_SNIPPET_OUTPUT_CHAR_LIMIT = 200000;
|
|
233
|
+
const RIPGREP_SNIPPET_RESULTS_CHAR_BUDGET = RIPGREP_SNIPPET_OUTPUT_CHAR_LIMIT - 2048;
|
|
234
|
+
function truncateRipgrepSnippetText(text, maxChars = RIPGREP_SNIPPET_TEXT_CHAR_LIMIT) {
|
|
235
|
+
if (text.length <= maxChars)
|
|
236
|
+
return { text, truncated: false, originalChars: text.length };
|
|
237
|
+
const suffix = `...[truncated ${text.length - maxChars} chars]`;
|
|
238
|
+
if (suffix.length >= maxChars) {
|
|
239
|
+
return { text: suffix.slice(0, maxChars), truncated: true, originalChars: text.length };
|
|
240
|
+
}
|
|
241
|
+
const keepChars = maxChars - suffix.length;
|
|
242
|
+
return {
|
|
243
|
+
text: `${text.slice(0, keepChars)}${suffix}`,
|
|
244
|
+
truncated: true,
|
|
245
|
+
originalChars: text.length,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
function sumNumbers(values) {
|
|
249
|
+
let total = 0;
|
|
250
|
+
for (const value of values)
|
|
251
|
+
total += value;
|
|
252
|
+
return total;
|
|
253
|
+
}
|
|
254
|
+
function renderRipgrepSnippetResult(result) {
|
|
255
|
+
const match = truncateRipgrepSnippetText(result.match);
|
|
256
|
+
const renderedBefore = (result.before ?? []).map((line) => truncateRipgrepSnippetText(line));
|
|
257
|
+
const renderedAfter = (result.after ?? []).map((line) => truncateRipgrepSnippetText(line));
|
|
258
|
+
const beforeOriginalChars = renderedBefore.map((line) => line.originalChars);
|
|
259
|
+
const afterOriginalChars = renderedAfter.map((line) => line.originalChars);
|
|
260
|
+
const textTruncated = match.truncated ||
|
|
261
|
+
renderedBefore.some((line) => line.truncated) ||
|
|
262
|
+
renderedAfter.some((line) => line.truncated);
|
|
263
|
+
const reasons = textTruncated ? ['per_text_char_limit'] : [];
|
|
264
|
+
const originalTextChars = match.originalChars + sumNumbers(beforeOriginalChars) + sumNumbers(afterOriginalChars);
|
|
265
|
+
return {
|
|
266
|
+
yaml: [
|
|
267
|
+
` - path: ${yamlQuote(result.path)}`,
|
|
268
|
+
` line: ${result.line}`,
|
|
269
|
+
` col: ${result.col}`,
|
|
270
|
+
` text_truncated: ${textTruncated}`,
|
|
271
|
+
` match: ${yamlQuote(match.text)}`,
|
|
272
|
+
...(result.before
|
|
273
|
+
? [` before: ${yamlFlowStringArray(renderedBefore.map((line) => line.text))}`]
|
|
274
|
+
: []),
|
|
275
|
+
...(result.after
|
|
276
|
+
? [` after: ${yamlFlowStringArray(renderedAfter.map((line) => line.text))}`]
|
|
277
|
+
: []),
|
|
278
|
+
` truncation:`,
|
|
279
|
+
` applied: ${textTruncated}`,
|
|
280
|
+
` reasons: ${yamlFlowStringArray(reasons)}`,
|
|
281
|
+
` match_original_chars: ${match.originalChars}`,
|
|
282
|
+
` before_original_chars: ${yamlFlowNumberArray(beforeOriginalChars)}`,
|
|
283
|
+
` after_original_chars: ${yamlFlowNumberArray(afterOriginalChars)}`,
|
|
284
|
+
].join('\n'),
|
|
285
|
+
textTruncated,
|
|
286
|
+
originalTextChars,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
function fitRipgrepSnippetResults(results) {
|
|
290
|
+
const rendered = [];
|
|
291
|
+
let usedChars = 0;
|
|
292
|
+
let textTruncated = false;
|
|
293
|
+
let outputCharsTruncated = false;
|
|
294
|
+
let textTrimmedResultCount = 0;
|
|
295
|
+
let shownOriginalTextChars = 0;
|
|
296
|
+
let omittedOriginalTextChars = 0;
|
|
297
|
+
let omittedResultsByOutputBudget = 0;
|
|
298
|
+
for (let idx = 0; idx < results.length; idx += 1) {
|
|
299
|
+
const result = results[idx];
|
|
300
|
+
const next = renderRipgrepSnippetResult(result);
|
|
301
|
+
textTruncated = textTruncated || next.textTruncated;
|
|
302
|
+
if (next.textTruncated)
|
|
303
|
+
textTrimmedResultCount += 1;
|
|
304
|
+
const nextChars = next.yaml.length + (rendered.length > 0 ? 1 : 0);
|
|
305
|
+
if (usedChars + nextChars > RIPGREP_SNIPPET_RESULTS_CHAR_BUDGET) {
|
|
306
|
+
outputCharsTruncated = true;
|
|
307
|
+
omittedResultsByOutputBudget = results.length - idx;
|
|
308
|
+
omittedOriginalTextChars += next.originalTextChars;
|
|
309
|
+
for (let rest = idx + 1; rest < results.length; rest += 1) {
|
|
310
|
+
omittedOriginalTextChars += renderRipgrepSnippetResult(results[rest]).originalTextChars;
|
|
311
|
+
}
|
|
312
|
+
break;
|
|
313
|
+
}
|
|
314
|
+
rendered.push(next.yaml);
|
|
315
|
+
usedChars += nextChars;
|
|
316
|
+
shownOriginalTextChars += next.originalTextChars;
|
|
317
|
+
}
|
|
318
|
+
if (rendered.length < results.length && !outputCharsTruncated) {
|
|
319
|
+
outputCharsTruncated = true;
|
|
320
|
+
omittedResultsByOutputBudget = results.length - rendered.length;
|
|
321
|
+
}
|
|
322
|
+
return {
|
|
323
|
+
rendered,
|
|
324
|
+
textTruncated,
|
|
325
|
+
outputCharsTruncated,
|
|
326
|
+
textTrimmedResultCount,
|
|
327
|
+
shownOriginalTextChars,
|
|
328
|
+
omittedOriginalTextChars,
|
|
329
|
+
omittedResultsByOutputBudget,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
function buildRipgrepSnippetSummary(input) {
|
|
333
|
+
if (input.totalMatches === 0)
|
|
334
|
+
return 'No matches.';
|
|
335
|
+
if (input.truncatedByMatchLimit && input.truncatedByOutputChars) {
|
|
336
|
+
return `Found ${input.totalMatches} matches; showing ${input.shownResults} snippets within max_results/output limits (truncated=true).`;
|
|
337
|
+
}
|
|
338
|
+
if (input.truncatedByOutputChars) {
|
|
339
|
+
return `Found ${input.totalMatches} matches; showing ${input.shownResults} snippets within output size limit (truncated=true).`;
|
|
340
|
+
}
|
|
341
|
+
if (input.truncatedByMatchLimit) {
|
|
342
|
+
return `Showing first ${input.maxResults} of ${input.totalMatches} matches (truncated=true).`;
|
|
343
|
+
}
|
|
344
|
+
if (input.textTruncated) {
|
|
345
|
+
return `Found ${input.totalMatches} matches; long snippet lines were trimmed for readability.`;
|
|
346
|
+
}
|
|
347
|
+
return `Found ${input.totalMatches} matches.`;
|
|
348
|
+
}
|
|
349
|
+
function formatRipgrepSnippetYaml(input) {
|
|
350
|
+
const fitted = fitRipgrepSnippetResults(input.results);
|
|
351
|
+
const truncatedByMatchLimit = input.totalMatches > input.maxResults;
|
|
352
|
+
const truncated = truncatedByMatchLimit || fitted.outputCharsTruncated || fitted.textTruncated;
|
|
353
|
+
const truncationReasons = [];
|
|
354
|
+
if (truncatedByMatchLimit)
|
|
355
|
+
truncationReasons.push('max_results');
|
|
356
|
+
if (fitted.outputCharsTruncated)
|
|
357
|
+
truncationReasons.push('output_char_budget');
|
|
358
|
+
if (fitted.textTruncated)
|
|
359
|
+
truncationReasons.push('per_text_char_limit');
|
|
360
|
+
const summary = buildRipgrepSnippetSummary({
|
|
361
|
+
totalMatches: input.totalMatches,
|
|
362
|
+
shownResults: fitted.rendered.length,
|
|
363
|
+
maxResults: input.maxResults,
|
|
364
|
+
truncatedByMatchLimit,
|
|
365
|
+
truncatedByOutputChars: fitted.outputCharsTruncated,
|
|
366
|
+
textTruncated: fitted.textTruncated,
|
|
367
|
+
});
|
|
368
|
+
const yaml = [
|
|
369
|
+
`status: ok`,
|
|
370
|
+
`pattern: ${yamlQuote(input.pattern)}`,
|
|
371
|
+
`mode: snippets`,
|
|
372
|
+
`path: ${yamlQuote(input.searchPath)}`,
|
|
373
|
+
...(input.globs.length > 0 ? [`globs: ${yamlFlowStringArray(input.globs)}`] : []),
|
|
374
|
+
`case: ${input.caseMode}`,
|
|
375
|
+
`fixed_strings: ${input.fixedStrings}`,
|
|
376
|
+
`regex: ${!input.fixedStrings}`,
|
|
377
|
+
`truncated: ${truncated}`,
|
|
378
|
+
`truncated_by_output_chars: ${fitted.outputCharsTruncated}`,
|
|
379
|
+
`snippet_text_truncated: ${fitted.textTruncated}`,
|
|
380
|
+
`limits:`,
|
|
381
|
+
` max_results: ${input.maxResults}`,
|
|
382
|
+
` max_output_chars: ${RIPGREP_SNIPPET_OUTPUT_CHAR_LIMIT}`,
|
|
383
|
+
` per_text_char_limit: ${RIPGREP_SNIPPET_TEXT_CHAR_LIMIT}`,
|
|
384
|
+
`totals:`,
|
|
385
|
+
` files_matched: ${input.fileCount}`,
|
|
386
|
+
` matches: ${input.totalMatches}`,
|
|
387
|
+
` shown_results: ${fitted.rendered.length}`,
|
|
388
|
+
`truncation:`,
|
|
389
|
+
` applied: ${truncated}`,
|
|
390
|
+
` reasons: ${yamlFlowStringArray(truncationReasons)}`,
|
|
391
|
+
` text_trimmed_result_count: ${fitted.textTrimmedResultCount}`,
|
|
392
|
+
` omitted_results_by_output_budget: ${fitted.omittedResultsByOutputBudget}`,
|
|
393
|
+
` shown_original_text_chars: ${fitted.shownOriginalTextChars}`,
|
|
394
|
+
` omitted_original_text_chars: ${fitted.omittedOriginalTextChars}`,
|
|
395
|
+
`summary: ${yamlQuote(summary)}`,
|
|
396
|
+
`results:`,
|
|
397
|
+
...fitted.rendered,
|
|
398
|
+
].join('\n');
|
|
399
|
+
return formatYamlCodeBlock(yaml);
|
|
400
|
+
}
|
|
226
401
|
function defaultBaseOptions() {
|
|
227
402
|
return {
|
|
228
403
|
globs: [],
|
|
@@ -549,39 +724,17 @@ async function runRipgrepSnippets(caller, pattern, searchPath, options) {
|
|
|
549
724
|
const after = lines.slice(idx0 + 1, idx0 + 1 + options.contextAfter);
|
|
550
725
|
results.push({ path: filePath, line: ln, col, match: text, before, after });
|
|
551
726
|
}
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
:
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
...(options.globs.length > 0 ? [`globs: ${yamlFlowStringArray(options.globs)}`] : []),
|
|
564
|
-
`case: ${options.caseMode}`,
|
|
565
|
-
`fixed_strings: ${options.fixedStrings}`,
|
|
566
|
-
`regex: ${!options.fixedStrings}`,
|
|
567
|
-
`truncated: ${truncated}`,
|
|
568
|
-
`limits:`,
|
|
569
|
-
` max_results: ${options.maxResults}`,
|
|
570
|
-
`totals:`,
|
|
571
|
-
` files_matched: ${fileSet.size}`,
|
|
572
|
-
` matches: ${totalMatches}`,
|
|
573
|
-
`summary: ${yamlQuote(summary)}`,
|
|
574
|
-
`results:`,
|
|
575
|
-
...results.map((r) => [
|
|
576
|
-
` - path: ${yamlQuote(r.path)}`,
|
|
577
|
-
` line: ${r.line}`,
|
|
578
|
-
` col: ${r.col}`,
|
|
579
|
-
` match: ${yamlQuote(r.match)}`,
|
|
580
|
-
` before: ${yamlFlowStringArray(r.before)}`,
|
|
581
|
-
` after: ${yamlFlowStringArray(r.after)}`,
|
|
582
|
-
].join('\n')),
|
|
583
|
-
].join('\n');
|
|
584
|
-
return formatYamlCodeBlock(yaml);
|
|
727
|
+
return formatRipgrepSnippetYaml({
|
|
728
|
+
pattern,
|
|
729
|
+
searchPath,
|
|
730
|
+
globs: options.globs,
|
|
731
|
+
caseMode: options.caseMode,
|
|
732
|
+
fixedStrings: options.fixedStrings,
|
|
733
|
+
maxResults: options.maxResults,
|
|
734
|
+
fileCount: fileSet.size,
|
|
735
|
+
totalMatches,
|
|
736
|
+
results,
|
|
737
|
+
});
|
|
585
738
|
}
|
|
586
739
|
catch (error) {
|
|
587
740
|
return formatYamlCodeBlock([
|
|
@@ -771,36 +924,17 @@ async function runRipgrepSearch(caller, pattern, searchPath, rawRgArgs) {
|
|
|
771
924
|
if (results.length < options.maxResults)
|
|
772
925
|
results.push({ path: filePath, line: ln, col, match: text });
|
|
773
926
|
}
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
:
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
`case: smart`,
|
|
786
|
-
`fixed_strings: false`,
|
|
787
|
-
`regex: true`,
|
|
788
|
-
`truncated: ${truncated}`,
|
|
789
|
-
`limits:`,
|
|
790
|
-
` max_results: ${options.maxResults}`,
|
|
791
|
-
`totals:`,
|
|
792
|
-
` files_matched: ${fileSet.size}`,
|
|
793
|
-
` matches: ${totalMatches}`,
|
|
794
|
-
`summary: ${yamlQuote(summary)}`,
|
|
795
|
-
`results:`,
|
|
796
|
-
...results.map((r) => [
|
|
797
|
-
` - path: ${yamlQuote(r.path)}`,
|
|
798
|
-
` line: ${r.line}`,
|
|
799
|
-
` col: ${r.col}`,
|
|
800
|
-
` match: ${yamlQuote(r.match)}`,
|
|
801
|
-
].join('\n')),
|
|
802
|
-
].join('\n');
|
|
803
|
-
return formatYamlCodeBlock(yaml);
|
|
927
|
+
return formatRipgrepSnippetYaml({
|
|
928
|
+
pattern,
|
|
929
|
+
searchPath,
|
|
930
|
+
globs: [],
|
|
931
|
+
caseMode: 'smart',
|
|
932
|
+
fixedStrings: false,
|
|
933
|
+
maxResults: options.maxResults,
|
|
934
|
+
fileCount: fileSet.size,
|
|
935
|
+
totalMatches,
|
|
936
|
+
results,
|
|
937
|
+
});
|
|
804
938
|
}
|
|
805
939
|
catch (error) {
|
|
806
940
|
return formatYamlCodeBlock([
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dominds",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.2",
|
|
4
4
|
"description": "DevOps Mindsets — Sustainable Agentic Product Lifecycle",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"private": false,
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"pnpm": ">=10.30.3"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@longrun-ai/codex-auth": "^0.9.
|
|
56
|
+
"@longrun-ai/codex-auth": "^0.9.1",
|
|
57
57
|
"@anthropic-ai/sdk": "^0.78.0",
|
|
58
58
|
"openai": "^6.27.0",
|
|
59
59
|
"@modelcontextprotocol/sdk": "^1.27.1",
|