@cjhyy/code-shell 0.1.6 → 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 (154) hide show
  1. package/dist/anthropic-UBSB5AQH.js +1 -0
  2. package/dist/arena/index.js +1 -104
  3. package/dist/arena-OW55ZCHT.js +3 -0
  4. package/dist/bwrap-PVZMLHZR.js +2 -0
  5. package/dist/chunk-2NS3JMNK.js +1 -0
  6. package/dist/chunk-3QP5BQ3L.js +1 -0
  7. package/dist/chunk-B7K2OWKC.js +2 -0
  8. package/dist/chunk-EWWK56K6.js +2 -0
  9. package/dist/chunk-FU7AHZNN.js +1 -0
  10. package/dist/chunk-HIJ2XXGX.js +1 -0
  11. package/dist/chunk-KCXSARAA.js +1 -0
  12. package/dist/chunk-NFH3UQ3E.js +2 -0
  13. package/dist/chunk-NMBYBGC7.js +250 -0
  14. package/dist/chunk-NVAZJ5XS.js +2 -0
  15. package/dist/chunk-O5HFCH2U.js +1 -0
  16. package/dist/chunk-P6JSTIFM.js +1 -0
  17. package/dist/chunk-PGANL6F2.js +3 -0
  18. package/dist/chunk-Q4O2HGWS.js +251 -0
  19. package/dist/chunk-QTWU7UNA.js +5 -0
  20. package/dist/chunk-RP26WO4R.js +1 -0
  21. package/dist/chunk-SNFAPSLA.js +1 -0
  22. package/dist/chunk-T222K6IV.js +18 -0
  23. package/dist/chunk-TKJA6W36.js +3 -0
  24. package/dist/chunk-UDPUTFQT.js +2 -0
  25. package/dist/chunk-W47Z7MGS.js +33 -0
  26. package/dist/chunk-WI6FSWGU.js +1 -0
  27. package/dist/chunk-WOP6MJKW.js +1 -0
  28. package/dist/chunk-XDOWC7EG.js +4 -0
  29. package/dist/chunk-Y2NS6HPO.js +641 -0
  30. package/dist/cli/main.js +303 -22060
  31. package/dist/client-base-6ZZJJYDY.js +1 -0
  32. package/dist/compaction-ECVQVOCT.js +1 -0
  33. package/dist/devtools-SGDUOOM4.js +1 -0
  34. package/dist/engine/engine.d.ts +8 -0
  35. package/dist/export-md-U72T7NW7.js +22 -0
  36. package/dist/file-history-7FQFEQOL.js +1 -0
  37. package/dist/index.d.ts +1 -1
  38. package/dist/index.js +1 -347
  39. package/dist/llm/token-counter.d.ts +17 -0
  40. package/dist/manager-C3TDN6MS.js +1 -0
  41. package/dist/mcp-manager-OP4XYV53.js +1 -0
  42. package/dist/memory-BNI4WEWL.js +1 -0
  43. package/dist/model-cache-HEDXI7UJ.js +1 -0
  44. package/dist/model-fetcher-BJ64META.js +1 -0
  45. package/dist/off-7SDVMMXW.js +1 -0
  46. package/dist/openai-KEWQ54TM.js +1 -0
  47. package/dist/openrouter-models-AM6M52D6.js +1 -0
  48. package/dist/openrouter-sync-5JNBL3Z6.js +1 -0
  49. package/dist/product/index.js +1 -21
  50. package/dist/run/index.js +1 -48
  51. package/dist/seatbelt-WBYROQT6.js +37 -0
  52. package/dist/session/session-manager.d.ts +2 -0
  53. package/dist/session-manager-AGWS5SMJ.js +1 -0
  54. package/dist/settings/schema.d.ts +72 -6
  55. package/dist/tool-summary-5UE62VU4.js +2 -0
  56. package/dist/tool-system/builtin/bash.d.ts +7 -1
  57. package/dist/tool-system/context.d.ts +7 -0
  58. package/dist/tool-system/sandbox/bwrap.d.ts +13 -0
  59. package/dist/tool-system/sandbox/index.d.ts +71 -0
  60. package/dist/tool-system/sandbox/off.d.ts +2 -0
  61. package/dist/tool-system/sandbox/seatbelt.d.ts +18 -0
  62. package/dist/types.d.ts +4 -0
  63. package/dist/ui/components/SessionPicker.d.ts +2 -0
  64. package/dist/ui/components/SpinnerWithVerb.d.ts +2 -2
  65. package/dist/ui/components/StatusLine.d.ts +2 -2
  66. package/dist/updater-OCNU2K2Z.js +1 -0
  67. package/package.json +7 -10
  68. package/dist/anthropic-IBTI4WL2.cjs +0 -10
  69. package/dist/anthropic-PRZZKHEZ.js +0 -10
  70. package/dist/arena/index.cjs +0 -104
  71. package/dist/arena-2LTLIXOL.js +0 -261
  72. package/dist/arena-ADB7DRFI.cjs +0 -261
  73. package/dist/chunk-2YW4FPFG.cjs +0 -101
  74. package/dist/chunk-3OA5G4TM.js +0 -47
  75. package/dist/chunk-3QO25N6E.js +0 -4711
  76. package/dist/chunk-3SBSUOWZ.js +0 -447
  77. package/dist/chunk-52LGZKT3.cjs +0 -47
  78. package/dist/chunk-55XGPMAP.cjs +0 -146
  79. package/dist/chunk-6QVAYW7C.cjs +0 -438
  80. package/dist/chunk-6S4BJ65N.js +0 -113
  81. package/dist/chunk-76HYEPDM.js +0 -307
  82. package/dist/chunk-7BI3V74Y.cjs +0 -447
  83. package/dist/chunk-7EG3V4JY.cjs +0 -113
  84. package/dist/chunk-7JVTYEEC.js +0 -340
  85. package/dist/chunk-7QIM3BKD.js +0 -44
  86. package/dist/chunk-7Y6S3OCX.js +0 -438
  87. package/dist/chunk-ABRRONJ7.js +0 -107
  88. package/dist/chunk-BSW22MPA.js +0 -146
  89. package/dist/chunk-BXCY2FSE.js +0 -203
  90. package/dist/chunk-BZ5TNE7L.js +0 -5128
  91. package/dist/chunk-DDB6QOKJ.cjs +0 -1252
  92. package/dist/chunk-HEKQCI7B.cjs +0 -224
  93. package/dist/chunk-IK4EWJBP.cjs +0 -203
  94. package/dist/chunk-ILHE7XLT.cjs +0 -107
  95. package/dist/chunk-JMR33QVF.cjs +0 -169
  96. package/dist/chunk-KAQHULYN.js +0 -54
  97. package/dist/chunk-KE4EQOWA.js +0 -294
  98. package/dist/chunk-KOVYSDHZ.cjs +0 -340
  99. package/dist/chunk-KS3RYAYL.cjs +0 -45
  100. package/dist/chunk-MD32R22I.js +0 -50
  101. package/dist/chunk-MV7YI4WO.cjs +0 -293
  102. package/dist/chunk-MY5XHADU.cjs +0 -216
  103. package/dist/chunk-NUNC3VFB.cjs +0 -307
  104. package/dist/chunk-PKGRTCCY.js +0 -9092
  105. package/dist/chunk-QARL3IDQ.js +0 -1252
  106. package/dist/chunk-S754JHLR.cjs +0 -54
  107. package/dist/chunk-SFXHZSRF.js +0 -101
  108. package/dist/chunk-SIHHIQLO.js +0 -224
  109. package/dist/chunk-T6VYG46N.js +0 -105
  110. package/dist/chunk-TNLGBJYS.cjs +0 -44
  111. package/dist/chunk-TUY2T5KP.cjs +0 -105
  112. package/dist/chunk-UXOCVJJ6.cjs +0 -9092
  113. package/dist/chunk-VIAGTYYW.js +0 -169
  114. package/dist/chunk-WASS5YWB.js +0 -215
  115. package/dist/chunk-WZJV6DJC.cjs +0 -5128
  116. package/dist/chunk-YIQBXAYU.cjs +0 -264
  117. package/dist/chunk-YKIAELDZ.cjs +0 -4711
  118. package/dist/chunk-ZBPSQCPU.js +0 -264
  119. package/dist/cli/main.cjs +0 -22156
  120. package/dist/client-base-HTF236ZD.cjs +0 -9
  121. package/dist/client-base-QKRKCOWB.js +0 -9
  122. package/dist/compaction-6VU2T643.js +0 -33
  123. package/dist/compaction-OKUNTCA7.cjs +0 -33
  124. package/dist/devtools-T2NIZBJK.cjs +0 -6
  125. package/dist/devtools-YXWHOVKR.js +0 -6
  126. package/dist/export-md-RXDW6F5W.cjs +0 -135
  127. package/dist/export-md-XXKZANW5.js +0 -135
  128. package/dist/file-history-KYPE3ECT.cjs +0 -7
  129. package/dist/file-history-LF4F7X26.js +0 -7
  130. package/dist/index.cjs +0 -347
  131. package/dist/manager-D65VFAPX.js +0 -7
  132. package/dist/manager-TTF5VHJC.cjs +0 -7
  133. package/dist/mcp-manager-QMKWPBZ4.js +0 -8
  134. package/dist/mcp-manager-Z3OKI74O.cjs +0 -8
  135. package/dist/memory-5LWZ6FI2.cjs +0 -9
  136. package/dist/memory-VIJLBAMQ.js +0 -9
  137. package/dist/model-cache-5KIYL5SL.js +0 -13
  138. package/dist/model-cache-OED3IM4R.cjs +0 -13
  139. package/dist/model-fetcher-HKGICACL.js +0 -8
  140. package/dist/model-fetcher-UR6WJOQP.cjs +0 -8
  141. package/dist/openai-JR2WEKOF.js +0 -10
  142. package/dist/openai-YBTOET4O.cjs +0 -10
  143. package/dist/openrouter-models-H56GHBHN.js +0 -15
  144. package/dist/openrouter-models-TWUFWZ5T.cjs +0 -15
  145. package/dist/openrouter-sync-5VMGN6C2.cjs +0 -11
  146. package/dist/openrouter-sync-ALEMF5IU.js +0 -11
  147. package/dist/product/index.cjs +0 -21
  148. package/dist/run/index.cjs +0 -48
  149. package/dist/session-manager-Q22BBMD3.js +0 -8
  150. package/dist/session-manager-XODQVL3C.cjs +0 -8
  151. package/dist/tool-summary-63DPIS7G.cjs +0 -31
  152. package/dist/tool-summary-NP5CDBKG.js +0 -31
  153. package/dist/updater-I7QBW4DP.cjs +0 -17
  154. package/dist/updater-NVME5S3Z.js +0 -17
