@schoolai/shipyard 3.27.0 → 3.28.0-nightly.20260905.0

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 (63) hide show
  1. package/dist/{auth-OHZTVIQU.js → auth-7OBSJK2V.js} +3 -3
  2. package/dist/capability-detector-worker.js +10 -10
  3. package/dist/{chunk-K7EXPNAD.js → chunk-B23NPMUE.js} +6 -6
  4. package/dist/{chunk-ROEOOZOW.js → chunk-EKDLDBWX.js} +2 -2
  5. package/dist/{chunk-3OSJ2NBG.js → chunk-GBMR7R3J.js} +4 -4
  6. package/dist/{chunk-765IZGCC.js → chunk-GUD5HUAM.js} +4 -4
  7. package/dist/{chunk-GTFOF3S6.js → chunk-HJXABEEV.js} +5 -5
  8. package/dist/{chunk-CGNWVGXL.js → chunk-HPHI6KLB.js} +4 -4
  9. package/dist/{chunk-JD4WV327.js → chunk-IR26LUE6.js} +2 -2
  10. package/dist/{chunk-IYHMELNP.js → chunk-JMXLEJCV.js} +2 -2
  11. package/dist/{chunk-JO6BW3E2.js → chunk-JYG26VFW.js} +91 -13
  12. package/dist/chunk-JYG26VFW.js.map +1 -0
  13. package/dist/{chunk-DLKK7GR4.js → chunk-KKWHJ3BN.js} +4 -4
  14. package/dist/{chunk-SXXAWBW7.js → chunk-L3GRMTOI.js} +2 -1
  15. package/dist/chunk-L3GRMTOI.js.map +1 -0
  16. package/dist/{chunk-QM5JXV3C.js → chunk-PS5MSEV6.js} +3 -3
  17. package/dist/{chunk-QM5JXV3C.js.map → chunk-PS5MSEV6.js.map} +1 -1
  18. package/dist/{chunk-2UE3TNY7.js → chunk-QMXIYUBC.js} +2 -2
  19. package/dist/{chunk-2YH743ND.js → chunk-QTCPOZUO.js} +2 -2
  20. package/dist/{chunk-CA5PKTNJ.js → chunk-SIR6MDUU.js} +2 -2
  21. package/dist/{chunk-VSRWL5SP.js → chunk-WTDP35C7.js} +2 -2
  22. package/dist/{chunk-KSY4S4X3.js → chunk-XUDNZERJ.js} +3 -3
  23. package/dist/cursor-runner.js +5 -5
  24. package/dist/electron-utility.js +6 -6
  25. package/dist/{git-repo-IVN2RQNY.js → git-repo-MMFHQHXX.js} +4 -4
  26. package/dist/index.js +10 -10
  27. package/dist/{logger-I6HU4VSX.js → logger-6BPUF2G3.js} +3 -3
  28. package/dist/{login-HKWWOXQK.js → login-5XG2GCJN.js} +7 -7
  29. package/dist/{logout-EZQ4UBLH.js → logout-J4SPGBFX.js} +5 -5
  30. package/dist/{mcp-servers-52C67MDD.js → mcp-servers-HP6LV234.js} +4 -4
  31. package/dist/{plan-backfill-VKDUUMTF.js → plan-backfill-RTYIZRZW.js} +6 -6
  32. package/dist/{roi-GUUSTWXN.js → roi-IL6634QN.js} +3 -3
  33. package/dist/{serve-JEQFYBOT.js → serve-ZT7HXOSJ.js} +35 -20
  34. package/dist/{serve-JEQFYBOT.js.map → serve-ZT7HXOSJ.js.map} +1 -1
  35. package/dist/{skills-XBREPCFU.js → skills-3ISTZIOH.js} +2 -2
  36. package/dist/{start-2RW5WC25.js → start-IERZ42HJ.js} +11 -11
  37. package/package.json +3 -3
  38. package/dist/chunk-JO6BW3E2.js.map +0 -1
  39. package/dist/chunk-SXXAWBW7.js.map +0 -1
  40. /package/dist/{auth-OHZTVIQU.js.map → auth-7OBSJK2V.js.map} +0 -0
  41. /package/dist/{chunk-K7EXPNAD.js.map → chunk-B23NPMUE.js.map} +0 -0
  42. /package/dist/{chunk-ROEOOZOW.js.map → chunk-EKDLDBWX.js.map} +0 -0
  43. /package/dist/{chunk-3OSJ2NBG.js.map → chunk-GBMR7R3J.js.map} +0 -0
  44. /package/dist/{chunk-765IZGCC.js.map → chunk-GUD5HUAM.js.map} +0 -0
  45. /package/dist/{chunk-GTFOF3S6.js.map → chunk-HJXABEEV.js.map} +0 -0
  46. /package/dist/{chunk-CGNWVGXL.js.map → chunk-HPHI6KLB.js.map} +0 -0
  47. /package/dist/{chunk-JD4WV327.js.map → chunk-IR26LUE6.js.map} +0 -0
  48. /package/dist/{chunk-IYHMELNP.js.map → chunk-JMXLEJCV.js.map} +0 -0
  49. /package/dist/{chunk-DLKK7GR4.js.map → chunk-KKWHJ3BN.js.map} +0 -0
  50. /package/dist/{chunk-2UE3TNY7.js.map → chunk-QMXIYUBC.js.map} +0 -0
  51. /package/dist/{chunk-2YH743ND.js.map → chunk-QTCPOZUO.js.map} +0 -0
  52. /package/dist/{chunk-CA5PKTNJ.js.map → chunk-SIR6MDUU.js.map} +0 -0
  53. /package/dist/{chunk-VSRWL5SP.js.map → chunk-WTDP35C7.js.map} +0 -0
  54. /package/dist/{chunk-KSY4S4X3.js.map → chunk-XUDNZERJ.js.map} +0 -0
  55. /package/dist/{git-repo-IVN2RQNY.js.map → git-repo-MMFHQHXX.js.map} +0 -0
  56. /package/dist/{logger-I6HU4VSX.js.map → logger-6BPUF2G3.js.map} +0 -0
  57. /package/dist/{login-HKWWOXQK.js.map → login-5XG2GCJN.js.map} +0 -0
  58. /package/dist/{logout-EZQ4UBLH.js.map → logout-J4SPGBFX.js.map} +0 -0
  59. /package/dist/{mcp-servers-52C67MDD.js.map → mcp-servers-HP6LV234.js.map} +0 -0
  60. /package/dist/{plan-backfill-VKDUUMTF.js.map → plan-backfill-RTYIZRZW.js.map} +0 -0
  61. /package/dist/{roi-GUUSTWXN.js.map → roi-IL6634QN.js.map} +0 -0
  62. /package/dist/{skills-XBREPCFU.js.map → skills-3ISTZIOH.js.map} +0 -0
  63. /package/dist/{start-2RW5WC25.js.map → start-IERZ42HJ.js.map} +0 -0
