@sublang/slc 0.3.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 (98) hide show
  1. package/README.md +102 -84
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +13 -5
  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 +4 -0
  16. package/dist/config-file.d.ts.map +1 -1
  17. package/dist/config-file.js +19 -8
  18. package/dist/config-file.js.map +1 -1
  19. package/dist/config.d.ts +6 -4
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +65 -12
  22. package/dist/config.js.map +1 -1
  23. package/dist/errors.d.ts +14 -0
  24. package/dist/errors.d.ts.map +1 -0
  25. package/dist/errors.js +28 -0
  26. package/dist/errors.js.map +1 -0
  27. package/dist/execution.d.ts +42 -0
  28. package/dist/execution.d.ts.map +1 -1
  29. package/dist/execution.js +224 -29
  30. package/dist/execution.js.map +1 -1
  31. package/dist/hash.d.ts +22 -0
  32. package/dist/hash.d.ts.map +1 -1
  33. package/dist/hash.js +47 -0
  34. package/dist/hash.js.map +1 -1
  35. package/dist/index.d.ts +1 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/interpreter.d.ts +1 -1
  40. package/dist/interpreter.d.ts.map +1 -1
  41. package/dist/interpreter.js +9 -0
  42. package/dist/interpreter.js.map +1 -1
  43. package/dist/invocation.d.ts +5 -1
  44. package/dist/invocation.d.ts.map +1 -1
  45. package/dist/invocation.js +14 -3
  46. package/dist/invocation.js.map +1 -1
  47. package/dist/line-diff.d.ts +7 -0
  48. package/dist/line-diff.d.ts.map +1 -0
  49. package/dist/line-diff.js +66 -0
  50. package/dist/line-diff.js.map +1 -0
  51. package/dist/phase.d.ts +2 -0
  52. package/dist/phase.d.ts.map +1 -1
  53. package/dist/phase.js +19 -3
  54. package/dist/phase.js.map +1 -1
  55. package/dist/pin-closure.d.ts +2 -2
  56. package/dist/pin-closure.d.ts.map +1 -1
  57. package/dist/pin-closure.js +4 -3
  58. package/dist/pin-closure.js.map +1 -1
  59. package/dist/pin-currency.d.ts +6 -2
  60. package/dist/pin-currency.d.ts.map +1 -1
  61. package/dist/pin-currency.js +24 -43
  62. package/dist/pin-currency.js.map +1 -1
  63. package/dist/pin-generate.d.ts.map +1 -1
  64. package/dist/pin-generate.js +1 -3
  65. package/dist/pin-generate.js.map +1 -1
  66. package/dist/pin-paths.d.ts.map +1 -1
  67. package/dist/pin-paths.js +2 -13
  68. package/dist/pin-paths.js.map +1 -1
  69. package/dist/pins.d.ts.map +1 -1
  70. package/dist/pins.js +5 -15
  71. package/dist/pins.js.map +1 -1
  72. package/dist/playbook-ports.d.ts +9 -0
  73. package/dist/playbook-ports.d.ts.map +1 -1
  74. package/dist/playbook-ports.js +10 -5
  75. package/dist/playbook-ports.js.map +1 -1
  76. package/dist/reviewing-agent.d.ts +18 -0
  77. package/dist/reviewing-agent.d.ts.map +1 -0
  78. package/dist/reviewing-agent.js +295 -0
  79. package/dist/reviewing-agent.js.map +1 -0
  80. package/dist/runner.d.ts +2 -0
  81. package/dist/runner.d.ts.map +1 -1
  82. package/dist/runner.js +628 -88
  83. package/dist/runner.js.map +1 -1
  84. package/dist/runtime-package.d.ts.map +1 -1
  85. package/dist/runtime-package.js +3 -11
  86. package/dist/runtime-package.js.map +1 -1
  87. package/dist/slc.config.template.yaml +6 -2
  88. package/dist/verify-coverage.d.ts.map +1 -1
  89. package/dist/verify-coverage.js +2 -0
  90. package/dist/verify-coverage.js.map +1 -1
  91. package/dist/verify-support.d.ts +7 -0
  92. package/dist/verify-support.d.ts.map +1 -1
  93. package/dist/verify-support.js +13 -6
  94. package/dist/verify-support.js.map +1 -1
  95. package/dist/verify.d.ts.map +1 -1
  96. package/dist/verify.js +2 -0
  97. package/dist/verify.js.map +1 -1
  98. package/package.json +1 -1
