@orkestrel/scaffold 0.0.7 → 0.0.9

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.
@@ -68,7 +68,7 @@ export declare function applicationArtifacts(spec: Blueprint): readonly Artifact
68
68
  *
69
69
  * @param src - Published src environments.
70
70
  * @param app - Private app environments.
71
- * @param engine - Whether the workspace also builds scaffold's executable.
71
+ * @param axes - Optional executable, integration, and service project axes.
72
72
  * @returns The root `vite.config.ts` content.
73
73
  *
74
74
  * @example
@@ -76,7 +76,7 @@ export declare function applicationArtifacts(spec: Blueprint): readonly Artifact
76
76
  * applicationViteConfig([], ['core', 'server']).includes('appServer') // true
77
77
  * ```
78
78
  */
79
- export declare function applicationViteConfig(src: readonly Environment[], app: readonly Environment[], engine?: boolean): string;
79
+ export declare function applicationViteConfig(src: readonly Environment[], app: readonly Environment[], axes?: ViteAxes): string;
80
80
 
81
81
  /**
82
82
  * Apply a blueprint's `overrides` over a drafted artifact list — an override
@@ -195,6 +195,45 @@ export declare function auditToReview(audit: Audit): string;
195
195
  /** Tooling versions shared by scaffold and every generated workspace. */
196
196
  export declare const BASE_DEV_DEPENDENCIES: Readonly<Record<string, string>>;
197
197
 
198
+ /** The computed configuration files required by a workspace-owned executable. */
199
+ export declare const BIN_CONFIGS: readonly string[];
200
+
201
+ /**
202
+ * Build the executable's declaration-only `configs/src/tsconfig.bin.json`.
203
+ *
204
+ * @returns The executable `tsconfig` file content, newline-terminated.
205
+ *
206
+ * @example
207
+ * ```ts
208
+ * binTsconfig().includes('"outDir": "../../dist/bin"') // true
209
+ * ```
210
+ */
211
+ export declare function binTsconfig(): string;
212
+
213
+ /**
214
+ * Build the executable's `configs/src/vite.bin.config.ts` wrapper.
215
+ *
216
+ * @returns The executable Vite configuration content, newline-terminated.
217
+ *
218
+ * @example
219
+ * ```ts
220
+ * binViteConfig().includes("banner: '#!/usr/bin/env node'") // true
221
+ * ```
222
+ */
223
+ export declare function binViteConfig(): string;
224
+
225
+ /**
226
+ * Build the executable's dedicated Node-only build and test project.
227
+ *
228
+ * @returns The emitted `srcBin` project definition.
229
+ *
230
+ * @example
231
+ * ```ts
232
+ * binViteProject().includes("label: 'src:bin'") // true
233
+ * ```
234
+ */
235
+ export declare function binViteProject(): string;
236
+
198
237
  /** The closed, JSON-serializable source/application workspace spec. */
199
238
  export declare interface Blueprint {
200
239
  readonly name: string;
@@ -212,8 +251,12 @@ export declare interface Blueprint {
212
251
  readonly version: string;
213
252
  readonly engines: string;
214
253
  readonly overrides: readonly Override[];
215
- /** Structural: `true` only for a repo that ships its own `src/bin` — the self-hosting tax (a `bin` field, the `scaffold` script invoking `dist/bin/scaffold.js` directly, the `check/test/build:src:bin` scripts, `build:host`, the `srcBin` vite project) applies ONLY when `true`, never by name. */
216
- readonly engine: boolean;
254
+ /** Structural: `true` only for a repo that ships its own `src/bin` — the self-hosting tax (the manifest's `bin` entry, the `scaffold` script invoking `dist/bin/scaffold.js` directly, the `check/test/build:src:bin` scripts, `build:host`, the `srcBin` vite project) applies ONLY when `true`, never by name. */
255
+ readonly bin: boolean;
256
+ /** Structural: `true` only for a repo that ships `tests/integration` — a slow, opt-in proof project over the repo's own built output, outside the default run, never by name. */
257
+ readonly integration: boolean;
258
+ /** Structural: `true` only for a repo that ships `tests/service` — a slow, opt-in proof project against a foreign running process, outside the default run, never by name. Derivation requires `tests/setupService.ts` and `scripts/service.sh` beside it and fails `TARGET` otherwise. */
259
+ readonly service: boolean;
217
260
  }
218
261
 
219
262
  /**
@@ -224,9 +267,9 @@ export declare interface Blueprint {
224
267
  * @remarks
225
268
  * `version` / `engines` default `DEFAULT_VERSION` / `DEFAULT_ENGINES`,
226
269
  * `src` defaults `['core']`, and `app` / `keywords` / `dependencies` /
227
- * `peers` / `extras` / `overrides` default `[]`. `description` is OMITTED
228
- * entirely when absent, so the result round-trips the exact-record
229
- * `Blueprint` guard.
270
+ * `peers` / `extras` / `overrides` default `[]`, and `bin` / `integration` /
271
+ * `service` default `false`. `description` is OMITTED entirely when absent, so
272
+ * the result round-trips the exact-record `Blueprint` guard.
230
273
  * @returns A complete `Blueprint`.
231
274
  *
232
275
  * @example
@@ -280,7 +323,9 @@ export declare function blueprintShape(): ObjectShape<{
280
323
  path: StringShape;
281
324
  content: StringShape;
282
325
  }, false>>;
283
- engine: BooleanShape;
326
+ bin: BooleanShape;
327
+ integration: BooleanShape;
328
+ service: BooleanShape;
284
329
  }, false>;
285
330
 
286
331
  /**
@@ -405,7 +450,7 @@ export declare type Category = 'type' | 'alias' | 'constant' | 'factory' | 'enti
405
450
  export declare const CHECKOUT_ACTION_SHA = "de0fac2e4500dabe0009e67214ff5f5447ce83dd";
406
451
 
407
452
  /**
408
- * Build selection-aware GitHub CI without external service dependencies.
453
+ * Build selection-aware GitHub CI, provisioning the declared foreign service before its proof.
409
454
  *
410
455
  * @param spec - The workspace blueprint.
411
456
  * @returns The complete `.github/workflows/ci.yml` content.
@@ -806,21 +851,19 @@ export declare function coreViteConfig(browser?: boolean): string;
806
851
  }, false>;
807
852
 
808
853
  /**
809
- * The host-neutral devDependency baseline every generated workspace needs.
810
- * Browser providers are added only by browser selections or the scaffold
811
- * engine's generated-browser consumer proof. A package's `extras` (code-unit
812
- * sorted) merge in on top, the extras' declared range winning on a name
813
- * collision with the baseline.
854
+ * The complete development dependency set one blueprint emits. The shared
855
+ * baseline is extended by package extras, dev-installed peers, selected
856
+ * browser environments, and the bin axis's browser test provider.
814
857
  *
815
- * @param extras - The blueprint's package-specific `extras` `Dependency[]`.
858
+ * @param spec - The blueprint whose development dependencies are required.
816
859
  * @returns The merged `devDependencies` record.
817
860
  *
818
861
  * @example
819
862
  * ```ts
