instar 1.3.34 → 1.3.36

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 (56) hide show
  1. package/README.md +1 -0
  2. package/dist/commands/server.d.ts.map +1 -1
  3. package/dist/commands/server.js +53 -3
  4. package/dist/commands/server.js.map +1 -1
  5. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  6. package/dist/config/ConfigDefaults.js +15 -0
  7. package/dist/config/ConfigDefaults.js.map +1 -1
  8. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  9. package/dist/core/PostUpdateMigrator.js +15 -0
  10. package/dist/core/PostUpdateMigrator.js.map +1 -1
  11. package/dist/core/featureRolloutScan.d.ts +23 -0
  12. package/dist/core/featureRolloutScan.d.ts.map +1 -1
  13. package/dist/core/featureRolloutScan.js +102 -0
  14. package/dist/core/featureRolloutScan.js.map +1 -1
  15. package/dist/core/types.d.ts +45 -0
  16. package/dist/core/types.d.ts.map +1 -1
  17. package/dist/core/types.js.map +1 -1
  18. package/dist/messaging/AgentTelegramComms.d.ts +77 -0
  19. package/dist/messaging/AgentTelegramComms.d.ts.map +1 -1
  20. package/dist/messaging/AgentTelegramComms.js +108 -0
  21. package/dist/messaging/AgentTelegramComms.js.map +1 -1
  22. package/dist/monitoring/ReleaseReadinessSentinel.d.ts +172 -0
  23. package/dist/monitoring/ReleaseReadinessSentinel.d.ts.map +1 -0
  24. package/dist/monitoring/ReleaseReadinessSentinel.js +315 -0
  25. package/dist/monitoring/ReleaseReadinessSentinel.js.map +1 -0
  26. package/dist/monitoring/releaseReadinessWiring.d.ts +54 -0
  27. package/dist/monitoring/releaseReadinessWiring.d.ts.map +1 -0
  28. package/dist/monitoring/releaseReadinessWiring.js +241 -0
  29. package/dist/monitoring/releaseReadinessWiring.js.map +1 -0
  30. package/dist/scaffold/templates.d.ts.map +1 -1
  31. package/dist/scaffold/templates.js +5 -0
  32. package/dist/scaffold/templates.js.map +1 -1
  33. package/dist/server/AgentServer.d.ts +1 -0
  34. package/dist/server/AgentServer.d.ts.map +1 -1
  35. package/dist/server/AgentServer.js +1 -0
  36. package/dist/server/AgentServer.js.map +1 -1
  37. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  38. package/dist/server/CapabilityIndex.js +14 -0
  39. package/dist/server/CapabilityIndex.js.map +1 -1
  40. package/dist/server/routes.d.ts +3 -0
  41. package/dist/server/routes.d.ts.map +1 -1
  42. package/dist/server/routes.js +55 -0
  43. package/dist/server/routes.js.map +1 -1
  44. package/package.json +1 -1
  45. package/scripts/analyze-release.js +221 -0
  46. package/scripts/upgrade-guide-validator.mjs +120 -0
  47. package/src/data/builtin-manifest.json +63 -63
  48. package/src/scaffold/templates/jobs/instar/release-readiness-check.md +24 -0
  49. package/src/scaffold/templates.ts +5 -0
  50. package/upgrades/1.3.35.md +44 -0
  51. package/upgrades/1.3.36.md +39 -0
  52. package/upgrades/side-effects/agent-telegram-comms-send.md +71 -0
  53. package/upgrades/side-effects/release-readiness-visibility-pr2a.md +27 -0
  54. package/upgrades/side-effects/release-readiness-visibility-pr2b.md +26 -0
  55. package/upgrades/side-effects/release-readiness-visibility-pr2c.md +37 -0
  56. package/upgrades/side-effects/release-readiness-visibility-pr3.md +33 -0
