@ccdd/project 2.0.2 → 3.0.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.
Files changed (75) hide show
  1. package/dist/monitor-ui/assets/{GraphView-0hRu9REg.js → GraphView-CzM-UdPe.js} +3 -3
  2. package/dist/monitor-ui/assets/{ValidationView-BuT1XOPJ.js → ValidationView-C3G5cwXp.js} +1 -1
  3. package/dist/monitor-ui/assets/{elk-api-U8zu3SUU.js → elk-api-DDn2L4-3.js} +1 -1
  4. package/dist/monitor-ui/assets/{elk.bundled-B5v2hKp_.js → elk.bundled-Bmx50hLH.js} +1 -1
  5. package/dist/monitor-ui/assets/{index-rUSYOSt7.js → index-B4RYcPAo.js} +3 -3
  6. package/dist/monitor-ui/index.html +1 -1
  7. package/dist/src/broker/human-claims.d.ts +26 -0
  8. package/dist/src/broker/human-claims.js +104 -0
  9. package/dist/src/broker/human-claims.js.map +1 -0
  10. package/dist/src/broker/index.d.ts +23 -1
  11. package/dist/src/broker/index.js +87 -14
  12. package/dist/src/broker/index.js.map +1 -1
  13. package/dist/src/cli.js +2 -1
  14. package/dist/src/cli.js.map +1 -1
  15. package/dist/src/contracts.d.ts +3 -0
  16. package/dist/src/executors/human-preparation.d.ts +18 -0
  17. package/dist/src/executors/human-preparation.js +47 -0
  18. package/dist/src/executors/human-preparation.js.map +1 -0
  19. package/dist/src/monitor/actions.d.ts +1 -1
  20. package/dist/src/monitor/actions.js +2 -2
  21. package/dist/src/monitor/actions.js.map +1 -1
  22. package/dist/src/monitor/server.js +21 -3
  23. package/dist/src/monitor/server.js.map +1 -1
  24. package/dist/src/monitor/store.js +5 -0
  25. package/dist/src/monitor/store.js.map +1 -1
  26. package/dist/src/monitor/types.d.ts +5 -0
  27. package/dist/src/project/cli.js +6 -1
  28. package/dist/src/project/cli.js.map +1 -1
  29. package/dist/src/project/identity.js +5 -1
  30. package/dist/src/project/identity.js.map +1 -1
  31. package/dist/src/project/index.d.ts +3 -0
  32. package/dist/src/project/index.js +2 -0
  33. package/dist/src/project/index.js.map +1 -1
  34. package/dist/src/review/cli.d.ts +8 -0
  35. package/dist/src/review/cli.js +136 -0
  36. package/dist/src/review/cli.js.map +1 -0
  37. package/dist/src/review/client.d.ts +30 -0
  38. package/dist/src/review/client.js +191 -0
  39. package/dist/src/review/client.js.map +1 -0
  40. package/dist/src/review/local-claim.d.ts +5 -0
  41. package/dist/src/review/local-claim.js +16 -0
  42. package/dist/src/review/local-claim.js.map +1 -0
  43. package/dist/src/review/server.d.ts +11 -0
  44. package/dist/src/review/server.js +248 -0
  45. package/dist/src/review/server.js.map +1 -0
  46. package/dist/src/review/types.d.ts +10 -0
  47. package/dist/src/review/types.js +17 -0
  48. package/dist/src/review/types.js.map +1 -0
  49. package/dist/src/tools/contracts.d.ts +22 -0
  50. package/dist/src/tools/environment-host.d.ts +1 -0
  51. package/dist/src/tools/environment-host.js +32 -0
  52. package/dist/src/tools/environment-host.js.map +1 -0
  53. package/dist/src/tools/environment.d.ts +18 -0
  54. package/dist/src/tools/environment.js +116 -0
  55. package/dist/src/tools/environment.js.map +1 -0
  56. package/dist/src/tools/inputs.d.ts +7 -0
  57. package/dist/src/tools/inputs.js +64 -0
  58. package/dist/src/tools/inputs.js.map +1 -0
  59. package/dist/src/tools/manifest.d.ts +4 -0
  60. package/dist/src/tools/manifest.js +28 -0
  61. package/dist/src/tools/manifest.js.map +1 -0
  62. package/dist/src/tools/runner.js +4 -2
  63. package/dist/src/tools/runner.js.map +1 -1
  64. package/dist/src/tools/runtime-host.js +27 -3
  65. package/dist/src/tools/runtime-host.js.map +1 -1
  66. package/dist/src/tools/schema.d.ts +3 -1
  67. package/dist/src/tools/schema.js +33 -1
  68. package/dist/src/tools/schema.js.map +1 -1
  69. package/dist/src/workspaces/index.d.ts +27 -0
  70. package/dist/src/workspaces/index.js +2 -0
  71. package/dist/src/workspaces/index.js.map +1 -1
  72. package/dist/src/workspaces/transfer.d.ts +52 -0
  73. package/dist/src/workspaces/transfer.js +372 -0
  74. package/dist/src/workspaces/transfer.js.map +1 -0
  75. package/package.json +2 -2
