@orkestrel/scaffold 0.0.56 → 0.0.58

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.
@@ -50,8 +50,10 @@ following the skill.
50
50
  happens outside the window.
51
51
  6. **Reach the approval.** Follow [window.md](references/window.md), and launch the login chain
52
52
  only after the user signals they are at the keyboard.
53
- 7. **Spend the window.** Follow [window.md](references/window.md). Open the layer with one
54
- package, confirm its upload from the registry, then chase the remaining uploads back-to-back.
53
+ 7. **Authorize and upload.** Follow [window.md](references/window.md). Take the account's one-time
54
+ code where it has one, because that path opens no window. Where the account answers with no
55
+ code, the browser authorization opens the five-minute window: open the layer with one package,
56
+ confirm its upload from the registry, then chase the remaining uploads back-to-back.
55
57
  8. **Close the layer from the registry, then prepare the next.** A dependent's new pin cannot
56
58
  install until the version it names exists, so preparation and publication interleave and cannot
57
59
  be batched ahead.
@@ -1,7 +1,11 @@
1
1
  # The approval and the upload window
2
2
 
3
- The npm approval is the user's click, and the window it opens is five minutes long. Reach that
4
- click with a live chain, and spend the window without losing it.
3
+ A release needs the user at the keyboard to authenticate the session, and again to authorize each
4
+ upload. An approval URL dies unclicked in under a minute, so mint one only in a
5
+ moment the user can click, and relay it byte for byte. Where the account answers with a one-time
6
+ code, take that code for the upload — it needs no browser authorization and opens no window to
7
+ lose. Where the account has no code, the browser authorization opens a five-minute window, and the
8
+ rest of the layer either fits inside it or takes another approval.
5
9
 
6
10
  ## Arm the terminal
7
11
 
@@ -19,8 +23,8 @@ click with a live chain, and spend the window without losing it.
19
23
  missing credential.
20
24
  - Confirm authentication with `npm whoami`, never with an exit code. The legacy fallthrough exits
21
25
  zero.
22
- - Re-probe `whoami` immediately before opening the window. A stored credential expires
23
- mid-session, so a session-start answer does not hold.
26
+ - Re-probe `whoami` immediately before the first upload. A stored credential expires mid-session
27
+ and an overnight gap expires it, so a session-start answer does not hold.
24
28
  - Read a login log that shows the spinner and then a legacy `Username:` prompt as an expired
25
29
  attempt rather than as a prompt to answer. Kill it by process id and mint a fresh flow.
26
30
  - On a Windows host, Git Bash ships no `script` binary, so the upload step is operator-driven:
@@ -30,13 +34,30 @@ click with a live chain, and spend the window without losing it.
30
34
 
31
35
  ## Reach the approval
32
36
 
33
- - Launch the login chain only when the user has signalled they are at the keyboard and will click
34
- within ten minutes. An approval URL expires unclicked in about ten to fifteen minutes, and an
35
- overnight gap expires the session credential with it.
36
- - Expect an approval for each stage. The `npmjs.com/login/cli/<id>` URL authenticates the session;
37
- the `npmjs.com/auth/cli/<id>` URL authorizes the publish and opens the five-minute window. Tell
38
- the user both are coming, or the second link reads as the first having failed.
39
- - Say that approving the publish one opens a five-minute window covering the rest of the layer.
37
+ - Mint an approval only when the user is at the keyboard in that moment and can click immediately.
38
+ A URL minted while the user is still on their way is dead before they arrive.
39
+ - Put the URL on the first line of the message, with nothing before it. A reader who must read
40
+ anything before clicking arrives after the session is gone.
41
+ - Relay the URL exactly as the journal holds it. The `npm login --browser=false` command prints
42
+ `https://www.npmjs.com/login?next=/login/cli/<id>`, and the `npm publish --browser=false` command
43
+ prints `https://www.npmjs.com/auth/cli/<id>`.
44
+ - Never shorten, redirect-strip, or otherwise improve a minted URL. The bare
45
+ `https://www.npmjs.com/login/cli/<id>` target the login URL names is not a page: opened in a
46
+ browser it answers `{"message":"Unauthorized"}`. The user then reads a broken chain where the
47
+ chain is healthy, and the operator diagnoses the wrong failure.
48
+ - Expect an unclicked session to die about 45 seconds after it is minted. Measured on 2026-08-27
49
+ against `registry.npmjs.org` with `npm` 10.9.7 and `node` 22.22.2: npm polls `GET /-/v1/done`
50
+ every few seconds and takes `202` while the session waits, and the registry answers `403` at
51
+ about 45 seconds. Whether the registry fixes that abandon by elapsed time or by poll count is
52
+ unmeasured, so plan against the duration.
53
+ - Recognise the abandon on each side. The `npm login` command reads the `403` as web login being
54
+ unsupported and drops to its legacy `Username:` prompt. The `npm publish` command exits `E403`
55
+ naming `GET /-/v1/done?authId=`.
56
+ - Never keep a link alive by re-minting on a loop. Each mint invalidates the URL before it, so a
57
+ supervisor that re-mints on expiry makes the link a moving target and every relayed URL is dead
58
+ on arrival. Mint once per human moment, and mint again only when the user asks.
59
+ - Name the login approval and the upload authorization to the user before either arrives, or the
60
+ authorization link reads as the login having failed.
40
61
  - Surface each approval URL the moment it appears in the log, and take the **last** one in log