820
- * devDependenciesFor([])['typescript'] // '^6.0.3'
863
+ * devDependenciesFor(blueprint('router'))['typescript'] // '^6.0.3'
821
864
  * ```
822
865
  */
823
- export declare function devDependenciesFor(extras: readonly Dependency[]): Readonly<Record<string, string>>;
866
+ export declare function devDependenciesFor(spec: Blueprint): Readonly<Record<string, string>>;
824
867
 
825
868
  /**
826
869
  * Diff a plan's artifacts against a target's current content.
@@ -1085,6 +1128,18 @@ export declare function coreViteConfig(browser?: boolean): string;
1085
1128
  */
1086
1129
  export declare function guideMethods(spec: Blueprint): string;
1087
1130
 
1131
+ /**
1132
+ * Build the standalone Node-only guide-parity Vitest project.
1133
+ *
1134
+ * @returns The emitted `guides` project definition.
1135
+ *
1136
+ * @example
1137
+ * ```ts
1138
+ * guidesViteProject().includes("label: 'guides'") // true
1139
+ * ```
1140
+ */
1141
+ export declare function guidesViteProject(): string;
1142
+
1088
1143
  /**
1089
1144
  * One dependency guide fetched from upstream at its `path`, plus its
1090
1145
  * `freshness` verdict against the local mirror.
@@ -1189,7 +1244,7 @@ export declare function coreViteConfig(browser?: boolean): string;
1189
1244
  * `scripts/codex.sh` / `scripts/ollama.sh`), the repository coding-law policy module,
1190
1245
  * the line's seven byte-identical root dotfiles, and the two guides-grouped
1191
1246
  * mirror candidates: the line-wide dev-tooling guide
1192
- * (`guides/src/guide.md`) and the scaffold engine's own self-guide
1247
+ * (`guides/src/guide.md`) and the scaffold bin's own self-guide
1193
1248
  * (`guides/src/scaffold.md`). `stageHost` vendors both; each plan carries the
1194
1249
  * subset selected by `selectHostPaths`, omitting the target blueprint's own
1195
1250
  * guide.
@@ -1245,6 +1300,21 @@ export declare function coreViteConfig(browser?: boolean): string;
1245
1300
  */
1246
1301
  export declare function inferGroup(path: string): Group;
1247
1302
 
1303
+ /**
1304
+ * Build the standalone Node-only installed-consumer integration proof project.
1305
+ *
1306
+ * @param axes - Optional executable and integration axes controlling the shared registry setup.
1307
+ * @returns The emitted `integration` project definition.
1308
+ *
1309
+ * @example
1310
+ * ```ts
1311
+ * integrationViteProject({ bin: true, integration: true }).includes(
1312
+ * "globalSetup: ['./tests/setupIntegration.ts']",
1313
+ * ) // true
1314
+ * ```
1315
+ */
1316
+ export declare function integrationViteProject(axes?: ViteAxes): string;
1317
+
1248
1318
  /** Visible characters forbidden by portable paths and Markdown path cells. */
1249
1319
  export declare const INVALID_PATH_CHARACTER_PATTERN: RegExp;
1250
1320
 
@@ -1953,7 +2023,9 @@ export declare function coreViteConfig(browser?: boolean): string;
1953
2023
  path: StringShape;
1954
2024
  content: StringShape;
1955
2025
  }, false>>;
1956
- engine: BooleanShape;
2026
+ bin: BooleanShape;
2027
+ integration: BooleanShape;
2028
+ service: BooleanShape;
1957
2029
  }, false>;
1958
2030
  groups: ArrayShape<LiteralShape<readonly Group[]>>;
1959
2031
  artifacts: ArrayShape<UnionShape<readonly [ ObjectShape<{
@@ -2016,7 +2088,16 @@ export declare function coreViteConfig(browser?: boolean): string;
2016
2088
  */
2017
2089
  export declare function planToSummary(plan: Plan): PlanSummary;
2018
2090
 
2019
- /** Build the dedicated Node-only repository policy Vitest project. */
2091
+ /**
2092
+ * Build the dedicated standalone Node-only repository-policy Vitest project.
2093
+ *
2094
+ * @returns The emitted `policy` project definition.
2095
+ *
2096
+ * @example
2097
+ * ```ts
2098
+ * policyViteProject().includes("label: 'policy'") // true
2099
+ * ```
2100
+ */
2020
2101
  export declare function policyViteProject(): string;
2021
2102
 
2022
2103
  /**
@@ -2144,7 +2225,8 @@ export declare function coreViteConfig(browser?: boolean): string;
2144
2225
  /**
2145
2226
  * The root `vite.config.ts` — three grounded shapes, chosen by a blueprint's
2146
2227
  * `src`:
2147
- * 1. `core`-only — `srcCore` + `guides`, no Playwright at all (the live
2228
+ * 1. `core`-only — `srcCore` + standalone policy/guides proof projects, no
2229
+ * Playwright at all (the live
2148
2230
  * timeout exemplar: no browser project exists anywhere in the file).
2149
2231
  * 2. Multi-environment (2+ src, always including `core` per the live
2150
2232
  * middleware/router exemplars) — `srcCore` is the shared base;
@@ -2159,10 +2241,9 @@ export declare function coreViteConfig(browser?: boolean): string;
2159
2241
  * environment is `browser` (it must run its own tests in a real browser).
2160
2242
  *
2161
2243
  * @param src - The declared `Environment[]`.
2162
- * @param engine - Structural: `true` appends the `srcBin` project (an
2163
- * executable build target, never a barrel) after the other declared
2164
- * projects the self-hosting tax, grounded against this very repo's own
2165
- * checked-in `vite.config.ts`.
2244
+ * @param axes - Optional structural project axes. `bin` appends the standalone
2245
+ * executable build-and-test project; `integration` and `service` append their
2246
+ * standalone proof projects.
2166
2247
  * @returns The root `vite.config.ts` file content, newline-terminated.
2167
2248
  *
2168
2249
  * @example
@@ -2170,10 +2251,10 @@ export declare function coreViteConfig(browser?: boolean): string;
2170
2251
  * rootViteConfig(['core']).includes('srcCore') // true
2171
2252
  * ```
