dominds 1.2.4 → 1.2.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 (144) hide show
  1. package/dist/agent-priming.js +2051 -0
  2. package/dist/apps/app-lock-file.js +228 -0
  3. package/dist/apps/assigned-port.js +124 -0
  4. package/dist/apps/enabled-apps.js +472 -7
  5. package/dist/apps/manifest.js +37 -0
  6. package/dist/apps/override-paths.js +0 -5
  7. package/dist/apps/problems.js +43 -0
  8. package/dist/apps/resolution-file.js +370 -0
  9. package/dist/apps/runtime.js +5 -17
  10. package/dist/cli/disable.js +10 -6
  11. package/dist/cli/enable.js +21 -19
  12. package/dist/cli/install.js +40 -18
  13. package/dist/cli/uninstall.js +6 -6
  14. package/dist/cli/update.js +38 -13
  15. package/dist/docs/app-constitution.md +85 -18
  16. package/dist/docs/app-constitution.zh.md +86 -21
  17. package/dist/docs/dialog-system.md +1 -1
  18. package/dist/docs/dialog-system.zh.md +1 -1
  19. package/dist/docs/dominds-agent-priming.md +218 -0
  20. package/dist/docs/dominds-agent-priming.zh.md +196 -0
  21. package/dist/docs/drive-logic-context-refactor-plan.zh.md +338 -0
  22. package/dist/docs/keep-going.md +176 -0
  23. package/dist/docs/keep-going.zh.md +162 -0
  24. package/dist/docs/showing-by-doing.md +208 -0
  25. package/dist/docs/showing-by-doing.zh.md +177 -0
  26. package/dist/docs/team-mgmt-toolset.md +482 -0
  27. package/dist/docs/team-mgmt-toolset.zh.md +426 -0
  28. package/dist/llm/defaults.yaml +1 -1
  29. package/dist/llm/driver.js +4093 -0
  30. package/dist/minds/promptdocs.js +263 -0
  31. package/dist/server/api-routes.js +333 -0
  32. package/dist/server/prompts-routes.js +545 -0
  33. package/dist/server/server-core.js +4 -0
  34. package/dist/shared/team-mgmt-manual.js +120 -0
  35. package/dist/shared/types/prompts.js +2 -0
  36. package/dist/shared/types/tellask.js +8 -0
  37. package/dist/showing-by-doing.js +1091 -0
  38. package/dist/snippets/README.en.md +3 -0
  39. package/dist/snippets/README.md +4 -0
  40. package/dist/static/assets/{_basePickBy-CupsMxbi.js → _basePickBy-5YF_9hQW.js} +3 -3
  41. package/dist/static/assets/{_basePickBy-CupsMxbi.js.map → _basePickBy-5YF_9hQW.js.map} +1 -1
  42. package/dist/static/assets/{_baseUniq-BDcVFZR0.js → _baseUniq-jhU9AUhp.js} +2 -2
  43. package/dist/static/assets/{_baseUniq-BDcVFZR0.js.map → _baseUniq-jhU9AUhp.js.map} +1 -1
  44. package/dist/static/assets/{arc-E_Wq3ZBA.js → arc-CxfO0spY.js} +2 -2
  45. package/dist/static/assets/{arc-E_Wq3ZBA.js.map → arc-CxfO0spY.js.map} +1 -1
  46. package/dist/static/assets/{architectureDiagram-VXUJARFQ-522n5Xxv.js → architectureDiagram-VXUJARFQ-DdfdIFQM.js} +7 -7
  47. package/dist/static/assets/{architectureDiagram-VXUJARFQ-522n5Xxv.js.map → architectureDiagram-VXUJARFQ-DdfdIFQM.js.map} +1 -1
  48. package/dist/static/assets/{blockDiagram-VD42YOAC-BLN9Y7a8.js → blockDiagram-VD42YOAC-Cwqz2taZ.js} +7 -7
  49. package/dist/static/assets/{blockDiagram-VD42YOAC-BLN9Y7a8.js.map → blockDiagram-VD42YOAC-Cwqz2taZ.js.map} +1 -1
  50. package/dist/static/assets/{c4Diagram-YG6GDRKO-BwhzzgYq.js → c4Diagram-YG6GDRKO-B4tMGdJJ.js} +3 -3
  51. package/dist/static/assets/{c4Diagram-YG6GDRKO-BwhzzgYq.js.map → c4Diagram-YG6GDRKO-B4tMGdJJ.js.map} +1 -1
  52. package/dist/static/assets/{channel-fLVkm5NV.js → channel-vcTCKrpR.js} +2 -2
  53. package/dist/static/assets/{channel-fLVkm5NV.js.map → channel-vcTCKrpR.js.map} +1 -1
  54. package/dist/static/assets/{chunk-4BX2VUAB-1D1VasqQ.js → chunk-4BX2VUAB-9jaRyZiz.js} +2 -2
  55. package/dist/static/assets/{chunk-4BX2VUAB-1D1VasqQ.js.map → chunk-4BX2VUAB-9jaRyZiz.js.map} +1 -1
  56. package/dist/static/assets/{chunk-55IACEB6-CdrmLoJU.js → chunk-55IACEB6-CqFPCghN.js} +2 -2
  57. package/dist/static/assets/{chunk-55IACEB6-CdrmLoJU.js.map → chunk-55IACEB6-CqFPCghN.js.map} +1 -1
  58. package/dist/static/assets/{chunk-B4BG7PRW-BT6zSZ9C.js → chunk-B4BG7PRW-BVwJVEzB.js} +5 -5
  59. package/dist/static/assets/{chunk-B4BG7PRW-BT6zSZ9C.js.map → chunk-B4BG7PRW-BVwJVEzB.js.map} +1 -1
  60. package/dist/static/assets/{chunk-DI55MBZ5-D2pGqzLg.js → chunk-DI55MBZ5-i9DDRLYs.js} +4 -4
  61. package/dist/static/assets/{chunk-DI55MBZ5-D2pGqzLg.js.map → chunk-DI55MBZ5-i9DDRLYs.js.map} +1 -1
  62. package/dist/static/assets/{chunk-FMBD7UC4-Dly3juUJ.js → chunk-FMBD7UC4-DtB9tnhF.js} +2 -2
  63. package/dist/static/assets/{chunk-FMBD7UC4-Dly3juUJ.js.map → chunk-FMBD7UC4-DtB9tnhF.js.map} +1 -1
  64. package/dist/static/assets/{chunk-QN33PNHL-BgEarQt4.js → chunk-QN33PNHL-Bzbixp1o.js} +2 -2
  65. package/dist/static/assets/{chunk-QN33PNHL-BgEarQt4.js.map → chunk-QN33PNHL-Bzbixp1o.js.map} +1 -1
  66. package/dist/static/assets/{chunk-QZHKN3VN-DedC1KyN.js → chunk-QZHKN3VN-CI-C5uv0.js} +2 -2
  67. package/dist/static/assets/{chunk-QZHKN3VN-DedC1KyN.js.map → chunk-QZHKN3VN-CI-C5uv0.js.map} +1 -1
  68. package/dist/static/assets/{chunk-TZMSLE5B-BEqexZui.js → chunk-TZMSLE5B-CANsFBw_.js} +2 -2
  69. package/dist/static/assets/{chunk-TZMSLE5B-BEqexZui.js.map → chunk-TZMSLE5B-CANsFBw_.js.map} +1 -1
  70. package/dist/static/assets/{classDiagram-2ON5EDUG-BrreExL9.js → classDiagram-2ON5EDUG-D00eOaDx.js} +6 -6
  71. package/dist/static/assets/{classDiagram-2ON5EDUG-BrreExL9.js.map → classDiagram-2ON5EDUG-D00eOaDx.js.map} +1 -1
  72. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BrreExL9.js → classDiagram-v2-WZHVMYZB-D00eOaDx.js} +6 -6
  73. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BrreExL9.js.map → classDiagram-v2-WZHVMYZB-D00eOaDx.js.map} +1 -1
  74. package/dist/static/assets/{clone-BbCzdf37.js → clone-BvOc2yso.js} +2 -2
  75. package/dist/static/assets/{clone-BbCzdf37.js.map → clone-BvOc2yso.js.map} +1 -1
  76. package/dist/static/assets/{cose-bilkent-S5V4N54A-EkgySXec.js → cose-bilkent-S5V4N54A-DSYAdAyx.js} +2 -2
  77. package/dist/static/assets/{cose-bilkent-S5V4N54A-EkgySXec.js.map → cose-bilkent-S5V4N54A-DSYAdAyx.js.map} +1 -1
  78. package/dist/static/assets/{dagre-6UL2VRFP-zF1TxR2b.js → dagre-6UL2VRFP-B7J4YtNM.js} +7 -7
  79. package/dist/static/assets/{dagre-6UL2VRFP-zF1TxR2b.js.map → dagre-6UL2VRFP-B7J4YtNM.js.map} +1 -1
  80. package/dist/static/assets/{diagram-PSM6KHXK-YfLDy7xM.js → diagram-PSM6KHXK-htuDE0_8.js} +8 -8
  81. package/dist/static/assets/{diagram-PSM6KHXK-YfLDy7xM.js.map → diagram-PSM6KHXK-htuDE0_8.js.map} +1 -1
  82. package/dist/static/assets/{diagram-QEK2KX5R-DT2Sl1-I.js → diagram-QEK2KX5R-g1GZbARf.js} +7 -7
  83. package/dist/static/assets/{diagram-QEK2KX5R-DT2Sl1-I.js.map → diagram-QEK2KX5R-g1GZbARf.js.map} +1 -1
  84. package/dist/static/assets/{diagram-S2PKOQOG-DuYxXn1P.js → diagram-S2PKOQOG-DYvwVsZm.js} +7 -7
  85. package/dist/static/assets/{diagram-S2PKOQOG-DuYxXn1P.js.map → diagram-S2PKOQOG-DYvwVsZm.js.map} +1 -1
  86. package/dist/static/assets/{erDiagram-Q2GNP2WA-SIbEeh3n.js → erDiagram-Q2GNP2WA-CuCw1fng.js} +5 -5
  87. package/dist/static/assets/{erDiagram-Q2GNP2WA-SIbEeh3n.js.map → erDiagram-Q2GNP2WA-CuCw1fng.js.map} +1 -1
  88. package/dist/static/assets/{flowDiagram-NV44I4VS-CLNKs4id.js → flowDiagram-NV44I4VS-B7e0sjm_.js} +6 -6
  89. package/dist/static/assets/{flowDiagram-NV44I4VS-CLNKs4id.js.map → flowDiagram-NV44I4VS-B7e0sjm_.js.map} +1 -1
  90. package/dist/static/assets/{ganttDiagram-JELNMOA3-tFaNfSzJ.js → ganttDiagram-JELNMOA3-BZRuh3DE.js} +3 -3
  91. package/dist/static/assets/{ganttDiagram-JELNMOA3-tFaNfSzJ.js.map → ganttDiagram-JELNMOA3-BZRuh3DE.js.map} +1 -1
  92. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-DqO129yJ.js → gitGraphDiagram-V2S2FVAM-B8lN7T9U.js} +8 -8
  93. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-DqO129yJ.js.map → gitGraphDiagram-V2S2FVAM-B8lN7T9U.js.map} +1 -1
  94. package/dist/static/assets/{graph-CcuoS4cG.js → graph-CVmBZVHx.js} +3 -3
  95. package/dist/static/assets/{graph-CcuoS4cG.js.map → graph-CVmBZVHx.js.map} +1 -1
  96. package/dist/static/assets/{index-C6rZcGnP.js → index-BMt8OZ6H.js} +442 -102
  97. package/dist/static/assets/index-BMt8OZ6H.js.map +1 -0
  98. package/dist/static/assets/{index-CTkAdCTv.css → index-BiNcBn_U.css} +52 -0
  99. package/dist/static/assets/{infoDiagram-HS3SLOUP-DJx03jNn.js → infoDiagram-HS3SLOUP-Bs7DwY4Q.js} +6 -6
  100. package/dist/static/assets/{infoDiagram-HS3SLOUP-DJx03jNn.js.map → infoDiagram-HS3SLOUP-Bs7DwY4Q.js.map} +1 -1
  101. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CKkr3KnL.js → journeyDiagram-XKPGCS4Q-7zHAqy6Q.js} +5 -5
  102. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-CKkr3KnL.js.map → journeyDiagram-XKPGCS4Q-7zHAqy6Q.js.map} +1 -1
  103. package/dist/static/assets/{kanban-definition-3W4ZIXB7-CbSqCiEs.js → kanban-definition-3W4ZIXB7-DJaBY2Ug.js} +3 -3
  104. package/dist/static/assets/{kanban-definition-3W4ZIXB7-CbSqCiEs.js.map → kanban-definition-3W4ZIXB7-DJaBY2Ug.js.map} +1 -1
  105. package/dist/static/assets/{layout-D7-FKbaT.js → layout-DCgFs2G2.js} +5 -5
  106. package/dist/static/assets/{layout-D7-FKbaT.js.map → layout-DCgFs2G2.js.map} +1 -1
  107. package/dist/static/assets/{linear-BuDfNBon.js → linear-3qLxTIu4.js} +2 -2
  108. package/dist/static/assets/{linear-BuDfNBon.js.map → linear-3qLxTIu4.js.map} +1 -1
  109. package/dist/static/assets/{mindmap-definition-VGOIOE7T-BDwLe04b.js → mindmap-definition-VGOIOE7T-D8LVSYNe.js} +4 -4
  110. package/dist/static/assets/{mindmap-definition-VGOIOE7T-BDwLe04b.js.map → mindmap-definition-VGOIOE7T-D8LVSYNe.js.map} +1 -1
  111. package/dist/static/assets/{pieDiagram-ADFJNKIX-BoZQsSD6.js → pieDiagram-ADFJNKIX-K7J0sf-_.js} +8 -8
  112. package/dist/static/assets/{pieDiagram-ADFJNKIX-BoZQsSD6.js.map → pieDiagram-ADFJNKIX-K7J0sf-_.js.map} +1 -1
  113. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DCwmFmS8.js → quadrantDiagram-AYHSOK5B-BjOUsjH1.js} +3 -3
  114. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DCwmFmS8.js.map → quadrantDiagram-AYHSOK5B-BjOUsjH1.js.map} +1 -1
  115. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-b103XjYN.js → requirementDiagram-UZGBJVZJ-B2Q3tMos.js} +4 -4
  116. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-b103XjYN.js.map → requirementDiagram-UZGBJVZJ-B2Q3tMos.js.map} +1 -1
  117. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Dpa0Lvc2.js → sankeyDiagram-TZEHDZUN-BG5wvCeZ.js} +2 -2
  118. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Dpa0Lvc2.js.map → sankeyDiagram-TZEHDZUN-BG5wvCeZ.js.map} +1 -1
  119. package/dist/static/assets/{sequenceDiagram-WL72ISMW-DmmctZww.js → sequenceDiagram-WL72ISMW-BuLOLu3-.js} +4 -4
  120. package/dist/static/assets/{sequenceDiagram-WL72ISMW-DmmctZww.js.map → sequenceDiagram-WL72ISMW-BuLOLu3-.js.map} +1 -1
  121. package/dist/static/assets/{stateDiagram-FKZM4ZOC-rzlWUEGW.js → stateDiagram-FKZM4ZOC-CWCqsmNr.js} +9 -9
  122. package/dist/static/assets/{stateDiagram-FKZM4ZOC-rzlWUEGW.js.map → stateDiagram-FKZM4ZOC-CWCqsmNr.js.map} +1 -1
  123. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-kNazIMQu.js → stateDiagram-v2-4FDKWEC3-DYbP1xu4.js} +5 -5
  124. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-kNazIMQu.js.map → stateDiagram-v2-4FDKWEC3-DYbP1xu4.js.map} +1 -1
  125. package/dist/static/assets/{timeline-definition-IT6M3QCI-8Jf8mEk1.js → timeline-definition-IT6M3QCI-DaPtomWv.js} +3 -3
  126. package/dist/static/assets/{timeline-definition-IT6M3QCI-8Jf8mEk1.js.map → timeline-definition-IT6M3QCI-DaPtomWv.js.map} +1 -1
  127. package/dist/static/assets/{treemap-GDKQZRPO-pzngdrcL.js → treemap-GDKQZRPO-cEZjfkb6.js} +5 -5
  128. package/dist/static/assets/{treemap-GDKQZRPO-pzngdrcL.js.map → treemap-GDKQZRPO-cEZjfkb6.js.map} +1 -1
  129. package/dist/static/assets/{xychartDiagram-PRI3JC2R-BfBVgrdy.js → xychartDiagram-PRI3JC2R-7zI4Kz0F.js} +3 -3
  130. package/dist/static/assets/{xychartDiagram-PRI3JC2R-BfBVgrdy.js.map → xychartDiagram-PRI3JC2R-7zI4Kz0F.js.map} +1 -1
  131. package/dist/static/index.html +2 -2
  132. package/dist/team.js +52 -48
  133. package/dist/tellask.js +439 -0
  134. package/dist/tools/context-health.js +177 -0
  135. package/dist/tools/diag.js +583 -0
  136. package/dist/tools/fs.js +194 -68
  137. package/dist/tools/prompts/memory/en/principles.md +13 -5
  138. package/dist/tools/prompts/memory/en/tools.md +11 -36
  139. package/dist/tools/prompts/memory/zh/principles.md +18 -8
  140. package/dist/tools/prompts/memory/zh/tools.md +11 -36
  141. package/dist/tools/team-mgmt.js +3487 -0
  142. package/dist/utils/task-doc.js +236 -0
  143. package/package.json +1 -1
  144. package/dist/static/assets/index-C6rZcGnP.js.map +0 -1
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.contextHealthReminderOwner = void 0;
4
+ const driver_messages_1 = require("../shared/i18n/driver-messages");
5
+ const runtime_language_1 = require("../shared/runtime-language");
6
+ function isRecord(value) {
7
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
8
+ }
9
+ // Reminder meta is persisted as JSON and may come from disk; runtime validation is required.
10
+ function isContextHealthReminderMeta(value) {
11
+ if (!isRecord(value))
12
+ return false;
13
+ if (value['kind'] !== 'critical_countdown')
14
+ return false;
15
+ const remaining = value['remainingGenTurns'];
16
+ return typeof remaining === 'number' && Number.isFinite(remaining);
17
+ }
18
+ function clampRemainingGenTurns(n) {
19
+ const floored = Math.floor(n);
20
+ if (floored < 0)
21
+ return 0;
22
+ if (floored > 5)
23
+ return 5;
24
+ return floored;
25
+ }
26
+ function isLastContextHealthFromCurrentGeneration(dlg) {
27
+ const active = dlg.activeGenSeqOrUndefined;
28
+ const snapSeq = dlg.getLastContextHealthGenseq();
29
+ return active !== undefined && snapSeq !== undefined && active === snapSeq;
30
+ }
31
+ function formatContextHealthOwnerHeader(args) {
32
+ const { language, indexHuman, snapshot } = args;
33
+ const remainingGenTurns = typeof args.remainingGenTurns === 'number' ? args.remainingGenTurns : undefined;
34
+ if (language === 'zh') {
35
+ const lines = [
36
+ '📋',
37
+ `【系统托管提醒项 #${indexHuman}:上下文健康 / owner=context_health】`,
38
+ '- 自动更新/自动消失;不要手工 delete_reminder',
39
+ ];
40
+ if (!snapshot) {
41
+ lines.push('- 状态:未知(尚未获取上下文统计)');
42
+ lines.push('- 优先动作:change_mind(progress) → clear_mind');
43
+ return lines.join('\n');
44
+ }
45
+ if (snapshot.kind !== 'available') {
46
+ lines.push('- 状态:未知(token 统计不可用)');
47
+ lines.push('- 优先动作:change_mind(progress) → clear_mind');
48
+ return lines.join('\n');
49
+ }
50
+ switch (snapshot.level) {
51
+ case 'healthy': {
52
+ lines.push('- 状态:🟢 绿(健康)');
53
+ return lines.join('\n');
54
+ }
55
+ case 'caution': {
56
+ lines.push('- 状态:🟡 黄(警告)');
57
+ lines.push('- 优先动作:change_mind(progress) → clear_mind');
58
+ return lines.join('\n');
59
+ }
60
+ case 'critical': {
61
+ lines.push('- 状态:🔴 红(危险)');
62
+ if (remainingGenTurns !== undefined) {
63
+ lines.push(`- 倒数:剩余 ${remainingGenTurns} 次生成机会;到 0 系统将自动开启新一轮以保持稳定性`);
64
+ }
65
+ lines.push('- 立刻:change_mind(progress) → clear_mind');
66
+ return lines.join('\n');
67
+ }
68
+ default: {
69
+ const _exhaustive = snapshot.level;
70
+ return _exhaustive;
71
+ }
72
+ }
73
+ }
74
+ const lines = [
75
+ '📋',
76
+ `【System-managed reminder item #${indexHuman}: context health / owner=context_health】`,
77
+ '- Auto-updating/auto-dropping; do not manually delete_reminder',
78
+ ];
79
+ if (!snapshot) {
80
+ lines.push('- Status: unknown (no context stats yet)');
81
+ lines.push('- Priority: change_mind(progress) → clear_mind');
82
+ return lines.join('\n');
83
+ }
84
+ if (snapshot.kind !== 'available') {
85
+ lines.push('- Status: unknown (token usage unavailable)');
86
+ lines.push('- Priority: change_mind(progress) → clear_mind');
87
+ return lines.join('\n');
88
+ }
89
+ switch (snapshot.level) {
90
+ case 'healthy': {
91
+ lines.push('- Status: 🟢 green (healthy)');
92
+ return lines.join('\n');
93
+ }
94
+ case 'caution': {
95
+ lines.push('- Status: 🟡 yellow (caution)');
96
+ lines.push('- Priority: change_mind(progress) → clear_mind');
97
+ return lines.join('\n');
98
+ }
99
+ case 'critical': {
100
+ lines.push('- Status: 🔴 red (critical)');
101
+ if (remainingGenTurns !== undefined) {
102
+ lines.push(`- Countdown: ${remainingGenTurns} generations left; at 0 auto-start new round`);
103
+ }
104
+ lines.push('- Must: change_mind(progress) → clear_mind');
105
+ return lines.join('\n');
106
+ }
107
+ default: {
108
+ const _exhaustive = snapshot.level;
109
+ return _exhaustive;
110
+ }
111
+ }
112
+ }
113
+ exports.contextHealthReminderOwner = {
114
+ name: 'context_health',
115
+ async updateReminder(dlg, reminder) {
116
+ if (reminder.owner !== exports.contextHealthReminderOwner) {
117
+ return { treatment: 'keep' };
118
+ }
119
+ const snapshot = dlg.getLastContextHealth();
120
+ if (!snapshot) {
121
+ return { treatment: 'keep' };
122
+ }
123
+ if (snapshot.kind !== 'available') {
124
+ return {
125
+ treatment: 'update',
126
+ updatedContent: (0, driver_messages_1.formatContextHealthReminderText)((0, runtime_language_1.getWorkLanguage)(), {
127
+ kind: 'usage_unknown',
128
+ }),
129
+ updatedMeta: undefined,
130
+ };
131
+ }
132
+ if (snapshot.level === 'healthy') {
133
+ return { treatment: 'drop' };
134
+ }
135
+ if (snapshot.level === 'caution') {
136
+ return {
137
+ treatment: 'update',
138
+ updatedContent: (0, driver_messages_1.formatContextHealthReminderText)((0, runtime_language_1.getWorkLanguage)(), {
139
+ kind: 'over_optimal',
140
+ }),
141
+ updatedMeta: undefined,
142
+ };
143
+ }
144
+ const meta = isContextHealthReminderMeta(reminder.meta) ? reminder.meta : undefined;
145
+ const initialized = meta !== undefined;
146
+ let remainingGenTurns = meta ? clampRemainingGenTurns(meta.remainingGenTurns) : 5;
147
+ if (initialized && isLastContextHealthFromCurrentGeneration(dlg) && remainingGenTurns > 0) {
148
+ remainingGenTurns -= 1;
149
+ }
150
+ const content = (0, driver_messages_1.formatContextHealthReminderText)((0, runtime_language_1.getWorkLanguage)(), {
151
+ kind: 'over_critical',
152
+ remainingGenTurns,
153
+ });
154
+ return {
155
+ treatment: 'update',
156
+ updatedContent: content,
157
+ updatedMeta: { kind: 'critical_countdown', remainingGenTurns },
158
+ };
159
+ },
160
+ async renderReminder(dlg, reminder, index) {
161
+ const snapshot = dlg.getLastContextHealth();
162
+ const meta = isContextHealthReminderMeta(reminder.meta) ? reminder.meta : undefined;
163
+ const language = (0, runtime_language_1.getWorkLanguage)();
164
+ const header = formatContextHealthOwnerHeader({
165
+ language,
166
+ indexHuman: index + 1,
167
+ snapshot,
168
+ remainingGenTurns: meta ? clampRemainingGenTurns(meta.remainingGenTurns) : undefined,
169
+ });
170
+ const rendered = `${header}\n---\n${reminder.content}`;
171
+ return {
172
+ type: 'transient_guide_msg',
173
+ role: 'assistant',
174
+ content: rendered,
175
+ };
176
+ },
177
+ };