dominds 1.24.2 → 1.24.4

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 (117) hide show
  1. package/dist/apps/runtime.js +0 -3
  2. package/dist/dialog-display-state.js +4 -2
  3. package/dist/dialog-global-registry.d.ts +15 -1
  4. package/dist/dialog-global-registry.js +73 -5
  5. package/dist/dialog.d.ts +3 -3
  6. package/dist/dialog.js +4 -2
  7. package/dist/docs/tellask-background-continuation-refactor.zh.md +144 -15
  8. package/dist/llm/gen/mock.js +2 -0
  9. package/dist/llm/kernel-driver/drive.js +84 -16
  10. package/dist/llm/kernel-driver/flow.js +375 -100
  11. package/dist/llm/kernel-driver/loop.js +85 -46
  12. package/dist/llm/kernel-driver/reply-guidance.js +0 -3
  13. package/dist/llm/kernel-driver/tellask-special.d.ts +1 -0
  14. package/dist/llm/kernel-driver/tellask-special.js +3 -0
  15. package/dist/llm/kernel-driver/types.d.ts +10 -5
  16. package/dist/persistence.d.ts +30 -1
  17. package/dist/persistence.js +186 -4
  18. package/dist/runtime/driver-messages.d.ts +1 -0
  19. package/dist/runtime/driver-messages.js +7 -2
  20. package/dist/server/websocket-handler.d.ts +14 -0
  21. package/dist/server/websocket-handler.js +42 -3
  22. package/package.json +4 -4
  23. package/webapp/dist/assets/{_basePickBy-DBvh4H3k.js → _basePickBy-ZLV93S3E.js} +3 -3
  24. package/webapp/dist/assets/{_basePickBy-DBvh4H3k.js.map → _basePickBy-ZLV93S3E.js.map} +1 -1
  25. package/webapp/dist/assets/{_baseUniq-CQmc9B-o.js → _baseUniq-D0wSOJ06.js} +2 -2
  26. package/webapp/dist/assets/{_baseUniq-CQmc9B-o.js.map → _baseUniq-D0wSOJ06.js.map} +1 -1
  27. package/webapp/dist/assets/{arc-DfLiOX_4.js → arc-BHclbMTS.js} +2 -2
  28. package/webapp/dist/assets/{arc-DfLiOX_4.js.map → arc-BHclbMTS.js.map} +1 -1
  29. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CaTVJ5ev.js → architectureDiagram-2XIMDMQ5-CK99gE_D.js} +7 -7
  30. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CaTVJ5ev.js.map → architectureDiagram-2XIMDMQ5-CK99gE_D.js.map} +1 -1
  31. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-DlmAtUca.js → blockDiagram-WCTKOSBZ-fE5MBTEU.js} +7 -7
  32. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-DlmAtUca.js.map → blockDiagram-WCTKOSBZ-fE5MBTEU.js.map} +1 -1
  33. package/webapp/dist/assets/{c4Diagram-IC4MRINW-CNHKD5Sl.js → c4Diagram-IC4MRINW-BSLyPyoU.js} +3 -3
  34. package/webapp/dist/assets/{c4Diagram-IC4MRINW-CNHKD5Sl.js.map → c4Diagram-IC4MRINW-BSLyPyoU.js.map} +1 -1
  35. package/webapp/dist/assets/{channel-BTWhZYd5.js → channel-DSvMpp-a.js} +2 -2
  36. package/webapp/dist/assets/{channel-BTWhZYd5.js.map → channel-DSvMpp-a.js.map} +1 -1
  37. package/webapp/dist/assets/{chunk-4BX2VUAB-CV1n0Uhy.js → chunk-4BX2VUAB-OXEX170k.js} +2 -2
  38. package/webapp/dist/assets/{chunk-4BX2VUAB-CV1n0Uhy.js.map → chunk-4BX2VUAB-OXEX170k.js.map} +1 -1
  39. package/webapp/dist/assets/{chunk-55IACEB6-C5r77i_p.js → chunk-55IACEB6-BFQ_spQD.js} +2 -2
  40. package/webapp/dist/assets/{chunk-55IACEB6-C5r77i_p.js.map → chunk-55IACEB6-BFQ_spQD.js.map} +1 -1
  41. package/webapp/dist/assets/{chunk-FMBD7UC4-DJ1yHxrH.js → chunk-FMBD7UC4-CbQ2BBPs.js} +2 -2
  42. package/webapp/dist/assets/{chunk-FMBD7UC4-DJ1yHxrH.js.map → chunk-FMBD7UC4-CbQ2BBPs.js.map} +1 -1
  43. package/webapp/dist/assets/{chunk-JSJVCQXG-Ahg9hCCm.js → chunk-JSJVCQXG-C4P1mjCL.js} +2 -2
  44. package/webapp/dist/assets/{chunk-JSJVCQXG-Ahg9hCCm.js.map → chunk-JSJVCQXG-C4P1mjCL.js.map} +1 -1
  45. package/webapp/dist/assets/{chunk-KX2RTZJC-qBrewKt0.js → chunk-KX2RTZJC-BMd-daMY.js} +2 -2
  46. package/webapp/dist/assets/{chunk-KX2RTZJC-qBrewKt0.js.map → chunk-KX2RTZJC-BMd-daMY.js.map} +1 -1
  47. package/webapp/dist/assets/{chunk-NQ4KR5QH-1lEdM6Wi.js → chunk-NQ4KR5QH-B_ZhWMXR.js} +4 -4
  48. package/webapp/dist/assets/{chunk-NQ4KR5QH-1lEdM6Wi.js.map → chunk-NQ4KR5QH-B_ZhWMXR.js.map} +1 -1
  49. package/webapp/dist/assets/{chunk-QZHKN3VN-ChVR749G.js → chunk-QZHKN3VN-Cbf92xIw.js} +2 -2
  50. package/webapp/dist/assets/{chunk-QZHKN3VN-ChVR749G.js.map → chunk-QZHKN3VN-Cbf92xIw.js.map} +1 -1
  51. package/webapp/dist/assets/{chunk-WL4C6EOR-BAUXgk0K.js → chunk-WL4C6EOR-PtH-blkK.js} +6 -6
  52. package/webapp/dist/assets/{chunk-WL4C6EOR-BAUXgk0K.js.map → chunk-WL4C6EOR-PtH-blkK.js.map} +1 -1
  53. package/webapp/dist/assets/{classDiagram-VBA2DB6C-DlqyhKve.js → classDiagram-VBA2DB6C-Dc3ncaD0.js} +7 -7
  54. package/webapp/dist/assets/{classDiagram-VBA2DB6C-DlqyhKve.js.map → classDiagram-VBA2DB6C-Dc3ncaD0.js.map} +1 -1
  55. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-DlqyhKve.js → classDiagram-v2-RAHNMMFH-Dc3ncaD0.js} +7 -7
  56. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-DlqyhKve.js.map → classDiagram-v2-RAHNMMFH-Dc3ncaD0.js.map} +1 -1
  57. package/webapp/dist/assets/{clone-BFiIqUsc.js → clone-E9Ad85BC.js} +2 -2
  58. package/webapp/dist/assets/{clone-BFiIqUsc.js.map → clone-E9Ad85BC.js.map} +1 -1
  59. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-JYvhtd6J.js → cose-bilkent-S5V4N54A-B-nj0o74.js} +2 -2
  60. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-JYvhtd6J.js.map → cose-bilkent-S5V4N54A-B-nj0o74.js.map} +1 -1
  61. package/webapp/dist/assets/{dagre-KLK3FWXG-CCGcQh6w.js → dagre-KLK3FWXG-CyJYNIbm.js} +7 -7
  62. package/webapp/dist/assets/{dagre-KLK3FWXG-CCGcQh6w.js.map → dagre-KLK3FWXG-CyJYNIbm.js.map} +1 -1
  63. package/webapp/dist/assets/{diagram-E7M64L7V-BXC4AxAd.js → diagram-E7M64L7V-C8eweQ7b.js} +8 -8
  64. package/webapp/dist/assets/{diagram-E7M64L7V-BXC4AxAd.js.map → diagram-E7M64L7V-C8eweQ7b.js.map} +1 -1
  65. package/webapp/dist/assets/{diagram-IFDJBPK2-B--Sb3XT.js → diagram-IFDJBPK2-DMdygRl0.js} +7 -7
  66. package/webapp/dist/assets/{diagram-IFDJBPK2-B--Sb3XT.js.map → diagram-IFDJBPK2-DMdygRl0.js.map} +1 -1
  67. package/webapp/dist/assets/{diagram-P4PSJMXO-CVqgtrh3.js → diagram-P4PSJMXO-BQDZHb0a.js} +7 -7
  68. package/webapp/dist/assets/{diagram-P4PSJMXO-CVqgtrh3.js.map → diagram-P4PSJMXO-BQDZHb0a.js.map} +1 -1
  69. package/webapp/dist/assets/{erDiagram-INFDFZHY-BniHaRTt.js → erDiagram-INFDFZHY-C1HaXN6E.js} +5 -5
  70. package/webapp/dist/assets/{erDiagram-INFDFZHY-BniHaRTt.js.map → erDiagram-INFDFZHY-C1HaXN6E.js.map} +1 -1
  71. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-wLKFBWTR.js → flowDiagram-PKNHOUZH-24nNqQyo.js} +7 -7
  72. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-wLKFBWTR.js.map → flowDiagram-PKNHOUZH-24nNqQyo.js.map} +1 -1
  73. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-DrptcitZ.js → ganttDiagram-A5KZAMGK-BWPOFaLV.js} +3 -3
  74. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-DrptcitZ.js.map → ganttDiagram-A5KZAMGK-BWPOFaLV.js.map} +1 -1
  75. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-C6l5aP44.js → gitGraphDiagram-K3NZZRJ6-D7_L-p_Y.js} +8 -8
  76. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-C6l5aP44.js.map → gitGraphDiagram-K3NZZRJ6-D7_L-p_Y.js.map} +1 -1
  77. package/webapp/dist/assets/{graph-DXuQGYQN.js → graph-OHu4dL2n.js} +3 -3
  78. package/webapp/dist/assets/{graph-DXuQGYQN.js.map → graph-OHu4dL2n.js.map} +1 -1
  79. package/webapp/dist/assets/{index-DuQ1OCMG.js → index-CDCDAfqP.js} +165 -67
  80. package/webapp/dist/assets/{index-DuQ1OCMG.js.map → index-CDCDAfqP.js.map} +1 -1
  81. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-BbleCSjW.js → infoDiagram-LFFYTUFH-CvaBM5j6.js} +6 -6
  82. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-BbleCSjW.js.map → infoDiagram-LFFYTUFH-CvaBM5j6.js.map} +1 -1
  83. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-DmV-LZuk.js → ishikawaDiagram-PHBUUO56-DB1l2Uue.js} +2 -2
  84. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-DmV-LZuk.js.map → ishikawaDiagram-PHBUUO56-DB1l2Uue.js.map} +1 -1
  85. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-D3sQFfac.js → journeyDiagram-4ABVD52K-TQR6_teO.js} +5 -5
  86. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-D3sQFfac.js.map → journeyDiagram-4ABVD52K-TQR6_teO.js.map} +1 -1
  87. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-BEeBlBtM.js → kanban-definition-K7BYSVSG-B-BOuC-U.js} +3 -3
  88. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-BEeBlBtM.js.map → kanban-definition-K7BYSVSG-B-BOuC-U.js.map} +1 -1
  89. package/webapp/dist/assets/{layout-g7jjgV-W.js → layout-B8yqIqbx.js} +5 -5
  90. package/webapp/dist/assets/{layout-g7jjgV-W.js.map → layout-B8yqIqbx.js.map} +1 -1
  91. package/webapp/dist/assets/{linear-D_X91Yek.js → linear-CoLfiZKK.js} +2 -2
  92. package/webapp/dist/assets/{linear-D_X91Yek.js.map → linear-CoLfiZKK.js.map} +1 -1
  93. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-NkMAIgRY.js → mindmap-definition-YRQLILUH-P70BMIHI.js} +4 -4
  94. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-NkMAIgRY.js.map → mindmap-definition-YRQLILUH-P70BMIHI.js.map} +1 -1
  95. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-Z6E4GEPC.js → pieDiagram-SKSYHLDU-DsS_4dTB.js} +8 -8
  96. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-Z6E4GEPC.js.map → pieDiagram-SKSYHLDU-DsS_4dTB.js.map} +1 -1
  97. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-BH8hfOuU.js → quadrantDiagram-337W2JSQ-DoM9PEq-.js} +3 -3
  98. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-BH8hfOuU.js.map → quadrantDiagram-337W2JSQ-DoM9PEq-.js.map} +1 -1
  99. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-DRJkvoQI.js → requirementDiagram-Z7DCOOCP-Bn3lYMMI.js} +4 -4
  100. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-DRJkvoQI.js.map → requirementDiagram-Z7DCOOCP-Bn3lYMMI.js.map} +1 -1
  101. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-D2VwjtJo.js → sankeyDiagram-WA2Y5GQK-97kCegRT.js} +2 -2
  102. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-D2VwjtJo.js.map → sankeyDiagram-WA2Y5GQK-97kCegRT.js.map} +1 -1
  103. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-Cq-gEPOw.js → sequenceDiagram-2WXFIKYE-DXqjQjf6.js} +4 -4
  104. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-Cq-gEPOw.js.map → sequenceDiagram-2WXFIKYE-DXqjQjf6.js.map} +1 -1
  105. package/webapp/dist/assets/{stateDiagram-RAJIS63D-CFM8Jqke.js → stateDiagram-RAJIS63D-DQcTPKWP.js} +9 -9
  106. package/webapp/dist/assets/{stateDiagram-RAJIS63D-CFM8Jqke.js.map → stateDiagram-RAJIS63D-DQcTPKWP.js.map} +1 -1
  107. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-Dip5iGX_.js → stateDiagram-v2-FVOUBMTO-DHmxRVJn.js} +5 -5
  108. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-Dip5iGX_.js.map → stateDiagram-v2-FVOUBMTO-DHmxRVJn.js.map} +1 -1
  109. package/webapp/dist/assets/{timeline-definition-YZTLITO2-OI9JzMjX.js → timeline-definition-YZTLITO2-BlovQQ4B.js} +3 -3
  110. package/webapp/dist/assets/{timeline-definition-YZTLITO2-OI9JzMjX.js.map → timeline-definition-YZTLITO2-BlovQQ4B.js.map} +1 -1
  111. package/webapp/dist/assets/{treemap-KZPCXAKY-CtNF416A.js → treemap-KZPCXAKY-CGu93c9S.js} +5 -5
  112. package/webapp/dist/assets/{treemap-KZPCXAKY-CtNF416A.js.map → treemap-KZPCXAKY-CGu93c9S.js.map} +1 -1
  113. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-CjaPj4FZ.js → vennDiagram-LZ73GAT5-Do1jprrz.js} +2 -2
  114. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-CjaPj4FZ.js.map → vennDiagram-LZ73GAT5-Do1jprrz.js.map} +1 -1
  115. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-21mBt9iu.js → xychartDiagram-JWTSCODW-BKa1DxVq.js} +3 -3
  116. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-21mBt9iu.js.map → xychartDiagram-JWTSCODW-BKa1DxVq.js.map} +1 -1
  117. package/webapp/dist/index.html +1 -1