@@ -0,0 +1,32 @@
1
+ import { registerHooks } from 'node:module';
2
+ import { realpathSync } from 'node:fs';
3
+ import { fileURLToPath, pathToFileURL } from 'node:url';
4
+ import { within } from './paths.js';
5
+ const root = realpathSync(process.argv[2]);
6
+ const script = realpathSync(process.argv[3]);
7
+ if (!within(root, script))
8
+ throw new Error('Environment script is outside the reviewed snapshot.');
9
+ registerHooks({
10
+ resolve(specifier, context, next) {
11
+ let result;
12
+ try {
13
+ result = next(specifier, context);
14
+ }
15
+ catch (error) {
16
+ if (specifier.startsWith('.') && specifier.endsWith('.js') && context.parentURL?.startsWith('file:'))
17
+ result = next(`${specifier.slice(0, -3)}.ts`, context);
18
+ else
19
+ throw error;
20
+ }
21
+ if (result.url.startsWith('file:')) {
22
+ if (!within(root, realpathSync(fileURLToPath(result.url))))
23
+ throw new Error('Environment script imports must resolve inside the snapshot.');
24
+ }
25
+ else if (!result.url.startsWith('node:'))
26
+ throw new Error('Environment scripts may import only snapshot files and Node builtins.');
27
+ return result;
28
+ },
29
+ });
30
+ process.argv = [process.execPath, script];
31
+ await import(pathToFileURL(script).href);
32
+ //# sourceMappingURL=environment-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-host.js","sourceRoot":"","sources":["../../../src/tools/environment-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AACnG,aAAa,CAAC;IACZ,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI;QAC9B,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAC1C,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;gBACxJ,MAAM,KAAK,CAAC;QACnB,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC9I,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACrI,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC,CAAC;AACH,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC1C,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ConfigManifest } from './contracts.js';
2
+ export interface EnvironmentCheck {
3
+ id: string;
4
+ ok: boolean;
5
+ message: string;
6
+ }
7
+ export interface EnvironmentCheckResult {
8
+ ok: boolean;
9
+ checks: EnvironmentCheck[];
10
+ }
11
+ export interface EnvironmentCheckOptions {
12
+ workspacePath: string;
13
+ configManifest?: ConfigManifest;
14
+ outputDir: string;
15
+ signal?: AbortSignal;
16
+ }
17
+ /** Explicit Human claim preparation only. The caller owns workspace integrity checks and the Try Claim lease. */
18
+ export declare function checkEnvironmentRequirements(options: EnvironmentCheckOptions): Promise<EnvironmentCheckResult>;
@@ -0,0 +1,116 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { mkdir, realpath } from 'node:fs/promises';
3
+ import { dirname, join, resolve } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { matchesToolManifest } from './manifest.js';
6
+ import { openToolHost } from './host.js';
7
+ import { environmentRequirements } from './schema.js';
8
+ import { scopedPath, within } from './paths.js';
9
+ async function outputDirectory(root, directory) {
10
+ const target = resolve(directory);
11
+ let ancestor = target;
12
+ while (true) {
13
+ const actual = await realpath(ancestor).catch(error => { if (error.code === 'ENOENT')
14
+ return undefined; throw error; });
15
+ if (actual !== undefined) {
16
+ if (within(root, actual) || within(root, target))
17
+ throw new Error('Environment check output must be outside reviewed input.');
18
+ break;
19
+ }
20
+ ancestor = dirname(ancestor);
21
+ }
22
+ await mkdir(target, { recursive: true });
23
+ return realpath(target);
24
+ }
25
+ /** Checks inspect the reviewer's installed environment without inheriting Provider credentials or Node preload hooks. */
26
+ function checkEnvironment(outputDir, tmpDir) {
27
+ const names = ['PATH', 'HOME', 'USERPROFILE', 'USER', 'LOGNAME', 'LANG', 'LC_ALL', 'SYSTEMROOT', 'WINDIR', 'CARGO_HOME', 'RUSTUP_HOME', 'DISPLAY', 'WAYLAND_DISPLAY', 'XAUTHORITY', 'XDG_RUNTIME_DIR', 'DBUS_SESSION_BUS_ADDRESS'];
28
+ return {
29
+ ...Object.fromEntries(names.flatMap(name => process.env[name] === undefined ? [] : [[name, process.env[name]]])),
30
+ CCDD_OUTPUT_DIR: outputDir, CCDD_TMP_DIR: tmpDir, TMPDIR: tmpDir, TMP: tmpDir, TEMP: tmpDir,
31
+ XDG_CACHE_HOME: join(tmpDir, 'cache'), CARGO_TARGET_DIR: join(outputDir, 'cargo-target'),
32
+ };
33
+ }
34
+ function runCheck(root, script, requirement, outputDir, tmpDir, signal) {
35
+ signal?.throwIfAborted();
36
+ const timeoutMs = requirement.timeoutMs ?? 30000;
37
+ return new Promise(resolveCheck => {
38
+ const child = spawn(process.execPath, [fileURLToPath(new URL('./environment-host.js', import.meta.url)), root, script], {
39
+ cwd: root, env: checkEnvironment(outputDir, tmpDir), shell: false, detached: process.platform !== 'win32', stdio: ['ignore', 'pipe', 'pipe'], windowsHide: true,
40
+ });
41
+ const chunks = [];
42
+ let bytes = 0, retained = 0, settled = false, failure, killTimer;
43
+ const kill = (kind) => { try {
44
+ if (process.platform !== 'win32' && child.pid)
45
+ process.kill(-child.pid, kind);
46
+ else
47
+ child.kill(kind);
48
+ }
49
+ catch { /* Already exited. */ } };
50
+ const finish = (ok, message) => {
51
+ if (settled)
52
+ return;
53
+ settled = true;
54
+ clearTimeout(timer);
55
+ clearTimeout(killTimer);
56
+ signal?.removeEventListener('abort', abort);
57
+ const diagnostic = Buffer.concat(chunks).toString('utf8').replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g, '').trim();
58
+ resolveCheck({ ok, message: `${message}${diagnostic ? `\n${diagnostic}` : ''}`.slice(0, 4000) });
59
+ };
60
+ const stop = (message) => {
61
+ if (settled || failure)
62
+ return;
63
+ failure = message;
64
+ kill('SIGTERM');
65
+ killTimer = setTimeout(() => { kill('SIGKILL'); finish(false, message); }, 500);
66
+ };
67
+ const abort = () => stop('Environment check was cancelled.');
68
+ const timer = setTimeout(() => stop(`Environment check timed out after ${timeoutMs} ms.`), timeoutMs);
69
+ const capture = (chunk) => {
70
+ bytes += chunk.length;
71
+ if (retained < 8192) {
72
+ const part = chunk.subarray(0, 8192 - retained);
73
+ chunks.push(part);
74
+ retained += part.length;
75
+ }
76
+ if (bytes > 65536)
77
+ stop('Environment check output exceeded 64 KiB.');
78
+ };
79
+ child.stdout.on('data', capture);
80
+ child.stderr.on('data', capture);
81
+ signal?.addEventListener('abort', abort, { once: true });
82
+ child.on('error', () => { kill('SIGKILL'); finish(false, failure ?? 'The environment check could not be started.'); });
83
+ // A readiness check may not leave a background process after its script exits.
84
+ child.on('exit', () => kill('SIGKILL'));
85
+ child.on('close', code => finish(!failure && code === 0, failure ?? (code === 0 ? requirement.description : `Environment check failed (exit ${code ?? 'signal'}): ${requirement.description}`)));
86
+ if (signal?.aborted)
87
+ abort();
88
+ });
89
+ }
90
+ /** Explicit Human claim preparation only. The caller owns workspace integrity checks and the Try Claim lease. */
91
+ export async function checkEnvironmentRequirements(options) {
92
+ options.signal?.throwIfAborted();
93
+ if (options.configManifest?.envRequirements === undefined)
94
+ return { ok: true, checks: [] };
95
+ const requirements = environmentRequirements(options.configManifest.envRequirements);
96
+ const root = await realpath(options.workspacePath);
97
+ // Reconnect declarations from this exact snapshot before executing any stored script path.
98
+ const host = await openToolHost(root, options.signal).catch(error => { options.signal?.throwIfAborted(); throw error; });
99
+ try {
100
+ if (!matchesToolManifest(host.config, options.configManifest))
101
+ throw Object.assign(new Error('Recorded environment requirements do not match this snapshot configuration.'), { code: 'WORKSPACE_ARTIFACT_MISMATCH' });
102
+ }
103
+ finally {
104
+ await host.close();
105
+ }
106
+ const base = await outputDirectory(root, options.outputDir), checks = [];
107
+ for (const [id, requirement] of Object.entries(requirements)) {
108
+ options.signal?.throwIfAborted();
109
+ const outputDir = await outputDirectory(root, join(base, id)), tmpDir = await outputDirectory(root, join(outputDir, '.tmp'));
110
+ const result = await runCheck(root, await scopedPath(root, requirement.script), requirement, outputDir, tmpDir, options.signal);
111
+ options.signal?.throwIfAborted();
112
+ checks.push({ id, ...result });
113
+ }
114
+ return { ok: checks.every(check => check.ok), checks };
115
+ }
116
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/tools/environment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** A bundled runtime may use relative internal links, but may not select undeclared host files. */
2
+ export declare function resolveExecutionInput(root: string, declarations: readonly string[], requested: string): Promise<string>;
3
+ /** Runtime content participates independently of the whole-workspace snapshot hash. */
4
+ export declare function hashExecutionInputs(root: string, paths: readonly string[], signal?: AbortSignal): Promise<{
5
+ path: string;
6
+ hash: string;
7
+ }[]>;
@@ -0,0 +1,64 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { createReadStream } from 'node:fs';
3
+ import { lstat, readdir, readlink, realpath } from 'node:fs/promises';
4
+ import { dirname, join, posix, resolve, win32 } from 'node:path';
5
+ import { scopedPath, within } from './paths.js';
6
+ import { projectInputPath } from './schema.js';
7
+ async function internalLink(root, target) {
8
+ const link = await readlink(target);
9
+ if (posix.isAbsolute(link) || win32.isAbsolute(link) || /[\\\x00-\x1f\x7f]/.test(link) || !within(root, resolve(dirname(target), link)) || !within(root, await realpath(target)))
10
+ throw new Error('Runtime symlinks must stay inside their declared execution input.');
11
+ return link;
12
+ }
13
+ /** A bundled runtime may use relative internal links, but may not select undeclared host files. */
14
+ export async function resolveExecutionInput(root, declarations, requested) {
15
+ projectInputPath(requested);
16
+ const declaration = declarations.find(input => requested === input || requested.startsWith(`${input}/`));
17
+ if (declaration === undefined)
18
+ throw new Error('Execution path is not declared by this tool.');
19
+ const base = await scopedPath(root, declaration);
20
+ if (requested === declaration)
21
+ return base;
22
+ let candidate = base;
23
+ for (const component of requested.slice(declaration.length + 1).split('/')) {
24
+ candidate = join(candidate, component);
25
+ if ((await lstat(candidate)).isSymbolicLink())
26
+ await internalLink(base, candidate);
27
+ }
28
+ const actual = await realpath(candidate);
29
+ if (!within(base, actual))
30
+ throw new Error('Execution path escapes its declared runtime.');
31
+ return actual;
32
+ }
33
+ /** Runtime content participates independently of the whole-workspace snapshot hash. */
34
+ export async function hashExecutionInputs(root, paths, signal) {
35
+ const result = [];
36
+ for (const input of [...new Set(paths)].sort()) {
37
+ projectInputPath(input);
38
+ const absolute = await scopedPath(root, input), hash = createHash('sha256');
39
+ const walk = async (target, name) => {
40
+ signal?.throwIfAborted();
41
+ const info = await lstat(target);
42
+ if (info.isDirectory()) {
43
+ hash.update(JSON.stringify([name, 'directory']));
44
+ for (const child of (await readdir(target)).sort())
45
+ await walk(join(target, child), `${name}/${child}`);
46
+ }
47
+ else if (info.isFile()) {
48
+ const content = createHash('sha256');
49
+ for await (const bytes of createReadStream(target, { signal }))
50
+ content.update(bytes);
51
+ hash.update(JSON.stringify([name, 'file', info.mode & 0o111, content.digest('hex')]));
52
+ }
53
+ else if (info.isSymbolicLink()) {
54
+ hash.update(JSON.stringify([name, 'symlink', await internalLink(absolute, target)]));
55
+ }
56
+ else
57
+ throw new Error(`Execution inputs must contain regular files, directories or internal runtime symlinks: ${name}`);
58
+ };
59
+ await walk(absolute, input);
60
+ result.push({ path: input, hash: hash.digest('hex') });
61
+ }
62
+ return result;
63
+ }
64
+ //# sourceMappingURL=inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../src/tools/inputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { RepoConfig } from '../contracts.js';
2
+ import type { ConfigManifest } from './contracts.js';
3
+ /** Reconnect historical locale-ordered manifests only after proving the same input. */
4
+ export declare function matchesToolManifest(config: RepoConfig, recorded: ConfigManifest): boolean;
@@ -0,0 +1,28 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { isDeepStrictEqual } from 'node:util';
3
+ /** Reconnect historical locale-ordered manifests only after proving the same input. */
4
+ export function matchesToolManifest(config, recorded) {
5
+ const current = config.configManifest;
6
+ if (!current || !recorded || current.version !== 1 || recorded.version !== 1)
7
+ return false;
8
+ if (isDeepStrictEqual(current, recorded))
9
+ return true;
10
+ if (!Array.isArray(recorded.modules) || recorded.modules.some(entry => !entry || typeof entry.path !== 'string' || typeof entry.hash !== 'string'))
11
+ return false;
12
+ const ordered = (modules) => [...modules].sort((a, b) => a.path < b.path ? -1 : a.path > b.path ? 1 : 0);
13
+ if (!isDeepStrictEqual(ordered(current.modules), ordered(recorded.modules)))
14
+ return false;
15
+ // Older v1 writers sorted modules with the publisher's locale. Preserve that
16
+ // recorded order in the hash recipe, without trusting any recorded content hash
17
+ // or discarding changes to configuration values, types, or declared inputs.
18
+ const extensions = {
19
+ ...(current.envRequirements === undefined ? {} : { envRequirements: current.envRequirements, environmentInputs: current.environmentInputs }),
20
+ ...(current.executionInputs === undefined ? {} : { executionInputs: current.executionInputs }),
21
+ };
22
+ const configHash = createHash('sha256').update(JSON.stringify({
23
+ values: { artifacts: config.artifacts, critics: config.critics },
24
+ types: current.types, modules: recorded.modules, ...extensions,
25
+ })).digest('hex');
26
+ return isDeepStrictEqual({ ...current, modules: recorded.modules, configHash }, recorded);
27
+ }
28
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/tools/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAI9C,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CAAC,MAAkB,EAAE,QAAwB;IAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;IACtC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3F,IAAI,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACjK,MAAM,OAAO,GAAG,CAAC,OAAkC,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1F,6EAA6E;IAC7E,gFAAgF;IAChF,4EAA4E;IAC5E,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC5I,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;KAC/F,CAAC;IACF,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5D,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;QAChE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,UAAU;KAC/D,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5F,CAAC"}
@@ -8,6 +8,7 @@ import { createHumanArtifactTools } from '../artifacts/human.js';
8
8
  import { isArtifactGroup, resolveArtifactScope } from '../artifacts/groups.js';
