dominds 1.6.7 → 1.7.0

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.
Files changed (152) hide show
  1. package/dist/apps/installed-file.js +207 -0
  2. package/dist/apps/runtime-port.js +91 -0
  3. package/dist/course-transition.js +40 -12
  4. package/dist/dialog-fork.js +10 -6
  5. package/dist/dialog.js +12 -12
  6. package/dist/docs/kernel-app-architecture.md +286 -0
  7. package/dist/docs/kernel-app-architecture.zh.md +285 -0
  8. package/dist/llm/driver-entry.js +28 -0
  9. package/dist/llm/driver-v2/context-health.js +121 -0
  10. package/dist/llm/driver-v2/context.js +56 -0
  11. package/dist/llm/driver-v2/core.js +1545 -0
  12. package/dist/llm/driver-v2/index.js +26 -0
  13. package/dist/llm/driver-v2/orchestrator.js +158 -0
  14. package/dist/llm/driver-v2/policy.js +129 -0
  15. package/dist/llm/driver-v2/restore-dialog-hierarchy.js +73 -0
  16. package/dist/llm/driver-v2/round.js +366 -0
  17. package/dist/llm/driver-v2/runtime-utils.js +365 -0
  18. package/dist/llm/driver-v2/saying-events.js +20 -0
  19. package/dist/llm/driver-v2/subdialog-txn.js +42 -0
  20. package/dist/llm/driver-v2/supdialog-response.js +400 -0
  21. package/dist/llm/driver-v2/tellask-bridge.js +1148 -0
  22. package/dist/llm/driver-v2/types.js +10 -0
  23. package/dist/llm/driver-v2-ref-only/context-health.js +121 -0
  24. package/dist/llm/driver-v2-ref-only/context.js +17 -0
  25. package/dist/llm/driver-v2-ref-only/core.js +1710 -0
  26. package/dist/llm/driver-v2-ref-only/index.js +26 -0
  27. package/dist/llm/driver-v2-ref-only/orchestrator.js +158 -0
  28. package/dist/llm/driver-v2-ref-only/policy.js +129 -0
  29. package/dist/llm/driver-v2-ref-only/restore-dialog-hierarchy.js +73 -0
  30. package/dist/llm/driver-v2-ref-only/round.js +366 -0
  31. package/dist/llm/driver-v2-ref-only/runtime-utils.js +473 -0
  32. package/dist/llm/driver-v2-ref-only/saying-events.js +18 -0
  33. package/dist/llm/driver-v2-ref-only/subdialog-txn.js +42 -0
  34. package/dist/llm/driver-v2-ref-only/supdialog-response.js +453 -0
  35. package/dist/llm/driver-v2-ref-only/tellask-bridge.js +1178 -0
  36. package/dist/llm/driver-v2-ref-only/types.js +10 -0
  37. package/dist/llm/gen/anthropic.js +1 -1
  38. package/dist/llm/gen/codex.js +1 -0
  39. package/dist/llm/gen/mock.js +5 -0
  40. package/dist/llm/gen/openai-compatible.js +1 -0
  41. package/dist/llm/gen/openai.js +1 -0
  42. package/dist/llm/kernel-driver/context.js +7 -2
  43. package/dist/llm/kernel-driver/drive.js +1 -1
  44. package/dist/llm/kernel-driver/flow.js +2 -2
  45. package/dist/llm/kernel-driver/subdialog.js +42 -14
  46. package/dist/llm/kernel-driver/tellask-special.js +11 -11
  47. package/dist/persistence.js +361 -73
  48. package/dist/priming.js +203 -27
  49. package/dist/server/websocket-handler.js +1 -1
  50. package/dist/shared/utils/inter-dialog-format.js +79 -2
  51. package/dist/static/assets/{_basePickBy-B9gw9xu3.js → _basePickBy-B5JpcIlf.js} +3 -3
  52. package/dist/static/assets/{_basePickBy-B9gw9xu3.js.map → _basePickBy-B5JpcIlf.js.map} +1 -1
  53. package/dist/static/assets/{_baseUniq-CdteP2Ad.js → _baseUniq-B6ENA5xp.js} +2 -2
  54. package/dist/static/assets/{_baseUniq-CdteP2Ad.js.map → _baseUniq-B6ENA5xp.js.map} +1 -1
  55. package/dist/static/assets/{arc-BaFSInZP.js → arc-CztgHQ6S.js} +2 -2
  56. package/dist/static/assets/{arc-BaFSInZP.js.map → arc-CztgHQ6S.js.map} +1 -1
  57. package/dist/static/assets/{architectureDiagram-VXUJARFQ-kO0ROBqa.js → architectureDiagram-VXUJARFQ-CdI-KLc0.js} +7 -7
  58. package/dist/static/assets/{architectureDiagram-VXUJARFQ-kO0ROBqa.js.map → architectureDiagram-VXUJARFQ-CdI-KLc0.js.map} +1 -1
  59. package/dist/static/assets/{blockDiagram-VD42YOAC-D766EIYA.js → blockDiagram-VD42YOAC-BALBf4XM.js} +7 -7
  60. package/dist/static/assets/{blockDiagram-VD42YOAC-D766EIYA.js.map → blockDiagram-VD42YOAC-BALBf4XM.js.map} +1 -1
  61. package/dist/static/assets/{c4Diagram-YG6GDRKO-DwL98wWS.js → c4Diagram-YG6GDRKO-a1k6yPrP.js} +3 -3
  62. package/dist/static/assets/{c4Diagram-YG6GDRKO-DwL98wWS.js.map → c4Diagram-YG6GDRKO-a1k6yPrP.js.map} +1 -1
  63. package/dist/static/assets/{channel-CcUPWS87.js → channel-CWNdqJ-I.js} +2 -2
  64. package/dist/static/assets/{channel-CcUPWS87.js.map → channel-CWNdqJ-I.js.map} +1 -1
  65. package/dist/static/assets/{chunk-4BX2VUAB-BeTSwCuA.js → chunk-4BX2VUAB-BQeTUB5q.js} +2 -2
  66. package/dist/static/assets/{chunk-4BX2VUAB-BeTSwCuA.js.map → chunk-4BX2VUAB-BQeTUB5q.js.map} +1 -1
  67. package/dist/static/assets/{chunk-55IACEB6-C6Tzr8i_.js → chunk-55IACEB6-DDefFY4X.js} +2 -2
  68. package/dist/static/assets/{chunk-55IACEB6-C6Tzr8i_.js.map → chunk-55IACEB6-DDefFY4X.js.map} +1 -1
  69. package/dist/static/assets/{chunk-B4BG7PRW-DSi9x25j.js → chunk-B4BG7PRW-B3r4W-g_.js} +5 -5
  70. package/dist/static/assets/{chunk-B4BG7PRW-DSi9x25j.js.map → chunk-B4BG7PRW-B3r4W-g_.js.map} +1 -1
  71. package/dist/static/assets/{chunk-DI55MBZ5-CfAPRphL.js → chunk-DI55MBZ5-BDKIjQbt.js} +4 -4
  72. package/dist/static/assets/{chunk-DI55MBZ5-CfAPRphL.js.map → chunk-DI55MBZ5-BDKIjQbt.js.map} +1 -1
  73. package/dist/static/assets/{chunk-FMBD7UC4-B-M6vSiI.js → chunk-FMBD7UC4-BRjO7LO2.js} +2 -2
  74. package/dist/static/assets/{chunk-FMBD7UC4-B-M6vSiI.js.map → chunk-FMBD7UC4-BRjO7LO2.js.map} +1 -1
  75. package/dist/static/assets/{chunk-QN33PNHL-yU2oNaRc.js → chunk-QN33PNHL-DtUbDqMq.js} +2 -2
  76. package/dist/static/assets/{chunk-QN33PNHL-yU2oNaRc.js.map → chunk-QN33PNHL-DtUbDqMq.js.map} +1 -1
  77. package/dist/static/assets/{chunk-QZHKN3VN-jPTrvtzO.js → chunk-QZHKN3VN-HvxW4tgI.js} +2 -2
  78. package/dist/static/assets/{chunk-QZHKN3VN-jPTrvtzO.js.map → chunk-QZHKN3VN-HvxW4tgI.js.map} +1 -1
  79. package/dist/static/assets/{chunk-TZMSLE5B-Bls_D3TM.js → chunk-TZMSLE5B-8kvbFL8c.js} +2 -2
  80. package/dist/static/assets/{chunk-TZMSLE5B-Bls_D3TM.js.map → chunk-TZMSLE5B-8kvbFL8c.js.map} +1 -1
  81. package/dist/static/assets/{classDiagram-2ON5EDUG-6HSV8O5b.js → classDiagram-2ON5EDUG-BT0K1-Ue.js} +6 -6
  82. package/dist/static/assets/{classDiagram-2ON5EDUG-6HSV8O5b.js.map → classDiagram-2ON5EDUG-BT0K1-Ue.js.map} +1 -1
  83. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-6HSV8O5b.js → classDiagram-v2-WZHVMYZB-BT0K1-Ue.js} +6 -6
  84. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-6HSV8O5b.js.map → classDiagram-v2-WZHVMYZB-BT0K1-Ue.js.map} +1 -1
  85. package/dist/static/assets/{clone-CtKoD5Su.js → clone-C8ji-9VG.js} +2 -2
  86. package/dist/static/assets/{clone-CtKoD5Su.js.map → clone-C8ji-9VG.js.map} +1 -1
  87. package/dist/static/assets/{cose-bilkent-S5V4N54A-C8Q_0ZER.js → cose-bilkent-S5V4N54A-DgZIHStr.js} +2 -2
  88. package/dist/static/assets/{cose-bilkent-S5V4N54A-C8Q_0ZER.js.map → cose-bilkent-S5V4N54A-DgZIHStr.js.map} +1 -1
  89. package/dist/static/assets/{dagre-6UL2VRFP-CYIohfVW.js → dagre-6UL2VRFP-CoLMSS7V.js} +7 -7
  90. package/dist/static/assets/{dagre-6UL2VRFP-CYIohfVW.js.map → dagre-6UL2VRFP-CoLMSS7V.js.map} +1 -1
  91. package/dist/static/assets/{diagram-PSM6KHXK-BTYKp-4w.js → diagram-PSM6KHXK-BbaRu7Ko.js} +8 -8
  92. package/dist/static/assets/{diagram-PSM6KHXK-BTYKp-4w.js.map → diagram-PSM6KHXK-BbaRu7Ko.js.map} +1 -1
  93. package/dist/static/assets/{diagram-QEK2KX5R-CopAPXBx.js → diagram-QEK2KX5R-w2QJoEvf.js} +7 -7
  94. package/dist/static/assets/{diagram-QEK2KX5R-CopAPXBx.js.map → diagram-QEK2KX5R-w2QJoEvf.js.map} +1 -1
  95. package/dist/static/assets/{diagram-S2PKOQOG-BxYzu2CQ.js → diagram-S2PKOQOG-CZ3V7aTH.js} +7 -7
  96. package/dist/static/assets/{diagram-S2PKOQOG-BxYzu2CQ.js.map → diagram-S2PKOQOG-CZ3V7aTH.js.map} +1 -1
  97. package/dist/static/assets/{erDiagram-Q2GNP2WA-8SOoYoCD.js → erDiagram-Q2GNP2WA-B_D5zZGW.js} +5 -5
  98. package/dist/static/assets/{erDiagram-Q2GNP2WA-8SOoYoCD.js.map → erDiagram-Q2GNP2WA-B_D5zZGW.js.map} +1 -1
  99. package/dist/static/assets/{flowDiagram-NV44I4VS-x3ds9tRp.js → flowDiagram-NV44I4VS-CdleeZSt.js} +6 -6
  100. package/dist/static/assets/{flowDiagram-NV44I4VS-x3ds9tRp.js.map → flowDiagram-NV44I4VS-CdleeZSt.js.map} +1 -1
  101. package/dist/static/assets/{ganttDiagram-JELNMOA3-JJe52R5B.js → ganttDiagram-JELNMOA3-D4I0mcXy.js} +3 -3
  102. package/dist/static/assets/{ganttDiagram-JELNMOA3-JJe52R5B.js.map → ganttDiagram-JELNMOA3-D4I0mcXy.js.map} +1 -1
  103. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-D5WErFAP.js → gitGraphDiagram-V2S2FVAM-2TDy5WsI.js} +8 -8
  104. package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-D5WErFAP.js.map → gitGraphDiagram-V2S2FVAM-2TDy5WsI.js.map} +1 -1
  105. package/dist/static/assets/{graph-D2qG911_.js → graph-6qmT9kvE.js} +3 -3
  106. package/dist/static/assets/{graph-D2qG911_.js.map → graph-6qmT9kvE.js.map} +1 -1
  107. package/dist/static/assets/{index-BRvFzt7r.js → index-DZjf7VGN.js} +272 -80
  108. package/dist/static/assets/{index-BRvFzt7r.js.map → index-DZjf7VGN.js.map} +1 -1
  109. package/dist/static/assets/{infoDiagram-HS3SLOUP-CJgZXXei.js → infoDiagram-HS3SLOUP-Cdngu1wO.js} +6 -6
  110. package/dist/static/assets/{infoDiagram-HS3SLOUP-CJgZXXei.js.map → infoDiagram-HS3SLOUP-Cdngu1wO.js.map} +1 -1
  111. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-DsA_9YlY.js → journeyDiagram-XKPGCS4Q-C8JGH9qX.js} +5 -5
  112. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-DsA_9YlY.js.map → journeyDiagram-XKPGCS4Q-C8JGH9qX.js.map} +1 -1
  113. package/dist/static/assets/{kanban-definition-3W4ZIXB7-l0WL_yMI.js → kanban-definition-3W4ZIXB7-CgcdAoUr.js} +3 -3
  114. package/dist/static/assets/{kanban-definition-3W4ZIXB7-l0WL_yMI.js.map → kanban-definition-3W4ZIXB7-CgcdAoUr.js.map} +1 -1
  115. package/dist/static/assets/{layout-CpX1UYDN.js → layout--9zDsdfQ.js} +5 -5
  116. package/dist/static/assets/{layout-CpX1UYDN.js.map → layout--9zDsdfQ.js.map} +1 -1
  117. package/dist/static/assets/{linear-BwAZ1jvU.js → linear-f6M3OqrG.js} +2 -2
  118. package/dist/static/assets/{linear-BwAZ1jvU.js.map → linear-f6M3OqrG.js.map} +1 -1
  119. package/dist/static/assets/{mindmap-definition-VGOIOE7T-CbPr4yzk.js → mindmap-definition-VGOIOE7T-O6D8o0NA.js} +4 -4
  120. package/dist/static/assets/{mindmap-definition-VGOIOE7T-CbPr4yzk.js.map → mindmap-definition-VGOIOE7T-O6D8o0NA.js.map} +1 -1
  121. package/dist/static/assets/{pieDiagram-ADFJNKIX-Dm1nDIqq.js → pieDiagram-ADFJNKIX-B73iJXia.js} +8 -8
  122. package/dist/static/assets/{pieDiagram-ADFJNKIX-Dm1nDIqq.js.map → pieDiagram-ADFJNKIX-B73iJXia.js.map} +1 -1
  123. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-ZsrsqMXx.js → quadrantDiagram-AYHSOK5B-1MkdhL3o.js} +3 -3
  124. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-ZsrsqMXx.js.map → quadrantDiagram-AYHSOK5B-1MkdhL3o.js.map} +1 -1
  125. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-Dcm7em76.js → requirementDiagram-UZGBJVZJ-BANDg6Jt.js} +4 -4
  126. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-Dcm7em76.js.map → requirementDiagram-UZGBJVZJ-BANDg6Jt.js.map} +1 -1
  127. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-CZaCjU14.js → sankeyDiagram-TZEHDZUN-XEoMNqRv.js} +2 -2
  128. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-CZaCjU14.js.map → sankeyDiagram-TZEHDZUN-XEoMNqRv.js.map} +1 -1
  129. package/dist/static/assets/{sequenceDiagram-WL72ISMW-CcfoaMSR.js → sequenceDiagram-WL72ISMW-Brw-9CPI.js} +4 -4
  130. package/dist/static/assets/{sequenceDiagram-WL72ISMW-CcfoaMSR.js.map → sequenceDiagram-WL72ISMW-Brw-9CPI.js.map} +1 -1
  131. package/dist/static/assets/{stateDiagram-FKZM4ZOC-BVIDD43e.js → stateDiagram-FKZM4ZOC-CVzsrvr2.js} +9 -9
  132. package/dist/static/assets/{stateDiagram-FKZM4ZOC-BVIDD43e.js.map → stateDiagram-FKZM4ZOC-CVzsrvr2.js.map} +1 -1
  133. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-B9GL2xr3.js → stateDiagram-v2-4FDKWEC3-B9j-EAhS.js} +5 -5
  134. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-B9GL2xr3.js.map → stateDiagram-v2-4FDKWEC3-B9j-EAhS.js.map} +1 -1
  135. package/dist/static/assets/{timeline-definition-IT6M3QCI-8iKDS8Ig.js → timeline-definition-IT6M3QCI-S3mM3ltV.js} +3 -3
  136. package/dist/static/assets/{timeline-definition-IT6M3QCI-8iKDS8Ig.js.map → timeline-definition-IT6M3QCI-S3mM3ltV.js.map} +1 -1
  137. package/dist/static/assets/{treemap-GDKQZRPO-CbxnTnrn.js → treemap-GDKQZRPO-Cf1b3Cgv.js} +5 -5
  138. package/dist/static/assets/{treemap-GDKQZRPO-CbxnTnrn.js.map → treemap-GDKQZRPO-Cf1b3Cgv.js.map} +1 -1
  139. package/dist/static/assets/{xychartDiagram-PRI3JC2R-C0KMwrOR.js → xychartDiagram-PRI3JC2R-CYvqfglb.js} +3 -3
  140. package/dist/static/assets/{xychartDiagram-PRI3JC2R-C0KMwrOR.js.map → xychartDiagram-PRI3JC2R-CYvqfglb.js.map} +1 -1
  141. package/dist/static/index.html +1 -1
  142. package/dist/tools/prompts/memory/en/errors.md +155 -0
  143. package/dist/tools/prompts/memory/en/index.md +47 -0
  144. package/dist/tools/prompts/memory/en/principles.md +79 -0
  145. package/dist/tools/prompts/memory/en/scenarios.md +174 -0
  146. package/dist/tools/prompts/memory/en/tools.md +154 -0
  147. package/dist/tools/prompts/memory/zh/errors.md +155 -0
  148. package/dist/tools/prompts/memory/zh/index.md +47 -0
  149. package/dist/tools/prompts/memory/zh/principles.md +79 -0
  150. package/dist/tools/prompts/memory/zh/scenarios.md +174 -0
  151. package/dist/tools/prompts/memory/zh/tools.md +154 -0
  152. package/package.json +1 -1
