@sublang/slc 0.5.0 → 0.7.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 (120) hide show
  1. package/README.md +10 -5
  2. package/dist/app.d.ts +20 -20
  3. package/dist/app.d.ts.map +1 -1
  4. package/dist/app.js +44 -31
  5. package/dist/app.js.map +1 -1
  6. package/dist/artifacts.d.ts +6 -6
  7. package/dist/artifacts.d.ts.map +1 -1
  8. package/dist/artifacts.js +9 -9
  9. package/dist/artifacts.js.map +1 -1
  10. package/dist/cli.js +3 -3
  11. package/dist/cligent-agent.d.ts +9 -2
  12. package/dist/cligent-agent.d.ts.map +1 -1
  13. package/dist/cligent-agent.js +6 -5
  14. package/dist/cligent-agent.js.map +1 -1
  15. package/dist/compiled-execution.d.ts +44 -0
  16. package/dist/compiled-execution.d.ts.map +1 -0
  17. package/dist/compiled-execution.js +184 -0
  18. package/dist/compiled-execution.js.map +1 -0
  19. package/dist/compiled-executor.d.ts +16 -6
  20. package/dist/compiled-executor.d.ts.map +1 -1
  21. package/dist/compiled-executor.js +182 -35
  22. package/dist/compiled-executor.js.map +1 -1
  23. package/dist/config-file.d.ts +9 -6
  24. package/dist/config-file.d.ts.map +1 -1
  25. package/dist/config-file.js +27 -9
  26. package/dist/config-file.js.map +1 -1
  27. package/dist/config.d.ts +77 -24
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js +128 -52
  30. package/dist/config.js.map +1 -1
  31. package/dist/emitted-imports.d.ts +14 -0
  32. package/dist/emitted-imports.d.ts.map +1 -1
  33. package/dist/emitted-imports.js +63 -7
  34. package/dist/emitted-imports.js.map +1 -1
  35. package/dist/entry-module.d.ts +5 -3
  36. package/dist/entry-module.d.ts.map +1 -1
  37. package/dist/entry-module.js +41 -13
  38. package/dist/entry-module.js.map +1 -1
  39. package/dist/execution.d.ts +10 -10
  40. package/dist/execution.d.ts.map +1 -1
  41. package/dist/execution.js +13 -13
  42. package/dist/execution.js.map +1 -1
  43. package/dist/hash.js +2 -2
  44. package/dist/interpreter.d.ts +2 -2
  45. package/dist/interpreter.d.ts.map +1 -1
  46. package/dist/interpreter.js +7 -7
  47. package/dist/invocation.d.ts +6 -6
  48. package/dist/invocation.d.ts.map +1 -1
  49. package/dist/invocation.js +1 -1
  50. package/dist/link.d.ts +4 -4
  51. package/dist/link.d.ts.map +1 -1
  52. package/dist/link.js +11 -11
  53. package/dist/link.js.map +1 -1
  54. package/dist/phase-runner.d.ts +13 -6
  55. package/dist/phase-runner.d.ts.map +1 -1
  56. package/dist/phase-runner.js +12 -10
  57. package/dist/phase-runner.js.map +1 -1
  58. package/dist/phase.d.ts +4 -4
  59. package/dist/phase.d.ts.map +1 -1
  60. package/dist/phase.js +7 -7
  61. package/dist/phase.js.map +1 -1
  62. package/dist/pin-closure.d.ts +35 -7
  63. package/dist/pin-closure.d.ts.map +1 -1
  64. package/dist/pin-closure.js +135 -21
  65. package/dist/pin-closure.js.map +1 -1
  66. package/dist/pin-currency.d.ts +9 -4
  67. package/dist/pin-currency.d.ts.map +1 -1
  68. package/dist/pin-currency.js +57 -20
  69. package/dist/pin-currency.js.map +1 -1
  70. package/dist/pin-generate.d.ts +7 -7
  71. package/dist/pin-generate.d.ts.map +1 -1
  72. package/dist/pin-generate.js +24 -10
  73. package/dist/pin-generate.js.map +1 -1
  74. package/dist/pin-inputs.d.ts +41 -0
  75. package/dist/pin-inputs.d.ts.map +1 -0
  76. package/dist/pin-inputs.js +179 -0
  77. package/dist/pin-inputs.js.map +1 -0
  78. package/dist/pin-paths.d.ts +1 -1
  79. package/dist/pin-paths.js +4 -4
  80. package/dist/pin-paths.js.map +1 -1
  81. package/dist/pins.d.ts +4 -4
  82. package/dist/pins.d.ts.map +1 -1
  83. package/dist/pins.js +5 -5
  84. package/dist/pins.js.map +1 -1
  85. package/dist/pipeline.d.ts +5 -5
  86. package/dist/pipeline.js +10 -10
  87. package/dist/playbook-contract.d.ts +49 -5
  88. package/dist/playbook-contract.d.ts.map +1 -1
  89. package/dist/playbook-contract.js +70 -21
  90. package/dist/playbook-contract.js.map +1 -1
  91. package/dist/playbook-ports.d.ts +9 -9
  92. package/dist/playbook-ports.d.ts.map +1 -1
  93. package/dist/playbook-ports.js +3 -3
  94. package/dist/playbook-ports.js.map +1 -1
  95. package/dist/progress.d.ts +8 -9
  96. package/dist/progress.d.ts.map +1 -1
  97. package/dist/progress.js +3 -3
  98. package/dist/progress.js.map +1 -1
  99. package/dist/resolver.d.ts +9 -9
  100. package/dist/resolver.d.ts.map +1 -1
  101. package/dist/resolver.js +12 -12
  102. package/dist/resolver.js.map +1 -1
  103. package/dist/runner.d.ts +2 -2
  104. package/dist/runner.d.ts.map +1 -1
  105. package/dist/runner.js +218 -81
  106. package/dist/runner.js.map +1 -1
  107. package/dist/runtime-contract.d.ts +17 -0
  108. package/dist/runtime-contract.d.ts.map +1 -0
  109. package/dist/runtime-contract.js +114 -0
  110. package/dist/runtime-contract.js.map +1 -0
  111. package/dist/slc.config.template.yaml +7 -2
  112. package/dist/verify-coverage.d.ts +4 -3
  113. package/dist/verify-coverage.d.ts.map +1 -1
  114. package/dist/verify-coverage.js +509 -71
  115. package/dist/verify-coverage.js.map +1 -1
  116. package/dist/verify.d.ts +153 -15
  117. package/dist/verify.d.ts.map +1 -1
  118. package/dist/verify.js +707 -59
  119. package/dist/verify.js.map +1 -1
  120. package/package.json +3 -3
