@cjhyy/code-shell 0.1.6 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/anthropic-OVRWAZRD.js +1 -0
- package/dist/arena/index.js +1 -104
- package/dist/arena-64T2EQD4.js +3 -0
- package/dist/bwrap-PVZMLHZR.js +2 -0
- package/dist/chunk-2EUIMKJA.js +1 -0
- package/dist/chunk-2GJ7H5NC.js +641 -0
- package/dist/chunk-2OD6VR4N.js +2 -0
- package/dist/chunk-3QP5BQ3L.js +1 -0
- package/dist/chunk-A4M2Y42L.js +2 -0
- package/dist/chunk-DEYFK6FP.js +1 -0
- package/dist/chunk-DTPABBSV.js +2 -0
- package/dist/chunk-EU3J7TBP.js +1 -0
- package/dist/chunk-FU7AHZNN.js +1 -0
- package/dist/chunk-L7B2ORID.js +4 -0
- package/dist/chunk-M7VU4YVY.js +49 -0
- package/dist/chunk-MGP35GKD.js +254 -0
- package/dist/chunk-MLCTC53I.js +1 -0
- package/dist/chunk-O5HFCH2U.js +1 -0
- package/dist/chunk-P6JSTIFM.js +1 -0
- package/dist/chunk-Q3RSX66I.js +1 -0
- package/dist/chunk-QTWU7UNA.js +5 -0
- package/dist/chunk-RERBX75D.js +251 -0
- package/dist/chunk-SNFAPSLA.js +1 -0
- package/dist/chunk-T222K6IV.js +18 -0
- package/dist/chunk-TKJA6W36.js +3 -0
- package/dist/chunk-VKKU4LOM.js +3 -0
- package/dist/chunk-WI6FSWGU.js +1 -0
- package/dist/chunk-XXCZE2U2.js +2 -0
- package/dist/chunk-ZSAONDT6.js +2 -0
- package/dist/cli/main.js +303 -22060
- package/dist/cli/onboarding.d.ts +7 -2
- package/dist/client-base-F5FCRSB3.js +1 -0
- package/dist/compaction-L3Y6NG4N.js +1 -0
- package/dist/context/compaction.d.ts +2 -1
- package/dist/data/static-catalogs.d.ts +25 -0
- package/dist/devtools-SGDUOOM4.js +1 -0
- package/dist/engine/engine.d.ts +24 -0
- package/dist/engine/turn-loop.d.ts +20 -0
- package/dist/export-md-U72T7NW7.js +22 -0
- package/dist/file-history-7FQFEQOL.js +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -347
- package/dist/llm/capabilities/index.d.ts +20 -0
- package/dist/llm/capabilities/rules.d.ts +26 -0
- package/dist/llm/capabilities/types.d.ts +108 -0
- package/dist/llm/model-pool.d.ts +7 -0
- package/dist/llm/provider-catalog.d.ts +2 -0
- package/dist/llm/provider-kinds.d.ts +1 -1
- package/dist/llm/providers/openai.d.ts +22 -0
- package/dist/llm/token-counter.d.ts +17 -0
- package/dist/llm/types.d.ts +8 -0
- package/dist/logging/logger.d.ts +10 -2
- package/dist/logging/session-recorder.d.ts +16 -3
- package/dist/manager-J6FXEUEK.js +1 -0
- package/dist/mcp-manager-27EVBKRT.js +1 -0
- package/dist/memory-BNI4WEWL.js +1 -0
- package/dist/model-cache-HEDXI7UJ.js +1 -0
- package/dist/model-fetcher-X5W5EASG.js +1 -0
- package/dist/off-7SDVMMXW.js +1 -0
- package/dist/openai-3QEADSYL.js +1 -0
- package/dist/openrouter-models-GZVCRWD2.js +1 -0
- package/dist/openrouter-sync-WG4AG5NC.js +1 -0
- package/dist/product/index.js +1 -21
- package/dist/protocol/client.d.ts +1 -1
- package/dist/run/index.js +1 -48
- package/dist/seatbelt-L54CNI2Y.js +37 -0
- package/dist/session/session-manager.d.ts +2 -0
- package/dist/session-manager-AGWS5SMJ.js +1 -0
- package/dist/settings/schema.d.ts +147 -21
- package/dist/tool-summary-V2B3MD5N.js +2 -0
- package/dist/tool-system/builtin/bash.d.ts +7 -1
- package/dist/tool-system/context.d.ts +7 -0
- package/dist/tool-system/executor.d.ts +4 -0
- package/dist/tool-system/sandbox/bwrap.d.ts +13 -0
- package/dist/tool-system/sandbox/index.d.ts +78 -0
- package/dist/tool-system/sandbox/off.d.ts +2 -0
- package/dist/tool-system/sandbox/seatbelt.d.ts +18 -0
- package/dist/tool-system/task-guard.d.ts +30 -0
- package/dist/types.d.ts +17 -0
- package/dist/ui/components/SessionPicker.d.ts +2 -0
- package/dist/ui/components/SpinnerWithVerb.d.ts +7 -2
- package/dist/ui/components/StatusLine.d.ts +7 -3
- package/dist/updater-OCNU2K2Z.js +1 -0
- package/package.json +7 -10
- package/dist/anthropic-IBTI4WL2.cjs +0 -10
- package/dist/anthropic-PRZZKHEZ.js +0 -10
- package/dist/arena/index.cjs +0 -104
- package/dist/arena-2LTLIXOL.js +0 -261
- package/dist/arena-ADB7DRFI.cjs +0 -261
- package/dist/chunk-2YW4FPFG.cjs +0 -101
- package/dist/chunk-3OA5G4TM.js +0 -47
- package/dist/chunk-3QO25N6E.js +0 -4711
- package/dist/chunk-3SBSUOWZ.js +0 -447
- package/dist/chunk-52LGZKT3.cjs +0 -47
- package/dist/chunk-55XGPMAP.cjs +0 -146
- package/dist/chunk-6QVAYW7C.cjs +0 -438
- package/dist/chunk-6S4BJ65N.js +0 -113
- package/dist/chunk-76HYEPDM.js +0 -307
- package/dist/chunk-7BI3V74Y.cjs +0 -447
- package/dist/chunk-7EG3V4JY.cjs +0 -113
- package/dist/chunk-7JVTYEEC.js +0 -340
- package/dist/chunk-7QIM3BKD.js +0 -44
- package/dist/chunk-7Y6S3OCX.js +0 -438
- package/dist/chunk-ABRRONJ7.js +0 -107
- package/dist/chunk-BSW22MPA.js +0 -146
- package/dist/chunk-BXCY2FSE.js +0 -203
- package/dist/chunk-BZ5TNE7L.js +0 -5128
- package/dist/chunk-DDB6QOKJ.cjs +0 -1252
- package/dist/chunk-HEKQCI7B.cjs +0 -224
- package/dist/chunk-IK4EWJBP.cjs +0 -203
- package/dist/chunk-ILHE7XLT.cjs +0 -107
- package/dist/chunk-JMR33QVF.cjs +0 -169
- package/dist/chunk-KAQHULYN.js +0 -54
- package/dist/chunk-KE4EQOWA.js +0 -294
- package/dist/chunk-KOVYSDHZ.cjs +0 -340
- package/dist/chunk-KS3RYAYL.cjs +0 -45
- package/dist/chunk-MD32R22I.js +0 -50
- package/dist/chunk-MV7YI4WO.cjs +0 -293
- package/dist/chunk-MY5XHADU.cjs +0 -216
- package/dist/chunk-NUNC3VFB.cjs +0 -307
- package/dist/chunk-PKGRTCCY.js +0 -9092
- package/dist/chunk-QARL3IDQ.js +0 -1252
- package/dist/chunk-S754JHLR.cjs +0 -54
- package/dist/chunk-SFXHZSRF.js +0 -101
- package/dist/chunk-SIHHIQLO.js +0 -224
- package/dist/chunk-T6VYG46N.js +0 -105
- package/dist/chunk-TNLGBJYS.cjs +0 -44
- package/dist/chunk-TUY2T5KP.cjs +0 -105
- package/dist/chunk-UXOCVJJ6.cjs +0 -9092
- package/dist/chunk-VIAGTYYW.js +0 -169
- package/dist/chunk-WASS5YWB.js +0 -215
- package/dist/chunk-WZJV6DJC.cjs +0 -5128
- package/dist/chunk-YIQBXAYU.cjs +0 -264
- package/dist/chunk-YKIAELDZ.cjs +0 -4711
- package/dist/chunk-ZBPSQCPU.js +0 -264
- package/dist/cli/main.cjs +0 -22156
- package/dist/client-base-HTF236ZD.cjs +0 -9
- package/dist/client-base-QKRKCOWB.js +0 -9
- package/dist/compaction-6VU2T643.js +0 -33
- package/dist/compaction-OKUNTCA7.cjs +0 -33
- package/dist/devtools-T2NIZBJK.cjs +0 -6
- package/dist/devtools-YXWHOVKR.js +0 -6
- package/dist/export-md-RXDW6F5W.cjs +0 -135
- package/dist/export-md-XXKZANW5.js +0 -135
- package/dist/file-history-KYPE3ECT.cjs +0 -7
- package/dist/file-history-LF4F7X26.js +0 -7
- package/dist/index.cjs +0 -347
- package/dist/manager-D65VFAPX.js +0 -7
- package/dist/manager-TTF5VHJC.cjs +0 -7
- package/dist/mcp-manager-QMKWPBZ4.js +0 -8
- package/dist/mcp-manager-Z3OKI74O.cjs +0 -8
- package/dist/memory-5LWZ6FI2.cjs +0 -9
- package/dist/memory-VIJLBAMQ.js +0 -9
- package/dist/model-cache-5KIYL5SL.js +0 -13
- package/dist/model-cache-OED3IM4R.cjs +0 -13
- package/dist/model-fetcher-HKGICACL.js +0 -8
- package/dist/model-fetcher-UR6WJOQP.cjs +0 -8
- package/dist/openai-JR2WEKOF.js +0 -10
- package/dist/openai-YBTOET4O.cjs +0 -10
- package/dist/openrouter-models-H56GHBHN.js +0 -15
- package/dist/openrouter-models-TWUFWZ5T.cjs +0 -15
- package/dist/openrouter-sync-5VMGN6C2.cjs +0 -11
- package/dist/openrouter-sync-ALEMF5IU.js +0 -11
- package/dist/product/index.cjs +0 -21
- package/dist/run/index.cjs +0 -48
- package/dist/session-manager-Q22BBMD3.js +0 -8
- package/dist/session-manager-XODQVL3C.cjs +0 -8
- package/dist/tool-summary-63DPIS7G.cjs +0 -31
- package/dist/tool-summary-NP5CDBKG.js +0 -31
- package/dist/updater-I7QBW4DP.cjs +0 -17
- package/dist/updater-NVME5S3Z.js +0 -17
package/dist/chunk-HEKQCI7B.cjs
DELETED
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _chunkIK4EWJBPcjs = require('./chunk-IK4EWJBP.cjs');
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _chunkKS3RYAYLcjs = require('./chunk-KS3RYAYL.cjs');
|
|
7
|
-
|
|
8
|
-
// src/tool-system/mcp-manager.ts
|
|
9
|
-
_chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
|
|
10
|
-
var _indexjs = require('@modelcontextprotocol/sdk/client/index.js');
|
|
11
|
-
var _stdiojs = require('@modelcontextprotocol/sdk/client/stdio.js');
|
|
12
|
-
var _streamableHttpjs = require('@modelcontextprotocol/sdk/client/streamableHttp.js');
|
|
13
|
-
var MCPManager = (_class = class _MCPManager {
|
|
14
|
-
constructor(toolRegistry) {;_class.prototype.__init.call(this);
|
|
15
|
-
this.toolRegistry = toolRegistry;
|
|
16
|
-
_MCPManager.instance = this;
|
|
17
|
-
}
|
|
18
|
-
static __initStatic() {this.instance = null}
|
|
19
|
-
__init() {this.connections = /* @__PURE__ */ new Map()}
|
|
20
|
-
static getInstance() {
|
|
21
|
-
if (!_MCPManager.instance) {
|
|
22
|
-
throw new Error("MCPManager not initialized. Connect to servers first.");
|
|
23
|
-
}
|
|
24
|
-
return _MCPManager.instance;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Connect to all configured MCP servers and register their tools.
|
|
28
|
-
*/
|
|
29
|
-
async connectAll(servers) {
|
|
30
|
-
const entries = Object.entries(servers);
|
|
31
|
-
if (entries.length === 0) return;
|
|
32
|
-
const results = await Promise.allSettled(
|
|
33
|
-
entries.map(([name, config]) => this.connect(name, config))
|
|
34
|
-
);
|
|
35
|
-
for (let i = 0; i < results.length; i++) {
|
|
36
|
-
const result = results[i];
|
|
37
|
-
if (result.status === "rejected") {
|
|
38
|
-
_chunkIK4EWJBPcjs.logger.warn("mcp.connect_failed", {
|
|
39
|
-
server: entries[i][0],
|
|
40
|
-
error: result.reason.message
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Connect to a single MCP server.
|
|
47
|
-
*/
|
|
48
|
-
async connect(name, config) {
|
|
49
|
-
if (this.connections.has(name)) {
|
|
50
|
-
_chunkIK4EWJBPcjs.logger.info("mcp.already_connected", { server: name });
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
_chunkIK4EWJBPcjs.logger.info("mcp.connecting", { server: name, transport: _nullishCoalesce(config.transport, () => ( "stdio")) });
|
|
54
|
-
const client = new (0, _indexjs.Client)(
|
|
55
|
-
{ name: "code-shell", version: "0.1.0" },
|
|
56
|
-
{ capabilities: {} }
|
|
57
|
-
);
|
|
58
|
-
let transport;
|
|
59
|
-
const transportType = _nullishCoalesce(config.transport, () => ( "stdio"));
|
|
60
|
-
if (transportType === "stdio") {
|
|
61
|
-
if (!config.command) {
|
|
62
|
-
throw new Error(`MCP server "${name}": command is required for stdio transport`);
|
|
63
|
-
}
|
|
64
|
-
transport = new (0, _stdiojs.StdioClientTransport)({
|
|
65
|
-
command: config.command,
|
|
66
|
-
args: config.args,
|
|
67
|
-
env: config.env ? { ...process.env, ...config.env } : void 0
|
|
68
|
-
});
|
|
69
|
-
} else if (transportType === "streamable-http" || transportType === "sse") {
|
|
70
|
-
if (!config.url) {
|
|
71
|
-
throw new Error(`MCP server "${name}": url is required for ${transportType} transport`);
|
|
72
|
-
}
|
|
73
|
-
transport = new (0, _streamableHttpjs.StreamableHTTPClientTransport)(new URL(config.url), {
|
|
74
|
-
requestInit: config.headers ? { headers: config.headers } : void 0
|
|
75
|
-
});
|
|
76
|
-
} else {
|
|
77
|
-
throw new Error(`MCP server "${name}": unsupported transport "${transportType}"`);
|
|
78
|
-
}
|
|
79
|
-
const CONNECT_TIMEOUT_MS = 15e3;
|
|
80
|
-
let timeoutHandle;
|
|
81
|
-
try {
|
|
82
|
-
await new Promise((resolve, reject) => {
|
|
83
|
-
timeoutHandle = setTimeout(() => {
|
|
84
|
-
reject(new Error(`MCP server "${name}" connect timed out after ${CONNECT_TIMEOUT_MS}ms`));
|
|
85
|
-
}, CONNECT_TIMEOUT_MS);
|
|
86
|
-
client.connect(transport).then(
|
|
87
|
-
() => resolve(),
|
|
88
|
-
(err) => reject(err)
|
|
89
|
-
);
|
|
90
|
-
});
|
|
91
|
-
} catch (err) {
|
|
92
|
-
try {
|
|
93
|
-
await _optionalChain([transport, 'access', _ => _.close, 'optionalCall', _2 => _2()]);
|
|
94
|
-
} catch (e) {
|
|
95
|
-
}
|
|
96
|
-
throw err;
|
|
97
|
-
} finally {
|
|
98
|
-
if (timeoutHandle) clearTimeout(timeoutHandle);
|
|
99
|
-
}
|
|
100
|
-
this.connections.set(name, { client, serverName: name, transport });
|
|
101
|
-
await this.discoverTools(name, client);
|
|
102
|
-
_chunkIK4EWJBPcjs.logger.info("mcp.connected", { server: name });
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Discover tools from an MCP server and register them.
|
|
106
|
-
*/
|
|
107
|
-
async discoverTools(serverName, client) {
|
|
108
|
-
const result = await client.listTools();
|
|
109
|
-
for (const tool of result.tools) {
|
|
110
|
-
const registered = {
|
|
111
|
-
name: `mcp_${serverName}_${tool.name}`,
|
|
112
|
-
description: `[${serverName}] ${_nullishCoalesce(tool.description, () => ( tool.name))}`,
|
|
113
|
-
inputSchema: _nullishCoalesce(tool.inputSchema, () => ( { type: "object", properties: {} })),
|
|
114
|
-
source: "mcp",
|
|
115
|
-
serverName,
|
|
116
|
-
permissionDefault: "ask",
|
|
117
|
-
isConcurrencySafe: true,
|
|
118
|
-
isReadOnly: false
|
|
119
|
-
};
|
|
120
|
-
this.toolRegistry.registerTool(registered, async (args) => {
|
|
121
|
-
const callResult = await client.callTool({ name: tool.name, arguments: args });
|
|
122
|
-
const parts = [];
|
|
123
|
-
if (Array.isArray(callResult.content)) {
|
|
124
|
-
for (const item of callResult.content) {
|
|
125
|
-
if (typeof item === "object" && item !== null && "text" in item) {
|
|
126
|
-
parts.push(String(item.text));
|
|
127
|
-
} else if (typeof item === "string") {
|
|
128
|
-
parts.push(item);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return parts.join("\n") || "(no output)";
|
|
133
|
-
});
|
|
134
|
-
_chunkIK4EWJBPcjs.logger.info("mcp.tool_registered", { server: serverName, tool: registered.name });
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Disconnect all MCP servers.
|
|
139
|
-
*/
|
|
140
|
-
async disconnectAll() {
|
|
141
|
-
for (const [name, conn] of this.connections) {
|
|
142
|
-
try {
|
|
143
|
-
await conn.client.close();
|
|
144
|
-
_chunkIK4EWJBPcjs.logger.info("mcp.disconnected", { server: name });
|
|
145
|
-
} catch (err) {
|
|
146
|
-
_chunkIK4EWJBPcjs.logger.warn("mcp.disconnect_error", { server: name, error: err.message });
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
this.connections.clear();
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* List connected servers.
|
|
153
|
-
*/
|
|
154
|
-
listServers() {
|
|
155
|
-
return [...this.connections.keys()];
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Call a tool on a specific MCP server.
|
|
159
|
-
*/
|
|
160
|
-
async callTool(serverName, toolName, args) {
|
|
161
|
-
const conn = this.connections.get(serverName);
|
|
162
|
-
if (!conn) {
|
|
163
|
-
throw new Error(`MCP server "${serverName}" is not connected.`);
|
|
164
|
-
}
|
|
165
|
-
const result = await conn.client.callTool({ name: toolName, arguments: args });
|
|
166
|
-
const parts = [];
|
|
167
|
-
if (Array.isArray(result.content)) {
|
|
168
|
-
for (const item of result.content) {
|
|
169
|
-
if (typeof item === "object" && item !== null && "text" in item) {
|
|
170
|
-
parts.push(String(item.text));
|
|
171
|
-
} else if (typeof item === "string") {
|
|
172
|
-
parts.push(item);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
return parts.join("\n") || "(no output)";
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* List resources from MCP servers.
|
|
180
|
-
*/
|
|
181
|
-
async listResources(serverName) {
|
|
182
|
-
const results = [];
|
|
183
|
-
const servers = serverName ? [serverName] : [...this.connections.keys()];
|
|
184
|
-
for (const name of servers) {
|
|
185
|
-
const conn = this.connections.get(name);
|
|
186
|
-
if (!conn) continue;
|
|
187
|
-
try {
|
|
188
|
-
const res = await conn.client.listResources();
|
|
189
|
-
for (const r of res.resources) {
|
|
190
|
-
results.push({
|
|
191
|
-
uri: r.uri,
|
|
192
|
-
name: _nullishCoalesce(r.name, () => ( r.uri)),
|
|
193
|
-
description: r.description
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
} catch (e2) {
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return results;
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Read a resource from an MCP server.
|
|
203
|
-
*/
|
|
204
|
-
async readResource(serverName, uri) {
|
|
205
|
-
const conn = this.connections.get(serverName);
|
|
206
|
-
if (!conn) {
|
|
207
|
-
throw new Error(`MCP server "${serverName}" is not connected.`);
|
|
208
|
-
}
|
|
209
|
-
const result = await conn.client.readResource({ uri });
|
|
210
|
-
const parts = [];
|
|
211
|
-
if (Array.isArray(result.contents)) {
|
|
212
|
-
for (const item of result.contents) {
|
|
213
|
-
if (typeof item === "object" && item !== null && "text" in item) {
|
|
214
|
-
parts.push(String(item.text));
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return parts.join("\n") || "(no content)";
|
|
219
|
-
}
|
|
220
|
-
}, _class.__initStatic(), _class);
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
exports.MCPManager = MCPManager;
|
package/dist/chunk-IK4EWJBP.cjs
DELETED
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _chunkKS3RYAYLcjs = require('./chunk-KS3RYAYL.cjs');
|
|
4
|
-
|
|
5
|
-
// src/logging/logger.ts
|
|
6
|
-
_chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var _fs = require('fs');
|
|
15
|
-
var _path = require('path');
|
|
16
|
-
var _os = require('os');
|
|
17
|
-
var LEVEL_ORDER = {
|
|
18
|
-
debug: 0,
|
|
19
|
-
info: 1,
|
|
20
|
-
warn: 2,
|
|
21
|
-
error: 3
|
|
22
|
-
};
|
|
23
|
-
var LOGS_DIR = _path.join.call(void 0, _os.homedir.call(void 0, ), ".code-shell", "logs");
|
|
24
|
-
var MAX_LOG_FILES = 7;
|
|
25
|
-
var MAX_IN_MEMORY_ERRORS = 100;
|
|
26
|
-
function isLocalDev() {
|
|
27
|
-
if (process.env.CODE_SHELL_DEV === "1") return true;
|
|
28
|
-
if (process.argv.includes("--debug") || process.argv.includes("-d")) return true;
|
|
29
|
-
if (process.argv.some((a) => a.startsWith("--debug="))) return true;
|
|
30
|
-
if (process.env.NODE_ENV === "test" || process.env.BUN_TEST === "1") return false;
|
|
31
|
-
if (process.argv.some((a) => a.includes("/tests/") || a.endsWith(".test.ts"))) return false;
|
|
32
|
-
const entry = _nullishCoalesce(process.argv[1], () => ( ""));
|
|
33
|
-
if (entry.includes(`${"/"}src${"/"}`)) return true;
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
function resolveDefaultLevel() {
|
|
37
|
-
const raw = _optionalChain([process, 'access', _ => _.env, 'access', _2 => _2.CODE_SHELL_LOG_LEVEL, 'optionalAccess', _3 => _3.toLowerCase, 'call', _4 => _4(), 'access', _5 => _5.trim, 'call', _6 => _6()]);
|
|
38
|
-
if (raw && Object.hasOwn(LEVEL_ORDER, raw)) return raw;
|
|
39
|
-
return isLocalDev() ? "debug" : "info";
|
|
40
|
-
}
|
|
41
|
-
function resolveCategoryFilter() {
|
|
42
|
-
const cliArg = process.argv.find((a) => a.startsWith("--debug="));
|
|
43
|
-
let raw;
|
|
44
|
-
if (cliArg) raw = cliArg.slice("--debug=".length);
|
|
45
|
-
else {
|
|
46
|
-
const env = process.env.CODE_SHELL_DEBUG;
|
|
47
|
-
if (env && env !== "1" && env !== "true") raw = env;
|
|
48
|
-
}
|
|
49
|
-
if (!raw) return null;
|
|
50
|
-
const set = new Set(
|
|
51
|
-
raw.split(",").map((s) => s.trim().toLowerCase()).filter(Boolean)
|
|
52
|
-
);
|
|
53
|
-
return set.size > 0 ? set : null;
|
|
54
|
-
}
|
|
55
|
-
var _currentSid = `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
56
|
-
function setCurrentSid(sid) {
|
|
57
|
-
_currentSid = sid;
|
|
58
|
-
}
|
|
59
|
-
function getCurrentSid() {
|
|
60
|
-
return _currentSid;
|
|
61
|
-
}
|
|
62
|
-
var inMemoryErrors = [];
|
|
63
|
-
var errorLogSink = null;
|
|
64
|
-
var Logger = (_class = class _Logger {
|
|
65
|
-
constructor(context = {}) {;_class.prototype.__init.call(this);
|
|
66
|
-
this.context = context;
|
|
67
|
-
this.enabled = process.env.CODE_SHELL_LOG !== "0";
|
|
68
|
-
this.minLevel = resolveDefaultLevel();
|
|
69
|
-
this.categoryFilter = resolveCategoryFilter();
|
|
70
|
-
this.stderrEcho = process.env.CODE_SHELL_DEBUG === "1" || process.argv.includes("--debug-to-stderr") || process.argv.includes("-d2e");
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
__init() {this.dirReady = false}
|
|
77
|
-
child(extra) {
|
|
78
|
-
return new _Logger({ ...this.context, ...extra });
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Set the session id stamped on every subsequent log entry written by
|
|
82
|
-
* any logger in the process. Called by Engine once a run's
|
|
83
|
-
* authoritative session id is known.
|
|
84
|
-
*/
|
|
85
|
-
setSid(sid) {
|
|
86
|
-
setCurrentSid(sid);
|
|
87
|
-
}
|
|
88
|
-
getSid() {
|
|
89
|
-
return getCurrentSid();
|
|
90
|
-
}
|
|
91
|
-
debug(msg, data) {
|
|
92
|
-
this.write("debug", msg, data);
|
|
93
|
-
}
|
|
94
|
-
info(msg, data) {
|
|
95
|
-
this.write("info", msg, data);
|
|
96
|
-
}
|
|
97
|
-
warn(msg, data) {
|
|
98
|
-
this.write("warn", msg, data);
|
|
99
|
-
}
|
|
100
|
-
error(msgOrErr, data) {
|
|
101
|
-
let msg;
|
|
102
|
-
let entryData;
|
|
103
|
-
let errObj;
|
|
104
|
-
if (typeof msgOrErr === "string") {
|
|
105
|
-
msg = msgOrErr;
|
|
106
|
-
if (data instanceof Error) {
|
|
107
|
-
errObj = data;
|
|
108
|
-
entryData = { error: data.message, stack: data.stack };
|
|
109
|
-
} else {
|
|
110
|
-
entryData = data;
|
|
111
|
-
}
|
|
112
|
-
} else if (msgOrErr instanceof Error) {
|
|
113
|
-
msg = msgOrErr.message;
|
|
114
|
-
errObj = msgOrErr;
|
|
115
|
-
entryData = { stack: msgOrErr.stack };
|
|
116
|
-
} else {
|
|
117
|
-
msg = String(msgOrErr);
|
|
118
|
-
}
|
|
119
|
-
this.recordError(msg, entryData);
|
|
120
|
-
this.write("error", msg, entryData);
|
|
121
|
-
if (errObj) _optionalChain([errorLogSink, 'optionalAccess', _7 => _7.logError, 'call', _8 => _8(errObj)]);
|
|
122
|
-
}
|
|
123
|
-
recordError(msg, data) {
|
|
124
|
-
if (inMemoryErrors.length >= MAX_IN_MEMORY_ERRORS) inMemoryErrors.shift();
|
|
125
|
-
inMemoryErrors.push({ msg, t: (/* @__PURE__ */ new Date()).toISOString(), data });
|
|
126
|
-
}
|
|
127
|
-
write(level, msg, data) {
|
|
128
|
-
if (!this.enabled) return;
|
|
129
|
-
if (LEVEL_ORDER[level] < LEVEL_ORDER[this.minLevel]) return;
|
|
130
|
-
const cat = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _9 => _9.cat]), () => ( this.context.cat));
|
|
131
|
-
if (level === "debug" && this.categoryFilter) {
|
|
132
|
-
if (!cat || !this.categoryFilter.has(cat.toLowerCase())) return;
|
|
133
|
-
}
|
|
134
|
-
const t = (/* @__PURE__ */ new Date()).toISOString();
|
|
135
|
-
const entry = { t, l: level, msg, ...this.context };
|
|
136
|
-
if (cat && !entry.cat) entry.cat = cat;
|
|
137
|
-
if (entry.sid === void 0) entry.sid = _currentSid;
|
|
138
|
-
if (data) entry.d = data;
|
|
139
|
-
const line = JSON.stringify(entry) + "\n";
|
|
140
|
-
if (this.stderrEcho) {
|
|
141
|
-
process.stderr.write(line);
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
try {
|
|
145
|
-
if (!this.dirReady) {
|
|
146
|
-
if (!_fs.existsSync.call(void 0, LOGS_DIR)) _fs.mkdirSync.call(void 0, LOGS_DIR, { recursive: true });
|
|
147
|
-
this.dirReady = true;
|
|
148
|
-
}
|
|
149
|
-
const dateStr = t.slice(0, 10);
|
|
150
|
-
_fs.appendFileSync.call(void 0, _path.join.call(void 0, LOGS_DIR, `${dateStr}.log`), line, "utf-8");
|
|
151
|
-
} catch (e) {
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
getMinLevel() {
|
|
155
|
-
return this.minLevel;
|
|
156
|
-
}
|
|
157
|
-
isCategoryActive(cat) {
|
|
158
|
-
return !this.categoryFilter || this.categoryFilter.has(cat.toLowerCase());
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Open a span: writes a `<name>.begin` debug entry now and returns a handle
|
|
162
|
-
* whose `end()` writes `<name>.end` with `duration_ms` populated. Use for
|
|
163
|
-
* any "I want begin → end + how long" pattern (tool exec, LLM request,
|
|
164
|
-
* permission ask, etc.) so the begin/end pair is grouped under one cat
|
|
165
|
-
* and the duration is computed once instead of by hand from timestamps.
|
|
166
|
-
*/
|
|
167
|
-
span(name, data) {
|
|
168
|
-
const startedAt = Date.now();
|
|
169
|
-
this.write("debug", `${name}.begin`, data);
|
|
170
|
-
return {
|
|
171
|
-
end: (extra) => {
|
|
172
|
-
const duration_ms = Date.now() - startedAt;
|
|
173
|
-
this.write("info", `${name}.end`, { ...data, ...extra, duration_ms });
|
|
174
|
-
},
|
|
175
|
-
fail: (err, extra) => {
|
|
176
|
-
const duration_ms = Date.now() - startedAt;
|
|
177
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
178
|
-
this.write("error", `${name}.fail`, { ...data, ...extra, duration_ms, error: message });
|
|
179
|
-
}
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
}, _class);
|
|
183
|
-
var logger = new Logger();
|
|
184
|
-
function rotateLogs() {
|
|
185
|
-
try {
|
|
186
|
-
if (!_fs.existsSync.call(void 0, LOGS_DIR)) return;
|
|
187
|
-
const files = _fs.readdirSync.call(void 0, LOGS_DIR).filter((f) => f.endsWith(".log")).sort();
|
|
188
|
-
if (files.length <= MAX_LOG_FILES) return;
|
|
189
|
-
for (const f of files.slice(0, files.length - MAX_LOG_FILES)) {
|
|
190
|
-
try {
|
|
191
|
-
_fs.unlinkSync.call(void 0, _path.join.call(void 0, LOGS_DIR, f));
|
|
192
|
-
} catch (e2) {
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
} catch (e3) {
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
exports.getCurrentSid = getCurrentSid; exports.logger = logger; exports.rotateLogs = rotateLogs;
|
package/dist/chunk-ILHE7XLT.cjs
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var _chunkUXOCVJJ6cjs = require('./chunk-UXOCVJJ6.cjs');
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _chunkKS3RYAYLcjs = require('./chunk-KS3RYAYL.cjs');
|
|
11
|
-
|
|
12
|
-
// src/product/index.ts
|
|
13
|
-
_chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
|
|
14
|
-
|
|
15
|
-
// src/product/define.ts
|
|
16
|
-
_chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
|
|
17
|
-
var _path = require('path');
|
|
18
|
-
var _os = require('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, ..._nullishCoalesce(_optionalChain([adapter, 'optionalAccess', _ => _.enableTools]), () => ( []))]);
|
|
38
|
-
for (const t of _nullishCoalesce(_optionalChain([adapter, 'optionalAccess', _2 => _2.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
|
-
..._nullishCoalesce(_optionalChain([adapter, 'optionalAccess', _3 => _3.permissionRules]), () => ( []))
|
|
54
|
-
];
|
|
55
|
-
const agentPreset = {
|
|
56
|
-
name: presetName,
|
|
57
|
-
label: presetDef.label,
|
|
58
|
-
description: presetDef.description,
|
|
59
|
-
promptSections: _nullishCoalesce(presetDef.sections, () => ( ["base", "orchestration"])),
|
|
60
|
-
injectGitStatus: _nullishCoalesce(presetDef.injectGitStatus, () => ( false)),
|
|
61
|
-
builtinTools: [...enabledSet],
|
|
62
|
-
defaultPermissionRules: permissionRules
|
|
63
|
-
};
|
|
64
|
-
_chunkUXOCVJJ6cjs.registerPreset.call(void 0, agentPreset);
|
|
65
|
-
let evaluator;
|
|
66
|
-
if (!_optionalChain([contract, 'optionalAccess', _4 => _4.evaluator])) {
|
|
67
|
-
evaluator = new (0, _chunkUXOCVJJ6cjs.NoopEvaluator)();
|
|
68
|
-
} else if (Array.isArray(contract.evaluator)) {
|
|
69
|
-
evaluator = new (0, _chunkUXOCVJJ6cjs.CompositeEvaluator)(contract.evaluator);
|
|
70
|
-
} else {
|
|
71
|
-
evaluator = contract.evaluator;
|
|
72
|
-
}
|
|
73
|
-
const customTools = _nullishCoalesce(_optionalChain([adapter, 'optionalAccess', _5 => _5.tools]), () => ( []));
|
|
74
|
-
const customToolEntries = customTools.map((ct) => ({
|
|
75
|
-
definition: ct.definition,
|
|
76
|
-
execute: ct.execute
|
|
77
|
-
}));
|
|
78
|
-
const runsDir = _nullishCoalesce(runtime.runsDir, () => ( _path.join.call(void 0, _os.homedir.call(void 0, ), ".code-shell", "runs")));
|
|
79
|
-
const store = new (0, _chunkUXOCVJJ6cjs.FileRunStore)(runsDir);
|
|
80
|
-
const manager = new (0, _chunkUXOCVJJ6cjs.RunManager)({
|
|
81
|
-
store,
|
|
82
|
-
executor: {
|
|
83
|
-
llm: runtime.llm,
|
|
84
|
-
maxTurns: _nullishCoalesce(_optionalChain([contract, 'optionalAccess', _6 => _6.maxTurns]), () => ( 30)),
|
|
85
|
-
maxContextTokens: _nullishCoalesce(_optionalChain([contract, 'optionalAccess', _7 => _7.maxContextTokens]), () => ( 2e5)),
|
|
86
|
-
permissionMode: _nullishCoalesce(runtime.permissionMode, () => ( "acceptEdits")),
|
|
87
|
-
sessionStorageDir: runtime.sessionStorageDir,
|
|
88
|
-
mcpServers: _optionalChain([adapter, 'optionalAccess', _8 => _8.mcpServers]),
|
|
89
|
-
enabledBuiltinTools: [...enabledSet],
|
|
90
|
-
disabledBuiltinTools: _optionalChain([adapter, 'optionalAccess', _9 => _9.disableTools]),
|
|
91
|
-
customSystemPrompt: presetDef.customPrompt,
|
|
92
|
-
appendSystemPrompt: presetDef.appendPrompt,
|
|
93
|
-
hooks: _optionalChain([adapter, 'optionalAccess', _10 => _10.hooks]),
|
|
94
|
-
customTools: customToolEntries.length > 0 ? customToolEntries : void 0
|
|
95
|
-
},
|
|
96
|
-
concurrency: _nullishCoalesce(_optionalChain([contract, 'optionalAccess', _11 => _11.concurrency]), () => ( 1)),
|
|
97
|
-
runsDir,
|
|
98
|
-
evaluator,
|
|
99
|
-
defaultTags: _optionalChain([contract, 'optionalAccess', _12 => _12.defaultTags]),
|
|
100
|
-
defaultMetadata: _optionalChain([contract, 'optionalAccess', _13 => _13.defaultMetadata])
|
|
101
|
-
});
|
|
102
|
-
return { manager, preset: agentPreset, customTools };
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
exports.defineProduct = defineProduct;
|