alchemylab-opencode 1.0.19 → 1.0.20

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 (101) hide show
  1. package/dist/{log-TOR3B2F5.js → arktype-aI7TBD0R-ETU7X65Q.js} +1 -8
  2. package/dist/chunk-7KKA6WBY.js +12 -0
  3. package/dist/chunk-A4S3BYGY.js +12 -0
  4. package/dist/chunk-BGADAZN4.js +0 -1
  5. package/dist/chunk-BYJU35KA.js +18 -0
  6. package/dist/chunk-FT4RVZXD.js +18 -0
  7. package/dist/{mcp-W2Z3DXFD.js → chunk-LTCXIXYM.js} +1 -12
  8. package/dist/chunk-M4CB72HE.js +13 -0
  9. package/dist/chunk-M4DCWBCO.js +12 -0
  10. package/dist/chunk-MBZTOEAD.js +12 -0
  11. package/dist/chunk-N7PLTD3P.js +13 -0
  12. package/dist/chunk-QRUX5DYI.js +75 -0
  13. package/dist/chunk-T6MY2WE4.js +12 -0
  14. package/dist/{chunk-H5AN6PD4.js → chunk-T7EXROHP.js} +1 -19
  15. package/dist/chunk-UO2AIECR.js +2214 -0
  16. package/dist/{schema-EWYI6LGA.js → chunk-XREX5MYM.js} +1 -13
  17. package/dist/{run-service-B4BDQWO3.js → default-u_dwuiYb-5QQ4GXMV.js} +1 -12
  18. package/dist/effect-QlVUlMFu-ORZ7TVO5.js +12 -0
  19. package/dist/log-MVJ7H4K5.js +12 -0
  20. package/dist/mcp-7UCWZJLJ.js +12 -0
  21. package/dist/{default-u_dwuiYb-644FBWJS.js → pty.node-X2EITEZ4.js} +1 -11
  22. package/dist/registry-HGPZOISH.js +12 -0
  23. package/dist/run-DYJ5YKU4.js +20 -0
  24. package/dist/run-service-IUIOP7ZW.js +12 -0
  25. package/dist/run.js +1 -11
  26. package/dist/schema-YWIVP7UR.js +12 -0
  27. package/dist/serve.js +1 -40
  28. package/dist/server-VKRBP2QM.js +12 -0
  29. package/dist/session-Z4P4Y6MB.js +12 -0
  30. package/dist/share-next-WZUJANDA.js +12 -0
  31. package/dist/sury-CWZTCd75-IXNCX752.js +12 -0
  32. package/dist/typebox-Dei93FPO-K67WT2FO.js +12 -0
  33. package/dist/valibot--1zFm7rT-SSCP4J5I.js +12 -0
  34. package/dist/valibot-D_HTw1Gn-KPCJMJMC.js +12 -0
  35. package/dist/worktree-5JVGPJ42.js +12 -0
  36. package/dist/{arktype-aI7TBD0R-LH6JTJZZ.js → zod-Bwrt9trS-BYLM45IZ.js} +1 -10
  37. package/dist/{chunk-BI5OUHTQ.js → zod-DSgpEGAE-T3VJY2W3.js} +1 -20
  38. package/package.json +2 -2
  39. package/dist/arktype-aI7TBD0R-LH6JTJZZ.js.map +0 -7
  40. package/dist/chunk-2FM4SJ4F.js +0 -506
  41. package/dist/chunk-2FM4SJ4F.js.map +0 -7
  42. package/dist/chunk-4UCKACGO.js +0 -106
  43. package/dist/chunk-4UCKACGO.js.map +0 -7
  44. package/dist/chunk-AHJSL352.js +0 -160
  45. package/dist/chunk-AHJSL352.js.map +0 -7
  46. package/dist/chunk-ASJTXZ3G.js +0 -730
  47. package/dist/chunk-ASJTXZ3G.js.map +0 -7
  48. package/dist/chunk-BGADAZN4.js.map +0 -7
  49. package/dist/chunk-BI5OUHTQ.js.map +0 -7
  50. package/dist/chunk-COCF34ZS.js +0 -144
  51. package/dist/chunk-COCF34ZS.js.map +0 -7
  52. package/dist/chunk-E2D2QSW7.js +0 -6675
  53. package/dist/chunk-E2D2QSW7.js.map +0 -7
  54. package/dist/chunk-FXA7YNMN.js +0 -49
  55. package/dist/chunk-FXA7YNMN.js.map +0 -7
  56. package/dist/chunk-H5AN6PD4.js.map +0 -7
  57. package/dist/chunk-HORZKFCR.js +0 -88
  58. package/dist/chunk-HORZKFCR.js.map +0 -7
  59. package/dist/chunk-PV6JYN6T.js +0 -24205
  60. package/dist/chunk-PV6JYN6T.js.map +0 -7
  61. package/dist/chunk-RYVKLRJZ.js +0 -321
  62. package/dist/chunk-RYVKLRJZ.js.map +0 -7
  63. package/dist/chunk-SZM3G6UF.js +0 -1857
  64. package/dist/chunk-SZM3G6UF.js.map +0 -7
  65. package/dist/chunk-WHJ5FGUS.js +0 -5706
  66. package/dist/chunk-WHJ5FGUS.js.map +0 -7
  67. package/dist/default-u_dwuiYb-644FBWJS.js.map +0 -7
  68. package/dist/effect-QlVUlMFu-GLKKNZAC.js +0 -29
  69. package/dist/effect-QlVUlMFu-GLKKNZAC.js.map +0 -7
  70. package/dist/log-TOR3B2F5.js.map +0 -7
  71. package/dist/mcp-W2Z3DXFD.js.map +0 -7
  72. package/dist/pty.node-RHOAUGH6.js +0 -40
  73. package/dist/pty.node-RHOAUGH6.js.map +0 -7
  74. package/dist/registry-FWM7Q3YW.js +0 -24
  75. package/dist/registry-FWM7Q3YW.js.map +0 -7
  76. package/dist/run-PMUMTYTZ.js +0 -4796
  77. package/dist/run-PMUMTYTZ.js.map +0 -7
  78. package/dist/run-service-B4BDQWO3.js.map +0 -7
  79. package/dist/run.js.map +0 -7
  80. package/dist/schema-EWYI6LGA.js.map +0 -7
  81. package/dist/serve.js.map +0 -7
  82. package/dist/server-HETOVWO6.js +0 -30
  83. package/dist/server-HETOVWO6.js.map +0 -7
  84. package/dist/session-37HDF4U2.js +0 -24
  85. package/dist/session-37HDF4U2.js.map +0 -7
  86. package/dist/share-next-MP7REE74.js +0 -25
  87. package/dist/share-next-MP7REE74.js.map +0 -7
  88. package/dist/sury-CWZTCd75-SVV5EKIT.js +0 -29
  89. package/dist/sury-CWZTCd75-SVV5EKIT.js.map +0 -7
  90. package/dist/typebox-Dei93FPO-LMTONO64.js +0 -21
  91. package/dist/typebox-Dei93FPO-LMTONO64.js.map +0 -7
  92. package/dist/valibot--1zFm7rT-HRT4VHTJ.js +0 -29
  93. package/dist/valibot--1zFm7rT-HRT4VHTJ.js.map +0 -7
  94. package/dist/valibot-D_HTw1Gn-SZJR3J76.js +0 -60
  95. package/dist/valibot-D_HTw1Gn-SZJR3J76.js.map +0 -7
  96. package/dist/worktree-ADWVQ6IR.js +0 -64
  97. package/dist/worktree-ADWVQ6IR.js.map +0 -7
  98. package/dist/zod-Bwrt9trS-5S7UQQDY.js +0 -43
  99. package/dist/zod-Bwrt9trS-5S7UQQDY.js.map +0 -7
  100. package/dist/zod-DSgpEGAE-X2KPFU7C.js +0 -56
  101. package/dist/zod-DSgpEGAE-X2KPFU7C.js.map +0 -7