package/dist/config.d.ts CHANGED
@@ -1,52 +1,69 @@
1
1
  import type { AgentAdapter, PermissionPolicy } from '@sublang/cligent';
2
2
  import type { PhaseExecutor } from './execution.js';
3
3
  import type { AgentClient } from './interpreter.js';
4
+ import type { RuntimeContractProfile } from './playbook-contract.js';
4
5
  import type { CompiledSelection } from './runner.js';
5
- /** Agent CLI ids the executable registers (CLI-7). */
6
+ /** Agent CLI ids the executable registers (cli-7). */
6
7
  export declare const SUPPORTED_AGENTS: readonly ["claude-code", "codex", "gemini", "opencode"];
7
- /** One of the registered agent CLI ids (CLI-7). */
8
+ /** One of the registered agent CLI ids (cli-7). */
8
9
  export type SupportedAgent = (typeof SUPPORTED_AGENTS)[number];
9
- /** Constructs the Cligent adapter for a supported agent id (CLI-7). */
10
- export type AdapterFactory = (agent: SupportedAgent) => AgentAdapter;
11
- /** Default factory: Cligent's built-in adapters, constructed on demand (CLI-7). */
10
+ /**
11
+ * Constructs the Cligent adapter for a supported agent id (cli-7). Cligent
12
+ * types each adapter by its own effort vocabulary and fast-mode support, so
13
+ * the factory is typed at the widest adapter shape; the configuration layer
14
+ * validates effort against Cligent's per-agent support metadata (cli-12).
15
+ */
16
+ export type AdapterFactory = (agent: SupportedAgent) => AgentAdapter<string, boolean>;
17
+ /** Default factory: Cligent's built-in adapters, constructed on demand (cli-7). */
12
18
  export declare const defaultAdapterFactory: AdapterFactory;
13
- /** A resolved Coder and optional Reviewer selection (CLI-7, DR-022). */
19
+ /** A resolved Coder and optional Reviewer selection (cli-7, DR-022). */
14
20
  export interface AgentSelection {
15
21
  agent: SupportedAgent;
16
22
  /** Optional model; omitted so the agent CLI uses its own default. */
17
23
  model?: string;
18
24
  /** Optional adapter-scoped reasoning effort; omitted for the default. */
19
25
  effort?: string;
26
+ /**
27
+ * Literal adapter-scoped fast-mode request: `false` asks for it off, and
28
+ * omission leaves the agent CLI's own default. Validated against Cligent's
29
+ * fast-mode capability contract, which slc does not duplicate (cli-7).
30
+ */
31
+ fastMode?: boolean;
20
32
  /** Optional independent Reviewer selection; presence enables DR-022. */
21
33
  reviewer?: Omit<AgentSelection, 'reviewer'>;
22
34
  }
23
- /** Machine-readable reason agent configuration was refused (CLI-12). */
24
- export type ConfigErrorCode = 'agent-unset' | 'agent-unsupported' | 'effort-unsupported' | 'reviewer-agent-unset' | 'reviewer-agent-unsupported' | 'reviewer-effort-unsupported';
35
+ /** Machine-readable reason agent configuration was refused (cli-12). */
36
+ export type ConfigErrorCode = 'agent-unset' | 'agent-unsupported' | 'effort-unsupported' | 'fast-mode-invalid' | 'fast-mode-unsupported' | 'reviewer-agent-unset' | 'reviewer-agent-unsupported' | 'reviewer-effort-unsupported' | 'reviewer-fast-mode-invalid' | 'reviewer-fast-mode-unsupported';
25
37
  /** Raised when a required Coder or Reviewer selection is invalid. */
26
38
  export declare class ConfigError extends Error {
27
39
  readonly code: ConfigErrorCode;
28
40
  constructor(code: ConfigErrorCode, message: string);
29
41
  }
30
- /** Reports whether `agent` is one of the registered ids (CLI-7). */
42
+ /** Reports whether `agent` is one of the registered ids (cli-7). */
31
43
  export declare function isSupportedAgent(agent: string): agent is SupportedAgent;
