@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.
- package/dist/bin/scaffold.js +90 -41
- package/dist/bin/scaffold.js.map +1 -1
- package/dist/host/codex/config.toml +2 -0
- package/dist/host/guides/src/scaffold.md +234 -101
- package/dist/src/core/index.cjs +478 -298
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +167 -31
- package/dist/src/core/index.d.ts +167 -31
- package/dist/src/core/index.js +469 -299
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +45 -14
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +16 -6
- package/dist/src/server/index.d.ts +16 -6
- package/dist/src/server/index.js +46 -16
- package/dist/src/server/index.js.map +1 -1
- package/package.json +4 -3
package/dist/src/core/index.d.ts
CHANGED
|
@@ -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
|
|
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[],
|
|
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 (
|
|
216
|
-
readonly
|
|
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 `[]
|
|
228
|
-
* entirely when absent, so
|
|
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
|
-
|
|
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
|
|
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
|
|
810
|
-
*
|
|
811
|
-
*
|
|
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
|
|
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(
|
|
863
|
+
* devDependenciesFor(blueprint('router'))['typescript'] // '^6.0.3'
|
|
821
864
|
* ```
|
|
822
865
|
*/
|
|
823
|
-
export declare function devDependenciesFor(
|
|
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
|
|
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
|
-
|
|
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
|
-
/**
|
|
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` +
|
|
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
|
|
2163
|
-
* executable build
|
|
2164
|
-
*
|
|
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[],
|
|
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.
|
|
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`
|
|
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
|
|
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[],
|
|
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 { }
|