@cjhyy/code-shell 0.1.0-alpha.3 → 0.1.6

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 (157) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/dist/anthropic-IBTI4WL2.cjs +10 -0
  3. package/dist/anthropic-PRZZKHEZ.js +10 -0
  4. package/dist/arena/index.cjs +7 -6
  5. package/dist/arena/index.js +6 -5
  6. package/dist/arena/model-presets.d.ts +10 -1
  7. package/dist/{arena-ENHBHB2W.js → arena-2LTLIXOL.js} +9 -7
  8. package/dist/{arena-HHDYYVHJ.cjs → arena-ADB7DRFI.cjs} +25 -23
  9. package/dist/{chunk-EL2RL5DG.cjs → chunk-2YW4FPFG.cjs} +2 -2
  10. package/dist/chunk-3OA5G4TM.js +47 -0
  11. package/dist/{chunk-FPFTIKEJ.js → chunk-3QO25N6E.js} +131 -173
  12. package/dist/chunk-3SBSUOWZ.js +447 -0
  13. package/dist/chunk-52LGZKT3.cjs +47 -0
  14. package/dist/{chunk-KOGV6PDQ.cjs → chunk-55XGPMAP.cjs} +44 -9
  15. package/dist/{chunk-YD7XTI7T.cjs → chunk-6QVAYW7C.cjs} +116 -28
  16. package/dist/{chunk-SCDKLTN3.js → chunk-6S4BJ65N.js} +5 -4
  17. package/dist/{chunk-ZLPJJZUW.js → chunk-76HYEPDM.js} +2 -2
  18. package/dist/chunk-7BI3V74Y.cjs +447 -0
  19. package/dist/{chunk-GZBD6QRS.cjs → chunk-7EG3V4JY.cjs} +13 -12
  20. package/dist/{chunk-LMEKCQX4.js → chunk-7JVTYEEC.js} +6 -6
  21. package/dist/{chunk-SW3L7HIM.js → chunk-7QIM3BKD.js} +2 -2
  22. package/dist/{chunk-5C5HIOML.js → chunk-7Y6S3OCX.js} +109 -21
  23. package/dist/{chunk-REFCCVDM.js → chunk-ABRRONJ7.js} +2 -2
  24. package/dist/{chunk-F5BS3GUC.js → chunk-BSW22MPA.js} +39 -4
  25. package/dist/{chunk-ZRVPCXI7.js → chunk-BXCY2FSE.js} +2 -1
  26. package/dist/{chunk-Y7TSCDF6.js → chunk-BZ5TNE7L.js} +347 -6
  27. package/dist/{chunk-X2DNIMPC.cjs → chunk-DDB6QOKJ.cjs} +32 -32
  28. package/dist/{chunk-C7C7ZZY4.cjs → chunk-HEKQCI7B.cjs} +10 -10
  29. package/dist/{chunk-JHNCK7JP.cjs → chunk-IK4EWJBP.cjs} +4 -3
  30. package/dist/{chunk-3CAZIWUA.cjs → chunk-ILHE7XLT.cjs} +9 -9
  31. package/dist/{chunk-M2QI5X3X.cjs → chunk-JMR33QVF.cjs} +2 -2
  32. package/dist/{chunk-TDXBHD24.js → chunk-KAQHULYN.js} +2 -2
  33. package/dist/chunk-KE4EQOWA.js +294 -0
  34. package/dist/{chunk-YAFCN7ZW.cjs → chunk-KOVYSDHZ.cjs} +15 -15
  35. package/dist/{chunk-IJSHQGMP.cjs → chunk-KS3RYAYL.cjs} +4 -4
  36. package/dist/{chunk-DI7RDLOS.js → chunk-MD32R22I.js} +7 -4
  37. package/dist/chunk-MV7YI4WO.cjs +293 -0
  38. package/dist/chunk-MY5XHADU.cjs +216 -0
  39. package/dist/{chunk-OP57WUWQ.cjs → chunk-NUNC3VFB.cjs} +6 -6
  40. package/dist/{chunk-ID6EJUHP.js → chunk-PKGRTCCY.js} +1307 -212
  41. package/dist/{chunk-OUC2DFA7.js → chunk-QARL3IDQ.js} +3 -3
  42. package/dist/{chunk-VIPLU4RY.cjs → chunk-S754JHLR.cjs} +4 -4
  43. package/dist/{chunk-FUOKLKR2.js → chunk-SFXHZSRF.js} +1 -1
  44. package/dist/{chunk-2EUAE7AY.js → chunk-SIHHIQLO.js} +2 -2
  45. package/dist/{chunk-SK62UVS6.js → chunk-T6VYG46N.js} +1 -1
  46. package/dist/{chunk-JHXNOB5G.cjs → chunk-TNLGBJYS.cjs} +6 -6
  47. package/dist/{chunk-3QR52LL5.cjs → chunk-TUY2T5KP.cjs} +2 -2
  48. package/dist/{chunk-VWFET3MG.cjs → chunk-UXOCVJJ6.cjs} +1519 -424
  49. package/dist/{chunk-I57ZD5IQ.js → chunk-VIAGTYYW.js} +1 -1
  50. package/dist/chunk-WASS5YWB.js +215 -0
  51. package/dist/{chunk-HOXQLX5R.cjs → chunk-WZJV6DJC.cjs} +444 -103
  52. package/dist/{chunk-BUJ5KYCI.cjs → chunk-YIQBXAYU.cjs} +13 -13
  53. package/dist/{chunk-BF4LXLQV.cjs → chunk-YKIAELDZ.cjs} +132 -174
  54. package/dist/{chunk-M2SVOKC6.js → chunk-ZBPSQCPU.js} +6 -6
  55. package/dist/cli/commands/builtin/export-md.d.ts +19 -0
  56. package/dist/cli/commands/builtin/init/detect.d.ts +25 -0
  57. package/dist/cli/commands/builtin/init/index.d.ts +19 -0
  58. package/dist/cli/main.cjs +2372 -1453
  59. package/dist/cli/main.js +2502 -1583
  60. package/dist/cli/migrate-models.d.ts +45 -0
  61. package/dist/cli/onboarding.d.ts +110 -5
  62. package/dist/cli/updater.d.ts +59 -4
  63. package/dist/client-base-HTF236ZD.cjs +9 -0
  64. package/dist/client-base-QKRKCOWB.js +9 -0
  65. package/dist/{compaction-YNWCEF7B.js → compaction-6VU2T643.js} +4 -2
  66. package/dist/compaction-OKUNTCA7.cjs +33 -0
  67. package/dist/context/compaction.d.ts +35 -3
  68. package/dist/context/manager.d.ts +40 -3
  69. package/dist/context/tool-result-storage.d.ts +96 -0
  70. package/dist/devtools-T2NIZBJK.cjs +6 -0
  71. package/dist/{devtools-IRQQPIRY.js → devtools-YXWHOVKR.js} +1 -1
  72. package/dist/engine/engine.d.ts +47 -0
  73. package/dist/engine/turn-loop.d.ts +6 -0
  74. package/dist/export-md-RXDW6F5W.cjs +135 -0
  75. package/dist/export-md-XXKZANW5.js +135 -0
  76. package/dist/file-history-KYPE3ECT.cjs +7 -0
  77. package/dist/file-history-LF4F7X26.js +7 -0
  78. package/dist/index.cjs +42 -22
  79. package/dist/index.d.ts +5 -2
  80. package/dist/index.js +38 -18
  81. package/dist/llm/client-base.d.ts +1 -1
  82. package/dist/llm/model-cache.d.ts +21 -0
  83. package/dist/llm/model-fetcher.d.ts +29 -0
  84. package/dist/llm/model-pool.d.ts +13 -0
  85. package/dist/llm/provider-catalog.d.ts +30 -0
  86. package/dist/llm/provider-kinds.d.ts +21 -0
  87. package/dist/llm/types.d.ts +8 -0
  88. package/dist/logging/session-recorder.d.ts +77 -0
  89. package/dist/manager-D65VFAPX.js +7 -0
  90. package/dist/manager-TTF5VHJC.cjs +7 -0
  91. package/dist/mcp-manager-QMKWPBZ4.js +8 -0
  92. package/dist/mcp-manager-Z3OKI74O.cjs +8 -0
  93. package/dist/memory-5LWZ6FI2.cjs +9 -0
  94. package/dist/{memory-EPFDBPII.js → memory-VIJLBAMQ.js} +2 -2
  95. package/dist/model-cache-5KIYL5SL.js +13 -0
  96. package/dist/model-cache-OED3IM4R.cjs +13 -0
  97. package/dist/model-fetcher-HKGICACL.js +8 -0
  98. package/dist/model-fetcher-UR6WJOQP.cjs +8 -0
  99. package/dist/openai-JR2WEKOF.js +10 -0
  100. package/dist/openai-YBTOET4O.cjs +10 -0
  101. package/dist/{openrouter-models-2FM3H4SQ.js → openrouter-models-H56GHBHN.js} +2 -2
  102. package/dist/openrouter-models-TWUFWZ5T.cjs +15 -0
  103. package/dist/openrouter-sync-5VMGN6C2.cjs +11 -0
  104. package/dist/{openrouter-sync-SO3AWEAM.js → openrouter-sync-ALEMF5IU.js} +3 -3
  105. package/dist/product/index.cjs +17 -15
  106. package/dist/product/index.js +16 -14
  107. package/dist/protocol/server.d.ts +3 -1
  108. package/dist/protocol/types.d.ts +36 -2
  109. package/dist/run/index.cjs +17 -15
  110. package/dist/run/index.js +16 -14
  111. package/dist/services/index.d.ts +0 -1
  112. package/dist/session-manager-Q22BBMD3.js +8 -0
  113. package/dist/session-manager-XODQVL3C.cjs +8 -0
  114. package/dist/settings/schema.d.ts +267 -42
  115. package/dist/{tool-summary-RYNR4DDB.cjs → tool-summary-63DPIS7G.cjs} +4 -4
  116. package/dist/{tool-summary-2RUFL5QK.js → tool-summary-NP5CDBKG.js} +2 -2
  117. package/dist/tool-system/builtin/ask-user.d.ts +9 -1
  118. package/dist/tool-system/context.d.ts +31 -2
  119. package/dist/tool-system/executor.d.ts +4 -0
  120. package/dist/tool-system/investigation-guard.d.ts +46 -0
  121. package/dist/types.d.ts +13 -2
  122. package/dist/ui/components/AskUserPrompt.d.ts +8 -1
  123. package/dist/ui/components/DiffLine.d.ts +33 -0
  124. package/dist/ui/components/ModelManager.d.ts +34 -1
  125. package/dist/ui/components/OnboardingPrompt.d.ts +10 -1
  126. package/dist/ui/components/ProviderModelFlow.d.ts +58 -0
  127. package/dist/ui/components/UpdateBanner.d.ts +1 -0
  128. package/dist/updater-I7QBW4DP.cjs +17 -0
  129. package/dist/updater-NVME5S3Z.js +17 -0
  130. package/dist/utils/semver.d.ts +1 -0
  131. package/dist/utils/task-sanitizer.d.ts +6 -0
  132. package/package.json +2 -1
  133. package/skills-builtin/codeshell-help.md +135 -0
  134. package/dist/anthropic-P5VETAFI.cjs +0 -10
  135. package/dist/anthropic-W2GU3D76.js +0 -10
  136. package/dist/chunk-75E4BBFC.js +0 -224
  137. package/dist/chunk-FV2ARONZ.cjs +0 -224
  138. package/dist/client-base-TOVE25FA.js +0 -9
  139. package/dist/client-base-VDDIADAC.cjs +0 -9
  140. package/dist/compaction-D3KV2NWY.cjs +0 -31
  141. package/dist/devtools-WTC3NFNE.cjs +0 -6
  142. package/dist/file-history-HZWO2WQ5.js +0 -7
  143. package/dist/file-history-UQQILIY7.cjs +0 -7
  144. package/dist/manager-FWLOVEEK.cjs +0 -7
  145. package/dist/manager-GEXJLOIS.js +0 -7
  146. package/dist/mcp-manager-37GQLFGX.js +0 -8
  147. package/dist/mcp-manager-U77NEXBY.cjs +0 -8
  148. package/dist/memory-ADGOWADP.cjs +0 -9
  149. package/dist/openai-RXU5URYI.js +0 -10
  150. package/dist/openai-SQW4H2K4.cjs +0 -10
  151. package/dist/openrouter-models-PLCWZZYE.cjs +0 -15
  152. package/dist/openrouter-sync-K2WK3A2A.cjs +0 -11
  153. package/dist/services/compact.d.ts +0 -56
  154. package/dist/session-manager-HRSKENKB.cjs +0 -8
  155. package/dist/session-manager-NEKFEHF3.js +0 -8
  156. package/dist/updater-J7L7R6BY.cjs +0 -185
  157. package/dist/updater-LDBNYCAO.js +0 -185
