dominds 1.3.1 → 1.4.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.
Files changed (184) hide show
  1. package/README.md +9 -2
  2. package/README.zh.md +9 -2
  3. package/dist/apps/app-lock-file.js +33 -57
  4. package/dist/apps/configuration-file.js +267 -0
  5. package/dist/apps/enabled-apps.js +217 -252
  6. package/dist/apps/manifest.js +132 -0
  7. package/dist/apps/resolution-file.js +80 -192
  8. package/dist/apps/workspace-app-state.js +8 -0
  9. package/dist/cli/disable.js +18 -22
  10. package/dist/cli/enable.js +20 -58
  11. package/dist/cli/install.js +74 -80
  12. package/dist/cli/uninstall.js +48 -25
  13. package/dist/cli/update.js +36 -80
  14. package/dist/docs/app-constitution.md +12 -7
  15. package/dist/docs/app-constitution.zh.md +13 -8
  16. package/dist/llm/kernel-driver/engine.js +10 -4
  17. package/dist/llm/kernel-driver/flow.js +93 -0
  18. package/dist/llm/kernel-driver/loop.js +4 -1
  19. package/dist/llm/kernel-driver/subdialog.js +5 -1
  20. package/dist/llm/kernel-driver/tellask-special.js +48 -6
  21. package/dist/server/server-core.js +19 -4
  22. package/dist/server/websocket-handler.js +26 -6
  23. package/dist/static/assets/{_basePickBy-CmziIRM9.js → _basePickBy-B2o4z1Hf.js} +3 -3
  24. package/dist/static/assets/{_basePickBy-CmziIRM9.js.map → _basePickBy-B2o4z1Hf.js.map} +1 -1
  25. package/dist/static/assets/{_baseUniq-CgDZxcD0.js → _baseUniq-CLmcxjdl.js} +2 -2
  26. package/dist/static/assets/{_baseUniq-CgDZxcD0.js.map → _baseUniq-CLmcxjdl.js.map} +1 -1
  27. package/dist/static/assets/{arc-Df9rjNNk.js → arc-CymD_KN7.js} +2 -2
  28. package/dist/static/assets/{arc-Df9rjNNk.js.map → arc-CymD_KN7.js.map} +1 -1
  29. package/dist/static/assets/{architectureDiagram-VXUJARFQ-Bif8topC.js → architectureDiagram-VXUJARFQ-DJQfSJUH.js} +7 -7
  30. package/dist/static/assets/{architectureDiagram-VXUJARFQ-Bif8topC.js.map → architectureDiagram-VXUJARFQ-DJQfSJUH.js.map} +1 -1
  31. package/dist/static/assets/{blockDiagram-VD42YOAC-D9Egoflr.js → blockDiagram-VD42YOAC-pHVz60D0.js} +7 -7
  32. package/dist/static/assets/{blockDiagram-VD42YOAC-D9Egoflr.js.map → blockDiagram-VD42YOAC-pHVz60D0.js.map} +1 -1
  33. package/dist/static/assets/{c4Diagram-YG6GDRKO-DBf1NeBf.js → c4Diagram-YG6GDRKO-B0WnCfAT.js} +3 -3
  34. package/dist/static/assets/{c4Diagram-YG6GDRKO-DBf1NeBf.js.map → c4Diagram-YG6GDRKO-B0WnCfAT.js.map} +1 -1
  35. package/dist/static/assets/{channel-Dc34yAJl.js → channel-CX9BlKil.js} +2 -2
  36. package/dist/static/assets/{channel-Dc34yAJl.js.map → channel-CX9BlKil.js.map} +1 -1
  37. package/dist/static/assets/{chunk-4BX2VUAB-B65G1dJI.js → chunk-4BX2VUAB-lXArRj3o.js} +2 -2
  38. package/dist/static/assets/{chunk-4BX2VUAB-B65G1dJI.js.map → chunk-4BX2VUAB-lXArRj3o.js.map} +1 -1
  39. package/dist/static/assets/{chunk-55IACEB6-CSDEOGl2.js → chunk-55IACEB6-CdqwynH9.js} +2 -2
  40. package/dist/static/assets/{chunk-55IACEB6-CSDEOGl2.js.map → chunk-55IACEB6-CdqwynH9.js.map} +1 -1
  41. package/dist/static/assets/{chunk-B4BG7PRW-Cb6W3QWJ.js → chunk-B4BG7PRW-Y-uXcJst.js} +5 -5
  42. package/dist/static/assets/{chunk-B4BG7PRW-Cb6W3QWJ.js.map → chunk-B4BG7PRW-Y-uXcJst.js.map} +1 -1
  43. package/dist/static/assets/{chunk-DI55MBZ5-ZAJWeVWH.js → chunk-DI55MBZ5-C5xSbRST.js} +4 -4
  44. package/dist/static/assets/{chunk-DI55MBZ5-ZAJWeVWH.js.map → chunk-DI55MBZ5-C5xSbRST.js.map} +1 -1
  45. package/dist/static/assets/{chunk-FMBD7UC4-DiwRlImb.js → chunk-FMBD7UC4-5uefwCjI.js} +2 -2
  46. package/dist/static/assets/{chunk-FMBD7UC4-DiwRlImb.js.map → chunk-FMBD7UC4-5uefwCjI.js.map} +1 -1
  47. package/dist/static/assets/{chunk-QN33PNHL-wilj7fb5.js → chunk-QN33PNHL-DzWVcvpI.js} +2 -2
  48. package/dist/static/assets/{chunk-QN33PNHL-wilj7fb5.js.map → chunk-QN33PNHL-DzWVcvpI.js.map} +1 -1
  49. package/dist/static/assets/{chunk-QZHKN3VN-DGmviJfR.js → chunk-QZHKN3VN-BrrvAZdP.js} +2 -2
  50. package/dist/static/assets/{chunk-QZHKN3VN-DGmviJfR.js.map → chunk-QZHKN3VN-BrrvAZdP.js.map} +1 -1
  51. package/dist/static/assets/{chunk-TZMSLE5B-Nm5wTXa_.js → chunk-TZMSLE5B-DyKOlPTY.js} +2 -2
  52. package/dist/static/assets/{chunk-TZMSLE5B-Nm5wTXa_.js.map → chunk-TZMSLE5B-DyKOlPTY.js.map} +1 -1
  53. package/dist/static/assets/{classDiagram-2ON5EDUG-BvUbXD6H.js → classDiagram-2ON5EDUG-FCrnlCWC.js} +6 -6
  54. package/dist/static/assets/{classDiagram-2ON5EDUG-BvUbXD6H.js.map → classDiagram-2ON5EDUG-FCrnlCWC.js.map} +1 -1
  55. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BvUbXD6H.js → classDiagram-v2-WZHVMYZB-FCrnlCWC.js} +6 -6
  56. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BvUbXD6H.js.map → classDiagram-v2-WZHVMYZB-FCrnlCWC.js.map} +1 -1
  57. package/dist/static/assets/{clone-0VLS7GaA.js → clone-BlI81KqZ.js} +2 -2
  58. package/dist/static/assets/{clone-0VLS7GaA.js.map → clone-BlI81KqZ.js.map} +1 -1
  59. package/dist/static/assets/{cose-bilkent-S5V4N54A-anaPs-75.js → cose-bilkent-S5V4N54A-yM7S2atz.js} +2 -2
  60. package/dist/static/assets/{cose-bilkent-S5V4N54A-anaPs-75.js.map → cose-bilkent-S5V4N54A-yM7S2atz.js.map} +1 -1
  61. package/dist/static/assets/{dagre-6UL2VRFP-YwdsZ11r.js → dagre-6UL2VRFP-BcweuZHt.js} +7 -7
  62. package/dist/static/assets/{dagre-6UL2VRFP-YwdsZ11r.js.map → dagre-6UL2VRFP-BcweuZHt.js.map} +1 -1
  63. package/dist/static/assets/{diagram-PSM6KHXK-5KQCf3h2.js → diagram-PSM6KHXK-D4-QwLW1.js} +8 -8
  64. package/dist/static/assets/{diagram-PSM6KHXK-5KQCf3h2.js.map → diagram-PSM6KHXK-D4-QwLW1.js.map} +1 -1
  65. package/dist/static/assets/{diagram-QEK2KX5R-Mf24XxZL.js → diagram-QEK2KX5R-BVbuejJn.js} +7 -7
  66. package/dist/static/assets/{diagram-QEK2KX5R-Mf24XxZL.js.map → diagram-QEK2KX5R-BVbuejJn.js.map} +1 -1
  67. package/dist/static/assets/{diagram-S2PKOQOG-DyQjD4D5.js → diagram-S2PKOQOG-pB6N6Tq_.js} +7 -7
  68. package/dist/static/assets/{diagram-S2PKOQOG-DyQjD4D5.js.map → diagram-S2PKOQOG-pB6N6Tq_.js.map} +1 -1
  69. package/dist/static/assets/{erDiagram-Q2GNP2WA-CEzTKw1u.js → erDiagram-Q2GNP2WA-DLKmthuw.js} +5 -5
  70. package/dist/static/assets/{erDiagram-Q2GNP2WA-CEzTKw1u.js.map → erDiagram-Q2GNP2WA-DLKmthuw.js.map} +1 -1
  71. package/dist/static/assets/{flowDiagram-NV44I4VS-DT821XSz.js → flowDiagram-NV44I4VS-BsBhWukh.js} +6 -6
  72. package/dist/static/assets/{flowDiagram-NV44I4VS-DT821XSz.js.map → flowDiagram-NV44I4VS-BsBhWukh.js.map} +1 -1
  73. package/dist/static/assets/{ganttDiagram-JELNMOA3-DlmeVsGg.js → ganttDiagram-JELNMOA3-Debz-J-C.js} +3 -3
  74. package/dist/static/assets/{ganttDiagram-JELNMOA3-DlmeVsGg.js.map → ganttDiagram-JELNMOA3-Debz-J-C.js.map} +1 -1
  75. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-yAfyBG_d.js → gitGraphDiagram-V2S2FVAM-BnAPFBGR.js} +8 -8
  76. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-yAfyBG_d.js.map → gitGraphDiagram-V2S2FVAM-BnAPFBGR.js.map} +1 -1
  77. package/dist/static/assets/{graph-BYv8vyWe.js → graph-DbzWiBNK.js} +3 -3
  78. package/dist/static/assets/{graph-BYv8vyWe.js.map → graph-DbzWiBNK.js.map} +1 -1
  79. package/dist/static/assets/{index-DMbwqOm6.js → index-B-8J28g7.js} +987 -1049
  80. package/dist/static/assets/index-B-8J28g7.js.map +1 -0
  81. package/dist/static/assets/{index-BiNcBn_U.css → index-CD5wtC_i.css} +1 -1
  82. package/dist/static/assets/{infoDiagram-HS3SLOUP-DaadramQ.js → infoDiagram-HS3SLOUP-CZ5hWoxV.js} +6 -6
  83. package/dist/static/assets/{infoDiagram-HS3SLOUP-DaadramQ.js.map → infoDiagram-HS3SLOUP-CZ5hWoxV.js.map} +1 -1
  84. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-ftN8hxu3.js → journeyDiagram-XKPGCS4Q-CKN3oSxk.js} +5 -5
  85. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-ftN8hxu3.js.map → journeyDiagram-XKPGCS4Q-CKN3oSxk.js.map} +1 -1
  86. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BIXETQ-C.js → kanban-definition-3W4ZIXB7-BQCMklfJ.js} +3 -3
  87. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BIXETQ-C.js.map → kanban-definition-3W4ZIXB7-BQCMklfJ.js.map} +1 -1
  88. package/dist/static/assets/{layout-OTbrj0Ye.js → layout-C5B58szc.js} +5 -5
  89. package/dist/static/assets/{layout-OTbrj0Ye.js.map → layout-C5B58szc.js.map} +1 -1
  90. package/dist/static/assets/{linear-CVfOC669.js → linear-_32fut6G.js} +2 -2
  91. package/dist/static/assets/{linear-CVfOC669.js.map → linear-_32fut6G.js.map} +1 -1
  92. package/dist/static/assets/{mindmap-definition-VGOIOE7T-D2zv5uI9.js → mindmap-definition-VGOIOE7T-C_goMzjx.js} +4 -4
  93. package/dist/static/assets/{mindmap-definition-VGOIOE7T-D2zv5uI9.js.map → mindmap-definition-VGOIOE7T-C_goMzjx.js.map} +1 -1
  94. package/dist/static/assets/{pieDiagram-ADFJNKIX-DaUXTsv7.js → pieDiagram-ADFJNKIX-BQ2n0cOB.js} +8 -8
  95. package/dist/static/assets/{pieDiagram-ADFJNKIX-DaUXTsv7.js.map → pieDiagram-ADFJNKIX-BQ2n0cOB.js.map} +1 -1
  96. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-B7O2wPX9.js → quadrantDiagram-AYHSOK5B-BLg7_neg.js} +3 -3
  97. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-B7O2wPX9.js.map → quadrantDiagram-AYHSOK5B-BLg7_neg.js.map} +1 -1
  98. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DpauVPY1.js → requirementDiagram-UZGBJVZJ-DwkJt0zi.js} +4 -4
  99. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DpauVPY1.js.map → requirementDiagram-UZGBJVZJ-DwkJt0zi.js.map} +1 -1
  100. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-B3Hbfvad.js → sankeyDiagram-TZEHDZUN-DmxmatUB.js} +2 -2
  101. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-B3Hbfvad.js.map → sankeyDiagram-TZEHDZUN-DmxmatUB.js.map} +1 -1
  102. package/dist/static/assets/{sequenceDiagram-WL72ISMW-KdbWByWT.js → sequenceDiagram-WL72ISMW-KHU_eApU.js} +4 -4
  103. package/dist/static/assets/{sequenceDiagram-WL72ISMW-KdbWByWT.js.map → sequenceDiagram-WL72ISMW-KHU_eApU.js.map} +1 -1
  104. package/dist/static/assets/{stateDiagram-FKZM4ZOC-yDOCVezC.js → stateDiagram-FKZM4ZOC-B3DBCxAL.js} +9 -9
  105. package/dist/static/assets/{stateDiagram-FKZM4ZOC-yDOCVezC.js.map → stateDiagram-FKZM4ZOC-B3DBCxAL.js.map} +1 -1
  106. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-CpCJhvQO.js → stateDiagram-v2-4FDKWEC3-C-uIk7gh.js} +5 -5
  107. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-CpCJhvQO.js.map → stateDiagram-v2-4FDKWEC3-C-uIk7gh.js.map} +1 -1
  108. package/dist/static/assets/{timeline-definition-IT6M3QCI-CHxuEjhV.js → timeline-definition-IT6M3QCI-SysEcQCC.js} +3 -3
  109. package/dist/static/assets/{timeline-definition-IT6M3QCI-CHxuEjhV.js.map → timeline-definition-IT6M3QCI-SysEcQCC.js.map} +1 -1
  110. package/dist/static/assets/{treemap-GDKQZRPO-Bsqu3wIy.js → treemap-GDKQZRPO-d0AbKEc4.js} +5 -5
  111. package/dist/static/assets/{treemap-GDKQZRPO-Bsqu3wIy.js.map → treemap-GDKQZRPO-d0AbKEc4.js.map} +1 -1
  112. package/dist/static/assets/{xychartDiagram-PRI3JC2R-RZy33lFF.js → xychartDiagram-PRI3JC2R-CmSQMxUh.js} +3 -3
  113. package/dist/static/assets/{xychartDiagram-PRI3JC2R-RZy33lFF.js.map → xychartDiagram-PRI3JC2R-CmSQMxUh.js.map} +1 -1
  114. package/dist/static/index.html +2 -2
  115. package/dist/tools/fs.js +1 -1
  116. package/package.json +9 -7
  117. package/dist/agent-priming.js +0 -2051
  118. package/dist/apps/installed-file.js +0 -207
  119. package/dist/apps/runtime-port.js +0 -91
  120. package/dist/docs/dominds-agent-priming.md +0 -218
  121. package/dist/docs/dominds-agent-priming.zh.md +0 -196
  122. package/dist/docs/drive-logic-context-refactor-plan.zh.md +0 -338
  123. package/dist/docs/keep-going.md +0 -176
  124. package/dist/docs/keep-going.zh.md +0 -162
  125. package/dist/docs/kernel-app-architecture.md +0 -286
  126. package/dist/docs/kernel-app-architecture.zh.md +0 -285
  127. package/dist/docs/showing-by-doing.md +0 -208
  128. package/dist/docs/showing-by-doing.zh.md +0 -177
  129. package/dist/docs/team-mgmt-toolset.md +0 -482
  130. package/dist/docs/team-mgmt-toolset.zh.md +0 -426
  131. package/dist/llm/driver-entry.js +0 -28
  132. package/dist/llm/driver-v2/context-health.js +0 -121
  133. package/dist/llm/driver-v2/context.js +0 -56
  134. package/dist/llm/driver-v2/core.js +0 -1545
  135. package/dist/llm/driver-v2/index.js +0 -26
  136. package/dist/llm/driver-v2/orchestrator.js +0 -158
  137. package/dist/llm/driver-v2/policy.js +0 -129
  138. package/dist/llm/driver-v2/restore-dialog-hierarchy.js +0 -73
  139. package/dist/llm/driver-v2/round.js +0 -366
  140. package/dist/llm/driver-v2/runtime-utils.js +0 -365
  141. package/dist/llm/driver-v2/saying-events.js +0 -20
  142. package/dist/llm/driver-v2/subdialog-txn.js +0 -42
  143. package/dist/llm/driver-v2/supdialog-response.js +0 -400
  144. package/dist/llm/driver-v2/tellask-bridge.js +0 -1148
  145. package/dist/llm/driver-v2/types.js +0 -10
  146. package/dist/llm/driver-v2-ref-only/context-health.js +0 -121
  147. package/dist/llm/driver-v2-ref-only/context.js +0 -17
  148. package/dist/llm/driver-v2-ref-only/core.js +0 -1710
  149. package/dist/llm/driver-v2-ref-only/index.js +0 -26
  150. package/dist/llm/driver-v2-ref-only/orchestrator.js +0 -158
  151. package/dist/llm/driver-v2-ref-only/policy.js +0 -129
  152. package/dist/llm/driver-v2-ref-only/restore-dialog-hierarchy.js +0 -73
  153. package/dist/llm/driver-v2-ref-only/round.js +0 -366
  154. package/dist/llm/driver-v2-ref-only/runtime-utils.js +0 -473
  155. package/dist/llm/driver-v2-ref-only/saying-events.js +0 -18
  156. package/dist/llm/driver-v2-ref-only/subdialog-txn.js +0 -42
  157. package/dist/llm/driver-v2-ref-only/supdialog-response.js +0 -453
  158. package/dist/llm/driver-v2-ref-only/tellask-bridge.js +0 -1178
  159. package/dist/llm/driver-v2-ref-only/types.js +0 -10
  160. package/dist/llm/driver.js +0 -4093
  161. package/dist/minds/promptdocs.js +0 -263
  162. package/dist/server/prompts-routes.js +0 -545
  163. package/dist/shared/team-mgmt-manual.js +0 -120
  164. package/dist/shared/types/prompts.js +0 -2
  165. package/dist/shared/types/tellask.js +0 -8
  166. package/dist/showing-by-doing.js +0 -1091
  167. package/dist/snippets/README.en.md +0 -3
  168. package/dist/snippets/README.md +0 -4
  169. package/dist/static/assets/index-DMbwqOm6.js.map +0 -1
  170. package/dist/tellask.js +0 -439
  171. package/dist/tools/context-health.js +0 -177
  172. package/dist/tools/diag.js +0 -583
  173. package/dist/tools/prompts/memory/en/errors.md +0 -155
  174. package/dist/tools/prompts/memory/en/index.md +0 -47
  175. package/dist/tools/prompts/memory/en/principles.md +0 -87
  176. package/dist/tools/prompts/memory/en/scenarios.md +0 -174
  177. package/dist/tools/prompts/memory/en/tools.md +0 -129
  178. package/dist/tools/prompts/memory/zh/errors.md +0 -155
  179. package/dist/tools/prompts/memory/zh/index.md +0 -47
  180. package/dist/tools/prompts/memory/zh/principles.md +0 -89
  181. package/dist/tools/prompts/memory/zh/scenarios.md +0 -174
  182. package/dist/tools/prompts/memory/zh/tools.md +0 -129
  183. package/dist/tools/team-mgmt.js +0 -3487
  184. package/dist/utils/task-doc.js +0 -236
