@orkestrel/scaffold 0.0.40 → 0.0.42

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 (40) hide show
  1. package/dist/bin/main.js +8 -1
  2. package/dist/bin/main.js.map +1 -1
  3. package/dist/host/AGENTS.md +2 -2
  4. package/dist/host/agents/skills/enterprise-bootstrap/references/bootstrap-reference.md +16 -16
  5. package/dist/host/agents/skills/enterprise-bootstrap/references/components.md +3 -3
  6. package/dist/host/agents/skills/orkestrel-align-packages/references/integration.md +1 -1
  7. package/dist/host/agents/skills/orkestrel-build-application/SKILL.md +7 -2
  8. package/dist/host/claude/agents/builder.md +2 -2
  9. package/dist/host/claude/agents/orkestrel.md +48 -48
  10. package/dist/host/claude/rules/application.md +6 -4
  11. package/dist/host/claude/rules/architecture.md +2 -0
  12. package/dist/host/claude/rules/documentation.md +6 -0
  13. package/dist/host/claude/rules/tests.md +11 -1
  14. package/dist/host/claude/rules/typescript.md +15 -1
  15. package/dist/host/claude/rules/workspace.md +43 -13
  16. package/dist/host/claude/rules/writing.md +125 -0
  17. package/dist/host/claude/skills/enterprise-bootstrap/SKILL.md +10 -1
  18. package/dist/host/claude/skills/orkestrel-align-packages/SKILL.md +1 -1
  19. package/dist/host/claude/skills/orkestrel-build-application/SKILL.md +1 -1
  20. package/dist/host/claude/skills/orkestrel-harden-package/SKILL.md +1 -1
  21. package/dist/host/configs/policy.ts +185 -0
  22. package/dist/host/dotfiles/oxlintrc.json +13 -1
  23. package/dist/host/dotfiles/prettierignore +3 -0
  24. package/dist/host/guides/scaffold.md +23 -10
  25. package/dist/host/manifest.json +11 -7
  26. package/dist/host/scripts/codex.sh +0 -0
  27. package/dist/host/scripts/cursor.sh +0 -0
  28. package/dist/host/scripts/deps.sh +0 -0
  29. package/dist/host/scripts/ollama.sh +0 -0
  30. package/dist/host/tests/config.test.ts +217 -4
  31. package/dist/host/tests/policy.test.ts +82 -0
  32. package/dist/host/tests/setupPolicy.ts +863 -21
  33. package/dist/src/core/index.cjs +97 -22
  34. package/dist/src/core/index.cjs.map +1 -1
  35. package/dist/src/core/index.d.cts +45 -29
  36. package/dist/src/core/index.d.ts +45 -29
  37. package/dist/src/core/index.js +96 -22
  38. package/dist/src/core/index.js.map +1 -1
  39. package/package.json +7 -7
  40. package/dist/host/agents/skills/orkestrel-build-application/references/application.md +0 -129
