@eir-labs/coltrane 0.4.0 → 0.5.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 (58) hide show
  1. package/dist/src/access_grant.d.ts +21 -0
  2. package/dist/src/access_grant.js +33 -4
  3. package/dist/src/access_grant.js.map +1 -1
  4. package/dist/src/claude_invoker.d.ts +28 -0
  5. package/dist/src/claude_invoker.js +68 -7
  6. package/dist/src/claude_invoker.js.map +1 -1
  7. package/dist/src/cli.d.ts +44 -0
  8. package/dist/src/cli.js +358 -0
  9. package/dist/src/cli.js.map +1 -0
  10. package/dist/src/cli_entry.d.ts +2 -0
  11. package/dist/src/cli_entry.js +23 -0
  12. package/dist/src/cli_entry.js.map +1 -0
  13. package/dist/src/composition.d.ts +2 -0
  14. package/dist/src/composition.js.map +1 -1
  15. package/dist/src/fs_atomic.d.ts +1 -0
  16. package/dist/src/fs_atomic.js +34 -0
  17. package/dist/src/fs_atomic.js.map +1 -0
  18. package/dist/src/genome_schema.d.ts +5 -1
  19. package/dist/src/genome_schema.js +12 -1
  20. package/dist/src/genome_schema.js.map +1 -1
  21. package/dist/src/genome_writer.d.ts +2 -2
  22. package/dist/src/genome_writer.js +17 -4
  23. package/dist/src/genome_writer.js.map +1 -1
  24. package/dist/src/gig_tracker.d.ts +29 -1
  25. package/dist/src/gig_tracker.js +27 -0
  26. package/dist/src/gig_tracker.js.map +1 -1
  27. package/dist/src/index.d.ts +1 -0
  28. package/dist/src/index.js +1 -0
  29. package/dist/src/index.js.map +1 -1
  30. package/dist/src/ledger.d.ts +3 -0
  31. package/dist/src/ledger.js.map +1 -1
  32. package/dist/src/loader.d.ts +2 -0
  33. package/dist/src/loader.js +10 -0
  34. package/dist/src/loader.js.map +1 -1
  35. package/dist/src/mcp.js +82 -20
  36. package/dist/src/mcp.js.map +1 -1
  37. package/dist/src/outputs.d.ts +74 -0
  38. package/dist/src/outputs.js +106 -71
  39. package/dist/src/outputs.js.map +1 -1
  40. package/dist/src/registry.d.ts +13 -0
  41. package/dist/src/registry.js +112 -0
  42. package/dist/src/registry.js.map +1 -1
  43. package/dist/src/reuse.d.ts +276 -0
  44. package/dist/src/reuse.js +215 -0
  45. package/dist/src/reuse.js.map +1 -0
  46. package/dist/src/runtime.d.ts +157 -4
  47. package/dist/src/runtime.js +519 -30
  48. package/dist/src/runtime.js.map +1 -1
  49. package/dist/src/server.d.ts +20 -0
  50. package/dist/src/server.js +733 -28
  51. package/dist/src/server.js.map +1 -1
  52. package/dist/src/skill_runner.mjs +8 -2
  53. package/dist/src/skill_subprocess.d.ts +55 -5
  54. package/dist/src/skill_subprocess.js +215 -11
  55. package/dist/src/skill_subprocess.js.map +1 -1
  56. package/dist/src/version.d.ts +1 -1
  57. package/dist/src/version.js +1 -1
  58. package/package.json +6 -4
@@ -6,25 +6,101 @@
6
6
  // load-bearing instrument: they are the skill's test suite, the determinism meter
7
7
  // (stable across repeated runs), AND the evolution gate (an improved skill.mjs is
8
8
  // accepted only if every fixture still passes).
9
- import { spawnSync } from "node:child_process";
10
- import { readFileSync, readdirSync, existsSync } from "node:fs";
11
- import { join, extname } from "node:path";
9
+ import { spawn, spawnSync } from "node:child_process";
10
+ import { readFileSync, readdirSync, existsSync, realpathSync } from "node:fs";
11
+ import { join, extname, dirname } from "node:path";
12
12
  import { fileURLToPath } from "node:url";