@@ -1,307 +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 _chunk2YW4FPFGcjs = require('./chunk-2YW4FPFG.cjs');
4
-
5
-
6
- var _chunkKS3RYAYLcjs = require('./chunk-KS3RYAYL.cjs');
7
-
8
- // src/session/session-manager.ts
9
- _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
10
- var _fs = require('fs');
11
- var _path = require('path');
12
- var _os = require('os');
13
- var _nanoid = require('nanoid');
14
-
15
- // src/session/transcript.ts
16
- _chunkKS3RYAYLcjs.init_cjs_shims.call(void 0, );
17
-
18
-
19
-
20
- var Transcript = (_class = class _Transcript {
21
- __init() {this.events = []}
22
-
23
- __init2() {this.currentTurn = 0}
24
- getFilePath() {
25
- return this.filePath;
26
- }
27
- constructor(filePath) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);
28
- this.filePath = filePath;
29
- _fs.mkdirSync.call(void 0, _path.dirname.call(void 0, filePath), { recursive: true });
30
- if (!_fs.existsSync.call(void 0, filePath)) {
31
- _fs.writeFileSync.call(void 0, filePath, "", "utf-8");
32
- }
33
- }
34
- append(type, data) {
35
- const event = {
36
- id: _nanoid.nanoid.call(void 0, 12),
37
- type,
38
- timestamp: Date.now(),
39
- turnNumber: this.currentTurn,
40
- data
41
- };
42
- this.events.push(event);
43
- this.flush(event);
44
- return event;
45
- }
46
- appendMessage(role, content) {
47
- return this.append("message", { role, content });
48
- }
49
- appendToolUse(toolName, toolCallId, args) {
50
- return this.append("tool_use", { toolName, toolCallId, args });
51
- }
52
- appendToolResult(toolCallId, toolName, result, error) {
53
- return this.append("tool_result", { toolCallId, toolName, result, error });
54
- }
55
- appendTurnBoundary() {
56
- this.currentTurn++;
57
- return this.append("turn_boundary", { turnNumber: this.currentTurn });
58
- }
59
- appendSummary(summary, compactedRange) {
60
- return this.append("summary", {
61
- summary,
62
- trigger: "auto",
63
- compactedRange,
64
- preservedSegment: {
65
- headEventId: _optionalChain([this, 'access', _ => _.events, 'access', _2 => _2[0], 'optionalAccess', _3 => _3.id]),
66
- tailEventId: _optionalChain([this, 'access', _4 => _4.events, 'access', _5 => _5[this.events.length - 1], 'optionalAccess', _6 => _6.id])
67
- }
68
- });
69
- }
70
- appendError(error, details) {
71
- return this.append("error", { error, ...details });
72
- }
73
- /**
74
- * Derive Message[] from transcript events for sending to the LLM.
75
- * This is the critical boundary: the LLM never sees the event log directly.
76
- */
77
- toMessages() {
78
- const messages = [];
79
- for (const event of this.events) {
80
- switch (event.type) {
81
- case "message": {
82
- const { role, content } = event.data;
83
- messages.push({ role, content });
84
- break;
85
- }
86
- case "tool_use": {
87
- break;
88
- }
89
- case "tool_result": {
90
- const { toolCallId, result, error } = event.data;
91
- const lastMsg = messages[messages.length - 1];
92
- const block = {
93
- type: "tool_result",
94
- tool_use_id: toolCallId,
95
- content: error ? `Error: ${error}` : _nullishCoalesce(result, () => ( "(no output)"))
96
- };
97
- if (_optionalChain([lastMsg, 'optionalAccess', _7 => _7.role]) === "user" && Array.isArray(lastMsg.content)) {
98
- lastMsg.content.push(block);
99
- } else {
100
- messages.push({ role: "user", content: [block] });
101
- }
102
- break;
103
- }
104
- case "summary": {
105
- const { summary } = event.data;
106
- messages.push({
107
- role: "user",
108
- content: `<system-reminder>Previous conversation was summarized:
109
- ${summary}</system-reminder>`
110
- });
111
- break;
112
- }
113
- }
114
- }
115
- return messages;
116
- }
117
- getEvents(type) {
118
- if (!type) return [...this.events];
119
- return this.events.filter((e) => e.type === type);
120
- }
121
- get turnNumber() {
122
- return this.currentTurn;
123
- }
124
- get eventCount() {
125
- return this.events.length;
126
- }
127
- flush(event) {
128
- try {
129
- _fs.appendFileSync.call(void 0, this.filePath, JSON.stringify(event) + "\n", "utf-8");
130
- } catch (e2) {
131
- }
132
- }
133
- /**
134
- * Repair tool_result pairing issues:
135
- * - Orphaned tool_results (no matching tool_use) get removed
136
- * - Missing tool_results (tool_use with no result) get synthetic error results
137
- */
138
- repairToolResultPairs() {
139
- const toolUseIds = /* @__PURE__ */ new Set();
140
- const toolResultIds = /* @__PURE__ */ new Set();
141
- for (const event of this.events) {
142
- if (event.type === "tool_use") {
143
- toolUseIds.add(event.data.toolCallId);
144
- } else if (event.type === "tool_result") {
145
- toolResultIds.add(event.data.toolCallId);
146
- }
147
- }
148
- for (const id of toolUseIds) {
149
- if (!toolResultIds.has(id)) {
150
- this.append("tool_result", {
151
- toolCallId: id,
152
- toolName: "unknown",
153
- error: "[Tool result missing due to interrupted session]"
154
- });
155
- }
156
- }
157
- this.events = this.events.filter((event) => {
158
- if (event.type === "tool_result") {
159
- const id = event.data.toolCallId;
160
- return toolUseIds.has(id);
161
- }
162
- return true;
163
- });
164
- }
165
- static loadFromFile(filePath) {
166
- const transcript = new _Transcript(filePath);
167
- if (!_fs.existsSync.call(void 0, filePath)) return transcript;
168
- const content = _fs.readFileSync.call(void 0, filePath, "utf-8");
169
- const lines = content.split("\n").filter((l) => l.trim());
170
- for (const line of lines) {
171
- try {
172
- const event = JSON.parse(line);
173
- transcript.events.push(event);
174
- if (event.type === "turn_boundary") {
175
- transcript.currentTurn = _nullishCoalesce(event.data.turnNumber, () => ( transcript.currentTurn + 1));
176
- }
177
- } catch (e3) {
178
- }
179
- }
180
- transcript.repairToolResultPairs();
181
- return transcript;
182
- }
183
- }, _class);
184
-
185
- // src/session/session-manager.ts
186
- var SessionManager = class {
187
-
188
- constructor(storageDir) {
189
- this.sessionsDir = _nullishCoalesce(storageDir, () => ( _path.join.call(void 0, _os.homedir.call(void 0, ), ".code-shell", "sessions")));
190
- _fs.mkdirSync.call(void 0, this.sessionsDir, { recursive: true });
191
- }
192
- create(cwd, model, provider) {
193
- const sessionId = _nanoid.nanoid.call(void 0, 16);
194
- const sessionDir = _path.join.call(void 0, this.sessionsDir, sessionId);
195
- _fs.mkdirSync.call(void 0, sessionDir, { recursive: true });
196
- const state = {
197
- sessionId,
198
- cwd,
199
- startedAt: Date.now(),
200
- model,
201
- provider,
202
- tokenUsage: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
203
- turnCount: 0,
204
- invokedSkills: [],
205
- status: "active"
206
- };
207
- _fs.writeFileSync.call(void 0, _path.join.call(void 0, sessionDir, "state.json"), JSON.stringify(state, null, 2), "utf-8");
208
- const transcript = new Transcript(_path.join.call(void 0, sessionDir, "transcript.jsonl"));
209
- transcript.append("session_meta", {
210
- sessionId,
211
- cwd,
212
- model,
213
- provider,
214
- startedAt: state.startedAt
215
- });
216
- return { state, transcript };
217
- }
218
- resume(sessionId) {
219
- const sessionDir = _path.join.call(void 0, this.sessionsDir, sessionId);
220
- if (!_fs.existsSync.call(void 0, sessionDir)) {
221
- throw new (0, _chunk2YW4FPFGcjs.SessionError)(`Session not found: ${sessionId}`);
222
- }
223
- const stateFile = _path.join.call(void 0, sessionDir, "state.json");
224
- if (!_fs.existsSync.call(void 0, stateFile)) {
225
- throw new (0, _chunk2YW4FPFGcjs.SessionError)(`Session state file not found: ${sessionId}`);
226
- }
227
- const state = JSON.parse(_fs.readFileSync.call(void 0, stateFile, "utf-8"));
228
- const transcriptFile = _path.join.call(void 0, sessionDir, "transcript.jsonl");
229
- const transcript = Transcript.loadFromFile(transcriptFile);
230
- state.status = "active";
231
- return { state, transcript };
232
- }
233
- saveState(state) {
234
- const sessionDir = _path.join.call(void 0, this.sessionsDir, state.sessionId);
235
- _fs.mkdirSync.call(void 0, sessionDir, { recursive: true });
236
- const target = _path.join.call(void 0, sessionDir, "state.json");
237
- const tmp = `${target}.${process.pid}.${Date.now()}.tmp`;
238
- _fs.writeFileSync.call(void 0, tmp, JSON.stringify(state, null, 2), "utf-8");
239
- _fs.renameSync.call(void 0, tmp, target);
240
- }
241
- /**
242
- * Fork a session from a specific point.
243
- * Creates a new session that shares events up to the given turn,
244
- * then diverges independently.
245
- */
246
- fork(sourceSessionId, forkAtTurn) {
247
- const source = this.resume(sourceSessionId);
248
- const events = source.transcript.getEvents();
249
- const forkTurn = _nullishCoalesce(forkAtTurn, () => ( source.state.turnCount));
250
- const newBundle = this.create(
251
- source.state.cwd,
252
- source.state.model,
253
- source.state.provider
254
- );
255
- newBundle.state.parentSessionId = sourceSessionId;
256
- for (const event of events) {
257
- if (event.type === "turn_boundary" && event.data.turnNumber > forkTurn) {
258
- break;
259
- }
260
- newBundle.transcript.append(event.type, event.data);
261
- }
262
- this.saveState(newBundle.state);
263
- return newBundle;
264
- }
265
- list(limit = 20) {
266
- if (!_fs.existsSync.call(void 0, this.sessionsDir)) return [];
267
- const dirs = _fs.readdirSync.call(void 0, this.sessionsDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
268
- const sessions = [];
269
- for (const dir of dirs) {
270
- const stateFile = _path.join.call(void 0, this.sessionsDir, dir, "state.json");
271
- if (!_fs.existsSync.call(void 0, stateFile)) continue;
272
- try {
273
- const state = JSON.parse(_fs.readFileSync.call(void 0, stateFile, "utf-8"));
274
- const transcriptFile = _path.join.call(void 0, this.sessionsDir, dir, "transcript.jsonl");
275
- const preview = readFirstUserMessage(transcriptFile);
276
- sessions.push({ ...state, preview });
277
- } catch (e4) {
278
- }
279
- }
280
- return sessions.sort((a, b) => b.startedAt - a.startedAt).slice(0, limit);
281
- }
282
- };
283
- function readFirstUserMessage(transcriptFile) {
284
- if (!_fs.existsSync.call(void 0, transcriptFile)) return void 0;
285
- const raw = _fs.readFileSync.call(void 0, transcriptFile, "utf-8");
286
- for (const line of raw.split("\n")) {
287
- if (!line) continue;
288
- let event;
289
- try {
290
- event = JSON.parse(line);
291
- } catch (e5) {
292
- continue;
293
- }
294
- if (event.type !== "message") continue;
295
- if (_optionalChain([event, 'access', _8 => _8.data, 'optionalAccess', _9 => _9.role]) !== "user") continue;
296
- const content = event.data.content;
297
- const text = typeof content === "string" ? content : Array.isArray(content) ? _nullishCoalesce(_optionalChain([content, 'access', _10 => _10.find, 'call', _11 => _11((b) => b.type === "text"), 'optionalAccess', _12 => _12.text]), () => ( "")) : "";
298
- if (!text.trim()) continue;
299
- return text.replace(/\s+/g, " ").trim();
300
- }
301
- return void 0;
302
- }
303
-
304
-
305
-
306
-
307
- exports.Transcript = Transcript; exports.SessionManager = SessionManager;