@orkestrel/scaffold 0.0.83 → 0.0.84

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.
@@ -78,7 +78,7 @@ so network-controlled descriptions never enter agent instruction context.
78
78
  | `@orkestrel/reason` | `0.0.12` | L2 | `@orkestrel/emitter` `^0.0.11`, `@orkestrel/contract` `^0.0.18` | |
79
79
  | `@orkestrel/relation` | `0.0.14` | L3 | `@orkestrel/emitter` `^0.0.11`, `@orkestrel/contract` `^0.0.18`, `@orkestrel/database` `^0.0.16` | |
80
80
  | `@orkestrel/router` | `0.0.16` | L2 | `@orkestrel/abort` `^0.0.12`, `@orkestrel/emitter` `^0.0.11`, `@orkestrel/contract` `^0.0.18` | |
81
- | `@orkestrel/scaffold` | `0.0.82` | L3 | `@orkestrel/console` `^0.0.15`, `@orkestrel/emitter` `^0.0.11`, `@orkestrel/process` `^0.0.14`, `@orkestrel/contract` `^0.0.18`, `@orkestrel/markdown` `^0.0.16`, `@orkestrel/template` `^0.0.9` | |
81
+ | `@orkestrel/scaffold` | `0.0.83` | L3 | `@orkestrel/console` `^0.0.15`, `@orkestrel/emitter` `^0.0.11`, `@orkestrel/process` `^0.0.14`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/markdown` `^0.0.17`, `@orkestrel/template` `^0.0.9` | |
82
82
  | `@orkestrel/sea` | `0.0.18` | L3 | `@orkestrel/emitter` `^0.0.11`, `@orkestrel/process` `^0.0.14`, `@orkestrel/contract` `^0.0.18` | |
83
83
  | `@orkestrel/server` | `0.0.22` | L3 | `@orkestrel/abort` `^0.0.12`, `@orkestrel/codec` `^0.0.5`, `@orkestrel/router` `^0.0.16`, `@orkestrel/emitter` `^0.0.11`, `@orkestrel/timeout` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
84
84
  | `@orkestrel/sqlite` | `0.0.13` | L1 | `@orkestrel/contract` `^0.0.18` | |
@@ -125,6 +125,7 @@ Exported from `@orkestrel/scaffold`, and reachable from
125
125
  | `BIN_CONFIGS` | const | Lists the configuration files a workspace that ships its own executable adds, frozen. |
126
126
  | `BIN_ENTRY_PATH` | const | Names the executable entry whose presence makes a workspace `bin`. |
127
127
  | `BROWSE_DEV_DEPENDENCIES` | const | Names the development dependency a browser or styles surface adds. |
128
+ | `BROWSE_UPSTREAM` | const | Lists the packages `@orkestrel/browser` depends on at runtime, directly or transitively, frozen. |
128
129
  | `CANON_PATHS` | const | Lists the instruction-canon paths staged for reading rather than for a target, frozen. |
129
130
  | `CATALOG_AGENT_PATH` | const | Names the agent file whose marker-bounded package table the catalog verb alone owns. |
130
131
  | `CATALOG_CLOSING_MARKER` | const | Names the marker closing the package table inside `CATALOG_AGENT_PATH`. |
@@ -496,7 +496,7 @@
496
496
  "storage": "claude/agents/orkestrel.md",
497
497
  "destination": ".claude/agents/orkestrel.md",
498
498
  "executable": false,
499
- "digest": "51fd164a22f9f3ea05fa2a2b620f2e69d621c3144fa16f82296399abf7f5d90a"
499
+ "digest": "4b3dd60e59e6c0737d526083d70bcea0b010efbeaaf068f391ab1b76cac99280"
500
500
  },
501
501
  {
502
502
  "storage": "claude/agents/planner.md",
@@ -1042,7 +1042,7 @@
1042
1042
  "storage": "guides/scaffold.md",
1043
1043
  "destination": "guides/scaffold.md",
1044
1044
  "executable": false,
1045
- "digest": "305071436b4c42fa2ac20b07e9bd2110ec4c5e30d1a62994c12d5a59e2875d4c"
1045
+ "digest": "116e87dd3c9b5c23451bb53a2365f7df8982e6782f60a3466070c8058c099700"
1046
1046
  },
1047
1047
  {
1048
1048
  "storage": "guides/sea.md",
@@ -2144,5 +2144,5 @@
2144
2144
  ]
2145
2145
  }
2146
2146
  ],
2147
- "digest": "abd3c849c7d840a027f3c5c07e370e40ac41695ebfdc9320fd9cbea334ae0a97"
2147
+ "digest": "410ca4bbfc4639a33cea13a791dffd130f507b8efb3aa2d54b84f5143babab4b"
2148
2148
  }
@@ -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.83",
7
+ version: "0.0.84",
8
8
  description: "Scaffold workspaces with commands: new, audit, repair, catalog, and overwrite.",
9
9
  keywords: [
10
10
  "audit",
@@ -108,7 +108,7 @@ var package_default = {
108
108
  "@orkestrel/html": "^0.0.12",
109
109
  "@orkestrel/probe": "^0.0.19",
110
110
  "@orkestrel/test": "^0.0.24",
111
- "@types/node": "^26.6.3",
111
+ "@types/node": "^26.6.4",
112
112
  "@vitest/browser-playwright": "^4.1.11",
113
113
  "oxfmt": "^0.71.0",
114
114
  "oxlint": "^1.86.0",
@@ -669,9 +669,35 @@ var SOURCE_BROWSER_DEV_DEPENDENCIES = Object.freeze({
669
669
  * @remarks
670
670
  * The package ships the `browse` binary, an MCP server that drives a rendered page and records
671
671
  * journeys, and `.claude/rules/quality.md` § Instruments names its registration.
672
- * `blueprintToDevDependencies` names the blueprints that receive it.
672
+ * `blueprintToDevDependencies` names the blueprints that receive it, and it withholds the
673
+ * dependency from the workspaces {@link BROWSE_UPSTREAM} lists.
673
674
  */
674
675
  var BROWSE_DEV_DEPENDENCIES = Object.freeze({ "@orkestrel/browser": package_default.devDependencies["@orkestrel/browser"] });
676
+ /**
677
+ * Lists the packages `@orkestrel/browser` depends on at runtime, directly or transitively, frozen.
678
+ *
679
+ * @remarks
680
+ * A workspace this list names cannot declare `@orkestrel/browser`, because the declaration closes
681
+ * a dependency cycle through the browser package's runtime dependencies. The list is the closure
682
+ * of `dependencies` and `peerDependencies` over the installed manifests, sorted by name, and moves
683
+ * with the `@orkestrel/browser` pin.
684
+ */
685
+ var BROWSE_UPSTREAM = Object.freeze([
686
+ "@orkestrel/abort",
687
+ "@orkestrel/codec",
688
+ "@orkestrel/contract",
689
+ "@orkestrel/emitter",
690
+ "@orkestrel/html",
691
+ "@orkestrel/markdown",
692
+ "@orkestrel/mcp",
693
+ "@orkestrel/process",
694
+ "@orkestrel/router",
695
+ "@orkestrel/server",
696
+ "@orkestrel/sse",
697
+ "@orkestrel/timeout",
698
+ "@orkestrel/tool",
699
+ "@orkestrel/websocket"
700
+ ]);
675
701
  /** Names the development dependency every private `app` environment adds. */
676
702
  var APP_DEV_DEPENDENCIES = Object.freeze({ "@orkestrel/contract": package_default.dependencies["@orkestrel/contract"] });
677
703
  /** Lists the development dependencies a private browser application adds. */
@@ -5649,7 +5675,8 @@ function srcToExports(src) {
5649
5675
  * environment on either axis, a sheet, or themes. A framework face counts without a clause of
5650
5676
  * its own, because a face is selected only on an axis that carries a browser environment.
5651
5677
  * A browser setup runtime alone receives nothing, because it renders no surface for `browse`
5652
- * to drive.
5678
+ * to drive. A workspace {@link BROWSE_UPSTREAM} names receives nothing either, because
5679
+ * `@orkestrel/browser` depends on it at runtime and the declaration would close a cycle.
5653
5680
  *
5654
5681
  * A peer is declared here as well as under `peerDependencies`, because a peer is
5655
5682
  * not installed by the workspace that declares it and developing against one
@@ -5674,9 +5701,10 @@ function srcToExports(src) {
5674
5701
  function blueprintToDevDependencies(blueprint) {
5675
5702
  const sheets = blueprintToSheets(blueprint).length > 0 || blueprint.themes;
5676
5703
  const rendered = blueprint.src.includes("browser") || blueprint.app.includes("browser") || sheets;
5704
+ const own = blueprint.src.length > 0 || sheets ? `@orkestrel/${blueprint.name}` : blueprint.name;
5677
5705
  const merged = {
5678
5706
  ...BASE_DEV_DEPENDENCIES,
5679
- ...rendered ? BROWSE_DEV_DEPENDENCIES : {},
5707
+ ...rendered && !BROWSE_UPSTREAM.includes(own) ? BROWSE_DEV_DEPENDENCIES : {},
5680
5708
  ...sheets ? STYLES_DEV_DEPENDENCIES : {},
5681
5709
  ...blueprint.src.length > 0 || blueprint.bin ? DECLARATION_DEV_DEPENDENCIES : {},
5682
5710
  ...blueprint.src.includes("browser") || blueprint.setup.includes("browser") || sheets ? SOURCE_BROWSER_DEV_DEPENDENCIES : {},
@@ -5688,7 +5716,6 @@ function blueprintToDevDependencies(blueprint) {
5688
5716
  for (const framework of blueprintToMachinery(blueprint).frameworks) Object.assign(merged, FRAMEWORK_MATRIX[framework].dependencies);
5689
5717
  for (const extra of blueprint.extras) merged[extra.name] = extra.range;
5690
5718
  for (const peer of blueprint.peers) if (!Object.hasOwn(merged, peer.name)) merged[peer.name] = peer.range;
5691
- const own = blueprint.src.length > 0 || sheets ? `@orkestrel/${blueprint.name}` : blueprint.name;
5692
5719
  const runtime = new Set(blueprint.dependencies.map((dependency) => dependency.name));
5693
5720
  return Object.fromEntries(Object.entries(merged).filter(([name]) => name !== own && !runtime.has(name)).sort(([left], [right]) => (0, _orkestrel_contract.compareValues)(left, right)));
5694
5721
  }
@@ -8430,6 +8457,7 @@ exports.BASE_DEV_DEPENDENCIES = BASE_DEV_DEPENDENCIES;
8430
8457
  exports.BIN_CONFIGS = BIN_CONFIGS;
8431
8458
  exports.BIN_ENTRY_PATH = BIN_ENTRY_PATH;
8432
8459
  exports.BROWSE_DEV_DEPENDENCIES = BROWSE_DEV_DEPENDENCIES;
8460
+ exports.BROWSE_UPSTREAM = BROWSE_UPSTREAM;
8433
8461
  exports.CANON_PATHS = CANON_PATHS;
8434
8462
  exports.CATALOG_AGENT_PATH = CATALOG_AGENT_PATH;
8435
8463
  exports.CATALOG_CLOSING_MARKER = CATALOG_CLOSING_MARKER;