13
13
  const RUNNER = fileURLToPath(new URL("./skill_runner.mjs", import.meta.url));
14
14
  /**
15
- * Permission tier → Node --permission flags. Tier 0 is read-only with no side effects
16
- * (can load its own code + read inputs, but cannot write, spawn, or reach the network).
17
- * Higher tiers add write, then child_process (needed by skills that shell out, e.g.
18
- * run-vitest-band). The grant IS the enforcement a skill can do only what its tier allows.
15
+ * Permission tier → Node --permission flags, SCOPED TO THE SKILL.
16
+ *
17
+ * This used to be `--allow-fs-read=*` for every tier, with a comment asserting that tier 0
18
+ * "cannot write, spawn, or reach the network". Probed through `executeSkill` on a real
19
+ * machine, a tier-0 skill read `/etc/passwd`, read all 77 of the parent's environment
20
+ * variables, and completed an outbound HTTPS request. `--allow-fs-read=*` is literally
21
+ * "read every file", so the first was never confined at all.
22
+ *
23
+ * The reads are now scoped to the skill's own package directory plus the runner that has to
24
+ * import it. `tests/skill_sandbox_confinement.test.ts` probes the capability rather than the
25
+ * flag string, because asserting on flags is how the previous claim survived being false.
26
+ *
27
+ * WHAT THIS DOES NOT DO: Node's permission model has no network gate. There is no flag here
28
+ * that stops `fetch`, and there was never one — the old guarantee was unimplementable in this
29
+ * runtime, not merely misconfigured. A pre-open-source ancestor of this engine ran skills under
30
+ * Deno (`--allow-read=<dir>` plus a net allowlist), which is the runtime with the primitive
31
+ * this wants. Until that returns, an outbound request from a skill is possible and is stated
32
+ * rather than denied. What has changed is that the credential is no longer in reach: the child
33
+ * gets an explicit minimal environment (see `skillEnv`), so there is nothing worth exfiltrating.
19
34
  */
