@orkestrel/scaffold 0.0.70 → 0.0.71

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.
@@ -46,7 +46,7 @@ so network-controlled descriptions never enter agent instruction context.
46
46
  | Package | Version | Layer | Runtime dependencies | Peer dependencies |
47
47
  | ----------------------- | -------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
48
48
  | `@orkestrel/abort` | `0.0.10` | L1 | `@orkestrel/contract` `^0.0.17` | |
49
- | `@orkestrel/agent` | `0.0.22` | L5 | `@orkestrel/abort` `^0.0.10`, `@orkestrel/budget` `^0.0.10`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/database` `^0.0.14`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/queue` `^0.0.13`, `@orkestrel/timeout` `^0.0.10`, `@orkestrel/tool` `^0.0.14`, `@orkestrel/workflow` `^0.0.18`, `@orkestrel/workspace` `^0.0.8` | |
49
+ | `@orkestrel/agent` | `0.0.23` | L5 | `@orkestrel/abort` `^0.0.10`, `@orkestrel/budget` `^0.0.10`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/database` `^0.0.14`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/queue` `^0.0.13`, `@orkestrel/timeout` `^0.0.10`, `@orkestrel/tool` `^0.0.15`, `@orkestrel/workflow` `^0.0.18`, `@orkestrel/workspace` `^0.0.8` | |
50
50
  | `@orkestrel/brief` | `0.0.8` | L4 | `@orkestrel/reason` `^0.0.10`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/interpret` `^0.0.13` | |
51
51
  | `@orkestrel/browser` | `0.0.16` | L3 | `@orkestrel/html` `^0.0.9`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/websocket` `^0.0.12` | |
52
52
  | `@orkestrel/budget` | `0.0.10` | L1 | `@orkestrel/contract` `^0.0.17` | |
@@ -63,13 +63,13 @@ so network-controlled descriptions never enter agent instruction context.
63
63
  | `@orkestrel/interpret` | `0.0.13` | L3 | `@orkestrel/reason` `^0.0.10`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/template` `^0.0.7` | |
64
64
  | `@orkestrel/lsp` | `0.0.8` | L3 | `@orkestrel/emitter` `^0.0.10`, `@orkestrel/process` `^0.0.12`, `@orkestrel/contract` `^0.0.17` | |
65
65
  | `@orkestrel/markdown` | `0.0.14` | L2 | `@orkestrel/contract` `^0.0.17`, `@orkestrel/html` `^0.0.9` | |
66
- | `@orkestrel/mcp` | `0.0.30` | L4 | `@orkestrel/sse` `^0.0.7`, `@orkestrel/tool` `^0.0.14`, `@orkestrel/codec` `^0.0.3`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/process` `^0.0.12`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/websocket` `^0.0.12` | `@orkestrel/router` `^0.0.14`, `@orkestrel/server` `^0.0.19` |
66
+ | `@orkestrel/mcp` | `0.0.31` | L4 | `@orkestrel/sse` `^0.0.7`, `@orkestrel/tool` `^0.0.15`, `@orkestrel/codec` `^0.0.3`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/process` `^0.0.12`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/websocket` `^0.0.12` | `@orkestrel/router` `^0.0.14`, `@orkestrel/server` `^0.0.19` |
67
67
  | `@orkestrel/middleware` | `0.0.20` | L4 | `@orkestrel/abort` `^0.0.10`, `@orkestrel/budget` `^0.0.10`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/timeout` `^0.0.10` | `@orkestrel/database` `^0.0.14`, `@orkestrel/server` `^0.0.19` |
68
68
  | `@orkestrel/msg` | `0.0.10` | L0 | | |
69
69
  | `@orkestrel/ndjson` | `0.0.10` | L1 | `@orkestrel/contract` `^0.0.17` | |
70
- | `@orkestrel/ollama` | `0.0.16` | L6 | `@orkestrel/tool` `^0.0.14`, `@orkestrel/agent` `^0.0.22`, `@orkestrel/budget` `^0.0.10`, `@orkestrel/ndjson` `^0.0.10`, `@orkestrel/contract` `^0.0.17` | |
70
+ | `@orkestrel/ollama` | `0.0.17` | L6 | `@orkestrel/tool` `^0.0.15`, `@orkestrel/agent` `^0.0.23`, `@orkestrel/budget` `^0.0.10`, `@orkestrel/ndjson` `^0.0.10`, `@orkestrel/contract` `^0.0.17` | |
71
71
  | `@orkestrel/pool` | `0.0.11` | L2 | `@orkestrel/emitter` `^0.0.10` | |