32
44
  /**
33
45
  * Resolves the Coder and optional Reviewer selections from environment configuration
34
- * (CLI-7, CLI-12): `SLC_AGENT` names a registered agent CLI, `SLC_MODEL`
35
- * optionally names a model, and `SLC_EFFORT` optionally selects an
46
+ * (cli-7, cli-12): `SLC_AGENT` names a registered agent CLI, `SLC_MODEL`
47
+ * optionally names a model, `SLC_EFFORT` optionally selects an
36
48
  * adapter-scoped reasoning effort validated against Cligent's support
37
- * metadata.
49
+ * metadata, and `SLC_FAST_MODE` — exactly `true` or `false` — optionally
50
+ * requests adapter-scoped fast mode, accepted or refused by Cligent's
51
+ * fast-mode capability contract before any agent call.
38
52
  *
39
53
  * @throws {ConfigError} when `SLC_AGENT` is unset/blank (`agent-unset`) or
40
- * outside the registered set (`agent-unsupported`), or when `SLC_EFFORT`
54
+ * outside the registered set (`agent-unsupported`), when `SLC_EFFORT`
41
55
  * names a value the selected agent does not support
42
- * (`effort-unsupported`); no implicit default agent is applied.
56
+ * (`effort-unsupported`), when `SLC_FAST_MODE` is neither `true` nor
57
+ * `false` (`fast-mode-invalid`), or when it is set for an agent Cligent
58
+ * reports without fast-mode request support (`fast-mode-unsupported`); no
59
+ * implicit default agent is applied.
43
60
  */
44
61
  export declare function resolveAgentSelection(env: Record<string, string | undefined>): AgentSelection;
45
62
  /**
46
- * Builds the interpreted {@link PhaseExecutor} for a selection (CLI-7, CLI-8):
63
+ * Builds the interpreted {@link PhaseExecutor} for a selection (cli-7, cli-8):
47
64
  * constructs the agent CLI's adapter, wraps it as a Cligent-backed transport,
48
65
  * and binds the optional model as configuration, not phase semantics
49
- * (PHEXEC-13). The adapter factory is injectable so tests can fake adapter
66
+ * (phase-execution-13). The adapter factory is injectable so tests can fake adapter
50
67
  * construction; `permissions` is where a host configures the DR-003 write-scope
51
68
  * sandbox.
52
69
  */
@@ -59,7 +76,7 @@ export declare function createConfiguredExecutor(selection: AgentSelection, opts
59
76
  stallTimeoutMs?: number;
60
77
  }): PhaseExecutor;
61
78
  /**
62
- * Builds one Cligent-backed {@link AgentClient} for a selection (CLI-7): a fresh
79
+ * Builds one Cligent-backed {@link AgentClient} for a selection (cli-7): a fresh
63
80
  * adapter wrapped as a transport. Each client is a single-flight Cligent
64
81
  * instance that resumes its own agent session across calls, so callers wanting
65
82
  * isolated sessions construct one client per role or player.
@@ -73,11 +90,16 @@ export declare function createConfiguredAgentClient(selection: AgentSelection, o
73
90
  }): AgentClient;
74
91
  /**
75
92
  * Builds the compiled-execution factory the bin injects as `SlcDeps.compiled`
76
- * (CLI-8, PHEXEC-27): for a current pinned phase it drives the pinned `playbook`
77
- * artifact resolved against its pipeline directory — through the compiled
78
- * executor, backing the runtime's player ports with one agent transport per
79
- * player id and its Captain/judge ports with one shared transport (PHEXEC-25),
80
- * and applying the selected model as the default per-player model (PHEXEC-13).
93
+ * (cli-8, phase-execution-27): for a current pinned phase it selects the
94
+ * runtime contract profile ({@link runtimeContractForPin}) and drives the
95
+ * pinned `playbook` artifact resolved against its pipeline directory
96
+ * through the compiled executor, backing the runtime's player ports with one
97
+ * agent transport per player id and its Captain/judge ports with one shared
98
+ * transport; the roleless composed-v3 path rejects its player port before that
99
+ * lazy player transport is constructed (phase-execution-25). The factory
100
+ * applies the selected model as the default per-player model
101
+ * (phase-execution-13). A rejected selection rejects the returned promise
102
+ * before any artifact loads or transport is built (phase-execution-30).
81
103
  */