package/dist/config.js CHANGED
@@ -4,8 +4,9 @@
4
4
  * Agent/model configuration and executor construction for the `slc` bin (CLI-7,
5
5
  * CLI-8, CLI-12, DR-004, DR-005).
6
6
  *
7
- * `resolveAgentSelection` reads `SLC_AGENT`/`SLC_MODEL` from the environment and
8
- * refuses an unset or unsupported agent with no implicit default (CLI-12).
7
+ * `resolveAgentSelection` reads the Coder and optional Reviewer selections from
8
+ * the environment and refuses unset or unsupported required values (CLI-12,
9
+ * DR-022).
9
10
  * `createConfiguredExecutor` builds the interpreted executor and
10
11
  * `createConfiguredCompiledFactory` the compiled-execution factory pinned phases
11
12
  * select, both over Cligent-backed transports for the selected agent, binding
@@ -23,6 +24,7 @@ import { isEffortSupported, supportedEffortValues } from '@sublang/cligent';
23
24
  import { createCligentAgent } from './cligent-agent.js';
24
25
  import { createCompiledExecutor } from './compiled-executor.js';
25
26
  import { createInterpretedExecutor } from './interpreter.js';
27
+ import { createReviewingAgent } from './reviewing-agent.js';
26
28
  /** Agent CLI ids the executable registers (CLI-7). */
27
29
  export const SUPPORTED_AGENTS = [
28
30
  'claude-code',
@@ -43,7 +45,7 @@ export const defaultAdapterFactory = (agent) => {
43
45
  return new OpenCodeAdapter();
44
46
  }
45
47
  };
