@sublang/slc 0.3.0 → 0.4.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 (84) hide show
  1. package/README.md +52 -3
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +5 -4
  4. package/dist/app.js.map +1 -1
  5. package/dist/build-history.d.ts +74 -0
  6. package/dist/build-history.d.ts.map +1 -0
  7. package/dist/build-history.js +309 -0
  8. package/dist/build-history.js.map +1 -0
  9. package/dist/cli.js +2 -1
  10. package/dist/cli.js.map +1 -1
  11. package/dist/compiled-executor.d.ts +1 -1
  12. package/dist/compiled-executor.d.ts.map +1 -1
  13. package/dist/compiled-executor.js +10 -3
  14. package/dist/compiled-executor.js.map +1 -1
  15. package/dist/config-file.d.ts.map +1 -1
  16. package/dist/config-file.js +1 -3
  17. package/dist/config-file.js.map +1 -1
  18. package/dist/errors.d.ts +14 -0
  19. package/dist/errors.d.ts.map +1 -0
  20. package/dist/errors.js +28 -0
  21. package/dist/errors.js.map +1 -0
  22. package/dist/execution.d.ts +42 -0
  23. package/dist/execution.d.ts.map +1 -1
  24. package/dist/execution.js +224 -29
  25. package/dist/execution.js.map +1 -1
  26. package/dist/hash.d.ts +22 -0
  27. package/dist/hash.d.ts.map +1 -1
  28. package/dist/hash.js +47 -0
  29. package/dist/hash.js.map +1 -1
  30. package/dist/interpreter.d.ts +1 -1
  31. package/dist/interpreter.d.ts.map +1 -1
  32. package/dist/interpreter.js +9 -0
  33. package/dist/interpreter.js.map +1 -1
  34. package/dist/invocation.d.ts +5 -1
  35. package/dist/invocation.d.ts.map +1 -1
  36. package/dist/invocation.js +14 -3
  37. package/dist/invocation.js.map +1 -1
  38. package/dist/line-diff.d.ts +7 -0
  39. package/dist/line-diff.d.ts.map +1 -0
  40. package/dist/line-diff.js +66 -0
  41. package/dist/line-diff.js.map +1 -0
  42. package/dist/phase.d.ts +2 -0
  43. package/dist/phase.d.ts.map +1 -1
  44. package/dist/phase.js +19 -3
  45. package/dist/phase.js.map +1 -1
  46. package/dist/pin-closure.d.ts +2 -2
  47. package/dist/pin-closure.d.ts.map +1 -1
  48. package/dist/pin-closure.js +4 -3
  49. package/dist/pin-closure.js.map +1 -1
  50. package/dist/pin-currency.d.ts +6 -2
  51. package/dist/pin-currency.d.ts.map +1 -1
  52. package/dist/pin-currency.js +24 -43
  53. package/dist/pin-currency.js.map +1 -1
  54. package/dist/pin-generate.d.ts.map +1 -1
  55. package/dist/pin-generate.js +1 -3
  56. package/dist/pin-generate.js.map +1 -1
  57. package/dist/pin-paths.d.ts.map +1 -1
  58. package/dist/pin-paths.js +2 -13
  59. package/dist/pin-paths.js.map +1 -1
  60. package/dist/pins.d.ts.map +1 -1
  61. package/dist/pins.js +5 -15
  62. package/dist/pins.js.map +1 -1
  63. package/dist/playbook-ports.d.ts +9 -0
  64. package/dist/playbook-ports.d.ts.map +1 -1
  65. package/dist/playbook-ports.js +7 -4
  66. package/dist/playbook-ports.js.map +1 -1
  67. package/dist/runner.d.ts +2 -0
  68. package/dist/runner.d.ts.map +1 -1
  69. package/dist/runner.js +628 -88
  70. package/dist/runner.js.map +1 -1
  71. package/dist/runtime-package.d.ts.map +1 -1
  72. package/dist/runtime-package.js +3 -11
  73. package/dist/runtime-package.js.map +1 -1
  74. package/dist/verify-coverage.d.ts.map +1 -1
  75. package/dist/verify-coverage.js +2 -0
  76. package/dist/verify-coverage.js.map +1 -1
  77. package/dist/verify-support.d.ts +7 -0
  78. package/dist/verify-support.d.ts.map +1 -1
  79. package/dist/verify-support.js +13 -6
  80. package/dist/verify-support.js.map +1 -1
  81. package/dist/verify.d.ts.map +1 -1
  82. package/dist/verify.js +2 -0
  83. package/dist/verify.js.map +1 -1
  84. package/package.json +1 -1