82
104
  export declare function createConfiguredCompiledFactory(selection: AgentSelection, opts?: {
83
105
  adapterFactory?: AdapterFactory;
@@ -86,7 +108,38 @@ export declare function createConfiguredCompiledFactory(selection: AgentSelectio
86
108
  permissions?: PermissionPolicy;
87
109
  /** Agent-stall watchdog window in milliseconds; 0/absent disables (DR-019). */
88
110
  stallTimeoutMs?: number;
89
- /** Live status sink streaming the runtime's non-trace status (DR-019, PHEXEC-25). */
111
+ /** Live status sink streaming the runtime's non-trace status (DR-019, phase-execution-25). */
90
112
  onStatus?: (line: string) => void;
91
- }): (choice: CompiledSelection) => PhaseExecutor;
113
+ }): (choice: CompiledSelection) => Promise<PhaseExecutor>;
114
+ /**
115
+ * The exact historical provenance maps, retained as recorded (DR-028):
116
+ * absent or Playbook 0.9.0 provenance is the `legacy` contract, and the
117
+ * reviewed six-port generation is `composed-v2`. Every other provenance is
118
+ * decided by the installed engine's declaration instead.
119
+ *
120
+ * Playbook 0.10 ships the composed six-port contract (DR-011); 1.0.0 is the
121
+ * published release of that same generation — 0.10.0 was cut locally and
122
+ * superseded before it reached the registry. 2.0.0 keeps the six-port
123
+ * boundary and structured results while moving Captain host failures onto
124
+ * the resolved `failed` path and emitting thin linked modules (DR-017).
125
+ * 3.1.0 ships runtime.ts byte-identical to 2.0.0 and only adds the additive
126
+ * DR-022 compat self-report (DR-018), and 4.0.0 keeps runtime.ts and the
127
+ * engine byte-identical to 3.1.0's — its major marks the SDK-topology break,
128
+ * not a contract change (DR-020) — so all five select `composed-v2`.
129
+ */
130
+ export declare function historicalRuntimeContract(provenance: string | undefined): 'legacy' | 'composed-v2' | undefined;
131
+ /**
132
+ * Selects the runtime contract profile a current pin runs under
133
+ * (phase-execution-30; DR-010, DR-028). The historical exact maps decide
134
+ * `legacy` and `composed-v2`; every other provenance selects `composed-v3`
135
+ * exactly when the pin's link target resolves inside an installed
136
+ * `@sublang/playbook` whose engine declares `RUNTIME_ABI` `1` and
137
+ * `SUPPORTED_ARTIFACT_SCHEMAS` containing `3`, whatever its release version.
138
+ *
139
+ * @throws naming the declaration — or its absence — when the link target
140
+ * lies outside such a package, its engine cannot be read, or it declares
141
+ * another ABI or no schema 3; no profile is inferred from callable members
142
+ * and no other profile is retried.
143
+ */
144
+ export declare function runtimeContractForPin(choice: CompiledSelection): Promise<RuntimeContractProfile>;
92
145
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,yDAKnB,CAAC;AAEX,mDAAmD;AACnD,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,YAAY,CAAC;AAErE,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,EAAE,cAWnC,CAAC;AAEF,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,cAAc,CAAC;IACtB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;CAC7C;AAED,wEAAwE;AACxE,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,mBAAmB,GACnB,oBAAoB,GACpB,sBAAsB,GACtB,4BAA4B,GAC5B,6BAA6B,CAAC;AAElC,qEAAqE;AACrE,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;gBAEnB,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM;CAKnD;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEvE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC,cAAc,CAuBhB;AA6CD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,cAAc,EACzB,IAAI,GAAE;IACJ,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;CACpB,GACL,aAAa,CAOf;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,cAAc,EACzB,IAAI,GAAE;IACJ,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;CACpB,GACL,WAAW,CAWb;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,cAAc,EACzB,IAAI,GAAE;IACJ,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,GACL,CAAC,MAAM,EAAE,iBAAiB,KAAK,aAAa,CAiB9C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,38 +1,40 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  // SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
3
3
  /**
4
- * Agent/model configuration and executor construction for the `slc` bin (CLI-7,
5
- * CLI-8, CLI-12, DR-004, DR-005).
4
+ * Agent/model configuration and executor construction for the `slc` bin (cli-7,
5
+ * cli-8, cli-12, DR-004, DR-005).
6
6
  *
7
7
  * `resolveAgentSelection` reads the Coder and optional Reviewer selections from
8
- * the environment and refuses unset or unsupported required values (CLI-12,
8
+ * the environment and refuses unset or unsupported required values (cli-12,
9
9
  * DR-022).
10
10
  * `createConfiguredExecutor` builds the interpreted executor and
11
11
  * `createConfiguredCompiledFactory` the compiled-execution factory pinned phases
12
12
  * select, both over Cligent-backed transports for the selected agent, binding
13
- * the optional model as configuration — not phase semantics (PHEXEC-13);
13
+ * the optional model as configuration — not phase semantics (phase-execution-13);
14
14
  * credentials are left for the agent CLI to read from the inherited process
15
15
  * environment. The adapter factory is injectable so tests can fake adapter
16
- * construction. See specs/dev/cli.md.
16
+ * construction. See specs/packages/cli.md.
17
17
  */
18
18
  import { resolve } from 'node:path';
19
19
  import { ClaudeCodeAdapter } from '@sublang/cligent/adapters/claude-code';
20
20
  import { CodexAdapter } from '@sublang/cligent/adapters/codex';
21
21
  import { GeminiAdapter } from '@sublang/cligent/adapters/gemini';
22
22
  import { OpenCodeAdapter } from '@sublang/cligent/adapters/opencode';
23
- import { isEffortSupported, supportedEffortValues } from '@sublang/cligent';
23
+ import { assertFastModeSupported, isEffortSupported, supportedEffortValues, } from '@sublang/cligent';
24
24
  import { createCligentAgent } from './cligent-agent.js';
25
25
  import { createCompiledExecutor } from './compiled-executor.js';
26
+ import { messageOf } from './errors.js';
26
27
  import { createInterpretedExecutor } from './interpreter.js';
27
28
  import { createReviewingAgent } from './reviewing-agent.js';
28
- /** Agent CLI ids the executable registers (CLI-7). */
29
+ import { declaresComposedV3, describeRuntimeDeclaration, PLAYBOOK_PACKAGE, readPlaybookRuntimeDeclaration, } from './runtime-contract.js';
30
+ /** Agent CLI ids the executable registers (cli-7). */
29
31
  export const SUPPORTED_AGENTS = [
30
32
  'claude-code',
31
33
  'codex',
32
34
  'gemini',
33
35
  'opencode',
34
36
  ];
