instar 1.2.79 → 1.2.80

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.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0QH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAiqDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0iMtE;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;AA0QH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAiqDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmjMtE;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"}
@@ -2372,14 +2372,23 @@ export async function startServer(options) {
2372
2372
  });
2373
2373
  console.log(pc.green(` Quota tracking enabled (${quotaFile})`));
2374
2374
  }
2375
- // Set up opt-in telemetry heartbeat
2375
+ // Set up opt-in telemetry heartbeat.
2376
+ // ALWAYS construct, even when disabled — fixes the chicken-and-egg deadlock
2377
+ // where POST /telemetry/enable returned 503 because the subsystem was only
2378
+ // constructed when telemetry was already enabled at boot (so it could never
2379
+ // be turned on through its own endpoint). Construction is cheap and pure;
2380
+ // the side-effects (.start()/submit()) already self-gate on `config.enabled`
2381
+ // inside TelemetryHeartbeat, so an always-constructed-but-disabled heartbeat
2382
+ // never starts a loop and never submits. Spec: docs/specs/enable-layer-coherence.md
2376
2383
  let telemetryHeartbeat;
2377
- if (config.monitoring?.telemetry?.enabled) {
2384
+ {
2378
2385
  const { TelemetryHeartbeat } = await import('../monitoring/TelemetryHeartbeat.js');
2379
- telemetryHeartbeat = new TelemetryHeartbeat(config.monitoring.telemetry, config.stateDir, config.projectDir, config.version || 'unknown');
2386
+ telemetryHeartbeat = new TelemetryHeartbeat(config.monitoring?.telemetry ?? { enabled: false }, config.stateDir, config.projectDir, config.version || 'unknown');
2380
2387
  // Note: .start() is deferred until after scheduler is available so
2381
- // TelemetryCollector can be wired for Baseline submissions.
2382
- console.log(pc.green(` Telemetry: enabled (${config.monitoring.telemetry.level || 'basic'} level, every ${Math.round((config.monitoring.telemetry.intervalMs || 21600000) / 3600000)}h)`));
2388
+ // TelemetryCollector can be wired; .start() itself no-ops when disabled.
2389
+ if (config.monitoring?.telemetry?.enabled) {
2390
+ console.log(pc.green(` Telemetry: enabled (${config.monitoring.telemetry.level || 'basic'} level, every ${Math.round((config.monitoring.telemetry.intervalMs || 21600000) / 3600000)}h)`));
2391
+ }
2383
2392
  }
2384
2393
  // ── Prompt Gate: detect and handle interactive prompts in sessions ──
2385
2394
  const promptGateConfig = config.monitoring?.promptGate;