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
|
@@ -55,8 +55,8 @@ async function dialogNeedsReplyRecovery(dialogId) {
|
|
|
55
55
|
const events = await persistence_1.DialogPersistence.loadCourseEvents(dialogId, currentCourse, 'running');
|
|
56
56
|
const funcResultIds = new Set();
|
|
57
57
|
for (const event of events) {
|
|
58
|
-
if (event.type === 'func_result_record') {
|
|
59
|
-
const callId = event.id.trim();
|
|
58
|
+
if (event.type === 'func_result_record' || event.type === 'tellask_result_record') {
|
|
59
|
+
const callId = event.type === 'func_result_record' ? event.id.trim() : event.callId.trim();
|
|
60
60
|
if (callId !== '') {
|
|
61
61
|
funcResultIds.add(callId);
|
|
62
62
|
}
|
|
@@ -64,7 +64,7 @@ async function dialogNeedsReplyRecovery(dialogId) {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
return events.some((event) => {
|
|
67
|
-
if (event.type !== '
|
|
67
|
+
if (event.type !== 'tellask_call_record') {
|
|
68
68
|
return false;
|
|
69
69
|
}
|
|
70
70
|
if (event.name !== 'replyTellask' &&
|
|
@@ -60,7 +60,7 @@ export type TellaskReplacementNoticeFormatInput = {
|
|
|
60
60
|
};
|
|
61
61
|
export type TellaskCarryoverResultFormatInput = {
|
|
62
62
|
originCourse: number;
|
|
63
|
-
callName: 'tellask' | 'tellaskSessionless' | 'freshBootsReasoning';
|
|
63
|
+
callName: 'tellask' | 'tellaskSessionless' | 'askHuman' | 'freshBootsReasoning';
|
|
64
64
|
responderId: string;
|
|
65
65
|
mentionList?: string[];
|
|
66
66
|
sessionSlug?: string;
|
|
@@ -367,7 +367,7 @@ function formatTellaskCarryoverResultContent(input) {
|
|
|
367
367
|
'',
|
|
368
368
|
(0, markdown_format_1.markdownQuote)(responseBody),
|
|
369
369
|
'',
|
|
370
|
-
'Note: this is not a new user request or a newly initiated function call in the current course; it is the
|
|
370
|
+
'Note: this is not a new user request or a newly initiated function call in the current course; it is the canonical current-course carryover of an older pending tellask completion.',
|
|
371
371
|
'',
|
|
372
372
|
];
|
|
373
373
|
return lines.join('\n');
|
|
@@ -68,8 +68,8 @@ function buildSubdialogRoleHeaderCopy(args) {
|
|
|
68
68
|
const requester = `@${args.requesterId}`;
|
|
69
69
|
if (args.expectedReplyTool === undefined) {
|
|
70
70
|
return args.language === 'zh'
|
|
71
|
-
? `${requester}
|
|
72
|
-
:
|
|
71
|
+
? `${requester} 已通过诉请安排你处理下述诉请内容。只有需要回问时,才调用 \`tellaskBack\`。`
|
|
72
|
+
: `${requester} has assigned you to handle the request content below. Call \`tellaskBack\` only when you truly need to ask back.`;
|
|
73
73
|
}
|
|
74
74
|
const kindLabel = (0, tellask_labels_1.getTellaskKindLabel)({
|
|
75
75
|
language: args.language,
|
|
@@ -77,8 +77,8 @@ function buildSubdialogRoleHeaderCopy(args) {
|
|
|
77
77
|
bracketed: true,
|
|
78
78
|
});
|
|
79
79
|
return args.language === 'zh'
|
|
80
|
-
? `${requester}
|
|
81
|
-
: `${requester}
|
|
80
|
+
? `${requester} 已通过${kindLabel}安排你处理下述诉请内容。等你准备好回复内容后,调用 \`${args.expectedReplyTool}\` 完成回复。只有需要回问时,才调用 \`tellaskBack\`。`
|
|
81
|
+
: `${requester} has assigned you, via this ${kindLabel}, to handle the request content below. Once your reply content is ready, call \`${args.expectedReplyTool}\` to deliver it. Call \`tellaskBack\` only when you truly need to ask back.`;
|
|
82
82
|
}
|
|
83
83
|
function buildReplyObligationSuppressionGuideText(language) {
|
|
84
84
|
if (language === 'zh') {
|
|
@@ -61,7 +61,8 @@ async function buildSetupStatusResponse() {
|
|
|
61
61
|
error: builtin.errorText,
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
|
-
const
|
|
64
|
+
const providerKeysInOrder = mergeProviderKeysInOrder(rtwsLlmYaml.providerKeys ?? [], builtin.providerKeysInOrder, merged.providers);
|
|
65
|
+
const providers = await buildProviderSummaries(merged.providers, providerKeysInOrder, {
|
|
65
66
|
envLocalPath: RTWS_ENV_LOCAL_PATH,
|
|
66
67
|
bashrcPath,
|
|
67
68
|
zshrcPath,
|
|
@@ -265,7 +266,7 @@ async function loadBuiltinProviders() {
|
|
|
265
266
|
if (!isRecord(parsed) || !isRecord(parsed.providers)) {
|
|
266
267
|
return { kind: 'error', errorText: 'Invalid defaults.yaml: expected providers object' };
|
|
267
268
|
}
|
|
268
|
-
const providerKeysInOrder =
|
|
269
|
+
const providerKeysInOrder = extractProvidersKeysFromYamlDoc(doc);
|
|
269
270
|
return {
|
|
270
271
|
kind: 'ok',
|
|
271
272
|
providers: parsed.providers,
|
|
@@ -415,6 +416,25 @@ function orderedProviderEntries(providers, providerKeysInOrder) {
|
|
|
415
416
|
}
|
|
416
417
|
return out;
|
|
417
418
|
}
|
|
419
|
+
function mergeProviderKeysInOrder(preferredProviderKeysInOrder, secondaryProviderKeysInOrder, providers) {
|
|
420
|
+
const out = [];
|
|
421
|
+
const seen = new Set();
|
|
422
|
+
const appendKey = (providerKey) => {
|
|
423
|
+
if (providerKey === '' || seen.has(providerKey))
|
|
424
|
+
return;
|
|
425
|
+
if (!Object.prototype.hasOwnProperty.call(providers, providerKey))
|
|
426
|
+
return;
|
|
427
|
+
out.push(providerKey);
|
|
428
|
+
seen.add(providerKey);
|
|
429
|
+
};
|
|
430
|
+
for (const providerKey of preferredProviderKeysInOrder)
|
|
431
|
+
appendKey(providerKey);
|
|
432
|
+
for (const providerKey of secondaryProviderKeysInOrder)
|
|
433
|
+
appendKey(providerKey);
|
|
434
|
+
for (const providerKey of Object.keys(providers))
|
|
435
|
+
appendKey(providerKey);
|
|
436
|
+
return out;
|
|
437
|
+
}
|
|
418
438
|
function extractYamlMapStringKeys(value) {
|
|
419
439
|
if (!yaml_1.default.isMap(value))
|
|
420
440
|
return [];
|
|
@@ -432,7 +452,7 @@ function extractYamlMapStringKeys(value) {
|
|
|
432
452
|
}
|
|
433
453
|
return out;
|
|
434
454
|
}
|
|
435
|
-
function
|
|
455
|
+
function extractProvidersKeysFromYamlDoc(doc) {
|
|
436
456
|
const root = doc.contents;
|
|
437
457
|
if (!yaml_1.default.isMap(root))
|
|
438
458
|
return [];
|
|
@@ -494,7 +514,8 @@ async function readRtwsLlmYamlProviderKeys() {
|
|
|
494
514
|
return { path: RTWS_LLM_YAML_PATH, exists: false };
|
|
495
515
|
try {
|
|
496
516
|
const raw = await promises_1.default.readFile(RTWS_LLM_YAML_PATH, 'utf-8');
|
|
497
|
-
const
|
|
517
|
+
const doc = yaml_1.default.parseDocument(raw);
|
|
518
|
+
const parsed = doc.toJS();
|
|
498
519
|
if (!isRecord(parsed)) {
|
|
499
520
|
return {
|
|
500
521
|
path: RTWS_LLM_YAML_PATH,
|
|
@@ -513,7 +534,7 @@ async function readRtwsLlmYamlProviderKeys() {
|
|
|
513
534
|
return {
|
|
514
535
|
path: RTWS_LLM_YAML_PATH,
|
|
515
536
|
exists: true,
|
|
516
|
-
providerKeys:
|
|
537
|
+
providerKeys: extractProvidersKeysFromYamlDoc(doc),
|
|
517
538
|
};
|
|
518
539
|
}
|
|
519
540
|
catch (error) {
|
|
@@ -46,6 +46,7 @@ const promises_1 = __importDefault(require("fs/promises"));
|
|
|
46
46
|
const path_1 = __importDefault(require("path"));
|
|
47
47
|
const yaml_1 = __importDefault(require("yaml"));
|
|
48
48
|
const log_1 = require("../log");
|
|
49
|
+
require("../tools/builtins");
|
|
49
50
|
const log = (0, log_1.createLogger)('snippets-routes');
|
|
50
51
|
function isRecord(value) {
|
|
51
52
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
@@ -643,14 +644,7 @@ async function handleToolsetManual(rawBody) {
|
|
|
643
644
|
if (!req)
|
|
644
645
|
return { success: false, error: 'Invalid request body' };
|
|
645
646
|
try {
|
|
646
|
-
const {
|
|
647
|
-
const tool = getTool('man');
|
|
648
|
-
if (!tool || tool.type !== 'func') {
|
|
649
|
-
return { success: false, error: 'man tool not available' };
|
|
650
|
-
}
|
|
651
|
-
const fakeDlg = {
|
|
652
|
-
getLastUserLanguageCode: () => req.uiLanguage,
|
|
653
|
-
};
|
|
647
|
+
const { renderToolsetManualContent } = await Promise.resolve().then(() => __importStar(require('../tools/toolset-manual')));
|
|
654
648
|
const { Team } = await Promise.resolve().then(() => __importStar(require('../team')));
|
|
655
649
|
const caller = new Team.Member({
|
|
656
650
|
id: 'webui',
|
|
@@ -659,10 +653,27 @@ async function handleToolsetManual(rawBody) {
|
|
|
659
653
|
write_dirs: ['.minds/**'],
|
|
660
654
|
toolsets: [req.toolsetId],
|
|
661
655
|
});
|
|
662
|
-
const
|
|
656
|
+
const dynamicToolsetNames = await Team.listDynamicToolsetNamesForMember({
|
|
657
|
+
member: caller,
|
|
658
|
+
});
|
|
659
|
+
const declaredMcpToolsets = await Team.readMcpDeclaredToolsets();
|
|
660
|
+
const declaredMcpToolsetNames = declaredMcpToolsets.kind === 'loaded' ? declaredMcpToolsets.declaredServerIds : undefined;
|
|
661
|
+
const invalidMcpToolsetNames = declaredMcpToolsets.kind === 'loaded' ? declaredMcpToolsets.invalidServerIds : undefined;
|
|
662
|
+
const availableToolNames = new Set(caller
|
|
663
|
+
.listTools({
|
|
664
|
+
onMissingToolset: 'silent',
|
|
665
|
+
onMissingTool: 'silent',
|
|
666
|
+
dynamicToolsetNames,
|
|
667
|
+
declaredMcpToolsetNames,
|
|
668
|
+
invalidMcpToolsetNames,
|
|
669
|
+
})
|
|
670
|
+
.map((tool) => tool.name));
|
|
671
|
+
const markdown = await renderToolsetManualContent({
|
|
663
672
|
toolsetId: req.toolsetId,
|
|
673
|
+
language: req.uiLanguage,
|
|
664
674
|
...(req.topic ? { topic: req.topic } : {}),
|
|
665
675
|
...(req.topics ? { topics: req.topics } : {}),
|
|
676
|
+
availableToolNames,
|
|
666
677
|
});
|
|
667
678
|
return { success: true, markdown: String(markdown) };
|
|
668
679
|
}
|
|
@@ -11,9 +11,11 @@ exports.cleanupEventSystems = cleanupEventSystems;
|
|
|
11
11
|
const diligence_1 = require("@longrun-ai/kernel/diligence");
|
|
12
12
|
const evt_1 = require("@longrun-ai/kernel/evt");
|
|
13
13
|
const language_1 = require("@longrun-ai/kernel/types/language");
|
|
14
|
+
const storage_1 = require("@longrun-ai/kernel/types/storage");
|
|
14
15
|
const time_1 = require("@longrun-ai/kernel/utils/time");
|
|
15
16
|
const ws_1 = require("ws");
|
|
16
17
|
const runtime_1 = require("../apps/runtime");
|
|
18
|
+
const global_dialog_event_broadcaster_1 = require("../bootstrap/global-dialog-event-broadcaster");
|
|
17
19
|
const dialog_1 = require("../dialog");
|
|
18
20
|
const dialog_display_state_1 = require("../dialog-display-state");
|
|
19
21
|
const dialog_global_registry_1 = require("../dialog-global-registry");
|
|
@@ -27,6 +29,7 @@ const priming_1 = require("../priming");
|
|
|
27
29
|
const problems_1 = require("../problems");
|
|
28
30
|
const reply_special_1 = require("../recovery/reply-special");
|
|
29
31
|
const driver_messages_1 = require("../runtime/driver-messages");
|
|
32
|
+
const inter_dialog_format_1 = require("../runtime/inter-dialog-format");
|
|
30
33
|
const work_language_1 = require("../runtime/work-language");
|
|
31
34
|
const team_1 = require("../team");
|
|
32
35
|
const team_config_updates_1 = require("../team-config-updates");
|
|
@@ -261,7 +264,7 @@ async function handleWebSocketMessage(ws, packet) {
|
|
|
261
264
|
await handleUserMsg2Dlg(ws, packet);
|
|
262
265
|
break;
|
|
263
266
|
case 'drive_dialog_by_user_answer':
|
|
264
|
-
await
|
|
267
|
+
await handleReceiveHumanReply(ws, packet);
|
|
265
268
|
break;
|
|
266
269
|
case 'interrupt_dialog':
|
|
267
270
|
await handleInterruptDialog(ws, packet);
|
|
@@ -861,7 +864,6 @@ async function handleDisplayDialog(ws, packet) {
|
|
|
861
864
|
tellaskContent: q.tellaskContent,
|
|
862
865
|
askedAt: q.askedAt,
|
|
863
866
|
callId: q.callId,
|
|
864
|
-
remainingCallIds: q.remainingCallIds,
|
|
865
867
|
callSiteRef: q.callSiteRef,
|
|
866
868
|
})),
|
|
867
869
|
};
|
|
@@ -903,7 +905,6 @@ async function handleGetQ4HState(ws, _packet) {
|
|
|
903
905
|
tellaskContent: q.tellaskContent,
|
|
904
906
|
askedAt: q.askedAt,
|
|
905
907
|
callId: q.callId,
|
|
906
|
-
remainingCallIds: q.remainingCallIds,
|
|
907
908
|
callSiteRef: q.callSiteRef,
|
|
908
909
|
}));
|
|
909
910
|
// Send single response packet with all questions (not PubChan events)
|
|
@@ -1213,10 +1214,17 @@ async function handleResumeAll(ws, packet) {
|
|
|
1213
1214
|
emitRunControlRefresh('resume_all');
|
|
1214
1215
|
}
|
|
1215
1216
|
/**
|
|
1216
|
-
*
|
|
1217
|
-
* Validates questionId, clears q4h.yaml entry,
|
|
1217
|
+
* Receive a human reply for a Q4H question.
|
|
1218
|
+
* Validates questionId, clears q4h.yaml entry, records askHuman result/carryover,
|
|
1219
|
+
* and optionally queues a continuation drive input carrying the answered callId.
|
|
1220
|
+
*
|
|
1221
|
+
* Important: the human answer itself is canonicalized as askHuman tellask result/carryover first.
|
|
1222
|
+
* For cross-course Q4H answers, the carryover is the canonical latest-course context; it is not a
|
|
1223
|
+
* tool-result pair for the older-course askHuman call.
|
|
1224
|
+
* The follow-up drive input here is only control-flow glue for the resumed round, not a separate
|
|
1225
|
+
* persisted "user prompt" business fact.
|
|
1218
1226
|
*/
|
|
1219
|
-
async function
|
|
1227
|
+
async function handleReceiveHumanReply(ws, packet) {
|
|
1220
1228
|
try {
|
|
1221
1229
|
const { dialog: dialogIdent, content, msgId, questionId, continuationType } = packet;
|
|
1222
1230
|
const userLanguageCode = resolveUserLanguageCode(ws, packet.userLanguageCode);
|
|
@@ -1235,7 +1243,7 @@ async function handleUserAnswer2Q4H(ws, packet) {
|
|
|
1235
1243
|
if (typeof dialogId !== 'string' || typeof rootDialogId !== 'string') {
|
|
1236
1244
|
ws.send(JSON.stringify({
|
|
1237
1245
|
type: 'error',
|
|
1238
|
-
message: 'Invalid dialog identifiers for
|
|
1246
|
+
message: 'Invalid dialog identifiers for receiveHumanReply: selfId/rootId must be strings',
|
|
1239
1247
|
}));
|
|
1240
1248
|
return;
|
|
1241
1249
|
}
|
|
@@ -1282,12 +1290,30 @@ async function handleUserAnswer2Q4H(ws, packet) {
|
|
|
1282
1290
|
if (!removedQuestion) {
|
|
1283
1291
|
throw new Error(`Q4H remove invariant violation: found=true but removedQuestion missing (rootId=${dialog.id.rootId} selfId=${dialog.id.selfId} questionId=${questionId})`);
|
|
1284
1292
|
}
|
|
1285
|
-
const
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1293
|
+
const askHumanCallId = removedQuestion.callId.trim();
|
|
1294
|
+
if (askHumanCallId === '') {
|
|
1295
|
+
throw new Error(`Q4H remove invariant violation: missing callId on answered question ` +
|
|
1296
|
+
`(rootId=${dialog.id.rootId} selfId=${dialog.id.selfId} questionId=${questionId})`);
|
|
1297
|
+
}
|
|
1298
|
+
const askHumanOriginCourse = removedQuestion.callSiteRef.course;
|
|
1299
|
+
const askHumanCarryoverContent = (0, inter_dialog_format_1.formatTellaskCarryoverResultContent)({
|
|
1300
|
+
originCourse: askHumanOriginCourse,
|
|
1301
|
+
callName: 'askHuman',
|
|
1302
|
+
responderId: 'human',
|
|
1303
|
+
tellaskContent: removedQuestion.tellaskContent,
|
|
1304
|
+
responseBody: effectivePrompt.content,
|
|
1305
|
+
status: 'completed',
|
|
1306
|
+
language: (0, work_language_1.getWorkLanguage)(),
|
|
1307
|
+
});
|
|
1308
|
+
const askHumanResultMirror = await dialog.receiveTellaskResponse('human', 'askHuman', undefined, removedQuestion.tellaskContent, 'completed', undefined, {
|
|
1309
|
+
response: effectivePrompt.content,
|
|
1310
|
+
agentId: 'human',
|
|
1311
|
+
callId: askHumanCallId,
|
|
1312
|
+
originMemberId: dialog.agentId,
|
|
1313
|
+
originCourse: (0, storage_1.toCallingCourseNumber)(askHumanOriginCourse),
|
|
1314
|
+
carryoverContent: askHumanCarryoverContent,
|
|
1315
|
+
});
|
|
1316
|
+
await dialog.addChatMessages(askHumanResultMirror);
|
|
1291
1317
|
// Emit q4h_answered event for answered question
|
|
1292
1318
|
const answeredEvent = {
|
|
1293
1319
|
type: 'q4h_answered',
|
|
@@ -1297,14 +1323,17 @@ async function handleUserAnswer2Q4H(ws, packet) {
|
|
|
1297
1323
|
(0, evt_registry_1.postDialogEvent)(dialog, answeredEvent);
|
|
1298
1324
|
const hasPendingSubdialogs = await dialog.hasPendingSubdialogs();
|
|
1299
1325
|
if (hasPendingSubdialogs) {
|
|
1326
|
+
// This queued item is only the post-answer continuation input that resumes the suspended
|
|
1327
|
+
// round after subdialogs settle. The human answer fact has already been persisted above as
|
|
1328
|
+
// askHuman tellask result/carryover and must not be reinterpreted as a new user prompt.
|
|
1300
1329
|
dialog.queueDeferredQ4HAnswerPrompt({
|
|
1301
1330
|
prompt: effectivePrompt.content,
|
|
1302
1331
|
msgId: effectivePrompt.msgId,
|
|
1303
1332
|
grammar: effectivePrompt.grammar,
|
|
1304
1333
|
userLanguageCode: effectivePrompt.userLanguageCode,
|
|
1305
|
-
|
|
1334
|
+
q4hAnswerCallId: askHumanCallId,
|
|
1306
1335
|
});
|
|
1307
|
-
log.debug('Deferred Q4H
|
|
1336
|
+
log.debug('Deferred post-Q4H continuation input until pending subdialogs resolve', undefined, {
|
|
1308
1337
|
rootId: dialog.id.rootId,
|
|
1309
1338
|
selfId: dialog.id.selfId,
|
|
1310
1339
|
questionId,
|
|
@@ -1312,13 +1341,14 @@ async function handleUserAnswer2Q4H(ws, packet) {
|
|
|
1312
1341
|
});
|
|
1313
1342
|
return;
|
|
1314
1343
|
}
|
|
1315
|
-
// Resume the dialog
|
|
1344
|
+
// Resume the dialog after the answer has been materialized as askHuman tellask result/carryover.
|
|
1345
|
+
// The continuation input carries correlation only; it does not persist another user prompt fact.
|
|
1316
1346
|
await (0, kernel_driver_1.driveDialogStream)(dialog, {
|
|
1317
1347
|
content: effectivePrompt.content,
|
|
1318
1348
|
msgId: effectivePrompt.msgId,
|
|
1319
1349
|
grammar: effectivePrompt.grammar,
|
|
1320
1350
|
userLanguageCode: effectivePrompt.userLanguageCode,
|
|
1321
|
-
|
|
1351
|
+
q4hAnswerCallId: askHumanCallId,
|
|
1322
1352
|
origin: 'user',
|
|
1323
1353
|
}, true, {
|
|
1324
1354
|
source: 'ws_user_answer',
|
|
@@ -1326,10 +1356,10 @@ async function handleUserAnswer2Q4H(ws, packet) {
|
|
|
1326
1356
|
});
|
|
1327
1357
|
}
|
|
1328
1358
|
catch (error) {
|
|
1329
|
-
log.error('Error processing
|
|
1359
|
+
log.error('Error processing receiveHumanReply:', error);
|
|
1330
1360
|
ws.send(JSON.stringify({
|
|
1331
1361
|
type: 'error',
|
|
1332
|
-
message: `Failed to process
|
|
1362
|
+
message: `Failed to process human reply: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
1333
1363
|
}));
|
|
1334
1364
|
}
|
|
1335
1365
|
}
|
|
@@ -1351,13 +1381,16 @@ function setupWebSocketServer(httpServer, clients, auth, serverWorkLanguage) {
|
|
|
1351
1381
|
// - Q4H updates are rtws-global state in WebUI
|
|
1352
1382
|
// - subdialog creation must refresh hierarchy/list even when current subscription is elsewhere
|
|
1353
1383
|
// - dlg_touched_evt keeps dialog list timestamps/reordering in sync across clients
|
|
1354
|
-
(0,
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1384
|
+
(0, global_dialog_event_broadcaster_1.installGlobalDialogEventBroadcaster)({
|
|
1385
|
+
label: 'websocket-server',
|
|
1386
|
+
publish: (evt) => {
|
|
1387
|
+
const data = JSON.stringify(evt);
|
|
1388
|
+
for (const ws of clients) {
|
|
1389
|
+
if (ws.readyState === 1) {
|
|
1390
|
+
ws.send(data);
|
|
1391
|
+
}
|
|
1359
1392
|
}
|
|
1360
|
-
}
|
|
1393
|
+
},
|
|
1361
1394
|
});
|
|
1362
1395
|
// Broadcast dialog index changes (create/move/delete) so other tabs refresh their lists.
|
|
1363
1396
|
// This ensures multi-tab/multi-browser updates stay consistent without polling.
|
package/dist/shared/utils/fbr.js
CHANGED
|
@@ -15,20 +15,24 @@ function appendDistinctPerspectiveFbrBody(input) {
|
|
|
15
15
|
if (input.language === 'zh') {
|
|
16
16
|
return [
|
|
17
17
|
iteration === 1
|
|
18
|
-
? `【第 ${iteration}/${total} 轮 FBR
|
|
19
|
-
: `【第 ${iteration}/${total} 轮 FBR
|
|
18
|
+
? `【第 ${iteration}/${total} 轮 FBR 发散】请开启首轮独立推理角度。`
|
|
19
|
+
: `【第 ${iteration}/${total} 轮 FBR 发散】请切换到与前 ${iteration - 1} 轮不同的推理角度。`,
|
|
20
|
+
'这一阶段要对反直觉、离谱、少数派、最后可能被淘汰的想法保持开放,把它们先当作待检验候选,而不是急着压成共识。',
|
|
20
21
|
isFinalRound
|
|
21
|
-
? '
|
|
22
|
-
: '
|
|
22
|
+
? '最后一轮发散也不能复述前文结论;必须继续补充新的切入点、额外证据或新的解释路径。'
|
|
23
|
+
: '要求:不复述前几轮已结论文本;补充本轮独立切入点、未覆盖证据或新的解释路径。',
|
|
24
|
+
'此时不要急于收敛或下最终结论。',
|
|
23
25
|
].join('\n');
|
|
24
26
|
}
|
|
25
27
|
return [
|
|
26
28
|
iteration === 1
|
|
27
|
-
? `[FBR round ${iteration}/${total}] start with a first independent reasoning angle.`
|
|
28
|
-
: `[FBR round ${iteration}/${total}] switch to an angle different from the previous ${iteration - 1} rounds.`,
|
|
29
|
+
? `[FBR divergence round ${iteration}/${total}] start with a first independent reasoning angle.`
|
|
30
|
+
: `[FBR divergence round ${iteration}/${total}] switch to an angle different from the previous ${iteration - 1} rounds.`,
|
|
31
|
+
'In this phase, stay open to counterintuitive, wild, minority, or eventually-discarded ideas; treat them as candidates to test instead of forcing early consensus.',
|
|
29
32
|
isFinalRound
|
|
30
|
-
? 'The final round must
|
|
31
|
-
: 'Requirement: do not repeat prior-round conclusion text; add a distinct
|
|
33
|
+
? 'The final divergence round must still avoid repeating prior-round conclusions and add new angles, extra evidence, or alternative explanations.'
|
|
34
|
+
: 'Requirement: do not repeat prior-round conclusion text; add a distinct approach, missing evidence, or a genuinely new explanatory path.',
|
|
35
|
+
'Do not converge or produce a final conclusion yet.',
|
|
32
36
|
].join('\n');
|
|
33
37
|
})();
|
|
34
38
|
if (iteration <= 1) {
|
|
@@ -111,9 +111,10 @@ function formatAssignmentFromSupdialog(input) {
|
|
|
111
111
|
'# 扪心自问(FBR)自诉请',
|
|
112
112
|
'',
|
|
113
113
|
'- 约束:这是一个扪心自问(self tellask)支线对话;请独立推理与总结。',
|
|
114
|
-
'-
|
|
114
|
+
'- 系统规则:当前仍处于 FBR 的无工具阶段;这一阶段不允许任何函数调用。',
|
|
115
|
+
'- 后续只有在完成既定的发散轮与收敛轮之后,运行时才会开放两个“结论函数”供你正式收口。',
|
|
115
116
|
'- 协议:回贴标记由 Dominds 运行时自动注入,禁止手写。',
|
|
116
|
-
'-
|
|
117
|
+
'- 系统提示:不要受诉请正文中的定调、分析方向或维度清单约束;请聚焦总体目标,自由发挥并开辟新的分析切入角度,对离谱想法保持开放,但不要过早收敛。',
|
|
117
118
|
'',
|
|
118
119
|
'---',
|
|
119
120
|
].join('\n')
|
|
@@ -121,9 +122,10 @@ function formatAssignmentFromSupdialog(input) {
|
|
|
121
122
|
'# Fresh Boots Reasoning (FBR) request',
|
|
122
123
|
'',
|
|
123
124
|
'- Constraint: this is a self-tellask FBR sideline dialog; reason independently and produce conclusions.',
|
|
124
|
-
'- System rule: this
|
|
125
|
+
'- System rule: this FBR stage is still tool-less; do not emit any function call in this stage.',
|
|
126
|
+
'- Only after the planned divergence and convergence rounds are complete will runtime expose the two conclusion functions for formal closure.',
|
|
125
127
|
'- Protocol: reply markers are auto-injected by Dominds runtime; do not hand-write markers.',
|
|
126
|
-
'- System prompt: do not be constrained by framing, analysis directions, or dimension checklists embedded in the tellask body; stay focused on the overall objective
|
|
128
|
+
'- System prompt: do not be constrained by framing, analysis directions, or dimension checklists embedded in the tellask body; stay focused on the overall objective, open new analytical entry points freely, stay open to wild ideas, and do not converge too early.',
|
|
127
129
|
'',
|
|
128
130
|
'---',
|
|
129
131
|
].join('\n');
|
package/dist/team.d.ts
CHANGED
|
@@ -26,19 +26,11 @@ export declare namespace Team {
|
|
|
26
26
|
};
|
|
27
27
|
export function readMcpDeclaredToolsets(): Promise<McpDeclaredToolsets>;
|
|
28
28
|
export function listExplicitToolsets(member: Team.Member): string[];
|
|
29
|
-
type
|
|
29
|
+
type CodexModelParams = {
|
|
30
30
|
temperature?: number;
|
|
31
31
|
max_tokens?: number;
|
|
32
32
|
service_tier?: 'auto' | 'default' | 'flex' | 'scale' | 'priority';
|
|
33
33
|
top_p?: number;
|
|
34
|
-
frequency_penalty?: number;
|
|
35
|
-
presence_penalty?: number;
|
|
36
|
-
seed?: number;
|
|
37
|
-
logprobs?: boolean;
|
|
38
|
-
top_logprobs?: number;
|
|
39
|
-
stop?: string | string[];
|
|
40
|
-
logit_bias?: Record<string, number>;
|
|
41
|
-
user?: string;
|
|
42
34
|
reasoning_effort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
43
35
|
reasoning_summary?: 'auto' | 'concise' | 'detailed' | 'none';
|
|
44
36
|
verbosity?: 'low' | 'medium' | 'high';
|
|
@@ -46,11 +38,30 @@ export declare namespace Team {
|
|
|
46
38
|
web_search?: 'disabled' | 'cached' | 'live';
|
|
47
39
|
json_response?: boolean;
|
|
48
40
|
};
|
|
41
|
+
type OpenAiModelParams = {
|
|
42
|
+
temperature?: number;
|
|
43
|
+
max_tokens?: number;
|
|
44
|
+
service_tier?: 'auto' | 'default' | 'flex' | 'scale' | 'priority';
|
|
45
|
+
top_p?: number;
|
|
46
|
+
reasoning_effort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
47
|
+
reasoning_summary?: 'auto' | 'concise' | 'detailed' | 'none';
|
|
48
|
+
verbosity?: 'low' | 'medium' | 'high';
|
|
49
|
+
parallel_tool_calls?: boolean;
|
|
50
|
+
safety_identifier?: string;
|
|
51
|
+
text_format?: 'text' | 'json_object' | 'json_schema';
|
|
52
|
+
text_format_json_schema_name?: string;
|
|
53
|
+
text_format_json_schema?: string;
|
|
54
|
+
text_format_json_schema_strict?: boolean;
|
|
55
|
+
web_search_tool?: boolean;
|
|
56
|
+
web_search_context_size?: 'low' | 'medium' | 'high';
|
|
57
|
+
web_search_allowed_domains?: string[];
|
|
58
|
+
web_search_include_sources?: boolean;
|
|
59
|
+
};
|
|
49
60
|
export interface ModelParams {
|
|
50
61
|
max_tokens?: number;
|
|
51
62
|
json_response?: boolean;
|
|
52
|
-
codex?:
|
|
53
|
-
openai?:
|
|
63
|
+
codex?: CodexModelParams;
|
|
64
|
+
openai?: OpenAiModelParams;
|
|
54
65
|
anthropic?: {
|
|
55
66
|
temperature?: number;
|
|
56
67
|
max_tokens?: number;
|
|
@@ -169,8 +180,8 @@ export declare namespace Team {
|
|
|
169
180
|
export const TEAM_YAML_MEMBER_KEYS: readonly ["name", "from", "use", "import", "provider", "model", "gofor", "nogo", "toolsets", "tools", "model_params", "fbr-effort", "fbr_effort", "fbr_model_params", "diligence-push-max", "diligence_push_max", "read_dirs", "write_dirs", "no_read_dirs", "no_write_dirs", "read_file_ext_names", "write_file_ext_names", "no_read_file_ext_names", "no_write_file_ext_names", "icon", "streaming", "hidden"];
|
|
170
181
|
export const TEAM_YAML_MODEL_PARAMS_ROOT_KEYS: readonly ["max_tokens", "json_response", "general", "codex", "openai", "anthropic"];
|
|
171
182
|
export const TEAM_YAML_MODEL_PARAMS_GENERAL_KEYS: readonly ["max_tokens"];
|
|
172
|
-
export const TEAM_YAML_MODEL_PARAMS_OPENAI_KEYS: readonly ["temperature", "max_tokens", "service_tier", "top_p", "
|
|
173
|
-
export const TEAM_YAML_MODEL_PARAMS_CODEX_KEYS: readonly ["temperature", "max_tokens", "service_tier", "top_p", "
|
|
183
|
+
export const TEAM_YAML_MODEL_PARAMS_OPENAI_KEYS: readonly ["temperature", "max_tokens", "service_tier", "top_p", "reasoning_effort", "reasoning_summary", "verbosity", "parallel_tool_calls", "safety_identifier", "text_format", "text_format_json_schema_name", "text_format_json_schema", "text_format_json_schema_strict", "web_search_tool", "web_search_context_size", "web_search_allowed_domains", "web_search_include_sources"];
|
|
184
|
+
export const TEAM_YAML_MODEL_PARAMS_CODEX_KEYS: readonly ["temperature", "max_tokens", "service_tier", "top_p", "reasoning_effort", "reasoning_summary", "verbosity", "parallel_tool_calls", "web_search", "json_response"];
|
|
174
185
|
export const TEAM_YAML_MODEL_PARAMS_ANTHROPIC_KEYS: readonly ["temperature", "max_tokens", "top_p", "top_k", "stop_sequences", "reasoning_split", "json_response"];
|
|
175
186
|
export {};
|
|
176
187
|
}
|