@@ -5,8 +5,8 @@ import {
5
5
  loadAuthToken,
6
6
  readConfig,
7
7
  writeConfig
8
- } from "./chunk-2UE3TNY7.js";
9
- import "./chunk-SXXAWBW7.js";
8
+ } from "./chunk-QMXIYUBC.js";
9
+ import "./chunk-L3GRMTOI.js";
10
10
  import "./chunk-JCEWPG3R.js";
11
11
  import "./chunk-2H7UOFLK.js";
12
12
  export {
@@ -16,4 +16,4 @@ export {
16
16
  readConfig,
17
17
  writeConfig
18
18
  };
19
- //# sourceMappingURL=auth-OHZTVIQU.js.map
19
+ //# sourceMappingURL=auth-7OBSJK2V.js.map
@@ -3,28 +3,28 @@ import {
3
3
  detectCapabilities,
4
4
  refreshMcpServers,
5
5
  registerBuiltInProfiles
6
- } from "./chunk-JO6BW3E2.js";
7
- import "./chunk-VSRWL5SP.js";
6
+ } from "./chunk-JYG26VFW.js";
7
+ import "./chunk-WTDP35C7.js";
8
8
  import {
9
9
  getRepoMetadata
10
- } from "./chunk-K7EXPNAD.js";
10
+ } from "./chunk-B23NPMUE.js";
11
11
  import "./chunk-4T2OQAVL.js";
