dominds 1.24.2 → 1.24.3

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 (105) hide show
  1. package/dist/docs/tellask-background-continuation-refactor.zh.md +144 -15
  2. package/dist/llm/kernel-driver/drive.js +10 -0
  3. package/dist/llm/kernel-driver/flow.js +289 -76
  4. package/dist/llm/kernel-driver/reply-guidance.js +0 -3
  5. package/dist/llm/kernel-driver/tellask-special.d.ts +1 -0
  6. package/dist/llm/kernel-driver/tellask-special.js +3 -0
  7. package/dist/llm/kernel-driver/types.d.ts +0 -3
  8. package/dist/persistence.d.ts +1 -0
  9. package/dist/persistence.js +33 -4
  10. package/package.json +3 -3
  11. package/webapp/dist/assets/{_basePickBy-DBvh4H3k.js → _basePickBy-ZLV93S3E.js} +3 -3
  12. package/webapp/dist/assets/{_basePickBy-DBvh4H3k.js.map → _basePickBy-ZLV93S3E.js.map} +1 -1
  13. package/webapp/dist/assets/{_baseUniq-CQmc9B-o.js → _baseUniq-D0wSOJ06.js} +2 -2
  14. package/webapp/dist/assets/{_baseUniq-CQmc9B-o.js.map → _baseUniq-D0wSOJ06.js.map} +1 -1
  15. package/webapp/dist/assets/{arc-DfLiOX_4.js → arc-BHclbMTS.js} +2 -2
  16. package/webapp/dist/assets/{arc-DfLiOX_4.js.map → arc-BHclbMTS.js.map} +1 -1
  17. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CaTVJ5ev.js → architectureDiagram-2XIMDMQ5-CK99gE_D.js} +7 -7
  18. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-CaTVJ5ev.js.map → architectureDiagram-2XIMDMQ5-CK99gE_D.js.map} +1 -1
  19. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-DlmAtUca.js → blockDiagram-WCTKOSBZ-fE5MBTEU.js} +7 -7
  20. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-DlmAtUca.js.map → blockDiagram-WCTKOSBZ-fE5MBTEU.js.map} +1 -1
  21. package/webapp/dist/assets/{c4Diagram-IC4MRINW-CNHKD5Sl.js → c4Diagram-IC4MRINW-BSLyPyoU.js} +3 -3
  22. package/webapp/dist/assets/{c4Diagram-IC4MRINW-CNHKD5Sl.js.map → c4Diagram-IC4MRINW-BSLyPyoU.js.map} +1 -1
  23. package/webapp/dist/assets/{channel-BTWhZYd5.js → channel-DSvMpp-a.js} +2 -2
  24. package/webapp/dist/assets/{channel-BTWhZYd5.js.map → channel-DSvMpp-a.js.map} +1 -1
  25. package/webapp/dist/assets/{chunk-4BX2VUAB-CV1n0Uhy.js → chunk-4BX2VUAB-OXEX170k.js} +2 -2
  26. package/webapp/dist/assets/{chunk-4BX2VUAB-CV1n0Uhy.js.map → chunk-4BX2VUAB-OXEX170k.js.map} +1 -1
  27. package/webapp/dist/assets/{chunk-55IACEB6-C5r77i_p.js → chunk-55IACEB6-BFQ_spQD.js} +2 -2
  28. package/webapp/dist/assets/{chunk-55IACEB6-C5r77i_p.js.map → chunk-55IACEB6-BFQ_spQD.js.map} +1 -1
  29. package/webapp/dist/assets/{chunk-FMBD7UC4-DJ1yHxrH.js → chunk-FMBD7UC4-CbQ2BBPs.js} +2 -2
  30. package/webapp/dist/assets/{chunk-FMBD7UC4-DJ1yHxrH.js.map → chunk-FMBD7UC4-CbQ2BBPs.js.map} +1 -1
  31. package/webapp/dist/assets/{chunk-JSJVCQXG-Ahg9hCCm.js → chunk-JSJVCQXG-C4P1mjCL.js} +2 -2
  32. package/webapp/dist/assets/{chunk-JSJVCQXG-Ahg9hCCm.js.map → chunk-JSJVCQXG-C4P1mjCL.js.map} +1 -1
  33. package/webapp/dist/assets/{chunk-KX2RTZJC-qBrewKt0.js → chunk-KX2RTZJC-BMd-daMY.js} +2 -2
  34. package/webapp/dist/assets/{chunk-KX2RTZJC-qBrewKt0.js.map → chunk-KX2RTZJC-BMd-daMY.js.map} +1 -1
  35. package/webapp/dist/assets/{chunk-NQ4KR5QH-1lEdM6Wi.js → chunk-NQ4KR5QH-B_ZhWMXR.js} +4 -4
  36. package/webapp/dist/assets/{chunk-NQ4KR5QH-1lEdM6Wi.js.map → chunk-NQ4KR5QH-B_ZhWMXR.js.map} +1 -1
  37. package/webapp/dist/assets/{chunk-QZHKN3VN-ChVR749G.js → chunk-QZHKN3VN-Cbf92xIw.js} +2 -2
  38. package/webapp/dist/assets/{chunk-QZHKN3VN-ChVR749G.js.map → chunk-QZHKN3VN-Cbf92xIw.js.map} +1 -1
  39. package/webapp/dist/assets/{chunk-WL4C6EOR-BAUXgk0K.js → chunk-WL4C6EOR-PtH-blkK.js} +6 -6
  40. package/webapp/dist/assets/{chunk-WL4C6EOR-BAUXgk0K.js.map → chunk-WL4C6EOR-PtH-blkK.js.map} +1 -1
  41. package/webapp/dist/assets/{classDiagram-VBA2DB6C-DlqyhKve.js → classDiagram-VBA2DB6C-Dc3ncaD0.js} +7 -7
  42. package/webapp/dist/assets/{classDiagram-VBA2DB6C-DlqyhKve.js.map → classDiagram-VBA2DB6C-Dc3ncaD0.js.map} +1 -1
  43. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-DlqyhKve.js → classDiagram-v2-RAHNMMFH-Dc3ncaD0.js} +7 -7
  44. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-DlqyhKve.js.map → classDiagram-v2-RAHNMMFH-Dc3ncaD0.js.map} +1 -1
  45. package/webapp/dist/assets/{clone-BFiIqUsc.js → clone-E9Ad85BC.js} +2 -2
  46. package/webapp/dist/assets/{clone-BFiIqUsc.js.map → clone-E9Ad85BC.js.map} +1 -1
  47. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-JYvhtd6J.js → cose-bilkent-S5V4N54A-B-nj0o74.js} +2 -2
  48. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-JYvhtd6J.js.map → cose-bilkent-S5V4N54A-B-nj0o74.js.map} +1 -1
  49. package/webapp/dist/assets/{dagre-KLK3FWXG-CCGcQh6w.js → dagre-KLK3FWXG-CyJYNIbm.js} +7 -7
  50. package/webapp/dist/assets/{dagre-KLK3FWXG-CCGcQh6w.js.map → dagre-KLK3FWXG-CyJYNIbm.js.map} +1 -1
  51. package/webapp/dist/assets/{diagram-E7M64L7V-BXC4AxAd.js → diagram-E7M64L7V-C8eweQ7b.js} +8 -8
  52. package/webapp/dist/assets/{diagram-E7M64L7V-BXC4AxAd.js.map → diagram-E7M64L7V-C8eweQ7b.js.map} +1 -1
  53. package/webapp/dist/assets/{diagram-IFDJBPK2-B--Sb3XT.js → diagram-IFDJBPK2-DMdygRl0.js} +7 -7
  54. package/webapp/dist/assets/{diagram-IFDJBPK2-B--Sb3XT.js.map → diagram-IFDJBPK2-DMdygRl0.js.map} +1 -1
  55. package/webapp/dist/assets/{diagram-P4PSJMXO-CVqgtrh3.js → diagram-P4PSJMXO-BQDZHb0a.js} +7 -7
  56. package/webapp/dist/assets/{diagram-P4PSJMXO-CVqgtrh3.js.map → diagram-P4PSJMXO-BQDZHb0a.js.map} +1 -1
  57. package/webapp/dist/assets/{erDiagram-INFDFZHY-BniHaRTt.js → erDiagram-INFDFZHY-C1HaXN6E.js} +5 -5
  58. package/webapp/dist/assets/{erDiagram-INFDFZHY-BniHaRTt.js.map → erDiagram-INFDFZHY-C1HaXN6E.js.map} +1 -1
  59. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-wLKFBWTR.js → flowDiagram-PKNHOUZH-24nNqQyo.js} +7 -7
  60. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-wLKFBWTR.js.map → flowDiagram-PKNHOUZH-24nNqQyo.js.map} +1 -1
  61. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-DrptcitZ.js → ganttDiagram-A5KZAMGK-BWPOFaLV.js} +3 -3
  62. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-DrptcitZ.js.map → ganttDiagram-A5KZAMGK-BWPOFaLV.js.map} +1 -1
  63. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-C6l5aP44.js → gitGraphDiagram-K3NZZRJ6-D7_L-p_Y.js} +8 -8
  64. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-C6l5aP44.js.map → gitGraphDiagram-K3NZZRJ6-D7_L-p_Y.js.map} +1 -1
  65. package/webapp/dist/assets/{graph-DXuQGYQN.js → graph-OHu4dL2n.js} +3 -3
  66. package/webapp/dist/assets/{graph-DXuQGYQN.js.map → graph-OHu4dL2n.js.map} +1 -1
  67. package/webapp/dist/assets/{index-DuQ1OCMG.js → index-CDCDAfqP.js} +165 -67
  68. package/webapp/dist/assets/{index-DuQ1OCMG.js.map → index-CDCDAfqP.js.map} +1 -1
  69. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-BbleCSjW.js → infoDiagram-LFFYTUFH-CvaBM5j6.js} +6 -6
  70. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-BbleCSjW.js.map → infoDiagram-LFFYTUFH-CvaBM5j6.js.map} +1 -1
  71. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-DmV-LZuk.js → ishikawaDiagram-PHBUUO56-DB1l2Uue.js} +2 -2
  72. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-DmV-LZuk.js.map → ishikawaDiagram-PHBUUO56-DB1l2Uue.js.map} +1 -1
  73. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-D3sQFfac.js → journeyDiagram-4ABVD52K-TQR6_teO.js} +5 -5
  74. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-D3sQFfac.js.map → journeyDiagram-4ABVD52K-TQR6_teO.js.map} +1 -1
  75. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-BEeBlBtM.js → kanban-definition-K7BYSVSG-B-BOuC-U.js} +3 -3
  76. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-BEeBlBtM.js.map → kanban-definition-K7BYSVSG-B-BOuC-U.js.map} +1 -1
  77. package/webapp/dist/assets/{layout-g7jjgV-W.js → layout-B8yqIqbx.js} +5 -5
  78. package/webapp/dist/assets/{layout-g7jjgV-W.js.map → layout-B8yqIqbx.js.map} +1 -1
  79. package/webapp/dist/assets/{linear-D_X91Yek.js → linear-CoLfiZKK.js} +2 -2
  80. package/webapp/dist/assets/{linear-D_X91Yek.js.map → linear-CoLfiZKK.js.map} +1 -1
  81. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-NkMAIgRY.js → mindmap-definition-YRQLILUH-P70BMIHI.js} +4 -4
  82. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-NkMAIgRY.js.map → mindmap-definition-YRQLILUH-P70BMIHI.js.map} +1 -1
  83. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-Z6E4GEPC.js → pieDiagram-SKSYHLDU-DsS_4dTB.js} +8 -8
  84. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-Z6E4GEPC.js.map → pieDiagram-SKSYHLDU-DsS_4dTB.js.map} +1 -1
  85. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-BH8hfOuU.js → quadrantDiagram-337W2JSQ-DoM9PEq-.js} +3 -3
  86. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-BH8hfOuU.js.map → quadrantDiagram-337W2JSQ-DoM9PEq-.js.map} +1 -1
  87. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-DRJkvoQI.js → requirementDiagram-Z7DCOOCP-Bn3lYMMI.js} +4 -4
  88. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-DRJkvoQI.js.map → requirementDiagram-Z7DCOOCP-Bn3lYMMI.js.map} +1 -1
  89. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-D2VwjtJo.js → sankeyDiagram-WA2Y5GQK-97kCegRT.js} +2 -2
  90. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-D2VwjtJo.js.map → sankeyDiagram-WA2Y5GQK-97kCegRT.js.map} +1 -1
  91. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-Cq-gEPOw.js → sequenceDiagram-2WXFIKYE-DXqjQjf6.js} +4 -4
  92. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-Cq-gEPOw.js.map → sequenceDiagram-2WXFIKYE-DXqjQjf6.js.map} +1 -1
  93. package/webapp/dist/assets/{stateDiagram-RAJIS63D-CFM8Jqke.js → stateDiagram-RAJIS63D-DQcTPKWP.js} +9 -9
  94. package/webapp/dist/assets/{stateDiagram-RAJIS63D-CFM8Jqke.js.map → stateDiagram-RAJIS63D-DQcTPKWP.js.map} +1 -1
  95. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-Dip5iGX_.js → stateDiagram-v2-FVOUBMTO-DHmxRVJn.js} +5 -5
  96. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-Dip5iGX_.js.map → stateDiagram-v2-FVOUBMTO-DHmxRVJn.js.map} +1 -1
  97. package/webapp/dist/assets/{timeline-definition-YZTLITO2-OI9JzMjX.js → timeline-definition-YZTLITO2-BlovQQ4B.js} +3 -3
  98. package/webapp/dist/assets/{timeline-definition-YZTLITO2-OI9JzMjX.js.map → timeline-definition-YZTLITO2-BlovQQ4B.js.map} +1 -1
  99. package/webapp/dist/assets/{treemap-KZPCXAKY-CtNF416A.js → treemap-KZPCXAKY-CGu93c9S.js} +5 -5
  100. package/webapp/dist/assets/{treemap-KZPCXAKY-CtNF416A.js.map → treemap-KZPCXAKY-CGu93c9S.js.map} +1 -1
  101. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-CjaPj4FZ.js → vennDiagram-LZ73GAT5-Do1jprrz.js} +2 -2
  102. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-CjaPj4FZ.js.map → vennDiagram-LZ73GAT5-Do1jprrz.js.map} +1 -1
  103. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-21mBt9iu.js → xychartDiagram-JWTSCODW-BKa1DxVq.js} +3 -3
  104. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-21mBt9iu.js.map → xychartDiagram-JWTSCODW-BKa1DxVq.js.map} +1 -1
  105. package/webapp/dist/index.html +1 -1
