dominds 1.2.7 → 1.3.1

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 (104) hide show
  1. package/dist/docs/context-health.md +17 -5
  2. package/dist/llm/defaults.yaml +9 -0
  3. package/dist/minds/system-prompt-parts.js +4 -4
  4. package/dist/server/api-routes.js +577 -80
  5. package/dist/shared/i18n/driver-messages.js +14 -12
  6. package/dist/static/assets/{_basePickBy-BMCtwrV7.js → _basePickBy-CmziIRM9.js} +3 -3
  7. package/dist/static/assets/{_basePickBy-BMCtwrV7.js.map → _basePickBy-CmziIRM9.js.map} +1 -1
  8. package/dist/static/assets/{_baseUniq-BuyCgJiA.js → _baseUniq-CgDZxcD0.js} +2 -2
  9. package/dist/static/assets/{_baseUniq-BuyCgJiA.js.map → _baseUniq-CgDZxcD0.js.map} +1 -1
  10. package/dist/static/assets/{arc-BDuN8lwA.js → arc-Df9rjNNk.js} +2 -2
  11. package/dist/static/assets/{arc-BDuN8lwA.js.map → arc-Df9rjNNk.js.map} +1 -1
  12. package/dist/static/assets/{architectureDiagram-VXUJARFQ-C-ekqGAD.js → architectureDiagram-VXUJARFQ-Bif8topC.js} +7 -7
  13. package/dist/static/assets/{architectureDiagram-VXUJARFQ-C-ekqGAD.js.map → architectureDiagram-VXUJARFQ-Bif8topC.js.map} +1 -1
  14. package/dist/static/assets/{blockDiagram-VD42YOAC-CgQiNuuQ.js → blockDiagram-VD42YOAC-D9Egoflr.js} +7 -7
  15. package/dist/static/assets/{blockDiagram-VD42YOAC-CgQiNuuQ.js.map → blockDiagram-VD42YOAC-D9Egoflr.js.map} +1 -1
  16. package/dist/static/assets/{c4Diagram-YG6GDRKO-DONC39q-.js → c4Diagram-YG6GDRKO-DBf1NeBf.js} +3 -3
  17. package/dist/static/assets/{c4Diagram-YG6GDRKO-DONC39q-.js.map → c4Diagram-YG6GDRKO-DBf1NeBf.js.map} +1 -1
  18. package/dist/static/assets/{channel-CJTFwXIG.js → channel-Dc34yAJl.js} +2 -2
  19. package/dist/static/assets/{channel-CJTFwXIG.js.map → channel-Dc34yAJl.js.map} +1 -1
  20. package/dist/static/assets/{chunk-4BX2VUAB-NaIy4uLJ.js → chunk-4BX2VUAB-B65G1dJI.js} +2 -2
  21. package/dist/static/assets/{chunk-4BX2VUAB-NaIy4uLJ.js.map → chunk-4BX2VUAB-B65G1dJI.js.map} +1 -1
  22. package/dist/static/assets/{chunk-55IACEB6-JUKI_Ayx.js → chunk-55IACEB6-CSDEOGl2.js} +2 -2
  23. package/dist/static/assets/{chunk-55IACEB6-JUKI_Ayx.js.map → chunk-55IACEB6-CSDEOGl2.js.map} +1 -1
  24. package/dist/static/assets/{chunk-B4BG7PRW-dIswFJDn.js → chunk-B4BG7PRW-Cb6W3QWJ.js} +5 -5
  25. package/dist/static/assets/{chunk-B4BG7PRW-dIswFJDn.js.map → chunk-B4BG7PRW-Cb6W3QWJ.js.map} +1 -1
  26. package/dist/static/assets/{chunk-DI55MBZ5-DU2b_N30.js → chunk-DI55MBZ5-ZAJWeVWH.js} +4 -4
  27. package/dist/static/assets/{chunk-DI55MBZ5-DU2b_N30.js.map → chunk-DI55MBZ5-ZAJWeVWH.js.map} +1 -1
  28. package/dist/static/assets/{chunk-FMBD7UC4-BgExcScw.js → chunk-FMBD7UC4-DiwRlImb.js} +2 -2
  29. package/dist/static/assets/{chunk-FMBD7UC4-BgExcScw.js.map → chunk-FMBD7UC4-DiwRlImb.js.map} +1 -1
  30. package/dist/static/assets/{chunk-QN33PNHL-bitxyqh7.js → chunk-QN33PNHL-wilj7fb5.js} +2 -2
  31. package/dist/static/assets/{chunk-QN33PNHL-bitxyqh7.js.map → chunk-QN33PNHL-wilj7fb5.js.map} +1 -1
  32. package/dist/static/assets/{chunk-QZHKN3VN-Cor8u7DT.js → chunk-QZHKN3VN-DGmviJfR.js} +2 -2
  33. package/dist/static/assets/{chunk-QZHKN3VN-Cor8u7DT.js.map → chunk-QZHKN3VN-DGmviJfR.js.map} +1 -1
  34. package/dist/static/assets/{chunk-TZMSLE5B-Aceoxav_.js → chunk-TZMSLE5B-Nm5wTXa_.js} +2 -2
  35. package/dist/static/assets/{chunk-TZMSLE5B-Aceoxav_.js.map → chunk-TZMSLE5B-Nm5wTXa_.js.map} +1 -1
  36. package/dist/static/assets/{classDiagram-2ON5EDUG-D1Q6a8Hg.js → classDiagram-2ON5EDUG-BvUbXD6H.js} +6 -6
  37. package/dist/static/assets/{classDiagram-2ON5EDUG-D1Q6a8Hg.js.map → classDiagram-2ON5EDUG-BvUbXD6H.js.map} +1 -1
  38. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-D1Q6a8Hg.js → classDiagram-v2-WZHVMYZB-BvUbXD6H.js} +6 -6
  39. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-D1Q6a8Hg.js.map → classDiagram-v2-WZHVMYZB-BvUbXD6H.js.map} +1 -1
  40. package/dist/static/assets/{clone-MlWbv1V0.js → clone-0VLS7GaA.js} +2 -2
  41. package/dist/static/assets/{clone-MlWbv1V0.js.map → clone-0VLS7GaA.js.map} +1 -1
  42. package/dist/static/assets/{cose-bilkent-S5V4N54A-DWPCXSrn.js → cose-bilkent-S5V4N54A-anaPs-75.js} +2 -2
  43. package/dist/static/assets/{cose-bilkent-S5V4N54A-DWPCXSrn.js.map → cose-bilkent-S5V4N54A-anaPs-75.js.map} +1 -1
  44. package/dist/static/assets/{dagre-6UL2VRFP-C8ptQ9V3.js → dagre-6UL2VRFP-YwdsZ11r.js} +7 -7
  45. package/dist/static/assets/{dagre-6UL2VRFP-C8ptQ9V3.js.map → dagre-6UL2VRFP-YwdsZ11r.js.map} +1 -1
  46. package/dist/static/assets/{diagram-PSM6KHXK-Bgf1FqkE.js → diagram-PSM6KHXK-5KQCf3h2.js} +8 -8
  47. package/dist/static/assets/{diagram-PSM6KHXK-Bgf1FqkE.js.map → diagram-PSM6KHXK-5KQCf3h2.js.map} +1 -1
  48. package/dist/static/assets/{diagram-QEK2KX5R-BZ5xzofU.js → diagram-QEK2KX5R-Mf24XxZL.js} +7 -7
  49. package/dist/static/assets/{diagram-QEK2KX5R-BZ5xzofU.js.map → diagram-QEK2KX5R-Mf24XxZL.js.map} +1 -1
  50. package/dist/static/assets/{diagram-S2PKOQOG-Dwp47T9I.js → diagram-S2PKOQOG-DyQjD4D5.js} +7 -7
  51. package/dist/static/assets/{diagram-S2PKOQOG-Dwp47T9I.js.map → diagram-S2PKOQOG-DyQjD4D5.js.map} +1 -1
  52. package/dist/static/assets/{erDiagram-Q2GNP2WA-Cx4weIHl.js → erDiagram-Q2GNP2WA-CEzTKw1u.js} +5 -5
  53. package/dist/static/assets/{erDiagram-Q2GNP2WA-Cx4weIHl.js.map → erDiagram-Q2GNP2WA-CEzTKw1u.js.map} +1 -1
  54. package/dist/static/assets/{flowDiagram-NV44I4VS-vNUuIeRk.js → flowDiagram-NV44I4VS-DT821XSz.js} +6 -6
  55. package/dist/static/assets/{flowDiagram-NV44I4VS-vNUuIeRk.js.map → flowDiagram-NV44I4VS-DT821XSz.js.map} +1 -1
  56. package/dist/static/assets/{ganttDiagram-JELNMOA3-BEfozJAr.js → ganttDiagram-JELNMOA3-DlmeVsGg.js} +3 -3
  57. package/dist/static/assets/{ganttDiagram-JELNMOA3-BEfozJAr.js.map → ganttDiagram-JELNMOA3-DlmeVsGg.js.map} +1 -1
  58. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-eHxwc3d9.js → gitGraphDiagram-V2S2FVAM-yAfyBG_d.js} +8 -8
  59. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-eHxwc3d9.js.map → gitGraphDiagram-V2S2FVAM-yAfyBG_d.js.map} +1 -1
  60. package/dist/static/assets/{graph-C6a6uAok.js → graph-BYv8vyWe.js} +3 -3
  61. package/dist/static/assets/{graph-C6a6uAok.js.map → graph-BYv8vyWe.js.map} +1 -1
  62. package/dist/static/assets/{index-D3TQbAKh.js → index-DMbwqOm6.js} +140 -61
  63. package/dist/static/assets/{index-D3TQbAKh.js.map → index-DMbwqOm6.js.map} +1 -1
  64. package/dist/static/assets/{infoDiagram-HS3SLOUP-CX0NiId3.js → infoDiagram-HS3SLOUP-DaadramQ.js} +6 -6
  65. package/dist/static/assets/{infoDiagram-HS3SLOUP-CX0NiId3.js.map → infoDiagram-HS3SLOUP-DaadramQ.js.map} +1 -1
  66. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-C1IepPZ-.js → journeyDiagram-XKPGCS4Q-ftN8hxu3.js} +5 -5
  67. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-C1IepPZ-.js.map → journeyDiagram-XKPGCS4Q-ftN8hxu3.js.map} +1 -1
  68. package/dist/static/assets/{kanban-definition-3W4ZIXB7-uMNX4Z1W.js → kanban-definition-3W4ZIXB7-BIXETQ-C.js} +3 -3
  69. package/dist/static/assets/{kanban-definition-3W4ZIXB7-uMNX4Z1W.js.map → kanban-definition-3W4ZIXB7-BIXETQ-C.js.map} +1 -1
  70. package/dist/static/assets/{layout-CpE3kk5z.js → layout-OTbrj0Ye.js} +5 -5
  71. package/dist/static/assets/{layout-CpE3kk5z.js.map → layout-OTbrj0Ye.js.map} +1 -1
  72. package/dist/static/assets/{linear-DV8laXr9.js → linear-CVfOC669.js} +2 -2
  73. package/dist/static/assets/{linear-DV8laXr9.js.map → linear-CVfOC669.js.map} +1 -1
  74. package/dist/static/assets/{mindmap-definition-VGOIOE7T-CKjgVM9S.js → mindmap-definition-VGOIOE7T-D2zv5uI9.js} +4 -4
  75. package/dist/static/assets/{mindmap-definition-VGOIOE7T-CKjgVM9S.js.map → mindmap-definition-VGOIOE7T-D2zv5uI9.js.map} +1 -1
  76. package/dist/static/assets/{pieDiagram-ADFJNKIX-BBonlNyT.js → pieDiagram-ADFJNKIX-DaUXTsv7.js} +8 -8
  77. package/dist/static/assets/{pieDiagram-ADFJNKIX-BBonlNyT.js.map → pieDiagram-ADFJNKIX-DaUXTsv7.js.map} +1 -1
  78. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BTI8HbBu.js → quadrantDiagram-AYHSOK5B-B7O2wPX9.js} +3 -3
  79. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BTI8HbBu.js.map → quadrantDiagram-AYHSOK5B-B7O2wPX9.js.map} +1 -1
  80. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-ZtSr9Q5R.js → requirementDiagram-UZGBJVZJ-DpauVPY1.js} +4 -4
  81. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-ZtSr9Q5R.js.map → requirementDiagram-UZGBJVZJ-DpauVPY1.js.map} +1 -1
  82. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DibLVGzg.js → sankeyDiagram-TZEHDZUN-B3Hbfvad.js} +2 -2
  83. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DibLVGzg.js.map → sankeyDiagram-TZEHDZUN-B3Hbfvad.js.map} +1 -1
  84. package/dist/static/assets/{sequenceDiagram-WL72ISMW-qXatfzVt.js → sequenceDiagram-WL72ISMW-KdbWByWT.js} +4 -4
  85. package/dist/static/assets/{sequenceDiagram-WL72ISMW-qXatfzVt.js.map → sequenceDiagram-WL72ISMW-KdbWByWT.js.map} +1 -1
  86. package/dist/static/assets/{stateDiagram-FKZM4ZOC-7fgxCQHo.js → stateDiagram-FKZM4ZOC-yDOCVezC.js} +9 -9
  87. package/dist/static/assets/{stateDiagram-FKZM4ZOC-7fgxCQHo.js.map → stateDiagram-FKZM4ZOC-yDOCVezC.js.map} +1 -1
  88. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-DcWlOAnF.js → stateDiagram-v2-4FDKWEC3-CpCJhvQO.js} +5 -5
  89. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-DcWlOAnF.js.map → stateDiagram-v2-4FDKWEC3-CpCJhvQO.js.map} +1 -1
  90. package/dist/static/assets/{timeline-definition-IT6M3QCI-iX2MRdpY.js → timeline-definition-IT6M3QCI-CHxuEjhV.js} +3 -3
  91. package/dist/static/assets/{timeline-definition-IT6M3QCI-iX2MRdpY.js.map → timeline-definition-IT6M3QCI-CHxuEjhV.js.map} +1 -1
  92. package/dist/static/assets/{treemap-GDKQZRPO-AVRnyXu1.js → treemap-GDKQZRPO-Bsqu3wIy.js} +5 -5
  93. package/dist/static/assets/{treemap-GDKQZRPO-AVRnyXu1.js.map → treemap-GDKQZRPO-Bsqu3wIy.js.map} +1 -1
  94. package/dist/static/assets/{xychartDiagram-PRI3JC2R-DVYEo5aJ.js → xychartDiagram-PRI3JC2R-RZy33lFF.js} +3 -3
  95. package/dist/static/assets/{xychartDiagram-PRI3JC2R-DVYEo5aJ.js.map → xychartDiagram-PRI3JC2R-RZy33lFF.js.map} +1 -1
  96. package/dist/static/index.html +1 -1
  97. package/dist/tools/ctrl.js +3 -3
  98. package/dist/tools/prompts/control/en/index.md +5 -4
  99. package/dist/tools/prompts/control/en/principles.md +11 -7
  100. package/dist/tools/prompts/control/en/tools.md +19 -0
  101. package/dist/tools/prompts/control/zh/index.md +5 -4
  102. package/dist/tools/prompts/control/zh/principles.md +11 -7
  103. package/dist/tools/prompts/control/zh/tools.md +19 -0
  104. package/package.json +3 -3
