instar 1.3.745 → 1.3.747

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 (55) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +41 -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 +18 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  8. package/dist/core/PostUpdateMigrator.js +13 -3
  9. package/dist/core/PostUpdateMigrator.js.map +1 -1
  10. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  11. package/dist/core/devGatedFeatures.js +6 -0
  12. package/dist/core/devGatedFeatures.js.map +1 -1
  13. package/dist/core/durableSecretScrub.d.ts +129 -0
  14. package/dist/core/durableSecretScrub.d.ts.map +1 -0
  15. package/dist/core/durableSecretScrub.js +220 -0
  16. package/dist/core/durableSecretScrub.js.map +1 -0
  17. package/dist/core/types.d.ts +18 -0
  18. package/dist/core/types.d.ts.map +1 -1
  19. package/dist/core/types.js.map +1 -1
  20. package/dist/data/durableOutputChokepoints.d.ts +84 -0
  21. package/dist/data/durableOutputChokepoints.d.ts.map +1 -0
  22. package/dist/data/durableOutputChokepoints.js +145 -0
  23. package/dist/data/durableOutputChokepoints.js.map +1 -0
  24. package/dist/messaging/SessionSummarySentinel.d.ts +28 -0
  25. package/dist/messaging/SessionSummarySentinel.d.ts.map +1 -1
  26. package/dist/messaging/SessionSummarySentinel.js +25 -1
  27. package/dist/messaging/SessionSummarySentinel.js.map +1 -1
  28. package/dist/monitoring/DurableOutputScrubber.d.ts +123 -0
  29. package/dist/monitoring/DurableOutputScrubber.d.ts.map +1 -0
  30. package/dist/monitoring/DurableOutputScrubber.js +179 -0
  31. package/dist/monitoring/DurableOutputScrubber.js.map +1 -0
  32. package/dist/monitoring/delivery-failure-sentinel/recovery-policy.d.ts +7 -0
  33. package/dist/monitoring/delivery-failure-sentinel/recovery-policy.d.ts.map +1 -1
  34. package/dist/monitoring/delivery-failure-sentinel/recovery-policy.js +47 -0
  35. package/dist/monitoring/delivery-failure-sentinel/recovery-policy.js.map +1 -1
  36. package/dist/monitoring/guardManifest.d.ts.map +1 -1
  37. package/dist/monitoring/guardManifest.js +23 -0
  38. package/dist/monitoring/guardManifest.js.map +1 -1
  39. package/dist/server/routes.d.ts +23 -0
  40. package/dist/server/routes.d.ts.map +1 -1
  41. package/dist/server/routes.js +112 -16
  42. package/dist/server/routes.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/data/builtin-manifest.json +65 -65
  45. package/src/data/durableOutputChokepoints.ts +192 -0
  46. package/src/templates/scripts/slack-reply.sh +30 -0
  47. package/src/templates/scripts/telegram-reply.sh +50 -5
  48. package/upgrades/1.3.746.md +43 -0
  49. package/upgrades/1.3.747.md +61 -0
  50. package/upgrades/side-effects/durable-output-hygiene-standard.md +229 -0
  51. package/upgrades/side-effects/slack-outbound-robustness-r8m1-arm-b-adapter-timeout.md +76 -0
  52. package/upgrades/side-effects/slack-outbound-robustness-r8m1-recovery-policy.md +110 -0
  53. package/upgrades/side-effects/slack-outbound-robustness-slack-delivery-id.md +83 -0
  54. package/upgrades/side-effects/slack-outbound-robustness-slack-forward-refusal.md +74 -0
  55. package/upgrades/side-effects/slack-outbound-robustness-telegram-prepost-mint.md +81 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiDH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAU3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAyBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA6H7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgFtD;;;;;;;;;;;;;;;;;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;AAu/CD,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,CAijBN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAohlBtE;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;AAiDH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAU3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAyBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA6H7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgFtD;;;;;;;;;;;;;;;;;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;AAu/CD,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,CAijBN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2jlBtE;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"}
@@ -13479,10 +13479,51 @@ export async function startServer(options) {
13479
13479
  },
13480
13480
  });
13481
13481
  retryManager.start();
13482
+ // Durable-Output Hygiene Standard §2 (Layer B) — the config-gated scrubber
13483
+ // that redacts credential SPANS from LLM-derived summary fields BEFORE they
13484
+ // persist. Dark-first: `enabled` resolves via the developmentAgent gate (LIVE
13485
+ // on a dev agent, DARK on the fleet) and `dryRun` defaults true (the canary —
13486
+ // computes + records would-redact metrics but stores the ORIGINAL text). A
13487
+ // real redaction flip (dryRun:false) is the operator's endpoint decision.
13488
+ const { DurableOutputScrubber } = await import('../monitoring/DurableOutputScrubber.js');
13489
+ const durableScrubCfg = config.monitoring?.durableOutputScrub;
13490
+ const durableOutputScrubber = new DurableOutputScrubber({
13491
+ enabled: resolveDevAgentGate(durableScrubCfg?.enabled, config),
13492
+ dryRun: durableScrubCfg?.dryRun, // undefined → fail-safe default true inside the scrubber
13493
+ metrics: {
13494
+ // Feature key `durable-output-scrub` — COUNTS/kind only (the ledger row
13495
+ // never carries the matched bytes; the floor's metadata is offset/kind).
13496
+ recordEvent: (feature, outcome) => {
13497
+ try {
13498
+ getFeatureMetricsRecorder()?.record({ feature, kind: 'event', outcome });
13499
+ }
13500
+ catch { /* @silent-fallback-ok — observability must never throw into the persist path; the store write still completes */ }
13501
+ },
13502
+ },
13503
+ onPoisoningSuspected: (signal) => {
13504
+ // One deduped attention item per store (spec §2 poisoning visibility);
13505
+ // the AttentionTopicGuard flood ceiling backstops further.
13506
+ try {
13507
+ void telegram?.createAttentionItem({
13508
+ id: `durable-output-poisoning:${signal.store}`,
13509
+ title: 'Possible durable-memory poisoning (credential-shaped plant burst)',
13510
+ summary: `${signal.count} credential-shaped redactions on "${signal.store}" within ${Math.round(signal.windowMs / 60_000)} min`,
13511
+ description: `The durable-output scrub redacted ${signal.count} credential-shaped spans (kinds: ${signal.kinds.join(', ')}) ` +
13512
+ `on the "${signal.store}" store in a short window — a possible deliberate memory-degradation attempt. ` +
13513
+ `No records were dropped; each altered entry carries its provenance marker.`,
13514
+ category: 'security',
13515
+ priority: 'NORMAL',
13516
+ sourceContext: 'durable-output-scrub-poisoning',
13517
+ });
13518
+ }
13519
+ catch { /* @silent-fallback-ok — escalation is best-effort signal-only; a throw here must never break the persist path */ }
13520
+ },
13521
+ });
13482
13522
  // Session summary sentinel for intelligent routing (Phase 2)
13483
13523
  const { SessionSummarySentinel } = await import('../messaging/SessionSummarySentinel.js');
13484
13524
  const summarySentinel = new SessionSummarySentinel({
13485
13525
  stateDir: config.stateDir,
13526
+ scrubber: durableOutputScrubber,
13486
13527
  getActiveSessions: () => sessionManager.listRunningSessions(),
13487
13528
  captureOutput: (tmuxSession) => {
13488
13529
  // RULE 3: EXEMPT — this is raw byte capture (the whole pane), not state parsing.