41
62
  order. npm mints a new URL whenever an attempt starts again, and the log accumulates every one,
42
63
  so a URL chosen by sorting rather than by position is already dead when the user opens it.
@@ -45,13 +66,33 @@ click with a live chain, and spend the window without losing it.
45
66
  has not reached the URL yet.
46
67
  - Relay the URL as plain text. A decorated link did not render for the operator, who then had
47
68
  nothing to click while the window ran down.
48
- - Re-read the log before treating an approval as failed. The chain is usually still alive on a
69
+ - Re-read the log before treating an approval as failed. The chain is sometimes still alive on a
49
70
  later URL, so surface that one rather than starting the chain again.
50
71
  - Read a `404` on an approval URL as a publish that already succeeded and consumed it. Read the
51
72
  registry before calling it a failure.
52
73
 
74
+ ## Authorize the upload
75
+
76
+ - Take the account's one-time code where the account has one. The
77
+ `npm publish --ignore-scripts --otp=<code>` command uploads with no browser authorization and no
78
+ poll, so it carries neither a window nor a race. In the `@orkestrel/scaffold` 0.0.56 run on
79
+ 2026-08-27 the browser authorization failed on the 45-second abandon and the one-time code
80
+ uploaded the package with no retry.
81
+ - Ask for the code at the moment of the upload, and run the upload inside that code's own life. A
82
+ code read minutes earlier is already spent.
83
+ - Ask for the code and nothing else. Never ask for a password, an access token, or an auth file.
84
+ `.agents/orchestration.md` § Publishing the fleet owns that law.
85
+ - Arm a one-time-code upload the way § Arm the terminal arms every other publish.
86
+ - Fall back to the browser authorization where the account answers with no code. That path mints
87
+ the `auth/cli/<id>` URL, needs the click inside the session's life, and opens the five-minute
88
+ window.
89
+ - Tell the user that approving an `auth/cli/<id>` URL opens a five-minute window covering the rest
90
+ of the layer.
91
+
53
92
  ## Spend the window
54
93
 
94
+ - Everything under this heading is the browser-authorization path. A one-time-code upload opens no
95
+ window, so none of it binds that path.
55
96
  - The window opens when the user approves, not when the first publish starts.
56
97
  - Open each layer with one package: publish it alone, surface its approval URL the moment the
57
98
  journal shows it, and confirm the upload from the registry before starting the rest.
@@ -60,18 +101,16 @@ click with a live chain, and spend the window without losing it.
60
101
  its own URL.
61
102
  - Relay every new URL to the user the moment it appears, through a journal watcher, and never
62
103
  pause the chain to wait for a click: a poll outlives the relay.
