nexus-agents 8.127.8 → 8.127.10

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 (132) hide show
  1. package/dist/{ast-rule-runner-U7KJLJET.js → ast-rule-runner-KW3QSDNI.js} +3 -3
  2. package/dist/{child-mcp-config-B6EYZIYW.js → child-mcp-config-2MM5LZCN.js} +2 -2
  3. package/dist/{chunk-FRBEM62C.js → chunk-25SRHK3D.js} +130 -25
  4. package/dist/chunk-25SRHK3D.js.map +1 -0
  5. package/dist/{chunk-SGOTDHQI.js → chunk-44AUGXUS.js} +3 -3
  6. package/dist/{chunk-65JQBQOK.js → chunk-6FCJIMXR.js} +2 -2
  7. package/dist/{chunk-RKAODHLN.js → chunk-AQMD7HQY.js} +5 -5
  8. package/dist/{chunk-5V2VGTTG.js → chunk-B7YJEAUH.js} +7 -5
  9. package/dist/{chunk-5V2VGTTG.js.map → chunk-B7YJEAUH.js.map} +1 -1
  10. package/dist/{chunk-VWJERCYG.js → chunk-BCHMK2DE.js} +3 -3
  11. package/dist/{chunk-WIP6ERE6.js → chunk-BJVQHWHB.js} +5 -5
  12. package/dist/{chunk-OGUVQMYK.js → chunk-BLBABWTZ.js} +5 -5
  13. package/dist/{chunk-6NNA2KRG.js → chunk-C32HXRQV.js} +2 -2
  14. package/dist/{chunk-7HHYZI7I.js → chunk-COOZM7W2.js} +2 -2
  15. package/dist/{chunk-5RUIF32H.js → chunk-FKTXYYUN.js} +3 -3
  16. package/dist/{chunk-JHZKOAGF.js → chunk-GHN65H35.js} +3 -3
  17. package/dist/{chunk-4P6AEBG3.js → chunk-GJBPAZL2.js} +2 -2
  18. package/dist/{chunk-Y7RP45CI.js → chunk-GNSQPWCJ.js} +2 -2
  19. package/dist/{chunk-MWUWNR6R.js → chunk-GXPTNQFT.js} +2 -2
  20. package/dist/{chunk-VXYKND2V.js → chunk-HBABJ3TY.js} +3 -3
  21. package/dist/{chunk-VXYKND2V.js.map → chunk-HBABJ3TY.js.map} +1 -1
  22. package/dist/{chunk-F5D22FT3.js → chunk-I2MZGEG4.js} +2 -2
  23. package/dist/{chunk-IL7TFG7E.js → chunk-IFVDWHOL.js} +4 -4
  24. package/dist/{chunk-NPYQTGZ4.js → chunk-J2LCNIZD.js} +2 -2
  25. package/dist/{chunk-XN5UXXPR.js → chunk-K276Q4SO.js} +2 -2
  26. package/dist/{chunk-ZYLP3I4Q.js → chunk-KOSZ3MBU.js} +2 -2
  27. package/dist/{chunk-VGTIECMR.js → chunk-L6OAYUYG.js} +4 -4
  28. package/dist/{chunk-KMATYWSS.js → chunk-LHJFOXSS.js} +2 -2
  29. package/dist/{chunk-4THH3LZI.js → chunk-M2PQUYVA.js} +23 -18
  30. package/dist/chunk-M2PQUYVA.js.map +1 -0
  31. package/dist/{chunk-SLIVLPTO.js → chunk-NNXALFFP.js} +6 -6
  32. package/dist/{chunk-SIGBVWTN.js → chunk-OTOS7MOC.js} +4 -4
  33. package/dist/{chunk-WXV6ZMME.js → chunk-OULQZF2D.js} +2 -2
  34. package/dist/{chunk-2GPN6SBB.js → chunk-QUG7LULI.js} +2 -2
  35. package/dist/{chunk-2C6OVYYM.js → chunk-S6HGUEJU.js} +41 -41
  36. package/dist/{chunk-TQPZMYJC.js → chunk-SFBYLIA5.js} +7 -7
  37. package/dist/{chunk-Y4MY7LL4.js → chunk-VKOGSQUX.js} +5 -5
  38. package/dist/{chunk-P3G2P3XP.js → chunk-VMUSPRJ6.js} +2 -2
  39. package/dist/{chunk-QZDPLL4P.js → chunk-VU3EGAVR.js} +4 -4
  40. package/dist/{chunk-5O4FQXNR.js → chunk-WTLRCY75.js} +12 -12
  41. package/dist/{chunk-MXL47R7E.js → chunk-XWB3YQKW.js} +2 -2
  42. package/dist/{cli-circuit-breaker-BKB5TZGZ.js → cli-circuit-breaker-2UQ3EBKK.js} +3 -3
  43. package/dist/cli.js +44 -44
  44. package/dist/{composite-router-JKMRE5P4.js → composite-router-UQZUVFDK.js} +2 -2
  45. package/dist/{consensus-vote-5JGFKK7H.js → consensus-vote-R5ISJYUC.js} +17 -17
  46. package/dist/{context-retriever-SJOIZOX4.js → context-retriever-4NZAJPGM.js} +8 -8
  47. package/dist/{doctor-deep-B75BNQD3.js → doctor-deep-7YL76A2X.js} +3 -3
  48. package/dist/{doctor-gateway-report-VIGDRLWY.js → doctor-gateway-report-UZXPVJWF.js} +8 -8
  49. package/dist/{doctor-live-JC5DVDST.js → doctor-live-JLMDQAIO.js} +11 -11
  50. package/dist/{expert-bridge-L6R2EVWC.js → expert-bridge-WMFLPZTK.js} +4 -4
  51. package/dist/{factory-2U3KP245.js → factory-RMEXOZQ2.js} +5 -5
  52. package/dist/{factory-IJJM2HI5.js → factory-Z5DKBUDN.js} +10 -10
  53. package/dist/{improvement-review-F74VDT3T.js → improvement-review-LNS7CHIE.js} +6 -6
  54. package/dist/index.js +32 -32
  55. package/dist/{init-opencode-D7MF5Y5U.js → init-opencode-6NFU2U7J.js} +6 -6
  56. package/dist/{issue-triage-Z5NVHIUY.js → issue-triage-JEJMER3Z.js} +6 -6
  57. package/dist/{openai-compat-adapter-J7NNEA4M.js → openai-compat-adapter-E7ZXW3MP.js} +6 -6
  58. package/dist/{pr-reviewer-helpers-FLPL26MT.js → pr-reviewer-helpers-TDGJRPFE.js} +4 -4
  59. package/dist/{registry-command-Y7UEBY4I.js → registry-command-QXIYH7FP.js} +2 -2
  60. package/dist/{repo-security-plan-M2ZKPKM5.js → repo-security-plan-PPX4JWVE.js} +3 -3
  61. package/dist/{research-helpers-synthesize-4RLXKF6Z.js → research-helpers-synthesize-E4BWGAAQ.js} +4 -4
  62. package/dist/{routing-memory-KS2FVGZK.js → routing-memory-IHGCISY5.js} +2 -2
  63. package/dist/{session-memory-5YEA6WGW.js → session-memory-4X4VHCBQ.js} +3 -3
  64. package/dist/{setup-config-S3CCSCGD.js → setup-config-ZDU4P2TO.js} +3 -3
  65. package/dist/{setup-custom-api-3HABFONX.js → setup-custom-api-ARJJVWJI.js} +4 -4
  66. package/dist/setup-data-dir-QRHGEEBU.js +34 -0
  67. package/dist/{tool-memory-YTM6NLSB.js → tool-memory-JCHE5D75.js} +5 -5
  68. package/dist/{unified-registry-QJ237B7I.js → unified-registry-MWXAMWMX.js} +11 -11
  69. package/dist/{weather-report-KSK6K3FF.js → weather-report-4J5FSGEX.js} +2 -2
  70. package/package.json +1 -1
  71. package/dist/chunk-4THH3LZI.js.map +0 -1
  72. package/dist/chunk-FRBEM62C.js.map +0 -1
  73. package/dist/setup-data-dir-Z5CIMVV6.js +0 -34
  74. /package/dist/{ast-rule-runner-U7KJLJET.js.map → ast-rule-runner-KW3QSDNI.js.map} +0 -0
  75. /package/dist/{child-mcp-config-B6EYZIYW.js.map → child-mcp-config-2MM5LZCN.js.map} +0 -0
  76. /package/dist/{chunk-SGOTDHQI.js.map → chunk-44AUGXUS.js.map} +0 -0
  77. /package/dist/{chunk-65JQBQOK.js.map → chunk-6FCJIMXR.js.map} +0 -0
  78. /package/dist/{chunk-RKAODHLN.js.map → chunk-AQMD7HQY.js.map} +0 -0
  79. /package/dist/{chunk-VWJERCYG.js.map → chunk-BCHMK2DE.js.map} +0 -0
  80. /package/dist/{chunk-WIP6ERE6.js.map → chunk-BJVQHWHB.js.map} +0 -0
  81. /package/dist/{chunk-OGUVQMYK.js.map → chunk-BLBABWTZ.js.map} +0 -0
  82. /package/dist/{chunk-6NNA2KRG.js.map → chunk-C32HXRQV.js.map} +0 -0
  83. /package/dist/{chunk-7HHYZI7I.js.map → chunk-COOZM7W2.js.map} +0 -0
  84. /package/dist/{chunk-5RUIF32H.js.map → chunk-FKTXYYUN.js.map} +0 -0
  85. /package/dist/{chunk-JHZKOAGF.js.map → chunk-GHN65H35.js.map} +0 -0
  86. /package/dist/{chunk-4P6AEBG3.js.map → chunk-GJBPAZL2.js.map} +0 -0
  87. /package/dist/{chunk-Y7RP45CI.js.map → chunk-GNSQPWCJ.js.map} +0 -0
  88. /package/dist/{chunk-MWUWNR6R.js.map → chunk-GXPTNQFT.js.map} +0 -0
  89. /package/dist/{chunk-F5D22FT3.js.map → chunk-I2MZGEG4.js.map} +0 -0
  90. /package/dist/{chunk-IL7TFG7E.js.map → chunk-IFVDWHOL.js.map} +0 -0
  91. /package/dist/{chunk-NPYQTGZ4.js.map → chunk-J2LCNIZD.js.map} +0 -0
  92. /package/dist/{chunk-XN5UXXPR.js.map → chunk-K276Q4SO.js.map} +0 -0
  93. /package/dist/{chunk-ZYLP3I4Q.js.map → chunk-KOSZ3MBU.js.map} +0 -0
  94. /package/dist/{chunk-VGTIECMR.js.map → chunk-L6OAYUYG.js.map} +0 -0
  95. /package/dist/{chunk-KMATYWSS.js.map → chunk-LHJFOXSS.js.map} +0 -0
  96. /package/dist/{chunk-SLIVLPTO.js.map → chunk-NNXALFFP.js.map} +0 -0
  97. /package/dist/{chunk-SIGBVWTN.js.map → chunk-OTOS7MOC.js.map} +0 -0
  98. /package/dist/{chunk-WXV6ZMME.js.map → chunk-OULQZF2D.js.map} +0 -0
  99. /package/dist/{chunk-2GPN6SBB.js.map → chunk-QUG7LULI.js.map} +0 -0
  100. /package/dist/{chunk-2C6OVYYM.js.map → chunk-S6HGUEJU.js.map} +0 -0
  101. /package/dist/{chunk-TQPZMYJC.js.map → chunk-SFBYLIA5.js.map} +0 -0
  102. /package/dist/{chunk-Y4MY7LL4.js.map → chunk-VKOGSQUX.js.map} +0 -0
  103. /package/dist/{chunk-P3G2P3XP.js.map → chunk-VMUSPRJ6.js.map} +0 -0
  104. /package/dist/{chunk-QZDPLL4P.js.map → chunk-VU3EGAVR.js.map} +0 -0
  105. /package/dist/{chunk-5O4FQXNR.js.map → chunk-WTLRCY75.js.map} +0 -0
  106. /package/dist/{chunk-MXL47R7E.js.map → chunk-XWB3YQKW.js.map} +0 -0
  107. /package/dist/{cli-circuit-breaker-BKB5TZGZ.js.map → cli-circuit-breaker-2UQ3EBKK.js.map} +0 -0
  108. /package/dist/{composite-router-JKMRE5P4.js.map → composite-router-UQZUVFDK.js.map} +0 -0
  109. /package/dist/{consensus-vote-5JGFKK7H.js.map → consensus-vote-R5ISJYUC.js.map} +0 -0
  110. /package/dist/{context-retriever-SJOIZOX4.js.map → context-retriever-4NZAJPGM.js.map} +0 -0
  111. /package/dist/{doctor-deep-B75BNQD3.js.map → doctor-deep-7YL76A2X.js.map} +0 -0
  112. /package/dist/{doctor-gateway-report-VIGDRLWY.js.map → doctor-gateway-report-UZXPVJWF.js.map} +0 -0
  113. /package/dist/{doctor-live-JC5DVDST.js.map → doctor-live-JLMDQAIO.js.map} +0 -0
  114. /package/dist/{expert-bridge-L6R2EVWC.js.map → expert-bridge-WMFLPZTK.js.map} +0 -0
  115. /package/dist/{factory-2U3KP245.js.map → factory-RMEXOZQ2.js.map} +0 -0
  116. /package/dist/{factory-IJJM2HI5.js.map → factory-Z5DKBUDN.js.map} +0 -0
  117. /package/dist/{improvement-review-F74VDT3T.js.map → improvement-review-LNS7CHIE.js.map} +0 -0
  118. /package/dist/{init-opencode-D7MF5Y5U.js.map → init-opencode-6NFU2U7J.js.map} +0 -0
  119. /package/dist/{issue-triage-Z5NVHIUY.js.map → issue-triage-JEJMER3Z.js.map} +0 -0
  120. /package/dist/{openai-compat-adapter-J7NNEA4M.js.map → openai-compat-adapter-E7ZXW3MP.js.map} +0 -0
  121. /package/dist/{pr-reviewer-helpers-FLPL26MT.js.map → pr-reviewer-helpers-TDGJRPFE.js.map} +0 -0
  122. /package/dist/{registry-command-Y7UEBY4I.js.map → registry-command-QXIYH7FP.js.map} +0 -0
  123. /package/dist/{repo-security-plan-M2ZKPKM5.js.map → repo-security-plan-PPX4JWVE.js.map} +0 -0
  124. /package/dist/{research-helpers-synthesize-4RLXKF6Z.js.map → research-helpers-synthesize-E4BWGAAQ.js.map} +0 -0
  125. /package/dist/{routing-memory-KS2FVGZK.js.map → routing-memory-IHGCISY5.js.map} +0 -0
  126. /package/dist/{session-memory-5YEA6WGW.js.map → session-memory-4X4VHCBQ.js.map} +0 -0
  127. /package/dist/{setup-config-S3CCSCGD.js.map → setup-config-ZDU4P2TO.js.map} +0 -0
  128. /package/dist/{setup-custom-api-3HABFONX.js.map → setup-custom-api-ARJJVWJI.js.map} +0 -0
  129. /package/dist/{setup-data-dir-Z5CIMVV6.js.map → setup-data-dir-QRHGEEBU.js.map} +0 -0
  130. /package/dist/{tool-memory-YTM6NLSB.js.map → tool-memory-JCHE5D75.js.map} +0 -0
  131. /package/dist/{unified-registry-QJ237B7I.js.map → unified-registry-MWXAMWMX.js.map} +0 -0
  132. /package/dist/{weather-report-KSK6K3FF.js.map → weather-report-4J5FSGEX.js.map} +0 -0