12
12
  import {
13
13
  MCPTokenStore
14
- } from "./chunk-CGNWVGXL.js";
14
+ } from "./chunk-HPHI6KLB.js";
15
15
  import "./chunk-RR6V6SNM.js";
16
- import "./chunk-ROEOOZOW.js";
16
+ import "./chunk-EKDLDBWX.js";
17
17
  import "./chunk-ZFKJAYAN.js";
18
- import "./chunk-KSY4S4X3.js";
19
- import "./chunk-IYHMELNP.js";
20
- import "./chunk-QM5JXV3C.js";
18
+ import "./chunk-XUDNZERJ.js";
19
+ import "./chunk-JMXLEJCV.js";
20
+ import "./chunk-PS5MSEV6.js";
21
21
  import "./chunk-EHQITHQX.js";
22
22
  import "./chunk-X3MULCV5.js";
23
23
  import {
24
24
  flushLogger,
25
25
  logger
26
- } from "./chunk-CA5PKTNJ.js";
27
- import "./chunk-SXXAWBW7.js";
26
+ } from "./chunk-SIR6MDUU.js";
27
+ import "./chunk-L3GRMTOI.js";
28
28
  import "./chunk-JCEWPG3R.js";
29
29
  import "./chunk-2H7UOFLK.js";
30
30
 
@@ -7,10 +7,10 @@ import {
7
7
  } from "./chunk-RR6V6SNM.js";
8
8
  import {
9
9
  logger
10
- } from "./chunk-CA5PKTNJ.js";
10
+ } from "./chunk-SIR6MDUU.js";
11
11
  import {
12
12
  getShipyardHome
13
- } from "./chunk-SXXAWBW7.js";
13
+ } from "./chunk-L3GRMTOI.js";
14
14
  import {
15
15
  external_exports
16
16
  } from "./chunk-JCEWPG3R.js";
