@sublang/slc 0.1.0 → 0.2.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 CHANGED
@@ -3,51 +3,62 @@
3
3
 
4
4
  # slc
5
5
 
6
+ [![npm version](https://img.shields.io/npm/v/@sublang/slc)](https://www.npmjs.com/package/@sublang/slc)
7
+ [![Node.js](https://img.shields.io/node/v/@sublang/slc)](https://nodejs.org/)
6
8
  [![CI](https://github.com/sublang-ai/slc/actions/workflows/ci.yml/badge.svg)](https://github.com/sublang-ai/slc/actions/workflows/ci.yml)
7
9
 
8
- _The SubLang Compiler: pipelines whose phases are written in prose and
9
- carried out by coding agents._
10
-
11
- `slc` runs compilation pipelines in which each phase is defined by a
12
- plain markdown file and executed by an AI coding agent (reached through
13
- [cligent](https://github.com/sublang-ai/cligent)). Adding a phase means
14
- writing a definition, never changing the compiler: `slc` itself performs
15
- only the generic mechanics — chaining phases by their declared formats,
16
- validating names and locations, and placing artifacts.
17
-
18
- ```bash
19
- slc <pipeline>[.<phase>] <source> [-o <target>]
20
- ```
21
-
22
- Its flagship pipeline is `playbook`, the compilation service behind
23
- [playbook](https://github.com/sublang-ai/playbook): it turns a workflow
24
- written in prose into GEARS spec items (one normative item per state
25
- behavior) and then into an inspectable XState v5 state machine,
26
- optionally linked into the runnable runtime module playbook's hosts
27
- execute.
28
-
29
- Distinctively, `slc` is self-hosting. The reserved `slc` meta-pipeline
30
- compiles phase definitions themselves into runnable playbook artifacts:
31
- the bundled phases ship compiled, reviewed, and sha256-pinned under
32
- [`pipelines/playbook/`](pipelines/playbook). A pinned phase runs exactly
33
- its reviewed compiled artifact, verified by hash — a missing or stale
34
- pin fails with a diagnostic instead of silently reinterpreting while
35
- unpinned phases fall back to the agent reading the definition directly.
10
+ _The SubLang Compiler: describe a workflow in a paragraph of prose, get a
11
+ deterministic multi-agent program you can inspect, verify, and run._
12
+
13
+ You write what should happen — in English or Chinese, no DSL, no
14
+ orchestration framework. `slc` compiles that paragraph into a spec, a
15
+ state machine, and a runnable **playbook** that drives AI coding agents
16
+ through it. Why compile prose instead of prompting with it:
17
+
18
+ - **Deterministic where it matters.** Who acts, in what order, when to
19
+ stop — the control flow becomes an inspectable
20
+ [XState](https://xstate.js.org) machine, not prompt improvisation.
21
+ LLM judgment is confined to the work *inside* each state.
22
+ - **Auditable at every stage.** The intermediates are first-class files
23
+ you can read and edit: the normalized text, one testable "shall" item
24
+ per behavior (in the GEARS spec grammar the SubLang stack shares), and
25
+ the state machine itself. The compiler also emits verification tests
26
+ binding its output to the source spec.
27
+ - **Cheaper and safer by optimization.** Steps that need no judgment are
28
+ rewritten at compile time into plain shell commands no LLM call, no
29
+ hallucination, verifiable before anything runs.
30
+ - **Your agents, per role.** Compilation and execution run through the
31
+ agent CLIs you already use Claude Code, Codex, Gemini, OpenCode —
32
+ selectable per role.
33
+
34
+ The flagship pipeline is `playbook` (the name of both the pipeline and
35
+ the sibling [playbook](https://github.com/sublang-ai/playbook) project
36
+ that executes its output): prose GEARS spec items XState machine →
37
+ a linked module the `playbook` CLI runs.
38
+
39
+ ## See it run
40
+
41
+ The [demo](demo/README.md) compiles a one-paragraph description into a
42
+ two-agent code-review loop, then lets it loose on a buggy C file: the
43
+ coder and reviewer commit, review, and debate inside a real Git
44
+ repository until the review comes back clean. Precompiled reference
45
+ artifacts are included, so you can watch a run — or just read every
46
+ compile stage — without waiting on a compile.
36
47
 
37
48
  ## Install
38
49
 
39
- Install the compiler and Playbook runtime in the project that will contain the
40
- generated artifacts:
41
-
42
50
  ```bash
43
- npm install --save-dev @sublang/slc @sublang/playbook
44
- npx slc --version
51
+ npm install -g @sublang/slc @sublang/playbook
52
+ slc --version
45
53
  ```
46
54
 
47
- The project-local Playbook install is required: generated thin runtime modules
48
- import `@sublang/playbook/xstate-runtime` and their FSMs import `xstate` from
49
- the artifact's project. A global-only install does not provide Node module
50
- resolution for artifacts written elsewhere.
55
+ Compiled artifacts import the Playbook engine from their own directory;
56
+ when that import does not resolve, `playbook run` (3.1+) links its own
57
+ engine beside the artifact and says so (`--no-provision` opts out).
58
+ Working inside an npm project instead? Install both packages there and
59
+ prefix the commands with `npx` — a project's own install is always
60
+ authoritative ([RELEASE-11](specs/dev/release.md#release-11) has the
61
+ full rules).
51
62
 
52
63
  Requirements:
53
64
 
@@ -64,28 +75,36 @@ Requirements:
64
75
 
65
76
  ## Quick start
66
77
 
67
- From the repo root its [`slc.config.yaml`](slc.config.yaml) routes the
68
- `playbook` pipeline to the bundled copy under `pipelines/` compile a
69
- prose workflow:
78
+ In any directory, write a prose workflow as a `.md` or plain `.txt`
79
+ file [`demo/workflow.txt`](demo/workflow.txt) is a complete
80
+ one-paragraph example — and compile it:
70
81
 
71
82
  ```bash
72
- npx slc playbook my-workflow.md
83
+ slc playbook my-workflow.md
73
84
  ```
74
85
 
75
- This writes `my-workflow.playbook/` the intermediates
76
- (`my-workflow.gears.md`, the XState machine `my-workflow.fsm.ts`), the
77
- runnable runtime module, and its verification testsplus the
78
- `my-workflow.ts` entry that `playbook run` consumes, all in your
79
- working directory. A raw input (any extension the entry phase doesn't
80
- declare, e.g. `.txt`) is normalized first, and the pipeline's
81
- optimization pass runs by default (`--no-optimize` skips it). For what
82
- a prose workflow looks like, see playbook's canonical worked example,
83
- [`code.md`](https://github.com/sublang-ai/playbook/blob/main/reference/sdlc/code.md).
84
- Intermediates are first-class: edit one and re-run a single
85
- phase (`npx slc playbook.gears2fsm …`) and it lands in the same place.
86
- `npx slc --help` shows all invocation forms. The repo config pins
87
- `agent: claude-code` set `SLC_AGENT` (or edit the config) to compile
88
- with another agent CLI.
86
+ `slc` finds the `playbook` pipeline inside its own `@sublang/playbook`
87
+ dependency, so it compiles in any directory — no clone, no project
88
+ setup. Compilation drives your configured coding agentthe first run
89
+ seeds `~/.config/slc/config.yaml` with `agent: claude-code`; set
90
+ `SLC_AGENT` (or edit that file) to use another agent CLI — and a full
91
+ pipeline can take more than ten minutes. Plain-text input (`.txt`)
92
+ works too; it is normalized first. The pipeline's optimization pass,
93
+ which rewrites judgment-free steps into plain script, runs by default
94
+ (`--no-optimize` skips it).
95
+
96
+ Artifacts land in your working directory: `my-workflow.playbook/` holds
97
+ the intermediates `my-workflow.gears.md`, the XState machine
98
+ `my-workflow.fsm.ts`, the linked runtime module, and its verification
99
+ tests and `my-workflow.ts` is the runnable entry. Run it:
100
+
101
+ ```bash
102
+ playbook run ./my-workflow.ts "<your task>"
103
+ ```
104
+
105
+ Intermediates are first-class: edit one and re-run a single phase
106
+ (`slc playbook.gears2fsm …`) and it lands in the same place.
107
+ `slc --help` shows all invocation forms.
89
108
 
90
109
  Success prints the written artifact paths and exits 0; a failure prints
91
110
  diagnostics to stderr — naming the failing phase when one is at fault —
@@ -108,26 +127,10 @@ pipelinePath: # search roots for <pipeline> references; defaults to the cwd
108
127
  - ./pipelines
109
128
  ```
110
129
 
111
- Discovery order (first match wins):
112
-
113
- 1. `slc.config.yaml` in the working directory.
114
- 2. `${XDG_CONFIG_HOME:-~/.config}/slc/config.yaml`.
115
-
116
- `slc --config <path>` loads a specific file and disables discovery; a `--config`
117
- path that does not exist is an error, whereas a discovery miss simply falls
118
- through to the environment and defaults. Unknown keys, malformed YAML, and
119
- wrong-typed values are rejected.
120
-
121
- The matching environment variables, which override the file per key, are:
122
-
123
- | Variable | Overrides | Meaning |
124
- | --- | --- | --- |
125
- | `SLC_AGENT` | `agent` | agent CLI: `claude-code`, `codex`, `gemini`, `opencode` |
126
- | `SLC_MODEL` | `model` | optional model for the agent CLI |
127
- | `SLC_PIPELINE_PATH` | `pipelinePath` | OS path-list of search roots (default: cwd) |
128
-
129
- Credentials are read by the agent CLI from the inherited process environment.
130
- Run `slc --help` for the full invocation and configuration summary.
130
+ A `slc.config.yaml` in the working directory wins over the user config;
131
+ `SLC_AGENT`, `SLC_MODEL`, and `SLC_PIPELINE_PATH` override either per
132
+ key. Discovery order, `--config`, and validation rules live in the
133
+ [CLI spec](specs/user/cli.md); `slc --help` prints the summary.
131
134
 
132
135
  ## How pipelines work
133
136
 
@@ -135,21 +138,23 @@ A pipeline is a directory of phase definitions named
135
138
  `<source-format>2<target-format>.md`, each declaring its formats in a
136
139
  `## Formats` table, plus an optional `link.md` defining the terminal
137
140
  link phase. `slc` infers phase order by chaining formats — no
138
- manifest — and refuses incomplete, branching, or cyclic chains. The
139
- bundled `playbook` pipeline chains `text2gears` and `gears2fsm`, with
140
- `link` emitting the runnable runtime.
141
+ manifest — and refuses incomplete, branching, or cyclic chains. Adding
142
+ a phase means writing a definition, never changing the compiler: `slc`
143
+ itself performs only the generic mechanics of chaining, validation, and
144
+ artifact placement. The bundled `playbook` pipeline chains `text2gears`
145
+ and `gears2fsm`, with `link` emitting the runnable runtime.
141
146
 
142
147
  Every phase runs through a coding agent, one of two ways:
143
148
 
144
149
  - **Interpreted** — the configured agent reads the definition and
145
- performs it.
146
- - **Compiled** the phase's own compiled playbook artifact (produced by
147
- the `slc` meta-pipeline, reviewed, and pinned in
148
- [`slc.pins.json`](pipelines/playbook/slc.pins.json)) drives the agent
149
- through audited state-machine steps. Pins bind each artifact by
150
- sha256 to every input that shaped it — definition, artifact bundle,
151
- and runtime dependencies so which artifact executes is reproducible,
152
- and pinned runs fail closed on drift.
150
+ performs it. This is how an npm-installed `slc` runs the `playbook`
151
+ pipeline, using the definitions shipped inside `@sublang/playbook`.
152
+ - **Compiled** — the phase's own compiled playbook artifact drives the
153
+ agent through audited state-machine steps. This repository's checkout
154
+ runs its bundled phases this way: `slc` is self-hosting, its phase
155
+ definitions compiled, reviewed, and sha256-pinned under
156
+ [`pipelines/playbook/`](pipelines/playbook), failing closed on drift
157
+ ([self-hosting spec](specs/user/self-hosting.md)).
153
158
 
154
159
  Specs are the source of truth — start at the
155
160
  [spec map](specs/map.md).
@@ -163,8 +168,9 @@ Specs are the source of truth — start at the
163
168
  coding-agent SDK `slc` executes phases through.
164
169
  - [playbook](https://github.com/sublang-ai/playbook) — authors the
165
170
  `playbook` pipeline's phase specs and runs the compiled output.
166
- - [spex](https://github.com/sublang-ai/spex) — the desktop app that
167
- invokes `slc` for its in-app playbook compile flow.
171
+ - [spex](https://github.com/sublang-ai/spex) — the spec tool that owns
172
+ the shared GEARS grammar and invokes `slc` for its in-app playbook
173
+ compile flow.
168
174
 
169
175
  ## Develop
170
176
 
@@ -175,8 +181,11 @@ npm test
175
181
  npm run lint
176
182
  ```
177
183
 
178
- CI additionally re-verifies the compiled meta-phase bundles and checks
179
- that pin regeneration is byte-identical to the committed index.
184
+ A checkout's own [`slc.config.yaml`](slc.config.yaml) routes the
185
+ `playbook` pipeline to the bundled copy under `pipelines/`, so repo
186
+ compiles exercise the pinned artifacts. CI additionally re-verifies the
187
+ compiled meta-phase bundles and checks that pin regeneration is
188
+ byte-identical to the committed index.
180
189
 
181
190
  ## Contributing
182
191
 
package/dist/config.js CHANGED
@@ -150,10 +150,14 @@ function runtimeContractForPin(choice) {
150
150
  // the six-port boundary and structured results while moving Captain host
151
151
  // failures onto the resolved `failed` path and emitting thin linked
152
152
  // modules (DR-017), so all three provenances select the composed profile.
153
- // 1.3.0 was never installed or reviewed and stays fail-closed.
153
+ // 3.1.0 ships runtime.ts byte-identical to 2.0.0 and only adds the
154
+ // additive DR-022 compat self-report on the shared engine, so it selects
155
+ // the same profile (DR-018). 1.3.0 and 3.0.0 were never installed or
156
+ // reviewed here and stay fail-closed.
154
157
  if (provenance === '@sublang/playbook@0.10.0' ||
155
158
  provenance === '@sublang/playbook@1.0.0' ||
156
- provenance === '@sublang/playbook@2.0.0') {
159
+ provenance === '@sublang/playbook@2.0.0' ||
160
+ provenance === '@sublang/playbook@3.1.0') {
157
161
  return 'composed-v2';
158
162
  }
159
163
  throw new Error(`unsupported pinned Playbook runtime contract: ${provenance}`);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The relative import specifiers of a `.ts`/`.js` module that do not resolve
3
+ * to an existing file from the module's own directory, in source order.
4
+ */
5
+ export declare function unresolvableRelativeImports(modulePath: string): Promise<string[]>;
6
+ //# sourceMappingURL=emitted-imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitted-imports.d.ts","sourceRoot":"","sources":["../src/emitted-imports.ts"],"names":[],"mappings":"AAqBA;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB"}
@@ -0,0 +1,36 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
3
+ /**
4
+ * Deterministic load-integrity check for emitted modules (VERIFY-18).
5
+ *
6
+ * A linked artifact is code whose relative imports Node resolves with exact
7
+ * specifiers — `./workflow.fsm.js` does not find `workflow.fsm.ts`. An
8
+ * agent-performed link can emit the wrong extension, and a compile that
9
+ * reports success for a module that cannot load defers the failure to the
10
+ * first `playbook run`. This check reads the emitted module and requires
11
+ * every relative specifier to name an existing file beside it.
12
+ */
13
+ import { existsSync } from 'node:fs';
14
+ import { readFile } from 'node:fs/promises';
15
+ import { dirname, resolve } from 'node:path';
16
+ const IMPORT_SPECIFIER = /\bfrom\s+(['"])([^'"\n]+)\1|\bimport\s*\(\s*(['"])([^'"\n]+)\3\s*\)|\bimport\s+(['"])([^'"\n]+)\5/g;
17
+ /**
18
+ * The relative import specifiers of a `.ts`/`.js` module that do not resolve
19
+ * to an existing file from the module's own directory, in source order.
20
+ */
21
+ export async function unresolvableRelativeImports(modulePath) {
22
+ const source = await readFile(modulePath, 'utf8');
23
+ const dir = dirname(modulePath);
24
+ const missing = [];
25
+ for (const match of source.matchAll(IMPORT_SPECIFIER)) {
26
+ const specifier = match[2] ?? match[4] ?? match[6];
27
+ if (specifier === undefined)
28
+ continue;
29
+ if (!specifier.startsWith('./') && !specifier.startsWith('../'))
30
+ continue;
31
+ if (!existsSync(resolve(dir, specifier)))
32
+ missing.push(specifier);
33
+ }
34
+ return missing;
35
+ }
36
+ //# sourceMappingURL=emitted-imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitted-imports.js","sourceRoot":"","sources":["../src/emitted-imports.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,gBAAgB,GACpB,oGAAoG,CAAC;AAEvG;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS;QACtC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS;QAC1E,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"entry-module.d.ts","sourceRoot":"","sources":["../src/entry-module.ts"],"names":[],"mappings":"AAwBA,2CAA2C;AAC3C,MAAM,WAAW,sBAAsB;IACrC,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mDAAmD;AACnD,wBAAsB,eAAe,CACnC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBvD"}
1
+ {"version":3,"file":"entry-module.d.ts","sourceRoot":"","sources":["../src/entry-module.ts"],"names":[],"mappings":"AAwBA,2CAA2C;AAC3C,MAAM,WAAW,sBAAsB;IACrC,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mDAAmD;AACnD,wBAAsB,eAAe,CACnC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBvD"}
@@ -54,7 +54,9 @@ export function declaredPlayers(gears) {
54
54
  const players = [];
55
55
  let inBlock = false;
56
56
  for (const line of gears.split('\n')) {
57
- if (/^Players:\s*$/.test(line)) {
57
+ // Gears render the declaration either as a `Players:` line or as a
58
+ // markdown `Players` heading; both carry the same source declaration.
59
+ if (/^(?:#{1,6}\s+Players|Players:)\s*$/.test(line.trim())) {
58
60
  inBlock = true;
59
61
  continue;
60
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entry-module.js","sourceRoot":"","sources":["../src/entry-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry-module.js","sourceRoot":"","sources":["../src/entry-module.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAmBA,OAAO,EAEL,KAAK,aAAa,EAGnB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EAEL,KAAK,gBAAgB,EAGtB,MAAM,eAAe,CAAC;AAavB,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,4CAA4C;AAC5C,MAAM,WAAW,OAAO;IACtB,uEAAuE;IACvE,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,uFAAuF;IACvF,QAAQ,EAAE,aAAa,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,aAAa,CAAC;IAC3D,uGAAuG;IACvG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,mCAAmC;AACnC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,wCAAwC;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sEAAsE;IACtE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC,CAoCpB;AAgVD,6EAA6E;AAC7E,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAoBA,OAAO,EAEL,KAAK,aAAa,EAGnB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EAEL,KAAK,gBAAgB,EAGtB,MAAM,eAAe,CAAC;AAavB,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,4CAA4C;AAC5C,MAAM,WAAW,OAAO;IACtB,uEAAuE;IACvE,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,uFAAuF;IACvF,QAAQ,EAAE,aAAa,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,aAAa,CAAC;IAC3D,uGAAuG;IACvG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,mCAAmC;AACnC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,wCAAwC;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sEAAsE;IACtE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC,CAoCpB;AA4VD,6EAA6E;AAC7E,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
package/dist/runner.js CHANGED
@@ -14,6 +14,7 @@ import { dirname, join } from 'node:path';
14
14
  import { fileURLToPath } from 'node:url';
15
15
  import { artifactDir, planArtifacts, parseSource } from './artifacts.js';
16
16
  import { emitEntryModule } from './entry-module.js';
17
+ import { unresolvableRelativeImports } from './emitted-imports.js';
17
18
  import { formatFailureReport, runPhase, } from './execution.js';
18
19
  import { parseInvocation } from './invocation.js';
19
20
  import { linkedArtifactPath, loadLinkFile } from './link.js';
@@ -231,6 +232,18 @@ async function runFullLink(invocation, deps) {
231
232
  gearsPath: gearsPlan.path,
232
233
  textPath,
233
234
  });
235
+ const missing = await unresolvableRelativeImports(entryPath);
236
+ if (missing.length > 0) {
237
+ return {
238
+ ok: false,
239
+ outputs: verified.outputs,
240
+ diagnostics: [
241
+ ...verified.diagnostics,
242
+ `entry module ${entryPath} has unresolvable relative imports: ` +
243
+ `${missing.join(', ')} (VERIFY-18)`,
244
+ ],
245
+ };
246
+ }
234
247
  return { ...verified, outputs: [...verified.outputs, entryPath] };
235
248
  }
236
249
  }
@@ -440,6 +453,19 @@ async function executeSteps(steps, pipeline, deps) {
440
453
  return { ok: false, outputs, diagnostics };
441
454
  }
442
455
  diagnostics.push(...result.diagnostics);
456
+ // A linked module that cannot resolve its own relative imports cannot
457
+ // load under `playbook run`; fail the link rather than report success
458
+ // for a dead artifact (VERIFY-18).
459
+ if (step.phase === 'link' &&
460
+ (step.targetExt === '.ts' || step.targetExt === '.js')) {
461
+ const missing = await unresolvableRelativeImports(step.request.kind === 'link' ? step.request.linked : target);
462
+ if (missing.length > 0) {
463
+ diagnostics.push(`linked module ${target} has unresolvable relative imports: ` +
464
+ `${missing.join(', ')} — an emitted module that cannot load ` +
465
+ 'fails the link (VERIFY-18)');
466
+ return { ok: false, outputs, diagnostics };
467
+ }
468
+ }
443
469
  outputs.push(target);
444
470
  }
445
471
  return { ok: true, outputs, diagnostics };
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sublang/slc",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "SubLang Compiler (slc): runs phase pipelines.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -41,9 +41,10 @@
41
41
  "node": ">=23.6"
42
42
  },
43
43
  "scripts": {
44
- "build": "tsc && cp src/normalize.md src/slc.config.template.yaml dist/",
44
+ "build": "rm -rf dist && tsc && cp src/normalize.md src/slc.config.template.yaml dist/",
45
45
  "test": "vitest run",
46
46
  "test:package": "node scripts/test-package.mjs",
47
+ "test:acceptance": "node scripts/test-acceptance.mjs",
47
48
  "lint": "eslint .",
48
49
  "format": "prettier --write .",
49
50
  "format:check": "prettier --check .",
@@ -51,7 +52,7 @@
51
52
  "verify:release": "node scripts/verify-release-workflow.mjs",
52
53
  "verify:artifacts": "node scripts/verify-artifacts.mjs pipelines/playbook/text2gears.slc text2gears && node scripts/verify-artifacts.mjs pipelines/playbook/gears2fsm.slc gears2fsm && node scripts/verify-artifacts.mjs pipelines/playbook/link.slc link",
53
54
  "verify:pins": "node scripts/generate-pins.mjs && git diff --exit-code -- pipelines/playbook/slc.pins.json",
54
- "verify:demo": "node demo/reference/check.mjs en",
55
+ "verify:demo": "node demo/reference/check.mjs en && node demo/reference/check.mjs zh",
55
56
  "release:check": "npm run format:check && npm run lint && npm run build && npm test && npm run verify:definitions && npm run verify:release && npm run verify:artifacts && npm run verify:pins && npm run verify:demo && npm run test:package",
56
57
  "prepublishOnly": "npm run release:check"
57
58
  },
@@ -67,7 +68,7 @@
67
68
  },
68
69
  "dependencies": {
69
70
  "@sublang/cligent": "^0.16.0",
70
- "@sublang/playbook": "^2.0.0",
71
+ "@sublang/playbook": "^3.1.0",
71
72
  "@sublang/spex": "^0.3.0",
72
73
  "typescript": "^6.0.3",
73
74
  "xstate": "^5.32.4",
@@ -1,46 +0,0 @@
1
- import { type Hash } from './hash.js';
2
- /** A virtual POSIX path inside the run root (DR-008). */
3
- export type SlcPath = string;
4
- /** Machine-readable reason a capability operation failed (DR-008). */
5
- export type FileErrorCode = 'invalid_path' | 'not_found' | 'not_file' | 'not_directory' | 'unauthorized' | 'stale' | 'io_error';
6
- /** The result of a capability operation: a value, or a coded failure (DR-008). */
7
- export type FileResult<T> = {
8
- ok: true;
9
- value: T;
10
- } | {
11
- ok: false;
12
- code: FileErrorCode;
13
- diagnostic: string;
14
- };
15
- /** One immediate child returned by {@link FileCapability.list} (DR-008). */
16
- export interface DirectoryEntry {
17
- name: string;
18
- kind: 'file' | 'directory';
19
- }
20
- /** The artifact-facing file capability (FCAP-1; DR-008). */
21
- export interface FileCapability {
22
- read(path: SlcPath): Promise<FileResult<{
23
- bytes: Uint8Array;
24
- hash: Hash;
25
- }>>;
26
- list(path: SlcPath): Promise<FileResult<{
27
- entries: DirectoryEntry[];
28
- }>>;
29
- write(path: SlcPath, bytes: Uint8Array, opts?: {
30
- ifMatch?: Hash;
31
- }): Promise<FileResult<{
32
- hash: Hash;
33
- }>>;
34
- }
35
- /**
36
- * Creates a {@link FileCapability} rooted at `runRoot`, confining every operation
37
- * to that directory after symlink resolution (FCAP-1..6).
38
- */
39
- export declare function createFileCapability(runRoot: string): FileCapability;
40
- /**
41
- * Canonicalizes a virtual POSIX path to its normalized `/`-prefixed form — the key
42
- * the host-side grant model matches on — or `null` when the path is
43
- * platform-absolute or escapes the run root (FCAP-2).
44
- */
45
- export declare function canonicalize(path: SlcPath): string | null;
46
- //# sourceMappingURL=file-capability.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-capability.d.ts","sourceRoot":"","sources":["../src/file-capability.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,KAAK,IAAI,EAAa,MAAM,WAAW,CAAC;AAEjD,yDAAyD;AACzD,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,sEAAsE;AACtE,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,WAAW,GACX,UAAU,GACV,eAAe,GACf,cAAc,GACd,OAAO,GACP,UAAU,CAAC;AAEf,kFAAkF;AAClF,MAAM,MAAM,UAAU,CAAC,CAAC,IACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;CAC5B;AAED,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC,CAAC,CAAC;IACxE,KAAK,CACH,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,UAAU,EACjB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,IAAI,CAAA;KAAE,GACxB,OAAO,CAAC,UAAU,CAAC;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAoHpE;AAwDD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CASzD"}
@@ -1,234 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
3
- /**
4
- * Host-supplied file capability for compiled phase artifacts (FCAP-1..6; DR-008).
5
- *
6
- * A {@link FileCapability} gives a compiled artifact deterministic, confined
7
- * whole-file access through three operations — `read`, `list`, and `write` — over
8
- * virtual POSIX paths inside a per-run root. A leading `/` names the run root, not
9
- * an operating-system absolute path; paths are normalized (repeated separators
10
- * collapsed, `.` removed, `..` resolved) and confined to the root after resolving
11
- * symlinks, so a path that escapes the root or uses platform-absolute syntax (for
12
- * example a Windows drive path) is rejected as `invalid_path` (FCAP-2). Reads and
13
- * writes return the exact-byte `sha256:` hash with no content transformation
14
- * (FCAP-3, FCAP-5); writes are atomic whole-file replacements and honor an
15
- * `ifMatch` compare-and-swap that returns `stale` on a hash mismatch (FCAP-6);
16
- * listing returns only immediate children, directories before files then
17
- * lexicographic (FCAP-4).
18
- *
19
- * This module is the artifact-facing surface. The host-side per-run grant model
20
- * that authorizes each operation (default-deny, writable target/linked only) is a
21
- * later FCAP concern; this capability authorizes by run-root containment alone.
22
- * See specs/dev/file-capability.md.
23
- */
24
- import { randomUUID } from 'node:crypto';
25
- import { readFile, readdir, realpath, rename, stat, writeFile, } from 'node:fs/promises';
26
- import { basename, dirname, join, relative, resolve, sep } from 'node:path';
27
- import { hashBytes } from './hash.js';
28
- /**
29
- * Creates a {@link FileCapability} rooted at `runRoot`, confining every operation
30
- * to that directory after symlink resolution (FCAP-1..6).
31
- */
32
- export function createFileCapability(runRoot) {
33
- const root = resolve(runRoot);
34
- let realRoot = null;
35
- const canonicalRoot = () => (realRoot ??= realpath(root));
36
- async function resolveHost(path) {
37
- if (isPlatformAbsolute(path)) {
38
- return fail('invalid_path', `path "${path}" uses platform-absolute syntax`);
39
- }
40
- const segments = normalizeVirtual(path);
41
- if (segments === null) {
42
- return fail('invalid_path', `path "${path}" escapes the run root`);
43
- }
44
- const host = segments.length === 0 ? root : join(root, ...segments);
45
- const real = await realpathAllowingMissing(host);
46
- if (!isInside(await canonicalRoot(), real)) {
47
- return fail('invalid_path', `path "${path}" escapes the run root after resolving symlinks`);
48
- }
49
- return { ok: true, value: host };
50
- }
51
- // Serialize writes per resolved host path so an ifMatch read-check-rename runs
52
- // without another write to the same path interleaving at an await — making the
53
- // compare-and-swap atomic across operations through this capability (FCAP-6).
54
- const writeLocks = new Map();
55
- function serializeWrite(host, op) {
56
- const prior = writeLocks.get(host) ?? Promise.resolve();
57
- const run = prior.then(op, op);
58
- writeLocks.set(host, run.then(() => undefined, () => undefined));
59
- return run;
60
- }
61
- return {
62
- async read(path) {
63
- const resolved = await resolveHost(path);
64
- if (!resolved.ok) {
65
- return resolved;
66
- }
67
- try {
68
- const info = await stat(resolved.value);
69
- if (info.isDirectory()) {
70
- return fail('not_file', `path "${path}" is a directory`);
71
- }
72
- const bytes = await readFile(resolved.value);
73
- return { ok: true, value: { bytes, hash: hashBytes(bytes) } };
74
- }
75
- catch (error) {
76
- return fromFsError(error, path);
77
- }
78
- },
79
- async list(path) {
80
- const resolved = await resolveHost(path);
81
- if (!resolved.ok) {
82
- return resolved;
83
- }
84
- try {
85
- const info = await stat(resolved.value);
86
- if (!info.isDirectory()) {
87
- return fail('not_directory', `path "${path}" is not a directory`);
88
- }
89
- const dirents = await readdir(resolved.value, { withFileTypes: true });
90
- const entries = dirents
91
- .map((entry) => ({
92
- name: entry.name,
93
- kind: entry.isDirectory() ? 'directory' : 'file',
94
- }))
95
- .sort(compareEntries);
96
- return { ok: true, value: { entries } };
97
- }
98
- catch (error) {
99
- return fromFsError(error, path);
100
- }
101
- },
102
- async write(path, bytes, opts) {
103
- const resolved = await resolveHost(path);
104
- if (!resolved.ok) {
105
- return resolved;
106
- }
107
- const host = resolved.value;
108
- return serializeWrite(host, async () => {
109
- try {
110
- const current = await currentHash(host);
111
- if (current.kind === 'directory') {
112
- return fail('not_file', `path "${path}" is a directory`);
113
- }
114
- if (opts?.ifMatch !== undefined && opts.ifMatch !== current.hash) {
115
- return fail('stale', `path "${path}" did not match ifMatch ${opts.ifMatch}`);
116
- }
117
- await atomicWrite(host, bytes);
118
- return { ok: true, value: { hash: hashBytes(bytes) } };
119
- }
120
- catch (error) {
121
- return fromFsError(error, path);
122
- }
123
- });
124
- },
125
- };
126
- }
127
- /** The current exact-byte hash of `host`, or `null` when it does not exist. */
128
- async function currentHash(host) {
129
- try {
130
- const info = await stat(host);
131
- if (info.isDirectory()) {
132
- return { kind: 'directory' };
133
- }
134
- return { kind: 'file', hash: hashBytes(await readFile(host)) };
135
- }
136
- catch (error) {
137
- if (isNotFound(error)) {
138
- return { kind: 'absent', hash: null };
139
- }
140
- throw error;
141
- }
142
- }
143
- /** Atomically replaces or creates `host` by writing a sibling temp file and renaming. */
144
- async function atomicWrite(host, bytes) {
145
- const temp = join(dirname(host), `.${basename(host)}.${randomUUID()}.tmp`);
146
- await writeFile(temp, bytes);
147
- await rename(temp, host);
148
- }
149
- /**
150
- * Normalizes a virtual POSIX path to in-root segments, treating a leading `/` as
151
- * the root and resolving `.`/`..`; returns `null` when `..` escapes the root.
152
- */
153
- function normalizeVirtual(path) {
154
- const out = [];
155
- for (const part of path.split('/')) {
156
- if (part === '' || part === '.') {
157
- continue;
158
- }
159
- if (part === '..') {
160
- if (out.length === 0) {
161
- return null;
162
- }
163
- out.pop();
164
- continue;
165
- }
166
- out.push(part);
167
- }
168
- return out;
169
- }
170
- /** Rejects Windows drive paths and UNC syntax (DR-008 platform-absolute paths). */
171
- function isPlatformAbsolute(path) {
172
- return /^[a-zA-Z]:[\\/]/.test(path) || path.startsWith('\\');
173
- }
174
- /**
175
- * Canonicalizes a virtual POSIX path to its normalized `/`-prefixed form — the key
176
- * the host-side grant model matches on — or `null` when the path is
177
- * platform-absolute or escapes the run root (FCAP-2).
178
- */
179
- export function canonicalize(path) {
180
- if (isPlatformAbsolute(path)) {
181
- return null;
182
- }
183
- const segments = normalizeVirtual(path);
184
- if (segments === null) {
185
- return null;
186
- }
187
- return `/${segments.join('/')}`;
188
- }
189
- /** Resolves `host` through symlinks, falling back to the deepest existing ancestor. */
190
- async function realpathAllowingMissing(host) {
191
- try {
192
- return await realpath(host);
193
- }
194
- catch (error) {
195
- if (!isNotFound(error)) {
196
- throw error;
197
- }
198
- const parent = dirname(host);
199
- if (parent === host) {
200
- return host;
201
- }
202
- return join(await realpathAllowingMissing(parent), basename(host));
203
- }
204
- }
205
- function isInside(root, candidate) {
206
- if (candidate === root) {
207
- return true;
208
- }
209
- const rel = relative(root, candidate);
210
- return rel !== '' && rel !== '..' && !rel.startsWith(`..${sep}`);
211
- }
212
- /** Orders entries with directories before files, then lexicographically by name. */
213
- function compareEntries(a, b) {
214
- if (a.kind !== b.kind) {
215
- return a.kind === 'directory' ? -1 : 1;
216
- }
217
- return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
218
- }
219
- function fromFsError(error, path) {
220
- if (isNotFound(error)) {
221
- return fail('not_found', `path "${path}" was not found`);
222
- }
223
- return fail('io_error', `path "${path}": ${messageOf(error)}`);
224
- }
225
- function isNotFound(error) {
226
- return error?.code === 'ENOENT';
227
- }
228
- function fail(code, diagnostic) {
229
- return { ok: false, code, diagnostic };
230
- }
231
- function messageOf(error) {
232
- return error instanceof Error ? error.message : String(error);
233
- }
234
- //# sourceMappingURL=file-capability.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-capability.js","sourceRoot":"","sources":["../src/file-capability.ts"],"names":[],"mappings":"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"}
@@ -1,79 +0,0 @@
1
- /**
2
- * Host-side per-run grant model for the file capability (FCAP-11..14; DR-008).
3
- *
4
- * A compiled phase artifact reaches files only through a {@link FileCapability}
5
- * the host builds for that run. The capability is default-deny: an operation
6
- * succeeds only when its path is inside the run root (enforced by the artifact-
7
- * facing layer in `file-capability.ts`) and is covered by a {@link Grant} of the
8
- * matching access. {@link buildRunGrants} encodes the policy — the only writable
9
- * path is the run's `target` (compile) or `linked` (link), and read grants are
10
- * the run's source/object inputs, its link target when applicable, and the
11
- * recorded semantic-input closure, each enumerated as a file grant.
12
- * {@link createGuardedCapability} wraps a run-root capability with that grant set,
13
- * reporting `unauthorized` for any ungranted access.
14
- *
15
- * Directory listing and recursive directory reads are withheld: until a pinning
16
- * extension defines directory listing and subtree identities, this model grants
17
- * neither (DR-008), so a pinned phase cannot widen its closure at run time.
18
- * Scope failures (`invalid_path`, `unauthorized`) are distinguished by
19
- * {@link isScopeFailure} so the executor can fail them like a generic check rather
20
- * than a phase `BLOCKED`. See specs/dev/file-capability.md.
21
- */
22
- import { type FileCapability, type FileErrorCode, type SlcPath } from './file-capability.js';
23
- import { type Hash } from './hash.js';
24
- /** Whether a grant authorizes reading or writing (DR-008). */
25
- export type GrantAccess = 'read' | 'write';
26
- /** Whether a grant covers a file or a directory (DR-008). */
27
- export type GrantKind = 'file' | 'directory';
28
- /** Why a path is granted, for audit and diagnostics (DR-008). */
29
- export type GrantReason = 'source' | 'object' | 'linkTarget' | 'semanticInput' | 'target' | 'linked';
30
- /** One host-side authorization over a normalized virtual path (DR-008). */
31
- export interface Grant {
32
- /** Normalized virtual path (see {@link canonicalize}). */
33
- path: string;
34
- access: GrantAccess;
35
- kind: GrantKind;
36
- /** Directory grants only: whether `list` is allowed. */
37
- listing?: boolean;
38
- /** Directory read grants only: whether descendant reads are covered. */
39
- recursive?: boolean;
40
- /** Expected identity for audit: file hash, listing identity, or subtree identity. */
41
- identity?: Hash;
42
- reason: GrantReason;
43
- }
44
- /** The run inputs a grant set is closed over (DR-008; the closure to authorize). */
45
- export interface RunGrantSpec {
46
- kind: 'compile' | 'link';
47
- /** Compile source input. */
48
- source?: SlcPath;
49
- /** Link object artifacts. */
50
- objects?: readonly SlcPath[];
51
- /** Runtime link target, when the run consumes one. */
52
- linkTarget?: SlcPath;
53
- /** Compile writable target. */
54
- target?: SlcPath;
55
- /** Link writable artifact. */
56
- linked?: SlcPath;
57
- /** Recorded semantic-input closure files, each enumerated (DR-007). */
58
- semanticInputs?: readonly {
59
- path: SlcPath;
60
- identity?: Hash;
61
- }[];
62
- }
63
- /**
64
- * Builds the default-deny grant set for a run (FCAP-12, FCAP-13).
65
- *
66
- * The only writable grant is the run's `target` (compile) or `linked` (link); read
67
- * grants enumerate the source/object inputs, the link target when present, and the
68
- * semantic-input closure. Directory listing and recursive reads are not granted.
69
- */
70
- export declare function buildRunGrants(spec: RunGrantSpec): Grant[];
71
- /**
72
- * Wraps a run-root capability with a grant set, denying every ungranted access
73
- * (FCAP-11). Path validity and run-root containment are left to the wrapped
74
- * capability, so an invalid or escaping path still reports `invalid_path`.
75
- */
76
- export declare function createGuardedCapability(runRoot: string, grants: readonly Grant[]): FileCapability;
77
- /** Reports whether a capability error is a host-enforced scope failure (FCAP-14). */
78
- export declare function isScopeFailure(code: FileErrorCode): boolean;
79
- //# sourceMappingURL=file-grants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-grants.d.ts","sourceRoot":"","sources":["../src/file-grants.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,KAAK,OAAO,EAGb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,8DAA8D;AAC9D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3C,6DAA6D;AAC7D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;AAE7C,iEAAiE;AACjE,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,eAAe,GACf,QAAQ,GACR,QAAQ,CAAC;AAEb,2EAA2E;AAC3E,MAAM,WAAW,KAAK;IACpB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACzB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,cAAc,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,EAAE,CAAC;CAChE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,KAAK,EAAE,CAqB1D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,KAAK,EAAE,GACvB,cAAc,CAahB;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAE3D"}
@@ -1,133 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
3
- /**
4
- * Host-side per-run grant model for the file capability (FCAP-11..14; DR-008).
5
- *
6
- * A compiled phase artifact reaches files only through a {@link FileCapability}
7
- * the host builds for that run. The capability is default-deny: an operation
8
- * succeeds only when its path is inside the run root (enforced by the artifact-
9
- * facing layer in `file-capability.ts`) and is covered by a {@link Grant} of the
10
- * matching access. {@link buildRunGrants} encodes the policy — the only writable
11
- * path is the run's `target` (compile) or `linked` (link), and read grants are
12
- * the run's source/object inputs, its link target when applicable, and the
13
- * recorded semantic-input closure, each enumerated as a file grant.
14
- * {@link createGuardedCapability} wraps a run-root capability with that grant set,
15
- * reporting `unauthorized` for any ungranted access.
16
- *
17
- * Directory listing and recursive directory reads are withheld: until a pinning
18
- * extension defines directory listing and subtree identities, this model grants
19
- * neither (DR-008), so a pinned phase cannot widen its closure at run time.
20
- * Scope failures (`invalid_path`, `unauthorized`) are distinguished by
21
- * {@link isScopeFailure} so the executor can fail them like a generic check rather
22
- * than a phase `BLOCKED`. See specs/dev/file-capability.md.
23
- */
24
- import { canonicalize, createFileCapability, } from './file-capability.js';
25
- import {} from './hash.js';
26
- /**
27
- * Builds the default-deny grant set for a run (FCAP-12, FCAP-13).
28
- *
29
- * The only writable grant is the run's `target` (compile) or `linked` (link); read
30
- * grants enumerate the source/object inputs, the link target when present, and the
31
- * semantic-input closure. Directory listing and recursive reads are not granted.
32
- */
33
- export function buildRunGrants(spec) {
34
- const grants = [];
35
- if (spec.kind === 'compile' && spec.target !== undefined) {
36
- grants.push(fileGrant(spec.target, 'write', 'target'));
37
- }
38
- if (spec.kind === 'link' && spec.linked !== undefined) {
39
- grants.push(fileGrant(spec.linked, 'write', 'linked'));
40
- }
41
- if (spec.source !== undefined) {
42
- grants.push(fileGrant(spec.source, 'read', 'source'));
43
- }
44
- for (const object of spec.objects ?? []) {
45
- grants.push(fileGrant(object, 'read', 'object'));
46
- }
47
- if (spec.linkTarget !== undefined) {
48
- grants.push(fileGrant(spec.linkTarget, 'read', 'linkTarget'));
49
- }
50
- for (const input of spec.semanticInputs ?? []) {
51
- grants.push(fileGrant(input.path, 'read', 'semanticInput', input.identity));
52
- }
53
- return grants;
54
- }
55
- /**
56
- * Wraps a run-root capability with a grant set, denying every ungranted access
57
- * (FCAP-11). Path validity and run-root containment are left to the wrapped
58
- * capability, so an invalid or escaping path still reports `invalid_path`.
59
- */
60
- export function createGuardedCapability(runRoot, grants) {
61
- const inner = createFileCapability(runRoot);
62
- return {
63
- async read(path) {
64
- return authorize(grants, path, 'read') ?? inner.read(path);
65
- },
66
- async list(path) {
67
- return authorizeList(grants, path) ?? inner.list(path);
68
- },
69
- async write(path, bytes, opts) {
70
- return authorize(grants, path, 'write') ?? inner.write(path, bytes, opts);
71
- },
72
- };
73
- }
74
- /** Reports whether a capability error is a host-enforced scope failure (FCAP-14). */
75
- export function isScopeFailure(code) {
76
- return code === 'invalid_path' || code === 'unauthorized';
77
- }
78
- /**
79
- * Returns an `unauthorized` denial when no grant covers `path` for `access`, or
80
- * `null` to defer to the wrapped capability (which validates the path itself).
81
- */
82
- function authorize(grants, path, access) {
83
- const canonical = canonicalize(path);
84
- if (canonical === null) {
85
- return null;
86
- }
87
- if (!covers(grants, canonical, access)) {
88
- return deny(`no ${access} grant covers "${path}"`);
89
- }
90
- return null;
91
- }
92
- function authorizeList(grants, path) {
93
- const canonical = canonicalize(path);
94
- if (canonical === null) {
95
- return null;
96
- }
97
- const granted = grants.some((grant) => grant.access === 'read' &&
98
- grant.path === canonical &&
99
- grant.kind === 'directory' &&
100
- grant.listing === true);
101
- return granted ? null : deny(`no listing grant covers "${path}"`);
102
- }
103
- function covers(grants, canonical, access) {
104
- return grants.some((grant) => {
105
- if (grant.access !== access) {
106
- return false;
107
- }
108
- if (grant.path === canonical) {
109
- return true;
110
- }
111
- return (access === 'read' &&
112
- grant.kind === 'directory' &&
113
- grant.recursive === true &&
114
- isUnder(grant.path, canonical));
115
- });
116
- }
117
- function isUnder(ancestor, candidate) {
118
- const prefix = ancestor === '/' ? '/' : `${ancestor}/`;
119
- return candidate.startsWith(prefix);
120
- }
121
- function fileGrant(path, access, reason, identity) {
122
- const canonical = canonicalize(path);
123
- if (canonical === null) {
124
- throw new Error(`grant path "${path}" is not a valid run-root path`);
125
- }
126
- return identity === undefined
127
- ? { path: canonical, access, kind: 'file', reason }
128
- : { path: canonical, access, kind: 'file', identity, reason };
129
- }
130
- function deny(diagnostic) {
131
- return { ok: false, code: 'unauthorized', diagnostic };
132
- }
133
- //# sourceMappingURL=file-grants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-grants.js","sourceRoot":"","sources":["../src/file-grants.ts"],"names":[],"mappings":"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"}