35
- /** Default factory: Cligent's built-in adapters, constructed on demand (CLI-7). */
37
+ /** Default factory: Cligent's built-in adapters, constructed on demand (cli-7). */
36
38
  export const defaultAdapterFactory = (agent) => {
37
39
  switch (agent) {
38
40
  case 'claude-code':
@@ -54,30 +56,38 @@ export class ConfigError extends Error {
54
56
  this.code = code;
55
57
  }
56
58
  }
57
- /** Reports whether `agent` is one of the registered ids (CLI-7). */
59
+ /** Reports whether `agent` is one of the registered ids (cli-7). */
58
60
  export function isSupportedAgent(agent) {
59
61
  return SUPPORTED_AGENTS.includes(agent);
60
62
  }
61
63
  /**
62
64
  * Resolves the Coder and optional Reviewer selections from environment configuration
63
- * (CLI-7, CLI-12): `SLC_AGENT` names a registered agent CLI, `SLC_MODEL`
64
- * optionally names a model, and `SLC_EFFORT` optionally selects an
65
+ * (cli-7, cli-12): `SLC_AGENT` names a registered agent CLI, `SLC_MODEL`
66
+ * optionally names a model, `SLC_EFFORT` optionally selects an
65
67
  * adapter-scoped reasoning effort validated against Cligent's support
66
- * metadata.
68
+ * metadata, and `SLC_FAST_MODE` — exactly `true` or `false` — optionally
69
+ * requests adapter-scoped fast mode, accepted or refused by Cligent's
70
+ * fast-mode capability contract before any agent call.
67
71
  *
68
72
  * @throws {ConfigError} when `SLC_AGENT` is unset/blank (`agent-unset`) or
69
- * outside the registered set (`agent-unsupported`), or when `SLC_EFFORT`
73
+ * outside the registered set (`agent-unsupported`), when `SLC_EFFORT`
70
74
  * names a value the selected agent does not support
71
- * (`effort-unsupported`); no implicit default agent is applied.
75
+ * (`effort-unsupported`), when `SLC_FAST_MODE` is neither `true` nor
76
+ * `false` (`fast-mode-invalid`), or when it is set for an agent Cligent
77
+ * reports without fast-mode request support (`fast-mode-unsupported`); no
78
+ * implicit default agent is applied.
72
79
  */
73
80
  export function resolveAgentSelection(env) {
74
81
  const selection = resolveOneSelection(env, {
75
82
  agent: 'SLC_AGENT',
76
83
  model: 'SLC_MODEL',
77
84
  effort: 'SLC_EFFORT',
85
+ fastMode: 'SLC_FAST_MODE',
78
86
  unsetCode: 'agent-unset',
79
87
  unsupportedCode: 'agent-unsupported',
80
88
  effortCode: 'effort-unsupported',
89
+ fastModeInvalidCode: 'fast-mode-invalid',
90
+ fastModeCode: 'fast-mode-unsupported',
81
91
  required: true,
82
92
  });
83
93
  if (selection === undefined) {
@@ -87,9 +97,12 @@ export function resolveAgentSelection(env) {
87
97
  agent: 'SLC_REVIEWER_AGENT',
88
98
  model: 'SLC_REVIEWER_MODEL',
89
99
  effort: 'SLC_REVIEWER_EFFORT',
100
+ fastMode: 'SLC_REVIEWER_FAST_MODE',
90
101
  unsetCode: 'reviewer-agent-unset',
91
102
  unsupportedCode: 'reviewer-agent-unsupported',
92
103
  effortCode: 'reviewer-effort-unsupported',
104
+ fastModeInvalidCode: 'reviewer-fast-mode-invalid',
105
+ fastModeCode: 'reviewer-fast-mode-unsupported',
93
106
  required: false,
94
107
  });
95
108
  return reviewer === undefined ? selection : { ...selection, reviewer };
@@ -98,12 +111,14 @@ function resolveOneSelection(env, names) {
98
111
  const agent = (env[names.agent] ?? '').trim();
99
112
  const model = (env[names.model] ?? '').trim();
100
113
  const effort = (env[names.effort] ?? '').trim();
114
+ const fastMode = (env[names.fastMode] ?? '').trim();
101
115
  if (agent === '') {
102
- if (!names.required && model === '' && effort === '')
116
+ if (!names.required && model === '' && effort === '' && fastMode === '') {
103
117
  return undefined;
118
+ }
104
119
  throw new ConfigError(names.unsetCode, names.required
105
120
  ? `${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(', ')}`);
121
+ : `${names.agent} is not set; ${names.model}, ${names.effort}, and ${names.fastMode} require a reviewer agent; set ${names.agent} to one of: ${SUPPORTED_AGENTS.join(', ')}`);
107
122
  }
108
123
  if (!isSupportedAgent(agent)) {
109
124
  throw new ConfigError(names.unsupportedCode, `${names.agent} "${agent}" is not a supported agent CLI; choose one of: ${SUPPORTED_AGENTS.join(', ')}`);
@@ -111,17 +126,31 @@ function resolveOneSelection(env, names) {
111
126
  if (effort !== '' && !isEffortSupported(agent, effort)) {
112
127
  throw new ConfigError(names.effortCode, `${names.effort} "${effort}" is not supported by ${agent}; choose one of: ${(supportedEffortValues(agent) ?? []).join(', ')}`);
113
128
  }
129
+ if (fastMode !== '' && fastMode !== 'true' && fastMode !== 'false') {
130
+ throw new ConfigError(names.fastModeInvalidCode, `${names.fastMode} "${fastMode}" must be exactly true or false`);
131
+ }
132
+ if (fastMode !== '') {
133
+ // Cligent owns adapter capability: a literal request — `false` included —
134
+ // is accepted or refused by its contract, naming the adapter (cli-7).
135
+ try {
136
+ assertFastModeSupported(agent, names.fastMode);
137
+ }
138
+ catch (error) {
139
+ throw new ConfigError(names.fastModeCode, messageOf(error));
140
+ }
141
+ }
114
142
  return {
115
143
  agent,
116
144
  model: model === '' ? undefined : model,
117
145
  effort: effort === '' ? undefined : effort,
146
+ fastMode: fastMode === '' ? undefined : fastMode === 'true',
118
147
  };
119
148
  }
120
149
  /**
121
- * Builds the interpreted {@link PhaseExecutor} for a selection (CLI-7, CLI-8):
150
+ * Builds the interpreted {@link PhaseExecutor} for a selection (cli-7, cli-8):
122
151
  * constructs the agent CLI's adapter, wraps it as a Cligent-backed transport,
123
152
  * and binds the optional model as configuration, not phase semantics
124
- * (PHEXEC-13). The adapter factory is injectable so tests can fake adapter
153
+ * (phase-execution-13). The adapter factory is injectable so tests can fake adapter
125
154
  * construction; `permissions` is where a host configures the DR-003 write-scope
126
155
  * sandbox.
127
156
  */
@@ -134,7 +163,7 @@ export function createConfiguredExecutor(selection, opts = {}) {
134
163
  });
135
164
  }
136
165
  /**
137
- * Builds one Cligent-backed {@link AgentClient} for a selection (CLI-7): a fresh
166
+ * Builds one Cligent-backed {@link AgentClient} for a selection (cli-7): a fresh
138
167
  * adapter wrapped as a transport. Each client is a single-flight Cligent
139
168
  * instance that resumes its own agent session across calls, so callers wanting
140
169
  * isolated sessions construct one client per role or player.
@@ -146,33 +175,42 @@ export function createConfiguredAgentClient(selection, opts = {}) {
146
175
  maxTurns: opts.maxTurns,
147
176
  permissions: opts.permissions,
148
177
  effort: selection.effort,
178
+ fastMode: selection.fastMode,
149
179
  stallTimeoutMs: opts.stallTimeoutMs,
150
180
  });
151
181
  }
152
182
  /**
153
183
  * Builds the compiled-execution factory the bin injects as `SlcDeps.compiled`
154
- * (CLI-8, PHEXEC-27): for a current pinned phase it drives the pinned `playbook`
155
- * artifact resolved against its pipeline directory — through the compiled
156
- * executor, backing the runtime's player ports with one agent transport per
157
- * player id and its Captain/judge ports with one shared transport (PHEXEC-25),
158
- * and applying the selected model as the default per-player model (PHEXEC-13).
184
+ * (cli-8, phase-execution-27): for a current pinned phase it selects the
185
+ * runtime contract profile ({@link runtimeContractForPin}) and drives the
186
+ * pinned `playbook` artifact resolved against its pipeline directory
187
+ * through the compiled executor, backing the runtime's player ports with one
188
+ * agent transport per player id and its Captain/judge ports with one shared
189
+ * transport; the roleless composed-v3 path rejects its player port before that
190
+ * lazy player transport is constructed (phase-execution-25). The factory
191
+ * applies the selected model as the default per-player model
192
+ * (phase-execution-13). A rejected selection rejects the returned promise
193
+ * before any artifact loads or transport is built (phase-execution-30).
159
194
  */
160
195
  export function createConfiguredCompiledFactory(selection, opts = {}) {
161
196
  const client = () => {
162
197
  const coder = createConfiguredAgentClient(selection, opts);
163
198
  return configuredReviewingClient(selection, coder, opts);
164
199
  };
165
- return (choice) => createCompiledExecutor({
166
- artifactPath: resolve(choice.pipelineDir, choice.record.artifact.path),
167
- runRoot: opts.cwd ?? process.cwd(),
168
- playbookId: choice.phase,
169
- runtimeContract: runtimeContractForPin(choice),
170
- player: () => client(),
171
- judge: client(),
172
- defaultModel: selection.model,
173
- cwd: opts.cwd,
174
- onStatus: opts.onStatus,
175
- });
200
+ return async (choice) => {
201
+ const runtimeContract = await runtimeContractForPin(choice);
202
+ return createCompiledExecutor({
203
+ artifactPath: resolve(choice.pipelineDir, choice.record.artifact.path),
204
+ runRoot: opts.cwd ?? process.cwd(),
205
+ playbookId: choice.phase,
206
+ runtimeContract,
207
+ player: () => client(),
208
+ judge: client(),
209
+ defaultModel: selection.model,
210
+ cwd: opts.cwd,
211
+ onStatus: opts.onStatus,
212
+ });
213
+ };
176
214
  }
177
215
  function configuredReviewingClient(selection, coder, opts) {
178
216
  const reviewer = selection.reviewer;
@@ -193,25 +231,26 @@ function configuredReviewingClient(selection, coder, opts) {
193
231
  reviewerModel: reviewer.model,
194
232
  });
195
233
  }
