@orchid-labs/pluxx 0.1.5 → 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.
package/README.md CHANGED
@@ -206,6 +206,8 @@ Pluxx owns the deterministic scaffold, validation, and host compilation layer. Y
206
206
  - npm package: `@orchid-labs/pluxx`
207
207
  - preferred invocation: `npx @orchid-labs/pluxx ...`
208
208
  - global install also works: `npm install -g @orchid-labs/pluxx`
209
+ - check the active global CLI version with: `pluxx --version`
210
+ - upgrade the active global CLI with: `pluxx upgrade`
209
211
  - published CLI runtime: Node `>=18`
210
212
  - source builds and maintainer workflows also run on Node `>=18`
211
213
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAeL,KAAK,mBAAmB,EAIzB,MAAM,SAAS,CAAA;AAkChB,OAAO,EACL,wBAAwB,EAIzB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAkB,MAAM,WAAW,CAAA;AAkCnE,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,cAAc,CAAC,EAAE,mBAAmB,CAAA;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;CACpB;AAiGD,wBAAsB,IAAI,kBAgEzB;AA0cD,UAAU,mBAAmB;IAC3B,EAAE,EAAE,QAAQ,GAAG,eAAe,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAyBD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAOhF;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,GAAG,IAAI,GAClE,mBAAmB,GAAG,IAAI,CA4B5B;AA+BD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,YAAY,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAUpI;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,cAAc,CAAC,GAAG,OAAO,GAAG,SAAS,CAwCpJ;AAiSD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAwB3H"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAeL,KAAK,mBAAmB,EAIzB,MAAM,SAAS,CAAA;AAkChB,OAAO,EACL,wBAAwB,EAIzB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAkB,MAAM,WAAW,CAAA;AAoCnE,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,cAAc,CAAC,EAAE,mBAAmB,CAAA;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;CACpB;AA2GD,wBAAsB,IAAI,kBAsEzB;AAsjBD,UAAU,mBAAmB;IAC3B,EAAE,EAAE,QAAQ,GAAG,eAAe,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAyBD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAOhF;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,GAAG,IAAI,GAClE,mBAAmB,GAAG,IAAI,CA4B5B;AA+BD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,YAAY,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAUpI;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,cAAc,CAAC,GAAG,OAAO,GAAG,SAAS,CAwCpJ;AAiSD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAwB3H"}
package/dist/cli/index.js CHANGED
@@ -84,6 +84,9 @@ var require_src = __commonJS({
84
84
  }
85
85
  });
86
86
 
87
+ // src/cli/index.ts
88
+ import { readFileSync as readFileSync16 } from "fs";
89
+
87
90
  // src/config/load.ts
88
91
  import { resolve, extname, dirname } from "path";
89
92
  import { existsSync } from "fs";
@@ -18069,19 +18072,19 @@ function usage() {
18069
18072
  "- --replay serves a deterministic stdio MCP session from a recorded tape."
18070
18073
  ].join("\n");
18071
18074
  }
