@yugoo-design/companion 0.1.0-beta.4 → 0.1.0-beta.5

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # Yugoo Design Companion — beta
2
2
 
3
- Package: `@yugoo-design/companion@0.1.0-beta.4`.
3
+ Package: `@yugoo-design/companion@0.1.0-beta.5`.
4
4
 
5
5
  Yugoo Design (语构设计系统) is an interactive design plugin for native Agent Hosts.
6
6
  It combines domain methods, Design Projects, versioned Design Files and shared
@@ -11,7 +11,7 @@ This beta is experimental. Native installation, tools, Panel saving, KAG and GRA
11
11
  must be verified for the actual host version and platform. A successful package
12
12
  installation or runtime-load check does not establish all of those capabilities.
13
13
 
14
- Use Node.js `>=22.19.0 <23` and a durable npm installation directory. The current
14
+ Use Node.js `>=22.19.0 <23` and a durable npm or pnpm installation directory. The current
15
15
  release uses the packaged native Git library for normal Design versioning without
16
16
  system Git. It bundles Windows x64 MSVC and Linux x64 GNU runtimes; other platforms
17
17
  are unsupported. System Git is separate and needed only for the explicit CLI
@@ -21,10 +21,50 @@ selected beta to the exact version and integrity before acquisition; keep the
21
21
  previous installed version available during updates. Do not substitute `latest`.
22
22
 
23
23
  ```sh
24
- ONNXRUNTIME_NODE_INSTALL_CUDA=skip npm install --ignore-scripts=false --save-exact @yugoo-design/companion@0.1.0-beta.4 --registry=https://registry.npmjs.org
24
+ ONNXRUNTIME_NODE_INSTALL_CUDA=skip npm install --ignore-scripts=false --save-exact @yugoo-design/companion@0.1.0-beta.5 --registry=https://registry.npmjs.org
25
25
  npx --no-install design-system --help
26
26
  ```
27
27
 
28
+ Alternatively, use an existing pnpm 11 installation (npm remains supported).
29
+ In the dedicated, empty version directory, create `pnpm-workspace.yaml` with
30
+ these local settings before acquisition:
31
+
32
+ ```yaml
33
+ nodeLinker: hoisted
34
+ allowBuilds:
35
+ onnxruntime-node: true
36
+ sharp: true
37
+ ```
38
+
39
+ ```sh
40
+ ONNXRUNTIME_NODE_INSTALL_CUDA=skip pnpm add --save-exact @yugoo-design/companion@0.1.0-beta.5 --registry=https://registry.npmjs.org
41
+ pnpm exec design-system --help
42
+ ```
43
+
44
+ Run either acquisition in its own retained version directory, not the Design
45
+ Project or host profile. Do not mix npm and pnpm lockfiles in that directory.
46
+ The hoisted layout is the compatibility route for Companion's current native
47
+ dependency inspection; other pnpm layouts are not certified for every host.
48
+ pnpm's explicit build permissions above allow the current native dependencies'
49
+ installation scripts; do not disable all scripts or enable all future dependency
50
+ builds. Review any newly reported build requirement before allowing it. Retain
51
+ the complete pnpm installation layout; do not copy just a linked
52
+ package directory or invoke Node with `--preserve-symlinks` flags.
53
+
54
+ An explicitly selected HTTPS npm mirror is supported, for example
55
+ `--registry=https://registry.npmmirror.com`. Use it both when acquiring this
56
+ package and when invoking `design-system install --host dsh --registry=<url>`
57
+ with the required host inputs. The latter controls the official DSH CLI's
58
+ package download registry; it does not replace that CLI with npm or pnpm.
59
+ The exact aggregate version still comes from `release-hosts.json`, whose registry
60
+ remains the canonical release origin/default. The plan and receipt separately
61
+ record the effective mirror and bind it through apply and owned updates. There
62
+ is no automatic registry fallback or global registry edit. Verify the exact
63
+ mirror version and integrity against the selected release before installation;
64
+ missing or stale mirror packages are not permission to change version or source.
65
+ Registry selection does not redirect separate embedding-model or upstream
66
+ installation-script downloads to that mirror.
67
+
28
68
  First-release local embedding runs on CPU. Set the supported
29
69
  `ONNXRUNTIME_NODE_INSTALL_CUDA=skip` environment before acquisition to skip ONNX
