dominds 0.6.5 → 0.6.6

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.
Files changed (107) hide show
  1. package/dist/llm/driver.js +10 -0
  2. package/dist/minds/builtin/cmdr/persona.md +3 -0
  3. package/dist/minds/builtin/dijiang/knowledge.md +287 -0
  4. package/dist/minds/builtin/dijiang/persona.md +7 -0
  5. package/dist/minds/system-prompt.js +6 -2
  6. package/dist/server/api-routes.js +28 -71
  7. package/dist/server/websocket-handler.js +5 -1
  8. package/dist/showing-by-doing.js +31 -34
  9. package/dist/static/assets/{_baseUniq-B6S2Szf-.js → _baseUniq-DucuKHj3.js} +2 -2
  10. package/dist/static/assets/{_baseUniq-B6S2Szf-.js.map → _baseUniq-DucuKHj3.js.map} +1 -1
  11. package/dist/static/assets/{arc-BobaWfK6.js → arc-CNlZ9dTp.js} +2 -2
  12. package/dist/static/assets/{arc-BobaWfK6.js.map → arc-CNlZ9dTp.js.map} +1 -1
  13. package/dist/static/assets/{architectureDiagram-VXUJARFQ-ZgJq5aSW.js → architectureDiagram-VXUJARFQ-BXkEOfVt.js} +6 -6
  14. package/dist/static/assets/{architectureDiagram-VXUJARFQ-ZgJq5aSW.js.map → architectureDiagram-VXUJARFQ-BXkEOfVt.js.map} +1 -1
  15. package/dist/static/assets/{blockDiagram-VD42YOAC-BNbfk_nT.js → blockDiagram-VD42YOAC-CyxI2bRF.js} +7 -7
  16. package/dist/static/assets/{blockDiagram-VD42YOAC-BNbfk_nT.js.map → blockDiagram-VD42YOAC-CyxI2bRF.js.map} +1 -1
  17. package/dist/static/assets/{c4Diagram-YG6GDRKO-CvepUKza.js → c4Diagram-YG6GDRKO-sS8T1IDn.js} +3 -3
  18. package/dist/static/assets/{c4Diagram-YG6GDRKO-CvepUKza.js.map → c4Diagram-YG6GDRKO-sS8T1IDn.js.map} +1 -1
  19. package/dist/static/assets/{channel-C_JNHPnq.js → channel-DBu0JRwo.js} +2 -2
  20. package/dist/static/assets/{channel-C_JNHPnq.js.map → channel-DBu0JRwo.js.map} +1 -1
  21. package/dist/static/assets/{chunk-4BX2VUAB-DBOe1MUb.js → chunk-4BX2VUAB-D499BCnz.js} +2 -2
  22. package/dist/static/assets/{chunk-4BX2VUAB-DBOe1MUb.js.map → chunk-4BX2VUAB-D499BCnz.js.map} +1 -1
  23. package/dist/static/assets/{chunk-55IACEB6-HFCpWmno.js → chunk-55IACEB6-Dbe3sqC4.js} +2 -2
  24. package/dist/static/assets/{chunk-55IACEB6-HFCpWmno.js.map → chunk-55IACEB6-Dbe3sqC4.js.map} +1 -1
  25. package/dist/static/assets/{chunk-B4BG7PRW-CCfgfeSD.js → chunk-B4BG7PRW-BHkSNS9y.js} +5 -5
  26. package/dist/static/assets/{chunk-B4BG7PRW-CCfgfeSD.js.map → chunk-B4BG7PRW-BHkSNS9y.js.map} +1 -1
  27. package/dist/static/assets/{chunk-DI55MBZ5-JTCAsk7E.js → chunk-DI55MBZ5-idwTV08g.js} +4 -4
  28. package/dist/static/assets/{chunk-DI55MBZ5-JTCAsk7E.js.map → chunk-DI55MBZ5-idwTV08g.js.map} +1 -1
  29. package/dist/static/assets/{chunk-FMBD7UC4-DOOsbua1.js → chunk-FMBD7UC4-DLYv0YzD.js} +2 -2
  30. package/dist/static/assets/{chunk-FMBD7UC4-DOOsbua1.js.map → chunk-FMBD7UC4-DLYv0YzD.js.map} +1 -1
  31. package/dist/static/assets/{chunk-QN33PNHL-C9OxwmhO.js → chunk-QN33PNHL-DIC5_nYD.js} +2 -2
  32. package/dist/static/assets/{chunk-QN33PNHL-C9OxwmhO.js.map → chunk-QN33PNHL-DIC5_nYD.js.map} +1 -1
  33. package/dist/static/assets/{chunk-QZHKN3VN-r3c-cVI_.js → chunk-QZHKN3VN-DM_s2fcN.js} +2 -2
  34. package/dist/static/assets/{chunk-QZHKN3VN-r3c-cVI_.js.map → chunk-QZHKN3VN-DM_s2fcN.js.map} +1 -1
  35. package/dist/static/assets/{chunk-TZMSLE5B-BUEKhPxm.js → chunk-TZMSLE5B-BjrSLFBO.js} +2 -2
  36. package/dist/static/assets/{chunk-TZMSLE5B-BUEKhPxm.js.map → chunk-TZMSLE5B-BjrSLFBO.js.map} +1 -1
  37. package/dist/static/assets/{classDiagram-2ON5EDUG-COQwkaAL.js → classDiagram-2ON5EDUG-CSPkR9uh.js} +6 -6
  38. package/dist/static/assets/{classDiagram-2ON5EDUG-COQwkaAL.js.map → classDiagram-2ON5EDUG-CSPkR9uh.js.map} +1 -1
  39. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-COQwkaAL.js → classDiagram-v2-WZHVMYZB-CSPkR9uh.js} +6 -6
  40. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-COQwkaAL.js.map → classDiagram-v2-WZHVMYZB-CSPkR9uh.js.map} +1 -1
  41. package/dist/static/assets/{clone-CYu5kjkJ.js → clone-DO2rSUBP.js} +2 -2
  42. package/dist/static/assets/{clone-CYu5kjkJ.js.map → clone-DO2rSUBP.js.map} +1 -1
  43. package/dist/static/assets/{cose-bilkent-S5V4N54A-CSw8pwwN.js → cose-bilkent-S5V4N54A-CyS4z2hF.js} +2 -2
  44. package/dist/static/assets/{cose-bilkent-S5V4N54A-CSw8pwwN.js.map → cose-bilkent-S5V4N54A-CyS4z2hF.js.map} +1 -1
  45. package/dist/static/assets/{dagre-6UL2VRFP-BbGNBMsQ.js → dagre-6UL2VRFP-CvybKTFb.js} +7 -7
  46. package/dist/static/assets/{dagre-6UL2VRFP-BbGNBMsQ.js.map → dagre-6UL2VRFP-CvybKTFb.js.map} +1 -1
  47. package/dist/static/assets/{diagram-PSM6KHXK-CkJTRD5i.js → diagram-PSM6KHXK-Cl2rD6o-.js} +7 -7
  48. package/dist/static/assets/{diagram-PSM6KHXK-CkJTRD5i.js.map → diagram-PSM6KHXK-Cl2rD6o-.js.map} +1 -1
  49. package/dist/static/assets/{diagram-QEK2KX5R-C66826Tr.js → diagram-QEK2KX5R-RCrqu1G0.js} +6 -6
  50. package/dist/static/assets/{diagram-QEK2KX5R-C66826Tr.js.map → diagram-QEK2KX5R-RCrqu1G0.js.map} +1 -1
  51. package/dist/static/assets/{diagram-S2PKOQOG-C75tvMlR.js → diagram-S2PKOQOG-BeHOCxq7.js} +6 -6
  52. package/dist/static/assets/{diagram-S2PKOQOG-C75tvMlR.js.map → diagram-S2PKOQOG-BeHOCxq7.js.map} +1 -1
  53. package/dist/static/assets/{erDiagram-Q2GNP2WA-D42mH9Hf.js → erDiagram-Q2GNP2WA-MdKfm7lU.js} +5 -5
  54. package/dist/static/assets/{erDiagram-Q2GNP2WA-D42mH9Hf.js.map → erDiagram-Q2GNP2WA-MdKfm7lU.js.map} +1 -1
  55. package/dist/static/assets/{flowDiagram-NV44I4VS-DkuR_fBb.js → flowDiagram-NV44I4VS-DNo7ZxVC.js} +6 -6
  56. package/dist/static/assets/{flowDiagram-NV44I4VS-DkuR_fBb.js.map → flowDiagram-NV44I4VS-DNo7ZxVC.js.map} +1 -1
  57. package/dist/static/assets/{ganttDiagram-JELNMOA3-DZSt_dQ9.js → ganttDiagram-JELNMOA3-Bxs02jb2.js} +3 -3
  58. package/dist/static/assets/{ganttDiagram-JELNMOA3-DZSt_dQ9.js.map → ganttDiagram-JELNMOA3-Bxs02jb2.js.map} +1 -1
  59. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-tK78JYdV.js → gitGraphDiagram-NY62KEGX-BJsaVPOp.js} +7 -7
  60. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-tK78JYdV.js.map → gitGraphDiagram-NY62KEGX-BJsaVPOp.js.map} +1 -1
  61. package/dist/static/assets/{graph-Cby4rcD0.js → graph-DBSDya0j.js} +3 -3
  62. package/dist/static/assets/{graph-Cby4rcD0.js.map → graph-DBSDya0j.js.map} +1 -1
  63. package/dist/static/assets/{index-CbQiF1hF.js → index-gn-aSKfG.js} +59 -67
  64. package/dist/static/assets/{index-CbQiF1hF.js.map → index-gn-aSKfG.js.map} +1 -1
  65. package/dist/static/assets/{infoDiagram-WHAUD3N6-3QnrdyHa.js → infoDiagram-WHAUD3N6-D4Hvl0bK.js} +5 -5
  66. package/dist/static/assets/{infoDiagram-WHAUD3N6-3QnrdyHa.js.map → infoDiagram-WHAUD3N6-D4Hvl0bK.js.map} +1 -1
  67. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CvMiUhwC.js → journeyDiagram-XKPGCS4Q-B3YmIoCv.js} +5 -5
  68. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CvMiUhwC.js.map → journeyDiagram-XKPGCS4Q-B3YmIoCv.js.map} +1 -1
  69. package/dist/static/assets/{kanban-definition-3W4ZIXB7-kWGnHjKd.js → kanban-definition-3W4ZIXB7-dGCbR9Ty.js} +3 -3
  70. package/dist/static/assets/{kanban-definition-3W4ZIXB7-kWGnHjKd.js.map → kanban-definition-3W4ZIXB7-dGCbR9Ty.js.map} +1 -1
  71. package/dist/static/assets/{layout-DhLgvMyM.js → layout-D7y0xA6C.js} +5 -5
  72. package/dist/static/assets/{layout-DhLgvMyM.js.map → layout-D7y0xA6C.js.map} +1 -1
  73. package/dist/static/assets/{linear-BPVwP4Z5.js → linear-Cep1oHAS.js} +2 -2
  74. package/dist/static/assets/{linear-BPVwP4Z5.js.map → linear-Cep1oHAS.js.map} +1 -1
  75. package/dist/static/assets/{min-Cw8TUK_f.js → min-DWRXZ2qP.js} +3 -3
  76. package/dist/static/assets/{min-Cw8TUK_f.js.map → min-DWRXZ2qP.js.map} +1 -1
  77. package/dist/static/assets/{mindmap-definition-VGOIOE7T-Rfte1_cw.js → mindmap-definition-VGOIOE7T-FO6xgPgW.js} +4 -4
  78. package/dist/static/assets/{mindmap-definition-VGOIOE7T-Rfte1_cw.js.map → mindmap-definition-VGOIOE7T-FO6xgPgW.js.map} +1 -1
  79. package/dist/static/assets/{pieDiagram-ADFJNKIX-DCp0WpKz.js → pieDiagram-ADFJNKIX-ChJaCst9.js} +7 -7
  80. package/dist/static/assets/{pieDiagram-ADFJNKIX-DCp0WpKz.js.map → pieDiagram-ADFJNKIX-ChJaCst9.js.map} +1 -1
  81. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DVYn8XbP.js → quadrantDiagram-AYHSOK5B-B8KuqHte.js} +3 -3
  82. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DVYn8XbP.js.map → quadrantDiagram-AYHSOK5B-B8KuqHte.js.map} +1 -1
  83. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-OdD8esO6.js → requirementDiagram-UZGBJVZJ-DoJMxEmX.js} +4 -4
  84. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-OdD8esO6.js.map → requirementDiagram-UZGBJVZJ-DoJMxEmX.js.map} +1 -1
  85. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Nb-HdiLl.js → sankeyDiagram-TZEHDZUN-CsLnys5W.js} +2 -2
  86. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Nb-HdiLl.js.map → sankeyDiagram-TZEHDZUN-CsLnys5W.js.map} +1 -1
  87. package/dist/static/assets/{sequenceDiagram-WL72ISMW-DsNKFhn-.js → sequenceDiagram-WL72ISMW-CT4FY3X1.js} +4 -4
  88. package/dist/static/assets/{sequenceDiagram-WL72ISMW-DsNKFhn-.js.map → sequenceDiagram-WL72ISMW-CT4FY3X1.js.map} +1 -1
  89. package/dist/static/assets/{stateDiagram-FKZM4ZOC-DLVD0_56.js → stateDiagram-FKZM4ZOC-B3IXupz6.js} +9 -9
  90. package/dist/static/assets/{stateDiagram-FKZM4ZOC-DLVD0_56.js.map → stateDiagram-FKZM4ZOC-B3IXupz6.js.map} +1 -1
  91. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-zhzpPCLY.js → stateDiagram-v2-4FDKWEC3-C80vDn17.js} +5 -5
  92. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-zhzpPCLY.js.map → stateDiagram-v2-4FDKWEC3-C80vDn17.js.map} +1 -1
  93. package/dist/static/assets/{timeline-definition-IT6M3QCI-0G279y76.js → timeline-definition-IT6M3QCI-Bk2mvjhh.js} +3 -3
  94. package/dist/static/assets/{timeline-definition-IT6M3QCI-0G279y76.js.map → timeline-definition-IT6M3QCI-Bk2mvjhh.js.map} +1 -1
  95. package/dist/static/assets/{treemap-KMMF4GRG-CKoXag7A.js → treemap-KMMF4GRG-mWi2Ai-0.js} +4 -4
  96. package/dist/static/assets/{treemap-KMMF4GRG-CKoXag7A.js.map → treemap-KMMF4GRG-mWi2Ai-0.js.map} +1 -1
  97. package/dist/static/assets/{xychartDiagram-PRI3JC2R-BHQ4qaEg.js → xychartDiagram-PRI3JC2R-B5-7mQpW.js} +3 -3
  98. package/dist/static/assets/{xychartDiagram-PRI3JC2R-BHQ4qaEg.js.map → xychartDiagram-PRI3JC2R-B5-7mQpW.js.map} +1 -1
  99. package/dist/static/index.html +1 -1
  100. package/dist/tools/context-health.js +7 -7
  101. package/dist/utils/task-doc.js +16 -16
  102. package/package.json +2 -2
  103. package/dist/docs/keep-going.zh.md +0 -162
  104. package/dist/docs/showing-by-doing.md +0 -208
  105. package/dist/docs/showing-by-doing.zh.md +0 -177
  106. package/dist/minds/promptdocs.js +0 -263
  107. package/dist/snippets/README.en.md +0 -3
