instar 1.3.536 → 1.3.537

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 (36) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +48 -0
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +13 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/WorkEvidence.d.ts +1 -1
  8. package/dist/core/WorkEvidence.d.ts.map +1 -1
  9. package/dist/core/WorkEvidence.js +7 -0
  10. package/dist/core/WorkEvidence.js.map +1 -1
  11. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  12. package/dist/core/devGatedFeatures.js +6 -0
  13. package/dist/core/devGatedFeatures.js.map +1 -1
  14. package/dist/core/types.d.ts +27 -0
  15. package/dist/core/types.d.ts.map +1 -1
  16. package/dist/core/types.js.map +1 -1
  17. package/dist/core/worktreeDirtyCheck.d.ts +31 -0
  18. package/dist/core/worktreeDirtyCheck.d.ts.map +1 -0
  19. package/dist/core/worktreeDirtyCheck.js +129 -0
  20. package/dist/core/worktreeDirtyCheck.js.map +1 -0
  21. package/dist/monitoring/ResumeQueueDrainer.d.ts +6 -0
  22. package/dist/monitoring/ResumeQueueDrainer.d.ts.map +1 -1
  23. package/dist/monitoring/ResumeQueueDrainer.js +32 -2
  24. package/dist/monitoring/ResumeQueueDrainer.js.map +1 -1
  25. package/dist/monitoring/SessionReaper.d.ts +8 -0
  26. package/dist/monitoring/SessionReaper.d.ts.map +1 -1
  27. package/dist/monitoring/SessionReaper.js +18 -4
  28. package/dist/monitoring/SessionReaper.js.map +1 -1
  29. package/dist/scaffold/templates.d.ts.map +1 -1
  30. package/dist/scaffold/templates.js +1 -0
  31. package/dist/scaffold/templates.js.map +1 -1
  32. package/package.json +1 -1
  33. package/src/data/builtin-manifest.json +2 -2
  34. package/src/scaffold/templates.ts +1 -0
  35. package/upgrades/1.3.537.md +27 -0
  36. package/upgrades/side-effects/build-session-yield-safety.md +58 -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;AAiH7D,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;AAm3CD,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,CAo1atE;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;AAiH7D,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;AAm3CD,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,CAk4atE;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"}
@@ -6223,6 +6223,33 @@ export async function startServer(options) {
6223
6223
  return;
6224
6224
  notify('SUMMARY', 'session-resume', `🔁 I restarted this session to pick the work back up after it was shut down mid-work.`, entry.topicId);
6225
6225
  },
6226
+ // Build-Session Yield Safety (ACT-839) R2.2: present ONLY when the
6227
+ // dev-gated feature is live (its presence is the gate). Registers a
6228
+ // durable, beacon-enabled obligation so a STALLED revived session is
6229
+ // re-surfaced by PromiseBeacon; deduped per stableKey so a re-revival
6230
+ // refreshes rather than floods. The die-again case is covered by the
6231
+ // dev-live OrphanedWorkSentinel (#1113) — no duplicate scanner here.
6232
+ onWorktreeRevival: resolveDevAgentGate(config.monitoring?.yieldSafety?.enabled, config)
6233
+ ? (entry) => {
6234
+ if (!commitmentTracker || entry.topicId == null)
6235
+ return;
6236
+ const externalKey = `yield-safety:${entry.stableKey}`;
6237
+ try {
6238
+ if (commitmentTracker.getActive().some((c) => c.externalKey === externalKey))
6239
+ return; // dedup
6240
+ commitmentTracker.record({
6241
+ type: 'one-time-action',
6242
+ topicId: entry.topicId,
6243
+ source: 'sentinel',
6244
+ beaconEnabled: true,
6245
+ externalKey,
6246
+ userRequest: 'Session revived because its worktree held uncommitted work (ACT-839 yield-safety).',
6247
+ agentResponse: 'Commit the uncommitted worktree changes with a real, descriptive commit, or deliberately preserve/discard them, before yielding again.',
6248
+ });
6249
+ }
6250
+ catch { /* @silent-fallback-ok: best-effort obligation registration; a CommitmentTracker failure must never endanger the revival. */ }
6251
+ }
6252
+ : undefined,
6226
6253
  raiseAggregated: raiseResumeAggregated,
6227
6254
  audit: auditResumeQueue,
6228
6255
  tier1Check: async (entry) => {
@@ -11948,8 +11975,29 @@ export async function startServer(options) {
11948
11975
  }
11949
11976
  // (setAwakeChecker is wired earlier, before the boot purge, so the purge is
11950
11977
  // lease-gated — see the §P3/§P4 block above.)
11978
+ // Build-Session Yield Safety (ACT-839): construct the bounded, cached
11979
+ // worktreeDirtyCheck and inject it into the reaper ONLY when the dev-gated
11980
+ // yieldSafety feature is live (its mere presence is the gate). Dev-enabled,
11981
+ // dark on the fleet, per the Maturation Path standard.
11982
+ let _yieldSafetyDirtyCheck;
11983
+ if (resolveDevAgentGate(config.monitoring?.yieldSafety?.enabled, config)) {
11984
+ const ysCfg = config.monitoring?.yieldSafety ?? {};
11985
+ const { makeWorktreeDirtyCheck } = await import('../core/worktreeDirtyCheck.js');
11986
+ const { SafeGitExecutor } = await import('../core/SafeGitExecutor.js');
11987
+ _yieldSafetyDirtyCheck = makeWorktreeDirtyCheck({
11988
+ readGit: (args, cwd) => SafeGitExecutor.readSync(args, {
11989
+ cwd, encoding: 'utf-8',
11990
+ timeout: ysCfg.dirtyCheckTimeoutMs ?? 5_000,
11991
+ operation: 'src/core/worktreeDirtyCheck.ts (yield-safety)',
11992
+ sourceTreeReadOk: true,
11993
+ sourceTreeWorktreeManagerOk: true,
11994
+ }),
11995
+ config: { residueDenylist: ysCfg.residueDenylist, cacheTtlMs: ysCfg.dirtyCheckCacheTtlMs },
11996
+ });
11997
+ }
11951
11998
  const sessionReaper = new SessionReaper({
11952
11999
  ...reapGuardDeps,
12000
+ dirtyCheck: _yieldSafetyDirtyCheck,
11953
12001
  listRunningSessions: () => sessionManager.listRunningSessions(),
11954
12002
  captureOutput: (s, n) => sessionManager.captureOutput(s, n) ?? '',
11955
12003
  frameworkForSession: (s) => sessionManager.frameworkForSession(s),