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.
- package/dist/apps/run-control.js +21 -4
- package/dist/apps/runtime.js +66 -24
- package/dist/dialog.js +23 -1
- package/dist/docs/app-constitution.md +3 -1
- package/dist/docs/app-constitution.zh.md +3 -1
- package/dist/docs/dialog-system.zh.md +5 -5
- package/dist/llm/kernel-driver/context.js +2 -31
- package/dist/llm/kernel-driver/drive.js +6 -8
- package/dist/llm/kernel-driver/subdialog.js +8 -0
- package/dist/minds/system-prompt.js +2 -2
- package/dist/priming.js +4 -0
- package/dist/server/websocket-handler.js +16 -0
- package/dist/server.js +7 -2
- package/dist/shared/diligence.js +2 -2
- package/dist/shared/i18n/driver-messages.js +47 -7
- package/dist/static/assets/{_basePickBy-DOCpneO0.js → _basePickBy-b79Z8z7v.js} +3 -3
- package/dist/static/assets/{_basePickBy-DOCpneO0.js.map → _basePickBy-b79Z8z7v.js.map} +1 -1
- package/dist/static/assets/{_baseUniq-DBZLqTK1.js → _baseUniq-EKRe-CHy.js} +2 -2
- package/dist/static/assets/{_baseUniq-DBZLqTK1.js.map → _baseUniq-EKRe-CHy.js.map} +1 -1
- package/dist/static/assets/{arc-Dw9YkyBZ.js → arc-CBReIrdk.js} +2 -2
- package/dist/static/assets/{arc-Dw9YkyBZ.js.map → arc-CBReIrdk.js.map} +1 -1
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-DiXBIlTy.js → architectureDiagram-VXUJARFQ-arl_gJGi.js} +7 -7
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-DiXBIlTy.js.map → architectureDiagram-VXUJARFQ-arl_gJGi.js.map} +1 -1
- package/dist/static/assets/{blockDiagram-VD42YOAC-CBTqG3TT.js → blockDiagram-VD42YOAC-BvLkPr7Y.js} +7 -7
- package/dist/static/assets/{blockDiagram-VD42YOAC-CBTqG3TT.js.map → blockDiagram-VD42YOAC-BvLkPr7Y.js.map} +1 -1
- package/dist/static/assets/{c4Diagram-YG6GDRKO-CKltdqcg.js → c4Diagram-YG6GDRKO-DLQB9QIV.js} +3 -3
- package/dist/static/assets/{c4Diagram-YG6GDRKO-CKltdqcg.js.map → c4Diagram-YG6GDRKO-DLQB9QIV.js.map} +1 -1
- package/dist/static/assets/{channel-CsfA5ddv.js → channel-C-1aKDRA.js} +2 -2
- package/dist/static/assets/{channel-CsfA5ddv.js.map → channel-C-1aKDRA.js.map} +1 -1
- package/dist/static/assets/{chunk-4BX2VUAB-BCdL9ibi.js → chunk-4BX2VUAB-guy7Bw0c.js} +2 -2
- package/dist/static/assets/{chunk-4BX2VUAB-BCdL9ibi.js.map → chunk-4BX2VUAB-guy7Bw0c.js.map} +1 -1
- package/dist/static/assets/{chunk-55IACEB6-CcKnxlqS.js → chunk-55IACEB6-CPekYUDl.js} +2 -2
- package/dist/static/assets/{chunk-55IACEB6-CcKnxlqS.js.map → chunk-55IACEB6-CPekYUDl.js.map} +1 -1
- package/dist/static/assets/{chunk-B4BG7PRW-BnypOYYo.js → chunk-B4BG7PRW-C7_VGVGd.js} +5 -5
- package/dist/static/assets/{chunk-B4BG7PRW-BnypOYYo.js.map → chunk-B4BG7PRW-C7_VGVGd.js.map} +1 -1
- package/dist/static/assets/{chunk-DI55MBZ5-BGYHpvhR.js → chunk-DI55MBZ5-B7Z_kPEp.js} +4 -4
- package/dist/static/assets/{chunk-DI55MBZ5-BGYHpvhR.js.map → chunk-DI55MBZ5-B7Z_kPEp.js.map} +1 -1
- package/dist/static/assets/{chunk-FMBD7UC4-Crf0Br1R.js → chunk-FMBD7UC4-CNyLnVLQ.js} +2 -2
- package/dist/static/assets/{chunk-FMBD7UC4-Crf0Br1R.js.map → chunk-FMBD7UC4-CNyLnVLQ.js.map} +1 -1
- package/dist/static/assets/{chunk-QN33PNHL-Cg1EQYdQ.js → chunk-QN33PNHL-De0KQ1wi.js} +2 -2
- package/dist/static/assets/{chunk-QN33PNHL-Cg1EQYdQ.js.map → chunk-QN33PNHL-De0KQ1wi.js.map} +1 -1
- package/dist/static/assets/{chunk-QZHKN3VN-DRH7UNkC.js → chunk-QZHKN3VN-DsfWQPDD.js} +2 -2
- package/dist/static/assets/{chunk-QZHKN3VN-DRH7UNkC.js.map → chunk-QZHKN3VN-DsfWQPDD.js.map} +1 -1
- package/dist/static/assets/{chunk-TZMSLE5B-CaZqBdnu.js → chunk-TZMSLE5B-BGHvMn1A.js} +2 -2
- package/dist/static/assets/{chunk-TZMSLE5B-CaZqBdnu.js.map → chunk-TZMSLE5B-BGHvMn1A.js.map} +1 -1
- package/dist/static/assets/{classDiagram-2ON5EDUG-DSsG0iFI.js → classDiagram-2ON5EDUG-JmOuUZWB.js} +6 -6
- package/dist/static/assets/{classDiagram-2ON5EDUG-DSsG0iFI.js.map → classDiagram-2ON5EDUG-JmOuUZWB.js.map} +1 -1
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-DSsG0iFI.js → classDiagram-v2-WZHVMYZB-JmOuUZWB.js} +6 -6
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-DSsG0iFI.js.map → classDiagram-v2-WZHVMYZB-JmOuUZWB.js.map} +1 -1
- package/dist/static/assets/{clone-xhbAL4G8.js → clone-bFKUwLh9.js} +2 -2
- package/dist/static/assets/{clone-xhbAL4G8.js.map → clone-bFKUwLh9.js.map} +1 -1
- package/dist/static/assets/{cose-bilkent-S5V4N54A-B7Rtmhjt.js → cose-bilkent-S5V4N54A-B-TrWbLI.js} +2 -2
- package/dist/static/assets/{cose-bilkent-S5V4N54A-B7Rtmhjt.js.map → cose-bilkent-S5V4N54A-B-TrWbLI.js.map} +1 -1
- package/dist/static/assets/{dagre-6UL2VRFP-BkqhLTnX.js → dagre-6UL2VRFP-eFdBPojd.js} +7 -7
- package/dist/static/assets/{dagre-6UL2VRFP-BkqhLTnX.js.map → dagre-6UL2VRFP-eFdBPojd.js.map} +1 -1
- package/dist/static/assets/{diagram-PSM6KHXK-CZKtGq3a.js → diagram-PSM6KHXK-CG-pEDnm.js} +8 -8
- package/dist/static/assets/{diagram-PSM6KHXK-CZKtGq3a.js.map → diagram-PSM6KHXK-CG-pEDnm.js.map} +1 -1
- package/dist/static/assets/{diagram-QEK2KX5R-CnMVuAHl.js → diagram-QEK2KX5R-DIMTH7OH.js} +7 -7
- package/dist/static/assets/{diagram-QEK2KX5R-CnMVuAHl.js.map → diagram-QEK2KX5R-DIMTH7OH.js.map} +1 -1
- package/dist/static/assets/{diagram-S2PKOQOG-CeSf7JXc.js → diagram-S2PKOQOG-CtsocJ3s.js} +7 -7
- package/dist/static/assets/{diagram-S2PKOQOG-CeSf7JXc.js.map → diagram-S2PKOQOG-CtsocJ3s.js.map} +1 -1
- package/dist/static/assets/{erDiagram-Q2GNP2WA-CSt8_Jg8.js → erDiagram-Q2GNP2WA-DE2fcc5h.js} +5 -5
- package/dist/static/assets/{erDiagram-Q2GNP2WA-CSt8_Jg8.js.map → erDiagram-Q2GNP2WA-DE2fcc5h.js.map} +1 -1
- package/dist/static/assets/{flowDiagram-NV44I4VS-D5Ml-CXN.js → flowDiagram-NV44I4VS-CRmxnCqy.js} +6 -6
- package/dist/static/assets/{flowDiagram-NV44I4VS-D5Ml-CXN.js.map → flowDiagram-NV44I4VS-CRmxnCqy.js.map} +1 -1
- package/dist/static/assets/{ganttDiagram-JELNMOA3-CyMWbWsa.js → ganttDiagram-JELNMOA3-MIOIERui.js} +3 -3
- package/dist/static/assets/{ganttDiagram-JELNMOA3-CyMWbWsa.js.map → ganttDiagram-JELNMOA3-MIOIERui.js.map} +1 -1
- package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-vl516Is8.js → gitGraphDiagram-V2S2FVAM-crIYDBIk.js} +8 -8
- package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-vl516Is8.js.map → gitGraphDiagram-V2S2FVAM-crIYDBIk.js.map} +1 -1
- package/dist/static/assets/{graph-BGZ_sL_x.js → graph-CB0VmlGP.js} +3 -3
- package/dist/static/assets/{graph-BGZ_sL_x.js.map → graph-CB0VmlGP.js.map} +1 -1
- package/dist/static/assets/{index-C-RsyM0K.js → index-CzBEs1w4.js} +53 -35
- package/dist/static/assets/{index-C-RsyM0K.js.map → index-CzBEs1w4.js.map} +1 -1
- package/dist/static/assets/{infoDiagram-HS3SLOUP-6wx0LbHY.js → infoDiagram-HS3SLOUP-CnsCAuJf.js} +6 -6
- package/dist/static/assets/{infoDiagram-HS3SLOUP-6wx0LbHY.js.map → infoDiagram-HS3SLOUP-CnsCAuJf.js.map} +1 -1
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-YPjC-r77.js → journeyDiagram-XKPGCS4Q-BtzLS-NC.js} +5 -5
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-YPjC-r77.js.map → journeyDiagram-XKPGCS4Q-BtzLS-NC.js.map} +1 -1
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-DlG-ZWTO.js → kanban-definition-3W4ZIXB7-CwykQ3vY.js} +3 -3
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-DlG-ZWTO.js.map → kanban-definition-3W4ZIXB7-CwykQ3vY.js.map} +1 -1
- package/dist/static/assets/{layout-BZJKhYY3.js → layout-Cu6uuh5P.js} +5 -5
- package/dist/static/assets/{layout-BZJKhYY3.js.map → layout-Cu6uuh5P.js.map} +1 -1
- package/dist/static/assets/{linear-Bau37zh5.js → linear-BXsc4B31.js} +2 -2
- package/dist/static/assets/{linear-Bau37zh5.js.map → linear-BXsc4B31.js.map} +1 -1
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-n2WXgX4b.js → mindmap-definition-VGOIOE7T-BtD61cN8.js} +4 -4
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-n2WXgX4b.js.map → mindmap-definition-VGOIOE7T-BtD61cN8.js.map} +1 -1
- package/dist/static/assets/{pieDiagram-ADFJNKIX-DgW7FkI4.js → pieDiagram-ADFJNKIX-B2EbMDmb.js} +8 -8
- package/dist/static/assets/{pieDiagram-ADFJNKIX-DgW7FkI4.js.map → pieDiagram-ADFJNKIX-B2EbMDmb.js.map} +1 -1
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BtsDjIpC.js → quadrantDiagram-AYHSOK5B-BwYvMil1.js} +3 -3
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-BtsDjIpC.js.map → quadrantDiagram-AYHSOK5B-BwYvMil1.js.map} +1 -1
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DPzuPEge.js → requirementDiagram-UZGBJVZJ-syDAMAIY.js} +4 -4
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-DPzuPEge.js.map → requirementDiagram-UZGBJVZJ-syDAMAIY.js.map} +1 -1
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-BJS1ETtL.js → sankeyDiagram-TZEHDZUN-ifN71SAO.js} +2 -2
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-BJS1ETtL.js.map → sankeyDiagram-TZEHDZUN-ifN71SAO.js.map} +1 -1
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-DXEpa4ly.js → sequenceDiagram-WL72ISMW-ytS-PG6f.js} +4 -4
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-DXEpa4ly.js.map → sequenceDiagram-WL72ISMW-ytS-PG6f.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-CGU6VJY5.js → stateDiagram-FKZM4ZOC-BICTjIiL.js} +9 -9
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-CGU6VJY5.js.map → stateDiagram-FKZM4ZOC-BICTjIiL.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Dx_GvlFA.js → stateDiagram-v2-4FDKWEC3-BD67hjdo.js} +5 -5
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Dx_GvlFA.js.map → stateDiagram-v2-4FDKWEC3-BD67hjdo.js.map} +1 -1
- package/dist/static/assets/{timeline-definition-IT6M3QCI-DcWLmdgJ.js → timeline-definition-IT6M3QCI-Bn4PeFHS.js} +3 -3
- package/dist/static/assets/{timeline-definition-IT6M3QCI-DcWLmdgJ.js.map → timeline-definition-IT6M3QCI-Bn4PeFHS.js.map} +1 -1
- package/dist/static/assets/{treemap-GDKQZRPO-BhUwKF9C.js → treemap-GDKQZRPO-C-_A6aNF.js} +5 -5
- package/dist/static/assets/{treemap-GDKQZRPO-BhUwKF9C.js.map → treemap-GDKQZRPO-C-_A6aNF.js.map} +1 -1
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-Cr4t0oCq.js → xychartDiagram-PRI3JC2R-BaUb_VjF.js} +3 -3
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-Cr4t0oCq.js.map → xychartDiagram-PRI3JC2R-BaUb_VjF.js.map} +1 -1
- package/dist/static/index.html +1 -1
- package/dist/tools/pending-tellask-reminder.js +2 -2
- package/dist/tools/prompts/team_mgmt/en/errors.md +6 -0
- package/dist/tools/prompts/team_mgmt/zh/errors.md +6 -0
- package/dist/tools/team_mgmt.js +29 -0
- package/package.json +1 -1
- package/dist/apps/installed-file.js +0 -207
- package/dist/apps/runtime-port.js +0 -91
- package/dist/docs/kernel-app-architecture.md +0 -286
- package/dist/docs/kernel-app-architecture.zh.md +0 -285
- package/dist/llm/driver-entry.js +0 -28
- package/dist/llm/driver-v2/context-health.js +0 -121
- package/dist/llm/driver-v2/context.js +0 -56
- package/dist/llm/driver-v2/core.js +0 -1545
- package/dist/llm/driver-v2/index.js +0 -26
- package/dist/llm/driver-v2/orchestrator.js +0 -158
- package/dist/llm/driver-v2/policy.js +0 -129
- package/dist/llm/driver-v2/restore-dialog-hierarchy.js +0 -73
- package/dist/llm/driver-v2/round.js +0 -366
- package/dist/llm/driver-v2/runtime-utils.js +0 -365
- package/dist/llm/driver-v2/saying-events.js +0 -20
- package/dist/llm/driver-v2/subdialog-txn.js +0 -42
- package/dist/llm/driver-v2/supdialog-response.js +0 -400
- package/dist/llm/driver-v2/tellask-bridge.js +0 -1148
- package/dist/llm/driver-v2/types.js +0 -10
- package/dist/llm/driver-v2-ref-only/context-health.js +0 -121
- package/dist/llm/driver-v2-ref-only/context.js +0 -17
- package/dist/llm/driver-v2-ref-only/core.js +0 -1710
- package/dist/llm/driver-v2-ref-only/index.js +0 -26
- package/dist/llm/driver-v2-ref-only/orchestrator.js +0 -158
- package/dist/llm/driver-v2-ref-only/policy.js +0 -129
- package/dist/llm/driver-v2-ref-only/restore-dialog-hierarchy.js +0 -73
- package/dist/llm/driver-v2-ref-only/round.js +0 -366
- package/dist/llm/driver-v2-ref-only/runtime-utils.js +0 -473
- package/dist/llm/driver-v2-ref-only/saying-events.js +0 -18
- package/dist/llm/driver-v2-ref-only/subdialog-txn.js +0 -42
- package/dist/llm/driver-v2-ref-only/supdialog-response.js +0 -453
- package/dist/llm/driver-v2-ref-only/tellask-bridge.js +0 -1178
- package/dist/llm/driver-v2-ref-only/types.js +0 -10
- package/dist/tools/prompts/memory/en/errors.md +0 -155
- package/dist/tools/prompts/memory/en/index.md +0 -47
- package/dist/tools/prompts/memory/en/principles.md +0 -79
- package/dist/tools/prompts/memory/en/scenarios.md +0 -174
- package/dist/tools/prompts/memory/en/tools.md +0 -154
- package/dist/tools/prompts/memory/zh/errors.md +0 -155
- package/dist/tools/prompts/memory/zh/index.md +0 -47
- package/dist/tools/prompts/memory/zh/principles.md +0 -79
- package/dist/tools/prompts/memory/zh/scenarios.md +0 -174
- 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
|
-
}
|