dominds 1.25.8 → 1.25.10

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 (152) hide show
  1. package/dist/llm/kernel-driver/drive.js +168 -31
  2. package/dist/llm/kernel-driver/idle-reminder-wake.js +76 -37
  3. package/dist/persistence.js +1 -1
  4. package/dist/server/dominds-self-update.d.ts +1 -0
  5. package/dist/server/dominds-self-update.js +27 -1
  6. package/dist/server.js +13 -0
  7. package/package.json +3 -3
  8. package/webapp/dist/assets/{_basePickBy-CATeRp8S.js → _basePickBy-B4PyBhGX.js} +3 -3
  9. package/webapp/dist/assets/_basePickBy-B4PyBhGX.js.map +1 -0
  10. package/webapp/dist/assets/{_baseUniq-CFRLPgeM.js → _baseUniq-Cj1Wg2fB.js} +2 -2
  11. package/webapp/dist/assets/_baseUniq-Cj1Wg2fB.js.map +1 -0
  12. package/webapp/dist/assets/{arc-CB9bI1EY.js → arc-CWrSn-79.js} +2 -2
  13. package/webapp/dist/assets/arc-CWrSn-79.js.map +1 -0
  14. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-CCpiy2xw.js → architectureDiagram-2XIMDMQ5-7iHYM2Z2.js} +26 -8
  15. package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-7iHYM2Z2.js.map +1 -0
  16. package/webapp/dist/assets/{blockDiagram-VD42YOAC-DgzrbcBd.js → blockDiagram-WCTKOSBZ-B1TGBHuF.js} +187 -170
  17. package/webapp/dist/assets/blockDiagram-WCTKOSBZ-B1TGBHuF.js.map +1 -0
  18. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-C0LCDSs6.js → c4Diagram-IC4MRINW-BXTEEF9u.js} +4 -4
  19. package/webapp/dist/assets/c4Diagram-IC4MRINW-BXTEEF9u.js.map +1 -0
  20. package/webapp/dist/assets/{channel-sKpY2JZ5.js → channel-C9f2l1ub.js} +2 -2
  21. package/webapp/dist/assets/channel-C9f2l1ub.js.map +1 -0
  22. package/webapp/dist/assets/{chunk-4BX2VUAB-D9_yL_TQ.js → chunk-4BX2VUAB-CXrwbryc.js} +2 -2
  23. package/webapp/dist/assets/chunk-4BX2VUAB-CXrwbryc.js.map +1 -0
  24. package/webapp/dist/assets/{chunk-55IACEB6-CTuUncSx.js → chunk-55IACEB6-WAoUKKa8.js} +2 -2
  25. package/webapp/dist/assets/chunk-55IACEB6-WAoUKKa8.js.map +1 -0
  26. package/webapp/dist/assets/{chunk-FMBD7UC4-CyCMHG2I.js → chunk-FMBD7UC4-CP1cvzbf.js} +2 -2
  27. package/webapp/dist/assets/chunk-FMBD7UC4-CP1cvzbf.js.map +1 -0
  28. package/webapp/dist/assets/{chunk-TZMSLE5B-CEOLgAwG.js → chunk-JSJVCQXG-Od7hQgy7.js} +14 -6
  29. package/webapp/dist/assets/chunk-JSJVCQXG-Od7hQgy7.js.map +1 -0
  30. package/webapp/dist/assets/{chunk-QN33PNHL-DPr_6BJj.js → chunk-KX2RTZJC-Cp53YoAm.js} +2 -2
  31. package/webapp/dist/assets/chunk-KX2RTZJC-Cp53YoAm.js.map +1 -0
  32. package/webapp/dist/assets/{chunk-DI55MBZ5-BoHV50iw.js → chunk-NQ4KR5QH-DkyaPUwI.js} +9 -7
  33. package/webapp/dist/assets/chunk-NQ4KR5QH-DkyaPUwI.js.map +1 -0
  34. package/webapp/dist/assets/{chunk-QZHKN3VN-B87nIEZP.js → chunk-QZHKN3VN-DPcrZWPF.js} +2 -2
  35. package/webapp/dist/assets/chunk-QZHKN3VN-DPcrZWPF.js.map +1 -0
  36. package/webapp/dist/assets/{chunk-B4BG7PRW-Ceelj1iX.js → chunk-WL4C6EOR-BCx3EtFm.js} +171 -121
  37. package/webapp/dist/assets/chunk-WL4C6EOR-BCx3EtFm.js.map +1 -0
  38. package/webapp/dist/assets/{classDiagram-2ON5EDUG-OU3Rb0MK.js → classDiagram-VBA2DB6C-BnwaVhDD.js} +7 -6
  39. package/webapp/dist/assets/classDiagram-VBA2DB6C-BnwaVhDD.js.map +1 -0
  40. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-OU3Rb0MK.js → classDiagram-v2-RAHNMMFH-BnwaVhDD.js} +7 -6
  41. package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-BnwaVhDD.js.map +1 -0
  42. package/webapp/dist/assets/{clone-DPJ1e01h.js → clone-B32zbBXk.js} +2 -2
  43. package/webapp/dist/assets/clone-B32zbBXk.js.map +1 -0
  44. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-Eb4tTnqa.js → cose-bilkent-S5V4N54A-DexuXMat.js} +2 -2
  45. package/webapp/dist/assets/cose-bilkent-S5V4N54A-DexuXMat.js.map +1 -0
  46. package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
  47. package/webapp/dist/assets/{dagre-6UL2VRFP--wouwNZD.js → dagre-KLK3FWXG-D-3S_ma4.js} +7 -7
  48. package/webapp/dist/assets/dagre-KLK3FWXG-D-3S_ma4.js.map +1 -0
  49. package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
  50. package/webapp/dist/assets/{diagram-PSM6KHXK-Da_Qnble.js → diagram-E7M64L7V-CR7hat4A.js} +10 -10
  51. package/webapp/dist/assets/diagram-E7M64L7V-CR7hat4A.js.map +1 -0
  52. package/webapp/dist/assets/{diagram-QEK2KX5R-BhOtufwo.js → diagram-IFDJBPK2-B6qnqfZU.js} +9 -8
  53. package/webapp/dist/assets/diagram-IFDJBPK2-B6qnqfZU.js.map +1 -0
  54. package/webapp/dist/assets/{diagram-S2PKOQOG-k-LiSr-7.js → diagram-P4PSJMXO-BDGFMbld.js} +8 -8
  55. package/webapp/dist/assets/diagram-P4PSJMXO-BDGFMbld.js.map +1 -0
  56. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-DSTHWIXm.js → erDiagram-INFDFZHY-BcXnNg1A.js} +96 -75
  57. package/webapp/dist/assets/erDiagram-INFDFZHY-BcXnNg1A.js.map +1 -0
  58. package/webapp/dist/assets/{flowDiagram-NV44I4VS-BjS-xbaY.js → flowDiagram-PKNHOUZH-CgKu7usU.js} +98 -81
  59. package/webapp/dist/assets/flowDiagram-PKNHOUZH-CgKu7usU.js.map +1 -0
  60. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-DAgcUpJe.js → ganttDiagram-A5KZAMGK-BwkrQGcZ.js} +28 -3
  61. package/webapp/dist/assets/ganttDiagram-A5KZAMGK-BwkrQGcZ.js.map +1 -0
  62. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-i1vEkfoe.js → gitGraphDiagram-K3NZZRJ6-CVqi-T5p.js} +38 -46
  63. package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-CVqi-T5p.js.map +1 -0
  64. package/webapp/dist/assets/graph-B7VL6q5k.js +782 -0
  65. package/webapp/dist/assets/graph-B7VL6q5k.js.map +1 -0
  66. package/webapp/dist/assets/{index-piqwT9B7.js → index-4xG_gPRh.js} +1048 -1141
  67. package/webapp/dist/assets/{index-piqwT9B7.js.map → index-4xG_gPRh.js.map} +1 -1
  68. package/webapp/dist/assets/{index-yycTJNYb.css → index-BQoNJEGT.css} +1 -1
  69. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BH-Wj-38.js → infoDiagram-LFFYTUFH-a9WBcgds.js} +7 -7
  70. package/webapp/dist/assets/infoDiagram-LFFYTUFH-a9WBcgds.js.map +1 -0
  71. package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
  72. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-Bhiex3_9.js +966 -0
  73. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-Bhiex3_9.js.map +1 -0
  74. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-B5c5iW9X.js → journeyDiagram-4ABVD52K-DdMDmgOQ.js} +5 -5
  75. package/webapp/dist/assets/journeyDiagram-4ABVD52K-DdMDmgOQ.js.map +1 -0
  76. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-fgYwmV5l.js → kanban-definition-K7BYSVSG-C02Ns-Ee.js} +5 -3
  77. package/webapp/dist/assets/kanban-definition-K7BYSVSG-C02Ns-Ee.js.map +1 -0
  78. package/webapp/dist/assets/{layout-Dc9UeLis.js → layout-CKFoJLnz.js} +5 -5
  79. package/webapp/dist/assets/layout-CKFoJLnz.js.map +1 -0
  80. package/webapp/dist/assets/{linear-DFqZ7yVr.js → linear-DK87WR34.js} +2 -2
  81. package/webapp/dist/assets/linear-DK87WR34.js.map +1 -0
  82. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-CWXQmWf-.js → mindmap-definition-YRQLILUH-CNPEaAdT.js} +7 -5
  83. package/webapp/dist/assets/mindmap-definition-YRQLILUH-CNPEaAdT.js.map +1 -0
  84. package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
  85. package/webapp/dist/assets/{pieDiagram-ADFJNKIX-Dmm4opIx.js → pieDiagram-SKSYHLDU-BAieZgqR.js} +8 -8
  86. package/webapp/dist/assets/pieDiagram-SKSYHLDU-BAieZgqR.js.map +1 -0
  87. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-L48S6y-Y.js → quadrantDiagram-337W2JSQ-DNfJ-efQ.js} +3 -3
  88. package/webapp/dist/assets/quadrantDiagram-337W2JSQ-DNfJ-efQ.js.map +1 -0
  89. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-uQa6qCTU.js → requirementDiagram-Z7DCOOCP-Ci2ficlW.js} +16 -6
  90. package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-Ci2ficlW.js.map +1 -0
  91. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-4wM4sZjA.js → sankeyDiagram-WA2Y5GQK-y2RH0qmH.js} +2 -2
  92. package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-y2RH0qmH.js.map +1 -0
  93. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-EZlETI0Q.js → sequenceDiagram-2WXFIKYE-C4Mbfwyu.js} +601 -201
  94. package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-C4Mbfwyu.js.map +1 -0
  95. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-CeCT7b7S.js → stateDiagram-RAJIS63D-enKQJ7WW.js} +9 -9
  96. package/webapp/dist/assets/stateDiagram-RAJIS63D-enKQJ7WW.js.map +1 -0
  97. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-3oDsYGFz.js → stateDiagram-v2-FVOUBMTO-44zqAgYM.js} +5 -5
  98. package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-44zqAgYM.js.map +1 -0
  99. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-9k0ahO0m.js → timeline-definition-YZTLITO2-Byr_GVOH.js} +3 -3
  100. package/webapp/dist/assets/timeline-definition-YZTLITO2-Byr_GVOH.js.map +1 -0
  101. package/webapp/dist/assets/{treemap-GDKQZRPO--DQUhriC.js → treemap-KZPCXAKY-BSv-k7HC.js} +37 -24
  102. package/webapp/dist/assets/treemap-KZPCXAKY-BSv-k7HC.js.map +1 -0
  103. package/webapp/dist/assets/vennDiagram-LZ73GAT5-CPqduRWm.js +2487 -0
  104. package/webapp/dist/assets/vennDiagram-LZ73GAT5-CPqduRWm.js.map +1 -0
  105. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-VhFrAQO2.js → xychartDiagram-JWTSCODW-B8yG6HaE.js} +4 -4
  106. package/webapp/dist/assets/xychartDiagram-JWTSCODW-B8yG6HaE.js.map +1 -0
  107. package/webapp/dist/index.html +2 -2
  108. package/webapp/dist/assets/_basePickBy-CATeRp8S.js.map +0 -1
  109. package/webapp/dist/assets/_baseUniq-CFRLPgeM.js.map +0 -1
  110. package/webapp/dist/assets/arc-CB9bI1EY.js.map +0 -1
  111. package/webapp/dist/assets/architectureDiagram-VXUJARFQ-CCpiy2xw.js.map +0 -1
  112. package/webapp/dist/assets/blockDiagram-VD42YOAC-DgzrbcBd.js.map +0 -1
  113. package/webapp/dist/assets/c4Diagram-YG6GDRKO-C0LCDSs6.js.map +0 -1
  114. package/webapp/dist/assets/channel-sKpY2JZ5.js.map +0 -1
  115. package/webapp/dist/assets/chunk-4BX2VUAB-D9_yL_TQ.js.map +0 -1
  116. package/webapp/dist/assets/chunk-55IACEB6-CTuUncSx.js.map +0 -1
  117. package/webapp/dist/assets/chunk-B4BG7PRW-Ceelj1iX.js.map +0 -1
  118. package/webapp/dist/assets/chunk-DI55MBZ5-BoHV50iw.js.map +0 -1
  119. package/webapp/dist/assets/chunk-FMBD7UC4-CyCMHG2I.js.map +0 -1
  120. package/webapp/dist/assets/chunk-QN33PNHL-DPr_6BJj.js.map +0 -1
  121. package/webapp/dist/assets/chunk-QZHKN3VN-B87nIEZP.js.map +0 -1
  122. package/webapp/dist/assets/chunk-TZMSLE5B-CEOLgAwG.js.map +0 -1
  123. package/webapp/dist/assets/classDiagram-2ON5EDUG-OU3Rb0MK.js.map +0 -1
  124. package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-OU3Rb0MK.js.map +0 -1
  125. package/webapp/dist/assets/clone-DPJ1e01h.js.map +0 -1
  126. package/webapp/dist/assets/cose-bilkent-S5V4N54A-Eb4tTnqa.js.map +0 -1
  127. package/webapp/dist/assets/dagre-6UL2VRFP--wouwNZD.js.map +0 -1
  128. package/webapp/dist/assets/diagram-PSM6KHXK-Da_Qnble.js.map +0 -1
  129. package/webapp/dist/assets/diagram-QEK2KX5R-BhOtufwo.js.map +0 -1
  130. package/webapp/dist/assets/diagram-S2PKOQOG-k-LiSr-7.js.map +0 -1
  131. package/webapp/dist/assets/erDiagram-Q2GNP2WA-DSTHWIXm.js.map +0 -1
  132. package/webapp/dist/assets/flowDiagram-NV44I4VS-BjS-xbaY.js.map +0 -1
  133. package/webapp/dist/assets/ganttDiagram-JELNMOA3-DAgcUpJe.js.map +0 -1
  134. package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-i1vEkfoe.js.map +0 -1
  135. package/webapp/dist/assets/graph-CxNIZAUJ.js +0 -425
  136. package/webapp/dist/assets/graph-CxNIZAUJ.js.map +0 -1
  137. package/webapp/dist/assets/infoDiagram-HS3SLOUP-BH-Wj-38.js.map +0 -1
  138. package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-B5c5iW9X.js.map +0 -1
  139. package/webapp/dist/assets/kanban-definition-3W4ZIXB7-fgYwmV5l.js.map +0 -1
  140. package/webapp/dist/assets/layout-Dc9UeLis.js.map +0 -1
  141. package/webapp/dist/assets/linear-DFqZ7yVr.js.map +0 -1
  142. package/webapp/dist/assets/mindmap-definition-VGOIOE7T-CWXQmWf-.js.map +0 -1
  143. package/webapp/dist/assets/pieDiagram-ADFJNKIX-Dmm4opIx.js.map +0 -1
  144. package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-L48S6y-Y.js.map +0 -1
  145. package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-uQa6qCTU.js.map +0 -1
  146. package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-4wM4sZjA.js.map +0 -1
  147. package/webapp/dist/assets/sequenceDiagram-WL72ISMW-EZlETI0Q.js.map +0 -1
  148. package/webapp/dist/assets/stateDiagram-FKZM4ZOC-CeCT7b7S.js.map +0 -1
  149. package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3-3oDsYGFz.js.map +0 -1
  150. package/webapp/dist/assets/timeline-definition-IT6M3QCI-9k0ahO0m.js.map +0 -1
  151. package/webapp/dist/assets/treemap-GDKQZRPO--DQUhriC.js.map +0 -1
  152. package/webapp/dist/assets/xychartDiagram-PRI3JC2R-VhFrAQO2.js.map +0 -1