@@ -9,8 +9,8 @@ import {
9
9
  getBuiltInAstRulesPath,
10
10
  loadRules,
11
11
  runAstQaRules
12
- } from "./chunk-MWUWNR6R.js";
13
- import "./chunk-5V2VGTTG.js";
12
+ } from "./chunk-GXPTNQFT.js";
13
+ import "./chunk-B7YJEAUH.js";
14
14
  import "./chunk-XBEKMUTO.js";
15
15
  import "./chunk-UE7A2XHM.js";
16
16
  import "./chunk-LWOX65CP.js";
@@ -27,4 +27,4 @@ export {
27
27
  loadRules,
28
28
  runAstQaRules
29
29
  };
30
- //# sourceMappingURL=ast-rule-runner-U7KJLJET.js.map
30
+ //# sourceMappingURL=ast-rule-runner-KW3QSDNI.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-OITVVSWO.js";
4
4
  import {
5
5
  createLogger
6
- } from "./chunk-5V2VGTTG.js";
6
+ } from "./chunk-B7YJEAUH.js";
7
7
  import "./chunk-XBEKMUTO.js";
8
8
  import "./chunk-UE7A2XHM.js";
9
9
  import "./chunk-LWOX65CP.js";
@@ -50,4 +50,4 @@ async function generateMcpConfig(options) {
50
50
  export {
51
51
  generateMcpConfig
52
52
  };
53
- //# sourceMappingURL=child-mcp-config-B6EYZIYW.js.map
53
+ //# sourceMappingURL=child-mcp-config-2MM5LZCN.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CUSTOM_API_DEFAULT_MODEL
3
- } from "./chunk-NPYQTGZ4.js";
3
+ } from "./chunk-J2LCNIZD.js";
4
4
  import {
5
5
  nexusMkdtempSync
6
6
  } from "./chunk-OITVVSWO.js";