package/README.md CHANGED
@@ -50,6 +50,7 @@ The architecture was distilled from [**Dawn**](https://dawn.bot-me.ai) — an AI
50
50
  | Forgets what you told it last week. | Remembers across thousands of sessions. <br/>*(SQLite + FTS5, rolling summaries)* |
51
51
  | Contradicts its own past decisions. | Catches contradictions before they ship. <br/>*(Coherence Gate, 9 reviewers)* |
52
52
  | Loses the thread when the window fills. | Comes back with the full thread, every time. <br/>*(CompactionSentinel, WorkingMemoryAssembler)* |
53
+ | Silently stops shipping when a release stalls. | Surfaces the blocked release as ONE deduped, age-escalating Attention item. <br/>*(ReleaseReadinessSentinel — instar-dev / maintainer environments)* |
53
54
  | Drops commitments after a session boundary. | Tracks commitments durably; nudges itself when they go overdue. <br/>*(CommitmentTracker, PromiseBeacon)* |
54
55
  | Breaks when the framework updates. | Updates without breaking what you've deployed. <br/>*(Migration Parity Standard)* |
55
56
  | Default ALLOW-ALL permissions. | Layered safety gates by default. <br/>*(PEL + Coherence Gate + Operation Gate)* |
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiRH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAksDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAi2MtE;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;AAiRH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAksDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAq5MtE;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"}
@@ -7250,12 +7250,22 @@ export async function startServer(options) {
7250
7250
  // ship-dark feature relies on anyone remembering to register it. Runs once
7251
7251
  // at boot + on a bounded cadence. Observation-only w.r.t. config flags.
7252
7252
  const { FeatureRolloutReconciler } = await import('../core/FeatureRolloutReconciler.js');
7253
- const { scanSpecArtifacts, makeFlagObserver } = await import('../core/featureRolloutScan.js');
7253
+ const { scanSpecArtifactsWithCanonical, makeFlagObserver } = await import('../core/featureRolloutScan.js');
7254
7254
  const { getInitDefaults: _getRolloutDefaults } = await import('../config/ConfigDefaults.js');
7255
7255
  const _shippedDefaults = _getRolloutDefaults(config.agentType === 'standalone' ? 'standalone' : 'managed-project');
7256
+ // Layer C of release-readiness-visibility: when featureRollout.canonicalRefScan
7257
+ // is enabled, scan against canonical `main` (not the local working tree, which
7258
+ // silently misses freshly-merged specs). Falls back to the local scan on any
7259
+ // failure with a single degradation log line — never throws into boot.
7260
+ const _frCfg = config.featureRollout;
7256
7261
  const featureRolloutReconciler = new FeatureRolloutReconciler({
7257
7262
  tracker: initiativeTracker,
7258
- listSpecArtifacts: () => scanSpecArtifacts(config.projectDir),
7263
+ listSpecArtifacts: () => scanSpecArtifactsWithCanonical(config.projectDir, {
7264
+ canonicalRefScanEnabled: _frCfg?.canonicalRefScan === true,
7265
+ canonicalRemote: _frCfg?.canonicalRemote,
7266
+ fetchTimeoutMs: _frCfg?.fetchTimeoutMs,
7267
+ onDegradation: (reason) => console.warn(`[instar] feature-rollout canonical scan degraded: ${reason}`),
7268
+ }),
7259
7269
  observeFlag: makeFlagObserver(config, _shippedDefaults),
7260
7270
  });
7261
7271
  void featureRolloutReconciler.reconcile().catch(err => console.warn('[instar] feature-rollout reconcile failed (non-fatal):', err instanceof Error ? err.message : String(err)));
@@ -7536,7 +7546,47 @@ export async function startServer(options) {
7536
7546
  ? ' SessionReaper enabled (idle-session reaper — LIVE)'
7537
7547
  : ' SessionReaper enabled (idle-session reaper — dry-run, logs only)'));
7538
7548
  }