@@ -1,506 +0,0 @@
1
- // Built by esbuild from opencode-server source
2
- if (typeof globalThis.Bun === 'undefined') {
3
- globalThis.Bun = {
4
- version: '0.0.0-node-compat',
5
- stdin: { async text() { const chunks = []; for await (const c of process.stdin) chunks.push(c); return Buffer.concat(chunks).toString(); } },
6
- which(cmd) { try { return require('child_process').execFileSync('which', [cmd], { encoding: 'utf8' }).trim(); } catch { return null; } },
7
- };
8
- }
9
- if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
10
- if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
11
-
12
-
13
- // packages/opencode/src/util/log.ts
14
- import path3 from "path";
15
- import fs2 from "fs/promises";
16
- import { createWriteStream as createWriteStream2 } from "fs";
17
-
18
- // packages/opencode/src/global/index.ts
19
- import fs from "fs/promises";
20
- import { xdgData, xdgCache, xdgConfig, xdgState } from "xdg-basedir";
21
- import path2 from "path";
22
- import os from "os";
23
-
24
- // packages/opencode/src/util/filesystem.ts
25
- import { chmod, mkdir, readFile, stat as statFile, writeFile } from "fs/promises";
26
- import { createWriteStream, existsSync, statSync } from "fs";
27
- import { lookup } from "mime-types";
28
- import { realpathSync as realpathSync2 } from "fs";
29
- import { dirname, join, relative, resolve as pathResolve, win32 } from "path";
30
- import { Readable } from "stream";
31
- import { pipeline } from "stream/promises";
32
-
33
- // packages/opencode/src/util/glob.ts
34
- import { glob, globSync } from "glob";
35
- import { minimatch } from "minimatch";
36
- var Glob;
37
- ((Glob2) => {
38
- function toGlobOptions(options) {
39
- return {
40
- cwd: options.cwd,
41
- absolute: options.absolute,
42
- dot: options.dot,
43
- follow: options.symlink ?? false,
44
- nodir: options.include !== "all"
45
- };
46
- }
47
- async function scan(pattern, options = {}) {
48
- return glob(pattern, toGlobOptions(options));
49
- }
50
- Glob2.scan = scan;
51
- function scanSync(pattern, options = {}) {
52
- return globSync(pattern, toGlobOptions(options));
53
- }
54
- Glob2.scanSync = scanSync;
55
- function match(pattern, filepath) {
56
- return minimatch(filepath, pattern, { dot: true });
57
- }
58
- Glob2.match = match;
59
- })(Glob || (Glob = {}));
60
-
61
- // packages/opencode/src/util/protected-root.ts
62
- import path from "path";
63
- import { realpathSync } from "fs";
64
- var ProtectedRoot;
65
- ((ProtectedRoot2) => {
66
- ProtectedRoot2.ALLOWED = [".alchemy_lab", ".opencode", ".alchemy", ".git", "opencode.json", ".alchemy-project-creation.lock"];
67
- const ENV_VAR = "ALCHEMY_PROTECTED_ROOT";
68
- let cache2;
69
- function realish(target) {
70
- let head = path.resolve(target);
71
- const tail = [];
72
- for (; ; ) {
73
- try {
74
- return path.join(realpathSync(head), ...tail.reverse());
75
- } catch {
76
- const parent = path.dirname(head);
77
- if (parent === head) return path.resolve(target);
78
- tail.push(path.basename(head));
79
- head = parent;
80
- }
81
- }
82
- }
83
- const same = (a, b) => process.platform === "win32" ? a.toLowerCase() === b.toLowerCase() : a === b;
84
- const within = (parent, child) => same(parent, child) || same(parent + path.sep, child.slice(0, parent.length + 1));
85
- function dir() {
86
- const raw = process.env[ENV_VAR];
87
- if (!cache2 || cache2.raw !== raw) cache2 = { raw, root: raw && raw.trim() ? realish(raw.trim()) : void 0 };
88
- return cache2.root;
89
- }
90
- ProtectedRoot2.dir = dir;
91
- function allows(target) {
92
- const root = dir();
93
- if (!root || !target) return true;
94
- const full = realish(target);
95
- if (!within(root, full)) return true;
96
- return ProtectedRoot2.ALLOWED.some((name) => within(path.join(root, name), full));
97
- }
98
- ProtectedRoot2.allows = allows;
99
- function assert(target, what) {
100
- if (!target || allows(target)) return;
101
- const root = dir();
102
- throw new Error(
103
- `${what} refused: ${target} is in the project folder, which belongs to the user. AlchemyLab works in a request worktree under ${path.join(root, ".alchemy_lab")} and lands changes through its merge. Nothing was written.`
104
- );
105
- }
106
- ProtectedRoot2.assert = assert;
107
- })(ProtectedRoot || (ProtectedRoot = {}));
108
-
109
- // packages/opencode/src/util/filesystem.ts
110
- var Filesystem;
111
- ((Filesystem2) => {
112
- async function exists(p) {
113
- return existsSync(p);
114
- }
115
- Filesystem2.exists = exists;
116
- async function isDir(p) {
117
- try {
118
- return statSync(p).isDirectory();
119
- } catch {
120
- return false;
121
- }
122
- }
123
- Filesystem2.isDir = isDir;
124
- function stat(p) {
125
- return statSync(p, { throwIfNoEntry: false }) ?? void 0;
126
- }
127
- Filesystem2.stat = stat;
128
- async function statAsync(p) {
129
- return statFile(p).catch((e) => {
130
- if (isEnoent(e)) return void 0;
131
- throw e;
132
- });
133
- }
134
- Filesystem2.statAsync = statAsync;
135
- async function size(p) {
136
- const s = stat(p)?.size ?? 0;
137
- return typeof s === "bigint" ? Number(s) : s;
138
- }
139
- Filesystem2.size = size;
140
- async function readText(p) {
141
- return readFile(p, "utf-8");
142
- }
143
- Filesystem2.readText = readText;
144
- async function readJson(p) {
145
- return JSON.parse(await readFile(p, "utf-8"));
146
- }
147
- Filesystem2.readJson = readJson;
148
- async function readBytes(p) {
149
- return readFile(p);
150
- }
151
- Filesystem2.readBytes = readBytes;
152
- async function readArrayBuffer(p) {
153
- const buf = await readFile(p);
154
- return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
155
- }
156
- Filesystem2.readArrayBuffer = readArrayBuffer;
157
- function isEnoent(e) {
158
- return typeof e === "object" && e !== null && "code" in e && e.code === "ENOENT";
159
- }
160
- async function write(p, content, mode) {
161
- ProtectedRoot.assert(p, "write");
162
- try {
163
- if (mode) {
164
- await writeFile(p, content, { mode });
165
- } else {
166
- await writeFile(p, content);
167
- }
168
- } catch (e) {
169
- if (isEnoent(e)) {
170
- await mkdir(dirname(p), { recursive: true });
171
- if (mode) {
172
- await writeFile(p, content, { mode });
173
- } else {
174
- await writeFile(p, content);
175
- }
176
- return;
177
- }
178
- throw e;
179
- }
180
- }
181
- Filesystem2.write = write;
182
- async function writeJson(p, data2, mode) {
183
- return write(p, JSON.stringify(data2, null, 2), mode);
184
- }
185
- Filesystem2.writeJson = writeJson;
186
- async function writeStream(p, stream, mode) {
187
- ProtectedRoot.assert(p, "write");
188
- const dir = dirname(p);
189
- if (!existsSync(dir)) {
190
- await mkdir(dir, { recursive: true });
191
- }
192
- const nodeStream = stream instanceof ReadableStream ? Readable.fromWeb(stream) : stream;
193
- const writeStream2 = createWriteStream(p);
194
- await pipeline(nodeStream, writeStream2);
195
- if (mode) {
196
- await chmod(p, mode);
197
- }
198
- }
199
- Filesystem2.writeStream = writeStream;
200
- function mimeType(p) {
201
- return lookup(p) || "application/octet-stream";
202
- }
203
- Filesystem2.mimeType = mimeType;
204
- function normalizePath(p) {
205
- if (process.platform !== "win32") return p;
206
- const resolved = win32.normalize(win32.resolve(windowsPath(p)));
207
- try {
208
- return realpathSync2.native(resolved);
209
- } catch {
210
- return resolved;
211
- }
212
- }
213
- Filesystem2.normalizePath = normalizePath;
214
- function normalizePathPattern(p) {
215
- if (process.platform !== "win32") return p;
216
- if (p === "*") return p;
217
- const match = p.match(/^(.*)[\\/]\*$/);
218
- if (!match) return normalizePath(p);
219
- const dir = /^[A-Za-z]:$/.test(match[1]) ? match[1] + "\\" : match[1];
220
- return join(normalizePath(dir), "*");
221
- }
222
- Filesystem2.normalizePathPattern = normalizePathPattern;
223
- function resolve(p) {
224
- const resolved = pathResolve(windowsPath(p));
225
- try {
226
- return normalizePath(realpathSync2(resolved));
227
- } catch (e) {
228
- if (isEnoent(e)) return normalizePath(resolved);
229
- throw e;
230
- }
231
- }
232
- Filesystem2.resolve = resolve;
233
- function windowsPath(p) {
234
- if (process.platform !== "win32") return p;
235
- return p.replace(/^\/([a-zA-Z]):(?:[\\/]|$)/, (_, drive) => `${drive.toUpperCase()}:/`).replace(/^\/([a-zA-Z])(?:\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`).replace(/^\/cygdrive\/([a-zA-Z])(?:\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`).replace(/^\/mnt\/([a-zA-Z])(?:\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`);
236
- }
237
- Filesystem2.windowsPath = windowsPath;
238
- function overlaps(a, b) {
239
- const relA = relative(a, b);
240
- const relB = relative(b, a);
241
- return !relA || !relA.startsWith("..") || !relB || !relB.startsWith("..");
242
- }
243
- Filesystem2.overlaps = overlaps;
244
- function contains(parent, child) {
245
- return !relative(parent, child).startsWith("..");
246
- }
247
- Filesystem2.contains = contains;
248
- async function findUp(target, start, stop, options) {
249
- const dirs = [start];
250
- let current = start;
251
- while (true) {
252
- if (stop === current) break;
253
- const parent = dirname(current);
254
- if (parent === current) break;
255
- dirs.push(parent);
256
- current = parent;
257
- }
258
- const targets = Array.isArray(target) ? target : [target];
259
- const result = [];
260
- for (const dir of options?.rootFirst ? dirs.toReversed() : dirs) {
261
- for (const item of targets) {
262
- const search = join(dir, item);
263
- if (await exists(search)) result.push(search);
264
- }
265
- }
266
- return result;
267
- }
268
- Filesystem2.findUp = findUp;
269
- async function* up(options) {
270
- const { targets, start, stop } = options;
271
- let current = start;
272
- while (true) {
273
- for (const target of targets) {
274
- const search = join(current, target);
275
- if (await exists(search)) yield search;
276
- }
277
- if (stop === current) break;
278
- const parent = dirname(current);
279
- if (parent === current) break;
280
- current = parent;
281
- }
282
- }
283
- Filesystem2.up = up;
284
- async function globUp(pattern, start, stop) {
285
- let current = start;
286
- const result = [];
287
- while (true) {
288
- try {
289
- const matches = await Glob.scan(pattern, {
290
- cwd: current,
291
- absolute: true,
292
- include: "file",
293
- dot: true
294
- });
295
- result.push(...matches);
296
- } catch {
297
- }
298
- if (stop === current) break;
299
- const parent = dirname(current);
300
- if (parent === current) break;
301
- current = parent;
302
- }
303
- return result;
304
- }
305
- Filesystem2.globUp = globUp;
306
- })(Filesystem || (Filesystem = {}));
307
-
308
- // packages/opencode/src/global/index.ts
309
- var app = "opencode";
310
- var customDataDir = process.env["OPENCODE_DATA_DIR"];
311
- var data = customDataDir || path2.join(xdgData, app);
312
- var globalData = path2.join(xdgData, app);
313
- var cache = path2.join(xdgCache, app);
314
- var config = path2.join(xdgConfig, app);
315
- var state = customDataDir ? path2.join(customDataDir, "state") : path2.join(xdgState, app);
316
- var Global;
317
- ((Global2) => {
318
- Global2.Path = {
319
- // Allow override via OPENCODE_TEST_HOME for test isolation
320
- get home() {
321
- return process.env.OPENCODE_TEST_HOME || os.homedir();
322
- },
323
- data,
324
- globalData,
325
- // user-global data dir (for auth, credentials — not affected by OPENCODE_DATA_DIR)
326
- bin: path2.join(cache, "bin"),
327
- log: path2.join(data, "log"),
328
- cache,
329
- config,
330
- state
331
- };
332
- })(Global || (Global = {}));
333
- await Promise.all([
334
- fs.mkdir(Global.Path.data, { recursive: true }),
335
- fs.mkdir(Global.Path.config, { recursive: true }),
336
- fs.mkdir(Global.Path.state, { recursive: true }),
337
- fs.mkdir(Global.Path.log, { recursive: true }),
338
- fs.mkdir(Global.Path.bin, { recursive: true })
339
- ]);
340
- var CACHE_VERSION = "21";
341
- var version = await Filesystem.readText(path2.join(Global.Path.cache, "version")).catch(() => "0");
342
- if (version !== CACHE_VERSION) {
343
- try {
344
- const contents = await fs.readdir(Global.Path.cache);
345
- await Promise.all(
346
- contents.map(
347
- (item) => fs.rm(path2.join(Global.Path.cache, item), {
348
- recursive: true,
349
- force: true
350
- })
351
- )
352
- );
353
- } catch (e) {
354
- }
355
- await Filesystem.write(path2.join(Global.Path.cache, "version"), CACHE_VERSION);
356
- }
357
-
358
- // packages/opencode/src/util/log.ts
359
- import z from "zod";
360
- var Log;
361
- ((Log2) => {
362
- Log2.Level = z.enum(["DEBUG", "INFO", "WARN", "ERROR"]).meta({ ref: "LogLevel", description: "Log level" });
363
- const levelPriority = {
364
- DEBUG: 0,
365
- INFO: 1,
366
- WARN: 2,
367
- ERROR: 3
368
- };
369
- let level = "INFO";
370
- function shouldLog(input) {
371
- return levelPriority[input] >= levelPriority[level];
372
- }
373
- const loggers = /* @__PURE__ */ new Map();
374
- Log2.Default = create({ service: "default" });
375
- let logpath = "";
376
- function file() {
377
- return logpath;
378
- }
379
- Log2.file = file;
380
- let write = (msg) => {
381
- process.stderr.write(msg);
382
- return msg.length;
383
- };
384
- async function init(options) {
385
- if (options.level) level = options.level;
386
- cleanup(Global.Path.log);
387
- if (options.print) return;
388
- logpath = path3.join(
389
- Global.Path.log,
390
- options.dev ? "dev.log" : (/* @__PURE__ */ new Date()).toISOString().split(".")[0].replace(/:/g, "") + ".log"
391
- );
392
- await fs2.truncate(logpath).catch(() => {
393
- });
394
- const stream = createWriteStream2(logpath, { flags: "a" });
395
- write = async (msg) => {
396
- return new Promise((resolve, reject) => {
397
- stream.write(msg, (err) => {
398
- if (err) reject(err);
399
- else resolve(msg.length);
400
- });
401
- });
402
- };
403
- }
404
- Log2.init = init;
405
- async function cleanup(dir) {
406
- const files = await Glob.scan("????-??-??T??????.log", {
407
- cwd: dir,
408
- absolute: true,
409
- include: "file"
410
- });
411
- if (files.length <= 5) return;
412
- const filesToDelete = files.slice(0, -10);
413
- await Promise.all(filesToDelete.map((file2) => fs2.unlink(file2).catch(() => {
414
- })));
415
- }
416
- function formatError(error, depth = 0) {
417
- const result = error.message;
418
- return error.cause instanceof Error && depth < 10 ? result + " Caused by: " + formatError(error.cause, depth + 1) : result;
419
- }
420
- let last = Date.now();
421
- function create(tags) {
422
- tags = tags || {};
423
- const service = tags["service"];
424
- if (service && typeof service === "string") {
425
- const cached = loggers.get(service);
426
- if (cached) {
427
- return cached;
428
- }
429
- }
430
- function build(message, extra) {
431
- const prefix = Object.entries({
432
- ...tags,
433
- ...extra
434
- }).filter(([_, value]) => value !== void 0 && value !== null).map(([key, value]) => {
435
- const prefix2 = `${key}=`;
436
- if (value instanceof Error) return prefix2 + formatError(value);
437
- if (typeof value === "object") return prefix2 + JSON.stringify(value);
438
- return prefix2 + value;
439
- }).join(" ");
440
- const next = /* @__PURE__ */ new Date();
441
- const diff = next.getTime() - last;
442
- last = next.getTime();
443
- return [next.toISOString().split(".")[0], "+" + diff + "ms", prefix, message].filter(Boolean).join(" ") + "\n";
444
- }
445
- const result = {
446
- debug(message, extra) {
447
- if (shouldLog("DEBUG")) {
448
- write("DEBUG " + build(message, extra));
449
- }
450
- },
451
- info(message, extra) {
452
- if (shouldLog("INFO")) {
453
- write("INFO " + build(message, extra));
454
- }
455
- },
456
- error(message, extra) {
457
- if (shouldLog("ERROR")) {
458
- write("ERROR " + build(message, extra));
459
- }
460
- },
461
- warn(message, extra) {
462
- if (shouldLog("WARN")) {
463
- write("WARN " + build(message, extra));
464
- }
465
- },
466
- tag(key, value) {
467
- if (tags) tags[key] = value;
468
- return result;
469
- },
470
- clone() {
471
- return Log2.create({ ...tags });
472
- },
473
- time(message, extra) {
474
- const now = Date.now();
475
- result.info(message, { status: "started", ...extra });
476
- function stop() {
477
- result.info(message, {
478
- status: "completed",
479
- duration: Date.now() - now,
480
- ...extra
481
- });
482
- }
483
- return {
484
- stop,
485
- [Symbol.dispose]() {
486
- stop();
487
- }
488
- };
489
- }
490
- };
491
- if (service && typeof service === "string") {
492
- loggers.set(service, result);
493
- }
494
- return result;
495
- }
496
- Log2.create = create;
497
- })(Log || (Log = {}));
498
-
499
- export {
500
- Glob,
501
- ProtectedRoot,
502
- Filesystem,
503
- Global,
504
- Log
505
- };
506
- //# sourceMappingURL=chunk-2FM4SJ4F.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../packages/opencode/src/util/log.ts", "../packages/opencode/src/global/index.ts", "../packages/opencode/src/util/filesystem.ts", "../packages/opencode/src/util/glob.ts", "../packages/opencode/src/util/protected-root.ts"],
4
- "sourcesContent": ["import path from \"path\"\nimport fs from \"fs/promises\"\nimport { createWriteStream } from \"fs\"\nimport { Global } from \"../global\"\nimport z from \"zod\"\nimport { Glob } from \"./glob\"\n\nexport namespace Log {\n export const Level = z.enum([\"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]).meta({ ref: \"LogLevel\", description: \"Log level\" })\n export type Level = z.infer<typeof Level>\n\n const levelPriority: Record<Level, number> = {\n DEBUG: 0,\n INFO: 1,\n WARN: 2,\n ERROR: 3,\n }\n\n let level: Level = \"INFO\"\n\n function shouldLog(input: Level): boolean {\n return levelPriority[input] >= levelPriority[level]\n }\n\n export type Logger = {\n debug(message?: any, extra?: Record<string, any>): void\n info(message?: any, extra?: Record<string, any>): void\n error(message?: any, extra?: Record<string, any>): void\n warn(message?: any, extra?: Record<string, any>): void\n tag(key: string, value: string): Logger\n clone(): Logger\n time(\n message: string,\n extra?: Record<string, any>,\n ): {\n stop(): void\n [Symbol.dispose](): void\n }\n }\n\n const loggers = new Map<string, Logger>()\n\n export const Default = create({ service: \"default\" })\n\n export interface Options {\n print: boolean\n dev?: boolean\n level?: Level\n }\n\n let logpath = \"\"\n export function file() {\n return logpath\n }\n let write = (msg: any) => {\n process.stderr.write(msg)\n return msg.length\n }\n\n export async function init(options: Options) {\n if (options.level) level = options.level\n cleanup(Global.Path.log)\n if (options.print) return\n logpath = path.join(\n Global.Path.log,\n options.dev ? \"dev.log\" : new Date().toISOString().split(\".\")[0].replace(/:/g, \"\") + \".log\",\n )\n await fs.truncate(logpath).catch(() => {})\n const stream = createWriteStream(logpath, { flags: \"a\" })\n write = async (msg: any) => {\n return new Promise((resolve, reject) => {\n stream.write(msg, (err) => {\n if (err) reject(err)\n else resolve(msg.length)\n })\n })\n }\n }\n\n async function cleanup(dir: string) {\n const files = await Glob.scan(\"????-??-??T??????.log\", {\n cwd: dir,\n absolute: true,\n include: \"file\",\n })\n if (files.length <= 5) return\n\n const filesToDelete = files.slice(0, -10)\n await Promise.all(filesToDelete.map((file) => fs.unlink(file).catch(() => {})))\n }\n\n function formatError(error: Error, depth = 0): string {\n const result = error.message\n return error.cause instanceof Error && depth < 10\n ? result + \" Caused by: \" + formatError(error.cause, depth + 1)\n : result\n }\n\n let last = Date.now()\n export function create(tags?: Record<string, any>) {\n tags = tags || {}\n\n const service = tags[\"service\"]\n if (service && typeof service === \"string\") {\n const cached = loggers.get(service)\n if (cached) {\n return cached\n }\n }\n\n function build(message: any, extra?: Record<string, any>) {\n const prefix = Object.entries({\n ...tags,\n ...extra,\n })\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => {\n const prefix = `${key}=`\n if (value instanceof Error) return prefix + formatError(value)\n if (typeof value === \"object\") return prefix + JSON.stringify(value)\n return prefix + value\n })\n .join(\" \")\n const next = new Date()\n const diff = next.getTime() - last\n last = next.getTime()\n return [next.toISOString().split(\".\")[0], \"+\" + diff + \"ms\", prefix, message].filter(Boolean).join(\" \") + \"\\n\"\n }\n const result: Logger = {\n debug(message?: any, extra?: Record<string, any>) {\n if (shouldLog(\"DEBUG\")) {\n write(\"DEBUG \" + build(message, extra))\n }\n },\n info(message?: any, extra?: Record<string, any>) {\n if (shouldLog(\"INFO\")) {\n write(\"INFO \" + build(message, extra))\n }\n },\n error(message?: any, extra?: Record<string, any>) {\n if (shouldLog(\"ERROR\")) {\n write(\"ERROR \" + build(message, extra))\n }\n },\n warn(message?: any, extra?: Record<string, any>) {\n if (shouldLog(\"WARN\")) {\n write(\"WARN \" + build(message, extra))\n }\n },\n tag(key: string, value: string) {\n if (tags) tags[key] = value\n return result\n },\n clone() {\n return Log.create({ ...tags })\n },\n time(message: string, extra?: Record<string, any>) {\n const now = Date.now()\n result.info(message, { status: \"started\", ...extra })\n function stop() {\n result.info(message, {\n status: \"completed\",\n duration: Date.now() - now,\n ...extra,\n })\n }\n return {\n stop,\n [Symbol.dispose]() {\n stop()\n },\n }\n },\n }\n\n if (service && typeof service === \"string\") {\n loggers.set(service, result)\n }\n\n return result\n }\n}\n", "import fs from \"fs/promises\"\nimport { xdgData, xdgCache, xdgConfig, xdgState } from \"xdg-basedir\"\nimport path from \"path\"\nimport os from \"os\"\nimport { Filesystem } from \"../util/filesystem\"\n\nconst app = \"opencode\"\n\n// OPENCODE_DATA_DIR: override data/state/config/log to a custom directory (e.g. alchemylab isolation)\nconst customDataDir = process.env[\"OPENCODE_DATA_DIR\"]\nconst data = customDataDir || path.join(xdgData!, app)\nconst globalData = path.join(xdgData!, app) // always user-global, for auth/credentials\nconst cache = path.join(xdgCache!, app)\nconst config = path.join(xdgConfig!, app) // always user-global (plugins, provider config)\nconst state = customDataDir ? path.join(customDataDir, \"state\") : path.join(xdgState!, app)\n\nexport namespace Global {\n export const Path = {\n // Allow override via OPENCODE_TEST_HOME for test isolation\n get home() {\n return process.env.OPENCODE_TEST_HOME || os.homedir()\n },\n data,\n globalData, // user-global data dir (for auth, credentials \u2014 not affected by OPENCODE_DATA_DIR)\n bin: path.join(cache, \"bin\"),\n log: path.join(data, \"log\"),\n cache,\n config,\n state,\n }\n}\n\nawait Promise.all([\n fs.mkdir(Global.Path.data, { recursive: true }),\n fs.mkdir(Global.Path.config, { recursive: true }),\n fs.mkdir(Global.Path.state, { recursive: true }),\n fs.mkdir(Global.Path.log, { recursive: true }),\n fs.mkdir(Global.Path.bin, { recursive: true }),\n])\n\nconst CACHE_VERSION = \"21\"\n\nconst version = await Filesystem.readText(path.join(Global.Path.cache, \"version\")).catch(() => \"0\")\n\nif (version !== CACHE_VERSION) {\n try {\n const contents = await fs.readdir(Global.Path.cache)\n await Promise.all(\n contents.map((item) =>\n fs.rm(path.join(Global.Path.cache, item), {\n recursive: true,\n force: true,\n }),\n ),\n )\n } catch (e) {}\n await Filesystem.write(path.join(Global.Path.cache, \"version\"), CACHE_VERSION)\n}\n", "import { chmod, mkdir, readFile, stat as statFile, writeFile } from \"fs/promises\"\nimport { createWriteStream, existsSync, statSync } from \"fs\"\nimport { lookup } from \"mime-types\"\nimport { realpathSync } from \"fs\"\nimport { dirname, join, relative, resolve as pathResolve, win32 } from \"path\"\nimport { Readable } from \"stream\"\nimport { pipeline } from \"stream/promises\"\nimport { Glob } from \"./glob\"\nimport { ProtectedRoot } from \"./protected-root\"\n\nexport namespace Filesystem {\n // Fast sync version for metadata checks\n export async function exists(p: string): Promise<boolean> {\n return existsSync(p)\n }\n\n export async function isDir(p: string): Promise<boolean> {\n try {\n return statSync(p).isDirectory()\n } catch {\n return false\n }\n }\n\n export function stat(p: string): ReturnType<typeof statSync> | undefined {\n return statSync(p, { throwIfNoEntry: false }) ?? undefined\n }\n\n export async function statAsync(p: string): Promise<ReturnType<typeof statSync> | undefined> {\n return statFile(p).catch((e) => {\n if (isEnoent(e)) return undefined\n throw e\n })\n }\n\n export async function size(p: string): Promise<number> {\n const s = stat(p)?.size ?? 0\n return typeof s === \"bigint\" ? Number(s) : s\n }\n\n export async function readText(p: string): Promise<string> {\n return readFile(p, \"utf-8\")\n }\n\n export async function readJson<T = any>(p: string): Promise<T> {\n return JSON.parse(await readFile(p, \"utf-8\"))\n }\n\n export async function readBytes(p: string): Promise<Buffer> {\n return readFile(p)\n }\n\n export async function readArrayBuffer(p: string): Promise<ArrayBuffer> {\n const buf = await readFile(p)\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) as ArrayBuffer\n }\n\n function isEnoent(e: unknown): e is { code: \"ENOENT\" } {\n return typeof e === \"object\" && e !== null && \"code\" in e && (e as { code: string }).code === \"ENOENT\"\n }\n\n export async function write(p: string, content: string | Buffer | Uint8Array, mode?: number): Promise<void> {\n // The user's project folder is not ours to write in (protected-root.ts).\n ProtectedRoot.assert(p, \"write\")\n try {\n if (mode) {\n await writeFile(p, content, { mode })\n } else {\n await writeFile(p, content)\n }\n } catch (e) {\n if (isEnoent(e)) {\n await mkdir(dirname(p), { recursive: true })\n if (mode) {\n await writeFile(p, content, { mode })\n } else {\n await writeFile(p, content)\n }\n return\n }\n throw e\n }\n }\n\n export async function writeJson(p: string, data: unknown, mode?: number): Promise<void> {\n return write(p, JSON.stringify(data, null, 2), mode)\n }\n\n export async function writeStream(\n p: string,\n stream: ReadableStream<Uint8Array> | Readable,\n mode?: number,\n ): Promise<void> {\n ProtectedRoot.assert(p, \"write\")\n const dir = dirname(p)\n if (!existsSync(dir)) {\n await mkdir(dir, { recursive: true })\n }\n\n const nodeStream = stream instanceof ReadableStream ? Readable.fromWeb(stream as any) : stream\n const writeStream = createWriteStream(p)\n await pipeline(nodeStream, writeStream)\n\n if (mode) {\n await chmod(p, mode)\n }\n }\n\n export function mimeType(p: string): string {\n return lookup(p) || \"application/octet-stream\"\n }\n\n /**\n * On Windows, normalize a path to its canonical casing using the filesystem.\n * This is needed because Windows paths are case-insensitive but LSP servers\n * may return paths with different casing than what we send them.\n */\n export function normalizePath(p: string): string {\n if (process.platform !== \"win32\") return p\n const resolved = win32.normalize(win32.resolve(windowsPath(p)))\n try {\n return realpathSync.native(resolved)\n } catch {\n return resolved\n }\n }\n\n export function normalizePathPattern(p: string): string {\n if (process.platform !== \"win32\") return p\n if (p === \"*\") return p\n const match = p.match(/^(.*)[\\\\/]\\*$/)\n if (!match) return normalizePath(p)\n const dir = /^[A-Za-z]:$/.test(match[1]) ? match[1] + \"\\\\\" : match[1]\n return join(normalizePath(dir), \"*\")\n }\n\n // We cannot rely on path.resolve() here because git.exe may come from Git Bash, Cygwin, or MSYS2, so we need to translate these paths at the boundary.\n // Also resolves symlinks so that callers using the result as a cache key\n // always get the same canonical path for a given physical directory.\n export function resolve(p: string): string {\n const resolved = pathResolve(windowsPath(p))\n try {\n return normalizePath(realpathSync(resolved))\n } catch (e) {\n if (isEnoent(e)) return normalizePath(resolved)\n throw e\n }\n }\n\n export function windowsPath(p: string): string {\n if (process.platform !== \"win32\") return p\n return (\n p\n .replace(/^\\/([a-zA-Z]):(?:[\\\\/]|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n // Git Bash for Windows paths are typically /<drive>/...\n .replace(/^\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n // Cygwin git paths are typically /cygdrive/<drive>/...\n .replace(/^\\/cygdrive\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n // WSL paths are typically /mnt/<drive>/...\n .replace(/^\\/mnt\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n )\n }\n export function overlaps(a: string, b: string) {\n const relA = relative(a, b)\n const relB = relative(b, a)\n return !relA || !relA.startsWith(\"..\") || !relB || !relB.startsWith(\"..\")\n }\n\n export function contains(parent: string, child: string) {\n return !relative(parent, child).startsWith(\"..\")\n }\n\n export async function findUp(\n target: string,\n start: string,\n stop?: string,\n options?: { rootFirst?: boolean },\n ): Promise<string[]>\n export async function findUp(\n target: string[],\n start: string,\n stop?: string,\n options?: { rootFirst?: boolean },\n ): Promise<string[]>\n export async function findUp(\n target: string | string[],\n start: string,\n stop?: string,\n options?: { rootFirst?: boolean },\n ) {\n const dirs = [start]\n let current = start\n while (true) {\n if (stop === current) break\n const parent = dirname(current)\n if (parent === current) break\n dirs.push(parent)\n current = parent\n }\n\n const targets = Array.isArray(target) ? target : [target]\n const result = []\n for (const dir of options?.rootFirst ? dirs.toReversed() : dirs) {\n for (const item of targets) {\n const search = join(dir, item)\n if (await exists(search)) result.push(search)\n }\n }\n return result\n }\n\n export async function* up(options: { targets: string[]; start: string; stop?: string }) {\n const { targets, start, stop } = options\n let current = start\n while (true) {\n for (const target of targets) {\n const search = join(current, target)\n if (await exists(search)) yield search\n }\n if (stop === current) break\n const parent = dirname(current)\n if (parent === current) break\n current = parent\n }\n }\n\n export async function globUp(pattern: string, start: string, stop?: string) {\n let current = start\n const result = []\n while (true) {\n try {\n const matches = await Glob.scan(pattern, {\n cwd: current,\n absolute: true,\n include: \"file\",\n dot: true,\n })\n result.push(...matches)\n } catch {\n // Skip invalid glob patterns\n }\n if (stop === current) break\n const parent = dirname(current)\n if (parent === current) break\n current = parent\n }\n return result\n }\n}\n", "import { glob, globSync, type GlobOptions } from \"glob\"\nimport { minimatch } from \"minimatch\"\n\nexport namespace Glob {\n export interface Options {\n cwd?: string\n absolute?: boolean\n include?: \"file\" | \"all\"\n dot?: boolean\n symlink?: boolean\n }\n\n function toGlobOptions(options: Options): GlobOptions {\n return {\n cwd: options.cwd,\n absolute: options.absolute,\n dot: options.dot,\n follow: options.symlink ?? false,\n nodir: options.include !== \"all\",\n }\n }\n\n export async function scan(pattern: string, options: Options = {}): Promise<string[]> {\n return glob(pattern, toGlobOptions(options)) as Promise<string[]>\n }\n\n export function scanSync(pattern: string, options: Options = {}): string[] {\n return globSync(pattern, toGlobOptions(options)) as string[]\n }\n\n export function match(pattern: string, filepath: string): boolean {\n return minimatch(filepath, pattern, { dot: true })\n }\n}\n", "import path from \"path\"\nimport { realpathSync } from \"fs\"\n\n/**\n * The user's project folder belongs to the user.\n *\n * AlchemyLab works in worktrees under `.alchemy_lab/` and changes the default\n * branch only through its landing door; nothing it runs writes in the\n * checkout itself (docs/project-folder-ownership-2026-09-17.md). OpenCode's\n * own writers do not know that rule: the file tools resolve against the\n * session's directory, and an AlchemyLab session's directory IS the user's\n * folder, so switching `write`/`edit` on in config, or a session revert\n * restoring a snapshot, would write there over the user's uncommitted work.\n *\n * This refuses those writes at the filesystem, so the rule holds even when a\n * tool is enabled or a route is called. It is active only when\n * ALCHEMY_PROTECTED_ROOT is set (alchemy-local sets it when it spawns the\n * serve); plain OpenCode is unchanged.\n */\nexport namespace ProtectedRoot {\n /**\n * What AlchemyLab itself puts in the user's folder, and nothing else: its\n * worktrees and snapshots, the generated OpenCode config and the agent\n * markdowns beside it (OpenCode installs plugin dependencies under\n * .opencode/ too), and git's own metadata. The list mirrors\n * alchemy-local/src/utils/project-gitignore.ts, which is where these paths\n * are defined and ignored; keep the two together.\n */\n export const ALLOWED = [\".alchemy_lab\", \".opencode\", \".alchemy\", \".git\", \"opencode.json\", \".alchemy-project-creation.lock\"]\n\n const ENV_VAR = \"ALCHEMY_PROTECTED_ROOT\"\n\n let cache: { raw: string | undefined; root: string | undefined } | undefined\n\n /** Longest existing ancestor, resolved through symlinks, plus the rest. */\n function realish(target: string): string {\n let head = path.resolve(target)\n const tail: string[] = []\n for (;;) {\n try {\n return path.join(realpathSync(head), ...tail.reverse())\n } catch {\n const parent = path.dirname(head)\n if (parent === head) return path.resolve(target)\n tail.push(path.basename(head))\n head = parent\n }\n }\n }\n\n const same = (a: string, b: string) =>\n process.platform === \"win32\" ? a.toLowerCase() === b.toLowerCase() : a === b\n\n const within = (parent: string, child: string) =>\n same(parent, child) || same(parent + path.sep, child.slice(0, parent.length + 1))\n\n /** The protected folder, or undefined when this serve guards nothing. */\n export function dir(): string | undefined {\n const raw = process.env[ENV_VAR]\n if (!cache || cache.raw !== raw) cache = { raw, root: raw && raw.trim() ? realish(raw.trim()) : undefined }\n return cache.root\n }\n\n /** May this path be created, changed or removed? */\n export function allows(target: string): boolean {\n const root = dir()\n if (!root || !target) return true\n const full = realish(target)\n if (!within(root, full)) return true\n return ALLOWED.some((name) => within(path.join(root, name), full))\n }\n\n /**\n * Refuse a write in the user's project folder. `what` names the writer, so\n * the message says which tool tried it.\n */\n export function assert(target: string | undefined, what: string): void {\n if (!target || allows(target)) return\n const root = dir()!\n throw new Error(\n `${what} refused: ${target} is in the project folder, which belongs to the user. ` +\n `AlchemyLab works in a request worktree under ${path.join(root, \".alchemy_lab\")} and lands changes through its merge. ` +\n `Nothing was written.`,\n )\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["path", "fs", "createWriteStream", "path", "realpathSync", "Glob", "ProtectedRoot", "cache", "Filesystem", "data", "writeStream", "realpathSync", "path", "Global", "Log", "path", "fs", "createWriteStream", "file", "prefix"]
7
- }