@orkestrel/scaffold 0.0.44 → 0.0.46
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/README.md +10 -10
- package/dist/bin/main.js +31 -31
- package/dist/bin/main.js.map +1 -1
- package/dist/host/AGENTS.md +7 -2
- package/dist/host/agents/orchestration.md +232 -56
- package/dist/host/agents/skills/enterprise-bootstrap/SKILL.md +7 -7
- package/dist/host/agents/skills/enterprise-bootstrap/references/bootstrap-reference.md +11 -9
- package/dist/host/agents/skills/enterprise-bootstrap/references/components.md +3 -3
- package/dist/host/agents/skills/enterprise-bootstrap/references/frontend-design.md +3 -3
- package/dist/host/agents/skills/enterprise-bootstrap/references/utilities.md +1 -1
- package/dist/host/agents/skills/orkestrel-align-packages/SKILL.md +1 -1
- package/dist/host/agents/skills/orkestrel-build-application/SKILL.md +2 -2
- package/dist/host/agents/skills/orkestrel-debrief/SKILL.md +1 -1
- package/dist/host/agents/skills/orkestrel-debrief/references/field-testing.md +2 -2
- package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +8 -8
- package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +16 -14
- package/dist/host/agents/skills/orkestrel-falsify/references/brief.md +3 -3
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +14 -14
- package/dist/host/agents/skills/orkestrel-harden-package/SKILL.md +1 -1
- package/dist/host/agents/skills/orkestrel-human-journey/SKILL.md +3 -3
- package/dist/host/agents/skills/orkestrel-human-journey/references/captures.md +3 -3
- package/dist/host/agents/skills/orkestrel-human-journey/references/layer.md +3 -3
- package/dist/host/agents/skills/orkestrel-polish-surface/SKILL.md +3 -3
- package/dist/host/claude/agents/analyst.md +2 -2
- package/dist/host/claude/agents/checker.md +2 -2
- package/dist/host/claude/agents/codex.md +5 -5
- package/dist/host/claude/agents/orkestrel.md +10 -8
- package/dist/host/claude/agents/planner.md +1 -1
- package/dist/host/claude/agents/researcher.md +2 -2
- package/dist/host/claude/agents/reviewer.md +1 -1
- package/dist/host/claude/agents/scout.md +2 -2
- package/dist/host/claude/agents/sol.md +3 -3
- package/dist/host/claude/agents/verifier.md +8 -0
- package/dist/host/claude/rules/application.md +7 -7
- package/dist/host/claude/rules/architecture.md +6 -6
- package/dist/host/claude/rules/documentation.md +1 -0
- package/dist/host/claude/rules/patterns.md +3 -3
- package/dist/host/claude/rules/quality.md +3 -3
- package/dist/host/claude/rules/tests.md +9 -2
- package/dist/host/claude/rules/workspace.md +7 -7
- package/dist/host/claude/rules/writing.md +12 -2
- package/dist/host/codex/agents/planner.toml +1 -1
- package/dist/host/codex/config.toml +4 -0
- package/dist/host/configs/helpers.ts +21 -1
- package/dist/host/cursor/mcp.json +4 -0
- package/dist/host/cursor/rules/orchestration.mdc +1 -1
- package/dist/host/dotfiles/gitignore +4 -1
- package/dist/host/dotfiles/mcp.json +4 -0
- package/dist/host/guides/scaffold.md +134 -119
- package/dist/host/scripts/codex.sh +0 -0
- package/dist/host/scripts/cursor.sh +0 -0
- package/dist/host/scripts/deps.sh +0 -0
- package/dist/host/scripts/ollama.sh +0 -0
- package/dist/host/tests/config.test.ts +40 -1
- package/dist/host/tests/policy.test.ts +2 -2
- package/dist/host/tests/setupPolicy.ts +8 -5
- package/dist/src/core/index.cjs +144 -149
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +1624 -1643
- package/dist/src/core/index.d.ts +1624 -1643
- package/dist/src/core/index.js +145 -149
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +82 -97
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +1844 -1871
- package/dist/src/server/index.d.ts +1844 -1871
- package/dist/src/server/index.js +83 -96
- package/dist/src/server/index.js.map +1 -1
- package/package.json +4 -3
package/dist/src/core/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { fillTemplate } from "@orkestrel/template";
|
|
|
3
3
|
import { Emitter } from "@orkestrel/emitter";
|
|
4
4
|
//#region src/core/constants.ts
|
|
5
5
|
/**
|
|
6
|
-
* The
|
|
6
|
+
* The `Environment` values, frozen.
|
|
7
7
|
*
|
|
8
8
|
* @remarks
|
|
9
9
|
* A blueprint's `src` and `app` axes are caller-supplied, so the gate measures
|
|
@@ -17,7 +17,7 @@ var ENVIRONMENTS = Object.freeze([
|
|
|
17
17
|
"server"
|
|
18
18
|
]);
|
|
19
19
|
/**
|
|
20
|
-
* The
|
|
20
|
+
* The `Group` values in plan order, frozen.
|
|
21
21
|
*
|
|
22
22
|
* @remarks
|
|
23
23
|
* A compile that names no groups covers every one of them, so this list is the
|
|
@@ -69,7 +69,7 @@ var SRC_MATRIX = Object.freeze({
|
|
|
69
69
|
* @remarks
|
|
70
70
|
* An application environment declares no exports, so it carries a runtime
|
|
71
71
|
* entry instead of a subpath and formats. Core carries none because it is
|
|
72
|
-
* shared logic the other
|
|
72
|
+
* shared logic the other environments import rather than a host that runs.
|
|
73
73
|
*/
|
|
74
74
|
var APP_MATRIX = Object.freeze({
|
|
75
75
|
core: Object.freeze({
|
|
@@ -97,8 +97,8 @@ var BIN_ENTRY_PATH = "src/bin/main.ts";
|
|
|
97
97
|
* @remarks
|
|
98
98
|
* These are the files the fleet shares verbatim: the root instruction
|
|
99
99
|
* documents, the licence, the canonical orchestration contract every harness
|
|
100
|
-
* bridge points at, the
|
|
101
|
-
* the shared policy register, the byte-identical root dotfiles, and the
|
|
100
|
+
* bridge points at, the harness directories, the session hook scripts,
|
|
101
|
+
* the shared policy register, the byte-identical root dotfiles, and the
|
|
102
102
|
* guide mirrors a generated workspace starts from. A directory entry vendors
|
|
103
103
|
* everything beneath it.
|
|
104
104
|
*
|
|
@@ -244,7 +244,7 @@ var DEPENDENCY_NAME_PATTERN = /^@orkestrel\/[a-z][a-z0-9-]*$/;
|
|
|
244
244
|
* is admitted, so the shape cannot express a traversal.
|
|
245
245
|
*/
|
|
246
246
|
var FOREIGN_NAME_PATTERN = /^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/;
|
|
247
|
-
/** The exact
|
|
247
|
+
/** The exact `major.minor.patch` version syntax a blueprint declares. */
|
|
248
248
|
var VERSION_PATTERN = /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/;
|
|
249
249
|
/**
|
|
250
250
|
* The exact caret-pinned pre-1.0 range accepted for an `@orkestrel/*` runtime dependency.
|
|
@@ -259,7 +259,7 @@ var ORKESTREL_RANGE_PATTERN = /^\^0\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/;
|
|
|
259
259
|
/** The registry-only semver subset accepted for a development extra's range. */
|
|
260
260
|
var EXTRA_RANGE_PATTERN = /^(?:\^|~)?(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*)?$/;
|
|
261
261
|
/**
|
|
262
|
-
* The exact
|
|
262
|
+
* The exact `major.minor.patch` floor accepted for a foreign peer's range.
|
|
263
263
|
*
|
|
264
264
|
* @remarks
|
|
265
265
|
* This is independent from {@link ENGINES_PATTERN}. An engine floors the Node
|
|
@@ -314,14 +314,15 @@ var DEFAULT_ENGINES = `>=${MINIMUM_NODE_VERSION}`;
|
|
|
314
314
|
/** The tooling versions scaffold and every generated workspace share. */
|
|
315
315
|
var BASE_DEV_DEPENDENCIES = Object.freeze({
|
|
316
316
|
"@orkestrel/guide": "^0.0.12",
|
|
317
|
-
"@orkestrel/
|
|
317
|
+
"@orkestrel/probe": "^0.0.1",
|
|
318
|
+
"@orkestrel/scaffold": "^0.0.46",
|
|
318
319
|
"@orkestrel/test": "^0.0.7",
|
|
319
320
|
"@types/node": "^26.2.0",
|
|
320
|
-
oxfmt: "^0.
|
|
321
|
-
oxlint: "^1.
|
|
321
|
+
oxfmt: "^0.64.0",
|
|
322
|
+
oxlint: "^1.79.0",
|
|
322
323
|
typescript: "^6.0.3",
|
|
323
|
-
vite: "~8.2.
|
|
324
|
-
vitest: "^4.1.
|
|
324
|
+
vite: "~8.2.1",
|
|
325
|
+
vitest: "^4.1.11"
|
|
325
326
|
});
|
|
326
327
|
/** The development dependencies that emit declarations for published source or an executable. */
|
|
327
328
|
var DECLARATION_DEV_DEPENDENCIES = Object.freeze({
|
|
@@ -330,7 +331,7 @@ var DECLARATION_DEV_DEPENDENCIES = Object.freeze({
|
|
|
330
331
|
});
|
|
331
332
|
/** The development dependencies a published browser `src` environment adds. */
|
|
332
333
|
var SOURCE_BROWSER_DEV_DEPENDENCIES = Object.freeze({
|
|
333
|
-
"@vitest/browser-playwright": "^4.1.
|
|
334
|
+
"@vitest/browser-playwright": "^4.1.11",
|
|
334
335
|
playwright: "^1.62.1"
|
|
335
336
|
});
|
|
336
337
|
/** The development dependency every private `app` environment adds. */
|
|
@@ -357,9 +358,9 @@ var SHOWCASE_DEV_DEPENDENCIES = Object.freeze({ "vite-plugin-singlefile": "^2.3.
|
|
|
357
358
|
/** The development dependencies a private server application adds. */
|
|
358
359
|
var APP_SERVER_DEV_DEPENDENCIES = Object.freeze({
|
|
359
360
|
"@orkestrel/emitter": "^0.0.7",
|
|
360
|
-
"@orkestrel/middleware": "^0.0.
|
|
361
|
+
"@orkestrel/middleware": "^0.0.16",
|
|
361
362
|
"@orkestrel/router": "^0.0.10",
|
|
362
|
-
"@orkestrel/server": "^0.0.
|
|
363
|
+
"@orkestrel/server": "^0.0.14"
|
|
363
364
|
});
|
|
364
365
|
//#endregion
|
|
365
366
|
//#region src/core/templates.ts
|
|
@@ -461,6 +462,7 @@ const resolve = {
|
|
|
461
462
|
emptyOutDir: true,
|
|
462
463
|
sourcemap: true,
|
|
463
464
|
minify: false,
|
|
465
|
+
rolldownOptions: { onLog: enforceBuildLog },
|
|
464
466
|
},
|
|
465
467
|
test: {
|
|
466
468
|
name: { label: 'src:core', color: 'magenta' },
|
|
@@ -490,6 +492,7 @@ const resolve = {
|
|
|
490
492
|
},
|
|
491
493
|
outDir: 'dist/src/browser',
|
|
492
494
|
rolldownOptions: {
|
|
495
|
+
onLog: enforceBuildLog,
|
|
493
496
|
{{external}}
|
|
494
497
|
{{output}}
|
|
495
498
|
},
|
|
@@ -528,6 +531,7 @@ const resolve = {
|
|
|
528
531
|
outDir: 'dist/src/server',
|
|
529
532
|
target: 'node22',
|
|
530
533
|
rolldownOptions: {
|
|
534
|
+
onLog: enforceBuildLog,
|
|
531
535
|
platform: 'node',
|
|
532
536
|
{{external}}
|
|
533
537
|
{{output}}
|
|
@@ -562,6 +566,7 @@ const resolve = {
|
|
|
562
566
|
outDir: 'dist/bin',
|
|
563
567
|
target: 'node22',
|
|
564
568
|
rolldownOptions: {
|
|
569
|
+
onLog: enforceBuildLog,
|
|
565
570
|
external: (id: string) =>
|
|
566
571
|
id.startsWith('node:') ||
|
|
567
572
|
id.startsWith('@orkestrel/') ||
|
|
@@ -612,7 +617,10 @@ const resolve = {
|
|
|
612
617
|
build: {
|
|
613
618
|
{{showcaseBuild}} emptyOutDir: true,
|
|
614
619
|
outDir: resolveWorkspacePath(output),
|
|
615
|
-
rolldownOptions: {
|
|
620
|
+
rolldownOptions: {
|
|
621
|
+
onLog: enforceBuildLog,
|
|
622
|
+
input: resolveWorkspacePath('app/browser/index.html'),
|
|
623
|
+
},
|
|
616
624
|
},
|
|
617
625
|
test: {
|
|
618
626
|
name: { label: 'app:browser', color: 'blue' },
|
|
@@ -649,7 +657,10 @@ export function appBrowser(): UserConfig {
|
|
|
649
657
|
},
|
|
650
658
|
outDir: resolveWorkspacePath('dist/app/server'),
|
|
651
659
|
target: 'node22',
|
|
652
|
-
rolldownOptions: {
|
|
660
|
+
rolldownOptions: {
|
|
661
|
+
onLog: enforceBuildLog,
|
|
662
|
+
external: (id: string) => id.startsWith('node:'),
|
|
663
|
+
},
|
|
653
664
|
},
|
|
654
665
|
test: {
|
|
655
666
|
name: { label: 'app:server', color: 'green' },
|
|
@@ -1033,7 +1044,7 @@ export default defineConfig(
|
|
|
1033
1044
|
import { srcBin } from '../../vite.config.ts'
|
|
1034
1045
|
|
|
1035
1046
|
// The \`scaffold\` executable build — a single ESM lib file, no declarations (an
|
|
1036
|
-
// executable ships no types), with the \`#!/usr/bin/env node\` shebang re-emitted
|
|
1047
|
+
// executable ships no types), with the \`#!/usr/bin/env node\` shebang re-emitted through
|
|
1037
1048
|
// \`output.banner\` (rolldown strips shebangs from source during bundling), and
|
|
1038
1049
|
// \`output.paths\` rewriting the externalized \`@src/*\` specifiers to the built sibling
|
|
1039
1050
|
// src environments (relative to \`dist/bin/\`), so the emitted bin resolves at runtime.
|
|
@@ -1285,7 +1296,7 @@ export function resolveBundledBrowser(platform: NodeJS.Platform, root: string):
|
|
|
1285
1296
|
/**
|
|
1286
1297
|
* Resolve the first installed stable system Chromium channel.
|
|
1287
1298
|
*
|
|
1288
|
-
* @param platform - The Node platform whose standard layouts
|
|
1299
|
+
* @param platform - The Node platform whose standard layouts this call probes.
|
|
1289
1300
|
* @param environment - The process environment supplying Windows installation roots.
|
|
1290
1301
|
* @returns \`chrome\`, then \`msedge\`, or \`undefined\` when neither is executable.
|
|
1291
1302
|
*
|
|
@@ -1330,7 +1341,7 @@ export function resolveSystemBrowser(
|
|
|
1330
1341
|
* Resolve Playwright provider options for whatever browser this host can actually launch.
|
|
1331
1342
|
*
|
|
1332
1343
|
* @param pinned - The executable path for Playwright's pinned Chromium revision, when it has one.
|
|
1333
|
-
* @param platform - The Node platform whose standard layouts
|
|
1344
|
+
* @param platform - The Node platform whose standard layouts this call probes.
|
|
1334
1345
|
* @param environment - The process environment supplying operator overrides and Windows roots.
|
|
1335
1346
|
* @param root - The managed-container bundled browsers directory to search.
|
|
1336
1347
|
* @returns Provider options naming an executable, a WebSocket endpoint, or a channel.
|
|
@@ -1339,7 +1350,7 @@ export function resolveSystemBrowser(
|
|
|
1339
1350
|
* Precedence, most important first: \`PLAYWRIGHT_EXECUTABLE_PATH\`, \`PLAYWRIGHT_WS_ENDPOINT\`,
|
|
1340
1351
|
* \`PLAYWRIGHT_CHANNEL\`, the managed Playwright Chromium, the container's bundled Chromium, a
|
|
1341
1352
|
* verified system channel, then the platform default channel. An operator override outranks
|
|
1342
|
-
* discovery and is returned exactly as given: none of those
|
|
1353
|
+
* discovery and is returned exactly as given: none of those environment values is checked
|
|
1343
1354
|
* against the filesystem, because verifying an override would defeat the override. The pinned
|
|
1344
1355
|
* managed revision outranks anything found on the host because it is deterministic. The installed
|
|
1345
1356
|
* pinned revision returns empty options so Playwright keeps its own default launch semantics. Only
|
|
@@ -1616,7 +1627,7 @@ var isHex = stringOf({
|
|
|
1616
1627
|
* The bound is a code-unit ceiling rather than a byte count, because a string
|
|
1617
1628
|
* of more code units than {@link MAX_ARTIFACT_BYTES} cannot encode within that
|
|
1618
1629
|
* budget under any encoding this package writes. The exact UTF-8 measurement
|
|
1619
|
-
* belongs to the compiler and the writer, which are the
|
|
1630
|
+
* belongs to the compiler and the writer, which are the places the bytes
|
|
1620
1631
|
* are actually produced.
|
|
1621
1632
|
*/
|
|
1622
1633
|
var isContent = stringOf({ max: MAX_ARTIFACT_BYTES });
|
|
@@ -1889,7 +1900,7 @@ var isFinding = unionOf(recordOf({
|
|
|
1889
1900
|
*
|
|
1890
1901
|
* @remarks
|
|
1891
1902
|
* An audit reaches the writer and the destructive verb, so it is guarded as
|
|
1892
|
-
* strictly as the plan beside it. Findings use the sum of the
|
|
1903
|
+
* strictly as the plan beside it. Findings use the sum of the producer
|
|
1893
1904
|
* bounds: one per planned artifact, then one per unplanned snapshot path.
|
|
1894
1905
|
*/
|
|
1895
1906
|
var isAudit = recordOf({
|
|
@@ -1901,7 +1912,7 @@ var isAudit = recordOf({
|
|
|
1901
1912
|
*
|
|
1902
1913
|
* @remarks
|
|
1903
1914
|
* `content` is the fetched guide text and `observed` is the local mirror's
|
|
1904
|
-
* exact bytes, so
|
|
1915
|
+
* exact bytes, so they carry different laws: one is content this package
|
|
1905
1916
|
* writes, the other is the precondition that write is held to.
|
|
1906
1917
|
*/
|
|
1907
1918
|
var isMirror = unionOf(recordOf({
|
|
@@ -2268,7 +2279,7 @@ function matchesOrchestrationPath(path) {
|
|
|
2268
2279
|
* @returns The group that owns the path.
|
|
2269
2280
|
*
|
|
2270
2281
|
* @remarks
|
|
2271
|
-
* A path is grouped by what it governs rather than by where it sits. The
|
|
2282
|
+
* A path is grouped by what it governs rather than by where it sits. The
|
|
2272
2283
|
* manifest files are named exactly; anything
|
|
2273
2284
|
* {@link matchesOrchestrationPath} accepts is orchestration; `src` and `app`
|
|
2274
2285
|
* are source; `tests`, `guides`, and `docs` carry their own names; the licence
|
|
@@ -2400,7 +2411,7 @@ function matchesPrintWidth(line) {
|
|
|
2400
2411
|
* module's own relative depth, so a nested module emits a path that escapes
|
|
2401
2412
|
* `dist/src` and a flat one resolves only by luck. Both faces rewrite the same
|
|
2402
2413
|
* relative core path to the package's published root export, so the branch is
|
|
2403
|
-
* derived once here. The extension alternation is what the
|
|
2414
|
+
* derived once here. The extension alternation is what the permitted import
|
|
2404
2415
|
* spellings produce: an `@src/core` alias resolves to the core source module and
|
|
2405
2416
|
* prints `.ts`, while a relative import prints the `.js` specifier it was
|
|
2406
2417
|
* written with. The formatter keeps the call on one line only while the line it
|
|
@@ -2580,8 +2591,8 @@ function matchesDriftReachability(ownership, finding) {
|
|
|
2580
2591
|
*
|
|
2581
2592
|
* The order matters because these packages are `0.0.x`, where a caret pins one
|
|
2582
2593
|
* exact release. Publishing a dependent before its dependency leaves the
|
|
2583
|
-
* dependent pinned to the older release, and
|
|
2584
|
-
*
|
|
2594
|
+
* dependent pinned to the older release, and ranges that disagree install
|
|
2595
|
+
* duplicate copies of one package that the compiler reads as distinct types.
|
|
2585
2596
|
*
|
|
2586
2597
|
* A cycle cannot be published in rounds, so its members are omitted rather than
|
|
2587
2598
|
* placed in an order that would be wrong. An absent name is the report: compare
|
|
@@ -2650,11 +2661,11 @@ function planToSummary(plan) {
|
|
|
2650
2661
|
};
|
|
2651
2662
|
}
|
|
2652
2663
|
/**
|
|
2653
|
-
* Extract the
|
|
2664
|
+
* Extract the major, minor, and patch components of an exact version.
|
|
2654
2665
|
*
|
|
2655
2666
|
* @param version - The candidate version text.
|
|
2656
2667
|
* @returns The major, minor, and patch numbers, or `undefined` when the text is
|
|
2657
|
-
* not the exact
|
|
2668
|
+
* not the exact `major.minor.patch` syntax.
|
|
2658
2669
|
*
|
|
2659
2670
|
* @remarks
|
|
2660
2671
|
* Deliberately narrow: a prerelease or build suffix is not extracted, because
|
|
@@ -2724,10 +2735,10 @@ function compareVersions(left, right) {
|
|
|
2724
2735
|
* @remarks
|
|
2725
2736
|
* The one place this comparison is made. A `Release` records the declared range
|
|
2726
2737
|
* and the reported version and stores no verdict beside them, because a stored
|
|
2727
|
-
* verdict could only disagree with the
|
|
2738
|
+
* verdict could only disagree with the fields it sits next to.
|
|
2728
2739
|
*
|
|
2729
2740
|
* Readability is decided first, and it is `EXTRA_RANGE_PATTERN`: an optional
|
|
2730
|
-
* caret or tilde over
|
|
2741
|
+
* caret or tilde over `major.minor.patch` and an optional prerelease
|
|
2731
2742
|
* suffix. That pattern already covers every `ORKESTREL_RANGE_PATTERN` range and
|
|
2732
2743
|
* every `VERSION_PATTERN` version, so the subset is stated once rather than
|
|
2733
2744
|
* assembled here. Text outside it is never admitted, including text handed in on
|
|
@@ -3034,7 +3045,7 @@ function srcToExports(src) {
|
|
|
3034
3045
|
* not installed by the workspace that declares it and developing against one
|
|
3035
3046
|
* requires it present. A runtime dependency is the opposite case and is removed:
|
|
3036
3047
|
* it is already installed, so a second declaration would state one fact twice
|
|
3037
|
-
* and the
|
|
3048
|
+
* and the ranges would be free to disagree.
|
|
3038
3049
|
*
|
|
3039
3050
|
* A workspace never declares itself, so its own package name is removed. That
|
|
3040
3051
|
* matters for a workspace named after a package the baseline already carries:
|
|
@@ -3218,7 +3229,7 @@ function blueprintToScripts(blueprint) {
|
|
|
3218
3229
|
* artifact serialized directly.
|
|
3219
3230
|
*
|
|
3220
3231
|
* The artifact carrying this text is claimed by birth. A workspace owns its own
|
|
3221
|
-
* manifest
|
|
3232
|
+
* manifest after it exists: its description, its keywords, and any script it
|
|
3222
3233
|
* added are the consumer's, so a repair that replaced the file would take them.
|
|
3223
3234
|
* The one part scaffold keeps current afterwards is the declared `@orkestrel/*`
|
|
3224
3235
|
* range set, and that is a region with its own writer rather than a claim over
|
|
@@ -3288,7 +3299,7 @@ function blueprintToManifest(blueprint) {
|
|
|
3288
3299
|
* Derive the host-specific machinery a generated root Vite configuration carries.
|
|
3289
3300
|
*
|
|
3290
3301
|
* @param blueprint - The workspace specification.
|
|
3291
|
-
* @returns The
|
|
3302
|
+
* @returns The pipelines the generated configuration selects.
|
|
3292
3303
|
*
|
|
3293
3304
|
* @remarks
|
|
3294
3305
|
* The sole derivation of that set: every renderer reads it rather than
|
|
@@ -3519,11 +3530,15 @@ export function appShowcase(): UserConfig {
|
|
|
3519
3530
|
${projects.map((project) => `\t\t\t${project},`).join("\n")}
|
|
3520
3531
|
\t],`;
|
|
3521
3532
|
const body = `${factories.join("\n")}\n`;
|
|
3522
|
-
const
|
|
3533
|
+
const helpers = [
|
|
3534
|
+
"enforceBuildLog",
|
|
3535
|
+
"environmentBoundary",
|
|
3536
|
+
"outputBoundary"
|
|
3537
|
+
].filter((helper) => body.includes(helper));
|
|
3523
3538
|
return fillTemplate(CONFIG_TEMPLATES.root.vite, {
|
|
3524
3539
|
viteTypes: machinery.showcase ? "PluginOption, UserConfig" : "UserConfig",
|
|
3525
3540
|
imports: imports.length === 0 ? "" : `${imports.join("\n")}\n`,
|
|
3526
|
-
helpers:
|
|
3541
|
+
helpers: helpers.length === 0 ? "" : `import { ${helpers.join(", ")} } from './configs/helpers.js'\n`,
|
|
3527
3542
|
browsers: machinery.browser ? "import { resolveBrowser, resolvePinnedBrowser } from './configs/browsers.js'\n" : "",
|
|
3528
3543
|
options: machinery.browser ? "const browserOptions = resolveBrowser(resolvePinnedBrowser(), process.platform, process.env)\n\n" : "",
|
|
3529
3544
|
factories: body,
|
|
@@ -3648,7 +3663,7 @@ ${paths.join("\n")}
|
|
|
3648
3663
|
*
|
|
3649
3664
|
* @remarks
|
|
3650
3665
|
* The barrels and every runtime entry intentionally hold nothing. A generated
|
|
3651
|
-
* sample entity
|
|
3666
|
+
* sample entity would read as package implementation, so the
|
|
3652
3667
|
* scaffold establishes only the selected environment boundaries. An application
|
|
3653
3668
|
* entry is empty for the same reason the bin entry is, and because the vendored
|
|
3654
3669
|
* lint config refuses an unassigned import outside a stylesheet, so the entry
|
|
@@ -4018,9 +4033,9 @@ function applyOverrides(artifacts, overrides) {
|
|
|
4018
4033
|
*
|
|
4019
4034
|
* @example
|
|
4020
4035
|
* ```ts
|
|
4021
|
-
* import {
|
|
4036
|
+
* import { Compiler, createBlueprint, planToHash } from '@orkestrel/scaffold'
|
|
4022
4037
|
*
|
|
4023
|
-
* const { plan } =
|
|
4038
|
+
* const { plan } = new Compiler().compile(createBlueprint('router', { src: ['core'] }))
|
|
4024
4039
|
*
|
|
4025
4040
|
* plan === undefined ? undefined : planToHash(plan)?.length // 16
|
|
4026
4041
|
* ```
|
|
@@ -4049,7 +4064,7 @@ function planToHash(plan) {
|
|
|
4049
4064
|
* destination has no bytes to record, and every other verdict records the bytes
|
|
4050
4065
|
* it was given, which is the precondition the mutation that follows is held to.
|
|
4051
4066
|
* Ownership is copied rather than inferred from drift because aligned findings
|
|
4052
|
-
* span
|
|
4067
|
+
* span every ownership tier.
|
|
4053
4068
|
*
|
|
4054
4069
|
* `foreign` is not answerable here, because it describes a path no artifact was
|
|
4055
4070
|
* planned for.
|
|
@@ -4112,9 +4127,9 @@ function artifactToFinding(artifact, observed) {
|
|
|
4112
4127
|
*
|
|
4113
4128
|
* @example
|
|
4114
4129
|
* ```ts
|
|
4115
|
-
* import {
|
|
4130
|
+
* import { Compiler, createBlueprint, planToFindings } from '@orkestrel/scaffold'
|
|
4116
4131
|
*
|
|
4117
|
-
* const { plan } =
|
|
4132
|
+
* const { plan } = new Compiler().compile(createBlueprint('router', { src: ['core'] }))
|
|
4118
4133
|
*
|
|
4119
4134
|
* plan === undefined ? [] : planToFindings(plan, { 'AGENTS.md': '68690a' })
|
|
4120
4135
|
* ```
|
|
@@ -4150,7 +4165,7 @@ function planToFindings(plan, current) {
|
|
|
4150
4165
|
* range, in list order.
|
|
4151
4166
|
*
|
|
4152
4167
|
* @remarks
|
|
4153
|
-
* The declared lists and peer partitions differ only in the
|
|
4168
|
+
* The declared lists and peer partitions differ only in the syntaxes they
|
|
4154
4169
|
* accept, so the rules live here once and each caller supplies its own patterns.
|
|
4155
4170
|
* A runtime dependency name reaches a path through its guide mirror and is
|
|
4156
4171
|
* fixed to the `@orkestrel` scope. A foreign peer or development extra reaches
|
|
@@ -4207,14 +4222,14 @@ function dependenciesToQuestions(dependencies, field, name, range) {
|
|
|
4207
4222
|
* Only the laws a blueprint answers alone are here. The structural record and
|
|
4208
4223
|
* its bounds are already settled by `isBlueprint`, which refuses a value that is
|
|
4209
4224
|
* not a blueprint at all; what remains is the syntax of a name, a version, a
|
|
4210
|
-
* range, and an engines floor, the combinations the
|
|
4211
|
-
* and the overlaps between the
|
|
4225
|
+
* range, and an engines floor, the combinations the environment axes admit,
|
|
4226
|
+
* and the overlaps between the declared package lists. The laws that need
|
|
4212
4227
|
* a drafted plan belong to {@link artifactsToQuestions} and
|
|
4213
4228
|
* {@link overridesToQuestions}.
|
|
4214
4229
|
*
|
|
4215
4230
|
* A question blocks when it describes a workspace this package cannot generate.
|
|
4216
|
-
*
|
|
4217
|
-
*
|
|
4231
|
+
* These do not, because each describes a workspace it can describe honestly but
|
|
4232
|
+
* will not create: a published axis of several environments without core,
|
|
4218
4233
|
* whose manifest names a core build the workspace never runs; a showcase flag
|
|
4219
4234
|
* whose required browser axis is absent, which emits nothing; and an
|
|
4220
4235
|
* integration flag over fewer than two environments, whose seed does emit and
|
|
@@ -4461,6 +4476,72 @@ function overridesToQuestions(overrides, artifacts) {
|
|
|
4461
4476
|
return questions;
|
|
4462
4477
|
}
|
|
4463
4478
|
//#endregion
|
|
4479
|
+
//#region src/core/factories.ts
|
|
4480
|
+
/**
|
|
4481
|
+
* Construct a {@link Blueprint} from a name and the fields that differ from the defaults.
|
|
4482
|
+
*
|
|
4483
|
+
* @param name - The bare workspace name.
|
|
4484
|
+
* @param input - The fields to set; every omitted field takes its default.
|
|
4485
|
+
* @returns The filled blueprint, owned by the caller and sharing nothing with `input`.
|
|
4486
|
+
* @throws {@link ScaffoldError} coded `INVALID` when the filled record is not a
|
|
4487
|
+
* blueprint.
|
|
4488
|
+
*
|
|
4489
|
+
* @remarks
|
|
4490
|
+
* A blueprint is a closed record, and most of its fields have one sensible
|
|
4491
|
+
* starting value: an empty list, a cleared flag, `DEFAULT_VERSION`, and
|
|
4492
|
+
* `DEFAULT_ENGINES`. Filling them here is what lets a caller state only what its
|
|
4493
|
+
* workspace actually declares.
|
|
4494
|
+
*
|
|
4495
|
+
* This is the construction door, and {@link parseBlueprint} is the coercing one.
|
|
4496
|
+
* They differ in every part: this fills the defaults and takes a
|
|
4497
|
+
* partial specification, where the parser fills nothing and takes an untrusted
|
|
4498
|
+
* value; and this refuses by throwing, where the parser refuses by answering
|
|
4499
|
+
* `undefined`. What they share is the law — both accept exactly what
|
|
4500
|
+
* `isBlueprint` accepts.
|
|
4501
|
+
*
|
|
4502
|
+
* That law is structural only. Whether the name is a name, the version a
|
|
4503
|
+
* version, and the environment axes a combination this package can generate
|
|
4504
|
+
* are the gate's laws, and the gate answers them with {@link Question}s carrying
|
|
4505
|
+
* their accepted candidates. Deciding them here as well would restate that law
|
|
4506
|
+
* and let the answers disagree, so a blueprint the gate will
|
|
4507
|
+
* refuse is still constructible.
|
|
4508
|
+
*
|
|
4509
|
+
* @example
|
|
4510
|
+
* ```ts
|
|
4511
|
+
* import { createBlueprint } from '@orkestrel/scaffold'
|
|
4512
|
+
*
|
|
4513
|
+
* createBlueprint('router', { src: ['core'] }).version // '0.0.1'
|
|
4514
|
+
* createBlueprint('Router').name // 'Router' — the gate refuses it, this does not
|
|
4515
|
+
* ```
|
|
4516
|
+
*/
|
|
4517
|
+
function createBlueprint(name, input) {
|
|
4518
|
+
const blueprint = parseBlueprint(cloneValue({
|
|
4519
|
+
name,
|
|
4520
|
+
...input?.description === void 0 ? {} : { description: input.description },
|
|
4521
|
+
keywords: input?.keywords ?? [],
|
|
4522
|
+
src: input?.src ?? [],
|
|
4523
|
+
app: input?.app ?? [],
|
|
4524
|
+
dependencies: input?.dependencies ?? [],
|
|
4525
|
+
peers: input?.peers ?? [],
|
|
4526
|
+
extras: input?.extras ?? [],
|
|
4527
|
+
version: input?.version ?? "0.0.1",
|
|
4528
|
+
engines: input?.engines ?? DEFAULT_ENGINES,
|
|
4529
|
+
overrides: input?.overrides ?? [],
|
|
4530
|
+
bin: input?.bin ?? false,
|
|
4531
|
+
setup: input?.setup ?? false,
|
|
4532
|
+
guides: input?.guides ?? false,
|
|
4533
|
+
distribution: input?.distribution ?? false,
|
|
4534
|
+
integration: input?.integration ?? false,
|
|
4535
|
+
conformance: input?.conformance ?? false,
|
|
4536
|
+
service: input?.service ?? false,
|
|
4537
|
+
vendors: input?.vendors ?? [],
|
|
4538
|
+
global: input?.global ?? false,
|
|
4539
|
+
showcase: input?.showcase ?? false
|
|
4540
|
+
}));
|
|
4541
|
+
if (blueprint === void 0) throw new ScaffoldError("INVALID", "The filled record is not a blueprint.", { name });
|
|
4542
|
+
return blueprint;
|
|
4543
|
+
}
|
|
4544
|
+
//#endregion
|
|
4464
4545
|
//#region src/core/Compiler.ts
|
|
4465
4546
|
/**
|
|
4466
4547
|
* The compile spine: draft, gate, pin, run in that order over a blueprint.
|
|
@@ -4483,7 +4564,7 @@ function overridesToQuestions(overrides, artifacts) {
|
|
|
4483
4564
|
* `INVALID`. Structure raises; the laws a well-formed blueprint can still break
|
|
4484
4565
|
* are the gate's, and they answer with questions.
|
|
4485
4566
|
*
|
|
4486
|
-
*
|
|
4567
|
+
* The consequences of that order are worth stating, because they are the ones a
|
|
4487
4568
|
* JavaScript caller meets first. A property backed by an accessor is refused
|
|
4488
4569
|
* rather than read, which is what closes the race a guard cannot close from
|
|
4489
4570
|
* inside; the accessor never runs. And an optional field present with the value
|
|
@@ -4545,21 +4626,21 @@ var Compiler = class {
|
|
|
4545
4626
|
* carries no plan, then `compile` with the whole outcome either way, so an
|
|
4546
4627
|
* observer reads every compile from one event and the refusals from the other.
|
|
4547
4628
|
*
|
|
4548
|
-
* A plan says the blueprint can be built. It does not
|
|
4549
|
-
*
|
|
4550
|
-
*
|
|
4551
|
-
*
|
|
4552
|
-
*
|
|
4553
|
-
* Nothing downstream repeats that check, because only the caller knows which
|
|
4554
|
-
*
|
|
4629
|
+
* A plan says the blueprint can be built. It does not decide whether to create
|
|
4630
|
+
* it, and the questions beside it are what this compiler could not settle. A
|
|
4631
|
+
* caller creating a fresh workspace answers them first and writes nothing while
|
|
4632
|
+
* any remains, which is the rule the `new` verb applies; a caller describing or
|
|
4633
|
+
* repairing an existing target carries them through instead.
|
|
4634
|
+
* Nothing downstream repeats that check, because only the caller knows which
|
|
4635
|
+
* case it is.
|
|
4555
4636
|
*
|
|
4556
4637
|
* @example
|
|
4557
4638
|
* ```ts
|
|
4558
|
-
* import {
|
|
4639
|
+
* import { Compiler, createBlueprint } from '@orkestrel/scaffold'
|
|
4559
4640
|
*
|
|
4560
4641
|
* const blueprint = createBlueprint('router', { src: ['core'] })
|
|
4561
4642
|
*
|
|
4562
|
-
*
|
|
4643
|
+
* new Compiler().compile(blueprint, ['manifest']).plan?.artifacts.length // 1
|
|
4563
4644
|
* ```
|
|
4564
4645
|
*/
|
|
4565
4646
|
compile(blueprint, groups) {
|
|
@@ -4592,12 +4673,12 @@ var Compiler = class {
|
|
|
4592
4673
|
*
|
|
4593
4674
|
* @example
|
|
4594
4675
|
* ```ts
|
|
4595
|
-
* import {
|
|
4676
|
+
* import { Compiler, createBlueprint } from '@orkestrel/scaffold'
|
|
4596
4677
|
*
|
|
4597
4678
|
* const blueprint = createBlueprint('router', { src: ['core'] })
|
|
4598
4679
|
*
|
|
4599
|
-
*
|
|
4600
|
-
*
|
|
4680
|
+
* new Compiler().audit(blueprint, {}, ['manifest']).findings[0]?.drift // 'aligned'
|
|
4681
|
+
* new Compiler().audit(blueprint, {}, ['configs']).findings[0]?.drift // 'missing'
|
|
4601
4682
|
* ```
|
|
4602
4683
|
*/
|
|
4603
4684
|
audit(blueprint, current, groups) {
|
|
@@ -4620,9 +4701,9 @@ var Compiler = class {
|
|
|
4620
4701
|
*
|
|
4621
4702
|
* @example
|
|
4622
4703
|
* ```ts
|
|
4623
|
-
* import {
|
|
4704
|
+
* import { Compiler } from '@orkestrel/scaffold'
|
|
4624
4705
|
*
|
|
4625
|
-
* const compiler =
|
|
4706
|
+
* const compiler = new Compiler()
|
|
4626
4707
|
* compiler.destroy()
|
|
4627
4708
|
* compiler.emitter.destroyed // true
|
|
4628
4709
|
* ```
|
|
@@ -4762,91 +4843,6 @@ var Compiler = class {
|
|
|
4762
4843
|
}
|
|
4763
4844
|
};
|
|
4764
4845
|
//#endregion
|
|
4765
|
-
|
|
4766
|
-
/**
|
|
4767
|
-
* Construct a {@link Blueprint} from a name and the fields that differ from the defaults.
|
|
4768
|
-
*
|
|
4769
|
-
* @param name - The bare workspace name.
|
|
4770
|
-
* @param input - The fields to set; every omitted field takes its default.
|
|
4771
|
-
* @returns The filled blueprint, owned by the caller and sharing nothing with `input`.
|
|
4772
|
-
* @throws {@link ScaffoldError} coded `INVALID` when the filled record is not a
|
|
4773
|
-
* blueprint.
|
|
4774
|
-
*
|
|
4775
|
-
* @remarks
|
|
4776
|
-
* A blueprint is a closed record, and most of its fields have one sensible
|
|
4777
|
-
* starting value: an empty list, a cleared flag, `DEFAULT_VERSION`, and
|
|
4778
|
-
* `DEFAULT_ENGINES`. Filling them here is what lets a caller state only what its
|
|
4779
|
-
* workspace actually declares.
|
|
4780
|
-
*
|
|
4781
|
-
* This is the construction door, and {@link parseBlueprint} is the coercing one.
|
|
4782
|
-
* They differ in all three of their parts: this fills the defaults and takes a
|
|
4783
|
-
* partial specification, where the parser fills nothing and takes an untrusted
|
|
4784
|
-
* value; and this refuses by throwing, where the parser refuses by answering
|
|
4785
|
-
* `undefined`. What they share is the law — both accept exactly what
|
|
4786
|
-
* `isBlueprint` accepts.
|
|
4787
|
-
*
|
|
4788
|
-
* That law is structural only. Whether the name is a name, the version a
|
|
4789
|
-
* version, and the two environment axes a combination this package can generate
|
|
4790
|
-
* are the gate's laws, and the gate answers them with {@link Question}s carrying
|
|
4791
|
-
* their accepted candidates. Deciding them here as well would state one law in
|
|
4792
|
-
* two places and let the two answers disagree, so a blueprint the gate will
|
|
4793
|
-
* refuse is still constructible.
|
|
4794
|
-
*
|
|
4795
|
-
* @example
|
|
4796
|
-
* ```ts
|
|
4797
|
-
* import { createBlueprint } from '@orkestrel/scaffold'
|
|
4798
|
-
*
|
|
4799
|
-
* createBlueprint('router', { src: ['core'] }).version // '0.0.1'
|
|
4800
|
-
* createBlueprint('Router').name // 'Router' — the gate refuses it, this does not
|
|
4801
|
-
* ```
|
|
4802
|
-
*/
|
|
4803
|
-
function createBlueprint(name, input) {
|
|
4804
|
-
const blueprint = parseBlueprint(cloneValue({
|
|
4805
|
-
name,
|
|
4806
|
-
...input?.description === void 0 ? {} : { description: input.description },
|
|
4807
|
-
keywords: input?.keywords ?? [],
|
|
4808
|
-
src: input?.src ?? [],
|
|
4809
|
-
app: input?.app ?? [],
|
|
4810
|
-
dependencies: input?.dependencies ?? [],
|
|
4811
|
-
peers: input?.peers ?? [],
|
|
4812
|
-
extras: input?.extras ?? [],
|
|
4813
|
-
version: input?.version ?? "0.0.1",
|
|
4814
|
-
engines: input?.engines ?? DEFAULT_ENGINES,
|
|
4815
|
-
overrides: input?.overrides ?? [],
|
|
4816
|
-
bin: input?.bin ?? false,
|
|
4817
|
-
setup: input?.setup ?? false,
|
|
4818
|
-
guides: input?.guides ?? false,
|
|
4819
|
-
distribution: input?.distribution ?? false,
|
|
4820
|
-
integration: input?.integration ?? false,
|
|
4821
|
-
conformance: input?.conformance ?? false,
|
|
4822
|
-
service: input?.service ?? false,
|
|
4823
|
-
vendors: input?.vendors ?? [],
|
|
4824
|
-
global: input?.global ?? false,
|
|
4825
|
-
showcase: input?.showcase ?? false
|
|
4826
|
-
}));
|
|
4827
|
-
if (blueprint === void 0) throw new ScaffoldError("INVALID", "The filled record is not a blueprint.", { name });
|
|
4828
|
-
return blueprint;
|
|
4829
|
-
}
|
|
4830
|
-
/**
|
|
4831
|
-
* Construct a {@link Compiler}.
|
|
4832
|
-
*
|
|
4833
|
-
* @param options - The initial listeners and the listener-error handler.
|
|
4834
|
-
* @returns The compiler, typed as the contract consumers program against.
|
|
4835
|
-
* @throws {@link ScaffoldError} coded `INVALID` when `options` is present but is
|
|
4836
|
-
* not an option bag the compiler accepts.
|
|
4837
|
-
*
|
|
4838
|
-
* @example
|
|
4839
|
-
* ```ts
|
|
4840
|
-
* import { createCompiler } from '@orkestrel/scaffold'
|
|
4841
|
-
*
|
|
4842
|
-
* const compiler = createCompiler({ on: { block: (questions) => report(questions) } })
|
|
4843
|
-
* compiler.destroy()
|
|
4844
|
-
* ```
|
|
4845
|
-
*/
|
|
4846
|
-
function createCompiler(options) {
|
|
4847
|
-
return new Compiler(options);
|
|
4848
|
-
}
|
|
4849
|
-
//#endregion
|
|
4850
|
-
export { APP_BROWSER_DEV_DEPENDENCIES, APP_DEV_DEPENDENCIES, APP_MATRIX, APP_SERVER_DEV_DEPENDENCIES, ARTIFACT_TEMPLATES, BASE_DEV_DEPENDENCIES, BIN_CONFIGS, BIN_ENTRY_PATH, CATALOG_AGENT_PATH, CONFIG_TEMPLATES, CONFORMANCE_TEST_PATH, CONTROL_CHARACTER_PATTERN, Compiler, DECLARATION_DEV_DEPENDENCIES, DEFAULT_ENGINES, DEFAULT_VERSION, DEPENDENCY_NAME_PATTERN, DISTRIBUTION_TEST_PATH, ENGINES_PATTERN, ENVIRONMENTS, EXECUTABLE_PATHS, EXTRA_RANGE_PATTERN, FLOOR_RANGE_PATTERN, FOREIGN_NAME_PATTERN, GLOBAL_SETUP_PATH, GROUPS, GUIDES_TEST_PATH, HEX_PATTERN, HOST_PATHS, INTEGRATION_TEST_PATH, INVALID_PATH_CHARACTER_PATTERN, MAX_ARTIFACT_BYTES, MAX_ARTIFACT_HEX_LENGTH, MAX_AUDIT_FINDINGS, MAX_COLLECTION_ITEMS, MAX_DEPENDENCY_NAME_LENGTH, MAX_MANIFEST_BYTES, MAX_NAME_LENGTH, MAX_PATH_LENGTH, MAX_RANGE_LENGTH, MAX_TOTAL_ARTIFACT_BYTES, MINIMUM_NODE_VERSION, NAME_PATTERN, ORCHESTRATION_PATH_NAMES, ORCHESTRATION_PATH_PREFIXES, ORKESTREL_RANGE_PATTERN, PRINT_WIDTH, SERVICE_SCRIPT_PATH, SERVICE_SETUP_PATH, SERVICE_TEST_INCLUDE, SHOWCASE_CONFIG_PATH, SHOWCASE_DEV_DEPENDENCIES, SOURCE_BROWSER_DEV_DEPENDENCIES, SRC_MATRIX, ScaffoldError, TAB_WIDTH, VERSION_PATTERN, WORKSPACE_OWNED_PATHS, applyOverrides, artifactToFinding, artifactToHex, artifactsToQuestions, blueprintToConfigArtifacts, blueprintToDevDependencies, blueprintToDocumentArtifacts, blueprintToGuideArtifacts, blueprintToMachinery, blueprintToManifest, blueprintToOrchestrationArtifacts, blueprintToQuestions, blueprintToRootTsconfig, blueprintToRootVite, blueprintToScripts, blueprintToSourceArtifacts, blueprintToTestArtifacts, bytesToHex, catalogToLayers, cloneValue, compareVersions, computeBytes, computeHash, contentToHex, createBlueprint, createCompiler, dependenciesToQuestions, extractVersion, inferDrift, inferGroup, isArtifact, isAudit, isBlueprint, isCatalogEntry, isCollection, isCompilerHooks, isCompilerOptions, isContent, isDependency, isDependencyName, isEnvironment, isFinding, isGroup, isGroups, isHex, isMirror, isOverride, isPath, isPlan, isQuestion, isScaffoldError, isSnapshot, manifestToDependencies, manifestToName, matchesDriftReachability, matchesEngines, matchesOrchestrationPath, matchesPrintWidth, matchesRange, nameToGuide, nameToHostArtifacts, nameToRewrite, overridesToQuestions, parseBlueprint, parseCompilerOptions, parseGroups, parseSnapshot, pathToCondition, planToFindings, planToHash, planToSummary, selectGroups, selectHostPaths, serializeTypeScriptString, srcToEntry, srcToExports, srcToRoot };
|
|
4846
|
+
export { APP_BROWSER_DEV_DEPENDENCIES, APP_DEV_DEPENDENCIES, APP_MATRIX, APP_SERVER_DEV_DEPENDENCIES, ARTIFACT_TEMPLATES, BASE_DEV_DEPENDENCIES, BIN_CONFIGS, BIN_ENTRY_PATH, CATALOG_AGENT_PATH, CONFIG_TEMPLATES, CONFORMANCE_TEST_PATH, CONTROL_CHARACTER_PATTERN, Compiler, DECLARATION_DEV_DEPENDENCIES, DEFAULT_ENGINES, DEFAULT_VERSION, DEPENDENCY_NAME_PATTERN, DISTRIBUTION_TEST_PATH, ENGINES_PATTERN, ENVIRONMENTS, EXECUTABLE_PATHS, EXTRA_RANGE_PATTERN, FLOOR_RANGE_PATTERN, FOREIGN_NAME_PATTERN, GLOBAL_SETUP_PATH, GROUPS, GUIDES_TEST_PATH, HEX_PATTERN, HOST_PATHS, INTEGRATION_TEST_PATH, INVALID_PATH_CHARACTER_PATTERN, MAX_ARTIFACT_BYTES, MAX_ARTIFACT_HEX_LENGTH, MAX_AUDIT_FINDINGS, MAX_COLLECTION_ITEMS, MAX_DEPENDENCY_NAME_LENGTH, MAX_MANIFEST_BYTES, MAX_NAME_LENGTH, MAX_PATH_LENGTH, MAX_RANGE_LENGTH, MAX_TOTAL_ARTIFACT_BYTES, MINIMUM_NODE_VERSION, NAME_PATTERN, ORCHESTRATION_PATH_NAMES, ORCHESTRATION_PATH_PREFIXES, ORKESTREL_RANGE_PATTERN, PRINT_WIDTH, SERVICE_SCRIPT_PATH, SERVICE_SETUP_PATH, SERVICE_TEST_INCLUDE, SHOWCASE_CONFIG_PATH, SHOWCASE_DEV_DEPENDENCIES, SOURCE_BROWSER_DEV_DEPENDENCIES, SRC_MATRIX, ScaffoldError, TAB_WIDTH, VERSION_PATTERN, WORKSPACE_OWNED_PATHS, applyOverrides, artifactToFinding, artifactToHex, artifactsToQuestions, blueprintToConfigArtifacts, blueprintToDevDependencies, blueprintToDocumentArtifacts, blueprintToGuideArtifacts, blueprintToMachinery, blueprintToManifest, blueprintToOrchestrationArtifacts, blueprintToQuestions, blueprintToRootTsconfig, blueprintToRootVite, blueprintToScripts, blueprintToSourceArtifacts, blueprintToTestArtifacts, bytesToHex, catalogToLayers, cloneValue, compareVersions, computeBytes, computeHash, contentToHex, createBlueprint, dependenciesToQuestions, extractVersion, inferDrift, inferGroup, isArtifact, isAudit, isBlueprint, isCatalogEntry, isCollection, isCompilerHooks, isCompilerOptions, isContent, isDependency, isDependencyName, isEnvironment, isFinding, isGroup, isGroups, isHex, isMirror, isOverride, isPath, isPlan, isQuestion, isScaffoldError, isSnapshot, manifestToDependencies, manifestToName, matchesDriftReachability, matchesEngines, matchesOrchestrationPath, matchesPrintWidth, matchesRange, nameToGuide, nameToHostArtifacts, nameToRewrite, overridesToQuestions, parseBlueprint, parseCompilerOptions, parseGroups, parseSnapshot, pathToCondition, planToFindings, planToHash, planToSummary, selectGroups, selectHostPaths, serializeTypeScriptString, srcToEntry, srcToExports, srcToRoot };
|
|
4851
4847
|
|
|
4852
4848
|
//# sourceMappingURL=index.js.map
|