46
- /** Raised when `SLC_AGENT` is unset or names an unsupported agent CLI (CLI-12). */
48
+ /** Raised when a required Coder or Reviewer selection is invalid. */
47
49
  export class ConfigError extends Error {
48
50
  code;
49
51
  constructor(code, message) {
@@ -57,7 +59,7 @@ export function isSupportedAgent(agent) {
57
59
  return SUPPORTED_AGENTS.includes(agent);
58
60
  }
59
61
  /**
60
- * Resolves the agent/model/effort selection from environment configuration
62
+ * Resolves the Coder and optional Reviewer selections from environment configuration
61
63
  * (CLI-7, CLI-12): `SLC_AGENT` names a registered agent CLI, `SLC_MODEL`
62
64
  * optionally names a model, and `SLC_EFFORT` optionally selects an
63
65
  * adapter-scoped reasoning effort validated against Cligent's support
@@ -69,17 +71,45 @@ export function isSupportedAgent(agent) {
69
71
  * (`effort-unsupported`); no implicit default agent is applied.
70
72
  */
71
73
  export function resolveAgentSelection(env) {
72
- const agent = (env.SLC_AGENT ?? '').trim();
74
+ const selection = resolveOneSelection(env, {
75
+ agent: 'SLC_AGENT',
76
+ model: 'SLC_MODEL',
77
+ effort: 'SLC_EFFORT',
78
+ unsetCode: 'agent-unset',
79
+ unsupportedCode: 'agent-unsupported',
80
+ effortCode: 'effort-unsupported',
81
+ required: true,
82
+ });
83
+ if (selection === undefined) {
84
+ throw new Error('required Coder selection unexpectedly resolved empty');
85
+ }
86
+ const reviewer = resolveOneSelection(env, {
87
+ agent: 'SLC_REVIEWER_AGENT',
88
+ model: 'SLC_REVIEWER_MODEL',
89
+ effort: 'SLC_REVIEWER_EFFORT',
90
+ unsetCode: 'reviewer-agent-unset',
91
+ unsupportedCode: 'reviewer-agent-unsupported',
92
+ effortCode: 'reviewer-effort-unsupported',
93
+ required: false,
94
+ });
95
+ return reviewer === undefined ? selection : { ...selection, reviewer };
96
+ }
97
+ function resolveOneSelection(env, names) {
98
+ const agent = (env[names.agent] ?? '').trim();
99
+ const model = (env[names.model] ?? '').trim();
100
+ const effort = (env[names.effort] ?? '').trim();
73
101
  if (agent === '') {
74
- throw new ConfigError('agent-unset', `SLC_AGENT is not set; set it to one of: ${SUPPORTED_AGENTS.join(', ')}`);
102
+ if (!names.required && model === '' && effort === '')
103
+ return undefined;
104
+ throw new ConfigError(names.unsetCode, names.required
105
+ ? `${names.agent} is not set; set it to one of: ${SUPPORTED_AGENTS.join(', ')}`
106
+ : `${names.agent} is not set; ${names.model} and ${names.effort} require a reviewer agent; set ${names.agent} to one of: ${SUPPORTED_AGENTS.join(', ')}`);
75
107
  }
76
108
  if (!isSupportedAgent(agent)) {
77
- throw new ConfigError('agent-unsupported', `SLC_AGENT "${agent}" is not a supported agent CLI; choose one of: ${SUPPORTED_AGENTS.join(', ')}`);
109
+ throw new ConfigError(names.unsupportedCode, `${names.agent} "${agent}" is not a supported agent CLI; choose one of: ${SUPPORTED_AGENTS.join(', ')}`);
78
110
  }
79
- const model = (env.SLC_MODEL ?? '').trim();
80
- const effort = (env.SLC_EFFORT ?? '').trim();
81
111
  if (effort !== '' && !isEffortSupported(agent, effort)) {
82
- throw new ConfigError('effort-unsupported', `SLC_EFFORT "${effort}" is not supported by ${agent}; choose one of: ${(supportedEffortValues(agent) ?? []).join(', ')}`);
112
+ throw new ConfigError(names.effortCode, `${names.effort} "${effort}" is not supported by ${agent}; choose one of: ${(supportedEffortValues(agent) ?? []).join(', ')}`);
83
113
  }
84
114
  return {
85
115
  agent,
@@ -96,7 +126,8 @@ export function resolveAgentSelection(env) {
96
126
  * sandbox.
97
127
  */
98
128
  export function createConfiguredExecutor(selection, opts = {}) {
99
- const agent = createConfiguredAgentClient(selection, opts);
129
+ const coder = createConfiguredAgentClient(selection, opts);
130
+ const agent = configuredReviewingClient(selection, coder, opts);
100
131
  return createInterpretedExecutor({
101
132
  agent,
102
133
  config: { model: selection.model, cwd: opts.cwd },
@@ -127,7 +158,10 @@ export function createConfiguredAgentClient(selection, opts = {}) {
127
158
  * and applying the selected model as the default per-player model (PHEXEC-13).
128
159
  */
129
160
  export function createConfiguredCompiledFactory(selection, opts = {}) {
130
- const client = () => createConfiguredAgentClient(selection, opts);
161
+ const client = () => {
162
+ const coder = createConfiguredAgentClient(selection, opts);
163
+ return configuredReviewingClient(selection, coder, opts);
164
+ };
131
165
  return (choice) => createCompiledExecutor({
132
166
  artifactPath: resolve(choice.pipelineDir, choice.record.artifact.path),
133
167
  runRoot: opts.cwd ?? process.cwd(),
@@ -140,6 +174,25 @@ export function createConfiguredCompiledFactory(selection, opts = {}) {
140
174
  onStatus: opts.onStatus,
141
175
  });
142
176
  }
177
+ function configuredReviewingClient(selection, coder, opts) {
178
+ const reviewer = selection.reviewer;
179
+ if (reviewer === undefined)
180
+ return coder;
181
+ return createReviewingAgent({
182
+ coder,
183
+ reviewer: () => createConfiguredAgentClient(reviewer, {
184
+ ...opts,
185
+ // Reviewer inspection is read-only even though the Coder is allowed to
186
+ // write its declared artifact (DR-022).
187
+ permissions: {
188
+ fileWrite: 'deny',
189
+ shellExecute: 'deny',
190
+ networkAccess: 'deny',
191
+ },
192
+ }),
193
+ reviewerModel: reviewer.model,
194
+ });
195
+ }
143
196
  function runtimeContractForPin(choice) {
144
197
  const provenance = choice.record.linkTarget.provenance;
145
198
  if (provenance === undefined || provenance === '@sublang/playbook@0.9.0') {
@@ -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,14 @@
1
+ /**
2
+ * Shared error inspection helpers.
3
+ *
4
+ * This module imports nothing: modules whose bytes are hashed into a
5
+ * deterministic identity descriptor, or that are copied verbatim beside an
6
+ * artifact, keep their own private copies instead of importing these.
7
+ */
8
+ /** Renders any thrown value as a diagnostic string. */
9
+ export declare function messageOf(error: unknown): string;
10
+ /** Reads a system error code, or `unknown error` when none is carried. */
11
+ export declare function errorCode(error: unknown): string;
12
+ /** True when a path operation failed because the path is not there. */
13
+ export declare function isAbsentPathError(error: unknown): boolean;
14
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEhD;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOhD;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGzD"}
package/dist/errors.js ADDED
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
3
+ /**
4
+ * Shared error inspection helpers.
5
+ *
6
+ * This module imports nothing: modules whose bytes are hashed into a
7
+ * deterministic identity descriptor, or that are copied verbatim beside an
8
+ * artifact, keep their own private copies instead of importing these.
9
+ */
10
+ /** Renders any thrown value as a diagnostic string. */
11
+ export function messageOf(error) {
12
+ return error instanceof Error ? error.message : String(error);
13
+ }
14
+ /** Reads a system error code, or `unknown error` when none is carried. */
15
+ export function errorCode(error) {
16
+ return typeof error === 'object' &&
17
+ error !== null &&
18
+ 'code' in error &&
19
+ typeof error.code === 'string'
20
+ ? error.code
21
+ : 'unknown error';
22
+ }
23
+ /** True when a path operation failed because the path is not there. */
24
+ export function isAbsentPathError(error) {
25
+ const code = errorCode(error);
26
+ return code === 'ENOENT' || code === 'ENOTDIR';
27
+ }
28
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;GAMG;AAEH,uDAAuD;AACvD,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ;QAC9B,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,CAAC,CAAC,KAAK,CAAC,IAAI;QACZ,CAAC,CAAC,eAAe,CAAC;AACtB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,CAAC;AACjD,CAAC"}
@@ -3,6 +3,28 @@ export interface LinkOptionPair {
3
3
  name: string;
4
4
  value: string;
5
5
  }
6
+ /**
7
+ * Host-supplied update-mode context for a compile step (DR-021, INCR-15).
8
+ *
9
+ * The existing target file is the previously accepted output; the executor is
10
+ * asked to update it rather than regenerate from scratch. Purely an
11
+ * optimization hint: acceptance authority is identical to a fresh compile.
12
+ */
13
+ export interface UpdateContext {
14
+ /** Absolute path of the prior accepted input, a read-only history copy. */
15
+ priorInput: string;
16
+ /**
17
+ * Unified line diff of prior to current input; the empty string when the
18
+ * chained input is byte-identical (another input changed), and `null` when a
19
+ * useful line diff is unavailable.
20
+ */
21
+ diff: string | null;
22
+ }
23
+ /**
24
+ * Renders the host-owned update instruction shared by interpreted prompts and
25
+ * compiled performing prompts (INCR-16).
26
+ */
27
+ export declare function updateContextLines(update: UpdateContext, target: string): string[];
6
28
  /** What a phase execution is asked to produce: a compile target or a linked artifact. */
7
29
  export type ExecuteRequest = {
8
30
  kind: 'compile';
@@ -16,6 +38,8 @@ export type ExecuteRequest = {
16
38
  * rewrites the source toward (DR-013). Protected like definitions.
17
39
  */
18
40
  references?: readonly string[];
41
+ /** Update-mode context; absent for a fresh compile (DR-021, INCR-15). */
42
+ update?: UpdateContext;
19
43
  } | {
20
44
  kind: 'link';
21
45
  /** Path to the `link.md` definition, the semantic source of truth (PHEXEC-2). */
@@ -51,6 +75,18 @@ export type PhaseResult = {
51
75
  ok: false;
52
76
  report: FailureReport;
53
77
  };
78
+ /** Options for validating one planned host or executor write target. */
79
+ export interface SafeTargetOptions {
80
+ /** Permit SLC's own deterministic files inside `.slc-verify`. */
81
+ allowVerifierOutput?: boolean;
82
+ }
83
+ /**
84
+ * Refuses an unsafe planned write without running an executor. This is shared
85
+ * by phase targets and the runner's deterministic completion outputs.
86
+ */
87
+ export declare function assertSafeTarget(target: string, protectedPaths: readonly string[], opts?: SafeTargetOptions): Promise<void>;
88
+ /** Whether two writable/readable path spellings currently name one file. */
89
+ export declare function pathsAlias(left: string, right: string): Promise<boolean>;
54
90
  /**
55
91
  * Runs a single phase through the execution boundary: generic mechanics only,
56
92
  * plus the DR-003 generic checks and blocked protocol (PHEXEC-1, PHEXEC-4..9).
@@ -62,6 +98,12 @@ export declare function runPhase(opts: {
62
98
  executor: PhaseExecutor;
63
99
  /** Other chain definition files to protect; the executing phase's is always protected. */
64
100
  definitions?: readonly string[];
101
+ /** Other semantic inputs read under the definition, protected but not transported. */
102
+ protectedInputs?: readonly string[];
103
+ /** Other planned paths that the target must not alias, but this phase does not read. */
104
+ aliasInputs?: readonly string[];
105
+ /** Host state transition that must succeed immediately before executor work. */
106
+ beforeExecute?: () => void | Promise<void>;
65
107
  /** Re-checks that the pipeline chain still infers; throws when it no longer does (PHEXEC-5). */
66
108
  revalidate?: () => void | Promise<void>;
67
109
  signal?: AbortSignal;
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AA4BA,+FAA+F;AAC/F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,yFAAyF;AACzF,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAExD,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,2FAA2F;AAC3F,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5E;AAED,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,iDAAiD;AACjD,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,GACnD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAEzC;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC;IACxB,0FAA0F;IAC1F,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,gGAAgG;IAChG,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,WAAW,CAAC,CAyDvB;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAMjE"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
package/dist/execution.js CHANGED
@@ -15,13 +15,66 @@
15
15
  * report naming the phase, target, and reasons (PHEXEC-7, PHEXEC-9).
16
16
  *
17
17
  * The executor honors PHEXEC-2 by treating the passed definition as the
18
- * semantic source of truth. Broader write-scope enforcement (sandbox or
19
- * allowlist) is a host concern per DR-003 and is left as a future capability.
18
+ * semantic source of truth. The host refuses target/input aliases and verifies
19
+ * protected inputs afterward; sandboxing arbitrary unrelated writes remains a
20
+ * host capability outside this boundary.
20
21
  * See specs/dev/phase-execution.md.
21
22
  */
22
23
  import { createHash } from 'node:crypto';
23
- import { lstat, readFile, readdir, readlink, stat } from 'node:fs/promises';
24
- import { extname, join } from 'node:path';
24
+ import { lstat, readFile, readdir, readlink, realpath, stat, } from 'node:fs/promises';
25
+ import { basename, dirname, extname, isAbsolute, join, relative, resolve, sep, } from 'node:path';
26
+ import { errorCode, isAbsentPathError, messageOf } from './errors.js';
27
+ /**
28
+ * Renders the host-owned update instruction shared by interpreted prompts and
29
+ * compiled performing prompts (INCR-16).
30
+ */
31
+ export function updateContextLines(update, target) {
32
+ const diff = update.diff === null
33
+ ? [
34
+ '- a useful line diff is unavailable; compare the prior and current inputs directly;',
35
+ ]
36
+ : update.diff === ''
37
+ ? [
38
+ '- the input file is byte-identical to the prior input; the definition or another declared input changed instead;',
39
+ ]
40
+ : [
41
+ '- the input changes, as a unified diff of prior to current input:',
42
+ '--- BEGIN INPUT DIFF ---',
43
+ update.diff,
44
+ '--- END INPUT DIFF ---',
45
+ ];
46
+ return [
47
+ 'Incremental update — the artifact to write already holds the accepted output of a previous run (possibly with deliberate manual refinements):',
48
+ `- the prior input is available read-only at: ${update.priorInput};`,
49
+ `- the existing output to update is: ${target};`,
50
+ ...diff,
51
+ '- update the existing artifact under the definition: apply what the input changes imply, preserve everything unaffected including refinements, and keep the artifact complete and consistent;',
52
+ '- if the existing artifact is missing or unusable under the definition, produce a fresh complete artifact instead.',
53
+ ];
54
+ }
55
+ /**
56
+ * Refuses an unsafe planned write without running an executor. This is shared
57
+ * by phase targets and the runner's deterministic completion outputs.
58
+ */
59
+ export async function assertSafeTarget(target, protectedPaths, opts = {}) {
60
+ await inspectTarget(target, protectedPaths, opts);
61
+ }
62
+ /** Whether two writable/readable path spellings currently name one file. */
63
+ export async function pathsAlias(left, right) {
64
+ const leftPath = await prospectiveRealPath(resolve(left));
65
+ const rightPath = await prospectiveRealPath(resolve(right));
66
+ if (leftPath === rightPath)
67
+ return true;
68
+ try {
69
+ const [leftInfo, rightInfo] = await Promise.all([stat(left), stat(right)]);
70
+ return leftInfo.dev === rightInfo.dev && leftInfo.ino === rightInfo.ino;
71
+ }
72
+ catch (error) {
73
+ if (isAbsentPathError(error))
74
+ return false;
75
+ throw error;
76
+ }
77
+ }
25
78
  /**
26
79
  * Runs a single phase through the execution boundary: generic mechanics only,
27
80
  * plus the DR-003 generic checks and blocked protocol (PHEXEC-1, PHEXEC-4..9).
@@ -31,11 +84,35 @@ export async function runPhase(opts) {
31
84
  const signal = opts.signal ?? new AbortController().signal;
32
85
  const target = request.kind === 'compile' ? request.target : request.linked;
33
86
  const inputs = request.kind === 'compile'
34
- ? [request.source, ...(request.references ?? [])]
87
+ ? [
88
+ request.source,
89
+ ...(request.references ?? []),
90
+ ...(request.update === undefined ? [] : [request.update.priorInput]),
91
+ ]
35
92
  : [...request.objects, request.linkTarget];
36
93
  const definitions = [request.definitionPath, ...(opts.definitions ?? [])];
37
- const protectedPaths = [...new Set([...inputs, ...definitions])];
94
+ const protectedPaths = [
95
+ ...new Set([...inputs, ...definitions, ...(opts.protectedInputs ?? [])]),
96
+ ];
97
+ const targetProtectedPaths = [
98
+ ...new Set([...protectedPaths, ...(opts.aliasInputs ?? [])]),
99
+ ];
100
+ let targetBefore;
101
+ try {
102
+ targetBefore = await inspectTarget(target, targetProtectedPaths);
103
+ }
104
+ catch (error) {
105
+ return failure(phase, target, [messageOf(error)]);
106
+ }
38
107
  const before = await snapshot(protectedPaths);
108
+ if (opts.beforeExecute) {
109
+ try {
110
+ await opts.beforeExecute();
111
+ }
112
+ catch (error) {
113
+ return failure(phase, target, [messageOf(error)]);
114
+ }
115
+ }
39
116
  const reasons = [];
40
117
  let result = null;
41
118
  try {
@@ -48,12 +125,23 @@ export async function runPhase(opts) {
48
125
  reasons.push(...reasonsFor(result));
49
126
  }
50
127
  if (result?.status === 'ok') {
51
- if (!(await exists(target))) {
52
- reasons.push(`expected target "${target}" was not written`);
53
- }
54
- else if (extname(target) !== targetExt) {
128
+ if (extname(target) !== targetExt) {
55
129
  reasons.push(`target "${target}" extension does not match the declared "${targetExt}"`);
56
130
  }
131
+ else {
132
+ try {
133
+ const targetAfter = await inspectTarget(target, targetProtectedPaths);
134
+ if (!targetAfter.exists) {
135
+ reasons.push(`expected target "${target}" was not written`);
136
+ }
137
+ else if (targetBefore.path !== targetAfter.path) {
138
+ reasons.push(`target "${target}" changed physical location during the run`);
139
+ }
140
+ }
141
+ catch (error) {
142
+ reasons.push(messageOf(error));
143
+ }
144
+ }
57
145
  }
58
146
  // Protected inputs and chain definitions are re-checked after any outcome, so
59
147
  // a mutation is caught even when the executor blocks, errors, or throws
@@ -114,7 +202,7 @@ async function pathIdentity(path) {
114
202
  return identityForInfo(path, rootInfo);
115
203
  }
116
204
  catch (error) {
117
- if (isMissing(error))
205
+ if (isAbsentPathError(error))
118
206
  return 'missing';
119
207
  return `unreadable:${errorCode(error)}`;
120
208
  }
@@ -124,7 +212,7 @@ async function followedPathIdentity(path) {
124
212
  return await identityForInfo(path, await stat(path));
125
213
  }
126
214
  catch (error) {
127
- if (isMissing(error))
215
+ if (isAbsentPathError(error))
128
216
  return 'missing';
129
217
  return `unreadable:${errorCode(error)}`;
130
218
  }
@@ -179,29 +267,136 @@ async function collectTreeRecords(root, prefix, records) {
179
267
  function compareNames(left, right) {
180
268
  return left < right ? -1 : left > right ? 1 : 0;
181
269
  }
182
- function isMissing(error) {
183
- const code = errorCode(error);
184
- return code === 'ENOENT' || code === 'ENOTDIR';
185
- }
186
- function errorCode(error) {
187
- if (typeof error === 'object' &&
188
- error !== null &&
189
- 'code' in error &&
190
- typeof error.code === 'string') {
191
- return error.code;
270
+ /**
271
+ * Establishes the one pre/post target rule used by every executor: the target
272
+ * is outside host-owned namespaces, does not alias a read input, and is absent
273
+ * or a single-link regular file. An existing target may remain byte-identical when
274
+ * the executor accepts that no semantic output change is needed.
275
+ */
276
+ async function inspectTarget(target, protectedPaths, opts = {}) {
277
+ const lexical = resolve(target);
278
+ rejectReservedTarget(lexical, target, opts);
279
+ let exists = false;
280
+ let targetInfo = null;
281
+ try {
282
+ targetInfo = await lstat(lexical);
283
+ if (targetInfo.isSymbolicLink()) {
284
+ throw new Error(`target "${target}" is a symbolic link`);
285
+ }
286
+ if (!targetInfo.isFile()) {
287
+ throw new Error(`target "${target}" is not a regular file`);
288
+ }
289
+ if (targetInfo.nlink !== 1) {
290
+ throw new Error(`target "${target}" has multiple hard links`);
291
+ }
292
+ exists = true;
293
+ }
294
+ catch (error) {
295
+ if (!isAbsentPathError(error))
296
+ throw error;
192
297
  }
193
- return 'unknown';
298
+ const physical = await prospectiveRealPath(lexical);
299
+ rejectReservedTarget(physical, target, opts);
300
+ for (const input of protectedPaths) {
301
+ const conflict = await aliasesProtectedPath(physical, targetInfo, resolve(input));
302
+ if (conflict) {
303
+ throw new Error(`target "${target}" aliases protected input "${input}"`);
304
+ }
305
+ }
306
+ return { path: physical, exists };
194
307
  }
195
- async function exists(path) {
308
+ async function aliasesProtectedPath(targetPath, targetInfo, input) {
309
+ let inputInfo = null;
310
+ try {
311
+ inputInfo = await stat(input);
312
+ }
313
+ catch (error) {
314
+ if (!isAbsentPathError(error))
315
+ throw error;
316
+ }
317
+ let inputPath;
196
318
  try {
197
- await stat(path);
319
+ inputPath = await prospectiveRealPath(input);
320
+ }
321
+ catch (error) {
322
+ // An impossible protected path cannot itself alias this target, but its
323
+ // existing blocking ancestor remains protected. Permission and I/O errors
324
+ // are indeterminate and continue to fail closed.
325
+ if (error instanceof ImpossiblePathError) {
326
+ const blocker = error.blocker;
327
+ return (blocker !== undefined &&
328
+ (targetPath === blocker.path ||
329
+ (targetInfo !== null &&
330
+ targetInfo.dev === blocker.info.dev &&
331
+ targetInfo.ino === blocker.info.ino)));
332
+ }
333
+ throw error;
334
+ }
335
+ if (targetPath === inputPath)
198
336
  return true;
337
+ if (inputInfo?.isDirectory() && isWithin(inputPath, targetPath))
338
+ return true;
339
+ return (targetInfo !== null &&
340
+ inputInfo !== null &&
341
+ targetInfo.dev === inputInfo.dev &&
342
+ targetInfo.ino === inputInfo.ino);
343
+ }
344
+ class ImpossiblePathError extends Error {
345
+ blocker;
346
+ constructor(message, blocker) {
347
+ super(message);
348
+ this.blocker = blocker;
349
+ }
350
+ }
351
+ /** Resolves a missing leaf through its nearest real directory ancestor. */
352
+ async function prospectiveRealPath(path) {
353
+ const suffix = [];
354
+ let cursor = path;
355
+ while (true) {
356
+ try {
357
+ const resolved = await realpath(cursor);
358
+ if (suffix.length > 0) {
359
+ const info = await stat(resolved);
360
+ if (!info.isDirectory()) {
361
+ throw new ImpossiblePathError(`target parent "${cursor}" is not a directory`, { path: resolved, info });
362
+ }
363
+ }
364
+ return resolve(resolved, ...suffix.reverse());
365
+ }
366
+ catch (error) {
367
+ if (!isAbsentPathError(error))
368
+ throw error;
369
+ }
370
+ // `realpath` reports ENOENT for both an absent path and a dangling link.
371
+ // An existing unresolved link is not a safe ancestor to write through.
372
+ try {
373
+ const info = await lstat(cursor);
374
+ throw new ImpossiblePathError(`target path "${cursor}" cannot be resolved safely`, { path: resolve(cursor), info });
375
+ }
376
+ catch (error) {
377
+ if (!isAbsentPathError(error))
378
+ throw error;
379
+ }
380
+ const parent = dirname(cursor);
381
+ if (parent === cursor) {
382
+ throw new ImpossiblePathError(`target path "${path}" has no existing directory ancestor`);
383
+ }
384
+ suffix.push(basename(cursor));
385
+ cursor = parent;
199
386
  }
200
- catch {
201
- return false;
387
+ }
388
+ function rejectReservedTarget(path, display, opts) {
389
+ const parts = resolve(path).split(sep);
390
+ if (parts.includes('.slc') ||
391
+ (!opts.allowVerifierOutput && parts.includes('.slc-verify'))) {
392
+ throw new Error(`target "${display}" enters a host-owned slc directory`);
202
393
  }
203
394
  }
204
- function messageOf(error) {
205
- return error instanceof Error ? error.message : String(error);
395
+ function isWithin(root, candidate) {
396
+ const rel = relative(root, candidate);
397
+ return (rel !== '' &&
398
+ rel !== '..' &&
399
+ !rel.startsWith(`..${sep}`) &&
400
+ !isAbsolute(rel));
206
401
  }
207
402
  //# sourceMappingURL=execution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}