@orkestrel/scaffold 0.0.63 → 0.0.65
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 +29 -104
- package/dist/bin/main.js +95 -27
- package/dist/bin/main.js.map +1 -1
- package/dist/host/AGENTS.md +2 -2
- package/dist/host/CLAUDE.md +6 -0
- package/dist/host/agents/orchestration.md +23 -15
- package/dist/host/agents/skills/enterprise-bootstrap/SKILL.md +184 -177
- package/dist/host/agents/skills/enterprise-bootstrap/references/bootstrap-reference.md +314 -91
- package/dist/host/agents/skills/enterprise-bootstrap/references/color-modes.md +241 -0
- package/dist/host/agents/skills/enterprise-bootstrap/references/components.md +83 -36
- package/dist/host/agents/skills/enterprise-bootstrap/references/frontend-design.md +297 -98
- package/dist/host/agents/skills/enterprise-bootstrap/references/inputs.md +25 -14
- package/dist/host/agents/skills/enterprise-bootstrap/references/inspection.md +216 -128
- package/dist/host/agents/skills/enterprise-bootstrap/references/responsive-layout.md +187 -0
- package/dist/host/agents/skills/enterprise-bootstrap/references/utilities.md +109 -20
- package/dist/host/agents/skills/orkestrel-debrief/references/field-testing.md +5 -5
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +1 -1
- package/dist/host/agents/skills/orkestrel-publish/SKILL.md +15 -15
- package/dist/host/agents/skills/orkestrel-publish/references/wave.md +43 -17
- package/dist/host/agents/skills/orkestrel-publish/references/window.md +41 -16
- package/dist/host/claude/agents/orkestrel.md +56 -56
- package/dist/host/claude/agents/reviewer.md +13 -0
- package/dist/host/claude/rules/architecture.md +51 -45
- package/dist/host/claude/rules/documentation.md +18 -1
- package/dist/host/claude/rules/portability.md +2 -0
- package/dist/host/claude/rules/quality.md +1 -1
- package/dist/host/claude/rules/tests.md +12 -11
- package/dist/host/claude/rules/typescript.md +5 -0
- package/dist/host/claude/rules/workspace.md +25 -20
- package/dist/host/claude/rules/writing.md +4 -0
- package/dist/host/claude/settings.json +1 -1
- package/dist/host/claude/skills/enterprise-bootstrap/SKILL.md +10 -9
- package/dist/host/codex/agents/orkestrel.toml +3 -3
- package/dist/host/codex/agents/reviewer.toml +4 -2
- package/dist/host/configs/helpers.ts +311 -2
- package/dist/host/configs/policy.ts +1100 -51
- package/dist/host/dotfiles/oxlintrc.json +72 -1
- package/dist/host/guides/guide.md +749 -222
- package/dist/host/guides/scaffold.md +529 -394
- package/dist/host/manifest.json +53 -40
- package/dist/host/scripts/ollama.sh +322 -13
- package/dist/host/tests/config.test.ts +1200 -16
- package/dist/host/tests/policy.test.ts +157 -173
- package/dist/host/tests/setupPolicy.ts +522 -1007
- package/dist/src/core/index.cjs +402 -287
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +160 -128
- package/dist/src/core/index.d.ts +160 -128
- package/dist/src/core/index.js +400 -286
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +28 -21
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +38 -33
- package/dist/src/server/index.d.ts +38 -33
- package/dist/src/server/index.js +28 -21
- package/dist/src/server/index.js.map +1 -1
- package/package.json +18 -19
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
# Scaffold
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
> real directory, and writes the difference.
|
|
5
|
-
> entry points: `@orkestrel/scaffold` is the pure compiler and its data contracts, and
|
|
6
|
-
> `@orkestrel/scaffold/server` is the filesystem writer and the network reader. Source:
|
|
7
|
-
> [`src/core/index.ts`](../src/core/index.ts) and [`src/server/index.ts`](../src/server/index.ts).
|
|
3
|
+
> A compiler that turns a workspace specification into an ordered list of files, compares that list
|
|
4
|
+
> to a real directory, and writes the difference.
|
|
8
5
|
|
|
9
6
|
The package exists because every `@orkestrel` repository shares the same toolchain, the same agent
|
|
10
7
|
instructions, and the same root dotfiles. Keeping every copy of those files in agreement by hand
|
|
@@ -14,10 +11,10 @@ write the difference back.
|
|
|
14
11
|
|
|
15
12
|
That root stages the vendored set and the instruction canon, and a target meets them differently.
|
|
16
13
|
`HOST_PATHS` names the vendored set — the licence, the harness permission file, the
|
|
17
|
-
session-start hooks, the shared policy register, the shared policy
|
|
18
|
-
the shared configuration leaf and its proof, the byte-identical
|
|
19
|
-
a generated workspace starts from, never its own guide — and
|
|
20
|
-
the paths it selects, which the verbs write and compare.
|
|
14
|
+
session-start hooks, the shared policy register, the shared policy
|
|
15
|
+
proof, the shared policy plugin, the shared configuration leaf and its proof, the byte-identical
|
|
16
|
+
root dotfiles, and the guide mirrors a generated workspace starts from, never its own guide — and
|
|
17
|
+
each target carries its own copy of the paths it selects, which the verbs write and compare.
|
|
21
18
|
`CANON_PATHS` names the instruction canon — the coding and orchestration contracts, the rules, the
|
|
22
19
|
skills, the templates, the transport contracts, the agent roles, the bench configuration, and the
|
|
23
20
|
MCP registrations — which stays in one place and is published for reading. A target carries the
|
|
@@ -36,7 +33,7 @@ print. Limits states what that leaves unproven and what covers it instead.
|
|
|
36
33
|
npm install --save-dev @orkestrel/scaffold
|
|
37
34
|
```
|
|
38
35
|
|
|
39
|
-
The executable needs Node 22.
|
|
36
|
+
The executable needs Node 22.18.0 or later. Run it through `npx` without installing:
|
|
40
37
|
|
|
41
38
|
```sh
|
|
42
39
|
npx @orkestrel/scaffold --help
|
|
@@ -51,241 +48,242 @@ Exported from `@orkestrel/scaffold`, and reachable from
|
|
|
51
48
|
|
|
52
49
|
#### Types
|
|
53
50
|
|
|
54
|
-
| Name | Kind | Summary
|
|
55
|
-
| ------------------- | ---- |
|
|
56
|
-
| `Artifact` | type |
|
|
57
|
-
| `BuildFormat` | type |
|
|
58
|
-
| `CatalogEntry` | type |
|
|
59
|
-
| `CompileStage` | type |
|
|
60
|
-
| `CompilerEventMap` | type |
|
|
61
|
-
| `HostFile` | type |
|
|
62
|
-
| `Drift` | type |
|
|
63
|
-
| `Environment` | type |
|
|
64
|
-
| `Finding` | type |
|
|
65
|
-
| `Group` | type |
|
|
66
|
-
| `Lookup` | type |
|
|
67
|
-
| `Mirror` | type |
|
|
68
|
-
| `Origin` | type |
|
|
69
|
-
| `Ownership` | type |
|
|
70
|
-
| `Release` | type |
|
|
71
|
-
| `ScaffoldErrorCode` | type |
|
|
72
|
-
| `Snapshot` | type |
|
|
51
|
+
| Name | Kind | Summary |
|
|
52
|
+
| ------------------- | ---- | ----------------------------------------------------------------------------------------------------------- |
|
|
53
|
+
| `Artifact` | type | Represents one file in a plan, discriminated by how its content is produced and what scaffold claims of it. |
|
|
54
|
+
| `BuildFormat` | type | Names one module format a published library environment builds. |
|
|
55
|
+
| `CatalogEntry` | type | Represents one package row of the fleet catalog. |
|
|
56
|
+
| `CompileStage` | type | Names the compile phases, in the order they run. |
|
|
57
|
+
| `CompilerEventMap` | type | Represents the compiler's observation channel. |
|
|
58
|
+
| `HostFile` | type | Represents one vendored file read from the repository, beside the target bytes it answers for. |
|
|
59
|
+
| `Drift` | type | Names how one target path compares to the artifact planned for it. |
|
|
60
|
+
| `Environment` | type | Names one environment a generated workspace selects on its `src` or `app` axis. |
|
|
61
|
+
| `Finding` | type | Represents one drift verdict against a target path. |
|
|
62
|
+
| `Group` | type | Names the artifact group a plan selects over. |
|
|
63
|
+
| `Lookup` | type | Names how an upstream lookup resolved: found, missing, unmatched, or failed. |
|
|
64
|
+
| `Mirror` | type | Represents one dependency guide fetched from upstream, beside the local mirror it answers for. |
|
|
65
|
+
| `Origin` | type | Names how an artifact's content is produced. |
|
|
66
|
+
| `Ownership` | type | Names what scaffold claims at an artifact's path. |
|
|
67
|
+
| `Release` | type | Represents one declared dependency range measured against a registry release. |
|
|
68
|
+
| `ScaffoldErrorCode` | type | Names the coded reasons a scaffold error is raised. |
|
|
69
|
+
| `Snapshot` | type | Holds exact lowercase hexadecimal target bytes keyed by artifact-relative path. |
|
|
73
70
|
|
|
74
71
|
#### Interfaces
|
|
75
72
|
|
|
76
|
-
| Name | Kind | Summary
|
|
77
|
-
| ----------------------- | --------- |
|
|
78
|
-
| `AppDefinition` | interface |
|
|
79
|
-
| `ArtifactBase` | interface |
|
|
80
|
-
| `Audit` | interface |
|
|
81
|
-
| `Blueprint` | interface |
|
|
82
|
-
| `CompileFailure` | interface |
|
|
83
|
-
| `CompileRecord` | interface |
|
|
84
|
-
| `CompilerInterface` | interface |
|
|
85
|
-
| `CompilerOptions` | interface |
|
|
86
|
-
| `ContentArtifact` | interface |
|
|
87
|
-
| `Dependency` | interface |
|
|
88
|
-
| `DependencyPinSet` | interface |
|
|
89
|
-
| `HostArtifact` | interface |
|
|
90
|
-
| `HydratedArtifact` | interface |
|
|
91
|
-
| `ManifestDependencySet` | interface |
|
|
92
|
-
| `ManifestRegionSet` | interface |
|
|
93
|
-
| `ManifestScript` | interface |
|
|
94
|
-
| `Override` | interface |
|
|
95
|
-
| `Plan` | interface |
|
|
96
|
-
| `PlanSummary` | interface |
|
|
97
|
-
| `Question` | interface |
|
|
98
|
-
| `Scaffolding` | interface |
|
|
99
|
-
| `SrcDefinition` | interface |
|
|
100
|
-
| `ViteMachinery` | interface |
|
|
73
|
+
| Name | Kind | Summary |
|
|
74
|
+
| ----------------------- | --------- | ------------------------------------------------------------------------------------------------- |
|
|
75
|
+
| `AppDefinition` | interface | Describes the configuration and runtime-entry settings one private `app` environment contributes. |
|
|
76
|
+
| `ArtifactBase` | interface | Describes the fields every planned file carries. |
|
|
77
|
+
| `Audit` | interface | Represents the whole comparison of a plan against a target's current content. |
|
|
78
|
+
| `Blueprint` | interface | Represents the closed, JSON-serializable workspace specification. |
|
|
79
|
+
| `CompileFailure` | interface | Represents the coded reason one compile stage failed. |
|
|
80
|
+
| `CompileRecord` | interface | Holds the input and output snapshot of one compile stage. |
|
|
81
|
+
| `CompilerInterface` | interface | Describes the compilation contract: pure, synchronous, and host-independent. |
|
|
82
|
+
| `CompilerOptions` | interface | Represents the options for the compiler. |
|
|
83
|
+
| `ContentArtifact` | interface | Represents a text file produced by the template or computed compilation path. |
|
|
84
|
+
| `Dependency` | interface | Represents one runtime `@orkestrel/*` dependency of a generated workspace. |
|
|
85
|
+
| `DependencyPinSet` | interface | Describes the runtime and development sections a range-writing operation may change. |
|
|
86
|
+
| `HostArtifact` | interface | Represents a file byte-copied from the vendored data root, planned before its bytes are read. |
|
|
87
|
+
| `HydratedArtifact` | interface | Represents a vendored file whose exact bytes have been read, so its content can be compared. |
|
|
88
|
+
| `ManifestDependencySet` | interface | Describes the runtime, development, and peer sections read from an existing package manifest. |
|
|
89
|
+
| `ManifestRegionSet` | interface | Describes the manifest regions a writing operation may change. |
|
|
90
|
+
| `ManifestScript` | interface | Represents one manifest script a region-writing operation may replace. |
|
|
91
|
+
| `Override` | interface | Represents one artifact override. |
|
|
92
|
+
| `Plan` | interface | Holds the compiled, ordered artifact list and the selection it covers. |
|
|
93
|
+
| `PlanSummary` | interface | Represents the tally of one plan by artifact origin. |
|
|
94
|
+
| `Question` | interface | Represents one validation issue raised against a blueprint or a plan. |
|
|
95
|
+
| `Scaffolding` | interface | Represents the replayable outcome of one compile. |
|
|
96
|
+
| `SrcDefinition` | interface | Describes the build and export settings one published `src` environment contributes. |
|
|
97
|
+
| `ViteMachinery` | interface | Names which host-specific pipelines a generated root Vite configuration carries. |
|
|
101
98
|
|
|
102
99
|
#### Constants
|
|
103
100
|
|
|
104
|
-
| Name | Kind | Summary
|
|
105
|
-
| --------------------------------- | ----- |
|
|
106
|
-
| `APP_BROWSER_DEV_DEPENDENCIES` | const |
|
|
107
|
-
| `APP_DEV_DEPENDENCIES` | const |
|
|
108
|
-
| `APP_MATRIX` | const |
|
|
109
|
-
| `APP_SERVER_DEV_DEPENDENCIES` | const |
|
|
110
|
-
| `ARTIFACT_TEMPLATES` | const |
|
|
111
|
-
| `BASE_DEV_DEPENDENCIES` | const |
|
|
112
|
-
| `BIN_CONFIGS` | const |
|
|
113
|
-
| `BIN_ENTRY_PATH` | const |
|
|
114
|
-
| `CANON_PATHS` | const |
|
|
115
|
-
| `CATALOG_AGENT_PATH` | const |
|
|
116
|
-
| `CATALOG_CLOSING_MARKER` | const |
|
|
117
|
-
| `CATALOG_OPENING_MARKER` | const |
|
|
118
|
-
| `CONFIG_TEMPLATES` | const |
|
|
119
|
-
| `CONFORMANCE_TEST_PATH` | const |
|
|
120
|
-
| `CONTROL_CHARACTER_PATTERN` | const | Unicode controls, formatting controls, and line and paragraph separators rejected in text.
|
|
121
|
-
| `DECLARATION_DEV_DEPENDENCIES` | const |
|
|
122
|
-
| `DEFAULT_ENGINES` | const |
|
|
123
|
-
| `DEFAULT_VERSION` | const |
|
|
124
|
-
| `DEPENDENCY_NAME_PATTERN` | const |
|
|
125
|
-
| `DISTRIBUTION_TEST_PATH` | const |
|
|
126
|
-
| `ENGINES_PATTERN` | const |
|
|
127
|
-
| `ENVIRONMENTS` | const |
|
|
128
|
-
| `EXECUTABLE_PATHS` | const |
|
|
129
|
-
| `EXTRA_RANGE_PATTERN` | const |
|
|
130
|
-
| `FLOOR_RANGE_PATTERN` | const |
|
|
131
|
-
| `FOREIGN_NAME_PATTERN` | const |
|
|
132
|
-
| `GLOBAL_SETUP_PATH` | const |
|
|
133
|
-
| `GROUPS` | const |
|
|
134
|
-
| `GUIDES_TEST_PATH` | const |
|
|
135
|
-
| `HEX_PATTERN` | const |
|
|
136
|
-
| `HOST_PATHS` | const |
|
|
137
|
-
| `HOST_INVENTORY_PATH` | const |
|
|
138
|
-
| `INTEGRATION_TEST_PATH` | const |
|
|
139
|
-
| `INVALID_PATH_CHARACTER_PATTERN` | const |
|
|
140
|
-
| `MANIFEST_PATH` | const |
|
|
141
|
-
| `MAX_ARTIFACT_BYTES` | const |
|
|
142
|
-
| `MAX_ARTIFACT_HEX_LENGTH` | const |
|
|
143
|
-
| `MAX_AUDIT_FINDINGS` | const |
|
|
144
|
-
| `MAX_COLLECTION_ITEMS` | const |
|
|
145
|
-
| `MAX_DEPENDENCY_NAME_LENGTH` | const |
|
|
146
|
-
| `MAX_MANIFEST_BYTES` | const |
|
|
147
|
-
| `MAX_NAME_LENGTH` | const |
|
|
148
|
-
| `MAX_PATH_LENGTH` | const |
|
|
149
|
-
| `MAX_RANGE_LENGTH` | const |
|
|
150
|
-
| `MAX_REGISTRY_BYTES` | const |
|
|
151
|
-
| `MAX_SCRIPT_LENGTH` | const |
|
|
152
|
-
| `MAX_TOTAL_ARTIFACT_BYTES` | const |
|
|
153
|
-
| `MAX_TOTAL_REGISTRY_BYTES` | const |
|
|
154
|
-
| `MINIMUM_NODE_VERSION` | const |
|
|
155
|
-
| `
|
|
156
|
-
| `
|
|
157
|
-
| `
|
|
158
|
-
| `
|
|
159
|
-
| `
|
|
160
|
-
| `
|
|
161
|
-
| `
|
|
162
|
-
| `
|
|
163
|
-
| `
|
|
164
|
-
| `
|
|
165
|
-
| `
|
|
166
|
-
| `
|
|
167
|
-
| `
|
|
168
|
-
| `
|
|
169
|
-
| `
|
|
170
|
-
| `
|
|
101
|
+
| Name | Kind | Summary |
|
|
102
|
+
| --------------------------------- | ----- | ------------------------------------------------------------------------------------------------------ |
|
|
103
|
+
| `APP_BROWSER_DEV_DEPENDENCIES` | const | Lists the development dependencies a private Vue browser application adds. |
|
|
104
|
+
| `APP_DEV_DEPENDENCIES` | const | Names the development dependency every private `app` environment adds. |
|
|
105
|
+
| `APP_MATRIX` | const | Holds the configuration and runtime-entry settings each private `app` environment contributes, frozen. |
|
|
106
|
+
| `APP_SERVER_DEV_DEPENDENCIES` | const | Lists the development dependencies a private server application adds. |
|
|
107
|
+
| `ARTIFACT_TEMPLATES` | const | Holds formatter-stable template text for source, test, document, guide, and service artifacts. |
|
|
108
|
+
| `BASE_DEV_DEPENDENCIES` | const | Holds the tooling versions scaffold and every generated workspace share. |
|
|
109
|
+
| `BIN_CONFIGS` | const | Lists the configuration files a workspace that ships its own executable adds, frozen. |
|
|
110
|
+
| `BIN_ENTRY_PATH` | const | Names the executable entry whose presence makes a workspace `bin`. |
|
|
111
|
+
| `CANON_PATHS` | const | Lists the instruction-canon paths staged for reading rather than for a target, frozen. |
|
|
112
|
+
| `CATALOG_AGENT_PATH` | const | Names the agent file whose marker-bounded package table the catalog verb alone owns. |
|
|
113
|
+
| `CATALOG_CLOSING_MARKER` | const | Names the marker closing the package table inside `CATALOG_AGENT_PATH`. |
|
|
114
|
+
| `CATALOG_OPENING_MARKER` | const | Names the marker opening the package table inside `CATALOG_AGENT_PATH`. |
|
|
115
|
+
| `CONFIG_TEMPLATES` | const | Holds formatter-stable template text for every configuration artifact. |
|
|
116
|
+
| `CONFORMANCE_TEST_PATH` | const | Names the official-tooling drift proof whose presence makes a workspace `conformance`. |
|
|
117
|
+
| `CONTROL_CHARACTER_PATTERN` | const | Matches the Unicode controls, formatting controls, and line and paragraph separators rejected in text. |
|
|
118
|
+
| `DECLARATION_DEV_DEPENDENCIES` | const | Lists the development dependencies that roll declarations up for published source. |
|
|
119
|
+
| `DEFAULT_ENGINES` | const | Names the `engines.node` range a workspace starts with. |
|
|
120
|
+
| `DEFAULT_VERSION` | const | Names the version a workspace starts at. |
|
|
121
|
+
| `DEPENDENCY_NAME_PATTERN` | const | Matches the runtime dependency name syntax: the `@orkestrel` scope and a bare name. |
|
|
122
|
+
| `DISTRIBUTION_TEST_PATH` | const | Names the generated packed-package proof every publishing workspace is planned at. |
|
|
123
|
+
| `ENGINES_PATTERN` | const | Matches the minimum-Node engine syntax a blueprint declares. |
|
|
124
|
+
| `ENVIRONMENTS` | const | Lists the `Environment` values, frozen. |
|
|
125
|
+
| `EXECUTABLE_PATHS` | const | Lists the vendored paths a target receives with its executable bit set, frozen. |
|
|
126
|
+
| `EXTRA_RANGE_PATTERN` | const | Matches the registry-only semver subset accepted for a development extra's range. |
|
|
127
|
+
| `FLOOR_RANGE_PATTERN` | const | Matches the exact `major.minor.patch` floor accepted for a foreign peer's range. |
|
|
128
|
+
| `FOREIGN_NAME_PATTERN` | const | Matches the package name syntax for a dependency this package does not publish. |
|
|
129
|
+
| `GLOBAL_SETUP_PATH` | const | Names the shared Vitest global-setup module whose presence makes a workspace `global`. |
|
|
130
|
+
| `GROUPS` | const | Lists the `Group` values in plan order, frozen. |
|
|
131
|
+
| `GUIDES_TEST_PATH` | const | Names the package-owned guide-parity entry used by `test:guides` and to select the `guides` project. |
|
|
132
|
+
| `HEX_PATTERN` | const | Matches exact lowercase hexadecimal bytes: two digits per byte, and empty content is valid. |
|
|
133
|
+
| `HOST_PATHS` | const | Lists the paths a target receives from the vendored data root, frozen. |
|
|
134
|
+
| `HOST_INVENTORY_PATH` | const | Names the repository-relative path where the committed vendored-file inventory is served. |
|
|
135
|
+
| `INTEGRATION_TEST_PATH` | const | Names the cross-environment composition proof whose presence makes a workspace `integration`. |
|
|
136
|
+
| `INVALID_PATH_CHARACTER_PATTERN` | const | Matches the visible characters a target-relative path and a Markdown path cell both forbid. |
|
|
137
|
+
| `MANIFEST_PATH` | const | Names the manifest path every compiler plan emits with birth ownership. |
|
|
138
|
+
| `MAX_ARTIFACT_BYTES` | const | Caps the bytes accepted for one artifact. |
|
|
139
|
+
| `MAX_ARTIFACT_HEX_LENGTH` | const | Caps the length of the hexadecimal string carrying one artifact's bytes. |
|
|
140
|
+
| `MAX_AUDIT_FINDINGS` | const | Caps the findings one audit can produce from a bounded plan and snapshot. |
|
|
141
|
+
| `MAX_COLLECTION_ITEMS` | const | Caps the items accepted in one public collection. |
|
|
142
|
+
| `MAX_DEPENDENCY_NAME_LENGTH` | const | Sets the maximum dependency package name length, scope included, as the registry caps it. |
|
|
143
|
+
| `MAX_MANIFEST_BYTES` | const | Caps the bytes accepted for one package or vendored-host manifest. |
|
|
144
|
+
| `MAX_NAME_LENGTH` | const | Caps the bare workspace name length. |
|
|
145
|
+
| `MAX_PATH_LENGTH` | const | Caps the length of one path, matching the longest a supported filesystem accepts. |
|
|
146
|
+
| `MAX_RANGE_LENGTH` | const | Caps the length of one declared package range. |
|
|
147
|
+
| `MAX_REGISTRY_BYTES` | const | Caps the decoded bytes accepted from one registry response. |
|
|
148
|
+
| `MAX_SCRIPT_LENGTH` | const | Caps the length of one manifest script name or command. |
|
|
149
|
+
| `MAX_TOTAL_ARTIFACT_BYTES` | const | Caps the bytes retained across one whole plan or audit. |
|
|
150
|
+
| `MAX_TOTAL_REGISTRY_BYTES` | const | Caps the decoded bytes accepted across one registry-reading call. |
|
|
151
|
+
| `MINIMUM_NODE_VERSION` | const | Names the oldest Node version the generated toolchain supports. |
|
|
152
|
+
| `MINIMUM_NPM_VERSION` | const | Names the oldest npm version the generated toolchain supports. |
|
|
153
|
+
| `NAME_PATTERN` | const | Matches the bare workspace name syntax: lowercase alphanumeric with hyphens, letter first. |
|
|
154
|
+
| `ORCHESTRATION_PATH_NAMES` | const | Lists the exact root paths that wire an agent bench or own an orchestration directory, frozen. |
|
|
155
|
+
| `ORCHESTRATION_PATH_PREFIXES` | const | Lists the path prefixes whose contents instruct or wire an agent, frozen. |
|
|
156
|
+
| `ORKESTREL_RANGE_PATTERN` | const | Matches the exact caret-pinned pre-1.0 range accepted for an `@orkestrel/*` runtime dependency. |
|
|
157
|
+
| `PRINT_WIDTH` | const | Caps the columns one emitted line may occupy, matching `printWidth` in `.oxfmtrc.json`. |
|
|
158
|
+
| `RELEASE_PROOF_COMMAND` | const | Names the `prepublishOnly` row that runs the packed-package proof against a real registry. |
|
|
159
|
+
| `SERVICE_SCRIPT_PATH` | const | Names the inventory skeleton a workspace with declared service vendors is given once. |
|
|
160
|
+
| `SERVICE_SETUP_PATH` | const | Names the live-service readiness module whose presence makes a workspace `service`. |
|
|
161
|
+
| `SERVICE_TEST_INCLUDE` | const | Names the include the live-service project covers, which is a directory rather than one proof. |
|
|
162
|
+
| `SHOWCASE_CONFIG_PATH` | const | Names the Vite wrapper whose presence makes a workspace `showcase`. |
|
|
163
|
+
| `SHOWCASE_DEV_DEPENDENCIES` | const | Names the development dependency used only by the optional single-file showcase build. |
|
|
164
|
+
| `SOURCE_BROWSER_DEV_DEPENDENCIES` | const | Lists the development dependencies a published browser `src` environment adds. |
|
|
165
|
+
| `SRC_MATRIX` | const | Holds the build and export settings each published `src` environment contributes, frozen. |
|
|
166
|
+
| `TAB_WIDTH` | const | Sets the columns one tab occupies when the formatter measures a line, matching `tabWidth`. |
|
|
167
|
+
| `VERSION_PATTERN` | const | Matches the exact `major.minor.patch` version syntax a blueprint declares. |
|
|
168
|
+
| `WORKSPACE_DEV_ENGINES` | const | Holds the `devEngines` record every generated manifest carries. |
|
|
169
|
+
| `WORKSPACE_OWNED_PATHS` | const | Lists the vendored paths whose present bytes belong to each workspace, frozen. |
|
|
171
170
|
|
|
172
171
|
#### Guards
|
|
173
172
|
|
|
174
|
-
| Name | Kind | Summary
|
|
175
|
-
| ------------------- | -------- |
|
|
176
|
-
| `isArtifact` | const |
|
|
177
|
-
| `isAudit` | const |
|
|
178
|
-
| `isBlueprint` | const |
|
|
179
|
-
| `isCatalogEntry` | const |
|
|
180
|
-
| `isCollection` | function |
|
|
181
|
-
| `isCompilerHooks` | const |
|
|
182
|
-
| `isCompilerOptions` | const |
|
|
183
|
-
| `isContent` | const |
|
|
184
|
-
| `isDependency` | const |
|
|
185
|
-
| `isDependencyName` | const |
|
|
186
|
-
| `isEnvironment` | const |
|
|
187
|
-
| `isFinding` | const |
|
|
188
|
-
| `isGroup` | const |
|
|
189
|
-
| `isGroups` | const |
|
|
190
|
-
| `isHex` | const |
|
|
191
|
-
| `isManifestScript` | const |
|
|
192
|
-
| `isMirror` | const |
|
|
193
|
-
| `isOverride` | const |
|
|
194
|
-
| `isPath` | function |
|
|
195
|
-
| `isPlan` | const |
|
|
196
|
-
| `isQuestion` | const |
|
|
197
|
-
| `isScaffoldError` | function |
|
|
198
|
-
| `isSnapshot` | function |
|
|
173
|
+
| Name | Kind | Summary |
|
|
174
|
+
| ------------------- | -------- | --------------------------------------------------------------------------------- |
|
|
175
|
+
| `isArtifact` | const | Narrows a value to an `Artifact`. |
|
|
176
|
+
| `isAudit` | const | Narrows a value to an `Audit`. |
|
|
177
|
+
| `isBlueprint` | const | Narrows a value to a `Blueprint`. |
|
|
178
|
+
| `isCatalogEntry` | const | Narrows a value to a `CatalogEntry`. |
|
|
179
|
+
| `isCollection` | function | Narrows a value to an array within the limit one public collection accepts. |
|
|
180
|
+
| `isCompilerHooks` | const | Narrows a value to the compiler's initial listener record. |
|
|
181
|
+
| `isCompilerOptions` | const | Narrows a value to `CompilerOptions`. |
|
|
182
|
+
| `isContent` | const | Narrows a value to text this package will accept as one artifact's content. |
|
|
183
|
+
| `isDependency` | const | Narrows a value to a `Dependency`. |
|
|
184
|
+
| `isDependencyName` | const | Narrows a value to the scoped package name a runtime dependency carries. |
|
|
185
|
+
| `isEnvironment` | const | Narrows a value to one `Environment` a workspace may select. |
|
|
186
|
+
| `isFinding` | const | Narrows a value to a `Finding`. |
|
|
187
|
+
| `isGroup` | const | Narrows a value to one `Group` a plan selects over. |
|
|
188
|
+
| `isGroups` | const | Narrows a value to a bounded group selection. |
|
|
189
|
+
| `isHex` | const | Narrows a value to exact lowercase hexadecimal bytes within one artifact's limit. |
|
|
190
|
+
| `isManifestScript` | const | Narrows a value to a `ManifestScript`. |
|
|
191
|
+
| `isMirror` | const | Narrows a value to a `Mirror`. |
|
|
192
|
+
| `isOverride` | const | Narrows a value to an `Override`. |
|
|
193
|
+
| `isPath` | function | Narrows a value to a logical target-relative path. |
|
|
194
|
+
| `isPlan` | const | Narrows a value to a `Plan`. |
|
|
195
|
+
| `isQuestion` | const | Narrows a value to a `Question`. |
|
|
196
|
+
| `isScaffoldError` | function | Narrows a caught value to a `ScaffoldError`. |
|
|
197
|
+
| `isSnapshot` | function | Narrows a value to a `Snapshot`. |
|
|
199
198
|
|
|
200
199
|
#### Parsers
|
|
201
200
|
|
|
202
|
-
| Name | Kind | Summary
|
|
203
|
-
| ---------------------- | -------- |
|
|
204
|
-
| `parseBlueprint` | function |
|
|
205
|
-
| `parseCompilerOptions` | function |
|
|
206
|
-
| `parseGroups` | function |
|
|
207
|
-
| `parseSnapshot` | function |
|
|
201
|
+
| Name | Kind | Summary |
|
|
202
|
+
| ---------------------- | -------- | ------------------------------------------------ |
|
|
203
|
+
| `parseBlueprint` | function | Coerces an untrusted value to a `Blueprint`. |
|
|
204
|
+
| `parseCompilerOptions` | function | Coerces an untrusted value to `CompilerOptions`. |
|
|
205
|
+
| `parseGroups` | function | Coerces an untrusted value to a group selection. |
|
|
206
|
+
| `parseSnapshot` | function | Coerces an untrusted value to a `Snapshot`. |
|
|
208
207
|
|
|
209
208
|
#### Helpers
|
|
210
209
|
|
|
211
|
-
| Name | Kind | Summary
|
|
212
|
-
| --------------------------- | -------- |
|
|
213
|
-
| `artifactToFinding` | function |
|
|
214
|
-
| `artifactToHex` | function |
|
|
215
|
-
| `bytesToHex` | function |
|
|
216
|
-
| `catalogToLayers` | function |
|
|
217
|
-
| `cloneValue` | function |
|
|
218
|
-
| `compareVersions` | function |
|
|
219
|
-
| `computeBytes` | function |
|
|
220
|
-
| `computeHash` | function |
|
|
221
|
-
| `contentToHex` | function |
|
|
222
|
-
| `extractRangeMajor` | function |
|
|
223
|
-
| `extractVersion` | function |
|
|
224
|
-
| `inferDrift` | function |
|
|
225
|
-
| `inferGroup` | function |
|
|
226
|
-
| `isCanonPath` | function |
|
|
227
|
-
| `isDeferredPath` | function |
|
|
228
|
-
| `isFloorPath` | function |
|
|
229
|
-
| `isRetainedPath` | function |
|
|
230
|
-
| `manifestToDependencies` | function |
|
|
231
|
-
| `manifestToName` | function |
|
|
232
|
-
| `matchesDriftReachability` | function |
|
|
233
|
-
| `matchesEngines` | function |
|
|
234
|
-
| `matchesOrchestrationPath` | function |
|
|
235
|
-
| `matchesPrintWidth` | function |
|
|
236
|
-
| `matchesRange` | function |
|
|
237
|
-
| `nameToGuide` | function |
|
|
238
|
-
| `
|
|
239
|
-
| `
|
|
240
|
-
| `
|
|
241
|
-
| `
|
|
242
|
-
| `
|
|
243
|
-
| `srcToRoot` | function | Select the single published environment a package root points at. |
|
|
210
|
+
| Name | Kind | Summary |
|
|
211
|
+
| --------------------------- | -------- | --------------------------------------------------------------------------------------------------- |
|
|
212
|
+
| `artifactToFinding` | function | Projects one planned artifact and the bytes found at its path into a verdict. |
|
|
213
|
+
| `artifactToHex` | function | Projects an artifact to the exact bytes it claims, as hexadecimal. |
|
|
214
|
+
| `bytesToHex` | function | Encodes bytes as exact lowercase hexadecimal text. |
|
|
215
|
+
| `catalogToLayers` | function | Projects a catalog into the layers it publishes in. |
|
|
216
|
+
| `cloneValue` | function | Snapshots an untrusted value into exact JSON data the caller owns. |
|
|
217
|
+
| `compareVersions` | function | Compares two versions by their numeric components. |
|
|
218
|
+
| `computeBytes` | function | Counts the UTF-8 bytes text encodes to. |
|
|
219
|
+
| `computeHash` | function | Computes the deterministic content identity of text. |
|
|
220
|
+
| `contentToHex` | function | Encodes text as the exact lowercase hexadecimal form of its UTF-8 bytes. |
|
|
221
|
+
| `extractRangeMajor` | function | Extracts the major component of an admitted dependency range. |
|
|
222
|
+
| `extractVersion` | function | Extracts the major, minor, and patch components of an exact version. |
|
|
223
|
+
| `inferDrift` | function | Infers how one target path compares to the artifact planned for it. |
|
|
224
|
+
| `inferGroup` | function | Infers the `Group` a path belongs to. |
|
|
225
|
+
| `isCanonPath` | function | Checks whether a path belongs to the instruction canon a target reads rather than holds. |
|
|
226
|
+
| `isDeferredPath` | function | Checks whether another surface owns the vendored bytes at a path. |
|
|
227
|
+
| `isFloorPath` | function | Checks whether a destination's floor bytes survive a live overlay. |
|
|
228
|
+
| `isRetainedPath` | function | Checks whether another surface owns a target's present bytes at a path. |
|
|
229
|
+
| `manifestToDependencies` | function | Projects a package manifest's text to the `@orkestrel/*` packages each dependency section declares. |
|
|
230
|
+
| `manifestToName` | function | Projects a package manifest's text to its own name. |
|
|
231
|
+
| `matchesDriftReachability` | function | Tests whether `inferDrift` could have produced a finding for an ownership. |
|
|
232
|
+
| `matchesEngines` | function | Tests whether a declared engines floor is at or above the supported minimum. |
|
|
233
|
+
| `matchesOrchestrationPath` | function | Tests whether a path instructs or wires an agent rather than the toolchain. |
|
|
234
|
+
| `matchesPrintWidth` | function | Tests whether one emitted line fits the vendored formatter width. |
|
|
235
|
+
| `matchesRange` | function | Tests whether a declared range already admits a published version. |
|
|
236
|
+
| `nameToGuide` | function | Derives the guide mirror path a package name answers for. |
|
|
237
|
+
| `planToSummary` | function | Projects a plan into its tally by artifact origin. |
|
|
238
|
+
| `selectGroups` | function | Selects the groups a compile covers, in plan order. |
|
|
239
|
+
| `selectHostPaths` | function | Selects the host paths a named workspace vendors. |
|
|
240
|
+
| `serializeTypeScriptString` | function | Serializes one string as a single-quoted TypeScript literal. |
|
|
241
|
+
| `srcToRoot` | function | Selects the single published environment a package root points at. |
|
|
244
242
|
|
|
245
243
|
#### Compilers
|
|
246
244
|
|
|
247
|
-
| Name | Kind | Summary
|
|
248
|
-
| ----------------------------------- | -------- |
|
|
249
|
-
| `applyOverrides` | function |
|
|
250
|
-
| `artifactsToQuestions` | function |
|
|
251
|
-
| `blueprintToConfigArtifacts` | function |
|
|
252
|
-
| `blueprintToDevDependencies` | function |
|
|
253
|
-
| `blueprintToDocumentArtifacts` | function |
|
|
254
|
-
| `blueprintToGuideArtifacts` | function |
|
|
255
|
-
| `
|
|
256
|
-
| `
|
|
257
|
-
| `
|
|
258
|
-
| `
|
|
259
|
-
| `
|
|
260
|
-
| `
|
|
261
|
-
| `
|
|
262
|
-
| `
|
|
263
|
-
| `
|
|
264
|
-
| `
|
|
265
|
-
| `
|
|
266
|
-
| `
|
|
267
|
-
| `overridesToQuestions` | function |
|
|
268
|
-
| `pathToCondition` | function |
|
|
269
|
-
| `planToFindings` | function |
|
|
270
|
-
| `planToHash` | function |
|
|
271
|
-
| `replaceManifestRanges` | function |
|
|
272
|
-
| `replaceManifestScripts` | function |
|
|
273
|
-
| `replacePlanRanges` | function |
|
|
274
|
-
| `srcToEntry` | function |
|
|
275
|
-
| `srcToExports` | function |
|
|
245
|
+
| Name | Kind | Summary |
|
|
246
|
+
| ----------------------------------- | -------- | -------------------------------------------------------------------------------------------------------- |
|
|
247
|
+
| `applyOverrides` | function | Replaces the content of every drafted artifact an override names. |
|
|
248
|
+
| `artifactsToQuestions` | function | Measures a drafted artifact list against the laws a whole plan decides. |
|
|
249
|
+
| `blueprintToConfigArtifacts` | function | Compiles every artifact in the `configs` group. |
|
|
250
|
+
| `blueprintToDevDependencies` | function | Projects a blueprint into the development dependencies its manifest declares. |
|
|
251
|
+
| `blueprintToDocumentArtifacts` | function | Compiles the generated workspace's root documentation. |
|
|
252
|
+
| `blueprintToGuideArtifacts` | function | Compiles the generated workspace's guide index. |
|
|
253
|
+
| `blueprintToHostArtifacts` | function | Compiles the vendored host artifacts a workspace plans. |
|
|
254
|
+
| `blueprintToMachinery` | function | Derives the host-specific machinery a generated root Vite configuration carries. |
|
|
255
|
+
| `blueprintToManifest` | function | Compiles a blueprint into its `package.json` content. |
|
|
256
|
+
| `blueprintToOrchestrationArtifacts` | function | Compiles the blueprint-dependent orchestration artifacts. |
|
|
257
|
+
| `blueprintToQuestions` | function | Measures a blueprint against every law its own fields decide. |
|
|
258
|
+
| `blueprintToRootTsconfig` | function | Compiles the root TypeScript configuration for a blueprint. |
|
|
259
|
+
| `blueprintToRootVite` | function | Compiles the root Vite and Vitest configuration for a blueprint. |
|
|
260
|
+
| `blueprintToScripts` | function | Projects a blueprint into the scripts its manifest declares. |
|
|
261
|
+
| `blueprintToSourceArtifacts` | function | Compiles every artifact in the `source` group. |
|
|
262
|
+
| `blueprintToTestArtifacts` | function | Compiles every artifact in the `tests` group that is not vendored from the host. |
|
|
263
|
+
| `blueprintToWritableScripts` | function | Projects a blueprint into the manifest scripts a region write may replace. |
|
|
264
|
+
| `dependenciesToQuestions` | function | Measures one declared package list against the name and range syntax it accepts. |
|
|
265
|
+
| `overridesToQuestions` | function | Measures a blueprint's overrides against the artifacts drafted for it. |
|
|
266
|
+
| `pathToCondition` | function | Builds one `exports` condition block for a built environment. |
|
|
267
|
+
| `planToFindings` | function | Compares a plan against a target's current content. |
|
|
268
|
+
| `planToHash` | function | Computes a plan's content identity. |
|
|
269
|
+
| `replaceManifestRanges` | function | Replaces the runtime and development dependency ranges in package manifest text, and never a peer range. |
|
|
270
|
+
| `replaceManifestScripts` | function | Replaces named script values in package manifest text. |
|
|
271
|
+
| `replacePlanRanges` | function | Replaces dependency ranges in a plan's manifest and recomputes its identity. |
|
|
272
|
+
| `srcToEntry` | function | Projects a published selection into the manifest's entry fields. |
|
|
273
|
+
| `srcToExports` | function | Projects a published selection into the manifest's `exports` map. |
|
|
276
274
|
|
|
277
275
|
#### Factories
|
|
278
276
|
|
|
279
|
-
| Name | Kind | Summary
|
|
280
|
-
| ----------------- | -------- |
|
|
281
|
-
| `createBlueprint` | function |
|
|
277
|
+
| Name | Kind | Summary |
|
|
278
|
+
| ----------------- | -------- | ---------------------------------------------------------------------------------- |
|
|
279
|
+
| `createBlueprint` | function | Constructs a `Blueprint` from a name and the fields that differ from the defaults. |
|
|
282
280
|
|
|
283
281
|
#### Classes
|
|
284
282
|
|
|
285
|
-
| Name | Kind | Summary
|
|
286
|
-
| --------------- | ----- |
|
|
287
|
-
| `Compiler` | class |
|
|
288
|
-
| `ScaffoldError` | class |
|
|
283
|
+
| Name | Kind | Summary |
|
|
284
|
+
| --------------- | ----- | -------------------------------------------------------------------------------------- |
|
|
285
|
+
| `Compiler` | class | Represents the compile spine: draft, gate, pin, run in that order over a blueprint. |
|
|
286
|
+
| `ScaffoldError` | class | Represents the one error this package throws, carrying the coded reason it was raised. |
|
|
289
287
|
|
|
290
288
|
### Server
|
|
291
289
|
|
|
@@ -294,134 +292,134 @@ Exported from `@orkestrel/scaffold/server`, and reachable from
|
|
|
294
292
|
|
|
295
293
|
#### Types
|
|
296
294
|
|
|
297
|
-
| Name | Kind | Summary
|
|
298
|
-
| ---------------------- | ---- |
|
|
299
|
-
| `MaterializerEventMap` | type |
|
|
300
|
-
| `UpstreamEventMap` | type |
|
|
295
|
+
| Name | Kind | Summary |
|
|
296
|
+
| ---------------------- | ---- | ----------------------------------------------------- |
|
|
297
|
+
| `MaterializerEventMap` | type | Represents the materializer's observation channel. |
|
|
298
|
+
| `UpstreamEventMap` | type | Represents the upstream reader's observation channel. |
|
|
301
299
|
|
|
302
300
|
#### Interfaces
|
|
303
301
|
|
|
304
|
-
| Name | Kind | Summary
|
|
305
|
-
| ----------------------- | --------- |
|
|
306
|
-
| `BytesReadResult` | interface |
|
|
307
|
-
| `Host` | interface |
|
|
308
|
-
| `HostInventory` | interface |
|
|
309
|
-
| `HostManifest` | interface |
|
|
310
|
-
| `ManifestEntry` | interface |
|
|
311
|
-
| `MaterializeResult` | interface |
|
|
312
|
-
| `MaterializerInterface` | interface |
|
|
313
|
-
| `MaterializerOptions` | interface |
|
|
314
|
-
| `ReadAllowance` | interface |
|
|
315
|
-
| `TextReadResult` | interface |
|
|
316
|
-
| `Worktree` | interface |
|
|
317
|
-
| `UpstreamInterface` | interface |
|
|
318
|
-
| `UpstreamOptions` | interface |
|
|
319
|
-
| `WriteAnchor` | interface |
|
|
320
|
-
| `WriteDirectoryResult` | interface |
|
|
321
|
-
| `WriteExpectation` | interface |
|
|
322
|
-
| `WritePrecondition` | interface |
|
|
302
|
+
| Name | Kind | Summary |
|
|
303
|
+
| ----------------------- | --------- | ------------------------------------------------------------------------------------------------- |
|
|
304
|
+
| `BytesReadResult` | interface | Reports the outcome of one bounded read whose body is taken as exact bytes. |
|
|
305
|
+
| `Host` | interface | Represents a whole vendored host supplied as a value: the membership beside the bytes filling it. |
|
|
306
|
+
| `HostInventory` | interface | Represents the committed vendored-file inventory as one call's reads are decided against. |
|
|
307
|
+
| `HostManifest` | interface | Represents the complete vendored-host inventory. |
|
|
308
|
+
| `ManifestEntry` | interface | Represents one file record of the vendored host's manifest. |
|
|
309
|
+
| `MaterializeResult` | interface | Reports the outcome of one mutation of a target. |
|
|
310
|
+
| `MaterializerInterface` | interface | Describes the mutation contract: the package's only filesystem writer. |
|
|
311
|
+
| `MaterializerOptions` | interface | Represents the options for the materializer. |
|
|
312
|
+
| `ReadAllowance` | interface | Represents the byte allowance one whole upstream call spends across every read it makes. |
|
|
313
|
+
| `TextReadResult` | interface | Reports the outcome of one bounded read whose body is taken as text. |
|
|
314
|
+
| `Worktree` | interface | Describes what git reports about a target's working tree. |
|
|
315
|
+
| `UpstreamInterface` | interface | Describes the upstream contract: the package's only network reader, and it never writes. |
|
|
316
|
+
| `UpstreamOptions` | interface | Represents the options for the upstream reader. |
|
|
317
|
+
| `WriteAnchor` | interface | Represents one physical directory identity captured across a write transaction. |
|
|
318
|
+
| `WriteDirectoryResult` | interface | Reports the final directory anchor of a write transaction and the subset one call created. |
|
|
319
|
+
| `WriteExpectation` | interface | Represents one destination snapshot captured before a write and required to survive it. |
|
|
320
|
+
| `WritePrecondition` | interface | Describes the narrower caller-observed destination state a write transaction must still match. |
|
|
323
321
|
|
|
324
322
|
#### Constants
|
|
325
323
|
|
|
326
|
-
| Name | Kind | Summary
|
|
327
|
-
| ----------------------------------- | ----- |
|
|
328
|
-
| `BRANCH_PATTERN` | const |
|
|
329
|
-
| `DEFAULT_BRANCH` | const |
|
|
330
|
-
| `DEFAULT_REGISTRY_BASE` | const |
|
|
331
|
-
| `DEFAULT_REPOSITORY_BASE` | const |
|
|
332
|
-
| `DEFAULT_UPSTREAM_CONCURRENCY` | const |
|
|
333
|
-
| `DEFAULT_UPSTREAM_RETRIES` | const |
|
|
334
|
-
| `DEFAULT_UPSTREAM_TIMEOUT` | const |
|
|
335
|
-
| `DIGEST_PATTERN` | const |
|
|
336
|
-
| `DRIVE_PATTERN` | const |
|
|
337
|
-
| `INVALID_SEGMENT_CHARACTER_PATTERN` | const |
|
|
338
|
-
| `MANIFEST_NAME` | const |
|
|
339
|
-
| `MAX_BRANCH_LENGTH` | const |
|
|
340
|
-
| `MAX_ENDPOINT_LENGTH` | const |
|
|
341
|
-
| `MAX_INVENTORY_PATHS` | const |
|
|
342
|
-
| `MAX_PATH_DEPTH` | const |
|
|
343
|
-
| `MAX_PATH_SEGMENT_BYTES` | const |
|
|
344
|
-
| `MAX_UPSTREAM_CONCURRENCY` | const |
|
|
345
|
-
| `MAX_UPSTREAM_RETRIES` | const |
|
|
346
|
-
| `MAX_UPSTREAM_TIMEOUT` | const |
|
|
347
|
-
| `ORKESTREL_SCOPE` | const |
|
|
348
|
-
| `PACKUMENT_MEDIA_TYPE` | const |
|
|
349
|
-
| `RESERVED_SEGMENT_PATTERN` | const |
|
|
350
|
-
| `SCAFFOLD_REPOSITORY` | const |
|
|
351
|
-
| `UNREADABLE_VERSION_NOTE` | const |
|
|
324
|
+
| Name | Kind | Summary |
|
|
325
|
+
| ----------------------------------- | ----- | ------------------------------------------------------------------------------------------------ |
|
|
326
|
+
| `BRANCH_PATTERN` | const | Matches the Git branch syntax the repository endpoint accepts. |
|
|
327
|
+
| `DEFAULT_BRANCH` | const | Holds the repository branch a raw content read addresses when a caller names none. |
|
|
328
|
+
| `DEFAULT_REGISTRY_BASE` | const | Holds the registry a version read addresses when a caller names none. |
|
|
329
|
+
| `DEFAULT_REPOSITORY_BASE` | const | Holds the raw content host a repository read addresses when a caller names none. |
|
|
330
|
+
| `DEFAULT_UPSTREAM_CONCURRENCY` | const | Sets the simultaneous upstream requests a reader opens with, under `MAX_UPSTREAM_CONCURRENCY`. |
|
|
331
|
+
| `DEFAULT_UPSTREAM_RETRIES` | const | Sets the retries one upstream request is given when a caller names none. |
|
|
332
|
+
| `DEFAULT_UPSTREAM_TIMEOUT` | const | Sets the timeout one upstream request is given when a caller names none, in milliseconds. |
|
|
333
|
+
| `DIGEST_PATTERN` | const | Matches the exact SHA-256 syntax a digest is stated in: sixty-four lowercase hexadecimal digits. |
|
|
334
|
+
| `DRIVE_PATTERN` | const | Matches the drive prefix a Windows host path may open with. |
|
|
335
|
+
| `INVALID_SEGMENT_CHARACTER_PATTERN` | const | Matches the visible characters no host path segment may carry. |
|
|
336
|
+
| `MANIFEST_NAME` | const | Reserves the metadata name a staged vendored host writes at its own root. |
|
|
337
|
+
| `MAX_BRANCH_LENGTH` | const | Caps the characters one repository branch may carry. |
|
|
338
|
+
| `MAX_ENDPOINT_LENGTH` | const | Caps the characters one caller-supplied upstream endpoint may carry. |
|
|
339
|
+
| `MAX_INVENTORY_PATHS` | const | Caps the paths one target's working-tree inventory may report. |
|
|
340
|
+
| `MAX_PATH_DEPTH` | const | Caps the segments one host path may carry. |
|
|
341
|
+
| `MAX_PATH_SEGMENT_BYTES` | const | Caps the UTF-8 bytes one host path segment may encode to. |
|
|
342
|
+
| `MAX_UPSTREAM_CONCURRENCY` | const | Caps the simultaneous upstream requests. |
|
|
343
|
+
| `MAX_UPSTREAM_RETRIES` | const | Caps the retries one upstream request may be given after a transport fault. |
|
|
344
|
+
| `MAX_UPSTREAM_TIMEOUT` | const | Caps the timeout one upstream request may be given, in milliseconds. |
|
|
345
|
+
| `ORKESTREL_SCOPE` | const | Names the npm scope and repository owner the fleet's packages and sources are published under. |
|
|
346
|
+
| `PACKUMENT_MEDIA_TYPE` | const | Names the media type that selects the registry's abbreviated packument. |
|
|
347
|
+
| `RESERVED_SEGMENT_PATTERN` | const | Matches the Windows device names that stay reserved even when an extension follows. |
|
|
348
|
+
| `SCAFFOLD_REPOSITORY` | const | Names the repository this package's own vendored files are served from. |
|
|
349
|
+
| `UNREADABLE_VERSION_NOTE` | const | Holds the note a release carries when its packument names no readable latest version. |
|
|
352
350
|
|
|
353
351
|
#### Guards
|
|
354
352
|
|
|
355
|
-
| Name | Kind | Summary
|
|
356
|
-
| ----------------------- | -------- |
|
|
357
|
-
| `isBranch` | const |
|
|
358
|
-
| `isCatalogEntries` | const |
|
|
359
|
-
| `isDependencies` | const |
|
|
360
|
-
| `isDependencyNames` | const |
|
|
361
|
-
| `isDigest` | const |
|
|
362
|
-
| `isEndpoint` | const |
|
|
363
|
-
| `isFilesystemPath` | function |
|
|
364
|
-
| `isHost` | const |
|
|
365
|
-
| `isHostManifest` | const |
|
|
366
|
-
| `isInventory` | function |
|
|
367
|
-
| `isManifestEntry` | const |
|
|
368
|
-
| `isManifestRegionSet` | const |
|
|
369
|
-
| `isMaterializerHooks` | const |
|
|
370
|
-
| `isMaterializerOptions` | const |
|
|
371
|
-
| `isMirrors` | const |
|
|
372
|
-
| `isPaths` | const |
|
|
373
|
-
| `isWorktree` | const |
|
|
374
|
-
| `isTimeout` | const |
|
|
375
|
-
| `isUpstreamHooks` | const |
|
|
376
|
-
| `isUpstreamOptions` | const |
|
|
353
|
+
| Name | Kind | Summary |
|
|
354
|
+
| ----------------------- | -------- | ----------------------------------------------------------------------------------- |
|
|
355
|
+
| `isBranch` | const | Narrows a value to a Git branch the repository endpoint accepts. |
|
|
356
|
+
| `isCatalogEntries` | const | Narrows a value to a bounded list of fleet catalog rows. |
|
|
357
|
+
| `isDependencies` | const | Narrows a value to a bounded list of declared runtime dependencies. |
|
|
358
|
+
| `isDependencyNames` | const | Narrows a value to a bounded list of `@orkestrel` package names. |
|
|
359
|
+
| `isDigest` | const | Narrows a value to one exact SHA-256 digest. |
|
|
360
|
+
| `isEndpoint` | const | Narrows a value to a bounded upstream endpoint. |
|
|
361
|
+
| `isFilesystemPath` | function | Narrows a value to a path naming a location on this host. |
|
|
362
|
+
| `isHost` | const | Narrows a value to one `Host`. |
|
|
363
|
+
| `isHostManifest` | const | Narrows a value to one `HostManifest`. |
|
|
364
|
+
| `isInventory` | function | Narrows a value to a working-tree inventory within the limit one target may report. |
|
|
365
|
+
| `isManifestEntry` | const | Narrows a value to one `ManifestEntry`. |
|
|
366
|
+
| `isManifestRegionSet` | const | Narrows a value to one `ManifestRegionSet`. |
|
|
367
|
+
| `isMaterializerHooks` | const | Narrows a value to the materializer's initial listener record. |
|
|
368
|
+
| `isMaterializerOptions` | const | Narrows a value to `MaterializerOptions`. |
|
|
369
|
+
| `isMirrors` | const | Narrows a value to a bounded list of fetched guide mirrors. |
|
|
370
|
+
| `isPaths` | const | Narrows a value to a bounded list of target-relative paths. |
|
|
371
|
+
| `isWorktree` | const | Narrows a value to a `Worktree`. |
|
|
372
|
+
| `isTimeout` | const | Narrows a value to a per-request timeout in milliseconds. |
|
|
373
|
+
| `isUpstreamHooks` | const | Narrows a value to the upstream reader's initial listener record. |
|
|
374
|
+
| `isUpstreamOptions` | const | Narrows a value to `UpstreamOptions`. |
|
|
377
375
|
|
|
378
376
|
#### Helpers
|
|
379
377
|
|
|
380
|
-
| Name | Kind | Summary
|
|
381
|
-
| ------------------------- | -------- |
|
|
382
|
-
| `computeDigest` | function |
|
|
383
|
-
| `computeFileDigest` | function |
|
|
384
|
-
| `computeManifestDigest` | function |
|
|
385
|
-
| `filesToHost` | function |
|
|
386
|
-
| `hexToDigest` | function |
|
|
387
|
-
| `isExactCaseFile` | function |
|
|
388
|
-
| `isPhysicalDirectory` | function |
|
|
389
|
-
| `isPhysicalFile` | function |
|
|
390
|
-
| `isVacant` | function |
|
|
391
|
-
| `listCanonPaths` | function |
|
|
392
|
-
| `listDirectories` | function |
|
|
393
|
-
| `listFiles` | function |
|
|
394
|
-
| `matchesAnchor` | function |
|
|
395
|
-
| `matchesExecutablePath` | function |
|
|
396
|
-
| `matchesExpectation` | function |
|
|
397
|
-
| `matchesGitPath` | function |
|
|
398
|
-
| `matchesMissingPath` | function |
|
|
399
|
-
| `matchesPrecondition` | function |
|
|
400
|
-
| `matchesProtectedPath` | function |
|
|
401
|
-
| `matchesSensitivePath` | function |
|
|
402
|
-
| `pathToStorage` | function |
|
|
403
|
-
| `pruneEmptiedDirectories` | function |
|
|
404
|
-
| `readAnchor` | function |
|
|
405
|
-
| `readExpectation` | function |
|
|
406
|
-
| `readFileHex` | function |
|
|
407
|
-
| `readFileText` | function |
|
|
408
|
-
| `readHostFloor` | function |
|
|
409
|
-
| `readHostManifest` | function |
|
|
410
|
-
| `readManifestEntry` | function |
|
|
411
|
-
| `readSnapshot` | function |
|
|
412
|
-
| `resolveContainedPath` | function |
|
|
413
|
-
| `resolveRealPath` | function |
|
|
414
|
-
| `stageBytes` | function |
|
|
415
|
-
| `stageHost` | function |
|
|
416
|
-
| `stageInventory` | function |
|
|
378
|
+
| Name | Kind | Summary |
|
|
379
|
+
| ------------------------- | -------- | -------------------------------------------------------------------------------------- |
|
|
380
|
+
| `computeDigest` | function | Computes the SHA-256 digest of text. |
|
|
381
|
+
| `computeFileDigest` | function | Computes the SHA-256 digest of one file's exact bytes. |
|
|
382
|
+
| `computeManifestDigest` | function | Computes the digest of a vendored host's declared membership. |
|
|
383
|
+
| `filesToHost` | function | Assembles a whole vendored host from live files and the installed floor. |
|
|
384
|
+
| `hexToDigest` | function | Projects exact bytes stated in hexadecimal to their SHA-256 digest. |
|
|
385
|
+
| `isExactCaseFile` | function | Tests whether a path is a physical file with exact on-disk casing. |
|
|
386
|
+
| `isPhysicalDirectory` | function | Tests whether a path is a physical directory this package will read or write into. |
|
|
387
|
+
| `isPhysicalFile` | function | Tests whether a path is a physical file this package will read or replace. |
|
|
388
|
+
| `isVacant` | function | Tests whether a target is safe to write a fresh workspace into. |
|
|
389
|
+
| `listCanonPaths` | function | Lists the canon paths a target holds, filtered to a plan's groups. |
|
|
390
|
+
| `listDirectories` | function | Lists a directory's descendant directories as sorted root-relative paths. |
|
|
391
|
+
| `listFiles` | function | Lists a directory's files as sorted root-relative paths. |
|
|
392
|
+
| `matchesAnchor` | function | Tests whether a captured directory is still the same directory. |
|
|
393
|
+
| `matchesExecutablePath` | function | Tests whether a vendored path is one a target receives executable. |
|
|
394
|
+
| `matchesExpectation` | function | Tests whether a destination still holds what was captured of it. |
|
|
395
|
+
| `matchesGitPath` | function | Tests whether a path addresses a target's own repository metadata. |
|
|
396
|
+
| `matchesMissingPath` | function | Tests whether a caught filesystem error reports an absent path. |
|
|
397
|
+
| `matchesPrecondition` | function | Tests whether a destination still matches the narrower state a caller observed. |
|
|
398
|
+
| `matchesProtectedPath` | function | Tests whether a target-relative path is one no verb may delete. |
|
|
399
|
+
| `matchesSensitivePath` | function | Tests whether a path names local configuration or a credential. |
|
|
400
|
+
| `pathToStorage` | function | Projects a target-relative path to the storage name a vendored host holds it under. |
|
|
401
|
+
| `pruneEmptiedDirectories` | function | Removes every directory one set of deletions emptied. |
|
|
402
|
+
| `readAnchor` | function | Captures one directory's physical identity. |
|
|
403
|
+
| `readExpectation` | function | Captures what one destination holds before a write. |
|
|
404
|
+
| `readFileHex` | function | Reads one contained file as its exact bytes in lowercase hexadecimal. |
|
|
405
|
+
| `readFileText` | function | Reads one contained file as bounded UTF-8 text. |
|
|
406
|
+
| `readHostFloor` | function | Reads the installed vendored host floor as a value. |
|
|
407
|
+
| `readHostManifest` | function | Reads a vendored host's manifest, when it carries one. |
|
|
408
|
+
| `readManifestEntry` | function | Derives one vendored-host manifest entry from a file in a checkout. |
|
|
409
|
+
| `readSnapshot` | function | Reads a target's current bytes at the paths a plan claims. |
|
|
410
|
+
| `resolveContainedPath` | function | Resolves a root-relative path and refuses one that leaves its root. |
|
|
411
|
+
| `resolveRealPath` | function | Resolves a path through the real filesystem, keeping the part that does not exist yet. |
|
|
412
|
+
| `stageBytes` | function | Stages the named destinations of a value host into a private root. |
|
|
413
|
+
| `stageHost` | function | Stages a vendored host root from a real checkout. |
|
|
414
|
+
| `stageInventory` | function | Stages the committed inventory of the files a vendored host carries. |
|
|
417
415
|
|
|
418
416
|
#### Classes
|
|
419
417
|
|
|
420
|
-
| Name | Kind | Summary
|
|
421
|
-
| ------------------ | ----- |
|
|
422
|
-
| `Materializer` | class |
|
|
423
|
-
| `Upstream` | class |
|
|
424
|
-
| `WriteTransaction` | class |
|
|
418
|
+
| Name | Kind | Summary |
|
|
419
|
+
| ------------------ | ----- | --------------------------------------------------------------------------------------------- |
|
|
420
|
+
| `Materializer` | class | Represents the mutation spine: read the vendored host, re-derive the target, stage, swap. |
|
|
421
|
+
| `Upstream` | class | Represents the reading spine: one bounded, unauthenticated, redirect-free request per answer. |
|
|
422
|
+
| `WriteTransaction` | class | Represents one staged, reversible mutation of one target directory. |
|
|
425
423
|
|
|
426
424
|
## Methods
|
|
427
425
|
|
|
@@ -432,45 +430,45 @@ publishes no interface and is documented directly.
|
|
|
432
430
|
|
|
433
431
|
#### `CompilerInterface`
|
|
434
432
|
|
|
435
|
-
| Method | Summary
|
|
436
|
-
| --------- |
|
|
437
|
-
| `compile` |
|
|
438
|
-
| `audit` |
|
|
439
|
-
| `destroy` |
|
|
433
|
+
| Method | Summary |
|
|
434
|
+
| --------- | ----------------------------------------------------------------------------- |
|
|
435
|
+
| `compile` | Compiles a blueprint into a plan through the draft, gate, and pin stages. |
|
|
436
|
+
| `audit` | Compiles a blueprint and compares its plan to a target's current content. |
|
|
437
|
+
| `destroy` | Tears the compiler down. Every later call throws, and teardown is idempotent. |
|
|
440
438
|
|
|
441
439
|
#### `MaterializerInterface`
|
|
442
440
|
|
|
443
|
-
| Method | Summary
|
|
444
|
-
| ------------- |
|
|
445
|
-
| `audit` |
|
|
446
|
-
| `materialize` |
|
|
447
|
-
| `repair` |
|
|
448
|
-
| `mirror` |
|
|
449
|
-
| `catalog` |
|
|
450
|
-
| `declare` |
|
|
451
|
-
| `remove` | Re-
|
|
452
|
-
| `destroy` |
|
|
441
|
+
| Method | Summary |
|
|
442
|
+
| ------------- | --------------------------------------------------------------------------------- |
|
|
443
|
+
| `audit` | Compares a plan with a target through the vendored host that will repair it. |
|
|
444
|
+
| `materialize` | Writes a plan into a vacant target. |
|
|
445
|
+
| `repair` | Writes a plan into an existing target, guided by an audit of it. |
|
|
446
|
+
| `mirror` | Writes fetched dependency guides to their local mirrors. |
|
|
447
|
+
| `catalog` | Rewrites the marker-bounded package table in the target's catalog agent file. |
|
|
448
|
+
| `declare` | Rewrites the manifest regions the caller names in the target's manifest. |
|
|
449
|
+
| `remove` | Re-derives and deletes the tracked files the plan does not own. |
|
|
450
|
+
| `destroy` | Tears the materializer down. Every later call throws, and teardown is idempotent. |
|
|
453
451
|
|
|
454
452
|
#### `UpstreamInterface`
|
|
455
453
|
|
|
456
|
-
| Method | Summary
|
|
457
|
-
| --------- |
|
|
458
|
-
| `lookup` |
|
|
459
|
-
| `fetch` |
|
|
460
|
-
| `read` |
|
|
461
|
-
| `catalog` |
|
|
462
|
-
| `destroy` |
|
|
454
|
+
| Method | Summary |
|
|
455
|
+
| --------- | ------------------------------------------------------------------------------------------- |
|
|
456
|
+
| `lookup` | Looks up the newest release each declared range admits. |
|
|
457
|
+
| `fetch` | Fetches each named package's guide, beside the local mirror it answers for. |
|
|
458
|
+
| `read` | Reads each named vendored file from the repository, beside the target bytes it answers for. |
|
|
459
|
+
| `catalog` | Catalogs the published fleet from the registry's organization package list. |
|
|
460
|
+
| `destroy` | Tears the reader down, aborting every request in flight. Teardown is idempotent. |
|
|
463
461
|
|
|
464
462
|
#### `WriteTransaction`
|
|
465
463
|
|
|
466
|
-
| Method | Summary
|
|
467
|
-
| ----------- |
|
|
468
|
-
| `write` |
|
|
469
|
-
| `copy` |
|
|
470
|
-
| `establish` |
|
|
471
|
-
| `remove` |
|
|
472
|
-
| `commit` |
|
|
473
|
-
| `discard` |
|
|
464
|
+
| Method | Summary |
|
|
465
|
+
| ----------- | ------------------------------------------------------------------------------------- |
|
|
466
|
+
| `write` | Stages one text file. |
|
|
467
|
+
| `copy` | Stages one byte-for-byte copy of a file that already exists on this host. |
|
|
468
|
+
| `establish` | Establishes one directory inside the target, one segment at a time. |
|
|
469
|
+
| `remove` | Marks one file for deletion at commit. |
|
|
470
|
+
| `commit` | Promotes every staged file and takes every marked file, or rolls the whole call back. |
|
|
471
|
+
| `discard` | Abandons the transaction and removes everything it created. |
|
|
474
472
|
|
|
475
473
|
## Command line
|
|
476
474
|
|
|
@@ -569,9 +567,10 @@ other structural facts do not need creation flags. Add a root `tests/setup*.test
|
|
|
569
567
|
`setup`, `tests/guides.test.ts` for `guides`, `tests/integration.test.ts` for `integration`,
|
|
570
568
|
`tests/conformance.test.ts` for `conformance`, `tests/setupService.ts` for `service`,
|
|
571
569
|
`tests/setupGlobal.ts` for `global`, and `configs/app/vite.showcase.config.ts` for `showcase`;
|
|
572
|
-
reading verbs detect each exact-case file and register its fixed machinery.
|
|
573
|
-
|
|
574
|
-
vendor list from edited text
|
|
570
|
+
reading verbs detect each exact-case file and register its fixed machinery. An explicitly supplied
|
|
571
|
+
plan with `vendors` owns and protects the birth-owned `scripts/service.sh` inventory skeleton.
|
|
572
|
+
Reading verbs do not infer its vendor list from edited text and cannot preserve an arbitrary present
|
|
573
|
+
script on that basis.
|
|
575
574
|
|
|
576
575
|
`distribution` is not on that list. Publishing at least one `src` environment is its whole
|
|
577
576
|
condition, and scaffold writes `tests/distribution.test.ts` itself rather than waiting for you to.
|
|
@@ -590,10 +589,10 @@ and `configs/app/vite.showcase.config.ts` selects `showcase`. A containing direc
|
|
|
590
589
|
the fact by itself. `tests/distribution.test.ts` selects nothing: the published `src` axis the
|
|
591
590
|
target ships already decides the `distribution` project, and the file is planned from that.
|
|
592
591
|
|
|
593
|
-
`vendors` is not reconstructed. Its
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
592
|
+
`vendors` is not reconstructed. Its artifact, `scripts/service.sh`, is a birth-owned inventory
|
|
593
|
+
skeleton rather than a working installer, so edited script text is not a trustworthy declaration of
|
|
594
|
+
a vendor list. A target-reading verb derives no vendor list from a present script. Only an
|
|
595
|
+
explicitly supplied plan with `vendors` owns that birth artifact.
|
|
597
596
|
|
|
598
597
|
That is why the live-service project follows `service` rather than `vendors`. A reading verb has to
|
|
599
598
|
plan the project before it can say anything about a target that runs one, and a vendor list it
|
|
@@ -605,8 +604,9 @@ The root Vite configuration defines and registers the fixed `guides` project onl
|
|
|
605
604
|
blueprint carries `guides`. Reading verbs set that fact only when `tests/guides.test.ts` is a
|
|
606
605
|
physical file with that exact path case. A directory or a case-folded spelling does not select it. A
|
|
607
606
|
fresh workspace therefore carries no guides project or script. When a developer adds the proof,
|
|
608
|
-
`audit` reports the exact `test:guides` script
|
|
609
|
-
|
|
607
|
+
`audit` reports the exact `test:guides` script until `repair` or `overwrite` appends it through the
|
|
608
|
+
writable script region. That region accepts the prior generated Vitest-only value and preserves a
|
|
609
|
+
customized command. The rest of the manifest remains birth-owned.
|
|
610
610
|
|
|
611
611
|
The plan-reading verbs compare the Vitest project set named by the target manifest with the
|
|
612
612
|
project set the planned root configuration registers. Every planned proof project must also be
|
|
@@ -736,6 +736,13 @@ Limits states what that costs a target that keeps one at a canon path. The sweep
|
|
|
736
736
|
directories its deletions emptied, so a swept target does not keep the shape of the set it no longer
|
|
737
737
|
holds, and git records no directory to report that shape with.
|
|
738
738
|
|
|
739
|
+
Each git query streams raw NUL-delimited output and retains only complete non-empty records. The
|
|
740
|
+
reader applies `MAX_INVENTORY_PATHS` while it collects them and bounds an unfinished record by
|
|
741
|
+
`MAX_PATH_LENGTH` plus git's porcelain prefix. The worktree guard validates every complete path
|
|
742
|
+
after that prefix is removed. A spawn fault, failed exit, signal, stream or listener fault, drain
|
|
743
|
+
cutoff, or incomplete final record refuses the target under `TARGET`; no partial inventory reaches
|
|
744
|
+
deletion.
|
|
745
|
+
|
|
739
746
|
### Machine-readable output
|
|
740
747
|
|
|
741
748
|
`--json` replaces the report with one JSON value on standard output. Warnings and refusals go to
|
|
@@ -770,7 +777,7 @@ const blueprint = createBlueprint('router', {
|
|
|
770
777
|
})
|
|
771
778
|
|
|
772
779
|
blueprint.version // '0.0.1'
|
|
773
|
-
blueprint.engines // '>=22.
|
|
780
|
+
blueprint.engines // '>=22.18.0'
|
|
774
781
|
```
|
|
775
782
|
|
|
776
783
|
`src` selects published library environments and `app` selects private application environments.
|
|
@@ -842,12 +849,13 @@ is the one proof scaffold generates from the workspace's own shape.
|
|
|
842
849
|
|
|
843
850
|
`service` says the workspace runs a live-service Vitest project over `tests/service`, and it alone
|
|
844
851
|
registers that project, its `test:service` script, and the `tests/setupService.ts` readiness module
|
|
845
|
-
the project names.
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
and
|
|
849
|
-
|
|
850
|
-
|
|
852
|
+
the project names. The caller prepares the external service before it invokes the project, and the
|
|
853
|
+
setup module verifies readiness. A publishing workspace invokes the project from `prepublishOnly`;
|
|
854
|
+
a `private: true` workspace invokes it from `test`, which is the only gate it has. Its longer
|
|
855
|
+
timeouts and disabled file parallelism are the same in each workspace form. `vendors` names each external service the
|
|
856
|
+
workspace drives and emits `scripts/service.sh`, an inventory skeleton that starts nothing. The
|
|
857
|
+
vendor inventory and live-service setup are independent: a workspace may declare vendors before it
|
|
858
|
+
writes a suite, and a suite may drive a service the skeleton does not start.
|
|
851
859
|
|
|
852
860
|
`integration` projects a cross-environment composition proof for any workspace, independently of
|
|
853
861
|
whether it has a published `src`. Its generated seed imports every selected `src` and `app`
|
|
@@ -897,7 +905,7 @@ one that answers it. So `new` refuses on any question, blocking or not, before i
|
|
|
897
905
|
`audit` and `repair` carry the same questions through, because a target that already has that shape
|
|
898
906
|
still has to be described and restored.
|
|
899
907
|
|
|
900
|
-
A library caller creating a fresh workspace applies `new`
|
|
908
|
+
A library caller creating a fresh workspace itself applies the rule the `new` command follows:
|
|
901
909
|
|
|
902
910
|
```ts
|
|
903
911
|
import { Compiler, createBlueprint } from '@orkestrel/scaffold'
|
|
@@ -1011,6 +1019,54 @@ each of which selects its project by being written. Scaffold content-owns `tests
|
|
|
1011
1019
|
`tests/policy.test.ts`, and `tests/config.test.ts`; `repair` and `overwrite` restore those files when
|
|
1012
1020
|
their bytes drift or the files are missing.
|
|
1013
1021
|
|
|
1022
|
+
`tests/policy.test.ts` proves the path- and text-shaped laws, and the vendored oxlint plugin
|
|
1023
|
+
`configs/policy.ts` carries the syntax-shaped ones: `policy/no-malformed-summary` reads the doc
|
|
1024
|
+
block preceding each export, and `policy/no-banned-term` reads every comment for a term
|
|
1025
|
+
`.claude/rules/writing.md` § Substitutions bans unconditionally. The prose sweep in
|
|
1026
|
+
`tests/setupPolicy.ts` reads every authored Markdown file for the same terms through the
|
|
1027
|
+
`POLICY_BANNED_TERMS` denylist the rule and the sweep share, and `tests/policy.test.ts` proves that
|
|
1028
|
+
denylist against the table wherever the workspace authors it. The sweep skips a top-level guide the
|
|
1029
|
+
package catalog in `.claude/agents/orkestrel.md` registers to another package, because a mirror is
|
|
1030
|
+
fetched bytes rather than prose this workspace wrote, and it reports a top-level guide that is
|
|
1031
|
+
neither this package's own, nor `guides/README.md`, nor a catalog row, so an exclusion always
|
|
1032
|
+
carries its evidence.
|
|
1033
|
+
|
|
1034
|
+
`tests/guides.test.ts` invokes the public `GuideCommand` class with this package's inventory policy,
|
|
1035
|
+
the Guide reader, and the real Vitest runner. Its anonymous worker callback owns the package
|
|
1036
|
+
assertions: a guide's `Summary` cell against its export's description paragraph, a titled guide
|
|
1037
|
+
fence against the `@example` block of that title, and the README pitch against the guide tagline.
|
|
1038
|
+
With no arguments, the command launches only the real `guides` Vitest project. Its assertions report
|
|
1039
|
+
parity failures. With an explicit direction, `GuideCommand` reads the source, tests, guides, and
|
|
1040
|
+
root Markdown; indexes `guides/README.md`; rewrites the selected side; and reports each remaining
|
|
1041
|
+
disagreement with its guide, compared key, side text or `absent`, and reason. It also reports the
|
|
1042
|
+
pitch pair when those values differ: the `README.md` blockquote against the tagline of the guide the
|
|
1043
|
+
manifest's own bare name selects,
|
|
1044
|
+
`guides/<name>.md`. A workspace whose manifest declares no name, whose index carries no row for that
|
|
1045
|
+
guide, or which carries no `README.md` reports no pitch line. It exits `1` when explicit-write drift
|
|
1046
|
+
remains, the project fails, the project collects no module, Vitest reports an unhandled error, or a
|
|
1047
|
+
module state is not `passed`. Default parity failures come from the guides project. An invalid
|
|
1048
|
+
option exits `2` before Vitest starts. On an explicit-direction run, a missing `guides/README.md` or
|
|
1049
|
+
an indexed spec the workspace does not carry also exits `2` before startup.
|
|
1050
|
+
|
|
1051
|
+
The test file is package-owned and stays outside `HOST_PATHS`. The `test:guides` script and
|
|
1052
|
+
`guides` project are emitted only with `guides`. The generated command requires that authored file
|
|
1053
|
+
to invoke `GuideCommand` directly and register the package assertions. Scaffold neither synthesizes
|
|
1054
|
+
nor overwrites the authored proof.
|
|
1055
|
+
|
|
1056
|
+
`npm run test:guides -- --to guide` rewrites reachable `Summary` cells and titled fences from
|
|
1057
|
+
source text. `npm run test:guides -- --to source` rewrites reachable description paragraphs and
|
|
1058
|
+
titled `@example` bodies from guide text. The README pitch remains authored by hand. A shared
|
|
1059
|
+
source file accumulates each selected edit before it is written. After writing changed paths,
|
|
1060
|
+
the entry rereads the inventory and reports remaining drift with the reason its requested rewrite
|
|
1061
|
+
could not resolve it. The guides project starts from those fresh bytes. The entry never formats;
|
|
1062
|
+
after a write it prints `next: npm run format`.
|
|
1063
|
+
|
|
1064
|
+
Scaffold owns the `scripts` directory. An audit for the orchestration group reports every unplanned
|
|
1065
|
+
member as foreign. `overwrite` deletes an unplanned tracked member only when the tree is clean, its
|
|
1066
|
+
observed bytes still match, and the path is not protected. An unplanned tracked
|
|
1067
|
+
`scripts/service.sh` is retired on that basis. An explicitly planned birth-owned script survives
|
|
1068
|
+
that deletion pass.
|
|
1069
|
+
|
|
1014
1070
|
`tests/distribution.test.ts` is the one proof scaffold generates, and the one test artifact it
|
|
1015
1071
|
claims by presence. Generation is the line, not writing: scaffold writes the vendored
|
|
1016
1072
|
`tests/policy.test.ts` and `tests/config.test.ts` proofs too, and restores them, but those are the
|
|
@@ -1083,11 +1139,14 @@ The region holds a table with these columns:
|
|
|
1083
1139
|
| `Version` | The registry's `dist-tags.latest`, or the cause when the lookup found none |
|
|
1084
1140
|
| `Layer` | The publish round the edges place the package in, as `L0`, `L1`, … |
|
|
1085
1141
|
| `Runtime dependencies` | Each declared runtime edge, as name and range |
|
|
1142
|
+
| `Peer dependencies` | Each declared peer edge, as name and range |
|
|
1086
1143
|
|
|
1087
1144
|
The edge-bearing columns come from the same abbreviated packument the version came from, so a
|
|
1088
|
-
catalog costs one request per package and no more.
|
|
1089
|
-
reaches no consumer of the published package, so it constrains nothing about
|
|
1090
|
-
reading it would place packages in rounds that do not exist.
|
|
1145
|
+
catalog costs one request per package and no more. `dependencies` and `peerDependencies` are read.
|
|
1146
|
+
`devDependencies` reaches no consumer of the published package, so it constrains nothing about
|
|
1147
|
+
publish order, and reading it would place packages in rounds that do not exist. A peer edge orders
|
|
1148
|
+
a dependent the same way a runtime edge does, because a caret peer range at `0.0.x` pins one exact
|
|
1149
|
+
release.
|
|
1091
1150
|
|
|
1092
1151
|
The layer is not stored on a row. `catalogToLayers` derives it from the rows' own edges, in the same
|
|
1093
1152
|
call that writes them, so the layer and the rows cannot disagree:
|
|
@@ -1194,10 +1253,33 @@ The vendored data root is the shared file set, staged into the published package
|
|
|
1194
1253
|
Staging walks `HOST_PATHS` and `CANON_PATHS`, and a release ships what both name.
|
|
1195
1254
|
|
|
1196
1255
|
`HOST_PATHS` is the vendored set, and a target receives a copy of each path it selects: the
|
|
1197
|
-
licence, the harness permission file, the
|
|
1198
|
-
shared policy
|
|
1199
|
-
byte-identical root dotfiles, and the guide mirrors a generated workspace
|
|
1200
|
-
candidate list rather than a plan, because a workspace never mirrors its own
|
|
1256
|
+
licence, the harness permission file, the scaffold-owned `scripts` directory, the
|
|
1257
|
+
shared policy register, the shared policy proof, the shared policy plugin, the shared configuration
|
|
1258
|
+
leaf and its proof, the byte-identical root dotfiles, and the guide mirrors a generated workspace
|
|
1259
|
+
starts from. It is a candidate list rather than a plan, because a workspace never mirrors its own
|
|
1260
|
+
guide. The session-start hooks inside `scripts` split by job. The bench probe reports whether a
|
|
1261
|
+
bench CLI resolves, and the dependency hook installs the lockfile's closure in a remote session.
|
|
1262
|
+
The Ollama hook invokes `scripts/ollama.sh` only when `CLAUDE_CODE_REMOTE=true`; direct invocation
|
|
1263
|
+
remains available for live-service setup. What wires a bench stays in the canon, and a session reads
|
|
1264
|
+
it at its primary root.
|
|
1265
|
+
|
|
1266
|
+
`scripts/ollama.sh` defaults to `http://127.0.0.1:11434` and `qwen3.5:2b-q4_K_M`. It requires Node
|
|
1267
|
+
for native URL and JSON handling and curl for the HTTP protocol. The script accepts an HTTP or HTTPS
|
|
1268
|
+
origin without credentials, path, query, or fragment. It reuses any reachable daemon without
|
|
1269
|
+
requiring a local Ollama executable. It inspects the selected model through `/api/show`, pulls only
|
|
1270
|
+
after a `404` absence response, and warms the model through a completed non-streaming `/api/chat`
|
|
1271
|
+
request with a 30-minute keep-alive. Version readiness, pull completion, and warm completion each
|
|
1272
|
+
require a `2xx` HTTP status; redirects and error statuses fail even when their bodies report
|
|
1273
|
+
completion.
|
|
1274
|
+
|
|
1275
|
+
When an HTTP loopback endpoint is unreachable, the script may start an installed Ollama executable
|
|
1276
|
+
in an owned POSIX process group. A failure sends that owned group `TERM`, then sends `KILL` if it
|
|
1277
|
+
does not stop within 5 seconds; a reused daemon remains untouched. Direct reuse works from Git Bash on Windows, but local startup there fails because Bash
|
|
1278
|
+
cannot safely terminate the Windows process tree. Automatic installation is limited to Linux cloud
|
|
1279
|
+
or CI automation. The official installer download follows only HTTPS redirects, must be nonempty,
|
|
1280
|
+
and runs within the remaining setup deadline. The installer may require root or `sudo`, and its own
|
|
1281
|
+
platform prerequisites remain authoritative. The full setup deadline is 590 seconds, including a
|
|
1282
|
+
60-second local startup allowance, within the hook's 600-second timeout.
|
|
1201
1283
|
|
|
1202
1284
|
`CANON_PATHS` is the instruction canon, staged for reading instead: the `AGENTS.md` coding contract,
|
|
1203
1285
|
the `CLAUDE.md` harness bridge, the `.agents/orchestration.md` agent-operation contract, the rules
|
|
@@ -1218,9 +1300,10 @@ sits beneath a member of the other. Staging depends on that, because the walk co
|
|
|
1218
1300
|
path it discovers twice claims one storage name twice, which refuses the stage. `isCanonPath` is the
|
|
1219
1301
|
one reading of canon membership, matching a member and anything beneath a member that is a directory,
|
|
1220
1302
|
so staging, the live overlay, and the executable's fetch list never disagree about what a path is.
|
|
1221
|
-
Membership says where a path's bytes are staged, not whether a plan claims it:
|
|
1222
|
-
appends `CATALOG_AGENT_PATH` to what `HOST_PATHS` selects rather than
|
|
1223
|
-
keeps the file planned without putting a canon path in the vendored
|
|
1303
|
+
Membership says where a path's bytes are staged, not whether a plan claims it:
|
|
1304
|
+
`blueprintToHostArtifacts` appends `CATALOG_AGENT_PATH` to what `HOST_PATHS` selects rather than
|
|
1305
|
+
listing it there, which is what keeps the file planned without putting a canon path in the vendored
|
|
1306
|
+
list.
|
|
1224
1307
|
|
|
1225
1308
|
The `host.json` file at the repository root is the committed live inventory. Each entry carries the
|
|
1226
1309
|
SHA-256 digest of its file content, and the inventory carries a membership digest over its declared
|
|
@@ -1324,7 +1407,14 @@ except the manifest.
|
|
|
1324
1407
|
`--ignore-scripts` to `npm pack` so a suite never re-runs the build it already gates.
|
|
1325
1408
|
- One template artifact per configuration file the selection needs: the root `tsconfig.json` and
|
|
1326
1409
|
`vite.config.ts`, plus a Vite config and a scoped TypeScript config per selected environment and
|
|
1327
|
-
for `bin` when it is set.
|
|
1410
|
+
for `bin` when it is set. The root `tsconfig.json` maps the `@src` and `@app` aliases the selection
|
|
1411
|
+
reaches, and beside them the workspace's own published specifiers — `@orkestrel/<name>` and one
|
|
1412
|
+
`@orkestrel/<name>/<environment>` entry per subpath the `exports` map publishes — each to its
|
|
1413
|
+
source entry. Without them the workspace's own name resolves through that `exports` map to
|
|
1414
|
+
`dist/`, and `npm run check` would wait on `npm run build`. Every subpath is written before the
|
|
1415
|
+
bare specifier, because `vite.config.ts` derives its `alias` record from these entries in order and
|
|
1416
|
+
a bare specifier also matches its own subpaths. An `app` environment publishes nothing and maps no
|
|
1417
|
+
such entry.
|
|
1328
1418
|
- One template artifact, `configs/browsers.ts`, for a workspace selecting `browser` on either axis.
|
|
1329
1419
|
It resolves the Chromium the Playwright provider launches, and the root `vite.config.ts` calls it
|
|
1330
1420
|
once into `browserOptions` and passes that to every `playwright()` provider it configures. The
|
|
@@ -1358,6 +1448,36 @@ except the manifest.
|
|
|
1358
1448
|
- One host artifact per vendored path the workspace selects. A vendored directory is one planned
|
|
1359
1449
|
path that expands into the files the data root stores beneath it.
|
|
1360
1450
|
|
|
1451
|
+
Every generated manifest declares the toolchain it is gated on. The `engines.node` field carries
|
|
1452
|
+
the blueprint's `engines` value, which defaults to the `>=22.18.0` range. The
|
|
1453
|
+
`devEngines.packageManager` record names npm at the `>=11.6.0` range with its `onFail` key set to
|
|
1454
|
+
the `error` value, and no blueprint field varies that record. An npm at 10.9.0 or later reads that
|
|
1455
|
+
record. Such an npm earlier than 11.6.0 refuses the `npm install` command in a generated workspace
|
|
1456
|
+
with the `EBADDEVENGINES` code, before resolving the dependency graph.
|
|
1457
|
+
npm 10.9.7 refuses an `npm run` command in such a workspace with the same code. The releases
|
|
1458
|
+
measured earlier than 10.9.0, npm 10.5.0 and npm 10.8.3, ignore the record and fail inside
|
|
1459
|
+
dependency resolution instead. Every Node release at 22.18.0 or later bundles an npm at 10.9.0 or
|
|
1460
|
+
later. A generated workspace on Node 22.18.0 or later therefore meets an npm that ignores the record
|
|
1461
|
+
only under an npm other than the bundled one. Run a generated workspace on npm 11.6.0 or later:
|
|
1462
|
+
every release from 10.9.0 up to 11.6.0 refuses it, and 11.6.0 installs it. Read the ambient
|
|
1463
|
+
version with the `npm --version` command. Raise it with the `npm install --global npm@11.6.0`
|
|
1464
|
+
command before the first install; that command installs an npm that reports
|
|
1465
|
+
11.6.0. The npm readings come from a Linux host on Node 22.22.2, on 2026-09-13, and the bundled
|
|
1466
|
+
versions come from the Node release index read that day.
|
|
1467
|
+
|
|
1468
|
+
A workspace publishing a `src` environment rolls each published face's declarations up from that
|
|
1469
|
+
face's own Vite config. The seeded config calls `declarationRollup` from the vendored
|
|
1470
|
+
`configs/helpers.ts`, which runs the workspace's own compiler as a command —
|
|
1471
|
+
`--declaration --emitDeclarationOnly` into a scratch directory outside the tree — and hands the
|
|
1472
|
+
emitted entry declaration to API Extractor, which rolls the face into the one `index.d.ts` beside
|
|
1473
|
+
its bundle. The extractor analyses with the compiler engine it bundles rather than the one the
|
|
1474
|
+
workspace installs, so a publishing workspace declares `@microsoft/api-extractor` and imports no
|
|
1475
|
+
compiler API of its own. The browser and server faces pass `rewriteCoreSpecifier`: the compiler
|
|
1476
|
+
emits the `@src/core` specifier unrewritten and the extractor keeps it external, so the rewrite
|
|
1477
|
+
replaces it with the workspace's own published name and a consumer of the packed face reaches core
|
|
1478
|
+
through the root export the tarball declares. The seeded `bin` config calls no roll-up, because an
|
|
1479
|
+
executable ships no declarations.
|
|
1480
|
+
|
|
1361
1481
|
`planToSummary` reports the tally rather than a number written down here:
|
|
1362
1482
|
|
|
1363
1483
|
```ts
|
|
@@ -1665,6 +1785,16 @@ one answered first. That is what drives a `require`-only subpath declaring its t
|
|
|
1665
1785
|
`require`, and what admits a conventional subpath that publishes no `types` condition but ships the
|
|
1666
1786
|
adjacent declaration TypeScript substitutes from its runtime target.
|
|
1667
1787
|
|
|
1788
|
+
An entry's published names are checked against its own declarations by the type system rather than
|
|
1789
|
+
by a walk the proof carries. Each drive writes the runtime's own key list into a generated consumer
|
|
1790
|
+
module as a literal and lets the workspace's compiler judge that module under the driver's own
|
|
1791
|
+
resolution, in both directions. `Record<keyof typeof entry, true>` takes the literal, so a name the
|
|
1792
|
+
declarations carry and the runtime does not lands there. `Record<keyof typeof published, true>`
|
|
1793
|
+
takes that record back, so a name the runtime carries and the declarations do not, and a name the
|
|
1794
|
+
declarations publish as a type alone, land there instead. One direction alone passes on a runtime
|
|
1795
|
+
key the declarations lack, which is why the consumer carries both, and each diagnostic names the
|
|
1796
|
+
member that moved.
|
|
1797
|
+
|
|
1668
1798
|
A subpath is undeclared when it resolves no declaration and names a runtime target, which is a
|
|
1669
1799
|
defect, because a consumer importing it compiles against nothing under `node16`. A target is a
|
|
1670
1800
|
runtime target when its own file name carries no extension at all, or carries `.js`, `.mjs`,
|
|
@@ -1784,8 +1914,13 @@ port, so the run drives nothing external and stays in `test`.
|
|
|
1784
1914
|
- [`tests/src/bin/helpers.test.ts`](../tests/src/bin/helpers.test.ts) — command-line reading, usage
|
|
1785
1915
|
rendering, and the failure envelope.
|
|
1786
1916
|
- [`tests/src/bin/main.test.ts`](../tests/src/bin/main.test.ts) — the process entry point.
|
|
1787
|
-
- [`tests/policy.test.ts`](../tests/policy.test.ts) — the
|
|
1788
|
-
|
|
1917
|
+
- [`tests/policy.test.ts`](../tests/policy.test.ts) — the path- and text-shaped policy laws:
|
|
1918
|
+
mirrors, suppressions, the rule map, filenames, manifest scripts, skills, bridges, and the prose
|
|
1919
|
+
sweep over every authored Markdown file. The syntax-shaped laws are the rules of the vendored
|
|
1920
|
+
oxlint plugin `configs/policy.ts`, proven in `tests/config.test.ts`.
|
|
1921
|
+
- [`tests/config.test.ts`](../tests/config.test.ts) — the root configuration's aliases, projects,
|
|
1922
|
+
and outputs, every plugin rule against a case pair drawn from inside and outside its membership
|
|
1923
|
+
boundary, and the declaration roll-up over a real face.
|
|
1789
1924
|
- [`tests/guides.test.ts`](../tests/guides.test.ts) — this guide's bijection with the barrels.
|
|
1790
1925
|
|
|
1791
1926
|
## See also
|