@@ -138,6 +138,40 @@ function buildInterruptedFuncResult(args) {
138
138
  genseq: args.callGenseq,
139
139
  };
140
140
  }
141
+ function sameDialogBusinessContinuation(left, right) {
142
+ if (left.kind !== right.kind)
143
+ return false;
144
+ switch (left.kind) {
145
+ case 'none':
146
+ return true;
147
+ case 'inter_dialog_reply': {
148
+ if (right.kind !== 'inter_dialog_reply')
149
+ return false;
150
+ return (sameTellaskReplyDirective(left.tellaskReplyDirective, right.tellaskReplyDirective) &&
151
+ sameDialogCalleeReplyTarget(left.calleeDialogReplyTarget, right.calleeDialogReplyTarget));
152
+ }
153
+ default: {
154
+ const _exhaustive = left;
155
+ throw new Error(`Unhandled business continuation kind: ${String(_exhaustive)}`);
156
+ }
157
+ }
158
+ }
159
+ function sameTellaskReplyDirective(left, right) {
160
+ return (left.expectedReplyCallName === right.expectedReplyCallName &&
161
+ left.targetDialogId === right.targetDialogId &&
162
+ left.targetCallId === right.targetCallId &&
163
+ left.tellaskContent === right.tellaskContent);
164
+ }
165
+ function sameDialogCalleeReplyTarget(left, right) {
166
+ if (left === undefined || right === undefined) {
167
+ return left === right;
168
+ }
169
+ return (left.callerDialogId === right.callerDialogId &&
170
+ left.callType === right.callType &&
171
+ left.callId === right.callId &&
172
+ left.callSiteCourse === right.callSiteCourse &&
173
+ left.callSiteGenseq === right.callSiteGenseq);
174
+ }
141
175
  function isFbrSideDialog(dlg) {
142
176
  return dlg instanceof dialog_1.SideDialog && dlg.assignmentFromAsker.callName === 'freshBootsReasoning';
143
177
  }