@@ -640,12 +640,12 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
640
640
  * - tellask-special function call (inline bubble)
641
641
  * - Result displays INLINE in the same bubble
642
642
  * - Uses callId for correlation between call_start and response
643
- * - Uses receiveTeammateCallResult() + callId parameter
643
+ * - Uses receiveTellaskCallResult() + callId parameter
644
644
  *
645
645
  * - Teammate Tellask (subdialog response bubble)
646
646
  * - Result displays in SEPARATE bubble (subdialog response)
647
647
  * - Uses calleeDialogId for correlation
648
- * - Uses receiveTeammateResponse() instead
648
+ * - Uses receiveTellaskResponse() instead
649
649
  *
650
650
  * @param dialog - The dialog receiving the response
651
651
  * @param responderId - ID of the tool/agent that responded (e.g., "add_reminder")
@@ -655,7 +655,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
655
655
  * @param status - Response status ('completed' | 'failed')
656
656
  * @param callId - Correlation ID from call_start_evt (REQUIRED for inline display)
657
657
  */
658
- async receiveTeammateCallResult(dialog, responderId, callName, mentionList, tellaskContent, result, status, callId) {
658
+ async receiveTellaskCallResult(dialog, responderId, callName, mentionList, tellaskContent, result, status, callId) {
659
659
  const course = dialog.activeGenCourseOrUndefined ?? dialog.currentCourse;
660
660
  const calling_genseq = dialog.activeGenSeqOrUndefined !== undefined
661
661
  ? (0, storage_1.toCallingGenerationSeqNumber)(dialog.activeGenSeqOrUndefined)
@@ -667,7 +667,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
667
667
  case 'tellaskSessionless':
668
668
  return {
669
669
  ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
670
- type: 'teammate_call_result_record',
670
+ type: 'tellask_call_result_record',
671
671
  responderId,
672
672
  callName,
673
673
  mentionList: mentionList ?? [],
@@ -682,7 +682,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
682
682
  case 'freshBootsReasoning':
683
683
  return {
684
684
  ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
685
- type: 'teammate_call_result_record',
685
+ type: 'tellask_call_result_record',
686
686
  responderId,
687
687
  callName,
688
688
  tellaskContent,
@@ -694,13 +694,13 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
694
694
  }
695
695
  })();
696
696
  await this.appendEvent(dialog, course, ev);
697
- // Emit TeammateCallResponseEvent WITH callId for UI correlation
697
+ // Emit TellaskCallResultEvent WITH callId for UI correlation
698
698
  const toolResponseEvt = (() => {
699
699
  switch (callName) {
700
700
  case 'tellask':
701
701
  case 'tellaskSessionless':
702
702
  return {
703
- type: 'teammate_call_response_evt',
703
+ type: 'tellask_call_result_evt',
704
704
  responderId,
705
705
  callName,
706
706
  mentionList: mentionList ?? [],
@@ -715,7 +715,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
715
715
  case 'askHuman':
716
716
  case 'freshBootsReasoning':
717
717
  return {
718
- type: 'teammate_call_response_evt',
718
+ type: 'tellask_call_result_evt',
719
719
  responderId,
720
720
  callName,
721
721
  tellaskContent,
@@ -736,7 +736,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
736
736
  * - Teammate Tellask response
737
737
  * - Result displays in SEPARATE bubble (subdialog or supdialog response)
738
738
  * - Uses calleeDialogId for correlation (not callId)
739
- * - Uses this method (receiveTeammateResponse)
739
+ * - Uses this method (receiveTellaskResponse)
740
740
  *
741
741
  * @param dialog - The dialog receiving the response
742
742
  * @param responderId - ID of the teammate agent (e.g., "coder")
@@ -745,8 +745,8 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
745
745
  * @param status - Response status ('completed' | 'failed')
746
746
  * @param calleeDialogId - ID of the callee dialog (subdialog OR supdialog) for navigation links
747
747
  */
748
- async receiveTeammateResponse(dialog, responderId, callName, mentionList, tellaskContent, status, calleeDialogId, options) {
749
- const course = dialog.activeGenCourseOrUndefined ?? dialog.currentCourse;
748
+ async receiveTellaskResponse(dialog, responderId, callName, mentionList, tellaskContent, status, calleeDialogId, options) {
749
+ const currentCourse = dialog.activeGenCourseOrUndefined ?? dialog.currentCourse;
750
750
  const calling_genseq = dialog.activeGenSeqOrUndefined !== undefined
751
751
  ? (0, storage_1.toCallingGenerationSeqNumber)(dialog.activeGenSeqOrUndefined)
752
752
  : undefined;
@@ -755,140 +755,311 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
755
755
  const agentId = options.agentId;
756
756
  const callId = options.callId;
757
757
  const originMemberId = options.originMemberId;
758
+ const originCourse = options.originCourse;
759
+ const carryoverContent = options.carryoverContent;
760
+ const carryoverText = typeof carryoverContent === 'string' && carryoverContent.trim() !== ''
761
+ ? carryoverContent
762
+ : undefined;
758
763
  const sessionSlug = typeof options.sessionSlug === 'string' && options.sessionSlug.trim() !== ''
759
764
  ? options.sessionSlug.trim()
760
765
  : undefined;
761
766
  const calleeCourse = options.calleeCourse;
762
767
  const calleeGenseq = options.calleeGenseq;
763
768
  const normalizedMentionList = mentionList ?? [];
764
- const ev = (() => {
769
+ const isCrossCourseCarryover = originCourse !== undefined && originCourse !== currentCourse;
770
+ if (!isCrossCourseCarryover) {
771
+ const responseCourse = originCourse ?? currentCourse;
772
+ const ev = (() => {
773
+ switch (callName) {
774
+ case 'tellask':
775
+ if (!sessionSlug) {
776
+ throw new Error(`receiveTellaskResponse invariant violation: missing sessionSlug for tellask ` +
777
+ `(dialogId=${dialog.id.selfId}, callId=${callId})`);
778
+ }
779
+ return {
780
+ ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
781
+ type: 'tellask_response_record',
782
+ responderId,
783
+ callName,
784
+ sessionSlug,
785
+ calleeDialogId: calleeDialogSelfId,
786
+ calleeCourse,
787
+ calleeGenseq,
788
+ mentionList: normalizedMentionList,
789
+ tellaskContent,
790
+ status,
791
+ calling_genseq,
792
+ response,
793
+ agentId,
794
+ callId,
795
+ originMemberId,
796
+ };
797
+ case 'tellaskSessionless':
798
+ return {
799
+ ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
800
+ type: 'tellask_response_record',
801
+ responderId,
802
+ callName,
803
+ calleeDialogId: calleeDialogSelfId,
804
+ calleeCourse,
805
+ calleeGenseq,
806
+ mentionList: normalizedMentionList,
807
+ tellaskContent,
808
+ status,
809
+ calling_genseq,
810
+ response,
811
+ agentId,
812
+ callId,
813
+ originMemberId,
814
+ };
815
+ case 'tellaskBack':
816
+ case 'freshBootsReasoning':
817
+ return {
818
+ ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
819
+ type: 'tellask_response_record',
820
+ responderId,
821
+ callName,
822
+ calleeDialogId: calleeDialogSelfId,
823
+ calleeCourse,
824
+ calleeGenseq,
825
+ tellaskContent,
826
+ status,
827
+ calling_genseq,
828
+ response,
829
+ agentId,
830
+ callId,
831
+ originMemberId,
832
+ };
833
+ }
834
+ })();
835
+ await this.appendEvent(dialog, responseCourse, ev);
836
+ const tellaskResponseEvt = (() => {
837
+ switch (callName) {
838
+ case 'tellask':
839
+ if (!sessionSlug) {
840
+ throw new Error(`receiveTellaskResponse invariant violation: missing sessionSlug for tellask ` +
841
+ `(dialogId=${dialog.id.selfId}, callId=${callId})`);
842
+ }
843
+ return {
844
+ type: 'tellask_response_evt',
845
+ responderId,
846
+ callName,
847
+ sessionSlug,
848
+ calleeDialogId: calleeDialogSelfId,
849
+ calleeCourse,
850
+ calleeGenseq,
851
+ mentionList: normalizedMentionList,
852
+ tellaskContent,
853
+ status,
854
+ course: responseCourse,
855
+ calling_genseq,
856
+ response,
857
+ agentId,
858
+ callId,
859
+ originMemberId,
860
+ };
861
+ case 'tellaskSessionless':
862
+ return {
863
+ type: 'tellask_response_evt',
864
+ responderId,
865
+ callName,
866
+ calleeDialogId: calleeDialogSelfId,
867
+ calleeCourse,
868
+ calleeGenseq,
869
+ mentionList: normalizedMentionList,
870
+ tellaskContent,
871
+ status,
872
+ course: responseCourse,
873
+ calling_genseq,
874
+ response,
875
+ agentId,
876
+ callId,
877
+ originMemberId,
878
+ };
879
+ case 'tellaskBack':
880
+ case 'freshBootsReasoning':
881
+ return {
882
+ type: 'tellask_response_evt',
883
+ responderId,
884
+ callName,
885
+ calleeDialogId: calleeDialogSelfId,
886
+ calleeCourse,
887
+ calleeGenseq,
888
+ tellaskContent,
889
+ status,
890
+ course: responseCourse,
891
+ calling_genseq,
892
+ response,
893
+ agentId,
894
+ callId,
895
+ originMemberId,
896
+ };
897
+ }
898
+ })();
899
+ (0, evt_registry_1.postDialogEvent)(dialog, tellaskResponseEvt);
900
+ return;
901
+ }
902
+ if (!originCourse) {
903
+ throw new Error(`receiveTellaskResponse invariant violation: missing originCourse for cross-course carryover ` +
904
+ `(dialogId=${dialog.id.selfId}, callId=${callId}, currentCourse=${currentCourse})`);
905
+ }
906
+ if (callName === 'tellaskBack') {
907
+ throw new Error(`tellask carryover does not support tellaskBack (dialogId=${dialog.id.selfId}, callId=${callId})`);
908
+ }
909
+ if (carryoverText === undefined) {
910
+ throw new Error(`receiveTellaskResponse invariant violation: missing carryoverContent for cross-course tellask ` +
911
+ `(dialogId=${dialog.id.selfId}, callId=${callId}, originCourse=${originCourse}, currentCourse=${currentCourse})`);
912
+ }
913
+ const carryoverCallRecord = {
914
+ ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
915
+ type: 'tellask_call_carryover_record',
916
+ responderId,
917
+ status,
918
+ callId,
919
+ carryoverCourse: (0, storage_1.toDialogCourseNumber)(currentCourse),
920
+ };
921
+ await this.appendEvent(dialog, originCourse, carryoverCallRecord);
922
+ const carryoverCallEvent = {
923
+ type: 'tellask_call_carryover_evt',
924
+ course: originCourse,
925
+ responderId,
926
+ status,
927
+ callId,
928
+ carryoverCourse: (0, storage_1.toDialogCourseNumber)(currentCourse),
929
+ };
930
+ (0, evt_registry_1.postDialogEvent)(dialog, carryoverCallEvent);
931
+ const carryoverRecord = (() => {
765
932
  switch (callName) {
766
933
  case 'tellask':
767
934
  if (!sessionSlug) {
768
- throw new Error(`receiveTeammateResponse invariant violation: missing sessionSlug for tellask ` +
935
+ throw new Error(`receiveTellaskResponse invariant violation: missing sessionSlug for tellask carryover ` +
769
936
  `(dialogId=${dialog.id.selfId}, callId=${callId})`);
770
937
  }
771
938
  return {
772
939
  ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
773
- type: 'teammate_response_record',
940
+ type: 'tellask_carryover_result_record',
941
+ originCourse,
774
942
  responderId,
775
943
  callName,
776
944
  sessionSlug,
777
- calleeDialogId: calleeDialogSelfId,
778
- calleeCourse,
779
- calleeGenseq,
780
945
  mentionList: normalizedMentionList,
781
946
  tellaskContent,
782
947
  status,
783
- calling_genseq,
784
948
  response,
949
+ content: carryoverText,
785
950
  agentId,
786
951
  callId,
787
952
  originMemberId,
953
+ calleeDialogId: calleeDialogSelfId,
954
+ calleeCourse,
955
+ calleeGenseq,
788
956
  };
789
957
  case 'tellaskSessionless':
790
958
  return {
791
959
  ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
792
- type: 'teammate_response_record',
960
+ type: 'tellask_carryover_result_record',
961
+ originCourse,
793
962
  responderId,
794
963
  callName,
795
- calleeDialogId: calleeDialogSelfId,
796
- calleeCourse,
797
- calleeGenseq,
798
964
  mentionList: normalizedMentionList,
799
965
  tellaskContent,
800
966
  status,
801
- calling_genseq,
802
967
  response,
968
+ content: carryoverText,
803
969
  agentId,
804
970
  callId,
805
971
  originMemberId,
972
+ calleeDialogId: calleeDialogSelfId,
973
+ calleeCourse,
974
+ calleeGenseq,
806
975
  };
807
- case 'tellaskBack':
808
976
  case 'freshBootsReasoning':
809
977
  return {
810
978
  ts: (0, time_1.formatUnifiedTimestamp)(new Date()),
811
- type: 'teammate_response_record',
979
+ type: 'tellask_carryover_result_record',
980
+ originCourse,
812
981
  responderId,
813
982
  callName,
814
- calleeDialogId: calleeDialogSelfId,
815
- calleeCourse,
816
- calleeGenseq,
817
983
  tellaskContent,
818
984
  status,
819
- calling_genseq,
820
985
  response,
986
+ content: carryoverText,
821
987
  agentId,
822
988
  callId,
823
989
  originMemberId,
990
+ calleeDialogId: calleeDialogSelfId,
991
+ calleeCourse,
992
+ calleeGenseq,
824
993
  };
825
994
  }
826
995
  })();
827
- await this.appendEvent(dialog, course, ev);
828
- const teammateResponseEvt = (() => {
996
+ await this.appendEvent(dialog, currentCourse, carryoverRecord);
997
+ const carryoverEvent = (() => {
829
998
  switch (callName) {
830
999
  case 'tellask':
831
1000
  if (!sessionSlug) {
832
- throw new Error(`receiveTeammateResponse invariant violation: missing sessionSlug for tellask ` +
1001
+ throw new Error(`receiveTellaskResponse invariant violation: missing sessionSlug for tellask carryover evt ` +
833
1002
  `(dialogId=${dialog.id.selfId}, callId=${callId})`);
834
1003
  }
835
1004
  return {
836
- type: 'teammate_response_evt',
1005
+ type: 'tellask_carryover_result_evt',
1006
+ course: currentCourse,
1007
+ originCourse,
837
1008
  responderId,
838
1009
  callName,
839
1010
  sessionSlug,
840
- calleeDialogId: calleeDialogSelfId,
841
- calleeCourse,
842
- calleeGenseq,
843
1011
  mentionList: normalizedMentionList,
844
1012
  tellaskContent,
845
1013
  status,
846
- course,
847
- calling_genseq,
848
1014
  response,
1015
+ content: carryoverText,
849
1016
  agentId,
850
1017
  callId,
851
1018
  originMemberId,
1019
+ calleeDialogId: calleeDialogSelfId,
1020
+ calleeCourse,
1021
+ calleeGenseq,
852
1022
  };
853
1023
  case 'tellaskSessionless':
854
1024
  return {
855
- type: 'teammate_response_evt',
1025
+ type: 'tellask_carryover_result_evt',
1026
+ course: currentCourse,
1027
+ originCourse,
856
1028
  responderId,
857
1029
  callName,
858
- calleeDialogId: calleeDialogSelfId,
859
- calleeCourse,
860
- calleeGenseq,
861
1030
  mentionList: normalizedMentionList,
862
1031
  tellaskContent,
863
1032
  status,
864
- course,
865
- calling_genseq,
866
1033
  response,
1034
+ content: carryoverText,
867
1035
  agentId,
868
1036
  callId,
869
1037
  originMemberId,
1038
+ calleeDialogId: calleeDialogSelfId,
1039
+ calleeCourse,
1040
+ calleeGenseq,
870
1041
  };
871
- case 'tellaskBack':
872
1042
  case 'freshBootsReasoning':
873
1043
  return {
874
- type: 'teammate_response_evt',
1044
+ type: 'tellask_carryover_result_evt',
1045
+ course: currentCourse,
1046
+ originCourse,
875
1047
  responderId,
876
1048
  callName,
877
- calleeDialogId: calleeDialogSelfId,
878
- calleeCourse,
879
- calleeGenseq,
880
1049
  tellaskContent,
881
1050
  status,
882
- course,
883
- calling_genseq,
884
1051
  response,
1052
+ content: carryoverText,
885
1053
  agentId,
886
1054
  callId,
887
1055
  originMemberId,
1056
+ calleeDialogId: calleeDialogSelfId,
1057
+ calleeCourse,
1058
+ calleeGenseq,
888
1059
  };
889
1060
  }
890
1061
  })();
891
- (0, evt_registry_1.postDialogEvent)(dialog, teammateResponseEvt);
1062
+ (0, evt_registry_1.postDialogEvent)(dialog, carryoverEvent);
892
1063
  }
893
1064
  /**
894
1065
  * Ensure subdialog directory exists (delegate to DialogPersistence)
@@ -1111,7 +1282,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
1111
1282
  throw new Error(`callingStart invariant violation: tellask requires sessionSlug (callId=${payload.callId})`);
1112
1283
  }
1113
1284
  return {
1114
- type: 'teammate_call_start_evt',
1285
+ type: 'tellask_call_start_evt',
1115
1286
  callName: payload.callName,
1116
1287
  callId: payload.callId,
1117
1288
  mentionList: payload.mentionList ?? [],
@@ -1122,7 +1293,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
1122
1293
  };
1123
1294
  case 'tellaskSessionless':
1124
1295
  return {
1125
- type: 'teammate_call_start_evt',
1296
+ type: 'tellask_call_start_evt',
1126
1297
  callName: payload.callName,
1127
1298
  callId: payload.callId,
1128
1299
  mentionList: payload.mentionList ?? [],
@@ -1134,7 +1305,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
1134
1305
  case 'askHuman':
1135
1306
  case 'freshBootsReasoning':
1136
1307
  return {
1137
- type: 'teammate_call_start_evt',
1308
+ type: 'tellask_call_start_evt',
1138
1309
  callName: payload.callName,
1139
1310
  callId: payload.callId,
1140
1311
  tellaskContent: payload.tellaskContent,
@@ -1825,7 +1996,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
1825
1996
  throw new Error(`Replay tellask event invariant violation: missing sessionSlug (callId=${specialCall.callId})`);
1826
1997
  }
1827
1998
  return {
1828
- type: 'teammate_call_start_evt',
1999
+ type: 'tellask_call_start_evt',
1829
2000
  callName: specialCall.callName,
1830
2001
  callId: specialCall.callId,
1831
2002
  mentionList: specialCall.mentionList,
@@ -1838,7 +2009,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
1838
2009
  };
1839
2010
  case 'tellaskSessionless':
1840
2011
  return {
1841
- type: 'teammate_call_start_evt',
2012
+ type: 'tellask_call_start_evt',
1842
2013
  callName: specialCall.callName,
1843
2014
  callId: specialCall.callId,
1844
2015
  mentionList: specialCall.mentionList,
@@ -1852,7 +2023,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
1852
2023
  case 'askHuman':
1853
2024
  case 'freshBootsReasoning':
1854
2025
  return {
1855
- type: 'teammate_call_start_evt',
2026
+ type: 'tellask_call_start_evt',
1856
2027
  callName: specialCall.callName,
1857
2028
  callId: specialCall.callId,
1858
2029
  tellaskContent: specialCall.tellaskContent,
@@ -1987,14 +2158,14 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
1987
2158
  }
1988
2159
  break;
1989
2160
  }
1990
- case 'teammate_call_result_record': {
2161
+ case 'tellask_call_result_record': {
1991
2162
  // Handle teammate-call inline results
1992
2163
  const responseEvent = (() => {
1993
2164
  switch (event.callName) {
1994
2165
  case 'tellask':
1995
2166
  case 'tellaskSessionless':
1996
2167
  return {
1997
- type: 'teammate_call_response_evt',
2168
+ type: 'tellask_call_result_evt',
1998
2169
  responderId: event.responderId,
1999
2170
  callName: event.callName,
2000
2171
  mentionList: event.mentionList,
@@ -2014,7 +2185,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
2014
2185
  case 'askHuman':
2015
2186
  case 'freshBootsReasoning':
2016
2187
  return {
2017
- type: 'teammate_call_response_evt',
2188
+ type: 'tellask_call_result_evt',
2018
2189
  responderId: event.responderId,
2019
2190
  callName: event.callName,
2020
2191
  tellaskContent: event.tellaskContent,
@@ -2036,9 +2207,9 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
2036
2207
  }
2037
2208
  break;
2038
2209
  }
2039
- case 'teammate_call_anchor_record': {
2210
+ case 'tellask_call_anchor_record': {
2040
2211
  const anchorEvent = {
2041
- type: 'teammate_call_anchor_evt',
2212
+ type: 'tellask_call_anchor_evt',
2042
2213
  course,
2043
2214
  genseq: event.genseq,
2044
2215
  anchorRole: event.anchorRole ?? 'response',
@@ -2058,6 +2229,107 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
2058
2229
  }
2059
2230
  break;
2060
2231
  }
2232
+ case 'tellask_call_carryover_record': {
2233
+ const carryoverEvent = {
2234
+ type: 'tellask_call_carryover_evt',
2235
+ course,
2236
+ responderId: event.responderId,
2237
+ status: event.status,
2238
+ callId: event.callId,
2239
+ carryoverCourse: event.carryoverCourse,
2240
+ dialog: {
2241
+ selfId: dialog.id.selfId,
2242
+ rootId: dialog.id.rootId,
2243
+ },
2244
+ timestamp: event.ts,
2245
+ };
2246
+ if (ws.readyState === 1) {
2247
+ ws.send(JSON.stringify(carryoverEvent));
2248
+ }
2249
+ break;
2250
+ }
2251
+ case 'tellask_carryover_result_record': {
2252
+ const carryoverEvent = (() => {
2253
+ switch (event.callName) {
2254
+ case 'tellask':
2255
+ return {
2256
+ type: 'tellask_carryover_result_evt',
2257
+ course,
2258
+ originCourse: event.originCourse,
2259
+ responderId: event.responderId,
2260
+ callName: event.callName,
2261
+ sessionSlug: event.sessionSlug,
2262
+ mentionList: event.mentionList,
2263
+ tellaskContent: event.tellaskContent,
2264
+ status: event.status,
2265
+ response: event.response,
2266
+ content: event.content,
2267
+ agentId: event.agentId,
2268
+ callId: event.callId,
2269
+ originMemberId: event.originMemberId,
2270
+ calleeDialogId: event.calleeDialogId,
2271
+ calleeCourse: event.calleeCourse,
2272
+ calleeGenseq: event.calleeGenseq,
2273
+ dialog: {
2274
+ selfId: dialog.id.selfId,
2275
+ rootId: dialog.id.rootId,
2276
+ },
2277
+ timestamp: event.ts,
2278
+ };
2279
+ case 'tellaskSessionless':
2280
+ return {
2281
+ type: 'tellask_carryover_result_evt',
2282
+ course,
2283
+ originCourse: event.originCourse,
2284
+ responderId: event.responderId,
2285
+ callName: event.callName,
2286
+ mentionList: event.mentionList,
2287
+ tellaskContent: event.tellaskContent,
2288
+ status: event.status,
2289
+ response: event.response,
2290
+ content: event.content,
2291
+ agentId: event.agentId,
2292
+ callId: event.callId,
2293
+ originMemberId: event.originMemberId,
2294
+ calleeDialogId: event.calleeDialogId,
2295
+ calleeCourse: event.calleeCourse,
2296
+ calleeGenseq: event.calleeGenseq,
2297
+ dialog: {
2298
+ selfId: dialog.id.selfId,
2299
+ rootId: dialog.id.rootId,
2300
+ },
2301
+ timestamp: event.ts,
2302
+ };
2303
+ case 'freshBootsReasoning':
2304
+ return {
2305
+ type: 'tellask_carryover_result_evt',
2306
+ course,
2307
+ originCourse: event.originCourse,
2308
+ responderId: event.responderId,
2309
+ callName: event.callName,
2310
+ tellaskContent: event.tellaskContent,
2311
+ status: event.status,
2312
+ response: event.response,
2313
+ content: event.content,
2314
+ agentId: event.agentId,
2315
+ callId: event.callId,
2316
+ originMemberId: event.originMemberId,
2317
+ calleeDialogId: event.calleeDialogId,
2318
+ calleeCourse: event.calleeCourse,
2319
+ calleeGenseq: event.calleeGenseq,
2320
+ dialog: {
2321
+ selfId: dialog.id.selfId,
2322
+ rootId: dialog.id.rootId,
2323
+ },
2324
+ timestamp: event.ts,
2325
+ };
2326
+ }
2327
+ })();
2328
+ if (ws.readyState === 1) {
2329
+ ws.send(JSON.stringify(carryoverEvent));
2330
+ }
2331
+ break;
2332
+ }
2061
2333
  case 'subdialog_created_record':
2062
2334
  case 'reminders_reconciled_record':
2063
2335
  case 'questions4human_reconciled_record':
@@ -2065,7 +2337,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
2065
2337
  case 'subdialog_registry_reconciled_record':
2066
2338
  case 'subdialog_responses_reconciled_record':
2067
2339
  break;
2068
- case 'teammate_response_record': {
2340
+ case 'tellask_response_record': {
2069
2341
  // Handle teammate response events (separate bubble for @teammate tellasks)
2070
2342
  const mentionList = (() => {
2071
2343
  switch (event.callName) {
@@ -2077,18 +2349,18 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
2077
2349
  return undefined;
2078
2350
  }
2079
2351
  })();
2080
- const teammateResponseEvent = (() => {
2352
+ const tellaskResponseEvent = (() => {
2081
2353
  switch (event.callName) {
2082
2354
  case 'tellask': {
2083
2355
  const sessionSlug = typeof event.sessionSlug === 'string' && event.sessionSlug.trim() !== ''
2084
2356
  ? event.sessionSlug.trim()
2085
2357
  : undefined;
2086
2358
  if (!sessionSlug) {
2087
- throw new Error(`Replay teammate_response_record invariant violation: missing sessionSlug for tellask ` +
2359
+ throw new Error(`Replay tellask_response_record invariant violation: missing sessionSlug for tellask ` +
2088
2360
  `(rootId=${dialog.id.rootId}, selfId=${dialog.id.selfId}, course=${course}, callId=${event.callId})`);
2089
2361
  }
2090
2362
  return {
2091
- type: 'teammate_response_evt',
2363
+ type: 'tellask_response_evt',
2092
2364
  responderId: event.responderId,
2093
2365
  callName: event.callName,
2094
2366
  sessionSlug,
@@ -2113,7 +2385,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
2113
2385
  }
2114
2386
  case 'tellaskSessionless':
2115
2387
  return {
2116
- type: 'teammate_response_evt',
2388
+ type: 'tellask_response_evt',
2117
2389
  responderId: event.responderId,
2118
2390
  callName: event.callName,
2119
2391
  calleeDialogId: event.calleeDialogId,
@@ -2137,7 +2409,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
2137
2409
  case 'tellaskBack':
2138
2410
  case 'freshBootsReasoning':
2139
2411
  return {
2140
- type: 'teammate_response_evt',
2412
+ type: 'tellask_response_evt',
2141
2413
  responderId: event.responderId,
2142
2414
  callName: event.callName,
2143
2415
  calleeDialogId: event.calleeDialogId,
@@ -2160,7 +2432,7 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
2160
2432
  }
2161
2433
  })();
2162
2434
  if (ws.readyState === 1) {
2163
- ws.send(JSON.stringify(teammateResponseEvent));
2435
+ ws.send(JSON.stringify(tellaskResponseEvent));
2164
2436
  }
2165
2437
  break;
2166
2438
  }
@@ -4352,7 +4624,7 @@ class DialogPersistence {
4352
4624
  });
4353
4625
  break;
4354
4626
  }
4355
- case 'teammate_call_result_record': {
4627
+ case 'tellask_call_result_record': {
4356
4628
  // Convert teammate-call inline result to ChatMessage
4357
4629
  const mentionList = (() => {
4358
4630
  switch (event.callName) {
@@ -4377,7 +4649,9 @@ class DialogPersistence {
4377
4649
  });
4378
4650
  break;
4379
4651
  }
4380
- case 'teammate_response_record': {
4652
+ case 'tellask_call_carryover_record':
4653
+ break;
4654
+ case 'tellask_response_record': {
4381
4655
  // Convert teammate response to ChatMessage (teammate - separate bubble)
4382
4656
  // Note: Teammate responses are stored as separate records but use same message type
4383
4657
  const mentionList = (() => {
@@ -4402,6 +4676,20 @@ class DialogPersistence {
4402
4676
  });
4403
4677
  break;
4404
4678
  }
4679
+ case 'tellask_carryover_result_record': {
4680
+ messages.push({
4681
+ type: 'tellask_carryover_result_msg',
4682
+ role: 'user',
4683
+ content: event.content,
4684
+ originCourse: event.originCourse,
4685
+ responderId: event.responderId,
4686
+ callName: event.callName,
4687
+ tellaskContent: event.tellaskContent,
4688
+ status: event.status,
4689
+ callId: event.callId,
4690
+ });
4691
+ break;
4692
+ }
4405
4693
  // gen_start_record and gen_finish_record are control events, not message content
4406
4694
  // They don't need to be converted to ChatMessage objects
4407
4695
  case 'gen_start_record':
@@ -4415,7 +4703,7 @@ class DialogPersistence {
4415
4703
  // These events are handled separately in dialog restoration
4416
4704
  // Skip them for message reconstruction
4417
4705
  break;
4418
- case 'teammate_call_anchor_record':
4706
+ case 'tellask_call_anchor_record':
4419
4707
  // This record is UI navigation metadata for deep links in callee dialogs.
4420
4708
  // It does not contribute to model context or chat transcript reconstruction.
4421
4709
  break;