@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,264 +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; } var _class;
2
-
3
- var _chunk7EG3V4JYcjs = require('./chunk-7EG3V4JY.cjs');
4
-
5
-
6
-
7
-
8
- var _chunk2YW4FPFGcjs = require('./chunk-2YW4FPFG.cjs');
9
-
10
-
11
- var _chunkIK4EWJBPcjs = require('./chunk-IK4EWJBP.cjs');
12
-
13
-
14
- var _chunkKS3RYAYLcjs = require('./chunk-KS3RYAYL.cjs');
15
-
16
- // src/llm/providers/anthropic.ts
17
- _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
18
- var _sdk = require('@anthropic-ai/sdk'); var _sdk2 = _interopRequireDefault(_sdk);
19
- var AnthropicClient = (_class = class extends _chunk7EG3V4JYcjs.LLMClientBase {
20
- __init() {this._client = null}
21
- constructor(config) {
22
- super(config);_class.prototype.__init.call(this);;
23
- }
24
- initClient() {
25
- }
26
- get client() {
27
- if (!this._client) {
28
- this._client = new (0, _sdk2.default)({
29
- apiKey: _nullishCoalesce(this.config.apiKey, () => ( process.env.ANTHROPIC_API_KEY)),
30
- ...this.config.baseUrl ? { baseURL: this.config.baseUrl } : {},
31
- timeout: this.timeout
32
- });
33
- }
34
- return this._client;
35
- }
36
- async createMessage(options) {
37
- return this.withRetry(async () => {
38
- const messages = this.buildMessages(options.messages);
39
- const tools = options.tools ? this.convertTools(options.tools) : void 0;
40
- const span = _chunkIK4EWJBPcjs.logger.span("llm.request", {
41
- cat: "llm",
42
- provider: this.provider,
43
- model: this.model,
44
- stream: !!(options.stream && options.onChunk),
45
- messageCount: messages.length,
46
- toolCount: _nullishCoalesce(_optionalChain([tools, 'optionalAccess', _ => _.length]), () => ( 0))
47
- });
48
- try {
49
- const response = options.stream && options.onChunk ? await this.streamMessage(options, messages, tools) : await this.nonStreamMessage(options, messages, tools);
50
- span.end({
51
- stopReason: response.stopReason,
52
- promptTokens: _optionalChain([response, 'access', _2 => _2.usage, 'optionalAccess', _3 => _3.promptTokens]),
53
- completionTokens: _optionalChain([response, 'access', _4 => _4.usage, 'optionalAccess', _5 => _5.completionTokens]),
54
- cacheReadTokens: _optionalChain([response, 'access', _6 => _6.usage, 'optionalAccess', _7 => _7.cacheReadTokens]),
55
- cacheCreationTokens: _optionalChain([response, 'access', _8 => _8.usage, 'optionalAccess', _9 => _9.cacheCreationTokens])
56
- });
57
- return response;
58
- } catch (err) {
59
- span.fail(err);
60
- throw err;
61
- }
62
- });
63
- }
64
- async nonStreamMessage(options, messages, tools) {
65
- try {
66
- const response = await this.client.messages.create(
67
- {
68
- model: this.model,
69
- max_tokens: _nullishCoalesce(options.maxTokens, () => ( this.maxTokens)),
70
- system: [
71
- {
72
- type: "text",
73
- text: options.systemPrompt,
74
- cache_control: { type: "ephemeral" }
75
- }
76
- ],
77
- messages,
78
- ..._optionalChain([tools, 'optionalAccess', _10 => _10.length]) ? { tools } : {},
79
- ...options.temperature !== void 0 ? { temperature: options.temperature } : { temperature: this.temperature }
80
- },
81
- { signal: options.signal }
82
- );
83
- const usage = {
84
- promptTokens: response.usage.input_tokens,
85
- completionTokens: response.usage.output_tokens,
86
- totalTokens: response.usage.input_tokens + response.usage.output_tokens,
87
- cacheReadTokens: response.usage.cache_read_input_tokens,
88
- cacheCreationTokens: response.usage.cache_creation_input_tokens
89
- };
90
- this.recordUsage(usage, options);
91
- return this.processResponse(response, usage);
92
- } catch (err) {
93
- this.handleApiError(err);
94
- throw err;
95
- }
96
- }
97
- async streamMessage(options, messages, tools) {
98
- try {
99
- const stream = this.client.messages.stream(
100
- {
101
- model: this.model,
102
- max_tokens: _nullishCoalesce(options.maxTokens, () => ( this.maxTokens)),
103
- system: [
104
- {
105
- type: "text",
106
- text: options.systemPrompt,
107
- cache_control: { type: "ephemeral" }
108
- }
109
- ],
110
- messages,
111
- ..._optionalChain([tools, 'optionalAccess', _11 => _11.length]) ? { tools } : {},
112
- ...options.temperature !== void 0 ? { temperature: options.temperature } : { temperature: this.temperature }
113
- },
114
- { signal: options.signal }
115
- );
116
- let currentText = "";
117
- let currentToolName = "";
118
- let currentToolId = "";
119
- let currentToolInput = "";
120
- const streamStartedAt = Date.now();
121
- let firstByteLogged = false;
122
- stream.on("text", (text) => {
123
- if (!firstByteLogged) {
124
- firstByteLogged = true;
125
- _chunkIK4EWJBPcjs.logger.debug("llm.first_byte", {
126
- cat: "llm",
127
- provider: this.provider,
128
- model: this.model,
129
- ttft_ms: Date.now() - streamStartedAt
130
- });
131
- }
132
- currentText += text;
133
- _optionalChain([options, 'access', _12 => _12.onChunk, 'optionalCall', _13 => _13({ type: "text", text })]);
134
- });
135
- stream.on("contentBlock", (block) => {
136
- if (block.type === "tool_use") {
137
- currentToolName = block.name;
138
- currentToolId = block.id;
139
- currentToolInput = "";
140
- _optionalChain([options, 'access', _14 => _14.onChunk, 'optionalCall', _15 => _15({
141
- type: "tool_use_start",
142
- toolCall: { id: block.id, toolName: block.name, args: {} }
143
- })]);
144
- }
145
- });
146
- stream.on("inputJson", (_delta, snapshot) => {
147
- currentToolInput = JSON.stringify(snapshot);
148
- if (currentToolId) {
149
- _optionalChain([options, 'access', _16 => _16.onChunk, 'optionalCall', _17 => _17({
150
- type: "tool_use_delta",
151
- toolCall: {
152
- id: currentToolId,
153
- toolName: currentToolName,
154
- args: _nullishCoalesce(snapshot, () => ( {}))
155
- }
156
- })]);
157
- }
158
- });
159
- const finalMessage = await stream.finalMessage();
160
- const usage = {
161
- promptTokens: finalMessage.usage.input_tokens,
162
- completionTokens: finalMessage.usage.output_tokens,
163
- totalTokens: finalMessage.usage.input_tokens + finalMessage.usage.output_tokens,
164
- cacheReadTokens: finalMessage.usage.cache_read_input_tokens,
165
- cacheCreationTokens: finalMessage.usage.cache_creation_input_tokens
166
- };
167
- this.recordUsage(usage, options);
168
- _optionalChain([options, 'access', _18 => _18.onChunk, 'optionalCall', _19 => _19({ type: "stop", stopReason: _nullishCoalesce(finalMessage.stop_reason, () => ( void 0)) })]);
169
- return this.processResponse(finalMessage, usage);
170
- } catch (err) {
171
- this.handleApiError(err);
172
- throw err;
173
- }
174
- }
175
- processResponse(response, usage) {
176
- let text = "";
177
- const toolCalls = [];
178
- for (const block of response.content) {
179
- if (block.type === "text") {
180
- text += block.text;
181
- } else if (block.type === "tool_use") {
182
- toolCalls.push({
183
- id: block.id,
184
- toolName: block.name,
185
- args: _nullishCoalesce(block.input, () => ( {}))
186
- });
187
- }
188
- }
189
- return {
190
- text,
191
- toolCalls,
192
- usage,
193
- stopReason: _nullishCoalesce(response.stop_reason, () => ( void 0))
194
- };
195
- }
196
- buildMessages(messages) {
197
- const result = [];
198
- for (const msg of messages) {
199
- if (msg.role === "system") continue;
200
- const role = msg.role === "tool" ? "user" : msg.role;
201
- if (typeof msg.content === "string") {
202
- result.push({ role, content: msg.content });
203
- } else {
204
- const blocks = [];
205
- for (const block of msg.content) {
206
- if (block.type === "text" && block.text) {
207
- blocks.push({ type: "text", text: block.text });
208
- } else if (block.type === "tool_use" && block.id && block.name && block.input) {
209
- blocks.push({
210
- type: "tool_use",
211
- id: block.id,
212
- name: block.name,
213
- input: block.input
214
- });
215
- } else if (block.type === "tool_result" && block.tool_use_id) {
216
- blocks.push({
217
- type: "tool_result",
218
- tool_use_id: block.tool_use_id,
219
- content: typeof block.content === "string" ? block.content : ""
220
- });
221
- } else if (block.type === "image" && block.source) {
222
- blocks.push({
223
- type: "image",
224
- source: {
225
- type: "base64",
226
- media_type: block.source.media_type,
227
- data: block.source.data
228
- }
229
- });
230
- }
231
- }
232
- if (blocks.length > 0) {
233
- result.push({ role, content: blocks });
234
- }
235
- }
236
- }
237
- return result;
238
- }
239
- convertTools(tools) {
240
- return tools.map((t) => ({
241
- name: t.name,
242
- description: t.description,
243
- input_schema: t.inputSchema
244
- }));
245
- }
246
- handleApiError(err) {
247
- if (err instanceof _sdk2.default.APIError) {
248
- if (err.status === 429) {
249
- throw new (0, _chunk2YW4FPFGcjs.LLMRateLimitError)("anthropic");
250
- }
251
- if (_optionalChain([err, 'access', _20 => _20.message, 'optionalAccess', _21 => _21.includes, 'call', _22 => _22("prompt is too long")]) || _optionalChain([err, 'access', _23 => _23.message, 'optionalAccess', _24 => _24.includes, 'call', _25 => _25("context_length_exceeded")])) {
252
- throw new (0, _chunk2YW4FPFGcjs.ContextLimitError)("anthropic");
253
- }
254
- throw new (0, _chunk2YW4FPFGcjs.LLMError)(`Anthropic API error: ${err.message}`, "anthropic", {
255
- status: err.status
256
- });
257
- }
258
- throw err;
259
- }
260
- }, _class);
261
-
262
-
263
-
264
- exports.AnthropicClient = AnthropicClient;
@@ -1,107 +0,0 @@
1
- import {
2
- CompositeEvaluator,
3
- FileRunStore,
4
- NoopEvaluator,
5
- RunManager,
6
- registerPreset
7
- } from "./chunk-7K6SDRRF.js";
8
- import {
9
- init_esm_shims
10
- } from "./chunk-MD32R22I.js";
11
-
12
- // src/product/index.ts
13
- init_esm_shims();
14
-
15
- // src/product/define.ts
16
- init_esm_shims();
17
- import { join } from "path";
18
- import { homedir } from "os";
19
- function defineProduct(definition, runtime) {
20
- const { preset: presetDef, adapter, contract } = definition;
21
- const presetName = presetDef.name;
22
- const baseTools = [
23
- "Read",
24
- "Write",
25
- "Edit",
26
- "Glob",
27
- "Grep",
28
- "Bash",
29
- "AskUserQuestion",
30
- "Agent",
31
- "ToolSearch",
32
- "TaskCreate",
33
- "TaskList",
34
- "TaskUpdate",
35
- "TaskGet"
36
- ];
37
- const enabledSet = /* @__PURE__ */ new Set([...baseTools, ...adapter?.enableTools ?? []]);
38
- for (const t of adapter?.disableTools ?? []) {
39
- enabledSet.delete(t);
40
- }
41
- const permissionRules = [
42
- // Default safe rules
43
- { tool: "Read", decision: "allow" },
44
- { tool: "Glob", decision: "allow" },
45
- { tool: "Grep", decision: "allow" },
46
- { tool: "AskUserQuestion", decision: "allow" },
47
- { tool: "ToolSearch", decision: "allow" },
48
- { tool: "TaskCreate", decision: "allow" },
49
- { tool: "TaskList", decision: "allow" },
50
- { tool: "TaskUpdate", decision: "allow" },
51
- { tool: "TaskGet", decision: "allow" },
52
- // Product-specific rules (higher priority)
53
- ...adapter?.permissionRules ?? []
54
- ];
55
- const agentPreset = {
56
- name: presetName,
57
- label: presetDef.label,
58
- description: presetDef.description,
59
- promptSections: presetDef.sections ?? ["base", "orchestration"],
60
- injectGitStatus: presetDef.injectGitStatus ?? false,
61
- builtinTools: [...enabledSet],
62
- defaultPermissionRules: permissionRules
63
- };
64
- registerPreset(agentPreset);
65
- let evaluator;
66
- if (!contract?.evaluator) {
67
- evaluator = new NoopEvaluator();
68
- } else if (Array.isArray(contract.evaluator)) {
69
- evaluator = new CompositeEvaluator(contract.evaluator);
70
- } else {
71
- evaluator = contract.evaluator;
72
- }
73
- const customTools = adapter?.tools ?? [];
74
- const customToolEntries = customTools.map((ct) => ({
75
- definition: ct.definition,
76
- execute: ct.execute
77
- }));
78
- const runsDir = runtime.runsDir ?? join(homedir(), ".code-shell", "runs");
79
- const store = new FileRunStore(runsDir);
80
- const manager = new RunManager({
81
- store,
82
- executor: {
83
- llm: runtime.llm,
84
- maxTurns: contract?.maxTurns ?? 30,
85
- maxContextTokens: contract?.maxContextTokens ?? 2e5,
86
- permissionMode: runtime.permissionMode ?? "acceptEdits",
87
- sessionStorageDir: runtime.sessionStorageDir,
88
- mcpServers: adapter?.mcpServers,
89
- enabledBuiltinTools: [...enabledSet],
90
- disabledBuiltinTools: adapter?.disableTools,
91
- customSystemPrompt: presetDef.customPrompt,
92
- appendSystemPrompt: presetDef.appendPrompt,
93
- hooks: adapter?.hooks,
94
- customTools: customToolEntries.length > 0 ? customToolEntries : void 0
95
- },
96
- concurrency: contract?.concurrency ?? 1,
97
- runsDir,
98
- evaluator,
99
- defaultTags: contract?.defaultTags,
100
- defaultMetadata: contract?.defaultMetadata
101
- });
102
- return { manager, preset: agentPreset, customTools };
103
- }
104
-
105
- export {
106
- defineProduct
107
- };