package/README.md CHANGED
@@ -120,6 +120,53 @@ Intermediates are first-class: edit one and re-run a single phase
120
120
  (`slc playbook.gears2fsm …`) and it lands in the same place.
121
121
  `slc --help` shows all invocation forms.
122
122
 
123
+ ### Incremental recompiles
124
+
125
+ Canonical full and full-link runs of ordinary pipelines remember successful
126
+ builds under `<artifact-dir>/.slc/`. Each numbered, private snapshot contains
127
+ one manifest plus verbatim copies of the source and every accepted phase
128
+ output. The active marker is committed last. If that build is missing,
129
+ deleted, or corrupt in any part, `slc` treats the whole snapshot as absent and
130
+ compiles ordinarily.
131
+
132
+ On a re-run, `slc` walks the phases in order and chooses one mode for each:
133
+
134
+ - **Reuse** when every input is byte-identical and the live target is readable:
135
+ no agent runs, and the on-disk output stays exactly as it is, including manual
136
+ refinements.
137
+ - **Update** when a compile phase's inputs changed and its prior input and live
138
+ output are available: the ordinary executor also receives the recorded old
139
+ input, a bounded best-effort diff, and one instruction to update the complete
140
+ artifact while preserving unaffected work.
141
+ - **Ordinary** when no usable record exists, for a changed link phase, or when
142
+ `--rebuild` is given.
143
+
144
+ Update is only a hint to the usual executor. The phase definition remains the
145
+ sole authority, needs no update section, and uses the same acceptance rules as
146
+ a fresh compile. A run that only reuses reports `up to date` and records
147
+ nothing new. Before the first executor in an eligible run may write, `slc`
148
+ removes the active marker; only a wholly successful run, including required
149
+ deterministic post-processing, publishes a new marker. Once the marker is
150
+ removed, a failed or interrupted run therefore leaves the next run to compile
151
+ ordinarily. `--rebuild` forces every phase through Ordinary mode and records a
152
+ fresh successful build while retaining older numbered snapshots.
153
+
154
+ History selection and publication do not apply to `-o`, the reserved `slc`
155
+ meta-pipeline, single-phase or standalone-pass runs, or direct-link runs. If one
156
+ of those excluded forms is about to overwrite an artifact named by a usable
157
+ active build, `slc` clears that marker first so it cannot describe the new
158
+ bytes.
159
+
160
+ `.slc/` sits inside the artifact bundle and holds verbatim copies of your
161
+ source and every accepted phase output, so treat it as no less private than
162
+ the source, and add `.slc/` to your `.gitignore` if you commit the bundle.
163
+ Deleting it is always safe — the next run simply compiles ordinarily — and
164
+ old numbered builds under `.slc/builds/` can be pruned at any time. An upgrade
165
+ that changes a recorded definition or input invalidates only the affected
166
+ steps: an eligible compile step can use Update while link steps run ordinarily.
167
+ Pass `--rebuild` after an upgrade when you want every phase to compile from
168
+ scratch instead.
169
+
123
170
  While a compile runs, `slc` reports progress on stderr: each phase as it
124
171
  starts, each artifact as it lands with the elapsed time, the compiled
125
172
  runtime's own state transitions, and a heartbeat so the terminal is
@@ -127,9 +174,11 @@ never silent for more than 30 seconds. An agent call that goes quiet for
127
174
  `stallTimeout` seconds (default 600, `0` disables) is aborted and
128
175
  reported as a failed phase rather than hanging indefinitely.
129
176
 
130
- Success prints the written artifact paths to stdout and exits 0; a
131
- failure prints diagnostics to stderr naming the failing phase when one
132
- is at fault and exits non-zero.
177
+ Success prints the written artifact paths to stdout and exits 0 — or
178
+ just `up to date` when incremental selection recompiled nothing, in which
179
+ case the paths the previous run reported are still current; a failure
180
+ prints diagnostics to stderr — naming the failing phase when one is at
181
+ fault — and exits non-zero.
133
182
 
134
183
  ## Configuration
135
184
 
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
package/dist/app.js CHANGED
@@ -14,6 +14,7 @@
14
14
  * and signal wiring. See specs/dev/cli.md and specs/user/cli.md.
15
15
  */
16
16
  import { createRequire } from 'node:module';
17
+ import { messageOf } from './errors.js';
17
18
  import { createConfiguredCompiledFactory, createConfiguredExecutor, resolveAgentSelection, } from './config.js';
18
19
  import { loadConfigFile, MAX_STALL_TIMEOUT_SECONDS, } from './config-file.js';
19
20
  import { createProgressReporter } from './progress.js';