72
- | `@orkestrel/probe` | `0.0.14` | L5 | `@orkestrel/contract` `^0.0.17`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/lsp` `^0.0.8`, `@orkestrel/mcp` `^0.0.30`, `@orkestrel/queue` `^0.0.13`, `@orkestrel/timeout` `^0.0.10`, `@orkestrel/tool` `^0.0.14` | `oxlint` `^1.82.0`, `typescript` `^6.0.3`, `vitest` `^4.1.11` |
72
+ | `@orkestrel/probe` | `0.0.15` | L5 | `@orkestrel/lsp` `^0.0.8`, `@orkestrel/mcp` `^0.0.31`, `@orkestrel/tool` `^0.0.15`, `@orkestrel/queue` `^0.0.13`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/timeout` `^0.0.10`, `@orkestrel/contract` `^0.0.17` | `oxlint` `^1.82.0`, `vitest` `^4.1.11`, `typescript` `^6.0.3` |
73
73
  | `@orkestrel/process` | `0.0.12` | L2 | `@orkestrel/contract` `^0.0.17`, `@orkestrel/emitter` `^0.0.10` | |
74
74
  | `@orkestrel/program` | `0.0.13` | L4 | `@orkestrel/contract` `^0.0.17`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/qualifier` `^0.0.14`, `@orkestrel/rater` `^0.0.14`, `@orkestrel/reason` `^0.0.10` | |
75
75
  | `@orkestrel/qualifier` | `0.0.14` | L3 | `@orkestrel/contract` `^0.0.17`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/reason` `^0.0.10` | |
@@ -78,7 +78,7 @@ so network-controlled descriptions never enter agent instruction context.
78
78
  | `@orkestrel/reason` | `0.0.10` | L2 | `@orkestrel/contract` `^0.0.17`, `@orkestrel/emitter` `^0.0.10` | |
79
79
  | `@orkestrel/relation` | `0.0.12` | L3 | `@orkestrel/contract` `^0.0.17`, `@orkestrel/database` `^0.0.14`, `@orkestrel/emitter` `^0.0.10` | |
80
80
  | `@orkestrel/router` | `0.0.14` | L2 | `@orkestrel/abort` `^0.0.10`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/contract` `^0.0.17` | |
81
- | `@orkestrel/scaffold` | `0.0.67` | L3 | `@orkestrel/console` `^0.0.13`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/markdown` `^0.0.14`, `@orkestrel/process` `^0.0.12`, `@orkestrel/template` `^0.0.7` | |
81
+ | `@orkestrel/scaffold` | `0.0.70` | L3 | `@orkestrel/console` `^0.0.13`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/markdown` `^0.0.14`, `@orkestrel/process` `^0.0.12`, `@orkestrel/template` `^0.0.7` | |
82
82
  | `@orkestrel/sea` | `0.0.16` | L3 | `@orkestrel/contract` `^0.0.17`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/process` `^0.0.12` | |
83
83
  | `@orkestrel/server` | `0.0.19` | L3 | `@orkestrel/abort` `^0.0.10`, `@orkestrel/codec` `^0.0.3`, `@orkestrel/router` `^0.0.14`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/timeout` `^0.0.10`, `@orkestrel/contract` `^0.0.17` | |
84
84
  | `@orkestrel/sqlite` | `0.0.11` | L1 | `@orkestrel/contract` `^0.0.17` | |
@@ -89,8 +89,8 @@ so network-controlled descriptions never enter agent instruction context.
89
89
  | `@orkestrel/terminal` | `0.0.15` | L3 | `@orkestrel/console` `^0.0.13`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/database` `^0.0.14`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/form` `^0.0.6`, `@orkestrel/sse` `^0.0.7` | |
90
90
  | `@orkestrel/test` | `0.0.14` | L0 | | `vitest` `^4.1.11` |
91
91
  | `@orkestrel/timeout` | `0.0.10` | L1 | `@orkestrel/contract` `^0.0.17` | |
92
- | `@orkestrel/tool` | `0.0.14` | L1 | `@orkestrel/contract` `^0.0.17` | |
93
- | `@orkestrel/toolbox` | `0.0.13` | L6 | `@orkestrel/form` `^0.0.6`, `@orkestrel/tool` `^0.0.14`, `@orkestrel/agent` `^0.0.21`, `@orkestrel/server` `^0.0.19`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/database` `^0.0.14`, `@orkestrel/relation` `^0.0.12`, `@orkestrel/terminal` `^0.0.15`, `@orkestrel/workflow` `^0.0.18`, `@orkestrel/workspace` `^0.0.8` | |
92
+ | `@orkestrel/tool` | `0.0.15` | L2 | `@orkestrel/emitter` `^0.0.10`, `@orkestrel/contract` `^0.0.17` | |
93
+ | `@orkestrel/toolbox` | `0.0.14` | L6 | `@orkestrel/form` `^0.0.6`, `@orkestrel/tool` `^0.0.15`, `@orkestrel/agent` `^0.0.23`, `@orkestrel/server` `^0.0.19`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/database` `^0.0.14`, `@orkestrel/relation` `^0.0.12`, `@orkestrel/terminal` `^0.0.15`, `@orkestrel/workflow` `^0.0.18`, `@orkestrel/workspace` `^0.0.8` | |
94
94
  | `@orkestrel/websocket` | `0.0.12` | L2 | `@orkestrel/emitter` `^0.0.10` | |
95
95
  | `@orkestrel/worker` | `0.0.12` | L4 | `@orkestrel/contract` `^0.0.17`, `@orkestrel/database` `^0.0.14`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/pool` `^0.0.11`, `@orkestrel/queue` `^0.0.13` | |
