dominds 1.13.2 → 1.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/bootstrap/global-dialog-event-broadcaster.d.ts +18 -0
  2. package/dist/bootstrap/global-dialog-event-broadcaster.js +81 -0
  3. package/dist/dialog-fork.js +13 -12
  4. package/dist/dialog.d.ts +61 -50
  5. package/dist/dialog.js +284 -78
  6. package/dist/docs/dialog-system.md +12 -0
  7. package/dist/docs/dialog-system.zh.md +12 -0
  8. package/dist/docs/dominds-terminology.md +17 -0
  9. package/dist/docs/issues/global-dialog-event-broadcaster-missing.md +128 -0
  10. package/dist/docs/llm-provider-isolation.md +35 -0
  11. package/dist/docs/llm-provider-isolation.zh.md +35 -0
  12. package/dist/llm/client.d.ts +2 -1
  13. package/dist/llm/defaults.yaml +118 -4
  14. package/dist/llm/gen/anthropic.js +2 -4
  15. package/dist/llm/gen/codex.d.ts +11 -0
  16. package/dist/llm/gen/codex.js +41 -31
  17. package/dist/llm/gen/failure-classifier.js +17 -0
  18. package/dist/llm/gen/mock.js +45 -21
  19. package/dist/llm/gen/openai-compatible.d.ts +2 -0
  20. package/dist/llm/gen/openai-compatible.js +43 -38
  21. package/dist/llm/gen/openai.d.ts +3 -1
  22. package/dist/llm/gen/openai.js +888 -71
  23. package/dist/llm/gen/tool-call-context.d.ts +7 -2
  24. package/dist/llm/gen/tool-call-context.js +55 -13
  25. package/dist/llm/gen.d.ts +60 -3
  26. package/dist/llm/kernel-driver/context.js +1 -1
  27. package/dist/llm/kernel-driver/drive.js +374 -348
  28. package/dist/llm/kernel-driver/flow.js +3 -3
  29. package/dist/llm/kernel-driver/guardrails.d.ts +1 -1
  30. package/dist/llm/kernel-driver/guardrails.js +4 -4
  31. package/dist/llm/kernel-driver/runtime.js +11 -29
  32. package/dist/llm/kernel-driver/subdialog.js +56 -5
  33. package/dist/llm/kernel-driver/tellask-special.d.ts +38 -12
  34. package/dist/llm/kernel-driver/tellask-special.js +489 -180
  35. package/dist/llm/kernel-driver/types.d.ts +1 -1
  36. package/dist/persistence.d.ts +30 -62
  37. package/dist/persistence.js +978 -986
  38. package/dist/priming.js +398 -365
  39. package/dist/recovery/reply-special.js +3 -3
  40. package/dist/runtime/inter-dialog-format.d.ts +1 -1
  41. package/dist/runtime/inter-dialog-format.js +1 -1
  42. package/dist/runtime/reply-prompt-copy.js +4 -4
  43. package/dist/server/setup-routes.js +26 -5
  44. package/dist/server/snippets-routes.d.ts +1 -0
  45. package/dist/server/snippets-routes.js +20 -9
  46. package/dist/server/websocket-handler.js +58 -25
  47. package/dist/shared/utils/fbr.js +12 -8
  48. package/dist/shared/utils/inter-dialog-format.js +6 -4
  49. package/dist/team.d.ts +24 -13
  50. package/dist/team.js +123 -32
  51. package/dist/tool.d.ts +26 -0
  52. package/dist/tool.js +97 -0
  53. package/dist/tools/team_mgmt.js +18 -0
  54. package/package.json +2 -2
  55. package/webapp/dist/assets/{_basePickBy-CBOtd63g.js → _basePickBy-DsirmCgI.js} +3 -3
  56. package/webapp/dist/assets/_basePickBy-DsirmCgI.js.map +1 -0
  57. package/webapp/dist/assets/{_baseUniq-mfoKz4Wm.js → _baseUniq-tR6G8loB.js} +2 -2
  58. package/webapp/dist/assets/_baseUniq-tR6G8loB.js.map +1 -0
  59. package/webapp/dist/assets/{arc-Dq0WZLyu.js → arc-CzxpASkZ.js} +2 -2
  60. package/webapp/dist/assets/arc-CzxpASkZ.js.map +1 -0
  61. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-CNmygmp3.js → architectureDiagram-2XIMDMQ5-BSH7H5oI.js} +26 -8
  62. package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-BSH7H5oI.js.map +1 -0
  63. package/webapp/dist/assets/{blockDiagram-VD42YOAC-DvE0lybt.js → blockDiagram-WCTKOSBZ-DpLIr7yO.js} +187 -170
  64. package/webapp/dist/assets/blockDiagram-WCTKOSBZ-DpLIr7yO.js.map +1 -0
  65. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-CR7zJ2_u.js → c4Diagram-IC4MRINW-WuYKgWfY.js} +4 -4
  66. package/webapp/dist/assets/c4Diagram-IC4MRINW-WuYKgWfY.js.map +1 -0
  67. package/webapp/dist/assets/{channel-DrTrnYx4.js → channel-B-v9dqLN.js} +2 -2
  68. package/webapp/dist/assets/channel-B-v9dqLN.js.map +1 -0
  69. package/webapp/dist/assets/{chunk-4BX2VUAB-CVuJEIeN.js → chunk-4BX2VUAB-MtFUfKZy.js} +2 -2
  70. package/webapp/dist/assets/chunk-4BX2VUAB-MtFUfKZy.js.map +1 -0
  71. package/webapp/dist/assets/{chunk-55IACEB6-BxUoXApB.js → chunk-55IACEB6-rY9AJdzj.js} +2 -2
  72. package/webapp/dist/assets/chunk-55IACEB6-rY9AJdzj.js.map +1 -0
  73. package/webapp/dist/assets/{chunk-FMBD7UC4-TX-LVAaV.js → chunk-FMBD7UC4-B-RtOs7e.js} +2 -2
  74. package/webapp/dist/assets/chunk-FMBD7UC4-B-RtOs7e.js.map +1 -0
  75. package/webapp/dist/assets/{chunk-TZMSLE5B-Cw689yRl.js → chunk-JSJVCQXG-Da1d3uS4.js} +14 -6
  76. package/webapp/dist/assets/chunk-JSJVCQXG-Da1d3uS4.js.map +1 -0
  77. package/webapp/dist/assets/{chunk-QN33PNHL-D1uiKlOO.js → chunk-KX2RTZJC-DH9UrpuG.js} +2 -2
  78. package/webapp/dist/assets/chunk-KX2RTZJC-DH9UrpuG.js.map +1 -0
  79. package/webapp/dist/assets/{chunk-DI55MBZ5-SAhxUTqQ.js → chunk-NQ4KR5QH-CK365lrr.js} +9 -7
  80. package/webapp/dist/assets/chunk-NQ4KR5QH-CK365lrr.js.map +1 -0
  81. package/webapp/dist/assets/{chunk-QZHKN3VN-BxuV0Oba.js → chunk-QZHKN3VN-BCaWPGDm.js} +2 -2
  82. package/webapp/dist/assets/chunk-QZHKN3VN-BCaWPGDm.js.map +1 -0
  83. package/webapp/dist/assets/{chunk-B4BG7PRW-DpMa3-9L.js → chunk-WL4C6EOR-DDCnEwft.js} +171 -121
  84. package/webapp/dist/assets/chunk-WL4C6EOR-DDCnEwft.js.map +1 -0
  85. package/webapp/dist/assets/{classDiagram-2ON5EDUG-BTTGianr.js → classDiagram-VBA2DB6C-CvMBU4WA.js} +7 -6
  86. package/webapp/dist/assets/classDiagram-VBA2DB6C-CvMBU4WA.js.map +1 -0
  87. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-BTTGianr.js → classDiagram-v2-RAHNMMFH-CvMBU4WA.js} +7 -6
  88. package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-CvMBU4WA.js.map +1 -0
  89. package/webapp/dist/assets/{clone-Dk8cAI3I.js → clone-r98jR0MC.js} +2 -2
  90. package/webapp/dist/assets/clone-r98jR0MC.js.map +1 -0
  91. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BjJnzB2N.js → cose-bilkent-S5V4N54A-t6J60Ogk.js} +2 -2
  92. package/webapp/dist/assets/cose-bilkent-S5V4N54A-t6J60Ogk.js.map +1 -0
  93. package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
  94. package/webapp/dist/assets/{dagre-6UL2VRFP-VF-xGhAf.js → dagre-KLK3FWXG-BlqmY2DV.js} +7 -7
  95. package/webapp/dist/assets/dagre-KLK3FWXG-BlqmY2DV.js.map +1 -0
  96. package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
  97. package/webapp/dist/assets/{diagram-PSM6KHXK-Ba5U0oRY.js → diagram-E7M64L7V-FwCHeIUD.js} +10 -10
  98. package/webapp/dist/assets/diagram-E7M64L7V-FwCHeIUD.js.map +1 -0
  99. package/webapp/dist/assets/{diagram-QEK2KX5R-DoYCnEw_.js → diagram-IFDJBPK2-NhtmkuZG.js} +9 -8
  100. package/webapp/dist/assets/diagram-IFDJBPK2-NhtmkuZG.js.map +1 -0
  101. package/webapp/dist/assets/{diagram-S2PKOQOG-CkK4SRyE.js → diagram-P4PSJMXO-B9FcmokX.js} +8 -8
  102. package/webapp/dist/assets/diagram-P4PSJMXO-B9FcmokX.js.map +1 -0
  103. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-DkI5eYww.js → erDiagram-INFDFZHY-DHKmWvtB.js} +96 -75
  104. package/webapp/dist/assets/erDiagram-INFDFZHY-DHKmWvtB.js.map +1 -0
  105. package/webapp/dist/assets/{flowDiagram-NV44I4VS-wOdPUQ7Y.js → flowDiagram-PKNHOUZH-C7Zi8I7T.js} +98 -81
  106. package/webapp/dist/assets/flowDiagram-PKNHOUZH-C7Zi8I7T.js.map +1 -0
  107. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BtRWgkUH.js → ganttDiagram-A5KZAMGK-Cv2T8tz_.js} +28 -3
  108. package/webapp/dist/assets/ganttDiagram-A5KZAMGK-Cv2T8tz_.js.map +1 -0
  109. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-Bsz7u1vi.js → gitGraphDiagram-K3NZZRJ6-DztaipJU.js} +38 -46
  110. package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-DztaipJU.js.map +1 -0
  111. package/webapp/dist/assets/graph-C5yf62Vs.js +782 -0
  112. package/webapp/dist/assets/graph-C5yf62Vs.js.map +1 -0
  113. package/webapp/dist/assets/{index-xvYYeHuy.css → index-YaxF76or.css} +1 -1
  114. package/webapp/dist/assets/{index-rYmIohM_.js → index-hve5MWPs.js} +1603 -1415
  115. package/webapp/dist/assets/index-hve5MWPs.js.map +1 -0
  116. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BMaxCvH5.js → infoDiagram-LFFYTUFH-VgsbBPZP.js} +7 -7
  117. package/webapp/dist/assets/infoDiagram-LFFYTUFH-VgsbBPZP.js.map +1 -0
  118. package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
  119. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-C7j3YWdw.js +966 -0
  120. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-C7j3YWdw.js.map +1 -0
  121. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-ejyerzmG.js → journeyDiagram-4ABVD52K-OO8sev-Y.js} +5 -5
  122. package/webapp/dist/assets/journeyDiagram-4ABVD52K-OO8sev-Y.js.map +1 -0
  123. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-CYj35TEs.js → kanban-definition-K7BYSVSG-DiYCC1Ig.js} +5 -3
  124. package/webapp/dist/assets/kanban-definition-K7BYSVSG-DiYCC1Ig.js.map +1 -0
  125. package/webapp/dist/assets/{layout-7Ql4zmuL.js → layout-DdZSgGdu.js} +5 -5
  126. package/webapp/dist/assets/layout-DdZSgGdu.js.map +1 -0
  127. package/webapp/dist/assets/{linear-CVmgVPuZ.js → linear-7-aHtaFi.js} +2 -2
  128. package/webapp/dist/assets/linear-7-aHtaFi.js.map +1 -0
  129. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-DOpxjGVo.js → mindmap-definition-YRQLILUH-IG3I-RdD.js} +7 -5
  130. package/webapp/dist/assets/mindmap-definition-YRQLILUH-IG3I-RdD.js.map +1 -0
  131. package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
  132. package/webapp/dist/assets/{pieDiagram-ADFJNKIX-CLQjpmAG.js → pieDiagram-SKSYHLDU-z68KJT5r.js} +8 -8
  133. package/webapp/dist/assets/pieDiagram-SKSYHLDU-z68KJT5r.js.map +1 -0
  134. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-ClD_bz7z.js → quadrantDiagram-337W2JSQ-DaENWdO6.js} +3 -3
  135. package/webapp/dist/assets/quadrantDiagram-337W2JSQ-DaENWdO6.js.map +1 -0
  136. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-DOpb-TWH.js → requirementDiagram-Z7DCOOCP-ROTFv4sa.js} +16 -6
  137. package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-ROTFv4sa.js.map +1 -0
  138. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-D8Hsj3yx.js → sankeyDiagram-WA2Y5GQK-CK7qtpzw.js} +2 -2
  139. package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-CK7qtpzw.js.map +1 -0
  140. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-CFMNjBER.js → sequenceDiagram-2WXFIKYE-R5lDySeI.js} +601 -201
  141. package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-R5lDySeI.js.map +1 -0
  142. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-BQeDlw0P.js → stateDiagram-RAJIS63D-sr7msF5U.js} +9 -9
  143. package/webapp/dist/assets/stateDiagram-RAJIS63D-sr7msF5U.js.map +1 -0
  144. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-DscX61Rs.js → stateDiagram-v2-FVOUBMTO-X663liwS.js} +5 -5
  145. package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-X663liwS.js.map +1 -0
  146. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-BcXPSTiw.js → timeline-definition-YZTLITO2-Bw0TdG26.js} +3 -3
  147. package/webapp/dist/assets/timeline-definition-YZTLITO2-Bw0TdG26.js.map +1 -0
  148. package/webapp/dist/assets/{treemap-GDKQZRPO-BBr4UV0Z.js → treemap-KZPCXAKY-D_sjKwI7.js} +37 -24
  149. package/webapp/dist/assets/treemap-KZPCXAKY-D_sjKwI7.js.map +1 -0
  150. package/webapp/dist/assets/vennDiagram-LZ73GAT5-DhlHIHid.js +2487 -0
  151. package/webapp/dist/assets/vennDiagram-LZ73GAT5-DhlHIHid.js.map +1 -0
  152. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-CS5RAtQE.js → xychartDiagram-JWTSCODW-C65ESjTc.js} +4 -4
  153. package/webapp/dist/assets/xychartDiagram-JWTSCODW-C65ESjTc.js.map +1 -0
  154. package/webapp/dist/index.html +2 -2
  155. package/webapp/dist/assets/_basePickBy-CBOtd63g.js.map +0 -1
  156. package/webapp/dist/assets/_baseUniq-mfoKz4Wm.js.map +0 -1
  157. package/webapp/dist/assets/arc-Dq0WZLyu.js.map +0 -1
  158. package/webapp/dist/assets/architectureDiagram-VXUJARFQ-CNmygmp3.js.map +0 -1
  159. package/webapp/dist/assets/blockDiagram-VD42YOAC-DvE0lybt.js.map +0 -1
  160. package/webapp/dist/assets/c4Diagram-YG6GDRKO-CR7zJ2_u.js.map +0 -1
  161. package/webapp/dist/assets/channel-DrTrnYx4.js.map +0 -1
  162. package/webapp/dist/assets/chunk-4BX2VUAB-CVuJEIeN.js.map +0 -1
  163. package/webapp/dist/assets/chunk-55IACEB6-BxUoXApB.js.map +0 -1
  164. package/webapp/dist/assets/chunk-B4BG7PRW-DpMa3-9L.js.map +0 -1
  165. package/webapp/dist/assets/chunk-DI55MBZ5-SAhxUTqQ.js.map +0 -1
  166. package/webapp/dist/assets/chunk-FMBD7UC4-TX-LVAaV.js.map +0 -1
  167. package/webapp/dist/assets/chunk-QN33PNHL-D1uiKlOO.js.map +0 -1
  168. package/webapp/dist/assets/chunk-QZHKN3VN-BxuV0Oba.js.map +0 -1
  169. package/webapp/dist/assets/chunk-TZMSLE5B-Cw689yRl.js.map +0 -1
  170. package/webapp/dist/assets/classDiagram-2ON5EDUG-BTTGianr.js.map +0 -1
  171. package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-BTTGianr.js.map +0 -1
  172. package/webapp/dist/assets/clone-Dk8cAI3I.js.map +0 -1
  173. package/webapp/dist/assets/cose-bilkent-S5V4N54A-BjJnzB2N.js.map +0 -1
  174. package/webapp/dist/assets/dagre-6UL2VRFP-VF-xGhAf.js.map +0 -1
  175. package/webapp/dist/assets/diagram-PSM6KHXK-Ba5U0oRY.js.map +0 -1
  176. package/webapp/dist/assets/diagram-QEK2KX5R-DoYCnEw_.js.map +0 -1
  177. package/webapp/dist/assets/diagram-S2PKOQOG-CkK4SRyE.js.map +0 -1
  178. package/webapp/dist/assets/erDiagram-Q2GNP2WA-DkI5eYww.js.map +0 -1
  179. package/webapp/dist/assets/flowDiagram-NV44I4VS-wOdPUQ7Y.js.map +0 -1
  180. package/webapp/dist/assets/ganttDiagram-JELNMOA3-BtRWgkUH.js.map +0 -1
  181. package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-Bsz7u1vi.js.map +0 -1
  182. package/webapp/dist/assets/graph-DAMkuTbn.js +0 -425
  183. package/webapp/dist/assets/graph-DAMkuTbn.js.map +0 -1
  184. package/webapp/dist/assets/index-rYmIohM_.js.map +0 -1
  185. package/webapp/dist/assets/infoDiagram-HS3SLOUP-BMaxCvH5.js.map +0 -1
  186. package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-ejyerzmG.js.map +0 -1
  187. package/webapp/dist/assets/kanban-definition-3W4ZIXB7-CYj35TEs.js.map +0 -1
  188. package/webapp/dist/assets/layout-7Ql4zmuL.js.map +0 -1
  189. package/webapp/dist/assets/linear-CVmgVPuZ.js.map +0 -1
  190. package/webapp/dist/assets/mindmap-definition-VGOIOE7T-DOpxjGVo.js.map +0 -1
  191. package/webapp/dist/assets/pieDiagram-ADFJNKIX-CLQjpmAG.js.map +0 -1
  192. package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-ClD_bz7z.js.map +0 -1
  193. package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-DOpb-TWH.js.map +0 -1
  194. package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-D8Hsj3yx.js.map +0 -1
  195. package/webapp/dist/assets/sequenceDiagram-WL72ISMW-CFMNjBER.js.map +0 -1
  196. package/webapp/dist/assets/stateDiagram-FKZM4ZOC-BQeDlw0P.js.map +0 -1
  197. package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3-DscX61Rs.js.map +0 -1
  198. package/webapp/dist/assets/timeline-definition-IT6M3QCI-BcXPSTiw.js.map +0 -1
  199. package/webapp/dist/assets/treemap-GDKQZRPO-BBr4UV0Z.js.map +0 -1
  200. package/webapp/dist/assets/xychartDiagram-PRI3JC2R-CS5RAtQE.js.map +0 -1
