dominds 1.25.6 → 1.25.7

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 (156) hide show
  1. package/dist/dialog-display-state.js +99 -29
  2. package/dist/dialog-fork.js +53 -20
  3. package/dist/llm/kernel-driver/drive.js +253 -4
  4. package/dist/llm/kernel-driver/flow.js +13 -15
  5. package/dist/llm/kernel-driver/sideDialog.js +13 -0
  6. package/dist/persistence.js +18 -17
  7. package/dist/server/dominds-self-update.js +312 -22
  8. package/dist/server/websocket-handler.js +41 -4
  9. package/dist/tools/os.d.ts +1 -0
  10. package/dist/tools/os.js +19 -1
  11. package/package.json +3 -3
  12. package/webapp/dist/assets/{_basePickBy-fZ31r-iF.js → _basePickBy-Y5Q2L95x.js} +3 -3
  13. package/webapp/dist/assets/_basePickBy-Y5Q2L95x.js.map +1 -0
  14. package/webapp/dist/assets/{_baseUniq-CI1keLoL.js → _baseUniq-Cj3ro8Ri.js} +2 -2
  15. package/webapp/dist/assets/_baseUniq-Cj3ro8Ri.js.map +1 -0
  16. package/webapp/dist/assets/{arc-1NeUqzoV.js → arc-Bz9VfJlg.js} +2 -2
  17. package/webapp/dist/assets/arc-Bz9VfJlg.js.map +1 -0
  18. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-C7SdzYIh.js → architectureDiagram-VXUJARFQ-Ce6_zDEY.js} +8 -26
  19. package/webapp/dist/assets/architectureDiagram-VXUJARFQ-Ce6_zDEY.js.map +1 -0
  20. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-Cmpu3kIy.js → blockDiagram-VD42YOAC-DIEKjBVU.js} +170 -187
  21. package/webapp/dist/assets/blockDiagram-VD42YOAC-DIEKjBVU.js.map +1 -0
  22. package/webapp/dist/assets/{c4Diagram-IC4MRINW-ChGTHIor.js → c4Diagram-YG6GDRKO-CQpAPdOt.js} +4 -4
  23. package/webapp/dist/assets/c4Diagram-YG6GDRKO-CQpAPdOt.js.map +1 -0
  24. package/webapp/dist/assets/{channel-ndS-XTQQ.js → channel-C_7bziVU.js} +2 -2
  25. package/webapp/dist/assets/channel-C_7bziVU.js.map +1 -0
  26. package/webapp/dist/assets/{chunk-4BX2VUAB-Cw5FtBd_.js → chunk-4BX2VUAB-CI07YP8x.js} +2 -2
  27. package/webapp/dist/assets/chunk-4BX2VUAB-CI07YP8x.js.map +1 -0
  28. package/webapp/dist/assets/{chunk-55IACEB6-D3G71JdA.js → chunk-55IACEB6-CH-ZnQdW.js} +2 -2
  29. package/webapp/dist/assets/chunk-55IACEB6-CH-ZnQdW.js.map +1 -0
  30. package/webapp/dist/assets/{chunk-WL4C6EOR-CIwdSg5q.js → chunk-B4BG7PRW-B8XZmRWD.js} +121 -171
  31. package/webapp/dist/assets/chunk-B4BG7PRW-B8XZmRWD.js.map +1 -0
  32. package/webapp/dist/assets/{chunk-NQ4KR5QH-CGEMYTch.js → chunk-DI55MBZ5-BTJEMG8W.js} +7 -9
  33. package/webapp/dist/assets/chunk-DI55MBZ5-BTJEMG8W.js.map +1 -0
  34. package/webapp/dist/assets/{chunk-FMBD7UC4-BcugPyy7.js → chunk-FMBD7UC4-u7Ho3qNZ.js} +2 -2
  35. package/webapp/dist/assets/chunk-FMBD7UC4-u7Ho3qNZ.js.map +1 -0
  36. package/webapp/dist/assets/{chunk-KX2RTZJC-BQ42xd4s.js → chunk-QN33PNHL-C-7kvetv.js} +2 -2
  37. package/webapp/dist/assets/chunk-QN33PNHL-C-7kvetv.js.map +1 -0
  38. package/webapp/dist/assets/{chunk-QZHKN3VN-CxNTVm5w.js → chunk-QZHKN3VN-Cutz7csQ.js} +2 -2
  39. package/webapp/dist/assets/chunk-QZHKN3VN-Cutz7csQ.js.map +1 -0
  40. package/webapp/dist/assets/{chunk-JSJVCQXG-DvuxYuNq.js → chunk-TZMSLE5B-b_LZteUW.js} +6 -14
  41. package/webapp/dist/assets/chunk-TZMSLE5B-b_LZteUW.js.map +1 -0
  42. package/webapp/dist/assets/{classDiagram-VBA2DB6C-Dl05PJAP.js → classDiagram-2ON5EDUG-CCGe8-bu.js} +6 -7
  43. package/webapp/dist/assets/classDiagram-2ON5EDUG-CCGe8-bu.js.map +1 -0
  44. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-Dl05PJAP.js → classDiagram-v2-WZHVMYZB-CCGe8-bu.js} +6 -7
  45. package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-CCGe8-bu.js.map +1 -0
  46. package/webapp/dist/assets/{clone-KCj1-QMr.js → clone-CEpSMVek.js} +2 -2
  47. package/webapp/dist/assets/clone-CEpSMVek.js.map +1 -0
  48. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BttciCz5.js → cose-bilkent-S5V4N54A-JEt2Ncxk.js} +2 -2
  49. package/webapp/dist/assets/cose-bilkent-S5V4N54A-JEt2Ncxk.js.map +1 -0
  50. package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
  51. package/webapp/dist/assets/{dagre-KLK3FWXG-Dm5yE9k2.js → dagre-6UL2VRFP-dy6U1rpE.js} +7 -7
  52. package/webapp/dist/assets/dagre-6UL2VRFP-dy6U1rpE.js.map +1 -0
  53. package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
  54. package/webapp/dist/assets/{diagram-E7M64L7V-C80ZsiBG.js → diagram-PSM6KHXK-u1RaCst_.js} +10 -10
  55. package/webapp/dist/assets/diagram-PSM6KHXK-u1RaCst_.js.map +1 -0
  56. package/webapp/dist/assets/{diagram-IFDJBPK2-CqKidH4n.js → diagram-QEK2KX5R-Bm297BXQ.js} +8 -9
  57. package/webapp/dist/assets/diagram-QEK2KX5R-Bm297BXQ.js.map +1 -0
  58. package/webapp/dist/assets/{diagram-P4PSJMXO-EHVjfzUV.js → diagram-S2PKOQOG-B9Z57WnU.js} +8 -8
  59. package/webapp/dist/assets/diagram-S2PKOQOG-B9Z57WnU.js.map +1 -0
  60. package/webapp/dist/assets/{erDiagram-INFDFZHY-7MrtsOIt.js → erDiagram-Q2GNP2WA-CyXAp9Ik.js} +75 -96
  61. package/webapp/dist/assets/erDiagram-Q2GNP2WA-CyXAp9Ik.js.map +1 -0
  62. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-D6hXqCy7.js → flowDiagram-NV44I4VS-ONR9JQsN.js} +81 -98
  63. package/webapp/dist/assets/flowDiagram-NV44I4VS-ONR9JQsN.js.map +1 -0
  64. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-DLO0XCDk.js → ganttDiagram-JELNMOA3-Coi5jLKz.js} +3 -28
  65. package/webapp/dist/assets/ganttDiagram-JELNMOA3-Coi5jLKz.js.map +1 -0
  66. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-BmVD_nQP.js → gitGraphDiagram-V2S2FVAM-BoLPKg9P.js} +46 -38
  67. package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-BoLPKg9P.js.map +1 -0
  68. package/webapp/dist/assets/graph-DLwD58eC.js +425 -0
  69. package/webapp/dist/assets/graph-DLwD58eC.js.map +1 -0
  70. package/webapp/dist/assets/{index-BXjq-k48.js → index-HwgQoWbn.js} +1118 -1041
  71. package/webapp/dist/assets/{index-BXjq-k48.js.map → index-HwgQoWbn.js.map} +1 -1
  72. package/webapp/dist/assets/{index-BQoNJEGT.css → index-yycTJNYb.css} +1 -1
  73. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-D2fqM9Fn.js → infoDiagram-HS3SLOUP-BpEpEjG2.js} +7 -7
  74. package/webapp/dist/assets/infoDiagram-HS3SLOUP-BpEpEjG2.js.map +1 -0
  75. package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
  76. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-DmbA52J-.js → journeyDiagram-XKPGCS4Q-C2HNBnMQ.js} +5 -5
  77. package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-C2HNBnMQ.js.map +1 -0
  78. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-DRUw-P-d.js → kanban-definition-3W4ZIXB7-DcELha9W.js} +3 -5
  79. package/webapp/dist/assets/kanban-definition-3W4ZIXB7-DcELha9W.js.map +1 -0
  80. package/webapp/dist/assets/{layout-BUoHHXzn.js → layout-Cyg7MRlM.js} +5 -5
  81. package/webapp/dist/assets/layout-Cyg7MRlM.js.map +1 -0
  82. package/webapp/dist/assets/{linear-xVSAq8rI.js → linear-pOIWL8hY.js} +2 -2
  83. package/webapp/dist/assets/linear-pOIWL8hY.js.map +1 -0
  84. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-BcajbGmW.js → mindmap-definition-VGOIOE7T-BTyvfLY3.js} +5 -7
  85. package/webapp/dist/assets/mindmap-definition-VGOIOE7T-BTyvfLY3.js.map +1 -0
  86. package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
  87. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-Bu8kmCW6.js → pieDiagram-ADFJNKIX-D1CwcmEb.js} +8 -8
  88. package/webapp/dist/assets/pieDiagram-ADFJNKIX-D1CwcmEb.js.map +1 -0
  89. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-DIBSNUGa.js → quadrantDiagram-AYHSOK5B-DdlItwqV.js} +3 -3
  90. package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-DdlItwqV.js.map +1 -0
  91. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-CkrDkbBt.js → requirementDiagram-UZGBJVZJ-B6AntBtK.js} +6 -16
  92. package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-B6AntBtK.js.map +1 -0
  93. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-BZ-1R8pc.js → sankeyDiagram-TZEHDZUN-Cb1skLgE.js} +2 -2
  94. package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-Cb1skLgE.js.map +1 -0
  95. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DYoNARdO.js → sequenceDiagram-WL72ISMW-BXtnapRV.js} +201 -601
  96. package/webapp/dist/assets/sequenceDiagram-WL72ISMW-BXtnapRV.js.map +1 -0
  97. package/webapp/dist/assets/{stateDiagram-RAJIS63D-D9v19nvh.js → stateDiagram-FKZM4ZOC-BEJSYJxc.js} +9 -9
  98. package/webapp/dist/assets/stateDiagram-FKZM4ZOC-BEJSYJxc.js.map +1 -0
  99. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-BYw5ZwtH.js → stateDiagram-v2-4FDKWEC3-YlQ0hGcy.js} +5 -5
  100. package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3-YlQ0hGcy.js.map +1 -0
  101. package/webapp/dist/assets/{timeline-definition-YZTLITO2-BT10dRIJ.js → timeline-definition-IT6M3QCI-BHzyY6Ip.js} +3 -3
  102. package/webapp/dist/assets/timeline-definition-IT6M3QCI-BHzyY6Ip.js.map +1 -0
  103. package/webapp/dist/assets/{treemap-KZPCXAKY-yPoPC5hc.js → treemap-GDKQZRPO-BMYh8Nea.js} +24 -37
  104. package/webapp/dist/assets/treemap-GDKQZRPO-BMYh8Nea.js.map +1 -0
  105. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-BWLUzo9S.js → xychartDiagram-PRI3JC2R-C5vczZ0B.js} +4 -4
  106. package/webapp/dist/assets/xychartDiagram-PRI3JC2R-C5vczZ0B.js.map +1 -0
  107. package/webapp/dist/index.html +2 -2
  108. package/webapp/dist/assets/_basePickBy-fZ31r-iF.js.map +0 -1
  109. package/webapp/dist/assets/_baseUniq-CI1keLoL.js.map +0 -1
  110. package/webapp/dist/assets/arc-1NeUqzoV.js.map +0 -1
  111. package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-C7SdzYIh.js.map +0 -1
  112. package/webapp/dist/assets/blockDiagram-WCTKOSBZ-Cmpu3kIy.js.map +0 -1
  113. package/webapp/dist/assets/c4Diagram-IC4MRINW-ChGTHIor.js.map +0 -1
  114. package/webapp/dist/assets/channel-ndS-XTQQ.js.map +0 -1
  115. package/webapp/dist/assets/chunk-4BX2VUAB-Cw5FtBd_.js.map +0 -1
  116. package/webapp/dist/assets/chunk-55IACEB6-D3G71JdA.js.map +0 -1
  117. package/webapp/dist/assets/chunk-FMBD7UC4-BcugPyy7.js.map +0 -1
  118. package/webapp/dist/assets/chunk-JSJVCQXG-DvuxYuNq.js.map +0 -1
  119. package/webapp/dist/assets/chunk-KX2RTZJC-BQ42xd4s.js.map +0 -1
  120. package/webapp/dist/assets/chunk-NQ4KR5QH-CGEMYTch.js.map +0 -1
  121. package/webapp/dist/assets/chunk-QZHKN3VN-CxNTVm5w.js.map +0 -1
  122. package/webapp/dist/assets/chunk-WL4C6EOR-CIwdSg5q.js.map +0 -1
  123. package/webapp/dist/assets/classDiagram-VBA2DB6C-Dl05PJAP.js.map +0 -1
  124. package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-Dl05PJAP.js.map +0 -1
  125. package/webapp/dist/assets/clone-KCj1-QMr.js.map +0 -1
  126. package/webapp/dist/assets/cose-bilkent-S5V4N54A-BttciCz5.js.map +0 -1
  127. package/webapp/dist/assets/dagre-KLK3FWXG-Dm5yE9k2.js.map +0 -1
  128. package/webapp/dist/assets/diagram-E7M64L7V-C80ZsiBG.js.map +0 -1
  129. package/webapp/dist/assets/diagram-IFDJBPK2-CqKidH4n.js.map +0 -1
  130. package/webapp/dist/assets/diagram-P4PSJMXO-EHVjfzUV.js.map +0 -1
  131. package/webapp/dist/assets/erDiagram-INFDFZHY-7MrtsOIt.js.map +0 -1
  132. package/webapp/dist/assets/flowDiagram-PKNHOUZH-D6hXqCy7.js.map +0 -1
  133. package/webapp/dist/assets/ganttDiagram-A5KZAMGK-DLO0XCDk.js.map +0 -1
  134. package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-BmVD_nQP.js.map +0 -1
  135. package/webapp/dist/assets/graph-DQTj8O0Q.js +0 -782
  136. package/webapp/dist/assets/graph-DQTj8O0Q.js.map +0 -1
  137. package/webapp/dist/assets/infoDiagram-LFFYTUFH-D2fqM9Fn.js.map +0 -1
  138. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-kp7lB6-f.js +0 -966
  139. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-kp7lB6-f.js.map +0 -1
  140. package/webapp/dist/assets/journeyDiagram-4ABVD52K-DmbA52J-.js.map +0 -1
  141. package/webapp/dist/assets/kanban-definition-K7BYSVSG-DRUw-P-d.js.map +0 -1
  142. package/webapp/dist/assets/layout-BUoHHXzn.js.map +0 -1
  143. package/webapp/dist/assets/linear-xVSAq8rI.js.map +0 -1
  144. package/webapp/dist/assets/mindmap-definition-YRQLILUH-BcajbGmW.js.map +0 -1
  145. package/webapp/dist/assets/pieDiagram-SKSYHLDU-Bu8kmCW6.js.map +0 -1
  146. package/webapp/dist/assets/quadrantDiagram-337W2JSQ-DIBSNUGa.js.map +0 -1
  147. package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-CkrDkbBt.js.map +0 -1
  148. package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-BZ-1R8pc.js.map +0 -1
  149. package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-DYoNARdO.js.map +0 -1
  150. package/webapp/dist/assets/stateDiagram-RAJIS63D-D9v19nvh.js.map +0 -1
  151. package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-BYw5ZwtH.js.map +0 -1
  152. package/webapp/dist/assets/timeline-definition-YZTLITO2-BT10dRIJ.js.map +0 -1
  153. package/webapp/dist/assets/treemap-KZPCXAKY-yPoPC5hc.js.map +0 -1
  154. package/webapp/dist/assets/vennDiagram-LZ73GAT5-tryg3OaY.js +0 -2487
  155. package/webapp/dist/assets/vennDiagram-LZ73GAT5-tryg3OaY.js.map +0 -1
  156. package/webapp/dist/assets/xychartDiagram-JWTSCODW-BWLUzo9S.js.map +0 -1
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.driveDialogStreamCore = driveDialogStreamCore;
4
7
  const diligence_1 = require("@longrun-ai/kernel/diligence");
