dominds 1.17.7 → 1.18.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/dialog-fork.js +11 -5
- package/dist/dialog-instance-registry.js +1 -18
- package/dist/dialog.d.ts +21 -31
- package/dist/dialog.js +207 -56
- package/dist/docs/dialog-system.md +3 -2
- package/dist/docs/dialog-system.zh.md +3 -2
- package/dist/docs/tellask-collab.md +2 -1
- package/dist/docs/tellask-collab.zh.md +2 -1
- package/dist/llm/defaults.yaml +43 -0
- package/dist/llm/gen/anthropic.js +153 -12
- package/dist/llm/gen/codex.js +160 -10
- package/dist/llm/gen/openai-compatible.js +141 -81
- package/dist/llm/gen/openai.js +178 -12
- package/dist/llm/gen/tool-result-image-ingest.d.ts +17 -8
- package/dist/llm/gen/tool-result-image-ingest.js +127 -27
- package/dist/llm/gen.d.ts +13 -0
- package/dist/llm/kernel-driver/drive.js +79 -15
- package/dist/llm/kernel-driver/flow.js +158 -41
- package/dist/llm/kernel-driver/reply-guidance.d.ts +6 -6
- package/dist/llm/kernel-driver/reply-guidance.js +169 -2
- package/dist/llm/kernel-driver/runtime.d.ts +2 -2
- package/dist/llm/kernel-driver/subdialog.js +4 -0
- package/dist/llm/kernel-driver/tellask-special.d.ts +2 -0
- package/dist/llm/kernel-driver/tellask-special.js +11 -6
- package/dist/llm/kernel-driver/types.d.ts +14 -24
- package/dist/minds/system-prompt.js +8 -8
- package/dist/persistence.d.ts +6 -5
- package/dist/persistence.js +198 -39
- package/dist/priming.js +98 -3
- package/dist/runtime/driver-messages.d.ts +1 -0
- package/dist/runtime/driver-messages.js +32 -10
- package/dist/runtime/reply-prompt-copy.js +4 -4
- package/dist/server/api-routes.js +11 -43
- package/dist/server/websocket-handler.js +155 -10
- package/dist/tools/builtins.js +10 -4
- package/dist/tools/cmd-runner.js +110 -49
- package/dist/tools/picture.d.ts +3 -0
- package/dist/tools/picture.js +344 -0
- package/dist/tools/prompts/control/en/principles.md +4 -2
- package/dist/tools/prompts/control/en/scenarios.md +2 -1
- package/dist/tools/prompts/control/en/tools.md +6 -6
- package/dist/tools/prompts/control/zh/principles.md +4 -2
- package/dist/tools/prompts/control/zh/scenarios.md +2 -1
- package/dist/tools/prompts/control/zh/tools.md +1 -1
- package/dist/tools/prompts/ws_mod.en.md +1 -0
- package/dist/tools/prompts/ws_mod.zh.md +1 -0
- package/dist/tools/prompts/ws_read/en/tools.md +25 -5
- package/dist/tools/prompts/ws_read/zh/tools.md +25 -5
- package/package.json +4 -4
- package/webapp/dist/assets/{_basePickBy-u7tNFRWr.js → _basePickBy-BPJaiZdW.js} +3 -3
- package/webapp/dist/assets/{_basePickBy-u7tNFRWr.js.map → _basePickBy-BPJaiZdW.js.map} +1 -1
- package/webapp/dist/assets/{_baseUniq-CH9LRkiH.js → _baseUniq-BEetT15i.js} +2 -2
- package/webapp/dist/assets/{_baseUniq-CH9LRkiH.js.map → _baseUniq-BEetT15i.js.map} +1 -1
- package/webapp/dist/assets/{arc-Bo0Lw3ZP.js → arc-Dm7Zf36f.js} +2 -2
- package/webapp/dist/assets/{arc-Bo0Lw3ZP.js.map → arc-Dm7Zf36f.js.map} +1 -1
- package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-Ckyr89Iw.js → architectureDiagram-VXUJARFQ-BpTPtkuo.js} +7 -7
- package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-Ckyr89Iw.js.map → architectureDiagram-VXUJARFQ-BpTPtkuo.js.map} +1 -1
- package/webapp/dist/assets/{blockDiagram-VD42YOAC-BSXoLLq_.js → blockDiagram-VD42YOAC-C8fLN0iu.js} +7 -7
- package/webapp/dist/assets/{blockDiagram-VD42YOAC-BSXoLLq_.js.map → blockDiagram-VD42YOAC-C8fLN0iu.js.map} +1 -1
- package/webapp/dist/assets/{c4Diagram-YG6GDRKO-CgCG1cP0.js → c4Diagram-YG6GDRKO-BpPr62CH.js} +3 -3
- package/webapp/dist/assets/{c4Diagram-YG6GDRKO-CgCG1cP0.js.map → c4Diagram-YG6GDRKO-BpPr62CH.js.map} +1 -1
- package/webapp/dist/assets/{channel-Crbz0zgt.js → channel-EMYoPjW3.js} +2 -2
- package/webapp/dist/assets/{channel-Crbz0zgt.js.map → channel-EMYoPjW3.js.map} +1 -1
- package/webapp/dist/assets/{chunk-4BX2VUAB-BIIEb_5S.js → chunk-4BX2VUAB-CefNtjWG.js} +2 -2
- package/webapp/dist/assets/{chunk-4BX2VUAB-BIIEb_5S.js.map → chunk-4BX2VUAB-CefNtjWG.js.map} +1 -1
- package/webapp/dist/assets/{chunk-55IACEB6-CaJzGgc9.js → chunk-55IACEB6-C_X7T43V.js} +2 -2
- package/webapp/dist/assets/{chunk-55IACEB6-CaJzGgc9.js.map → chunk-55IACEB6-C_X7T43V.js.map} +1 -1
- package/webapp/dist/assets/{chunk-B4BG7PRW-DHQwhO9F.js → chunk-B4BG7PRW-BRe3_2oA.js} +5 -5
- package/webapp/dist/assets/{chunk-B4BG7PRW-DHQwhO9F.js.map → chunk-B4BG7PRW-BRe3_2oA.js.map} +1 -1
- package/webapp/dist/assets/{chunk-DI55MBZ5-CG1lO0R8.js → chunk-DI55MBZ5-CbvrsI_w.js} +4 -4
- package/webapp/dist/assets/{chunk-DI55MBZ5-CG1lO0R8.js.map → chunk-DI55MBZ5-CbvrsI_w.js.map} +1 -1
- package/webapp/dist/assets/{chunk-FMBD7UC4-DAUsTLPS.js → chunk-FMBD7UC4-ORmtkrtS.js} +2 -2
- package/webapp/dist/assets/{chunk-FMBD7UC4-DAUsTLPS.js.map → chunk-FMBD7UC4-ORmtkrtS.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QN33PNHL-BfQs-QHE.js → chunk-QN33PNHL-LTAOVhWu.js} +2 -2
- package/webapp/dist/assets/{chunk-QN33PNHL-BfQs-QHE.js.map → chunk-QN33PNHL-LTAOVhWu.js.map} +1 -1
- package/webapp/dist/assets/{chunk-QZHKN3VN-C5iKQ6mQ.js → chunk-QZHKN3VN-ZoUM_4u5.js} +2 -2
- package/webapp/dist/assets/{chunk-QZHKN3VN-C5iKQ6mQ.js.map → chunk-QZHKN3VN-ZoUM_4u5.js.map} +1 -1
- package/webapp/dist/assets/{chunk-TZMSLE5B-CBShDwy2.js → chunk-TZMSLE5B-Gao4qrq7.js} +2 -2
- package/webapp/dist/assets/{chunk-TZMSLE5B-CBShDwy2.js.map → chunk-TZMSLE5B-Gao4qrq7.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-2ON5EDUG-DrfJDzYO.js → classDiagram-2ON5EDUG-uha1vIGN.js} +6 -6
- package/webapp/dist/assets/{classDiagram-2ON5EDUG-DrfJDzYO.js.map → classDiagram-2ON5EDUG-uha1vIGN.js.map} +1 -1
- package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-DrfJDzYO.js → classDiagram-v2-WZHVMYZB-uha1vIGN.js} +6 -6
- package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-DrfJDzYO.js.map → classDiagram-v2-WZHVMYZB-uha1vIGN.js.map} +1 -1
- package/webapp/dist/assets/{clone-Cd-48URG.js → clone-_9Ayb1Gp.js} +2 -2
- package/webapp/dist/assets/{clone-Cd-48URG.js.map → clone-_9Ayb1Gp.js.map} +1 -1
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-CCji0YN3.js → cose-bilkent-S5V4N54A-C8wDw3NY.js} +2 -2
- package/webapp/dist/assets/{cose-bilkent-S5V4N54A-CCji0YN3.js.map → cose-bilkent-S5V4N54A-C8wDw3NY.js.map} +1 -1
- package/webapp/dist/assets/{dagre-6UL2VRFP-B94p-Dpl.js → dagre-6UL2VRFP-BUSeNot0.js} +7 -7
- package/webapp/dist/assets/{dagre-6UL2VRFP-B94p-Dpl.js.map → dagre-6UL2VRFP-BUSeNot0.js.map} +1 -1
- package/webapp/dist/assets/{diagram-PSM6KHXK-DP-zGmAS.js → diagram-PSM6KHXK-CMZAksVC.js} +8 -8
- package/webapp/dist/assets/{diagram-PSM6KHXK-DP-zGmAS.js.map → diagram-PSM6KHXK-CMZAksVC.js.map} +1 -1
- package/webapp/dist/assets/{diagram-QEK2KX5R-DquJirs4.js → diagram-QEK2KX5R-BQKoRtwy.js} +7 -7
- package/webapp/dist/assets/{diagram-QEK2KX5R-DquJirs4.js.map → diagram-QEK2KX5R-BQKoRtwy.js.map} +1 -1
- package/webapp/dist/assets/{diagram-S2PKOQOG-Dt5W2t6V.js → diagram-S2PKOQOG-DjMG97kd.js} +7 -7
- package/webapp/dist/assets/{diagram-S2PKOQOG-Dt5W2t6V.js.map → diagram-S2PKOQOG-DjMG97kd.js.map} +1 -1
- package/webapp/dist/assets/{erDiagram-Q2GNP2WA-Bs0-2Rfj.js → erDiagram-Q2GNP2WA-BujwA137.js} +5 -5
- package/webapp/dist/assets/{erDiagram-Q2GNP2WA-Bs0-2Rfj.js.map → erDiagram-Q2GNP2WA-BujwA137.js.map} +1 -1
- package/webapp/dist/assets/{flowDiagram-NV44I4VS-cJjXWAlK.js → flowDiagram-NV44I4VS-DgwPjg4y.js} +6 -6
- package/webapp/dist/assets/{flowDiagram-NV44I4VS-cJjXWAlK.js.map → flowDiagram-NV44I4VS-DgwPjg4y.js.map} +1 -1
- package/webapp/dist/assets/{ganttDiagram-JELNMOA3-Du1AUaKm.js → ganttDiagram-JELNMOA3-Db2ykf3E.js} +3 -3
- package/webapp/dist/assets/{ganttDiagram-JELNMOA3-Du1AUaKm.js.map → ganttDiagram-JELNMOA3-Db2ykf3E.js.map} +1 -1
- package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-D_jVOYOK.js → gitGraphDiagram-V2S2FVAM-D_gSifkv.js} +8 -8
- package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-D_jVOYOK.js.map → gitGraphDiagram-V2S2FVAM-D_gSifkv.js.map} +1 -1
- package/webapp/dist/assets/{graph-CuF_sq4r.js → graph-BHjCU5xP.js} +3 -3
- package/webapp/dist/assets/{graph-CuF_sq4r.js.map → graph-BHjCU5xP.js.map} +1 -1
- package/webapp/dist/assets/{index-DAShQcjb.js → index-DLajsIDJ.js} +1363 -248
- package/webapp/dist/assets/{index-DAShQcjb.js.map → index-DLajsIDJ.js.map} +1 -1
- package/webapp/dist/assets/{infoDiagram-HS3SLOUP-CEFlo_Hl.js → infoDiagram-HS3SLOUP-BDba5pKs.js} +6 -6
- package/webapp/dist/assets/{infoDiagram-HS3SLOUP-CEFlo_Hl.js.map → infoDiagram-HS3SLOUP-BDba5pKs.js.map} +1 -1
- package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-zc2Q4Se9.js → journeyDiagram-XKPGCS4Q-CmJAbmlm.js} +5 -5
- package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-zc2Q4Se9.js.map → journeyDiagram-XKPGCS4Q-CmJAbmlm.js.map} +1 -1
- package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-oT42RM2a.js → kanban-definition-3W4ZIXB7-DxQeBTDk.js} +3 -3
- package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-oT42RM2a.js.map → kanban-definition-3W4ZIXB7-DxQeBTDk.js.map} +1 -1
- package/webapp/dist/assets/{layout-BvaOu3k2.js → layout-DteV_yE8.js} +5 -5
- package/webapp/dist/assets/{layout-BvaOu3k2.js.map → layout-DteV_yE8.js.map} +1 -1
- package/webapp/dist/assets/{linear-Cg-CjocS.js → linear-zItbPrND.js} +2 -2
- package/webapp/dist/assets/{linear-Cg-CjocS.js.map → linear-zItbPrND.js.map} +1 -1
- package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-CVFVrU22.js → mindmap-definition-VGOIOE7T-BJXI7UqO.js} +4 -4
- package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-CVFVrU22.js.map → mindmap-definition-VGOIOE7T-BJXI7UqO.js.map} +1 -1
- package/webapp/dist/assets/{pieDiagram-ADFJNKIX-Bai5CMos.js → pieDiagram-ADFJNKIX-BpM-aH2p.js} +8 -8
- package/webapp/dist/assets/{pieDiagram-ADFJNKIX-Bai5CMos.js.map → pieDiagram-ADFJNKIX-BpM-aH2p.js.map} +1 -1
- package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-BPXDO_2E.js → quadrantDiagram-AYHSOK5B-NXdIpA15.js} +3 -3
- package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-BPXDO_2E.js.map → quadrantDiagram-AYHSOK5B-NXdIpA15.js.map} +1 -1
- package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-Dgj9X9cE.js → requirementDiagram-UZGBJVZJ-D1AICAA0.js} +4 -4
- package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-Dgj9X9cE.js.map → requirementDiagram-UZGBJVZJ-D1AICAA0.js.map} +1 -1
- package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-Dc0mO4OD.js → sankeyDiagram-TZEHDZUN-WiReDPfo.js} +2 -2
- package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-Dc0mO4OD.js.map → sankeyDiagram-TZEHDZUN-WiReDPfo.js.map} +1 -1
- package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-DZJTga0d.js → sequenceDiagram-WL72ISMW-Cw76oP8t.js} +4 -4
- package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-DZJTga0d.js.map → sequenceDiagram-WL72ISMW-Cw76oP8t.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-RNxYatKM.js → stateDiagram-FKZM4ZOC-QjCeRczs.js} +9 -9
- package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-RNxYatKM.js.map → stateDiagram-FKZM4ZOC-QjCeRczs.js.map} +1 -1
- package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-ADxYqWzo.js → stateDiagram-v2-4FDKWEC3-IClqxQ4s.js} +5 -5
- package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-ADxYqWzo.js.map → stateDiagram-v2-4FDKWEC3-IClqxQ4s.js.map} +1 -1
- package/webapp/dist/assets/{timeline-definition-IT6M3QCI-Qx_h1e-i.js → timeline-definition-IT6M3QCI-BfyfTY7m.js} +3 -3
- package/webapp/dist/assets/{timeline-definition-IT6M3QCI-Qx_h1e-i.js.map → timeline-definition-IT6M3QCI-BfyfTY7m.js.map} +1 -1
- package/webapp/dist/assets/{treemap-GDKQZRPO-BHzYvXGn.js → treemap-GDKQZRPO-C5MiL6--.js} +5 -5
- package/webapp/dist/assets/{treemap-GDKQZRPO-BHzYvXGn.js.map → treemap-GDKQZRPO-C5MiL6--.js.map} +1 -1
- package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-DGdjkYQQ.js → xychartDiagram-PRI3JC2R-ybaJrSry.js} +3 -3
- package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-DGdjkYQQ.js.map → xychartDiagram-PRI3JC2R-ybaJrSry.js.map} +1 -1
- package/webapp/dist/index.html +1 -1
package/dist/persistence.js
CHANGED
|
@@ -576,6 +576,20 @@ function buildToolResultImageIngestRecord(ingest, genseq) {
|
|
|
576
576
|
detail: ingest.detail,
|
|
577
577
|
};
|
|
578
578
|
}
|
|
579
|
+
function buildUserImageIngestRecord(ingest, genseq) {
|
|
580
|
+
return {
|
|
581
|
+
ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
|
|
582
|
+
type: 'user_image_ingest_record',
|
|
583
|
+
genseq,
|
|
584
|
+
...(ingest.msgId !== undefined ? { msgId: ingest.msgId } : {}),
|
|
585
|
+
artifact: ingest.artifact,
|
|
586
|
+
provider: ingest.provider,
|
|
587
|
+
model: ingest.model,
|
|
588
|
+
disposition: ingest.disposition,
|
|
589
|
+
message: ingest.message,
|
|
590
|
+
detail: ingest.detail,
|
|
591
|
+
};
|
|
592
|
+
}
|
|
579
593
|
function buildTellaskCallRecord(args) {
|
|
580
594
|
return {
|
|
581
595
|
ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
|
|
@@ -604,6 +618,7 @@ function buildTellaskResultRecord(result) {
|
|
|
604
618
|
callId: result.callId,
|
|
605
619
|
status: result.status,
|
|
606
620
|
content: result.content,
|
|
621
|
+
contentItems: result.contentItems,
|
|
607
622
|
...(typeof result.originCourse === 'number'
|
|
608
623
|
? { originCourse: (0, storage_1.toCallingCourseNumber)(result.originCourse) }
|
|
609
624
|
: {}),
|
|
@@ -666,6 +681,7 @@ function buildTellaskCarryoverRecord(result, genseq) {
|
|
|
666
681
|
status: result.status,
|
|
667
682
|
response: result.response,
|
|
668
683
|
content: result.content,
|
|
684
|
+
contentItems: result.contentItems,
|
|
669
685
|
agentId: result.agentId,
|
|
670
686
|
callId: result.callId,
|
|
671
687
|
originMemberId: result.originMemberId,
|
|
@@ -1090,19 +1106,41 @@ function parseDialogPendingCourseStartPrompt(value) {
|
|
|
1090
1106
|
const skipTaskdoc = skipTaskdocRaw;
|
|
1091
1107
|
const normalizedTellaskReplyDirective = tellaskReplyDirective === null ? undefined : tellaskReplyDirective;
|
|
1092
1108
|
const normalizedSubdialogReplyTarget = subdialogReplyTarget === null ? undefined : subdialogReplyTarget;
|
|
1109
|
+
if (normalizedSubdialogReplyTarget !== undefined &&
|
|
1110
|
+
normalizedTellaskReplyDirective === undefined) {
|
|
1111
|
+
return null;
|
|
1112
|
+
}
|
|
1113
|
+
if (normalizedTellaskReplyDirective !== undefined &&
|
|
1114
|
+
normalizedSubdialogReplyTarget !== undefined) {
|
|
1115
|
+
return {
|
|
1116
|
+
content: value.content,
|
|
1117
|
+
msgId: value.msgId,
|
|
1118
|
+
grammar: 'markdown',
|
|
1119
|
+
origin: 'runtime',
|
|
1120
|
+
...(userLanguageCode === undefined ? {} : { userLanguageCode }),
|
|
1121
|
+
...(skipTaskdoc === undefined ? {} : { skipTaskdoc }),
|
|
1122
|
+
tellaskReplyDirective: normalizedTellaskReplyDirective,
|
|
1123
|
+
subdialogReplyTarget: normalizedSubdialogReplyTarget,
|
|
1124
|
+
};
|
|
1125
|
+
}
|
|
1126
|
+
if (normalizedTellaskReplyDirective !== undefined) {
|
|
1127
|
+
return {
|
|
1128
|
+
content: value.content,
|
|
1129
|
+
msgId: value.msgId,
|
|
1130
|
+
grammar: 'markdown',
|
|
1131
|
+
origin: 'runtime',
|
|
1132
|
+
...(userLanguageCode === undefined ? {} : { userLanguageCode }),
|
|
1133
|
+
...(skipTaskdoc === undefined ? {} : { skipTaskdoc }),
|
|
1134
|
+
tellaskReplyDirective: normalizedTellaskReplyDirective,
|
|
1135
|
+
};
|
|
1136
|
+
}
|
|
1093
1137
|
return {
|
|
1094
1138
|
content: value.content,
|
|
1095
1139
|
msgId: value.msgId,
|
|
1096
1140
|
grammar: 'markdown',
|
|
1097
1141
|
origin: 'runtime',
|
|
1098
1142
|
...(userLanguageCode === undefined ? {} : { userLanguageCode }),
|
|
1099
|
-
...(normalizedTellaskReplyDirective === undefined
|
|
1100
|
-
? {}
|
|
1101
|
-
: { tellaskReplyDirective: normalizedTellaskReplyDirective }),
|
|
1102
1143
|
...(skipTaskdoc === undefined ? {} : { skipTaskdoc }),
|
|
1103
|
-
...(normalizedSubdialogReplyTarget === undefined
|
|
1104
|
-
? {}
|
|
1105
|
-
: { subdialogReplyTarget: normalizedSubdialogReplyTarget }),
|
|
1106
1144
|
};
|
|
1107
1145
|
}
|
|
1108
1146
|
function parseDialogLatestFile(value) {
|
|
@@ -1573,6 +1611,10 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
1573
1611
|
: (() => {
|
|
1574
1612
|
throw new Error(`createSubDialog invariant violation: unsupported caller dialog type (${callerDialog.constructor.name})`);
|
|
1575
1613
|
})();
|
|
1614
|
+
const rootStatus = rootDialog.status;
|
|
1615
|
+
if (rootStatus !== 'running') {
|
|
1616
|
+
throw new Error(`createSubDialog invariant violation: root dialog must be running (rootId=${rootDialog.id.rootId}, status=${rootStatus})`);
|
|
1617
|
+
}
|
|
1576
1618
|
const subdialogId = new dialog_1.DialogID(generatedId, rootDialog.id.rootId);
|
|
1577
1619
|
// Prepare subdialog store
|
|
1578
1620
|
const subdialogStore = new DiskFileDialogStore(subdialogId);
|
|
@@ -1647,6 +1689,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
1647
1689
|
},
|
|
1648
1690
|
}));
|
|
1649
1691
|
// Supdialog clarification context is persisted in subdialog metadata (supdialogCall)
|
|
1692
|
+
const rootSubdialogCount = await DialogPersistence.countAllSubdialogsUnderRoot(rootDialog.id, rootStatus);
|
|
1650
1693
|
const subdialogCreatedEvt = {
|
|
1651
1694
|
type: 'subdialog_created_evt',
|
|
1652
1695
|
dialog: {
|
|
@@ -1667,13 +1710,14 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
1667
1710
|
callName: options.callName,
|
|
1668
1711
|
mentionList,
|
|
1669
1712
|
tellaskContent,
|
|
1713
|
+
rootSubdialogCount,
|
|
1670
1714
|
subDialogNode: {
|
|
1671
1715
|
selfId: subdialogId.selfId,
|
|
1672
1716
|
rootId: subdialogId.rootId,
|
|
1673
1717
|
supdialogId: callerDialog.id.selfId,
|
|
1674
1718
|
agentId: targetAgentId,
|
|
1675
1719
|
taskDocPath: callerDialog.taskDocPath,
|
|
1676
|
-
status:
|
|
1720
|
+
status: rootStatus,
|
|
1677
1721
|
currentCourse: 1,
|
|
1678
1722
|
createdAt: nowTs,
|
|
1679
1723
|
lastModified: nowTs,
|
|
@@ -2255,21 +2299,43 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2255
2299
|
const model = payload.model.trim();
|
|
2256
2300
|
const provider = payload.provider.trim();
|
|
2257
2301
|
const relPath = payload.artifact.relPath.trim();
|
|
2302
|
+
const message = payload.message.trim();
|
|
2258
2303
|
if (toolCallId === '') {
|
|
2259
|
-
|
|
2260
|
-
|
|
2304
|
+
const error = new Error('tool_result_image_ingest_empty_tool_call_id');
|
|
2305
|
+
log_1.log.error('Protocol violation: toolResultImageIngest called with empty toolCallId', error, {
|
|
2306
|
+
dialog,
|
|
2307
|
+
payload,
|
|
2308
|
+
});
|
|
2309
|
+
throw error;
|
|
2261
2310
|
}
|
|
2262
2311
|
if (toolName === '') {
|
|
2263
|
-
|
|
2264
|
-
|
|
2312
|
+
const error = new Error('tool_result_image_ingest_empty_tool_name');
|
|
2313
|
+
log_1.log.error('Protocol violation: toolResultImageIngest called with empty toolName', error, {
|
|
2314
|
+
dialog,
|
|
2315
|
+
payload,
|
|
2316
|
+
});
|
|
2317
|
+
throw error;
|
|
2265
2318
|
}
|
|
2266
2319
|
if (provider === '' || model === '') {
|
|
2267
|
-
|
|
2268
|
-
|
|
2320
|
+
const error = new Error('tool_result_image_ingest_missing_provider_or_model');
|
|
2321
|
+
log_1.log.error('Protocol violation: toolResultImageIngest missing provider/model', error, {
|
|
2322
|
+
dialog,
|
|
2323
|
+
payload,
|
|
2324
|
+
});
|
|
2325
|
+
throw error;
|
|
2269
2326
|
}
|
|
2270
2327
|
if (relPath === '') {
|
|
2271
|
-
|
|
2272
|
-
|
|
2328
|
+
const error = new Error('tool_result_image_ingest_empty_rel_path');
|
|
2329
|
+
log_1.log.error('Protocol violation: toolResultImageIngest called with empty artifact relPath', error, { dialog, payload });
|
|
2330
|
+
throw error;
|
|
2331
|
+
}
|
|
2332
|
+
if (message === '') {
|
|
2333
|
+
const error = new Error('tool_result_image_ingest_empty_message');
|
|
2334
|
+
log_1.log.error('Protocol violation: toolResultImageIngest called with empty message', error, {
|
|
2335
|
+
dialog,
|
|
2336
|
+
payload,
|
|
2337
|
+
});
|
|
2338
|
+
throw error;
|
|
2273
2339
|
}
|
|
2274
2340
|
const normalizedPayload = {
|
|
2275
2341
|
toolCallId,
|
|
@@ -2283,7 +2349,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2283
2349
|
provider,
|
|
2284
2350
|
model,
|
|
2285
2351
|
disposition: payload.disposition,
|
|
2286
|
-
message
|
|
2352
|
+
message,
|
|
2287
2353
|
...(payload.detail !== undefined ? { detail: payload.detail } : {}),
|
|
2288
2354
|
};
|
|
2289
2355
|
const record = buildToolResultImageIngestRecord(normalizedPayload, dialog.activeGenSeq);
|
|
@@ -2303,6 +2369,69 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2303
2369
|
};
|
|
2304
2370
|
(0, evt_registry_1.postDialogEvent)(dialog, evt);
|
|
2305
2371
|
}
|
|
2372
|
+
async userImageIngest(dialog, payload) {
|
|
2373
|
+
const course = dialog.activeGenCourseOrUndefined ?? dialog.currentCourse;
|
|
2374
|
+
const msgId = typeof payload.msgId === 'string' && payload.msgId.trim() !== ''
|
|
2375
|
+
? payload.msgId.trim()
|
|
2376
|
+
: undefined;
|
|
2377
|
+
const model = payload.model.trim();
|
|
2378
|
+
const provider = payload.provider.trim();
|
|
2379
|
+
const relPath = payload.artifact.relPath.trim();
|
|
2380
|
+
const message = payload.message.trim();
|
|
2381
|
+
if (provider === '' || model === '') {
|
|
2382
|
+
const error = new Error('user_image_ingest_missing_provider_or_model');
|
|
2383
|
+
log_1.log.error('Protocol violation: userImageIngest missing provider/model', error, {
|
|
2384
|
+
dialog,
|
|
2385
|
+
payload,
|
|
2386
|
+
});
|
|
2387
|
+
throw error;
|
|
2388
|
+
}
|
|
2389
|
+
if (relPath === '') {
|
|
2390
|
+
const error = new Error('user_image_ingest_empty_rel_path');
|
|
2391
|
+
log_1.log.error('Protocol violation: userImageIngest called with empty artifact relPath', error, {
|
|
2392
|
+
dialog,
|
|
2393
|
+
payload,
|
|
2394
|
+
});
|
|
2395
|
+
throw error;
|
|
2396
|
+
}
|
|
2397
|
+
if (message === '') {
|
|
2398
|
+
const error = new Error('user_image_ingest_empty_message');
|
|
2399
|
+
log_1.log.error('Protocol violation: userImageIngest called with empty message', error, {
|
|
2400
|
+
dialog,
|
|
2401
|
+
payload,
|
|
2402
|
+
});
|
|
2403
|
+
throw error;
|
|
2404
|
+
}
|
|
2405
|
+
const normalizedPayload = {
|
|
2406
|
+
...(msgId !== undefined ? { msgId } : {}),
|
|
2407
|
+
artifact: {
|
|
2408
|
+
rootId: payload.artifact.rootId,
|
|
2409
|
+
selfId: payload.artifact.selfId,
|
|
2410
|
+
status: payload.artifact.status,
|
|
2411
|
+
relPath,
|
|
2412
|
+
},
|
|
2413
|
+
provider,
|
|
2414
|
+
model,
|
|
2415
|
+
disposition: payload.disposition,
|
|
2416
|
+
message,
|
|
2417
|
+
...(payload.detail !== undefined ? { detail: payload.detail } : {}),
|
|
2418
|
+
};
|
|
2419
|
+
const record = buildUserImageIngestRecord(normalizedPayload, dialog.activeGenSeq);
|
|
2420
|
+
await this.appendEvent(dialog, course, record);
|
|
2421
|
+
const evt = {
|
|
2422
|
+
type: 'user_image_ingest_evt',
|
|
2423
|
+
course,
|
|
2424
|
+
genseq: dialog.activeGenSeq,
|
|
2425
|
+
...(msgId !== undefined ? { msgId } : {}),
|
|
2426
|
+
artifact: normalizedPayload.artifact,
|
|
2427
|
+
provider,
|
|
2428
|
+
model,
|
|
2429
|
+
disposition: normalizedPayload.disposition,
|
|
2430
|
+
message: normalizedPayload.message,
|
|
2431
|
+
...(normalizedPayload.detail !== undefined ? { detail: normalizedPayload.detail } : {}),
|
|
2432
|
+
};
|
|
2433
|
+
(0, evt_registry_1.postDialogEvent)(dialog, evt);
|
|
2434
|
+
}
|
|
2306
2435
|
/**
|
|
2307
2436
|
* Emit stream error for current generation lifecycle (uses active genseq when present)
|
|
2308
2437
|
*/
|
|
@@ -2351,24 +2480,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2351
2480
|
reason: { kind: 'pending_course_start' },
|
|
2352
2481
|
},
|
|
2353
2482
|
}),
|
|
2354
|
-
pendingCourseStartPrompt:
|
|
2355
|
-
content: newCoursePrompt.content,
|
|
2356
|
-
msgId: newCoursePrompt.msgId,
|
|
2357
|
-
grammar: 'markdown',
|
|
2358
|
-
origin: 'runtime',
|
|
2359
|
-
...(newCoursePrompt.userLanguageCode === undefined
|
|
2360
|
-
? {}
|
|
2361
|
-
: { userLanguageCode: newCoursePrompt.userLanguageCode }),
|
|
2362
|
-
...(newCoursePrompt.tellaskReplyDirective === undefined
|
|
2363
|
-
? {}
|
|
2364
|
-
: { tellaskReplyDirective: newCoursePrompt.tellaskReplyDirective }),
|
|
2365
|
-
...(newCoursePrompt.skipTaskdoc === undefined
|
|
2366
|
-
? {}
|
|
2367
|
-
: { skipTaskdoc: newCoursePrompt.skipTaskdoc }),
|
|
2368
|
-
...(newCoursePrompt.subdialogReplyTarget === undefined
|
|
2369
|
-
? {}
|
|
2370
|
-
: { subdialogReplyTarget: newCoursePrompt.subdialogReplyTarget }),
|
|
2371
|
-
},
|
|
2483
|
+
pendingCourseStartPrompt: newCoursePrompt,
|
|
2372
2484
|
},
|
|
2373
2485
|
}));
|
|
2374
2486
|
// Post course update event
|
|
@@ -2392,7 +2504,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2392
2504
|
* Note: The end_of_user_saying_evt is emitted by the driver after user content
|
|
2393
2505
|
* is rendered and any tellask calls are parsed/executed.
|
|
2394
2506
|
*/
|
|
2395
|
-
async persistUserMessage(dialog, content, msgId, grammar, origin, userLanguageCode, q4hAnswerCallId, tellaskReplyDirective) {
|
|
2507
|
+
async persistUserMessage(dialog, content, msgId, grammar, origin, userLanguageCode, q4hAnswerCallId, tellaskReplyDirective, contentItems) {
|
|
2396
2508
|
const course = dialog.currentCourse;
|
|
2397
2509
|
// Use activeGenSeqOrUndefined to handle case when genseq hasn't been initialized yet
|
|
2398
2510
|
const genseq = dialog.activeGenSeqOrUndefined ?? 1;
|
|
@@ -2406,6 +2518,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2406
2518
|
type: 'human_text_record',
|
|
2407
2519
|
genseq: genseq,
|
|
2408
2520
|
content: String(content || ''),
|
|
2521
|
+
contentItems,
|
|
2409
2522
|
msgId: msgId,
|
|
2410
2523
|
grammar,
|
|
2411
2524
|
origin,
|
|
@@ -2907,6 +3020,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
2907
3020
|
genseq,
|
|
2908
3021
|
msgId: event.msgId,
|
|
2909
3022
|
content,
|
|
3023
|
+
contentItems: event.contentItems,
|
|
2910
3024
|
grammar,
|
|
2911
3025
|
origin,
|
|
2912
3026
|
userLanguageCode,
|
|
@@ -3368,6 +3482,31 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
3368
3482
|
}
|
|
3369
3483
|
break;
|
|
3370
3484
|
}
|
|
3485
|
+
case 'user_image_ingest_record': {
|
|
3486
|
+
const userImageIngestEvt = {
|
|
3487
|
+
type: 'user_image_ingest_evt',
|
|
3488
|
+
course,
|
|
3489
|
+
genseq: event.genseq,
|
|
3490
|
+
...(event.msgId !== undefined ? { msgId: event.msgId } : {}),
|
|
3491
|
+
artifact: event.artifact,
|
|
3492
|
+
provider: event.provider,
|
|
3493
|
+
model: event.model,
|
|
3494
|
+
disposition: event.disposition,
|
|
3495
|
+
message: event.message,
|
|
3496
|
+
...(event.detail !== undefined ? { detail: event.detail } : {}),
|
|
3497
|
+
};
|
|
3498
|
+
if (ws.readyState === 1) {
|
|
3499
|
+
ws.send(JSON.stringify({
|
|
3500
|
+
...userImageIngestEvt,
|
|
3501
|
+
dialog: {
|
|
3502
|
+
selfId: dialog.id.selfId,
|
|
3503
|
+
rootId: dialog.id.rootId,
|
|
3504
|
+
},
|
|
3505
|
+
timestamp: event.ts,
|
|
3506
|
+
}));
|
|
3507
|
+
}
|
|
3508
|
+
break;
|
|
3509
|
+
}
|
|
3371
3510
|
case 'tellask_result_record': {
|
|
3372
3511
|
const base = {
|
|
3373
3512
|
type: 'tellask_result_evt',
|
|
@@ -3409,6 +3548,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
3409
3548
|
}
|
|
3410
3549
|
case 'quest_for_sup_record': {
|
|
3411
3550
|
// Handle subdialog creation requests
|
|
3551
|
+
const persistedStatus = assertPersistableDialogStatus(status, 'sendEventDirectlyToWebSocket:quest_for_sup_record');
|
|
3412
3552
|
const subdialogId = new dialog_1.DialogID(event.subDialogId, dialog.id.rootId);
|
|
3413
3553
|
const metadata = await DialogPersistence.loadDialogMetadata(subdialogId, status);
|
|
3414
3554
|
if (!metadata || !isSubdialogMetadataFile(metadata)) {
|
|
@@ -3422,6 +3562,13 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
3422
3562
|
: typeof subMeta.supdialogId === 'string' && subMeta.supdialogId.trim() !== ''
|
|
3423
3563
|
? subMeta.supdialogId
|
|
3424
3564
|
: dialog.id.selfId;
|
|
3565
|
+
const callName = subMeta.assignmentFromSup?.callName;
|
|
3566
|
+
if (callName !== 'tellask' &&
|
|
3567
|
+
callName !== 'tellaskSessionless' &&
|
|
3568
|
+
callName !== 'freshBootsReasoning') {
|
|
3569
|
+
throw new Error(`subdialog_created_evt replay invariant violation: missing assignment callName for ${subdialogId.valueOf()} in ${status}`);
|
|
3570
|
+
}
|
|
3571
|
+
const rootSubdialogCount = await DialogPersistence.countAllSubdialogsUnderRoot(new dialog_1.DialogID(subdialogId.rootId), persistedStatus);
|
|
3425
3572
|
const subdialogCreatedEvent = {
|
|
3426
3573
|
type: 'subdialog_created_evt',
|
|
3427
3574
|
course,
|
|
@@ -3439,15 +3586,17 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
|
|
|
3439
3586
|
rootId: subdialogId.rootId,
|
|
3440
3587
|
},
|
|
3441
3588
|
targetAgentId: subMeta.agentId,
|
|
3589
|
+
callName,
|
|
3442
3590
|
mentionList: event.mentionList,
|
|
3443
3591
|
tellaskContent: event.tellaskContent,
|
|
3592
|
+
rootSubdialogCount,
|
|
3444
3593
|
subDialogNode: {
|
|
3445
3594
|
selfId: subMeta.id,
|
|
3446
3595
|
rootId: subdialogId.rootId,
|
|
3447
3596
|
supdialogId: derivedSupdialogId,
|
|
3448
3597
|
agentId: subMeta.agentId,
|
|
3449
3598
|
taskDocPath: subMeta.taskDocPath,
|
|
3450
|
-
status,
|
|
3599
|
+
status: persistedStatus,
|
|
3451
3600
|
currentCourse: subLatest?.currentCourse || 1,
|
|
3452
3601
|
createdAt: subMeta.createdAt,
|
|
3453
3602
|
lastModified: subLatest?.lastModified || subMeta.createdAt,
|
|
@@ -6194,13 +6343,16 @@ class DialogPersistence {
|
|
|
6194
6343
|
* Count subdialogs under a root dialog (no single-layer listing exposed)
|
|
6195
6344
|
*/
|
|
6196
6345
|
static async countAllSubdialogsUnderRoot(rootDialogId, status = 'running') {
|
|
6346
|
+
if (rootDialogId.rootId !== rootDialogId.selfId) {
|
|
6347
|
+
throw new Error(`countAllSubdialogsUnderRoot invariant violation: expected root dialog id, got ${rootDialogId.valueOf()}`);
|
|
6348
|
+
}
|
|
6197
6349
|
try {
|
|
6198
|
-
const
|
|
6199
|
-
return
|
|
6350
|
+
const dialogIds = await this.listAllDialogIds(status);
|
|
6351
|
+
return dialogIds.filter((dialogId) => dialogId.rootId === rootDialogId.rootId && dialogId.selfId !== dialogId.rootId).length;
|
|
6200
6352
|
}
|
|
6201
6353
|
catch (error) {
|
|
6202
6354
|
log_1.log.error(`Failed to count all subdialogs under root ${rootDialogId.selfId}:`, error);
|
|
6203
|
-
|
|
6355
|
+
throw error;
|
|
6204
6356
|
}
|
|
6205
6357
|
}
|
|
6206
6358
|
// === HIERARCHICAL DIALOG RESTORATION ===
|
|
@@ -6312,6 +6464,7 @@ class DialogPersistence {
|
|
|
6312
6464
|
genseq: event.genseq,
|
|
6313
6465
|
msgId: event.msgId,
|
|
6314
6466
|
content: event.content,
|
|
6467
|
+
contentItems: event.contentItems,
|
|
6315
6468
|
grammar: event.grammar ?? 'markdown',
|
|
6316
6469
|
});
|
|
6317
6470
|
break;
|
|
@@ -6353,6 +6506,10 @@ class DialogPersistence {
|
|
|
6353
6506
|
// UI-only per-generation image projection diagnostics for tool results.
|
|
6354
6507
|
// Must not be injected into LLM context reconstruction.
|
|
6355
6508
|
break;
|
|
6509
|
+
case 'user_image_ingest_record':
|
|
6510
|
+
// UI-only per-generation image projection diagnostics for user attachments.
|
|
6511
|
+
// Must not be injected into LLM context reconstruction.
|
|
6512
|
+
break;
|
|
6356
6513
|
case 'func_result_record': {
|
|
6357
6514
|
// Convert function result to ChatMessage
|
|
6358
6515
|
messages.push({
|
|
@@ -6374,6 +6531,7 @@ class DialogPersistence {
|
|
|
6374
6531
|
callName: event.callName,
|
|
6375
6532
|
status: event.status,
|
|
6376
6533
|
content: event.content,
|
|
6534
|
+
contentItems: event.contentItems,
|
|
6377
6535
|
...(event.originCourse !== undefined ? { originCourse: event.originCourse } : {}),
|
|
6378
6536
|
...(event.calling_genseq !== undefined ? { calling_genseq: event.calling_genseq } : {}),
|
|
6379
6537
|
call: event.call,
|
|
@@ -6405,6 +6563,7 @@ class DialogPersistence {
|
|
|
6405
6563
|
role: 'user',
|
|
6406
6564
|
genseq: event.genseq,
|
|
6407
6565
|
content: event.content,
|
|
6566
|
+
contentItems: event.contentItems,
|
|
6408
6567
|
originCourse: event.originCourse,
|
|
6409
6568
|
carryoverCourse: event.carryoverCourse,
|
|
6410
6569
|
responderId: event.responderId,
|
package/dist/priming.js
CHANGED
|
@@ -249,6 +249,7 @@ function isPrimingRecordType(raw) {
|
|
|
249
249
|
raw === 'tellask_call_record' ||
|
|
250
250
|
raw === 'web_search_call_record' ||
|
|
251
251
|
raw === 'tool_result_image_ingest_record' ||
|
|
252
|
+
raw === 'user_image_ingest_record' ||
|
|
252
253
|
raw === 'human_text_record' ||
|
|
253
254
|
raw === 'func_result_record' ||
|
|
254
255
|
raw === 'tellask_result_record' ||
|
|
@@ -279,6 +280,7 @@ function getRecordMarkdownTextField(type) {
|
|
|
279
280
|
case 'func_call_record':
|
|
280
281
|
case 'web_search_call_record':
|
|
281
282
|
case 'tool_result_image_ingest_record':
|
|
283
|
+
case 'user_image_ingest_record':
|
|
282
284
|
case 'native_tool_call_record':
|
|
283
285
|
case 'tellask_call_anchor_record':
|
|
284
286
|
case 'gen_start_record':
|
|
@@ -530,7 +532,7 @@ function normalizeWebSearchAction(value, context) {
|
|
|
530
532
|
}
|
|
531
533
|
throw new Error(`${context}.action.type must be search | open_page | find_in_page`);
|
|
532
534
|
}
|
|
533
|
-
function
|
|
535
|
+
function normalizeContentItems(value, context) {
|
|
534
536
|
if (value === undefined)
|
|
535
537
|
return undefined;
|
|
536
538
|
if (!Array.isArray(value)) {
|
|
@@ -903,6 +905,61 @@ function normalizePrimingRecordFromJson(raw) {
|
|
|
903
905
|
const { ts: _unusedTs, ...withoutTs } = record;
|
|
904
906
|
return withoutTs;
|
|
905
907
|
}
|
|
908
|
+
case 'user_image_ingest_record': {
|
|
909
|
+
const disposition = raw['disposition'];
|
|
910
|
+
if (disposition !== 'fed_native' &&
|
|
911
|
+
disposition !== 'fed_provider_transformed' &&
|
|
912
|
+
disposition !== 'filtered_provider_unsupported' &&
|
|
913
|
+
disposition !== 'filtered_model_unsupported' &&
|
|
914
|
+
disposition !== 'filtered_mime_unsupported' &&
|
|
915
|
+
disposition !== 'filtered_size_limit' &&
|
|
916
|
+
disposition !== 'filtered_read_failed' &&
|
|
917
|
+
disposition !== 'filtered_missing') {
|
|
918
|
+
throw new Error(`${context}.disposition is invalid`);
|
|
919
|
+
}
|
|
920
|
+
const artifactRaw = raw['artifact'];
|
|
921
|
+
if (!isRecord(artifactRaw)) {
|
|
922
|
+
throw new Error(`${context}.artifact must be an object`);
|
|
923
|
+
}
|
|
924
|
+
const rootId = artifactRaw['rootId'];
|
|
925
|
+
const selfId = artifactRaw['selfId'];
|
|
926
|
+
const status = artifactRaw['status'];
|
|
927
|
+
const relPath = artifactRaw['relPath'];
|
|
928
|
+
if (typeof rootId !== 'string' ||
|
|
929
|
+
typeof selfId !== 'string' ||
|
|
930
|
+
typeof relPath !== 'string' ||
|
|
931
|
+
(status !== 'running' && status !== 'completed' && status !== 'archived')) {
|
|
932
|
+
throw new Error(`${context}.artifact has invalid fields`);
|
|
933
|
+
}
|
|
934
|
+
const detail = raw['detail'];
|
|
935
|
+
if (detail !== undefined && typeof detail !== 'string') {
|
|
936
|
+
throw new Error(`${context}.detail must be a string when provided`);
|
|
937
|
+
}
|
|
938
|
+
const record = {
|
|
939
|
+
ts: '',
|
|
940
|
+
type,
|
|
941
|
+
genseq: expectIntegerField(raw, 'genseq', context),
|
|
942
|
+
artifact: {
|
|
943
|
+
rootId,
|
|
944
|
+
selfId,
|
|
945
|
+
status,
|
|
946
|
+
relPath,
|
|
947
|
+
},
|
|
948
|
+
provider: expectStringField(raw, 'provider', context),
|
|
949
|
+
model: expectStringField(raw, 'model', context),
|
|
950
|
+
disposition,
|
|
951
|
+
message: expectStringField(raw, 'message', context, true),
|
|
952
|
+
};
|
|
953
|
+
const msgId = parseOptionalStringField(raw, 'msgId', context);
|
|
954
|
+
if (msgId !== undefined)
|
|
955
|
+
record.msgId = msgId;
|
|
956
|
+
if (detail !== undefined)
|
|
957
|
+
record.detail = detail;
|
|
958
|
+
if (sourceTag)
|
|
959
|
+
record.sourceTag = sourceTag;
|
|
960
|
+
const { ts: _unusedTs, ...withoutTs } = record;
|
|
961
|
+
return withoutTs;
|
|
962
|
+
}
|
|
906
963
|
case 'human_text_record': {
|
|
907
964
|
const grammar = raw['grammar'];
|
|
908
965
|
if (grammar !== 'markdown') {
|
|
@@ -911,6 +968,7 @@ function normalizePrimingRecordFromJson(raw) {
|
|
|
911
968
|
const userLanguageCode = parseOptionalLanguageCodeField(raw, 'userLanguageCode', context);
|
|
912
969
|
const q4hAnswerCallId = parseOptionalStringField(raw, 'q4hAnswerCallId', context);
|
|
913
970
|
const tellaskReplyDirective = parseTellaskReplyDirective(raw, context);
|
|
971
|
+
const contentItems = normalizeContentItems(raw['contentItems'], context);
|
|
914
972
|
const record = {
|
|
915
973
|
ts: '',
|
|
916
974
|
type,
|
|
@@ -925,6 +983,8 @@ function normalizePrimingRecordFromJson(raw) {
|
|
|
925
983
|
record.q4hAnswerCallId = q4hAnswerCallId;
|
|
926
984
|
if (tellaskReplyDirective !== undefined)
|
|
927
985
|
record.tellaskReplyDirective = tellaskReplyDirective;
|
|
986
|
+
if (contentItems !== undefined)
|
|
987
|
+
record.contentItems = contentItems;
|
|
928
988
|
if (sourceTag)
|
|
929
989
|
record.sourceTag = sourceTag;
|
|
930
990
|
const { ts: _unusedTs, ...withoutTs } = record;
|
|
@@ -939,8 +999,8 @@ function normalizePrimingRecordFromJson(raw) {
|
|
|
939
999
|
name: expectStringField(raw, 'name', context),
|
|
940
1000
|
content: expectStringField(raw, 'content', context, true),
|
|
941
1001
|
};
|
|
942
|
-
const contentItems =
|
|
943
|
-
if (contentItems)
|
|
1002
|
+
const contentItems = normalizeContentItems(raw['contentItems'], context);
|
|
1003
|
+
if (contentItems !== undefined)
|
|
944
1004
|
record.contentItems = contentItems;
|
|
945
1005
|
if (sourceTag)
|
|
946
1006
|
record.sourceTag = sourceTag;
|
|
@@ -1022,6 +1082,7 @@ function normalizePrimingRecordFromJson(raw) {
|
|
|
1022
1082
|
content: expectStringField(raw, 'content', context, true),
|
|
1023
1083
|
responder,
|
|
1024
1084
|
};
|
|
1085
|
+
const contentItems = normalizeContentItems(raw['contentItems'], context);
|
|
1025
1086
|
const record = (() => {
|
|
1026
1087
|
switch (callName) {
|
|
1027
1088
|
case 'tellask': {
|
|
@@ -1083,6 +1144,8 @@ function normalizePrimingRecordFromJson(raw) {
|
|
|
1083
1144
|
if (route !== undefined) {
|
|
1084
1145
|
record.route = route;
|
|
1085
1146
|
}
|
|
1147
|
+
if (contentItems !== undefined)
|
|
1148
|
+
record.contentItems = contentItems;
|
|
1086
1149
|
if (sourceTag)
|
|
1087
1150
|
record.sourceTag = sourceTag;
|
|
1088
1151
|
const { ts: _unusedTs, ...withoutTs } = record;
|
|
@@ -1220,6 +1283,7 @@ function normalizePrimingRecordFromJson(raw) {
|
|
|
1220
1283
|
callId: expectStringField(raw, 'callId', context),
|
|
1221
1284
|
originMemberId: expectStringField(raw, 'originMemberId', context),
|
|
1222
1285
|
};
|
|
1286
|
+
const contentItems = normalizeContentItems(raw['contentItems'], context);
|
|
1223
1287
|
const record = (() => {
|
|
1224
1288
|
switch (callName) {
|
|
1225
1289
|
case 'tellask': {
|
|
@@ -1281,6 +1345,8 @@ function normalizePrimingRecordFromJson(raw) {
|
|
|
1281
1345
|
if (calleeGenseq !== undefined) {
|
|
1282
1346
|
record.calleeGenseq = (0, storage_1.toCalleeGenerationSeqNumber)(calleeGenseq);
|
|
1283
1347
|
}
|
|
1348
|
+
if (contentItems !== undefined)
|
|
1349
|
+
record.contentItems = contentItems;
|
|
1284
1350
|
if (sourceTag)
|
|
1285
1351
|
record.sourceTag = sourceTag;
|
|
1286
1352
|
const { ts: _unusedTs, ...withoutTs } = record;
|
|
@@ -1756,6 +1822,7 @@ function remapRecordGenseq(record, mapGenseq) {
|
|
|
1756
1822
|
case 'tellask_call_record':
|
|
1757
1823
|
case 'web_search_call_record':
|
|
1758
1824
|
case 'tool_result_image_ingest_record':
|
|
1825
|
+
case 'user_image_ingest_record':
|
|
1759
1826
|
case 'native_tool_call_record':
|
|
1760
1827
|
case 'human_text_record':
|
|
1761
1828
|
case 'func_result_record':
|
|
@@ -1816,6 +1883,7 @@ function addPrimingSourceTag(record) {
|
|
|
1816
1883
|
case 'tellask_call_record':
|
|
1817
1884
|
case 'web_search_call_record':
|
|
1818
1885
|
case 'tool_result_image_ingest_record':
|
|
1886
|
+
case 'user_image_ingest_record':
|
|
1819
1887
|
case 'native_tool_call_record':
|
|
1820
1888
|
case 'human_text_record':
|
|
1821
1889
|
case 'func_result_record':
|
|
@@ -1843,6 +1911,7 @@ function withTimestamp(record, ts) {
|
|
|
1843
1911
|
case 'tellask_call_record':
|
|
1844
1912
|
case 'web_search_call_record':
|
|
1845
1913
|
case 'tool_result_image_ingest_record':
|
|
1914
|
+
case 'user_image_ingest_record':
|
|
1846
1915
|
case 'human_text_record':
|
|
1847
1916
|
case 'func_result_record':
|
|
1848
1917
|
case 'tellask_result_record':
|
|
@@ -1894,6 +1963,7 @@ function primingRecordToChatMessage(record) {
|
|
|
1894
1963
|
msgId: record.msgId,
|
|
1895
1964
|
content: record.content,
|
|
1896
1965
|
grammar: 'markdown',
|
|
1966
|
+
contentItems: record.contentItems,
|
|
1897
1967
|
};
|
|
1898
1968
|
case 'func_call_record':
|
|
1899
1969
|
return {
|
|
@@ -1931,6 +2001,7 @@ function primingRecordToChatMessage(record) {
|
|
|
1931
2001
|
callName: record.callName,
|
|
1932
2002
|
status: record.status,
|
|
1933
2003
|
content: record.content,
|
|
2004
|
+
contentItems: record.contentItems,
|
|
1934
2005
|
...(record.originCourse !== undefined ? { originCourse: record.originCourse } : {}),
|
|
1935
2006
|
...(record.calling_genseq !== undefined ? { calling_genseq: record.calling_genseq } : {}),
|
|
1936
2007
|
call: record.call,
|
|
@@ -1970,6 +2041,7 @@ function primingRecordToChatMessage(record) {
|
|
|
1970
2041
|
agentId: record.agentId,
|
|
1971
2042
|
callId: record.callId,
|
|
1972
2043
|
originMemberId: record.originMemberId,
|
|
2044
|
+
contentItems: record.contentItems,
|
|
1973
2045
|
...(record.callName === 'tellask'
|
|
1974
2046
|
? {
|
|
1975
2047
|
mentionList: record.mentionList,
|
|
@@ -1986,6 +2058,7 @@ function primingRecordToChatMessage(record) {
|
|
|
1986
2058
|
};
|
|
1987
2059
|
case 'web_search_call_record':
|
|
1988
2060
|
case 'tool_result_image_ingest_record':
|
|
2061
|
+
case 'user_image_ingest_record':
|
|
1989
2062
|
case 'native_tool_call_record':
|
|
1990
2063
|
case 'quest_for_sup_record':
|
|
1991
2064
|
case 'tellask_call_anchor_record':
|
|
@@ -2138,6 +2211,21 @@ function formatScriptMarkdown(args) {
|
|
|
2138
2211
|
blockBody = record.message;
|
|
2139
2212
|
break;
|
|
2140
2213
|
}
|
|
2214
|
+
case 'user_image_ingest_record': {
|
|
2215
|
+
blockMeta['genseq'] = record.genseq;
|
|
2216
|
+
if (record.msgId !== undefined)
|
|
2217
|
+
blockMeta['msgId'] = record.msgId;
|
|
2218
|
+
blockMeta['artifact'] = record.artifact;
|
|
2219
|
+
blockMeta['provider'] = record.provider;
|
|
2220
|
+
blockMeta['model'] = record.model;
|
|
2221
|
+
blockMeta['disposition'] = record.disposition;
|
|
2222
|
+
if (record.detail !== undefined)
|
|
2223
|
+
blockMeta['detail'] = record.detail;
|
|
2224
|
+
if (record.sourceTag !== undefined)
|
|
2225
|
+
blockMeta['sourceTag'] = record.sourceTag;
|
|
2226
|
+
blockBody = record.message;
|
|
2227
|
+
break;
|
|
2228
|
+
}
|
|
2141
2229
|
case 'human_text_record': {
|
|
2142
2230
|
blockMeta['genseq'] = record.genseq;
|
|
2143
2231
|
blockMeta['msgId'] = record.msgId;
|
|
@@ -2149,6 +2237,8 @@ function formatScriptMarkdown(args) {
|
|
|
2149
2237
|
blockMeta['q4hAnswerCallId'] = record.q4hAnswerCallId;
|
|
2150
2238
|
if (record.tellaskReplyDirective !== undefined)
|
|
2151
2239
|
blockMeta['tellaskReplyDirective'] = record.tellaskReplyDirective;
|
|
2240
|
+
if (record.contentItems !== undefined)
|
|
2241
|
+
blockMeta['contentItems'] = record.contentItems;
|
|
2152
2242
|
if (record.sourceTag !== undefined)
|
|
2153
2243
|
blockMeta['sourceTag'] = record.sourceTag;
|
|
2154
2244
|
blockBody = record.content;
|
|
@@ -2222,6 +2312,8 @@ function formatScriptMarkdown(args) {
|
|
|
2222
2312
|
blockMeta['calling_genseq'] = record.calling_genseq;
|
|
2223
2313
|
if (record.route !== undefined)
|
|
2224
2314
|
blockMeta['route'] = record.route;
|
|
2315
|
+
if (record.contentItems !== undefined)
|
|
2316
|
+
blockMeta['contentItems'] = record.contentItems;
|
|
2225
2317
|
if (record.sourceTag !== undefined)
|
|
2226
2318
|
blockMeta['sourceTag'] = record.sourceTag;
|
|
2227
2319
|
blockBody = record.content;
|
|
@@ -2257,6 +2349,8 @@ function formatScriptMarkdown(args) {
|
|
|
2257
2349
|
blockMeta['calleeCourse'] = record.calleeCourse;
|
|
2258
2350
|
if (record.calleeGenseq !== undefined)
|
|
2259
2351
|
blockMeta['calleeGenseq'] = record.calleeGenseq;
|
|
2352
|
+
if (record.contentItems !== undefined)
|
|
2353
|
+
blockMeta['contentItems'] = record.contentItems;
|
|
2260
2354
|
if (record.sourceTag !== undefined)
|
|
2261
2355
|
blockMeta['sourceTag'] = record.sourceTag;
|
|
2262
2356
|
blockBody = record.response;
|
|
@@ -2327,6 +2421,7 @@ function stripTimestampFromRecord(event) {
|
|
|
2327
2421
|
case 'tellask_call_record':
|
|
2328
2422
|
case 'web_search_call_record':
|
|
2329
2423
|
case 'tool_result_image_ingest_record':
|
|
2424
|
+
case 'user_image_ingest_record':
|
|
2330
2425
|
case 'native_tool_call_record':
|
|
2331
2426
|
case 'human_text_record':
|
|
2332
2427
|
case 'func_result_record':
|