96
96
  | `@orkestrel/workflow` | `0.0.18` | L4 | `@orkestrel/abort` `^0.0.10`, `@orkestrel/budget` `^0.0.10`, `@orkestrel/contract` `^0.0.17`, `@orkestrel/database` `^0.0.14`, `@orkestrel/emitter` `^0.0.10`, `@orkestrel/queue` `^0.0.13`, `@orkestrel/timeout` `^0.0.10` | |
@@ -1369,8 +1369,9 @@ leaf and its proof, and the byte-identical root dotfiles. The session-start hook
1369
1369
  split by job. The bench probe reports whether a bench CLI resolves, and the dependency hook installs
1370
1370
  the lockfile's closure in a remote session.
1371
1371
  The Ollama hook invokes `scripts/ollama.sh` only when `CLAUDE_CODE_REMOTE=true`; direct invocation
1372
- remains available for live-service setup. What wires a bench stays in the canon, and a session reads
1373
- it at its primary root.
1372
+ remains available for live-service setup. Claude Code Cloud is Linux and has bash: SessionStart
1373
+ runs that POSIX script and never a Windows wrapper. What wires a bench stays in the canon, and a
1374
+ session reads it at its primary root.
1374
1375
 
1375
1376
  `scripts/ollama.sh` defaults to `http://127.0.0.1:11434` and `qwen3.5:2b-q4_K_M`. It requires Node
1376
1377
  for native URL and JSON handling and curl for the HTTP protocol. The script accepts an HTTP or HTTPS
@@ -1383,12 +1384,22 @@ completion.
1383
1384
 
1384
1385
  When an HTTP loopback endpoint is unreachable, the script may start an installed Ollama executable
1385
1386
  in an owned POSIX process group. A failure sends that owned group `TERM`, then sends `KILL` if it
1386
- 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
1387
- cannot safely terminate the Windows process tree. Automatic installation is limited to Linux cloud
1388
- or CI automation. The official installer download follows only HTTPS redirects, must be nonempty,
1389
- and runs within the remaining setup deadline. The installer may require root or `sudo`, and its own
1390
- platform prerequisites remain authoritative. The full setup deadline is 590 seconds, including a
1391
- 60-second local startup allowance, within the hook's 600-second timeout.
1387
+ does not stop within 5 seconds; a reused daemon remains untouched. Direct reuse works from Git Bash
1388
+ on Windows, but local startup there fails because Bash cannot safely terminate the Windows process
1389
+ tree. Automatic installation is limited to Linux cloud or CI automation. The official installer
1390
+ download follows only HTTPS redirects, must be nonempty, and runs within the remaining setup
1391
+ deadline. The installer may require root or `sudo`, and its own platform prerequisites remain
1392
+ authoritative. The full setup deadline is 590 seconds, including a 60-second local startup
1393
+ allowance, within the hook's 600-second timeout.
1394
+
1395
+ Windows test helpers run the HTTP setup protocol in process. For local startup, they resolve a
1396
+ regular-file Ollama executable through `@orkestrel/process` and launch it with `serve`, without
1397
+ Bash. An absent executable returns exit `127` when the endpoint needs local startup; a reachable
1398
+ daemon needs no executable. Windows fixture protocol tests run without an installed executable.
1399
+ The native `serve` launch skips when `resolveExecutable` finds no regular-file Ollama. Fixture
1400
+ setup uses an isolated PATH so an unready fixture cannot launch the host daemon. Local hooks
1401
+ succeed without making requests; remote hooks run setup. Claude Code Cloud continues to invoke
1402
+ `scripts/ollama.sh`.
1392
1403
 
1393
1404
  `CANON_PATHS` is the instruction canon, staged for reading instead: the `AGENTS.md` coding contract,
1394
1405
  the `CLAUDE.md` harness bridge, the `.agents/orchestration.md` agent-operation contract, the rules
@@ -352,7 +352,7 @@
352
352
  "storage": "claude/agents/orkestrel.md",
353
353
  "destination": ".claude/agents/orkestrel.md",
354
354
  "executable": false,