30
70
  Runtime's extra CUDA download while retaining normal dependency lifecycle
@@ -45,7 +85,7 @@ process value:
45
85
  $previousOrtCuda = [Environment]::GetEnvironmentVariable('ONNXRUNTIME_NODE_INSTALL_CUDA', 'Process')
46
86
  try {
47
87
  $env:ONNXRUNTIME_NODE_INSTALL_CUDA = 'skip'
48
- npm install --ignore-scripts=false --save-exact @yugoo-design/companion@0.1.0-beta.4 --registry=https://registry.npmjs.org
88
+ npm install --ignore-scripts=false --save-exact @yugoo-design/companion@0.1.0-beta.5 --registry=https://registry.npmjs.org
49
89
  } finally {
50
90
  [Environment]::SetEnvironmentVariable('ONNXRUNTIME_NODE_INSTALL_CUDA', $previousOrtCuda, 'Process')
51
91
  }
package/bin/installer.mjs CHANGED
@@ -629,8 +629,9 @@ async function dshReleaseSelection(values,npmRoot) {
629
629
  const mapped=bytes===null?null:validateReleaseHosts(JSON.parse(bytes))
630
630
  if(mapped) {
631
631
  if(Object.hasOwn(values,'aggregate-selector'))assert.equal(values['aggregate-selector'],mapped.aggregateSelector,'Aggregate override differs from product release')
632
- if(Object.hasOwn(values,'registry'))assert.equal(new URL(values.registry).href,mapped.registry,'Registry override differs from product release')
633
- return mapped
632
+ // The release binds the package/version and default origin, not the user's
633
+ // explicit download mirror. The owning planner validates and pins transport.
634
+ return {...mapped,registry:values.registry ?? mapped.registry}
634
635
  }
635
636
  for(const key of ['aggregate-selector','registry'])assert.ok(typeof values[key]==='string' && values[key],`DSH release mapping is unbound or missing; explicit --${key} required for compatibility installation`)
636
637
  return {aggregateSelector:values['aggregate-selector'],registry:values.registry}
@@ -830,7 +831,7 @@ export async function installerMain(args,{npmRoot,userRoot=homedir(),adapter=cod
830
831
  '--dsh-config <file>':'DSH install only: absolute JSON with dshHome, official node/CLI/Loader file pins and host/Loader versions; desktopHostManifest selects the official Electron Desktop CLI. No scope or runner override.',
831
832
  '--profile <name>':'DSH install only: explicitly selected existing profile; never initialized implicitly.',
832
833
  '--aggregate-selector <name@version>':'DSH install only: optional exact aggregate override matching the product release mapping; required for old or unbound candidates.',
833
- '--registry <https-url>':'DSH install only: optional credential-free HTTPS registry override matching the product mapping; required for old or unbound candidates.',
834
+ '--registry <https-url>':'DSH install only: explicit credential-free HTTPS download registry or mirror; defaults to the product mapping. Preserves the exact mapped aggregate and binds the saved plan/receipt; no automatic fallback. Required for old or unbound candidates.',
834
835
  '--destination <directory>':'QwenWork/WorkBuddy direct install: exclusive external preparation directory, or the same owned directory with --previous-receipt.',
835
836
  '--suite-version <version>':'QwenWork/WorkBuddy: exact native suite version, separate from the acquired npm version.',
836
837
  '--node-executable <path>':'QwenWork/WorkBuddy: absolute Windows Node path used by the imported suite.',
@@ -194,8 +194,11 @@ async function readOwnedReceipt(path, state, profile, currentProduct) {
194
194
  assert.ok(!beneath(old.product.npmRoot, path), 'Previous receipt overlaps its acquired product')
195
195
  const selected = await selectorInput({ profile: old.profile, aggregateSelector: old.aggregateSelector, registry: old.registry })
196
196
  assert.deepEqual(old.package, selected.package, 'Previous selected package differs')
197
- assert.deepEqual(old.product.releaseSelection, { aggregateSelector: selected.aggregateSelector, registry: selected.registry },
198
- 'Previous product selection mismatch')
197
+ // A receipt pins both the canonical release origin and the effective download
198
+ // registry. They may differ for an explicitly selected mirror, never in version.
199
+ assert.deepEqual(old.product.releaseSelection, validateReleaseHosts({ schemaVersion: 1, hosts: { dsh: {
200
+ aggregatePackage: selected.package.name, aggregateVersion: selected.package.version,
201
+ registry: old.product.releaseSelection.registry } } }), 'Previous product selection mismatch')
199
202
  assert.deepEqual(receipt.source?.expected, expectedSource(old), 'Previous selected source differs')
200
203
  assert.deepEqual(receipt.source?.observed, ownedState(receipt.readback), 'Previous installed source differs')
201
204
  assert.equal(receipt.readback?.configurationParsed, true)
@@ -249,6 +252,8 @@ async function previousOwnership(path, state, input, product) {
249
252
  assert.equal(selected.plan.product.name, product.name, 'Previous product name differs')
250
253
  const oldInput = await selectorInput(selected.plan)
251
254
  assert.equal(oldInput.package.name, input.package.name, 'Previous aggregate name differs')
255
+ assert.equal(selected.plan.product.releaseSelection.registry, product.releaseSelection.registry,
256
+ 'Release registry migration requires a separate route')
252
257
  assert.equal(oldInput.registry, input.registry, 'Registry migration requires a separate route')
253
258
  assert.equal(Boolean(oldInput.aggregateDirectory), Boolean(input.aggregateDirectory), 'Source-kind migration requires a separate route')
254
259
  if (oldInput.package.version === input.package.version)
@@ -390,7 +395,8 @@ export async function planDshInstallation(options) {
390
395
  const product = await productIdentity(options.productRoot ?? options.product?.npmRoot)
391
396
  if (product?.releaseSelection) {
392
397
  assert.equal(input.aggregateSelector, product.releaseSelection.aggregateSelector, 'Selected aggregate differs from product release')
393
- assert.equal(input.registry, product.releaseSelection.registry, 'Selected registry differs from product release')
398
+ // selectorInput already admits only credential-free HTTPS transport. Keep
399
+ // this choice separate from the immutable release origin in product identity.
394
400
  }
395
401
  const previous = options.previousReceipt === undefined ? null
396
402
  : await previousOwnership(options.previousReceipt, state, input, product)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yugoo-design/companion",
3
- "version": "0.1.0-beta.4",
3
+ "version": "0.1.0-beta.5",
4
4
  "description": "Yugoo Design Companion beta: interactive Design Projects and Panels in supported native Agent Hosts.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "yugoo-design",
3
- "version": "0.1.0-beta.4",
3
+ "version": "0.1.0-beta.5",
4
4
  "description": "Yugoo Design: interactive Design Panels with Claude Code native agents and background design reviews."
5
5
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yugoo-design",
3
- "version": "0.1.0-beta.4",
3
+ "version": "0.1.0-beta.5",
4
4
  "description": "Yugoo Design: local Design Project Panels for an explicitly bound Codex conversation (development preview).",
5
5
  "author": {
6
6
  "name": "yugoo-design contributors"
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "yugoo-design",
3
- "version": "0.1.0-beta.4",
3
+ "version": "0.1.0-beta.5",
4
4
  "description": "Yugoo Design: interactive Design Panels with Qoder-native Producers, Workers and background reviews."
5
5
  }
@@ -3,25 +3,25 @@
3
3
  "fixture": false,
4
4
  "distribution": "beta",
5
5
  "publishReady": false,
6
- "version": "0.1.0-beta.4",
6
+ "version": "0.1.0-beta.5",
7
7
  "readmeSource": {
8
8
  "path": "packages/companion/README.md",
9
- "sourceSha256": "af8637c206229eeb7c3524b5b9bf65d06f0f35694314057b5fedc4cb61758c14",
10
- "sectionSha256": "f4fe5f7cdd49533ed4733c05ef8b18c33c12cd9fec9a97140aaeea517fb8692c"
9
+ "sourceSha256": "3fa3f9a697ebca0997704f3ac741883238770c81ad3ef3c210fe04efa83d67b3",
10
+ "sectionSha256": "a403f2ca19e0dec36ce7932e36d6c6d3b749caf3e7c3989a63515b4836c9d905"
11
11
  },
12
12
  "assets": {
13
13
  "LICENSE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
14
14
  "NOTICE": "6119b21e1fa5d37ec3ab337ad43685970310aa5c97a0e90ecf6603d17091f371",
15
- "README.md": "7a9d35e52db0e2be24de21e08d5a69d488173050048ebefd429d8704445248b9",
15
+ "README.md": "e69af978c9d7962010477d9aca41a208fa05b4dd7bf80a73ab2b064c1a334f4b",
16
16
  "THIRD_PARTY_NOTICES.md": "bfcab921c6c15ccc47f9b1a6cc5941675c95962de5ea5b0edc50fbfa2aef136a",
17
17
  "bin/design-system.mjs": "2b9a0a610953dac800a7ee8d46fb05c193550bc57297985f42d076cec757a80f",
18
- "bin/installer.mjs": "ac668313fd7d512aca9506a4e64df31378fcb1d787d5266a07cc0acc100b4880",
18
+ "bin/installer.mjs": "2bb1fb22c386fafa13868e29a29c5ceebfe25819bee415faa7d9cf35cc06f143",
19
19
  "bin/npm-agent-installation.mjs": "4851c6f7145ece1b4b0da7d56e10d73d4b47669328b77680c436cb0b6c3d4ca6",
20
20
  "bin/npm-desktop-preparation.mjs": "d78bc2a529965011cc360d4bc731fc624114cd83bd634be71f34367d6fc424d0",
21
21
  "bin/npm-installer-claude.mjs": "cf525ab6da00f4db0f5df0fa5f2af9d3c28db33bf94e2e94d8bda5fb444e29af",
22
22
  "bin/npm-installer-codex.mjs": "ca18b3cc18d20aae66526797dedcf232322d027a7cf1251fd02943f1f2765d73",
23
23
  "bin/npm-installer-dsh-desktop.mjs": "14ca4310e77f5544ce4a5d056eb22424ac6832afcb66e4c5548fe88c3f5feaf5",
24
- "bin/npm-installer-dsh.mjs": "9970cbf462f75bf5ceb5a9d52211697d9e2c978deaa4518fddf304731526fa8b",
24
+ "bin/npm-installer-dsh.mjs": "00c3b90ab7d643358756abce2f355cfff4fb6c082b92bb5ad789d80697946776",
25
25
  "bin/npm-installer-paths.mjs": "50df1c47a5e3ada6da813e0b5475627fa6dd7d9e0834e8efa60f414bfbe289a0",
26
26
  "bin/npm-installer-qoder.mjs": "2434ec9a8bd0943f0fd200395581c8bb8d9dd14086818117f6f12250d46f3e1e",
27
27
  "bin/npm-runtime-check.mjs": "aa95a67bfd7e48a06a09b2a164e3f3e74471ebddf504d145e6d1a1bea87a0a0e",
@@ -423,7 +423,7 @@
423
423
  "licenses/third-party/whiteboard-fonts/licenses/JetBrainsMono-OFL.txt": "30f0c136e3c88e422d0791acd97238870f9054a9729bc34cf2ff0d4ed8cac4ad",
424
424
  "licenses/third-party/whiteboard-fonts/licenses/source-han-sans-LICENSE.txt": "fcac737e761ec63dbfbdce11030a1780161920d80315edba9c8beff1c2bac5a2",
425
425
  "licenses/third-party/whiteboard-fonts/manifest.json": "c164438115a40cdead905085e95298f28a4ffa2a3947512b9a98509f33c26972",
426
- "package.json": "4124371acccf9c1a58414c53c9d81d001d02692197e80cff8b82481d4e7a7524",
426
+ "package.json": "bf3562e4e0c3b115ec4bfcb9e4714ab33649f0e1c4d2ed179bf95caf856ef4f3",
427
427
  "payload/desktop-preparation/LICENSE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
428
428
  "payload/desktop-preparation/NOTICE": "6b4eec391144fcbd96ec7b45a28764ab1932722a96325248377c3e28aac2c62d",
429
429
  "payload/desktop-preparation/THIRD_PARTY_NOTICES.md": "bfcab921c6c15ccc47f9b1a6cc5941675c95962de5ea5b0edc50fbfa2aef136a",
@@ -460,7 +460,7 @@
460
460
  "payload/desktop-preparation/src/workbuddy-relay-service.mjs": "44d60d6956250417507fb76c71c3030a01bc38e565e4572a761b46f255f8e669",
461
461
  "payload/desktop-preparation/src/workbuddy-ui-probes.mjs": "a91d4651248125769254755bdf66a44bbc9e5a793dad0a137c35acbb10a89a88",
462
462
  "payload/desktop-preparation/workbuddy-package.mjs": "56ff591047d83ec742f22b286a9574ab9e05d5850ebed6f002a6e0bebfcd89c9",
463
- "payload/overlays/claude-code/.claude-plugin/plugin.json": "e9327de9919a67ea635fe60daf37e245dc629e03df9b86955a8ca8a9b3aecf0f",
463
+ "payload/overlays/claude-code/.claude-plugin/plugin.json": "e2f54af5347482a20a9787bf925cbef035d46b47c8bad23bb07725d3549fea60",
464
464
  "payload/overlays/claude-code/.mcp.json": "1108847d27abd953a52cd7c3ea4cd416898d67dcfdb80a92255d889186b12b66",
465
465
  "payload/overlays/claude-code/hooks/hooks.json": "e8bea6fdf13dce4023a2112dd4a31fd1a77e0f4ca2d4c506882ea80ef86b6482",
466
466
  "payload/overlays/claude-code/scripts/claude-connection.mjs": "83a6a2de1b28d1b5dd230b1447abac6f2209a80d6681f08766a53e7b6f63200f",
@@ -474,7 +474,7 @@
474
474
  "payload/overlays/claude-code/skills/design-component/SKILL.md": "85a1f2a016174787226eaa9e9e6675e86057212d322a65014edd71f3e4861b34",
475
475
  "payload/overlays/claude-code/skills/yugoo/SKILL.md": "e1b2284a94c5d113ef0cd2e58fce4f3405a21905fef741296baeae3cd45adb33",
476
476
  "payload/overlays/claude-code/skills/yugoo/native-execution.md": "8d27e523ddaad770e261300f7b74db5cff322d2342a838f87b253361a51404d3",
477
- "payload/overlays/codex/.codex-plugin/plugin.json": "af219d33176c20cfd86b512dbd80edab463b9fbdb93e2ccb39efbad37afb78a7",
477
+ "payload/overlays/codex/.codex-plugin/plugin.json": "11571780d1b17bb71dfe8bc1f8a8da7c8e2d12e1b0bab71d965fb95ba1aa423e",
478
478
  "payload/overlays/codex/.mcp.json": "ee6450b4f9a5239ae9c173d07198d37041fad65f9f65ecf4ff88ccf8528a609a",
479
479
  "payload/overlays/codex/README.md": "82f392681e120723fb90be5a8d2eb36c10113811f9eb355fcfc24167614b2373",
480
480
  "payload/overlays/codex/scripts/design.mjs": "c116e3a9f60830923692a9f8785640d9a13a97320771bf9201de0e5089618a74",
@@ -483,7 +483,7 @@
483
483
  "payload/overlays/codex/skills/design-panel/native-execution.md": "8d27e523ddaad770e261300f7b74db5cff322d2342a838f87b253361a51404d3",
484
484
  "payload/overlays/codex/skills/yugoo/SKILL.md": "fdb035c4c9f43a2c1fbd1ceac6a2bd19e9cdec6cd5e068efa804b1c86bec513a",
485
485
  "payload/overlays/qoder/.mcp.json": "7f86b52fffd552312441b9bd99dd39a3b80b2893dc4a85519614d906bdc6884e",
486
- "payload/overlays/qoder/.qoder-plugin/plugin.json": "ef1baab71910240c12e67255a5b0facb837f855f20e8a338133405fd0cab86d6",
486
+ "payload/overlays/qoder/.qoder-plugin/plugin.json": "c55ea7e3d2e512c27a5b34c25caddc2123e975117f863235027a59ac084b1d0e",
487
487
  "payload/overlays/qoder/commands/yugoo.md": "4e9d0e4a3da232b44a3d2c8495c7d3dd40bbb9ba2dff4b389ab8ca587522793d",
488
488
  "payload/overlays/qoder/hooks/hooks.json": "6452852583af61a7b4f0ed501a41d02a212a8487e5d920bcb0b2ee7e7e643d7d",
489
489
  "payload/overlays/qoder/scripts/design.mjs": "c116e3a9f60830923692a9f8785640d9a13a97320771bf9201de0e5089618a74",