@@ -261,7 +261,7 @@ async function refreshRepoPathsInBackground(log) {
261
261
  const startGen = cacheGeneration;
262
262
  const start = Date.now();
263
263
  try {
264
- const { findGitRepos: findGitRepos2, discoverWorktrees: discoverWorktrees2 } = await import("./git-repo-IVN2RQNY.js");
264
+ const { findGitRepos: findGitRepos2, discoverWorktrees: discoverWorktrees2 } = await import("./git-repo-MMFHQHXX.js");
265
265
  const { homedir: homedir2 } = await import("os");
266
266
  const repos = await findGitRepos2(homedir2());
267
267
  const worktrees = await discoverWorktrees2(repos);
@@ -653,7 +653,7 @@ async function runDetectEnvironments(lastKnown) {
653
653
  repoPaths = await findGitRepos(homedir2());
654
654
  } catch (err) {
655
655
  if (lastKnown && lastKnown.length > 0) {
656
- const { logger: logger2 } = await import("./logger-I6HU4VSX.js");
656
+ const { logger: logger2 } = await import("./logger-6BPUF2G3.js");
657
657
  logger2.warn(
658
658
  { err, lastKnownCount: lastKnown.length },
659
659
  "detectEnvironments findGitRepos threw \u2014 preserving lastKnown"
@@ -663,7 +663,7 @@ async function runDetectEnvironments(lastKnown) {
663
663
  return [];
664
664
  }
665
665
  if (repoPaths.length === 0 && lastKnown && lastKnown.length > 0) {
666
- const { logger: logger2 } = await import("./logger-I6HU4VSX.js");
666
+ const { logger: logger2 } = await import("./logger-6BPUF2G3.js");
667
667
  logger2.warn(
668
668
  { lastKnownCount: lastKnown.length },
669
669
  "detectEnvironments walk empty but lastKnown non-empty \u2014 preserving lastKnown"
@@ -796,4 +796,4 @@ export {
796
796
  discoverWorktrees,
797
797
  _testing
798
798
  };
799
- //# sourceMappingURL=chunk-K7EXPNAD.js.map
799
+ //# sourceMappingURL=chunk-B23NPMUE.js.map
@@ -244,7 +244,7 @@ async function detectSkills(environments, lastKnown, options) {
244
244
  try {
245
245
  return await detectSkillsInner(environments, resolvedMirror, options?.activeRepoRoot);
246
246
  } catch (err) {
247
- const { logger } = await import("./logger-I6HU4VSX.js");
247
+ const { logger } = await import("./logger-6BPUF2G3.js");
248
248
  if (lastKnown && lastKnown.length > 0) {
249
249
  logger.warn(
250
250
  { err, lastKnownCount: lastKnown.length },
@@ -428,4 +428,4 @@ export {
428
428
  scopeEnvironmentsToActiveRepo,
429
429
  _resolveBucketForTesting
430
430
  };
431
- //# sourceMappingURL=chunk-ROEOOZOW.js.map
431
+ //# sourceMappingURL=chunk-EKDLDBWX.js.map
@@ -31,17 +31,17 @@ import {
31
31
  parseShipyardDeliverableUrl,
32
32
  planEditorSerializer,
33
33
  toTaskIndexEntry
34
- } from "./chunk-IYHMELNP.js";
34
+ } from "./chunk-JMXLEJCV.js";
35
35
  import {
36
36
  assertNever
37
37
  } from "./chunk-X3MULCV5.js";
38
38
  import {
39
39
  logger
40
- } from "./chunk-CA5PKTNJ.js";
40
+ } from "./chunk-SIR6MDUU.js";
41
41
  import {
42
42
  getPlanBackfillMode,
43
43
  getShipyardHome
44
- } from "./chunk-SXXAWBW7.js";
44
+ } from "./chunk-L3GRMTOI.js";
45
45
  import {
46
46
  external_exports
47
47
  } from "./chunk-JCEWPG3R.js";
@@ -34847,4 +34847,4 @@ export {
34847
34847
  runPlanBackfill,
34848
34848
  buildTaskStateStore
34849
34849
  };
34850
- //# sourceMappingURL=chunk-3OSJ2NBG.js.map
34850
+ //# sourceMappingURL=chunk-GBMR7R3J.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  validateEnv
4
- } from "./chunk-SXXAWBW7.js";
4
+ } from "./chunk-L3GRMTOI.js";
5
5
  import {
6
6
  external_exports
7
7
  } from "./chunk-JCEWPG3R.js";
@@ -18,8 +18,8 @@ function getDaemonVersion() {
18
18
  return cached;
19
19
  }
20
20
  function readDaemonVersion() {
21
- if ("3.27.0".length > 0) {
22
- return "3.27.0";
21
+ if ("3.28.0".length > 0) {
22
+ return "3.28.0";
23
23
  }
24
24
  try {
25
25
  const here = dirname(fileURLToPath(import.meta.url));
@@ -48,4 +48,4 @@ function readDaemonVersion() {
48
48
  export {
49
49
  getDaemonVersion
50
50
  };
51
- //# sourceMappingURL=chunk-765IZGCC.js.map
51
+ //# sourceMappingURL=chunk-GUD5HUAM.js.map
@@ -2,24 +2,24 @@
2
2
  import {
3
3
  print,
4
4
  printError
5
- } from "./chunk-2YH743ND.js";
5
+ } from "./chunk-QTCPOZUO.js";
6
6
  import {
7
7
  getConfigPath,
8
8
  loadAuthToken,
9
9
  readConfig,
10
10
  writeConfig
11
- } from "./chunk-2UE3TNY7.js";
11
+ } from "./chunk-QMXIYUBC.js";
12
12
  import {
13
13
  DeviceExchangeCodeResponseSchema,
14
14
  DevicePollPendingSchema,
15
15
  DevicePollResponseSchema,
16
16
  DeviceStartResponseSchema,
17
17
  ROUTES
18
- } from "./chunk-QM5JXV3C.js";
18
+ } from "./chunk-PS5MSEV6.js";
19
19
  import {
20
20
  isDevMode,
21
21
  validateEnv
22
- } from "./chunk-SXXAWBW7.js";
22
+ } from "./chunk-L3GRMTOI.js";
23
23
  import {
24
24
  external_exports
25
25
  } from "./chunk-JCEWPG3R.js";
@@ -223,4 +223,4 @@ export {
223
223
  ensureAuthenticated,
224
224
  loginCommand
225
225
  };
226
- //# sourceMappingURL=chunk-GTFOF3S6.js.map
226
+ //# sourceMappingURL=chunk-HJXABEEV.js.map
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-RR6V6SNM.js";
6
6
  import {
7
7
  logger
8
- } from "./chunk-CA5PKTNJ.js";
8
+ } from "./chunk-SIR6MDUU.js";
9
9
  import {
10
10
  isClaudeCodeKeychainReadEnabled
11
- } from "./chunk-SXXAWBW7.js";
11
+ } from "./chunk-L3GRMTOI.js";
12
12
  import {
13
13
  external_exports
14
14
  } from "./chunk-JCEWPG3R.js";
@@ -1558,7 +1558,7 @@ async function detectMCPServers(environments, tokenStore, log, lastKnown, prefer
1558
1558
  lastKnown
1559
1559
  );
1560
1560
  } catch (err) {
1561
- const { logger: logger2 } = await import("./logger-I6HU4VSX.js");
1561
+ const { logger: logger2 } = await import("./logger-6BPUF2G3.js");
1562
1562
  if (lastKnown && lastKnown.length > 0) {
1563
1563
  logger2.warn(
1564
1564
  { err, lastKnownCount: lastKnown.length },
@@ -1763,4 +1763,4 @@ export {
1763
1763
  resolveAuthStatuses,
1764
1764
  detectMCPServers
1765
1765
  };
1766
- //# sourceMappingURL=chunk-CGNWVGXL.js.map
1766
+ //# sourceMappingURL=chunk-HPHI6KLB.js.map
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  getShipyardHome,
7
7
  validateEnv
8
- } from "./chunk-SXXAWBW7.js";
8
+ } from "./chunk-L3GRMTOI.js";
9
9
 
10
10
  // src/services/bootstrap/native-crash-report.ts
11
11
  import { mkdirSync } from "fs";
@@ -59,4 +59,4 @@ function setOptionalFlag(report, flag) {
59
59
  export {
60
60
  enableNativeCrashReports
61
61
  };
62
- //# sourceMappingURL=chunk-JD4WV327.js.map
62
+ //# sourceMappingURL=chunk-IR26LUE6.js.map
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  PUBLISHED_PREVIEW_KINDS,
4
4
  PUBLISH_TTL_CHOICES
5
- } from "./chunk-QM5JXV3C.js";
5
+ } from "./chunk-PS5MSEV6.js";
6
6
  import {
7
7
  external_exports
8
8
  } from "./chunk-JCEWPG3R.js";
@@ -30121,4 +30121,4 @@ export {
30121
30121
  encodeDrain,
30122
30122
  decodeFrame
30123
30123
  };
30124
- //# sourceMappingURL=chunk-IYHMELNP.js.map
30124
+ //# sourceMappingURL=chunk-JMXLEJCV.js.map
@@ -10,7 +10,7 @@ import {
10
10
  run,
11
11
  runWithTimeout,
12
12
  truncateDiff
13
- } from "./chunk-K7EXPNAD.js";
13
+ } from "./chunk-B23NPMUE.js";
14
14
  import {
15
15
  gitExecSafe
16
16
  } from "./chunk-4T2OQAVL.js";
@@ -19,13 +19,13 @@ import {
19
19
  CODEX_RUNTIME_ID,
20
20
  CURSOR_RUNTIME_ID,
21
21
  detectMCPServers
22
- } from "./chunk-CGNWVGXL.js";
22
+ } from "./chunk-HPHI6KLB.js";
23
23
  import {
24
24
  isEnoent
25
25
  } from "./chunk-RR6V6SNM.js";
26
26
  import {
27
27
  detectSkills
28
- } from "./chunk-ROEOOZOW.js";
28
+ } from "./chunk-EKDLDBWX.js";
29
29
  import {
30
30
  createOneShotPool
31
31
  } from "./chunk-ZFKJAYAN.js";