@@ -1171,6 +1205,7 @@ async function upsertImmediateFollowupTrigger(args) {
1171
1205
  genseq: (0, storage_1.toCallSiteGenseqNo)(genseq),
1172
1206
  },
1173
1207
  reasons,
1208
+ continuation: args.continuation,
1174
1209
  });
1175
1210
  }
1176
1211
  function shouldImmediatelyFollowUpSuccessfulToolResult(tool) {
@@ -1449,6 +1484,7 @@ async function executeFunctionRound(args) {
1449
1484
  immediateFollowupCallIds: [],
1450
1485
  immediateTellaskOutputCallIds: [],
1451
1486
  shouldStopAfterReplyTool: false,
1487
+ shouldStopAfterPendingTellaskWait: false,
1452
1488
  pairedMessages: [],
1453
1489
  tellaskToolOutputs: [],
1454
1490
  };
@@ -1558,6 +1594,7 @@ async function executeFunctionRound(args) {
1558
1594
  immediateFollowupCallIds,
1559
1595
  immediateTellaskOutputCallIds: tellaskRound.immediateTellaskOutputCallIds,
1560
1596
  shouldStopAfterReplyTool: tellaskRound.shouldStopAfterReplyTool,
1597
+ shouldStopAfterPendingTellaskWait: tellaskRound.shouldStopAfterPendingTellaskWait,
1561
1598
  pairedMessages,
1562
1599
  tellaskToolOutputs: [...tellaskRound.toolOutputs],
1563
1600
  };
@@ -1751,20 +1788,20 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
1751
1788
  const suppressDiligencePushForDrive = driveOptions?.suppressDiligencePush === true && dlg.disableDiligencePush;
1752
1789
  const abortSignal = (0, dialog_display_state_1.getActiveRunSignal)(dlg.id) ?? (0, dialog_display_state_1.createActiveRun)(dlg.id);
1753
1790
  let finalDisplayState;
1754
- let criticalUserInterjectionRuntimeGuide = driveOptions?.criticalUserInterjectionRuntimeGuide;
1755
1791
  let lastAssistantSayingContent = null;
1756
1792
  let lastAssistantSayingGenseq = null;
1757
1793
  let lastAssistantThinkingContent = null;
1758
1794
  let lastAssistantThinkingGenseq = null;
1759
1795
  let lastFunctionCallGenseq = null;
1760
1796
  let lastAssistantReplyTarget;
1797
+ let lastBusinessContinuation = { kind: 'none' };
1761
1798
  let fbrConclusion;
1762
1799
  let pubRemindersVer = dlg.remindersVer;
1763
1800
  let pendingPrompt = humanPrompt;
1764
1801
  let resolvingImmediateToolResultForUserPrompt = false;
1765
1802
  let resolvingImmediateToolResultUserPromptMsgId;
1766
- let criticalRemediationAppliedUserPromptMsgId = driveOptions?.criticalUserInterjectionRuntimeGuide !== undefined &&
1767
- humanPrompt?.origin === 'user'
1803
+ let criticalRemediationAppliedUserPromptMsgId = humanPrompt?.origin === 'user' &&
1804
+ (0, driver_messages_1.isAgentFacingCriticalUserInterjectionRemediationGuideContent)(humanPrompt.content)
1768
1805
  ? humanPrompt.msgId
1769
1806
  : undefined;
1770
1807
  let retryStoppedRecoveryPrompt;
@@ -1899,8 +1936,10 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
1899
1936
  snapshot,
1900
1937
  hadUserPromptThisGen: currentGenerationBelongsToUserPrompt,
1901
1938
  hadUserPromptInImmediateToolChain: currentGenerationBelongsToUserToolChain,
1902
- userPromptCriticalRemediationAlreadyApplied: criticalRemediationAppliedUserPromptMsgId !== undefined &&
1903
- criticalRemediationAppliedUserPromptMsgId === currentUserPromptMsgId,
1939
+ userPromptCriticalRemediationAlreadyApplied: (criticalRemediationAppliedUserPromptMsgId !== undefined &&
1940
+ criticalRemediationAppliedUserPromptMsgId === currentUserPromptMsgId) ||
1941
+ (currentPendingPrompt?.origin === 'user' &&
1942
+ (0, driver_messages_1.isAgentFacingCriticalUserInterjectionRemediationGuideContent)(currentPendingPrompt.content)),
1904
1943
  canInjectPromptThisGen: !hasQueuedUpNext,
1905
1944
  cautionRemediationCadenceGenerations,
1906
1945
  criticalCountdownRemaining,
@@ -1923,13 +1962,13 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
1923
1962
  skipTaskdocForThisDrive = false;
1924
1963
  }