@@ -8,7 +8,7 @@ import {
8
8
  ensureGatewayDiscovered,
9
9
  gatewayDiscoveryStatus,
10
10
  getAvailabilityCache
11
- } from "./chunk-SGOTDHQI.js";
11
+ } from "./chunk-44AUGXUS.js";
12
12
  import {
13
13
  AdapterModelError,
14
14
  BaseAdapter,
@@ -19,7 +19,7 @@ import {
19
19
  requireApiKey,
20
20
  validateApiKeyPresence,
21
21
  withGatewayUsageRecording
22
- } from "./chunk-MXL47R7E.js";
22
+ } from "./chunk-XWB3YQKW.js";
23
23
  import {
24
24
  assertCustomApiHostResolvesPublic,
25
25
  hostnameOf,
@@ -28,22 +28,22 @@ import {
28
28
  readGatewayEnv,
29
29
  redactApiKey,
30
30
  validateCustomApiBaseUrl
31
- } from "./chunk-2GPN6SBB.js";
31
+ } from "./chunk-QUG7LULI.js";
32
32
  import {
33
33
  sanitizeOutput
34
- } from "./chunk-WXV6ZMME.js";
34
+ } from "./chunk-OULQZF2D.js";
35
35
  import {
36
36
  extractSystemPrompt
37
37
  } from "./chunk-QZUG667L.js";
