dominds 1.8.2 → 1.8.4

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 (154) hide show
  1. package/dist/apps/run-control.js +21 -4
  2. package/dist/apps/runtime.js +66 -24
  3. package/dist/dialog.js +23 -1
  4. package/dist/docs/app-constitution.md +3 -1
  5. package/dist/docs/app-constitution.zh.md +3 -1
  6. package/dist/docs/dialog-system.zh.md +5 -5
  7. package/dist/llm/kernel-driver/context.js +2 -31
  8. package/dist/llm/kernel-driver/drive.js +6 -8
  9. package/dist/llm/kernel-driver/subdialog.js +8 -0
  10. package/dist/minds/system-prompt.js +2 -2
  11. package/dist/priming.js +4 -0
  12. package/dist/server/websocket-handler.js +16 -0
  13. package/dist/server.js +7 -2
  14. package/dist/shared/diligence.js +2 -2
  15. package/dist/shared/i18n/driver-messages.js +47 -7
  16. package/dist/static/assets/{_basePickBy-DOCpneO0.js → _basePickBy-b79Z8z7v.js} +3 -3
  17. package/dist/static/assets/{_basePickBy-DOCpneO0.js.map → _basePickBy-b79Z8z7v.js.map} +1 -1
  18. package/dist/static/assets/{_baseUniq-DBZLqTK1.js → _baseUniq-EKRe-CHy.js} +2 -2
  19. package/dist/static/assets/{_baseUniq-DBZLqTK1.js.map → _baseUniq-EKRe-CHy.js.map} +1 -1
  20. package/dist/static/assets/{arc-Dw9YkyBZ.js → arc-CBReIrdk.js} +2 -2
  21. package/dist/static/assets/{arc-Dw9YkyBZ.js.map → arc-CBReIrdk.js.map} +1 -1
  22. package/dist/static/assets/{architectureDiagram-VXUJARFQ-DiXBIlTy.js → architectureDiagram-VXUJARFQ-arl_gJGi.js} +7 -7
  23. package/dist/static/assets/{architectureDiagram-VXUJARFQ-DiXBIlTy.js.map → architectureDiagram-VXUJARFQ-arl_gJGi.js.map} +1 -1
  24. package/dist/static/assets/{blockDiagram-VD42YOAC-CBTqG3TT.js → blockDiagram-VD42YOAC-BvLkPr7Y.js} +7 -7
  25. package/dist/static/assets/{blockDiagram-VD42YOAC-CBTqG3TT.js.map → blockDiagram-VD42YOAC-BvLkPr7Y.js.map} +1 -1
  26. package/dist/static/assets/{c4Diagram-YG6GDRKO-CKltdqcg.js → c4Diagram-YG6GDRKO-DLQB9QIV.js} +3 -3
  27. package/dist/static/assets/{c4Diagram-YG6GDRKO-CKltdqcg.js.map → c4Diagram-YG6GDRKO-DLQB9QIV.js.map} +1 -1
  28. package/dist/static/assets/{channel-CsfA5ddv.js → channel-C-1aKDRA.js} +2 -2
  29. package/dist/static/assets/{channel-CsfA5ddv.js.map → channel-C-1aKDRA.js.map} +1 -1
  30. package/dist/static/assets/{chunk-4BX2VUAB-BCdL9ibi.js → chunk-4BX2VUAB-guy7Bw0c.js} +2 -2
  31. package/dist/static/assets/{chunk-4BX2VUAB-BCdL9ibi.js.map → chunk-4BX2VUAB-guy7Bw0c.js.map} +1 -1
  32. package/dist/static/assets/{chunk-55IACEB6-CcKnxlqS.js → chunk-55IACEB6-CPekYUDl.js} +2 -2
  33. package/dist/static/assets/{chunk-55IACEB6-CcKnxlqS.js.map → chunk-55IACEB6-CPekYUDl.js.map} +1 -1
  34. package/dist/static/assets/{chunk-B4BG7PRW-BnypOYYo.js → chunk-B4BG7PRW-C7_VGVGd.js} +5 -5
  35. package/dist/static/assets/{chunk-B4BG7PRW-BnypOYYo.js.map → chunk-B4BG7PRW-C7_VGVGd.js.map} +1 -1
  36. package/dist/static/assets/{chunk-DI55MBZ5-BGYHpvhR.js → chunk-DI55MBZ5-B7Z_kPEp.js} +4 -4
  37. package/dist/static/assets/{chunk-DI55MBZ5-BGYHpvhR.js.map → chunk-DI55MBZ5-B7Z_kPEp.js.map} +1 -1
  38. package/dist/static/assets/{chunk-FMBD7UC4-Crf0Br1R.js → chunk-FMBD7UC4-CNyLnVLQ.js} +2 -2
  39. package/dist/static/assets/{chunk-FMBD7UC4-Crf0Br1R.js.map → chunk-FMBD7UC4-CNyLnVLQ.js.map} +1 -1
  40. package/dist/static/assets/{chunk-QN33PNHL-Cg1EQYdQ.js → chunk-QN33PNHL-De0KQ1wi.js} +2 -2
  41. package/dist/static/assets/{chunk-QN33PNHL-Cg1EQYdQ.js.map → chunk-QN33PNHL-De0KQ1wi.js.map} +1 -1
  42. package/dist/static/assets/{chunk-QZHKN3VN-DRH7UNkC.js → chunk-QZHKN3VN-DsfWQPDD.js} +2 -2
  43. package/dist/static/assets/{chunk-QZHKN3VN-DRH7UNkC.js.map → chunk-QZHKN3VN-DsfWQPDD.js.map} +1 -1
  44. package/dist/static/assets/{chunk-TZMSLE5B-CaZqBdnu.js → chunk-TZMSLE5B-BGHvMn1A.js} +2 -2
  45. package/dist/static/assets/{chunk-TZMSLE5B-CaZqBdnu.js.map → chunk-TZMSLE5B-BGHvMn1A.js.map} +1 -1
  46. package/dist/static/assets/{classDiagram-2ON5EDUG-DSsG0iFI.js → classDiagram-2ON5EDUG-JmOuUZWB.js} +6 -6
  47. package/dist/static/assets/{classDiagram-2ON5EDUG-DSsG0iFI.js.map → classDiagram-2ON5EDUG-JmOuUZWB.js.map} +1 -1
  48. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-DSsG0iFI.js → classDiagram-v2-WZHVMYZB-JmOuUZWB.js} +6 -6
  49. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-DSsG0iFI.js.map → classDiagram-v2-WZHVMYZB-JmOuUZWB.js.map} +1 -1
  50. package/dist/static/assets/{clone-xhbAL4G8.js → clone-bFKUwLh9.js} +2 -2
  51. package/dist/static/assets/{clone-xhbAL4G8.js.map → clone-bFKUwLh9.js.map} +1 -1
  52. package/dist/static/assets/{cose-bilkent-S5V4N54A-B7Rtmhjt.js → cose-bilkent-S5V4N54A-B-TrWbLI.js} +2 -2
  53. package/dist/static/assets/{cose-bilkent-S5V4N54A-B7Rtmhjt.js.map → cose-bilkent-S5V4N54A-B-TrWbLI.js.map} +1 -1
  54. package/dist/static/assets/{dagre-6UL2VRFP-BkqhLTnX.js → dagre-6UL2VRFP-eFdBPojd.js} +7 -7
  55. package/dist/static/assets/{dagre-6UL2VRFP-BkqhLTnX.js.map → dagre-6UL2VRFP-eFdBPojd.js.map} +1 -1
  56. package/dist/static/assets/{diagram-PSM6KHXK-CZKtGq3a.js → diagram-PSM6KHXK-CG-pEDnm.js} +8 -8
  57. package/dist/static/assets/{diagram-PSM6KHXK-CZKtGq3a.js.map → diagram-PSM6KHXK-CG-pEDnm.js.map} +1 -1
  58. package/dist/static/assets/{diagram-QEK2KX5R-CnMVuAHl.js → diagram-QEK2KX5R-DIMTH7OH.js} +7 -7
  59. package/dist/static/assets/{diagram-QEK2KX5R-CnMVuAHl.js.map → diagram-QEK2KX5R-DIMTH7OH.js.map} +1 -1
  60. package/dist/static/assets/{diagram-S2PKOQOG-CeSf7JXc.js → diagram-S2PKOQOG-CtsocJ3s.js} +7 -7
  61. package/dist/static/assets/{diagram-S2PKOQOG-CeSf7JXc.js.map → diagram-S2PKOQOG-CtsocJ3s.js.map} +1 -1
  62. package/dist/static/assets/{erDiagram-Q2GNP2WA-CSt8_Jg8.js → erDiagram-Q2GNP2WA-DE2fcc5h.js} +5 -5
  63. package/dist/static/assets/{erDiagram-Q2GNP2WA-CSt8_Jg8.js.map → erDiagram-Q2GNP2WA-DE2fcc5h.js.map} +1 -1
  64. package/dist/static/assets/{flowDiagram-NV44I4VS-D5Ml-CXN.js → flowDiagram-NV44I4VS-CRmxnCqy.js} +6 -6
  65. package/dist/static/assets/{flowDiagram-NV44I4VS-D5Ml-CXN.js.map → flowDiagram-NV44I4VS-CRmxnCqy.js.map} +1 -1
  66. package/dist/static/assets/{ganttDiagram-JELNMOA3-CyMWbWsa.js → ganttDiagram-JELNMOA3-MIOIERui.js} +3 -3
  67. package/dist/static/assets/{ganttDiagram-JELNMOA3-CyMWbWsa.js.map → ganttDiagram-JELNMOA3-MIOIERui.js.map} +1 -1
  68. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-vl516Is8.js → gitGraphDiagram-V2S2FVAM-crIYDBIk.js} +8 -8
  69. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-vl516Is8.js.map → gitGraphDiagram-V2S2FVAM-crIYDBIk.js.map} +1 -1
  70. package/dist/static/assets/{graph-BGZ_sL_x.js → graph-CB0VmlGP.js} +3 -3
  71. package/dist/static/assets/{graph-BGZ_sL_x.js.map → graph-CB0VmlGP.js.map} +1 -1
  72. package/dist/static/assets/{index-C-RsyM0K.js → index-CzBEs1w4.js} +53 -35
  73. package/dist/static/assets/{index-C-RsyM0K.js.map → index-CzBEs1w4.js.map} +1 -1
  74. package/dist/static/assets/{infoDiagram-HS3SLOUP-6wx0LbHY.js → infoDiagram-HS3SLOUP-CnsCAuJf.js} +6 -6
  75. package/dist/static/assets/{infoDiagram-HS3SLOUP-6wx0LbHY.js.map → infoDiagram-HS3SLOUP-CnsCAuJf.js.map} +1 -1
  76. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-YPjC-r77.js → journeyDiagram-XKPGCS4Q-BtzLS-NC.js} +5 -5
  77. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-YPjC-r77.js.map → journeyDiagram-XKPGCS4Q-BtzLS-NC.js.map} +1 -1
  78. package/dist/static/assets/{kanban-definition-3W4ZIXB7-DlG-ZWTO.js → kanban-definition-3W4ZIXB7-CwykQ3vY.js} +3 -3
  79. package/dist/static/assets/{kanban-definition-3W4ZIXB7-DlG-ZWTO.js.map → kanban-definition-3W4ZIXB7-CwykQ3vY.js.map} +1 -1
  80. package/dist/static/assets/{layout-BZJKhYY3.js → layout-Cu6uuh5P.js} +5 -5
  81. package/dist/static/assets/{layout-BZJKhYY3.js.map → layout-Cu6uuh5P.js.map} +1 -1
  82. package/dist/static/assets/{linear-Bau37zh5.js → linear-BXsc4B31.js} +2 -2
  83. package/dist/static/assets/{linear-Bau37zh5.js.map → linear-BXsc4B31.js.map} +1 -1
  84. package/dist/static/assets/{mindmap-definition-VGOIOE7T-n2WXgX4b.js → mindmap-definition-VGOIOE7T-BtD61cN8.js} +4 -4
  85. package/dist/static/assets/{mindmap-definition-VGOIOE7T-n2WXgX4b.js.map → mindmap-definition-VGOIOE7T-BtD61cN8.js.map} +1 -1
  86. package/dist/static/assets/{pieDiagram-ADFJNKIX-DgW7FkI4.js → pieDiagram-ADFJNKIX-B2EbMDmb.js} +8 -8
  87. package/dist/static/assets/{pieDiagram-ADFJNKIX-DgW7FkI4.js.map → pieDiagram-ADFJNKIX-B2EbMDmb.js.map} +1 -1
  88. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BtsDjIpC.js → quadrantDiagram-AYHSOK5B-BwYvMil1.js} +3 -3
  89. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BtsDjIpC.js.map → quadrantDiagram-AYHSOK5B-BwYvMil1.js.map} +1 -1
  90. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DPzuPEge.js → requirementDiagram-UZGBJVZJ-syDAMAIY.js} +4 -4
  91. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DPzuPEge.js.map → requirementDiagram-UZGBJVZJ-syDAMAIY.js.map} +1 -1
  92. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-BJS1ETtL.js → sankeyDiagram-TZEHDZUN-ifN71SAO.js} +2 -2
  93. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-BJS1ETtL.js.map → sankeyDiagram-TZEHDZUN-ifN71SAO.js.map} +1 -1
  94. package/dist/static/assets/{sequenceDiagram-WL72ISMW-DXEpa4ly.js → sequenceDiagram-WL72ISMW-ytS-PG6f.js} +4 -4
  95. package/dist/static/assets/{sequenceDiagram-WL72ISMW-DXEpa4ly.js.map → sequenceDiagram-WL72ISMW-ytS-PG6f.js.map} +1 -1
  96. package/dist/static/assets/{stateDiagram-FKZM4ZOC-CGU6VJY5.js → stateDiagram-FKZM4ZOC-BICTjIiL.js} +9 -9
  97. package/dist/static/assets/{stateDiagram-FKZM4ZOC-CGU6VJY5.js.map → stateDiagram-FKZM4ZOC-BICTjIiL.js.map} +1 -1
  98. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Dx_GvlFA.js → stateDiagram-v2-4FDKWEC3-BD67hjdo.js} +5 -5
  99. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Dx_GvlFA.js.map → stateDiagram-v2-4FDKWEC3-BD67hjdo.js.map} +1 -1
  100. package/dist/static/assets/{timeline-definition-IT6M3QCI-DcWLmdgJ.js → timeline-definition-IT6M3QCI-Bn4PeFHS.js} +3 -3
  101. package/dist/static/assets/{timeline-definition-IT6M3QCI-DcWLmdgJ.js.map → timeline-definition-IT6M3QCI-Bn4PeFHS.js.map} +1 -1
  102. package/dist/static/assets/{treemap-GDKQZRPO-BhUwKF9C.js → treemap-GDKQZRPO-C-_A6aNF.js} +5 -5
  103. package/dist/static/assets/{treemap-GDKQZRPO-BhUwKF9C.js.map → treemap-GDKQZRPO-C-_A6aNF.js.map} +1 -1
  104. package/dist/static/assets/{xychartDiagram-PRI3JC2R-Cr4t0oCq.js → xychartDiagram-PRI3JC2R-BaUb_VjF.js} +3 -3
  105. package/dist/static/assets/{xychartDiagram-PRI3JC2R-Cr4t0oCq.js.map → xychartDiagram-PRI3JC2R-BaUb_VjF.js.map} +1 -1
  106. package/dist/static/index.html +1 -1
  107. package/dist/tools/pending-tellask-reminder.js +2 -2
  108. package/dist/tools/prompts/team_mgmt/en/errors.md +6 -0
  109. package/dist/tools/prompts/team_mgmt/zh/errors.md +6 -0
  110. package/dist/tools/team_mgmt.js +29 -0
  111. package/package.json +1 -1
  112. package/dist/apps/installed-file.js +0 -207
  113. package/dist/apps/runtime-port.js +0 -91
  114. package/dist/docs/kernel-app-architecture.md +0 -286
  115. package/dist/docs/kernel-app-architecture.zh.md +0 -285
  116. package/dist/llm/driver-entry.js +0 -28
  117. package/dist/llm/driver-v2/context-health.js +0 -121
  118. package/dist/llm/driver-v2/context.js +0 -56
  119. package/dist/llm/driver-v2/core.js +0 -1545
  120. package/dist/llm/driver-v2/index.js +0 -26
  121. package/dist/llm/driver-v2/orchestrator.js +0 -158
  122. package/dist/llm/driver-v2/policy.js +0 -129
  123. package/dist/llm/driver-v2/restore-dialog-hierarchy.js +0 -73
  124. package/dist/llm/driver-v2/round.js +0 -366
  125. package/dist/llm/driver-v2/runtime-utils.js +0 -365
  126. package/dist/llm/driver-v2/saying-events.js +0 -20
  127. package/dist/llm/driver-v2/subdialog-txn.js +0 -42
  128. package/dist/llm/driver-v2/supdialog-response.js +0 -400
  129. package/dist/llm/driver-v2/tellask-bridge.js +0 -1148
  130. package/dist/llm/driver-v2/types.js +0 -10
  131. package/dist/llm/driver-v2-ref-only/context-health.js +0 -121
  132. package/dist/llm/driver-v2-ref-only/context.js +0 -17
  133. package/dist/llm/driver-v2-ref-only/core.js +0 -1710
  134. package/dist/llm/driver-v2-ref-only/index.js +0 -26
  135. package/dist/llm/driver-v2-ref-only/orchestrator.js +0 -158
  136. package/dist/llm/driver-v2-ref-only/policy.js +0 -129
  137. package/dist/llm/driver-v2-ref-only/restore-dialog-hierarchy.js +0 -73
  138. package/dist/llm/driver-v2-ref-only/round.js +0 -366
  139. package/dist/llm/driver-v2-ref-only/runtime-utils.js +0 -473
  140. package/dist/llm/driver-v2-ref-only/saying-events.js +0 -18
  141. package/dist/llm/driver-v2-ref-only/subdialog-txn.js +0 -42
  142. package/dist/llm/driver-v2-ref-only/supdialog-response.js +0 -453
  143. package/dist/llm/driver-v2-ref-only/tellask-bridge.js +0 -1178
  144. package/dist/llm/driver-v2-ref-only/types.js +0 -10
  145. package/dist/tools/prompts/memory/en/errors.md +0 -155
  146. package/dist/tools/prompts/memory/en/index.md +0 -47
  147. package/dist/tools/prompts/memory/en/principles.md +0 -79
  148. package/dist/tools/prompts/memory/en/scenarios.md +0 -174
  149. package/dist/tools/prompts/memory/en/tools.md +0 -154
  150. package/dist/tools/prompts/memory/zh/errors.md +0 -155
  151. package/dist/tools/prompts/memory/zh/index.md +0 -47
  152. package/dist/tools/prompts/memory/zh/principles.md +0 -79
  153. package/dist/tools/prompts/memory/zh/scenarios.md +0 -174
  154. package/dist/tools/prompts/memory/zh/tools.md +0 -154
@@ -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
- }