2172
2253
  */
2173
- export declare function rootViteConfig(src: readonly Environment[], engine?: boolean): string;
2254
+ export declare function rootViteConfig(src: readonly Environment[], axes?: ViteAxes): string;
2174
2255
 
2175
2256
  /** The devDependency range generated packages pin `@orkestrel/scaffold` at. */
2176
- export declare const SCAFFOLD_RANGE = "^0.0.7";
2257
+ export declare const SCAFFOLD_RANGE = "^0.0.8";
2177
2258
 
2178
2259
  /**
2179
2260
  * Carries a `ScaffoldErrorCode` + optional `context` (AGENTS §12).
@@ -2245,6 +2326,21 @@ export declare function coreViteConfig(browser?: boolean): string;
2245
2326
  */
2246
2327
  export declare function serializeTypeScriptString(value: string): string;
2247
2328
 
2329
+ /** The consumer-owned live-service provisioner expected only by service workspaces. */
2330
+ export declare const SERVICE_SCRIPT_PATH = "scripts/service.sh";
2331
+
2332
+ /**
2333
+ * Build the standalone Node-only live-service proof project.
2334
+ *
2335
+ * @returns The emitted `service` project definition.
2336
+ *
2337
+ * @example
2338
+ * ```ts
2339
+ * serviceViteProject().includes("label: 'service'") // true
2340
+ * ```
2341
+ */
2342
+ export declare function serviceViteProject(): string;
2343
+
2248
2344
  /** Immutable official actions/setup-node v6.4.0 commit used by generated CI. */
