@autodidacticon/orchestrator 0.1.0 → 0.3.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 +60 -33
- package/dist/src/agent/mcp-shim.js +1 -1
- package/dist/src/agent/server.js +11 -6
- package/dist/src/agent/server.js.map +1 -1
- package/dist/src/brief/compose.js +8 -1
- package/dist/src/brief/compose.js.map +1 -1
- package/dist/src/config.js +23 -3
- package/dist/src/config.js.map +1 -1
- package/dist/src/graph/load.js +4 -0
- package/dist/src/graph/load.js.map +1 -1
- package/dist/src/import/mapping.js +29 -5
- package/dist/src/import/mapping.js.map +1 -1
- package/dist/src/index.js +8 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/launch/launch.js +5 -1
- package/dist/src/launch/launch.js.map +1 -1
- package/dist/src/log.js +20 -0
- package/dist/src/log.js.map +1 -0
- package/dist/src/loop/orchestrator.js +94 -3
- package/dist/src/loop/orchestrator.js.map +1 -1
- package/dist/src/loop/tick.js +2 -1
- package/dist/src/loop/tick.js.map +1 -1
- package/dist/src/main.js +115 -33
- package/dist/src/main.js.map +1 -1
- package/dist/src/operator/cli.js +40 -2
- package/dist/src/operator/cli.js.map +1 -1
- package/dist/src/operator/mcp-server.js +41 -9
- package/dist/src/operator/mcp-server.js.map +1 -1
- package/dist/src/operator/mcp.js +1 -1
- package/dist/src/operator/routes.js +62 -5
- package/dist/src/operator/routes.js.map +1 -1
- package/dist/src/runner/claude-code.js +1 -1
- package/dist/src/runner/claude-code.js.map +1 -1
- package/dist/src/runner/command.js +24 -0
- package/dist/src/runner/command.js.map +1 -0
- package/dist/src/runner/selection.js +20 -0
- package/dist/src/runner/selection.js.map +1 -0
- package/dist/src/runner/subprocess.js +7 -1
- package/dist/src/runner/subprocess.js.map +1 -1
- package/dist/src/runs/childEnv.js +32 -0
- package/dist/src/runs/childEnv.js.map +1 -0
- package/dist/src/runs/lifecycle.js +102 -5
- package/dist/src/runs/lifecycle.js.map +1 -1
- package/dist/src/runs/resolve.js +217 -0
- package/dist/src/runs/resolve.js.map +1 -0
- package/dist/src/runs/runDir.js +63 -13
- package/dist/src/runs/runDir.js.map +1 -1
- package/dist/src/state/store.js.map +1 -1
- package/dist/src/toolchain/branch.js +19 -0
- package/dist/src/toolchain/branch.js.map +1 -0
- package/dist/src/toolchain/detect.js +115 -0
- package/dist/src/toolchain/detect.js.map +1 -0
- package/dist/src/toolchain/tools.js +56 -0
- package/dist/src/toolchain/tools.js.map +1 -0
- package/dist/src/verify/verifier.js +9 -3
- package/dist/src/verify/verifier.js.map +1 -1
- package/hosts/claude-code/.claude-plugin/plugin.json +1 -1
- package/hosts/claude-code/package-lock.json +1247 -0
- package/hosts/claude-code/package.json +1 -1
- package/hosts/claude-code/skills/import/SKILL.md +66 -14
- package/hosts/claude-code/skills/run/SKILL.md +83 -21
- package/hosts/claude-code/skills/work/SKILL.md +25 -6
- package/hosts/claude-code/workflows/work.js +23 -9
- package/package.json +1 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toolchain detection from the repository root, against a fixed table in a
|
|
3
|
+
* fixed order; the first row with a command supplies the check command, every
|
|
4
|
+
* row whose manifest is present is recorded as found. Reads the root only,
|
|
5
|
+
* never subdirectories, and runs no commands. See specs/toolchain-discovery
|
|
6
|
+
* "Toolchain detection" and "Node package manager selection".
|
|
7
|
+
*/
|
|
8
|
+
import { readdir, readFile } from 'node:fs/promises';
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
const NPM_PLACEHOLDER = 'echo "Error: no test specified" && exit 1';
|
|
11
|
+
function squash(s) {
|
|
12
|
+
return s.replace(/\s+/g, ' ').trim();
|
|
13
|
+
}
|
|
14
|
+
export async function detectToolchain(repoRoot) {
|
|
15
|
+
let names = [];
|
|
16
|
+
try {
|
|
17
|
+
names = await readdir(repoRoot);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return { kinds: [], manifests: [], reasons: [`${repoRoot} could not be read`] };
|
|
21
|
+
}
|
|
22
|
+
const has = (n) => names.includes(n);
|
|
23
|
+
const record = { kinds: [], manifests: [], reasons: [] };
|
|
24
|
+
const found = (kind, manifest, command, reason) => {
|
|
25
|
+
record.kinds.push(kind);
|
|
26
|
+
record.manifests.push(manifest);
|
|
27
|
+
record.reasons.push(reason);
|
|
28
|
+
if (command && record.checkCommand === undefined) {
|
|
29
|
+
record.checkCommand = command;
|
|
30
|
+
record.checkFrom = kind;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
// 1. make: a root test target is the repository's own declaration of how it is checked.
|
|
34
|
+
const makefile = ['Makefile', 'GNUmakefile', 'makefile'].find(has);
|
|
35
|
+
if (makefile) {
|
|
36
|
+
let hasTest = false;
|
|
37
|
+
try {
|
|
38
|
+
hasTest = /^test\s*:/m.test(await readFile(path.join(repoRoot, makefile), 'utf8'));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
/* unreadable: no target */
|
|
42
|
+
}
|
|
43
|
+
found('make', makefile, hasTest ? 'make test' : undefined, hasTest ? `${makefile} defines a test target: make test` : `${makefile} has no test target`);
|
|
44
|
+
}
|
|
45
|
+
// 2. node
|
|
46
|
+
if (has('package.json')) {
|
|
47
|
+
let pkg;
|
|
48
|
+
try {
|
|
49
|
+
pkg = JSON.parse(await readFile(path.join(repoRoot, 'package.json'), 'utf8'));
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
pkg = undefined;
|
|
53
|
+
}
|
|
54
|
+
const field = typeof pkg?.packageManager === 'string' ? pkg.packageManager.split('@')[0] : undefined;
|
|
55
|
+
let pm;
|
|
56
|
+
let why;
|
|
57
|
+
if (field === 'npm' || field === 'pnpm' || field === 'yarn' || field === 'bun') {
|
|
58
|
+
pm = field;
|
|
59
|
+
why = `package.json names ${field} in packageManager`;
|
|
60
|
+
}
|
|
61
|
+
else if (has('pnpm-lock.yaml')) {
|
|
62
|
+
pm = 'pnpm';
|
|
63
|
+
why = 'pnpm-lock.yaml selects pnpm';
|
|
64
|
+
}
|
|
65
|
+
else if (has('yarn.lock')) {
|
|
66
|
+
pm = 'yarn';
|
|
67
|
+
why = 'yarn.lock selects yarn';
|
|
68
|
+
}
|
|
69
|
+
else if (has('bun.lock') || has('bun.lockb')) {
|
|
70
|
+
pm = 'bun';
|
|
71
|
+
why = `${has('bun.lock') ? 'bun.lock' : 'bun.lockb'} selects bun`;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
pm = 'npm';
|
|
75
|
+
why = 'no lockfile or packageManager field: npm';
|
|
76
|
+
}
|
|
77
|
+
record.packageManager = pm;
|
|
78
|
+
const script = typeof pkg?.scripts?.['test'] === 'string' ? pkg.scripts['test'] : '';
|
|
79
|
+
const real = script.trim() !== '' && squash(script) !== squash(NPM_PLACEHOLDER);
|
|
80
|
+
found('node', 'package.json', real ? `${pm} test` : undefined, real ? `package.json has a test script: ${pm} test (${why})` : script.trim() === '' ? `package.json has no test script (${why})` : `package.json's test script is npm's placeholder, not a test (${why})`);
|
|
81
|
+
}
|
|
82
|
+
if (has('Cargo.toml'))
|
|
83
|
+
found('rust', 'Cargo.toml', 'cargo test', 'Cargo.toml: cargo test');
|
|
84
|
+
if (has('go.mod'))
|
|
85
|
+
found('go', 'go.mod', 'go test ./...', 'go.mod: go test ./...');
|
|
86
|
+
const pyManifest = ['pyproject.toml', 'setup.cfg', 'pytest.ini'].find(has);
|
|
87
|
+
if (pyManifest) {
|
|
88
|
+
const runner = has('uv.lock') ? 'uv' : has('poetry.lock') ? 'poetry' : 'pip';
|
|
89
|
+
record.python = runner;
|
|
90
|
+
const cmd = runner === 'uv' ? 'uv run pytest' : runner === 'poetry' ? 'poetry run pytest' : 'pytest';
|
|
91
|
+
found('python', pyManifest, cmd, `${pyManifest}: ${cmd}${runner === 'uv' ? ' (uv.lock)' : runner === 'poetry' ? ' (poetry.lock)' : ''}`);
|
|
92
|
+
}
|
|
93
|
+
if (has('Gemfile')) {
|
|
94
|
+
const rspec = has('.rspec');
|
|
95
|
+
found('ruby', 'Gemfile', rspec ? 'bundle exec rspec' : 'bundle exec rake test', rspec ? 'Gemfile with .rspec: bundle exec rspec' : 'Gemfile: bundle exec rake test');
|
|
96
|
+
}
|
|
97
|
+
const gradle = ['build.gradle', 'build.gradle.kts'].find(has);
|
|
98
|
+
if (gradle) {
|
|
99
|
+
const wrapper = has('gradlew');
|
|
100
|
+
found('gradle', gradle, wrapper ? './gradlew test' : 'gradle test', wrapper ? `${gradle} with gradlew: ./gradlew test` : `${gradle} without a wrapper: gradle test`);
|
|
101
|
+
}
|
|
102
|
+
if (has('pom.xml')) {
|
|
103
|
+
const wrapper = has('mvnw');
|
|
104
|
+
found('maven', 'pom.xml', wrapper ? './mvnw -q test' : 'mvn -q test', wrapper ? 'pom.xml with mvnw: ./mvnw -q test' : 'pom.xml without a wrapper: mvn -q test');
|
|
105
|
+
}
|
|
106
|
+
if (has('mix.exs'))
|
|
107
|
+
found('elixir', 'mix.exs', 'mix test', 'mix.exs: mix test');
|
|
108
|
+
const dotnet = names.find((n) => n.endsWith('.sln') || n.endsWith('.csproj'));
|
|
109
|
+
if (dotnet)
|
|
110
|
+
found('dotnet', dotnet, 'dotnet test', `${dotnet}: dotnet test`);
|
|
111
|
+
if (record.checkCommand === undefined)
|
|
112
|
+
record.reasons.push(record.kinds.length ? 'no found toolchain supplied a check command' : 'no recognised manifest in the repository root');
|
|
113
|
+
return record;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../../src/toolchain/detect.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAoB7B,MAAM,eAAe,GAAG,2CAA2C,CAAC;AAEpE,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,QAAQ,oBAAoB,CAAC,EAAE,CAAC;IAClF,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAoB,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC1E,MAAM,KAAK,GAAG,CAAC,IAAmB,EAAE,QAAgB,EAAE,OAA2B,EAAE,MAAc,EAAE,EAAE;QACnG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,OAAO,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC;YAC9B,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;IAEF,wFAAwF;IACxF,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACrF,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;QACD,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,mCAAmC,CAAC,CAAC,CAAC,GAAG,QAAQ,qBAAqB,CAAC,CAAC;IAC1J,CAAC;IAED,UAAU;IACV,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACxB,IAAI,GAAgF,CAAC;QACrF,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAe,CAAC;QAC9F,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,GAAG,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,GAAG,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrG,IAAI,EAAkB,CAAC;QACvB,IAAI,GAAW,CAAC;QAChB,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAC/E,EAAE,GAAG,KAAK,CAAC;YACX,GAAG,GAAG,sBAAsB,KAAK,oBAAoB,CAAC;QACxD,CAAC;aAAM,IAAI,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACjC,EAAE,GAAG,MAAM,CAAC;YACZ,GAAG,GAAG,6BAA6B,CAAC;QACtC,CAAC;aAAM,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,EAAE,GAAG,MAAM,CAAC;YACZ,GAAG,GAAG,wBAAwB,CAAC;QACjC,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,EAAE,GAAG,KAAK,CAAC;YACX,GAAG,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,cAAc,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,EAAE,GAAG,KAAK,CAAC;YACX,GAAG,GAAG,0CAA0C,CAAC;QACnD,CAAC;QACD,MAAM,CAAC,cAAc,GAAG,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,eAAe,CAAC,CAAC;QAChF,KAAK,CACH,MAAM,EACN,cAAc,EACd,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,EAC/B,IAAI,CAAC,CAAC,CAAC,mCAAmC,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,oCAAoC,GAAG,GAAG,CAAC,CAAC,CAAC,gEAAgE,GAAG,GAAG,CAC1M,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,YAAY,CAAC;QAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAC3F,IAAI,GAAG,CAAC,QAAQ,CAAC;QAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAAC;IAEnF,MAAM,UAAU,GAAG,CAAC,gBAAgB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAiB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3F,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC;QACrG,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,UAAU,KAAK,GAAG,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3I,CAAC;IAED,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;IACvK,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,+BAA+B,CAAC,CAAC,CAAC,GAAG,MAAM,iCAAiC,CAAC,CAAC;IACvK,CAAC;IAED,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC;IAClK,CAAC;IAED,IAAI,GAAG,CAAC,SAAS,CAAC;QAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAEhF,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9E,IAAI,MAAM;QAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,eAAe,CAAC,CAAC;IAE7E,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC;IAClL,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export const BASE_RULES = ['Bash(git:*)', 'mcp__orchestrator__heartbeat', 'mcp__orchestrator__report', 'mcp__orchestrator__block', 'mcp__orchestrator__inbox', 'mcp__orchestrator__log'];
|
|
2
|
+
const ORDER = ['make', 'node', 'rust', 'go', 'python', 'ruby', 'gradle', 'maven', 'elixir', 'dotnet'];
|
|
3
|
+
function rulesOf(kind, record) {
|
|
4
|
+
switch (kind) {
|
|
5
|
+
case 'make':
|
|
6
|
+
return ['Bash(make:*)'];
|
|
7
|
+
case 'node': {
|
|
8
|
+
const pm = record.packageManager ?? 'npm';
|
|
9
|
+
const extra = pm === 'npm' ? ['Bash(npm ci:*)', 'Bash(npx:*)'] : pm === 'bun' ? ['Bash(bunx:*)'] : ['Bash(npx:*)'];
|
|
10
|
+
return [`Bash(${pm} test:*)`, `Bash(${pm} run:*)`, `Bash(${pm} install:*)`, `Bash(${pm} exec:*)`, 'Bash(node:*)', ...extra];
|
|
11
|
+
}
|
|
12
|
+
case 'rust':
|
|
13
|
+
return ['Bash(cargo:*)'];
|
|
14
|
+
case 'go':
|
|
15
|
+
return ['Bash(go:*)'];
|
|
16
|
+
case 'python':
|
|
17
|
+
return ['Bash(pytest:*)', 'Bash(python:*)', 'Bash(python3:*)', 'Bash(pip:*)', ...(record.python === 'uv' ? ['Bash(uv:*)'] : record.python === 'poetry' ? ['Bash(poetry:*)'] : [])];
|
|
18
|
+
case 'ruby':
|
|
19
|
+
return ['Bash(bundle:*)', 'Bash(rake:*)', 'Bash(rspec:*)', 'Bash(ruby:*)'];
|
|
20
|
+
case 'gradle':
|
|
21
|
+
return ['Bash(./gradlew:*)', 'Bash(gradle:*)'];
|
|
22
|
+
case 'maven':
|
|
23
|
+
return ['Bash(mvn:*)', 'Bash(./mvnw:*)'];
|
|
24
|
+
case 'elixir':
|
|
25
|
+
return ['Bash(mix:*)', 'Bash(elixir:*)'];
|
|
26
|
+
case 'dotnet':
|
|
27
|
+
return ['Bash(dotnet:*)'];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Rules for every found toolchain, in table order. */
|
|
31
|
+
export function rulesFor(record) {
|
|
32
|
+
if (!record)
|
|
33
|
+
return [];
|
|
34
|
+
const out = [];
|
|
35
|
+
for (const kind of ORDER)
|
|
36
|
+
if (record.kinds.includes(kind))
|
|
37
|
+
out.push(...rulesOf(kind, record));
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
/** A rule is quoted into a shell command line; these characters would break out of the quotes. */
|
|
41
|
+
export function isSafeRule(rule) {
|
|
42
|
+
return rule.trim() !== '' && !/["\\$`]/.test(rule);
|
|
43
|
+
}
|
|
44
|
+
/** Layers composed in order, each rule attributed to the first layer that contributed it. */
|
|
45
|
+
export function composeAllowedTools(input) {
|
|
46
|
+
const seen = new Set();
|
|
47
|
+
const take = (rules) => rules.filter((r) => (seen.has(r) ? false : (seen.add(r), true)));
|
|
48
|
+
const parts = {
|
|
49
|
+
default: take(BASE_RULES),
|
|
50
|
+
detected: take(input.deriveTools ? rulesFor(input.record) : []),
|
|
51
|
+
file: take(input.fileRules),
|
|
52
|
+
argument: take(input.argumentRules),
|
|
53
|
+
};
|
|
54
|
+
return { value: [...parts.default, ...parts.detected, ...parts.file, ...parts.argument], parts };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/toolchain/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Every step after a durable progress record has a crash point.
|
|
6
6
|
*/
|
|
7
7
|
import { spawn } from 'node:child_process';
|
|
8
|
+
import { childEnv } from '../runs/childEnv.js';
|
|
8
9
|
import { mkdir, realpath, rm } from 'node:fs/promises';
|
|
9
10
|
import path from 'node:path';
|
|
10
11
|
import { crashPoint } from '../crash.js';
|
|
@@ -27,6 +28,7 @@ export class GitVerifierBackend {
|
|
|
27
28
|
}
|
|
28
29
|
async run(job, ctx) {
|
|
29
30
|
const { repo } = this.opts;
|
|
31
|
+
const checkCommand = typeof this.opts.checkCommand === 'function' ? this.opts.checkCommand() : this.opts.checkCommand;
|
|
30
32
|
const expectedHead = await revParse(repo, this.opts.integrationBranch);
|
|
31
33
|
ctx.progress({ status: 'checking', expectedHead });
|
|
32
34
|
const temp = path.join(this.opts.tempRoot, job.jobId);
|
|
@@ -58,7 +60,10 @@ export class GitVerifierBackend {
|
|
|
58
60
|
return { kind: 'published', publishedSha: expectedHead, verifiedSha: expectedHead };
|
|
59
61
|
}
|
|
60
62
|
// 2. Check command on the rebased tree.
|
|
61
|
-
|
|
63
|
+
if (checkCommand === undefined) {
|
|
64
|
+
return { kind: 'failed', reason: { kind: 'checkFailed', message: 'no check command is configured for this repository', output: '' } };
|
|
65
|
+
}
|
|
66
|
+
const check = await runCheck(checkCommand, temp, this.opts.checkTimeoutMs, this.maxOut, this.opts.dataDir ?? path.dirname(this.opts.tempRoot));
|
|
62
67
|
crashPoint('verify.afterCheck');
|
|
63
68
|
if (check.timedOut) {
|
|
64
69
|
return { kind: 'failed', reason: { kind: 'checkTimeout', message: `check exceeded ${this.opts.checkTimeoutMs}ms`, output: check.output } };
|
|
@@ -130,9 +135,10 @@ export class GitVerifierBackend {
|
|
|
130
135
|
function tail(text, max) {
|
|
131
136
|
return text.length > max ? text.slice(text.length - max) : text;
|
|
132
137
|
}
|
|
133
|
-
export async function runCheck(command, cwd, timeoutMs, maxOut) {
|
|
138
|
+
export async function runCheck(command, cwd, timeoutMs, maxOut, dataDir) {
|
|
134
139
|
return new Promise((resolve) => {
|
|
135
|
-
|
|
140
|
+
// Repository code runs here: same isolation as a spawned agent. See specs/integration-pipeline "Check environment".
|
|
141
|
+
const child = spawn('/bin/sh', ['-c', command], { cwd, env: childEnv(dataDir, identity), stdio: ['ignore', 'pipe', 'pipe'], detached: true });
|
|
136
142
|
let output = '';
|
|
137
143
|
let timedOut = false;
|
|
138
144
|
const collect = (chunk) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../src/verify/verifier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,GAAG,EACH,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,cAAc,GACf,MAAM,qBAAqB,CAAC;AAG7B,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../src/verify/verifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orchestrator",
|
|
3
3
|
"displayName": "Orchestrator",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0",
|
|
5
5
|
"description": "Run a dependency graph of tasks with parallel coding agents: import an epic, start a run, monitor it, answer questions, review milestones.",
|
|
6
6
|
"author": { "name": "Richard" },
|
|
7
7
|
"license": "MIT",
|