instar 1.3.201 → 1.3.202

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 (78) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +25 -10
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/FeatureRegistry.d.ts.map +1 -1
  5. package/dist/core/FeatureRegistry.js +6 -0
  6. package/dist/core/FeatureRegistry.js.map +1 -1
  7. package/dist/core/LeaseCoordinator.d.ts +40 -0
  8. package/dist/core/LeaseCoordinator.d.ts.map +1 -1
  9. package/dist/core/LeaseCoordinator.js +54 -0
  10. package/dist/core/LeaseCoordinator.js.map +1 -1
  11. package/dist/core/LocalLeaseStore.d.ts +11 -0
  12. package/dist/core/LocalLeaseStore.d.ts.map +1 -1
  13. package/dist/core/LocalLeaseStore.js +18 -0
  14. package/dist/core/LocalLeaseStore.js.map +1 -1
  15. package/dist/core/MultiMachineCoordinator.d.ts +35 -0
  16. package/dist/core/MultiMachineCoordinator.d.ts.map +1 -1
  17. package/dist/core/MultiMachineCoordinator.js +94 -0
  18. package/dist/core/MultiMachineCoordinator.js.map +1 -1
  19. package/dist/core/SqliteRegistry.d.ts +59 -0
  20. package/dist/core/SqliteRegistry.d.ts.map +1 -0
  21. package/dist/core/SqliteRegistry.js +97 -0
  22. package/dist/core/SqliteRegistry.js.map +1 -0
  23. package/dist/core/StopGateDb.d.ts +2 -0
  24. package/dist/core/StopGateDb.d.ts.map +1 -1
  25. package/dist/core/StopGateDb.js +22 -0
  26. package/dist/core/StopGateDb.js.map +1 -1
  27. package/dist/memory/SemanticMemory.d.ts.map +1 -1
  28. package/dist/memory/SemanticMemory.js +8 -0
  29. package/dist/memory/SemanticMemory.js.map +1 -1
  30. package/dist/memory/TopicMemory.d.ts.map +1 -1
  31. package/dist/memory/TopicMemory.js +7 -0
  32. package/dist/memory/TopicMemory.js.map +1 -1
  33. package/dist/messaging/MessageProcessingLedger.d.ts.map +1 -1
  34. package/dist/messaging/MessageProcessingLedger.js +7 -0
  35. package/dist/messaging/MessageProcessingLedger.js.map +1 -1
  36. package/dist/messaging/imessage/NativeBackend.d.ts.map +1 -1
  37. package/dist/messaging/imessage/NativeBackend.js +6 -0
  38. package/dist/messaging/imessage/NativeBackend.js.map +1 -1
  39. package/dist/messaging/pending-relay-store.d.ts.map +1 -1
  40. package/dist/messaging/pending-relay-store.js +6 -0
  41. package/dist/messaging/pending-relay-store.js.map +1 -1
  42. package/dist/monitoring/CorrectionLedger.d.ts.map +1 -1
  43. package/dist/monitoring/CorrectionLedger.js +6 -0
  44. package/dist/monitoring/CorrectionLedger.js.map +1 -1
  45. package/dist/monitoring/FailureLedger.d.ts.map +1 -1
  46. package/dist/monitoring/FailureLedger.js +6 -0
  47. package/dist/monitoring/FailureLedger.js.map +1 -1
  48. package/dist/monitoring/FeatureMetricsLedger.d.ts.map +1 -1
  49. package/dist/monitoring/FeatureMetricsLedger.js +6 -0
  50. package/dist/monitoring/FeatureMetricsLedger.js.map +1 -1
  51. package/dist/monitoring/FrameworkIssueLedger.d.ts.map +1 -1
  52. package/dist/monitoring/FrameworkIssueLedger.js +6 -0
  53. package/dist/monitoring/FrameworkIssueLedger.js.map +1 -1
  54. package/dist/monitoring/RevertDetector.d.ts.map +1 -1
  55. package/dist/monitoring/RevertDetector.js +7 -1
  56. package/dist/monitoring/RevertDetector.js.map +1 -1
  57. package/dist/monitoring/TokenLedger.d.ts.map +1 -1
  58. package/dist/monitoring/TokenLedger.js +8 -0
  59. package/dist/monitoring/TokenLedger.js.map +1 -1
  60. package/dist/providers/uxConfirm/PreferenceStore.d.ts +1 -0
  61. package/dist/providers/uxConfirm/PreferenceStore.d.ts.map +1 -1
  62. package/dist/providers/uxConfirm/PreferenceStore.js +13 -0
  63. package/dist/providers/uxConfirm/PreferenceStore.js.map +1 -1
  64. package/dist/threadline/SpawnLedger.d.ts +1 -0
  65. package/dist/threadline/SpawnLedger.d.ts.map +1 -1
  66. package/dist/threadline/SpawnLedger.js +13 -0
  67. package/dist/threadline/SpawnLedger.js.map +1 -1
  68. package/dist/threadline/relay/RegistryStore.d.ts.map +1 -1
  69. package/dist/threadline/relay/RegistryStore.js +6 -0
  70. package/dist/threadline/relay/RegistryStore.js.map +1 -1
  71. package/package.json +1 -1
  72. package/src/data/builtin-manifest.json +5 -5
  73. package/src/templates/scripts/convergence-check.sh +49 -0
  74. package/upgrades/1.3.202.md +65 -0
  75. package/upgrades/side-effects/evo003-revertdetector-git-arg.md +106 -0
  76. package/upgrades/side-effects/git-less-lease-convergence.md +31 -0
  77. package/upgrades/side-effects/sqlite-close-on-exit-registry.md +27 -0
  78. package/upgrades/side-effects/time-awareness-component4-reporting-nudge.md +20 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwSH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+wDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAk3PtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAySH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+wDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAi4PtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