18072
- function readOption(rawArgs, flag) {
18073
- const index = rawArgs.indexOf(flag);
18075
+ function readOption(rawArgs2, flag) {
18076
+ const index = rawArgs2.indexOf(flag);
18074
18077
  if (index === -1) return void 0;
18075
- const value = rawArgs[index + 1];
18078
+ const value = rawArgs2[index + 1];
18076
18079
  if (!value || value.startsWith("-")) {
18077
18080
  return void 0;
18078
18081
  }
18079
18082
  return value;
18080
18083
  }
18081
- function parseOptions(rawArgs) {
18082
- const source = readOption(rawArgs, "--from-mcp");
18083
- const recordPath = readOption(rawArgs, "--record");
18084
- const replayPath = readOption(rawArgs, "--replay");
18084
+ function parseOptions(rawArgs2) {
18085
+ const source = readOption(rawArgs2, "--from-mcp");
18086
+ const recordPath = readOption(rawArgs2, "--record");
18087
+ const replayPath = readOption(rawArgs2, "--replay");
18085
18088
  if (recordPath && replayPath) {
18086
18089
  throw new Error("Choose either --record or --replay, not both.");
18087
18090
  }
@@ -18269,17 +18272,17 @@ async function replaySession(filepath, io) {
18269
18272
  rl.close();
18270
18273
  }
18271
18274
  }
18272
- async function runMcpProxy(rawArgs) {
18273
- return await runMcpProxyWithIo(rawArgs, {
18275
+ async function runMcpProxy(rawArgs2) {
18276
+ return await runMcpProxyWithIo(rawArgs2, {
18274
18277
  input: process.stdin,
18275
18278
  output: process.stdout,
18276
18279
  error: process.stderr
18277
18280
  });
18278
18281
  }
18279
- async function runMcpProxyWithIo(rawArgs, io) {
18282
+ async function runMcpProxyWithIo(rawArgs2, io) {
18280
18283
  let options;
18281
18284
  try {
18282
- options = parseOptions(rawArgs);
18285
+ options = parseOptions(rawArgs2);
18283
18286
  } catch (error) {
18284
18287
  io.error.write(`${error instanceof Error ? error.message : String(error)}
18285
18288
 
@@ -19311,7 +19314,7 @@ ${c2}
19311
19314
  import { basename as basename8, resolve as resolve23 } from "path";
19312
19315
  import { mkdir as mkdir4, mkdtemp as mkdtemp3, rm as rm4 } from "fs/promises";
19313
19316
  import { tmpdir as tmpdir5 } from "os";
19314
- import { spawn as spawn4 } from "child_process";
19317
+ import { spawn as spawn4, spawnSync as spawnSync3 } from "child_process";
19315
19318
 
19316
19319
  // src/cli/publish.ts
19317
19320
  import { chmodSync, existsSync as existsSync25, mkdtempSync as mkdtempSync2, readFileSync as readFileSync14, rmSync as rmSync4, writeFileSync as writeFileSync6 } from "fs";
@@ -20222,36 +20225,36 @@ function runPublish(config, options = {}) {
20222
20225
  }
20223
20226
 
20224
20227
  // src/cli/runtime.ts
20225
- function createCliRuntime(rawArgs) {
20228
+ function createCliRuntime(rawArgs2) {
20226
20229
  const isCI = process.env.CI === "1" || process.env.CI === "true";
20227
20230
  const isTTY = process.stdin.isTTY === true && process.stdout.isTTY === true;
20228
20231
  return {
20229
- dryRun: rawArgs.includes("--dry-run"),
20230
- jsonOutput: rawArgs.includes("--json"),
20231
- quiet: rawArgs.includes("--quiet"),
20232
+ dryRun: rawArgs2.includes("--dry-run"),
20233
+ jsonOutput: rawArgs2.includes("--json"),
20234
+ quiet: rawArgs2.includes("--quiet"),
20232
20235
  isCI,
20233
20236
  isTTY,
20234
20237
  isInteractive: isTTY && !isCI
20235
20238
  };
20236
20239
  }
20237
- function readFlag(rawArgs, flag) {
20238
- return rawArgs.includes(flag);
20240
+ function readFlag(rawArgs2, flag) {
20241
+ return rawArgs2.includes(flag);
20239
20242
  }
20240
- function readOption2(rawArgs, flag) {
20241
- const index = rawArgs.indexOf(flag);
20243
+ function readOption2(rawArgs2, flag) {
20244
+ const index = rawArgs2.indexOf(flag);
20242
20245
  if (index === -1) return void 0;
20243
- const value = rawArgs[index + 1];
20246
+ const value = rawArgs2[index + 1];
20244
20247
  if (!value || value.startsWith("-")) {
20245
20248
  return void 0;
20246
20249
  }
20247
20250
  return value;
20248
20251
  }
20249
- function readMultiValueOption(rawArgs, flag) {
20250
- const index = rawArgs.indexOf(flag);
20252
+ function readMultiValueOption(rawArgs2, flag) {
20253
+ const index = rawArgs2.indexOf(flag);
20251
20254
  if (index === -1) return void 0;
20252
20255
  const values = [];
20253
- for (let i = index + 1; i < rawArgs.length; i += 1) {
20254
- const value = rawArgs[i];
20256
+ for (let i = index + 1; i < rawArgs2.length; i += 1) {
20257
+ const value = rawArgs2[i];
20255
20258
  if (value.startsWith("-")) break;
20256
20259
  values.push(value);
20257
20260
  }
@@ -20531,7 +20534,9 @@ function shellQuote2(value) {
20531
20534
  }
20532
20535
 
20533
20536
  // src/cli/index.ts
20534
- var args = process.argv.slice(2);
20537
+ var CLI_PACKAGE_NAME = "@orchid-labs/pluxx";
20538
+ var rawArgs = process.argv.slice(2);
20539
+ var args = normalizeTopLevelArgs(rawArgs);
20535
20540
  var command = args[0];
20536
20541
  var runtime = createCliRuntime(args);
20537
20542
  var DEFAULT_INIT_TARGETS = ["claude-code", "cursor", "codex", "opencode"];
@@ -20551,6 +20556,12 @@ var ALL_TARGET_PLATFORMS = [
20551
20556
  ];
20552
20557
  async function main() {
20553
20558
  switch (command) {
20559
+ case "version":
20560
+ await runVersionCommand();
20561
+ break;
20562
+ case "upgrade":
20563
+ await runUpgradeCommand();
20564
+ break;
20554
20565
  case "build":
20555
20566
  await runBuild2();
20556
20567
  break;
@@ -20614,6 +20625,95 @@ async function main() {
20614
20625
  process.exit(1);
20615
20626
  }
20616
20627
  }
20628
+ function normalizeTopLevelArgs(input) {
20629
+ if (input[0] === "--version" || input[0] === "-v") {
20630
+ return ["version", ...input.slice(1)];
20631
+ }
20632
+ if (input[0] === "--upgrade") {
20633
+ return ["upgrade", ...input.slice(1)];
20634
+ }
20635
+ return input;
20636
+ }
20637
+ function getCliPackageVersion() {
20638
+ const packageJsonPath = new URL("../../package.json", import.meta.url);
20639
+ const raw = JSON.parse(readFileSync16(packageJsonPath, "utf-8"));
20640
+ if (typeof raw.version !== "string" || raw.version.trim() === "") {
20641
+ throw new Error("Unable to determine the installed pluxx version from package.json.");
20642
+ }
20643
+ return raw.version.trim();
20644
+ }
20645
+ function resolveNpmExecutable() {
20646
+ return process.platform === "win32" ? "npm.cmd" : "npm";
20647
+ }
20648
+ function buildUpgradeSummary() {
20649
+ const requestedVersion = readOption2(args, "--version") ?? "latest";
20650
+ const specifier = `${CLI_PACKAGE_NAME}@${requestedVersion}`;
20651
+ return {
20652
+ dryRun: runtime.dryRun,
20653
+ packageName: CLI_PACKAGE_NAME,
20654
+ currentVersion: getCliPackageVersion(),
20655
+ requestedVersion,
20656
+ specifier,
20657
+ command: [resolveNpmExecutable(), "install", "-g", specifier],
20658
+ note: "This updates the global npm install used by `pluxx` on your PATH. Repo-local and `npx` invocations are separate entrypoints."
20659
+ };
20660
+ }
20661
+ async function runVersionCommand() {
20662
+ const version = getCliPackageVersion();
20663
+ if (runtime.jsonOutput) {
20664
+ printJson({ version });
20665
+ return;
20666
+ }
20667
+ console.log(version);
20668
+ }
20669
+ async function runUpgradeCommand() {
20670
+ const summary = buildUpgradeSummary();
20671
+ if (runtime.dryRun) {
20672
+ if (runtime.jsonOutput) {
20673
+ printJson(summary);
20674
+ return;
20675
+ }
20676
+ if (!runtime.quiet) {
20677
+ console.log(`Dry run: would run \`${summary.command.join(" ")}\``);
20678
+ console.log(summary.note);
20679
+ console.log(`Current version: ${summary.currentVersion}`);
20680
+ }
20681
+ return;
20682
+ }
20683
+ const install = spawnSync3(summary.command[0], summary.command.slice(1), runtime.jsonOutput ? {
20684
+ env: process.env,
20685
+ encoding: "utf-8",
20686
+ stdio: "pipe"
20687
+ } : {
20688
+ env: process.env,
20689
+ stdio: "inherit"
20690
+ });
20691
+ if (install.status !== 0) {
20692
+ if (runtime.jsonOutput) {
20693
+ printJson({
20694
+ ...summary,
20695
+ ok: false,
20696
+ stdout: typeof install.stdout === "string" ? install.stdout : "",
20697
+ stderr: typeof install.stderr === "string" ? install.stderr : "",
20698
+ exitCode: install.status ?? 1
20699
+ });
20700
+ }
20701
+ throw new Error(`Failed to upgrade ${CLI_PACKAGE_NAME}.`);
20702
+ }
20703
+ const result = {
20704
+ ...summary,
20705
+ ok: true
20706
+ };
20707
+ if (runtime.jsonOutput) {
20708
+ printJson(result);
20709
+ return;
20710
+ }
20711
+ if (!runtime.quiet) {
20712
+ console.log(`Upgraded ${summary.packageName} with \`${summary.command.join(" ")}\`.`);
20713
+ console.log("Run `pluxx --version` to verify the active version on your PATH.");
20714
+ console.log(summary.note);
20715
+ }
20716
+ }
20617
20717
  function hasAgentContextHints(input) {
20618
20718
  return Boolean(input.docsUrl || input.websiteUrl || (input.contextPaths?.length ?? 0) > 0);
20619
20719
  }
@@ -20899,8 +20999,8 @@ function parseTargetPlatforms(raw) {
20899
20999
  }
20900
21000
  return targets;
20901
21001
  }
20902
- function parseTargetFlagValues(rawArgs) {
20903
- const values = readMultiValueOption(rawArgs, "--target");
21002
+ function parseTargetFlagValues(rawArgs2) {
21003
+ const values = readMultiValueOption(rawArgs2, "--target");
20904
21004
  if (!values) return void 0;
20905
21005
  return parseTargetPlatforms(values.join(","));
20906
21006
  }
@@ -21223,29 +21323,29 @@ function formatMcpDiscoverySummary(introspection) {
21223
21323
  }
21224
21324
  return `${parts.join(", ")} discovered`;
21225
21325
  }
21226
- function parseInitFromMcpOptions(rawArgs, initialName, initialSource) {
21326
+ function parseInitFromMcpOptions(rawArgs2, initialName, initialSource) {
21227
21327
  return {
21228
- source: initialSource ?? readOption2(rawArgs, "--from-mcp"),
21229
- assumeDefaults: rawArgs.includes("--yes"),
21230
- name: readOption2(rawArgs, "--name") ?? initialName,
21231
- author: readOption2(rawArgs, "--author"),
21232
- displayName: readOption2(rawArgs, "--display-name"),
21233
- targets: readOption2(rawArgs, "--targets"),
21234
- docsUrl: readOption2(rawArgs, "--docs"),
21235
- websiteUrl: readOption2(rawArgs, "--website"),
21236
- contextPaths: readMultiValueOption(rawArgs, "--context"),
21237
- ingestProvider: readOption2(rawArgs, "--ingest-provider"),
21238
- authEnv: readOption2(rawArgs, "--auth-env"),
21239
- authType: readOption2(rawArgs, "--auth-type"),
21240
- authHeader: readOption2(rawArgs, "--auth-header"),
21241
- authTemplate: readOption2(rawArgs, "--auth-template"),
21242
- runtimeAuth: readOption2(rawArgs, "--runtime-auth"),
21243
- oauthWrapper: rawArgs.includes("--oauth-wrapper"),
21244
- approveMcpTools: rawArgs.includes("--approve-mcp-tools"),
21245
- grouping: readOption2(rawArgs, "--grouping"),
21246
- hooks: readOption2(rawArgs, "--hooks"),
21247
- transport: readOption2(rawArgs, "--transport"),
21248
- jsonOutput: rawArgs.includes("--json")
21328
+ source: initialSource ?? readOption2(rawArgs2, "--from-mcp"),
21329
+ assumeDefaults: rawArgs2.includes("--yes"),
21330
+ name: readOption2(rawArgs2, "--name") ?? initialName,
21331
+ author: readOption2(rawArgs2, "--author"),
21332
+ displayName: readOption2(rawArgs2, "--display-name"),
21333
+ targets: readOption2(rawArgs2, "--targets"),
21334
+ docsUrl: readOption2(rawArgs2, "--docs"),
21335
+ websiteUrl: readOption2(rawArgs2, "--website"),
21336
+ contextPaths: readMultiValueOption(rawArgs2, "--context"),
21337
+ ingestProvider: readOption2(rawArgs2, "--ingest-provider"),
21338
+ authEnv: readOption2(rawArgs2, "--auth-env"),
21339
+ authType: readOption2(rawArgs2, "--auth-type"),
21340
+ authHeader: readOption2(rawArgs2, "--auth-header"),
21341
+ authTemplate: readOption2(rawArgs2, "--auth-template"),
21342
+ runtimeAuth: readOption2(rawArgs2, "--runtime-auth"),
21343
+ oauthWrapper: rawArgs2.includes("--oauth-wrapper"),
21344
+ approveMcpTools: rawArgs2.includes("--approve-mcp-tools"),
21345
+ grouping: readOption2(rawArgs2, "--grouping"),
21346
+ hooks: readOption2(rawArgs2, "--hooks"),
21347
+ transport: readOption2(rawArgs2, "--transport"),
21348
+ jsonOutput: rawArgs2.includes("--json")
21249
21349
  };
21250
21350
  }
21251
21351
  function toKebabCase3(value) {
@@ -22805,6 +22905,8 @@ function printHelp() {
22805
22905
  pluxx \u2014 Cross-platform AI agent plugin SDK
22806
22906
 
22807
22907
  Usage:
22908
+ pluxx --version | -v Print the installed Pluxx CLI version
22909
+ pluxx upgrade [--version x.y.z] Upgrade the global npm install of Pluxx
22808
22910
  pluxx build [--target <platforms...>] [--install] Generate platform-specific plugin files
22809
22911
  pluxx dev [--target <platforms...>] Watch for changes and auto-rebuild
22810
22912
  pluxx validate Validate your config
@@ -22841,6 +22943,9 @@ Targets:
22841
22943
  warp, gemini-cli, roo-code, cline, amp
22842
22944
 
22843
22945
  Examples:
22946
+ pluxx --version Print the installed CLI version
22947
+ pluxx upgrade Upgrade the global npm install to latest
22948
+ pluxx upgrade --version x.y.z Upgrade the global npm install to a specific version
22844
22949
  pluxx build Build for all configured targets
22845
22950
  pluxx build --install Build and install all configured targets locally
22846
22951
  pluxx build --target claude-code cursor Build for specific platforms
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orchid-labs/pluxx",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Build AI agent plugins once. Prime-time on Claude Code, Cursor, Codex, and OpenCode, with beta generators for additional hosts.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",