@ijfw/install 1.1.5 → 1.1.7

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
@@ -24,8 +24,15 @@ IJFW configures every agent on your machine. The options below let you customize
24
24
  ### Uninstall
25
25
 
26
26
  ```bash
27
- npx @ijfw/install uninstall # preserves ~/.ijfw/memory/
28
- npx @ijfw/install uninstall --purge # removes memory too
27
+ ijfw uninstall # preserves ~/.ijfw/memory/
28
+ ijfw uninstall --purge # removes memory too
29
+ ```
30
+
31
+ If `ijfw` isn't on your PATH (e.g. you uninstalled the global `@ijfw/install`
32
+ package already), invoke the bin directly:
33
+
34
+ ```bash
35
+ npx -p @ijfw/install ijfw-uninstall
29
36
  ```
30
37
 
31
38
  Memory is preserved across re-runs by default.
package/dist/ijfw.js CHANGED
@@ -2449,6 +2449,19 @@ function doctorCheck(cmd, args) {
2449
2449
  const r = spawnSync12(cmd, args, { encoding: "utf8" });
2450
2450
  return r.status === 0 ? r.stdout.split("\n")[0].trim() : "not found";
2451
2451
  }
2452
+ function findCli() {
2453
+ const candidates = [
2454
+ join9(repoRoot(), "mcp-server", "src", "cross-orchestrator-cli.js"),
2455
+ join9(homedir(), ".ijfw", "mcp-server", "src", "cross-orchestrator-cli.js")
2456
+ ];
2457
+ return candidates.find((p) => existsSync3(p)) || null;
2458
+ }
2459
+ function delegateToCli(argTail) {
2460
+ const cli = findCli();
2461
+ if (!cli) return false;
2462
+ const r = spawnSync12("node", [cli, ...argTail], { stdio: "inherit" });
2463
+ process.exit(r.status ?? 1);
2464
+ }
2452
2465
  async function main() {
2453
2466
  const argv = process.argv;
2454
2467
  const sub = argv[2];
@@ -2456,17 +2469,26 @@ async function main() {
2456
2469
  printHelp2();
2457
2470
  process.exit(0);
2458
2471
  }
2459
- if (sub === "--version" || sub === "-v") {
2472
+ if (sub === "--version" || sub === "-v" || sub === "version") {
2473
+ const verbose = argv.slice(3).includes("--verbose");
2474
+ if (delegateToCli(argv.slice(2))) return;
2460
2475
  try {
2461
- const { readFileSync: readFileSync4 } = await import("node:fs");
2462
2476
  const pkgPath = join9(__dirname2, "..", "package.json");
2463
- const pkg = JSON.parse(readFileSync4(pkgPath, "utf8"));
2464
- console.log(pkg.version || "unknown");
2477
+ const pkg = JSON.parse(readFileSync3(pkgPath, "utf8"));
2478
+ console.log(`@ijfw/install@${pkg.version || "unknown"}`);
2479
+ if (verbose) {
2480
+ console.log(" (full --verbose details require a completed install: run ijfw install)");
2481
+ }
2465
2482
  } catch {
2466
2483
  console.log("unknown");
2467
2484
  }
2468
2485
  process.exit(0);
2469
2486
  }
2487
+ if (sub === "update" || sub === "statusline" || sub === "config" || sub === "insight") {
2488
+ if (delegateToCli(argv.slice(2))) return;
2489
+ console.error(`'ijfw ${sub}' requires a completed IJFW install. Run: ijfw install`);
2490
+ process.exit(1);
2491
+ }
2470
2492
  switch (sub) {
2471
2493
  case "install": {
2472
2494
  const installBin = resolve3(__dirname2, "..", "dist", "install.js");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ijfw/install",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "One-command installer for IJFW -- the AI efficiency layer. One install, every AI coding agent, zero config.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -55,6 +55,7 @@
55
55
  "url": "git+https://github.com/TheRealSeanDonahoe/ijfw.git"
56
56
  },
57
57
  "publishConfig": {
58
- "access": "public"
58
+ "access": "public",
59
+ "provenance": true
59
60
  }
60
61
  }