196
- function runtimeContractForPin(choice) {
197
- const provenance = choice.record.linkTarget.provenance;
234
+ /**
235
+ * The exact historical provenance maps, retained as recorded (DR-028):
236
+ * absent or Playbook 0.9.0 provenance is the `legacy` contract, and the
237
+ * reviewed six-port generation is `composed-v2`. Every other provenance is
238
+ * decided by the installed engine's declaration instead.
239
+ *
240
+ * Playbook 0.10 ships the composed six-port contract (DR-011); 1.0.0 is the
241
+ * published release of that same generation — 0.10.0 was cut locally and
242
+ * superseded before it reached the registry. 2.0.0 keeps the six-port
243
+ * boundary and structured results while moving Captain host failures onto
244
+ * the resolved `failed` path and emitting thin linked modules (DR-017).
245
+ * 3.1.0 ships runtime.ts byte-identical to 2.0.0 and only adds the additive
246
+ * DR-022 compat self-report (DR-018), and 4.0.0 keeps runtime.ts and the
247
+ * engine byte-identical to 3.1.0's — its major marks the SDK-topology break,
248
+ * not a contract change (DR-020) — so all five select `composed-v2`.
249
+ */
250
+ export function historicalRuntimeContract(provenance) {
198
251
  if (provenance === undefined || provenance === '@sublang/playbook@0.9.0') {
199
252
  return 'legacy';
200
253
  }
201
- // Playbook 0.10 ships the composed six-port contract (DR-011); artifacts
202
- // linked against it run through the composed session profile. 1.0.0 is the
203
- // published release of that same contract generation — 0.10.0 was cut
204
- // locally and superseded before it ever reached the registry. 2.0.0 keeps
205
- // the six-port boundary and structured results while moving Captain host
206
- // failures onto the resolved `failed` path and emitting thin linked
207
- // modules (DR-017), so all three provenances select the composed profile.
208
- // 3.1.0 ships runtime.ts byte-identical to 2.0.0 and only adds the
209
- // additive DR-022 compat self-report on the shared engine, so it selects
210
- // the same profile (DR-018). 4.0.0 keeps runtime.ts and the engine
211
- // byte-identical to 3.1.0's — its major marks the SDK-topology break,
212
- // with cligent owning runtime versions, not a contract change — so it
213
- // selects the same profile (DR-020). 1.3.0 and 3.0.0 were never
214
- // installed or reviewed here and stay fail-closed.
215
254
  if (provenance === '@sublang/playbook@0.10.0' ||
216
255
  provenance === '@sublang/playbook@1.0.0' ||
217
256
  provenance === '@sublang/playbook@2.0.0' ||
@@ -219,6 +258,43 @@ function runtimeContractForPin(choice) {
219
258
  provenance === '@sublang/playbook@4.0.0') {
220
259
  return 'composed-v2';
221
260
  }
222
- throw new Error(`unsupported pinned Playbook runtime contract: ${provenance}`);
261
+ return undefined;
262
+ }
263
+ /**
264
+ * Selects the runtime contract profile a current pin runs under
265
+ * (phase-execution-30; DR-010, DR-028). The historical exact maps decide
266
+ * `legacy` and `composed-v2`; every other provenance selects `composed-v3`
267
+ * exactly when the pin's link target resolves inside an installed
268
+ * `@sublang/playbook` whose engine declares `RUNTIME_ABI` `1` and
269
+ * `SUPPORTED_ARTIFACT_SCHEMAS` containing `3`, whatever its release version.
270
+ *
271
+ * @throws naming the declaration — or its absence — when the link target
272
+ * lies outside such a package, its engine cannot be read, or it declares
273
+ * another ABI or no schema 3; no profile is inferred from callable members
274
+ * and no other profile is retried.
275
+ */
276
+ export async function runtimeContractForPin(choice) {
277
+ const provenance = choice.record.linkTarget.provenance;
278
+ const historical = historicalRuntimeContract(provenance);
279
+ if (historical !== undefined)
280
+ return historical;
281
+ const locator = choice.record.linkTarget.locator;
282
+ const reject = (reason) => {
283
+ throw new Error(`unsupported pinned Playbook runtime contract: ${provenance} (${reason})`);
284
+ };
285
+ let declaration;
286
+ try {
287
+ declaration = await readPlaybookRuntimeDeclaration(resolve(choice.pipelineDir, locator));
288
+ }
289
+ catch (error) {
290
+ return reject(messageOf(error));
291
+ }
292
+ if (declaration === undefined) {
293
+ return reject(`link target ${locator} is not inside an installed ${PLAYBOOK_PACKAGE} package`);
294
+ }
295
+ if (!declaresComposedV3(declaration)) {
296
+ return reject(`${describeRuntimeDeclaration(declaration)}; composed-v3 requires RUNTIME_ABI 1 and artifact schema 3`);
297
+ }
298
+ return 'composed-v3';
223
299
  }
224
300
  //# sourceMappingURL=config.js.map
@@ -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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"}
@@ -1,3 +1,17 @@
1
+ /** One deterministic extension correction applied to an emitted import. */
2
+ export interface ImportSpecifierRewrite {
3
+ from: string;
4
+ to: string;
5
+ }
6
+ /**
7
+ * Settles relative `.js`/`.ts` imports of the link's object artifacts from the
8
+ * files that actually exist beside an emitted module. A materialized
9
+ * JavaScript sibling wins; otherwise the declared TypeScript object's sibling
10
+ * is used when present. Unrelated imports and object specifiers with neither
11
+ * sibling are left for
12
+ * {@link unresolvableRelativeImports} to reject.
13
+ */
14
+ export declare function reconcileLinkObjectImportSpecifiers(modulePath: string, objectPaths: readonly string[]): Promise<ImportSpecifierRewrite[]>;
1
15
  /**
2
16
  * The relative import specifiers of a `.ts`/`.js` module that do not resolve
3
17
  * to an existing file from the module's own directory, in source order.
@@ -1 +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"}
1
+ {"version":3,"file":"emitted-imports.d.ts","sourceRoot":"","sources":["../src/emitted-imports.ts"],"names":[],"mappings":"AAuBA,2EAA2E;AAC3E,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAKD;;;;;;;GAOG;AACH,wBAAsB,mCAAmC,CACvD,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA8CnC;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB"}
@@ -1,19 +1,75 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  // SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
3
3
  /**
4
- * Deterministic load-integrity check for emitted modules (VERIFY-18).
4
+ * Deterministic link-object import settlement and load-integrity checks for
5
+ * emitted modules (pipeline-40, verification-18).
5
6
  *
6
7
  * A linked artifact is code whose relative imports Node resolves with exact
7
8
  * 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.
9
+ * agent-performed link can emit the wrong extension for its object import. The
10
+ * host settles that exact edge mechanically against a `.js` or `.ts` sibling
11
+ * that currently exists, then requires every relative specifier to name an
12
+ * existing file beside it. A genuinely unloadable module still fails before
13
+ * the first `playbook run`.
12
14
  */
13
- import { existsSync } from 'node:fs';
14
- import { readFile } from 'node:fs/promises';
15
+ import { existsSync, statSync } from 'node:fs';
16
+ import { readFile, writeFile } from 'node:fs/promises';
15
17
  import { dirname, resolve } from 'node:path';
16
18
  const IMPORT_SPECIFIER = /\bfrom\s+(['"])([^'"\n]+)\1|\bimport\s*\(\s*(['"])([^'"\n]+)\3\s*\)|\bimport\s+(['"])([^'"\n]+)\5/g;
19
+ const isRegularFile = (path) => statSync(path, { throwIfNoEntry: false })?.isFile() ?? false;
20
+ /**
21
+ * Settles relative `.js`/`.ts` imports of the link's object artifacts from the
22
+ * files that actually exist beside an emitted module. A materialized
23
+ * JavaScript sibling wins; otherwise the declared TypeScript object's sibling
24
+ * is used when present. Unrelated imports and object specifiers with neither
25
+ * sibling are left for
26
+ * {@link unresolvableRelativeImports} to reject.
27
+ */
28
+ export async function reconcileLinkObjectImportSpecifiers(modulePath, objectPaths) {
29
+ const source = await readFile(modulePath, 'utf8');
30
+ const dir = dirname(modulePath);
31
+ const emittedPath = resolve(modulePath);
32
+ const objectStems = new Set(objectPaths
33
+ .map((path) => resolve(path))
34
+ .filter((path) => path.endsWith('.js') || path.endsWith('.ts'))
35
+ .map((path) => path.slice(0, -3)));
36
+ const rewrites = [];
37
+ let cursor = 0;
38
+ let reconciled = '';
39
+ for (const match of source.matchAll(IMPORT_SPECIFIER)) {
40
+ const specifier = match[2] ?? match[4] ?? match[6];
41
+ if (specifier === undefined || match.index === undefined)
42
+ continue;
43
+ if (!specifier.startsWith('./') && !specifier.startsWith('../'))
44
+ continue;
45
+ if (!specifier.endsWith('.js') && !specifier.endsWith('.ts'))
46
+ continue;
47
+ const stem = specifier.slice(0, -3);
48
+ if (!objectStems.has(resolve(dir, stem)))
49
+ continue;
50
+ const jsSpecifier = `${stem}.js`;
51
+ const tsSpecifier = `${stem}.ts`;
52
+ const jsPath = resolve(dir, jsSpecifier);
53
+ const tsPath = resolve(dir, tsSpecifier);
54
+ const preferred = jsPath !== emittedPath && isRegularFile(jsPath)
55
+ ? jsSpecifier
56
+ : tsPath !== emittedPath && isRegularFile(tsPath)
57
+ ? tsSpecifier
58
+ : specifier;
59
+ if (preferred === specifier)
60
+ continue;
61
+ const specifierIndex = match[0].indexOf(specifier);
62
+ const start = match.index + specifierIndex;
63
+ reconciled += source.slice(cursor, start) + preferred;
64
+ cursor = start + specifier.length;
65
+ rewrites.push({ from: specifier, to: preferred });
66
+ }
67
+ if (rewrites.length > 0) {
68
+ reconciled += source.slice(cursor);
69
+ await writeFile(modulePath, reconciled, 'utf8');
70
+ }
71
+ return rewrites;
72
+ }
17
73
  /**
18
74
  * The relative import specifiers of a `.ts`/`.js` module that do not resolve
19
75
  * to an existing file from the module's own directory, in source order.