7539
- const server = new AgentServer({ config, sessionManager, state, scheduler, telegram, relationships, feedback, feedbackAnomalyDetector, dispatches, updateChecker, autoUpdater, autoDispatcher, quotaTracker, quotaManager, publisher, viewer, tunnel, evolution, watchdog, topicMemory, triageNurse, projectMapper, coherenceGate: scopeVerifier, contextHierarchy, canonicalState, operationGate, sentinel, adaptiveTrust, memoryMonitor, orphanReaper, coherenceMonitor, commitmentTracker, semanticMemory, activitySentinel, rateLimitSentinel, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, localSigningKeyPem, whatsapp: whatsappAdapter, slack: slackAdapter, imessage: imessageAdapter, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, responseReviewGate, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, proxyCoordinator, topicIntentStore, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, unjustifiedStopGate, stopGateDb, stopNotifier });
7549
+ // ── ReleaseReadinessSentinel (Layer B of release-readiness-visibility) ──
7550
+ // Repo-gated dev-environment watchdog: only constructed when the install has
7551
+ // an analyzable instar git repo AND the feature is enabled in config. On a
7552
+ // plain npm-installed agent (no instar repo) it stays null → routes 503,
7553
+ // never a spurious signal. Not start()ed here — the off-by-default
7554
+ // release-readiness-check job drives tick() via POST /release-readiness/tick.
7555
+ let releaseReadinessSentinel = null;
7556
+ {
7557
+ const rrCfg = config.monitoring?.releaseReadiness;
7558
+ const repoPath = rrCfg?.repoPath ?? process.cwd();
7559
+ if (rrCfg?.enabled) {
7560
+ const { isAnalyzableRepo, buildReleaseReadinessDeps } = await import('../monitoring/releaseReadinessWiring.js');
7561
+ if (isAnalyzableRepo(repoPath)) {
7562
+ const { ReleaseReadinessSentinel } = await import('../monitoring/ReleaseReadinessSentinel.js');
7563
+ const deps = buildReleaseReadinessDeps({
7564
+ repoPath,
7565
+ statePath: path.join(config.stateDir, 'release-readiness.json'),
7566
+ auditPath: path.join(config.stateDir, '..', 'logs', 'sentinel-events.jsonl'),
7567
+ port: config.port,
7568
+ authToken: config.authToken ?? '',
7569
+ canonicalRemote: rrCfg.canonicalRemote,
7570
+ fetchTimeoutMs: rrCfg.fetchTimeoutMs,
7571
+ });
7572
+ releaseReadinessSentinel = new ReleaseReadinessSentinel(deps, {
7573
+ enabled: true,
7574
+ tickIntervalMs: rrCfg.tickIntervalMs,
7575
+ backlogAgeDaysSilent: rrCfg.backlogAgeDaysSilent,
7576
+ backlogAgeDaysLow: rrCfg.backlogAgeDaysLow,
7577
+ backlogAgeDaysMedium: rrCfg.backlogAgeDaysMedium,
7578
+ backlogAgeDaysHigh: rrCfg.backlogAgeDaysHigh,
7579
+ hysteresisHours: rrCfg.hysteresisHours,
7580
+ staleEpisodeTtlDays: rrCfg.staleEpisodeTtlDays,
7581
+ });
7582
+ console.log(pc.green(' ReleaseReadinessSentinel enabled (release-hygiene watchdog — job-driven)'));
7583
+ }
7584
+ else {
7585
+ console.log(pc.dim(' ReleaseReadinessSentinel enabled in config but no analyzable instar repo found — staying inert'));
7586
+ }
7587
+ }
7588
+ }
7589
+ const server = new AgentServer({ config, sessionManager, state, scheduler, telegram, relationships, feedback, feedbackAnomalyDetector, dispatches, updateChecker, autoUpdater, autoDispatcher, quotaTracker, quotaManager, publisher, viewer, tunnel, evolution, watchdog, topicMemory, triageNurse, projectMapper, coherenceGate: scopeVerifier, contextHierarchy, canonicalState, operationGate, sentinel, adaptiveTrust, memoryMonitor, orphanReaper, coherenceMonitor, commitmentTracker, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, localSigningKeyPem, whatsapp: whatsappAdapter, slack: slackAdapter, imessage: imessageAdapter, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, responseReviewGate, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, proxyCoordinator, topicIntentStore, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, unjustifiedStopGate, stopGateDb, stopNotifier });
7540
7590
  // Boot-recovery (tunnel-failure-resilience spec Part 6): if the agent
7541
7591
  // died mid-relay-episode, the persisted tunnel.json carries
7542
7592
  // rotationPending=true. Rotate the dashboard PIN + authToken BEFORE