dominds 0.7.6 → 0.8.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.
Files changed (155) hide show
  1. package/README.md +2 -2
  2. package/README.zh.md +2 -2
  3. package/dist/agent-priming.js +169 -200
  4. package/dist/cli/read.js +2 -7
  5. package/dist/dialog-factory.js +6 -4
  6. package/dist/dialog-instance-registry.js +2 -2
  7. package/dist/dialog.js +99 -91
  8. package/dist/docs/dialog-persistence.md +2 -2
  9. package/dist/docs/dialog-persistence.zh.md +2 -2
  10. package/dist/docs/dialog-system.md +86 -90
  11. package/dist/docs/dialog-system.zh.md +82 -83
  12. package/dist/docs/diligence-push.md +2 -2
  13. package/dist/docs/diligence-push.zh.md +2 -2
  14. package/dist/docs/dominds-agent-priming.md +11 -11
  15. package/dist/docs/dominds-agent-priming.zh.md +9 -9
  16. package/dist/docs/dominds-terminology.md +34 -34
  17. package/dist/docs/fbr-implementation.md +4 -4
  18. package/dist/docs/fbr-implementation.zh.md +4 -4
  19. package/dist/docs/fbr.md +31 -53
  20. package/dist/docs/fbr.zh.md +30 -48
  21. package/dist/docs/mottos.md +2 -3
  22. package/dist/docs/mottos.zh.md +2 -2
  23. package/dist/docs/q4h.md +6 -6
  24. package/dist/docs/q4h.zh.md +6 -6
  25. package/dist/docs/tellask-collab.md +13 -13
  26. package/dist/docs/tellask-collab.zh.md +18 -18
  27. package/dist/llm/driver-entry.js +9 -33
  28. package/dist/llm/driver-v2/core.js +413 -111
  29. package/dist/llm/driver-v2/index.js +5 -0
  30. package/dist/llm/driver-v2/orchestrator.js +4 -3
  31. package/dist/llm/driver-v2/policy.js +17 -23
  32. package/dist/llm/driver-v2/restore-dialog-hierarchy.js +73 -0
  33. package/dist/llm/driver-v2/round.js +18 -7
  34. package/dist/llm/driver-v2/runtime-utils.js +3 -5
  35. package/dist/llm/driver-v2/saying-events.js +4 -42
  36. package/dist/llm/driver-v2/supdialog-response.js +110 -23
  37. package/dist/llm/driver-v2/tellask-bridge.js +560 -458
  38. package/dist/mcp/sdk-client.js +1 -1
  39. package/dist/mcp/server-runtime.js +1 -1
  40. package/dist/mcp/stdio-client.js +6 -6
  41. package/dist/mcp/tool-names.js +1 -1
  42. package/dist/minds/builtin/fuxi/persona.en.md +10 -10
  43. package/dist/minds/builtin/fuxi/persona.zh.md +12 -12
  44. package/dist/minds/builtin/pangu/persona.en.md +7 -7
  45. package/dist/minds/builtin/pangu/persona.zh.md +6 -6
  46. package/dist/minds/minds-i18n.js +2 -2
  47. package/dist/minds/system-prompt-parts.js +15 -12
  48. package/dist/minds/system-prompt.js +58 -56
  49. package/dist/persistence.js +675 -527
  50. package/dist/server/api-routes.js +1 -1
  51. package/dist/server/websocket-handler.js +10 -20
  52. package/dist/server.js +3 -3
  53. package/dist/shared/diligence.js +12 -12
  54. package/dist/shared/i18n/driver-messages.js +28 -118
  55. package/dist/shared/utils/inter-dialog-format.js +53 -53
  56. package/dist/snippets/starting.en.md +1 -1
  57. package/dist/snippets/starting.zh.md +1 -2
  58. package/dist/static/assets/{_baseUniq-2IQvcpiv.js → _baseUniq-D4N_zVXV.js} +2 -2
  59. package/dist/static/assets/{_baseUniq-2IQvcpiv.js.map → _baseUniq-D4N_zVXV.js.map} +1 -1
  60. package/dist/static/assets/{arc-Boi4s2EY.js → arc-7bP9qomB.js} +2 -2
  61. package/dist/static/assets/{arc-Boi4s2EY.js.map → arc-7bP9qomB.js.map} +1 -1
  62. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CV1IIalQ.js → architectureDiagram-VXUJARFQ-DToIiZuZ.js} +6 -6
  63. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CV1IIalQ.js.map → architectureDiagram-VXUJARFQ-DToIiZuZ.js.map} +1 -1
  64. package/dist/static/assets/{blockDiagram-VD42YOAC-C66ZvUb1.js → blockDiagram-VD42YOAC-C-pRNHpf.js} +7 -7
  65. package/dist/static/assets/{blockDiagram-VD42YOAC-C66ZvUb1.js.map → blockDiagram-VD42YOAC-C-pRNHpf.js.map} +1 -1
  66. package/dist/static/assets/{c4Diagram-YG6GDRKO-2YQZQ-KQ.js → c4Diagram-YG6GDRKO-Bnp-nWKO.js} +3 -3
  67. package/dist/static/assets/{c4Diagram-YG6GDRKO-2YQZQ-KQ.js.map → c4Diagram-YG6GDRKO-Bnp-nWKO.js.map} +1 -1
  68. package/dist/static/assets/{channel-DBG_xYT_.js → channel-CTv1SsAF.js} +2 -2
  69. package/dist/static/assets/{channel-DBG_xYT_.js.map → channel-CTv1SsAF.js.map} +1 -1
  70. package/dist/static/assets/{chunk-4BX2VUAB-D92pQ5qM.js → chunk-4BX2VUAB-D_OGa3ss.js} +2 -2
  71. package/dist/static/assets/{chunk-4BX2VUAB-D92pQ5qM.js.map → chunk-4BX2VUAB-D_OGa3ss.js.map} +1 -1
  72. package/dist/static/assets/{chunk-55IACEB6-T3IKxvjm.js → chunk-55IACEB6-I4o4MCuM.js} +2 -2
  73. package/dist/static/assets/{chunk-55IACEB6-T3IKxvjm.js.map → chunk-55IACEB6-I4o4MCuM.js.map} +1 -1
  74. package/dist/static/assets/{chunk-B4BG7PRW-SKDCq7xY.js → chunk-B4BG7PRW-Bp-TIXg6.js} +5 -5
  75. package/dist/static/assets/{chunk-B4BG7PRW-SKDCq7xY.js.map → chunk-B4BG7PRW-Bp-TIXg6.js.map} +1 -1
  76. package/dist/static/assets/{chunk-DI55MBZ5-CKY9xXzj.js → chunk-DI55MBZ5-Bnph5Hmd.js} +4 -4
  77. package/dist/static/assets/{chunk-DI55MBZ5-CKY9xXzj.js.map → chunk-DI55MBZ5-Bnph5Hmd.js.map} +1 -1
  78. package/dist/static/assets/{chunk-FMBD7UC4-CzaQthG_.js → chunk-FMBD7UC4-q3UyRsNI.js} +2 -2
  79. package/dist/static/assets/{chunk-FMBD7UC4-CzaQthG_.js.map → chunk-FMBD7UC4-q3UyRsNI.js.map} +1 -1
  80. package/dist/static/assets/{chunk-QN33PNHL-8v7ASP75.js → chunk-QN33PNHL-BxUlvLXP.js} +2 -2
  81. package/dist/static/assets/{chunk-QN33PNHL-8v7ASP75.js.map → chunk-QN33PNHL-BxUlvLXP.js.map} +1 -1
  82. package/dist/static/assets/{chunk-QZHKN3VN-Cd3_mr-D.js → chunk-QZHKN3VN-DpQR9BVw.js} +2 -2
  83. package/dist/static/assets/{chunk-QZHKN3VN-Cd3_mr-D.js.map → chunk-QZHKN3VN-DpQR9BVw.js.map} +1 -1
  84. package/dist/static/assets/{chunk-TZMSLE5B-BrTyfkJK.js → chunk-TZMSLE5B-BX8vrVo0.js} +2 -2
  85. package/dist/static/assets/{chunk-TZMSLE5B-BrTyfkJK.js.map → chunk-TZMSLE5B-BX8vrVo0.js.map} +1 -1
  86. package/dist/static/assets/{classDiagram-2ON5EDUG-pLBmQ3Qa.js → classDiagram-2ON5EDUG-Ccx5_2Xq.js} +6 -6
  87. package/dist/static/assets/{classDiagram-2ON5EDUG-pLBmQ3Qa.js.map → classDiagram-2ON5EDUG-Ccx5_2Xq.js.map} +1 -1
  88. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-pLBmQ3Qa.js → classDiagram-v2-WZHVMYZB-Ccx5_2Xq.js} +6 -6
  89. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-pLBmQ3Qa.js.map → classDiagram-v2-WZHVMYZB-Ccx5_2Xq.js.map} +1 -1
  90. package/dist/static/assets/{clone-rjxmrDHc.js → clone-Cl5zSMrO.js} +2 -2
  91. package/dist/static/assets/{clone-rjxmrDHc.js.map → clone-Cl5zSMrO.js.map} +1 -1
  92. package/dist/static/assets/{cose-bilkent-S5V4N54A-DaW3q2vS.js → cose-bilkent-S5V4N54A-B-FUX86B.js} +2 -2
  93. package/dist/static/assets/{cose-bilkent-S5V4N54A-DaW3q2vS.js.map → cose-bilkent-S5V4N54A-B-FUX86B.js.map} +1 -1
  94. package/dist/static/assets/{dagre-6UL2VRFP-BT252775.js → dagre-6UL2VRFP-Bj8vSSpT.js} +7 -7
  95. package/dist/static/assets/{dagre-6UL2VRFP-BT252775.js.map → dagre-6UL2VRFP-Bj8vSSpT.js.map} +1 -1
  96. package/dist/static/assets/{diagram-PSM6KHXK-Cp0jEYgm.js → diagram-PSM6KHXK-BPcgy7jf.js} +7 -7
  97. package/dist/static/assets/{diagram-PSM6KHXK-Cp0jEYgm.js.map → diagram-PSM6KHXK-BPcgy7jf.js.map} +1 -1
  98. package/dist/static/assets/{diagram-QEK2KX5R-BYEiCch_.js → diagram-QEK2KX5R-DHxd6LWi.js} +6 -6
  99. package/dist/static/assets/{diagram-QEK2KX5R-BYEiCch_.js.map → diagram-QEK2KX5R-DHxd6LWi.js.map} +1 -1
  100. package/dist/static/assets/{diagram-S2PKOQOG-SNGZ1B53.js → diagram-S2PKOQOG-C4ynhhLr.js} +6 -6
  101. package/dist/static/assets/{diagram-S2PKOQOG-SNGZ1B53.js.map → diagram-S2PKOQOG-C4ynhhLr.js.map} +1 -1
  102. package/dist/static/assets/{erDiagram-Q2GNP2WA-CMdkkngT.js → erDiagram-Q2GNP2WA-CQ25uxxf.js} +5 -5
  103. package/dist/static/assets/{erDiagram-Q2GNP2WA-CMdkkngT.js.map → erDiagram-Q2GNP2WA-CQ25uxxf.js.map} +1 -1
  104. package/dist/static/assets/{flowDiagram-NV44I4VS-k203P84f.js → flowDiagram-NV44I4VS-ChkkAldk.js} +6 -6
  105. package/dist/static/assets/{flowDiagram-NV44I4VS-k203P84f.js.map → flowDiagram-NV44I4VS-ChkkAldk.js.map} +1 -1
  106. package/dist/static/assets/{ganttDiagram-JELNMOA3-CgsVe01-.js → ganttDiagram-JELNMOA3-CBt_Zorl.js} +3 -3
  107. package/dist/static/assets/{ganttDiagram-JELNMOA3-CgsVe01-.js.map → ganttDiagram-JELNMOA3-CBt_Zorl.js.map} +1 -1
  108. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-BGOR_N5w.js → gitGraphDiagram-NY62KEGX-CtBc2dOO.js} +7 -7
  109. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-BGOR_N5w.js.map → gitGraphDiagram-NY62KEGX-CtBc2dOO.js.map} +1 -1
  110. package/dist/static/assets/{graph-DDHIhCSW.js → graph-BGzNnzuI.js} +3 -3
  111. package/dist/static/assets/{graph-DDHIhCSW.js.map → graph-BGzNnzuI.js.map} +1 -1
  112. package/dist/static/assets/{index-CUZD-Ua6.js → index-Vrp1PT3b.js} +654 -355
  113. package/dist/static/assets/index-Vrp1PT3b.js.map +1 -0
  114. package/dist/static/assets/{infoDiagram-WHAUD3N6-D0GlWUIm.js → infoDiagram-WHAUD3N6-BYJF-Ol5.js} +5 -5
  115. package/dist/static/assets/{infoDiagram-WHAUD3N6-D0GlWUIm.js.map → infoDiagram-WHAUD3N6-BYJF-Ol5.js.map} +1 -1
  116. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-I0W1fDTZ.js → journeyDiagram-XKPGCS4Q-Cl2p8ZBw.js} +5 -5
  117. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-I0W1fDTZ.js.map → journeyDiagram-XKPGCS4Q-Cl2p8ZBw.js.map} +1 -1
  118. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BY5xVZyl.js → kanban-definition-3W4ZIXB7-DBH-HEwY.js} +3 -3
  119. package/dist/static/assets/{kanban-definition-3W4ZIXB7-BY5xVZyl.js.map → kanban-definition-3W4ZIXB7-DBH-HEwY.js.map} +1 -1
  120. package/dist/static/assets/{layout-C7mFT1m6.js → layout-DdWO-uEo.js} +5 -5
  121. package/dist/static/assets/{layout-C7mFT1m6.js.map → layout-DdWO-uEo.js.map} +1 -1
  122. package/dist/static/assets/{linear-WSX0brRY.js → linear-BY3MovaF.js} +2 -2
  123. package/dist/static/assets/{linear-WSX0brRY.js.map → linear-BY3MovaF.js.map} +1 -1
  124. package/dist/static/assets/{min-DOTQTP4p.js → min-aHCJK1uN.js} +3 -3
  125. package/dist/static/assets/{min-DOTQTP4p.js.map → min-aHCJK1uN.js.map} +1 -1
  126. package/dist/static/assets/{mindmap-definition-VGOIOE7T-BWhHo-Hq.js → mindmap-definition-VGOIOE7T-BjJnBRtB.js} +4 -4
  127. package/dist/static/assets/{mindmap-definition-VGOIOE7T-BWhHo-Hq.js.map → mindmap-definition-VGOIOE7T-BjJnBRtB.js.map} +1 -1
  128. package/dist/static/assets/{pieDiagram-ADFJNKIX-B91oxvos.js → pieDiagram-ADFJNKIX-xAcmdymv.js} +7 -7
  129. package/dist/static/assets/{pieDiagram-ADFJNKIX-B91oxvos.js.map → pieDiagram-ADFJNKIX-xAcmdymv.js.map} +1 -1
  130. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DqMUyBPr.js → quadrantDiagram-AYHSOK5B-BPbEGCEj.js} +3 -3
  131. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-DqMUyBPr.js.map → quadrantDiagram-AYHSOK5B-BPbEGCEj.js.map} +1 -1
  132. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-COUayA3m.js → requirementDiagram-UZGBJVZJ--w6UfXy0.js} +4 -4
  133. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-COUayA3m.js.map → requirementDiagram-UZGBJVZJ--w6UfXy0.js.map} +1 -1
  134. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Bp9r8YDi.js → sankeyDiagram-TZEHDZUN-B_T6TQwh.js} +2 -2
  135. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-Bp9r8YDi.js.map → sankeyDiagram-TZEHDZUN-B_T6TQwh.js.map} +1 -1
  136. package/dist/static/assets/{sequenceDiagram-WL72ISMW-CpuTC5cG.js → sequenceDiagram-WL72ISMW-DX_oVvqA.js} +4 -4
  137. package/dist/static/assets/{sequenceDiagram-WL72ISMW-CpuTC5cG.js.map → sequenceDiagram-WL72ISMW-DX_oVvqA.js.map} +1 -1
  138. package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bxoo7e6E.js → stateDiagram-FKZM4ZOC-BAybZU8l.js} +9 -9
  139. package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bxoo7e6E.js.map → stateDiagram-FKZM4ZOC-BAybZU8l.js.map} +1 -1
  140. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Q-DL7tae.js → stateDiagram-v2-4FDKWEC3-BUsvuCdD.js} +5 -5
  141. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-Q-DL7tae.js.map → stateDiagram-v2-4FDKWEC3-BUsvuCdD.js.map} +1 -1
  142. package/dist/static/assets/{timeline-definition-IT6M3QCI-DuOiHQPk.js → timeline-definition-IT6M3QCI-DOYN-4XM.js} +3 -3
  143. package/dist/static/assets/{timeline-definition-IT6M3QCI-DuOiHQPk.js.map → timeline-definition-IT6M3QCI-DOYN-4XM.js.map} +1 -1
  144. package/dist/static/assets/{treemap-KMMF4GRG-YbrDC0fO.js → treemap-KMMF4GRG-CQXygT0T.js} +4 -4
  145. package/dist/static/assets/{treemap-KMMF4GRG-YbrDC0fO.js.map → treemap-KMMF4GRG-CQXygT0T.js.map} +1 -1
  146. package/dist/static/assets/{xychartDiagram-PRI3JC2R-DDRlTIfV.js → xychartDiagram-PRI3JC2R-ByFAvTeN.js} +3 -3
  147. package/dist/static/assets/{xychartDiagram-PRI3JC2R-DDRlTIfV.js.map → xychartDiagram-PRI3JC2R-ByFAvTeN.js.map} +1 -1
  148. package/dist/static/index.html +1 -1
  149. package/dist/tools/builtins.js +0 -8
  150. package/dist/tools/env.js +1 -1
  151. package/dist/tools/mcp.js +31 -9
  152. package/dist/tools/pending-tellask-reminder.js +14 -17
  153. package/dist/tools/team-mgmt.js +1 -1
  154. package/package.json +1 -1
  155. package/dist/static/assets/index-CUZD-Ua6.js.map +0 -1