355
- "digest": "55c181ea7cc9d485444efa6d0f85192d09a2540cbd4f4499fed4fc1bc0813792"
355
+ "digest": "761ad0c795de9afd5c7dfa455c6b500cf18f278a6f0eae89b5370ce469a6d12b"
356
356
  },
357
357
  {
358
358
  "storage": "claude/agents/planner.md",
@@ -892,7 +892,7 @@
892
892
  "storage": "guides/scaffold.md",
893
893
  "destination": "guides/scaffold.md",
894
894
  "executable": false,
895
- "digest": "d831fafb8f07482f1c009766c1ea43be6fc834114d27184cf08d9a51368ca4ee"
895
+ "digest": "a3253b032e2f7de815c34ec6cbd111679a8b222c60780e44ade0550a548f5f1c"
896
896
  },
897
897
  {
898
898
  "storage": "guides/sea.md",
@@ -1993,5 +1993,5 @@
1993
1993
  ]
1994
1994
  }
1995
1995
  ],
1996
- "digest": "e5a6685504f71abc005e8f4f9e1f6167d3ecac14a966b4b7fa3701fb9805245c"
1996
+ "digest": "9f8770d4e8f9bc8ecace8c5b1b4e4ac285a4ad6f33aae7559ddacb84a403597b"
1997
1997
  }
@@ -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.70",
7
+ version: "0.0.71",
8
8
  description: "Scaffold workspaces with commands: new, audit, repair, catalog, and overwrite.",
9
9
  keywords: [
10
10
  "audit",
@@ -90,19 +90,19 @@ var package_default = {
90
90
  "prepublishOnly": "npm run format:check && npm run lint:check && npm run check && npm run build && npm test && npm run test:distribution -- --mode release"
91
91
  },
92
92
  dependencies: {
93
- "@orkestrel/console": "^0.0.13",
93
+ "@orkestrel/console": "^0.0.14",
94
94
  "@orkestrel/contract": "^0.0.17",
95
95
  "@orkestrel/emitter": "^0.0.10",
96
- "@orkestrel/markdown": "^0.0.14",
97
- "@orkestrel/process": "^0.0.12",
98
- "@orkestrel/template": "^0.0.7"
96
+ "@orkestrel/markdown": "^0.0.15",
97
+ "@orkestrel/process": "^0.0.13",
98
+ "@orkestrel/template": "^0.0.8"
99
99
  },
100
100
  devDependencies: {
101
101
  "@microsoft/api-extractor": "^7.59.1",
102
102
  "@orkestrel/guide": "^0.0.19",
103
- "@orkestrel/html": "^0.0.9",
104
- "@orkestrel/probe": "^0.0.14",
105
- "@orkestrel/test": "^0.0.14",
103
+ "@orkestrel/html": "^0.0.10",
104
+ "@orkestrel/probe": "^0.0.15",
105
+ "@orkestrel/test": "^0.0.15",
106
106
  "@types/node": "^26.5.1",
107
107
  "@vitest/browser-playwright": "^4.1.11",
108
108
  "oxfmt": "^0.68.0",
@@ -2851,7 +2851,7 @@ var ScaffoldError = class extends Error {
2851
2851
  * ```
2852
2852
  */
2853
2853
  function isScaffoldError(value) {
2854
- return value instanceof ScaffoldError;
2854
+ return (0, _orkestrel_contract.isInstance)(value, ScaffoldError);
2855
2855
  }
2856
2856
  //#endregion
2857
2857
  //#region src/core/validators.ts
@@ -5791,7 +5791,7 @@ function replaceManifestRanges(manifest, pins) {
5791
5791
  if (manifest.charAt(value) === ":") {
5792
5792
  value += 1;
5793
5793
  while (value < manifest.length && /\s/u.test(manifest.charAt(value))) value += 1;
5794
- if (typeof key === "string" && sectionNames.has(key) && manifest.charAt(value) === "{") {
5794
+ if ((0, _orkestrel_contract.isString)(key) && sectionNames.has(key) && manifest.charAt(value) === "{") {
5795
5795
  let sectionDepth = 0;
5796
5796
  let sectionCursor = value;
5797
5797
  while (sectionCursor < manifest.length) {
@@ -5873,7 +5873,7 @@ function replaceManifestRanges(manifest, pins) {
5873
5873
  }
5874
5874
  valueStart += 1;
5875
5875
  while (valueStart < section.length && /\s/u.test(section.charAt(valueStart))) valueStart += 1;
5876
- if (typeof key !== "string" || section.charAt(valueStart) !== "\"") {
5876
+ if (!(0, _orkestrel_contract.isString)(key) || section.charAt(valueStart) !== "\"") {
5877
5877
  sectionCursor = keyEnd;
5878
5878
  continue;
5879
5879
  }