@@ -144,6 +145,7 @@ export function usageText() {
144
145
  " --normalize rewrite raw input to the entry phase's source form first",
145
146
  " -O, --optimize run the pipeline's pass phases (the default)",
146
147
  ' --no-optimize run the chain without pass phases',
148
+ ' --rebuild recompile every phase, ignoring recorded build history',
147
149
  ' --config <path> load configuration from <path> (disables discovery)',
148
150
  ' -v, --version print version and exit',
149
151
  ' -h, --help print this help and exit',
@@ -242,7 +244,9 @@ export async function run(argv, options = {}) {
242
244
  reporter.dispose();
243
245
  }
244
246
  if (result.ok) {
245
- if (result.outputs.length > 0)
247
+ if (result.outcome === 'up-to-date')
248
+ stdout('up to date\n');
249
+ else if (result.outputs.length > 0)
246
250
  stdout(`${result.outputs.join('\n')}\n`);
247
251
  // Surface any ambiguity the agent resolved without polluting the path output.
248
252
  if (result.diagnostics.length > 0)
@@ -276,7 +280,4 @@ export function interruptSignal(emitter) {
276
280
  function hasFlag(argv, ...flags) {
277
281
  return argv.some((arg) => flags.includes(arg));
278
282
  }
279
- function messageOf(error) {
280
- return error instanceof Error ? error.message : String(error);
281
- }
282
283
  //# sourceMappingURL=app.js.map
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,EACxB,qBAAqB,GAEtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,yBAAyB,GAE1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAqB,MAAM,eAAe,CAAC;AAC1E,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AAEnD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAEhE,CAAC;AACF,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;IACzC,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;AAC/D,CAAC;AACD,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;AAExC,wBAAwB;AACxB,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC;AAE1B,sCAAsC;AACtC,MAAM,UAAU,OAAO;IACrB,OAAO,cAAc,CAAC;AACxB,CAAC;AAiCD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAA8B;AAC5E,sEAAsE;AACtE,uEAAuE;AACvE,iEAAiE;AACjE,0DAA0D;AAC1D,iBAAkC,wBAAwB,EAC1D,iBAAyC,+BAA+B;IAExE,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC;QAChC,GAAG;QACH,UAAU;QACV,GAAG;QACH,sEAAsE;QACtE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,eAAe,IAAI,yBAAyB,CAAC;KACvE,CAAC,CAAC;IACH,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAClE,GAAG,EACH,IAAI,CAAC,MAAM,CACZ,CAAC;IACF,MAAM,QAAQ,GAAG,qBAAqB,CACpC,sBAAsB,CAAC,mBAAmB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAC/D,CAAC;IACF,6EAA6E;IAC7E,uEAAuE;IACvE,wEAAwE;IACxE,8BAA8B;IAC9B,MAAM,SAAS,GAAG;QAChB,GAAG;QACH,WAAW,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE;QACtC,cAAc;KACf,CAAC;IACF,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,yEAAyE;IACzE,uBAAuB;IACvB,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE;QACzC,GAAG,SAAS;QACZ,QAAQ,EACN,QAAQ,KAAK,SAAS;YACpB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;KACjE,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACjE,CAAC;AAWD,uEAAuE;AACvE,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAuC,EACvC,IAAgB;IAEhB,MAAM,SAAS,GAAG,qBAAqB,CAAC;QACtC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK;QAChD,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK;QAChD,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM;KACpD,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC;IAC1E,MAAM,YAAY,GAChB,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY;QACjB,6BAA6B,CAAC;IAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,GAAG,IAAI,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB;IAClD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,sBAAsB,KAAK,4EAA4E,CACxG,CAAC;IACJ,CAAC;IACD,0EAA0E;IAC1E,qEAAqE;IACrE,IAAI,OAAO,GAAG,yBAAyB,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,sBAAsB,KAAK,qBAAqB,yBAAyB,0CAA0C,CACpH,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kFAAkF;AAClF,SAAS,QAAQ,CAAC,KAAyB;IACzC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,QAAQ;QACR,mDAAmD;QACnD,yGAAyG;QACzG,wFAAwF;QACxF,EAAE;QACF,yEAAyE;QACzE,uEAAuE;QACvE,yEAAyE;QACzE,yEAAyE;QACzE,EAAE;QACF,UAAU;QACV,wDAAwD;QACxD,uEAAuE;QACvE,qEAAqE;QACrE,sFAAsF;QACtF,0EAA0E;QAC1E,+DAA+D;QAC/D,iFAAiF;QACjF,oDAAoD;QACpD,sDAAsD;QACtD,EAAE;QACF,gBAAgB;QAChB,2EAA2E;QAC3E,+BAA+B;QAC/B,uBAAuB;QACvB,mDAAmD;QACnD,2DAA2D;QAC3D,EAAE;QACF,yEAAyE;QACzE,uDAAuD;QACvD,4EAA4E;QAC5E,4EAA4E;QAC5E,wEAAwE;QACxE,+DAA+D;QAC/D,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,IAAuB;IAIhD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,UAA8B,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;YACD,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,IAAuB,EACvB,UAAsB,EAAE;IAExB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7E,sFAAsF;IACtF,IAAI,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;IAC9D,4EAA4E;IAC5E,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAEhD,IAAI,IAAa,CAAC;IAClB,IAAI,IAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,uEAAuE;QACvE,8DAA8D;QAC9D,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QACtB,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,YAAY,CAAC,CAAC;YAC/C,GAAG;YACH,GAAG;YACH,MAAM;YACN,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,QAAQ,CAAC,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oEAAoE;QACpE,mEAAmE;QACnE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,GAAG,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,8EAA8E;QAC9E,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAG/B;IACC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACnD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACrC,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC9C,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,SAAS,OAAO,CAAC,IAAuB,EAAE,GAAG,KAAe;IAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { type Hash } from './hash.js';
2
+ export declare const HISTORY_DIR = ".slc";
3
+ export declare const BUILD_MANIFEST_SCHEMA = "sublang.slc.build.v1";
4
+ export declare const SOURCE_COPY = "source";
5
+ export interface StepHistoryRecord {
6
+ kind: 'compile' | 'link';
7
+ name: string;
8
+ /** Artifact-directory-relative POSIX locator. */
9
+ target: string;
10
+ inputs: Hash[];
11
+ output: Hash;
12
+ }
13
+ export interface BuildManifest {
14
+ schema: typeof BUILD_MANIFEST_SCHEMA;
15
+ pipeline: string;
16
+ source: {
17
+ /** Artifact-directory-relative POSIX locator; may climb outward. */
18
+ path: string;
19
+ hash: Hash;
20
+ };
21
+ steps: StepHistoryRecord[];
22
+ }
23
+ export interface BuildHistory {
24
+ build: number;
25
+ dir: string;
26
+ manifest: BuildManifest;
27
+ }
28
+ export interface VerifiedInput {
29
+ path: string;
30
+ bytes: Buffer;
31
+ }
32
+ export interface StepToRecord {
33
+ kind: 'compile' | 'link';
34
+ name: string;
35
+ /** Absolute target path. */
36
+ target: string;
37
+ inputs: readonly Hash[];
38
+ /** Hash accepted by the runner before publication. */
39
+ output: Hash;
40
+ /** Bytes re-read by the runner immediately before publication. */
41
+ bytes: Uint8Array;
42
+ }
43
+ /** Encodes an absolute path relative to the artifact directory. */
44
+ export declare function encodeLocator(artDir: string, path: string): string;
45
+ /** Fixed path of a phase's recorded output copy. */
46
+ export declare function outputCopyPath(history: BuildHistory, index: number): string;
47
+ /**
48
+ * Loads and verifies the complete active build. Any malformed directory,
49
+ * marker, manifest, source copy, output copy, or hash makes history absent.
50
+ */
51
+ export declare function loadBuildHistory(artDir: string): Promise<BuildHistory | null>;
52
+ /**
53
+ * Re-verifies the recorded chained input immediately before Update mode uses
54
+ * it. Step zero reads the source copy; later steps read the prior output copy.
55
+ */
56
+ export declare function verifiedInput(history: BuildHistory, stepIndex: number, expected: Hash): Promise<VerifiedInput | null>;
57
+ /**
58
+ * Removes the active marker before the first executor may write. A valid
59
+ * active marker must be removable; malformed advisory state is never followed.
60
+ */
61
+ export declare function invalidateBuildHistory(artDir: string, active: boolean): Promise<void>;
62
+ /**
63
+ * Publishes one complete snapshot and commits its number last. Callers pass
64
+ * already-materialized source/output bytes, so publication never follows a
65
+ * live phase target.
66
+ */
67
+ export declare function recordBuild(opts: {
68
+ artDir: string;
69
+ pipeline: string;
70
+ sourcePath: string;
71
+ sourceBytes: Uint8Array;
72
+ steps: readonly StepToRecord[];
73
+ }): Promise<void>;
74
+ //# sourceMappingURL=build-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-history.d.ts","sourceRoot":"","sources":["../src/build-history.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAqB,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAEzD,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,eAAO,MAAM,qBAAqB,yBAAyB,CAAC;AAC5D,eAAO,MAAM,WAAW,WAAW,CAAC;AAQpC,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,EAAE,CAAC;IACf,MAAM,EAAE,IAAI,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,qBAAqB,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QACN,oEAAoE;QACpE,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,IAAI,CAAC;KACZ,CAAC;IACF,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;IACxB,sDAAsD;IACtD,MAAM,EAAE,IAAI,CAAC;IACb,kEAAkE;IAClE,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAqC9B;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,IAAI,GACb,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAU/B;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CA2FhB"}
@@ -0,0 +1,309 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
3
+ /** Complete, versioned build snapshots for incremental compilation. */
4
+ import { constants } from 'node:fs';
5
+ import { lstat, mkdir, open, readdir, rename, unlink, writeFile, } from 'node:fs/promises';
6
+ import { randomUUID } from 'node:crypto';
7
+ import { isAbsolute, join, relative, sep } from 'node:path';
8
+ import { errorCode, isAbsentPathError } from './errors.js';
9
+ import { hashBytes, isHash } from './hash.js';
10
+ export const HISTORY_DIR = '.slc';
11
+ export const BUILD_MANIFEST_SCHEMA = 'sublang.slc.build.v1';
12
+ export const SOURCE_COPY = 'source';
13
+ const OUTPUTS_DIR = 'outputs';
14
+ const MAX_BUILD_NUMBER = 999_999_999_999_999;
15
+ const BUILD_NUMBER = /^[1-9]\d{0,14}$/;
16
+ const PRIVATE_DIRECTORY_MODE = 0o700;
17
+ const PRIVATE_FILE_MODE = 0o600;
18
+ /** Encodes an absolute path relative to the artifact directory. */
19
+ export function encodeLocator(artDir, path) {
20
+ return relative(artDir, path).split(sep).join('/');
21
+ }
22
+ /** Fixed path of a phase's recorded output copy. */
23
+ export function outputCopyPath(history, index) {
24
+ return join(history.dir, OUTPUTS_DIR, String(index));
25
+ }
26
+ /**
27
+ * Loads and verifies the complete active build. Any malformed directory,
28
+ * marker, manifest, source copy, output copy, or hash makes history absent.
29
+ */
30
+ export async function loadBuildHistory(artDir) {
31
+ try {
32
+ const historyDir = join(artDir, HISTORY_DIR);
33
+ const buildsDir = join(historyDir, 'builds');
34
+ if (!(await isRealDirectory(historyDir)))
35
+ return null;
36
+ if (!(await isRealDirectory(buildsDir)))
37
+ return null;
38
+ const marker = await readPrivateFile(join(historyDir, 'latest'));
39
+ if (marker === null)
40
+ return null;
41
+ const markerText = marker.toString('utf8');
42
+ if (!/^[1-9]\d{0,14}\n?$/.test(markerText))
43
+ return null;
44
+ const build = Number(markerText.endsWith('\n') ? markerText.slice(0, -1) : markerText);
45
+ const dir = join(buildsDir, String(build));
46
+ if (!(await isRealDirectory(dir)))
47
+ return null;
48
+ if (!(await isRealDirectory(join(dir, OUTPUTS_DIR))))
49
+ return null;
50
+ const manifestBytes = await readPrivateFile(join(dir, 'manifest.json'));
51
+ if (manifestBytes === null)
52
+ return null;
53
+ const manifest = parseManifest(JSON.parse(manifestBytes.toString('utf8')));
54
+ if (manifest === null)
55
+ return null;
56
+ const source = await readPrivateFile(join(dir, SOURCE_COPY));
57
+ if (source === null || hashBytes(source) !== manifest.source.hash)
58
+ return null;
59
+ for (let index = 0; index < manifest.steps.length; index++) {
60
+ const copy = await readPrivateFile(join(dir, OUTPUTS_DIR, String(index)));
61
+ if (copy === null || hashBytes(copy) !== manifest.steps[index].output) {
62
+ return null;
63
+ }
64
+ }
65
+ return { build, dir, manifest };
66
+ }
67
+ catch {
68
+ return null;
69
+ }
70
+ }
71
+ /**
72
+ * Re-verifies the recorded chained input immediately before Update mode uses
73
+ * it. Step zero reads the source copy; later steps read the prior output copy.
74
+ */
75
+ export async function verifiedInput(history, stepIndex, expected) {
76
+ if (!Number.isSafeInteger(stepIndex) || stepIndex < 0)
77
+ return null;
78
+ const path = stepIndex === 0
79
+ ? join(history.dir, SOURCE_COPY)
80
+ : outputCopyPath(history, stepIndex - 1);
81
+ const bytes = await readPrivateFile(path);
82
+ return bytes !== null && hashBytes(bytes) === expected
83
+ ? { path, bytes }
84
+ : null;
85
+ }
86
+ /**
87
+ * Removes the active marker before the first executor may write. A valid
88
+ * active marker must be removable; malformed advisory state is never followed.
89
+ */
90
+ export async function invalidateBuildHistory(artDir, active) {
91
+ const historyDir = join(artDir, HISTORY_DIR);
92
+ if (!(await isRealDirectory(historyDir))) {
93
+ if (active)
94
+ throw new Error('active build history directory is unavailable');
95
+ return;
96
+ }
97
+ try {
98
+ await unlink(join(historyDir, 'latest'));
99
+ }
100
+ catch (error) {
101
+ if (isAbsentPathError(error))
102
+ return;
103
+ if (active)
104
+ throw error;
105
+ }
106
+ }
107
+ /**
108
+ * Publishes one complete snapshot and commits its number last. Callers pass
109
+ * already-materialized source/output bytes, so publication never follows a
110
+ * live phase target.
111
+ */
112
+ export async function recordBuild(opts) {
113
+ if (opts.steps.length === 0)
114
+ throw new Error('cannot record an empty build');
115
+ const historyDir = join(opts.artDir, HISTORY_DIR);
116
+ const buildsDir = join(historyDir, 'builds');
117
+ await ensureRealDirectory(historyDir);
118
+ await ensureRealDirectory(buildsDir);
119
+ let next = 1;
120
+ for (const entry of await readdir(buildsDir)) {
121
+ if (BUILD_NUMBER.test(entry))
122
+ next = Math.max(next, Number(entry) + 1);
123
+ }
124
+ let dir = null;
125
+ while (next <= MAX_BUILD_NUMBER) {
126
+ const candidate = join(buildsDir, String(next));
127
+ try {
128
+ await mkdir(candidate, { mode: PRIVATE_DIRECTORY_MODE });
129
+ dir = candidate;
130
+ break;
131
+ }
132
+ catch (error) {
133
+ if (errorCode(error) !== 'EEXIST')
134
+ throw error;
135
+ next++;
136
+ }
137
+ }
138
+ if (dir === null)
139
+ throw new Error('build history number space is exhausted');
140
+ await mkdir(join(dir, OUTPUTS_DIR), { mode: PRIVATE_DIRECTORY_MODE });
141
+ await writeFile(join(dir, SOURCE_COPY), opts.sourceBytes, {
142
+ flag: 'wx',
143
+ mode: PRIVATE_FILE_MODE,
144
+ });
145
+ const steps = [];
146
+ for (let index = 0; index < opts.steps.length; index++) {
147
+ const step = opts.steps[index];
148
+ if (hashBytes(step.bytes) !== step.output) {
149
+ throw new Error(`accepted output changed before recording: ${step.target}`);
150
+ }
151
+ const target = encodeLocator(opts.artDir, step.target);
152
+ if (!isConfinedLocator(target)) {
153
+ throw new Error(`phase target is outside the artifact directory: ${step.target}`);
154
+ }
155
+ await writeFile(join(dir, OUTPUTS_DIR, String(index)), step.bytes, {
156
+ flag: 'wx',
157
+ mode: PRIVATE_FILE_MODE,
158
+ });
159
+ steps.push({
160
+ kind: step.kind,
161
+ name: step.name,
162
+ target,
163
+ inputs: [...step.inputs],
164
+ output: step.output,
165
+ });
166
+ }
167
+ const sourcePath = encodeLocator(opts.artDir, opts.sourcePath);
168
+ if (!isLocator(sourcePath)) {
169
+ throw new Error(`invalid source locator: ${opts.sourcePath}`);
170
+ }
171
+ const manifest = {
172
+ schema: BUILD_MANIFEST_SCHEMA,
173
+ pipeline: opts.pipeline,
174
+ source: { path: sourcePath, hash: hashBytes(opts.sourceBytes) },
175
+ steps,
176
+ };
177
+ await writeFile(join(dir, 'manifest.json'), `${JSON.stringify(manifest, null, 2)}\n`, { flag: 'wx', mode: PRIVATE_FILE_MODE });
178
+ const marker = join(historyDir, `latest.${process.pid}.${randomUUID()}`);
179
+ try {
180
+ await writeFile(marker, `${next}\n`, {
181
+ flag: 'wx',
182
+ mode: PRIVATE_FILE_MODE,
183
+ });
184
+ await rename(marker, join(historyDir, 'latest'));
185
+ }
186
+ catch (error) {
187
+ try {
188
+ await unlink(marker);
189
+ }
190
+ catch {
191
+ // The temporary marker may not have been created or may already be gone.
192
+ }
193
+ throw error;
194
+ }
195
+ }
196
+ async function ensureRealDirectory(path) {
197
+ try {
198
+ await mkdir(path, { mode: PRIVATE_DIRECTORY_MODE });
199
+ }
200
+ catch (error) {
201
+ if (errorCode(error) !== 'EEXIST')
202
+ throw error;
203
+ }
204
+ if (!(await isRealDirectory(path))) {
205
+ throw new Error(`build history path is not a real directory: ${path}`);
206
+ }
207
+ }
208
+ async function isRealDirectory(path) {
209
+ try {
210
+ return (await lstat(path)).isDirectory();
211
+ }
212
+ catch {
213
+ return false;
214
+ }
215
+ }
216
+ async function readPrivateFile(path) {
217
+ let handle;
218
+ try {
219
+ handle = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
220
+ const info = await handle.stat();
221
+ if (!info.isFile() || info.nlink !== 1)
222
+ return null;
223
+ return await handle.readFile();
224
+ }
225
+ catch {
226
+ return null;
227
+ }
228
+ finally {
229
+ await handle?.close();
230
+ }
231
+ }
232
+ function parseManifest(value) {
233
+ if (!exactRecord(value, ['schema', 'pipeline', 'source', 'steps']))
234
+ return null;
235
+ if (value.schema !== BUILD_MANIFEST_SCHEMA)
236
+ return null;
237
+ if (typeof value.pipeline !== 'string' || value.pipeline.length === 0)
238
+ return null;
239
+ if (!exactRecord(value.source, ['path', 'hash']))
240
+ return null;
241
+ if (!isLocator(value.source.path) || !isRecordedHash(value.source.hash)) {
242
+ return null;
243
+ }
244
+ if (!Array.isArray(value.steps) || value.steps.length === 0)
245
+ return null;
246
+ const seenTargets = new Set();
247
+ const steps = [];
248
+ for (const item of value.steps) {
249
+ if (!exactRecord(item, ['kind', 'name', 'target', 'inputs', 'output'])) {
250
+ return null;
251
+ }
252
+ if (item.kind !== 'compile' && item.kind !== 'link')
253
+ return null;
254
+ if (typeof item.name !== 'string' || item.name.length === 0)
255
+ return null;
256
+ if (!isConfinedLocator(item.target) || seenTargets.has(item.target))
257
+ return null;
258
+ seenTargets.add(item.target);
259
+ if (!Array.isArray(item.inputs) || item.inputs.length === 0)
260
+ return null;
261
+ const inputs = [];
262
+ for (const input of item.inputs) {
263
+ if (!isRecordedHash(input))
264
+ return null;
265
+ inputs.push(input);
266
+ }
267
+ if (!isRecordedHash(item.output))
268
+ return null;
269
+ steps.push({
270
+ kind: item.kind,
271
+ name: item.name,
272
+ target: item.target,
273
+ inputs,
274
+ output: item.output,
275
+ });
276
+ }
277
+ return {
278
+ schema: BUILD_MANIFEST_SCHEMA,
279
+ pipeline: value.pipeline,
280
+ source: { path: value.source.path, hash: value.source.hash },
281
+ steps,
282
+ };
283
+ }
284
+ function exactRecord(value, keys) {
285
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
286
+ return false;
287
+ }
288
+ const actual = Object.keys(value).sort();
289
+ const expected = [...keys].sort();
290
+ return (actual.length === expected.length &&
291
+ actual.every((key, index) => key === expected[index]));
292
+ }
293
+ function isRecordedHash(value) {
294
+ return typeof value === 'string' && isHash(value);
295
+ }
296
+ function isLocator(value) {
297
+ if (typeof value !== 'string' ||
298
+ value.length === 0 ||
299
+ value.includes('\\') ||
300
+ value.includes('\0') ||
301
+ isAbsolute(value)) {
302
+ return false;
303
+ }
304
+ return value.split('/').every((part) => part.length > 0 && part !== '.');
305
+ }
306
+ function isConfinedLocator(value) {
307
+ return isLocator(value) && !value.split('/').includes('..');
308
+ }
309
+ //# sourceMappingURL=build-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-history.js","sourceRoot":"","sources":["../src/build-history.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -10,6 +10,7 @@
10
10
  * becomes the process exit status (CLI-11). All behavior lives in the testable
11
11
  * `run`/`interruptSignal`; see app.ts.
12
12
  */
13
+ import { messageOf } from './errors.js';
13
14
  import { interruptSignal, run } from './index.js';
14
15
  const { signal, dispose } = interruptSignal(process);
15
16
  run(process.argv.slice(2), { signal })
@@ -19,7 +20,7 @@ run(process.argv.slice(2), { signal })
19
20
  })