@@ -105,7 +105,7 @@ function resolveAppRunControlSource(args) {
105
105
  if (!prompt) {
106
106
  return null;
107
107
  }
108
- return Array.isArray(prompt.q4hAnswerCallIds) && prompt.q4hAnswerCallIds.length > 0
108
+ return typeof prompt.q4hAnswerCallId === 'string' && prompt.q4hAnswerCallId.trim() !== ''
109
109
  ? 'drive_dialog_by_user_answer'
110
110
  : 'drive_dlg_by_user_msg';
111
111
  }
@@ -250,7 +250,7 @@ async function resolveEffectivePrompt(dialog, humanPrompt) {
250
250
  userLanguageCode: upNext.userLanguageCode === 'zh' || upNext.userLanguageCode === 'en'
251
251
  ? upNext.userLanguageCode
252
252
  : undefined,
253
- q4hAnswerCallIds: upNext.q4hAnswerCallIds,
253
+ q4hAnswerCallId: upNext.q4hAnswerCallId,
254
254
  tellaskReplyDirective: upNext.tellaskReplyDirective,
255
255
  skipTaskdoc: upNext.skipTaskdoc,
256
256
  subdialogReplyTarget: upNext.subdialogReplyTarget,
@@ -681,7 +681,7 @@ async function executeDriveRound(args) {
681
681
  userLanguageCode: followUp.userLanguageCode === 'zh' || followUp.userLanguageCode === 'en'
682
682
  ? followUp.userLanguageCode
683
683
  : undefined,
684
- q4hAnswerCallIds: followUp.q4hAnswerCallIds,
684
+ q4hAnswerCallId: followUp.q4hAnswerCallId,
685
685
  tellaskReplyDirective: followUp.tellaskReplyDirective,
686
686
  skipTaskdoc: followUp.skipTaskdoc,
687
687
  subdialogReplyTarget: followUp.subdialogReplyTarget,
@@ -12,7 +12,7 @@ export type KernelDriverPolicyState = Readonly<{
12
12
  effectiveAgentTools: readonly Tool[];
13
13
  prependedContextMessages: readonly ChatMessage[];
14
14
  tellaskPolicy: KernelDriverTellaskPolicy;
15
- allowTellaskSpecialFunctions: boolean;
15
+ allowTellaskFunctions: boolean;
16
16
  allowFunctionCalls: boolean;
17
17
  }>;
18
18
  export type KernelDriverPolicyViolationKind = 'tellask' | 'tool' | 'tellask_and_tool';
@@ -34,7 +34,7 @@ function buildKernelDriverPolicy(args) {
34
34
  effectiveAgentTools: agentTools,
35
35
  prependedContextMessages: [],
36
36
  tellaskPolicy: 'allow_any',
37
- allowTellaskSpecialFunctions: true,
37
+ allowTellaskFunctions: true,
38
38
  allowFunctionCalls: true,
39
39
  };
40
40
  }
@@ -57,7 +57,7 @@ function buildKernelDriverPolicy(args) {
57
57
  },
58
58
  ],
