instar 1.3.1656 → 1.3.1657

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 (51) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +67 -0
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/DeliverMessageHandler.d.ts +20 -0
  5. package/dist/core/DeliverMessageHandler.d.ts.map +1 -1
  6. package/dist/core/DeliverMessageHandler.js +13 -0
  7. package/dist/core/DeliverMessageHandler.js.map +1 -1
  8. package/dist/core/PendingInboundStore.d.ts +2 -0
  9. package/dist/core/PendingInboundStore.d.ts.map +1 -1
  10. package/dist/core/PendingInboundStore.js +6 -0
  11. package/dist/core/PendingInboundStore.js.map +1 -1
  12. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  13. package/dist/core/PostUpdateMigrator.js +18 -0
  14. package/dist/core/PostUpdateMigrator.js.map +1 -1
  15. package/dist/core/QueueDrainLoop.d.ts +1 -0
  16. package/dist/core/QueueDrainLoop.d.ts.map +1 -1
  17. package/dist/core/QueueDrainLoop.js +3 -0
  18. package/dist/core/QueueDrainLoop.js.map +1 -1
  19. package/dist/core/SessionManager.d.ts +6 -0
  20. package/dist/core/SessionManager.d.ts.map +1 -1
  21. package/dist/core/SessionManager.js +18 -0
  22. package/dist/core/SessionManager.js.map +1 -1
  23. package/dist/core/roleFollowRestart.d.ts +27 -0
  24. package/dist/core/roleFollowRestart.d.ts.map +1 -0
  25. package/dist/core/roleFollowRestart.js +53 -0
  26. package/dist/core/roleFollowRestart.js.map +1 -0
  27. package/dist/core/types.d.ts +2 -0
  28. package/dist/core/types.d.ts.map +1 -1
  29. package/dist/core/types.js.map +1 -1
  30. package/dist/data/standards-guard-index.json +1 -1
  31. package/dist/data/standards-guard-index.meta.json +2 -2
  32. package/dist/data/standards-registry.meta.json +1 -1
  33. package/dist/native/InstarWedgeCanary.app/Contents/MacOS/InstarWedgeCanary +0 -0
  34. package/dist/native/instar-desktop-host +0 -0
  35. package/dist/scaffold/templates.d.ts.map +1 -1
  36. package/dist/scaffold/templates.js +1 -0
  37. package/dist/scaffold/templates.js.map +1 -1
  38. package/dist/users/wireMemoryPrivacy.d.ts.map +1 -1
  39. package/dist/users/wireMemoryPrivacy.js +9 -2
  40. package/dist/users/wireMemoryPrivacy.js.map +1 -1
  41. package/package.json +1 -1
  42. package/src/data/builtin-manifest.json +20 -20
  43. package/src/data/standards-guard-index.json +1 -1
  44. package/src/data/standards-guard-index.meta.json +2 -2
  45. package/src/data/standards-registry.meta.json +1 -1
  46. package/src/scaffold/templates.ts +1 -0
  47. package/upgrades/1.3.1657.md +38 -0
  48. package/upgrades/side-effects/lease-takeover-role-restart.md +49 -0
  49. package/upgrades/side-effects/memory-privacy-opt-in-existing-agents.md +78 -0
  50. package/upgrades/side-effects/session-pool-no-silent-drop.md +48 -0
  51. package/upgrades/side-effects/test-lsfiles-buffer.md +54 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"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"}
@@ -240,6 +240,7 @@ import { DispatchScopeEnforcer } from '../core/DispatchScopeEnforcer.js';
240
240
  import { TrustRecovery } from '../core/TrustRecovery.js';
241
241
  import { DegradationReporter } from '../monitoring/DegradationReporter.js';
242
242
  import { gitLeaseHasNoRemote, reportLeaseMediumSelection, selectLeaseMedium } from '../core/leaseMediumSelection.js';
243
+ import { decideRoleRestart, readLastRoleRestart, requestRoleRestart } from '../core/roleFollowRestart.js';
243
244
  import { HumanAsDetectorLog, observeInboundMessage } from '../monitoring/HumanAsDetectorLog.js';
244
245
  import { creditUsherOnMiss } from '../core/UsherActedCorrelator.js';
245
246
  import { resolveStableNodeBinary } from '../utils/resolveNodeBinary.js';
@@ -6527,6 +6528,10 @@ export async function startServer(options) {
6527
6528
  };
6528
6529
  sessionManager.on('sessionComplete', (session) => sessionManager.releaseMemorySession(session));
6529
6530
  await _memoryWiring.ready.catch((err) => console.error('[memory-privacy] boot probe failed; scoped conversations stay refused:', err));
6531
+ await sessionManager.retireBoundedSessionsWhenPrivacyOff()
6532
+ .then((names) => { if (names.length)
6533
+ console.log(`[memory-privacy] off: ended ${names.length} bounded session(s)`); })
6534
+ .catch((err) => console.error('[memory-privacy] could not end bounded sessions:', err));
6530
6535
  // Native hook events (docs/specs/native-hook-events.md D4): reconcile the
