@rightkit/release 0.6.0 → 0.6.1

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.
Binary file
@@ -71,13 +71,15 @@ export function validateRightKitCargoContract(root, publishedVersions, label = p
71
71
  export function assertPublishedRightKitCargoDependencies(dependencies, published, label) {
72
72
  let checked = 0;
73
73
  for (const dependency of dependencies.filter(({ name }) => name.startsWith("rightkit-"))) {
74
+ // An app's own path crate with the prefix that RightKit does not publish (e.g. Pulse's rightkit-mesh-ffi) is app code.
75
+ if (dependency.path && !published.has(dependency.name)) continue;
74
76
  checked += 1;
75
77
  const configured = published.get(dependency.name);
76
78
  if (!configured) throw new Error(`${label} ${dependency.name} is not a published RightKit crate`);
77
79
  const allowed = configured instanceof Set ? configured : new Set(Array.isArray(configured) ? configured : [configured]);
78
80
  const exactVersions = new Set([...allowed].map((version) => `=${version}`));
79
81
  if (!CRATES_IO_SOURCES.has(dependency.source) || dependency.path || dependency.registry || !exactVersions.has(dependency.req)) {
80
- throw new Error(`${label} ${dependency.name} must use exact crates.io versions (${[...exactVersions].join(" or ")})`);
82
+ throw new Error(`${label} ${dependency.name} must use exact crates.io versions (${[...exactVersions].join(" or ")})${dependency.req && !exactVersions.has(dependency.req) && /^=\d/.test(dependency.req) ? `; ${dependency.req} is not among them: the accepted versions are the bundled feed plus the versions your Cargo.lock proves against crates.io, so if you just bumped the pin, refresh Cargo.lock so it locks ${dependency.req.slice(1)}` : ""}`);
81
83
  }
82
84
  }
83
85
  return checked;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rightkit/release",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "Portable release CLI/SDK with fail-closed public GitHub Releases and private R2 + RightApps distribution.",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "type": "module",
@@ -153,7 +153,13 @@ export function collectLockedRightKit(root, owned, { extraLocks = [] } = {}) {
153
153
  const entries = [];
154
154
  for (const file of lockFiles) {
155
155
  const all = path.basename(file) === "Cargo.lock" ? cargoLockEntries(file) : pnpmLockEntries(file);
156
- for (const entry of all) if (owned[entry.ecosystem].has(entry.name) || prefixed(entry.ecosystem, entry.name)) entries.push(entry);
156
+ for (const entry of all) {
157
+ if (owned[entry.ecosystem].has(entry.name)) { entries.push(entry); continue; }
158
+ // An app's own path/workspace crate or package that happens to carry the prefix (no registry source, e.g. Pulse's
159
+ // rightkit-mesh-ffi) is app-local code, not a RightKit pin. A prefixed name that DOES resolve from a registry and is not
160
+ // owned stays a refusal (it could be a squatted or foreign package).
161
+ if (prefixed(entry.ecosystem, entry.name) && entry.source !== null) entries.push(entry);
162
+ }
157
163
  }
158
164
  return { lockFiles, entries };
159
165
  }
@@ -174,7 +180,10 @@ function manifestRoots(root, extraLocks) {
174
180
  /** RightKit dependencies the manifests under root declare (Cargo.toml, package.json): the inputs that need lock proof. */
175
181
  export function declaredRightKitDependencies(root, owned, extraLocks = []) {
176
182
  const found = [];
177
- const take = (ecosystem, name, file) => { if (owned[ecosystem].has(name) || prefixed(ecosystem, name)) found.push({ ecosystem, name, file }); };
183
+ const take = (ecosystem, name, file, local = false) => {
184
+ if (owned[ecosystem].has(name)) found.push({ ecosystem, name, file });
185
+ else if (prefixed(ecosystem, name) && !local) found.push({ ecosystem, name, file });
186
+ };
178
187
  for (const file of manifestRoots(root, extraLocks).flatMap((dir) => scanFiles(dir, new Set(["Cargo.toml", "package.json"])))) {
179
188
  try {
180
189
  if (path.basename(file) === "package.json") {
@@ -184,7 +193,8 @@ export function declaredRightKitDependencies(root, owned, extraLocks = []) {
184
193
  } else {
185
194
  const doc = parseToml(readFileSync(file, "utf8"));
186
195
  const tables = [...MANIFEST_DEP_TABLES.map((t) => doc[t]), doc.workspace?.dependencies, ...Object.values(doc.target ?? {}).flatMap((target) => MANIFEST_DEP_TABLES.map((t) => target?.[t]))];
187
- for (const table of tables) for (const [key, spec] of Object.entries(table ?? {})) take("cargo", typeof spec === "object" && spec && typeof spec.package === "string" ? spec.package : key, file);
196
+ // A path or workspace dependency on an unowned prefixed name is app-local (see collectLockedRightKit).
197
+ for (const table of tables) for (const [key, spec] of Object.entries(table ?? {})) take("cargo", typeof spec === "object" && spec && typeof spec.package === "string" ? spec.package : key, file, typeof spec === "object" && spec !== null && (typeof spec.path === "string" || spec.workspace === true));
188
198
  }
189
199
  } catch { /* an unreadable manifest is the manifest validators' finding */ }
190
200
  }
@@ -32,7 +32,7 @@
32
32
  "@rightkit/qa": "0.6.1",
33
33
  "@rightkit/qa-chrome": "0.1.11",
34
34
  "@rightkit/react-shell": "0.7.2",
35
- "@rightkit/release": "0.6.0",
35
+ "@rightkit/release": "0.6.1",
36
36
  "@rightkit/settings-ui": "0.7.0",
37
37
  "@rightkit/tauri": "0.3.0",
38
38
  "@rightkit/tauri-shell": "0.1.2",
@@ -225,7 +225,8 @@
225
225
  "0.4.0",
226
226
  "0.4.1",
227
227
  "0.5.0",
228
- "0.5.1"
228
+ "0.5.1",
229
+ "0.6.0"
229
230
  ],
230
231
  "@rightkit/qa": [
231
232
  "0.1.0",
@@ -473,7 +474,7 @@
473
474
  "rightkit-onnx": "0.2.7",
474
475
  "rightkit-overlay": "0.2.0",
475
476
  "rightkit-overlay-win": "0.1.0",
476
- "rightkit-ownership": "0.4.0",
477
+ "rightkit-ownership": "0.4.1",
477
478
  "rightkit-pdf": "0.3.3",
478
479
  "rightkit-platform-rules": "0.1.0",
479
480
  "rightkit-playback": "0.3.0",
@@ -488,7 +489,7 @@
488
489
  "rightkit-speech-client": "0.4.0",
489
490
  "rightkit-spend": "0.2.0",
490
491
  "rightkit-sync": "0.2.2",
491
- "rightkit-tauri-shell": "0.5.0",
492
+ "rightkit-tauri-shell": "0.5.1",
492
493
  "rightkit-time": "0.1.0",
493
494
  "rightkit-transcript": "0.4.0",
494
495
  "rightkit-tts": "0.2.3",
@@ -521,7 +522,7 @@
521
522
  "rightkit-asr": "0.3.0",
522
523
  "rightkit-audio": "0.3.1",
523
524
  "rightkit-automation": "0.6.0",
524
- "rightkit-browser": "0.3.4",
525
+ "rightkit-browser": "0.3.5",
525
526
  "rightkit-cache": "0.2.3",
526
527
  "rightkit-channel-memory": "0.2.1",
527
528
  "rightkit-child-process": "0.5.5",
@@ -561,7 +562,7 @@
561
562
  "rightkit-ort": "0.2.3",
562
563
  "rightkit-overlay": "0.2.0",
563
564
  "rightkit-overlay-win": "0.1.0",
564
- "rightkit-ownership": "0.4.0",
565
+ "rightkit-ownership": "0.4.1",
565
566
  "rightkit-pdf": "0.3.3",
566
567
  "rightkit-platform-rules": "0.1.0",
567
568
  "rightkit-playback": "0.3.0",
@@ -585,7 +586,7 @@
585
586
  "rightkit-spend": "0.2.0",
586
587
  "rightkit-sync": "0.2.2",
587
588
  "rightkit-tauri": "0.1.3",
588
- "rightkit-tauri-shell": "0.5.0",
589
+ "rightkit-tauri-shell": "0.5.1",
589
590
  "rightkit-time": "0.1.0",
590
591
  "rightkit-transcript": "0.4.0",
591
592
  "rightkit-tts": "0.2.3",
@@ -619,7 +620,7 @@
619
620
  "@rightkit/qa": "0.6.1",
620
621
  "@rightkit/qa-chrome": "0.1.11",
621
622
  "@rightkit/react-shell": "0.7.2",
622
- "@rightkit/release": "0.5.1",
623
+ "@rightkit/release": "0.6.0",
623
624
  "@rightkit/settings-ui": "0.7.0",
624
625
  "@rightkit/shell": "0.1.1",
625
626
  "@rightkit/tauri": "0.3.0",
@@ -632,7 +633,8 @@
632
633
  "rightkit-ownership": [
633
634
  "0.2.0",
634
635
  "0.2.1",
635
- "0.3.1"
636
+ "0.3.1",
637
+ "0.4.0"
636
638
  ],
637
639
  "rightkit-browser": [
638
640
  "0.2.0",
@@ -1057,7 +1059,8 @@
1057
1059
  "0.3.0",
1058
1060
  "0.3.2",
1059
1061
  "0.3.3",
1060
- "0.4.0"
1062
+ "0.4.0",
1063
+ "0.5.0"
1061
1064
  ],
1062
1065
  "rightkit-android": [
1063
1066
  "0.2.0"