@@ -1309,7 +1309,7 @@ async function maybeWriteUnexpectedIdleAfterToolRoundDebugDump(args) {
1309
1309
  throw new Error('unexpected idle debug invariant violation: diagnostics disappeared');
1310
1310
  }
1311
1311
  const capturedAt = (0, time_1.formatUnifiedTimestamp)(new Date());
1312
- const debugDir = node_path_1.default.resolve(process.cwd(), '.dislogs', 'debug');
1312
+ const debugDir = node_path_1.default.resolve(process.cwd(), '.dialogs', 'debug');
1313
1313
  const fileName = [
1314
1314
  'kernel-driver-unexpected-idle-after-tool-round',
1315
1315
  sanitizeDebugFileSegment(capturedAt),
@@ -1347,6 +1347,54 @@ async function maybeWriteUnexpectedIdleAfterToolRoundDebugDump(args) {
1347
1347
  await promises_1.default.mkdir(debugDir, { recursive: true });
1348
1348
  await promises_1.default.writeFile(node_path_1.default.join(debugDir, fileName), `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
1349
1349
  }
1350
+ async function writeMissingImmediateFollowupTriggerDebugDump(args) {
1351
+ const capturedAt = (0, time_1.formatUnifiedTimestamp)(new Date());
1352
+ const debugDir = node_path_1.default.resolve(process.cwd(), '.dialogs', 'debug');
1353
+ const trigger = args.expectation.trigger;
1354
+ const fileName = [
1355
+ 'kernel-driver-missing-immediate-followup-trigger',
1356
+ sanitizeDebugFileSegment(capturedAt),
1357
+ sanitizeDebugFileSegment(args.dlg.id.rootId),
1358
+ sanitizeDebugFileSegment(args.dlg.id.selfId),
1359
+ sanitizeDebugFileSegment(trigger.triggerId),
1360
+ `${(0, id_1.generateShortId)()}.json`,
1361
+ ].join('-');
1362
+ const activeCallees = await persistence_1.DialogPersistence.loadActiveCallees(args.dlg.id, args.dlg.status);
1363
+ const suspension = await args.dlg.getSuspensionStatus();
1364
+ const payload = {
1365
+ kind: args.repairOutcome === 'repaired'
1366
+ ? 'kernel_driver_missing_immediate_followup_trigger_repaired'
1367
+ : 'kernel_driver_missing_immediate_followup_trigger_repair_failed',
1368
+ capturedAt,
1369
+ rtwsRootAbs: process.cwd(),
1370
+ repairOutcome: args.repairOutcome,
1371
+ checkPoint: args.checkPoint,
1372
+ dialog: {
1373
+ rootId: args.dlg.id.rootId,
1374
+ selfId: args.dlg.id.selfId,
1375
+ value: args.dlg.id.valueOf(),
1376
+ agentId: args.dlg.agentId,
1377
+ status: args.dlg.status,
1378
+ currentCourse: args.dlg.currentCourse,
1379
+ activeGenCourse: args.dlg.activeGenCourseOrUndefined ?? null,
1380
+ activeGenSeq: args.dlg.activeGenSeqOrUndefined ?? null,
1381
+ hasQueuedPrompt: args.dlg.hasQueuedPrompt(),
1382
+ queuedPrompt: args.dlg.peekQueuedPrompt() ?? null,
1383
+ },
1384
+ expectation: args.expectation,
1385
+ latestBeforeRepair: args.latestBeforeRepair,
1386
+ latestAfterRepair: args.latestAfterRepair,
1387
+ activeCallees,
1388
+ suspension,
1389
+ callstack: new Error(args.repairOutcome === 'repaired'
1390
+ ? 'kernel-driver missing immediate followup trigger repaired'
1391
+ : 'kernel-driver missing immediate followup trigger repair failed').stack ?? null,
1392
+ };
1393
+ await promises_1.default.mkdir(debugDir, { recursive: true });
1394
+ const debugPath = node_path_1.default.join(debugDir, fileName);
1395
+ await promises_1.default.writeFile(debugPath, `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
1396
+ return debugPath;
1397
+ }
1350
1398
  async function maybeWriteIdleWithActiveReplyObligationDebugDump(args) {
1351
1399
  if (args.finalDisplayState.kind !== 'idle_waiting_user') {
1352
1400
  return;
@@ -1355,7 +1403,7 @@ async function maybeWriteIdleWithActiveReplyObligationDebugDump(args) {
1355
1403
  return;
1356
1404
  }
1357
1405
  const capturedAt = (0, time_1.formatUnifiedTimestamp)(new Date());
1358
- const debugDir = node_path_1.default.resolve(process.cwd(), '.dislogs', 'debug');
1406
+ const debugDir = node_path_1.default.resolve(process.cwd(), '.dialogs', 'debug');
1359
1407
  const fileName = [
1360
1408
  'kernel-driver-idle-with-active-reply-obligation',
1361
1409
  sanitizeDebugFileSegment(capturedAt),
@@ -1392,7 +1440,7 @@ async function maybeWriteIdleWithActiveReplyObligationDebugDump(args) {
1392
1440
  await promises_1.default.mkdir(debugDir, { recursive: true });
1393
1441
  await promises_1.default.writeFile(node_path_1.default.join(debugDir, fileName), `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
1394
1442
  }
1395
- async function upsertImmediateFollowupTrigger(args) {
1443
+ function buildImmediateFollowupTriggerExpectation(args) {
1396
1444
  const reasons = [];
1397
1445
  if (args.routed.immediateFollowupCallIds.length > 0) {
1398
1446
  reasons.push({
@@ -1418,11 +1466,11 @@ async function upsertImmediateFollowupTrigger(args) {
1418
1466
  });
1419
1467
  }
1420
1468
  if (reasons.length === 0) {
1421
- return;
1469
+ return undefined;
1422
1470
  }
1423
1471
  const course = args.dlg.activeGenCourseOrUndefined ?? args.dlg.currentCourse;
1424
1472
  const genseq = args.dlg.activeGenSeq;
1425
- await persistence_1.DialogPersistence.upsertNextStepTrigger(args.dlg.id, {
1473
+ const trigger = {
1426
1474
  triggerId: `followup:c${String(course)}:g${String(genseq)}`,
1427
1475
  kind: 'followup',
1428
1476
  sourceGeneration: {
@@ -1431,7 +1479,74 @@ async function upsertImmediateFollowupTrigger(args) {
1431
1479
  },
1432
1480
  reasons,
1433
1481
  continuation: args.continuation,
1482
+ };
1483
+ return {
1484
+ trigger,
1485
+ callIds: args.streamedFuncCalls.map((call) => call.id),
1486
+ callNames: args.streamedFuncCalls.map((call) => call.name),
1487
+ routed: summarizeRoutedFunctionResult(args.routed),
1488
+ continuation: args.continuation,
1489
+ invalidFuncCallCount: args.invalidFuncCallCount,
1490
+ };
1491
+ }
1492
+ async function upsertImmediateFollowupTrigger(dlg, expectation) {
1493
+ await persistence_1.DialogPersistence.upsertNextStepTrigger(dlg.id, expectation.trigger, dlg.status);
1494
+ }
1495
+ function hasExpectedImmediateFollowupTrigger(latest, expectation) {
1496
+ return (latest?.nextStep.triggers.some((trigger) => trigger.kind === 'followup' && trigger.triggerId === expectation.trigger.triggerId) === true);
1497
+ }
1498
+ async function repairMissingImmediateFollowupTrigger(args) {
1499
+ const expectation = args.expectation;
1500
+ if (expectation === undefined) {
1501
+ return;
1502
+ }
1503
+ const latestBeforeRepair = await persistence_1.DialogPersistence.loadDialogLatest(args.dlg.id, args.dlg.status);
1504
+ if (hasExpectedImmediateFollowupTrigger(latestBeforeRepair, expectation)) {
1505
+ return;
1506
+ }
1507
+ await persistence_1.DialogPersistence.upsertNextStepTrigger(args.dlg.id, expectation.trigger, args.dlg.status);
1508
+ const latestAfterRepair = await persistence_1.DialogPersistence.loadDialogLatest(args.dlg.id, args.dlg.status);
1509
+ const repairSucceeded = hasExpectedImmediateFollowupTrigger(latestAfterRepair, expectation);
1510
+ const repairOutcome = repairSucceeded
1511
+ ? 'repaired'
1512
+ : 'repair_failed';
1513
+ const debugPath = await writeMissingImmediateFollowupTriggerDebugDump({
1514
+ dlg: args.dlg,
1515
+ expectation,
1516
+ latestBeforeRepair,
1517
+ latestAfterRepair,
1518
+ checkPoint: args.checkPoint,
1519
+ repairOutcome,
1434
1520
  });
1521
+ const message = `${repairSucceeded ? 'Repaired' : 'Failed to repair'} missing immediate follow-up trigger after function results ` +
1522
+ `(triggerId=${expectation.trigger.triggerId}, checkPoint=${args.checkPoint})`;
1523
+ log_1.log.error(message, new Error(`kernel_driver_missing_immediate_followup_trigger_${repairOutcome}`), {
1524
+ rootId: args.dlg.id.rootId,
1525
+ selfId: args.dlg.id.selfId,
1526
+ dialogId: args.dlg.id.valueOf(),
1527
+ status: args.dlg.status,
1528
+ triggerId: expectation.trigger.triggerId,
1529
+ checkPoint: args.checkPoint,
1530
+ repairSucceeded,
1531
+ sourceGeneration: expectation.trigger.sourceGeneration,
1532
+ reasonKinds: expectation.trigger.reasons.map((reason) => reason.kind),
1533
+ callIds: expectation.callIds,
1534
+ callNames: expectation.callNames,
1535
+ invalidFuncCallCount: expectation.invalidFuncCallCount,
1536
+ continuation: expectation.continuation,
1537
+ routed: expectation.routed,
1538
+ latestBeforeRepairNextStep: latestBeforeRepair?.nextStep ?? null,
1539
+ latestBeforeRepairGenerationRunState: latestBeforeRepair?.generationRunState ?? null,
1540
+ latestBeforeRepairDisplayState: latestBeforeRepair?.displayState ?? null,
1541
+ latestAfterRepairNextStep: latestAfterRepair?.nextStep ?? null,
1542
+ latestAfterRepairGenerationRunState: latestAfterRepair?.generationRunState ?? null,
1543
+ latestAfterRepairDisplayState: latestAfterRepair?.displayState ?? null,
1544
+ debugPath,
1545
+ });
1546
+ await args.dlg.streamError(`${message}; debug=${debugPath}`);
1547
+ if (!repairSucceeded) {
1548
+ throw new Error(`${message}; debug=${debugPath}`);
1549
+ }
1435
1550
  }
1436
1551
  function shouldImmediatelyFollowUpSuccessfulToolResult(tool) {
1437
1552
  return resolveFuncToolFollowupMode(tool) === 'immediate';
@@ -2269,6 +2384,7 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
2269
2384
  }
2270
2385
  lastBusinessContinuation = currentBusinessContinuation;
2271
2386
  let generationBodyError;
2387
+ let immediateFollowupTriggerExpectation;
2272
2388
  const q4hAnswerCallId = normalizeQ4HAnswerCallId(currentPrompt?.q4hAnswerCallId);
2273
2389
  const isQ4HAnswerPrompt = q4hAnswerCallId !== undefined;
2274
2390
  try {
@@ -3139,13 +3255,38 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
3139
3255
  });
3140
3256
  break;
3141
3257
  }
3258
+ // Start an immediate post-tool generation only when this round produced tool outputs that
3259
+ // warrant same-drive LLM reaction right away. Provider-native side-channel UI events are
3260
+ // meaningful output, but they are not transcript/context inputs and therefore must not
3261
+ // trigger another immediate generation round by themselves.
3262
+ const shouldStartImmediatePostToolGeneration = routed.hasImmediateFollowupToolCalls ||
3263
+ routed.hasImmediateTellaskOutputs ||
3264
+ invalidFuncCallCount > 0;
3265
+ if (shouldStartImmediatePostToolGeneration) {
3266
+ const expectation = buildImmediateFollowupTriggerExpectation({
3267
+ dlg,
3268
+ routed,
3269
+ invalidFuncCallCount,
3270
+ streamedFuncCalls,
3271
+ continuation: currentBusinessContinuation,
3272
+ });
3273
+ if (expectation === undefined) {
3274
+ throw new Error(`Immediate follow-up trigger invariant violation: expected trigger reasons missing ` +
3275
+ `(dialog=${dlg.id.valueOf()}, course=${String(dlg.activeGenCourseOrUndefined ?? dlg.currentCourse)}, ` +
3276
+ `genseq=${String(dlg.activeGenSeq)}, immediateToolCalls=${String(routed.hasImmediateFollowupToolCalls)}, ` +
3277
+ `immediateTellaskOutputs=${String(routed.hasImmediateTellaskOutputs)}, ` +
3278
+ `invalidFuncCallCount=${String(invalidFuncCallCount)})`);
3279
+ }
3280
+ immediateFollowupTriggerExpectation = expectation;
3281
+ await upsertImmediateFollowupTrigger(dlg, immediateFollowupTriggerExpectation);
3282
+ }
3142
3283
  if (dlg.hasQueuedPrompt()) {
3143
3284
  lastToolRoundStopDiagnostics = buildToolRoundStopDiagnostics({
3144
3285
  dlg,
3145
3286
  streamedFuncCalls,
3146
3287
  routed,
3147
3288
  lastBusinessContinuation,
3148
- shouldStartImmediatePostToolGeneration: false,
3289
+ shouldStartImmediatePostToolGeneration,
3149
3290
  stopReason: 'queued_prompt_after_tool_round',
3150
3291
  queuedPromptAfterToolRound: true,
3151
3292
  remindersVer: dlg.remindersVer,
@@ -3166,7 +3307,7 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
3166
3307
  streamedFuncCalls,
3167
3308
  routed,
3168
3309
  lastBusinessContinuation,
3169
- shouldStartImmediatePostToolGeneration: false,
3310
+ shouldStartImmediatePostToolGeneration,
3170
3311
  stopReason: 'suspended_after_tool_round',
3171
3312
  suspensionAfterToolRound,
3172
3313
  queuedPromptAfterToolRound: dlg.hasQueuedPrompt(),
@@ -3176,13 +3317,6 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
3176
3317
  await preserveDiligenceBudgetAcrossQ4H(dlg);
3177
3318
  break;
3178
3319
  }
3179
- // Start an immediate post-tool generation only when this round produced tool outputs that
3180
- // warrant same-drive LLM reaction right away. Provider-native side-channel UI events are
3181
- // meaningful output, but they are not transcript/context inputs and therefore must not
3182
- // trigger another immediate generation round by themselves.
3183
- const shouldStartImmediatePostToolGeneration = routed.hasImmediateFollowupToolCalls ||
3184
- routed.hasImmediateTellaskOutputs ||
3185
- invalidFuncCallCount > 0;
3186
3320
  if (!shouldStartImmediatePostToolGeneration) {
3187
3321
  if (routed.shouldStopAfterPendingTellaskWait) {
3188
3322
  lastToolRoundStopDiagnostics = buildToolRoundStopDiagnostics({
@@ -3239,23 +3373,19 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
3239
3373
  });
3240
3374
  break;
3241
3375
  }
3242
- if (shouldStartImmediatePostToolGeneration) {
3243
- await upsertImmediateFollowupTrigger({
3244
- dlg,
3245
- routed,
3246
- invalidFuncCallCount,
3247
- streamedFuncCalls,
3248
- continuation: currentBusinessContinuation,
3249
- });
3250
- resolvingImmediateToolResultForUserPrompt =
3251
- currentGenerationBelongsToUserPrompt ||
3252
- currentGenerationBelongsToUserToolChain ||
3253
- isUserOriginPrompt(currentPrompt);
3254
- resolvingImmediateToolResultUserPromptMsgId = resolvingImmediateToolResultForUserPrompt
3255
- ? currentUserPromptMsgId
3256
- : undefined;
3257
- continue;
3258
- }
3376
+ await repairMissingImmediateFollowupTrigger({
3377
+ dlg,
3378
+ expectation: immediateFollowupTriggerExpectation,
3379
+ checkPoint: 'before_immediate_post_tool_generation_continue',
3380
+ });
3381
+ resolvingImmediateToolResultForUserPrompt =
3382
+ currentGenerationBelongsToUserPrompt ||
3383
+ currentGenerationBelongsToUserToolChain ||
3384
+ isUserOriginPrompt(currentPrompt);
3385
+ resolvingImmediateToolResultUserPromptMsgId = resolvingImmediateToolResultForUserPrompt
3386
+ ? currentUserPromptMsgId
3387
+ : undefined;
3388
+ continue;
3259
3389
  }
3260
3390
  catch (err) {
3261
3391
  generationBodyError = err;
@@ -3263,6 +3393,13 @@ async function driveDialogStreamCore(dlg, callbacks, humanPrompt, driveOptions)
3263
3393
  }
3264
3394
  finally {
3265
3395
  try {
3396
+ if (generationBodyError === undefined) {
3397
+ await repairMissingImmediateFollowupTrigger({
3398
+ dlg,
3399
+ expectation: immediateFollowupTriggerExpectation,
3400
+ checkPoint: 'before_notify_generating_finish',
3401
+ });
3402
+ }
3266
3403
  await dlg.notifyGeneratingFinish(contextHealthForGen, llmGenModelForGen);
3267
3404
  }
3268
3405
  catch (finishErr) {
@@ -103,7 +103,41 @@ ${body}
103
103
 
104
104
  Continue according to the current task context; if these events do not affect the work, do not send a placeholder acknowledgement.`;
105
105
  }
106
- async function applyWakeEventUpdates(dialog, events) {
106
+ async function loadCurrentWakeEvents(dialog, events) {
107
+ const targets = await dialog.listVisibleReminderTargets();
108
+ const targetsByReminderId = new Map();
109
+ for (const target of targets) {
110
+ const existing = targetsByReminderId.get(target.reminder.id);
111
+ if (existing) {
112
+ existing.push(target);
113
+ continue;
114
+ }
115
+ targetsByReminderId.set(target.reminder.id, [target]);
116
+ }
117
+ const currentEvents = [];
118
+ const staleEvents = [];
119
+ for (const event of events) {
120
+ if (targetsByReminderId.has(event.reminderId)) {
121
+ currentEvents.push(event);
122
+ continue;
123
+ }
124
+ staleEvents.push(event);
125
+ }
126
+ if (staleEvents.length > 0) {
127
+ log_1.log.warn('idle reminder wake dropped stale event because reminder target disappeared', undefined, {
128
+ dialogId: dialog.id.valueOf(),
129
+ rootId: dialog.id.rootId,
130
+ selfId: dialog.id.selfId,
131
+ droppedEventCount: staleEvents.length,
132
+ droppedEvents: staleEvents.map((event) => ({
133
+ eventId: event.eventId,
134
+ reminderId: event.reminderId,
135
+ })),
136
+ });
137
+ }
138
+ return { events: currentEvents, targetsByReminderId };
139
+ }
140
+ async function applyWakeEventUpdates(dialog, events, targetsByReminderId) {
107
141
  const eventsWithUpdates = events.filter((event) => event.updatedContent !== undefined || event.updatedMeta !== undefined);
108
142
  if (eventsWithUpdates.length === 0)
109
143
  return;
@@ -115,43 +149,45 @@ async function applyWakeEventUpdates(dialog, events) {
115
149
  }
116
150
  byReminderId.set(event.reminderId, event);
117
151
  }
118
- const targets = await dialog.listVisibleReminderTargets();
119
152
  const appliedReminderIds = new Set();
120
- for (const target of targets) {
121
- const event = byReminderId.get(target.reminder.id);
122
- if (!event)
123
- continue;
124
- appliedReminderIds.add(event.reminderId);
125
- const nextContent = event.updatedContent ?? target.reminder.content;
126
- const nextMeta = event.updatedMeta !== undefined ? event.updatedMeta : target.reminder.meta;
127
- if (target.source === 'dialog') {
128
- dialog.updateReminder(target.index, nextContent, nextMeta, {
129
- renderMode: target.reminder.renderMode,
130
- });
131
- continue;
153
+ for (const [reminderId, event] of byReminderId.entries()) {
154
+ const targets = targetsByReminderId.get(reminderId);
155
+ if (targets === undefined) {
156
+ throw new Error(`idle reminder wake invariant violation: current wake event lost target mapping (${reminderId})`);
132
157
  }
133
- await (0, shared_reminders_1.mutateSharedReminders)(target.target, (reminders) => {
134
- const index = reminders.findIndex((reminder) => reminder.id === target.reminder.id);
135
- if (index < 0) {
136
- throw new Error(`idle reminder wake invariant violation: shared reminder ${target.reminder.id} disappeared before update`);
137
- }
138
- const previous = reminders[index];
139
- if (!previous) {
140
- throw new Error(`idle reminder wake invariant violation: shared reminder ${target.reminder.id} missing at resolved index`);
158
+ appliedReminderIds.add(reminderId);
159
+ for (const target of targets) {
160
+ const nextContent = event.updatedContent ?? target.reminder.content;
161
+ const nextMeta = event.updatedMeta !== undefined ? event.updatedMeta : target.reminder.meta;
162
+ if (target.source === 'dialog') {
163
+ dialog.updateReminder(target.index, nextContent, nextMeta, {
164
+ renderMode: target.reminder.renderMode,
165
+ });
166
+ continue;
141
167
  }
142
- reminders[index] = (0, tool_1.materializeReminder)({
143
- id: previous.id,
144
- content: nextContent,
145
- owner: previous.owner,
146
- meta: nextMeta,
147
- echoback: previous.echoback,
148
- scope: previous.scope,
149
- createdAt: previous.createdAt,
150
- priority: previous.priority,
151
- renderMode: previous.renderMode,
168
+ await (0, shared_reminders_1.mutateSharedReminders)(target.target, (reminders) => {
169
+ const index = reminders.findIndex((reminder) => reminder.id === target.reminder.id);
170
+ if (index < 0) {
171
+ throw new Error(`idle reminder wake invariant violation: shared reminder ${target.reminder.id} disappeared before update`);
172
+ }
173
+ const previous = reminders[index];
174
+ if (!previous) {
175
+ throw new Error(`idle reminder wake invariant violation: shared reminder ${target.reminder.id} missing at resolved index`);
176
+ }
177
+ reminders[index] = (0, tool_1.materializeReminder)({
178
+ id: previous.id,
179
+ content: nextContent,
180
+ owner: previous.owner,
181
+ meta: nextMeta,
182
+ echoback: previous.echoback,
183
+ scope: previous.scope,
184
+ createdAt: previous.createdAt,
185
+ priority: previous.priority,
186
+ renderMode: previous.renderMode,
187
+ });
152
188
  });
153
- });
154
- dialog.touchReminders();
189
+ dialog.touchReminders();
190
+ }
155
191
  }
156
192
  for (const reminderId of byReminderId.keys()) {
157
193
  if (appliedReminderIds.has(reminderId))
@@ -267,7 +303,10 @@ async function runIdleReminderWakeTask(dialog, callbacks, task) {
267
303
  const events = dedupeAndSortWakeEvents(collected);
268
304
  if (events.length === 0)
269
305
  return;
270
- await applyWakeEventUpdates(dialog, events);
306
+ const currentWakeEvents = await loadCurrentWakeEvents(dialog, events);
307
+ if (currentWakeEvents.events.length === 0)
308
+ return;
309
+ await applyWakeEventUpdates(dialog, currentWakeEvents.events, currentWakeEvents.targetsByReminderId);
271
310
  if (task.controller.signal.aborted || !isCurrentTask(dialog.id, task))
272
311
  return;
273
312
  if (!(await loadFreshIdleWakeEligibility(dialog))) {
@@ -275,12 +314,12 @@ async function runIdleReminderWakeTask(dialog, callbacks, task) {
275
314
  dialogId: dialog.id.valueOf(),
276
315
  rootId: dialog.id.rootId,
277
316
  selfId: dialog.id.selfId,
278
- eventIds: events.map((event) => event.eventId),
317
+ eventIds: currentWakeEvents.events.map((event) => event.eventId),
279
318
  });
280
319
  return;
281
320
  }
282
321
  const prompt = {
283
- content: buildAggregatedWakePromptContent(events),
322
+ content: buildAggregatedWakePromptContent(currentWakeEvents.events),
284
323
  msgId: (0, id_1.generateShortId)(),
285
324
  grammar: 'markdown',
286
325
  origin: 'runtime',
@@ -186,7 +186,7 @@ function sanitizeDebugFileSegment(value) {
186
186
  }
187
187
  async function writeInvariantDebugDump(args) {
188
188
  const capturedAt = (0, time_1.formatUnifiedTimestamp)(new Date());
189
- const debugDir = path.resolve(process.cwd(), '.dislogs', 'debug');
189
+ const debugDir = path.resolve(process.cwd(), '.dialogs', 'debug');
190
190
  const fileName = [
191
191
  args.prefix,
192
192
  sanitizeDebugFileSegment(capturedAt),
@@ -5,6 +5,7 @@ export declare function configureDomindsSelfUpdate(params: {
5
5
  host: string;
6
6
  port: number;
7
7
  mode: ServerMode;
8
+ closeWebSocketClients: () => void;
8
9
  stopServer: () => Promise<void>;
9
10
  }): void;
10
11
  export declare function setDomindsSelfUpdateBroadcaster(next: ((status: DomindsSelfUpdateStatus) => void) | null): void;
@@ -20,6 +20,7 @@ const BACKGROUND_CHECK_INTERVAL_MS = 30 * 60 * 1000;
20
20
  const LATEST_VERSION_CHECK_TIMEOUT_MS = 60000;
21
21
  const RESTART_PORT_RELEASE_TIMEOUT_MS = 15000;
22
22
  const RESTART_PORT_PROBE_INTERVAL_MS = 150;
23
+ const RESTART_EXIT_GRACE_MS = 1000;
23
24
  const COMMAND_OUTPUT_LOG_LIMIT = 2000;
24
25
  const PROXY_URL_ENV_KEYS = new Set([
25
26
  'HTTP_PROXY',
@@ -97,6 +98,9 @@ function truncateCommandOutput(value) {
97
98
  return raw;
98
99
  return `${raw.slice(0, COMMAND_OUTPUT_LOG_LIMIT)}...[truncated ${raw.length - COMMAND_OUTPUT_LOG_LIMIT} chars]`;
99
100
  }
101
+ function delayMs(ms) {
102
+ return new Promise((resolve) => setTimeout(resolve, ms));
103
+ }
100
104
  function formatPathEnvExcerpt(pathEnv) {
101
105
  if (pathEnv === null || pathEnv.trim() === '')
102
106
  return null;
@@ -620,6 +624,7 @@ function configureDomindsSelfUpdate(params) {
620
624
  host: params.host,
621
625
  port: params.port,
622
626
  mode: params.mode,
627
+ closeWebSocketClients: params.closeWebSocketClients,
623
628
  stopServer: params.stopServer,
624
629
  };
625
630
  latestObservation = { kind: 'unknown' };
@@ -922,7 +927,28 @@ function spawnDetachedRestartHelper(params) {
922
927
  }
923
928
  async function stopAndExitForRestart() {
924
929
  const cfg = assertRuntimeConfig();
925
- await cfg.stopServer();
930
+ let stopSettled = false;
931
+ void cfg
932
+ .stopServer()
933
+ .then(() => {
934
+ stopSettled = true;
935
+ })
936
+ .catch((error) => {
937
+ stopSettled = true;
938
+ log.error('Failed to stop Dominds HTTP server during restart grace window', error, {
939
+ host: cfg.host,
940
+ port: cfg.port,
941
+ });
942
+ });
943
+ cfg.closeWebSocketClients();
944
+ await delayMs(RESTART_EXIT_GRACE_MS);
945
+ if (!stopSettled) {
946
+ log.warn('Exiting Dominds process before graceful HTTP server stop completed during restart', undefined, {
947
+ host: cfg.host,
948
+ port: cfg.port,
949
+ graceMs: RESTART_EXIT_GRACE_MS,
950
+ });
951
+ }
926
952
  process.exit(0);
927
953
  }
928
954
  async function restartDomindsIntoLatest() {
package/dist/server.js CHANGED
@@ -233,6 +233,19 @@ async function startServer(opts = {}) {
233
233
  host,
234
234
  port: boundPort,
235
235
  mode: serverMode,
236
+ closeWebSocketClients: () => {
237
+ if (clients.size === 0)
238
+ return;
239
+ log.info(`Closing ${clients.size} WebSocket client(s) for Dominds restart`);
240
+ for (const ws of clients) {
241
+ try {
242
+ ws.close(1012, 'server_restart');
243
+ }
244
+ catch (error) {
245
+ log.warn('Failed to close WebSocket client for Dominds restart', error);
246
+ }
247
+ }
248
+ },
236
249
  stopServer: async () => {
237
250
  await httpServer.stop();
238
251
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dominds",
3
- "version": "1.25.8",
3
+ "version": "1.25.10",
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.15.7",
57
- "@longrun-ai/shell": "1.15.7"
56
+ "@longrun-ai/kernel": "1.15.8",
57
+ "@longrun-ai/shell": "1.15.8"
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-CFRLPgeM.js";
2
- import { aR as isObject, aA as baseRest, aS as isIterateeCall, aT as keysIn, aU as eq, aV as isArrayLike, aW as isArray, aX as identity, aY as isIndex, aZ as assignValue } from "./index-piqwT9B7.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-Cj1Wg2fB.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-4xG_gPRh.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-CATeRp8S.js.map
196
+ //# sourceMappingURL=_basePickBy-B4PyBhGX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_basePickBy-B4PyBhGX.js","sources":["../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_trimmedEndIndex.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseTrim.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toNumber.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toFinite.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toInteger.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flatten.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/defaults.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/last.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createFind.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/findIndex.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/find.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMap.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/map.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseHas.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/has.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseLt.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseExtremum.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/min.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSet.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePickBy.js"],"sourcesContent":["/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import baseRest from './_baseRest.js';\nimport eq from './eq.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keysIn from './keysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nexport default defaults;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nexport default createFind;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n","import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n","import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nexport default baseLt;\n","import isSymbol from './isSymbol.js';\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nexport default baseExtremum;\n","import baseExtremum from './_baseExtremum.js';\nimport baseLt from './_baseLt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nexport default min;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n","import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n"],"names":["objectProto","hasOwnProperty","collection"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]}