63
- - Tell the user to click only the URL last in log order. A click on a superseded URL poisons the live attempt
64
- the current poll fails `403 Forbidden - GET /-/v1/done` mid-flight. After any such 403,
65
- confirm no publish process is live, then mint one fresh attempt.
104
+ - Tell the user to click only the URL last in log order. A click on a superseded URL poisons the
105
+ live attempt, and the current poll then fails `403 Forbidden - GET /-/v1/done` mid-flight.
106
+ § Read a `403` on the poll owns the recovery.
66
107
  - **Never retry a publish that is still waiting for its authorization.** Each `npm publish`
67
108
  attempt mints a new `authId` and invalidates the previous one, so a retry loop makes the URL a
68
- moving target the user cannot approve in time. The abandoned poll then reports
69
- `403 Forbidden - GET /-/v1/done?authId=…`, which reads as a permissions problem and is the
70
- abandoned attempt colliding with the live one. Publish the first package of a layer with exactly
109
+ moving target the user cannot approve in time. Publish a layer's opening package with exactly
71
110
  one attempt.
72
111
  - Retry only an upload that failed **inside** an already-open window. `EOTP` there is intermittent
73
112
  contention rather than the window closing: retry about three times, and retry a failed set after
74
- the layer ends. Packages have landed on the third attempt and on a later pass with no new
113
+ the layer ends. Packages have landed on a third attempt and on a later pass with no new
75
114
  approval. These are different failures wearing similar codes; a retry fixes in-window contention
76
115
  and causes the moving approval target.
77
116
  - Expect a large layer to outlast one window. Size batches to what uploads in five minutes and
@@ -79,6 +118,21 @@ click with a live chain, and spend the window without losing it.
79
118
  - The contract's serialization law binds every upload in the window, and
80
119
  `.agents/orchestration.md` § Long-running commands binds the chain that runs them.
81
120
 
121
+ ## Read a `403` on the poll
122
+
123
+ `403 Forbidden - GET /-/v1/done` carries more than one cause, and each takes a different reading of
124
+ the same status. Rule from the evidence, never from which cause reads likelier.
125
+
126
+ - Nobody clicked inside the session's life. The poll ran out its 45 seconds against a URL no one
127
+ opened, and the registry closed the session.
128
+ - The user clicked a superseded URL and poisoned the live attempt. The poll fails mid-flight while
129
+ the user is looking at a page that reports success.
130
+ - Tell those causes apart from the log and the user, never from the status alone. A single minted
131
+ URL that nobody opened in time is the abandon. A log carrying a URL the running attempt
132
+ superseded, with the user reporting a click, is the poisoned attempt.
133
+ - Recover the same way whichever it was: read the registry for the version, confirm no publish
134
+ process is live, then mint exactly one fresh attempt with the user at the keyboard.
135
+
82
136
  ## Read the verdict from the registry
83
137
 
84
138
  - Read the result from the registry, not from an exit code. A piped `npm publish` reports the exit
@@ -43,57 +43,57 @@ so network-controlled descriptions never enter agent instruction context.
43
43
 
44
44
  <!-- orkestrel:catalog -->
45
45
 
