@orkestrel/scaffold 0.0.49 → 0.0.50
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 +4 -2
- package/dist/bin/main.js +184 -72
- package/dist/bin/main.js.map +1 -1
- package/dist/host/agents/orchestration.md +28 -3
- package/dist/host/claude/agents/orkestrel.md +44 -44
- package/dist/host/claude/rules/tests.md +6 -2
- package/dist/host/guides/scaffold.md +328 -96
- package/dist/host/manifest.json +6 -6
- package/dist/host/scripts/codex.sh +0 -0
- package/dist/host/scripts/cursor.sh +0 -0
- package/dist/host/scripts/deps.sh +0 -0
- package/dist/host/scripts/ollama.sh +0 -0
- package/dist/host/tests/config.test.ts +26 -5
- package/dist/src/core/index.cjs +1285 -80
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +200 -36
- package/dist/src/core/index.d.ts +200 -36
- package/dist/src/core/index.js +1280 -81
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +47 -15
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +42 -15
- package/dist/src/server/index.d.ts +42 -15
- package/dist/src/server/index.js +48 -17
- package/dist/src/server/index.js.map +1 -1
- package/package.json +9 -9
|
@@ -530,7 +530,8 @@ right to stop.
|
|
|
530
530
|
is a guess. A claim about a search names the scope the search covered: a search bounded to one
|
|
531
531
|
directory proves something about that directory and nothing about the rest of the tree, and a
|
|
532
532
|
filtered set proves something about the filter's membership rule and nothing about the population
|
|
533
|
-
it was drawn from.
|
|
533
|
+
it was drawn from. Where several artifacts state the fact, check it against the code rather than
|
|
534
|
+
against the other copies: agreement proves one copy was taken from another.
|
|
534
535
|
- Take every measurement under the conditions the unit will run in, or have the unit take it. A
|
|
535
536
|
number measured in your environment and asserted as a criterion is unreachable when the
|
|
536
537
|
executor's sandbox denies what yours permitted, and no edit to the owned files can close it.
|
|
@@ -553,7 +554,10 @@ right to stop.
|
|
|
553
554
|
first criterion the unit cannot close and stops it there, so an unreachable criterion placed ahead
|
|
554
555
|
of a typecheck or a lint criterion skips that gate entirely and the unit ships a defect its own
|
|
555
556
|
brief would have caught. Put the cheap non-timing gates first, and never let a whole-suite result
|
|
556
|
-
gate a scoped one.
|
|
557
|
+
gate a scoped one. Cheap-first has one exception: where the change edits a file the repository
|
|
558
|
+
vendors or otherwise digests, the regeneration step precedes every gate that reads the generated
|
|
559
|
+
artifact. A parity or inventory gate ordered ahead of it cannot pass, because the edit restaled the
|
|
560
|
+
digest that gate reads, and the unit stops on a criterion its own work already satisfied.
|
|
557
561
|
- Ask what the change will do to the facts you just measured. A criterion fixed to a measured set is
|
|
558
562
|
unreachable if the change alters that set, and a file marked off-limits is wrong if the change
|
|
559
563
|
writes to it. Measure the state the unit will finish in, not only the state it starts from.
|
|
@@ -585,6 +589,17 @@ right to stop.
|
|
|
585
589
|
Ask of every criterion: what asserts the state this change ends? Own every answer, or strike the
|
|
586
590
|
criterion. Grant a behaviour and the tests that pin it together; grant a constant and every fixture
|
|
587
591
|
and expectation derived from it together.
|
|
592
|
+
- Find that set by running the suite, not by searching for the assertion's shape. A search returns
|
|
593
|
+
the assertions that look right and cannot say which ones the change actually reaches: a fixture
|
|
594
|
+
that never builds the directory the new code reads is a match the change cannot touch, and a
|
|
595
|
+
fixture that reaches it through a path the search never named is a miss. Both errors appear in one
|
|
596
|
+
grep. Where the change is already written somewhere — a scratch copy, an earlier unit, a probe —
|
|
597
|
+
run the suite against it and read the failures. Where it is not, name the search's bound in the
|
|
598
|
+
brief so the unit re-derives the set instead of trusting it.
|
|
599
|
+
- Scope a unit that changes a mechanism to own the prose describing that mechanism: the comment
|
|
600
|
+
beside the code it edits, and the guide passage stating the behaviour it moves. Where a brief
|
|
601
|
+
scopes that prose out so writers do not share a file, name the carrier that takes it and dispatch
|
|
602
|
+
that carrier before the change ships.
|
|
588
603
|
|
|
589
604
|
### Carry every finding
|
|
590
605
|
|
|
@@ -616,6 +631,11 @@ command that outlives the turn that started it. Every law here binds all of them
|
|
|
616
631
|
- Write a multi-step chain to a script file and run the file. A chain composed inside one shell
|
|
617
632
|
argument cannot be read back, corrected, or re-run, and the record of what actually ran is the
|
|
618
633
|
argument text in a transcript rather than a file on disk.
|
|
634
|
+
- Never edit a script file while a shell is executing it. `bash` reads a script incrementally from a
|
|
635
|
+
byte offset rather than loading it, so an edit that shifts line numbers moves the text under that
|
|
636
|
+
offset and the shell resumes mid-construct. The run dies on a syntax error in a line the script
|
|
637
|
+
does not contain, which reads as a defect in the work rather than as the edit that caused it. Copy
|
|
638
|
+
the file, edit the copy, and launch the copy for the next run.
|
|
619
639
|
- On a Windows host this binds every program-carrying command, not only long ones. Heredocs,
|
|
620
640
|
`node -e`, `node -p`, `&&` chaining, and any argument carrying `${...}` trip the Git Bash
|
|
621
641
|
approval classifier and turn an unattended run into a manual approval prompt. Write the program
|
|
@@ -881,7 +901,12 @@ once per round with one procedure, publish each layer in one window, and only th
|
|
|
881
901
|
so the step-local reading reports nothing moved while the manifest surface did. A re-pinned
|
|
882
902
|
runtime range is published surface: without the bump a consumer installs duplicate copies of the
|
|
883
903
|
moved dependency.
|
|
884
|
-
- A dist built before the version bump is the release artifact
|
|
904
|
+
- A dist built before the version bump is the release artifact wherever the bump edits no emitted
|
|
905
|
+
byte. Check that per package rather than assuming it: a package that imports its own
|
|
906
|
+
`package.json` version into published code emits that version, so its pre-bump dist is stale the
|
|
907
|
+
moment the version moves. Rebuild after the bump there, and pack from the rebuilt tree. Because
|
|
908
|
+
`npm publish --ignore-scripts` skips `prepack`, that rebuild is the operator's step, not the
|
|
909
|
+
publish's.
|
|
885
910
|
- Refresh the registry evidence between layers and derive each round's pins from it. A pin can only
|
|
886
911
|
name a version the registry already serves, so a dependency shipping in the same window keeps the
|
|
887
912
|
resolvable previous pin and takes its dev-only re-pin after the window closes.
|
|
@@ -36,54 +36,54 @@ so network-controlled descriptions never enter agent instruction context.
|
|
|
36
36
|
|
|
37
37
|
| Package | Version | Layer | Runtime dependencies |
|
|
38
38
|
| ----------------------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
39
|
-
| `@orkestrel/abort` | `0.0.
|
|
40
|
-
| `@orkestrel/agent` | `0.0.
|
|
41
|
-
| `@orkestrel/brief` | `0.0.
|
|
42
|
-
| `@orkestrel/browser` | `0.0.
|
|
43
|
-
| `@orkestrel/budget` | `0.0.
|
|
44
|
-
| `@orkestrel/console` | `0.0.
|
|
39
|
+
| `@orkestrel/abort` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
40
|
+
| `@orkestrel/agent` | `0.0.17` | 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` |
|
|
41
|
+
| `@orkestrel/brief` | `0.0.4` | L4 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/interpret` `^0.0.10`, `@orkestrel/reason` `^0.0.7` |
|
|
42
|
+
| `@orkestrel/browser` | `0.0.12` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/html` `^0.0.4`, `@orkestrel/websocket` `^0.0.9` |
|
|
43
|
+
| `@orkestrel/budget` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
44
|
+
| `@orkestrel/console` | `0.0.10` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
|
|
45
45
|
| `@orkestrel/contract` | `0.0.13` | L0 | |
|
|
46
|
-
| `@orkestrel/csv` | `0.0.
|
|
47
|
-
| `@orkestrel/database` | `0.0.
|
|
48
|
-
| `@orkestrel/emitter` | `0.0.
|
|
49
|
-
| `@orkestrel/form` | `0.0.
|
|
50
|
-
| `@orkestrel/guide` | `0.0.
|
|
51
|
-
| `@orkestrel/html` | `0.0.
|
|
52
|
-
| `@orkestrel/indexeddb` | `0.0.
|
|
53
|
-
| `@orkestrel/interpret` | `0.0.
|
|
54
|
-
| `@orkestrel/markdown` | `0.0.
|
|
55
|
-
| `@orkestrel/mcp` | `0.0.
|
|
56
|
-
| `@orkestrel/middleware` | `0.0.
|
|
57
|
-
| `@orkestrel/msg` | `0.0.
|
|
58
|
-
| `@orkestrel/ndjson` | `0.0.
|
|
59
|
-
| `@orkestrel/ollama` | `0.0.
|
|
46
|
+
| `@orkestrel/csv` | `0.0.5` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
47
|
+
| `@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` |
|
|
48
|
+
| `@orkestrel/emitter` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
49
|
+
| `@orkestrel/form` | `0.0.3` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
|
|
50
|
+
| `@orkestrel/guide` | `0.0.13` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/markdown` `^0.0.10` |
|
|
51
|
+
| `@orkestrel/html` | `0.0.5` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
52
|
+
| `@orkestrel/indexeddb` | `0.0.9` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
53
|
+
| `@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` |
|
|
54
|
+
| `@orkestrel/markdown` | `0.0.10` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/html` `^0.0.5` |
|
|
55
|
+
| `@orkestrel/mcp` | `0.0.21` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/process` `^0.0.6`, `@orkestrel/sse` `^0.0.5`, `@orkestrel/tool` `^0.0.11`, `@orkestrel/websocket` `^0.0.9` |
|
|
56
|
+
| `@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` |
|
|
57
|
+
| `@orkestrel/msg` | `0.0.8` | L0 | |
|
|
58
|
+
| `@orkestrel/ndjson` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
59
|
+
| `@orkestrel/ollama` | `0.0.11` | L6 | `@orkestrel/agent` `^0.0.17`, `@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` |
|
|
60
60
|
| `@orkestrel/pool` | `0.0.8` | L2 | `@orkestrel/emitter` `^0.0.7` |
|
|
61
|
-
| `@orkestrel/probe` | `0.0.
|
|
62
|
-
| `@orkestrel/process` | `0.0.
|
|
63
|
-
| `@orkestrel/program` | `0.0.
|
|
64
|
-
| `@orkestrel/qualifier` | `0.0.
|
|
65
|
-
| `@orkestrel/queue` | `0.0.
|
|
66
|
-
| `@orkestrel/rater` | `0.0.
|
|
67
|
-
| `@orkestrel/reason` | `0.0.
|
|
68
|
-
| `@orkestrel/relation` | `0.0.
|
|
69
|
-
| `@orkestrel/router` | `0.0.
|
|
70
|
-
| `@orkestrel/scaffold` | `0.0.
|
|
71
|
-
| `@orkestrel/sea` | `0.0.
|
|
72
|
-
| `@orkestrel/server` | `0.0.
|
|
73
|
-
| `@orkestrel/sqlite` | `0.0.
|
|
61
|
+
| `@orkestrel/probe` | `0.0.3` | L4 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/mcp` `^0.0.21`, `@orkestrel/queue` `^0.0.10`, `@orkestrel/timeout` `^0.0.7`, `@orkestrel/tool` `^0.0.11` |
|
|
62
|
+
| `@orkestrel/process` | `0.0.6` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7` |
|
|
63
|
+
| `@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` |
|
|
64
|
+
| `@orkestrel/qualifier` | `0.0.11` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/reason` `^0.0.7` |
|
|
65
|
+
| `@orkestrel/queue` | `0.0.10` | L3 | `@orkestrel/abort` `^0.0.7`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.11`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/timeout` `^0.0.7` |
|
|
66
|
+
| `@orkestrel/rater` | `0.0.12` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/reason` `^0.0.8` |
|
|
67
|
+
| `@orkestrel/reason` | `0.0.8` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
|
|
68
|
+
| `@orkestrel/relation` | `0.0.10` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8` |
|
|
69
|
+
| `@orkestrel/router` | `0.0.11` | L2 | `@orkestrel/abort` `^0.0.7`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7` |
|
|
70
|
+
| `@orkestrel/scaffold` | `0.0.49` | L3 | `@orkestrel/console` `^0.0.9`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/markdown` `^0.0.9`, `@orkestrel/process` `^0.0.6`, `@orkestrel/template` `^0.0.4` |
|
|
71
|
+
| `@orkestrel/sea` | `0.0.11` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/process` `^0.0.6` |
|
|
72
|
+
| `@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` |
|
|
73
|
+
| `@orkestrel/sqlite` | `0.0.9` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
74
74
|
| `@orkestrel/sse` | `0.0.5` | L0 | |
|
|
75
75
|
| `@orkestrel/supervisor` | `0.0.1` | L5 | `@orkestrel/contract` `^0.0.11`, `@orkestrel/database` `^0.0.9`, `@orkestrel/emitter` `^0.0.6`, `@orkestrel/workflow` `^0.0.12` |
|
|
76
|
-
| `@orkestrel/table` | `0.0.
|
|
77
|
-
| `@orkestrel/template` | `0.0.
|
|
78
|
-
| `@orkestrel/terminal` | `0.0.
|
|
79
|
-
| `@orkestrel/test` | `0.0.
|
|
80
|
-
| `@orkestrel/timeout` | `0.0.
|
|
81
|
-
| `@orkestrel/tool` | `0.0.
|
|
82
|
-
| `@orkestrel/toolbox` | `0.0.
|
|
83
|
-
| `@orkestrel/websocket` | `0.0.
|
|
84
|
-
| `@orkestrel/worker` | `0.0.
|
|
85
|
-
| `@orkestrel/workflow` | `0.0.
|
|
86
|
-
| `@orkestrel/workspace` | `0.0.
|
|
76
|
+
| `@orkestrel/table` | `0.0.3` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
|
|
77
|
+
| `@orkestrel/template` | `0.0.5` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
|
|
78
|
+
| `@orkestrel/terminal` | `0.0.12` | L3 | `@orkestrel/console` `^0.0.10`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/form` `^0.0.3`, `@orkestrel/sse` `^0.0.5` |
|
|
79
|
+
| `@orkestrel/test` | `0.0.11` | L0 | |
|
|
80
|
+
| `@orkestrel/timeout` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
81
|
+
| `@orkestrel/tool` | `0.0.12` | L1 | `@orkestrel/contract` `^0.0.13` |
|
|
82
|
+
| `@orkestrel/toolbox` | `0.0.8` | L6 | `@orkestrel/agent` `^0.0.17`, `@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` |
|
|
83
|
+
| `@orkestrel/websocket` | `0.0.10` | L2 | `@orkestrel/emitter` `^0.0.8` |
|
|
84
|
+
| `@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` |
|
|
85
|
+
| `@orkestrel/workflow` | `0.0.14` | L4 | `@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` |
|
|
86
|
+
| `@orkestrel/workspace` | `0.0.6` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8` |
|
|
87
87
|
|
|
88
88
|
<!-- /orkestrel:catalog -->
|
|
89
89
|
|
|
@@ -227,9 +227,13 @@ Import `createScratch` from `@orkestrel/test/server` when a proof needs real fil
|
|
|
227
227
|
```ts
|
|
228
228
|
interface ScratchInterface {
|
|
229
229
|
readonly path: string
|
|
230
|
-
write(target: string, text: string):
|
|
230
|
+
write(target: string, text: string): string
|
|
231
231
|
read(target: string): string | undefined
|
|
232
|
-
|
|
232
|
+
has(target: string): boolean
|
|
233
|
+
names(target?: string): readonly string[]
|
|
234
|
+
ensure(target: string): string
|
|
235
|
+
link(target: string, source: string): string
|
|
236
|
+
remove(target: string): void
|
|
233
237
|
destroy(): void
|
|
234
238
|
}
|
|
235
239
|
```
|