@orkestrel/scaffold 0.0.52 → 0.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/main.js +9 -4
- package/dist/bin/main.js.map +1 -1
- package/dist/host/AGENTS.md +10 -0
- package/dist/host/agents/orchestration.md +6 -0
- package/dist/host/claude/agents/orkestrel.md +13 -12
- package/dist/host/dotfiles/oxlintrc.json +1 -0
- package/dist/host/dotfiles/prettierignore +3 -0
- package/dist/host/guides/scaffold.md +37 -22
- package/dist/host/manifest.json +7 -7
- package/dist/host/scripts/codex.sh +0 -0
- package/dist/host/scripts/cursor.sh +0 -0
- package/dist/host/scripts/deps.sh +0 -0
- package/dist/host/scripts/ollama.sh +0 -0
- package/dist/src/core/index.cjs +34 -16
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +6 -3
- package/dist/src/core/index.d.ts +6 -3
- package/dist/src/core/index.js +34 -16
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.js.map +1 -1
- package/package.json +9 -9
package/dist/host/AGENTS.md
CHANGED
|
@@ -148,6 +148,16 @@ Every file in the following table is a normative extension of this root. Read ev
|
|
|
148
148
|
|
|
149
149
|
This governs prose everywhere: chat replies, instruction files, guides, TSDoc, commit messages, and briefs.
|
|
150
150
|
|
|
151
|
+
Follow ISO 24495-1:2023 Plain Language in every response:
|
|
152
|
+
|
|
153
|
+
- Give the reader what they need for the task at hand, and nothing else.
|
|
154
|
+
- Put the key point first, and order the rest so the reader finds each part where they look for it.
|
|
155
|
+
- Word every sentence so the reader understands it on the first read.
|
|
156
|
+
- Shape the response so the reader can act on it without asking a follow-up question.
|
|
157
|
+
|
|
158
|
+
The rules in this section and `.claude/rules/writing.md` implement these principles. Apply the
|
|
159
|
+
principles directly to a case no rule covers.
|
|
160
|
+
|
|
151
161
|
- Write plainly. Say what you mean; mean what you say.
|
|
152
162
|
- Lead with the decision or the finding. Do not build up to it.
|
|
153
163
|
- One idea per sentence. Keep sentences short.
|
|
@@ -730,6 +730,12 @@ transport.
|
|
|
730
730
|
**When a brief assigns a bench unit a path outside the obvious source tree, name the write limit
|
|
731
731
|
in the brief.** If the sandbox rejects the patch, the unit stops and reports the rejection. Never
|
|
732
732
|
find another write mechanism.
|
|
733
|
+
**A bench unit writes only under its own `--cd` root and the system temporary directory.** A
|
|
734
|
+
report path in the orchestrator's repository is outside both, so the write is rejected after the
|
|
735
|
+
work is already done and the unit improvises a fallback the Orchestrator has to go find. Name the
|
|
736
|
+
report path inside the unit's own tree, or tell the unit to return the report as its final
|
|
737
|
+
message and take it from the `--output-last-message` file. Retention still lands the report in
|
|
738
|
+
`.orkestrel/<package>/` — the Orchestrator copies it there, and the unit never writes it there.
|
|
733
739
|
6. **Ephemeral streams, durable records.** A journal proves a bench is alive and recovers an
|
|
734
740
|
interrupted session. Keep journals under `tmp/`, never commit them, and sweep them at acceptance
|
|
735
741
|
after the final gate evidence is recorded. Durable retention — brief, distillate, verdict,
|
|
@@ -42,9 +42,9 @@ so network-controlled descriptions never enter agent instruction context.
|
|
|
42
42
|
| Package | Version | Layer | Runtime dependencies |
|
|
43
43
|
| ----------------------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
44
44
|
| `@orkestrel/abort` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
45
|
-
| `@orkestrel/agent` | `0.0.
|
|
46
|
-
| `@orkestrel/brief` | `0.0.
|
|
47
|
-
| `@orkestrel/browser` | `0.0.
|
|
45
|
+
| `@orkestrel/agent` | `0.0.18` | L5 | `@orkestrel/abort` `^0.0.7`, `@orkestrel/budget` `^0.0.7`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.11`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/queue` `^0.0.10`, `@orkestrel/timeout` `^0.0.7`, `@orkestrel/tool` `^0.0.11`, `@orkestrel/workflow` `^0.0.14`, `@orkestrel/workspace` `^0.0.5` |
|
|
46
|
+
| `@orkestrel/brief` | `0.0.6` | L4 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/interpret` `^0.0.11`, `@orkestrel/reason` `^0.0.8` |
|
|
47
|
+
| `@orkestrel/browser` | `0.0.13` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/html` `^0.0.6`, `@orkestrel/websocket` `^0.0.10` |
|
|
48
48
|
| `@orkestrel/budget` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
49
49
|
| `@orkestrel/console` | `0.0.10` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
|
|
50
50
|
| `@orkestrel/contract` | `0.0.13` | L0 | |
|
|
@@ -52,18 +52,19 @@ so network-controlled descriptions never enter agent instruction context.
|
|
|
52
52
|
| `@orkestrel/database` | `0.0.12` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/indexeddb` `^0.0.9`, `@orkestrel/sqlite` `^0.0.9` |
|
|
53
53
|
| `@orkestrel/emitter` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
54
54
|
| `@orkestrel/form` | `0.0.3` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
|
|
55
|
-
| `@orkestrel/guide` | `0.0.
|
|
56
|
-
| `@orkestrel/html` | `0.0.
|
|
55
|
+
| `@orkestrel/guide` | `0.0.14` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/markdown` `^0.0.11` |
|
|
56
|
+
| `@orkestrel/html` | `0.0.7` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
57
57
|
| `@orkestrel/indexeddb` | `0.0.9` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
58
58
|
| `@orkestrel/interpret` | `0.0.11` | L3 | `@orkestrel/reason` `^0.0.8`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/template` `^0.0.5` |
|
|
59
|
-
| `@orkestrel/
|
|
60
|
-
| `@orkestrel/
|
|
59
|
+
| `@orkestrel/lsp` | `0.0.2` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/process` `^0.0.6` |
|
|
60
|
+
| `@orkestrel/markdown` | `0.0.12` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/html` `^0.0.7` |
|
|
61
|
+
| `@orkestrel/mcp` | `0.0.25` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/process` `^0.0.6`, `@orkestrel/sse` `^0.0.5`, `@orkestrel/tool` `^0.0.12`, `@orkestrel/websocket` `^0.0.10` |
|
|
61
62
|
| `@orkestrel/middleware` | `0.0.17` | L2 | `@orkestrel/abort` `^0.0.7`, `@orkestrel/budget` `^0.0.7`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/timeout` `^0.0.7` |
|
|
62
63
|
| `@orkestrel/msg` | `0.0.8` | L0 | |
|
|
63
64
|
| `@orkestrel/ndjson` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
64
|
-
| `@orkestrel/ollama` | `0.0.
|
|
65
|
+
| `@orkestrel/ollama` | `0.0.12` | L6 | `@orkestrel/agent` `^0.0.18`, `@orkestrel/budget` `^0.0.8`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/ndjson` `^0.0.8`, `@orkestrel/timeout` `^0.0.8`, `@orkestrel/tool` `^0.0.12` |
|
|
65
66
|
| `@orkestrel/pool` | `0.0.8` | L2 | `@orkestrel/emitter` `^0.0.7` |
|
|
66
|
-
| `@orkestrel/probe` | `0.0.
|
|
67
|
+
| `@orkestrel/probe` | `0.0.8` | L4 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/lsp` `^0.0.2`, `@orkestrel/mcp` `^0.0.25`, `@orkestrel/queue` `^0.0.10`, `@orkestrel/timeout` `^0.0.8`, `@orkestrel/tool` `^0.0.12` |
|
|
67
68
|
| `@orkestrel/process` | `0.0.6` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7` |
|
|
68
69
|
| `@orkestrel/program` | `0.0.10` | L4 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/qualifier` `^0.0.11`, `@orkestrel/rater` `^0.0.11`, `@orkestrel/reason` `^0.0.7` |
|
|
69
70
|
| `@orkestrel/qualifier` | `0.0.11` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/reason` `^0.0.7` |
|
|
@@ -72,7 +73,7 @@ so network-controlled descriptions never enter agent instruction context.
|
|
|
72
73
|
| `@orkestrel/reason` | `0.0.8` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
|
|
73
74
|
| `@orkestrel/relation` | `0.0.10` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8` |
|
|
74
75
|
| `@orkestrel/router` | `0.0.11` | L2 | `@orkestrel/abort` `^0.0.7`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7` |
|
|
75
|
-
| `@orkestrel/scaffold` | `0.0.
|
|
76
|
+
| `@orkestrel/scaffold` | `0.0.53` | L3 | `@orkestrel/console` `^0.0.10`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/markdown` `^0.0.11`, `@orkestrel/process` `^0.0.6`, `@orkestrel/template` `^0.0.5` |
|
|
76
77
|
| `@orkestrel/sea` | `0.0.11` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/process` `^0.0.6` |
|
|
77
78
|
| `@orkestrel/server` | `0.0.15` | L3 | `@orkestrel/abort` `^0.0.8`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/router` `^0.0.11`, `@orkestrel/timeout` `^0.0.8` |
|
|
78
79
|
| `@orkestrel/sqlite` | `0.0.9` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
@@ -84,10 +85,10 @@ so network-controlled descriptions never enter agent instruction context.
|
|
|
84
85
|
| `@orkestrel/test` | `0.0.11` | L0 | |
|
|
85
86
|
| `@orkestrel/timeout` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
86
87
|
| `@orkestrel/tool` | `0.0.12` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
87
|
-
| `@orkestrel/toolbox` | `0.0.
|
|
88
|
+
| `@orkestrel/toolbox` | `0.0.9` | L6 | `@orkestrel/agent` `^0.0.18`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.11`, `@orkestrel/form` `^0.0.2`, `@orkestrel/relation` `^0.0.9`, `@orkestrel/server` `^0.0.14`, `@orkestrel/terminal` `^0.0.11`, `@orkestrel/tool` `^0.0.11`, `@orkestrel/workflow` `^0.0.14`, `@orkestrel/workspace` `^0.0.5` |
|
|
88
89
|
| `@orkestrel/websocket` | `0.0.10` | L2 | `@orkestrel/emitter` `^0.0.8` |
|
|
89
90
|
| `@orkestrel/worker` | `0.0.9` | L4 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.11`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/pool` `^0.0.8`, `@orkestrel/queue` `^0.0.10` |
|
|
90
|
-
| `@orkestrel/workflow` | `0.0.
|
|
91
|
+
| `@orkestrel/workflow` | `0.0.15` | L4 | `@orkestrel/abort` `^0.0.8`, `@orkestrel/budget` `^0.0.8`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/queue` `^0.0.10`, `@orkestrel/timeout` `^0.0.8` |
|
|
91
92
|
| `@orkestrel/workspace` | `0.0.6` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8` |
|
|
92
93
|
|
|
93
94
|
<!-- /orkestrel:catalog -->
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/oxc-project/oxc/main/npm/oxlint/configuration_schema.json",
|
|
3
|
+
"ignorePatterns": [".orkestrel/"],
|
|
3
4
|
"plugins": ["import", "typescript", "vitest"],
|
|
4
5
|
"jsPlugins": [{ "name": "policy", "specifier": "./configs/policy.ts" }],
|
|
5
6
|
"rules": {
|
|
@@ -456,16 +456,18 @@ package distributes; each operation reports one baseline word per surface. A sur
|
|
|
456
456
|
`floor` only where the package distributes a copy. The registry's organization membership ships
|
|
457
457
|
nowhere, so `catalog` refuses when that read fails.
|
|
458
458
|
|
|
459
|
-
For `new`, `repair`, `catalog`, and `overwrite`, authoritative absence
|
|
460
|
-
registry `404` or a packument with no admitted version stays a `FETCH` refusal,
|
|
461
|
-
version the registry says is absent produces an uninstallable manifest. `audit`
|
|
462
|
-
absence into questions and returns its audit result. Transport faults, timeouts, rate
|
|
463
|
-
byte-bound refusals, and integrity refusals can select the floor.
|
|
464
|
-
|
|
465
|
-
The guide surface is the per-row exception to whole-surface fallback
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
459
|
+
For `new`, `repair`, `catalog`, and `overwrite`, authoritative absence on a version surface never
|
|
460
|
+
selects `floor`. A registry `404` or a packument with no admitted version stays a `FETCH` refusal,
|
|
461
|
+
because writing a version the registry says is absent produces an uninstallable manifest. `audit`
|
|
462
|
+
turns release absence into questions and returns its audit result. Transport faults, timeouts, rate
|
|
463
|
+
refusals, byte-bound refusals, and integrity refusals can select the floor.
|
|
464
|
+
|
|
465
|
+
The guide surface is the per-row exception to whole-surface fallback, for absence as well as for
|
|
466
|
+
faults. A foreign guide the host could not serve — a failed read, or the `404` a published package
|
|
467
|
+
with a private repository answers with — keeps the target's existing mirror as its floor, while the
|
|
468
|
+
other guide rows can still update. When at least one selected guide keeps its mirror,
|
|
469
|
+
`provenance.guides` is `floor` for the result; it is `live` only when every selected guide resolved
|
|
470
|
+
live.
|
|
469
471
|
|
|
470
472
|
A value `Host` can carry live host-owned bytes beside installed floor bytes for deferred guide and
|
|
471
473
|
catalog paths. Each surface still contributes one baseline. Deferred paths are presence-only, and
|
|
@@ -588,7 +590,10 @@ literal absent project, its advisory tells the developer to register the project
|
|
|
588
590
|
script. For a planned project absent from the gate chains, the advisory reads the manifest after a
|
|
589
591
|
writable script projection. The `scripts` question owns an absent direct `test:<project>` line. The
|
|
590
592
|
`projects` question names the direct script and the gate chain that must invoke it when the projected
|
|
591
|
-
region still leaves the project ungated.
|
|
593
|
+
region still leaves the project ungated. Its remedy reads the manifest on disk rather than the
|
|
594
|
+
projection, so it states what the developer's own file holds: a script the manifest declares leaves
|
|
595
|
+
the gate as the only repair, and a script only the projection supplies is named as missing beside
|
|
596
|
+
the gate. When `configs` is selected, `repair` and `overwrite` refuse
|
|
592
597
|
an unregistered or ungated project before writing. Their refusal names the `configs` group, the
|
|
593
598
|
manifest and planned `vite.config.ts` conflict, and the option to exclude `configs` from `--groups`.
|
|
594
599
|
A selection that excludes `configs` proceeds. An advisory alone does not make an aligned target
|
|
@@ -602,8 +607,18 @@ and `copy` gate chains stay maintainer-owned. A declared value is overwritten on
|
|
|
602
607
|
the value being written or is a recognized generated predecessor. The overwrite happens in place,
|
|
603
608
|
so every byte outside the replaced ranges survives. A target's descriptions, keywords, extra
|
|
604
609
|
scripts, and manifest key order survive byte-for-byte. A script the manifest does not declare is
|
|
605
|
-
appended after the last declared
|
|
606
|
-
|
|
610
|
+
appended after the last declared script of its own key family, copying that section's indentation:
|
|
611
|
+
`test:setup` follows the last declared `test:` key rather than the lifecycle scripts that close the
|
|
612
|
+
section. A name carrying no colon has no family, and a family the section declares no member of has
|
|
613
|
+
nothing to follow, so each of those is appended after the last declared script instead. `catalog`
|
|
614
|
+
writes no script region; it names the ranges alone.
|
|
615
|
+
|
|
616
|
+
The range region and the script region are not groups. `package.json` is birth-owned, so the
|
|
617
|
+
`manifest` group creates it when a workspace is first materialized and never rewrites it afterwards,
|
|
618
|
+
and `--groups` narrows the plan rather than the regions. `repair` and `overwrite` therefore
|
|
619
|
+
reconcile the declared ranges and write the script region on every run, whatever the selection
|
|
620
|
+
names. A run scoped to `manifest` for a script write takes the reconciled `@orkestrel/*`
|
|
621
|
+
ranges with it, and a run that excludes `manifest` still takes the ranges and the scripts.
|
|
607
622
|
|
|
608
623
|
A value matching neither is a script the workspace author wrote. The region writer retains that
|
|
609
624
|
value byte-for-byte and reports its name, declared value, and planned value. Each other planned
|
|
@@ -613,8 +628,8 @@ non-string value or a `scripts` field that is not an object still refuses the wh
|
|
|
613
628
|
script byte moving. `audit` reports absent and differing scripts separately in its non-blocking
|
|
614
629
|
`scripts` question, and the terminal audit in `repair` and `overwrite` keeps every retained
|
|
615
630
|
difference visible. Other selected writes still proceed. The `projects` question reports only a
|
|
616
|
-
direct script the
|
|
617
|
-
|
|
631
|
+
direct script the projected region declares and the maintainer-owned gate chain does not invoke, and
|
|
632
|
+
it names that script as declared or as missing according to the manifest on disk.
|
|
618
633
|
|
|
619
634
|
The same plan-reading verbs compare the tooling set the derived blueprint plans against
|
|
620
635
|
`dependencies` and `devDependencies` together. A missing planned package produces one non-blocking
|
|
@@ -1083,13 +1098,13 @@ Each verb resolves a surface's complete answer before it opens that surface's wr
|
|
|
1083
1098
|
a partial answer never becomes a partial pin set. `overwrite` keeps the repair and removal work it
|
|
1084
1099
|
committed before a later catalog refusal and records that refusal in `note`.
|
|
1085
1100
|
|
|
1086
|
-
| Verb | Reads live | When the network forces a floor
|
|
1087
|
-
| ----------- | ---------------------------------------------------------------- |
|
|
1088
|
-
| `new` | Declared versions and the vendored host | Writes the distributed version and host floors; exits `0` after creating the workspace
|
|
1089
|
-
| `audit` | Declared versions and the vendored host | Compares through the distributed floors and exits `1`
|
|
1090
|
-
| `repair` | Declared versions and the vendored host | Repairs from the distributed floors and exits `1`, even when the terminal audit is aligned
|
|
1091
|
-
| `catalog` | Organization membership, its packuments, and the selected guides | Refuses a membership or version failure with `FETCH` and exit `1`; preserves each failed
|
|
1092
|
-
| `overwrite` | Everything `repair` and `catalog` read | Keeps completed repair and deletion work, names each floor or refused catalog step in `note`, and exits `1`
|
|
1101
|
+
| Verb | Reads live | When the network forces a floor | With `--offline` |
|
|
1102
|
+
| ----------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
1103
|
+
| `new` | Declared versions and the vendored host | Writes the distributed version and host floors; exits `0` after creating the workspace | Reads no upstream surface, writes the same floors, and exits `0` after creating the workspace |
|
|
1104
|
+
| `audit` | Declared versions and the vendored host | Compares through the distributed floors and exits `1` | Compares through the floors; exits `0` for an aligned target or `1` for drift |
|
|
1105
|
+
| `repair` | Declared versions and the vendored host | Repairs from the distributed floors and exits `1`, even when the terminal audit is aligned | Repairs from the floors; the terminal audit decides exit `0` or `1` |
|
|
1106
|
+
| `catalog` | Organization membership, its packuments, and the selected guides | Refuses a membership or version failure with `FETCH` and exit `1`; preserves the local mirror of each guide that failed or is absent upstream and exits `1` | Is a usage error; exits `2` and writes nothing |
|
|
1107
|
+
| `overwrite` | Everything `repair` and `catalog` read | Keeps completed repair and deletion work, names each floor or refused catalog step in `note`, and exits `1` | Repairs, deletes, and writes version floors; skips `catalog`, records that refusal in `note`, and exits `1` |
|
|
1093
1108
|
|
|
1094
1109
|
A fleet row is compared exactly — `^0.1.0` is stale the moment the registry serves `0.1.2` — and
|
|
1095
1110
|
that inequality alone raises `audit` to exit `1`. A foreign row is compared inside its declared
|
package/dist/host/manifest.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"storage": "AGENTS.md",
|
|
5
5
|
"destination": "AGENTS.md",
|
|
6
6
|
"executable": false,
|
|
7
|
-
"digest": "
|
|
7
|
+
"digest": "5dbb143394991882d36f90a8aabd7e6b0874863b45dde4040760fc834e9d942e"
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
"storage": "CLAUDE.md",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"storage": "agents/orchestration.md",
|
|
23
23
|
"destination": ".agents/orchestration.md",
|
|
24
24
|
"executable": false,
|
|
25
|
-
"digest": "
|
|
25
|
+
"digest": "db4414f1dc8eb2cc9e96cb920f08946d4be2507b081866839fea4112949b7505"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"storage": "agents/skills/enterprise-bootstrap/SKILL.md",
|
|
@@ -310,7 +310,7 @@
|
|
|
310
310
|
"storage": "claude/agents/orkestrel.md",
|
|
311
311
|
"destination": ".claude/agents/orkestrel.md",
|
|
312
312
|
"executable": false,
|
|
313
|
-
"digest": "
|
|
313
|
+
"digest": "f71a28e5a4865bf6a910d9628d645f7d430f38aef29b815ef85caa1c01d87454"
|
|
314
314
|
},
|
|
315
315
|
{
|
|
316
316
|
"storage": "claude/agents/planner.md",
|
|
@@ -628,13 +628,13 @@
|
|
|
628
628
|
"storage": "dotfiles/oxlintrc.json",
|
|
629
629
|
"destination": ".oxlintrc.json",
|
|
630
630
|
"executable": false,
|
|
631
|
-
"digest": "
|
|
631
|
+
"digest": "c2d9715f5db07992601cf764532c9d9c7b11177a366d46d767ce07f50f49acad"
|
|
632
632
|
},
|
|
633
633
|
{
|
|
634
634
|
"storage": "dotfiles/prettierignore",
|
|
635
635
|
"destination": ".prettierignore",
|
|
636
636
|
"executable": false,
|
|
637
|
-
"digest": "
|
|
637
|
+
"digest": "6f8bd3b8a192c974ae6332f017c2e76179d15e2598fbd624f7cd4e9e57156ff2"
|
|
638
638
|
},
|
|
639
639
|
{
|
|
640
640
|
"storage": "guides/guide.md",
|
|
@@ -646,7 +646,7 @@
|
|
|
646
646
|
"storage": "guides/scaffold.md",
|
|
647
647
|
"destination": "guides/scaffold.md",
|
|
648
648
|
"executable": false,
|
|
649
|
-
"digest": "
|
|
649
|
+
"digest": "4b6e503d74188118ebba5ff4c9d76d9c9a933c0aec055ae600e02540e73c8c57"
|
|
650
650
|
},
|
|
651
651
|
{
|
|
652
652
|
"storage": "scripts/codex.sh",
|
|
@@ -736,5 +736,5 @@
|
|
|
736
736
|
".codex/agents",
|
|
737
737
|
".cursor/rules"
|
|
738
738
|
],
|
|
739
|
-
"digest": "
|
|
739
|
+
"digest": "bb4f3428a2d0d631ca77df5dc1921a7a171cef0b5e8a840038f0b7ab32f751d7"
|
|
740
740
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/src/core/index.cjs
CHANGED
|
@@ -4,7 +4,7 @@ let _orkestrel_template = require("@orkestrel/template");
|
|
|
4
4
|
let _orkestrel_emitter = require("@orkestrel/emitter");
|
|
5
5
|
var package_default = {
|
|
6
6
|
name: "@orkestrel/scaffold",
|
|
7
|
-
version: "0.0.
|
|
7
|
+
version: "0.0.54",
|
|
8
8
|
description: "Scaffold workspaces with five commands: new, audit, repair, catalog, and overwrite.",
|
|
9
9
|
keywords: [
|
|
10
10
|
"audit",
|
|
@@ -78,7 +78,7 @@ var package_default = {
|
|
|
78
78
|
"test:distribution": "vitest run --config vite.config.ts --no-cache --reporter=dot --project distribution",
|
|
79
79
|
"test:probe": "vitest run --config vite.config.ts --no-cache --reporter=verbose --project probe",
|
|
80
80
|
"test:bench": "vitest bench --config vite.config.ts --no-cache --project probe",
|
|
81
|
-
"build": "npm run clean && npm run build:src && npm run build:host",
|
|
81
|
+
"build": "npm run clean && npm run build:src && npm run build:host && npm run build:inventory",
|
|
82
82
|
"build:src": "npm run build:src:core && npm run build:src:server && npm run build:src:bin",
|
|
83
83
|
"build:src:core": "vite build --config configs/src/vite.core.config.ts && npm run copy dist/src/core/index.d.ts dist/src/core/index.d.cts",
|
|
84
84
|
"build:src:server": "vite build --config configs/src/vite.server.config.ts && npm run copy dist/src/server/index.d.ts dist/src/server/index.d.cts",
|
|
@@ -92,20 +92,20 @@ var package_default = {
|
|
|
92
92
|
"@orkestrel/console": "^0.0.10",
|
|
93
93
|
"@orkestrel/contract": "^0.0.13",
|
|
94
94
|
"@orkestrel/emitter": "^0.0.8",
|
|
95
|
-
"@orkestrel/markdown": "^0.0.
|
|
95
|
+
"@orkestrel/markdown": "^0.0.12",
|
|
96
96
|
"@orkestrel/process": "^0.0.6",
|
|
97
97
|
"@orkestrel/template": "^0.0.5"
|
|
98
98
|
},
|
|
99
99
|
devDependencies: {
|
|
100
100
|
"@microsoft/api-extractor": "^7.59.0",
|
|
101
|
-
"@orkestrel/guide": "^0.0.
|
|
102
|
-
"@orkestrel/html": "^0.0.
|
|
103
|
-
"@orkestrel/probe": "^0.0.
|
|
101
|
+
"@orkestrel/guide": "^0.0.14",
|
|
102
|
+
"@orkestrel/html": "^0.0.7",
|
|
103
|
+
"@orkestrel/probe": "^0.0.8",
|
|
104
104
|
"@orkestrel/test": "^0.0.11",
|
|
105
|
-
"@types/node": "^26.
|
|
105
|
+
"@types/node": "^26.3.0",
|
|
106
106
|
"@vitest/browser-playwright": "^4.1.11",
|
|
107
|
-
"oxfmt": "^0.
|
|
108
|
-
"oxlint": "^1.
|
|
107
|
+
"oxfmt": "^0.65.0",
|
|
108
|
+
"oxlint": "^1.80.0",
|
|
109
109
|
"playwright": "^1.62.1",
|
|
110
110
|
"typescript": "^6.0.3",
|
|
111
111
|
"vite": "^8.2.2",
|
|
@@ -5445,9 +5445,12 @@ function replaceManifestRanges(manifest, pins) {
|
|
|
5445
5445
|
* other string is a chain the workspace author customized, so it stays
|
|
5446
5446
|
* byte-identical while the other named scripts are written independently. A
|
|
5447
5447
|
* named script the manifest does not declare is appended after the last
|
|
5448
|
-
* declared script, copying that section's indentation
|
|
5449
|
-
*
|
|
5450
|
-
*
|
|
5448
|
+
* declared script of its own key family, copying that section's indentation:
|
|
5449
|
+
* `test:setup` follows the last declared `test:` key. A name carrying no colon
|
|
5450
|
+
* has no family, and so does a family the section declares no member of, and
|
|
5451
|
+
* each of those is appended after the last declared script instead. A region
|
|
5452
|
+
* declaring nothing takes every named script as its first entries, indented
|
|
5453
|
+
* from the line its own opening brace sits on.
|
|
5451
5454
|
*
|
|
5452
5455
|
* @example
|
|
5453
5456
|
* ```ts
|
|
@@ -5541,6 +5544,7 @@ function replaceManifestScripts(manifest, scripts) {
|
|
|
5541
5544
|
if (start < 0 || end < 0) return void 0;
|
|
5542
5545
|
const edits = [];
|
|
5543
5546
|
const written = /* @__PURE__ */ new Set();
|
|
5547
|
+
const anchors = [];
|
|
5544
5548
|
let first = -1;
|
|
5545
5549
|
let nested = 0;
|
|
5546
5550
|
let scan = start;
|
|
@@ -5593,6 +5597,10 @@ function replaceManifestScripts(manifest, scripts) {
|
|
|
5593
5597
|
if (valueEnd >= end) return void 0;
|
|
5594
5598
|
scan = valueEnd + 1;
|
|
5595
5599
|
const key = (0, _orkestrel_contract.parseJSON)(manifest.slice(keyStart, keyEnd));
|
|
5600
|
+
if ((0, _orkestrel_contract.isString)(key)) anchors.push({
|
|
5601
|
+
name: key,
|
|
5602
|
+
end: valueEnd + 1
|
|
5603
|
+
});
|
|
5596
5604
|
const script = scripts.find((entry) => entry.name === key);
|
|
5597
5605
|
if (script === void 0) continue;
|
|
5598
5606
|
written.add(script.name);
|
|
@@ -5620,15 +5628,25 @@ function replaceManifestScripts(manifest, scripts) {
|
|
|
5620
5628
|
text: `${entries.join(",")}${closing}`
|
|
5621
5629
|
});
|
|
5622
5630
|
} else {
|
|
5623
|
-
let
|
|
5624
|
-
while (
|
|
5631
|
+
let tail = end - 1;
|
|
5632
|
+
while (tail > start && /\s/u.test(manifest.charAt(tail - 1))) tail -= 1;
|
|
5625
5633
|
const newline = manifest.lastIndexOf("\n", first);
|
|
5626
5634
|
const indent = newline < 0 ? "" : manifest.slice(newline + 1, first);
|
|
5627
5635
|
const separator = newline < 0 || /\S/u.test(indent) ? "" : `\n${indent}`;
|
|
5628
|
-
|
|
5636
|
+
const placed = /* @__PURE__ */ new Map();
|
|
5637
|
+
for (const script of missing) {
|
|
5638
|
+
const colon = script.name.indexOf(":");
|
|
5639
|
+
const family = colon < 0 ? void 0 : script.name.slice(0, colon + 1);
|
|
5640
|
+
const anchor = (family === void 0 ? void 0 : anchors.findLast((entry) => entry.name.startsWith(family)))?.end ?? tail;
|
|
5641
|
+
const text = `,${separator}${JSON.stringify(script.name)}: ${JSON.stringify(script.command)}`;
|
|
5642
|
+
const queued = placed.get(anchor);
|
|
5643
|
+
if (queued === void 0) placed.set(anchor, [text]);
|
|
5644
|
+
else queued.push(text);
|
|
5645
|
+
}
|
|
5646
|
+
for (const [anchor, queued] of placed) edits.push({
|
|
5629
5647
|
start: anchor,
|
|
5630
5648
|
end: anchor,
|
|
5631
|
-
text:
|
|
5649
|
+
text: queued.join("")
|
|
5632
5650
|
});
|
|
5633
5651
|
}
|
|
5634
5652
|
}
|