@@ -116,15 +116,27 @@ Levels are derived from the two thresholds:
116
116
  ### Continuation package (“接续包”)
117
117
 
118
118
  The remediation workflow centers around a _continuation package_ (a scannable, actionable bundle of
119
- context that survives a new course).
119
+ context that survives a new course). When the agent is still clear-headed, this should preferably be
120
+ kept as **one structured reminder**. But when the agent is already muddled in caution/critical,
121
+ multiple rough reminders are acceptable as a bridge.
120
122
 
121
- Recommended structure (multi-line; scale by task size; focus on details not covered in Taskdoc):
123
+ Recommended structure (multi-line but compact; focus on details not covered in Taskdoc):
122
124
 
123
125
  - First actionable step
124
126
  - Key pointers (files/symbols/search terms)
125
127
  - Run/verify (commands, ports, env vars)
126
128
  - Easy-to-lose ephemeral details (paths/ids/urls/sample inputs)
127
129
 
130
+ Rules:
131
+
132
+ - Keep normal reminders concise and few.
133
+ - When preparing a new course, prefer compressing into one continuation-package reminder if the
134
+ agent is still clear-headed.
135
+ - If the agent is already muddled, prioritize preserving volatile information even via multiple rough
136
+ reminders; in the next course, the first action should be to review, merge, and delete redundancy.
137
+ - Do not duplicate Taskdoc content except for a short bridge when strictly needed.
138
+ - Do not paste long raw logs/tool outputs into the continuation package.
139
+
128
140
  ### Caution (yellow)