46
- | Package | Version | Layer | Runtime dependencies |
47
- | ----------------------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
48
- | `@orkestrel/abort` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
49
- | `@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` |
50
- | `@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` |
51
- | `@orkestrel/browser` | `0.0.14` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/html` `^0.0.7`, `@orkestrel/websocket` `^0.0.10` |
52
- | `@orkestrel/budget` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
53
- | `@orkestrel/console` | `0.0.11` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
54
- | `@orkestrel/contract` | `0.0.13` | L0 | |
55
- | `@orkestrel/csv` | `0.0.5` | L1 | `@orkestrel/contract` `^0.0.13` |
56
- | `@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` |
57
- | `@orkestrel/emitter` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
58
- | `@orkestrel/form` | `0.0.3` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
59
- | `@orkestrel/guide` | `0.0.14` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/markdown` `^0.0.11` |
60
- | `@orkestrel/html` | `0.0.7` | L1 | `@orkestrel/contract` `^0.0.13` |
61
- | `@orkestrel/indexeddb` | `0.0.9` | L1 | `@orkestrel/contract` `^0.0.13` |
62
- | `@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` |
63
- | `@orkestrel/lsp` | `0.0.3` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/process` `^0.0.6` |
64
- | `@orkestrel/markdown` | `0.0.12` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/html` `^0.0.7` |
65
- | `@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` |
66
- | `@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` |
67
- | `@orkestrel/msg` | `0.0.8` | L0 | |
68
- | `@orkestrel/ndjson` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
69
- | `@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` |
70
- | `@orkestrel/pool` | `0.0.8` | L2 | `@orkestrel/emitter` `^0.0.7` |
71
- | `@orkestrel/probe` | `0.0.9` | L4 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/lsp` `^0.0.3`, `@orkestrel/mcp` `^0.0.25`, `@orkestrel/queue` `^0.0.10`, `@orkestrel/timeout` `^0.0.8`, `@orkestrel/tool` `^0.0.12` |
72
- | `@orkestrel/process` | `0.0.6` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7` |
73
- | `@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` |
74
- | `@orkestrel/qualifier` | `0.0.11` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7`, `@orkestrel/reason` `^0.0.7` |
75
- | `@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` |
76
- | `@orkestrel/rater` | `0.0.12` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/reason` `^0.0.8` |
77
- | `@orkestrel/reason` | `0.0.8` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
78
- | `@orkestrel/relation` | `0.0.10` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8` |
79
- | `@orkestrel/router` | `0.0.11` | L2 | `@orkestrel/abort` `^0.0.7`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.7` |
80
- | `@orkestrel/scaffold` | `0.0.54` | L3 | `@orkestrel/console` `^0.0.10`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/markdown` `^0.0.12`, `@orkestrel/process` `^0.0.6`, `@orkestrel/template` `^0.0.5` |
81
- | `@orkestrel/sea` | `0.0.11` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/process` `^0.0.6` |
82
- | `@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` |
83
- | `@orkestrel/sqlite` | `0.0.9` | L1 | `@orkestrel/contract` `^0.0.13` |
84
- | `@orkestrel/sse` | `0.0.5` | L0 | |
85
- | `@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` |
86
- | `@orkestrel/table` | `0.0.3` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
87
- | `@orkestrel/template` | `0.0.5` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
88
- | `@orkestrel/terminal` | `0.0.13` | L3 | `@orkestrel/console` `^0.0.11`, `@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` |
89
- | `@orkestrel/test` | `0.0.11` | L0 | |
90
- | `@orkestrel/timeout` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
91
- | `@orkestrel/tool` | `0.0.12` | L1 | `@orkestrel/contract` `^0.0.13` |
92
- | `@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` |
93
- | `@orkestrel/websocket` | `0.0.10` | L2 | `@orkestrel/emitter` `^0.0.8` |
94
- | `@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` |
95
- | `@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` |
96
- | `@orkestrel/workspace` | `0.0.6` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8` |
46
+ | Package | Version | Layer | Runtime dependencies |
47
+ | ----------------------- | -------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
48
+ | `@orkestrel/abort` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
49
+ | `@orkestrel/agent` | `0.0.19` | L5 | `@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.11`, `@orkestrel/timeout` `^0.0.8`, `@orkestrel/tool` `^0.0.12`, `@orkestrel/workflow` `^0.0.16`, `@orkestrel/workspace` `^0.0.6` |
50
+ | `@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` |
51
+ | `@orkestrel/browser` | `0.0.14` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/html` `^0.0.7`, `@orkestrel/websocket` `^0.0.10` |
52
+ | `@orkestrel/budget` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
53
+ | `@orkestrel/console` | `0.0.11` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
54
+ | `@orkestrel/contract` | `0.0.13` | L0 | |
55
+ | `@orkestrel/csv` | `0.0.5` | L1 | `@orkestrel/contract` `^0.0.13` |
56
+ | `@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` |
57
+ | `@orkestrel/emitter` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
58
+ | `@orkestrel/form` | `0.0.3` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
59
+ | `@orkestrel/guide` | `0.0.15` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/markdown` `^0.0.12` |
60
+ | `@orkestrel/html` | `0.0.7` | L1 | `@orkestrel/contract` `^0.0.13` |
61
+ | `@orkestrel/indexeddb` | `0.0.9` | L1 | `@orkestrel/contract` `^0.0.13` |
62
+ | `@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` |
63
+ | `@orkestrel/lsp` | `0.0.4` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/process` `^0.0.7` |
64
+ | `@orkestrel/markdown` | `0.0.12` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/html` `^0.0.7` |
65
+ | `@orkestrel/mcp` | `0.0.26` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/process` `^0.0.7`, `@orkestrel/sse` `^0.0.5`, `@orkestrel/tool` `^0.0.12`, `@orkestrel/websocket` `^0.0.10` |
66
+ | `@orkestrel/middleware` | `0.0.18` | L2 | `@orkestrel/abort` `^0.0.8`, `@orkestrel/budget` `^0.0.8`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/timeout` `^0.0.8` |
67
+ | `@orkestrel/msg` | `0.0.8` | L0 | |
68
+ | `@orkestrel/ndjson` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
69
+ | `@orkestrel/ollama` | `0.0.13` | L6 | `@orkestrel/agent` `^0.0.19`, `@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` |
70
+ | `@orkestrel/pool` | `0.0.9` | L2 | `@orkestrel/emitter` `^0.0.8` |
71
+ | `@orkestrel/probe` | `0.0.10` | L4 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/lsp` `^0.0.4`, `@orkestrel/mcp` `^0.0.26`, `@orkestrel/queue` `^0.0.11`, `@orkestrel/timeout` `^0.0.8`, `@orkestrel/tool` `^0.0.12` |
72
+ | `@orkestrel/process` | `0.0.7` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
73
+ | `@orkestrel/program` | `0.0.11` | L4 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/qualifier` `^0.0.12`, `@orkestrel/rater` `^0.0.12`, `@orkestrel/reason` `^0.0.8` |
74
+ | `@orkestrel/qualifier` | `0.0.12` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/reason` `^0.0.8` |
75
+ | `@orkestrel/queue` | `0.0.11` | L3 | `@orkestrel/abort` `^0.0.8`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/timeout` `^0.0.8` |
76
+ | `@orkestrel/rater` | `0.0.12` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/reason` `^0.0.8` |
77
+ | `@orkestrel/reason` | `0.0.8` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
78
+ | `@orkestrel/relation` | `0.0.10` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8` |
79
+ | `@orkestrel/router` | `0.0.12` | L2 | `@orkestrel/abort` `^0.0.8`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
80
+ | `@orkestrel/scaffold` | `0.0.57` | L3 | `@orkestrel/console` `^0.0.11`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/markdown` `^0.0.12`, `@orkestrel/process` `^0.0.6`, `@orkestrel/template` `^0.0.5` |
81
+ | `@orkestrel/sea` | `0.0.12` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/process` `^0.0.7` |
82
+ | `@orkestrel/server` | `0.0.16` | L3 | `@orkestrel/abort` `^0.0.8`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/router` `^0.0.12`, `@orkestrel/timeout` `^0.0.8` |
83
+ | `@orkestrel/sqlite` | `0.0.9` | L1 | `@orkestrel/contract` `^0.0.13` |
84
+ | `@orkestrel/sse` | `0.0.5` | L0 | |
85
+ | `@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` |
86
+ | `@orkestrel/table` | `0.0.3` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
87
+ | `@orkestrel/template` | `0.0.5` | L2 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/emitter` `^0.0.8` |
88
+ | `@orkestrel/terminal` | `0.0.13` | L3 | `@orkestrel/console` `^0.0.11`, `@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` |
89
+ | `@orkestrel/test` | `0.0.11` | L0 | |
90
+ | `@orkestrel/timeout` | `0.0.8` | L1 | `@orkestrel/contract` `^0.0.13` |
91
+ | `@orkestrel/tool` | `0.0.12` | L1 | `@orkestrel/contract` `^0.0.13` |
92
+ | `@orkestrel/toolbox` | `0.0.10` | L6 | `@orkestrel/agent` `^0.0.19`, `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/form` `^0.0.3`, `@orkestrel/relation` `^0.0.10`, `@orkestrel/server` `^0.0.16`, `@orkestrel/terminal` `^0.0.13`, `@orkestrel/tool` `^0.0.12`, `@orkestrel/workflow` `^0.0.16`, `@orkestrel/workspace` `^0.0.6` |
93
+ | `@orkestrel/websocket` | `0.0.10` | L2 | `@orkestrel/emitter` `^0.0.8` |
94
+ | `@orkestrel/worker` | `0.0.10` | L4 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8`, `@orkestrel/pool` `^0.0.9`, `@orkestrel/queue` `^0.0.11` |
95
+ | `@orkestrel/workflow` | `0.0.16` | 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.11`, `@orkestrel/timeout` `^0.0.8` |
96
+ | `@orkestrel/workspace` | `0.0.6` | L3 | `@orkestrel/contract` `^0.0.13`, `@orkestrel/database` `^0.0.12`, `@orkestrel/emitter` `^0.0.8` |
97
97
 
98
98
  <!-- /orkestrel:catalog -->
99
99
 
@@ -232,7 +232,7 @@
232
232
  "storage": "agents/skills/orkestrel-publish/SKILL.md",
233
233
  "destination": ".agents/skills/orkestrel-publish/SKILL.md",
234
234
  "executable": false,
235
- "digest": "35a3255f88aa7b80a3fa47f9d3052c4f0238e8ec14aa5b01cd5c284ae47788d3"
235
+ "digest": "7c259c5945838d0fedfd6eaf453bd912f6af802e26e74aebac13810018218c8c"
236
236
  },
237
237
  {
238
238
  "storage": "agents/skills/orkestrel-publish/agents/openai.yaml",
@@ -250,7 +250,7 @@
250
250
  "storage": "agents/skills/orkestrel-publish/references/window.md",
251
251
  "destination": ".agents/skills/orkestrel-publish/references/window.md",
252
252
  "executable": false,
253
- "digest": "88cf1dba129ce5a354087a0a865fe70d9e415b178842891b9734eec70a32215d"
253
+ "digest": "db102eb706708e887d8abf0d1f1bdd1132850e4dced735fb8c8378595c819ffd"
254
254
  },
255
255
  {
256
256
  "storage": "agents/templates/brief.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": "c48480a671f6288d9acf70366804f2386540bc16d711cf8cc29b67a3947bcfe5"
313
+ "digest": "acde8bb2c800fcbae1f48ddeb2e2699cad3c411df4c0ceb635dbeeb68581516c"
314
314
  },
315
315
  {
316
316
  "storage": "claude/agents/planner.md",
@@ -742,5 +742,5 @@
742
742
  ".codex/agents",
743
743
  ".cursor/rules"
744
744
  ],
745
- "digest": "260052484e5203b91bc8542fc49870dde886f789dc4f3f2a4e48f50f4f16afb3"
745
+ "digest": "1261f931f45caca71fe02d07421ee3de34e68ea2a0d692972ae10e3b54aedb92"
746
746
  }
@@ -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.56",
7
+ version: "0.0.58",
8
8
  description: "Scaffold workspaces with five commands: new, audit, repair, catalog, and overwrite.",
9
9
  keywords: [
10
10
  "audit",
@@ -93,14 +93,14 @@ var package_default = {
93
93
  "@orkestrel/contract": "^0.0.13",
94
94
  "@orkestrel/emitter": "^0.0.8",
95
95
  "@orkestrel/markdown": "^0.0.12",
96
- "@orkestrel/process": "^0.0.6",
96
+ "@orkestrel/process": "^0.0.7",
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.14",
101
+ "@orkestrel/guide": "^0.0.15",
102
102
  "@orkestrel/html": "^0.0.7",
103
- "@orkestrel/probe": "^0.0.9",
103
+ "@orkestrel/probe": "^0.0.10",
104
104
  "@orkestrel/test": "^0.0.11",
105
105
  "@types/node": "^26.4.0",
106
106
  "@vitest/browser-playwright": "^4.1.11",