59
59
  tellaskPolicy: 'deny_all',
60
- allowTellaskSpecialFunctions: false,
60
+ allowTellaskFunctions: false,
61
61
  allowFunctionCalls: isConclusionPhase,
62
62
  };
63
63
  }
@@ -68,8 +68,8 @@ function validateKernelDriverPolicyInvariants(policy, language) {
68
68
  if (policy.tellaskPolicy !== 'deny_all') {
69
69
  return { ok: false, detail: 'FBR tellaskPolicy must be deny_all.' };
70
70
  }
71
- if (policy.allowTellaskSpecialFunctions) {
72
- return { ok: false, detail: 'FBR allowTellaskSpecialFunctions must be false.' };
71
+ if (policy.allowTellaskFunctions) {
72
+ return { ok: false, detail: 'FBR allowTellaskFunctions must be false.' };
73
73
  }
74
74
  if (policy.prependedContextMessages.length !== 1) {
75
75
  return { ok: false, detail: 'FBR must prepend exactly one no-tools notice message.' };
@@ -44,12 +44,10 @@ const id_1 = require("@longrun-ai/kernel/utils/id");
44
44
  const time_1 = require("@longrun-ai/kernel/utils/time");
45
45
  const evt_registry_1 = require("../../evt-registry");
46
46
  const log_1 = require("../../log");
47
- const persistence_1 = require("../../persistence");
48
47
  const problems_1 = require("../../problems");
49
48
  const driver_messages_1 = require("../../runtime/driver-messages");
50
49
  const work_language_1 = require("../../runtime/work-language");
51
50
  const tool_1 = require("../../tool");
52
- const id_2 = require("../../utils/id");
53
51
  function isNodeErrorWithCode(error) {
54
52
  return error instanceof Error && 'code' in error;
55
53
  }
@@ -157,34 +155,18 @@ async function maybePrepareDiligenceAutoContinuePrompt(options) {
157
155
  }
158
156
  async function suspendForKeepGoingBudgetExhausted(options) {
159
157
  const { dlg, maxInjectCount } = options;
160
- const questionId = `q4h-${(0, id_2.generateDialogID)()}`;
161
158
  const language = dlg.getLastUserLanguageCode();
162
- const question = {
163
- id: questionId,
164
- tellaskContent: (0, driver_messages_1.formatQ4HDiligencePushBudgetExhausted)(language, { maxInjectCount }),
165
- askedAt: (0, time_1.formatUnifiedTimestamp)(new Date()),
166
- callSiteRef: {
167
- course: dlg.currentCourse,
168
- messageIndex: dlg.msgs.length,
169
- },
170
- };
171
- await persistence_1.DialogPersistence.appendQuestion4HumanState(dlg.id, question);
172
- const newQuestionEvent = {
173
- type: 'new_q4h_asked',
174
- question: {
175
- id: question.id,
176
- selfId: dlg.id.selfId,
177
- tellaskContent: question.tellaskContent,
178
- askedAt: question.askedAt,
179
- callId: question.callId,
180
- remainingCallIds: question.remainingCallIds,
181
- callSiteRef: question.callSiteRef,
182
- rootId: dlg.id.rootId,
183
- agentId: dlg.agentId,
184
- taskDocPath: dlg.taskDocPath,
185
- },
186
- };
187
- (0, evt_registry_1.postDialogEvent)(dlg, newQuestionEvent);
159
+ const content = (0, driver_messages_1.formatQ4HDiligencePushBudgetExhausted)(language, { maxInjectCount });
160
+ const genseq = dlg.activeGenSeqOrUndefined ?? 1;
161
+ // This is informational only: it stops further automatic diligence pushes, but does not create
162
+ // a Q4H wait state and does not participate in revive gating.
163
+ await dlg.persistUiOnlyMarkdown(content, genseq);
164
+ (0, evt_registry_1.postDialogEvent)(dlg, {
165
+ type: 'ui_only_markdown_evt',
166
+ content,
167
+ course: dlg.currentCourse,
168
+ genseq,
169
+ });
188
170
  }
189
171
  function isPlainObject(value) {
190
172
  return typeof value === 'object' && value !== null && !Array.isArray(value);
@@ -357,25 +357,76 @@ async function supplyResponseToSupdialog(args) {
357
357
  });
358
358
  const immediateMirror = carryoverContent !== undefined
359
359
  ? {
360
- type: 'tellask_carryover_result_msg',
360
+ type: 'tellask_carryover_msg',
361
361
  role: 'user',
362
+ genseq: parentDialog.activeGenSeqOrUndefined ?? 1,
362
363
  content: carryoverContent,
363
364
  originCourse: carryoverOriginCourse,
365
+ carryoverCourse: parentDialog.currentCourse,
364
366
  responderId: result.responderId,
365
367
  callName: result.callName,
366
368
  tellaskContent: result.tellaskContent,
367
369
  status,
370
+ response: upstreamResponseText,
371
+ agentId: result.responderAgentId ?? result.responderId,
368
372
  callId: resolvedCallId,
373
+ originMemberId: requesterId,
374
+ ...(result.callName === 'tellask'
375
+ ? {
376
+ mentionList: result.mentionList ?? [],
377
+ sessionSlug: result.sessionSlug,
378
+ }
379
+ : result.callName === 'tellaskSessionless'
380
+ ? {
381
+ mentionList: result.mentionList ?? [],
382
+ }
383
+ : {}),
384
+ ...(calleeResponseRef !== undefined
385
+ ? {
386
+ calleeDialogId: subdialogId.selfId,
387
+ calleeCourse: calleeResponseRef.course,
388
+ calleeGenseq: calleeResponseRef.genseq,
389
+ }
390
+ : {
391
+ calleeDialogId: subdialogId.selfId,
392
+ }),
369
393
  }
370
394
  : {
371
395
  type: 'tellask_result_msg',
372
396
  role: 'tool',
373
- responderId: result.responderId,
374
- mentionList: result.mentionList,
375
- tellaskContent: result.tellaskContent,
376
- status,
397
+ genseq: parentDialog.activeGenSeqOrUndefined ?? 1,
377
398
  callId: resolvedCallId,
399
+ callName: result.callName,
400
+ status,
378
401
  content: upstreamResponseText,
402
+ call: result.callName === 'tellask'
403
+ ? {
404
+ tellaskContent: result.tellaskContent,
405
+ mentionList: result.mentionList ?? [],
406
+ ...(result.sessionSlug ? { sessionSlug: result.sessionSlug } : {}),
407
+ }
408
+ : result.callName === 'tellaskSessionless'
409
+ ? {
410
+ tellaskContent: result.tellaskContent,
411
+ mentionList: result.mentionList ?? [],
412
+ }
413
+ : {
414
+ tellaskContent: result.tellaskContent,
415
+ },
416
+ responder: {
417
+ responderId: result.responderId,
418
+ agentId: result.responderAgentId ?? result.responderId,
419
+ originMemberId: requesterId,
420
+ },
421
+ route: {
422
+ calleeDialogId: subdialogId.selfId,
423
+ ...(calleeResponseRef !== undefined
424
+ ? {
425
+ calleeCourse: calleeResponseRef.course,
426
+ calleeGenseq: calleeResponseRef.genseq,
427
+ }
428
+ : {}),
429
+ },
379
430
  };
380
431
  await parentDialog.addChatMessages(immediateMirror);
381
432
  if (result.shouldRevive) {
@@ -1,6 +1,6 @@
1
1
  import { type TellaskReplyDirective } from '@longrun-ai/kernel/types/storage';
2
2
  import { Dialog } from '../../dialog';
3
- import type { ChatMessage, FuncCallMsg } from '../client';
3
+ import type { ChatMessage, FuncCallMsg, FuncResultMsg } from '../client';
4
4
  import type { KernelDriverDriveCallbacks } from './types';
5
5
  export type TellaskRoutingParseResult = {
6
6
  type: 'A';
@@ -14,8 +14,8 @@ export type TellaskRoutingParseResult = {
14
14
  agentId: string;
15
15
  };
16
16
  declare const TELLASK_SPECIAL_FUNCTION_NAMES: readonly ["tellaskBack", "tellask", "tellaskSessionless", "replyTellask", "replyTellaskSessionless", "replyTellaskBack", "askHuman", "freshBootsReasoning"];
17
- export type TellaskSpecialFunctionName = (typeof TELLASK_SPECIAL_FUNCTION_NAMES)[number];
18
- export type TellaskSpecialCall = Readonly<{
17
+ export type TellaskCallFunctionName = (typeof TELLASK_SPECIAL_FUNCTION_NAMES)[number];
18
+ export type TellaskCall = Readonly<{
19
19
  callId: string;
20
20
  callName: 'tellaskBack';
21
21
  tellaskContent: string;
@@ -54,11 +54,17 @@ export type TellaskSpecialCall = Readonly<{
54
54
  tellaskContent: string;
55
55
  effort?: number;
56
56
  }>;
57
- export type TellaskSpecialCallParseIssue = Readonly<{
58
- call: FuncCallMsg;
57
+ export type ResolvedTellaskFunctionCall = Readonly<{
58
+ originalCall: FuncCallMsg;
59
+ call: TellaskCall;
60
+ }>;
61
+ export type InvalidTellaskFunctionCall = Readonly<{
62
+ originalCall: FuncCallMsg;
59
63
  error: string;
64
+ rawArgumentsText: string;
65
+ contextArguments: string;
60
66
  }>;
61
- export declare function isTellaskSpecialFunctionName(name: string): name is TellaskSpecialFunctionName;
67
+ export declare function isTellaskCallFunctionName(name: string): name is TellaskCallFunctionName;
62
68
  export declare function loadLatestActiveTellaskReplyDirective(dialog: Dialog): Promise<TellaskReplyDirective | undefined>;
63
69
  export declare function deliverTellaskBackReplyFromDirective(args: {
64
70
  dlg: Dialog;
@@ -73,19 +79,39 @@ export declare function recoverPendingReplyTellaskCalls(args: {
73
79
  dlg: Dialog;
74
80
  callbacks: KernelDriverDriveCallbacks;
75
81
  }): Promise<number>;
76
- export declare function classifyTellaskSpecialFunctionCalls(funcCalls: readonly FuncCallMsg[], options?: {
77
- allowedSpecials?: ReadonlySet<TellaskSpecialFunctionName>;
82
+ export declare function resolveTellaskFunctionCalls(funcCalls: readonly FuncCallMsg[], options?: {
83
+ allowedSpecials?: ReadonlySet<TellaskCallFunctionName>;
78
84
  }): {
79
- specialCalls: TellaskSpecialCall[];
85
+ validCalls: ResolvedTellaskFunctionCall[];
86
+ invalidCalls: InvalidTellaskFunctionCall[];
80
87
  normalCalls: FuncCallMsg[];
81
- parseIssues: TellaskSpecialCallParseIssue[];
82
88
  };
83
- export declare function executeTellaskSpecialCalls(args: {
89
+ export declare function formatTellaskInvalidCallResult(args: {
90
+ call: FuncCallMsg;
91
+ error: string;
92
+ }): FuncResultMsg;
93
+ export declare function formatPendingTellaskFuncResultContent(name: TellaskCallFunctionName, startedAtMs: number | null): string;
94
+ export declare function formatResolvedAskHumanResultContent(): string;
95
+ export declare function executeTellaskCalls(args: {
84
96
  dlg: Dialog;
85
- calls: readonly TellaskSpecialCall[];
97
+ calls: readonly TellaskCall[];
86
98
  callbacks: KernelDriverDriveCallbacks;
87
99
  }): Promise<{
88
100
  toolOutputs: ChatMessage[];
89
101
  successfulReplyCallIds: string[];
90
102
  }>;
103
+ export type TellaskFunctionRoundResult = Readonly<{
104
+ normalCalls: readonly FuncCallMsg[];
105
+ tellaskCallMessages: readonly FuncCallMsg[];
106
+ tellaskResults: readonly FuncResultMsg[];
107
+ toolOutputs: readonly ChatMessage[];
108
+ handledCallIds: readonly string[];
109
+ shouldStopAfterReplyTool: boolean;
110
+ }>;
111
+ export declare function processTellaskFunctionRound(args: {
112
+ dlg: Dialog;
113
+ funcCalls: readonly FuncCallMsg[];
114
+ allowedSpecials: ReadonlySet<TellaskCallFunctionName>;
115
+ callbacks: KernelDriverDriveCallbacks;
116
+ }): Promise<TellaskFunctionRoundResult>;
91
117
  export {};