yuurei 0.0.1
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/LICENSE +21 -0
- package/README.md +231 -0
- package/dist/artifact/collector.d.ts +15 -0
- package/dist/artifact/collector.d.ts.map +1 -0
- package/dist/artifact/collector.js +87 -0
- package/dist/artifact/collector.js.map +1 -0
- package/dist/artifact/types.d.ts +10 -0
- package/dist/artifact/types.d.ts.map +1 -0
- package/dist/artifact/types.js +2 -0
- package/dist/artifact/types.js.map +1 -0
- package/dist/cell/digest.d.ts +10 -0
- package/dist/cell/digest.d.ts.map +1 -0
- package/dist/cell/digest.js +13 -0
- package/dist/cell/digest.js.map +1 -0
- package/dist/cell/resolver.d.ts +18 -0
- package/dist/cell/resolver.d.ts.map +1 -0
- package/dist/cell/resolver.js +41 -0
- package/dist/cell/resolver.js.map +1 -0
- package/dist/cell/types.d.ts +48 -0
- package/dist/cell/types.d.ts.map +1 -0
- package/dist/cell/types.js +2 -0
- package/dist/cell/types.js.map +1 -0
- package/dist/cli/clean.d.ts +16 -0
- package/dist/cli/clean.d.ts.map +1 -0
- package/dist/cli/clean.js +24 -0
- package/dist/cli/clean.js.map +1 -0
- package/dist/cli/doctor.d.ts +29 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +160 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/exit-codes.d.ts +15 -0
- package/dist/cli/exit-codes.d.ts.map +1 -0
- package/dist/cli/exit-codes.js +18 -0
- package/dist/cli/exit-codes.js.map +1 -0
- package/dist/cli/init.d.ts +32 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +143 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/inspect.d.ts +4 -0
- package/dist/cli/inspect.d.ts.map +1 -0
- package/dist/cli/inspect.js +24 -0
- package/dist/cli/inspect.js.map +1 -0
- package/dist/cli/output.d.ts +5 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +5 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/profile-list.d.ts +3 -0
- package/dist/cli/profile-list.d.ts.map +1 -0
- package/dist/cli/profile-list.js +14 -0
- package/dist/cli/profile-list.js.map +1 -0
- package/dist/cli/run.d.ts +22 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +95 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/trace-show.d.ts +3 -0
- package/dist/cli/trace-show.d.ts.map +1 -0
- package/dist/cli/trace-show.js +22 -0
- package/dist/cli/trace-show.js.map +1 -0
- package/dist/config/discovery.d.ts +3 -0
- package/dist/config/discovery.d.ts.map +1 -0
- package/dist/config/discovery.js +18 -0
- package/dist/config/discovery.js.map +1 -0
- package/dist/config/schema.d.ts +21 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +19 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/yuurei-config.d.ts +4 -0
- package/dist/config/yuurei-config.d.ts.map +1 -0
- package/dist/config/yuurei-config.js +10 -0
- package/dist/config/yuurei-config.js.map +1 -0
- package/dist/cost/noop.d.ts +7 -0
- package/dist/cost/noop.d.ts.map +1 -0
- package/dist/cost/noop.js +10 -0
- package/dist/cost/noop.js.map +1 -0
- package/dist/cost/types.d.ts +21 -0
- package/dist/cost/types.d.ts.map +1 -0
- package/dist/cost/types.js +2 -0
- package/dist/cost/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +111 -0
- package/dist/index.js.map +1 -0
- package/dist/isolation/config-root.d.ts +9 -0
- package/dist/isolation/config-root.d.ts.map +1 -0
- package/dist/isolation/config-root.js +10 -0
- package/dist/isolation/config-root.js.map +1 -0
- package/dist/isolation/env.d.ts +2 -0
- package/dist/isolation/env.d.ts.map +1 -0
- package/dist/isolation/env.js +17 -0
- package/dist/isolation/env.js.map +1 -0
- package/dist/isolation/index.d.ts +9 -0
- package/dist/isolation/index.d.ts.map +1 -0
- package/dist/isolation/index.js +21 -0
- package/dist/isolation/index.js.map +1 -0
- package/dist/isolation/level0.d.ts +20 -0
- package/dist/isolation/level0.d.ts.map +1 -0
- package/dist/isolation/level0.js +51 -0
- package/dist/isolation/level0.js.map +1 -0
- package/dist/isolation/level1.d.ts +13 -0
- package/dist/isolation/level1.d.ts.map +1 -0
- package/dist/isolation/level1.js +58 -0
- package/dist/isolation/level1.js.map +1 -0
- package/dist/isolation/tempdir.d.ts +53 -0
- package/dist/isolation/tempdir.d.ts.map +1 -0
- package/dist/isolation/tempdir.js +87 -0
- package/dist/isolation/tempdir.js.map +1 -0
- package/dist/isolation/types.d.ts +37 -0
- package/dist/isolation/types.d.ts.map +1 -0
- package/dist/isolation/types.js +2 -0
- package/dist/isolation/types.js.map +1 -0
- package/dist/profile/loader.d.ts +9 -0
- package/dist/profile/loader.d.ts.map +1 -0
- package/dist/profile/loader.js +95 -0
- package/dist/profile/loader.js.map +1 -0
- package/dist/profile/manifest.d.ts +29 -0
- package/dist/profile/manifest.d.ts.map +1 -0
- package/dist/profile/manifest.js +28 -0
- package/dist/profile/manifest.js.map +1 -0
- package/dist/profile/types.d.ts +31 -0
- package/dist/profile/types.d.ts.map +1 -0
- package/dist/profile/types.js +2 -0
- package/dist/profile/types.js.map +1 -0
- package/dist/run/id.d.ts +7 -0
- package/dist/run/id.d.ts.map +1 -0
- package/dist/run/id.js +15 -0
- package/dist/run/id.js.map +1 -0
- package/dist/run/layout.d.ts +27 -0
- package/dist/run/layout.d.ts.map +1 -0
- package/dist/run/layout.js +45 -0
- package/dist/run/layout.js.map +1 -0
- package/dist/run/pipeline.d.ts +45 -0
- package/dist/run/pipeline.d.ts.map +1 -0
- package/dist/run/pipeline.js +246 -0
- package/dist/run/pipeline.js.map +1 -0
- package/dist/run/signals.d.ts +53 -0
- package/dist/run/signals.d.ts.map +1 -0
- package/dist/run/signals.js +74 -0
- package/dist/run/signals.js.map +1 -0
- package/dist/runtime/claude-code/args.d.ts +8 -0
- package/dist/runtime/claude-code/args.d.ts.map +1 -0
- package/dist/runtime/claude-code/args.js +13 -0
- package/dist/runtime/claude-code/args.js.map +1 -0
- package/dist/runtime/claude-code/index.d.ts +11 -0
- package/dist/runtime/claude-code/index.d.ts.map +1 -0
- package/dist/runtime/claude-code/index.js +167 -0
- package/dist/runtime/claude-code/index.js.map +1 -0
- package/dist/runtime/claude-code/paths.d.ts +3 -0
- package/dist/runtime/claude-code/paths.d.ts.map +1 -0
- package/dist/runtime/claude-code/paths.js +6 -0
- package/dist/runtime/claude-code/paths.js.map +1 -0
- package/dist/runtime/codex/args.d.ts +21 -0
- package/dist/runtime/codex/args.d.ts.map +1 -0
- package/dist/runtime/codex/args.js +35 -0
- package/dist/runtime/codex/args.js.map +1 -0
- package/dist/runtime/codex/index.d.ts +13 -0
- package/dist/runtime/codex/index.d.ts.map +1 -0
- package/dist/runtime/codex/index.js +299 -0
- package/dist/runtime/codex/index.js.map +1 -0
- package/dist/runtime/codex/paths.d.ts +3 -0
- package/dist/runtime/codex/paths.d.ts.map +1 -0
- package/dist/runtime/codex/paths.js +6 -0
- package/dist/runtime/codex/paths.js.map +1 -0
- package/dist/runtime/detect.d.ts +5 -0
- package/dist/runtime/detect.d.ts.map +1 -0
- package/dist/runtime/detect.js +42 -0
- package/dist/runtime/detect.js.map +1 -0
- package/dist/runtime/exec.d.ts +24 -0
- package/dist/runtime/exec.d.ts.map +1 -0
- package/dist/runtime/exec.js +132 -0
- package/dist/runtime/exec.js.map +1 -0
- package/dist/runtime/registry.d.ts +4 -0
- package/dist/runtime/registry.d.ts.map +1 -0
- package/dist/runtime/registry.js +23 -0
- package/dist/runtime/registry.js.map +1 -0
- package/dist/runtime/reserved-paths.d.ts +22 -0
- package/dist/runtime/reserved-paths.d.ts.map +1 -0
- package/dist/runtime/reserved-paths.js +30 -0
- package/dist/runtime/reserved-paths.js.map +1 -0
- package/dist/runtime/types.d.ts +105 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/trace/reader.d.ts +4 -0
- package/dist/trace/reader.d.ts.map +1 -0
- package/dist/trace/reader.js +9 -0
- package/dist/trace/reader.js.map +1 -0
- package/dist/trace/redact.d.ts +22 -0
- package/dist/trace/redact.d.ts.map +1 -0
- package/dist/trace/redact.js +124 -0
- package/dist/trace/redact.js.map +1 -0
- package/dist/trace/schema.d.ts +49 -0
- package/dist/trace/schema.d.ts.map +1 -0
- package/dist/trace/schema.js +53 -0
- package/dist/trace/schema.js.map +1 -0
- package/dist/trace/writer.d.ts +17 -0
- package/dist/trace/writer.d.ts.map +1 -0
- package/dist/trace/writer.js +45 -0
- package/dist/trace/writer.js.map +1 -0
- package/dist/util/fs.d.ts +17 -0
- package/dist/util/fs.d.ts.map +1 -0
- package/dist/util/fs.js +61 -0
- package/dist/util/fs.js.map +1 -0
- package/dist/util/hash.d.ts +3 -0
- package/dist/util/hash.d.ts.map +1 -0
- package/dist/util/hash.js +7 -0
- package/dist/util/hash.js.map +1 -0
- package/dist/util/json.d.ts +8 -0
- package/dist/util/json.d.ts.map +1 -0
- package/dist/util/json.js +24 -0
- package/dist/util/json.js.map +1 -0
- package/dist/util/logger.d.ts +8 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +16 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/version.d.ts +24 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +26 -0
- package/dist/version.js.map +1 -0
- package/docs/assets/yuurei-top.jpg +0 -0
- package/package.json +61 -0
package/dist/util/fs.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { access, chmod, mkdir, realpath, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { basename, dirname, join, resolve } from 'node:path';
|
|
3
|
+
import { EXIT_CODES, YuureiError } from '../cli/exit-codes.js';
|
|
4
|
+
/**
|
|
5
|
+
* Resolves `path` as far as the filesystem actually allows (symlinks and
|
|
6
|
+
* all), then appends whatever doesn't exist yet lexically. Plain
|
|
7
|
+
* `realpath(path).catch(() => resolve(path))` is NOT safe when `path`
|
|
8
|
+
* doesn't exist: it falls back to the fully-unresolved lexical path, so an
|
|
9
|
+
* existing symlinked ancestor (e.g. macOS's `/var` -> `/private/var`, which
|
|
10
|
+
* every OS temp dir sits under) is resolved on one side of a comparison and
|
|
11
|
+
* not the other, producing a false negative.
|
|
12
|
+
*/
|
|
13
|
+
async function realpathAsFarAsExists(path) {
|
|
14
|
+
try {
|
|
15
|
+
return await realpath(path);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
const parent = dirname(path);
|
|
19
|
+
if (parent === path)
|
|
20
|
+
return path; // reached the filesystem root
|
|
21
|
+
return join(await realpathAsFarAsExists(parent), basename(path));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** Whether `child` is `parent` itself or nested inside it, resolving symlinks on both sides. */
|
|
25
|
+
export async function isPathWithin(parent, child) {
|
|
26
|
+
const [realParent, realChild] = await Promise.all([
|
|
27
|
+
realpathAsFarAsExists(resolve(parent)),
|
|
28
|
+
realpathAsFarAsExists(resolve(child)),
|
|
29
|
+
]);
|
|
30
|
+
return realChild === realParent || realChild.startsWith(`${realParent}/`);
|
|
31
|
+
}
|
|
32
|
+
export async function pathExists(path) {
|
|
33
|
+
try {
|
|
34
|
+
await access(path);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Writes an in-memory file tree under `destDir`, creating parent directories.
|
|
43
|
+
* Keys are relative paths, normally produced by `loadProfile`'s guarded walk —
|
|
44
|
+
* but this is the actual filesystem-write sink, so it re-validates every key
|
|
45
|
+
* itself rather than trusting a caller-side invariant it cannot enforce.
|
|
46
|
+
*
|
|
47
|
+
* Deliberately sets no modes beyond the default: `destDir` and its
|
|
48
|
+
* permissions are the caller's policy (the adapter creates it 0700).
|
|
49
|
+
*/
|
|
50
|
+
export async function writeFileTree(destDir, files) {
|
|
51
|
+
for (const [relPath, file] of Object.entries(files)) {
|
|
52
|
+
const target = join(destDir, relPath);
|
|
53
|
+
if (!(await isPathWithin(destDir, target))) {
|
|
54
|
+
throw new YuureiError(`refusing to write ${relPath}: escapes destination directory ${destDir}`, EXIT_CODES.CONFIG_ERROR);
|
|
55
|
+
}
|
|
56
|
+
await mkdir(dirname(target), { recursive: true });
|
|
57
|
+
await writeFile(target, file.content);
|
|
58
|
+
await chmod(target, file.mode & 0o777);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/util/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;;;;;GAQG;AACH,KAAK,UAAU,qBAAqB,CAAC,IAAY;IAC/C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;QAChE,OAAO,IAAI,CAAC,MAAM,qBAAqB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,KAAa;IAC9D,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChD,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACtC,CAAC,CAAC;IACH,OAAO,SAAS,KAAK,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,KAAwD;IAExD,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,WAAW,CACnB,qBAAqB,OAAO,mCAAmC,OAAO,EAAE,EACxE,UAAU,CAAC,YAAY,CACxB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/util/hash.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAG7D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
/** Returns a `sha256:<hex>` digest of the given content. */
|
|
3
|
+
export function sha256Digest(content) {
|
|
4
|
+
const hash = createHash('sha256').update(content).digest('hex');
|
|
5
|
+
return `sha256:${hash}`;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/util/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,4DAA4D;AAC5D,MAAM,UAAU,YAAY,CAAC,OAAwB;IACnD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,OAAO,UAAU,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serializes a value to JSON with object keys sorted recursively, so that
|
|
3
|
+
* two structurally-equal values always produce the same string regardless
|
|
4
|
+
* of insertion order. Digests (cell_digest, profile digest, task digest)
|
|
5
|
+
* must be computed over this canonical form, not `JSON.stringify`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function canonicalJsonStringify(value: unknown): string;
|
|
8
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/util/json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serializes a value to JSON with object keys sorted recursively, so that
|
|
3
|
+
* two structurally-equal values always produce the same string regardless
|
|
4
|
+
* of insertion order. Digests (cell_digest, profile digest, task digest)
|
|
5
|
+
* must be computed over this canonical form, not `JSON.stringify`.
|
|
6
|
+
*/
|
|
7
|
+
export function canonicalJsonStringify(value) {
|
|
8
|
+
return JSON.stringify(sortKeysDeep(value));
|
|
9
|
+
}
|
|
10
|
+
function sortKeysDeep(value) {
|
|
11
|
+
if (Array.isArray(value)) {
|
|
12
|
+
return value.map(sortKeysDeep);
|
|
13
|
+
}
|
|
14
|
+
if (value !== null && typeof value === 'object') {
|
|
15
|
+
const entries = Object.entries(value).sort(([a], [b]) => a.localeCompare(b));
|
|
16
|
+
const sorted = {};
|
|
17
|
+
for (const [key, entryValue] of entries) {
|
|
18
|
+
sorted[key] = sortKeysDeep(entryValue);
|
|
19
|
+
}
|
|
20
|
+
return sorted;
|
|
21
|
+
}
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/util/json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACjF,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;QACF,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,OAAO,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type LogFormat = 'human' | 'json';
|
|
2
|
+
export interface Logger {
|
|
3
|
+
info(message: string, data?: Record<string, unknown>): void;
|
|
4
|
+
warn(message: string, data?: Record<string, unknown>): void;
|
|
5
|
+
error(message: string, data?: Record<string, unknown>): void;
|
|
6
|
+
}
|
|
7
|
+
export declare function createLogger(format: LogFormat): Logger;
|
|
8
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAmBtD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function createLogger(format) {
|
|
2
|
+
const write = (level, message, data) => {
|
|
3
|
+
const stream = level === 'error' ? console.error : console.log;
|
|
4
|
+
if (format === 'json') {
|
|
5
|
+
stream(JSON.stringify({ level, message, ...data }));
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
stream(data ? `${message} ${JSON.stringify(data)}` : message);
|
|
9
|
+
};
|
|
10
|
+
return {
|
|
11
|
+
info: (message, data) => write('info', message, data),
|
|
12
|
+
warn: (message, data) => write('warn', message, data),
|
|
13
|
+
error: (message, data) => write('error', message, data),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,MAAM,KAAK,GAAG,CACZ,KAAgC,EAChC,OAAe,EACf,IAA8B,EAC9B,EAAE;QACF,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;QAC/D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;QACrD,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;QACrD,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;KACxD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The published yuurei package version (`package.json` `version`). This is the
|
|
3
|
+
* single source of the version for both the CLI (`cli.version()`) and cell
|
|
4
|
+
* identity (`RunPipelineInput.yuureiVersion`, which the digest hashes) — a
|
|
5
|
+
* package bump must update both, or cells silently carry a stale version in
|
|
6
|
+
* their identity (#113).
|
|
7
|
+
*
|
|
8
|
+
* `createRequire(import.meta.url)` resolves `../package.json` relative to the
|
|
9
|
+
* compiled module (`dist/version.js`), so it reaches the manifest both from a
|
|
10
|
+
* source checkout and from the packed tarball (`dist/` sits at the package
|
|
11
|
+
* root, exactly one level below `package.json`).
|
|
12
|
+
*
|
|
13
|
+
* Distinct concepts, intentionally separate sources:
|
|
14
|
+
* - **package version** (`packageVersion`, here): the npm release number;
|
|
15
|
+
* part of the cell digest, so identical work against a different release is
|
|
16
|
+
* a different cell.
|
|
17
|
+
* - **design version** (docs/design, v0.3): which design revision the current
|
|
18
|
+
* implementation tracks; independent of package releases.
|
|
19
|
+
* - **trace schema version** (`TRACE_SCHEMA_VERSION` in `src/trace/schema.ts`):
|
|
20
|
+
* the on-disk `trace.json` shape, which only changes when that shape
|
|
21
|
+
* changes — never on package bumps (#113, schema comment).
|
|
22
|
+
*/
|
|
23
|
+
export declare const packageVersion: string;
|
|
24
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,cAAc,EAAE,MAA2C,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
const require = createRequire(import.meta.url);
|
|
3
|
+
/**
|
|
4
|
+
* The published yuurei package version (`package.json` `version`). This is the
|
|
5
|
+
* single source of the version for both the CLI (`cli.version()`) and cell
|
|
6
|
+
* identity (`RunPipelineInput.yuureiVersion`, which the digest hashes) — a
|
|
7
|
+
* package bump must update both, or cells silently carry a stale version in
|
|
8
|
+
* their identity (#113).
|
|
9
|
+
*
|
|
10
|
+
* `createRequire(import.meta.url)` resolves `../package.json` relative to the
|
|
11
|
+
* compiled module (`dist/version.js`), so it reaches the manifest both from a
|
|
12
|
+
* source checkout and from the packed tarball (`dist/` sits at the package
|
|
13
|
+
* root, exactly one level below `package.json`).
|
|
14
|
+
*
|
|
15
|
+
* Distinct concepts, intentionally separate sources:
|
|
16
|
+
* - **package version** (`packageVersion`, here): the npm release number;
|
|
17
|
+
* part of the cell digest, so identical work against a different release is
|
|
18
|
+
* a different cell.
|
|
19
|
+
* - **design version** (docs/design, v0.3): which design revision the current
|
|
20
|
+
* implementation tracks; independent of package releases.
|
|
21
|
+
* - **trace schema version** (`TRACE_SCHEMA_VERSION` in `src/trace/schema.ts`):
|
|
22
|
+
* the on-disk `trace.json` shape, which only changes when that shape
|
|
23
|
+
* changes — never on package bumps (#113, schema comment).
|
|
24
|
+
*/
|
|
25
|
+
export const packageVersion = require('../package.json').version;
|
|
26
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAW,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC"}
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "yuurei",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Isolated, reproducible runtime environments for coding agents (Claude Code, Codex).",
|
|
5
|
+
"homepage": "https://github.com/shimpeiws/yuurei#readme",
|
|
6
|
+
"bugs": {
|
|
7
|
+
"url": "https://github.com/shimpeiws/yuurei/issues"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/shimpeiws/yuurei.git"
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"yuurei": "dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"docs/assets"
|
|
20
|
+
],
|
|
21
|
+
"type": "module",
|
|
22
|
+
"main": "./dist/index.js",
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"dev": "node --import tsx src/index.ts",
|
|
29
|
+
"build": "tsc --build",
|
|
30
|
+
"test": "vitest run",
|
|
31
|
+
"test:watch": "vitest",
|
|
32
|
+
"check": "oxlint --deny-warnings",
|
|
33
|
+
"check:fix": "oxlint --deny-warnings --fix",
|
|
34
|
+
"format": "oxfmt --check .",
|
|
35
|
+
"format:fix": "oxfmt --write .",
|
|
36
|
+
"knip": "knip",
|
|
37
|
+
"smoke:package": "pnpm run build && node scripts/smoke-package.mjs",
|
|
38
|
+
"prepublishOnly": "pnpm run smoke:package",
|
|
39
|
+
"prepare": "lefthook install"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"cac": "^7.0.0",
|
|
43
|
+
"yaml": "^2.6.0",
|
|
44
|
+
"zod": "^4.5.4"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@tsconfig/strictest": "^2.0.5",
|
|
48
|
+
"@types/node": "^22.0.0",
|
|
49
|
+
"knip": "^6.0.0",
|
|
50
|
+
"lefthook": "^2.0.0",
|
|
51
|
+
"oxfmt": "^0.67.0",
|
|
52
|
+
"oxlint": "^1.82.0",
|
|
53
|
+
"tsx": "^4.19.0",
|
|
54
|
+
"typescript": "^6.0.0",
|
|
55
|
+
"vitest": "^5.0.0"
|
|
56
|
+
},
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": ">=22.0.0"
|
|
59
|
+
},
|
|
60
|
+
"packageManager": "pnpm@11.6.0"
|
|
61
|
+
}
|