@@ -16,6 +16,7 @@ import pc from 'picocolors';
16
16
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
17
17
  import { loadConfig, ensureStateDir, detectTmuxPath } from '../core/Config.js';
18
18
  import { isNonFatalUncaught } from '../core/uncaughtExceptionPolicy.js';
19
+ import { closeAllSqlite } from '../core/SqliteRegistry.js';
19
20
  import { SessionManager } from '../core/SessionManager.js';
20
21
  import { StateManager } from '../core/StateManager.js';
21
22
  import { StuckInputSentinel } from '../core/StuckInputSentinel.js';
@@ -9392,7 +9393,14 @@ export async function startServer(options) {
9392
9393
  // @silent-fallback-ok — upgrade guide check non-critical
9393
9394
  }
9394
9395
  // Graceful shutdown
9396
+ let _shuttingDown = false;
9395
9397
  const shutdown = async () => {
9398
+ // Re-entrancy guard: SIGINT+SIGTERM (or a restartDetected racing a signal)
9399
+ // must not run the teardown twice. closeAllSqlite() is itself idempotent,
9400
+ // but the resume-UUID save + sidecar flush should run once.
9401
+ if (_shuttingDown)
9402
+ return;
9403
+ _shuttingDown = true;
9396
9404
  console.log('\nShutting down...');
9397
9405
  // Save resume UUIDs for ALL active topic-linked sessions before exit.
9398
9406
  // Without this, server restarts lose all resume mappings because:
@@ -9473,16 +9481,24 @@ export async function startServer(options) {
9473
9481
  await telegram.stop();
9474
9482
  sessionManager.stopMonitoring();
9475
9483
  stuckInputSentinel.stop();
9476
- // Close SQLite databases before exit — prevents "mutex lock failed" crash
9477
- // when better-sqlite3 destructors fire during process teardown.
9478
- topicMemory?.close();
9479
- semanticMemory?.close();
9480
- // Integrated-Being v1 — flush stats sidecar (coalesces pending writes).
9484
+ // Integrated-Being v1 — flush stats sidecar (coalesces pending writes)
9485
+ // BEFORE closing SQLite, so no unflushed write is lost.
9481
9486
  try {
9482
9487
  sharedStateLedger?.shutdown();
9483
9488
  }
9484
9489
  catch { /* best effort */ }
9485
9490
  await server.stop();
9491
+ // Close EVERY registered SQLite handle LAST — after all writers (server,
9492
+ // scheduler, sentinels, telegram) have stopped — to prevent the
9493
+ // "mutex lock failed" SIGABRT when better-sqlite3 static destructors fire
9494
+ // during process teardown. The structural registry (SqliteRegistry.ts)
9495
+ // replaces the old hand-maintained topicMemory/semanticMemory close-list,
9496
+ // which covered only 2 of the 15 long-lived stores.
9497
+ try {
9498
+ const closed = closeAllSqlite();
9499
+ console.log(`[shutdown] closed ${closed} sqlite handle(s)`);
9500
+ }
9501
+ catch { /* best effort */ }
9486
9502
  process.exit(0);
9487
9503
  };
9488
9504
  process.on('SIGINT', shutdown);
@@ -9501,12 +9517,11 @@ export async function startServer(options) {
9501
9517
  return; // Don't crash — the server is fine
9502
9518
  }
9503
9519
  console.error('[FATAL] Uncaught exception — closing databases before crash:', err.message);
9520
+ // Close ALL registered SQLite handles (not just topic/semantic memory) so
9521
+ // the crash exit doesn't compound into a "mutex lock failed" SIGABRT on top
9522
+ // of the original error. closeAllSqlite() is best-effort + idempotent.
9504
9523
  try {
9505
- topicMemory?.close();
9506
- }
9507
- catch { /* best effort */ }
9508
- try {
9509
- semanticMemory?.close();
9524
+ closeAllSqlite();
9510
9525
  }
9511
9526
  catch { /* best effort */ }
9512
9527
  process.exit(1);