@cjhyy/code-shell 0.1.5 → 0.1.7

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 (158) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/anthropic-UBSB5AQH.js +1 -0
  3. package/dist/arena/index.js +1 -104
  4. package/dist/arena-OW55ZCHT.js +3 -0
  5. package/dist/bwrap-PVZMLHZR.js +2 -0
  6. package/dist/chunk-2NS3JMNK.js +1 -0
  7. package/dist/chunk-3QP5BQ3L.js +1 -0
  8. package/dist/chunk-B7K2OWKC.js +2 -0
  9. package/dist/chunk-EWWK56K6.js +2 -0
  10. package/dist/chunk-FU7AHZNN.js +1 -0
  11. package/dist/chunk-HIJ2XXGX.js +1 -0
  12. package/dist/chunk-KCXSARAA.js +1 -0
  13. package/dist/chunk-NFH3UQ3E.js +2 -0
  14. package/dist/chunk-NMBYBGC7.js +250 -0
  15. package/dist/chunk-NVAZJ5XS.js +2 -0
  16. package/dist/chunk-O5HFCH2U.js +1 -0
  17. package/dist/chunk-P6JSTIFM.js +1 -0
  18. package/dist/chunk-PGANL6F2.js +3 -0
  19. package/dist/chunk-Q4O2HGWS.js +251 -0
  20. package/dist/chunk-QTWU7UNA.js +5 -0
  21. package/dist/chunk-RP26WO4R.js +1 -0
  22. package/dist/chunk-SNFAPSLA.js +1 -0
  23. package/dist/chunk-T222K6IV.js +18 -0
  24. package/dist/chunk-TKJA6W36.js +3 -0
  25. package/dist/chunk-UDPUTFQT.js +2 -0
  26. package/dist/chunk-W47Z7MGS.js +33 -0
  27. package/dist/chunk-WI6FSWGU.js +1 -0
  28. package/dist/chunk-WOP6MJKW.js +1 -0
  29. package/dist/chunk-XDOWC7EG.js +4 -0
  30. package/dist/chunk-Y2NS6HPO.js +641 -0
  31. package/dist/cli/main.js +303 -22037
  32. package/dist/cli/updater.d.ts +8 -0
  33. package/dist/client-base-6ZZJJYDY.js +1 -0
  34. package/dist/compaction-ECVQVOCT.js +1 -0
  35. package/dist/devtools-SGDUOOM4.js +1 -0
  36. package/dist/engine/engine.d.ts +15 -0
  37. package/dist/export-md-U72T7NW7.js +22 -0
  38. package/dist/file-history-7FQFEQOL.js +1 -0
  39. package/dist/index.d.ts +1 -1
  40. package/dist/index.js +1 -347
  41. package/dist/llm/token-counter.d.ts +17 -0
  42. package/dist/manager-C3TDN6MS.js +1 -0
  43. package/dist/mcp-manager-OP4XYV53.js +1 -0
  44. package/dist/memory-BNI4WEWL.js +1 -0
  45. package/dist/model-cache-HEDXI7UJ.js +1 -0
  46. package/dist/model-fetcher-BJ64META.js +1 -0
  47. package/dist/off-7SDVMMXW.js +1 -0
  48. package/dist/openai-KEWQ54TM.js +1 -0
  49. package/dist/openrouter-models-AM6M52D6.js +1 -0
  50. package/dist/openrouter-sync-5JNBL3Z6.js +1 -0
  51. package/dist/product/index.js +1 -21
  52. package/dist/run/index.js +1 -48
  53. package/dist/seatbelt-WBYROQT6.js +37 -0
  54. package/dist/session/session-manager.d.ts +2 -0
  55. package/dist/session-manager-AGWS5SMJ.js +1 -0
  56. package/dist/settings/schema.d.ts +72 -6
  57. package/dist/tool-summary-5UE62VU4.js +2 -0
  58. package/dist/tool-system/builtin/bash.d.ts +7 -1
  59. package/dist/tool-system/context.d.ts +7 -0
  60. package/dist/tool-system/investigation-guard.d.ts +9 -0
  61. package/dist/tool-system/sandbox/bwrap.d.ts +13 -0
  62. package/dist/tool-system/sandbox/index.d.ts +71 -0
  63. package/dist/tool-system/sandbox/off.d.ts +2 -0
  64. package/dist/tool-system/sandbox/seatbelt.d.ts +18 -0
  65. package/dist/types.d.ts +4 -0
  66. package/dist/ui/components/SessionPicker.d.ts +2 -0
  67. package/dist/ui/components/SpinnerWithVerb.d.ts +2 -2
  68. package/dist/ui/components/StatusLine.d.ts +2 -2
  69. package/dist/updater-OCNU2K2Z.js +1 -0
  70. package/package.json +8 -10
  71. package/skills-builtin/codeshell-help.md +135 -0
  72. package/dist/anthropic-IBTI4WL2.cjs +0 -10
  73. package/dist/anthropic-PRZZKHEZ.js +0 -10
  74. package/dist/arena/index.cjs +0 -104
  75. package/dist/arena-KBQOPLFV.cjs +0 -261
  76. package/dist/arena-O2L4TN6A.js +0 -261
  77. package/dist/chunk-2EP3CLEN.js +0 -44
  78. package/dist/chunk-2YW4FPFG.cjs +0 -101
  79. package/dist/chunk-3OA5G4TM.js +0 -47
  80. package/dist/chunk-52LGZKT3.cjs +0 -47
  81. package/dist/chunk-55XGPMAP.cjs +0 -146
  82. package/dist/chunk-5ECBT4YA.js +0 -450
  83. package/dist/chunk-6QVAYW7C.cjs +0 -438
  84. package/dist/chunk-6S4BJ65N.js +0 -113
  85. package/dist/chunk-76HYEPDM.js +0 -307
  86. package/dist/chunk-76W334S4.js +0 -54
  87. package/dist/chunk-7EG3V4JY.cjs +0 -113
  88. package/dist/chunk-7JVTYEEC.js +0 -340
  89. package/dist/chunk-7K6SDRRF.js +0 -9047
  90. package/dist/chunk-7Y6S3OCX.js +0 -438
  91. package/dist/chunk-A5LCRPDP.cjs +0 -54
  92. package/dist/chunk-BSW22MPA.js +0 -146
  93. package/dist/chunk-BUU5PZK2.cjs +0 -9048
  94. package/dist/chunk-BWTOS5BH.cjs +0 -5128
  95. package/dist/chunk-BXCY2FSE.js +0 -203
  96. package/dist/chunk-C5YQBIRK.js +0 -5128
  97. package/dist/chunk-HEKQCI7B.cjs +0 -224
  98. package/dist/chunk-HS2MFNUC.cjs +0 -44
  99. package/dist/chunk-IK4EWJBP.cjs +0 -203
  100. package/dist/chunk-JMR33QVF.cjs +0 -169
  101. package/dist/chunk-KOVYSDHZ.cjs +0 -340
  102. package/dist/chunk-KS3RYAYL.cjs +0 -45
  103. package/dist/chunk-MD32R22I.js +0 -50
  104. package/dist/chunk-MY5XHADU.cjs +0 -216
  105. package/dist/chunk-NUNC3VFB.cjs +0 -307
  106. package/dist/chunk-QRM7IF2S.cjs +0 -4711
  107. package/dist/chunk-R47ROHGL.cjs +0 -298
  108. package/dist/chunk-RMYKO74M.js +0 -1252
  109. package/dist/chunk-SFXHZSRF.js +0 -101
  110. package/dist/chunk-SIHHIQLO.js +0 -224
  111. package/dist/chunk-SNT563K3.cjs +0 -107
  112. package/dist/chunk-T6VYG46N.js +0 -105
  113. package/dist/chunk-TUY2T5KP.cjs +0 -105
  114. package/dist/chunk-VIAGTYYW.js +0 -169
  115. package/dist/chunk-VYL4EFRC.cjs +0 -1252
  116. package/dist/chunk-W22P377T.js +0 -299
  117. package/dist/chunk-WASS5YWB.js +0 -215
  118. package/dist/chunk-XDIQWQJ4.js +0 -4711
  119. package/dist/chunk-YIQBXAYU.cjs +0 -264
  120. package/dist/chunk-YJ77GQK5.js +0 -107
  121. package/dist/chunk-YUI524OE.cjs +0 -450
  122. package/dist/chunk-ZBPSQCPU.js +0 -264
  123. package/dist/cli/main.cjs +0 -22133
  124. package/dist/client-base-HTF236ZD.cjs +0 -9
  125. package/dist/client-base-QKRKCOWB.js +0 -9
  126. package/dist/compaction-6VU2T643.js +0 -33
  127. package/dist/compaction-OKUNTCA7.cjs +0 -33
  128. package/dist/devtools-T2NIZBJK.cjs +0 -6
  129. package/dist/devtools-YXWHOVKR.js +0 -6
  130. package/dist/export-md-RXDW6F5W.cjs +0 -135
  131. package/dist/export-md-XXKZANW5.js +0 -135
  132. package/dist/file-history-KYPE3ECT.cjs +0 -7
  133. package/dist/file-history-LF4F7X26.js +0 -7
  134. package/dist/index.cjs +0 -347
  135. package/dist/manager-C2IUXKRC.js +0 -7
  136. package/dist/manager-YYKWYTRM.cjs +0 -7
  137. package/dist/mcp-manager-QMKWPBZ4.js +0 -8
  138. package/dist/mcp-manager-Z3OKI74O.cjs +0 -8
  139. package/dist/memory-5LWZ6FI2.cjs +0 -9
  140. package/dist/memory-VIJLBAMQ.js +0 -9
  141. package/dist/model-cache-5KIYL5SL.js +0 -13
  142. package/dist/model-cache-OED3IM4R.cjs +0 -13
  143. package/dist/model-fetcher-HKGICACL.js +0 -8
  144. package/dist/model-fetcher-UR6WJOQP.cjs +0 -8
  145. package/dist/openai-JR2WEKOF.js +0 -10
  146. package/dist/openai-YBTOET4O.cjs +0 -10
  147. package/dist/openrouter-models-OU4GRZQY.cjs +0 -15
  148. package/dist/openrouter-models-TGKDKY52.js +0 -15
  149. package/dist/openrouter-sync-BBHUM3R6.cjs +0 -11
  150. package/dist/openrouter-sync-UXUSJCIR.js +0 -11
  151. package/dist/product/index.cjs +0 -21
  152. package/dist/run/index.cjs +0 -48
  153. package/dist/session-manager-Q22BBMD3.js +0 -8
  154. package/dist/session-manager-XODQVL3C.cjs +0 -8
  155. package/dist/tool-summary-63DPIS7G.cjs +0 -31
  156. package/dist/tool-summary-NP5CDBKG.js +0 -31
  157. package/dist/updater-QW473OF4.cjs +0 -17
  158. package/dist/updater-VFUAHCVY.js +0 -17