@@ -38,7 +38,7 @@ import {
38
38
  formatTaskFeedback,
39
39
  toRecord,
40
40
  toSdkContent
41
- } from "./chunk-KSY4S4X3.js";
41
+ } from "./chunk-XUDNZERJ.js";
42
42
  import {
43
43
  AGENT_IDS,
44
44
  AGENT_SYSTEM_CLAUDE_CODE,
@@ -50,22 +50,22 @@ import {
50
50
  REASONING_EFFORTS,
51
51
  inflateToolResultContent,
52
52
  isImageMimeType
53
- } from "./chunk-IYHMELNP.js";
53
+ } from "./chunk-JMXLEJCV.js";
54
54
  import {
55
55
  AnthropicAuthStatusSchema,
56
56
  CodexAuthStatusSchema,
57
57
  CursorAuthStatusSchema,
58
58
  PermissionModeSchema,
59
59
  TESTED_CODEX_VERSION
60
- } from "./chunk-QM5JXV3C.js";
60
+ } from "./chunk-PS5MSEV6.js";
61
61
  import {
62
62
  logger
63
- } from "./chunk-CA5PKTNJ.js";
63
+ } from "./chunk-SIR6MDUU.js";
64
64
  import {
65
65
  getShipyardHome,
66
66
  resolveNodeExecPath,
67
67
  validateEnv
68
- } from "./chunk-SXXAWBW7.js";
68
+ } from "./chunk-L3GRMTOI.js";
69
69
  import {
70
70
  external_exports
71
71
  } from "./chunk-JCEWPG3R.js";
