nexus-agents 2.56.0 → 2.58.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 (104) hide show
  1. package/dist/{adaptive-memory-SUNFPY2W.js → adaptive-memory-TSZEJUJC.js} +3 -3
  2. package/dist/{chunk-4FVISCDB.js → chunk-6QU4DJYW.js} +2 -2
  3. package/dist/{chunk-C3FGEDD7.js → chunk-7EYQBG3W.js} +22 -406
  4. package/dist/chunk-7EYQBG3W.js.map +1 -0
  5. package/dist/{chunk-NYNBDP7M.js → chunk-7Y36JLES.js} +2 -2
  6. package/dist/{chunk-FWSTXEG2.js → chunk-AFSIP6JH.js} +99 -23
  7. package/dist/chunk-AFSIP6JH.js.map +1 -0
  8. package/dist/{chunk-VKZKC4SM.js → chunk-EDGG3RQE.js} +2 -2
  9. package/dist/{chunk-2SPRLBOS.js → chunk-EZXOJZYE.js} +2 -2
  10. package/dist/{chunk-KGMC6F5D.js → chunk-GJ5BJU7A.js} +67 -61
  11. package/dist/chunk-GJ5BJU7A.js.map +1 -0
  12. package/dist/{chunk-W5AJRK4U.js → chunk-GMOGKX4E.js} +2 -2
  13. package/dist/chunk-H43PABG4.js +402 -0
  14. package/dist/chunk-H43PABG4.js.map +1 -0
  15. package/dist/{chunk-VLVHPC72.js → chunk-JKDHWOQL.js} +6 -6
  16. package/dist/{chunk-EJLWDYK7.js → chunk-JLYJQ7OG.js} +6159 -5619
  17. package/dist/chunk-JLYJQ7OG.js.map +1 -0
  18. package/dist/{chunk-IOU7F5PH.js → chunk-K7EA5OV4.js} +2 -2
  19. package/dist/{chunk-BPMQRYGU.js → chunk-L3NHOUEX.js} +332 -80
  20. package/dist/chunk-L3NHOUEX.js.map +1 -0
  21. package/dist/{chunk-KRIFBGWZ.js → chunk-PTGBJFSD.js} +3 -3
  22. package/dist/{chunk-EKYT4NMD.js → chunk-QGZBCD2A.js} +24 -9
  23. package/dist/chunk-QGZBCD2A.js.map +1 -0
  24. package/dist/{chunk-UOUJZIKH.js → chunk-R2Y57PM3.js} +38 -15
  25. package/dist/chunk-R2Y57PM3.js.map +1 -0
  26. package/dist/{chunk-PCMWLXT4.js → chunk-TC46TRLR.js} +2 -2
  27. package/dist/{chunk-3IDJSFWT.js → chunk-TFEFN37P.js} +2 -2
  28. package/dist/{chunk-Q5TKQWOI.js → chunk-V5CGWMYL.js} +2 -2
  29. package/dist/{chunk-TCQNNY4J.js → chunk-XEMRMZUN.js} +4 -4
  30. package/dist/{chunk-RSUCXOQM.js → chunk-YQAOMDR2.js} +26 -53
  31. package/dist/chunk-YQAOMDR2.js.map +1 -0
  32. package/dist/{chunk-R66AWJJ7.js → chunk-YU4NABXM.js} +2 -2
  33. package/dist/{cli-circuit-breaker-7MCMHSDY.js → cli-circuit-breaker-SL73NWX2.js} +4 -4
  34. package/dist/cli.d.ts +3 -1
  35. package/dist/cli.js +428 -342
  36. package/dist/cli.js.map +1 -1
  37. package/dist/{composite-router-LXFOSMSE.js → composite-router-A7URDW4X.js} +2 -2
  38. package/dist/{consensus-vote-G6H532ME.js → consensus-vote-HDM6HA5Z.js} +9 -8
  39. package/dist/{dist-4LDAFGC5.js → dist-RLMRWMYO.js} +994 -779
  40. package/dist/dist-RLMRWMYO.js.map +1 -0
  41. package/dist/{doctor-deep-RKMOZSIS.js → doctor-deep-VN6KMUCG.js} +3 -3
  42. package/dist/{expert-bridge-KHHE42JP.js → expert-bridge-BHTUNALT.js} +3 -3
  43. package/dist/{factory-JVN47MFN.js → factory-6MT5VKI3.js} +4 -4
  44. package/dist/{factory-KRNR7XHD.js → factory-FA7WDPZW.js} +5 -5
  45. package/dist/index.d.ts +396 -61
  46. package/dist/index.js +58 -43
  47. package/dist/index.js.map +1 -1
  48. package/dist/{issue-triage-O3C7P66H.js → issue-triage-YYTE6KTC.js} +4 -4
  49. package/dist/{mcp-config-QRERKGR4.js → mcp-config-34XMRM64.js} +3 -3
  50. package/dist/{mobimem-FAOAXV3B.js → mobimem-QDBP37H7.js} +2 -2
  51. package/dist/model-registry.generated.json +17033 -0
  52. package/dist/registry-command-S46JJ2SX.js +580 -0
  53. package/dist/registry-command-S46JJ2SX.js.map +1 -0
  54. package/dist/{repo-security-plan-AZ5HMGFC.js → repo-security-plan-C3LLE3Z7.js} +3 -3
  55. package/dist/{research-helpers-synthesize-E6WQLQKP.js → research-helpers-synthesize-NVQIWLQL.js} +3 -3
  56. package/dist/{routing-memory-MXF45FXT.js → routing-memory-W3YWMLJM.js} +2 -2
  57. package/dist/{session-memory-HL5XDBIL.js → session-memory-DWF5Z2LC.js} +3 -3
  58. package/dist/{setup-command-AV4MODEL.js → setup-command-KSQEYBDA.js} +8 -7
  59. package/dist/{setup-config-PWK6WHMG.js → setup-config-JA5IX53Q.js} +3 -3
  60. package/dist/{setup-custom-api-XAWKRDWV.js → setup-custom-api-CSB26HWD.js} +7 -5
  61. package/dist/setup-custom-api-CSB26HWD.js.map +1 -0
  62. package/dist/{weather-report-XZ5CENHE.js → weather-report-YQSLX4MS.js} +2 -2
  63. package/package.json +5 -5
  64. package/dist/chunk-BPMQRYGU.js.map +0 -1
  65. package/dist/chunk-C3FGEDD7.js.map +0 -1
  66. package/dist/chunk-EJLWDYK7.js.map +0 -1
  67. package/dist/chunk-EKYT4NMD.js.map +0 -1
  68. package/dist/chunk-FWSTXEG2.js.map +0 -1
  69. package/dist/chunk-KGMC6F5D.js.map +0 -1
  70. package/dist/chunk-RSUCXOQM.js.map +0 -1
  71. package/dist/chunk-UOUJZIKH.js.map +0 -1
  72. package/dist/dist-4LDAFGC5.js.map +0 -1
  73. package/dist/setup-custom-api-XAWKRDWV.js.map +0 -1
  74. /package/dist/{adaptive-memory-SUNFPY2W.js.map → adaptive-memory-TSZEJUJC.js.map} +0 -0
  75. /package/dist/{chunk-4FVISCDB.js.map → chunk-6QU4DJYW.js.map} +0 -0
  76. /package/dist/{chunk-NYNBDP7M.js.map → chunk-7Y36JLES.js.map} +0 -0
  77. /package/dist/{chunk-VKZKC4SM.js.map → chunk-EDGG3RQE.js.map} +0 -0
  78. /package/dist/{chunk-2SPRLBOS.js.map → chunk-EZXOJZYE.js.map} +0 -0
  79. /package/dist/{chunk-W5AJRK4U.js.map → chunk-GMOGKX4E.js.map} +0 -0
  80. /package/dist/{chunk-VLVHPC72.js.map → chunk-JKDHWOQL.js.map} +0 -0
  81. /package/dist/{chunk-IOU7F5PH.js.map → chunk-K7EA5OV4.js.map} +0 -0
  82. /package/dist/{chunk-KRIFBGWZ.js.map → chunk-PTGBJFSD.js.map} +0 -0
  83. /package/dist/{chunk-PCMWLXT4.js.map → chunk-TC46TRLR.js.map} +0 -0
  84. /package/dist/{chunk-3IDJSFWT.js.map → chunk-TFEFN37P.js.map} +0 -0
  85. /package/dist/{chunk-Q5TKQWOI.js.map → chunk-V5CGWMYL.js.map} +0 -0
  86. /package/dist/{chunk-TCQNNY4J.js.map → chunk-XEMRMZUN.js.map} +0 -0
  87. /package/dist/{chunk-R66AWJJ7.js.map → chunk-YU4NABXM.js.map} +0 -0
  88. /package/dist/{cli-circuit-breaker-7MCMHSDY.js.map → cli-circuit-breaker-SL73NWX2.js.map} +0 -0
  89. /package/dist/{composite-router-LXFOSMSE.js.map → composite-router-A7URDW4X.js.map} +0 -0
  90. /package/dist/{consensus-vote-G6H532ME.js.map → consensus-vote-HDM6HA5Z.js.map} +0 -0
  91. /package/dist/{doctor-deep-RKMOZSIS.js.map → doctor-deep-VN6KMUCG.js.map} +0 -0
  92. /package/dist/{expert-bridge-KHHE42JP.js.map → expert-bridge-BHTUNALT.js.map} +0 -0
  93. /package/dist/{factory-JVN47MFN.js.map → factory-6MT5VKI3.js.map} +0 -0
  94. /package/dist/{factory-KRNR7XHD.js.map → factory-FA7WDPZW.js.map} +0 -0
  95. /package/dist/{issue-triage-O3C7P66H.js.map → issue-triage-YYTE6KTC.js.map} +0 -0
  96. /package/dist/{mcp-config-QRERKGR4.js.map → mcp-config-34XMRM64.js.map} +0 -0
  97. /package/dist/{mobimem-FAOAXV3B.js.map → mobimem-QDBP37H7.js.map} +0 -0
  98. /package/dist/{repo-security-plan-AZ5HMGFC.js.map → repo-security-plan-C3LLE3Z7.js.map} +0 -0
  99. /package/dist/{research-helpers-synthesize-E6WQLQKP.js.map → research-helpers-synthesize-NVQIWLQL.js.map} +0 -0
  100. /package/dist/{routing-memory-MXF45FXT.js.map → routing-memory-W3YWMLJM.js.map} +0 -0
  101. /package/dist/{session-memory-HL5XDBIL.js.map → session-memory-DWF5Z2LC.js.map} +0 -0
  102. /package/dist/{setup-command-AV4MODEL.js.map → setup-command-KSQEYBDA.js.map} +0 -0
  103. /package/dist/{setup-config-PWK6WHMG.js.map → setup-config-JA5IX53Q.js.map} +0 -0
  104. /package/dist/{weather-report-XZ5CENHE.js.map → weather-report-YQSLX4MS.js.map} +0 -0
