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,366 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.executeDriveRound = executeDriveRound;
|
|
4
|
-
const dialog_1 = require("../../dialog");
|
|
5
|
-
const dialog_global_registry_1 = require("../../dialog-global-registry");
|
|
6
|
-
const dialog_run_state_1 = require("../../dialog-run-state");
|
|
7
|
-
const log_1 = require("../../log");
|
|
8
|
-
const load_1 = require("../../minds/load");
|
|
9
|
-
const persistence_1 = require("../../persistence");
|
|
10
|
-
const driver_messages_1 = require("../../shared/i18n/driver-messages");
|
|
11
|
-
const runtime_language_1 = require("../../shared/runtime-language");
|
|
12
|
-
const id_1 = require("../../shared/utils/id");
|
|
13
|
-
const client_1 = require("../client");
|
|
14
|
-
const context_health_1 = require("./context-health");
|
|
15
|
-
const core_1 = require("./core");
|
|
16
|
-
const policy_1 = require("./policy");
|
|
17
|
-
const supdialog_response_1 = require("./supdialog-response");
|
|
18
|
-
async function loadPendingDiagnosticsSnapshot(args) {
|
|
19
|
-
const ownerDialogIdObj = new dialog_1.DialogID(args.ownerDialogId, args.rootId);
|
|
20
|
-
try {
|
|
21
|
-
const pending = await persistence_1.DialogPersistence.loadPendingSubdialogs(ownerDialogIdObj, args.status);
|
|
22
|
-
const matchedSubdialogIds = pending
|
|
23
|
-
.filter((record) => record.subdialogId === args.expectedSubdialogId)
|
|
24
|
-
.map((record) => record.subdialogId);
|
|
25
|
-
return {
|
|
26
|
-
kind: 'loaded',
|
|
27
|
-
ownerDialogId: args.ownerDialogId,
|
|
28
|
-
status: args.status,
|
|
29
|
-
totalCount: pending.length,
|
|
30
|
-
matchedSubdialogIds,
|
|
31
|
-
records: pending.map((record) => ({
|
|
32
|
-
subdialogId: record.subdialogId,
|
|
33
|
-
callType: record.callType,
|
|
34
|
-
targetAgentId: record.targetAgentId,
|
|
35
|
-
sessionSlug: record.sessionSlug,
|
|
36
|
-
createdAt: record.createdAt,
|
|
37
|
-
tellaskSummary: `${(record.mentionList ?? []).join(' ')} ${record.tellaskContent}`
|
|
38
|
-
.trim()
|
|
39
|
-
.slice(0, 160),
|
|
40
|
-
})),
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
catch (err) {
|
|
44
|
-
return {
|
|
45
|
-
kind: 'error',
|
|
46
|
-
ownerDialogId: args.ownerDialogId,
|
|
47
|
-
status: args.status,
|
|
48
|
-
error: err instanceof Error ? err.message : String(err),
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
function resolveEffectivePrompt(dialog, humanPrompt) {
|
|
53
|
-
if (humanPrompt) {
|
|
54
|
-
return humanPrompt;
|
|
55
|
-
}
|
|
56
|
-
const upNext = dialog.takeUpNext();
|
|
57
|
-
if (!upNext) {
|
|
58
|
-
return undefined;
|
|
59
|
-
}
|
|
60
|
-
return {
|
|
61
|
-
content: upNext.prompt,
|
|
62
|
-
msgId: upNext.msgId,
|
|
63
|
-
grammar: upNext.grammar ?? 'markdown',
|
|
64
|
-
userLanguageCode: upNext.userLanguageCode === 'zh' || upNext.userLanguageCode === 'en'
|
|
65
|
-
? upNext.userLanguageCode
|
|
66
|
-
: undefined,
|
|
67
|
-
q4hAnswerCallIds: upNext.q4hAnswerCallIds,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
async function executeDriveRound(args) {
|
|
71
|
-
const [dialog, humanPrompt, waitInQue, driveOptions] = args.driveArgs;
|
|
72
|
-
if (!waitInQue && dialog.isLocked()) {
|
|
73
|
-
throw new Error('Dialog busy driven, see how it proceeded and try again.');
|
|
74
|
-
}
|
|
75
|
-
const release = await dialog.acquire();
|
|
76
|
-
let activeRunPrimed = false;
|
|
77
|
-
let ownsActiveRun = false;
|
|
78
|
-
let interruptedBySignal = false;
|
|
79
|
-
let followUp;
|
|
80
|
-
let driveResult;
|
|
81
|
-
let subdialogReplyTarget;
|
|
82
|
-
const allowResumeFromInterrupted = driveOptions?.allowResumeFromInterrupted === true || humanPrompt?.origin === 'user';
|
|
83
|
-
try {
|
|
84
|
-
// Prime active-run registration right after acquiring dialog lock so user stop can
|
|
85
|
-
// reliably interrupt queued auto-revive drives during preflight.
|
|
86
|
-
const hadActiveRunBefore = (0, dialog_run_state_1.hasActiveRun)(dialog.id);
|
|
87
|
-
(0, dialog_run_state_1.createActiveRun)(dialog.id);
|
|
88
|
-
activeRunPrimed = true;
|
|
89
|
-
ownsActiveRun = !hadActiveRunBefore;
|
|
90
|
-
// "dead" is irreversible for subdialogs. Skip drive if marked dead.
|
|
91
|
-
try {
|
|
92
|
-
const latest = await persistence_1.DialogPersistence.loadDialogLatest(dialog.id, 'running');
|
|
93
|
-
if (dialog.id.selfId !== dialog.id.rootId &&
|
|
94
|
-
latest &&
|
|
95
|
-
latest.runState &&
|
|
96
|
-
latest.runState.kind === 'dead') {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
if (latest && latest.runState && latest.runState.kind === 'proceeding_stop_requested') {
|
|
100
|
-
log_1.log.debug('driver-v2 skip drive while stop request is still being processed', undefined, {
|
|
101
|
-
dialogId: dialog.id.valueOf(),
|
|
102
|
-
reason: latest.runState.reason,
|
|
103
|
-
});
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
if (latest &&
|
|
107
|
-
latest.runState &&
|
|
108
|
-
latest.runState.kind === 'interrupted' &&
|
|
109
|
-
!allowResumeFromInterrupted) {
|
|
110
|
-
log_1.log.debug('driver-v2 skip drive for interrupted dialog without explicit resume/user prompt', undefined, {
|
|
111
|
-
dialogId: dialog.id.valueOf(),
|
|
112
|
-
reason: latest.runState.reason,
|
|
113
|
-
});
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
catch (err) {
|
|
118
|
-
log_1.log.warn('driver-v2 failed to check runState before drive; proceeding best-effort', err, {
|
|
119
|
-
dialogId: dialog.id.valueOf(),
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
// Queued/auto drive (without fresh human input) must not proceed while dialog is
|
|
123
|
-
// suspended by pending Q4H or subdialogs. This prevents duplicate generations when
|
|
124
|
-
// multiple wake-ups race around the same subdialog completion boundary.
|
|
125
|
-
if (!humanPrompt) {
|
|
126
|
-
const suspension = await dialog.getSuspensionStatus();
|
|
127
|
-
if (!suspension.canDrive) {
|
|
128
|
-
const lastTrigger = dialog_global_registry_1.globalDialogRegistry.getLastDriveTrigger(dialog.id.rootId);
|
|
129
|
-
const lastTriggerAgeMs = lastTrigger !== undefined ? Math.max(0, Date.now() - lastTrigger.emittedAtMs) : undefined;
|
|
130
|
-
log_1.log.debug('driver-v2 skip queued auto-drive while dialog is suspended', undefined, {
|
|
131
|
-
dialogId: dialog.id.valueOf(),
|
|
132
|
-
rootId: dialog.id.rootId,
|
|
133
|
-
selfId: dialog.id.selfId,
|
|
134
|
-
waitInQue,
|
|
135
|
-
hasQueuedUpNext: dialog.hasUpNext(),
|
|
136
|
-
waitingQ4H: suspension.q4h,
|
|
137
|
-
waitingSubdialogs: suspension.subdialogs,
|
|
138
|
-
lastDriveTrigger: lastTrigger
|
|
139
|
-
? {
|
|
140
|
-
action: lastTrigger.action,
|
|
141
|
-
source: lastTrigger.source,
|
|
142
|
-
reason: lastTrigger.reason,
|
|
143
|
-
emittedAtMs: lastTrigger.emittedAtMs,
|
|
144
|
-
ageMs: lastTriggerAgeMs,
|
|
145
|
-
entryFound: lastTrigger.entryFound,
|
|
146
|
-
previousNeedsDrive: lastTrigger.previousNeedsDrive,
|
|
147
|
-
nextNeedsDrive: lastTrigger.nextNeedsDrive,
|
|
148
|
-
}
|
|
149
|
-
: null,
|
|
150
|
-
});
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
const minds = await (0, load_1.loadAgentMinds)(dialog.agentId, dialog);
|
|
155
|
-
const policy = (0, policy_1.buildDriverV2Policy)({
|
|
156
|
-
dlg: dialog,
|
|
157
|
-
agent: minds.agent,
|
|
158
|
-
systemPrompt: minds.systemPrompt,
|
|
159
|
-
agentTools: minds.agentTools,
|
|
160
|
-
language: (0, runtime_language_1.getWorkLanguage)(),
|
|
161
|
-
});
|
|
162
|
-
const validation = (0, policy_1.validateDriverV2PolicyInvariants)(policy, (0, runtime_language_1.getWorkLanguage)());
|
|
163
|
-
if (!validation.ok) {
|
|
164
|
-
throw new Error(`driver-v2 policy invariant violation: ${validation.detail}`);
|
|
165
|
-
}
|
|
166
|
-
const snapshot = dialog.getLastContextHealth();
|
|
167
|
-
const hasQueuedUpNext = dialog.hasUpNext();
|
|
168
|
-
const provider = policy.effectiveAgent.provider ?? minds.team.memberDefaults.provider;
|
|
169
|
-
const model = policy.effectiveAgent.model ?? minds.team.memberDefaults.model;
|
|
170
|
-
let cautionRemediationCadenceGenerations = (0, context_health_1.resolveCautionRemediationCadenceGenerations)(undefined);
|
|
171
|
-
if (provider && model) {
|
|
172
|
-
const llmCfg = await client_1.LlmConfig.load();
|
|
173
|
-
const providerCfg = llmCfg.getProvider(provider);
|
|
174
|
-
cautionRemediationCadenceGenerations = (0, context_health_1.resolveCautionRemediationCadenceGenerations)(providerCfg?.models[model]?.caution_remediation_cadence_generations);
|
|
175
|
-
}
|
|
176
|
-
const criticalCountdownRemaining = (0, context_health_1.resolveCriticalCountdownRemaining)(dialog.id.key(), snapshot);
|
|
177
|
-
const healthDecision = (0, context_health_1.decideDriverV2ContextHealth)({
|
|
178
|
-
dialogKey: dialog.id.key(),
|
|
179
|
-
snapshot,
|
|
180
|
-
hadUserPromptThisGen: humanPrompt !== undefined,
|
|
181
|
-
canInjectPromptThisGen: !hasQueuedUpNext,
|
|
182
|
-
cautionRemediationCadenceGenerations,
|
|
183
|
-
criticalCountdownRemaining,
|
|
184
|
-
});
|
|
185
|
-
if (healthDecision.kind === 'suspend') {
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
let healthPrompt;
|
|
189
|
-
if (healthDecision.kind === 'continue') {
|
|
190
|
-
if (healthDecision.reason === 'critical_force_new_course') {
|
|
191
|
-
const language = (0, runtime_language_1.getWorkLanguage)();
|
|
192
|
-
const newCoursePrompt = language === 'zh'
|
|
193
|
-
? '系统因上下文已告急(critical)而自动开启新一程对话,请继续推进任务。'
|
|
194
|
-
: 'System auto-started a new dialog course because context health is critical. Please continue the task.';
|
|
195
|
-
await dialog.startNewCourse(newCoursePrompt);
|
|
196
|
-
dialog.setLastContextHealth({ kind: 'unavailable', reason: 'usage_unavailable' });
|
|
197
|
-
(0, context_health_1.resetContextHealthRoundState)(dialog.id.key());
|
|
198
|
-
}
|
|
199
|
-
else if (!hasQueuedUpNext) {
|
|
200
|
-
const language = (0, runtime_language_1.getWorkLanguage)();
|
|
201
|
-
const guideText = healthDecision.reason === 'caution_soft_remediation'
|
|
202
|
-
? (0, driver_messages_1.formatAgentFacingContextHealthV3RemediationGuide)(language, {
|
|
203
|
-
kind: 'caution',
|
|
204
|
-
mode: 'soft',
|
|
205
|
-
})
|
|
206
|
-
: (0, driver_messages_1.formatAgentFacingContextHealthV3RemediationGuide)(language, {
|
|
207
|
-
kind: 'critical',
|
|
208
|
-
mode: 'countdown',
|
|
209
|
-
promptsRemainingAfterThis: (0, context_health_1.consumeCriticalCountdown)(dialog.id.key()),
|
|
210
|
-
promptsTotal: context_health_1.DRIVER_V2_DEFAULT_CRITICAL_COUNTDOWN_GENERATIONS,
|
|
211
|
-
});
|
|
212
|
-
healthPrompt = {
|
|
213
|
-
content: guideText,
|
|
214
|
-
msgId: (0, id_1.generateShortId)(),
|
|
215
|
-
grammar: 'markdown',
|
|
216
|
-
userLanguageCode: language,
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
args.runtime.driveCount += 1;
|
|
221
|
-
args.runtime.totalGenIterations += 1;
|
|
222
|
-
args.runtime.usedLegacyDriveCore = false;
|
|
223
|
-
const promptForCore = healthDecision.kind === 'continue' && healthDecision.reason === 'critical_force_new_course'
|
|
224
|
-
? undefined
|
|
225
|
-
: (healthPrompt ?? humanPrompt);
|
|
226
|
-
const effectivePrompt = resolveEffectivePrompt(dialog, promptForCore);
|
|
227
|
-
subdialogReplyTarget = effectivePrompt?.subdialogReplyTarget;
|
|
228
|
-
if (effectivePrompt && effectivePrompt.userLanguageCode) {
|
|
229
|
-
dialog.setLastUserLanguageCode(effectivePrompt.userLanguageCode);
|
|
230
|
-
}
|
|
231
|
-
driveResult = await (0, core_1.driveDialogStreamCoreV2)(dialog, effectivePrompt, driveOptions, {
|
|
232
|
-
scheduleDrive: args.scheduleDrive,
|
|
233
|
-
driveDialog: args.driveDialog,
|
|
234
|
-
});
|
|
235
|
-
interruptedBySignal = (0, dialog_run_state_1.getActiveRunSignal)(dialog.id)?.aborted === true;
|
|
236
|
-
if (!interruptedBySignal) {
|
|
237
|
-
followUp = dialog.takeUpNext();
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
finally {
|
|
241
|
-
if (activeRunPrimed && ownsActiveRun) {
|
|
242
|
-
(0, dialog_run_state_1.clearActiveRun)(dialog.id);
|
|
243
|
-
}
|
|
244
|
-
release();
|
|
245
|
-
}
|
|
246
|
-
if (dialog instanceof dialog_1.SubDialog &&
|
|
247
|
-
driveResult &&
|
|
248
|
-
!interruptedBySignal &&
|
|
249
|
-
driveResult.lastAssistantSayingContent !== null) {
|
|
250
|
-
if (typeof driveResult.lastFunctionCallGenseq === 'number' &&
|
|
251
|
-
Number.isFinite(driveResult.lastFunctionCallGenseq) &&
|
|
252
|
-
driveResult.lastFunctionCallGenseq > 0 &&
|
|
253
|
-
(typeof driveResult.lastAssistantSayingGenseq !== 'number' ||
|
|
254
|
-
!Number.isFinite(driveResult.lastAssistantSayingGenseq) ||
|
|
255
|
-
driveResult.lastAssistantSayingGenseq <= driveResult.lastFunctionCallGenseq)) {
|
|
256
|
-
// Any function call means execution is still in-progress. Only supply when the callee
|
|
257
|
-
// has produced a newer assistant saying after the latest function call.
|
|
258
|
-
log_1.log.debug('driver-v2 skip subdialog response supply because latest saying is not after function calls', undefined, {
|
|
259
|
-
rootId: dialog.id.rootId,
|
|
260
|
-
selfId: dialog.id.selfId,
|
|
261
|
-
lastAssistantSayingGenseq: driveResult.lastAssistantSayingGenseq,
|
|
262
|
-
lastFunctionCallGenseq: driveResult.lastFunctionCallGenseq,
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
else {
|
|
266
|
-
const suspension = await dialog.getSuspensionStatus();
|
|
267
|
-
if (!suspension.canDrive || followUp !== undefined) {
|
|
268
|
-
log_1.log.debug('driver-v2 skip subdialog response supply while callee is not finalized', undefined, {
|
|
269
|
-
rootId: dialog.id.rootId,
|
|
270
|
-
selfId: dialog.id.selfId,
|
|
271
|
-
waitingQ4H: suspension.q4h,
|
|
272
|
-
waitingSubdialogs: suspension.subdialogs,
|
|
273
|
-
hasFollowUp: followUp !== undefined,
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
if (typeof driveResult.lastAssistantSayingGenseq !== 'number' ||
|
|
278
|
-
!Number.isFinite(driveResult.lastAssistantSayingGenseq) ||
|
|
279
|
-
driveResult.lastAssistantSayingGenseq <= 0) {
|
|
280
|
-
throw new Error(`Subdialog response supply invariant violation: missing lastAssistantSayingGenseq for dialog=${dialog.id.valueOf()}`);
|
|
281
|
-
}
|
|
282
|
-
const responseGenseq = Math.floor(driveResult.lastAssistantSayingGenseq);
|
|
283
|
-
let supplied = false;
|
|
284
|
-
if (subdialogReplyTarget) {
|
|
285
|
-
supplied = await (0, supdialog_response_1.supplySubdialogResponseToSpecificCallerIfPendingV2)({
|
|
286
|
-
subdialog: dialog,
|
|
287
|
-
responseText: driveResult.lastAssistantSayingContent,
|
|
288
|
-
responseGenseq,
|
|
289
|
-
target: subdialogReplyTarget,
|
|
290
|
-
scheduleDrive: args.scheduleDrive,
|
|
291
|
-
});
|
|
292
|
-
if (!supplied) {
|
|
293
|
-
supplied = await (0, supdialog_response_1.supplySubdialogResponseToAssignedCallerIfPendingV2)({
|
|
294
|
-
subdialog: dialog,
|
|
295
|
-
responseText: driveResult.lastAssistantSayingContent,
|
|
296
|
-
responseGenseq,
|
|
297
|
-
scheduleDrive: args.scheduleDrive,
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
else {
|
|
302
|
-
supplied = await (0, supdialog_response_1.supplySubdialogResponseToAssignedCallerIfPendingV2)({
|
|
303
|
-
subdialog: dialog,
|
|
304
|
-
responseText: driveResult.lastAssistantSayingContent,
|
|
305
|
-
responseGenseq,
|
|
306
|
-
scheduleDrive: args.scheduleDrive,
|
|
307
|
-
});
|
|
308
|
-
}
|
|
309
|
-
if (!supplied && subdialogReplyTarget) {
|
|
310
|
-
const assignment = dialog.assignmentFromSup;
|
|
311
|
-
const ownerDialogIds = Array.from(new Set([subdialogReplyTarget.ownerDialogId, assignment.callerDialogId]));
|
|
312
|
-
const pendingSnapshots = await Promise.all(ownerDialogIds.map(async (ownerDialogId) => loadPendingDiagnosticsSnapshot({
|
|
313
|
-
rootId: dialog.id.rootId,
|
|
314
|
-
ownerDialogId,
|
|
315
|
-
expectedSubdialogId: dialog.id.selfId,
|
|
316
|
-
status: dialog.status,
|
|
317
|
-
})));
|
|
318
|
-
const streamErr = `Subdialog response supply invariant violation: ` +
|
|
319
|
-
`subdialog=${dialog.id.selfId} root=${dialog.id.rootId} ` +
|
|
320
|
-
`targetOwner=${subdialogReplyTarget.ownerDialogId} targetCallType=${subdialogReplyTarget.callType} targetCallId=${subdialogReplyTarget.callId} ` +
|
|
321
|
-
`assignmentCaller=${assignment.callerDialogId} assignmentCallId=${assignment.callId} ` +
|
|
322
|
-
`pendingSnapshots=${pendingSnapshots.length}`;
|
|
323
|
-
try {
|
|
324
|
-
await dialog.streamError(streamErr);
|
|
325
|
-
}
|
|
326
|
-
catch (streamErrPost) {
|
|
327
|
-
log_1.log.warn('driver-v2 failed to emit stream_error_evt for response supply violation', undefined, {
|
|
328
|
-
rootId: dialog.id.rootId,
|
|
329
|
-
selfId: dialog.id.selfId,
|
|
330
|
-
targetOwnerDialogId: subdialogReplyTarget.ownerDialogId,
|
|
331
|
-
targetCallType: subdialogReplyTarget.callType,
|
|
332
|
-
targetCallId: subdialogReplyTarget.callId,
|
|
333
|
-
assignmentCallerDialogId: assignment.callerDialogId,
|
|
334
|
-
assignmentCallId: assignment.callId,
|
|
335
|
-
pendingSnapshots,
|
|
336
|
-
error: streamErrPost instanceof Error ? streamErrPost.message : String(streamErrPost),
|
|
337
|
-
});
|
|
338
|
-
}
|
|
339
|
-
log_1.log.error('driver-v2 subdialog produced response but found no pending caller to supply', undefined, {
|
|
340
|
-
rootId: dialog.id.rootId,
|
|
341
|
-
selfId: dialog.id.selfId,
|
|
342
|
-
targetOwnerDialogId: subdialogReplyTarget.ownerDialogId,
|
|
343
|
-
targetCallType: subdialogReplyTarget.callType,
|
|
344
|
-
targetCallId: subdialogReplyTarget.callId,
|
|
345
|
-
assignmentCallerDialogId: assignment.callerDialogId,
|
|
346
|
-
assignmentCallId: assignment.callId,
|
|
347
|
-
pendingSnapshots,
|
|
348
|
-
});
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
if (followUp) {
|
|
354
|
-
args.scheduleDrive(dialog, {
|
|
355
|
-
waitInQue: true,
|
|
356
|
-
humanPrompt: {
|
|
357
|
-
content: followUp.prompt,
|
|
358
|
-
msgId: followUp.msgId,
|
|
359
|
-
grammar: followUp.grammar ?? 'markdown',
|
|
360
|
-
userLanguageCode: followUp.userLanguageCode === 'zh' || followUp.userLanguageCode === 'en'
|
|
361
|
-
? followUp.userLanguageCode
|
|
362
|
-
: undefined,
|
|
363
|
-
},
|
|
364
|
-
});
|
|
365
|
-
}
|
|
366
|
-
}
|