@ccdd/project 2.0.1 → 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.
- package/README.md +8 -8
- package/dist/monitor-ui/assets/{GraphView-UjtW4QRC.js → GraphView-CzM-UdPe.js} +3 -3
- package/dist/monitor-ui/assets/ValidationView-C3G5cwXp.js +1 -0
- package/dist/monitor-ui/assets/ValidationView-p5r8lX18.css +1 -0
- package/dist/monitor-ui/assets/{elk-api-yRi2AOS6.js → elk-api-DDn2L4-3.js} +1 -1
- package/dist/monitor-ui/assets/{elk.bundled-CtLobQTy.js → elk.bundled-Bmx50hLH.js} +1 -1
- package/dist/monitor-ui/assets/{index-Cpm0fC0p.js → index-B4RYcPAo.js} +6 -6
- package/dist/monitor-ui/assets/index-SA3sxGLr.css +1 -0
- package/dist/monitor-ui/index.html +4 -4
- package/dist/scripts/prepare-demo.js +16 -16
- package/dist/scripts/prepare-demo.js.map +1 -1
- package/dist/src/broker/human-claims.d.ts +26 -0
- package/dist/src/broker/human-claims.js +104 -0
- package/dist/src/broker/human-claims.js.map +1 -0
- package/dist/src/broker/index.d.ts +23 -1
- package/dist/src/broker/index.js +89 -15
- package/dist/src/broker/index.js.map +1 -1
- package/dist/src/cli.js +4 -3
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +3 -0
- package/dist/src/doctor/index.js +16 -16
- package/dist/src/doctor/index.js.map +1 -1
- package/dist/src/executors/auth.js +7 -7
- package/dist/src/executors/auth.js.map +1 -1
- package/dist/src/executors/human-preparation.d.ts +18 -0
- package/dist/src/executors/human-preparation.js +47 -0
- package/dist/src/executors/human-preparation.js.map +1 -0
- package/dist/src/executors/index.js +13 -13
- package/dist/src/executors/index.js.map +1 -1
- package/dist/src/executors/pi.js +24 -24
- package/dist/src/executors/pi.js.map +1 -1
- package/dist/src/monitor/actions.d.ts +1 -1
- package/dist/src/monitor/actions.js +8 -8
- package/dist/src/monitor/actions.js.map +1 -1
- package/dist/src/monitor/server.js +88 -70
- package/dist/src/monitor/server.js.map +1 -1
- package/dist/src/monitor/store.js +29 -24
- package/dist/src/monitor/store.js.map +1 -1
- package/dist/src/monitor/types.d.ts +5 -0
- package/dist/src/monitor/ui/api.js +3 -3
- package/dist/src/monitor/ui/api.js.map +1 -1
- package/dist/src/monitor/ui/critic-presentation.js +12 -12
- package/dist/src/monitor/ui/critic-presentation.js.map +1 -1
- package/dist/src/monitor/ui/format.js +8 -8
- package/dist/src/monitor/ui/format.js.map +1 -1
- package/dist/src/monitor/ui/tool-input.js +9 -9
- package/dist/src/monitor/ui/tool-input.js.map +1 -1
- package/dist/src/project/cli.js +6 -1
- package/dist/src/project/cli.js.map +1 -1
- package/dist/src/project/identity.js +5 -1
- package/dist/src/project/identity.js.map +1 -1
- package/dist/src/project/index.d.ts +3 -0
- package/dist/src/project/index.js +2 -0
- package/dist/src/project/index.js.map +1 -1
- package/dist/src/project/store.js +3 -2
- package/dist/src/project/store.js.map +1 -1
- package/dist/src/review/cli.d.ts +8 -0
- package/dist/src/review/cli.js +136 -0
- package/dist/src/review/cli.js.map +1 -0
- package/dist/src/review/client.d.ts +30 -0
- package/dist/src/review/client.js +191 -0
- package/dist/src/review/client.js.map +1 -0
- package/dist/src/review/local-claim.d.ts +5 -0
- package/dist/src/review/local-claim.js +16 -0
- package/dist/src/review/local-claim.js.map +1 -0
- package/dist/src/review/server.d.ts +11 -0
- package/dist/src/review/server.js +248 -0
- package/dist/src/review/server.js.map +1 -0
- package/dist/src/review/types.d.ts +10 -0
- package/dist/src/review/types.js +17 -0
- package/dist/src/review/types.js.map +1 -0
- package/dist/src/tools/contracts.d.ts +22 -0
- package/dist/src/tools/environment-host.d.ts +1 -0
- package/dist/src/tools/environment-host.js +32 -0
- package/dist/src/tools/environment-host.js.map +1 -0
- package/dist/src/tools/environment.d.ts +18 -0
- package/dist/src/tools/environment.js +116 -0
- package/dist/src/tools/environment.js.map +1 -0
- package/dist/src/tools/inputs.d.ts +7 -0
- package/dist/src/tools/inputs.js +64 -0
- package/dist/src/tools/inputs.js.map +1 -0
- package/dist/src/tools/manifest.d.ts +4 -0
- package/dist/src/tools/manifest.js +28 -0
- package/dist/src/tools/manifest.js.map +1 -0
- package/dist/src/tools/runner.js +4 -2
- package/dist/src/tools/runner.js.map +1 -1
- package/dist/src/tools/runtime-host.js +27 -3
- package/dist/src/tools/runtime-host.js.map +1 -1
- package/dist/src/tools/schema.d.ts +3 -1
- package/dist/src/tools/schema.js +33 -1
- package/dist/src/tools/schema.js.map +1 -1
- package/dist/src/workspaces/index.d.ts +27 -0
- package/dist/src/workspaces/index.js +2 -0
- package/dist/src/workspaces/index.js.map +1 -1
- package/dist/src/workspaces/transfer.d.ts +52 -0
- package/dist/src/workspaces/transfer.js +372 -0
- package/dist/src/workspaces/transfer.js.map +1 -0
- package/package.json +2 -2
- package/dist/monitor-ui/assets/ValidationView-CC1FvqUl.js +0 -1
- package/dist/monitor-ui/assets/ValidationView-DWl4b8Ug.css +0 -1
- package/dist/monitor-ui/assets/index-CUzg-dht.css +0 -1
|
@@ -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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc;IACtD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvQ,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY,EAAE,YAA+B,EAAE,SAAiB;IAC1G,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC5B,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,KAAK,KAAK,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IACzG,IAAI,WAAW,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC/F,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC3C,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3E,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,EAAE;YAAE,MAAM,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC3F,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,KAAwB,EAAE,MAAoB;IACpG,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,KAAK,EAAE,MAAc,EAAE,IAAY,EAAiB,EAAE;YACjE,MAAM,EAAE,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;gBACjD,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;oBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;YAC1G,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACrC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACtF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,CAAC;iBAAM,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACvF,CAAC;;gBAAM,MAAM,IAAI,KAAK,CAAC,0FAA0F,IAAI,EAAE,CAAC,CAAC;QAC3H,CAAC,CAAC;QACF,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -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"}
|
package/dist/src/tools/runner.js
CHANGED
|
@@ -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 (!
|
|
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
|
-
|
|
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
|
|
67
|
-
const
|
|
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":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
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>;
|
package/dist/src/tools/schema.js
CHANGED
|
@@ -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
|