@@ -70,6 +70,125 @@ async function queueReplyReminderFollowUp(args) {
70
70
  function isReplyToolReminderPrompt(prompt) {
71
71
  return typeof prompt?.content === 'string' && (0, reply_prompt_copy_1.isReplyToolReminderPromptContent)(prompt.content);
72
72
  }
73
+ function hasSameReplyDirective(left, right) {
74
+ return (left.expectedReplyCallName === right.expectedReplyCallName &&
75
+ left.targetDialogId === right.targetDialogId &&
76
+ left.targetCallId === right.targetCallId &&
77
+ left.tellaskContent === right.tellaskContent);
78
+ }
79
+ function buildCurrentSideDialogAssignmentReplyDirective(dialog) {
80
+ switch (dialog.assignmentFromAsker.callName) {
81
+ case 'tellask':
82
+ return {
83
+ expectedReplyCallName: 'replyTellask',
84
+ targetDialogId: dialog.assignmentFromAsker.askerDialogId,
85
+ targetCallId: dialog.assignmentFromAsker.callId,
86
+ tellaskContent: dialog.assignmentFromAsker.tellaskContent,
87
+ };
88
+ case 'tellaskSessionless':
89
+ case 'freshBootsReasoning':
90
+ return {
91
+ expectedReplyCallName: 'replyTellaskSessionless',
92
+ targetDialogId: dialog.assignmentFromAsker.askerDialogId,
93
+ targetCallId: dialog.assignmentFromAsker.callId,
94
+ tellaskContent: dialog.assignmentFromAsker.tellaskContent,
95
+ };
96
+ default: {
97
+ const _exhaustive = dialog.assignmentFromAsker.callName;
98
+ throw new Error(`Unsupported sideDialog assignment callName: ${_exhaustive}`);
99
+ }
100
+ }
101
+ }
102
+ function isQueuedReplyObligationContinuation(prompt) {
103
+ return ((prompt.kind === 'new_course_runtime_reply' ||
104
+ prompt.kind === 'new_course_runtime_sideDialog') &&
105
+ (0, reply_prompt_copy_1.isReplyToolReminderPromptContent)(prompt.prompt));
106
+ }
107
+ function latestHasTellaskResultForCallId(latest, targetCallId) {
108
+ return (latest?.tellaskResults.results.some((entry) => entry.callId.trim() === targetCallId) === true);
109
+ }
110
+ async function claimQueuedReplyObligationContinuation(args) {
111
+ const directive = args.prompt.tellaskReplyDirective;
112
+ const targetCallId = directive.targetCallId.trim();
113
+ const targetDialogId = directive.targetDialogId.trim();
114
+ if (targetCallId === '' || targetDialogId === '') {
115
+ throw new Error(`reply obligation continuation invariant violation: empty target identity ` +
116
+ `(dialog=${args.dialog.id.valueOf()}, targetDialogId=${directive.targetDialogId}, targetCallId=${directive.targetCallId})`);
117
+ }
118
+ const latest = await persistence_1.DialogPersistence.loadDialogLatest(args.dialog.id, args.dialog.status);
119
+ if (latest?.sideDialogFinalResponse?.callId.trim() === targetCallId) {
120
+ return 'stale';
121
+ }
122
+ if (latestHasTellaskResultForCallId(latest, targetCallId)) {
123
+ return 'stale';
124
+ }
125
+ const targetLatest = targetDialogId === args.dialog.id.selfId
126
+ ? latest
127
+ : await persistence_1.DialogPersistence.loadDialogLatest(new dialog_1.DialogID(targetDialogId, args.dialog.id.rootId), args.dialog.status);
128
+ if (latestHasTellaskResultForCallId(targetLatest, targetCallId)) {
129
+ return 'stale';
130
+ }
131
+ if (args.dialog instanceof dialog_1.SideDialog) {
132
+ const assignmentDirective = buildCurrentSideDialogAssignmentReplyDirective(args.dialog);
133
+ if (hasSameReplyDirective(assignmentDirective, directive)) {
134
+ return 'claimed';
135
+ }
136
+ }
137
+ const activeDirective = await (0, tellask_special_1.loadActiveTellaskReplyDirective)(args.dialog);
138
+ if (!activeDirective) {
139
+ return 'stale';
140
+ }
141
+ if (activeDirective.targetCallId !== directive.targetCallId) {
142
+ return 'stale';
143
+ }
144
+ if (!hasSameReplyDirective(activeDirective, directive)) {
145
+ throw new Error(`reply obligation continuation invariant violation: active obligation changed for callId=${directive.targetCallId} ` +
146
+ `(dialog=${args.dialog.id.valueOf()}, expectedReplyCallName=${directive.expectedReplyCallName}, ` +
147
+ `activeReplyCallName=${activeDirective.expectedReplyCallName}, targetDialogId=${directive.targetDialogId}, ` +
148
+ `activeTargetDialogId=${activeDirective.targetDialogId})`);
149
+ }
150
+ return 'claimed';
151
+ }
152
+ async function resolveSideDialogReplyDirectiveForAssistantOutput(args) {
153
+ const replyTarget = args.replyTarget;
154
+ const targetCallId = replyTarget?.callId.trim();
155
+ if (!replyTarget || !targetCallId) {
156
+ return args.currentDirective;
157
+ }
158
+ if (args.currentDirective?.targetCallId === targetCallId) {
159
+ return args.currentDirective;
160
+ }
161
+ const latest = await persistence_1.DialogPersistence.loadDialogLatest(args.dialog.id, args.dialog.status);
162
+ if (!latest) {
163
+ return args.currentDirective;
164
+ }
165
+ if (latest.sideDialogFinalResponse?.callId.trim() === targetCallId) {
166
+ return args.currentDirective;
167
+ }
168
+ if (latestHasTellaskResultForCallId(latest, targetCallId)) {
169
+ return args.currentDirective;
170
+ }
171
+ const assignmentDirective = buildCurrentSideDialogAssignmentReplyDirective(args.dialog);
172
+ if (assignmentDirective.targetCallId !== targetCallId) {
173
+ return args.currentDirective;
174
+ }
175
+ if (assignmentDirective.targetDialogId !== replyTarget.callerDialogId ||
176
+ assignmentDirective.targetCallId !== replyTarget.callId) {
177
+ return args.currentDirective;
178
+ }
179
+ const latestAssignmentAnchor = latest.latestAssignmentAnchor;
180
+ if (latestAssignmentAnchor?.callId !== targetCallId ||
181
+ args.responseGenseq < latestAssignmentAnchor.assignmentGenseq) {
182
+ return args.currentDirective;
183
+ }
184
+ const activeDirective = await (0, tellask_special_1.loadActiveTellaskReplyDirective)(args.dialog);
185
+ if (activeDirective && !hasSameReplyDirective(activeDirective, assignmentDirective)) {
186
+ throw new Error(`sideDialog assistant output reply directive invariant violation: active obligation does not match latest assignment ` +
187
+ `(dialog=${args.dialog.id.valueOf()}, targetCallId=${targetCallId}, ` +
188
+ `activeTargetCallId=${activeDirective.targetCallId}, assignmentTargetCallId=${assignmentDirective.targetCallId})`);
189
+ }
190
+ return activeDirective ?? assignmentDirective;
191
+ }
73
192
  function hasQ4HAnswerCallId(callId) {
74
193
  return typeof callId === 'string' && callId.trim() !== '';
75
194
  }
@@ -294,13 +413,6 @@ async function clearStaleSideDialogRunControlForFinalResponse(args) {
294
413
  previousNextStepTriggerCount: latest.nextStep.triggers.length,
295
414
  };
296
415
  }
