@rebasepro/cli 0.9.1-canary.742f831 → 0.9.1-canary.7ba0e49

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
- export declare function skillsCommand(subcommand: string | undefined, rawArgs: string[]): Promise<void>;
1
+ export declare function skillsCommand(subcommand: string | undefined, _args: string[]): Promise<void>;
package/dist/index.es.js CHANGED
@@ -2477,43 +2477,22 @@ function installForAgent(agentKey, skills, projectDir) {
2477
2477
  }
2478
2478
  return count;
2479
2479
  }
2480
- async function skillsCommand(subcommand, rawArgs) {
2480
+ async function skillsCommand(subcommand, _args) {
2481
2481
  switch (subcommand) {
2482
2482
  case "install":
2483
- await skillsInstall(rawArgs);
2483
+ await skillsInstall();
2484
2484
  break;
2485
2485
  case "--help":
2486
2486
  case void 0:
2487
2487
  printSkillsHelp();
2488
2488
  break;
2489
2489
  default:
2490
- console.error(chalk.red(`Unknown skills subcommand: ${subcommand}`));
2490
+ console.log(chalk.red(`Unknown skills subcommand: ${subcommand}`));
2491
2491
  console.log("");
2492
2492
  printSkillsHelp();
2493
- process.exit(1);
2494
2493
  }
2495
2494
  }
2496
- /**
2497
- * Agents named explicitly on the command line, e.g. `--agent claude --agent cursor`
2498
- * (also accepts a comma-separated list). Returns null when none were given.
2499
- */
2500
- function parseAgentFlags(rawArgs) {
2501
- const requested = [];
2502
- for (let i = 0; i < rawArgs.length; i++) {
2503
- if (rawArgs[i] !== "--agent" && rawArgs[i] !== "-a") continue;
2504
- const value = rawArgs[i + 1];
2505
- if (value && !value.startsWith("-")) requested.push(...value.split(",").map((v) => v.trim()).filter(Boolean));
2506
- }
2507
- if (requested.length === 0) return null;
2508
- const valid = Object.keys(AGENTS);
2509
- const unknown = requested.filter((a) => !valid.includes(a));
2510
- if (unknown.length > 0) {
2511
- console.error(chalk.red(`Unknown agent(s): ${unknown.join(", ")}. Available: ${valid.join(", ")}`));
2512
- process.exit(1);
2513
- }
2514
- return requested;
2515
- }
2516
- async function skillsInstall(rawArgs = []) {
2495
+ async function skillsInstall() {
2517
2496
  const projectDir = process.cwd();
2518
2497
  let skillsDir;
2519
2498
  try {
@@ -2527,14 +2506,8 @@ async function skillsInstall(rawArgs = []) {
2527
2506
  console.error(`${chalk.red.bold("ERROR")} No skills found in ${skillsDir}`);
2528
2507
  process.exit(1);
2529
2508
  }
2530
- let agents = parseAgentFlags(rawArgs) ?? detectAgents(projectDir);
2509
+ let agents = detectAgents(projectDir);
2531
2510
  if (agents.length === 0) {
2532
- if (!process.stdin.isTTY) {
2533
- console.error(chalk.red("Cannot prompt: this is a non-interactive terminal (no TTY)."));
2534
- console.error(chalk.yellow(` Name the agents explicitly, e.g. rebase skills install --agent ${Object.keys(AGENTS)[0]}`));
2535
- console.error(chalk.gray(` Available: ${Object.keys(AGENTS).join(", ")}`));
2536
- process.exit(1);
2537
- }
2538
2511
  const choices = Object.entries(AGENTS).map(([key, agent]) => ({
2539
2512
  name: agent.label,
2540
2513
  value: key,
@@ -2576,15 +2549,8 @@ ${chalk.green.bold("Subcommands")}
2576
2549
  ${chalk.blue.bold("install")} Install Rebase agent skills for your AI coding assistant
2577
2550
  Supports: Cursor, Claude Code, Windsurf, Gemini CLI, Antigravity
2578
2551
 
2579
- ${chalk.green.bold("Options")}
2580
- ${chalk.blue("--agent, -a")} Agent(s) to install for, skipping detection and the prompt.
2581
- Repeat the flag or pass a comma-separated list.
2582
- Available: ${Object.keys(AGENTS).join(", ")}
2583
-
2584
2552
  ${chalk.green.bold("Examples")}
2585
2553
  ${chalk.cyan("rebase skills install")}
2586
- ${chalk.cyan("rebase skills install --agent claude")}
2587
- ${chalk.cyan("rebase skills install --agent claude,cursor")}
2588
2554
  `);
2589
2555
  }
2590
2556
  //#endregion
@@ -2616,16 +2582,9 @@ function loadEnv(projectRoot) {
2616
2582
  }
2617
2583
  return env;
2618
2584
  }
2619
- function resolveBaseUrl(env, projectRoot) {
2620
- if (env.REBASE_BASE_URL) return env.REBASE_BASE_URL;
2621
- if (projectRoot) try {
2622
- const urlFile = path.join(projectRoot, ".rebase-dev-url");
2623
- if (fs.existsSync(urlFile)) {
2624
- const devUrl = fs.readFileSync(urlFile, "utf-8").trim();
2625
- if (devUrl) return devUrl;
2626
- }
2627
- } catch {}
2628
- return `http://localhost:${env.PORT || env.REBASE_PORT || "3001"}`;
2585
+ function resolveBaseUrl(env) {
2586
+ const port = env.PORT || env.REBASE_PORT || "3001";
2587
+ return env.REBASE_BASE_URL || `http://localhost:${port}`;
2629
2588
  }
2630
2589
  async function apiKeysCommand(subcommand, rawArgs) {
2631
2590
  if (!subcommand || subcommand === "--help") {
@@ -2650,9 +2609,8 @@ async function apiKeysCommand(subcommand, rawArgs) {
2650
2609
  }
2651
2610
  }
2652
2611
  async function listKeys(_rawArgs) {
2653
- const projectRoot = requireProjectRoot();
2654
- const env = loadEnv(projectRoot);
2655
- const baseUrl = resolveBaseUrl(env, projectRoot);
2612
+ const env = loadEnv(requireProjectRoot());
2613
+ const baseUrl = resolveBaseUrl(env);
2656
2614
  const serviceKey = env.SERVICE_KEY || env.REBASE_SERVICE_KEY;
2657
2615
  if (!serviceKey) {
2658
2616
  console.error(chalk.red("✗ SERVICE_KEY not found in .env — required for admin operations."));
@@ -2757,9 +2715,8 @@ async function createKey(rawArgs) {
2757
2715
  expires_at = parsed.toISOString();
2758
2716
  }
2759
2717
  }
2760
- const projectRoot = requireProjectRoot();
2761
- const env = loadEnv(projectRoot);
2762
- const baseUrl = resolveBaseUrl(env, projectRoot);
2718
+ const env = loadEnv(requireProjectRoot());
2719
+ const baseUrl = resolveBaseUrl(env);
2763
2720
  const serviceKey = env.SERVICE_KEY || env.REBASE_SERVICE_KEY;
2764
2721
  if (!serviceKey) {
2765
2722
  console.error(chalk.red("✗ SERVICE_KEY not found in .env — required for admin operations."));
@@ -2816,9 +2773,8 @@ async function revokeKey(rawArgs) {
2816
2773
  console.log(chalk.gray(" Usage: rebase api-keys revoke <key-id>"));
2817
2774
  process.exit(1);
2818
2775
  }
2819
- const projectRoot = requireProjectRoot();
2820
- const env = loadEnv(projectRoot);
2821
- const baseUrl = resolveBaseUrl(env, projectRoot);
2776
+ const env = loadEnv(requireProjectRoot());
2777
+ const baseUrl = resolveBaseUrl(env);
2822
2778
  const serviceKey = env.SERVICE_KEY || env.REBASE_SERVICE_KEY;
2823
2779
  if (!serviceKey) {
2824
2780
  console.error(chalk.red("✗ SERVICE_KEY not found in .env — required for admin operations."));
@@ -3287,18 +3243,13 @@ function fmtDate(value) {
3287
3243
  */
3288
3244
  var POLL_INTERVAL_MS = 1500;
3289
3245
  var POLL_TIMEOUT_MS = 900 * 1e3;
3290
- var MAX_SOURCE_UPLOAD_BYTES = 100 * 1024 * 1024;
3291
3246
  function sleep(ms) {
3292
3247
  return new Promise((r) => setTimeout(r, ms));
3293
3248
  }
3294
- function run(cmd, cmdArgs, cwd, env) {
3249
+ function run(cmd, cmdArgs, cwd) {
3295
3250
  return new Promise((resolve, reject) => {
3296
3251
  const child = spawn(cmd, cmdArgs, {
3297
3252
  cwd,
3298
- env: env ? {
3299
- ...process.env,
3300
- ...env
3301
- } : void 0,
3302
3253
  stdio: [
3303
3254
  "ignore",
3304
3255
  "ignore",
@@ -3328,7 +3279,7 @@ async function createSourceTarball(sourceDir) {
3328
3279
  for (const ignore of [".gitignore", ".rebaseignore"]) if (fs.existsSync(path.join(dir, ignore))) tarArgs.push(`--exclude-from=${ignore}`);
3329
3280
  tarArgs.push(".");
3330
3281
  try {
3331
- await run("tar", tarArgs, dir, { COPYFILE_DISABLE: "1" });
3282
+ await run("tar", tarArgs, dir);
3332
3283
  } catch (e) {
3333
3284
  fail(`Failed to package source: ${e instanceof Error ? e.message : String(e)}`);
3334
3285
  }
@@ -3338,7 +3289,6 @@ async function createSourceTarball(sourceDir) {
3338
3289
  async function uploadSource(url, token, projectId, tarPath) {
3339
3290
  const bytes = fs.readFileSync(tarPath);
3340
3291
  const sizeMb = (bytes.length / 1024 / 1024).toFixed(1);
3341
- if (bytes.length > MAX_SOURCE_UPLOAD_BYTES) fail(`Source context is ${sizeMb} MB — the upload cap is ${Math.round(MAX_SOURCE_UPLOAD_BYTES / 1024 / 1024)} MB.`, "Trim the build context: exclude sourcemaps (*.map), build output and large assets via .rebaseignore or .gitignore.");
3342
3292
  console.log(chalk.gray(` Uploading source (${sizeMb} MB)...`));
3343
3293
  const res = await fetch(`${url}/api/functions/deploy/upload?projectId=${encodeURIComponent(projectId)}`, {
3344
3294
  method: "POST",
@@ -4318,8 +4268,6 @@ ${chalk.green.bold("Options")}
4318
4268
  ${chalk.blue("--secret")} Mark a variable write-only ${chalk.gray("(set)")}
4319
4269
  ${chalk.blue("--json")} Machine-readable output
4320
4270
  ${chalk.blue("--project, -p")} Project slug ${chalk.gray("(defaults to the linked project)")}
4321
-
4322
- ${chalk.gray("Values are encrypted at rest (AES-256-GCM) and only decrypted at deploy time.")}
4323
4271
  `);
4324
4272
  }
4325
4273
  function printEnvHelpJson() {
@@ -5680,10 +5628,9 @@ async function entry(args) {
5680
5628
  await cloudCommand(effectiveSubcommand, args);
5681
5629
  break;
5682
5630
  default:
5683
- console.error(chalk.red(`Unknown command: ${command}`));
5631
+ console.log(chalk.red(`Unknown command: ${command}`));
5684
5632
  console.log("");
5685
5633
  printHelp();
5686
- process.exit(1);
5687
5634
  }
5688
5635
  }
5689
5636
  function printHelp() {