agenticros 0.4.0 → 0.4.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agenticros",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "type": "module",
5
5
  "description": "AgenticROS - agentic AI for ROS-powered robots. Single CLI to launch real-robot or simulated demos, manage configuration, and inspect status.",
6
6
  "keywords": [
@@ -46,7 +46,7 @@
46
46
  "prepublishOnly": "pnpm run clean && pnpm run build && pnpm run pack:runtime && pnpm run size:check && pnpm run tarball:check"
47
47
  },
48
48
  "dependencies": {
49
- "@agenticros/core": "workspace:*",
49
+ "@agenticros/core": "^0.7.0",
50
50
  "@inquirer/prompts": "^7.0.0",
51
51
  "commander": "^12.1.0",
52
52
  "execa": "^9.5.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "packedAt": "2026-07-09T20:34:25.403Z",
2
+ "packedAt": "2026-07-09T22:01:21.151Z",
3
3
  "repo": "https://github.com/PlaiPin/agenticros",
4
4
  "note": "This directory is a snapshot of the agenticros monorepo source. `agenticros init` will copy it to ~/agenticros and run pnpm install + colcon build there.",
5
5
  "layout": {
@@ -66,8 +66,8 @@ importers:
66
66
  packages/agenticros-cli:
67
67
  dependencies:
68
68
  '@agenticros/core':
69
- specifier: workspace:*
70
- version: link:../core
69
+ specifier: ^0.7.0
70
+ version: 0.7.0
71
71
  '@inquirer/prompts':
72
72
  specifier: ^7.0.0
73
73
  version: 7.10.1(@types/node@20.19.35)
@@ -178,6 +178,10 @@ importers:
178
178
 
179
179
  packages:
180
180
 
181
+ '@agenticros/core@0.7.0':
182
+ resolution: {integrity: sha512-tbcKSf34DVD+pO51goHw1zbu/L12nP3oPvOHoFJK48qaZ4kuejEepljo5xUNB84AtA/QnH9quMPUZbc8rVF8zQ==}
183
+ engines: {node: '>=20'}
184
+
181
185
  '@eclipse-zenoh/zenoh-ts@1.9.0':
182
186
  resolution: {integrity: sha512-qG3VR9Yt81+KjH0WOybyKcNVS0vtBmmhyUJ7dCc5n+8AeAEYTpEvMBTh43Lwu8P+imzMYvFqjaMAO2HFK+x9hA==}
183
187
 
@@ -1977,6 +1981,23 @@ packages:
1977
1981
 
1978
1982
  snapshots:
1979
1983
 
1984
+ '@agenticros/core@0.7.0':
1985
+ dependencies:
1986
+ '@eclipse-zenoh/zenoh-ts': 1.9.0(patch_hash=pdjq6ms3zvqwikn6vpqzasydsy)
1987
+ '@foxglove/cdr': 3.5.0
1988
+ '@foxglove/rosmsg': 4.2.2
1989
+ '@foxglove/rosmsg2-serialization': 3.1.0
1990
+ ws: 8.19.0
1991
+ zod: 3.25.76
1992
+ optionalDependencies:
1993
+ node-datachannel: 0.12.0
1994
+ rclnodejs: 1.8.2
1995
+ transitivePeerDependencies:
1996
+ - bufferutil
1997
+ - jiti
1998
+ - supports-color
1999
+ - utf-8-validate
2000
+
1980
2001
  '@eclipse-zenoh/zenoh-ts@1.9.0(patch_hash=pdjq6ms3zvqwikn6vpqzasydsy)':
1981
2002
  dependencies:
1982
2003
  '@thi.ng/leb128': 3.1.79
@@ -32,7 +32,16 @@
32
32
  */
33
33
 
34
34
  import { execSync, spawnSync } from "node:child_process";
35
- import { existsSync, mkdirSync, mkdtempSync, readdirSync, rmSync } from "node:fs";
35
+ import {
36
+ existsSync,
37
+ mkdirSync,
38
+ mkdtempSync,
39
+ readdirSync,
40
+ readFileSync,
41
+ rmSync,
42
+ statSync,
43
+ writeFileSync,
44
+ } from "node:fs";
36
45
  import { tmpdir } from "node:os";
37
46
  import { dirname, join, resolve } from "node:path";
38
47
  import { fileURLToPath } from "node:url";
@@ -132,6 +141,31 @@ try {
132
141
  }
133
142
  ok(`Extracted to ${pkgDir}`);
134
143
 
144
+ // 3a. published package.json must not contain pnpm workspace: protocol
145
+ // (npm / npx consumers cannot resolve workspace:* — broke agenticros@0.4.0).
146
+ step("Checking published package.json has no workspace: dependencies...");
147
+ const publishedPkg = JSON.parse(
148
+ readFileSync(join(pkgDir, "package.json"), "utf8"),
149
+ );
150
+ const badDeps = [];
151
+ for (const section of ["dependencies", "optionalDependencies", "peerDependencies"]) {
152
+ const block = publishedPkg[section];
153
+ if (!block || typeof block !== "object") continue;
154
+ for (const [name, range] of Object.entries(block)) {
155
+ if (typeof range === "string" && range.startsWith("workspace:")) {
156
+ badDeps.push(`${section}.${name}=${range}`);
157
+ }
158
+ }
159
+ }
160
+ if (badDeps.length > 0) {
161
+ fail(
162
+ `Published package.json still has workspace: protocol (npm cannot install this):\n ${badDeps.join("\n ")}\n` +
163
+ `Use a semver range against the published @agenticros/core (e.g. "^0.7.0").`,
164
+ );
165
+ process.exit(1);
166
+ }
167
+ ok("No workspace: protocol in published dependencies.");
168
+
135
169
  // 3. critical files present in the SHIPPED tarball
136
170
  step("Verifying critical runtime files are in the tarball...");
137
171
  const runtimeInTar = join(pkgDir, "runtime");
@@ -150,8 +184,7 @@ try {
150
184
 
151
185
  // 5. write inline .npmrc (mirrors init.ts writeInitNpmrcInline)
152
186
  step("Writing inline .npmrc (mirroring writeInitNpmrcInline)...");
153
- const fs = await import("node:fs");
154
- fs.writeFileSync(
187
+ writeFileSync(
155
188
  join(installDir, ".npmrc"),
156
189
  [
157
190
  "shamefully-hoist=false",
@@ -220,9 +253,9 @@ try {
220
253
  step("Simulating refresh over a pre-existing snapshot (regression test for 0.1.7)...");
221
254
  const fakeOld = join(work, "old-install");
222
255
  mkdirSync(fakeOld);
223
- fs.writeFileSync(join(fakeOld, "tsconfig.base.json"), '{"old":"to-be-overwritten"}');
256
+ writeFileSync(join(fakeOld, "tsconfig.base.json"), '{"old":"to-be-overwritten"}');
224
257
  mkdirSync(join(fakeOld, "packages"), { recursive: true });
225
- fs.writeFileSync(
258
+ writeFileSync(
226
259
  join(fakeOld, "packages", "preserved.txt"),
227
260
  "must survive overlay refresh",
228
261
  );
@@ -234,7 +267,7 @@ try {
234
267
  const src = join(runtimeInTar, rel);
235
268
  const dst = join(fakeOld, rel);
236
269
  if (!existsSync(src)) continue;
237
- const srcIsDir = fs.statSync(src).isDirectory();
270
+ const srcIsDir = statSync(src).isDirectory();
238
271
  if (srcIsDir && existsSync(dst)) {
239
272
  run("cp", ["-a", `${src}/.`, `${dst}/`]);
240
273
  } else {
@@ -243,12 +276,12 @@ try {
243
276
  }
244
277
  }
245
278
 
246
- const tsStat = fs.statSync(join(fakeOld, "tsconfig.base.json"));
279
+ const tsStat = statSync(join(fakeOld, "tsconfig.base.json"));
247
280
  if (!tsStat.isFile()) {
248
281
  fail("Refresh turned tsconfig.base.json into a non-file. cp branching is wrong.");
249
282
  process.exit(1);
250
283
  }
251
- const tsContent = fs.readFileSync(join(fakeOld, "tsconfig.base.json"), "utf8");
284
+ const tsContent = readFileSync(join(fakeOld, "tsconfig.base.json"), "utf8");
252
285
  if (tsContent.includes('"old":"to-be-overwritten"')) {
253
286
  fail("Refresh failed to overwrite tsconfig.base.json with the bundle's version.");
254
287
  process.exit(1);