297
- function hasNoPromptSideDialogResumeEntitlement(dialog, driveOptions) {
298
- const entitlement = driveOptions?.noPromptSideDialogResumeEntitlement;
299
- if (!entitlement) {
300
- return false;
301
- }
302
- return entitlement.callerDialogId === dialog.id.selfId;
303
- }
304
416
  function hasResultArrivalTrigger(latest) {
305
417
  return latest?.nextStep.triggers.some((trigger) => trigger.kind === 'result_arrival') === true;
306
418
  }
@@ -418,10 +530,6 @@ async function inspectNoPromptSideDialogDrive(args) {
418
530
  const supplyResponseCallerReviveAllowed = hasCallerReviveEntitlement(args.dialog, args.driveOptions) &&
419
531
  (!resolvedPendingSideDialogReplyEntitlement || resultArrivalTriggerPresent);
420
532
  const backendLoopDurableWorkAllowed = source === 'kernel_driver_backend_loop' && resultArrivalTriggerPresent;
421
- const replyObligationFollowUpAllowed = source === 'kernel_driver_follow_up' &&
422
- args.driveOptions?.noPromptSideDialogResumeEntitlement?.reason ===
423
- 'reply_obligation_follow_up' &&
424
- hasNoPromptSideDialogResumeEntitlement(args.dialog, args.driveOptions);
425
533
  const finalResponseResultArrivalReviveAllowed = sideDialogFinalResponseCallId !== undefined &&
426
534
  ((resolvedPendingSideDialogReplyEntitlement && resultArrivalTriggerPresent) ||
427
535
  backendLoopDurableWorkAllowed ||
@@ -436,11 +544,20 @@ async function inspectNoPromptSideDialogDrive(args) {
436
544
  sideDialogFinalResponseCallId,
437
545
  };
438
546
  }
547
+ if (resolvedPendingSideDialogReplyEntitlement && !resultArrivalTriggerPresent) {
548
+ return {
549
+ shouldReject: true,
550
+ source,
551
+ rejection: 'stale_consumed_result_arrival',
552
+ displayState,
553
+ currentCourse,
554
+ sideDialogFinalResponseCallId,
555
+ };
556
+ }
439
557
  if (!explicitInterruptedResumeAllowed &&
440
558
  !inProgressGenerationResumeAllowed &&
441
559
  !supplyResponseCallerReviveAllowed &&
442
- !backendLoopDurableWorkAllowed &&
443
- !replyObligationFollowUpAllowed) {
560
+ !backendLoopDurableWorkAllowed) {
444
561
  return {
445
562
  shouldReject: true,
446
563
  source,
@@ -544,71 +661,96 @@ async function surfaceRuntimeGuide(dialog, content) {
544
661
  }
545
662
  async function resolveEffectivePrompt(dialog, humanPrompt) {
546
663
  if (humanPrompt) {
547
- return { prompt: humanPrompt, fromUpNext: false };
664
+ return { prompt: humanPrompt, fromUpNext: false, droppedStaleQueuedContinuation: false };
548
665
  }
549
- const upNext = dialog.peekUpNext();
550
- if (!upNext) {
551
- return {
552
- prompt: await maybeResolveDeferredReplyReassertionPrompt(dialog),
553
- fromUpNext: false,
554
- };
555
- }
556
- return {
557
- fromUpNext: true,
558
- prompt: (() => {
559
- const normalizedUserLanguageCode = upNext.userLanguageCode === 'zh' || upNext.userLanguageCode === 'en'
560
- ? upNext.userLanguageCode
561
- : undefined;
562
- const common = {
563
- content: upNext.prompt,
564
- msgId: upNext.msgId,
565
- grammar: upNext.grammar ?? 'markdown',
566
- userLanguageCode: normalizedUserLanguageCode,
567
- runControl: upNext.runControl,
666
+ let droppedStaleQueuedContinuation = false;
667
+ for (;;) {
668
+ const upNext = dialog.peekUpNext();
669
+ if (!upNext) {
670
+ return {
671
+ prompt: await maybeResolveDeferredReplyReassertionPrompt(dialog),
672
+ fromUpNext: false,
673
+ droppedStaleQueuedContinuation,
568
674
  };
569
- switch (upNext.kind) {
570
- case 'user_generation_boundary':
571
- case 'deferred_q4h_answer': {
572
- const prompt = {
573
- ...common,
574
- origin: 'user',
575
- ...(upNext.q4hAnswerCallId === undefined
576
- ? {}
577
- : { q4hAnswerCallId: upNext.q4hAnswerCallId }),
578
- };
579
- return prompt;
675
+ }
676
+ if (isQueuedReplyObligationContinuation(upNext)) {
677
+ const claim = await claimQueuedReplyObligationContinuation({ dialog, prompt: upNext });
678
+ if (claim === 'stale') {
679
+ const discarded = dialog.takeUpNext();
680
+ if (!discarded || discarded.msgId !== upNext.msgId) {
681
+ throw new Error(`reply obligation continuation invariant violation: expected queued prompt ${upNext.msgId} before stale discard`);
580
682
  }
581
- case 'registered_assignment_update':
582
- case 'new_course_runtime_guide':
583
- case 'new_course_runtime_reply':
584
- case 'new_course_runtime_sideDialog': {
585
- const runtimeCommon = {
586
- ...common,
587
- origin: 'runtime',
588
- ...(upNext.skipTaskdoc === undefined ? {} : { skipTaskdoc: upNext.skipTaskdoc }),
589
- };
590
- if (upNext.kind === 'registered_assignment_update' ||
591
- upNext.kind === 'new_course_runtime_sideDialog') {
683
+ await persistence_1.DialogPersistence.clearPendingRuntimePrompt(dialog.id, upNext.msgId, dialog.status);
684
+ log_1.log.debug('kernel-driver dropped stale reply obligation continuation', undefined, {
685
+ dialogId: dialog.id.valueOf(),
686
+ rootId: dialog.id.rootId,
687
+ selfId: dialog.id.selfId,
688
+ msgId: upNext.msgId,
689
+ targetCallId: upNext.tellaskReplyDirective.targetCallId,
690
+ expectedReplyCallName: upNext.tellaskReplyDirective.expectedReplyCallName,
691
+ });
692
+ droppedStaleQueuedContinuation = true;
693
+ continue;
694
+ }
695
+ }
696
+ return {
697
+ fromUpNext: true,
698
+ droppedStaleQueuedContinuation,
699
+ prompt: (() => {
700
+ const normalizedUserLanguageCode = upNext.userLanguageCode === 'zh' || upNext.userLanguageCode === 'en'
701
+ ? upNext.userLanguageCode
702
+ : undefined;
703
+ const common = {
704
+ content: upNext.prompt,
705
+ msgId: upNext.msgId,
706
+ grammar: upNext.grammar ?? 'markdown',
707
+ userLanguageCode: normalizedUserLanguageCode,
708
+ runControl: upNext.runControl,
709
+ };
710
+ switch (upNext.kind) {
711
+ case 'user_generation_boundary':
712
+ case 'deferred_q4h_answer': {
592
713
  const prompt = {
593
- ...runtimeCommon,
594
- tellaskReplyDirective: upNext.tellaskReplyDirective,
595
- calleeDialogReplyTarget: upNext.calleeDialogReplyTarget,
714
+ ...common,
715
+ origin: 'user',
716
+ ...(upNext.q4hAnswerCallId === undefined
717
+ ? {}
718
+ : { q4hAnswerCallId: upNext.q4hAnswerCallId }),
596
719
  };
597
720
  return prompt;
598
721
  }
599
- if (upNext.kind === 'new_course_runtime_reply') {
600
- const prompt = {
601
- ...runtimeCommon,
602
- tellaskReplyDirective: upNext.tellaskReplyDirective,
722
+ case 'registered_assignment_update':
723
+ case 'new_course_runtime_guide':
724
+ case 'new_course_runtime_reply':
725
+ case 'new_course_runtime_sideDialog': {
726
+ const runtimeCommon = {
727
+ ...common,
728
+ origin: 'runtime',
729
+ ...(upNext.skipTaskdoc === undefined ? {} : { skipTaskdoc: upNext.skipTaskdoc }),
603
730
  };
731
+ if (upNext.kind === 'registered_assignment_update' ||
732
+ upNext.kind === 'new_course_runtime_sideDialog') {
733
+ const prompt = {
734
+ ...runtimeCommon,
735
+ tellaskReplyDirective: upNext.tellaskReplyDirective,
736
+ calleeDialogReplyTarget: upNext.calleeDialogReplyTarget,
737
+ };
738
+ return prompt;
739
+ }
740
+ if (upNext.kind === 'new_course_runtime_reply') {
741
+ const prompt = {
742
+ ...runtimeCommon,
743
+ tellaskReplyDirective: upNext.tellaskReplyDirective,
744
+ };
745
+ return prompt;
746
+ }
747
+ const prompt = runtimeCommon;
604
748
  return prompt;
605
749
  }
606
- const prompt = runtimeCommon;
607
- return prompt;
608
750
  }
609
- }
610
- })(),
611
- };
751
+ })(),
752
+ };
753
+ }
612
754
  }
613
755
  async function executeDriveRound(args) {
614
756
  const [dialog, humanPrompt, waitInQue, driveOptions] = args.driveArgs;
@@ -656,7 +798,7 @@ async function executeDriveRound(args) {
656
798
  if (!cleanup.cleared) {
657
799
  await persistence_1.DialogPersistence.removeDriveWatchForDialog(dialog.id, dialog.status);
658
800
  }
659
- log_1.log.warn('Dropped stale no-prompt sideDialog drive after final response anchor', undefined, {
801
+ log_1.log.debug('Dropped stale no-prompt sideDialog drive after final response anchor', undefined, {
660
802
  dialogId: dialog.id.valueOf(),
661
803
  rootId: dialog.id.rootId,
662
804
  selfId: dialog.id.selfId,
@@ -713,6 +855,22 @@ async function executeDriveRound(args) {
713
855
  try {
714
856
  const inspection = await inspectNoPromptSideDialogDrive({ dialog, driveOptions });
715
857
  if (inspection.shouldReject) {
858
+ if (inspection.rejection === 'stale_consumed_result_arrival') {
859
+ log_1.log.debug('Dropped stale no-prompt sideDialog caller revive after result arrival', undefined, {
860
+ dialogId: dialog.id.valueOf(),
861
+ rootId: dialog.id.rootId,
862
+ selfId: dialog.id.selfId,
863
+ source: inspection.source,
864
+ reason: driveOptions?.reason ?? null,
865
+ rejection: inspection.rejection,
866
+ allowResumeFromInterrupted: driveOptions?.allowResumeFromInterrupted === true,
867
+ displayState: inspection.displayState ?? null,
868
+ currentCourse: inspection.currentCourse,
869
+ sideDialogFinalResponseCallId: inspection.sideDialogFinalResponseCallId ?? null,
870
+ waitInQue,
871
+ });
872
+ return;
873
+ }
716
874
  log_1.log.error('Rejected unexpected no-prompt sideDialog drive request', undefined, {
717
875
  dialogId: dialog.id.valueOf(),
718
876
  rootId: dialog.id.rootId,
@@ -909,6 +1067,18 @@ async function executeDriveRound(args) {
909
1067
  dialog,
910
1068
  latest: latestBeforeCore,
911
1069
  }));
1070
+ if (resolvedPrompt.droppedStaleQueuedContinuation &&
1071
+ effectivePrompt === undefined &&
1072
+ !(0, dialog_drive_work_1.hasDurableDriveWork)(latestBeforeCore)) {
1073
+ log_1.log.debug('kernel-driver stopped after dropping stale queued continuation', undefined, {
1074
+ dialogId: dialog.id.valueOf(),
1075
+ rootId: dialog.id.rootId,
1076
+ selfId: dialog.id.selfId,
1077
+ source: driveSource,
1078
+ reason: driveOptions?.reason ?? null,
1079
+ });
1080
+ return;
1081
+ }
912
1082
  await applyRegisteredDialogRunControlsBeforeDrive({
913
1083
  dialog,
914
1084
  humanPrompt,
@@ -942,7 +1112,7 @@ async function executeDriveRound(args) {
942
1112
  replyGuidance.deferredReplyReassertionDirective !== undefined;
943
1113
  activeTellaskReplyDirective = replyGuidance.activeReplyDirective;
944
1114
  activePromptWasReplyToolReminder = isReplyToolReminderPrompt(effectivePrompt);
945
- const activePromptCarriesReplyDirective = effectivePrompt?.tellaskReplyDirective !== undefined &&
1115
+ let activePromptCarriesReplyDirective = effectivePrompt?.tellaskReplyDirective !== undefined &&
946
1116
  activeTellaskReplyDirective !== undefined &&
947
1117
  effectivePrompt.tellaskReplyDirective.targetCallId ===
948
1118
  activeTellaskReplyDirective.targetCallId;
@@ -973,7 +1143,31 @@ async function executeDriveRound(args) {
973
1143
  calleeDialogReplyTarget = driveResult.lastAssistantReplyTarget ?? calleeDialogReplyTarget;
974
1144
  interruptedBySignal = (0, dialog_display_state_1.getActiveRunSignal)(dialog.id)?.aborted === true;
975
1145
  if (!interruptedBySignal) {
976
- followUp = dialog.takeUpNext();
1146
+ const queuedFollowUp = dialog.takeUpNext();
1147
+ if (queuedFollowUp && isQueuedReplyObligationContinuation(queuedFollowUp)) {
1148
+ const claim = await claimQueuedReplyObligationContinuation({
1149
+ dialog,
1150
+ prompt: queuedFollowUp,
1151
+ });
1152
+ if (claim === 'stale') {
1153
+ await persistence_1.DialogPersistence.clearPendingRuntimePrompt(dialog.id, queuedFollowUp.msgId, dialog.status);
1154
+ log_1.log.debug('kernel-driver dropped stale reply obligation follow-up after core', undefined, {
1155
+ dialogId: dialog.id.valueOf(),
1156
+ rootId: dialog.id.rootId,
1157
+ selfId: dialog.id.selfId,
1158
+ msgId: queuedFollowUp.msgId,
1159
+ targetCallId: queuedFollowUp.tellaskReplyDirective.targetCallId,
1160
+ expectedReplyCallName: queuedFollowUp.tellaskReplyDirective.expectedReplyCallName,
1161
+ });
1162
+ followUp = undefined;
1163
+ }
1164
+ else {
1165
+ followUp = queuedFollowUp;
1166
+ }
1167
+ }
1168
+ else {
1169
+ followUp = queuedFollowUp;
1170
+ }
977
1171
  }
978
1172
  let tailError;
979
1173
  try {
@@ -1021,6 +1215,31 @@ async function executeDriveRound(args) {
1021
1215
  });
1022
1216
  }
1023
1217
  else {
1218
+ const replyDirectiveForAssistantOutput = await resolveSideDialogReplyDirectiveForAssistantOutput({
1219
+ dialog,
1220
+ responseGenseq: directFallbackResponse.responseGenseq,
1221
+ replyTarget: driveResult.lastAssistantReplyTarget,
1222
+ currentDirective: activeTellaskReplyDirective,
1223
+ });
1224
+ if (replyDirectiveForAssistantOutput !== undefined &&
1225
+ replyDirectiveForAssistantOutput.targetCallId !==
1226
+ activeTellaskReplyDirective?.targetCallId) {
1227
+ // `driveDialogStreamCore` may already have consumed a queued assignment-update prompt
1228
+ // inside the same drive, so rebind the tail decision to the assistant output target.
1229
+ log_1.log.debug('kernel-driver rebound sideDialog reply directive to latest assistant output target', undefined, {
1230
+ dialogId: dialog.id.valueOf(),
1231
+ previousTargetCallId: activeTellaskReplyDirective?.targetCallId ?? null,
1232
+ nextTargetCallId: replyDirectiveForAssistantOutput.targetCallId,
1233
+ responseGenseq: directFallbackResponse.responseGenseq,
1234
+ replyTargetCallId: driveResult.lastAssistantReplyTarget?.callId ?? null,
1235
+ });
1236
+ }
1237
+ activeTellaskReplyDirective = replyDirectiveForAssistantOutput;
1238
+ activePromptCarriesReplyDirective =
1239
+ activePromptCarriesReplyDirective ||
1240
+ (activeTellaskReplyDirective !== undefined &&
1241
+ driveResult.lastAssistantReplyTarget?.callId ===
1242
+ activeTellaskReplyDirective.targetCallId);
1024
1243
  const hasFollowUp = followUp !== undefined;
1025
1244
  const suspension = await dialog.getSuspensionStatus();
1026
1245
  const backgroundCalleeBlocksImplicitReply = suspension.backgroundCalleeDialogs &&
@@ -1195,12 +1414,6 @@ async function executeDriveRound(args) {
1195
1414
  driveOptions: {
1196
1415
  source: 'kernel_driver_follow_up',
1197
1416
  reason: 'follow_up_prompt',
1198
- noPromptSideDialogResumeEntitlement: dialog instanceof dialog_1.SideDialog
1199
- ? {
1200
- callerDialogId: dialog.id.selfId,
1201
- reason: 'reply_obligation_follow_up',
1202
- }
1203
- : undefined,
1204
1417
  },
1205
1418
  });
1206
1419
  return driveResult;
@@ -125,9 +125,6 @@ async function resolveFreshCurrentSideDialogAssignmentDirective(args) {
125
125
  if (!latest) {
126
126
  return undefined;
127
127
  }
128
- if (latest.pendingRuntimePrompt?.msgId !== args.prompt.msgId) {
129
- return undefined;
130
- }
131
128
  if (latest.sideDialogFinalResponse?.callId === currentAssignmentDirective.targetCallId.trim()) {
132
129
  return undefined;
133
130
  }
@@ -122,6 +122,7 @@ export type TellaskFunctionRoundResult = Readonly<{
122
122
  hasImmediateTellaskOutputs: boolean;
123
123
  immediateTellaskOutputCallIds: readonly string[];
124
124
  shouldStopAfterReplyTool: boolean;
125
+ shouldStopAfterPendingTellaskWait: boolean;
125
126
  }>;
126
127
  export declare function processTellaskFunctionRound(args: {
127
128
  dlg: Dialog;
@@ -2390,6 +2390,7 @@ async function processTellaskFunctionRound(args) {
2390
2390
  const tellaskToolOutputs = [];
2391
2391
  const immediateTellaskOutputCallIds = [];
2392
2392
  let hasImmediateTellaskOutputs = false;
2393
+ let shouldStopAfterPendingTellaskWait = false;
2393
2394
  for (const output of tellaskExecution.toolOutputs) {
2394
2395
  if (output.type === 'func_result_msg') {
2395
2396
  const result = output;
@@ -2445,6 +2446,7 @@ async function processTellaskFunctionRound(args) {
2445
2446
  });
2446
2447
  tellaskFuncResultByCallId.set(call.callId, pendingResult);
2447
2448
  tellaskFuncResults.push(pendingResult);
2449
+ shouldStopAfterPendingTellaskWait = true;
2448
2450
  }
2449
2451
  for (const result of tellaskFuncResults) {
2450
2452
  await persistTellaskFuncResult(args.dlg, result);
@@ -2459,5 +2461,6 @@ async function processTellaskFunctionRound(args) {
2459
2461
  hasImmediateTellaskOutputs,
2460
2462
  immediateTellaskOutputCallIds,
2461
2463
  shouldStopAfterReplyTool: orderedInvalidCalls.length === 0 && tellaskExecution.successfulReplyCallIds.length > 0,
2464
+ shouldStopAfterPendingTellaskWait,
2462
2465
  };
2463
2466
  }
@@ -21,9 +21,6 @@ export type KernelDriverDriveOptions = Readonly<{
21
21
  sideDialogId?: string;
22
22
  callType?: 'A' | 'B' | 'C';
23
23
  callId?: string;
24
- }> | Readonly<{
25
- callerDialogId: string;
26
- reason: 'reply_obligation_follow_up';
27
24
  }> | Readonly<{
28
25
  callerDialogId: string;
29
26
  reason: 'resolved_pending_sideDialog_reply';
@@ -478,6 +478,7 @@ export declare class DialogPersistence {
478
478
  private static loadDriveWatchFromDisk;
479
479
  private static writeDriveWatchToDisk;
480
480
  private static mutateDriveWatch;
481
+ private static removeWithRetry;
481
482
  static loadDriveWatchedDialogIds(rootDialogId: DialogID, status?: DialogStatusKind): Promise<readonly DialogID[]>;
482
483
  private static setDialogDriveWatched;
483
484
  static syncDriveWatchForDialogLatest(dialogId: DialogID, latest: DialogLatestFile, status?: DialogStatusKind): Promise<void>;
@@ -412,6 +412,16 @@ function getErrorCode(error) {
412
412
  const maybeCode = error.code;
413
413
  return typeof maybeCode === 'string' ? maybeCode : undefined;
414
414
  }
415
+ const RETRYABLE_FILESYSTEM_ERROR_CODES = new Set(['ENOENT', 'EPERM', 'EACCES', 'EBUSY']);
416
+ const FILESYSTEM_RETRY_BASE_DELAY_MS = 20;
417
+ const FILESYSTEM_RETRY_MAX_DELAY_MS = 250;
418
+ function getFilesystemRetryDelayMs(attempt) {
419
+ const delayMs = FILESYSTEM_RETRY_BASE_DELAY_MS * 2 ** (attempt - 1);
420
+ return Math.min(FILESYSTEM_RETRY_MAX_DELAY_MS, delayMs);
421
+ }
422
+ async function sleepForFilesystemRetry(attempt) {
423
+ await new Promise((resolve) => setTimeout(resolve, getFilesystemRetryDelayMs(attempt)));
424
+ }
415
425
  function isGenericUnexpectedEofLikeError(error) {
416
426
  const message = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();
417
427
  return message.includes('unexpected eof') || message.includes('unexpected end');
@@ -6696,7 +6706,7 @@ class DialogPersistence {
6696
6706
  const normalized = this.normalizeDriveWatchFile(file);
6697
6707
  const filePath = this.getDriveWatchFilePath(rootDialogId, status);
6698
6708
  if (normalized.dialogs.length === 0) {
6699
- await fs.promises.rm(filePath, { force: true });
6709
+ await this.removeWithRetry(filePath);
6700
6710
  return;
6701
6711
  }
6702
6712
  const dialogPath = this.getMainDialogPath(rootDialogId, status);
@@ -6720,6 +6730,24 @@ class DialogPersistence {
6720
6730
  release();
6721
6731
  }
6722
6732
  }
6733
+ static async removeWithRetry(filePath, maxRetries = 5) {
6734
+ let lastError;
6735
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
6736
+ try {
6737
+ await fs.promises.rm(filePath, { force: true });
6738
+ return;
6739
+ }
6740
+ catch (error) {
6741
+ lastError = error instanceof Error ? error : new Error(String(error));
6742
+ const errorCode = getErrorCode(error);
6743
+ if (!RETRYABLE_FILESYSTEM_ERROR_CODES.has(errorCode ?? '') || attempt === maxRetries) {
6744
+ throw error;
6745
+ }
6746
+ await sleepForFilesystemRetry(attempt);
6747
+ }
6748
+ }
6749
+ throw lastError;
6750
+ }
6723
6751
  static async loadDriveWatchedDialogIds(rootDialogId, status = 'running') {
6724
6752
  try {
6725
6753
  const file = await this.loadDriveWatchFromDisk(rootDialogId, status);
@@ -7753,11 +7781,12 @@ class DialogPersistence {
7753
7781
  throw error;
7754
7782
  }
7755
7783
  lastError = error instanceof Error ? error : new Error(String(error));
7756
- if (getErrorCode(error) !== 'ENOENT' || attempt === maxRetries) {
7784
+ const errorCode = getErrorCode(error);
7785
+ if (!RETRYABLE_FILESYSTEM_ERROR_CODES.has(errorCode ?? '') || attempt === maxRetries) {
7757
7786
  throw error;
7758
7787
  }
7759
- // Exponential backoff for ENOENT (race condition or sync issue)
7760
- await new Promise((resolve) => setTimeout(resolve, 20 * attempt));
7788
+ // Exponential backoff for transient filesystem contention.
7789
+ await sleepForFilesystemRetry(attempt);
7761
7790
  }
7762
7791
  }
7763
7792
  throw lastError;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dominds",
3
- "version": "1.24.2",
3
+ "version": "1.24.3",
4
4
  "description": "Dominds CLI and aggregation shell for the LongRun AI kernel/runtime packages.",
5
5
  "type": "commonjs",
6
6
  "publishConfig": {
@@ -53,8 +53,8 @@
53
53
  "yaml": "^2.8.2",
54
54
  "zod": "^4.3.6",
55
55
  "@longrun-ai/codex-auth": "0.13.0",
56
- "@longrun-ai/kernel": "1.14.0",
57
- "@longrun-ai/shell": "1.14.0"
56
+ "@longrun-ai/shell": "1.14.0",
57
+ "@longrun-ai/kernel": "1.14.0"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@types/node": "^25.3.5",
@@ -1,5 +1,5 @@
1
- import { e as isSymbol, c as baseFlatten, g as baseIteratee, k as keys, h as baseFindIndex, j as baseEach, l as arrayMap, m as hasPath, n as castPath, t as toKey, o as baseGet } from "./_baseUniq-CQmc9B-o.js";
2
- import { aU as isObject, aC as baseRest, aV as isIterateeCall, aW as keysIn, aX as eq, aY as isArrayLike, aZ as isArray, a_ as identity, a$ as isIndex, b0 as assignValue } from "./index-DuQ1OCMG.js";
1
+ import { e as isSymbol, c as baseFlatten, g as baseIteratee, k as keys, h as baseFindIndex, j as baseEach, l as arrayMap, m as hasPath, n as castPath, t as toKey, o as baseGet } from "./_baseUniq-D0wSOJ06.js";
2
+ import { aU as isObject, aC as baseRest, aV as isIterateeCall, aW as keysIn, aX as eq, aY as isArrayLike, aZ as isArray, a_ as identity, a$ as isIndex, b0 as assignValue } from "./index-CDCDAfqP.js";
3
3
  var reWhitespace = /\s/;
4
4
  function trimmedEndIndex(string) {
5
5
  var index = string.length;
@@ -193,4 +193,4 @@ export {
193
193
  map as m,
194
194
  toFinite as t
195
195
  };
196
- //# sourceMappingURL=_basePickBy-DBvh4H3k.js.map
196
+ //# sourceMappingURL=_basePickBy-ZLV93S3E.js.map