instar 1.3.122 → 1.3.123

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 (30) hide show
  1. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  2. package/dist/core/PostUpdateMigrator.js +16 -0
  3. package/dist/core/PostUpdateMigrator.js.map +1 -1
  4. package/dist/core/SessionManager.d.ts +10 -0
  5. package/dist/core/SessionManager.d.ts.map +1 -1
  6. package/dist/core/SessionManager.js +34 -2
  7. package/dist/core/SessionManager.js.map +1 -1
  8. package/dist/providers/adapters/openai-codex/observability/codexModelSwapPolicy.d.ts +83 -0
  9. package/dist/providers/adapters/openai-codex/observability/codexModelSwapPolicy.d.ts.map +1 -0
  10. package/dist/providers/adapters/openai-codex/observability/codexModelSwapPolicy.js +93 -0
  11. package/dist/providers/adapters/openai-codex/observability/codexModelSwapPolicy.js.map +1 -0
  12. package/dist/providers/adapters/openai-codex/observability/codexRateLimitReader.d.ts +95 -0
  13. package/dist/providers/adapters/openai-codex/observability/codexRateLimitReader.d.ts.map +1 -0
  14. package/dist/providers/adapters/openai-codex/observability/codexRateLimitReader.js +170 -0
  15. package/dist/providers/adapters/openai-codex/observability/codexRateLimitReader.js.map +1 -0
  16. package/dist/scaffold/templates.d.ts.map +1 -1
  17. package/dist/scaffold/templates.js +5 -0
  18. package/dist/scaffold/templates.js.map +1 -1
  19. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  20. package/dist/server/CapabilityIndex.js +11 -0
  21. package/dist/server/CapabilityIndex.js.map +1 -1
  22. package/dist/server/routes.d.ts.map +1 -1
  23. package/dist/server/routes.js +31 -0
  24. package/dist/server/routes.js.map +1 -1
  25. package/package.json +1 -1
  26. package/src/data/builtin-manifest.json +63 -63
  27. package/src/scaffold/templates.ts +5 -0
  28. package/upgrades/1.3.123.md +105 -0
  29. package/upgrades/side-effects/codex-model-swap.md +134 -0
  30. package/upgrades/side-effects/codex-usage-visibility.md +107 -0
@@ -21,6 +21,7 @@ import { FailureAnalyzer } from '../monitoring/FailureAnalyzer.js';
21
21
  import { FailureLoopDriver } from '../monitoring/FailureLoopDriver.js';
22
22
  import { HumanAsDetectorLog } from '../monitoring/HumanAsDetectorLog.js';
23
23
  import { parseVersion, compareVersions } from '../lifeline/versionHandshake.js';
24
+ import { readLatestCodexUsage } from '../providers/adapters/openai-codex/observability/codexRateLimitReader.js';
24
25
  import { GATE_ROUTE_VERSION, GATE_ROUTE_MINIMUM_VERSION, getHotPathState, setKillSwitch, getKillSwitch, recordSessionStart, getMode, setMode, } from './stopGate.js';
25
26
  import { assembleReminder, } from '../core/UnjustifiedStopGate.js';
26
27
  import { dayKeyFor } from '../core/StopGateDb.js';
@@ -3849,6 +3850,36 @@ export function createRoutes(ctx) {
3849
3850
  }
3850
3851
  res.json({ idleMs, orphans: ctx.tokenLedger.orphans({ idleMs }) });
3851
3852
  });
3853
+ // ── Codex usage (the codex `/status` equivalent, read from disk) ─────
3854
+ // Codex has no usage API, but the codex CLI persists the authoritative
3855
+ // account rate-limit windows (primary=5h, secondary=weekly) into each
3856
+ // session rollout's `token_count` events. This route surfaces the freshest
3857
+ // snapshot so an agent can answer "where does codex usage sit?" and so the
3858
+ // model-swap policy can react to an exhausted window — without the
3859
+ // interactive TUI. Read-only; never mutates session state. Always 200 when
3860
+ // wired ("alive"): `available:false` (not 503) means simply no codex data
3861
+ // on disk yet (e.g. a pure-Claude agent).
3862
+ router.get('/codex/usage', async (req, res) => {
3863
+ const codexHome = typeof req.query.codexHome === 'string' && req.query.codexHome
3864
+ ? req.query.codexHome
3865
+ : undefined;
3866
+ let usage = null;
3867
+ try {
3868
+ usage = await readLatestCodexUsage({ codexHome });
3869
+ }
3870
+ catch {
3871
+ usage = null;
3872
+ }
3873
+ if (!usage) {
3874
+ res.json({
3875
+ available: false,
3876
+ usage: null,
3877
+ reason: 'no codex rollout with rate-limit data found',
3878
+ });
3879
+ return;
3880
+ }
3881
+ res.json({ available: true, usage });
3882
+ });
3852
3883
  // ── Framework-Onboarding Mentor System: issue ledger (read-only) ──
3853
3884
  // Signal-only observability. Bearer auth is applied globally by middleware;
3854
3885
  // these routes never gate behaviour. See FRAMEWORK-ONBOARDING-MENTOR-SPEC §5.