2249
2345
  export declare const SETUP_NODE_ACTION_SHA = "48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e";
2250
2346
 
@@ -2252,9 +2348,12 @@ export declare function coreViteConfig(browser?: boolean): string;
2252
2348
  * The single non-`core` environment's factory IS the base (Shape 3 of
2253
2349
  * `rootViteConfig`) — the environment's own `viteHeader` (Playwright only when
2254
2350
  * `environment === 'browser'`, per the live sqlite/indexeddb exemplars) prefixes
2255
- * the environment-specific `srcBrowser` / `srcServer` + `guides` projects export.
2351
+ * the environment-specific `srcBrowser` / `srcServer` project, followed by the
2352
+ * standalone policy and guides proof projects and any selected structural-axis
2353
+ * projects.
2256
2354
  *
2257
2355
  * @param environment - The sole declared non-`core` environment.
2356
+ * @param axes - Optional executable, integration, and service project axes.
2258
2357
  * @returns The root `vite.config.ts` file content for a single non-`core` environment, newline-terminated.
2259
2358
  *
2260
2359
  * @example
@@ -2262,7 +2361,7 @@ export declare function coreViteConfig(browser?: boolean): string;
2262
2361
  * singleSrcViteConfig('server').includes('srcServer') // true
2263
2362
  * ```
2264
2363
  */
2265
- export declare function singleSrcViteConfig(environment: 'browser' | 'server'): string;
2364
+ export declare function singleSrcViteConfig(environment: 'browser' | 'server', axes?: ViteAxes): string;
2266
2365
 
2267
2366
  /** Exact lowercase hexadecimal target bytes keyed by artifact-relative path. */
2268
2367
  export declare type Snapshot = Readonly<Record<string, string>>;
@@ -2624,6 +2723,13 @@ export declare function coreViteConfig(browser?: boolean): string;
2624
2723
  readonly note?: string;
2625
2724
  }
2626
2725
 
2726
+ /** Optional structural projects appended to a generated root Vite configuration. */
2727
+ export declare interface ViteAxes {
2728
+ readonly bin?: boolean;
2729
+ readonly integration?: boolean;
2730
+ readonly service?: boolean;
2731
+ }
2732
+
2627
2733
  /**
2628
2734
  * The rendered import / `resolve` header block every `rootViteConfig` shape
2629
2735
  * prefixes — the environment boundary and every guarantee it enforces ship
@@ -2677,7 +2783,7 @@ export declare function coreViteConfig(browser?: boolean): string;
2677
2783
  *
2678
2784
  * @param src - The declared published `Environment[]`.
2679
2785
  * @param app - The declared application `Environment[]`, defaulting to none.
2680
- * @param engine - Whether the workspace also builds its own executable.
2786
+ * @param bin - Whether the workspace also builds its own executable.
2681
2787
  * @returns The machinery set the generated header renders.
2682
2788
  *
2683
2789
  * @example
@@ -2686,7 +2792,20 @@ export declare function coreViteConfig(browser?: boolean): string;
2686
2792
  * viteMachinery([], ['core']) // { browser: false, vue: false, output: false }
2687
2793
  * ```