@@ -1,104 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
-
5
-
6
-
7
-
8
- var _chunkVYL4EFRCcjs = require('../chunk-VYL4EFRC.cjs');
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
- var _chunkBWTOS5BHcjs = require('../chunk-BWTOS5BH.cjs');
52
- require('../chunk-QRM7IF2S.cjs');
53
- require('../chunk-2YW4FPFG.cjs');
54
- require('../chunk-IK4EWJBP.cjs');
55
- require('../chunk-KS3RYAYL.cjs');
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
- exports.Arena = _chunkBWTOS5BHcjs.Arena; exports.ArenaLedger = _chunkBWTOS5BHcjs.ArenaLedger; exports.DiscussionStrategy = _chunkBWTOS5BHcjs.DiscussionStrategy; exports.IterativeArena = _chunkVYL4EFRCcjs.IterativeArena; exports.LENS_NAMES = _chunkBWTOS5BHcjs.LENS_NAMES; exports.MODEL_PRESETS = _chunkBWTOS5BHcjs.MODEL_PRESETS; exports.PlanningStrategy = _chunkBWTOS5BHcjs.PlanningStrategy; exports.ReviewStrategy = _chunkBWTOS5BHcjs.ReviewStrategy; exports.applyReviewResult = _chunkBWTOS5BHcjs.applyReviewResult; exports.buildConsensus = _chunkBWTOS5BHcjs.buildConsensus; exports.buildDigest = _chunkBWTOS5BHcjs.buildDigest; exports.buildLensPrompt = _chunkBWTOS5BHcjs.buildLensPrompt; exports.collectEvidence = _chunkBWTOS5BHcjs.collectEvidence; exports.createProgressRenderer = _chunkBWTOS5BHcjs.createProgressRenderer; exports.defaultIterateConvergence = _chunkVYL4EFRCcjs.defaultConvergence; exports.formatArenaResult = _chunkBWTOS5BHcjs.formatArenaResult; exports.formatArenaResultForSession = _chunkBWTOS5BHcjs.formatArenaResultForSession; exports.formatDigest = _chunkBWTOS5BHcjs.formatDigest; exports.getIterateFormat = _chunkVYL4EFRCcjs.getFormat; exports.getLens = _chunkBWTOS5BHcjs.getLens; exports.getMaxOutputTokens = _chunkBWTOS5BHcjs.getMaxOutputTokens; exports.getStrategy = _chunkBWTOS5BHcjs.getStrategy; exports.getStrategyForPlan = _chunkBWTOS5BHcjs.getStrategyForPlan; exports.hasTools = _chunkBWTOS5BHcjs.hasTools; exports.isStrategyV2 = _chunkBWTOS5BHcjs.isStrategyV2; exports.isTerminal = _chunkBWTOS5BHcjs.isTerminal; exports.iterateCodeFormat = _chunkVYL4EFRCcjs.codeFormat; exports.iterateDiffRatio = _chunkVYL4EFRCcjs.diffRatio; exports.iterateDocumentFormat = _chunkVYL4EFRCcjs.documentFormat; exports.markUnderReview = _chunkBWTOS5BHcjs.markUnderReview; exports.markUnresolved = _chunkBWTOS5BHcjs.markUnresolved; exports.planArena = _chunkBWTOS5BHcjs.planArena; exports.printArenaResult = _chunkBWTOS5BHcjs.printArenaResult; exports.registerClaims = _chunkBWTOS5BHcjs.registerClaims; exports.renderProgress = _chunkBWTOS5BHcjs.renderProgress; exports.resolveClaimStatus = _chunkBWTOS5BHcjs.resolveClaimStatus; exports.resolveLenses = _chunkBWTOS5BHcjs.resolveLenses; exports.runAdjudication = _chunkBWTOS5BHcjs.runAdjudication; exports.runCrossReview = _chunkBWTOS5BHcjs.runCrossReview; exports.runDebateRounds = _chunkBWTOS5BHcjs.runDebateRounds; exports.runParticipantResearch = _chunkBWTOS5BHcjs.runParticipantResearch; exports.runParticipantResearchWithDossiers = _chunkBWTOS5BHcjs.runParticipantResearchWithDossiers; exports.runVerificationReview = _chunkBWTOS5BHcjs.runVerificationReview; exports.selectClaimsForReview = _chunkBWTOS5BHcjs.selectClaimsForReview; exports.selectTools = _chunkBWTOS5BHcjs.selectTools; exports.transitionClaim = _chunkBWTOS5BHcjs.transitionClaim; exports.validTransitions = _chunkBWTOS5BHcjs.validTransitions;
@@ -1,261 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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
-
3
- var _chunk55XGPMAPcjs = require('./chunk-55XGPMAP.cjs');
4
- require('./chunk-52LGZKT3.cjs');
5
-
6
-
7
- var _chunkYUI524OEcjs = require('./chunk-YUI524OE.cjs');
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
- var _chunkBWTOS5BHcjs = require('./chunk-BWTOS5BH.cjs');
17
- require('./chunk-QRM7IF2S.cjs');
18
- require('./chunk-2YW4FPFG.cjs');
19
- require('./chunk-IK4EWJBP.cjs');
20
-
21
-
22
- var _chunkKS3RYAYLcjs = require('./chunk-KS3RYAYL.cjs');
23
-
24
- // src/cli/commands/arena.ts
25
- _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
26
- var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
27
- async function runArenaReview(arg, engineConfig, opts) {
28
- const { models: modelsFlag, mode: explicitMode, base, head, topic } = parseFlags(arg);
29
- const out = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _ => _.output]), () => ( ((text) => console.log(text))));
30
- if (!topic) {
31
- out(formatUsage());
32
- return void 0;
33
- }
34
- const participants = resolveParticipants(engineConfig, modelsFlag);
35
- if (participants.length < 2) {
36
- out(formatModelHelp(engineConfig));
37
- return void 0;
38
- }
39
- const modeLabel = explicitMode ? explicitMode.charAt(0).toUpperCase() + explicitMode.slice(1) : "Auto";
40
- out(_chalk2.default.bold(`\u2550\u2550\u2550 Arena ${modeLabel} \u2550\u2550\u2550`));
41
- out(_chalk2.default.dim(`Topic: ${topic}`));
42
- out(_chalk2.default.dim(`Models: ${participants.map((p) => p.name).join(" vs ")}`));
43
- const progressRenderer = _optionalChain([opts, 'optionalAccess', _2 => _2.output]) ? _chunkBWTOS5BHcjs.createProgressRenderer.call(void 0, opts.output) : _chunkBWTOS5BHcjs.renderProgress;
44
- const arena = new (0, _chunkBWTOS5BHcjs.Arena)({
45
- participants,
46
- mode: explicitMode,
47
- enableContextTools: true,
48
- onProgress: progressRenderer
49
- });
50
- try {
51
- const result = await arena.run(topic, {
52
- mode: explicitMode,
53
- base,
54
- head
55
- });
56
- const resultSink = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _3 => _3.outputMessage]), () => ( _optionalChain([opts, 'optionalAccess', _4 => _4.output])));
57
- if (resultSink) {
58
- resultSink(_chunkBWTOS5BHcjs.formatArenaResultForSession.call(void 0, result));
59
- } else {
60
- _chunkBWTOS5BHcjs.printArenaResult.call(void 0, result);
61
- }
62
- return result;
63
- } catch (err) {
64
- out(_chalk2.default.red(`Arena failed: ${err.message}`));
65
- return void 0;
66
- }
67
- }
68
- function buildModelPool(engineConfig) {
69
- const pool = new (0, _chunk55XGPMAPcjs.ModelPool)();
70
- try {
71
- const settings = new (0, _chunkYUI524OEcjs.SettingsManager)(process.cwd()).get();
72
- if (_optionalChain([settings, 'access', _5 => _5.models, 'optionalAccess', _6 => _6.length])) {
73
- for (const m of settings.models) {
74
- pool.register({
75
- key: m.key,
76
- label: m.label,
77
- provider: _nullishCoalesce(m.provider, () => ( "")),
78
- model: m.model,
79
- baseUrl: _nullishCoalesce(m.baseUrl, () => ( engineConfig.llm.baseUrl)),
80
- apiKey: _nullishCoalesce(m.apiKey, () => ( engineConfig.llm.apiKey)),
81
- maxOutputTokens: m.maxOutputTokens
82
- });
83
- }
84
- }
85
- } catch (e) {
86
- }
87
- return pool;
88
- }
89
- function resolveOneParticipant(entry, pool, engineConfig) {
90
- if (typeof entry === "string") {
91
- const m = pool.get(entry);
92
- if (!m) return void 0;
93
- return {
94
- name: _nullishCoalesce(m.label, () => ( modelDisplayName(m.model))),
95
- llm: {
96
- provider: m.provider,
97
- model: m.model,
98
- apiKey: _nullishCoalesce(m.apiKey, () => ( engineConfig.llm.apiKey)),
99
- baseUrl: _nullishCoalesce(m.baseUrl, () => ( engineConfig.llm.baseUrl)),
100
- temperature: 0.3,
101
- maxTokens: _nullishCoalesce(m.maxOutputTokens, () => ( _chunkBWTOS5BHcjs.getMaxOutputTokens.call(void 0, m.model))),
102
- enableStreaming: false
103
- }
104
- };
105
- }
106
- return {
107
- name: entry.name,
108
- llm: {
109
- provider: _nullishCoalesce(entry.provider, () => ( engineConfig.llm.provider)),
110
- model: entry.model,
111
- apiKey: _nullishCoalesce(entry.apiKey, () => ( engineConfig.llm.apiKey)),
112
- baseUrl: _nullishCoalesce(entry.baseUrl, () => ( engineConfig.llm.baseUrl)),
113
- temperature: 0.3,
114
- maxTokens: _chunkBWTOS5BHcjs.getMaxOutputTokens.call(void 0, entry.model),
115
- enableStreaming: false
116
- }
117
- };
118
- }
119
- function resolveParticipants(engineConfig, modelsFlag) {
120
- const pool = buildModelPool(engineConfig);
121
- if (modelsFlag) {
122
- const names = modelsFlag.split(",").map((n) => n.trim().toLowerCase());
123
- return names.map((name) => {
124
- const fromPool = pool.get(name);
125
- if (fromPool) {
126
- return {
127
- name: _nullishCoalesce(fromPool.label, () => ( modelDisplayName(fromPool.model))),
128
- llm: {
129
- provider: fromPool.provider,
130
- model: fromPool.model,
131
- apiKey: _nullishCoalesce(fromPool.apiKey, () => ( engineConfig.llm.apiKey)),
132
- baseUrl: _nullishCoalesce(fromPool.baseUrl, () => ( engineConfig.llm.baseUrl)),
133
- temperature: 0.3,
134
- maxTokens: _nullishCoalesce(fromPool.maxOutputTokens, () => ( _chunkBWTOS5BHcjs.getMaxOutputTokens.call(void 0, fromPool.model))),
135
- enableStreaming: false
136
- }
137
- };
138
- }
139
- const preset = _chunkBWTOS5BHcjs.MODEL_PRESETS[name];
140
- if (preset) {
141
- return {
142
- name: modelDisplayName(preset.model),
143
- llm: {
144
- provider: preset.provider,
145
- model: preset.model,
146
- apiKey: engineConfig.llm.apiKey,
147
- baseUrl: engineConfig.llm.baseUrl,
148
- temperature: 0.3,
149
- maxTokens: preset.maxOutputTokens,
150
- enableStreaming: false
151
- }
152
- };
153
- }
154
- return {
155
- name: modelDisplayName(name),
156
- llm: { ...engineConfig.llm, model: name, enableStreaming: false }
157
- };
158
- });
159
- }
160
- const settings = new (0, _chunkYUI524OEcjs.SettingsManager)(process.cwd()).get();
161
- if (_optionalChain([settings, 'access', _7 => _7.arena, 'optionalAccess', _8 => _8.participants, 'optionalAccess', _9 => _9.length]) >= 2) {
162
- const resolved = settings.arena.participants.map((p) => resolveOneParticipant(p, pool, engineConfig)).filter((p) => p !== void 0);
163
- if (resolved.length >= 2) return resolved;
164
- }
165
- const participants = [
166
- {
167
- name: modelDisplayName(engineConfig.llm.model),
168
- llm: {
169
- ...engineConfig.llm,
170
- maxTokens: _chunkBWTOS5BHcjs.getMaxOutputTokens.call(void 0, engineConfig.llm.model),
171
- enableStreaming: false
172
- }
173
- }
174
- ];
175
- if (_optionalChain([engineConfig, 'access', _10 => _10.llm, 'access', _11 => _11.baseUrl, 'optionalAccess', _12 => _12.includes, 'call', _13 => _13("openrouter")])) {
176
- const current = engineConfig.llm.model;
177
- const opponent = current.includes("claude") ? "openai/gpt-5.4" : "anthropic/claude-opus-4.6";
178
- participants.push({
179
- name: modelDisplayName(opponent),
180
- llm: {
181
- ...engineConfig.llm,
182
- model: opponent,
183
- maxTokens: _chunkBWTOS5BHcjs.getMaxOutputTokens.call(void 0, opponent),
184
- enableStreaming: false
185
- }
186
- });
187
- }
188
- return participants;
189
- }
190
- var VALID_MODES = ["review", "discussion", "planning"];
191
- function parseFlags(arg) {
192
- let models;
193
- let mode;
194
- let base;
195
- let head;
196
- const remaining = [];
197
- const tokens = arg.split(/\s+/);
198
- for (let i = 0; i < tokens.length; i++) {
199
- if (tokens[i] === "--models" && tokens[i + 1]) {
200
- models = tokens[++i];
201
- } else if (tokens[i] === "--mode" && tokens[i + 1]) {
202
- const val = tokens[++i].toLowerCase();
203
- if (VALID_MODES.includes(val)) {
204
- mode = val;
205
- } else {
206
- console.log(_chalk2.default.yellow(` Unknown mode "${val}", valid: ${VALID_MODES.join(", ")}`));
207
- }
208
- } else if (tokens[i] === "--base" && tokens[i + 1]) {
209
- base = tokens[++i];
210
- } else if (tokens[i] === "--head" && tokens[i + 1]) {
211
- head = tokens[++i];
212
- } else {
213
- remaining.push(tokens[i]);
214
- }
215
- }
216
- return { models, mode, base, head, topic: remaining.join(" ").trim() };
217
- }
218
- function formatUsage() {
219
- return [
220
- _chalk2.default.bold("Arena \u2014 Multi-model collaborative analysis"),
221
- "",
222
- _chalk2.default.dim("Usage:"),
223
- " /arena review the authentication module",
224
- " /arena --models claude,gpt4o is the error handling correct?",
225
- " /arena --mode planning design the new auth system",
226
- " /arena --mode discussion should we use REST or GraphQL",
227
- " /arena --base main review changes since main",
228
- ' code-shell arena "review my latest changes"',
229
- "",
230
- `${_chalk2.default.dim("Modes:")} review (default), discussion, planning`,
231
- _chalk2.default.dim("Mode is auto-detected from the topic if --mode is not specified."),
232
- "",
233
- _chalk2.default.dim("Flags:"),
234
- " --base <ref> Base branch/ref for comparison",
235
- " --head <ref> Head branch/ref (default: HEAD)",
236
- "",
237
- `${_chalk2.default.dim("Available model presets:")} ${Object.keys(_chunkBWTOS5BHcjs.MODEL_PRESETS).join(", ")}`
238
- ].join("\n");
239
- }
240
- function formatModelHelp(engineConfig) {
241
- return [
242
- _chalk2.default.red("Arena needs at least 2 models."),
243
- "",
244
- "Use --models to specify:",
245
- " /arena --models claude,gpt4o review the code",
246
- "",
247
- "Or configure in ~/.code-shell/settings.json:",
248
- ' "arena": { "participants": [',
249
- ' { "name": "Claude", "model": "anthropic/claude-sonnet-4-20250514" },',
250
- ' { "name": "GPT-4o", "model": "openai/gpt-4o" }',
251
- " ]}"
252
- ].join("\n");
253
- }
254
- function modelDisplayName(model) {
255
- const last = _nullishCoalesce(model.split("/").pop(), () => ( model));
256
- return last.replace(/-\d.*$/, "").split("-").map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
257
- }
258
-
259
-
260
-
261
- exports.formatArenaResultForSession = _chunkBWTOS5BHcjs.formatArenaResultForSession; exports.runArenaReview = runArenaReview;
@@ -1,261 +0,0 @@
1
- import {
2
- ModelPool
3
- } from "./chunk-BSW22MPA.js";
4
- import "./chunk-3OA5G4TM.js";
5
- import {
6
- SettingsManager
7
- } from "./chunk-5ECBT4YA.js";
8
- import {
9
- Arena,
10
- MODEL_PRESETS,
11
- createProgressRenderer,
12
- formatArenaResultForSession,
13
- getMaxOutputTokens,
14
- printArenaResult,
15
- renderProgress
16
- } from "./chunk-C5YQBIRK.js";
17
- import "./chunk-XDIQWQJ4.js";
18
- import "./chunk-SFXHZSRF.js";
19
- import "./chunk-BXCY2FSE.js";
20
- import {
21
- init_esm_shims
22
- } from "./chunk-MD32R22I.js";
23
-
24
- // src/cli/commands/arena.ts
25
- init_esm_shims();
26
- import chalk from "chalk";
27
- async function runArenaReview(arg, engineConfig, opts) {
28
- const { models: modelsFlag, mode: explicitMode, base, head, topic } = parseFlags(arg);
29
- const out = opts?.output ?? ((text) => console.log(text));
30
- if (!topic) {
31
- out(formatUsage());
32
- return void 0;
33
- }
34
- const participants = resolveParticipants(engineConfig, modelsFlag);
35
- if (participants.length < 2) {
36
- out(formatModelHelp(engineConfig));
37
- return void 0;
38
- }
39
- const modeLabel = explicitMode ? explicitMode.charAt(0).toUpperCase() + explicitMode.slice(1) : "Auto";
40
- out(chalk.bold(`\u2550\u2550\u2550 Arena ${modeLabel} \u2550\u2550\u2550`));
41
- out(chalk.dim(`Topic: ${topic}`));
42
- out(chalk.dim(`Models: ${participants.map((p) => p.name).join(" vs ")}`));
43
- const progressRenderer = opts?.output ? createProgressRenderer(opts.output) : renderProgress;
44
- const arena = new Arena({
45
- participants,
46
- mode: explicitMode,
47
- enableContextTools: true,
48
- onProgress: progressRenderer
49
- });
50
- try {
51
- const result = await arena.run(topic, {
52
- mode: explicitMode,
53
- base,
54
- head
55
- });
56
- const resultSink = opts?.outputMessage ?? opts?.output;
57
- if (resultSink) {
58
- resultSink(formatArenaResultForSession(result));
59
- } else {
60
- printArenaResult(result);
61
- }
62
- return result;
63
- } catch (err) {
64
- out(chalk.red(`Arena failed: ${err.message}`));
65
- return void 0;
66
- }
67
- }
68
- function buildModelPool(engineConfig) {
69
- const pool = new ModelPool();
70
- try {
71
- const settings = new SettingsManager(process.cwd()).get();
72
- if (settings.models?.length) {
73
- for (const m of settings.models) {
74
- pool.register({
75
- key: m.key,
76
- label: m.label,
77
- provider: m.provider ?? "",
78
- model: m.model,
79
- baseUrl: m.baseUrl ?? engineConfig.llm.baseUrl,
80
- apiKey: m.apiKey ?? engineConfig.llm.apiKey,
81
- maxOutputTokens: m.maxOutputTokens
82
- });
83
- }
84
- }
85
- } catch {
86
- }
87
- return pool;
88
- }
89
- function resolveOneParticipant(entry, pool, engineConfig) {
90
- if (typeof entry === "string") {
91
- const m = pool.get(entry);
92
- if (!m) return void 0;
93
- return {
94
- name: m.label ?? modelDisplayName(m.model),
95
- llm: {
96
- provider: m.provider,
97
- model: m.model,
98
- apiKey: m.apiKey ?? engineConfig.llm.apiKey,
99
- baseUrl: m.baseUrl ?? engineConfig.llm.baseUrl,
100
- temperature: 0.3,
101
- maxTokens: m.maxOutputTokens ?? getMaxOutputTokens(m.model),
102
- enableStreaming: false
103
- }
104
- };
105
- }
106
- return {
107
- name: entry.name,
108
- llm: {
109
- provider: entry.provider ?? engineConfig.llm.provider,
110
- model: entry.model,
111
- apiKey: entry.apiKey ?? engineConfig.llm.apiKey,
112
- baseUrl: entry.baseUrl ?? engineConfig.llm.baseUrl,
113
- temperature: 0.3,
114
- maxTokens: getMaxOutputTokens(entry.model),
115
- enableStreaming: false
116
- }
117
- };
118
- }
119
- function resolveParticipants(engineConfig, modelsFlag) {
120
- const pool = buildModelPool(engineConfig);
121
- if (modelsFlag) {
122
- const names = modelsFlag.split(",").map((n) => n.trim().toLowerCase());
123
- return names.map((name) => {
124
- const fromPool = pool.get(name);
125
- if (fromPool) {
126
- return {
127
- name: fromPool.label ?? modelDisplayName(fromPool.model),
128
- llm: {
129
- provider: fromPool.provider,
130
- model: fromPool.model,
131
- apiKey: fromPool.apiKey ?? engineConfig.llm.apiKey,
132
- baseUrl: fromPool.baseUrl ?? engineConfig.llm.baseUrl,
133
- temperature: 0.3,
134
- maxTokens: fromPool.maxOutputTokens ?? getMaxOutputTokens(fromPool.model),
135
- enableStreaming: false
136
- }
137
- };
138
- }
139
- const preset = MODEL_PRESETS[name];
140
- if (preset) {
141
- return {
142
- name: modelDisplayName(preset.model),
143
- llm: {
144
- provider: preset.provider,
145
- model: preset.model,
146
- apiKey: engineConfig.llm.apiKey,
147
- baseUrl: engineConfig.llm.baseUrl,
148
- temperature: 0.3,
149
- maxTokens: preset.maxOutputTokens,
150
- enableStreaming: false
151
- }
152
- };
153
- }
154
- return {
155
- name: modelDisplayName(name),
156
- llm: { ...engineConfig.llm, model: name, enableStreaming: false }
157
- };
158
- });
159
- }
160
- const settings = new SettingsManager(process.cwd()).get();
161
- if (settings.arena?.participants?.length >= 2) {
162
- const resolved = settings.arena.participants.map((p) => resolveOneParticipant(p, pool, engineConfig)).filter((p) => p !== void 0);
163
- if (resolved.length >= 2) return resolved;
164
- }
165
- const participants = [
166
- {
167
- name: modelDisplayName(engineConfig.llm.model),
168
- llm: {
169
- ...engineConfig.llm,
170
- maxTokens: getMaxOutputTokens(engineConfig.llm.model),
171
- enableStreaming: false
172
- }
173
- }
174
- ];
175
- if (engineConfig.llm.baseUrl?.includes("openrouter")) {
176
- const current = engineConfig.llm.model;
177
- const opponent = current.includes("claude") ? "openai/gpt-5.4" : "anthropic/claude-opus-4.6";
178
- participants.push({
179
- name: modelDisplayName(opponent),
180
- llm: {
181
- ...engineConfig.llm,
182
- model: opponent,
183
- maxTokens: getMaxOutputTokens(opponent),
184
- enableStreaming: false
185
- }
186
- });
187
- }
188
- return participants;
189
- }
190
- var VALID_MODES = ["review", "discussion", "planning"];
191
- function parseFlags(arg) {
192
- let models;
193
- let mode;
194
- let base;
195
- let head;
196
- const remaining = [];
197
- const tokens = arg.split(/\s+/);
198
- for (let i = 0; i < tokens.length; i++) {
199
- if (tokens[i] === "--models" && tokens[i + 1]) {
200
- models = tokens[++i];
201
- } else if (tokens[i] === "--mode" && tokens[i + 1]) {
202
- const val = tokens[++i].toLowerCase();
203
- if (VALID_MODES.includes(val)) {
204
- mode = val;
205
- } else {
206
- console.log(chalk.yellow(` Unknown mode "${val}", valid: ${VALID_MODES.join(", ")}`));
207
- }
208
- } else if (tokens[i] === "--base" && tokens[i + 1]) {
209
- base = tokens[++i];
210
- } else if (tokens[i] === "--head" && tokens[i + 1]) {
211
- head = tokens[++i];
212
- } else {
213
- remaining.push(tokens[i]);
214
- }
215
- }
216
- return { models, mode, base, head, topic: remaining.join(" ").trim() };
217
- }
218
- function formatUsage() {
219
- return [
220
- chalk.bold("Arena \u2014 Multi-model collaborative analysis"),
221
- "",
222
- chalk.dim("Usage:"),
223
- " /arena review the authentication module",
224
- " /arena --models claude,gpt4o is the error handling correct?",
225
- " /arena --mode planning design the new auth system",
226
- " /arena --mode discussion should we use REST or GraphQL",
227
- " /arena --base main review changes since main",
228
- ' code-shell arena "review my latest changes"',
229
- "",
230
- `${chalk.dim("Modes:")} review (default), discussion, planning`,
231
- chalk.dim("Mode is auto-detected from the topic if --mode is not specified."),
232
- "",
233
- chalk.dim("Flags:"),
234
- " --base <ref> Base branch/ref for comparison",
235
- " --head <ref> Head branch/ref (default: HEAD)",
236
- "",
237
- `${chalk.dim("Available model presets:")} ${Object.keys(MODEL_PRESETS).join(", ")}`
238
- ].join("\n");
239
- }
240
- function formatModelHelp(engineConfig) {
241
- return [
242
- chalk.red("Arena needs at least 2 models."),
243
- "",
244
- "Use --models to specify:",
245
- " /arena --models claude,gpt4o review the code",
246
- "",
247
- "Or configure in ~/.code-shell/settings.json:",
248
- ' "arena": { "participants": [',
249
- ' { "name": "Claude", "model": "anthropic/claude-sonnet-4-20250514" },',
250
- ' { "name": "GPT-4o", "model": "openai/gpt-4o" }',
251
- " ]}"
252
- ].join("\n");
253
- }
254
- function modelDisplayName(model) {
255
- const last = model.split("/").pop() ?? model;
256
- return last.replace(/-\d.*$/, "").split("-").map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
257
- }
258
- export {
259
- formatArenaResultForSession,
260
- runArenaReview
261
- };
@@ -1,44 +0,0 @@
1
- import {
2
- FileRunStore,
3
- RunManager
4
- } from "./chunk-7K6SDRRF.js";
5
- import {
6
- init_esm_shims
7
- } from "./chunk-MD32R22I.js";
8
-
9
- // src/run/index.ts
10
- init_esm_shims();
11
-
12
- // src/run/factory.ts
13
- init_esm_shims();
14
- import { join } from "path";
15
- import { homedir } from "os";
16
- function createRunManager(options) {
17
- const runsDir = options.runsDir ?? join(homedir(), ".code-shell", "runs");
18
- const store = new FileRunStore(runsDir);
19
- return new RunManager({
20
- store,
21
- executor: {
22
- llm: options.llm,
23
- maxTurns: options.maxTurns ?? 30,
24
- maxContextTokens: options.maxContextTokens ?? 2e5,
25
- permissionMode: options.permissionMode ?? "acceptEdits",
26
- sessionStorageDir: options.sessionStorageDir,
27
- mcpServers: options.mcpServers,
28
- enabledBuiltinTools: options.enabledBuiltinTools,
29
- disabledBuiltinTools: options.disabledBuiltinTools,
30
- customSystemPrompt: options.customSystemPrompt,
31
- appendSystemPrompt: options.appendSystemPrompt,
32
- hooks: options.hooks
33
- },
34
- concurrency: options.concurrency ?? 1,
35
- runsDir,
36
- evaluator: options.evaluator,
37
- defaultTags: options.defaultTags,
38
- defaultMetadata: options.defaultMetadata
39
- });
40
- }
41
-
42
- export {
43
- createRunManager
44
- };