20
21
  .catch((error) => {
21
22
  dispose();
22
- const message = error instanceof Error ? error.message : String(error);
23
+ const message = messageOf(error);
23
24
  process.stderr.write(`slc: ${message}\n`);
24
25
  process.exit(1);
25
26
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAErD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;KACnC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;IACb,OAAO,EAAE,CAAC;IACV,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxB,OAAO,EAAE,CAAC;IACV,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,OAAO,IAAI,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAErD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;KACnC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;IACb,OAAO,EAAE,CAAC;IACV,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxB,OAAO,EAAE,CAAC;IACV,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,OAAO,IAAI,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { PhaseExecutor } from './execution.js';
1
+ import { type PhaseExecutor } from './execution.js';
2
2
  import type { AgentClient } from './interpreter.js';
3
3
  import { type CompatiblePlaybookRuntimeFactory, type RuntimeContractProfile } from './playbook-contract.js';
4
4
  import { type PlayerTransport } from './playbook-ports.js';
@@ -1 +1 @@
1
- {"version":3,"file":"compiled-executor.d.ts","sourceRoot":"","sources":["../src/compiled-executor.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAIV,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD,OAAO,EAKL,KAAK,gCAAgC,EAKrC,KAAK,sBAAsB,EAE5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEhF;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,gCAAgC,CAAC,CAW3C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,MAAM,EAAE,eAAe,CAAC;IACxB,oEAAoE;IACpE,KAAK,EAAE,WAAW,CAAC;IACnB,sEAAsE;IACtE,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IAC/B,8EAA8E;IAC9E,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CACZ,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,gCAAgC,CAAC,CAAC;CAChD,GAAG,aAAa,CAgEhB"}
1
+ {"version":3,"file":"compiled-executor.d.ts","sourceRoot":"","sources":["../src/compiled-executor.ts"],"names":[],"mappings":"AAuCA,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD,OAAO,EAKL,KAAK,gCAAgC,EAKrC,KAAK,sBAAsB,EAE5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEhF;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,gCAAgC,CAAC,CAW3C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,MAAM,EAAE,eAAe,CAAC;IACxB,oEAAoE;IACpE,KAAK,EAAE,WAAW,CAAC;IACnB,sEAAsE;IACtE,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IAC/B,8EAA8E;IAC9E,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CACZ,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,gCAAgC,CAAC,CAAC;CAChD,GAAG,aAAa,CA2EhB"}
@@ -31,6 +31,8 @@ import { createHash, randomUUID } from 'node:crypto';
31
31
  import { readFile, stat } from 'node:fs/promises';
32
32
  import { basename, resolve } from 'node:path';
33
33
  import { pathToFileURL } from 'node:url';
34
+ import { messageOf } from './errors.js';
35
+ import { updateContextLines, } from './execution.js';
34
36
  import { composeWorkspaceContract, mapPhaseResult, seedPhaseTurn, } from './phase-runner.js';
35
37
  import { isPlaybookRunResult, } from './playbook-contract.js';
36
38
  import { createPlaybookPorts } from './playbook-ports.js';
@@ -70,6 +72,14 @@ export function createCompiledExecutor(opts) {
70
72
  // transported prompt carries the request's absolute paths and
71
73
  // write-scope rules (PHEXEC-34).
72
74
  captainWorkspace: composeWorkspaceContract(input),
75
+ // The compiled artifact knows nothing about incremental updates, so
76
+ // the host appends the update context to performing prompts
77
+ // (DR-021, INCR-16).
78
+ ...(request.kind === 'compile' && request.update !== undefined
79
+ ? {
80
+ updateContext: updateContextLines(request.update, request.target).join('\n'),
81
+ }
82
+ : {}),
73
83
  onStatus: opts.onStatus,
74
84
  });
75
85
  // Hand the runtime only Playbook's ports — never the host-only
@@ -428,7 +438,4 @@ function phaseInput(request, runRoot) {
428
438
  function optionsRecord(options) {
429
439
  return Object.fromEntries(options.map((option) => [option.name, option.value]));
430
440
  }
431
- function messageOf(error) {
432
- return error instanceof Error ? error.message : String(error);
433
- }
434
441
  //# sourceMappingURL=compiled-executor.js.map