129
141
 
130
142
  When `level === 'caution'`, the driver auto-inserts a **role=user** guidance prompt into the _next_
@@ -138,7 +150,7 @@ Current behavior:
138
150
  generations; configurable per model).
139
151
  - Each inserted prompt requires the agent to **curate reminders** (at least one call):
140
152
  - `update_reminder` (preferred) / `add_reminder`
141
- - Maintain a continuation-package draft inside reminders
153
+ - Prefer a structured continuation-package reminder; if already muddled, rough multi-reminder carry-over is acceptable
142
154
  - Then `clear_mind` when it becomes scannable/actionable
143
155
 
144
156
  ### Critical (red)
@@ -147,7 +159,7 @@ When `level === 'critical'`, the driver enters a **countdown remediation** (max
147
159
 
148
160
  - On each turn, the driver records a **role=user prompt** (persisted as a user message) that is
149
161
  visible in the UI as a user prompt. This prompt tells the agent to:
150
- - curate reminders via `update_reminder` / `add_reminder` (best-effort continuation package), and
162
+ - curate reminders via `update_reminder` / `add_reminder`, preferably into a continuation-package reminder but allowing rough multi-reminder carry-over when already muddled, and
151
163
  - then call `clear_mind` to start a new course.
152
164
  - The prompt includes a countdown: after **N** turns the system will automatically clear.
153
165
  - When the countdown reaches 0, the driver **automatically calls** `clear_mind` (with empty args; no
@@ -198,7 +210,7 @@ Note (zh UI copy):
198
210
  - `caution`: driver inserts a persisted role=user prompt (UI-visible user instruction).
199
211
  On entering `caution` it inserts once; while still `caution` it reinserts on a cadence (default: every
200
212
  10 generations; configurable per model). Each time, the agent must call at least one of
201
- `update_reminder` / `add_reminder` and maintain a continuation-package draft, then `clear_mind` when ready.
213
+ `update_reminder` / `add_reminder` and preserve a continuation package. A single structured reminder is preferred, but multiple rough reminders are acceptable when already muddled; in the new course the agent should reconcile them first, then `clear_mind` when ready.
202
214
  - `critical`: driver runs a countdown remediation (max 5 turns) using **recorded role=user prompts**.
203
215
  Each prompt includes a countdown and instructs reminder curation + `clear_mind`. When the countdown
204
216
  reaches 0, the driver auto-executes `clear_mind` and starts a new course (no Q4H, no suspension).
@@ -68,6 +68,15 @@ providers:
68
68
  min: 1
69
69
  description: Provider-specific max tokens override.
70
70
  models:
71
+ gpt-5.4:
72
+ name: GPT-5.4
73
+ optimal_max_tokens: 200000
74
+ # Caution remediation reinjection cadence in generation turns (default: 10).
75
+ caution_remediation_cadence_generations: 10
76
+ context_length: 272000
77
+ input_length: 272000
78
+ output_length: 32768
79
+ context_window: '272K'
71
80
  gpt-5.3-codex:
72
81
  name: GPT-5.3 Codex
73
82
  optimal_max_tokens: 200000
@@ -144,7 +144,7 @@ function getMemoryPromptCopy(ctx) {
144
144
  progressLine: '- 其中 `progress` 是全队共享公告牌:用于“阶段性进度快照”(关键决策/当前状态/下一步),不是流水账。',
145
145
  injectedTaskdocLine: '- 重要:差遣牒内容会被系统以内联形式注入到上下文中(本轮生成视角下即为最新;注入内容不包括全局约束)。需要回顾时请直接基于上下文里的差遣牒内容回顾与决策,不要试图用通用文件工具读取 `*.tsk/` 下的文件(会被拒绝)。',
146
146
  constraintsLine: '- 约定:`constraints` 只写任务特有的硬要求,不得写入系统提示/工具文档里已明确且由系统强制执行的通用规则(例如 `*.tsk/` 封装禁止通用文件工具)。一经发现重复,必须删除并告知用户。',
147
- remindersLine: '- 提醒项(即编号提醒,工作集):当前对话的高频工作记录/关键细节(偏私有,不作为全队公告);保持少量(常见 1–3 条),优先 `update_reminder` 压缩/合并,不再需要就 `delete_reminder`。',
147
+ remindersLine: '- 提醒项(即编号提醒,工作集):当前对话的高频工作记录/关键细节(偏私有,不作为全队公告);默认保持少量(常见 1–3 条),优先 `update_reminder` 压缩/合并,不再需要就 `delete_reminder`。准备 `clear_mind` 开启新一程对话时,最好整理成“结构化接续包提醒项”;其中只保留差遣牒未覆盖、但恢复工作容易丢的细节(如第一步、关键定位、运行/验证信息、临时 ids/路径)。但若你已进入吃紧/告急、头脑不够清楚,允许先保留多条粗略提醒项把信息带过桥,新一程开始后第一时间复核、合并、删除冗余。',
148
148
  teamMemoryLine: '- 团队记忆:稳定的团队约定/工程规约(跨任务共享)。',
149
149
  personalMemoryLine: '- 个人记忆:稳定的个人习惯/偏好与职责域知识;记忆会在每次生成时自动注入上下文,应保持少量且准确(关键文档/代码的精确路径 + 最小必要事实)。不要记录具体任务状态。',
150
150
  subdialogDutyLine: `你当前处于支线对话:此处不允许 \`change_mind\`。当你判断需要更新差遣牒(尤其是 progress 公告牌)时,请在合适时机直接诉请差遣牒维护人 \`@${ctx.taskdocMaintainerId}\` 执行更新,并给出你已合并好的“新全文/替换稿”(用于替换对应章节全文)。不要声称已更新,除非看到回执。`,
@@ -155,7 +155,7 @@ function getMemoryPromptCopy(ctx) {
155
155
  subdialogWorkflowLine: `工作流:先做事 → 再提炼(\`update_reminder\`;必要时整理差遣牒更新提案并诉请 \`@${ctx.taskdocMaintainerId}\` 合并写入)→ 然后 \`clear_mind\` 清空噪音。`,
156
156
  mainlineWorkflowLine: '工作流:先做事 → 再提炼(`update_reminder` + `change_mind(progress)`)→ 然后 `clear_mind` 清空噪音。',
157
157
  contextHealthLine: '系统会自动监控并提示上下文健康度:进入"吃紧"或"告急"状态时会插入用户可见提示。当收到此类提示时,立刻停止继续大实现/大阅读;先提炼,再 clear。',
158
- taskdocLogLine: '不要把长日志/大段 tool output 直接塞进差遣牒;差遣牒只写结论+下一步;细节只保留必要摘录放提醒项。',
158
+ taskdocLogLine: '不要把长日志/大段 tool output 直接塞进差遣牒;差遣牒只写结论+下一步;提醒项也只留可扫读摘录。若头脑清楚,接续包提醒项应尽量结构化、便于快速恢复;若已吃紧/告急,允许先保留多条粗略提醒项求稳,但进入新一程后必须尽快收敛。',
159
159
  };
160
160
  }
161
161
  return {
@@ -167,7 +167,7 @@ function getMemoryPromptCopy(ctx) {
167
167
  progressLine: '- Taskdoc `progress` is the team’s shared bulletin board: distilled milestone snapshots (key decisions/current status/next steps), not raw logs.',
168
168
  injectedTaskdocLine: '- Important: the Taskdoc content is injected inline into the context (the latest as of this generation; injected content excludes global constraints). Review the injected Taskdoc instead of trying to read files under `*.tsk/` via general file tools (they will be rejected).',
169
169
  constraintsLine: '- Convention: Taskdoc `constraints` must contain task-specific requirements only; do not include global, system-enforced rules already stated in system prompt/tool docs (e.g. `.tsk/` encapsulation bans general file tools). If duplication is found, you MUST remove it and notify the user.',
170
- remindersLine: '- Reminders (i.e. numbered reminders, working set): your high-frequency per-dialog worklog + critical details (not a team bulletin board); keep it small (often 1–3 items), prefer `update_reminder` to compress/merge; delete when obsolete.',
170
+ remindersLine: '- Reminders (i.e. numbered reminders, working set): your high-frequency per-dialog worklog + critical details (not a team bulletin board); keep it small by default (often 1–3 items), prefer `update_reminder` to compress/merge, and delete when obsolete. When preparing `clear_mind` to start a new course, prefer a structured continuation-package reminder that keeps only details not already covered by Taskdoc but easy to lose during resume (first step, key pointers, run/verify info, volatile ids/paths). But if you are already in caution/critical and not clear-headed enough, you may carry multiple rough reminders across the course boundary first, then review/merge/delete them at the start of the new course.',
171
171
  teamMemoryLine: '- Team memory: stable shared conventions (cross-task).',
172
172
  personalMemoryLine: '- Personal memory: stable personal habits/preferences and responsibility-scope knowledge. Memory is automatically injected into context on each generation: keep it small and accurate (exact key doc/code paths + minimal key facts); do not store per-task state.',
173
173
  subdialogDutyLine: `You are currently in a subdialog: \`change_mind\` is not allowed here. When Taskdoc should be updated (especially the shared progress bulletin board), tellask the Taskdoc maintainer \`@${ctx.taskdocMaintainerId}\` with a fully merged replacement draft (full-section replacement). Do not claim it is updated until you see a receipt.`,
@@ -178,7 +178,7 @@ function getMemoryPromptCopy(ctx) {
178
178
  subdialogWorkflowLine: `Workflow: do work → distill (\`update_reminder\`; when Taskdoc needs updates, draft a merged replacement and ask \`@${ctx.taskdocMaintainerId}\`) → then \`clear_mind\` to drop noise.`,
179
179
  mainlineWorkflowLine: 'Workflow: do work → distill (`update_reminder` + `change_mind(progress)`) → then `clear_mind` to drop noise.',
180
180
  contextHealthLine: 'System will automatically monitor and alert on context health: yellow (caution/"Caution") or red (critical/"Critical") will insert a user-visible prompt. When you receive such alerts, immediately stop large implementations/reads; distill first, then clear.',
181
- taskdocLogLine: 'Do not paste long logs/tool outputs into Taskdoc; Taskdoc should record decisions + next steps; keep only essential excerpts in reminders.',
181
+ taskdocLogLine: 'Do not paste long logs/tool outputs into Taskdoc; Taskdoc should record decisions + next steps; reminders should also keep only scannable excerpts. When clear-headed, keep continuation-package reminders structured and fast to resume from; when already in caution/critical, multiple rough reminders are acceptable as a bridge, but you must quickly reconcile them in the new course.',
182
182
  };
183
183
  }
184
184
  function buildMemorySystemPrompt(ctx) {