@@ -1,15 +1,18 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkEL2RL5DGcjs = require('./chunk-EL2RL5DG.cjs');
3
+ var _chunkYKIAELDZcjs = require('./chunk-YKIAELDZ.cjs');
4
4
 
5
5
 
6
- var _chunkJHNCK7JPcjs = require('./chunk-JHNCK7JP.cjs');
6
+ var _chunk2YW4FPFGcjs = require('./chunk-2YW4FPFG.cjs');
7
7
 
8
8
 
9
- var _chunkIJSHQGMPcjs = require('./chunk-IJSHQGMP.cjs');
9
+ var _chunkIK4EWJBPcjs = require('./chunk-IK4EWJBP.cjs');
10
+
11
+
12
+ var _chunkKS3RYAYLcjs = require('./chunk-KS3RYAYL.cjs');
10
13
 
11
14
  // src/llm/client-factory.ts
12
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
15
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
13
16
  var PROVIDER_REGISTRY = /* @__PURE__ */ new Map();
14
17
  function registerProvider(name, cls) {
15
18
  PROVIDER_REGISTRY.set(name, cls);
@@ -18,17 +21,17 @@ async function createLLMClient(config) {
18
21
  let Cls = PROVIDER_REGISTRY.get(config.provider);
19
22
  if (!Cls) {
20
23
  if (config.provider === "anthropic") {
21
- const { AnthropicClient } = await Promise.resolve().then(() => _interopRequireWildcard(require("./anthropic-P5VETAFI.cjs")));
24
+ const { AnthropicClient } = await Promise.resolve().then(() => _interopRequireWildcard(require("./anthropic-IBTI4WL2.cjs")));
22
25
  registerProvider("anthropic", AnthropicClient);
23
26
  Cls = AnthropicClient;
24
27
  } else if (config.provider === "openai") {
25
- const { OpenAIClient } = await Promise.resolve().then(() => _interopRequireWildcard(require("./openai-SQW4H2K4.cjs")));
28
+ const { OpenAIClient } = await Promise.resolve().then(() => _interopRequireWildcard(require("./openai-YBTOET4O.cjs")));
26
29
  registerProvider("openai", OpenAIClient);
27
30
  Cls = OpenAIClient;
28
31
  }
29
32
  }
30
33
  if (!Cls) {
31
- throw new (0, _chunkEL2RL5DGcjs.LLMError)(
34
+ throw new (0, _chunk2YW4FPFGcjs.LLMError)(
32
35
  `Unknown LLM provider: ${config.provider}. Available: ${[...PROVIDER_REGISTRY.keys()].join(", ")}`
33
36
  );
34
37
  }
@@ -36,7 +39,7 @@ async function createLLMClient(config) {
36
39
  }
37
40
 
38
41
  // src/arena/types.ts
39
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
42
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
40
43
  var ARENA_MODE_DEFAULTS = {
41
44
  review: { maxDiscussionRounds: 3, convergenceThreshold: 200 },
42
45
  discussion: { maxDiscussionRounds: 4, convergenceThreshold: 300 },
@@ -58,10 +61,10 @@ function isStrategyV2(s) {
58
61
  }
59
62
 
60
63
  // src/arena/strategies/review.ts
61
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
64
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
62
65
 
63
66
  // src/arena/strategies/utils.ts
64
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
67
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
65
68
  function asString(v) {
66
69
  if (typeof v === "string") return v;
67
70
  if (v == null) return "";
@@ -151,7 +154,7 @@ function formatFindingReviews(reviews) {
151
154
  }
152
155
  function parseReport(participant, text) {
153
156
  if (!text || text.trim().length === 0) {
154
- _chunkJHNCK7JPcjs.logger.warn("arena.parse_report_empty", { participant });
157
+ _chunkIK4EWJBPcjs.logger.warn("arena.parse_report_empty", { participant });
155
158
  return {
156
159
  participant,
157
160
  contextSummary: "(no response)",
@@ -176,7 +179,7 @@ function parseReport(participant, text) {
176
179
  };
177
180
  if (report.findings.length > 0) return report;
178
181
  } catch (err) {
179
- _chunkJHNCK7JPcjs.logger.warn("arena.parse_report_json_fail", {
182
+ _chunkIK4EWJBPcjs.logger.warn("arena.parse_report_json_fail", {
180
183
  participant,
181
184
  error: err.message,
182
185
  textLength: text.length,
@@ -184,7 +187,7 @@ function parseReport(participant, text) {
184
187
  });
185
188
  }
186
189
  if (xmlReport) {
187
- _chunkJHNCK7JPcjs.logger.warn("arena.parse_report_no_findings", {
190
+ _chunkIK4EWJBPcjs.logger.warn("arena.parse_report_no_findings", {
188
191
  participant,
189
192
  textPreview: text.slice(0, 200)
190
193
  });
@@ -830,7 +833,7 @@ Synthesize a structured consensus. Verified claims should appear as high-confide
830
833
  };
831
834
 
832
835
  // src/arena/strategies/discussion.ts
833
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
836
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
834
837
  var DiscussionStrategy = class {
835
838
  researchSystemPrompt(name) {
836
839
  return `You are ${name}, participating in a multi-model discussion arena.
@@ -1011,7 +1014,7 @@ Synthesize a balanced conclusion. Verified claims are high-confidence. Unresolve
1011
1014
  };
1012
1015
 
1013
1016
  // src/arena/strategies/planning.ts
1014
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
1017
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
1015
1018
  var PlanningStrategy = class {
1016
1019
  researchSystemPrompt(name) {
1017
1020
  return `You are ${name}, a planner in a multi-model planning session.
@@ -1287,10 +1290,10 @@ Requirements:
1287
1290
  };
1288
1291
 
1289
1292
  // src/arena/lenses/index.ts
1290
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
1293
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
1291
1294
 
1292
1295
  // src/arena/lenses/engineering.ts
1293
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
1296
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
1294
1297
  var engineeringLens = {
1295
1298
  name: "engineering",
1296
1299
  label: "Engineering",
@@ -1312,7 +1315,7 @@ var engineeringLens = {
1312
1315
  };
1313
1316
 
1314
1317
  // src/arena/lenses/product.ts
1315
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
1318
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
1316
1319
  var productLens = {
1317
1320
  name: "product",
1318
1321
  label: "Product",
@@ -1334,7 +1337,7 @@ var productLens = {
1334
1337
  };
1335
1338
 
1336
1339
  // src/arena/lenses/architecture.ts
1337
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
1340
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
1338
1341
  var architectureLens = {
1339
1342
  name: "architecture",
1340
1343
  label: "Architecture",
@@ -1356,7 +1359,7 @@ var architectureLens = {
1356
1359
  };
1357
1360
 
1358
1361
  // src/arena/lenses/general.ts
1359
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
1362
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
1360
1363
  var generalLens = {
1361
1364
  name: "general",
1362
1365
  label: "General",
@@ -1405,10 +1408,10 @@ function buildLensPrompt(lenses, phase) {
1405
1408
  var LENS_NAMES = ["engineering", "product", "architecture", "general"];
1406
1409
 
1407
1410
  // src/arena/strategies/index.ts
1408
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
1411
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
1409
1412
 
1410
1413
  // src/arena/strategies/lens-wrapper.ts
1411
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
1414
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
1412
1415
  function withLens(strategy, plan) {
1413
1416
  const lenses = resolveLenses(plan.lenses);
1414
1417
  if (lenses.length === 0) return strategy;
@@ -1631,7 +1634,7 @@ function getStrategyForPlan(plan) {
1631
1634
  }
1632
1635
 
1633
1636
  // src/arena/planner.ts
1634
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
1637
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
1635
1638
  var PLANNER_SYSTEM_PROMPT = `You are the planner for a multi-model collaborative analysis tool called Arena.
1636
1639
 
1637
1640
  Given a user's natural language request, produce an execution plan. You must determine:
@@ -1698,10 +1701,10 @@ Analyze the user request above and output the arena plan as JSON.` }],
1698
1701
  plan.sources = [{ kind: "git", targets: [flags.base, _nullishCoalesce(flags.head, () => ( "HEAD"))] }];
1699
1702
  plan.subject = { kind: "changes", label: `${flags.base}...${_nullishCoalesce(flags.head, () => ( "HEAD"))}`, targets: [flags.base, _nullishCoalesce(flags.head, () => ( "HEAD"))] };
1700
1703
  }
1701
- _chunkJHNCK7JPcjs.logger.info("arena.planner", { plan });
1704
+ _chunkIK4EWJBPcjs.logger.info("arena.planner", { plan });
1702
1705
  return plan;
1703
1706
  } catch (err) {
1704
- _chunkJHNCK7JPcjs.logger.warn("arena.planner_fallback", { error: err.message });
1707
+ _chunkIK4EWJBPcjs.logger.warn("arena.planner_fallback", { error: err.message });
1705
1708
  return buildFallbackPlan(topic, flags);
1706
1709
  }
1707
1710
  }
@@ -1903,10 +1906,10 @@ function parseOutputShape(v, mode) {
1903
1906
  }
1904
1907
 
1905
1908
  // src/arena/providers/index.ts
1906
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
1909
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
1907
1910
 
1908
1911
  // src/arena/providers/git.ts
1909
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
1912
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
1910
1913
  var _child_process = require('child_process');
1911
1914
  var MAX_DIFF_CHARS = 2e4;
1912
1915
  var MAX_CHANGED_FILES = 30;
@@ -2009,7 +2012,7 @@ var gitProvider = {
2009
2012
  });
2010
2013
  }
2011
2014
  }
2012
- _chunkJHNCK7JPcjs.logger.info("arena.provider.git", {
2015
+ _chunkIK4EWJBPcjs.logger.info("arena.provider.git", {
2013
2016
  artifactCount: artifacts.length,
2014
2017
  hasCompare: isCompare
2015
2018
  });
@@ -2044,7 +2047,7 @@ function clusterByDirectory(paths) {
2044
2047
  }
2045
2048
 
2046
2049
  // src/arena/providers/repo.ts
2047
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
2050
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
2048
2051
  var _fs = require('fs');
2049
2052
  var _promises = require('fs/promises');
2050
2053
  var _path = require('path');
@@ -2145,7 +2148,7 @@ var repoProvider = {
2145
2148
  });
2146
2149
  }
2147
2150
  }
2148
- _chunkJHNCK7JPcjs.logger.info("arena.provider.repo", { artifactCount: artifacts.length });
2151
+ _chunkIK4EWJBPcjs.logger.info("arena.provider.repo", { artifactCount: artifacts.length });
2149
2152
  return artifacts;
2150
2153
  }
2151
2154
  };
@@ -2233,7 +2236,7 @@ async function safeGrep(pattern) {
2233
2236
  } catch (err) {
2234
2237
  const e = err;
2235
2238
  if (_optionalChain([e, 'optionalAccess', _29 => _29.code]) === 1) return "";
2236
- _chunkJHNCK7JPcjs.logger.warn("arena.provider.grep_failed", {
2239
+ _chunkIK4EWJBPcjs.logger.warn("arena.provider.grep_failed", {
2237
2240
  pattern,
2238
2241
  code: _optionalChain([e, 'optionalAccess', _30 => _30.code]),
2239
2242
  killed: _optionalChain([e, 'optionalAccess', _31 => _31.killed]),
@@ -2319,7 +2322,7 @@ function extractSearchHints(topic) {
2319
2322
  }
2320
2323
 
2321
2324
  // src/arena/providers/docs.ts
2322
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
2325
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
2323
2326
 
2324
2327
 
2325
2328
  var MAX_DOC_CHARS = 1e4;
@@ -2372,7 +2375,7 @@ var docsProvider = {
2372
2375
  }
2373
2376
  }
2374
2377
  }
2375
- _chunkJHNCK7JPcjs.logger.info("arena.provider.docs", { artifactCount: artifacts.length });
2378
+ _chunkIK4EWJBPcjs.logger.info("arena.provider.docs", { artifactCount: artifacts.length });
2376
2379
  return artifacts;
2377
2380
  }
2378
2381
  };
@@ -2414,7 +2417,7 @@ function truncate2(content) {
2414
2417
  }
2415
2418
 
2416
2419
  // src/arena/providers/none.ts
2417
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
2420
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
2418
2421
  var noneProvider = {
2419
2422
  kind: "none",
2420
2423
  collect(_plan, _topic) {
@@ -2449,7 +2452,7 @@ async function collectEvidence(plan, topic, options = {}) {
2449
2452
  const results = await Promise.all(tasks);
2450
2453
  for (const r of results) {
2451
2454
  artifacts.push(...r.artifacts);
2452
- _chunkJHNCK7JPcjs.logger.info("arena.evidence_collected", {
2455
+ _chunkIK4EWJBPcjs.logger.info("arena.evidence_collected", {
2453
2456
  source: r.kind,
2454
2457
  count: r.artifacts.length,
2455
2458
  durationMs: r.durationMs,
@@ -2494,7 +2497,7 @@ async function runProviderWithTimeout(provider, plan, topic, signal) {
2494
2497
  const timeout = new Promise((resolve2) => {
2495
2498
  timer = setTimeout(() => {
2496
2499
  timedOut = true;
2497
- _chunkJHNCK7JPcjs.logger.warn("arena.provider.timeout", { source: provider.kind, ms: PROVIDER_TIMEOUT_MS });
2500
+ _chunkIK4EWJBPcjs.logger.warn("arena.provider.timeout", { source: provider.kind, ms: PROVIDER_TIMEOUT_MS });
2498
2501
  resolve2([]);
2499
2502
  }, PROVIDER_TIMEOUT_MS);
2500
2503
  if (typeof timer.unref === "function") timer.unref();
@@ -2507,7 +2510,7 @@ async function runProviderWithTimeout(provider, plan, topic, signal) {
2507
2510
  try {
2508
2511
  artifacts = await Promise.race([work, timeout]);
2509
2512
  } catch (err) {
2510
- _chunkJHNCK7JPcjs.logger.warn("arena.provider.error", { source: provider.kind, error: err.message });
2513
+ _chunkIK4EWJBPcjs.logger.warn("arena.provider.error", { source: provider.kind, error: err.message });
2511
2514
  artifacts = [];
2512
2515
  } finally {
2513
2516
  cleanup();
@@ -2521,10 +2524,10 @@ async function runProviderWithTimeout(provider, plan, topic, signal) {
2521
2524
  }
2522
2525
 
2523
2526
  // src/arena/tools/selector.ts
2524
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
2527
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
2525
2528
 
2526
2529
  // src/arena/context/context-tools.ts
2527
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
2530
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
2528
2531
 
2529
2532
 
2530
2533
 
@@ -2760,7 +2763,7 @@ function hasTools(plan) {
2760
2763
  }
2761
2764
 
2762
2765
  // src/arena/phases/participant-research.ts
2763
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
2766
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
2764
2767
  var _crypto = require('crypto');
2765
2768
  async function runParticipantResearch(options) {
2766
2769
  const results = await runParticipantResearchWithDossiers(options);
@@ -2789,7 +2792,7 @@ async function runParticipantResearchWithDossiers(options) {
2789
2792
  for (let round = 0; round <= MAX_TOOL_ROUNDS; round++) {
2790
2793
  totalRounds = round;
2791
2794
  if (messages.length >= MAX_MESSAGES) {
2792
- _chunkJHNCK7JPcjs.logger.warn("arena.research_message_limit", {
2795
+ _chunkIK4EWJBPcjs.logger.warn("arena.research_message_limit", {
2793
2796
  participant: p.name,
2794
2797
  messageCount: messages.length,
2795
2798
  round
@@ -2804,7 +2807,7 @@ async function runParticipantResearchWithDossiers(options) {
2804
2807
  });
2805
2808
  const toolNames = (_nullishCoalesce(response.toolCalls, () => ( []))).map((tc) => tc.toolName);
2806
2809
  const hasTools2 = response.toolCalls && response.toolCalls.length > 0;
2807
- _chunkJHNCK7JPcjs.logger.info("arena.research_round", {
2810
+ _chunkIK4EWJBPcjs.logger.info("arena.research_round", {
2808
2811
  participant: p.name,
2809
2812
  round,
2810
2813
  toolCount: _nullishCoalesce(_optionalChain([response, 'access', _41 => _41.toolCalls, 'optionalAccess', _42 => _42.length]), () => ( 0)),
@@ -2868,7 +2871,7 @@ async function runParticipantResearchWithDossiers(options) {
2868
2871
  messages.push({ role: "user", content: resultBlocks });
2869
2872
  }
2870
2873
  if (!finalText) {
2871
- _chunkJHNCK7JPcjs.logger.warn("arena.research_force_conclude", {
2874
+ _chunkIK4EWJBPcjs.logger.warn("arena.research_force_conclude", {
2872
2875
  participant: p.name,
2873
2876
  totalRounds,
2874
2877
  messageCount: messages.length
@@ -2883,20 +2886,20 @@ async function runParticipantResearchWithDossiers(options) {
2883
2886
  }
2884
2887
  ]
2885
2888
  });
2886
- _chunkJHNCK7JPcjs.logger.info("arena.research_force_conclude_response", {
2889
+ _chunkIK4EWJBPcjs.logger.info("arena.research_force_conclude_response", {
2887
2890
  participant: p.name,
2888
2891
  textLen: _nullishCoalesce(_optionalChain([forceResponse, 'access', _46 => _46.text, 'optionalAccess', _47 => _47.length]), () => ( 0)),
2889
2892
  stopReason: _nullishCoalesce(forceResponse.stopReason, () => ( "unknown"))
2890
2893
  });
2891
2894
  finalText = forceResponse.text;
2892
2895
  }
2893
- _chunkJHNCK7JPcjs.logger.info("arena.research_raw_response", {
2896
+ _chunkIK4EWJBPcjs.logger.info("arena.research_raw_response", {
2894
2897
  participant: p.name,
2895
2898
  textLength: finalText.length,
2896
2899
  text: finalText
2897
2900
  });
2898
2901
  if (!finalText || finalText.trim().length === 0) {
2899
- _chunkJHNCK7JPcjs.logger.warn("arena.research_failed", {
2902
+ _chunkIK4EWJBPcjs.logger.warn("arena.research_failed", {
2900
2903
  participant: p.name,
2901
2904
  totalRounds,
2902
2905
  messageCount: messages.length
@@ -3011,7 +3014,7 @@ function buildFindingEvidenceLinks(report, packets) {
3011
3014
  }
3012
3015
 
3013
3016
  // src/arena/phases/claim-registry.ts
3014
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
3017
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
3015
3018
  function registerClaims(options) {
3016
3019
  const { dossiers, ledger, onProgress } = options;
3017
3020
  const claims = [];
@@ -3053,7 +3056,7 @@ function selectClaimsForReview(claims, maxClaims) {
3053
3056
  }
3054
3057
 
3055
3058
  // src/arena/digest-builder.ts
3056
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
3059
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
3057
3060
  function buildDigest(ledger, options) {
3058
3061
  const { round, relevantClaimIds } = options;
3059
3062
  const claimIdSet = new Set(relevantClaimIds);
@@ -3139,7 +3142,7 @@ function formatDigest(digest) {
3139
3142
  }
3140
3143
 
3141
3144
  // src/arena/transitions.ts
3142
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
3145
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
3143
3146
  var VALID_TRANSITIONS = {
3144
3147
  proposed: ["under_review"],
3145
3148
  under_review: ["verified", "contested", "rejected"],
@@ -3188,7 +3191,7 @@ function validTransitions(claim) {
3188
3191
  }
3189
3192
 
3190
3193
  // src/arena/phases/cross-review.ts
3191
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
3194
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
3192
3195
  async function runCrossReview(options) {
3193
3196
  const { participants, strategy, topic, reports, signal, onProgress } = options;
3194
3197
  _optionalChain([onProgress, 'optionalCall', _51 => _51({ type: "cross_review_start", round: 1 })]);
@@ -3209,13 +3212,13 @@ async function runCrossReview(options) {
3209
3212
  messages: [{ role: "user", content: userContent }],
3210
3213
  signal
3211
3214
  });
3212
- _chunkJHNCK7JPcjs.logger.info("arena.cross_review_raw_response", {
3215
+ _chunkIK4EWJBPcjs.logger.info("arena.cross_review_raw_response", {
3213
3216
  participant: p.name,
3214
3217
  text: response.text,
3215
3218
  stopReason: response.stopReason
3216
3219
  });
3217
3220
  if (response.stopReason === "length") {
3218
- _chunkJHNCK7JPcjs.logger.warn("arena.cross_review_truncated", { participant: p.name });
3221
+ _chunkIK4EWJBPcjs.logger.warn("arena.cross_review_truncated", { participant: p.name });
3219
3222
  const retryResponse = await client.createMessage({
3220
3223
  systemPrompt,
3221
3224
  messages: [
@@ -3228,7 +3231,7 @@ async function runCrossReview(options) {
3228
3231
  ],
3229
3232
  signal
3230
3233
  });
3231
- _chunkJHNCK7JPcjs.logger.info("arena.cross_review_retry", {
3234
+ _chunkIK4EWJBPcjs.logger.info("arena.cross_review_retry", {
3232
3235
  participant: p.name,
3233
3236
  stopReason: retryResponse.stopReason
3234
3237
  });
@@ -3279,7 +3282,7 @@ async function runVerificationReview(options) {
3279
3282
  messages: [{ role: "user", content: userContent }],
3280
3283
  signal
3281
3284
  });
3282
- _chunkJHNCK7JPcjs.logger.info("arena.verification_review_raw", {
3285
+ _chunkIK4EWJBPcjs.logger.info("arena.verification_review_raw", {
3283
3286
  participant: p.name,
3284
3287
  stopReason: response.stopReason
3285
3288
  });
@@ -3354,7 +3357,7 @@ async function runVerificationReview(options) {
3354
3357
  const hasPendingChecks = ledger.getPendingChecksForClaim(claim.claimId).length > 0;
3355
3358
  applyReviewResult(claim, claimChallenges, hasPendingChecks);
3356
3359
  }
3357
- _chunkJHNCK7JPcjs.logger.info("arena.verification_done", {
3360
+ _chunkIK4EWJBPcjs.logger.info("arena.verification_done", {
3358
3361
  reviewCount: allReviews.length,
3359
3362
  challengeCount: allChallenges.length,
3360
3363
  claimStatuses: Object.fromEntries(
@@ -3371,15 +3374,15 @@ async function runVerificationReview(options) {
3371
3374
  }
3372
3375
 
3373
3376
  // src/arena/phases/debate-rounds.ts
3374
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
3377
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
3375
3378
  async function runDebateRounds(options) {
3376
3379
  const { participants, strategy, topic, ledger, limits, maxRounds, signal, onProgress } = options;
3377
3380
  const contested = ledger.getClaimsByStatus("contested").slice(0, limits.maxContestedClaimsForDebate);
3378
3381
  if (contested.length === 0) {
3379
- _chunkJHNCK7JPcjs.logger.info("arena.debate_skip", { reason: "no contested claims" });
3382
+ _chunkIK4EWJBPcjs.logger.info("arena.debate_skip", { reason: "no contested claims" });
3380
3383
  return [];
3381
3384
  }
3382
- _chunkJHNCK7JPcjs.logger.info("arena.debate_start", {
3385
+ _chunkIK4EWJBPcjs.logger.info("arena.debate_start", {
3383
3386
  contestedCount: contested.length,
3384
3387
  maxRounds
3385
3388
  });
@@ -3408,7 +3411,7 @@ async function debateClaim(options) {
3408
3411
  const owner = participants.find((p) => p.name === claim.owner);
3409
3412
  const primaryChallenger = findPrimaryChallenger(claim, participants);
3410
3413
  if (!owner || !primaryChallenger) {
3411
- _chunkJHNCK7JPcjs.logger.warn("arena.debate_skip_claim", {
3414
+ _chunkIK4EWJBPcjs.logger.warn("arena.debate_skip_claim", {
3412
3415
  claimId: claim.claimId,
3413
3416
  reason: "cannot identify debaters"
3414
3417
  });
@@ -3441,7 +3444,7 @@ async function debateClaim(options) {
3441
3444
  messages: [{ role: "user", content: userContent }],
3442
3445
  signal
3443
3446
  });
3444
- _chunkJHNCK7JPcjs.logger.info("arena.debate_turn", {
3447
+ _chunkIK4EWJBPcjs.logger.info("arena.debate_turn", {
3445
3448
  participant: p.name,
3446
3449
  claimId: claim.claimId,
3447
3450
  round,
@@ -3466,7 +3469,7 @@ async function debateClaim(options) {
3466
3469
  rounds.push(debateRound);
3467
3470
  _optionalChain([onProgress, 'optionalCall', _63 => _63({ type: "debate_round_done", round, resolved: resolved ? 1 : 0 })]);
3468
3471
  if (resolved) {
3469
- _chunkJHNCK7JPcjs.logger.info("arena.debate_converged", {
3472
+ _chunkIK4EWJBPcjs.logger.info("arena.debate_converged", {
3470
3473
  claimId: claim.claimId,
3471
3474
  round
3472
3475
  });
@@ -3499,7 +3502,7 @@ Respond ONLY with JSON:
3499
3502
  }
3500
3503
 
3501
3504
  // src/arena/phases/adjudication.ts
3502
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
3505
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
3503
3506
  async function runAdjudication(options) {
3504
3507
  const { concluder, strategy, topic, ledger, signal, onProgress } = options;
3505
3508
  const allAdjudications = [];
@@ -3507,10 +3510,10 @@ async function runAdjudication(options) {
3507
3510
  const contestedClaims = ledger.getClaimsByStatus("contested");
3508
3511
  const verifiedClaims = ledger.getClaimsByStatus("verified");
3509
3512
  if (contestedClaims.length === 0 && verifiedClaims.length === 0) {
3510
- _chunkJHNCK7JPcjs.logger.info("arena.adjudication_skip", { reason: "no claims to adjudicate" });
3513
+ _chunkIK4EWJBPcjs.logger.info("arena.adjudication_skip", { reason: "no claims to adjudicate" });
3511
3514
  return [];
3512
3515
  }
3513
- _chunkJHNCK7JPcjs.logger.info("arena.adjudication_start", {
3516
+ _chunkIK4EWJBPcjs.logger.info("arena.adjudication_start", {
3514
3517
  contested: contestedClaims.length,
3515
3518
  verified: verifiedClaims.length
3516
3519
  });
@@ -3537,7 +3540,7 @@ async function runAdjudication(options) {
3537
3540
  messages: [{ role: "user", content: userContent }],
3538
3541
  signal
3539
3542
  });
3540
- _chunkJHNCK7JPcjs.logger.info("arena.adjudication_response", {
3543
+ _chunkIK4EWJBPcjs.logger.info("arena.adjudication_response", {
3541
3544
  claimId: claim.claimId,
3542
3545
  stopReason: response.stopReason
3543
3546
  });
@@ -3571,7 +3574,7 @@ async function runAdjudication(options) {
3571
3574
  (a) => a.outcome === "accepted" || a.outcome === "accepted_with_revision"
3572
3575
  ).length;
3573
3576
  const unresolved = ledger.getClaimsByStatus("unresolved").length;
3574
- _chunkJHNCK7JPcjs.logger.info("arena.adjudication_done", {
3577
+ _chunkIK4EWJBPcjs.logger.info("arena.adjudication_done", {
3575
3578
  total: allAdjudications.length,
3576
3579
  accepted,
3577
3580
  unresolved
@@ -3619,7 +3622,7 @@ Respond ONLY with JSON:
3619
3622
  }
3620
3623
 
3621
3624
  // src/arena/phases/build-consensus.ts
3622
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
3625
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
3623
3626
  async function buildConsensus(options) {
3624
3627
  const { concluder, strategy, topic, reports, reviews, claimSummary, signal, onProgress } = options;
3625
3628
  _optionalChain([onProgress, 'optionalCall', _67 => _67({ type: "consensus_start" })]);
@@ -3632,7 +3635,7 @@ async function buildConsensus(options) {
3632
3635
  const v2 = isStrategyV2(strategy);
3633
3636
  if (v2 && claimSummary) {
3634
3637
  userContent = strategy.claimAwareConsensusUserPrompt(topic, reports, reviews, claimSummary);
3635
- _chunkJHNCK7JPcjs.logger.info("arena.consensus_claim_aware", {
3638
+ _chunkIK4EWJBPcjs.logger.info("arena.consensus_claim_aware", {
3636
3639
  verified: claimSummary.verified.length,
3637
3640
  unresolved: claimSummary.unresolved.length,
3638
3641
  contested: claimSummary.contested.length,
@@ -3646,12 +3649,12 @@ async function buildConsensus(options) {
3646
3649
  messages: [{ role: "user", content: userContent }],
3647
3650
  signal
3648
3651
  });
3649
- _chunkJHNCK7JPcjs.logger.info("arena.consensus_raw_response", {
3652
+ _chunkIK4EWJBPcjs.logger.info("arena.consensus_raw_response", {
3650
3653
  text: response.text,
3651
3654
  stopReason: response.stopReason
3652
3655
  });
3653
3656
  if (response.stopReason === "length") {
3654
- _chunkJHNCK7JPcjs.logger.warn("arena.consensus_truncated", {
3657
+ _chunkIK4EWJBPcjs.logger.warn("arena.consensus_truncated", {
3655
3658
  textLen: _nullishCoalesce(_optionalChain([response, 'access', _68 => _68.text, 'optionalAccess', _69 => _69.length]), () => ( 0)),
3656
3659
  maxTokens: concluder.llm.maxTokens
3657
3660
  });
@@ -3667,12 +3670,12 @@ async function buildConsensus(options) {
3667
3670
  ],
3668
3671
  signal
3669
3672
  });
3670
- _chunkJHNCK7JPcjs.logger.info("arena.consensus_retry_response", {
3673
+ _chunkIK4EWJBPcjs.logger.info("arena.consensus_retry_response", {
3671
3674
  textLen: _nullishCoalesce(_optionalChain([retryResponse, 'access', _70 => _70.text, 'optionalAccess', _71 => _71.length]), () => ( 0)),
3672
3675
  stopReason: retryResponse.stopReason
3673
3676
  });
3674
3677
  if (retryResponse.stopReason === "length") {
3675
- _chunkJHNCK7JPcjs.logger.warn("arena.consensus_still_truncated", {
3678
+ _chunkIK4EWJBPcjs.logger.warn("arena.consensus_still_truncated", {
3676
3679
  textLen: _nullishCoalesce(_optionalChain([retryResponse, 'access', _72 => _72.text, 'optionalAccess', _73 => _73.length]), () => ( 0))
3677
3680
  });
3678
3681
  }
@@ -3686,7 +3689,7 @@ async function buildConsensus(options) {
3686
3689
  }
3687
3690
 
3688
3691
  // src/arena/ledger.ts
3689
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
3692
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
3690
3693
  var WARN_CLAIMS = 50;
3691
3694
  var WARN_PACKETS = 200;
3692
3695
  var WARN_CHALLENGES = 100;
@@ -3716,7 +3719,7 @@ var ArenaLedger = class {
3716
3719
  const packets = this.ledger.evidencePackets.length;
3717
3720
  const challenges = this.ledger.challenges.length;
3718
3721
  if (claims === WARN_CLAIMS || packets === WARN_PACKETS || challenges === WARN_CHALLENGES) {
3719
- _chunkJHNCK7JPcjs.logger.warn("arena.ledger_growth", { claims, packets, challenges, toolTraces: this.ledger.toolTraces.length });
3722
+ _chunkIK4EWJBPcjs.logger.warn("arena.ledger_growth", { claims, packets, challenges, toolTraces: this.ledger.toolTraces.length });
3720
3723
  }
3721
3724
  }
3722
3725
  appendDossier(dossier) {
@@ -3817,17 +3820,17 @@ var ArenaLedger = class {
3817
3820
  };
3818
3821
 
3819
3822
  // src/arena/arena.ts
3820
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
3823
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
3821
3824
 
3822
3825
  // src/arena/phases/planning-detail-expansion.ts
3823
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
3826
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
3824
3827
  var MAX_EXPANSION_TOOL_ROUNDS = 3;
3825
3828
  async function runDetailExpansion(options) {
3826
3829
  const { concluder, strategy, topic, phases, ledger, limits, signal, onProgress } = options;
3827
3830
  const tools = options.enableContextTools !== false ? _nullishCoalesce(options.contextTools, () => ( CONTEXT_TOOLS)) : void 0;
3828
3831
  const toExpand = phases.slice(0, limits.maxExpandedPhasesPerRun);
3829
3832
  _optionalChain([onProgress, 'optionalCall', _76 => _76({ type: "roadmap_expansion_start", phaseCount: toExpand.length })]);
3830
- _chunkJHNCK7JPcjs.logger.info("arena.detail_expansion_start", { phaseCount: toExpand.length });
3833
+ _chunkIK4EWJBPcjs.logger.info("arena.detail_expansion_start", { phaseCount: toExpand.length });
3831
3834
  const details = [];
3832
3835
  const client = await createLLMClient({
3833
3836
  ...concluder.llm,
@@ -3850,7 +3853,7 @@ async function runDetailExpansion(options) {
3850
3853
  signal
3851
3854
  });
3852
3855
  const hasTools2 = response.toolCalls && response.toolCalls.length > 0;
3853
- _chunkJHNCK7JPcjs.logger.info("arena.detail_expansion_round", {
3856
+ _chunkIK4EWJBPcjs.logger.info("arena.detail_expansion_round", {
3854
3857
  phase: phase.title,
3855
3858
  round,
3856
3859
  toolCount: _nullishCoalesce(_optionalChain([response, 'access', _79 => _79.toolCalls, 'optionalAccess', _80 => _80.length]), () => ( 0)),
@@ -3890,27 +3893,27 @@ async function runDetailExpansion(options) {
3890
3893
  if (!finalText) {
3891
3894
  finalText = "";
3892
3895
  }
3893
- _chunkJHNCK7JPcjs.logger.info("arena.detail_expansion_phase", {
3896
+ _chunkIK4EWJBPcjs.logger.info("arena.detail_expansion_phase", {
3894
3897
  phase: phase.title,
3895
3898
  textLen: finalText.length
3896
3899
  });
3897
3900
  const detail = strategy.parseDetailExpansionResponse(finalText);
3898
3901
  if (!detail.phaseTitle) detail.phaseTitle = phase.title;
3899
3902
  if (detail.targetFiles.length === 0 && detail.codeChanges.length === 0) {
3900
- _chunkJHNCK7JPcjs.logger.warn("arena.detail_expansion_sparse", {
3903
+ _chunkIK4EWJBPcjs.logger.warn("arena.detail_expansion_sparse", {
3901
3904
  phase: phase.title,
3902
3905
  objective: detail.objective.slice(0, 200)
3903
3906
  });
3904
3907
  }
3905
3908
  details.push(detail);
3906
3909
  }
3907
- _chunkJHNCK7JPcjs.logger.info("arena.detail_expansion_done", { detailCount: details.length });
3910
+ _chunkIK4EWJBPcjs.logger.info("arena.detail_expansion_done", { detailCount: details.length });
3908
3911
  _optionalChain([onProgress, 'optionalCall', _81 => _81({ type: "roadmap_expansion_done", detailCount: details.length })]);
3909
3912
  return details;
3910
3913
  }
3911
3914
 
3912
3915
  // src/arena/strategies/language-wrapper.ts
3913
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
3916
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
3914
3917
  function detectLanguageInstruction(topic) {
3915
3918
  const nonAscii = topic.replace(/[\x00-\x7F]/g, "");
3916
3919
  const ratio = nonAscii.length / Math.max(topic.length, 1);
@@ -4027,12 +4030,12 @@ var Arena = class {
4027
4030
  async run(topic, flags) {
4028
4031
  const participantNames = this.config.participants.map((p) => p.name);
4029
4032
  const signal = this.config.signal;
4030
- _chunkJHNCK7JPcjs.logger.info("arena.start", { mode: this.config.mode, participants: participantNames });
4033
+ _chunkIK4EWJBPcjs.logger.info("arena.start", { mode: this.config.mode, participants: participantNames });
4031
4034
  _optionalChain([signal, 'optionalAccess', _82 => _82.throwIfAborted, 'call', _83 => _83()]);
4032
4035
  const llmConfig = this.config.participants[0].llm;
4033
4036
  const plan = await planArena(topic, llmConfig, flags, signal);
4034
4037
  _optionalChain([this, 'access', _84 => _84.config, 'access', _85 => _85.onProgress, 'optionalCall', _86 => _86({ type: "plan_resolved", plan })]);
4035
- _chunkJHNCK7JPcjs.logger.info("arena.plan", {
4038
+ _chunkIK4EWJBPcjs.logger.info("arena.plan", {
4036
4039
  mode: plan.mode,
4037
4040
  lenses: plan.lenses.map((l) => l.name),
4038
4041
  sources: plan.sources.map((s) => s.kind),
@@ -4061,7 +4064,7 @@ var Arena = class {
4061
4064
  }
4062
4065
  });
4063
4066
  _optionalChain([onProgress, 'optionalCall', _92 => _92({ type: "evidence_collected", artifacts })]);
4064
- _chunkJHNCK7JPcjs.logger.info("arena.evidence", {
4067
+ _chunkIK4EWJBPcjs.logger.info("arena.evidence", {
4065
4068
  artifactCount: artifacts.length,
4066
4069
  sources: plan.sources.map((s) => s.kind)
4067
4070
  });
@@ -4070,7 +4073,7 @@ var Arena = class {
4070
4073
  this.strategy = withLanguage(this.strategy, topic);
4071
4074
  const contextTools = this.config.enableContextTools !== false ? selectTools(plan) : void 0;
4072
4075
  _optionalChain([signal, 'optionalAccess', _93 => _93.throwIfAborted, 'call', _94 => _94()]);
4073
- _chunkJHNCK7JPcjs.logger.info("arena.research_phase", { participants: participantNames });
4076
+ _chunkIK4EWJBPcjs.logger.info("arena.research_phase", { participants: participantNames });
4074
4077
  const researchResults = await runParticipantResearchWithDossiers({
4075
4078
  participants: this.config.participants,
4076
4079
  strategy: this.strategy,
@@ -4093,7 +4096,7 @@ var Arena = class {
4093
4096
  ledger,
4094
4097
  onProgress: this.config.onProgress
4095
4098
  });
4096
- _chunkJHNCK7JPcjs.logger.info("arena.claims_registered", {
4099
+ _chunkIK4EWJBPcjs.logger.info("arena.claims_registered", {
4097
4100
  claimCount: claims.length,
4098
4101
  byOwner: Object.fromEntries(
4099
4102
  participantNames.map((name) => [
@@ -4106,7 +4109,7 @@ var Arena = class {
4106
4109
  const concluderName = _nullishCoalesce(this.config.concluder, () => ( participantNames[0]));
4107
4110
  const concluderMatch = this.config.participants.find((p) => p.name === concluderName);
4108
4111
  if (!concluderMatch && this.config.concluder) {
4109
- _chunkJHNCK7JPcjs.logger.warn("arena.concluder_not_found", {
4112
+ _chunkIK4EWJBPcjs.logger.warn("arena.concluder_not_found", {
4110
4113
  requested: this.config.concluder,
4111
4114
  fallback: this.config.participants[0].name
4112
4115
  });
@@ -4160,7 +4163,7 @@ var Arena = class {
4160
4163
  enableContextTools,
4161
4164
  signal
4162
4165
  } = ctx;
4163
- _chunkJHNCK7JPcjs.logger.info("arena.planning_merge_review_phase");
4166
+ _chunkIK4EWJBPcjs.logger.info("arena.planning_merge_review_phase");
4164
4167
  const { reviews } = await runVerificationReview({
4165
4168
  participants: this.config.participants,
4166
4169
  strategy: this.strategy,
@@ -4180,7 +4183,7 @@ var Arena = class {
4180
4183
  unresolved: allClaims.filter((c) => c.status === "unresolved"),
4181
4184
  rejected: allClaims.filter((c) => c.status === "rejected")
4182
4185
  };
4183
- _chunkJHNCK7JPcjs.logger.info("arena.planning_consensus_phase", { concluder: concluder.name });
4186
+ _chunkIK4EWJBPcjs.logger.info("arena.planning_consensus_phase", { concluder: concluder.name });
4184
4187
  const consensus = await buildConsensus({
4185
4188
  concluder,
4186
4189
  strategy: this.strategy,
@@ -4193,7 +4196,7 @@ var Arena = class {
4193
4196
  });
4194
4197
  _optionalChain([signal, 'optionalAccess', _101 => _101.throwIfAborted, 'call', _102 => _102()]);
4195
4198
  if (consensus.roadmap.length > 0 && isStrategyPlanning(this.strategy)) {
4196
- _chunkJHNCK7JPcjs.logger.info("arena.detail_expansion_phase", { phaseCount: consensus.roadmap.length });
4199
+ _chunkIK4EWJBPcjs.logger.info("arena.detail_expansion_phase", { phaseCount: consensus.roadmap.length });
4197
4200
  try {
4198
4201
  const details = await runDetailExpansion({
4199
4202
  concluder,
@@ -4209,7 +4212,7 @@ var Arena = class {
4209
4212
  });
4210
4213
  consensus.roadmapDetails = details;
4211
4214
  } catch (err) {
4212
- _chunkJHNCK7JPcjs.logger.warn("arena.detail_expansion_failed", {
4215
+ _chunkIK4EWJBPcjs.logger.warn("arena.detail_expansion_failed", {
4213
4216
  error: err.message,
4214
4217
  phaseCount: consensus.roadmap.length
4215
4218
  });
@@ -4235,7 +4238,7 @@ var Arena = class {
4235
4238
  */
4236
4239
  async runReviewDiscussionPath(ctx) {
4237
4240
  const { topic, participantNames, plan, baseContext, reports, dossiers, ledger, concluder, signal } = ctx;
4238
- _chunkJHNCK7JPcjs.logger.info("arena.verification_review_phase");
4241
+ _chunkIK4EWJBPcjs.logger.info("arena.verification_review_phase");
4239
4242
  const { reviews } = await runVerificationReview({
4240
4243
  participants: this.config.participants,
4241
4244
  strategy: this.strategy,
@@ -4247,7 +4250,7 @@ var Arena = class {
4247
4250
  onProgress: this.config.onProgress
4248
4251
  });
4249
4252
  _optionalChain([signal, 'optionalAccess', _103 => _103.throwIfAborted, 'call', _104 => _104()]);
4250
- _chunkJHNCK7JPcjs.logger.info("arena.debate_phase");
4253
+ _chunkIK4EWJBPcjs.logger.info("arena.debate_phase");
4251
4254
  const debateRounds = await runDebateRounds({
4252
4255
  participants: this.config.participants,
4253
4256
  strategy: this.strategy,
@@ -4259,7 +4262,7 @@ var Arena = class {
4259
4262
  onProgress: this.config.onProgress
4260
4263
  });
4261
4264
  _optionalChain([signal, 'optionalAccess', _105 => _105.throwIfAborted, 'call', _106 => _106()]);
4262
- _chunkJHNCK7JPcjs.logger.info("arena.adjudication_phase", { concluder: concluder.name });
4265
+ _chunkIK4EWJBPcjs.logger.info("arena.adjudication_phase", { concluder: concluder.name });
4263
4266
  const adjudications = await runAdjudication({
4264
4267
  concluder,
4265
4268
  strategy: this.strategy,
@@ -4276,7 +4279,7 @@ var Arena = class {
4276
4279
  unresolved: allClaims.filter((c) => c.status === "unresolved"),
4277
4280
  rejected: allClaims.filter((c) => c.status === "rejected")
4278
4281
  };
4279
- _chunkJHNCK7JPcjs.logger.info("arena.consensus_phase", {
4282
+ _chunkIK4EWJBPcjs.logger.info("arena.consensus_phase", {
4280
4283
  concluder: concluder.name,
4281
4284
  verified: claimSummary.verified.length,
4282
4285
  unresolved: claimSummary.unresolved.length
@@ -4308,8 +4311,339 @@ var Arena = class {
4308
4311
  }
4309
4312
  };
4310
4313
 
4314
+ // src/cli/onboarding.ts
4315
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
4316
+
4317
+
4318
+ var _os = require('os');
4319
+ var PROVIDERS = [
4320
+ {
4321
+ id: "openrouter",
4322
+ name: "OpenRouter (\u63A8\u8350 \u2014 \u652F\u6301\u6240\u6709\u6A21\u578B)",
4323
+ envKey: "OPENROUTER_API_KEY",
4324
+ provider: "openai",
4325
+ baseUrl: "https://openrouter.ai/api/v1",
4326
+ defaultModel: "anthropic/claude-sonnet-4.6",
4327
+ keyUrl: "https://openrouter.ai/keys",
4328
+ keyPrefix: "sk-or-",
4329
+ models: [
4330
+ "anthropic/claude-opus-4.7",
4331
+ "anthropic/claude-sonnet-4.6",
4332
+ "anthropic/claude-haiku-4.5",
4333
+ "openai/gpt-5",
4334
+ "openai/gpt-5-mini",
4335
+ "openai/gpt-4o",
4336
+ "openai/o4-mini",
4337
+ "openai/o3",
4338
+ "google/gemini-2.5-pro",
4339
+ "google/gemini-2.5-flash",
4340
+ "deepseek/deepseek-chat",
4341
+ "deepseek/deepseek-reasoner",
4342
+ "qwen/qwen3-coder",
4343
+ "meta-llama/llama-4-maverick"
4344
+ ]
4345
+ },
4346
+ {
4347
+ id: "anthropic",
4348
+ name: "Anthropic (\u76F4\u8FDE Claude API)",
4349
+ envKey: "ANTHROPIC_API_KEY",
4350
+ provider: "anthropic",
4351
+ baseUrl: "https://api.anthropic.com",
4352
+ defaultModel: "claude-sonnet-4-6",
4353
+ keyUrl: "https://console.anthropic.com/settings/keys",
4354
+ keyPrefix: "sk-ant-",
4355
+ models: [
4356
+ "claude-opus-4-7",
4357
+ "claude-sonnet-4-6",
4358
+ "claude-haiku-4-5"
4359
+ ]
4360
+ },
4361
+ {
4362
+ id: "openai",
4363
+ name: "OpenAI",
4364
+ envKey: "OPENAI_API_KEY",
4365
+ provider: "openai",
4366
+ baseUrl: "https://api.openai.com/v1",
4367
+ defaultModel: "gpt-5",
4368
+ keyUrl: "https://platform.openai.com/api-keys",
4369
+ keyPrefix: "sk-",
4370
+ models: ["gpt-5", "gpt-5-mini", "gpt-5-nano", "gpt-4o", "o4-mini", "o3"]
4371
+ },
4372
+ {
4373
+ id: "deepseek",
4374
+ name: "DeepSeek (\u5B98\u65B9\u76F4\u8FDE)",
4375
+ envKey: "DEEPSEEK_API_KEY",
4376
+ provider: "openai",
4377
+ baseUrl: "https://api.deepseek.com/v1",
4378
+ defaultModel: "deepseek-v4-pro",
4379
+ keyUrl: "https://platform.deepseek.com/api_keys",
4380
+ keyPrefix: "sk-",
4381
+ models: ["deepseek-v4-pro", "deepseek-v4-flash", "deepseek-chat"]
4382
+ },
4383
+ {
4384
+ id: "gemini",
4385
+ name: "Google Gemini (\u5B98\u65B9\u76F4\u8FDE)",
4386
+ envKey: "GEMINI_API_KEY",
4387
+ provider: "openai",
4388
+ baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
4389
+ defaultModel: "gemini-2.5-pro",
4390
+ keyUrl: "https://aistudio.google.com/apikey",
4391
+ keyPrefix: "",
4392
+ models: [
4393
+ "gemini-2.5-pro",
4394
+ "gemini-2.5-flash",
4395
+ "gemini-2.0-flash"
4396
+ ]
4397
+ },
4398
+ {
4399
+ id: "ollama",
4400
+ name: "Ollama (\u672C\u5730\uFF0C\u65E0\u9700 Key)",
4401
+ envKey: "",
4402
+ provider: "openai",
4403
+ baseUrl: "http://localhost:11434/v1",
4404
+ defaultModel: "llama3.1",
4405
+ keyUrl: "https://ollama.com/library",
4406
+ keyPrefix: "",
4407
+ models: ["llama3.1", "qwen2.5-coder", "deepseek-r1", "mistral", "gemma3"],
4408
+ noKey: true
4409
+ },
4410
+ {
4411
+ id: "custom",
4412
+ name: "\u81EA\u5B9A\u4E49 (\u4EFB\u4F55 OpenAI \u517C\u5BB9 API)",
4413
+ envKey: "",
4414
+ provider: "openai",
4415
+ baseUrl: "",
4416
+ defaultModel: "",
4417
+ keyUrl: "",
4418
+ keyPrefix: "",
4419
+ models: []
4420
+ }
4421
+ ];
4422
+ var OPENROUTER_VENDORS = [
4423
+ { prefix: "anthropic/", take: 4 },
4424
+ { prefix: "openai/", take: 5 },
4425
+ { prefix: "google/", take: 3 },
4426
+ { prefix: "deepseek/", take: 3 },
4427
+ { prefix: "x-ai/", take: 2 },
4428
+ { prefix: "qwen/", take: 2 },
4429
+ { prefix: "meta-llama/", take: 2 },
4430
+ { prefix: "mistralai/", take: 1 }
4431
+ ];
4432
+ function buildOpenRouterModelList(fallback) {
4433
+ const all = _chunkYKIAELDZcjs.getOpenRouterModels.call(void 0, );
4434
+ if (all.length === 0) return fallback;
4435
+ const skip = /(?:-guard|-embedding|-rerank|-vision-only|:free)/i;
4436
+ const out = [];
4437
+ for (const { prefix, take } of OPENROUTER_VENDORS) {
4438
+ const candidates = all.filter((m) => m.id.startsWith(prefix)).filter((m) => !skip.test(m.id) && !m.id.includes("-preview")).slice(0, take);
4439
+ out.push(...candidates.map((m) => m.id));
4440
+ }
4441
+ return out.length > 0 ? out : fallback;
4442
+ }
4443
+ function resolveProviderModels(provider) {
4444
+ if (provider.id === "openrouter") {
4445
+ return buildOpenRouterModelList(provider.models);
4446
+ }
4447
+ return provider.models;
4448
+ }
4449
+ function detectEnvKeys() {
4450
+ const found = [];
4451
+ for (const p of PROVIDERS) {
4452
+ if (!p.envKey) continue;
4453
+ const v = process.env[p.envKey];
4454
+ if (v && v.trim()) {
4455
+ found.push({ provider: p, envKey: p.envKey, apiKey: v.trim() });
4456
+ }
4457
+ }
4458
+ return found;
4459
+ }
4460
+ function detectProviderFromApiKey(apiKey, baseUrl) {
4461
+ for (const p of PROVIDERS) {
4462
+ if (p.keyPrefix && apiKey.startsWith(p.keyPrefix)) return p;
4463
+ }
4464
+ if (baseUrl) {
4465
+ for (const p of PROVIDERS) {
4466
+ if (p.baseUrl && baseUrl.startsWith(p.baseUrl)) return p;
4467
+ }
4468
+ }
4469
+ for (const p of PROVIDERS) {
4470
+ if (!p.envKey) continue;
4471
+ const v = process.env[p.envKey];
4472
+ if (v && v.trim() === apiKey) return p;
4473
+ }
4474
+ return void 0;
4475
+ }
4476
+ function resolveApiKey(optionsApiKey, settingsApiKey) {
4477
+ if (optionsApiKey) return optionsApiKey;
4478
+ if (settingsApiKey) return settingsApiKey;
4479
+ for (const p of PROVIDERS) {
4480
+ if (!p.envKey) continue;
4481
+ const v = process.env[p.envKey];
4482
+ if (v && v.trim()) return v.trim();
4483
+ }
4484
+ return void 0;
4485
+ }
4486
+ var KNOWN_MAX_OUTPUT = {
4487
+ "anthropic/claude-opus-4.7": 32e3,
4488
+ "anthropic/claude-opus-4-7": 32e3,
4489
+ "claude-opus-4-7": 32e3,
4490
+ "anthropic/claude-sonnet-4.6": 16e3,
4491
+ "anthropic/claude-sonnet-4-6": 16e3,
4492
+ "claude-sonnet-4-6": 16e3,
4493
+ "anthropic/claude-haiku-4.5": 8192,
4494
+ "anthropic/claude-haiku-4-5": 8192,
4495
+ "claude-haiku-4-5": 8192,
4496
+ "openai/gpt-5": 32e3,
4497
+ "openai/gpt-5-mini": 32e3,
4498
+ "openai/gpt-5-nano": 16e3,
4499
+ "gpt-5": 32e3,
4500
+ "gpt-5-mini": 32e3,
4501
+ "gpt-5-nano": 16e3,
4502
+ "openai/gpt-4o": 16384,
4503
+ "gpt-4o": 16384,
4504
+ "openai/o4-mini": 1e5,
4505
+ "o4-mini": 1e5,
4506
+ "openai/o3": 1e5,
4507
+ "o3": 1e5,
4508
+ "google/gemini-2.5-pro": 65536,
4509
+ "google/gemini-2.5-flash": 65536,
4510
+ "gemini-2.5-pro": 65536,
4511
+ "gemini-2.5-flash": 65536,
4512
+ "gemini-2.0-flash": 8192,
4513
+ "deepseek/deepseek-v3.2": 8192,
4514
+ "deepseek/deepseek-r1": 8192,
4515
+ "deepseek-v4-flash": 8192,
4516
+ "deepseek-v4-pro": 65536,
4517
+ "deepseek-chat": 8192,
4518
+ "qwen/qwen3-coder": 16384,
4519
+ "meta-llama/llama-4-maverick": 32e3
4520
+ };
4521
+ var KNOWN_CONTEXT_WINDOWS = {
4522
+ "deepseek-v4-pro": 1e6,
4523
+ "deepseek-v4-flash": 1e6,
4524
+ "deepseek-chat": 1e6,
4525
+ "deepseek/deepseek-chat": 1e6,
4526
+ "deepseek/deepseek-v4-pro": 1e6,
4527
+ "deepseek/deepseek-v4-flash": 1e6
4528
+ };
4529
+ function resolveMaxOutput(model) {
4530
+ if (KNOWN_MAX_OUTPUT[model]) return KNOWN_MAX_OUTPUT[model];
4531
+ if (model.includes("/")) {
4532
+ const hit = _chunkYKIAELDZcjs.getOpenRouterModels.call(void 0, ).find((m) => m.id === model);
4533
+ if (hit && hit.maxOutputTokens > 0) return hit.maxOutputTokens;
4534
+ }
4535
+ return void 0;
4536
+ }
4537
+ function resolveContextWindow(model) {
4538
+ if (KNOWN_CONTEXT_WINDOWS[model]) return KNOWN_CONTEXT_WINDOWS[model];
4539
+ if (model.includes("/")) {
4540
+ const hit = _chunkYKIAELDZcjs.getOpenRouterModels.call(void 0, ).find((m) => m.id === model);
4541
+ if (hit && hit.contextLength > 0) return hit.contextLength;
4542
+ }
4543
+ return void 0;
4544
+ }
4545
+ function deriveModelPoolKey(providerKind, modelId, used = []) {
4546
+ const slash = modelId.lastIndexOf("/");
4547
+ const base = slash >= 0 ? modelId.slice(slash + 1) : modelId;
4548
+ const prefix = providerKind.toLowerCase();
4549
+ const candidate = base.toLowerCase().startsWith(`${prefix}-`) ? base : `${prefix}-${base}`;
4550
+ const set = new Set(used);
4551
+ if (!set.has(candidate)) return candidate;
4552
+ for (let i = 2; ; i++) {
4553
+ const k = `${candidate}-${i}`;
4554
+ if (!set.has(k)) return k;
4555
+ }
4556
+ }
4557
+ function buildModelPool(provider, apiKey) {
4558
+ const models = resolveProviderModels(provider);
4559
+ const used = [];
4560
+ return models.map((m) => {
4561
+ const key = deriveModelPoolKey(provider.id, m, used);
4562
+ used.push(key);
4563
+ return {
4564
+ key,
4565
+ label: modelDisplayName(m),
4566
+ provider: provider.provider,
4567
+ model: m,
4568
+ baseUrl: provider.baseUrl,
4569
+ apiKey,
4570
+ maxOutputTokens: resolveMaxOutput(m),
4571
+ maxContextTokens: resolveContextWindow(m)
4572
+ };
4573
+ });
4574
+ }
4575
+ function modelDisplayName(model) {
4576
+ const slash = model.lastIndexOf("/");
4577
+ const base = slash >= 0 ? model.slice(slash + 1) : model;
4578
+ const parts = base.split("-");
4579
+ if (parts[0] === "claude") {
4580
+ const variant = _nullishCoalesce(parts[1], () => ( ""));
4581
+ return `Claude ${variant.charAt(0).toUpperCase() + variant.slice(1)}`;
4582
+ }
4583
+ if (base.startsWith("gpt-")) return `GPT-${parts.slice(1).join("-")}`;
4584
+ if (base.startsWith("gemini-")) return `Gemini ${parts.slice(1).join("-")}`;
4585
+ return base.charAt(0).toUpperCase() + base.slice(1);
4586
+ }
4587
+ function appendOnboardingResult(opts) {
4588
+ const dir = _path.join.call(void 0, _os.homedir.call(void 0, ), ".code-shell");
4589
+ const file = _path.join.call(void 0, dir, "settings.json");
4590
+ _fs.mkdirSync.call(void 0, dir, { recursive: true });
4591
+ let existing = {};
4592
+ if (_fs.existsSync.call(void 0, file)) {
4593
+ try {
4594
+ existing = JSON.parse(_fs.readFileSync.call(void 0, file, "utf-8"));
4595
+ } catch (e20) {
4596
+ }
4597
+ }
4598
+ const existingProviders = Array.isArray(existing.providers) ? existing.providers : [];
4599
+ let providersOut = existingProviders;
4600
+ if (opts.addedProvider) {
4601
+ const has = existingProviders.some((p) => _optionalChain([p, 'optionalAccess', _109 => _109.key]) === opts.addedProvider.key);
4602
+ if (!has) providersOut = [...existingProviders, opts.addedProvider];
4603
+ }
4604
+ const existingModels = Array.isArray(existing.models) ? existing.models : [];
4605
+ const existingKeys = new Set(existingModels.map((m) => _optionalChain([m, 'optionalAccess', _110 => _110.key])));
4606
+ const modelsToAppend = opts.addedModels.filter((m) => !existingKeys.has(m.key));
4607
+ const updated = {
4608
+ ...existing,
4609
+ activeKey: opts.activeKey,
4610
+ model: {
4611
+ ...typeof existing.model === "object" && existing.model ? existing.model : {},
4612
+ provider: opts.activeMirror.provider,
4613
+ name: opts.activeMirror.model,
4614
+ apiKey: opts.activeMirror.apiKey,
4615
+ baseUrl: opts.activeMirror.baseUrl
4616
+ },
4617
+ providers: providersOut,
4618
+ models: [...existingModels, ...modelsToAppend]
4619
+ };
4620
+ const tmp = `${file}.${process.pid}.tmp`;
4621
+ _fs.writeFileSync.call(void 0, tmp, JSON.stringify(updated, null, 2) + "\n", "utf-8");
4622
+ try {
4623
+ _fs.renameSync.call(void 0, tmp, file);
4624
+ } catch (e21) {
4625
+ _fs.writeFileSync.call(void 0, file, JSON.stringify(updated, null, 2) + "\n", "utf-8");
4626
+ }
4627
+ }
4628
+ function saveArenaSettingsByKeys(keys) {
4629
+ const dir = _path.join.call(void 0, _os.homedir.call(void 0, ), ".code-shell");
4630
+ const file = _path.join.call(void 0, dir, "settings.json");
4631
+ let existing = {};
4632
+ if (_fs.existsSync.call(void 0, file)) {
4633
+ try {
4634
+ existing = JSON.parse(_fs.readFileSync.call(void 0, file, "utf-8"));
4635
+ } catch (e22) {
4636
+ }
4637
+ }
4638
+ const updated = {
4639
+ ...existing,
4640
+ arena: { participants: keys }
4641
+ };
4642
+ _fs.writeFileSync.call(void 0, file, JSON.stringify(updated, null, 2) + "\n", "utf-8");
4643
+ }
4644
+
4311
4645
  // src/arena/model-presets.ts
4312
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
4646
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
4313
4647
  var MODEL_PRESETS = {
4314
4648
  claude: { provider: "openai", model: "anthropic/claude-opus-4.6", maxOutputTokens: 32e3 },
4315
4649
  "claude-sonnet": { provider: "openai", model: "anthropic/claude-sonnet-4.6", maxOutputTokens: 16e3 },
@@ -4332,11 +4666,12 @@ function getMaxOutputTokens(model) {
4332
4666
  const byKey = MODEL_PRESETS[model];
4333
4667
  if (byKey) return byKey.maxOutputTokens;
4334
4668
  const byModel = Object.values(MODEL_PRESETS).find((p) => p.model === model);
4335
- return _nullishCoalesce(_optionalChain([byModel, 'optionalAccess', _109 => _109.maxOutputTokens]), () => ( 8192));
4669
+ if (byModel) return byModel.maxOutputTokens;
4670
+ return _nullishCoalesce(resolveMaxOutput(model), () => ( 8192));
4336
4671
  }
4337
4672
 
4338
4673
  // src/arena/render/terminal.ts
4339
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
4674
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
4340
4675
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
4341
4676
  function formatArenaResult(result) {
4342
4677
  const modeLabel = result.mode.charAt(0).toUpperCase() + result.mode.slice(1);
@@ -4467,7 +4802,7 @@ function formatRoadmapDetailsSection(details) {
4467
4802
  function getOrderedConsensusSections(result) {
4468
4803
  const VALID_KINDS = /* @__PURE__ */ new Set(["strength", "improvement", "risk", "question"]);
4469
4804
  const defaultOrder = ["risk", "improvement", "strength", "question"];
4470
- const emphasize = (_nullishCoalesce(_optionalChain([result, 'access', _110 => _110.plan, 'optionalAccess', _111 => _111.outputShape, 'optionalAccess', _112 => _112.emphasize]), () => ( []))).filter((k) => VALID_KINDS.has(k));
4805
+ const emphasize = (_nullishCoalesce(_optionalChain([result, 'access', _111 => _111.plan, 'optionalAccess', _112 => _112.outputShape, 'optionalAccess', _113 => _113.emphasize]), () => ( []))).filter((k) => VALID_KINDS.has(k));
4471
4806
  const orderedKinds = dedupeFindingKinds([...emphasize, ...defaultOrder]);
4472
4807
  return orderedKinds.map((kind) => {
4473
4808
  switch (kind) {
@@ -4574,7 +4909,7 @@ function renderProgress(event) {
4574
4909
  }
4575
4910
 
4576
4911
  // src/arena/render/session.ts
4577
- _chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
4912
+ _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
4578
4913
  function formatArenaResultForSession(result) {
4579
4914
  const lines = [];
4580
4915
  const modeLabel = result.mode.charAt(0).toUpperCase() + result.mode.slice(1);
@@ -4712,7 +5047,7 @@ function formatPhaseDetail(detail) {
4712
5047
  function getOrderedConsensusSections2(result) {
4713
5048
  const VALID_KINDS = /* @__PURE__ */ new Set(["strength", "improvement", "risk", "question"]);
4714
5049
  const defaultOrder = ["risk", "improvement", "strength", "question"];
4715
- const emphasize = (_nullishCoalesce(_optionalChain([result, 'access', _113 => _113.plan, 'optionalAccess', _114 => _114.outputShape, 'optionalAccess', _115 => _115.emphasize]), () => ( []))).filter((k) => VALID_KINDS.has(k));
5050
+ const emphasize = (_nullishCoalesce(_optionalChain([result, 'access', _114 => _114.plan, 'optionalAccess', _115 => _115.outputShape, 'optionalAccess', _116 => _116.emphasize]), () => ( []))).filter((k) => VALID_KINDS.has(k));
4716
5051
  const orderedKinds = dedupeFindingKinds2([...emphasize, ...defaultOrder]);
4717
5052
  const sections = orderedKinds.map((kind) => {
4718
5053
  switch (kind) {
@@ -4784,4 +5119,10 @@ function dedupeFindingKinds2(kinds) {
4784
5119
 
4785
5120
 
4786
5121
 
4787
- exports.registerProvider = registerProvider; exports.createLLMClient = createLLMClient; exports.isStrategyV2 = isStrategyV2; exports.ReviewStrategy = ReviewStrategy; exports.DiscussionStrategy = DiscussionStrategy; exports.PlanningStrategy = PlanningStrategy; exports.getLens = getLens; exports.resolveLenses = resolveLenses; exports.buildLensPrompt = buildLensPrompt; exports.LENS_NAMES = LENS_NAMES; exports.getStrategy = getStrategy; exports.getStrategyForPlan = getStrategyForPlan; exports.planArena = planArena; exports.collectEvidence = collectEvidence; exports.selectTools = selectTools; exports.hasTools = hasTools; exports.runParticipantResearch = runParticipantResearch; exports.runParticipantResearchWithDossiers = runParticipantResearchWithDossiers; exports.registerClaims = registerClaims; exports.selectClaimsForReview = selectClaimsForReview; exports.buildDigest = buildDigest; exports.formatDigest = formatDigest; exports.transitionClaim = transitionClaim; exports.resolveClaimStatus = resolveClaimStatus; exports.markUnderReview = markUnderReview; exports.applyReviewResult = applyReviewResult; exports.markUnresolved = markUnresolved; exports.isTerminal = isTerminal; exports.validTransitions = validTransitions; exports.runCrossReview = runCrossReview; exports.runVerificationReview = runVerificationReview; exports.runDebateRounds = runDebateRounds; exports.runAdjudication = runAdjudication; exports.buildConsensus = buildConsensus; exports.ArenaLedger = ArenaLedger; exports.Arena = Arena; exports.MODEL_PRESETS = MODEL_PRESETS; exports.getMaxOutputTokens = getMaxOutputTokens; exports.formatArenaResult = formatArenaResult; exports.printArenaResult = printArenaResult; exports.createProgressRenderer = createProgressRenderer; exports.renderProgress = renderProgress; exports.formatArenaResultForSession = formatArenaResultForSession;
5122
+
5123
+
5124
+
5125
+
5126
+
5127
+
5128
+ exports.registerProvider = registerProvider; exports.createLLMClient = createLLMClient; exports.isStrategyV2 = isStrategyV2; exports.ReviewStrategy = ReviewStrategy; exports.DiscussionStrategy = DiscussionStrategy; exports.PlanningStrategy = PlanningStrategy; exports.getLens = getLens; exports.resolveLenses = resolveLenses; exports.buildLensPrompt = buildLensPrompt; exports.LENS_NAMES = LENS_NAMES; exports.getStrategy = getStrategy; exports.getStrategyForPlan = getStrategyForPlan; exports.planArena = planArena; exports.collectEvidence = collectEvidence; exports.selectTools = selectTools; exports.hasTools = hasTools; exports.runParticipantResearch = runParticipantResearch; exports.runParticipantResearchWithDossiers = runParticipantResearchWithDossiers; exports.registerClaims = registerClaims; exports.selectClaimsForReview = selectClaimsForReview; exports.buildDigest = buildDigest; exports.formatDigest = formatDigest; exports.transitionClaim = transitionClaim; exports.resolveClaimStatus = resolveClaimStatus; exports.markUnderReview = markUnderReview; exports.applyReviewResult = applyReviewResult; exports.markUnresolved = markUnresolved; exports.isTerminal = isTerminal; exports.validTransitions = validTransitions; exports.runCrossReview = runCrossReview; exports.runVerificationReview = runVerificationReview; exports.runDebateRounds = runDebateRounds; exports.runAdjudication = runAdjudication; exports.buildConsensus = buildConsensus; exports.ArenaLedger = ArenaLedger; exports.Arena = Arena; exports.detectEnvKeys = detectEnvKeys; exports.detectProviderFromApiKey = detectProviderFromApiKey; exports.resolveApiKey = resolveApiKey; exports.buildModelPool = buildModelPool; exports.appendOnboardingResult = appendOnboardingResult; exports.saveArenaSettingsByKeys = saveArenaSettingsByKeys; exports.MODEL_PRESETS = MODEL_PRESETS; exports.getMaxOutputTokens = getMaxOutputTokens; exports.formatArenaResult = formatArenaResult; exports.printArenaResult = printArenaResult; exports.createProgressRenderer = createProgressRenderer; exports.renderProgress = renderProgress; exports.formatArenaResultForSession = formatArenaResultForSession;