5
8
  const storage_1 = require("@longrun-ai/kernel/types/storage");
6
9
  const id_1 = require("@longrun-ai/kernel/utils/id");
7
10
  const time_1 = require("@longrun-ai/kernel/utils/time");
11
+ const promises_1 = __importDefault(require("node:fs/promises"));
12
+ const node_path_1 = __importDefault(require("node:path"));
8
13
  const dialog_1 = require("../../dialog");
9
14
  const dialog_display_state_1 = require("../../dialog-display-state");
10
15
  const dialog_interruption_1 = require("../../dialog-interruption");
@@ -1226,6 +1231,167 @@ async function persistInvalidFuncCallRuntimeGuide(args) {
1226
1231
  function resolveFuncToolFollowupMode(tool) {
1227
1232
  return tool?.followupMode ?? 'immediate';
1228
1233
  }
1234
+ function summarizeRoutedFunctionResult(routed) {
1235
+ return {
1236
+ hasImmediateFollowupToolCalls: routed.hasImmediateFollowupToolCalls,
1237
+ hasImmediateTellaskOutputs: routed.hasImmediateTellaskOutputs,
1238
+ immediateFollowupCallIds: routed.immediateFollowupCallIds,
1239
+ immediateTellaskOutputCallIds: routed.immediateTellaskOutputCallIds,
1240
+ shouldStopAfterReplyTool: routed.shouldStopAfterReplyTool,
1241
+ shouldStopAfterPendingTellaskWait: routed.shouldStopAfterPendingTellaskWait,
1242
+ pairedMessageTypes: routed.pairedMessages.map((msg) => msg.type),
1243
+ tellaskToolOutputTypes: routed.tellaskToolOutputs.map((msg) => msg.type),
1244
+ };
1245
+ }
1246
+ function buildToolRoundStopDiagnostics(args) {
1247
+ return {
1248
+ course: args.dlg.activeGenCourseOrUndefined ?? args.dlg.currentCourse,
1249
+ genseq: args.dlg.activeGenSeq,
1250
+ callIds: args.streamedFuncCalls.map((call) => call.id),
1251
+ callNames: args.streamedFuncCalls.map((call) => call.name),
1252
+ lastBusinessContinuation: args.lastBusinessContinuation,
1253
+ routed: summarizeRoutedFunctionResult(args.routed),
1254
+ decision: {
1255
+ shouldStartImmediatePostToolGeneration: args.shouldStartImmediatePostToolGeneration,
1256
+ stopReason: args.stopReason,
1257
+ ...(args.suspensionAfterToolRound === undefined
1258
+ ? {}
1259
+ : { suspensionAfterToolRound: args.suspensionAfterToolRound }),
1260
+ ...(args.queuedPromptAfterToolRound === undefined
1261
+ ? {}
1262
+ : { queuedPromptAfterToolRound: args.queuedPromptAfterToolRound }),
1263
+ ...(args.remindersVer === undefined ? {} : { remindersVer: args.remindersVer }),
1264
+ ...(args.pubRemindersVer === undefined ? {} : { pubRemindersVer: args.pubRemindersVer }),
1265
+ },
1266
+ };
1267
+ }
1268
+ function shouldCaptureUnexpectedIdleAfterToolRound(args) {
1269
+ if (args.finalDisplayState.kind !== 'idle_waiting_user')
1270
+ return false;
1271
+ const diagnostics = args.diagnostics;
1272
+ if (diagnostics === undefined)
1273
+ return false;
1274
+ if (diagnostics.callIds.length === 0)
1275
+ return false;
1276
+ if ((args.latest?.nextStep.triggers.length ?? 0) > 0)
1277
+ return false;
1278
+ if (diagnostics.decision.stopReason === 'reply_tool' ||
1279
+ diagnostics.decision.stopReason === 'pending_tellask_wait') {
1280
+ return false;
1281
+ }
1282
+ const continuation = diagnostics.lastBusinessContinuation;
1283
+ if (continuation.kind !== 'none')
1284
+ return true;
1285
+ if (diagnostics.routed.hasImmediateFollowupToolCalls)
1286
+ return true;
1287
+ if (diagnostics.routed.hasImmediateTellaskOutputs)
1288
+ return true;
1289
+ if (diagnostics.routed.immediateFollowupCallIds.length > 0)
1290
+ return true;
1291
+ if (diagnostics.routed.immediateTellaskOutputCallIds.length > 0)
1292
+ return true;
1293
+ return false;
1294
+ }
1295
+ function sanitizeDebugFileSegment(value) {
1296
+ const sanitized = value.replace(/[^A-Za-z0-9._-]+/g, '_').replace(/^_+|_+$/g, '');
1297
+ return sanitized.length > 0 ? sanitized.slice(0, 80) : 'unknown';
1298
+ }
1299
+ async function maybeWriteUnexpectedIdleAfterToolRoundDebugDump(args) {
1300
+ if (!shouldCaptureUnexpectedIdleAfterToolRound({
1301
+ finalDisplayState: args.finalDisplayState,
1302
+ latest: args.latest,
1303
+ diagnostics: args.diagnostics,
1304
+ })) {
1305
+ return;
1306
+ }
1307
+ const diagnostics = args.diagnostics;
1308
+ if (diagnostics === undefined) {
1309
+ throw new Error('unexpected idle debug invariant violation: diagnostics disappeared');
1310
+ }
1311
+ const capturedAt = (0, time_1.formatUnifiedTimestamp)(new Date());
1312
+ const debugDir = node_path_1.default.resolve(process.cwd(), '.dislogs', 'debug');
1313
+ const fileName = [
1314
+ 'kernel-driver-unexpected-idle-after-tool-round',
1315
+ sanitizeDebugFileSegment(capturedAt),
1316
+ sanitizeDebugFileSegment(args.dlg.id.rootId),
1317
+ sanitizeDebugFileSegment(args.dlg.id.selfId),
1318
+ `c${String(diagnostics.course)}`,
1319
+ `g${String(diagnostics.genseq)}`,
1320
+ `${(0, id_1.generateShortId)()}.json`,
1321
+ ].join('-');
1322
+ const activeCallees = await persistence_1.DialogPersistence.loadActiveCallees(args.dlg.id, args.dlg.status);
1323
+ const suspension = await args.dlg.getSuspensionStatus();
1324
+ const payload = {
1325
+ kind: 'kernel_driver_unexpected_idle_after_tool_round',
1326
+ capturedAt,
1327
+ rtwsRootAbs: process.cwd(),
1328
+ dialog: {
1329
+ rootId: args.dlg.id.rootId,
1330
+ selfId: args.dlg.id.selfId,
1331
+ value: args.dlg.id.valueOf(),
1332
+ agentId: args.dlg.agentId,
1333
+ status: args.dlg.status,
1334
+ currentCourse: args.dlg.currentCourse,
1335
+ activeGenCourse: args.dlg.activeGenCourseOrUndefined ?? null,
1336
+ activeGenSeq: args.dlg.activeGenSeqOrUndefined ?? null,
1337
+ hasQueuedPrompt: args.dlg.hasQueuedPrompt(),
1338
+ queuedPrompt: args.dlg.peekQueuedPrompt() ?? null,
1339
+ },
1340
+ finalDisplayState: args.finalDisplayState,
1341
+ latest: args.latest,
1342
+ activeCallees,
1343
+ suspension,
1344
+ diagnostics,
1345
+ callstack: new Error('kernel-driver unexpected idle after tool round').stack ?? null,
1346
+ };
1347
+ await promises_1.default.mkdir(debugDir, { recursive: true });
1348
+ await promises_1.default.writeFile(node_path_1.default.join(debugDir, fileName), `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
1349
+ }
1350
+ async function maybeWriteIdleWithActiveReplyObligationDebugDump(args) {
1351
+ if (args.finalDisplayState.kind !== 'idle_waiting_user') {
1352
+ return;
1353
+ }
1354
+ if (args.activeReplyObligation === undefined) {
1355
+ return;
1356
+ }
1357
+ const capturedAt = (0, time_1.formatUnifiedTimestamp)(new Date());
1358
+ const debugDir = node_path_1.default.resolve(process.cwd(), '.dislogs', 'debug');
1359
+ const fileName = [
1360
+ 'kernel-driver-idle-with-active-reply-obligation',
1361
+ sanitizeDebugFileSegment(capturedAt),
1362
+ sanitizeDebugFileSegment(args.dlg.id.rootId),
1363
+ sanitizeDebugFileSegment(args.dlg.id.selfId),
1364
+ sanitizeDebugFileSegment(args.activeReplyObligation.targetCallId),
1365
+ `${(0, id_1.generateShortId)()}.json`,
1366
+ ].join('-');
1367
+ const activeCallees = await persistence_1.DialogPersistence.loadActiveCallees(args.dlg.id, args.dlg.status);
1368
+ const suspension = await args.dlg.getSuspensionStatus();
1369
+ const payload = {
1370
+ kind: 'kernel_driver_idle_with_active_reply_obligation',
1371
+ capturedAt,
1372
+ rtwsRootAbs: process.cwd(),
1373
+ dialog: {
1374
+ rootId: args.dlg.id.rootId,
1375
+ selfId: args.dlg.id.selfId,
1376
+ value: args.dlg.id.valueOf(),
1377
+ agentId: args.dlg.agentId,
1378
+ status: args.dlg.status,
1379
+ currentCourse: args.dlg.currentCourse,
1380
+ activeGenCourse: args.dlg.activeGenCourseOrUndefined ?? null,
1381
+ activeGenSeq: args.dlg.activeGenSeqOrUndefined ?? null,
1382
+ hasQueuedPrompt: args.dlg.hasQueuedPrompt(),
1383
+ queuedPrompt: args.dlg.peekQueuedPrompt() ?? null,
1384
+ },
1385
+ finalDisplayState: args.finalDisplayState,
1386
+ latest: args.latest,
1387
+ activeCallees,
1388
+ suspension,
1389
+ activeReplyObligation: args.activeReplyObligation,
1390
+ callstack: new Error('kernel-driver idle with active reply obligation').stack ?? null,
1391
+ };
1392
+ await promises_1.default.mkdir(debugDir, { recursive: true });
1393
+ await promises_1.default.writeFile(node_path_1.default.join(debugDir, fileName), `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
1394
+ }
1229
1395
  async function upsertImmediateFollowupTrigger(args) {
1230
1396
  const reasons = [];
1231
1397
  if (args.routed.immediateFollowupCallIds.length > 0) {
@@ -1856,6 +2022,7 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
1856
2022
  let lastBusinessContinuation = { kind: 'none' };
1857
2023
  let fbrConclusion;
1858
2024
  let pubRemindersVer = dlg.remindersVer;
2025
+ let lastToolRoundStopDiagnostics;
1859
2026
  let pendingPrompt = humanPrompt;
1860
2027
  let resolvingImmediateToolResultForUserPrompt = false;
1861
2028
  let resolvingImmediateToolResultUserPromptMsgId;
@@ -2088,6 +2255,7 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2088
2255
  }
2089
2256
  }
2090
2257
  const acceptedTriggers = await dlg.notifyGeneratingStart(currentPrompt?.msgId);
2258
+ lastToolRoundStopDiagnostics = undefined;
2091
2259
  for (const trigger of acceptedTriggers) {
2092
2260
  if (trigger.kind === 'followup' && trigger.continuation !== undefined) {
2093
2261
  if (currentBusinessContinuation.kind !== 'none' &&
@@ -2119,9 +2287,11 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2119
2287
  prompt: currentPrompt,
2120
2288
  language: promptLanguage,
2121
2289
  });
2122
- if (currentPrompt.origin === 'user' &&
2290
+ const deferredReplyReassertionDirective = replyGuidance.deferredReplyReassertionDirective;
2291
+ const currentPromptIsUserInterjection = currentPrompt.origin === 'user' &&
2123
2292
  replyGuidance.suppressInterDialogReplyGuidance &&
2124
- replyGuidance.deferredReplyReassertionDirective !== undefined) {
2293
+ deferredReplyReassertionDirective !== undefined;
2294
+ if (currentPromptIsUserInterjection) {
2125
2295
  // WARNING:
2126
2296
  // User interjection suppression is a reversible state transition, not a one-shot
2127
2297
  // latch. The normal cycle is:
@@ -2135,7 +2305,7 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2135
2305
  const existingDeferredReplyReassertion = await persistence_1.DialogPersistence.getDeferredReplyReassertion(dlg.id, dlg.status);
2136
2306
  const nextDeferredReplyReassertion = {
2137
2307
  reason: 'user_interjection_with_parked_original_task',
2138
- directive: replyGuidance.deferredReplyReassertionDirective,
2308
+ directive: deferredReplyReassertionDirective,
2139
2309
  };
2140
2310
  const mustRearmDeferredReplyReassertion = existingDeferredReplyReassertion === undefined ||
2141
2311
  existingDeferredReplyReassertion.resumeGuideSurfaced === true ||
@@ -2169,7 +2339,7 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2169
2339
  if (replyGuidance.promptContent === undefined) {
2170
2340
  throw new Error(`kernel-driver reply guidance invariant violation: missing prompt content for dialog=${dlg.id.valueOf()} msgId=${currentPrompt.msgId}`);
2171
2341
  }
2172
- if (currentPrompt.origin === 'user' && !replyGuidance.isQ4HAnswerPrompt) {
2342
+ if (currentPromptIsUserInterjection) {
2173
2343
  await persistence_1.DialogPersistence.mutateDialogLatest(dlg.id, () => ({
2174
2344
  kind: 'patch',
2175
2345
  patch: {
@@ -2951,6 +3121,14 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2951
3121
  break;
2952
3122
  }
2953
3123
  if (routed.shouldStopAfterReplyTool) {
3124
+ lastToolRoundStopDiagnostics = buildToolRoundStopDiagnostics({
3125
+ dlg,
3126
+ streamedFuncCalls,
3127
+ routed,
3128
+ lastBusinessContinuation,
3129
+ shouldStartImmediatePostToolGeneration: false,
3130
+ stopReason: 'reply_tool',
3131
+ });
2954
3132
  log_1.log.debug('kernel-driver stop round after explicit replyTellask* tool', undefined, {
2955
3133
  dialogId: dlg.id.valueOf(),
2956
3134
  toolNames: streamedFuncCalls
@@ -2962,6 +3140,17 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2962
3140
  break;
2963
3141
  }
2964
3142
  if (dlg.hasQueuedPrompt()) {
3143
+ lastToolRoundStopDiagnostics = buildToolRoundStopDiagnostics({
3144
+ dlg,
3145
+ streamedFuncCalls,
3146
+ routed,
3147
+ lastBusinessContinuation,
3148
+ shouldStartImmediatePostToolGeneration: false,
3149
+ stopReason: 'queued_prompt_after_tool_round',
3150
+ queuedPromptAfterToolRound: true,
3151
+ remindersVer: dlg.remindersVer,
3152
+ pubRemindersVer,
3153
+ });
2965
3154
  break;
2966
3155
  }
2967
3156
  if (dlg.remindersVer > pubRemindersVer) {
@@ -2972,6 +3161,18 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2972
3161
  // background work, so only Q4H can suspend this same-drive continuation point.
2973
3162
  const suspensionAfterToolRound = await dlg.getSuspensionStatus();
2974
3163
  if (!suspensionAfterToolRound.canDrive) {
3164
+ lastToolRoundStopDiagnostics = buildToolRoundStopDiagnostics({
3165
+ dlg,
3166
+ streamedFuncCalls,
3167
+ routed,
3168
+ lastBusinessContinuation,
3169
+ shouldStartImmediatePostToolGeneration: false,
3170
+ stopReason: 'suspended_after_tool_round',
3171
+ suspensionAfterToolRound,
3172
+ queuedPromptAfterToolRound: dlg.hasQueuedPrompt(),
3173
+ remindersVer: dlg.remindersVer,
3174
+ pubRemindersVer,
3175
+ });
2975
3176
  await preserveDiligenceBudgetAcrossQ4H(dlg);
2976
3177
  break;
2977
3178
  }
@@ -2984,6 +3185,18 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2984
3185
  invalidFuncCallCount > 0;
2985
3186
  if (!shouldStartImmediatePostToolGeneration) {
2986
3187
  if (routed.shouldStopAfterPendingTellaskWait) {
3188
+ lastToolRoundStopDiagnostics = buildToolRoundStopDiagnostics({
3189
+ dlg,
3190
+ streamedFuncCalls,
3191
+ routed,
3192
+ lastBusinessContinuation,
3193
+ shouldStartImmediatePostToolGeneration,
3194
+ stopReason: 'pending_tellask_wait',
3195
+ suspensionAfterToolRound,
3196
+ queuedPromptAfterToolRound: dlg.hasQueuedPrompt(),
3197
+ remindersVer: dlg.remindersVer,
3198
+ pubRemindersVer,
3199
+ });
2987
3200
  log_1.log.debug('kernel-driver stop round after pending tellask wait boundary', undefined, {
2988
3201
  dialogId: dlg.id.valueOf(),
2989
3202
  rootId: dlg.id.rootId,
@@ -3012,6 +3225,18 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
3012
3225
  pendingPrompt = next.prompt;
3013
3226
  continue;
3014
3227
  }
3228
+ lastToolRoundStopDiagnostics = buildToolRoundStopDiagnostics({
3229
+ dlg,
3230
+ streamedFuncCalls,
3231
+ routed,
3232
+ lastBusinessContinuation,
3233
+ shouldStartImmediatePostToolGeneration,
3234
+ stopReason: 'no_post_tool_continuation',
3235
+ suspensionAfterToolRound,
3236
+ queuedPromptAfterToolRound: dlg.hasQueuedPrompt(),
3237
+ remindersVer: dlg.remindersVer,
3238
+ pubRemindersVer,
3239
+ });
3015
3240
  break;
3016
3241
  }
3017
3242
  if (shouldStartImmediatePostToolGeneration) {
@@ -3180,6 +3405,30 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
3180
3405
  reason: 'newer_generation_active',
3181
3406
  });
3182
3407
  }
3408
+ const activeReplyObligation = await persistence_1.DialogPersistence.loadActiveTellaskReplyObligation(dlg.id, dlg.status);
3409
+ try {
3410
+ await maybeWriteUnexpectedIdleAfterToolRoundDebugDump({
3411
+ dlg,
3412
+ finalDisplayState,
3413
+ latest,
3414
+ diagnostics: lastToolRoundStopDiagnostics,
3415
+ });
3416
+ await maybeWriteIdleWithActiveReplyObligationDebugDump({
3417
+ dlg,
3418
+ finalDisplayState,
3419
+ latest,
3420
+ activeReplyObligation,
3421
+ });
3422
+ }
3423
+ catch (debugErr) {
3424
+ log_1.log.warn('kernel-driver failed to write idle debug dump', debugErr, {
3425
+ dialogId: dlg.id.valueOf(),
3426
+ rootId: dlg.id.rootId,
3427
+ selfId: dlg.id.selfId,
3428
+ course: lastToolRoundStopDiagnostics?.course ?? null,
3429
+ genseq: lastToolRoundStopDiagnostics?.genseq ?? null,
3430
+ });
3431
+ }
3183
3432
  }
3184
3433
  catch (err) {
3185
3434
  log_1.log.warn('kernel-driver failed to re-check displayState before finalizing', err, {
@@ -294,15 +294,6 @@ async function loadFreshSuspensionStatusFromPersistence(dialog) {
294
294
  canDrive: !hasQ4H,
295
295
  };
296
296
  }
297
- function buildDisplayStateFromSuspensionStatus(args) {
298
- if (args.q4h && args.backgroundCalleeDialogs) {
299
- return { kind: 'blocked', reason: { kind: 'needs_human_input' } };
300
- }
301
- if (args.q4h) {
302
- return { kind: 'blocked', reason: { kind: 'needs_human_input' } };
303
- }
304
- return { kind: 'idle_waiting_user' };
305
- }
306
297
  async function loadPendingDiagnosticsSnapshot(args) {
307
298
  const callerDialogIdObj = new dialog_1.DialogID(args.callerDialogId, args.rootId);
308
299
  try {
@@ -413,13 +404,23 @@ async function clearStaleSideDialogRunControlForFinalResponse(args) {
413
404
  previousNextStepTriggerCount: latest?.nextStep.triggers.length ?? null,
414
405
  };
415
406
  }
407
+ const finalResponseCallId = latest.sideDialogFinalResponse?.callId.trim();
408
+ if (finalResponseCallId !== undefined && finalResponseCallId !== '') {
409
+ const activeReplyObligation = await persistence_1.DialogPersistence.loadActiveTellaskReplyObligation(args.dialog.id, args.dialog.status);
410
+ if (activeReplyObligation?.targetCallId.trim() === finalResponseCallId) {
411
+ await persistence_1.DialogPersistence.setActiveTellaskReplyObligation(args.dialog.id, undefined, args.dialog.status);
412
+ }
413
+ }
414
+ const displayState = await (0, dialog_display_state_1.computeIdleDisplayState)(args.dialog);
416
415
  await persistence_1.DialogPersistence.mutateDialogLatest(args.dialog.id, () => ({
417
416
  kind: 'patch',
418
417
  patch: {
419
418
  generating: false,
420
419
  nextStep: (0, dialog_latest_state_1.createEmptyDialogNextStepState)(),
421
- displayState: { kind: 'idle_waiting_user' },
422
- executionMarker: undefined,
420
+ displayState,
421
+ executionMarker: displayState.kind === 'stopped'
422
+ ? { kind: 'interrupted', reason: displayState.reason }
423
+ : undefined,
423
424
  },
424
425
  }), args.dialog.status);
425
426
  await persistence_1.DialogPersistence.removeWakeQueueEntriesForDialog(args.dialog.id, args.dialog.status);
@@ -1420,10 +1421,7 @@ async function executeDriveRound(args) {
1420
1421
  const queuedSideDialogPromptCanResume = dialog instanceof dialog_1.SideDialog && queuedPrompt !== undefined;
1421
1422
  if (!suspension.canDrive && !queuedSideDialogPromptCanResume) {
1422
1423
  if (resumeFromInterjectionPause) {
1423
- const restoredState = buildDisplayStateFromSuspensionStatus({
1424
- q4h: suspension.q4h,
1425
- backgroundCalleeDialogs: suspension.backgroundCalleeDialogs,
1426
- });
1424
+ const restoredState = await (0, dialog_display_state_1.computeIdleDisplayState)(dialog);
1427
1425
  await (0, dialog_display_state_1.setDialogDisplayState)(dialog.id, restoredState);
1428
1426
  await maybeSurfaceDeferredReplyReassertionGuideForBlockedContinue(dialog);
1429
1427
  log_1.log.debug('kernel-driver continue after interjection pause restored true suspended state from fresh persistence facts', undefined, {
@@ -6,6 +6,7 @@ exports.supplySideDialogResponseToAssignedAskerIfPendingV2 = supplySideDialogRes
6
6
  const storage_1 = require("@longrun-ai/kernel/types/storage");
7
7
  const time_1 = require("@longrun-ai/kernel/utils/time");
8
8
  const dialog_1 = require("../../dialog");
9
+ const dialog_display_state_1 = require("../../dialog-display-state");
9
10
  const dialog_global_registry_1 = require("../../dialog-global-registry");
10
11
  const dialog_instance_registry_1 = require("../../dialog-instance-registry");
11
12
  const log_1 = require("../../log");
@@ -378,6 +379,18 @@ async function supplyResponseToAskerDialog(args) {
378
379
  },
379
380
  },
380
381
  }), callerDialog.status);
382
+ if (maybeSideDialog) {
383
+ const displayState = await (0, dialog_display_state_1.computeIdleDisplayState)(maybeSideDialog);
384
+ await persistence_1.DialogPersistence.mutateDialogLatest(sideDialogId, () => ({
385
+ kind: 'patch',
386
+ patch: {
387
+ displayState,
388
+ executionMarker: displayState.kind === 'stopped'
389
+ ? { kind: 'interrupted', reason: displayState.reason }
390
+ : undefined,
391
+ },
392
+ }), callerDialog.status);
393
+ }
381
394
  }
382
395
  await syncPendingTellaskReminderBestEffort(callerDialog, 'kernel-driver:supplyResponseToAskerDialog');
383
396
  const responseRouteRef = calleeResponseRef;
@@ -252,12 +252,6 @@ function hasActiveReplyObligationInAskerStackState(state) {
252
252
  const top = state?.askerStack[state.askerStack.length - 1];
253
253
  return top?.tellaskReplyObligation !== undefined;
254
254
  }
255
- function q4hSuspensionDisplayState(hasQ4H) {
256
- if (hasQ4H) {
257
- return { kind: 'blocked', reason: { kind: 'needs_human_input' } };
258
- }
259
- return undefined;
260
- }
261
255
  async function normalizeSideDialogIdleWhileReplyObligationPending(dialogId, status, previous, latest, askerStackState, context) {
262
256
  if (status !== 'running' || dialogId.selfId === dialogId.rootId) {
263
257
  return latest;
@@ -268,12 +262,13 @@ async function normalizeSideDialogIdleWhileReplyObligationPending(dialogId, stat
268
262
  if (!hasActiveReplyObligationInAskerStackState(askerStackState)) {
269
263
  return latest;
270
264
  }
271
- const q4hSuspensionState = q4hSuspensionDisplayState((await DialogPersistence.loadQuestions4HumanState(dialogId, status)).length > 0);
272
- if (!q4hSuspensionState) {
273
- return latest;
274
- }
275
265
  const top = askerStackState?.askerStack[askerStackState.askerStack.length - 1];
276
- log_1.log.debug('Dialog latest projection invariant warning: sideDialog awaiting Q4H attempted to enter idle displayState; healing from persistence facts', undefined, {
266
+ const healedDisplayState = {
267
+ kind: 'stopped',
268
+ reason: { kind: 'pending_reply_obligation' },
269
+ continueEnabled: true,
270
+ };
271
+ log_1.log.debug('Dialog latest projection invariant warning: sideDialog with active reply obligation attempted to enter idle displayState; healing from persistence facts', undefined, {
277
272
  trigger: context.trigger,
278
273
  mutationKind: context.mutationKind,
279
274
  latestSource: context.latestSource,
@@ -284,20 +279,20 @@ async function normalizeSideDialogIdleWhileReplyObligationPending(dialogId, stat
284
279
  selfId: dialogId.selfId,
285
280
  status,
286
281
  targetCallId: top?.tellaskReplyObligation?.targetCallId ?? null,
287
- suspendedByQ4H: q4hSuspensionState?.kind === 'blocked',
282
+ targetDialogId: top?.tellaskReplyObligation?.targetDialogId ?? null,
288
283
  before: summarizeLatestProjectionState(previous),
289
284
  afterBeforeHealing: summarizeLatestProjectionState(latest),
290
285
  healedTo: {
291
- displayState: q4hSuspensionState,
292
- executionMarker: undefined,
286
+ displayState: healedDisplayState,
287
+ executionMarker: { kind: 'interrupted', reason: healedDisplayState.reason },
293
288
  },
294
289
  callStack: captureInvariantWarningStack(),
295
290
  });
296
291
  return {
297
292
  ...latest,
298
293
  lastModified: (0, time_1.formatUnifiedTimestamp)(new Date()),
299
- displayState: q4hSuspensionState,
300
- executionMarker: undefined,
294
+ displayState: healedDisplayState,
295
+ executionMarker: { kind: 'interrupted', reason: healedDisplayState.reason },
301
296
  };
302
297
  }
303
298
  const quarantiningMainDialogs = new Set();
@@ -2615,7 +2610,9 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
2615
2610
  };
2616
2611
  await this.appendEvent(askerDialog, callerCourse, sideDialogCreatedRecord);
2617
2612
  const initialSideDialogDisplayState = {
2618
- kind: 'idle_waiting_user',
2613
+ kind: 'stopped',
2614
+ reason: { kind: 'pending_reply_obligation' },
2615
+ continueEnabled: true,
2619
2616
  };
2620
2617
  // Initialize latest.yaml via the mutation API (write-back will flush).
2621
2618
  await DialogPersistence.mutateDialogLatest(sideDialogId, () => ({
@@ -2631,6 +2628,10 @@ class DiskFileDialogStore extends dialog_1.DialogStore {
2631
2628
  tellaskCalls: (0, dialog_latest_state_1.createEmptyDialogTellaskCallState)(),
2632
2629
  tellaskResults: (0, dialog_latest_state_1.createEmptyDialogTellaskResultState)(),
2633
2630
  displayState: initialSideDialogDisplayState,
2631
+ executionMarker: {
2632
+ kind: 'interrupted',
2633
+ reason: initialSideDialogDisplayState.reason,
2634
+ },
2634
2635
  disableDiligencePush: false,
2635
2636
  },
2636
2637
  }));