2688
2794
  */
2689
- export declare function viteMachinery(src: readonly Environment[], app?: readonly Environment[], engine?: boolean): ViteMachinery;
2795
+ export declare function viteMachinery(src: readonly Environment[], app?: readonly Environment[], bin?: boolean): ViteMachinery;
2796
+
2797
+ /**
2798
+ * Render the one ordered proof and structural-axis project definition block.
2799
+ *
2800
+ * @param axes - Optional executable, integration, and service project axes.
2801
+ * @returns Policy, guides, then selected axis project definitions, separated by one blank line.
2802
+ *
2803
+ * @example
2804
+ * ```ts
2805
+ * viteProjectDefinitions({ bin: true }).includes('export const srcBin =') // true
2806
+ * ```
2807
+ */
2808
+ export declare function viteProjectDefinitions(axes?: ViteAxes): string;
2690
2809
 
2691
2810
  /** One generated Vitest project factory and its optional browser-project label. */
2692
2811
  export declare interface ViteProjectRegistration {
@@ -2694,4 +2813,21 @@ export declare function coreViteConfig(browser?: boolean): string;
2694
2813
  readonly browser?: string;
2695
2814
  }
2696
2815
 
2816
+ /**
2817
+ * Derive the one ordered Vitest project registration list shared by every
2818
+ * generated root configuration shape.
2819
+ *
2820
+ * @param src - The declared published environments.
2821
+ * @param app - The declared application environments.
2822
+ * @param axes - Optional executable, integration, and service project axes.
2823
+ * @returns Source projects, application projects, proof projects, then optional axis projects.
2824
+ *
2825
+ * @example
2826
+ * ```ts
2827
+ * viteProjectRegistrations(['core'], [], { integration: true })
2828
+ * // [{ project: 'srcCore' }, { project: 'policy' }, { project: 'guides' }, { project: 'integration' }]
2829
+ * ```
2830
+ */
2831
+ export declare function viteProjectRegistrations(src: readonly Environment[], app?: readonly Environment[], axes?: ViteAxes): readonly ViteProjectRegistration[];
2832
+
2697
2833
  export { }