instar 1.3.504 → 1.3.506

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 (43) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +46 -0
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/AutonomousSessions.d.ts +19 -0
  5. package/dist/core/AutonomousSessions.d.ts.map +1 -1
  6. package/dist/core/AutonomousSessions.js +71 -0
  7. package/dist/core/AutonomousSessions.js.map +1 -1
  8. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  9. package/dist/core/PostUpdateMigrator.js +34 -1
  10. package/dist/core/PostUpdateMigrator.js.map +1 -1
  11. package/dist/core/TransferByNickname.d.ts +11 -0
  12. package/dist/core/TransferByNickname.d.ts.map +1 -1
  13. package/dist/core/TransferByNickname.js +29 -6
  14. package/dist/core/TransferByNickname.js.map +1 -1
  15. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  16. package/dist/core/devGatedFeatures.js +6 -0
  17. package/dist/core/devGatedFeatures.js.map +1 -1
  18. package/dist/core/time-claim.d.ts +57 -0
  19. package/dist/core/time-claim.d.ts.map +1 -0
  20. package/dist/core/time-claim.js +167 -0
  21. package/dist/core/time-claim.js.map +1 -0
  22. package/dist/messaging/OutboundAdvisory.d.ts +20 -2
  23. package/dist/messaging/OutboundAdvisory.d.ts.map +1 -1
  24. package/dist/messaging/OutboundAdvisory.js +37 -1
  25. package/dist/messaging/OutboundAdvisory.js.map +1 -1
  26. package/dist/monitoring/SessionReaper.d.ts +27 -0
  27. package/dist/monitoring/SessionReaper.d.ts.map +1 -1
  28. package/dist/monitoring/SessionReaper.js +41 -2
  29. package/dist/monitoring/SessionReaper.js.map +1 -1
  30. package/dist/scaffold/templates.d.ts.map +1 -1
  31. package/dist/scaffold/templates.js +4 -2
  32. package/dist/scaffold/templates.js.map +1 -1
  33. package/dist/server/routes.d.ts.map +1 -1
  34. package/dist/server/routes.js +96 -9
  35. package/dist/server/routes.js.map +1 -1
  36. package/package.json +1 -1
  37. package/src/data/builtin-manifest.json +64 -64
  38. package/src/scaffold/templates.ts +4 -2
  39. package/src/templates/scripts/telegram-reply.sh +28 -8
  40. package/upgrades/1.3.505.md +57 -0
  41. package/upgrades/1.3.506.md +63 -0
  42. package/upgrades/side-effects/multi-machine-seamlessness-ws12-ws14.md +197 -0
  43. package/upgrades/side-effects/time-claim-advisory.md +177 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAyG7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA4zCD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAynYtE;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;AAgCH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAyG7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA4zCD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgqYtE;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"}
@@ -11413,6 +11413,27 @@ export async function startServer(options) {
11413
11413
  return false; /* @silent-fallback-ok — no pin signal → hold not applied, closeout behaves as before */
11414
11414
  }
11415
11415
  },
11416
+ // WS1.2 P19 breaker escalation: ONE deduped attention item when the
11417
+ // post-transfer closeout gives up on a permanently-vetoing session.
11418
+ // The attention store dedupes on id, so a re-opening breaker within
11419
+ // the same episode never floods (P17). Best-effort — the audit row in
11420
+ // sentinel-events.jsonl is the durable record either way.
11421
+ raiseAttention: (item) => {
11422
+ try {
11423
+ if (!telegram)
11424
+ return;
11425
+ void telegram.createAttentionItem({
11426
+ id: item.id,
11427
+ title: item.title,
11428
+ summary: item.summary,
11429
+ description: item.description,
11430
+ category: 'sessions',
11431
+ priority: 'NORMAL',
11432
+ sourceContext: 'session-reaper:closeout-breaker',
11433
+ }).catch(() => { });
11434
+ }
11435
+ catch { /* @silent-fallback-ok — telegram not wired yet (TDZ window) → audit-only */ }
11436
+ },
11416
11437
  audit: reaperAuditSink(config.stateDir),
11417
11438
  },
11418
11439
  // developmentAgent gate (standard_development_agent_dark_feature_gate):
@@ -13605,6 +13626,7 @@ export async function startServer(options) {
13605
13626
  // Inert unless the rollout stage is past 'dark' (gated at the call site).
13606
13627
  const nickMod = await import('../core/NicknameCommand.js');
13607
13628
  const transferMod = await import('../core/TransferByNickname.js');
13629
+ const autonomousSessionsModule = await import('../core/AutonomousSessions.js');
13608
13630
  const pinMod = await import('../core/TopicPlacementPinStore.js');
13609
13631
  const relocSetMod = await import('../core/RelocationNicknameSet.js');
13610
13632
  const nickAssignMod = await import('../core/NicknameAssigner.js');
@@ -13665,6 +13687,30 @@ export async function startServer(options) {
13665
13687
  currentPinOf: (sk) => _topicPinStore?.get(sk)?.preferredMachine ?? null,
13666
13688
  lastPlacementUpdateAt: (sk) => _topicPinStore?.lastUpdatedAtMs(sk) ?? null,
13667
13689
  now: () => Date.now(),
13690
+ // WS1.4 consent gate: a LIVE local autonomous run on this topic
13691
+ // requires explicit confirmation before a move. The confirmed
13692
+ // move goes through POST /pool/transfer with confirm:true
13693
+ // (which performs the turn-boundary suspend); this NL arm only
13694
+ // ever needs to ASK. Local-registry evidence only — a run on a
13695
+ // remote owner is covered when the WS1.2 drain verb lands.
13696
+ autonomousRunActive: (sk) => {
13697
+ try {
13698
+ const autoMod = autonomousSessionsModule;
13699
+ const job = autoMod?.listAutonomousJobs(config.stateDir).find((j) => j.topic === sk && j.active && !j.paused);
13700
+ if (!job)
13701
+ return null;
13702
+ let remainingMinutes = null;
13703
+ if (job.startedAt && job.durationSeconds != null) {
13704
+ const endMs = Date.parse(job.startedAt) + job.durationSeconds * 1000;
13705
+ if (Number.isFinite(endMs))
13706
+ remainingMinutes = Math.max(0, Math.round((endMs - Date.now()) / 60_000));
13707
+ }
13708
+ return { goal: job.goal, remainingMinutes };
13709
+ }
13710
+ catch {
13711
+ return null; /* @silent-fallback-ok — unreadable run registry → veto not applied; the NL move behaves as before WS1.4 */
13712
+ }
13713
+ },
13668
13714
  }, sessionKey);
13669
13715
  if (plan.action === 'transfer' || plan.action === 'noop') {
13670
13716
  const target = plan.targetMachine;