@@ -1,365 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.maybePrepareDiligenceAutoContinuePrompt = maybePrepareDiligenceAutoContinuePrompt;
37
- exports.suspendForKeepGoingBudgetExhausted = suspendForKeepGoingBudgetExhausted;
38
- exports.validateFuncToolArguments = validateFuncToolArguments;
39
- exports.runLlmRequestWithRetry = runLlmRequestWithRetry;
40
- const fs = __importStar(require("fs"));
41
- const path = __importStar(require("path"));
42
- const evt_registry_1 = require("../../evt-registry");
43
- const log_1 = require("../../log");
44
- const persistence_1 = require("../../persistence");
45
- const problems_1 = require("../../problems");
46
- const diligence_1 = require("../../shared/diligence");
47
- const driver_messages_1 = require("../../shared/i18n/driver-messages");
48
- const runtime_language_1 = require("../../shared/runtime-language");
49
- const id_1 = require("../../shared/utils/id");
50
- const time_1 = require("../../shared/utils/time");
51
- const tool_1 = require("../../tool");
52
- const id_2 = require("../../utils/id");
53
- function isNodeErrorWithCode(error) {
54
- return error instanceof Error && 'code' in error;
55
- }
56
- function stripMarkdownFrontmatter(raw) {
57
- const match = raw.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?([\s\S]*)$/);
58
- return match ? (match[1] ?? '') : raw;
59
- }
60
- async function resolveRtwsDiligenceConfig() {
61
- const workLanguage = (0, runtime_language_1.getWorkLanguage)();
62
- const langSpecificPath = path.resolve(process.cwd(), '.minds', `diligence.${workLanguage}.md`);
63
- const genericPath = path.resolve(process.cwd(), '.minds', 'diligence.md');
64
- async function resolveFromFile(filePath) {
65
- let raw;
66
- try {
67
- raw = await fs.promises.readFile(filePath, 'utf-8');
68
- }
69
- catch (error) {
70
- if (isNodeErrorWithCode(error) && error.code === 'ENOENT') {
71
- return null;
72
- }
73
- log_1.log.warn('Failed to read rtws diligence file; falling back to built-in defaults', error, {
74
- filePath,
75
- });
76
- return {
77
- kind: 'enabled',
78
- diligenceText: diligence_1.DILIGENCE_FALLBACK_TEXT[workLanguage],
79
- };
80
- }
81
- const trimmed = raw.trim();
82
- if (trimmed === '') {
83
- return { kind: 'disabled', reason: 'empty_file' };
84
- }
85
- const bodyTrimmed = stripMarkdownFrontmatter(raw).trim();
86
- if (bodyTrimmed === '') {
87
- return { kind: 'disabled', reason: 'empty_body' };
88
- }
89
- return { kind: 'enabled', diligenceText: bodyTrimmed };
90
- }
91
- const langSpecific = await resolveFromFile(langSpecificPath);
92
- if (langSpecific) {
93
- return langSpecific;
94
- }
95
- const generic = await resolveFromFile(genericPath);
96
- if (generic) {
97
- return generic;
98
- }
99
- return {
100
- kind: 'enabled',
101
- diligenceText: diligence_1.DILIGENCE_FALLBACK_TEXT[workLanguage],
102
- };
103
- }
104
- async function maybePrepareDiligenceAutoContinuePrompt(options) {
105
- if (!options.isRootDialog) {
106
- return { kind: 'disabled', nextRemainingBudget: options.remainingBudget };
107
- }
108
- if (options.dlg.disableDiligencePush || options.suppressDiligencePush === true) {
109
- const normalizedRemaining = typeof options.remainingBudget === 'number' && Number.isFinite(options.remainingBudget)
110
- ? Math.max(0, Math.floor(options.remainingBudget))
111
- : 0;
112
- return { kind: 'disabled', nextRemainingBudget: normalizedRemaining };
113
- }
114
- const resolved = await resolveRtwsDiligenceConfig();
115
- if (resolved.kind === 'disabled') {
116
- return { kind: 'disabled', nextRemainingBudget: options.remainingBudget };
117
- }
118
- const maxInjectCount = typeof options.diligencePushMax === 'number' && Number.isFinite(options.diligencePushMax)
119
- ? Math.floor(options.diligencePushMax)
120
- : 0;
121
- const normalizedRemaining = typeof options.remainingBudget === 'number' && Number.isFinite(options.remainingBudget)
122
- ? Math.max(0, Math.floor(options.remainingBudget))
123
- : 0;
124
- if (maxInjectCount < 1) {
125
- if (normalizedRemaining < 1) {
126
- return { kind: 'disabled', nextRemainingBudget: 0 };
127
- }
128
- const prompt = {
129
- content: resolved.diligenceText,
130
- msgId: (0, id_1.generateShortId)(),
131
- grammar: 'markdown',
132
- origin: 'diligence_push',
133
- };
134
- return {
135
- kind: 'prompt',
136
- prompt,
137
- maxInjectCount: 0,
138
- nextRemainingBudget: normalizedRemaining - 1,
139
- };
140
- }
141
- const currentRemaining = Math.min(normalizedRemaining, maxInjectCount);
142
- if (currentRemaining < 1) {
143
- return { kind: 'budget_exhausted', maxInjectCount, nextRemainingBudget: 0 };
144
- }
145
- const prompt = {
146
- content: resolved.diligenceText,
147
- msgId: (0, id_1.generateShortId)(),
148
- grammar: 'markdown',
149
- origin: 'diligence_push',
150
- };
151
- return {
152
- kind: 'prompt',
153
- prompt,
154
- maxInjectCount,
155
- nextRemainingBudget: currentRemaining - 1,
156
- };
157
- }
158
- async function suspendForKeepGoingBudgetExhausted(options) {
159
- const { dlg, maxInjectCount } = options;
160
- const questionId = `q4h-${(0, id_2.generateDialogID)()}`;
161
- const language = dlg.getLastUserLanguageCode();
162
- const question = {
163
- id: questionId,
164
- tellaskContent: (0, driver_messages_1.formatQ4HDiligencePushBudgetExhausted)(language, { maxInjectCount }),
165
- askedAt: (0, time_1.formatUnifiedTimestamp)(new Date()),
166
- callSiteRef: {
167
- course: dlg.currentCourse,
168
- messageIndex: dlg.msgs.length,
169
- },
170
- };
171
- await persistence_1.DialogPersistence.appendQuestion4HumanState(dlg.id, question);
172
- const newQuestionEvent = {
173
- type: 'new_q4h_asked',
174
- question: {
175
- id: question.id,
176
- selfId: dlg.id.selfId,
177
- tellaskContent: question.tellaskContent,
178
- askedAt: question.askedAt,
179
- callId: question.callId,
180
- remainingCallIds: question.remainingCallIds,
181
- callSiteRef: question.callSiteRef,
182
- rootId: dlg.id.rootId,
183
- agentId: dlg.agentId,
184
- taskDocPath: dlg.taskDocPath,
185
- },
186
- };
187
- (0, evt_registry_1.postDialogEvent)(dlg, newQuestionEvent);
188
- }
189
- function isPlainObject(value) {
190
- return typeof value === 'object' && value !== null && !Array.isArray(value);
191
- }
192
- function validateFuncToolArguments(tool, rawArgs) {
193
- if (!isPlainObject(rawArgs)) {
194
- return { ok: false, error: 'Arguments must be an object' };
195
- }
196
- if (tool.argsValidation === 'passthrough') {
197
- return { ok: true, args: rawArgs };
198
- }
199
- const validation = (0, tool_1.validateArgs)(tool.parameters, rawArgs);
200
- return validation.ok
201
- ? { ok: true, args: rawArgs }
202
- : { ok: false, error: validation.error };
203
- }
204
- function classifyLlmFailure(err) {
205
- const fallbackMessage = err instanceof Error
206
- ? err.message || err.name
207
- : typeof err === 'string'
208
- ? err
209
- : JSON.stringify(err);
210
- if (err instanceof Error && err.message === 'AbortError') {
211
- return { kind: 'fatal', message: 'Aborted.' };
212
- }
213
- {
214
- const msg = err instanceof Error
215
- ? err.message && err.message.length > 0
216
- ? err.message
217
- : err.name
218
- : typeof err === 'string'
219
- ? err
220
- : undefined;
221
- if (typeof msg === 'string' && msg.length > 0) {
222
- const lower = msg.toLowerCase();
223
- if (lower.includes('fetch failed') || lower.includes('socket hang up')) {
224
- return { kind: 'retriable', message: msg };
225
- }
226
- if (lower.includes('terminated')) {
227
- return { kind: 'retriable', message: msg };
228
- }
229
- if (lower.includes('timeout') ||
230
- lower.includes('timed out') ||
231
- lower.includes('rate limit')) {
232
- return { kind: 'retriable', message: msg };
233
- }
234
- }
235
- }
236
- if (isPlainObject(err)) {
237
- const status = 'status' in err && typeof err.status === 'number'
238
- ? err.status
239
- : 'statusCode' in err && typeof err.statusCode === 'number'
240
- ? err.statusCode
241
- : undefined;
242
- const code = 'code' in err && typeof err.code === 'string'
243
- ? err.code
244
- : 'errno' in err && typeof err.errno === 'string'
245
- ? err.errno
246
- : undefined;
247
- const msg = 'message' in err && typeof err.message === 'string' && err.message.length > 0
248
- ? err.message
249
- : fallbackMessage;
250
- if (typeof status === 'number') {
251
- if (status === 408 || status === 429 || status >= 500) {
252
- return { kind: 'retriable', status, message: msg };
253
- }
254
- if (status >= 400 && status < 500) {
255
- return { kind: 'rejected', status, message: msg };
256
- }
257
- }
258
- if (typeof code === 'string') {
259
- const retriableCodes = new Set([
260
- 'ETIMEDOUT',
261
- 'ECONNRESET',
262
- 'ECONNREFUSED',
263
- 'EAI_AGAIN',
264
- 'ENOTFOUND',
265
- 'ENETUNREACH',
266
- 'EHOSTUNREACH',
267
- 'UND_ERR_CONNECT_TIMEOUT',
268
- 'UND_ERR_HEADERS_TIMEOUT',
269
- 'UND_ERR_BODY_TIMEOUT',
270
- 'UND_ERR_SOCKET',
271
- ]);
272
- if (retriableCodes.has(code)) {
273
- return { kind: 'retriable', code, message: msg };
274
- }
275
- }
276
- const lower = msg.toLowerCase();
277
- if (lower.includes('fetch failed') || lower.includes('socket hang up')) {
278
- return { kind: 'retriable', message: msg };
279
- }
280
- if (lower.includes('terminated')) {
281
- return { kind: 'retriable', message: msg };
282
- }
283
- if (lower.includes('timeout') || lower.includes('timed out') || lower.includes('rate limit')) {
284
- return { kind: 'retriable', message: msg };
285
- }
286
- }
287
- return { kind: 'fatal', message: fallbackMessage };
288
- }
289
- async function sleepWithAbort(ms, abortSignal) {
290
- if (abortSignal?.aborted) {
291
- throw new Error('AbortError');
292
- }
293
- await new Promise((resolve) => setTimeout(resolve, ms));
294
- if (abortSignal?.aborted) {
295
- throw new Error('AbortError');
296
- }
297
- }
298
- async function runLlmRequestWithRetry(params) {
299
- const providerProblemId = `llm/provider_rejected/${params.dlg.id.valueOf()}`;
300
- for (let attempt = 0; attempt <= params.maxRetries; attempt++) {
301
- try {
302
- const res = await params.doRequest();
303
- (0, problems_1.removeProblem)(providerProblemId);
304
- return res;
305
- }
306
- catch (err) {
307
- if (params.abortSignal?.aborted) {
308
- throw err;
309
- }
310
- const failure = classifyLlmFailure(err);
311
- const detail = (0, log_1.extractErrorDetails)(err).message;
312
- if (failure.kind === 'rejected') {
313
- (0, problems_1.upsertProblem)({
314
- kind: 'llm_provider_rejected_request',
315
- source: 'llm',
316
- id: providerProblemId,
317
- severity: 'error',
318
- timestamp: (0, time_1.formatUnifiedTimestamp)(new Date()),
319
- message: `LLM provider rejected the request`,
320
- detail: {
321
- dialogId: params.dlg.id.valueOf(),
322
- provider: params.provider,
323
- errorText: detail,
324
- },
325
- });
326
- try {
327
- await params.dlg.streamError(detail);
328
- }
329
- catch {
330
- // best-effort
331
- }
332
- throw new Error(`Provider '${params.provider}' rejected the request: ${failure.message}`);
333
- }
334
- const canRetry = failure.kind === 'retriable' && params.canRetry();
335
- const isLastAttempt = attempt >= params.maxRetries;
336
- if (!canRetry || isLastAttempt) {
337
- if (params.onGiveUp) {
338
- await params.onGiveUp();
339
- }
340
- try {
341
- await params.dlg.streamError(detail);
342
- }
343
- catch {
344
- // best-effort
345
- }
346
- throw new Error(canRetry
347
- ? `LLM failed after retries: ${failure.message}`
348
- : `LLM failed: ${failure.message}`);
349
- }
350
- const backoffMs = Math.min(30000, 1000 * 2 ** attempt);
351
- log_1.log.warn(`Retrying LLM request after retriable error`, undefined, {
352
- provider: params.provider,
353
- attempt: attempt + 1,
354
- backoffMs,
355
- failure,
356
- });
357
- if (params.onRetry) {
358
- await params.onRetry();
359
- }
360
- await sleepWithAbort(backoffMs, params.abortSignal);
361
- continue;
362
- }
363
- }
364
- throw new Error('LLM failed.');
365
- }
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emitThinkingEvents = emitThinkingEvents;
4
- exports.emitSayingEvents = emitSayingEvents;
5
- async function emitThinkingEvents(dlg, content) {
6
- if (!content.trim())
7
- return undefined;
8
- await dlg.thinkingStart();
9
- await dlg.thinkingChunk(content);
10
- await dlg.thinkingFinish();
11
- const signatureMatch = content.match(/<thinking[^>]*>(.*?)<\/thinking>/s);
12
- return signatureMatch?.[1]?.trim();
13
- }
14
- async function emitSayingEvents(dlg, content) {
15
- if (!content.trim())
16
- return;
17
- await dlg.markdownStart();
18
- await dlg.markdownChunk(content);
19
- await dlg.markdownFinish();
20
- }
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.takeSubdialogResponses = takeSubdialogResponses;
4
- exports.commitTakenSubdialogResponses = commitTakenSubdialogResponses;
5
- exports.rollbackTakenSubdialogResponses = rollbackTakenSubdialogResponses;
6
- exports.withSubdialogTxnLock = withSubdialogTxnLock;
7
- const persistence_1 = require("../../persistence");
8
- const async_fifo_mutex_1 = require("../../shared/async-fifo-mutex");
9
- const suspensionStateMutexes = new Map();
10
- async function withSuspensionStateLock(dialogId, fn) {
11
- const key = dialogId.key();
12
- let mutex = suspensionStateMutexes.get(key);
13
- if (!mutex) {
14
- mutex = new async_fifo_mutex_1.AsyncFifoMutex();
15
- suspensionStateMutexes.set(key, mutex);
16
- }
17
- const release = await mutex.acquire();
18
- try {
19
- return await fn();
20
- }
21
- finally {
22
- release();
23
- }
24
- }
25
- async function takeSubdialogResponses(dialogId) {
26
- return await withSuspensionStateLock(dialogId, async () => {
27
- return await persistence_1.DialogPersistence.takeSubdialogResponses(dialogId);
28
- });
29
- }
30
- async function commitTakenSubdialogResponses(dialogId) {
31
- await withSuspensionStateLock(dialogId, async () => {
32
- await persistence_1.DialogPersistence.commitTakenSubdialogResponses(dialogId);
33
- });
34
- }
35
- async function rollbackTakenSubdialogResponses(dialogId) {
36
- await withSuspensionStateLock(dialogId, async () => {
37
- await persistence_1.DialogPersistence.rollbackTakenSubdialogResponses(dialogId);
38
- });
39
- }
40
- async function withSubdialogTxnLock(dialogId, fn) {
41
- return await withSuspensionStateLock(dialogId, fn);
42
- }