@@ -2,13 +2,13 @@ import {
2
2
  CircuitBreakerRegistry,
3
3
  CircuitError,
4
4
  mapCliErrorToCategory
5
- } from "./chunk-W5AJRK4U.js";
5
+ } from "./chunk-GMOGKX4E.js";
6
6
  import {
7
7
  createLogger,
8
8
  err,
9
9
  getTimeProvider,
10
10
  ok
11
- } from "./chunk-UOUJZIKH.js";
11
+ } from "./chunk-R2Y57PM3.js";
12
12
 
13
13
  // src/cli-adapters/fallback-chains.ts
14
14
  import { z } from "zod";
@@ -192,4 +192,4 @@ export {
192
192
  CliCircuitBreakerIntegration,
193
193
  createCliCircuitBreakerIntegration
194
194
  };
195
- //# sourceMappingURL=chunk-KRIFBGWZ.js.map
195
+ //# sourceMappingURL=chunk-PTGBJFSD.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getErrorMessage
3
- } from "./chunk-UOUJZIKH.js";
3
+ } from "./chunk-R2Y57PM3.js";
4
4
 
5
5
  // src/cli/setup-config.ts
6
- import { existsSync, writeFileSync } from "fs";
6
+ import { copyFileSync, existsSync, writeFileSync } from "fs";
7
7
  import { resolve } from "path";