1925
1964
  else if (healthDecision.reason === 'critical_user_prompt_remediation') {
1926
- const language = (0, work_language_1.getWorkLanguage)();
1927
- const dialogScope = dlg instanceof dialog_1.SideDialog ? 'sideDialog' : 'mainDialog';
1928
- criticalUserInterjectionRuntimeGuide =
1929
- (0, driver_messages_1.formatAgentFacingCriticalUserInterjectionRemediationGuide)(language, {
1930
- dialogScope,
1931
- promptsRemainingAfterThis: (0, context_health_1.consumeCriticalCountdown)(dlg.id.key()),
1965
+ if (currentPendingPrompt === undefined ||
1966
+ !(0, driver_messages_1.isAgentFacingCriticalUserInterjectionRemediationGuideContent)(currentPendingPrompt.content)) {
1967
+ log_1.log.warn('kernel-driver observed unwrapped critical user prompt; critical user interjection wrapping must happen at ingress', undefined, {
1968
+ dialogId: dlg.id.valueOf(),
1969
+ msgId: currentUserPromptMsgId ?? null,
1932
1970
  });
1971
+ }
1933
1972
  criticalRemediationAppliedUserPromptMsgId = currentUserPromptMsgId;
1934
1973
  }
1935
1974
  else if (!hasQueuedUpNext) {
@@ -1962,6 +2001,16 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
1962
2001
  let llmGenModelForGen = model;
1963
2002
  const currentPrompt = pendingPrompt;
1964
2003
  const currentReplyTarget = currentPrompt?.calleeDialogReplyTarget;
2004
+ let currentBusinessContinuation = driveOptions?.businessContinuation ?? { kind: 'none' };
2005
+ if (currentPrompt?.tellaskReplyDirective !== undefined) {
2006
+ currentBusinessContinuation = {
2007
+ kind: 'inter_dialog_reply',
2008
+ tellaskReplyDirective: currentPrompt.tellaskReplyDirective,
2009
+ ...(currentPrompt.calleeDialogReplyTarget === undefined
2010
+ ? {}
2011
+ : { calleeDialogReplyTarget: currentPrompt.calleeDialogReplyTarget }),
2012
+ };
2013
+ }
1965
2014
  const currentFbrState = await loadDialogFbrState(dlg);
1966
2015
  let currentRuntimeGuideMsg;
1967
2016
  const currentPromptFromFbrState = currentPrompt !== undefined &&
@@ -1983,12 +2032,20 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
1983
2032
  break;
1984
2033
  }
1985
2034
  }
1986
- await dlg.notifyGeneratingStart(currentPrompt?.msgId);
1987
- try {
1988
- if (criticalUserInterjectionRuntimeGuide !== undefined) {
1989
- await persistAndEmitRuntimeGuide(dlg, criticalUserInterjectionRuntimeGuide);
1990
- criticalUserInterjectionRuntimeGuide = undefined;
2035
+ const acceptedTriggers = await dlg.notifyGeneratingStart(currentPrompt?.msgId);
2036
+ for (const trigger of acceptedTriggers) {
2037
+ if (trigger.kind === 'followup' && trigger.continuation !== undefined) {
2038
+ if (currentBusinessContinuation.kind !== 'none' &&
2039
+ !sameDialogBusinessContinuation(currentBusinessContinuation, trigger.continuation)) {
2040
+ throw new Error(`Business continuation invariant violation: conflicting accepted followup continuations ` +
2041
+ `(dialog=${dlg.id.valueOf()}, course=${String(dlg.activeGenCourseOrUndefined ?? dlg.currentCourse)}, ` +
2042
+ `genseq=${String(dlg.activeGenSeq)}, triggerId=${trigger.triggerId})`);
2043
+ }
2044
+ currentBusinessContinuation = trigger.continuation;
1991
2045
  }
2046
+ }
2047
+ lastBusinessContinuation = currentBusinessContinuation;
2048
+ try {
1992
2049
  if (currentPrompt) {
1993
2050
  if (currentPrompt.skipTaskdoc === true) {
1994
2051
  skipTaskdocForThisDrive = true;
@@ -2680,6 +2737,7 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2680
2737
  lastAssistantThinkingGenseq,
2681
2738
  lastFunctionCallGenseq,
2682
2739
  lastAssistantReplyTarget,
2740
+ lastBusinessContinuation,
2683
2741
  };
2684
2742
  }
2685
2743
  const nextFbrState = (0, fbr_1.advanceFbrState)(persistedFbrState);
@@ -2832,6 +2890,14 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2832
2890
  routed.hasImmediateTellaskOutputs ||
2833
2891
  invalidFuncCallCount > 0;
2834
2892
  if (!shouldStartImmediatePostToolGeneration) {
2893
+ if (routed.shouldStopAfterPendingTellaskWait) {
2894
+ log_1.log.debug('kernel-driver stop round after pending tellask wait boundary', undefined, {
2895
+ dialogId: dlg.id.valueOf(),
2896
+ rootId: dlg.id.rootId,
2897
+ selfId: dlg.id.selfId,
2898
+ });
2899
+ break;
2900
+ }
2835
2901
  const healthFirst = await maybeContinueWithHealthPromptBeforeDiligence({
2836
2902
  dlg,
2837
2903
  providerCfg,
@@ -2861,6 +2927,7 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2861
2927
  routed,
2862
2928
  invalidFuncCallCount,
2863
2929
  streamedFuncCalls,
2930
+ continuation: currentBusinessContinuation,
2864
2931
  });
2865
2932
  resolvingImmediateToolResultForUserPrompt =
2866
2933
  currentGenerationBelongsToUserPrompt ||
@@ -3013,6 +3080,7 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
3013
3080
  lastAssistantThinkingGenseq,
3014
3081
  lastFunctionCallGenseq,
3015
3082
  lastAssistantReplyTarget,
3083
+ lastBusinessContinuation,
3016
3084
  fbrConclusion,
3017
3085
  };
3018
3086
  }