@@ -1286,8 +1286,10 @@ function convertUserContent(content) {
1286
1286
  // src/services/session/profiles/model-capability-tiers.ts
1287
1287
  var MODEL_CAPABILITY_TIERS = {
1288
1288
  "claude-opus-5": "frontier",
1289
+ "claude-fable-5-1": "frontier",
1289
1290
  "claude-fable-5": "frontier",
1290
1291
  "claude-sonnet-5": "strong",
1292
+ "gpt-6-astra": "frontier",
1291
1293
  "gpt-5.6-sol": "frontier",
1292
1294
  "gpt-5.6-terra": "strong",
1293
1295
  "gpt-5.6-luna": "capable",
@@ -1515,6 +1517,45 @@ var claudeCodeProfile = {
1515
1517
  vision: true
1516
1518
  }
1517
1519
  },
1520
+ {
1521
+ /**
1522
+ * Fable 5.1 (released 2026-09-01). Specs read from the Agent SDK 0.3.259
1523
+ * native-binary model registry, which is authoritative over the docs page:
1524
+ * `context:{window:1e6,native_1m:true}`, `max_output_tokens:{upper:128000}`,
1525
+ * `default_effort:"high"`, `pricing:"tier_10_50_cache_read_0_25"`.
1526
+ *
1527
+ * `defaultEffort` is `high`, NOT the `xhigh` used by the Fable 5 entry
1528
+ * below — the registry states `high` for both, and the Fable 5 entry's
1529
+ * `xhigh` is a Shipyard deviation we are deliberately not propagating.
1530
+ *
1531
+ * The effort ladder mirrors Fable 5: the registry gives both models an
1532
+ * identical `effort_cost_index` (low/medium/high/xhigh/max) and identical
1533
+ * effort capabilities (`effort`,`max_effort`,`xhigh_effort`). `none` and
1534
+ * `ultracode` are Shipyard-synthetic tiers carried on the sibling entry.
1535
+ *
1536
+ * 1M context needs no `ONE_M_SPAWN_PREFIXES` addition — `resolveSpawnModel`
1537
+ * prefix-matches `claude-fable-5`, so `claude-fable-5-1[1m]` already routes.
1538
+ */
1539
+ id: "claude-fable-5-1",
1540
+ nativeName: "claude-fable-5-1",
1541
+ displayName: "Claude Fable 5.1",
1542
+ description: "For demanding reasoning and long-horizon agentic work",
1543
+ note: "Covered Model \xB7 30-day retention",
1544
+ contextWindow: 1e6,
1545
+ maxOutput: 128e3,
1546
+ supportedEfforts: ["none", "low", "medium", "high", "xhigh", "ultracode", "max"],
1547
+ defaultEffort: "high",
1548
+ tagline: "For demanding reasoning and long-horizon agentic work",
1549
+ speedTier: "slow",
1550
+ costInputUsd: 10,
1551
+ costOutputUsd: 50,
1552
+ capabilities: {
1553
+ reasoning: true,
1554
+ adaptiveThinking: true,
1555
+ webSearch: true,
1556
+ vision: true
1557
+ }
1558
+ },
1518
1559
  {
1519
1560
  id: "claude-fable-5",
1520
1561
  nativeName: "claude-fable-5",
@@ -1936,7 +1977,10 @@ var CODEX_PRICING_SEED = {
1936
1977
  * GPT-5.6 family standard rates (per 1M tokens), verified 2026-07-13 against
1937
1978
  * openai.com/index/gpt-5-6 + OpenRouter. cached-input ≈ 10% of input (the
1938
1979
  * convention the 5.5/5.4 rows use). No high-context tier modeled for 5.6 —
1939
- * unverified; the standard rate is used across the full 372k window.
1980
+ * unverified; the standard rate is used across the full 272k window.
1981
+ *
1982
+ * `gpt-6-astra` is intentionally absent: OpenAI has published no rates for it,
1983
+ * so its turns report no estimated cost rather than a fabricated one.
1940
1984
  */
1941
1985
  "gpt-5.6-sol": {
1942
1986
  inputUsdPerMtok: 5,
@@ -2568,6 +2612,9 @@ function translateFileChangePatchUpdated(delta) {
2568
2612
  }
2569
2613
  function classifyCodexErrorText(raw) {
2570
2614
  const msg = raw.toLowerCase();
2615
+ if (/unexpected status 404/.test(msg) && /backend-api\/codex\//.test(msg) && !/model not found/.test(msg)) {
2616
+ return "stale_credentials";
2617
+ }
2571
2618
  if (/missing\s+bearer/.test(msg)) return null;
2572
2619
  if (/rate.?limit|usage.?limit|quota/.test(msg)) return "usage_limit";
2573
2620
  if (/\bunauthor|\btoken[_.-]?revoked|\bsigned.?out|\bnot\s+(?:logged|signed)\s+in|\bauth(?:entication)?\s+(?:failed|required|expired|\berror)|\binvalid\s+(?:api.?key|token|credential)|\bsession\s+(?:expired|invalid)/.test(
@@ -2577,8 +2624,16 @@ function classifyCodexErrorText(raw) {
2577
2624
  if (/billing|credit|payment/.test(msg)) return "billing_error";
2578
2625
  return null;
2579
2626
  }
2627
+ function buildStaleCodexCredentialsMessage(raw) {
2628
+ return `${raw}
2629
+
2630
+ Codex\u2019s backend rejected this machine\u2019s stored credentials, so retrying will keep failing. The Codex login is likely stale \u2014 run \`codex logout && codex login\` in a terminal, then retry.`;
2631
+ }
2580
2632
  function translateWarningNotification(warn) {
2581
2633
  const classified = classifyCodexErrorText(warn.message);
2634
+ if (classified === "stale_credentials") {
2635
+ return { type: "sdk_error", error: buildStaleCodexCredentialsMessage(warn.message) };
2636
+ }
2582
2637
  if (classified === "usage_limit") {
2583
2638
  return {
2584
2639
  type: "rate_limit",
@@ -2630,6 +2685,9 @@ function translateErrorNotification(params) {
2630
2685
  }
2631
2686
  }
2632
2687
  const classified = classifyCodexErrorText(message);
2688
+ if (classified === "stale_credentials") {
2689
+ return { type: "sdk_error", error: buildStaleCodexCredentialsMessage(message) };
2690
+ }
2633
2691
  if (classified === "auth_required") {
2634
2692
  return { type: "auth_not_logged_in" };
2635
2693
  }
@@ -3118,7 +3176,7 @@ var CODEX_MODEL_CATALOG = withCapabilityTiers([
3118
3176
  nativeName: "gpt-5.6-sol",
3119
3177
  displayName: "GPT-5.6 Sol",
3120
3178
  description: "Latest frontier agentic coding model \u2014 complex code, research, and ambitious work.",
3121
- contextWindow: 372e3,
3179
+ contextWindow: 272e3,
3122
3180
  supportedEfforts: ["low", "medium", "high", "xhigh", "max", "ultra"],
3123
3181
  defaultEffort: "low",
3124
3182
  pricing: pricingFor("gpt-5.6-sol"),
@@ -3137,7 +3195,7 @@ var CODEX_MODEL_CATALOG = withCapabilityTiers([
3137
3195
  nativeName: "gpt-5.6-terra",
3138
3196
  displayName: "GPT-5.6 Terra",
3139
3197
  description: "Balanced agentic coding model for everyday work.",
3140
- contextWindow: 372e3,
3198
+ contextWindow: 272e3,
3141
3199
  supportedEfforts: ["low", "medium", "high", "xhigh", "max", "ultra"],
3142
3200
  defaultEffort: "medium",
3143
3201
  pricing: pricingFor("gpt-5.6-terra"),
@@ -3156,7 +3214,7 @@ var CODEX_MODEL_CATALOG = withCapabilityTiers([
3156
3214
  nativeName: "gpt-5.6-luna",
3157
3215
  displayName: "GPT-5.6 Luna",
3158
3216
  description: "Fast and affordable agentic coding model.",
3159
- contextWindow: 372e3,
3217
+ contextWindow: 272e3,
3160
3218
  supportedEfforts: ["low", "medium", "high", "xhigh", "max"],
3161
3219
  defaultEffort: "medium",
3162
3220
  pricing: pricingFor("gpt-5.6-luna"),
@@ -3169,6 +3227,25 @@ var CODEX_MODEL_CATALOG = withCapabilityTiers([
3169
3227
  webSearch: false,
3170
3228
  vision: true
3171
3229
  }
3230
+ },
3231
+ {
3232
+ id: "gpt-6-astra",
3233
+ nativeName: "gpt-6-astra",
3234
+ displayName: "GPT-6 Astra",
3235
+ description: "Our most capable model for complex, demanding work.",
3236
+ contextWindow: 272e3,
3237
+ supportedEfforts: ["low", "medium", "high", "xhigh", "max", "ultra"],
3238
+ defaultEffort: "low",
3239
+ pricing: pricingFor("gpt-6-astra"),
3240
+ tagline: "Frontier OpenAI Codex \u2014 most capable, strong even at low effort",
3241
+ speedTier: "standard",
3242
+ ...displayCostFor("gpt-6-astra"),
3243
+ capabilities: {
3244
+ reasoning: true,
3245
+ adaptiveThinking: false,
3246
+ webSearch: false,
3247
+ vision: true
3248
+ }
3172
3249
  }
3173
3250
  ]);
3174
3251
 
@@ -8274,6 +8351,7 @@ export {
8274
8351
  translateCommandExecutionOutputDelta,
8275
8352
  translateFileChangePatchUpdated,
8276
8353
  classifyCodexErrorText,
8354
+ buildStaleCodexCredentialsMessage,
8277
8355
  translateWarningNotification,
8278
8356
  translateAccountRateLimitsUpdated,
8279
8357
  translateErrorNotification,
@@ -8364,4 +8442,4 @@ export {
8364
8442
  refreshInstalledAgents,
8365
8443
  refreshCodexAuthSlice
8366
8444
  };
8367
- //# sourceMappingURL=chunk-JO6BW3E2.js.map
8445
+ //# sourceMappingURL=chunk-JYG26VFW.js.map