dominds 1.13.2 → 1.15.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.
- package/dist/bootstrap/global-dialog-event-broadcaster.d.ts +18 -0
- package/dist/bootstrap/global-dialog-event-broadcaster.js +81 -0
- package/dist/dialog-fork.js +13 -12
- package/dist/dialog.d.ts +61 -50
- package/dist/dialog.js +284 -78
- package/dist/docs/dialog-system.md +12 -0
- package/dist/docs/dialog-system.zh.md +12 -0
- package/dist/docs/dominds-terminology.md +17 -0
- package/dist/docs/issues/global-dialog-event-broadcaster-missing.md +128 -0
- package/dist/docs/llm-provider-isolation.md +35 -0
- package/dist/docs/llm-provider-isolation.zh.md +35 -0
- package/dist/llm/client.d.ts +2 -1
- package/dist/llm/defaults.yaml +118 -4
- package/dist/llm/gen/anthropic.js +2 -4
- package/dist/llm/gen/codex.d.ts +11 -0
- package/dist/llm/gen/codex.js +41 -31
- package/dist/llm/gen/failure-classifier.js +17 -0
- package/dist/llm/gen/mock.js +45 -21
- package/dist/llm/gen/openai-compatible.d.ts +2 -0
- package/dist/llm/gen/openai-compatible.js +43 -38
- package/dist/llm/gen/openai.d.ts +3 -1
- package/dist/llm/gen/openai.js +888 -71
- package/dist/llm/gen/tool-call-context.d.ts +7 -2
- package/dist/llm/gen/tool-call-context.js +55 -13
- package/dist/llm/gen.d.ts +60 -3
- package/dist/llm/kernel-driver/context.js +1 -1
- package/dist/llm/kernel-driver/drive.js +374 -348
- package/dist/llm/kernel-driver/flow.js +3 -3
- package/dist/llm/kernel-driver/guardrails.d.ts +1 -1
- package/dist/llm/kernel-driver/guardrails.js +4 -4
- package/dist/llm/kernel-driver/runtime.js +11 -29
- package/dist/llm/kernel-driver/subdialog.js +56 -5
- package/dist/llm/kernel-driver/tellask-special.d.ts +38 -12
- package/dist/llm/kernel-driver/tellask-special.js +489 -180
- package/dist/llm/kernel-driver/types.d.ts +1 -1
- package/dist/persistence.d.ts +30 -62
- package/dist/persistence.js +978 -986
- package/dist/priming.js +398 -365
- package/dist/recovery/reply-special.js +3 -3
- package/dist/runtime/inter-dialog-format.d.ts +1 -1
- package/dist/runtime/inter-dialog-format.js +1 -1
- package/dist/runtime/reply-prompt-copy.js +4 -4
- package/dist/server/setup-routes.js +26 -5
- package/dist/server/snippets-routes.d.ts +1 -0
- package/dist/server/snippets-routes.js +20 -9
- package/dist/server/websocket-handler.js +58 -25
- package/dist/shared/utils/fbr.js +12 -8
- package/dist/shared/utils/inter-dialog-format.js +6 -4
- package/dist/team.d.ts +24 -13
- package/dist/team.js +123 -32
- package/dist/tool.d.ts +26 -0
- package/dist/tool.js +97 -0
- package/dist/tools/team_mgmt.js +18 -0
- package/package.json +2 -2
- package/webapp/dist/assets/{_basePickBy-CBOtd63g.js → _basePickBy-DsirmCgI.js} +3 -3
- package/webapp/dist/assets/_basePickBy-DsirmCgI.js.map +1 -0
- package/webapp/dist/assets/{_baseUniq-mfoKz4Wm.js → _baseUniq-tR6G8loB.js} +2 -2
- package/webapp/dist/assets/_baseUniq-tR6G8loB.js.map +1 -0
- package/webapp/dist/assets/{arc-Dq0WZLyu.js → arc-CzxpASkZ.js} +2 -2
- package/webapp/dist/assets/arc-CzxpASkZ.js.map +1 -0
- package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-CNmygmp3.js → architectureDiagram-2XIMDMQ5-BSH7H5oI.js} +26 -8
- package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-BSH7H5oI.js.map +1 -0
- package/webapp/dist/assets/{blockDiagram-VD42YOAC-DvE0lybt.js → blockDiagram-WCTKOSBZ-DpLIr7yO.js} +187 -170
- package/webapp/dist/assets/blockDiagram-WCTKOSBZ-DpLIr7yO.js.map +1 -0
- package/webapp/dist/assets/{c4Diagram-YG6GDRKO-CR7zJ2_u.js → c4Diagram-IC4MRINW-WuYKgWfY.js} +4 -4
- package/webapp/dist/assets/c4Diagram-IC4MRINW-WuYKgWfY.js.map +1 -0
- package/webapp/dist/assets/{channel-DrTrnYx4.js → channel-B-v9dqLN.js} +2 -2
- package/webapp/dist/assets/channel-B-v9dqLN.js.map +1 -0
- package/webapp/dist/assets/{chunk-4BX2VUAB-CVuJEIeN.js → chunk-4BX2VUAB-MtFUfKZy.js} +2 -2
- package/webapp/dist/assets/chunk-4BX2VUAB-MtFUfKZy.js.map +1 -0
- package/webapp/dist/assets/{chunk-55IACEB6-BxUoXApB.js → chunk-55IACEB6-rY9AJdzj.js} +2 -2
- package/webapp/dist/assets/chunk-55IACEB6-rY9AJdzj.js.map +1 -0
- package/webapp/dist/assets/{chunk-FMBD7UC4-TX-LVAaV.js → chunk-FMBD7UC4-B-RtOs7e.js} +2 -2
- package/webapp/dist/assets/chunk-FMBD7UC4-B-RtOs7e.js.map +1 -0
- package/webapp/dist/assets/{chunk-TZMSLE5B-Cw689yRl.js → chunk-JSJVCQXG-Da1d3uS4.js} +14 -6
- package/webapp/dist/assets/chunk-JSJVCQXG-Da1d3uS4.js.map +1 -0
- package/webapp/dist/assets/{chunk-QN33PNHL-D1uiKlOO.js → chunk-KX2RTZJC-DH9UrpuG.js} +2 -2
- package/webapp/dist/assets/chunk-KX2RTZJC-DH9UrpuG.js.map +1 -0
- package/webapp/dist/assets/{chunk-DI55MBZ5-SAhxUTqQ.js → chunk-NQ4KR5QH-CK365lrr.js} +9 -7
- package/webapp/dist/assets/chunk-NQ4KR5QH-CK365lrr.js.map +1 -0
- package/webapp/dist/assets/{chunk-QZHKN3VN-BxuV0Oba.js → chunk-QZHKN3VN-BCaWPGDm.js} +2 -2
- package/webapp/dist/assets/chunk-QZHKN3VN-BCaWPGDm.js.map +1 -0
- package/webapp/dist/assets/{chunk-B4BG7PRW-DpMa3-9L.js → chunk-WL4C6EOR-DDCnEwft.js} +171 -121
- package/webapp/dist/assets/chunk-WL4C6EOR-DDCnEwft.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-2ON5EDUG-BTTGianr.js → classDiagram-VBA2DB6C-CvMBU4WA.js} +7 -6
- package/webapp/dist/assets/classDiagram-VBA2DB6C-CvMBU4WA.js.map +1 -0
- package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-BTTGianr.js → classDiagram-v2-RAHNMMFH-CvMBU4WA.js} +7 -6
- package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-CvMBU4WA.js.map +1 -0
- package/webapp/dist/assets/{clone-Dk8cAI3I.js → clone-r98jR0MC.js} +2 -2
- package/webapp/dist/assets/clone-r98jR0MC.js.map +1 -0
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BjJnzB2N.js → cose-bilkent-S5V4N54A-t6J60Ogk.js} +2 -2
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-t6J60Ogk.js.map +1 -0
- package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
- package/webapp/dist/assets/{dagre-6UL2VRFP-VF-xGhAf.js → dagre-KLK3FWXG-BlqmY2DV.js} +7 -7
- package/webapp/dist/assets/dagre-KLK3FWXG-BlqmY2DV.js.map +1 -0
- package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
- package/webapp/dist/assets/{diagram-PSM6KHXK-Ba5U0oRY.js → diagram-E7M64L7V-FwCHeIUD.js} +10 -10
- package/webapp/dist/assets/diagram-E7M64L7V-FwCHeIUD.js.map +1 -0
- package/webapp/dist/assets/{diagram-QEK2KX5R-DoYCnEw_.js → diagram-IFDJBPK2-NhtmkuZG.js} +9 -8
- package/webapp/dist/assets/diagram-IFDJBPK2-NhtmkuZG.js.map +1 -0
- package/webapp/dist/assets/{diagram-S2PKOQOG-CkK4SRyE.js → diagram-P4PSJMXO-B9FcmokX.js} +8 -8
- package/webapp/dist/assets/diagram-P4PSJMXO-B9FcmokX.js.map +1 -0
- package/webapp/dist/assets/{erDiagram-Q2GNP2WA-DkI5eYww.js → erDiagram-INFDFZHY-DHKmWvtB.js} +96 -75
- package/webapp/dist/assets/erDiagram-INFDFZHY-DHKmWvtB.js.map +1 -0
- package/webapp/dist/assets/{flowDiagram-NV44I4VS-wOdPUQ7Y.js → flowDiagram-PKNHOUZH-C7Zi8I7T.js} +98 -81
- package/webapp/dist/assets/flowDiagram-PKNHOUZH-C7Zi8I7T.js.map +1 -0
- package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BtRWgkUH.js → ganttDiagram-A5KZAMGK-Cv2T8tz_.js} +28 -3
- package/webapp/dist/assets/ganttDiagram-A5KZAMGK-Cv2T8tz_.js.map +1 -0
- package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-Bsz7u1vi.js → gitGraphDiagram-K3NZZRJ6-DztaipJU.js} +38 -46
- package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-DztaipJU.js.map +1 -0
- package/webapp/dist/assets/graph-C5yf62Vs.js +782 -0
- package/webapp/dist/assets/graph-C5yf62Vs.js.map +1 -0
- package/webapp/dist/assets/{index-xvYYeHuy.css → index-YaxF76or.css} +1 -1
- package/webapp/dist/assets/{index-rYmIohM_.js → index-hve5MWPs.js} +1603 -1415
- package/webapp/dist/assets/index-hve5MWPs.js.map +1 -0
- package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BMaxCvH5.js → infoDiagram-LFFYTUFH-VgsbBPZP.js} +7 -7
- package/webapp/dist/assets/infoDiagram-LFFYTUFH-VgsbBPZP.js.map +1 -0
- package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-C7j3YWdw.js +966 -0
- package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-C7j3YWdw.js.map +1 -0
- package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-ejyerzmG.js → journeyDiagram-4ABVD52K-OO8sev-Y.js} +5 -5
- package/webapp/dist/assets/journeyDiagram-4ABVD52K-OO8sev-Y.js.map +1 -0
- package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-CYj35TEs.js → kanban-definition-K7BYSVSG-DiYCC1Ig.js} +5 -3
- package/webapp/dist/assets/kanban-definition-K7BYSVSG-DiYCC1Ig.js.map +1 -0
- package/webapp/dist/assets/{layout-7Ql4zmuL.js → layout-DdZSgGdu.js} +5 -5
- package/webapp/dist/assets/layout-DdZSgGdu.js.map +1 -0
- package/webapp/dist/assets/{linear-CVmgVPuZ.js → linear-7-aHtaFi.js} +2 -2
- package/webapp/dist/assets/linear-7-aHtaFi.js.map +1 -0
- package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-DOpxjGVo.js → mindmap-definition-YRQLILUH-IG3I-RdD.js} +7 -5
- package/webapp/dist/assets/mindmap-definition-YRQLILUH-IG3I-RdD.js.map +1 -0
- package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
- package/webapp/dist/assets/{pieDiagram-ADFJNKIX-CLQjpmAG.js → pieDiagram-SKSYHLDU-z68KJT5r.js} +8 -8
- package/webapp/dist/assets/pieDiagram-SKSYHLDU-z68KJT5r.js.map +1 -0
- package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-ClD_bz7z.js → quadrantDiagram-337W2JSQ-DaENWdO6.js} +3 -3
- package/webapp/dist/assets/quadrantDiagram-337W2JSQ-DaENWdO6.js.map +1 -0
- package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-DOpb-TWH.js → requirementDiagram-Z7DCOOCP-ROTFv4sa.js} +16 -6
- package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-ROTFv4sa.js.map +1 -0
- package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-D8Hsj3yx.js → sankeyDiagram-WA2Y5GQK-CK7qtpzw.js} +2 -2
- package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-CK7qtpzw.js.map +1 -0
- package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-CFMNjBER.js → sequenceDiagram-2WXFIKYE-R5lDySeI.js} +601 -201
- package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-R5lDySeI.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-BQeDlw0P.js → stateDiagram-RAJIS63D-sr7msF5U.js} +9 -9
- package/webapp/dist/assets/stateDiagram-RAJIS63D-sr7msF5U.js.map +1 -0
- package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-DscX61Rs.js → stateDiagram-v2-FVOUBMTO-X663liwS.js} +5 -5
- package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-X663liwS.js.map +1 -0
- package/webapp/dist/assets/{timeline-definition-IT6M3QCI-BcXPSTiw.js → timeline-definition-YZTLITO2-Bw0TdG26.js} +3 -3
- package/webapp/dist/assets/timeline-definition-YZTLITO2-Bw0TdG26.js.map +1 -0
- package/webapp/dist/assets/{treemap-GDKQZRPO-BBr4UV0Z.js → treemap-KZPCXAKY-D_sjKwI7.js} +37 -24
- package/webapp/dist/assets/treemap-KZPCXAKY-D_sjKwI7.js.map +1 -0
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-DhlHIHid.js +2487 -0
- package/webapp/dist/assets/vennDiagram-LZ73GAT5-DhlHIHid.js.map +1 -0
- package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-CS5RAtQE.js → xychartDiagram-JWTSCODW-C65ESjTc.js} +4 -4
- package/webapp/dist/assets/xychartDiagram-JWTSCODW-C65ESjTc.js.map +1 -0
- package/webapp/dist/index.html +2 -2
- package/webapp/dist/assets/_basePickBy-CBOtd63g.js.map +0 -1
- package/webapp/dist/assets/_baseUniq-mfoKz4Wm.js.map +0 -1
- package/webapp/dist/assets/arc-Dq0WZLyu.js.map +0 -1
- package/webapp/dist/assets/architectureDiagram-VXUJARFQ-CNmygmp3.js.map +0 -1
- package/webapp/dist/assets/blockDiagram-VD42YOAC-DvE0lybt.js.map +0 -1
- package/webapp/dist/assets/c4Diagram-YG6GDRKO-CR7zJ2_u.js.map +0 -1
- package/webapp/dist/assets/channel-DrTrnYx4.js.map +0 -1
- package/webapp/dist/assets/chunk-4BX2VUAB-CVuJEIeN.js.map +0 -1
- package/webapp/dist/assets/chunk-55IACEB6-BxUoXApB.js.map +0 -1
- package/webapp/dist/assets/chunk-B4BG7PRW-DpMa3-9L.js.map +0 -1
- package/webapp/dist/assets/chunk-DI55MBZ5-SAhxUTqQ.js.map +0 -1
- package/webapp/dist/assets/chunk-FMBD7UC4-TX-LVAaV.js.map +0 -1
- package/webapp/dist/assets/chunk-QN33PNHL-D1uiKlOO.js.map +0 -1
- package/webapp/dist/assets/chunk-QZHKN3VN-BxuV0Oba.js.map +0 -1
- package/webapp/dist/assets/chunk-TZMSLE5B-Cw689yRl.js.map +0 -1
- package/webapp/dist/assets/classDiagram-2ON5EDUG-BTTGianr.js.map +0 -1
- package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-BTTGianr.js.map +0 -1
- package/webapp/dist/assets/clone-Dk8cAI3I.js.map +0 -1
- package/webapp/dist/assets/cose-bilkent-S5V4N54A-BjJnzB2N.js.map +0 -1
- package/webapp/dist/assets/dagre-6UL2VRFP-VF-xGhAf.js.map +0 -1
- package/webapp/dist/assets/diagram-PSM6KHXK-Ba5U0oRY.js.map +0 -1
- package/webapp/dist/assets/diagram-QEK2KX5R-DoYCnEw_.js.map +0 -1
- package/webapp/dist/assets/diagram-S2PKOQOG-CkK4SRyE.js.map +0 -1
- package/webapp/dist/assets/erDiagram-Q2GNP2WA-DkI5eYww.js.map +0 -1
- package/webapp/dist/assets/flowDiagram-NV44I4VS-wOdPUQ7Y.js.map +0 -1
- package/webapp/dist/assets/ganttDiagram-JELNMOA3-BtRWgkUH.js.map +0 -1
- package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-Bsz7u1vi.js.map +0 -1
- package/webapp/dist/assets/graph-DAMkuTbn.js +0 -425
- package/webapp/dist/assets/graph-DAMkuTbn.js.map +0 -1
- package/webapp/dist/assets/index-rYmIohM_.js.map +0 -1
- package/webapp/dist/assets/infoDiagram-HS3SLOUP-BMaxCvH5.js.map +0 -1
- package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-ejyerzmG.js.map +0 -1
- package/webapp/dist/assets/kanban-definition-3W4ZIXB7-CYj35TEs.js.map +0 -1
- package/webapp/dist/assets/layout-7Ql4zmuL.js.map +0 -1
- package/webapp/dist/assets/linear-CVmgVPuZ.js.map +0 -1
- package/webapp/dist/assets/mindmap-definition-VGOIOE7T-DOpxjGVo.js.map +0 -1
- package/webapp/dist/assets/pieDiagram-ADFJNKIX-CLQjpmAG.js.map +0 -1
- package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-ClD_bz7z.js.map +0 -1
- package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-DOpb-TWH.js.map +0 -1
- package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-D8Hsj3yx.js.map +0 -1
- package/webapp/dist/assets/sequenceDiagram-WL72ISMW-CFMNjBER.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-FKZM4ZOC-BQeDlw0P.js.map +0 -1
- package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3-DscX61Rs.js.map +0 -1
- package/webapp/dist/assets/timeline-definition-IT6M3QCI-BcXPSTiw.js.map +0 -1
- package/webapp/dist/assets/treemap-GDKQZRPO-BBr4UV0Z.js.map +0 -1
- package/webapp/dist/assets/xychartDiagram-PRI3JC2R-CS5RAtQE.js.map +0 -1
package/dist/llm/gen/mock.js
CHANGED
|
@@ -63,10 +63,19 @@ const promises_1 = __importDefault(require("fs/promises"));
|
|
|
63
63
|
const path_1 = __importDefault(require("path"));
|
|
64
64
|
const yaml_1 = __importDefault(require("yaml"));
|
|
65
65
|
const log_1 = require("../../log");
|
|
66
|
+
const reply_prompt_copy_1 = require("../../runtime/reply-prompt-copy");
|
|
66
67
|
const REPLY_TOOL_REMINDER_PREFIXES = [
|
|
67
68
|
'[Dominds replyTellask required]',
|
|
68
69
|
'[Dominds 必须调用回复工具]',
|
|
69
70
|
];
|
|
71
|
+
const RUNTIME_PROMPT_WRAPPER_PREFIXES = [
|
|
72
|
+
reply_prompt_copy_1.ACTIVE_REPLY_TOOL_PREFIX_EN,
|
|
73
|
+
reply_prompt_copy_1.ACTIVE_REPLY_TOOL_PREFIX_ZH,
|
|
74
|
+
reply_prompt_copy_1.REPLY_REASSERTION_PREFIX_EN,
|
|
75
|
+
reply_prompt_copy_1.REPLY_REASSERTION_PREFIX_ZH,
|
|
76
|
+
reply_prompt_copy_1.REPLY_SUPPRESSION_PREFIX_EN,
|
|
77
|
+
reply_prompt_copy_1.REPLY_SUPPRESSION_PREFIX_ZH,
|
|
78
|
+
];
|
|
70
79
|
function normalizeDelayMs(value) {
|
|
71
80
|
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
72
81
|
return 0;
|
|
@@ -116,12 +125,11 @@ class MockGen {
|
|
|
116
125
|
case 'prompting_msg':
|
|
117
126
|
case 'func_result_msg':
|
|
118
127
|
case 'tellask_result_msg':
|
|
119
|
-
case '
|
|
128
|
+
case 'tellask_carryover_msg':
|
|
120
129
|
return { content: msg.content, role: msg.role };
|
|
121
130
|
case 'environment_msg':
|
|
122
131
|
case 'transient_guide_msg':
|
|
123
132
|
case 'saying_msg':
|
|
124
|
-
case 'ui_only_markdown_msg':
|
|
125
133
|
case 'thinking_msg':
|
|
126
134
|
case 'func_call_msg':
|
|
127
135
|
break;
|
|
@@ -141,11 +149,10 @@ class MockGen {
|
|
|
141
149
|
case 'transient_guide_msg':
|
|
142
150
|
case 'prompting_msg':
|
|
143
151
|
case 'saying_msg':
|
|
144
|
-
case 'ui_only_markdown_msg':
|
|
145
152
|
case 'thinking_msg':
|
|
146
153
|
case 'func_result_msg':
|
|
147
154
|
case 'tellask_result_msg':
|
|
148
|
-
case '
|
|
155
|
+
case 'tellask_carryover_msg':
|
|
149
156
|
return lastMsg.content;
|
|
150
157
|
case 'func_call_msg':
|
|
151
158
|
return '';
|
|
@@ -229,11 +236,10 @@ class MockGen {
|
|
|
229
236
|
case 'transient_guide_msg':
|
|
230
237
|
case 'prompting_msg':
|
|
231
238
|
case 'saying_msg':
|
|
232
|
-
case 'ui_only_markdown_msg':
|
|
233
239
|
case 'thinking_msg':
|
|
234
240
|
case 'func_result_msg':
|
|
235
241
|
case 'tellask_result_msg':
|
|
236
|
-
case '
|
|
242
|
+
case 'tellask_carryover_msg':
|
|
237
243
|
availableContents.push(msg.content);
|
|
238
244
|
break;
|
|
239
245
|
case 'func_call_msg':
|
|
@@ -301,17 +307,37 @@ class MockGen {
|
|
|
301
307
|
if (!role) {
|
|
302
308
|
throw new Error('role is required for mock response matching');
|
|
303
309
|
}
|
|
304
|
-
const
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
310
|
+
const normalizedInputs = (() => {
|
|
311
|
+
const variants = new Set();
|
|
312
|
+
const trimmed = input.trim();
|
|
313
|
+
if (trimmed !== '') {
|
|
314
|
+
variants.add(trimmed.toLowerCase());
|
|
315
|
+
}
|
|
316
|
+
const hasRuntimeWrapper = RUNTIME_PROMPT_WRAPPER_PREFIXES.some((prefix) => trimmed.startsWith(prefix));
|
|
317
|
+
if (!hasRuntimeWrapper) {
|
|
318
|
+
return [...variants];
|
|
319
|
+
}
|
|
320
|
+
const separatorIndex = trimmed.indexOf('\n\n');
|
|
321
|
+
if (separatorIndex < 0) {
|
|
322
|
+
return [...variants];
|
|
323
|
+
}
|
|
324
|
+
const stripped = trimmed.slice(separatorIndex + 2).trim();
|
|
325
|
+
if (stripped !== '') {
|
|
326
|
+
variants.add(stripped.toLowerCase());
|
|
327
|
+
}
|
|
328
|
+
return [...variants];
|
|
329
|
+
})();
|
|
330
|
+
for (const normalizedInput of normalizedInputs) {
|
|
331
|
+
const exactKey = `${role}:${normalizedInput}`;
|
|
332
|
+
const candidates = database.lookupMap.get(exactKey);
|
|
333
|
+
if (!candidates || candidates.length === 0) {
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
for (let i = candidates.length - 1; i >= 0; i--) {
|
|
337
|
+
const candidate = candidates[i];
|
|
338
|
+
if (candidate && this.responseMatchesContext(candidate, context)) {
|
|
339
|
+
return candidate;
|
|
340
|
+
}
|
|
315
341
|
}
|
|
316
342
|
}
|
|
317
343
|
return null;
|
|
@@ -378,11 +404,10 @@ responses:
|
|
|
378
404
|
case 'transient_guide_msg':
|
|
379
405
|
case 'prompting_msg':
|
|
380
406
|
case 'saying_msg':
|
|
381
|
-
case 'ui_only_markdown_msg':
|
|
382
407
|
case 'thinking_msg':
|
|
383
408
|
case 'func_result_msg':
|
|
384
409
|
case 'tellask_result_msg':
|
|
385
|
-
case '
|
|
410
|
+
case 'tellask_carryover_msg':
|
|
386
411
|
return acc + msg.content.length;
|
|
387
412
|
case 'func_call_msg':
|
|
388
413
|
return acc + msg.name.length + msg.arguments.length;
|
|
@@ -486,11 +511,10 @@ responses:
|
|
|
486
511
|
case 'transient_guide_msg':
|
|
487
512
|
case 'prompting_msg':
|
|
488
513
|
case 'saying_msg':
|
|
489
|
-
case 'ui_only_markdown_msg':
|
|
490
514
|
case 'thinking_msg':
|
|
491
515
|
case 'func_result_msg':
|
|
492
516
|
case 'tellask_result_msg':
|
|
493
|
-
case '
|
|
517
|
+
case 'tellask_carryover_msg':
|
|
494
518
|
return acc + msg.content.length;
|
|
495
519
|
case 'func_call_msg':
|
|
496
520
|
return acc + msg.name.length + msg.arguments.length;
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
* - Many "OpenAI-compatible" providers implement the Chat Completions API but not the newer
|
|
8
8
|
* Responses API. Dominds' `apiType: openai` uses the Responses API; this generator targets
|
|
9
9
|
* chat-completions-only providers (e.g. Volcano Engine Ark `.../api/v3`).
|
|
10
|
+
* - Isolation principle: this wrapper may reuse the `model_params.openai.*` namespace, but it
|
|
11
|
+
* still owns Chat Completions semantics and must not inherit Codex-specific request meanings.
|
|
10
12
|
*/
|
|
11
13
|
import type { ChatCompletionMessageParam } from 'openai/resources/chat/completions';
|
|
12
14
|
import type { Team } from '../../team';
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
* - Many "OpenAI-compatible" providers implement the Chat Completions API but not the newer
|
|
9
9
|
* Responses API. Dominds' `apiType: openai` uses the Responses API; this generator targets
|
|
10
10
|
* chat-completions-only providers (e.g. Volcano Engine Ark `.../api/v3`).
|
|
11
|
+
* - Isolation principle: this wrapper may reuse the `model_params.openai.*` namespace, but it
|
|
12
|
+
* still owns Chat Completions semantics and must not inherit Codex-specific request meanings.
|
|
11
13
|
*/
|
|
12
14
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
15
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -55,15 +57,39 @@ function tryExtractChatUsage(usage) {
|
|
|
55
57
|
totalTokens: typeof total === 'number' ? total : prompt + completion,
|
|
56
58
|
};
|
|
57
59
|
}
|
|
58
|
-
function buildChatCompletionResponseFormat(openAiParams
|
|
59
|
-
|
|
60
|
+
function buildChatCompletionResponseFormat(openAiParams) {
|
|
61
|
+
const textFormat = openAiParams.text_format;
|
|
62
|
+
if (textFormat === 'text' || textFormat === 'json_object') {
|
|
63
|
+
return { type: textFormat };
|
|
64
|
+
}
|
|
65
|
+
if (textFormat !== 'json_schema')
|
|
60
66
|
return undefined;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
const schemaName = openAiParams.text_format_json_schema_name?.trim();
|
|
68
|
+
const rawSchema = openAiParams.text_format_json_schema?.trim();
|
|
69
|
+
if (!schemaName || !rawSchema) {
|
|
70
|
+
throw new Error('Invalid openai text_format=json_schema: text_format_json_schema_name and text_format_json_schema are required.');
|
|
71
|
+
}
|
|
72
|
+
let parsedSchema;
|
|
73
|
+
try {
|
|
74
|
+
parsedSchema = JSON.parse(rawSchema);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
78
|
+
throw new Error(`Invalid openai text_format_json_schema: ${message}`);
|
|
79
|
+
}
|
|
80
|
+
if (!isRecord(parsedSchema)) {
|
|
81
|
+
throw new Error('Invalid openai text_format_json_schema: expected a JSON object at the top level.');
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
type: 'json_schema',
|
|
85
|
+
json_schema: {
|
|
86
|
+
name: schemaName,
|
|
87
|
+
schema: parsedSchema,
|
|
88
|
+
...(openAiParams.text_format_json_schema_strict !== undefined
|
|
89
|
+
? { strict: openAiParams.text_format_json_schema_strict }
|
|
90
|
+
: {}),
|
|
91
|
+
},
|
|
92
|
+
};
|
|
67
93
|
}
|
|
68
94
|
function buildReasoningPayloadFromText(text) {
|
|
69
95
|
if (text.trim().length === 0)
|
|
@@ -123,11 +149,10 @@ function chatMessageToChatCompletionMessage(msg) {
|
|
|
123
149
|
case 'environment_msg':
|
|
124
150
|
case 'prompting_msg':
|
|
125
151
|
case 'tellask_result_msg':
|
|
126
|
-
case '
|
|
152
|
+
case 'tellask_carryover_msg':
|
|
127
153
|
return { role: 'user', content: msg.content };
|
|
128
154
|
case 'transient_guide_msg':
|
|
129
155
|
case 'saying_msg':
|
|
130
|
-
case 'ui_only_markdown_msg':
|
|
131
156
|
case 'thinking_msg':
|
|
132
157
|
return { role: 'assistant', content: msg.content };
|
|
133
158
|
case 'func_call_msg':
|
|
@@ -495,32 +520,22 @@ class OpenAiCompatibleGen {
|
|
|
495
520
|
});
|
|
496
521
|
const openAiParams = agent.model_params?.openai || {};
|
|
497
522
|
const maxTokens = agent.model_params?.max_tokens;
|
|
498
|
-
const jsonResponseEnabled = resolveOpenAiCompatibleJsonResponseEnabled(agent, openAiParams);
|
|
499
523
|
const modelInfo = providerConfig.models[agent.model];
|
|
500
524
|
const outputLength = modelInfo?.output_length;
|
|
501
525
|
const maxOutputTokens = maxTokens ?? openAiParams.max_tokens ?? outputLength ?? 1024;
|
|
502
526
|
const parallelToolCalls = openAiParams.parallel_tool_calls ?? true;
|
|
503
|
-
const responseFormat = buildChatCompletionResponseFormat(openAiParams
|
|
527
|
+
const responseFormat = buildChatCompletionResponseFormat(openAiParams);
|
|
504
528
|
const payload = {
|
|
505
529
|
model: agent.model,
|
|
506
530
|
messages,
|
|
507
531
|
stream: true,
|
|
508
532
|
stream_options: { include_usage: true },
|
|
509
533
|
...(openAiParams.service_tier !== undefined && { service_tier: openAiParams.service_tier }),
|
|
534
|
+
...(openAiParams.safety_identifier !== undefined && {
|
|
535
|
+
safety_identifier: openAiParams.safety_identifier,
|
|
536
|
+
}),
|
|
510
537
|
...(openAiParams.temperature !== undefined && { temperature: openAiParams.temperature }),
|
|
511
538
|
...(openAiParams.top_p !== undefined && { top_p: openAiParams.top_p }),
|
|
512
|
-
...(openAiParams.stop !== undefined && { stop: openAiParams.stop }),
|
|
513
|
-
...(openAiParams.presence_penalty !== undefined && {
|
|
514
|
-
presence_penalty: openAiParams.presence_penalty,
|
|
515
|
-
}),
|
|
516
|
-
...(openAiParams.frequency_penalty !== undefined && {
|
|
517
|
-
frequency_penalty: openAiParams.frequency_penalty,
|
|
518
|
-
}),
|
|
519
|
-
...(openAiParams.seed !== undefined && { seed: openAiParams.seed }),
|
|
520
|
-
...(openAiParams.logprobs !== undefined && { logprobs: openAiParams.logprobs }),
|
|
521
|
-
...(openAiParams.top_logprobs !== undefined && { top_logprobs: openAiParams.top_logprobs }),
|
|
522
|
-
...(openAiParams.logit_bias !== undefined && { logit_bias: openAiParams.logit_bias }),
|
|
523
|
-
...(openAiParams.user !== undefined && { user: openAiParams.user }),
|
|
524
539
|
...(responseFormat !== undefined && { response_format: responseFormat }),
|
|
525
540
|
...(funcTools.length > 0
|
|
526
541
|
? { tools: funcTools.map(funcToolToChatCompletionTool), tool_choice: 'auto' }
|
|
@@ -699,29 +714,19 @@ class OpenAiCompatibleGen {
|
|
|
699
714
|
});
|
|
700
715
|
const openAiParams = agent.model_params?.openai || {};
|
|
701
716
|
const maxTokens = agent.model_params?.max_tokens;
|
|
702
|
-
const jsonResponseEnabled = resolveOpenAiCompatibleJsonResponseEnabled(agent, openAiParams);
|
|
703
717
|
const modelInfo = providerConfig.models[agent.model];
|
|
704
718
|
const outputLength = modelInfo?.output_length;
|
|
705
719
|
const maxOutputTokens = maxTokens ?? openAiParams.max_tokens ?? outputLength ?? 1024;
|
|
706
720
|
const parallelToolCalls = openAiParams.parallel_tool_calls ?? true;
|
|
707
|
-
const responseFormat = buildChatCompletionResponseFormat(openAiParams
|
|
721
|
+
const responseFormat = buildChatCompletionResponseFormat(openAiParams);
|
|
708
722
|
const payload = {
|
|
709
723
|
model: agent.model,
|
|
710
724
|
messages,
|
|
725
|
+
...(openAiParams.safety_identifier !== undefined && {
|
|
726
|
+
safety_identifier: openAiParams.safety_identifier,
|
|
727
|
+
}),
|
|
711
728
|
...(openAiParams.temperature !== undefined && { temperature: openAiParams.temperature }),
|
|
712
729
|
...(openAiParams.top_p !== undefined && { top_p: openAiParams.top_p }),
|
|
713
|
-
...(openAiParams.stop !== undefined && { stop: openAiParams.stop }),
|
|
714
|
-
...(openAiParams.presence_penalty !== undefined && {
|
|
715
|
-
presence_penalty: openAiParams.presence_penalty,
|
|
716
|
-
}),
|
|
717
|
-
...(openAiParams.frequency_penalty !== undefined && {
|
|
718
|
-
frequency_penalty: openAiParams.frequency_penalty,
|
|
719
|
-
}),
|
|
720
|
-
...(openAiParams.seed !== undefined && { seed: openAiParams.seed }),
|
|
721
|
-
...(openAiParams.logprobs !== undefined && { logprobs: openAiParams.logprobs }),
|
|
722
|
-
...(openAiParams.top_logprobs !== undefined && { top_logprobs: openAiParams.top_logprobs }),
|
|
723
|
-
...(openAiParams.logit_bias !== undefined && { logit_bias: openAiParams.logit_bias }),
|
|
724
|
-
...(openAiParams.user !== undefined && { user: openAiParams.user }),
|
|
725
730
|
...(responseFormat !== undefined && { response_format: responseFormat }),
|
|
726
731
|
...(funcTools.length > 0 && { tools: funcTools.map(funcToolToChatCompletionTool) }),
|
|
727
732
|
tool_choice: 'auto',
|
package/dist/llm/gen/openai.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Module: llm/gen/openai
|
|
3
3
|
*
|
|
4
|
-
* OpenAI
|
|
4
|
+
* OpenAI Responses API integration implementing streaming and batch generation.
|
|
5
|
+
* Isolation principle: this wrapper owns OpenAI Responses request/stream semantics and must not
|
|
6
|
+
* inherit Codex-specific abstractions or parameter aliases.
|
|
5
7
|
*/
|
|
6
8
|
import type { ResponseInputItem } from 'openai/resources/responses/responses';
|
|
7
9
|
import type { Team } from '../../team';
|