8
8
  var DEFAULT_CONFIG_FILE = "nexus-agents.yaml";
9
9
  var SETUP_CONFIG_TEMPLATE = `# Nexus Agents Configuration
@@ -38,14 +38,12 @@ function runConfigInitSync(projectRoot, force, dryRun) {
38
38
  message: `Would create: ${outputPath}`
39
39
  };
40
40
  }
41
+ const backup = ensureBackup(outputPath);
42
+ if ("error" in backup) return backup.error;
41
43
  try {
42
44
  writeFileSync(outputPath, SETUP_CONFIG_TEMPLATE, "utf-8");
43
- return {
44
- success: true,
45
- path: outputPath,
46
- created: true,
47
- message: `Created: ${outputPath}`
48
- };
45
+ const message = backup.path !== void 0 ? `Created: ${outputPath} (backup saved at ${backup.path})` : `Created: ${outputPath}`;
46
+ return { success: true, path: outputPath, created: true, message };
49
47
  } catch (error) {
50
48
  return {
51
49
  success: false,
@@ -55,8 +53,25 @@ function runConfigInitSync(projectRoot, force, dryRun) {
55
53
  };
56
54
  }
57
55
  }
56
+ function ensureBackup(outputPath) {
57
+ if (!existsSync(outputPath)) return { path: void 0 };
58
+ const backupPath = `${outputPath}.bak.${String(Date.now())}`;
59
+ try {
60
+ copyFileSync(outputPath, backupPath);
61
+ return { path: backupPath };
62
+ } catch (err) {
63
+ return {
64
+ error: {
65
+ success: false,
66
+ path: outputPath,
67
+ created: false,
68
+ message: `Failed to back up existing config: ${getErrorMessage(err)}`
69
+ }
70
+ };
71
+ }
72
+ }
58
73
 
59
74
  export {
60
75
  runConfigInitSync
61
76
  };
62
- //# sourceMappingURL=chunk-EKYT4NMD.js.map
77
+ //# sourceMappingURL=chunk-QGZBCD2A.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/setup-config.ts"],"sourcesContent":["/**\n * Synchronous config file generation for setup command.\n *\n * Reuses the CONFIG_TEMPLATE from config-init.ts pattern but provides\n * a synchronous API suitable for the setup command flow.\n *\n * @module cli/setup-config\n * (Source: Issue #1252 - Setup auto-generates nexus-agents.yaml)\n */\n\nimport { copyFileSync, existsSync, writeFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { getErrorMessage } from '../core/index.js';\n\n/** Default configuration file name. */\nconst DEFAULT_CONFIG_FILE = 'nexus-agents.yaml';\n\n/** Result of the config generation step. */\nexport interface ConfigStepResult {\n readonly success: boolean;\n readonly path: string;\n readonly created: boolean;\n readonly message: string;\n}\n\n/**\n * Minimal YAML config template for setup command.\n * Intentionally brief — just enough to get started.\n * Users can run `nexus-agents config init` for the full template.\n */\nconst SETUP_CONFIG_TEMPLATE = `# Nexus Agents Configuration\n# Generated by: nexus-agents setup\n# Full template: nexus-agents config init\n\nmodels:\n default: claude-sonnet-4\n\nexperts:\n builtin: true\n\nlogging:\n level: info\n format: json\n`;\n\n/**\n * Generates a nexus-agents.yaml config file synchronously.\n *\n * @param projectRoot - Directory to create config in.\n * @param force - Overwrite existing config.\n * @param dryRun - Report what would happen without writing.\n */\nexport function runConfigInitSync(\n projectRoot: string,\n force: boolean,\n dryRun: boolean\n): ConfigStepResult {\n const outputPath = resolve(projectRoot, DEFAULT_CONFIG_FILE);\n\n if (existsSync(outputPath) && !force) {\n return {\n success: true,\n path: outputPath,\n created: false,\n message: 'Config already exists (use --force to overwrite)',\n };\n }\n\n if (dryRun) {\n return {\n success: true,\n path: outputPath,\n created: true,\n message: `Would create: ${outputPath}`,\n };\n }\n\n const backup = ensureBackup(outputPath);\n if ('error' in backup) return backup.error;\n\n try {\n writeFileSync(outputPath, SETUP_CONFIG_TEMPLATE, 'utf-8');\n const message =\n backup.path !== undefined\n ? `Created: ${outputPath} (backup saved at ${backup.path})`\n : `Created: ${outputPath}`;\n return { success: true, path: outputPath, created: true, message };\n } catch (error: unknown) {\n return {\n success: false,\n path: outputPath,\n created: false,\n message: `Failed: ${getErrorMessage(error)}`,\n };\n }\n}\n\n/**\n * Saves a timestamped backup of an existing config file before overwrite (#2183).\n *\n * Returns `{ path }` with the backup path (or undefined if no existing file)\n * on success, or `{ error }` with a populated `ConfigStepResult` on failure.\n * Failure to write the backup aborts the overwrite — better to keep the\n * user's customizations intact than to lose them silently.\n */\nfunction ensureBackup(\n outputPath: string\n): { path: string | undefined } | { error: ConfigStepResult } {\n if (!existsSync(outputPath)) return { path: undefined };\n const backupPath = `${outputPath}.bak.${String(Date.now())}`;\n try {\n copyFileSync(outputPath, backupPath);\n return { path: backupPath };\n } catch (err: unknown) {\n return {\n error: {\n success: false,\n path: outputPath,\n created: false,\n message: `Failed to back up existing config: ${getErrorMessage(err)}`,\n },\n };\n }\n}\n"],"mappings":";;;;;AAUA,SAAS,cAAc,YAAY,qBAAqB;AACxD,SAAS,eAAe;AAIxB,IAAM,sBAAsB;AAe5B,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBvB,SAAS,kBACd,aACA,OACA,QACkB;AAClB,QAAM,aAAa,QAAQ,aAAa,mBAAmB;AAE3D,MAAI,WAAW,UAAU,KAAK,CAAC,OAAO;AACpC,WAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,EACF;AAEA,MAAI,QAAQ;AACV,WAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,iBAAiB,UAAU;AAAA,IACtC;AAAA,EACF;AAEA,QAAM,SAAS,aAAa,UAAU;AACtC,MAAI,WAAW,OAAQ,QAAO,OAAO;AAErC,MAAI;AACF,kBAAc,YAAY,uBAAuB,OAAO;AACxD,UAAM,UACJ,OAAO,SAAS,SACZ,YAAY,UAAU,qBAAqB,OAAO,IAAI,MACtD,YAAY,UAAU;AAC5B,WAAO,EAAE,SAAS,MAAM,MAAM,YAAY,SAAS,MAAM,QAAQ;AAAA,EACnE,SAAS,OAAgB;AACvB,WAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,WAAW,gBAAgB,KAAK,CAAC;AAAA,IAC5C;AAAA,EACF;AACF;AAUA,SAAS,aACP,YAC4D;AAC5D,MAAI,CAAC,WAAW,UAAU,EAAG,QAAO,EAAE,MAAM,OAAU;AACtD,QAAM,aAAa,GAAG,UAAU,QAAQ,OAAO,KAAK,IAAI,CAAC,CAAC;AAC1D,MAAI;AACF,iBAAa,YAAY,UAAU;AACnC,WAAO,EAAE,MAAM,WAAW;AAAA,EAC5B,SAAS,KAAc;AACrB,WAAO;AAAA,MACL,OAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,sCAAsC,gBAAgB,GAAG,CAAC;AAAA,MACrE;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -869,6 +869,17 @@ var ModelCapabilitySchema = z2.object({
869
869
  cliAlias: z2.string().optional(),