9
9
  import { metadata, object, jsonCopy, validateArguments } from './schema.js';
10
10
  import { openToolHost } from './host.js';
11
+ import { matchesToolManifest } from './manifest.js';
11
12
  import { scopedPath, within } from './paths.js';
12
13
  export function describeReviewTools({ artifacts, configManifest, audience }) {
13
14
  if (configManifest.version !== 1 || !/^[a-f0-9]{64}$/.test(configManifest.configHash))
@@ -129,7 +130,7 @@ export async function createReviewTools(options) {
129
130
  const root = await realpath(worktreePath);
130
131
  const host = await openToolHost(root, signal);
131
132
  try {
132
- if (!isDeepStrictEqual(host.config.configManifest, configManifest) || !isDeepStrictEqual(host.config.artifactTypes, artifactTypes))
133
+ if (!matchesToolManifest(host.config, configManifest) || !isDeepStrictEqual(host.config.artifactTypes, artifactTypes))
133
134
  throw Object.assign(new Error('Recorded tool manifest does not match this snapshot configuration.'), { code: 'WORKSPACE_ARTIFACT_MISMATCH' });
134
135
  if (options.criticId !== undefined) {
135
136
  const critic = host.config.critics.find(value => value.id === options.criticId);
@@ -157,7 +158,8 @@ export async function createReviewTools(options) {
157
158
  const path = await scopedPath(root, artifact.path), info = await lstat(path), shape = tool.metadata?.artifactKind;
158
159
  if (shape === 'file' && !info.isFile() || shape === 'directory' && !info.isDirectory())
159
160
  throw new Error('Tool does not support this Artifact shape.');
160
- return host.call({ action, artifact, type: artifact.type, audience, toolKey: tool.operation, args: arguments_, outputDir, tmpDir: temporary }, action === 'preflight' ? 10000 : tool.metadata?.timeoutMs ?? 120000);
161
+ const reviewerEnvironment = audience === 'human' ? Object.fromEntries(['HOME', 'USERPROFILE', 'CARGO_HOME', 'RUSTUP_HOME', 'DISPLAY', 'WAYLAND_DISPLAY', 'XAUTHORITY', 'XDG_RUNTIME_DIR', 'DBUS_SESSION_BUS_ADDRESS'].flatMap(name => process.env[name] === undefined ? [] : [[name, process.env[name]]])) : undefined;
162
+ return host.call({ action, artifact, type: artifact.type, audience, toolKey: tool.operation, args: arguments_, outputDir, tmpDir: temporary, ...(reviewerEnvironment ? { reviewerEnvironment } : {}) }, action === 'preflight' ? 10000 : tool.metadata?.timeoutMs ?? 120000);
161
163
  };
162
164
  return { tools, toolCalls, validateArguments: args, close: host.close,
163
165
  async call(name, value = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/tools/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/tools/runner.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@ import { readFileSync, realpathSync, existsSync } from 'node:fs';
4
4
  import { mkdir, lstat } from 'node:fs/promises';
5
5
  import { join, relative, resolve } from 'node:path';
6
6
  import { fileURLToPath, pathToFileURL } from 'node:url';
7
- import { metadata, jsonCopy, object, validateArguments } from './schema.js';
7
+ import { metadata, jsonCopy, object, validateArguments, environmentRequirements } from './schema.js';
8
+ import { hashExecutionInputs, resolveExecutionInput } from './inputs.js';
8
9
  import { scopedPath, within } from './paths.js';
9
10
  const identifier = /^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/;
10
11
  const registry = new Map();
@@ -63,8 +64,17 @@ async function load(workspace) {
63
64
  }
64
65
  }
65
66
  const values = jsonCopy({ artifacts: config.artifacts, critics: config.critics });
66
- const moduleList = [...modules].sort(([a], [b]) => a.localeCompare(b)).map(([path, hash]) => ({ path, hash }));
67
- const manifest = { version: 1, configHash: hash(JSON.stringify({ values, types, modules: moduleList })), modules: moduleList, types };
67
+ const envRequirements = config.envRequirements === undefined ? undefined : environmentRequirements(config.envRequirements);
68
+ const environmentInputs = envRequirements === undefined ? undefined : await hashExecutionInputs(root, Object.values(envRequirements).flatMap(value => [value.script, ...value.inputs ?? []]));
69
+ if (envRequirements)
70
+ for (const value of Object.values(envRequirements))
71
+ if (!(await lstat(await scopedPath(root, value.script))).isFile())
72
+ throw new Error('Environment scripts must be regular files.');
73
+ const executionPaths = Object.values(types).flatMap(type => [...Object.values(type.agentTools), ...Object.values(type.humanTools)].flatMap(tool => tool.executionPaths ?? []));
74
+ const executionInputs = executionPaths.length ? await hashExecutionInputs(root, executionPaths) : undefined;
75
+ const extensions = { ...(envRequirements === undefined ? {} : { envRequirements, environmentInputs }), ...(executionInputs === undefined ? {} : { executionInputs }) };
76
+ const moduleList = [...modules].sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([path, hash]) => ({ path, hash }));
77
+ const manifest = { version: 1, configHash: hash(JSON.stringify({ values, types, modules: moduleList, ...extensions })), modules: moduleList, types, ...extensions };
68
78
  loaded = { config: { ...values, artifactTypes: Object.fromEntries(Object.keys(types).map(type => [type, { custom: true }])), configManifest: manifest } };
69
79
  // Keep hooks installed throughout execution so deferred imports cannot escape the snapshot.
70
80
  void hooks;
@@ -80,9 +90,20 @@ process.on('message', async (message) => {
80
90
  if (!loaded)
81
91
  throw new Error('Configuration is not loaded.');
82
92
  const { artifact, type, audience, toolKey, args, outputDir, tmpDir } = message;
93
+ // Human environment requirements inspect these same reviewer-local values. Set them
94
+ // only after snapshot configuration has loaded in its existing restricted environment.
95
+ if (audience === 'human' && object(message.reviewerEnvironment))
96
+ for (const name of ['HOME', 'USERPROFILE', 'CARGO_HOME', 'RUSTUP_HOME', 'DISPLAY', 'WAYLAND_DISPLAY', 'XAUTHORITY', 'XDG_RUNTIME_DIR', 'DBUS_SESSION_BUS_ADDRESS']) {
97
+ const value = message.reviewerEnvironment[name];
98
+ if (typeof value === 'string')
99
+ process.env[name] = value;
100
+ else
101
+ delete process.env[name];
102
+ }
83
103
  const definition = registry.get(`${type}/${audience === 'agent' ? 'agentTools' : 'humanTools'}/${toolKey}`);
84
104
  if (!definition)
85
105
  throw new Error('Unknown tool.');
106
+ const declaredMetadata = loaded.config.configManifest.types[type][audience === 'agent' ? 'agentTools' : 'humanTools'][toolKey];
86
107
  const artifactPath = await scopedPath(root, artifact.path);
87
108
  const info = await lstat(artifactPath);
88
109
  if (!info.isFile() && !info.isDirectory())
@@ -99,6 +120,9 @@ process.on('message', async (message) => {
99
120
  if (!info.isDirectory() && path)
100
121
  throw new Error('File Artifact does not accept an internal path.');
101
122
  return path ? scopedPath(artifactPath, path) : artifactPath;
123
+ }, resolveExecutionPath: async (path) => {
124
+ controller.signal.throwIfAborted();
125
+ return resolveExecutionInput(root, declaredMetadata.executionPaths ?? [], path);
102
126
  } };
103
127
  try {
104
128
  const value = action === 'preflight' ? (definition.preflight ? await definition.preflight(context) : { ok: true, message: 'Registered; no custom preflight, actual execution unverified.' }) : await definition.execute(context, validateArguments(definition.metadata.inputSchema, args));
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-host.js","sourceRoot":"","sources":["../../../src/tools/runtime-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-host.js","sourceRoot":"","sources":["../../../src/tools/runtime-host.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
- import type { JsonSchema, ToolMetadata } from './contracts.js';
1
+ import type { EnvironmentRequirement, JsonSchema, ToolMetadata } from './contracts.js';
2
2
  export declare const object: (value: unknown) => value is Record<string, any>;
3
3
  export declare function jsonCopy<T>(value: T): T;
4
4
  export declare function validateSchema(schema: unknown): asserts schema is JsonSchema;
5
5
  export declare function validateArguments(schema: JsonSchema, args: unknown): Record<string, unknown>;
6
6
  export declare function metadata(value: unknown): ToolMetadata;
7
+ export declare function projectInputPath(value: unknown): asserts value is string;
8
+ export declare function environmentRequirements(value: unknown): Record<string, EnvironmentRequirement>;
@@ -1,5 +1,6 @@
1
1
  import { Type } from 'typebox';
2
2
  import { Compile } from 'typebox/compile';
3
+ import { posix, win32 } from 'node:path';
3
4
  export const object = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
4
5
  export function jsonCopy(value) {
5
6
  const visit = (item) => {
@@ -90,7 +91,7 @@ export function validateArguments(schema, args) {
90
91
  }
91
92
  export function metadata(value) {
92
93
  const result = jsonCopy(value);
93
- if (!object(result) || Object.keys(result).some(key => !['description', 'inputSchema', 'resultKinds', 'observation', 'artifactKind', 'timeoutMs'].includes(key)))
94
+ if (!object(result) || Object.keys(result).some(key => !['description', 'inputSchema', 'resultKinds', 'observation', 'artifactKind', 'timeoutMs', 'executionPaths'].includes(key)))
94
95
  throw new Error('Invalid tool metadata.');
95
96
  if (typeof result.description !== 'string' || !result.description.trim() || result.description.length > 4000 || /[{}]/.test(result.description.replaceAll('{artifactName}', '')))
96
97
  throw new Error('Tool description requires text and supports only {artifactName}.');
@@ -101,6 +102,37 @@ export function metadata(value) {
101
102
  throw new Error('Invalid tool observation or artifact kind.');
102
103
  if (result.timeoutMs !== undefined && (!Number.isSafeInteger(result.timeoutMs) || result.timeoutMs < 1 || result.timeoutMs > 900000))
103
104
  throw new Error('Tool timeoutMs must be 1–900000.');
105
+ if (result.executionPaths !== undefined)
106
+ declaredPaths(result.executionPaths);
107
+ return result;
108
+ }
109
+ export function projectInputPath(value) {
110
+ if (typeof value !== 'string' || !value || value.length > 1024 || posix.isAbsolute(value) || win32.isAbsolute(value) || /[\\\x00-\x1f\x7f]/.test(value) || value.split('/').some(part => !part || part === '.' || part === '..')) {
111
+ throw new Error('Execution input must be a safe project-relative path.');
112
+ }
113
+ }
114
+ function declaredPaths(value) {
115
+ if (!Array.isArray(value) || value.length > 64 || new Set(value).size !== value.length)
116
+ throw new Error('Execution inputs must be at most 64 unique project-relative paths.');
117
+ value.forEach(projectInputPath);
118
+ }
119
+ export function environmentRequirements(value) {
120
+ if (!object(value) || Object.keys(value).length > 32)
121
+ throw new Error('envRequirements must be a map of at most 32 checks.');
122
+ const result = jsonCopy(value);
123
+ for (const [id, requirement] of Object.entries(result)) {
124
+ if (!/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/.test(id) || !object(requirement) || Object.keys(requirement).some(key => !['description', 'script', 'timeoutMs', 'inputs'].includes(key)))
125
+ throw new Error('Invalid environment requirement.');
126
+ if (typeof requirement.description !== 'string' || !requirement.description.trim() || requirement.description.length > 2000)
127
+ throw new Error(`Environment requirement ${id} needs a description.`);
128
+ projectInputPath(requirement.script);
129
+ if (!/\.(?:[cm]?js|[cm]?ts)$/.test(requirement.script))
130
+ throw new Error(`Environment requirement ${id} must use a Node JavaScript or TypeScript script.`);
131
+ if (requirement.timeoutMs !== undefined && (!Number.isSafeInteger(requirement.timeoutMs) || requirement.timeoutMs < 1 || requirement.timeoutMs > 900000))
132
+ throw new Error('Environment timeoutMs must be 1–900000.');
133
+ if (requirement.inputs !== undefined)
134
+ declaredPaths(requirement.inputs);
135
+ }
104
136
  return result;
105
137
  }
106
138
  //# sourceMappingURL=schema.js.map