6531
6536
  // reporter entries in .claude/settings.json to this machine's decision at
6532
6537
  // boot (a flag flip takes effect at the next restart, not the next
@@ -7750,6 +7755,44 @@ export async function startServer(options) {
7750
7755
  console.log(pc.green(' Permission-Prompt Auto-Resolver: enabled (always-on safety floor)'));
7751
7756
  }
7752
7757
  let scheduler;
7758
+ // lease-takeover-role-restart: the scheduler below exists only on a machine awake at boot,
7759
+ // so a role change restarts once and this same path builds what the new role needs.
7760
+ // Losing authority stops jobs NOW, whatever a restart is waiting on: a throttled restart
7761
+ // must never mean jobs running in two places.
7762
+ const bootAwake = coordinator.isAwake;
7763
+ const reconcileRole = () => {
7764
+ try {
7765
+ const nowAwake = coordinator.isAwake;
7766
+ if (nowAwake === bootAwake)
7767
+ return;
7768
+ const lease = config.multiMachine?.leaseSelfHeal;
7769
+ const peer = Object.entries(coordinator.managers.identityManager.loadRegistry().machines ?? {})
7770
+ .some(([id, entry]) => id !== coordinator.identity?.machineId && !entry.revokedAt);
7771
+ const decision = decideRoleRestart({
7772
+ applies: !!lease?.soloCaptainHold?.enabled && !lease?.preferredAwakeMachineId && peer,
7773
+ bootAwake, nowAwake, lastRestartAtMs: readLastRoleRestart(config.stateDir), nowMs: Date.now(),
7774
+ });
7775
+ if (decision === 'restart') {
7776
+ console.log(pc.yellow(` [lease] role is now ${coordinator.role}: restarting once so boot builds what it needs`));
7777
+ requestRoleRestart({ stateDir: config.stateDir }, nowAwake);
7778
+ }
7779
+ }
7780
+ catch (err) {
7781
+ console.warn(` [lease] role restart check failed: ${err instanceof Error ? err.message : String(err)}`); // @silent-fallback-ok: logged, and the timer below retries
7782
+ }
7783
+ };
7784
+ coordinator.on('roleChange', (_from, to) => {
7785
+ const lease = config.multiMachine?.leaseSelfHeal;
7786
+ if (lease?.soloCaptainHold?.enabled && !lease?.preferredAwakeMachineId) {
7787
+ if (to === 'awake')
7788
+ scheduler?.resume();
7789
+ else
7790
+ scheduler?.pause();
7791
+ }
7792
+ reconcileRole();
7793
+ });
7794
+ // A change inside the restart window, or a failed request, is retried until the role matches.
7795
+ setInterval(reconcileRole, 60_000).unref?.();
7753
7796
  if (config.scheduler.enabled && coordinator.isAwake) {
7754
7797
  scheduler = new JobScheduler(config.scheduler, sessionManager, state, config.stateDir);
7755
7798
  scheduler.notifyDestinationHasOtherReaders = (job) => {
@@ -25395,6 +25438,30 @@ export async function startServer(options) {
25395
25438
  deliverSeenFallback.add(messageId);
25396
25439
  return true;
25397
25440
  },
25441
+ // session-pool-no-silent-drop: mirrors every silent return in onAccepted below.
25442
+ // A dashboard start needs no channel. Anything else needs the pool on and the
25443
+ // channel it belongs to, or it would be acked here and lost.
25444
+ refusal: {
25445
+ canServe: (cmd) => {
25446
+ if (parseDashboardCreatePayload(cmd.payload) && typeof cmd.messageId === 'string'
25447
+ && cmd.messageId.startsWith(`dashboard-create:${cmd.session}:`))
25448
+ return true;
25449
+ if (_sessionPoolStage() === 'dark')
25450
+ return false;
25451
+ return isSlackSessionKey(cmd.session) ? !!_slackInboundDispatch : !!telegram;
25452
+ },
25453
+ alreadyReceived: (messageId, session) => {
25454
+ try {
25455
+ if (_inboundQueue)
25456
+ return _inboundQueue.hasRemoteReceipt(session, messageId);
25457
+ }
25458
+ catch { /* @silent-fallback-ok — unreadable receipts fall through to the next tier */ }
25459
+ if (messageLedger)
25460
+ return messageLedger.get(messageId) !== null;
25461
+ return deliverSeenFallback.has(messageId);
25462
+ },
25463
+ onCannotServe: (cmd) => console.warn(` [session-pool] refused forwarded message for ${cmd.session}: this machine cannot serve it (stage ${_sessionPoolStage()})`),
25464
+ },
25398
25465
  // §3.4 sender re-validation, hardened by the §2.D wiring gate: a carried
25399
25466
  // envelope whose userId no longer resolves on THIS machine NACKs
25400
25467
  // `sender-rejected` — BUT the gate never arms against a degenerate /