870
870
  /** Model name the CLI binary expects (e.g., 'gemini-2.5-pro') */
871
871
  cliModelName: z2.string().optional(),
872
+ /**
873
+ * Legacy / version-suffixed names that resolve to this model. Used by
874
+ * adapters and routing to map historical user-facing names (e.g.,
875
+ * `claude-opus-4-5-20251101`, `gemini-2.5-pro`) to the current registry
876
+ * entry. Empty strings are rejected; uniqueness within the array is not
877
+ * enforced at schema level (caller responsibility).
878
+ *
879
+ * Added for issue #2199 Child 1; populated by the companion migration
880
+ * epic #2200.
881
+ */
882
+ aliases: z2.array(z2.string().min(1)).optional(),
872
883
  /** Whether this model is deprecated and should receive a scoring penalty */
873
884
  deprecated: z2.boolean().optional(),
874
885
  /** ISO date when the model was deprecated (informational) */
@@ -906,7 +917,8 @@ var DEFAULT_MODEL_CAPABILITIES = {
906
917
  maxOutputTokens: 128e3,
907
918
  cliName: "claude",
908
919
  cliAlias: "opus",
909
- cliModelName: "claude-opus-4-6"
920
+ cliModelName: "claude-opus-4-6",
921
+ aliases: ["claude-opus-4", "claude-opus-4-5-20251101"]
910
922
  },
