agenticros 0.1.4 → 0.1.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiIlE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgKlE"}
@@ -14,7 +14,7 @@
14
14
  * Reuses the existing shell scripts as subprocesses (no logic duplication).
15
15
  */
16
16
  import { existsSync, mkdirSync, writeFileSync } from "node:fs";
17
- import { join } from "node:path";
17
+ import { dirname, join } from "node:path";
18
18
  import { confirm, input, password, select } from "@inquirer/prompts";
19
19
  import { execa } from "execa";
20
20
  import { runDoctorChecks } from "./doctor.js";
@@ -37,11 +37,12 @@ export async function initCommand(opts) {
37
37
  await syncBundleToInstallDir(targetInstallDir, { overwrite: true });
38
38
  }
39
39
  else {
40
- // Auto-heal: if any critical bundle files are missing (e.g. user installed
41
- // an older CLI version that didn't bundle patches/), copy them in
42
- // non-destructively before pnpm install hits ENOENT. We don't overwrite
43
- // existing files so the user's customisations to config/, scripts/, etc.
44
- // are preserved.
40
+ // Step 1: always refresh shipped code (scripts/, packages/, patches/, ...)
41
+ // from the bundle. These are CLI-controlled paths, not user data, so
42
+ // overwriting them is safe and lets bug fixes propagate without --force.
43
+ await refreshShippedCode(targetInstallDir);
44
+ // Step 2: additive cp -an for any *missing* critical paths that weren't
45
+ // covered by Step 1 (e.g. pnpm-lock.yaml). Never clobbers existing files.
45
46
  const missing = findMissingBundleFiles(paths.repoRoot);
46
47
  if (missing.length > 0) {
47
48
  warn(`Existing install is missing ${missing.length} file(s) shipped in this CLI version:`);
@@ -66,13 +67,36 @@ export async function initCommand(opts) {
66
67
  }
67
68
  }
68
69
  const repoRoot = paths.repoRoot;
70
+ // Always (re)write the install dir's .npmrc from inline content. npm pack
71
+ // strips .npmrc from the published tarball, so we can't ship it - and even
72
+ // workspace-mode users benefit from having strict-peer-dependencies=false
73
+ // for the init flow specifically. This is a no-op for live monorepos
74
+ // because the root .npmrc takes precedence (pnpm walks UP for config).
75
+ if (paths.mode !== "workspace") {
76
+ writeInitNpmrcInline(repoRoot);
77
+ }
69
78
  const before = await runDoctorChecks();
70
79
  // Step: workspace deps.
71
80
  if (opts.force || !nodeModulesPresent(repoRoot)) {
72
81
  await runStep("Installing JS workspace dependencies (pnpm install)", async () => {
73
- await execa("pnpm", ["install"], {
82
+ // Explicitly pass the flags here in addition to writing them to .npmrc.
83
+ // Reason: in some environments (containers, ephemeral CI, certain pnpm
84
+ // versions) the .npmrc is not picked up reliably from cwd. Passing
85
+ // --no-strict-peer-dependencies on the CLI guarantees mem0ai-style peer
86
+ // mismatches downgrade to a warning. --config.auto-install-peers=true
87
+ // matches the inline .npmrc value so behaviour is identical either way.
88
+ await execa("pnpm", [
89
+ "install",
90
+ "--no-strict-peer-dependencies",
91
+ "--config.auto-install-peers=true",
92
+ ], {
74
93
  cwd: repoRoot,
75
94
  stdio: "inherit",
95
+ env: {
96
+ ...process.env,
97
+ npm_config_strict_peer_dependencies: "false",
98
+ npm_config_auto_install_peers: "true",
99
+ },
76
100
  });
77
101
  });
78
102
  }
@@ -253,12 +277,14 @@ async function promptAndConfigureOpenAi() {
253
277
  * install (because the user previously installed an older CLI version that
254
278
  * didn't bundle them), the init flow re-syncs additively.
255
279
  *
280
+ * NOTE: .npmrc is NOT in this list - it's never bundled (npm pack strips it).
281
+ * We write it inline via writeInitNpmrcInline() instead.
282
+ *
256
283
  * Order: most-likely-to-break-first.
257
284
  */
258
285
  const CRITICAL_BUNDLE_FILES = [
259
286
  "patches",
260
287
  "patches/@eclipse-zenoh__zenoh-ts@1.9.0.patch",
261
- ".npmrc",
262
288
  "pnpm-workspace.yaml",
263
289
  "pnpm-lock.yaml",
264
290
  "package.json",
@@ -266,9 +292,89 @@ const CRITICAL_BUNDLE_FILES = [
266
292
  "ros2_ws/src/agenticros_sim/urdf/agenticros_amr.urdf.xacro",
267
293
  "scripts/sim/run_sim.sh",
268
294
  ];
295
+ /**
296
+ * Files / directories the CLI considers "shipped code" - never user-modifiable
297
+ * - that should ALWAYS be refreshed from the bundle on init, even if they
298
+ * already exist. This is what lets the heal flow pick up downstream bug
299
+ * fixes (e.g. start_demo.sh learning to build workspace deps) without the
300
+ * user having to `rm -rf ~/agenticros && npx agenticros` every release.
301
+ *
302
+ * Add anything that is pure CLI-controlled code here. Do NOT add data dirs
303
+ * like ros2_ws/build, node_modules, or user-touchable configs.
304
+ */
305
+ const ALWAYS_REFRESH_FROM_BUNDLE = [
306
+ "scripts", // start_demo.sh, sim/run_sim.sh, setup_gateway_plugin.sh, ...
307
+ "patches", // patched dep tarballs - immutable, must match package.json
308
+ "packages", // workspace TS sources & the prebuilt MCP dist
309
+ "ros2_ws/src", // ROS 2 package sources (msgs, sim, follow_me, ...)
310
+ "tsconfig.base.json",
311
+ "pnpm-workspace.yaml",
312
+ ];
269
313
  function findMissingBundleFiles(installDir) {
270
314
  return CRITICAL_BUNDLE_FILES.filter((f) => !existsSync(join(installDir, f)));
271
315
  }
316
+ /**
317
+ * Write an init-friendly .npmrc into the install dir.
318
+ *
319
+ * Why inline instead of bundled? `npm pack` ALWAYS strips .npmrc from the
320
+ * published tarball (hardcoded denylist alongside .gitignore, .npmignore).
321
+ * That means anything we put in runtime/.npmrc is invisible to end users.
322
+ * Writing it from inline JS at init/heal time guarantees the file lands.
323
+ *
324
+ * We always overwrite (not append) so each CLI upgrade can refresh the
325
+ * settings. If the user wants custom pnpm config they can edit
326
+ * ~/.npmrc (user-level) which takes precedence.
327
+ */
328
+ function writeInitNpmrcInline(installDir) {
329
+ const target = join(installDir, ".npmrc");
330
+ const contents = [
331
+ "# Auto-generated by `agenticros init` - safe defaults for end-user installs.",
332
+ "# Devs working on the repo from a git clone use the repo root .npmrc.",
333
+ "# Anything you want to customise goes in ~/.npmrc (user-level), which",
334
+ "# takes precedence over this file.",
335
+ "shamefully-hoist=false",
336
+ "strict-peer-dependencies=false",
337
+ "auto-install-peers=true",
338
+ "",
339
+ ].join("\n");
340
+ writeFileSync(target, contents);
341
+ ok(`Wrote install-friendly .npmrc to ${target}`);
342
+ }
343
+ /**
344
+ * Refresh paths in ALWAYS_REFRESH_FROM_BUNDLE from the bundled runtime/.
345
+ *
346
+ * This is destructive *within* the listed paths: e.g. an existing
347
+ * ~/agenticros/scripts/start_demo.sh will be overwritten by the new bundle's
348
+ * version. Paths NOT on the list (config/, node_modules/, ros2_ws/build/,
349
+ * the user's own files, etc.) are untouched.
350
+ *
351
+ * Uses `cp -a` per path so symlinks, perms, and mtimes are preserved. Each
352
+ * destination is wiped first to handle "file removed from the new bundle"
353
+ * cleanly (e.g. an obsolete script being deleted).
354
+ */
355
+ async function refreshShippedCode(installDir) {
356
+ const paths = getCliPaths();
357
+ const source = paths.bundleDir;
358
+ if (!source || !existsSync(source))
359
+ return;
360
+ const targets = ALWAYS_REFRESH_FROM_BUNDLE.filter((p) => existsSync(join(source, p)));
361
+ if (targets.length === 0)
362
+ return;
363
+ await withSpinner("Refreshing CLI-shipped code from the new bundle", async () => {
364
+ for (const rel of targets) {
365
+ const src = join(source, rel);
366
+ const dst = join(installDir, rel);
367
+ // Wipe the destination first so removed files in the new bundle don't
368
+ // linger. We're only ever inside ALWAYS_REFRESH_FROM_BUNDLE paths, which
369
+ // never contain user data.
370
+ if (existsSync(dst)) {
371
+ await execa("rm", ["-rf", dst]);
372
+ }
373
+ mkdirSync(dirname(dst), { recursive: true });
374
+ await execa("cp", ["-a", src, dst]);
375
+ }
376
+ });
377
+ }
272
378
  /**
273
379
  * Copy the bundled monorepo snapshot (`packages/agenticros-cli/runtime/`) into
274
380
  * the user's install dir (default ~/agenticros) so colcon and pnpm have a full
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"real-robot.d.ts","sourceRoot":"","sources":["../../src/runners/real-robot.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCxE"}
1
+ {"version":3,"file":"real-robot.d.ts","sourceRoot":"","sources":["../../src/runners/real-robot.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDxE"}
@@ -11,7 +11,7 @@ import { join } from "node:path";
11
11
  import { execa } from "execa";
12
12
  import { getCliPaths } from "../util/paths.js";
13
13
  import { detectRosDistro } from "../util/env.js";
14
- import { err, header, info } from "../util/logger.js";
14
+ import { err, header, info, warn } from "../util/logger.js";
15
15
  export async function runRealRobot(opts) {
16
16
  header("AgenticROS - real robot");
17
17
  const paths = getCliPaths();
@@ -21,6 +21,27 @@ export async function runRealRobot(opts) {
21
21
  err("Run `agenticros init` first; if you're using `npx`, this is a CLI bug — file an issue.");
22
22
  process.exit(1);
23
23
  }
24
+ // Precondition check: workspace must be installed + built. start_demo.sh
25
+ // now does this itself, but giving a clearer error here (before any RealSense
26
+ // launches) saves the user from a 200-line tsc dump.
27
+ const repoRoot = paths.repoRoot;
28
+ if (repoRoot) {
29
+ const nodeModules = join(repoRoot, "node_modules");
30
+ if (!existsSync(nodeModules)) {
31
+ err("JS workspace deps not installed. Run `agenticros init` first.");
32
+ process.exit(1);
33
+ }
34
+ // We only ship one prebuilt dist (claude-code). Core/ros-camera get built
35
+ // by `pnpm install`'s lifecycle or by `agenticros init`. If their dist is
36
+ // missing, start_demo.sh's `pnpm --filter ...@agenticros/claude-code build`
37
+ // will build them; warn the user so they don't think the CLI is stuck.
38
+ const coreDist = join(repoRoot, "packages", "core", "dist", "index.js");
39
+ if (!existsSync(coreDist)) {
40
+ warn("@agenticros/core dist/ missing — start_demo.sh will rebuild the\n" +
41
+ " workspace before launching the MCP server (~30-90s on Jetson).\n" +
42
+ " Tip: run `agenticros init` once after install to do this up front.");
43
+ }
44
+ }
24
45
  const ros = detectRosDistro(opts.rosDistro);
25
46
  if (!ros.distro) {
26
47
  err("No ROS 2 installation detected under /opt/ros/. Install ROS 2 Humble or Jazzy first.");
@@ -1 +1 @@
1
- {"version":3,"file":"real-robot.js","sourceRoot":"","sources":["../../src/runners/real-robot.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAQtD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB;IACvD,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,GAAG,CAAC,8BAA8B,MAAM,GAAG,CAAC,CAAC;QAC7C,GAAG,CACD,wFAAwF,CACzF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,sFAAsF,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;QAAE,GAAG,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC;IAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;QAAE,GAAG,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC;IAE7D,IAAI,CAAC,qBAAqB,GAAG,CAAC,MAAM,yCAAyC,CAAC,CAAC;IAC/E,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;YACxC,GAAG;YACH,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,yBAAyB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"real-robot.js","sourceRoot":"","sources":["../../src/runners/real-robot.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAQ5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB;IACvD,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,GAAG,CAAC,8BAA8B,MAAM,GAAG,CAAC,CAAC;QAC7C,GAAG,CACD,wFAAwF,CACzF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yEAAyE;IACzE,8EAA8E;IAC9E,qDAAqD;IACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,+DAA+D,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,0EAA0E;QAC1E,0EAA0E;QAC1E,4EAA4E;QAC5E,uEAAuE;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,IAAI,CACF,mEAAmE;gBACjE,oEAAoE;gBACpE,sEAAsE,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,sFAAsF,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;QAAE,GAAG,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC;IAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;QAAE,GAAG,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC;IAE7D,IAAI,CAAC,qBAAqB,GAAG,CAAC,MAAM,yCAAyC,CAAC,CAAC;IAC/E,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;YACxC,GAAG;YACH,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,yBAAyB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agenticros",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
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": [
@@ -37,7 +37,8 @@
37
37
  "clean": "rm -rf dist runtime tsconfig.tsbuildinfo",
38
38
  "pack:runtime": "node ../../scripts/pack-runtime.mjs",
39
39
  "size:check": "node ../../scripts/check-cli-tarball-size.mjs",
40
- "prepublishOnly": "pnpm run clean && pnpm run build && pnpm run pack:runtime && pnpm run size:check"
40
+ "tarball:check": "node ../../scripts/check-cli-tarball-install.mjs",
41
+ "prepublishOnly": "pnpm run clean && pnpm run build && pnpm run pack:runtime && pnpm run size:check && pnpm run tarball:check"
41
42
  },
42
43
  "dependencies": {
43
44
  "@inquirer/prompts": "^7.0.0",
@@ -1,5 +1,5 @@
1
1
  {
2
- "packedAt": "2026-06-05T22:33:19.029Z",
2
+ "packedAt": "2026-06-05T22:52:39.644Z",
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": {
@@ -0,0 +1,224 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * check-cli-tarball-install.mjs
4
+ *
5
+ * Pre-publish guard that pretends to be a brand-new user on a fresh machine
6
+ * running `npx agenticros init`. Catches the entire class of bugs we hit
7
+ * across 0.1.2 -> 0.1.5:
8
+ *
9
+ * * patches/ missing from the published tarball (0.1.2 ENOENT)
10
+ * * .npmrc stripped by npm pack so pnpm sees strict-peer mode (0.1.4)
11
+ * * --no-strict-peer-dependencies not actually wired up
12
+ * * runtime/scripts/sim/run_sim.sh accidentally dropped
13
+ * * etc.
14
+ *
15
+ * Flow:
16
+ * 1. `npm pack` the agenticros CLI into a tmpdir
17
+ * 2. Extract the tarball
18
+ * 3. Sanity-check the extracted tree against CRITICAL_BUNDLE_FILES
19
+ * 4. Copy runtime/ to a sibling install dir (what init.ts does)
20
+ * 5. Write the inline .npmrc (mirrors init.ts writeInitNpmrcInline)
21
+ * 6. Run `pnpm install` with the same flags init.ts uses
22
+ * 7. Verify it exits 0 and that the zenoh-ts patch was actually applied
23
+ *
24
+ * Exits 0 on success, non-zero on any failure. Hooked into the CLI's
25
+ * `prepublishOnly` chain so `npm publish` cannot succeed without it.
26
+ *
27
+ * Run manually:
28
+ * node scripts/check-cli-tarball-install.mjs
29
+ *
30
+ * Skip (e.g. air-gapped CI):
31
+ * AGENTICROS_SKIP_TARBALL_INSTALL=1 node scripts/check-cli-tarball-install.mjs
32
+ */
33
+
34
+ import { execSync, spawnSync } from "node:child_process";
35
+ import { existsSync, mkdirSync, mkdtempSync, readdirSync, rmSync } from "node:fs";
36
+ import { tmpdir } from "node:os";
37
+ import { dirname, join, resolve } from "node:path";
38
+ import { fileURLToPath } from "node:url";
39
+
40
+ // ---------- config ----------
41
+
42
+ const __dirname = dirname(fileURLToPath(import.meta.url));
43
+ const REPO_ROOT = resolve(__dirname, "..");
44
+ const CLI_DIR = join(REPO_ROOT, "packages", "agenticros-cli");
45
+
46
+ // Mirror of CRITICAL_BUNDLE_FILES in packages/agenticros-cli/src/commands/init.ts.
47
+ // Keep these in sync (small surface area, low maintenance cost).
48
+ const REQUIRED_RUNTIME_FILES = [
49
+ "patches",
50
+ "patches/@eclipse-zenoh__zenoh-ts@1.9.0.patch",
51
+ "pnpm-workspace.yaml",
52
+ "pnpm-lock.yaml",
53
+ "package.json",
54
+ "ros2_ws/src/agenticros_sim",
55
+ "ros2_ws/src/agenticros_sim/urdf/agenticros_amr.urdf.xacro",
56
+ "scripts/sim/run_sim.sh",
57
+ ];
58
+
59
+ // ---------- logging ----------
60
+
61
+ function step(msg) {
62
+ process.stdout.write(`\x1b[36m[tarball-test]\x1b[0m ${msg}\n`);
63
+ }
64
+ function ok(msg) {
65
+ process.stdout.write(`\x1b[32m[tarball-test ✓]\x1b[0m ${msg}\n`);
66
+ }
67
+ function fail(msg) {
68
+ process.stderr.write(`\x1b[31m[tarball-test ✗]\x1b[0m ${msg}\n`);
69
+ }
70
+
71
+ // ---------- helpers ----------
72
+
73
+ function run(cmd, args, opts = {}) {
74
+ const r = spawnSync(cmd, args, { encoding: "utf8", ...opts });
75
+ if (r.status !== 0) {
76
+ fail(`${cmd} ${args.join(" ")} exited ${r.status}`);
77
+ if (r.stdout) process.stdout.write(r.stdout);
78
+ if (r.stderr) process.stderr.write(r.stderr);
79
+ throw new Error(`Command failed: ${cmd} ${args.join(" ")}`);
80
+ }
81
+ return r;
82
+ }
83
+
84
+ function detectPnpm() {
85
+ const r = spawnSync("pnpm", ["--version"], { encoding: "utf8" });
86
+ if (r.status !== 0) {
87
+ fail("pnpm is not on PATH. Install pnpm before publishing.");
88
+ process.exit(2);
89
+ }
90
+ return r.stdout.trim();
91
+ }
92
+
93
+ // ---------- main ----------
94
+
95
+ if (process.env.AGENTICROS_SKIP_TARBALL_INSTALL === "1") {
96
+ step("AGENTICROS_SKIP_TARBALL_INSTALL=1 set; skipping.");
97
+ process.exit(0);
98
+ }
99
+
100
+ const pnpmVer = detectPnpm();
101
+ step(`Using pnpm ${pnpmVer}`);
102
+
103
+ const work = mkdtempSync(join(tmpdir(), "agenticros-tarball-test-"));
104
+ const packDir = join(work, "pack");
105
+ const extractDir = join(work, "extract");
106
+ const installDir = join(work, "install");
107
+ mkdirSync(packDir);
108
+ mkdirSync(extractDir);
109
+ mkdirSync(installDir);
110
+
111
+ try {
112
+ // 1. npm pack
113
+ step("npm pack...");
114
+ const packResult = run("npm", ["pack", "--pack-destination", packDir, "--silent"], {
115
+ cwd: CLI_DIR,
116
+ });
117
+ const tgz = readdirSync(packDir).find((f) => f.endsWith(".tgz"));
118
+ if (!tgz) {
119
+ fail("npm pack did not produce a .tgz file.");
120
+ process.exit(1);
121
+ }
122
+ const tgzPath = join(packDir, tgz);
123
+ ok(`Packed: ${tgz}`);
124
+
125
+ // 2. extract
126
+ step("Extracting tarball...");
127
+ run("tar", ["-xzf", tgzPath, "-C", extractDir]);
128
+ const pkgDir = join(extractDir, "package"); // npm tar convention
129
+ if (!existsSync(pkgDir)) {
130
+ fail(`Extract did not produce a 'package/' directory.`);
131
+ process.exit(1);
132
+ }
133
+ ok(`Extracted to ${pkgDir}`);
134
+
135
+ // 3. critical files present in the SHIPPED tarball
136
+ step("Verifying critical runtime files are in the tarball...");
137
+ const runtimeInTar = join(pkgDir, "runtime");
138
+ const missing = REQUIRED_RUNTIME_FILES.filter((f) => !existsSync(join(runtimeInTar, f)));
139
+ if (missing.length > 0) {
140
+ fail(`Tarball is missing required runtime files:`);
141
+ for (const m of missing) process.stderr.write(` ${m}\n`);
142
+ process.exit(1);
143
+ }
144
+ ok(`All ${REQUIRED_RUNTIME_FILES.length} critical runtime files present.`);
145
+
146
+ // 4. simulate init: cp -a runtime/. installDir/
147
+ step("Copying runtime/ into a fresh install dir (simulating `agenticros init`)...");
148
+ run("cp", ["-a", `${runtimeInTar}/.`, installDir]);
149
+ ok(`Install dir populated at ${installDir}`);
150
+
151
+ // 5. write inline .npmrc (mirrors init.ts writeInitNpmrcInline)
152
+ step("Writing inline .npmrc (mirroring writeInitNpmrcInline)...");
153
+ const fs = await import("node:fs");
154
+ fs.writeFileSync(
155
+ join(installDir, ".npmrc"),
156
+ [
157
+ "shamefully-hoist=false",
158
+ "strict-peer-dependencies=false",
159
+ "auto-install-peers=true",
160
+ "",
161
+ ].join("\n"),
162
+ );
163
+ ok(".npmrc written.");
164
+
165
+ // 6. pnpm install with the same flags init.ts uses
166
+ step("Running pnpm install with init.ts flags (this can take a minute)...");
167
+ const installResult = spawnSync(
168
+ "pnpm",
169
+ [
170
+ "install",
171
+ "--no-strict-peer-dependencies",
172
+ "--config.auto-install-peers=true",
173
+ "--prefer-offline",
174
+ "--ignore-scripts", // skip postinstalls to keep this guard fast
175
+ ],
176
+ {
177
+ cwd: installDir,
178
+ encoding: "utf8",
179
+ env: {
180
+ ...process.env,
181
+ npm_config_strict_peer_dependencies: "false",
182
+ npm_config_auto_install_peers: "true",
183
+ },
184
+ },
185
+ );
186
+
187
+ if (installResult.status !== 0) {
188
+ fail(`pnpm install failed (exit ${installResult.status}):`);
189
+ if (installResult.stdout) process.stdout.write(installResult.stdout);
190
+ if (installResult.stderr) process.stderr.write(installResult.stderr);
191
+ process.exit(1);
192
+ }
193
+ ok("pnpm install exited 0.");
194
+
195
+ // 7. verify the zenoh-ts patch was applied (signature in the pnpm store path)
196
+ step("Verifying zenoh-ts patch landed (looking for _patch_hash in .pnpm)...");
197
+ const pnpmStore = join(installDir, "node_modules", ".pnpm");
198
+ if (!existsSync(pnpmStore)) {
199
+ fail(`Expected ${pnpmStore} after pnpm install.`);
200
+ process.exit(1);
201
+ }
202
+ const entries = readdirSync(pnpmStore);
203
+ const patched = entries.find(
204
+ (e) => e.startsWith("@eclipse-zenoh+zenoh-ts@") && e.includes("_patch_hash="),
205
+ );
206
+ if (!patched) {
207
+ fail(
208
+ "Could not find a patched @eclipse-zenoh/zenoh-ts in the pnpm store.\n" +
209
+ " This means patches/ either wasn't shipped or wasn't applied.\n" +
210
+ " Looking for entry matching: @eclipse-zenoh+zenoh-ts@*_patch_hash=*",
211
+ );
212
+ process.exit(1);
213
+ }
214
+ ok(`Patched zenoh-ts present in store: ${patched.slice(0, 70)}...`);
215
+
216
+ ok("ALL CHECKS PASSED. Tarball is publish-ready.");
217
+ } finally {
218
+ // best-effort cleanup; don't mask earlier errors
219
+ try {
220
+ rmSync(work, { recursive: true, force: true });
221
+ } catch {
222
+ // ignore
223
+ }
224
+ }
@@ -55,6 +55,9 @@ const INCLUDED_PACKAGES = [
55
55
  "agenticros-gemini",
56
56
  ];
57
57
 
58
+ // NOTE: .npmrc is deliberately absent here. npm pack strips .npmrc from
59
+ // every published tarball (hardcoded denylist), so bundling it is pointless.
60
+ // The CLI writes ~/agenticros/.npmrc inline at init/heal time instead.
58
61
  const TOP_LEVEL_FILES = [
59
62
  "package.json",
60
63
  "pnpm-workspace.yaml",
@@ -62,7 +65,6 @@ const TOP_LEVEL_FILES = [
62
65
  "tsconfig.base.json",
63
66
  "LICENSE",
64
67
  "README.md",
65
- ".npmrc",
66
68
  ];
67
69
 
68
70
  const DOCS_FILES = ["cli.md", "architecture.md", "robot-setup.md", "memory.md"];
@@ -214,25 +216,11 @@ function copyPatches() {
214
216
  copyTree(join(REPO_ROOT, "patches"), join(RUNTIME_DIR, "patches"));
215
217
  }
216
218
 
217
- function writeInitNpmrc() {
218
- // The dev workspace runs with strict-peer-dependencies=true so we catch
219
- // upstream peer mismatches in CI. End-user `agenticros init`, however, must
220
- // tolerate them - mem0ai (a transitive dep of @agenticros/core) currently
221
- // declares strict peer ranges on qdrant/pg/redis that the resolved versions
222
- // don't satisfy, which aborts pnpm install. Overwriting .npmrc in the
223
- // shipped snapshot keeps dev strictness intact while letting `init` succeed
224
- // on a clean machine.
225
- logStep("Writing init-friendly .npmrc (overrides dev settings)");
226
- const contents = [
227
- "# Generated by scripts/pack-runtime.mjs - safe defaults for `agenticros init`.",
228
- "# Devs working on the repo itself get the stricter root .npmrc.",
229
- "shamefully-hoist=false",
230
- "strict-peer-dependencies=false",
231
- "auto-install-peers=true",
232
- "",
233
- ].join("\n");
234
- writeFileSync(join(RUNTIME_DIR, ".npmrc"), contents);
235
- }
219
+ // NOTE: We intentionally do NOT ship runtime/.npmrc here. npm strips .npmrc
220
+ // from every published tarball (hardcoded denylist alongside .gitignore), so
221
+ // any .npmrc we write into runtime/ vanishes from the user's `npx agenticros`
222
+ // install. Instead, the CLI writes ~/agenticros/.npmrc from inline content at
223
+ // init/heal time (see commands/init.ts -> writeInitNpmrcInline).
236
224
 
237
225
  function writeBundleManifest() {
238
226
  const manifestPath = join(RUNTIME_DIR, "BUNDLE.json");
@@ -271,7 +259,6 @@ copyPackages();
271
259
  copyTopLevel();
272
260
  copyDocs();
273
261
  copyPatches();
274
- writeInitNpmrc(); // Must come AFTER copyTopLevel which copies the dev .npmrc
275
262
  writeBundleManifest();
276
263
  reportSize();
277
264
  logStep("Done.");
@@ -43,9 +43,20 @@ else
43
43
  echo " Started (pid $(cat "$CAMERA_PID_FILE"))"
44
44
  fi
45
45
 
46
- echo "==> Building @agenticros/claude-code MCP server"
46
+ echo "==> Building TypeScript workspace (@agenticros/core, ros-camera, claude-code, ...)"
47
47
  cd "$REPO_ROOT"
48
- pnpm --filter @agenticros/claude-code build
48
+ # Build claude-code AND all its dependencies (@agenticros/core, ros-camera).
49
+ # Without the leading dots we'd only build claude-code itself and TS would
50
+ # fail to resolve @agenticros/core because the dependency has no dist/ yet.
51
+ # `--workspace-concurrency=1` keeps logs readable on slow Jetson SDs.
52
+ if ! pnpm --filter '...@agenticros/claude-code' --workspace-concurrency=1 build; then
53
+ echo ""
54
+ echo " Workspace build failed. If this is your first run, do:" >&2
55
+ echo " agenticros init # installs deps + builds workspace" >&2
56
+ echo " or, from this dir:" >&2
57
+ echo " pnpm install && pnpm build" >&2
58
+ exit 2
59
+ fi
49
60
 
50
61
  echo "==> Starting motor controller (robotics start motors)"
51
62
  robotics start motors