20
- export function tierFlags(tier) {
21
- const flags = ["--permission", "--allow-fs-read=*"];
35
+ export function tierFlags(tier, skillDir) {
36
+ // `RUNNER` lives in this package's dist/; the child must be able to read it to start, and to
37
+ // read the skill it imports. Nothing else.
38
+ // One flag PER PATH: Node no longer accepts a comma-separated list here, and silently
39
+ // warns rather than failing, so a joined list degrades into "no readable paths" and every
40
+ // skill breaks at import time.
41
+ //
42
+ // REAL paths, not the caller's. Node's permission model matches on the resolved path, and on
43
+ // macOS the system temp dir is a symlink (`/var/folders/...` → `/private/var/folders/...`),
44
+ // so granting the symlinked path grants nothing and every skill under it fails at import.
45
+ const real = (pth) => { try {
46
+ return realpathSync(pth);
47
+ }
48
+ catch {
49
+ return pth;
50
+ } };
51
+ const own = [real(dirname(RUNNER)), ...(skillDir ? [real(skillDir)] : [])];
52
+ const flags = ["--permission"];
53
+ // TIER 0 is confined to its own package. The tier is documented as "read-only with no side
54
+ // effects — can load its own code + read inputs", and a tier-0 skill's inputs arrive on
55
+ // STDIN, not from the filesystem. It never had a reason to read elsewhere; `--allow-fs-read=*`
56
+ // simply granted it because that was the easiest flag to write.
57
+ //
58
+ // TIER 1+ reads broadly, because that is what those tiers are FOR — a skill that extracts
59
+ // text from a document at a path it was handed, or runs a test band over a repo, has to
60
+ // reach outside its own directory. Confining them would not be security, it would be
61
+ // removing the capability the tier exists to grant.
22
62
  if (tier >= 1)
23
- flags.push("--allow-fs-write=*");
63
+ flags.push("--allow-fs-read=*", "--allow-fs-write=*");
64
+ else
65
+ flags.push(...own.map((p2) => `--allow-fs-read=${p2}`));
24
66
  if (tier >= 2)
25
67
  flags.push("--allow-child-process");
26
68
  return flags;
27
69
  }
70
+ /**
71
+ * The environment a skill child receives.
72
+ *
73
+ * Deliberately NOT `process.env`. The parent's environment carries the provider credential —
74
+ * `ANTHROPIC_API_KEY` in any real deployment — and a skill that can read it plus reach the
75
+ * network can exfiltrate it in one line. Inheriting the whole environment made that a
76
+ * one-liner; this makes it impossible regardless of the network gap above.
77
+ *
78
+ * PATH is kept because a tier-2 skill that may spawn needs to resolve a binary at all, and
79
+ * HOME/TMPDIR because Node itself consults them during startup.
80
+ */
81
+ export function skillEnv() {
82
+ const keep = ["PATH", "HOME", "TMPDIR", "LANG", "NODE_OPTIONS"];
83
+ const env = {};
84
+ for (const k of keep)
85
+ if (process.env[k] !== undefined)
86
+ env[k] = process.env[k];
87
+ return env;
88
+ }
89
+ /**
90
+ * The skill directory as the permission model sees it.
91
+ *
92
+ * Grants are matched on RESOLVED paths, so the path handed to the child must be the same one
93
+ * that was granted. Granting `/private/var/...` while passing `/var/...` (the macOS temp-dir
94
+ * symlink) grants a path the child never asks for, and every read is denied.
95
+ */
96
+ function realDir(skillDir) {
97
+ try {
98
+ return realpathSync(skillDir);
99
+ }
100
+ catch {
101
+ return skillDir;
102
+ }
103
+ }
28
104
  export function readSkillMeta(skillDir) {
29
105
  return JSON.parse(readFileSync(join(skillDir, "meta.json"), "utf-8"));
30
106
  }
@@ -48,12 +124,14 @@ export function executeSkill(skillDir, input, timeoutMs = 120_000, tierOverride)
48
124
  // SIGTERM-trapping child can't survive the timeout.
49
125
  const timeout = typeof meta.timeout_ms === "number" ? Math.min(timeoutMs, meta.timeout_ms) : timeoutMs;
50
126
  const started = Date.now();
51
- const res = spawnSync("node", [...tierFlags(tier), RUNNER, skillDir], {
127
+ const dir = realDir(skillDir);
128
+ const res = spawnSync("node", [...tierFlags(tier, dir), RUNNER, dir], {
52
129
  input: JSON.stringify(input),
53
130
  encoding: "utf-8",
54
131
  maxBuffer: 64 * 1024 * 1024,
55
132
  timeout,
56
133
  killSignal: "SIGKILL",
134
+ env: skillEnv(),
57
135
  });
58
136
  const duration_ms = Date.now() - started;
59
137
  if (res.error)
@@ -66,6 +144,132 @@ export function executeSkill(skillDir, input, timeoutMs = 120_000, tierOverride)
66
144
  return { ok: false, error: `unparseable skill output: ${(res.stdout || res.stderr || "").slice(0, 300)}`, duration_ms };
67
145
  }
68
146
  }
147
+ /**
148
+ * #253 — the same execution, without blocking the event loop, and cancellable.
149
+ *
150
+ * `executeSkill` uses `spawnSync`, which blocks the thread until the child exits. The
151
+ * runtime's abort chain (#249/#250) is cooperative — `checkpoint()` reads the signal between
152
+ * phases and batches, and the invoker kills its child when the signal fires — and NONE of
153
+ * that can run while the loop is blocked. The abort event cannot even be *delivered*. So
154
+ * `gig_abort` during a skill chair was a promise the engine could not keep for up to the
155
+ * skill's timeout, which by default is 120 seconds.
156
+ *
157
+ * That is #249's shape again: a control the operator reaches for that reports success and
158
+ * does nothing. The difference is that #249 was a missing kill and this was a missing
159
+ * opportunity to kill.
160
+ *
161
+ * `executeSkill` is kept as-is rather than reimplemented on top of this. Its callers — the
162
+ * fixture runner and the determinism meter — are batch tools with no cancellation story, and
163
+ * making them async would ripple through the skill-authoring surface for no benefit. The
164
+ * RUNTIME is the caller that needed this.
165
+ */
166
+ export async function executeSkillAsync(skillDir, input, timeoutMs = 120_000, opts = {}) {
167
+ const started = Date.now();
168
+ const abortResult = () => ({
169
+ ok: false,
170
+ error: `skill aborted: ${opts.signal ? abortReason(opts.signal) : "cancelled"}`,
171
+ duration_ms: Date.now() - started,
172
+ });
173
+ // Cheapest possible honouring of a cancellation: if it is already aborted, spawn nothing.
174
+ if (opts.signal?.aborted)
175
+ return abortResult();
176
+ const meta = readSkillMeta(skillDir);
177
+ const tier = opts.tierOverride ?? (meta.permission?.tier ?? 0);
178
+ // As in executeSkill: the skill's own declared ceiling caps the caller's timeout, so a
179
+ // runaway code half cannot outlive its budget.
180
+ const timeout = typeof meta.timeout_ms === "number" ? Math.min(timeoutMs, meta.timeout_ms) : timeoutMs;
181
+ return await new Promise((resolve) => {
182
+ const dir = realDir(skillDir);
183
+ const child = spawn("node", [...tierFlags(tier, dir), RUNNER, dir], {
184
+ stdio: ["pipe", "pipe", "pipe"], env: skillEnv(),
185
+ });
186
+ // Mirror executeSkill's `maxBuffer: 64 MB`. Accumulating without a cap was a regression
187
+ // against the function this replaces: tier 0 grants --allow-fs-read=*, so "print a large
188
+ // file" is one line of skill code, and an unbounded read grows the LONG-LIVED MCP server's
189
+ // heap by the size of whatever it printed. Bounded, killed, and named — a truncated read
190
+ // must not surface as "unparseable skill output", which says nothing about what happened.
191
+ const MAX_OUTPUT_BYTES = 64 * 1024 * 1024;
192
+ let stdout = "";
193
+ let stderr = "";
194
+ let overflowed = false;
195
+ let settled = false;
196
+ const done = (r) => {
197
+ if (settled)
198
+ return;
199
+ settled = true;
200
+ clearTimeout(timer);
201
+ opts.signal?.removeEventListener("abort", onAbort);
202
+ resolve(r);
203
+ };
204
+ // SIGKILL, not the default SIGTERM — a SIGTERM-trapping child must not survive a stop.
205
+ const kill = () => {
206
+ try {
207
+ child.kill("SIGKILL");
208
+ }
209
+ catch {
210
+ /* already gone */
211
+ }
212
+ };
213
+ const onAbort = () => {
214
+ kill();
215
+ done(abortResult());
216
+ };
217
+ const timer = setTimeout(() => {
218
+ kill();
219
+ done({ ok: false, error: `skill timed out after ${timeout}ms`, duration_ms: Date.now() - started });
220
+ }, timeout);
221
+ opts.signal?.addEventListener("abort", onAbort, { once: true });
222
+ const capture = (buf, which) => {
223
+ if (overflowed)
224
+ return;
225
+ const next = (which === "out" ? stdout : stderr) + buf.toString();
226
+ if (next.length > MAX_OUTPUT_BYTES) {
227
+ overflowed = true;
228
+ kill();
229
+ done({
230
+ ok: false,
231
+ error: `skill output exceeded ${MAX_OUTPUT_BYTES} bytes and was killed`,
232
+ duration_ms: Date.now() - started,
233
+ });
234
+ return;
235
+ }
236
+ if (which === "out")
237
+ stdout = next;
238
+ else
239
+ stderr = next;
240
+ };
241
+ child.stdout.on("data", (c) => capture(c, "out"));
242
+ child.stderr.on("data", (c) => capture(c, "err"));
243
+ child.on("error", (e) => done({ ok: false, error: String(e.message), duration_ms: Date.now() - started }));
244
+ child.on("close", () => {
245
+ const duration_ms = Date.now() - started;
246
+ try {
247
+ const parsed = JSON.parse(stdout);
248
+ done({ ...parsed, duration_ms });
249
+ }
250
+ catch {
251
+ done({
252
+ ok: false,
253
+ error: `unparseable skill output: ${(stdout || stderr || "").slice(0, 300)}`,
254
+ duration_ms,
255
+ });
256
+ }
257
+ });
258
+ child.stdin.on("error", () => {
259
+ /* the child may exit before we finish writing; `close` reports the real outcome */
260
+ });
261
+ child.stdin.end(JSON.stringify(input));
262
+ });
263
+ }
264
+ /** The human-readable cause behind an abort, whatever shape the aborter used. */
265
+ function abortReason(signal) {
266
+ const r = signal.reason;
267
+ if (r instanceof Error)
268
+ return r.message;
269
+ if (typeof r === "string" && r)
270
+ return r;
271
+ return "cancelled";
272
+ }
69
273
  function getPath(obj, path) {
70
274
  return path.split(".").reduce((acc, k) => (acc != null ? acc[k] : undefined), obj);
71
275
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skill_subprocess.js","sourceRoot":"","sources":["../../src/skill_subprocess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill_subprocess.js","sourceRoot":"","sources":["../../src/skill_subprocess.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /** Engine semver. Keep in lockstep with package.json `version` (enforced by test). */
2
- export declare const COLTRANE_VERSION = "0.4.0";
2
+ export declare const COLTRANE_VERSION = "0.5.0";
3
3
  /**
4
4
  * The commit this engine checkout is sitting on, or null when it can't be determined.
5
5
  *
@@ -13,7 +13,7 @@ import { existsSync, readFileSync, statSync } from "node:fs";
13
13
  import { dirname, join, resolve } from "node:path";
14
14
  import { fileURLToPath } from "node:url";
15
15
  /** Engine semver. Keep in lockstep with package.json `version` (enforced by test). */
16
- export const COLTRANE_VERSION = "0.4.0";
16
+ export const COLTRANE_VERSION = "0.5.0";
17
17
  /**
18
18
  * The commit this engine checkout is sitting on, or null when it can't be determined.
19
19
  *
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@eir-labs/coltrane",
3
- "version": "0.4.0",
4
- "description": "A methodology engine a typed substrate for defining agents, composing multi-phase standards, dispatching gigs, and sealing every output to a content-addressed ledger. Ships as an MCP server.",
3
+ "version": "0.5.0",
4
+ "description": "A methodology engine \u2014 a typed substrate for defining agents, composing multi-phase standards, dispatching gigs, and sealing every output to a content-addressed ledger. Ships as an MCP server.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
7
7
  "author": "Eir",
@@ -25,6 +25,7 @@
25
25
  "node": ">=20"
26
26
  },
27
27
  "bin": {
28
+ "coltrane": "./dist/src/cli_entry.js",
28
29
  "coltrane-server": "./dist/src/server_entry.js"
29
30
  },
30
31
  "main": "./dist/src/index.js",
@@ -32,7 +33,8 @@
32
33
  "exports": {
33
34
  ".": {
34
35
  "types": "./dist/src/index.d.ts",
35
- "import": "./dist/src/index.js"
36
+ "import": "./dist/src/index.js",
37
+ "default": "./dist/src/index.js"
36
38
  },
37
39
  "./package.json": "./package.json"
38
40
  },
@@ -50,7 +52,7 @@
50
52
  "access": "public"
51
53
  },
52
54
  "scripts": {
53
- "build": "tsc && cp src/skill_runner.mjs dist/src/ && chmod +x dist/src/server_entry.js dist/src/server_relay.js",
55
+ "build": "tsc && cp src/skill_runner.mjs dist/src/ && chmod +x dist/src/server_entry.js dist/src/server_relay.js dist/src/cli_entry.js",
54
56
  "dev": "tsc --watch",
55
57
  "prepare": "npm run build",
56
58
  "test": "vitest run",