911
923
  {
912
924
  id: "claude-sonnet",
@@ -923,7 +935,8 @@ var DEFAULT_MODEL_CAPABILITIES = {
923
935
  maxOutputTokens: 64e3,
924
936
  cliName: "claude",
925
937
  cliAlias: "sonnet",
926
- cliModelName: "claude-sonnet-4-6"
938
+ cliModelName: "claude-sonnet-4-6",
939
+ aliases: ["claude-sonnet-4", "claude-sonnet-4-5-20250929"]
927
940
  },
928
941
  {
929
942
  id: "claude-haiku",
@@ -940,14 +953,15 @@ var DEFAULT_MODEL_CAPABILITIES = {
940
953
  maxOutputTokens: 64e3,
941
954
  cliName: "claude",
942
955
  cliAlias: "haiku",
943
- cliModelName: "claude-haiku-4-5-20251001"
956
+ cliModelName: "claude-haiku-4-5-20251001",
957
+ aliases: ["claude-haiku-4", "claude-haiku-3"]
944
958
  },
945
959
  // ----- Google Gemini -----
946
960
  {
947
961
  id: "gemini-3-pro",
948
962
  displayName: "Gemini 3.1 Pro (Preview)",
949
963
  provider: "google",
950
- contextWindow: 1e6,
964
+ contextWindow: 1048576,
951
965
  outputModalities: [
952
966
  "text",
953
967
  "image_png",
@@ -976,7 +990,7 @@ var DEFAULT_MODEL_CAPABILITIES = {
976
990
  id: "gemini-pro",
977
991
  displayName: "Gemini 2.5 Pro",
978
992
  provider: "google",
979
- contextWindow: 1e6,
993
+ contextWindow: 1048576,
980
994
  outputModalities: [
981
995
  "text",
982
996
  "image_png",
@@ -1005,7 +1019,7 @@ var DEFAULT_MODEL_CAPABILITIES = {
1005
1019
  id: "gemini-3-flash",
1006
1020
  displayName: "Gemini 3 Flash (Preview)",
1007
1021
  provider: "google",
1008
- contextWindow: 1e6,
1022
+ contextWindow: 1048576,
1009
1023
  outputModalities: ["text", "image_png", "image_jpeg", "structured_json", "code"],
1010
1024
  inputModalities: ["text", "image", "audio", "video", "pdf", "code"],
1011
1025
  toolCapabilities: [
@@ -1026,7 +1040,7 @@ var DEFAULT_MODEL_CAPABILITIES = {
1026
1040
  id: "gemini-flash",
1027
1041
  displayName: "Gemini 2.5 Flash",
1028
1042
  provider: "google",
1029
- contextWindow: 1e6,
1043
+ contextWindow: 1048576,
1030
1044
  outputModalities: ["text", "image_png", "image_jpeg", "structured_json", "code"],
1031
1045
  inputModalities: ["text", "image", "audio", "video", "pdf", "code"],
1032
1046
  toolCapabilities: [
@@ -1048,7 +1062,7 @@ var DEFAULT_MODEL_CAPABILITIES = {
1048
1062
  id: "codex-5.3",
1049
1063
  displayName: "GPT-5.4",
1050
1064
  provider: "openai",
1051
- contextWindow: 1e6,
1065
+ contextWindow: 105e4,
1052
1066
  outputModalities: ["text", "structured_json", "code"],
1053
1067
  inputModalities: ["text", "image", "pdf", "code"],
1054
1068
  toolCapabilities: [
@@ -1072,7 +1086,7 @@ var DEFAULT_MODEL_CAPABILITIES = {
1072
1086
  id: "codex-5.2",
1073
1087
  displayName: "GPT-5.2-Codex",
1074
1088
  provider: "openai",
1075
- contextWindow: 4e5,
1089
+ contextWindow: 272e3,
1076
1090
  outputModalities: ["text", "structured_json", "code"],
1077
1091
  inputModalities: ["text", "image", "pdf", "code"],
1078
1092
  toolCapabilities: [
@@ -1089,11 +1103,12 @@ var DEFAULT_MODEL_CAPABILITIES = {
1089
1103
  "No native image/audio/video generation",
1090
1104
  "Network access restricted in sandbox"
1091
1105
  ],
1092
- notes: "Best code generation; 400K context; sandboxed execution environment",
1093
- pricing: { inputPer1M: 2, outputPer1M: 8 },
1106
+ notes: "Best code generation; 272K context; sandboxed execution environment",
1107
+ pricing: { inputPer1M: 1.75, outputPer1M: 14 },
1094
1108
  qualityScores: { reasoning: 9, codeGeneration: 10, speed: 8, cost: 7 },
1095
1109
  maxOutputTokens: 1e5,
1096
- cliName: "codex"
1110
+ cliName: "codex",
1111
+ cliModelName: "gpt-5.2-codex"
1097
1112
  },
1098
1113
  {
1099
1114
  id: "codex-5.1-mini",
@@ -2951,7 +2966,7 @@ function estimateTokens(text) {
2951
2966
 
2952
2967
  // src/config/model-config-helpers.ts
2953
2968
  function getModelContextWindow(modelId) {
2954
- return getModelCapabilities(modelId)?.contextWindow ?? 2e5;
2969
+ return getModelCapabilities(modelId)?.contextWindow ?? 8192;
2955
2970
  }
2956
2971
  function getDefaultModelForCli(cli) {
2957
2972
  return DEFAULT_MODEL_PER_CLI[cli];
@@ -2960,6 +2975,11 @@ function getCliModelName(modelId) {
2960
2975
  const cap = getModelCapabilities(modelId);
2961
2976
  return cap?.cliModelName ?? cap?.cliAlias ?? modelId;
2962
2977
  }
2978
+ function resolveCliAlias(alias) {
2979
+ return DEFAULT_MODEL_CAPABILITIES.models.find(
2980
+ (m) => m.cliAlias === alias || m.id === alias || (m.aliases?.includes(alias) ?? false)
2981
+ )?.id;
2982
+ }
2963
2983
  function buildCapabilityProfiles() {
2964
2984
  const result = {};
2965
2985
  for (const model of DEFAULT_MODEL_CAPABILITIES.models) {
@@ -3025,7 +3045,7 @@ function buildTopsisProfiles() {
3025
3045
  }
3026
3046
  function findCanonicalModel(cli, cliModelName) {
3027
3047
  return DEFAULT_MODEL_CAPABILITIES.models.find(
3028
- (m) => m.cliName === cli && (m.cliModelName === cliModelName || m.cliAlias === cliModelName)
3048
+ (m) => m.cliName === cli && (m.cliModelName === cliModelName || m.cliAlias === cliModelName || m.id === cliModelName || (m.aliases?.includes(cliModelName) ?? false))
3029
3049
  );
3030
3050
  }
3031
3051
  function buildModelInfo(cli, cliModelName) {
@@ -10968,6 +10988,7 @@ export {
10968
10988
  CLI_NAMES,
10969
10989
  CliNameSchema,
10970
10990
  DEFAULT_CLI,
10991
+ ModelCapabilitySchema,
10971
10992
  DEFAULT_MODEL_CAPABILITIES,
10972
10993
  DEFAULT_MODEL_PER_CLI,
10973
10994
  getModelCapabilities,
@@ -11007,7 +11028,9 @@ export {
11007
11028
  getModelContextWindow,
11008
11029
  getDefaultModelForCli,
11009
11030
  getCliModelName,
11031
+ resolveCliAlias,
11010
11032
  buildCapabilityProfiles,
11033
+ findCanonicalModel,
11011
11034
  buildModelInfo,
11012
11035
  CLI_VERSION_REQUIREMENTS,
11013
11036
  DEFAULT_CAPABILITIES,
@@ -11104,4 +11127,4 @@ export {
11104
11127
  ParseError,
11105
11128
  OrchestratorError
11106
11129
  };
11107
- //# sourceMappingURL=chunk-UOUJZIKH.js.map
11130
+ //# sourceMappingURL=chunk-R2Y57PM3.js.map