package/dist/cli/read.js CHANGED
@@ -76,13 +76,8 @@ function buildPromptAudit(systemPrompt) {
76
76
  id: 'tellask_function_boundary',
77
77
  label: 'Has tellask vs function-calling boundary',
78
78
  pass: /native function-calling/.test(systemPrompt) &&
79
- (/is only for tellasking teammates\/@self\/@human/.test(systemPrompt) ||
80
- /仅用于诉请队友\/@self\/@human/.test(systemPrompt)),
81
- },
82
- {
83
- id: 'tellask_line_grammar',
84
- label: 'Has tellask line-prefix grammar',
85
- pass: /line-prefix grammar/.test(systemPrompt) || /逐行前缀语法/.test(systemPrompt),
79
+ (/is only for tellasking teammates\/freshBootsReasoning\/askHuman/.test(systemPrompt) ||
80
+ /仅用于诉请队友\/freshBootsReasoning\/askHuman/.test(systemPrompt)),
86
81
  },
87
82
  {
88
83
  id: 'fbr_phase_contract',
@@ -26,16 +26,18 @@ class DialogFactory {
26
26
  /**
27
27
  * Create a new SubDialog instance.
28
28
  */
29
- static createSubDialog(supdialog, taskDocPath, targetAgentId, tellaskHead, tellaskBody, options, initialState) {
29
+ static createSubDialog(supdialog, taskDocPath, targetAgentId, mentionList, tellaskContent, options, initialState) {
30
30
  const generatedId = (0, id_1.generateDialogID)();
31
31
  const subdialogId = new dialog_1.DialogID(generatedId, supdialog.id.rootId);
32
32
  return new dialog_1.SubDialog(supdialog.dlgStore, supdialog, taskDocPath, subdialogId, targetAgentId, {
33
- tellaskHead,
34
- tellaskBody,
33
+ callName: options.callName,
34
+ mentionList,
35
+ tellaskContent,
35
36
  originMemberId: options.originMemberId,
36
37
  callerDialogId: options.callerDialogId,
37
38
  callId: options.callId,
38
- }, options.tellaskSession, initialState);
39
+ collectiveTargets: options.collectiveTargets,
40
+ }, options.sessionSlug, initialState);
39
41
  }
40
42
  /**
41
43
  * Check if a dialog is a RootDialog.
@@ -113,14 +113,14 @@ async function ensureDialogLoaded(rootDialog, targetId, status, visitedSelfIds =
113
113
  await ensureDialogLoaded(rootDialog, new dialog_1.DialogID(assignmentFromSup.callerDialogId, targetId.rootId), status, visitedSelfIds);
114
114
  }
115
115
  const store = new persistence_1.DiskFileDialogStore(targetId);
116
- const subdialog = new dialog_1.SubDialog(store, rootDialog, state.metadata.taskDocPath, targetId, state.metadata.agentId, assignmentFromSup, state.metadata.tellaskSession, {
116
+ const subdialog = new dialog_1.SubDialog(store, rootDialog, state.metadata.taskDocPath, targetId, state.metadata.agentId, assignmentFromSup, state.metadata.sessionSlug, {
117
117
  messages: state.messages,
118
118
  reminders: state.reminders,
119
119
  currentCourse: state.currentCourse,
120
120
  contextHealth: state.contextHealth,
121
121
  });
122
122
  subdialog.disableDiligencePush = latest?.disableDiligencePush ?? false;
123
- if (subdialog.tellaskSession) {
123
+ if (subdialog.sessionSlug) {
124
124
  rootDialog.registerSubdialog(subdialog);
125
125
  }
126
126
  return subdialog;
package/dist/dialog.js CHANGED
@@ -106,7 +106,7 @@ class Dialog {
106
106
  // Diligence Push disable switch (persisted via latest.yaml; default = false).
107
107
  this.disableDiligencePush = false;
108
108
  // Current callId for tellask call correlation
109
- // - Set during teammate_call_finish_evt (from TellaskStreamParser)
109
+ // - Set during teammate_call_finish_evt (from tellask-special function calls)
110
110
  // - Retrieved during inline call-result emission (for receiveTeammateCallResult callId parameter)
111
111
  // - Enables frontend to attach result INLINE to the calling section
112
112
  // - NOT used for teammate tellasks (which use calleeDialogId instead)
@@ -171,8 +171,8 @@ class Dialog {
171
171
  * Get the current callId for tellask call correlation
172
172
  *
173
173
  * Call Types:
174
- * - Tellask call block (`!?@...`): callId is set during teammate_call_finish_evt, used for inline result correlation
175
- * - Teammate tellask (@agentName): Uses calleeDialogId, not callId
174
+ * - tellask-special function call: callId is set during teammate_call_finish_evt and used for inline result correlation
175
+ * - Subdialog response bubbles: use calleeDialogId instead of callId
176
176
  *
177
177
  * @returns The current callId for call correlation, or null if no active call
178
178
  */
@@ -180,9 +180,9 @@ class Dialog {
180
180
  return this._currentCallId;
181
181
  }
182
182
  /**
183
- * Set the current callId (called during teammate_call_finish_evt for tellask call blocks)
183
+ * Set the current callId (called during teammate_call_finish_evt for tellask-special calls)
184
184
  *
185
- * @param callId - The correlation ID from TellaskEventsReceiver.callFinish()
185
+ * @param callId - The function-call correlation ID
186
186
  */
187
187
  setCurrentCallId(callId) {
188
188
  this._currentCallId = callId;
@@ -229,7 +229,7 @@ class Dialog {
229
229
  return questions.length > 0;
230
230
  }
231
231
  catch (err) {
232
- log_1.log.warn('Failed to load Q4H state for pending check', {
232
+ log_1.log.warn('Failed to load Q4H state for pending check', undefined, {
233
233
  dialogId: this.id.selfId,
234
234
  error: err,
235
235
  });
@@ -245,7 +245,7 @@ class Dialog {
245
245
  return pending.length > 0;
246
246
  }
247
247
  catch (err) {
248
- log_1.log.warn('Failed to load pending subdialogs for pending check', {
248
+ log_1.log.warn('Failed to load pending subdialogs for pending check', undefined, {
249
249
  dialogId: this.id.selfId,
250
250
  error: err,
251
251
  });
@@ -295,7 +295,7 @@ class Dialog {
295
295
  this.addPendingSubdialogs(pending.map((record) => record.subdialogId));
296
296
  }
297
297
  catch (err) {
298
- log_1.log.warn('Failed to load pending subdialogs from persistence', {
298
+ log_1.log.warn('Failed to load pending subdialogs from persistence', undefined, {
299
299
  dialogId: this.id.selfId,
300
300
  error: err,
301
301
  });
@@ -559,8 +559,9 @@ class Dialog {
559
559
  ? `${(0, inter_dialog_format_1.formatAssignmentFromSupdialog)({
560
560
  fromAgentId: this.assignmentFromSup.originMemberId,
561
561
  toAgentId: this.agentId,
562
- tellaskHead: this.assignmentFromSup.tellaskHead,
563
- tellaskBody: this.assignmentFromSup.tellaskBody,
562
+ callName: this.assignmentFromSup.callName,
563
+ mentionList: this.assignmentFromSup.mentionList,
564
+ tellaskContent: this.assignmentFromSup.tellaskContent,
564
565
  language: (0, runtime_language_1.getWorkLanguage)(),
565
566
  collectiveTargets: this.assignmentFromSup.collectiveTargets ?? [this.agentId],
566
567
  })}\n---\n${trimmedPrompt}`
@@ -648,41 +649,23 @@ class Dialog {
648
649
  async webSearchCall(payload) {
649
650
  await this.dlgStore.webSearchCall(this, payload);
650
651
  }
651
- // Tellask call events (streaming mode - `!?@...` blocks)
652
- async callingStart(validation) {
653
- await this.dlgStore.callingStart(this, validation);
654
- }
655
- async callingHeadlineChunk(chunk) {
656
- await this.dlgStore.callingHeadlineChunk(this, chunk);
657
- }
658
- async callingHeadlineFinish() {
659
- await this.dlgStore.callingHeadlineFinish(this);
660
- }
661
- async callingBodyStart() {
662
- await this.dlgStore.callingBodyStart(this);
663
- }
664
- async callingBodyChunk(chunk) {
665
- await this.dlgStore.callingBodyChunk(this, chunk);
666
- }
667
- async callingBodyFinish() {
668
- await this.dlgStore.callingBodyFinish(this);
669
- }
670
- async callingFinish(callId) {
652
+ // Tellask-special call lifecycle events
653
+ async callingStart(payload) {
671
654
  // Store callId for inline call-result correlation
672
- this.setCurrentCallId(callId);
673
- await this.dlgStore.callingFinish(this, callId);
655
+ this.setCurrentCallId(payload.callId);
656
+ await this.dlgStore.callingStart(this, payload);
674
657
  }
675
658
  /**
676
659
  * Receive call result with callId for inline correlation
677
660
  */
678
- async receiveTeammateCallResult(responderId, tellaskHead, result, status, callId) {
679
- return await this.dlgStore.receiveTeammateCallResult(this, responderId, tellaskHead, result, status, callId);
661
+ async receiveTeammateCallResult(responderId, callName, mentionList, tellaskContent, result, status, callId) {
662
+ return await this.dlgStore.receiveTeammateCallResult(this, responderId, callName, mentionList, tellaskContent, result, status, callId);
680
663
  }
681
664
  /**
682
665
  * Receive teammate response (separate bubble for @teammate tellasks)
683
666
  */
684
- async receiveTeammateResponse(responderId, tellaskHead, status, subdialogId, options) {
685
- return await this.dlgStore.receiveTeammateResponse(this, responderId, tellaskHead, status, subdialogId, options);
667
+ async receiveTeammateResponse(responderId, callName, mentionList, tellaskContent, status, subdialogId, options) {
668
+ return await this.dlgStore.receiveTeammateResponse(this, responderId, callName, mentionList, tellaskContent, status, subdialogId, options);
686
669
  }
687
670
  async updateQuestions4Human(questions) {
688
671
  return await this.dlgStore.updateQuestions4Human(this, questions);
@@ -707,7 +690,9 @@ class Dialog {
707
690
  try {
708
691
  let responderId = subdialogId.rootId;
709
692
  let responderAgentId;
710
- let tellaskHead = response;
693
+ let callName = 'tellaskSessionless';
694
+ let mentionList;
695
+ let tellaskContent = response;
711
696
  let originMemberId = responderId;
712
697
  let callId = '';
713
698
  try {
@@ -719,14 +704,16 @@ class Dialog {
719
704
  originMemberId = metadata.agentId;
720
705
  }
721
706
  if (metadata.assignmentFromSup) {
722
- tellaskHead = metadata.assignmentFromSup.tellaskHead;
707
+ callName = metadata.assignmentFromSup.callName;
708
+ mentionList = metadata.assignmentFromSup.mentionList;
709
+ tellaskContent = metadata.assignmentFromSup.tellaskContent;
723
710
  originMemberId = metadata.assignmentFromSup.originMemberId;
724
711
  callId = metadata.assignmentFromSup.callId;
725
712
  }
726
713
  }
727
714
  }
728
715
  catch (err) {
729
- log_1.log.warn('Failed to load subdialog metadata for response labeling', {
716
+ log_1.log.warn('Failed to load subdialog metadata for response labeling', undefined, {
730
717
  dialogId: this.id.selfId,
731
718
  subdialogId: subdialogId.selfId,
732
719
  error: err,
@@ -738,33 +725,59 @@ class Dialog {
738
725
  subdialogId: subdialogId.selfId,
739
726
  });
740
727
  }
741
- if (tellaskHead.trim() === '') {
742
- tellaskHead = response;
728
+ if ((callName === 'tellask' || callName === 'tellaskSessionless') &&
729
+ (!Array.isArray(mentionList) || mentionList.length < 1)) {
730
+ mentionList = [`@${responderId}`];
743
731
  }
744
732
  // NO WAIT - emit immediately with virtual gen markers
745
733
  // Emit virtual generating_start_evt for subdialog response bubble
746
734
  await this.notifyGeneratingStart();
747
735
  const formattedResult = (0, inter_dialog_format_1.formatTeammateResponseContent)({
736
+ callName,
748
737
  responderId,
749
738
  requesterId: originMemberId,
750
- originalCallHeadLine: tellaskHead,
739
+ mentionList: mentionList ?? [],
740
+ tellaskContent,
751
741
  responseBody: response,
752
742
  language: (0, runtime_language_1.getWorkLanguage)(),
753
743
  });
754
744
  // Emit TeammateResponseEvent
755
- const evt = {
756
- type: 'teammate_response_evt',
757
- responderId,
758
- calleeDialogId: subdialogId.selfId,
759
- tellaskHead,
760
- status: 'completed',
761
- result: formattedResult,
762
- course: this.currentCourse,
763
- response,
764
- agentId: responderAgentId ?? responderId,
765
- callId,
766
- originMemberId,
767
- };
745
+ const evt = (() => {
746
+ switch (callName) {
747
+ case 'tellask':
748
+ case 'tellaskSessionless':
749
+ return {
750
+ type: 'teammate_response_evt',
751
+ responderId,
752
+ calleeDialogId: subdialogId.selfId,
753
+ callName,
754
+ mentionList: mentionList ?? [],
755
+ tellaskContent,
756
+ status: 'completed',
757
+ result: formattedResult,
758
+ course: this.currentCourse,
759
+ response,
760
+ agentId: responderAgentId ?? responderId,
761
+ callId,
762
+ originMemberId,
763
+ };
764
+ case 'freshBootsReasoning':
765
+ return {
766
+ type: 'teammate_response_evt',
767
+ responderId,
768
+ calleeDialogId: subdialogId.selfId,
769
+ callName,
770
+ tellaskContent,
771
+ status: 'completed',
772
+ result: formattedResult,
773
+ course: this.currentCourse,
774
+ response,
775
+ agentId: responderAgentId ?? responderId,
776
+ callId,
777
+ originMemberId,
778
+ };
779
+ }
780
+ })();
768
781
  (0, evt_registry_1.postDialogEvent)(this, evt);
769
782
  // Emit virtual generating_finish_evt
770
783
  await this.notifyGeneratingFinish();
@@ -783,10 +796,10 @@ exports.Dialog = Dialog;
783
796
  * Stores the root dialog for registry and lookup, and resolves its effective supdialog dynamically.
784
797
  */
785
798
  class SubDialog extends Dialog {
786
- constructor(dlgStore, rootDialog, taskDocPath, id, agentId, assignmentFromSup, tellaskSession, initialState) {
799
+ constructor(dlgStore, rootDialog, taskDocPath, id, agentId, assignmentFromSup, sessionSlug, initialState) {
787
800
  super(dlgStore, taskDocPath, id, agentId, initialState);
788
801
  this.rootDialog = rootDialog;
789
- this.tellaskSession = tellaskSession;
802
+ this.sessionSlug = sessionSlug;
790
803
  this.assignmentFromSup = assignmentFromSup;
791
804
  const resolvedSupdialog = rootDialog.lookupDialog(assignmentFromSup.callerDialogId);
792
805
  if (resolvedSupdialog && resolvedSupdialog.id.selfId === this.id.selfId) {
@@ -812,8 +825,8 @@ class SubDialog extends Dialog {
812
825
  * Create a subdialog under the same root dialog tree.
813
826
  * The new subdialog's effective supdialog is resolved via AssignmentFromSup.callerDialogId.
814
827
  */
815
- async createSubDialog(targetAgentId, tellaskHead, tellaskBody, options) {
816
- return await this.rootDialog.createSubDialog(targetAgentId, tellaskHead, tellaskBody, options);
828
+ async createSubDialog(targetAgentId, mentionList, tellaskContent, options) {
829
+ return await this.rootDialog.createSubDialog(targetAgentId, mentionList, tellaskContent, options);
817
830
  }
818
831
  }
819
832
  exports.SubDialog = SubDialog;
@@ -829,7 +842,7 @@ class RootDialog extends Dialog {
829
842
  this._subdialogAgentPrimingMode = 'reuse';
830
843
  // Tracks all dialogs in this dialog tree for O(1) lookup
831
844
  this._localRegistry = new Map();
832
- // Tracks TYPE B registered subdialogs by agentId!tellaskSession
845
+ // Tracks Type-B registered subdialogs by agentId!sessionSlug
833
846
  this._subdialogRegistry = new Map();
834
847
  this.registerDialog(this);
835
848
  }
@@ -870,34 +883,34 @@ class RootDialog extends Dialog {
870
883
  this._localRegistry.delete(selfId);
871
884
  }
872
885
  /**
873
- * Generate a registry key from agentId and tellaskSession.
886
+ * Generate a registry key from agentId and sessionSlug.
874
887
  */
875
- static makeSubdialogKey(agentId, tellaskSession) {
876
- return `${agentId}!${tellaskSession}`;
888
+ static makeSubdialogKey(agentId, sessionSlug) {
889
+ return `${agentId}!${sessionSlug}`;
877
890
  }
878
891
  /**
879
- * Register a TYPE B subdialog for resumption.
892
+ * Register a Type-B subdialog for resumption.
880
893
  */
881
894
  registerSubdialog(subdialog) {
882
- if (!subdialog.tellaskSession) {
895
+ if (!subdialog.sessionSlug) {
883
896
  return;
884
897
  }
885
- const key = RootDialog.makeSubdialogKey(subdialog.agentId, subdialog.tellaskSession);
898
+ const key = RootDialog.makeSubdialogKey(subdialog.agentId, subdialog.sessionSlug);
886
899
  this._subdialogRegistry.set(key, subdialog);
887
900
  this.registerDialog(subdialog);
888
901
  }
889
902
  /**
890
- * Lookup a TYPE B subdialog by agentId and tellaskSession.
903
+ * Lookup a Type-B subdialog by agentId and sessionSlug.
891
904
  */
892
- lookupSubdialog(agentId, tellaskSession) {
893
- const key = RootDialog.makeSubdialogKey(agentId, tellaskSession);
905
+ lookupSubdialog(agentId, sessionSlug) {
906
+ const key = RootDialog.makeSubdialogKey(agentId, sessionSlug);
894
907
  return this._subdialogRegistry.get(key);
895
908
  }
896
909
  /**
897
- * Remove a TYPE B subdialog from registry.
910
+ * Remove a Type-B subdialog from registry.
898
911
  */
899
- unregisterSubdialog(agentId, tellaskSession) {
900
- const key = RootDialog.makeSubdialogKey(agentId, tellaskSession);
912
+ unregisterSubdialog(agentId, sessionSlug) {
913
+ const key = RootDialog.makeSubdialogKey(agentId, sessionSlug);
901
914
  const subdialog = this._subdialogRegistry.get(key);
902
915
  if (subdialog) {
903
916
  this._localRegistry.delete(subdialog.id.selfId);
@@ -914,8 +927,8 @@ class RootDialog extends Dialog {
914
927
  /**
915
928
  * Create a new subdialog for autonomous teammate tellasks.
916
929
  */
917
- async createSubDialog(targetAgentId, tellaskHead, tellaskBody, options) {
918
- return await this.dlgStore.createSubDialog(this, targetAgentId, tellaskHead, tellaskBody, options);
930
+ async createSubDialog(targetAgentId, mentionList, tellaskContent, options) {
931
+ return await this.dlgStore.createSubDialog(this, targetAgentId, mentionList, tellaskContent, options);
919
932
  }
920
933
  /**
921
934
  * Save subdialog registry to disk (registry.yaml).
@@ -925,7 +938,7 @@ class RootDialog extends Dialog {
925
938
  key,
926
939
  subdialogId: subdialog.id,
927
940
  agentId: subdialog.agentId,
928
- tellaskSession: subdialog.tellaskSession,
941
+ sessionSlug: subdialog.sessionSlug,
929
942
  }));
930
943
  await this.dlgStore.saveSubdialogRegistry(this.id, entries, this.status);
931
944
  }
@@ -948,22 +961,23 @@ class DialogStore {
948
961
  *
949
962
  * @param supdialog
950
963
  * @param targetAgentId
951
- * @param tellaskHead
952
- * @param tellaskBody
964
+ * @param mentionList
965
+ * @param tellaskContent
953
966
  * @returns
954
967
  */
955
- async createSubDialog(supdialog, targetAgentId, tellaskHead, tellaskBody, options) {
968
+ async createSubDialog(supdialog, targetAgentId, mentionList, tellaskContent, options) {
956
969
  const generatedId = (0, id_2.generateDialogID)();
957
970
  // For subdialogs, use the supdialog's root dialog ID as the root
958
971
  const subdialogId = new DialogID(generatedId, supdialog.id.rootId);
959
972
  return new SubDialog(this, supdialog, supdialog.taskDocPath, subdialogId, targetAgentId, {
960
- tellaskHead,
961
- tellaskBody,
973
+ callName: options.callName,
974
+ mentionList,
975
+ tellaskContent,
962
976
  originMemberId: options.originMemberId,
963
977
  callerDialogId: options.callerDialogId,
964
978
  callId: options.callId,
965
979
  collectiveTargets: options.collectiveTargets,
966
- }, options.tellaskSession);
980
+ }, options.sessionSlug);
967
981
  }
968
982
  /**
969
983
  * Receive and handle LLM generation streams (Markdown stream + tellask call stream)
@@ -991,11 +1005,11 @@ class DialogStore {
991
1005
  /**
992
1006
  * Receive call result with callId for inline correlation
993
1007
  */
994
- async receiveTeammateCallResult(_dialog, _responderId, _tellaskHead, _result, _status, _callId) { }
1008
+ async receiveTeammateCallResult(_dialog, _responderId, _callName, _mentionList, _tellaskContent, _result, _status, _callId) { }
995
1009
  /**
996
1010
  * Receive teammate response (separate bubble for @teammate tellasks)
997
1011
  */
998
- async receiveTeammateResponse(_dialog, _responderId, _tellaskHead, _status, _subdialogId, _options) { }
1012
+ async receiveTeammateResponse(_dialog, _responderId, _callName, _mentionList, _tellaskContent, _status, _subdialogId, _options) { }
999
1013
  async updateQuestions4Human(_dialog, _questions) { }
1000
1014
  /**
1001
1015
  * Load Questions for Human state from storage
@@ -1015,14 +1029,8 @@ class DialogStore {
1015
1029
  * Clear Questions for Human state in storage
1016
1030
  */
1017
1031
  async clearQuestions4Human(_dialog) { }
1018
- // Tellask call streaming methods
1019
- async callingStart(_dialog, _validation) { }
1020
- async callingHeadlineChunk(_dialog, _chunk) { }
1021
- async callingHeadlineFinish(_dialog) { }
1022
- async callingBodyStart(_dialog) { }
1023
- async callingBodyChunk(_dialog, _chunk) { }
1024
- async callingBodyFinish(_dialog) { }
1025
- async callingFinish(_dialog, _callId) { }
1032
+ // Tellask-special call lifecycle methods
1033
+ async callingStart(_dialog, _payload) { }
1026
1034
  // Function call event (non-streaming mode - single event)
1027
1035
  async funcCallRequested(_dialog, _funcId, _funcName, _argumentsStr) { }
1028
1036
  async webSearchCall(_dialog, _payload) { }
@@ -241,8 +241,8 @@ taskDocPath: 'task.tsk' # Path to rtws Taskdoc package directory (inherited from
241
241
  createdAt: '2024-01-15T10:35:00Z' # ISO timestamp when created
242
242
  supdialogId: 'aa/bb/cccccccc' # Parent dialog's selfDlgId
243
243
  assignmentFromSup: # Assignment context from parent
244
- tellaskHead: 'Implement user authentication'
245
- tellaskBody: 'Create secure login system with JWT tokens'
244
+ mentionList: ['@bob']
245
+ tellaskContent: 'Implement user authentication; create secure login system with JWT tokens'
246
246
  originMemberId: 'alice'
247
247
  ```
248
248
 
@@ -238,8 +238,8 @@ taskDocPath: 'task.tsk' # rtws 差遣牒任务包(*.tsk/)目录的路径(
238
238
  createdAt: '2024-01-15T10:35:00Z' # 创建时的 ISO 时间戳
239
239
  supdialogId: 'aa/bb/cccccccc' # 父对话的 selfDlgId
240
240
  assignmentFromSup: # 来自父级的任务上下文
241
- tellaskHead: 'Implement user authentication'
242
- tellaskBody: 'Create secure login system with JWT tokens'
241
+ mentionList: ['@bob']
242
+ tellaskContent: 'Implement user authentication; create secure login system with JWT tokens'
243
243
  originMemberId: 'alice'
244
244
  ```
245
245