38
38
  import {
39
39
  generateHyphenId
40
- } from "./chunk-7HHYZI7I.js";
40
+ } from "./chunk-COOZM7W2.js";
41
41
  import {
42
42
  CliCircuitBreaker,
43
43
  DEFAULT_CIRCUIT_BREAKER_CONFIG,
44
44
  getCliCircuitBreakerSnapshot,
45
45
  getDefaultCliCircuitBreakerRegistry
46
- } from "./chunk-4P6AEBG3.js";
46
+ } from "./chunk-GJBPAZL2.js";
47
47
  import {
48
48
  CLI_NAMES,
49
49
  CLI_SUBPROCESS_TIMEOUTS,
@@ -115,7 +115,7 @@ import {
115
115
  unenforcedAccessModeRefusal,
116
116
  warnIfGatewayCostUndeclared,
117
117
  withEnforcedAccessMode
118
- } from "./chunk-5V2VGTTG.js";
118
+ } from "./chunk-B7YJEAUH.js";
119
119
  import {
120
120
  parseBoolValue
121
121
  } from "./chunk-LWOX65CP.js";
@@ -3890,7 +3890,7 @@ function agyPrintTimeoutArgs(timeoutMs) {
3890
3890
 
3891
3891
  // src/cli-adapters/adapters/codex-adapter.ts
3892
3892
  import { writeFileSync, rmSync } from "node:fs";
3893
- import { join as join3 } from "node:path";
3893
+ import { join as join4 } from "node:path";
3894
3894
 
3895
3895
  // src/cli-adapters/codex-sandbox-preflight.ts
3896
3896
  import { execFile as execFile2 } from "node:child_process";
@@ -4208,9 +4208,12 @@ var CodexResponseParser = class {
4208
4208
 
4209
4209
  // src/cli-adapters/codex-mcp-isolation.ts
4210
4210
  import { readdirSync as readdirSync2, realpathSync, statSync as statSync2 } from "node:fs";
4211
- import { join as join2 } from "node:path";
4211
+ import { join as join3 } from "node:path";
4212
4212
  import { parse as parseToml } from "smol-toml";
4213
4213
 
4214
+ // src/cli-adapters/codex-cloud-config-auth.ts
4215
+ import { join as join2 } from "node:path";
4216
+
4214
4217
  // src/cli-adapters/mcp-config-scan.ts
4215
4218
  import {
4216
4219
  closeSync,
@@ -4308,6 +4311,95 @@ function scanOrThrow(cli, scan) {
4308
4311
  return scan.value;
4309
4312
  }
4310
4313
 
4314
+ // src/cli-adapters/codex-cloud-config-auth.ts
4315
+ var PERSONAL_PLANS = /* @__PURE__ */ new Set([
4316
+ "free",
4317
+ "go",
4318
+ "plus",
4319
+ "pro",
4320
+ "prolite",
4321
+ "promax"
4322
+ ]);
4323
+ var NON_BACKEND_MODES = /* @__PURE__ */ new Set([
4324
+ "apikey",
4325
+ "bedrockApiKey",
4326
+ "bedrockAccessKeys"
4327
+ ]);
4328
+ var ID_TOKEN_MODES = /* @__PURE__ */ new Set(["chatgpt", "chatgptAuthTokens"]);
4329
+ var AUTH_CLAIMS = "https://api.openai.com/auth";
4330
+ var ECHOABLE_VALUE = /^[A-Za-z0-9_]{1,40}$/;
4331
+ var REFUSAL_SUFFIX = "codex may fetch cloud-managed config whose MCP servers cannot be listed before the run";
4332
+ var MODE_BY_FIELD = [
4333
+ ["personal_access_token", "personalAccessToken"],
4334
+ ["bedrock_api_key", "bedrockApiKey"],
4335
+ ["bedrock_access_keys", "bedrockAccessKeys"],
4336
+ ["OPENAI_API_KEY", "apikey"]
4337
+ ];
4338
+ function resolvedMode(auth) {
4339
+ const explicit = auth["auth_mode"];
4340
+ if (explicit !== void 0) return typeof explicit === "string" ? explicit : void 0;
4341
+ const byField = MODE_BY_FIELD.find(
4342
+ ([field]) => auth[field] !== void 0 && auth[field] !== null
4343
+ );
4344
+ return byField?.[1] ?? "chatgpt";
4345
+ }
4346
+ function planClaim(auth) {
4347
+ const tokens = auth["tokens"];
4348
+ const idToken = isRecord(tokens) ? tokens["id_token"] : void 0;
4349
+ if (typeof idToken !== "string") return err("auth.json has no id_token to read the plan from");
4350
+ const payload = idToken.split(".")[1];
4351
+ let claims;
4352
+ try {
4353
+ claims = payload === void 0 ? void 0 : JSON.parse(Buffer.from(payload, "base64url").toString());
4354
+ } catch {
4355
+ claims = void 0;
4356
+ }
4357
+ const namespace = isRecord(claims) ? claims[AUTH_CLAIMS] : void 0;
4358
+ const plan = isRecord(namespace) ? namespace["chatgpt_plan_type"] : void 0;
4359
+ if (typeof plan !== "string") return err("the auth.json id_token carries no account plan");
4360
+ return ok(plan);
4361
+ }
4362
+ function echoable(value) {
4363
+ return value !== void 0 && ECHOABLE_VALUE.test(value) ? JSON.stringify(value) : "an unrecognized value";
4364
+ }
4365
+ function readAuth(codexHome2) {
4366
+ const path = join2(codexHome2, "auth.json");
4367
+ const text = readConfigIfPresent(path);
4368
+ if (!text.ok) return text;
4369
+ if (text.value === void 0) return ok(void 0);
4370
+ let doc;
4371
+ try {
4372
+ doc = JSON.parse(text.value);
4373
+ } catch {
4374
+ return err(`cannot parse ${path}`);
4375
+ }
4376
+ return isRecord(doc) ? ok(doc) : err(`${path} is not a JSON object`);
4377
+ }
4378
+ function cloudConfigAuthRefusal(codexHome2, credentialsStore) {
4379
+ if (credentialsStore !== void 0 && credentialsStore !== "file") {
4380
+ return err(
4381
+ `cli_auth_credentials_store = ${echoable(credentialsStore)} keeps the account outside auth.json, so its plan cannot be checked; ${REFUSAL_SUFFIX}`
4382
+ );
4383
+ }
4384
+ const auth = readAuth(codexHome2);
4385
+ if (!auth.ok) return err(`${auth.error}; ${REFUSAL_SUFFIX}`);
4386
+ if (auth.value === void 0) return ok(void 0);
4387
+ return accountRefusal(auth.value);
4388
+ }
4389
+ function accountRefusal(auth) {
4390
+ const mode = resolvedMode(auth);
4391
+ if (mode !== void 0 && NON_BACKEND_MODES.has(mode)) return ok(void 0);
4392
+ if (mode === void 0 || !ID_TOKEN_MODES.has(mode)) {
4393
+ return err(`codex auth_mode ${echoable(mode)} has no plan readable offline; ${REFUSAL_SUFFIX}`);
4394
+ }
4395
+ const plan = planClaim(auth);
4396
+ if (!plan.ok) return err(`${plan.error}; ${REFUSAL_SUFFIX}`);
4397
+ if (PERSONAL_PLANS.has(plan.value)) return ok(void 0);
4398
+ return err(
4399
+ `codex account plan ${echoable(plan.value)} is not a personal plan; ${REFUSAL_SUFFIX}`
4400
+ );
4401
+ }
4402
+
4311
4403
  // src/cli-adapters/codex-mcp-isolation.ts
4312
4404
  var CODEX_DISABLED_TRANSPORT_PLACEHOLDER = {
4313
4405
  command: "nexus-agents-disabled-mcp-server",
@@ -4353,6 +4445,10 @@ function readMarkers(path, value) {
4353
4445
  }
4354
4446
  return err(`${path}: project_root_markers is not an array of strings`);
4355
4447
  }
4448
+ function readStore(path, value) {
4449
+ if (value === void 0 || typeof value === "string") return ok(value);
4450
+ return err(`${path}: cli_auth_credentials_store is not a string`);
4451
+ }
4356
4452
  function readLayer(path) {
4357
4453
  const text = readConfigIfPresent(path);
4358
4454
  if (!text.ok) return text;
@@ -4363,16 +4459,22 @@ function readLayer(path) {
4363
4459
  } catch (error) {
4364
4460
  return err(`cannot parse ${path}: ${error instanceof Error ? error.message : String(error)}`);
4365
4461
  }
4462
+ return parseLayer(path, doc);
4463
+ }
4464
+ function parseLayer(path, doc) {
4366
4465
  const servers = parseServers(path, doc["mcp_servers"]);
4367
4466
  if (!servers.ok) return servers;
4368
4467
  const markers = readMarkers(path, doc["project_root_markers"]);
4369
4468
  if (!markers.ok) return markers;
4370
4469
  const plugins = enabledPlugins(path, doc["plugins"]);
4371
4470
  if (!plugins.ok) return plugins;
4471
+ const store = readStore(path, doc["cli_auth_credentials_store"]);
4472
+ if (!store.ok) return store;
4372
4473
  return ok({
4373
4474
  servers: servers.value,
4374
4475
  enabledPlugins: plugins.value,
4375
- ...markers.value !== void 0 && { projectRootMarkers: markers.value }
4476
+ ...markers.value !== void 0 && { projectRootMarkers: markers.value },
4477
+ ...store.value !== void 0 && { credentialsStore: store.value }
4376
4478
  });
4377
4479
  }
4378
4480
  function readLayers(paths) {
@@ -4385,10 +4487,10 @@ function readLayers(paths) {
4385
4487
  return ok(layers);
4386
4488
  }
4387
4489
  function codexHome(env) {
4388
- return envValue(env, "CODEX_HOME") ?? join2(childHome(env), ".codex");
4490
+ return envValue(env, "CODEX_HOME") ?? join3(childHome(env), ".codex");
4389
4491
  }
4390
4492
  function codexUserConfigPath(env) {
4391
- return join2(codexHome(env), "config.toml");
4493
+ return join3(codexHome(env), "config.toml");
4392
4494
  }
4393
4495
  var CODEX_CLOUD_CONFIG_CACHE = "cloud-config-bundle-cache.json";
4394
4496
  var PLUGIN_MANIFEST_DIRS = /* @__PURE__ */ new Set([
@@ -4426,9 +4528,9 @@ function listDir(dir) {
4426
4528
  }
4427
4529
  }
4428
4530
  function pluginRootMcp(dir, names) {
4429
- if (names.includes(".mcp.json")) return ok(join2(dir, ".mcp.json"));
4531
+ if (names.includes(".mcp.json")) return ok(join3(dir, ".mcp.json"));
4430
4532
  for (const name of names.filter((n) => PLUGIN_MANIFEST_DIRS.has(n))) {
4431
- const path = join2(dir, name, "plugin.json");
4533
+ const path = join3(dir, name, "plugin.json");
4432
4534
  const declares = manifestDeclaresMcp(path);
4433
4535
  if (!declares.ok) return declares;
4434
4536
  if (declares.value) return ok(path);
@@ -4445,7 +4547,7 @@ function findPluginMcp(dir, depth, ancestors = /* @__PURE__ */ new Set()) {
4445
4547
  const branch = descendBranch(dir, depth, ancestors);
4446
4548
  if (!branch.ok) return branch;
4447
4549
  for (const name of entries.value) {
4448
- const path = join2(dir, name);
4550
+ const path = join3(dir, name);
4449
4551
  if (!isDirectory(path)) continue;
4450
4552
  const found = findPluginMcp(path, depth + 1, branch.value);
4451
4553
  if (!found.ok || found.value !== void 0) return found;
@@ -4472,18 +4574,21 @@ function unlistableSourceRefusal(env, layers) {
4472
4574
  return err(`plugin ${JSON.stringify(plugin)} is enabled; its MCP servers cannot be listed`);
4473
4575
  }
4474
4576
  const home = codexHome(env);
4475
- const declared = findPluginMcp(join2(home, "plugins"), 0);
4577
+ const declared = findPluginMcp(join3(home, "plugins"), 0);
4476
4578
  if (!declared.ok) return declared;
4477
4579
  if (declared.value !== void 0) {
4478
4580
  return err(`installed plugin declares MCP servers (${declared.value}); they cannot be listed`);
4479
4581
  }
4480
- const cache = join2(home, CODEX_CLOUD_CONFIG_CACHE);
4582
+ const cache = join3(home, CODEX_CLOUD_CONFIG_CACHE);
4481
4583
  try {
4482
4584
  statSync2(cache);
4483
4585
  } catch (error) {
4484
4586
  const code = error.code;
4485
- if (code === "ENOENT" || code === "ENOTDIR") return ok(void 0);
4486
- return err(`cannot stat ${cache}: ${code ?? String(error)}`);
4587
+ if (code !== "ENOENT" && code !== "ENOTDIR") {
4588
+ return err(`cannot stat ${cache}: ${code ?? String(error)}`);
4589
+ }
4590
+ const store = layers.map((l) => l.credentialsStore).find((s) => s !== void 0 && s !== "file");
4591
+ return cloudConfigAuthRefusal(home, store);
4487
4592
  }
4488
4593
  return err(`cloud-managed config is cached at ${cache}; its MCP servers cannot be listed`);
4489
4594
  }
@@ -4492,7 +4597,7 @@ function scanCodexMcpServers(ctx, systemFiles = CODEX_SYSTEM_CONFIG_FILES) {
4492
4597
  if (!always.ok) return always;
4493
4598
  const markers = always.value.findLast((l) => l.projectRootMarkers !== void 0)?.projectRootMarkers ?? DEFAULT_PROJECT_ROOT_MARKERS;
4494
4599
  const project = readLayers(
4495
- projectDirs(ctx.cwd, markers).map((dir) => join2(dir, ".codex", "config.toml"))
4600
+ projectDirs(ctx.cwd, markers).map((dir) => join3(dir, ".codex", "config.toml"))
4496
4601
  );
4497
4602
  if (!project.ok) return project;
4498
4603
  const unlistable = unlistableSourceRefusal(ctx.env, [...always.value, ...project.value]);
@@ -4628,7 +4733,7 @@ var CodexCliAdapter = class extends SubprocessCliAdapter {
4628
4733
  let cleanup;
4629
4734
  if (task.systemPrompt !== void 0 && task.systemPrompt !== "") {
4630
4735
  const dir = nexusMkdtempSync("nexus-codex-sysprompt-");
4631
- const file = join3(dir, "instructions.md");
4736
+ const file = join4(dir, "instructions.md");
4632
4737
  writeFileSync(file, task.systemPrompt, { encoding: "utf8", mode: 384 });
4633
4738
  args.push("-c", `model_instructions_file=${file}`);
4634
4739
  cleanup = () => {
@@ -5624,7 +5729,7 @@ import { execFile as execFile4 } from "node:child_process";
5624
5729
  import { promisify as promisify3 } from "node:util";
5625
5730
  import { existsSync, readFileSync as readFileSync3 } from "node:fs";
5626
5731
  import { homedir as homedir2 } from "node:os";
5627
- import { join as join4 } from "node:path";
5732
+ import { join as join5 } from "node:path";
5628
5733
  var execFileAsync2 = promisify3(execFile4);
5629
5734
  var HOME = homedir2();
5630
5735
  function claudeNeedsLogin(reason) {
@@ -5641,7 +5746,7 @@ function probeClaude() {
5641
5746
  if (process.env["ANTHROPIC_API_KEY"] !== void 0 && process.env["ANTHROPIC_API_KEY"] !== "") {
5642
5747
  return { cli: "claude", state: "authenticated", via: "env-var" };
5643
5748
  }
5644
- const credPath = join4(HOME, ".claude", ".credentials.json");
5749
+ const credPath = join5(HOME, ".claude", ".credentials.json");
5645
5750
  if (!existsSync(credPath)) {
5646
5751
  return claudeNeedsLogin(
5647
5752
  "No credentials at ~/.claude/.credentials.json and ANTHROPIC_API_KEY is not set"
@@ -6022,4 +6127,4 @@ export {
6022
6127
  SdkAdapter,
6023
6128
  createAutoAdapter
6024
6129
  };
6025
- //# sourceMappingURL=chunk-FRBEM62C.js.map
6130
+ //# sourceMappingURL=chunk-25SRHK3D.js.map