@@ -128,6 +128,7 @@ var HOST_PATHS = Object.freeze([
128
128
  "tests/policy.test.ts",
129
129
  "tests/config.test.ts",
130
130
  "configs/helpers.ts",
131
+ "configs/policy.ts",
131
132
  ".editorconfig",
132
133
  ".gitattributes",
133
134
  ".gitignore",
@@ -233,16 +234,16 @@ var NAME_PATTERN = /^[a-z][a-z0-9-]*$/;
233
234
  */
234
235
  var DEPENDENCY_NAME_PATTERN = /^@orkestrel\/[a-z][a-z0-9-]*$/;
235
236
  /**
236
- * The development extra name syntax: any valid npm package name.
237
+ * The package name syntax for a dependency this package does not publish.
237
238
  *
238
239
  * @remarks
239
- * Wider than a runtime dependency name on purpose. An extra is manifest content
240
- * and never reaches a path, so it may carry any scope or no scope at all. The
241
- * single optional `/` is still fixed to the one scope boundary, and neither `..`
242
- * nor a backslash is admitted, so the shape cannot express a traversal even
243
- * though it accepts far more names.
240
+ * A foreign package is one this package does not publish, so its name reaches
241
+ * no path. It may carry any scope or no scope at all. Each name segment begins
242
+ * with an alphanumeric character after an optional leading `@`, and the name
243
+ * carries at most one `/`. No segment can therefore be `..`, and no backslash
244
+ * is admitted, so the shape cannot express a traversal.
244
245
  */
245
- var EXTRA_NAME_PATTERN = /^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/;
246
+ var FOREIGN_NAME_PATTERN = /^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/;
246
247
  /** The exact three-component version syntax a blueprint declares. */
247
248
  var VERSION_PATTERN = /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/;
248
249
  /**
@@ -257,6 +258,15 @@ var VERSION_PATTERN = /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/;
257
258
  var ORKESTREL_RANGE_PATTERN = /^\^0\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/;
258
259
  /** The registry-only semver subset accepted for a development extra's range. */
259
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
+ /**
262
+ * The exact three-component floor accepted for a foreign peer's range.
263
+ *
264
+ * @remarks
265
+ * This is independent from {@link ENGINES_PATTERN}. An engine floors the Node
266
+ * runtime a workspace supports, while a peer floors a tool the consumer
267
+ * supplies. Either obligation may change without changing the other.
268
+ */
269
+ var FLOOR_RANGE_PATTERN = /^>=(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/;
260
270
  /** The minimum-Node engine syntax a blueprint declares. */
261
271
  var ENGINES_PATTERN = /^>=(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/;
262
272
  /** Exact lowercase hexadecimal bytes: two digits per byte, and empty content is valid. */
@@ -304,7 +314,7 @@ var DEFAULT_ENGINES = `>=${MINIMUM_NODE_VERSION}`;
304
314
  /** The tooling versions scaffold and every generated workspace share. */
305
315
  var BASE_DEV_DEPENDENCIES = Object.freeze({
306
316
  "@orkestrel/guide": "^0.0.12",
307
- "@orkestrel/scaffold": "^0.0.40",
317
+ "@orkestrel/scaffold": "^0.0.41",
308
318
  "@orkestrel/test": "^0.0.6",
309
319
  "@types/node": "^26.2.0",
310
320
  oxfmt: "^0.62.0",
@@ -404,6 +414,7 @@ var CONFIG_TEMPLATES = Object.freeze({
404
414
  `,
405
415
  vite: `import type { {{viteTypes}} } from 'vite'
406
416
  {{imports}}import { defineConfig, mergeConfig } from 'vitest/config'
417
+ import manifest from './package.json' with { type: 'json' }
407
418
  import tsconfig from './tsconfig.json' with { type: 'json' }
408
419
  {{helpers}}{{browsers}}import { fileURLToPath, URL } from 'node:url'
409
420
 
@@ -411,6 +422,18 @@ import tsconfig from './tsconfig.json' with { type: 'json' }
411
422
  return fileURLToPath(new URL(relativePath, import.meta.url))
412
423
  }
413
424
 
425
+ const peerDependencies = 'peerDependencies' in manifest ? manifest.peerDependencies : undefined
426
+ if (
427
+ peerDependencies !== undefined &&
428
+ (typeof peerDependencies !== 'object' ||
429
+ peerDependencies === null ||
430
+ Array.isArray(peerDependencies))
431
+ ) {
432
+ throw new Error('package peerDependencies must be an object')
433
+ }
434
+ export const peers: readonly string[] =
435
+ peerDependencies === undefined ? [] : Object.keys(peerDependencies)
436
+
414
437
  const resolve = {
415
438
  alias: Object.entries(tsconfig.compilerOptions.paths).reduce((aliases, [key, values]) => {
416
439
  const [path] = values
@@ -538,7 +561,13 @@ const resolve = {
538
561
  },
539
562
  outDir: 'dist/bin',
540
563
  target: 'node22',
541
- rolldownOptions: { external: [/^node:/, /^@orkestrel\\//, /^@src\\//] },
564
+ rolldownOptions: {
565
+ external: (id: string) =>
566
+ id.startsWith('node:') ||
567
+ id.startsWith('@orkestrel/') ||
568
+ id.startsWith('@src/') ||
569
+ peers.some((peer) => id === peer || id.startsWith(peer + '/')),
570
+ },
542
571
  },
543
572
  test: {
544
573
  name: { label: 'src:bin', color: 'yellow' },
@@ -659,6 +688,24 @@ export function appBrowser(): UserConfig {
659
688
  setupFiles: ['./tests/setup.ts'],
660
689
  environment: 'node',
661
690
  browser: { enabled: false },
691
+ // A config test validates every target wrapper and runs the real linter twice with
692
+ // 15-second child caps, so this budget clears both caps and reports their diagnostics.
693
+ testTimeout: 45_000,
694
+ },
695
+ },
696
+ options ?? {},
697
+ )
698
+ `,
699
+ setup: `export const setup = (options?: UserConfig): UserConfig =>
700
+ mergeConfig(
701
+ {
702
+ resolve,
703
+ test: {
704
+ name: { label: 'setup', color: 'white' },
705
+ include: ['tests/setup*.test.ts'],
706
+ setupFiles: ['./tests/setup.ts'],
707
+ environment: 'node',
708
+ browser: { enabled: false },
662
709
  },
663
710
  },
664
711
  options ?? {},
@@ -894,7 +941,7 @@ export const probe = (options?: UserConfig): UserConfig =>
894
941
  core: `import { defineConfig } from 'vite'
895
942
  import dts from 'vite-plugin-dts'
896
943
  import { environmentBoundary, outputBoundary } from '../helpers.js'
897
- import { srcCore, resolveWorkspacePath } from '../../vite.config.ts'
944
+ import { peers, srcCore, resolveWorkspacePath } from '../../vite.config.ts'
898
945
 
899
946
  export default defineConfig(
900
947
  srcCore({
@@ -922,7 +969,12 @@ export default defineConfig(
922
969
  fileName: (format) => (format === 'es' ? 'index.js' : 'index.cjs'),
923
970
  },
924
971
  outDir: 'dist/src/core',
925
- rolldownOptions: { external: [/^node:/, /^@orkestrel\\//] },
972
+ rolldownOptions: {
973
+ external: (id: string) =>
974
+ id.startsWith('node:') ||
975
+ id.startsWith('@orkestrel/') ||
976
+ peers.some((peer) => id === peer || id.startsWith(peer + '/')),
977
+ },
926
978
  },
927
979
  }),
928
980
  )
@@ -1715,6 +1767,7 @@ var isBlueprint = recordOf({
1715
1767
  engines: isString,
1716
1768
  overrides: andOf(isCollection, arrayOf(isOverride)),
1717
1769
  bin: isBoolean,
1770
+ setup: isBoolean,
1718
1771
  guides: isBoolean,
1719
1772
  distribution: isBoolean,
1720
1773
  integration: isBoolean,
@@ -2972,7 +3025,10 @@ function srcToExports(src) {
2972
3025
  * each declared axis adds the set its host needs. A declared extra or peer is
2973
3026
  * applied after those, so a workspace that pins a range for a package the
2974
3027
  * conditional sets also name gets the range it declared. An extra that restates
2975
- * a shared toolchain pin never reaches here, because the gate refuses it.
3028
+ * a shared toolchain pin never reaches here, because the gate refuses it. A peer
3029
+ * that names a development tool already selected keeps that tool's pin, because
3030
+ * the peer's floor states what consumers may supply rather than what this workspace
3031
+ * develops against.
2976
3032
  *
2977
3033
  * A peer is declared here as well as under `peerDependencies`, because a peer is
2978
3034
  * not installed by the workspace that declares it and developing against one
@@ -3005,7 +3061,7 @@ function blueprintToDevDependencies(blueprint) {
3005
3061
  ...blueprint.app.includes("server") ? APP_SERVER_DEV_DEPENDENCIES : {}
3006
3062
  };
3007
3063
  for (const extra of blueprint.extras) merged[extra.name] = extra.range;
3008
- for (const peer of blueprint.peers) merged[peer.name] = peer.range;
3064
+ for (const peer of blueprint.peers) if (!Object.hasOwn(merged, peer.name)) merged[peer.name] = peer.range;
3009
3065
  const own = blueprint.src.length > 0 ? `@orkestrel/${blueprint.name}` : blueprint.name;
3010
3066
  const runtime = new Set(blueprint.dependencies.map((dependency) => dependency.name));
3011
3067
  return Object.fromEntries(Object.entries(merged).filter(([name]) => name !== own && !runtime.has(name)).sort(([left], [right]) => compareValues(left, right)));
@@ -3078,6 +3134,7 @@ function blueprintToScripts(blueprint) {
3078
3134
  ...blueprint.app.length > 0 ? ["npm run test:app"] : [],
3079
3135
  "npm run test:policy",
3080
3136
  "npm run test:config",
3137
+ ...blueprint.setup ? ["npm run test:setup"] : [],
3081
3138
  ...blueprint.guides ? ["npm run test:guides"] : [],
3082
3139
  ...blueprint.conformance ? ["npm run test:conformance"] : [],
3083
3140
  ...integrates ? ["npm run test:integration"] : [],
@@ -3098,6 +3155,7 @@ function blueprintToScripts(blueprint) {
3098
3155
  }
3099
3156
  scripts["test:policy"] = `${vitest} --project policy`;
3100
3157
  scripts["test:config"] = `${vitest} --project config`;
3158
+ if (blueprint.setup) scripts["test:setup"] = `${vitest} --project setup`;
3101
3159
  if (blueprint.guides) scripts["test:guides"] = `${vitest} --project guides`;
3102
3160
  if (blueprint.conformance) scripts["test:conformance"] = `${vitest} --project conformance`;
3103
3161
  scripts["test:probe"] = "vitest run --config vite.config.ts --no-cache --reporter=verbose --project probe";
@@ -3321,7 +3379,12 @@ function blueprintToRootVite(blueprint) {
3321
3379
  if (blueprint.src.includes("browser")) {
3322
3380
  const core = blueprint.src.includes("core");
3323
3381
  factories.push(fillTemplate(CONFIG_TEMPLATES.factories.src.browser, {
3324
- external: core ? "external: (id: string) => id === '@src/core' || id.startsWith('@orkestrel/')," : "external: (id: string) => id.startsWith('@orkestrel/'),",
3382
+ external: core ? `external: (id: string) =>
3383
+ id === '@src/core' ||
3384
+ id.startsWith('@orkestrel/') ||
3385
+ peers.some((peer) => id === peer || id.startsWith(peer + '/')),` : `external: (id: string) =>
3386
+ id.startsWith('@orkestrel/') ||
3387
+ peers.some((peer) => id === peer || id.startsWith(peer + '/')),`,
3325
3388
  output: core ? " output: { paths: { '@src/core': '../core/index.js' } }," : " output: {},",
3326
3389
  exclude: core ? " exclude: ['tests/src/core/**/*.test.ts'],\n" : "",
3327
3390
  global: blueprint.global ? " globalSetup: ['./tests/setupGlobal.ts'],\n" : ""
@@ -3332,7 +3395,13 @@ function blueprintToRootVite(blueprint) {
3332
3395
  const core = blueprint.src.includes("core");
3333
3396
  factories.push(fillTemplate(CONFIG_TEMPLATES.factories.src.server, {
3334
3397
  external: core ? `external: (id: string) =>
3335
- id === '@src/core' || id.startsWith('node:') || id.startsWith('@orkestrel/'),` : "external: (id: string) => id.startsWith('node:') || id.startsWith('@orkestrel/'),",
3398
+ id === '@src/core' ||
3399
+ id.startsWith('node:') ||
3400
+ id.startsWith('@orkestrel/') ||
3401
+ peers.some((peer) => id === peer || id.startsWith(peer + '/')),` : `external: (id: string) =>
3402
+ id.startsWith('node:') ||
3403
+ id.startsWith('@orkestrel/') ||
3404
+ peers.some((peer) => id === peer || id.startsWith(peer + '/')),`,
3336
3405
  output: core ? `\t\t\t\t\toutput: [
3337
3406
  {
3338
3407
  format: 'es',
@@ -3419,6 +3488,10 @@ export function appShowcase(): UserConfig {
3419
3488
  projects.push("policy");
3420
3489
  factories.push(CONFIG_TEMPLATES.factories.config);
3421
3490
  projects.push("config");
3491
+ if (blueprint.setup) {
3492
+ factories.push(CONFIG_TEMPLATES.factories.setup);
3493
+ projects.push("setup");
3494
+ }
3422
3495
  if (blueprint.guides) {
3423
3496
  factories.push(CONFIG_TEMPLATES.factories.guides);
3424
3497
  projects.push("guides");
@@ -4077,11 +4150,11 @@ function planToFindings(plan, current) {
4077
4150
  * range, in list order.
4078
4151
  *
4079
4152
  * @remarks
4080
- * The three declared lists differ only in the two syntaxes they accept, so the
4081
- * rules live here once and each caller supplies its own patterns. A runtime
4082
- * dependency name reaches a path through its guide mirror and is fixed to the
4083
- * `@orkestrel` scope; a development extra never reaches a path and admits any
4084
- * valid npm name.
4153
+ * The declared lists and peer partitions differ only in the two syntaxes they
4154
+ * accept, so the rules live here once and each caller supplies its own patterns.
4155
+ * A runtime dependency name reaches a path through its guide mirror and is
4156
+ * fixed to the `@orkestrel` scope. A foreign peer or development extra reaches
4157
+ * no path and admits any valid npm name.
4085
4158
  *
4086
4159
  * Both patterns must be stateless. A global or sticky pattern carries a
4087
4160
  * `lastIndex` between calls, so it would answer differently for the same input
@@ -4239,7 +4312,7 @@ function blueprintToQuestions(blueprint) {
4239
4312
  message: "showcase projects a browser app, and this workspace declares none, so it emits nothing.",
4240
4313
  blocking: false
4241
4314
  });
4242
- questions.push(...dependenciesToQuestions(blueprint.dependencies, "dependencies", DEPENDENCY_NAME_PATTERN, ORKESTREL_RANGE_PATTERN), ...dependenciesToQuestions(blueprint.peers, "peers", DEPENDENCY_NAME_PATTERN, ORKESTREL_RANGE_PATTERN), ...dependenciesToQuestions(blueprint.extras, "extras", EXTRA_NAME_PATTERN, EXTRA_RANGE_PATTERN));
4315
+ questions.push(...dependenciesToQuestions(blueprint.dependencies, "dependencies", DEPENDENCY_NAME_PATTERN, ORKESTREL_RANGE_PATTERN), ...dependenciesToQuestions(blueprint.peers.filter((peer) => peer.name.startsWith("@orkestrel/")), "peers", DEPENDENCY_NAME_PATTERN, ORKESTREL_RANGE_PATTERN), ...dependenciesToQuestions(blueprint.peers.filter((peer) => !peer.name.startsWith("@orkestrel/")), "peers", FOREIGN_NAME_PATTERN, FLOOR_RANGE_PATTERN), ...dependenciesToQuestions(blueprint.extras, "extras", FOREIGN_NAME_PATTERN, EXTRA_RANGE_PATTERN));
4243
4316
  const lists = [
4244
4317
  ["dependencies", blueprint.dependencies],
4245
4318
  ["peers", blueprint.peers],
@@ -4741,6 +4814,7 @@ function createBlueprint(name, input) {
4741
4814
  engines: input?.engines ?? DEFAULT_ENGINES,
4742
4815
  overrides: input?.overrides ?? [],
4743
4816
  bin: input?.bin ?? false,
4817
+ setup: input?.setup ?? false,
4744
4818
  guides: input?.guides ?? false,
4745
4819
  distribution: input?.distribution ?? false,
4746
4820
  integration: input?.integration ?? false,
@@ -4773,6 +4847,6 @@ function createCompiler(options) {
4773
4847
  return new Compiler(options);
4774
4848
  }
4775
4849
  //#endregion
4776
- 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_NAME_PATTERN, EXTRA_RANGE_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 };
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 };
4777
4851
 
4778
4852
  //# sourceMappingURL=index.js.map