@@ -956,6 +956,16 @@ async function driveDialogStream(dlg, humanPrompt, waitInQue = false, driveOptio
956
956
  driveResult &&
957
957
  !driveResult.interrupted &&
958
958
  driveResult.lastAssistantSayingContent !== null) {
959
+ const suspension = await dlg.getSuspensionStatus();
960
+ if (!suspension.canDrive) {
961
+ log_1.log.info('Skip supplying subdialog response because dialog is still suspended', {
962
+ rootId: dlg.id.rootId,
963
+ selfId: dlg.id.selfId,
964
+ waitingQ4H: suspension.q4h,
965
+ waitingSubdialogs: suspension.subdialogs,
966
+ });
967
+ return;
968
+ }
959
969
  if (subdialogReplyTarget) {
960
970
  await supplySubdialogResponseToSpecificCallerIfPending(dlg, driveResult.lastAssistantSayingContent, subdialogReplyTarget);
961
971
  }
@@ -0,0 +1,3 @@
1
+ You are the commander, in charge of os shell command execution.
2
+
3
+ Be caucious to execute dangerous/destructive commands, ask human confirmation when not sure, but never bother them for daily trivialities.
@@ -0,0 +1,287 @@
1
+ ## Team Definition
2
+
3
+ The team definition lives in `.minds/team.yaml`. This file configures team composition, member roles, LLM provider/model for each member agent, toolsets, and access permissions for all AI agents in this workspace.
4
+
5
+ ### Structure Overview
6
+
7
+ The `team.yaml` file has three main sections:
8
+
9
+ ```yaml
10
+ member_defaults: { ... } # Default settings applied to all members
11
+ default_responder: name # Member who handles unspecified requests
12
+ members: { ... } # Individual member configurations
13
+ ```
14
+
15
+ ### Member Configuration Properties
16
+
17
+ Each member supports these properties:
18
+
19
+ | Property | Type | Description |
20
+ | --------------- | ------- | --------------------------------------------------------------------------- |
21
+ | `name` | string | Display name for the member |
22
+ | `icon` | string | Emoji identifier for UI display |
23
+ | `gofor` | list | Responsibilities and primary duties |
24
+ | `provider` | string | LLM provider key from `llm.yaml` |
25
+ | `model` | string | Model name within the provider |
26
+ | `toolsets` | list | Capability groups: `memory`, `ws_read`, `ws_mod`, `team_memory` |
27
+ | `tools` | list | Specific tool names: `shell_cmd`, `git`, `stop_daemon`, `get_daemon_output` |
28
+ | `streaming` | boolean | Enable/disable streaming mode (required for shell tools) |
29
+ | `read_dirs` | list | Allowed read directories (glob patterns) |
30
+ | `no_read_dirs` | list | Explicitly denied read directories |
31
+ | `write_dirs` | list | Allowed write directories (glob patterns) |
32
+ | `no_write_dirs` | list | Explicitly denied write directories |
33
+
34
+ ## LLM Configuration
35
+
36
+ ### Builtin Defaults
37
+
38
+ Common defaults are already supplied:
39
+
40
+ ```yaml
41
+ providers:
42
+ codex:
43
+ name: Codex (ChatGPT)
44
+ apiType: codex
45
+ baseUrl: https://chatgpt.com/backend-api/
46
+ apiKeyEnvVar: CODEX_HOME
47
+ tech_spec_url: https://platform.openai.com/docs/api-reference/responses
48
+ api_mgmt_url: https://chatgpt.com/
49
+ models:
50
+ gpt-5.2-codex:
51
+ name: GPT-5.2 Codex
52
+ context_length: 272000
53
+ input_length: 272000
54
+ output_length: 32768
55
+ context_window: '272K'
56
+ gpt-5.2:
57
+ name: GPT-5.2
58
+ context_length: 272000
59
+ input_length: 272000
60
+ output_length: 32768
61
+ context_window: '272K'
62
+ minimaxi.com-coding-plan:
63
+ name: MiniMax CN Coding Plan
64
+ apiType: anthropic
65
+ baseUrl: https://api.minimaxi.com/anthropic
66
+ apiKeyEnvVar: MINIMAX_CN_CP_API_KEY
67
+ tech_spec_url: https://platform.minimaxi.com/document/guides
68
+ api_mgmt_url: https://platform.minimaxi.com/
69
+ models:
70
+ MiniMax-M2.1:
71
+ name: MiniMax M2.1
72
+ context_length: 204800
73
+ input_length: 204800
74
+ output_length: 8192
75
+ context_window: '204K'
76
+ MiniMax-M2:
77
+ name: MiniMax M2
78
+ context_length: 204800
79
+ input_length: 204800
80
+ output_length: 8192
81
+ context_window: '204K'
82
+ minimaxi.com:
83
+ name: MiniMax CN
84
+ apiType: anthropic
85
+ baseUrl: https://api.minimaxi.com/anthropic
86
+ apiKeyEnvVar: MINIMAX_CN_API_KEY
87
+ tech_spec_url: https://platform.minimaxi.com/document/guides
88
+ api_mgmt_url: https://platform.minimaxi.com/
89
+ models:
90
+ MiniMax-M2.1:
91
+ name: MiniMax M2.1
92
+ context_length: 204800
93
+ input_length: 204800
94
+ output_length: 8192
95
+ context_window: '204K'
96
+ MiniMax-M2:
97
+ name: MiniMax M2 Stable
98
+ context_length: 204800
99
+ input_length: 204800
100
+ output_length: 8192
101
+ context_window: '204K'
102
+ minimax.io-coding-plan:
103
+ name: MiniMax International Coding Plan
104
+ apiType: anthropic
105
+ baseUrl: https://api.minimax.io/anthropic
106
+ apiKeyEnvVar: MINIMAX_CP_API_KEY
107
+ tech_spec_url: https://platform.minimax.io/docs/api-reference
108
+ api_mgmt_url: https://platform.minimax.io/
109
+ models:
110
+ MiniMax-M2.1:
111
+ name: MiniMax M2.1
112
+ context_length: 204800
113
+ input_length: 204800
114
+ output_length: 8192
115
+ context_window: '204K'
116
+ MiniMax-M2:
117
+ name: MiniMax M2
118
+ context_length: 204800
119
+ input_length: 204800
120
+ output_length: 8192
121
+ context_window: '204K'
122
+ minimax.io:
123
+ name: MiniMax International
124
+ apiType: anthropic
125
+ baseUrl: https://api.minimax.io/anthropic
126
+ apiKeyEnvVar: MINIMAX_API_KEY
127
+ tech_spec_url: https://platform.minimax.io/docs/api-reference
128
+ api_mgmt_url: https://platform.minimax.io/
129
+ models:
130
+ MiniMax-M2.1:
131
+ name: MiniMax M2.1
132
+ context_length: 204800
133
+ input_length: 204800
134
+ output_length: 8192
135
+ context_window: '204K'
136
+ MiniMax-M2:
137
+ name: MiniMax M2 Stable
138
+ context_length: 204800
139
+ input_length: 204800
140
+ output_length: 8192
141
+ context_window: '204K'
142
+ bigmodel:
143
+ name: BigModel
144
+ apiType: anthropic
145
+ baseUrl: https://open.bigmodel.cn/api/anthropic
146
+ apiKeyEnvVar: ZHIPUAI_API_KEY
147
+ tech_spec_url: https://docs.bigmodel.cn/
148
+ api_mgmt_url: https://open.bigmodel.cn/usercenter/apikeys
149
+ models:
150
+ glm-4.7:
151
+ name: GLM-4.7
152
+ context_length: 200000
153
+ input_length: 200000
154
+ output_length: 8192
155
+ context_window: '200K'
156
+ glm-4.6:
157
+ name: GLM-4.6
158
+ context_length: 200000
159
+ input_length: 200000
160
+ output_length: 8192
161
+ context_window: '200K'
162
+ glm-4.5:
163
+ name: GLM-4.5
164
+ context_length: 128000
165
+ input_length: 128000
166
+ output_length: 8192
167
+ context_window: '128K'
168
+ glm-4.5-air:
169
+ name: GLM-4.5-Air
170
+ context_length: 128000
171
+ input_length: 128000
172
+ output_length: 8192
173
+ context_window: '128K'
174
+ ark-coding-plan:
175
+ name: Ark Coding Plan
176
+ apiType: anthropic
177
+ baseUrl: https://ark.cn-beijing.volces.com/api/coding
178
+ apiKeyEnvVar: ARK_API_KEY
179
+ tech_spec_url: https://api.volcengine.com/api-docs/view?serviceCode=ark&version=2024-01-01
180
+ api_mgmt_url: https://console.volcengine.com/ark
181
+ models:
182
+ doubao-seed-code-preview-latest:
183
+ name: Doubao Seed Code Preview
184
+ context_length: 256000
185
+ input_length: 256000
186
+ output_length: 8192
187
+ context_window: '256K'
188
+ optimization: 专为Agentic Coding任务优化
189
+ ark:
190
+ name: Ark
191
+ apiType: openai
192
+ baseUrl: https://ark.cn-beijing.volces.com/api/v3
193
+ apiKeyEnvVar: ARK_API_KEY
194
+ tech_spec_url: https://api.volcengine.com/api-docs/view?serviceCode=ark&version=2024-01-01
195
+ api_mgmt_url: https://console.volcengine.com/ark
196
+ models:
197
+ deepseek-v3-2-251201:
198
+ name: DeepSeek-V3.2
199
+ context_length: 128000
200
+ input_length: 96000
201
+ output_length: 32000
202
+ context_window: '128K'
203
+ doubao-seed-code-preview-251028:
204
+ name: Doubao Seed Code Preview 251028
205
+ context_length: 256000
206
+ input_length: 256000
207
+ output_length: 8192
208
+ context_window: '256K'
209
+ doubao-seed-1-6-251015:
210
+ name: Doubao Seed 1.6
211
+ context_length: 256000
212
+ input_length: 256000
213
+ output_length: 8192
214
+ context_window: '256K'
215
+ doubao-seed-1-6-thinking-250715:
216
+ name: Doubao Seed 1.6 Thinking
217
+ context_length: 256000
218
+ input_length: 256000
219
+ output_length: 8192
220
+ context_window: '256K'
221
+ doubao-seed-1-6-lite-251015:
222
+ name: Doubao Seed 1.6 Lite
223
+ context_length: 32000
224
+ input_length: 32000
225
+ output_length: 8192
226
+ context_window: '32K'
227
+ kimi-k2-250905:
228
+ name: Kimi K2
229
+ context_length: 200000
230
+ input_length: 200000
231
+ output_length: 8192
232
+ context_window: '200K (约20万汉字)'
233
+ deepseek-v3-1-terminus:
234
+ name: DeepSeek V3.1 Terminus
235
+ context_length: 131072
236
+ input_length: 131072
237
+ output_length: 8192
238
+ context_window: '128K'
239
+ anthropic:
240
+ name: Anthropic
241
+ apiType: anthropic
242
+ baseUrl: https://api.anthropic.com
243
+ apiKeyEnvVar: ANTHROPIC_API_KEY
244
+ tech_spec_url: https://docs.anthropic.com/en/docs
245
+ api_mgmt_url: https://console.anthropic.com/
246
+ models:
247
+ claude-opus-4.5:
248
+ name: Claude Opus 4.5
249
+ context_length: 200000
250
+ input_length: 200000
251
+ output_length: 8192
252
+ context_window: '200K'
253
+ claude-sonnet-4.5:
254
+ name: Claude Sonnet 4.5
255
+ context_length: 200000
256
+ input_length: 200000
257
+ output_length: 8192
258
+ context_window: '200K'
259
+ claude-haiku-4.5:
260
+ name: Claude Haiku 4.5
261
+ context_length: 200000
262
+ input_length: 200000
263
+ output_length: 8192
264
+ context_window: '200K'
265
+ openai:
266
+ name: OpenAI
267
+ apiType: openai
268
+ baseUrl: https://api.openai.com/v1
269
+ apiKeyEnvVar: OPENAI_API_KEY
270
+ tech_spec_url: https://platform.openai.com/docs
271
+ api_mgmt_url: https://platform.openai.com/api-keys
272
+ models:
273
+ gpt-5.2:
274
+ name: GPT-5.2
275
+ context_length: 272000
276
+ input_length: 272000
277
+ output_length: 32768
278
+ context_window: '272K'
279
+ gpt-5.2-codex:
280
+ name: GPT-5.2 Codex
281
+ context_length: 272000
282
+ input_length: 272000
283
+ output_length: 32768
284
+ context_window: '272K'
285
+ ```
286
+
287
+ More custom LLM providers can be configured in `.minds/llm.yaml` with the same format as above.
@@ -0,0 +1,7 @@
1
+ You are dijiang, the hundun (chaos) itself. You are invoked because the human user yet has no idea/plan of what to do with current workspace. Your mythical incarnations is the pun of your job: transform yourself into many avatars then disappear.
2
+
3
+ Your job is to guide the human user through the initial product definition, goal/constraint setting, and team definition for this workspace.
4
+
5
+ You collect/clarify the user's mission/vision for what to build and maintain, then suggest an optimal agent team definition with social division of labor among individual agents as team members, then land the definition into `.minds/team.yaml` and `.minds/team/*/*.md`
6
+
7
+ The team will serve as the workforce to sustain current workspace as a live produce under continuous DevOps.
@@ -58,24 +58,28 @@ function buildSystemPrompt(input) {
58
58
  '- 对队友诉请而言,收到回贴即表示该轮调用已结束;不存在“对方仍在后台继续执行同一诉请”的默认语义。要继续必须显式再发一轮诉请(通常沿用同一 \\`!tellaskSession <slug>\\`)。',
59
59
  '- 只有在存在明确 pending tellask 时,才可声明“等待回贴/等待结果”;否则必须执行下一动作(直接诉请或本地执行)。',
60
60
  '- 能由队友诉请完成的执行性工作,禁止转交 @human 做“转发员”;当你写“让 @X 执行 Y”时,必须在同一回复内直接发出 \\`!?@X ...\\`。',
61
+ '- 当你处于队友诉请触发的支线且需要澄清时,必须发回问诉请 \\`!?@tellasker\\`(禁止携带 \\`!tellaskSession\\`)。例如在 @fullstack 诉请你的支线中,禁止写 \\`!?@fullstack !tellaskSession ...\\` 回问;正确写法是 \\`!?@tellasker\\`。',
61
62
  ].join('\n');
62
63
  const teammatePhaseContractEn = [
63
64
  '- Teammate Tellasks MUST follow four phases: “initiate -> wait -> judge -> continue”. If the objective is not met, immediately send the next Tellask round.',
64
65
  '- For teammate Tellasks, a delivered response closes that call round; there is no default “still running in background” state for the same Tellask. To continue, emit a new Tellask explicitly (usually reusing the same \\`!tellaskSession <slug>\\`).',
65
66
  '- You may claim “waiting for reply/result” only when a concrete pending Tellask exists; otherwise execute the next action now (direct Tellask or local action).',
66
67
  '- Do not use @human as a relay for executable teammate work. If you write “ask @X to do Y”, emit \\`!?@X ...\\` in the same response.',
68
+ '- When you are in a teammate-triggered sideline and need clarification, you MUST issue TellaskBack via \\`!?@tellasker\\` (and it must NOT carry \\`!tellaskSession\\`). For example, in a sideline tellasked by @fullstack, do NOT ask back with \\`!?@fullstack !tellaskSession ...\\`; the correct form is \\`!?@tellasker\\`.',
67
69
  ].join('\n');
68
70
  const collaborationProtocolZh = [
69
71
  '- \\`!?@...\\` 仅用于诉请队友/@self/@human,不是函数工具调用通道。',
70
72
  '- 函数工具只能通过原生 function-calling 调用;不要把工具名写进 \\`!?@...\\` 诉请头。',
71
- '- 对队友诉请(非 \\`!?@self\\`)默认带 \\`!tellaskSession <slug>\\` 并在同一会话续推;仅在确认一次性诉请足够时才可省略,且需说明理由。',
73
+ '- 对队友诉请默认带 \\`!tellaskSession <slug>\\` 并在同一会话续推(适用于非 \\`!?@self\\` 且非 \\`!?@tellasker\\` 的目标);仅在确认一次性诉请足够时才可省略,且需说明理由。',
74
+ '- 例外优先级(强制):\\`!?@tellasker\\` 是回问诉请专用目标,不属于“队友长线诉请默认规则”;因此既不适用默认 \\`!tellaskSession\\`,也禁止携带 \\`!tellaskSession\\`。',
72
75
  '- 队友诉请阶段协议(强制):',
73
76
  teammatePhaseContractZh,
74
77
  ].join('\n');
75
78
  const collaborationProtocolEn = [
76
79
  '- \\`!?@...\\` is only for tellasking teammates/@self/@human; it is not a function-tool invocation channel.',
77
80
  '- Function tools must be invoked through native function-calling only; do not put tool names in \\`!?@...\\` tellask headlines.',
78
- '- For teammate tellasks (non-\\`!?@self\\`), default to \\`!tellaskSession <slug>\\` and continue in that same session; omit only for a justified one-shot call.',
81
+ '- For teammate tellasks, default to \\`!tellaskSession <slug>\\` and continue in that same session (applies to targets other than \\`!?@self\\` and \\`!?@tellasker\\`); omit only for a justified one-shot call.',
82
+ '- Mandatory exception precedence: \\`!?@tellasker\\` is TellaskBack-only and outside the teammate-session default; it therefore does not use the default \\`!tellaskSession\\` and must never carry \\`!tellaskSession\\`.',
79
83
  '- Teammate Tellask phase contract (mandatory):',
80
84
  teammatePhaseContractEn,
81
85
  ].join('\n');
@@ -743,80 +743,37 @@ async function handleGetDialogHierarchy(res, rootId) {
743
743
  lastModified: rootLatest?.lastModified || rootMeta.createdAt,
744
744
  runState: rootLatest?.runState,
745
745
  };
746
- // Enumerate subdialogs under this root
747
- const rootPath = persistence_1.DialogPersistence.getRootDialogPath(new dialog_1.DialogID(rootId), foundStatus);
748
- const subPath = path.join(rootPath, 'subdialogs');
749
746
  let subdialogs = [];
750
- // Recursively find all subdialog directories (handles nested paths like c1/78/4c3d759a)
751
- async function findSubdialogDirs(dir, baseRelative = '') {
752
- const results = [];
753
- try {
754
- const entries = await promises_1.default.readdir(dir, { withFileTypes: true });
755
- for (const entry of entries) {
756
- if (entry.isDirectory()) {
757
- const fullPath = path.join(dir, entry.name);
758
- const dialogYamlPath = path.join(fullPath, 'dialog.yaml');
759
- const entryRelative = baseRelative ? path.join(baseRelative, entry.name) : entry.name;
760
- try {
761
- await promises_1.default.access(dialogYamlPath);
762
- // This directory contains dialog.yaml - it's a subdialog
763
- // Push the FULL relative path (e.g., "5a/e2/4c424f27" not just "5a")
764
- results.push(entryRelative);
765
- }
766
- catch {
767
- // No dialog.yaml - recurse into this directory
768
- const nested = await findSubdialogDirs(fullPath, entryRelative);
769
- results.push(...nested);
770
- }
771
- }
772
- }
773
- }
774
- catch (error) {
775
- if (typeof error === 'object' &&
776
- error !== null &&
777
- 'code' in error &&
778
- error.code === 'ENOENT') {
779
- // No subdialogs directory - return empty
780
- }
781
- else {
782
- throw error;
783
- }
784
- }
785
- return results;
786
- }
787
- try {
788
- const subIds = await findSubdialogDirs(subPath);
789
- for (const subId of subIds) {
790
- const meta = await persistence_1.DialogPersistence.loadDialogMetadata(new dialog_1.DialogID(subId, rootId), foundStatus);
791
- if (meta) {
792
- // Load latest.yaml for subdialog currentCourse and lastModified timestamp
793
- const subLatest = await persistence_1.DialogPersistence.loadDialogLatest(new dialog_1.DialogID(subId, rootId), foundStatus);
794
- subdialogs.push({
795
- selfId: meta.id,
796
- rootId: rootId, // For subdialogs, rootId is the supdialog's ID
797
- agentId: meta.agentId,
798
- taskDocPath: meta.taskDocPath,
799
- status: foundStatus,
800
- currentCourse: subLatest?.currentCourse || 1,
801
- createdAt: meta.createdAt,
802
- lastModified: subLatest?.lastModified || meta.createdAt,
803
- runState: subLatest?.runState,
804
- tellaskSession: meta.tellaskSession,
805
- assignmentFromSup: meta.assignmentFromSup,
806
- });
807
- }
808
- }
809
- }
810
- catch (error) {
811
- if (typeof error === 'object' &&
812
- error !== null &&
813
- 'code' in error &&
814
- error.code === 'ENOENT') {
815
- subdialogs = [];
747
+ const dialogIds = await persistence_1.DialogPersistence.listAllDialogIds(foundStatus);
748
+ for (const dialogId of dialogIds) {
749
+ if (dialogId.rootId !== rootId || dialogId.selfId === rootId) {
750
+ continue;
816
751
  }
817
- else {
818
- throw error;
752
+ const meta = await persistence_1.DialogPersistence.loadDialogMetadata(dialogId, foundStatus);
753
+ if (!meta) {
754
+ continue;
819
755
  }
756
+ const subLatest = await persistence_1.DialogPersistence.loadDialogLatest(dialogId, foundStatus);
757
+ const derivedSupdialogId = meta.assignmentFromSup?.callerDialogId &&
758
+ meta.assignmentFromSup.callerDialogId.trim() !== ''
759
+ ? meta.assignmentFromSup.callerDialogId
760
+ : typeof meta.supdialogId === 'string' && meta.supdialogId.trim() !== ''
761
+ ? meta.supdialogId
762
+ : undefined;
763
+ subdialogs.push({
764
+ selfId: meta.id,
765
+ rootId,
766
+ supdialogId: derivedSupdialogId,
767
+ agentId: meta.agentId,
768
+ taskDocPath: meta.taskDocPath,
769
+ status: foundStatus,
770
+ currentCourse: subLatest?.currentCourse || 1,
771
+ createdAt: meta.createdAt,
772
+ lastModified: subLatest?.lastModified || meta.createdAt,
773
+ runState: subLatest?.runState,
774
+ tellaskSession: meta.tellaskSession,
775
+ assignmentFromSup: meta.assignmentFromSup,
776
+ });
820
777
  }
821
778
  respondJson(res, 200, {
822
779
  success: true,
@@ -636,6 +636,10 @@ async function handleDisplayDialog(ws, packet) {
636
636
  : defaultDisableDiligencePush;
637
637
  const effectiveDisableDiligencePush = persistedDisableDiligencePush;
638
638
  rootDialog.disableDiligencePush = effectiveDisableDiligencePush;
639
+ const derivedSupdialogId = metadata.assignmentFromSup?.callerDialogId &&
640
+ metadata.assignmentFromSup.callerDialogId.trim() !== ''
641
+ ? metadata.assignmentFromSup.callerDialogId
642
+ : metadata.supdialogId;
639
643
  const dialogReadyResponse = {
640
644
  type: 'dialog_ready',
641
645
  dialog: {
@@ -644,7 +648,7 @@ async function handleDisplayDialog(ws, packet) {
644
648
  },
645
649
  agentId: metadata.agentId,
646
650
  taskDocPath: metadata.taskDocPath,
647
- supdialogId: metadata.supdialogId,
651
+ supdialogId: derivedSupdialogId,
648
652
  tellaskSession: metadata.tellaskSession,
649
653
  assignmentFromSup: metadata.assignmentFromSup,
650
654
  disableDiligencePush: effectiveDisableDiligencePush,
@@ -36,11 +36,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.getShowingByDoingCacheStatus = getShowingByDoingCacheStatus;
37
37
  exports.scheduleShowingByDoingForNewDialog = scheduleShowingByDoingForNewDialog;
38
38
  const dialog_run_state_1 = require("./dialog-run-state");
39
- const client_1 = require("./llm/client");
40
39
  const driver_1 = require("./llm/driver");
41
- const registry_1 = require("./llm/gen/registry");
42
40
  const log_1 = require("./log");
43
- const load_1 = require("./minds/load");
44
41
  const runtime_language_1 = require("./shared/runtime-language");
45
42
  const id_1 = require("./shared/utils/id");
46
43
  const inter_dialog_format_1 = require("./shared/utils/inter-dialog-format");
@@ -558,29 +555,11 @@ async function generatePrimingNoteViaMainlineAgent(options) {
558
555
  const { dlg, snapshotCmd, snapshotText, fbrResponses, shellPolicy, fbrEffort } = options;
559
556
  const language = (0, runtime_language_1.getWorkLanguage)();
560
557
  try {
561
- const minds = await (0, load_1.loadAgentMinds)(dlg.agentId, dlg);
562
- const team = minds.team;
563
- const agent = minds.agent;
564
- const systemPrompt = minds.systemPrompt;
565
- const provider = agent.provider ?? team.memberDefaults.provider;
566
- const model = agent.model ?? team.memberDefaults.model;
567
- if (!provider || !model) {
568
- throw new Error(`Missing provider/model for agent '${dlg.agentId}'`);
569
- }
570
- const llmCfg = await client_1.LlmConfig.load();
571
- const providerCfg = llmCfg.getProvider(provider);
572
- if (!providerCfg) {
573
- throw new Error(`Provider configuration not found: '${provider}'`);
574
- }
575
- const llmGen = (0, registry_1.getLlmGenerator)(providerCfg.apiType);
576
- if (!llmGen) {
577
- throw new Error(`LLM generator not found for apiType='${providerCfg.apiType}'`);
578
- }
579
- // Force non-streaming for this synthetic summary generation.
580
- const agentForGen = Object.create(agent);
581
- agentForGen.streaming = false;
582
- // Intentionally pass zero tools: we want a pure text synthesis and must avoid accidental
583
- // `clear_mind` / `change_mind` calls during dialog creation.
558
+ // Use the normal dialog driver (streaming/non-streaming selection, retries, etc.) with a
559
+ // toolless `@self` subdialog, so this behavior matches the runtime driver with no local drift.
560
+ //
561
+ // Tool-less is important here: the Agent Priming synthesis must be a pure text transform of
562
+ // snapshot + drafts, and must not run tools (including any mind-edit tools).
584
563
  const prompt = formatPrimingSynthesisPrompt({
585
564
  language,
586
565
  snapshotCmd,
@@ -589,17 +568,35 @@ async function generatePrimingNoteViaMainlineAgent(options) {
589
568
  fbrDrafts: fbrResponses,
590
569
  shellPolicy,
591
570
  });
592
- const ctxMsgs = [{ type: 'environment_msg', role: 'user', content: prompt }];
593
- const result = await llmGen.genMoreMessages(providerCfg, agentForGen, systemPrompt, [], ctxMsgs, dlg.activeGenSeq, undefined);
594
- const saying = result.messages
595
- .filter((m) => m.type === 'saying_msg')
596
- .map((m) => m.content)
597
- .join('\n')
598
- .trim();
599
- if (saying)
571
+ const tellaskHead = '@self (agent priming synthesis)';
572
+ const tellaskBody = prompt;
573
+ const sub = await dlg.createSubDialog(dlg.agentId, tellaskHead, tellaskBody, {
574
+ originMemberId: dlg.agentId,
575
+ callerDialogId: dlg.id.selfId,
576
+ callId: (0, id_1.generateShortId)(),
577
+ collectiveTargets: [dlg.agentId],
578
+ });
579
+ const initPrompt = (0, inter_dialog_format_1.formatAssignmentFromSupdialog)({
580
+ fromAgentId: dlg.agentId,
581
+ toAgentId: sub.agentId,
582
+ tellaskHead,
583
+ tellaskBody,
584
+ language,
585
+ collectiveTargets: [dlg.agentId],
586
+ });
587
+ await (0, driver_1.driveDialogStream)(sub, { content: initPrompt, msgId: (0, id_1.generateShortId)(), grammar: 'markdown' }, true);
588
+ const saying = extractLastAssistantSaying(sub.msgs).trim();
589
+ if (saying) {
600
590
  return saying;
591
+ }
601
592
  }
602
593
  catch (err) {
594
+ const message = err instanceof Error ? err.message : String(err);
595
+ // Do not silently fall back for known severe configuration errors (e.g. Codex requires
596
+ // streaming=true).
597
+ if (message.includes('apiType=codex requires streaming=true')) {
598
+ throw err;
599
+ }
603
600
  log_1.log.warn('Failed to generate Agent Priming note via mainline agent (best-effort)', err, {
604
601
  dialogId: dlg.id.valueOf(),
605
602
  });
@@ -1,4 +1,4 @@
1
- import { aV as isObjectLike, br as baseGetTag, aE as isArray, aT as Symbol$1, bs as arrayLikeKeys, bt as baseKeys, aD as isArrayLike, bu as memoize, bv as isArguments, bw as MapCache, bm as eq, bx as Uint8Array, aW as getTag, a$ as isBuffer, b2 as Stack, by as isTypedArray, aZ as isObject, bz as isLength, bp as isIndex, aF as identity, bn as baseFor, bA as Set } from "./index-CbQiF1hF.js";
1
+ import { aV as isObjectLike, br as baseGetTag, aE as isArray, aT as Symbol$1, bs as arrayLikeKeys, bt as baseKeys, aD as isArrayLike, bu as memoize, bv as isArguments, bw as MapCache, bm as eq, bx as Uint8Array, aW as getTag, a$ as isBuffer, b2 as Stack, by as isTypedArray, aZ as isObject, bz as isLength, bp as isIndex, aF as identity, bn as baseFor, bA as Set } from "./index-gn-aSKfG.js";
2
2
  var symbolTag$1 = "[object Symbol]";
3
3
  function isSymbol(value) {
4
4
  return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$1;
@@ -658,4 +658,4 @@ export {
658
658
  hasIn as x,
659
659
  toString as y
660
660
  };
661
- //# sourceMappingURL=_baseUniq-B6S2Szf-.js.map
661
+ //# sourceMappingURL=_baseUniq-DucuKHj3.js.map