@vibecodr/cli 1.0.6 → 1.0.8

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +31 -11
  3. package/dist/app/command-registry.d.ts +13 -0
  4. package/dist/app/command-registry.d.ts.map +1 -0
  5. package/dist/app/command-registry.js +54 -0
  6. package/dist/app/command-registry.js.map +1 -0
  7. package/dist/app/help.d.ts +5 -0
  8. package/dist/app/help.d.ts.map +1 -0
  9. package/dist/app/help.js +158 -0
  10. package/dist/app/help.js.map +1 -0
  11. package/dist/bin/vibecodr-mcp.js +82 -80
  12. package/dist/bin/vibecodr-mcp.js.map +1 -1
  13. package/dist/commands/context.d.ts +2 -0
  14. package/dist/commands/context.d.ts.map +1 -1
  15. package/dist/commands/doctor.d.ts.map +1 -1
  16. package/dist/commands/doctor.js +81 -2
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/feedback.d.ts +3 -0
  19. package/dist/commands/feedback.d.ts.map +1 -0
  20. package/dist/commands/feedback.js +92 -0
  21. package/dist/commands/feedback.js.map +1 -0
  22. package/dist/commands/login.d.ts.map +1 -1
  23. package/dist/commands/login.js +29 -4
  24. package/dist/commands/login.js.map +1 -1
  25. package/dist/commands/logout.d.ts.map +1 -1
  26. package/dist/commands/logout.js +25 -3
  27. package/dist/commands/logout.js.map +1 -1
  28. package/dist/commands/mcp.d.ts +3 -0
  29. package/dist/commands/mcp.d.ts.map +1 -0
  30. package/dist/commands/mcp.js +26 -0
  31. package/dist/commands/mcp.js.map +1 -0
  32. package/dist/commands/status.d.ts.map +1 -1
  33. package/dist/commands/status.js +78 -6
  34. package/dist/commands/status.js.map +1 -1
  35. package/dist/commands/tools.d.ts.map +1 -1
  36. package/dist/commands/tools.js +45 -1
  37. package/dist/commands/tools.js.map +1 -1
  38. package/dist/legacy/cli/install.js +4 -4
  39. package/dist/legacy/cli/run.js +353 -353
  40. package/dist/legacy/cli/run.js.map +1 -1
  41. package/dist/legacy/config/store.js +7 -7
  42. package/dist/legacy/core/api-client.js +3 -3
  43. package/dist/legacy/core/api-client.js.map +1 -1
  44. package/dist/legacy/core/validators.js +4 -4
  45. package/dist/legacy/core/version.d.ts +2 -2
  46. package/dist/legacy/core/version.js +1 -1
  47. package/docs/API-CONTRACT.md +605 -606
  48. package/docs/RELEASE-CHECKLIST.md +264 -260
  49. package/docs/SECURITY.md +166 -162
  50. package/docs/VALIDATION-MATRIX.md +45 -45
  51. package/docs/architecture.md +9 -6
  52. package/docs/auth.md +15 -7
  53. package/docs/commands.md +280 -256
  54. package/docs/install.md +5 -5
  55. package/package.json +4 -3
@@ -33,7 +33,7 @@ export async function runCli(argv, options = {}) {
33
33
  const { globals, commandArgs } = parsed;
34
34
  try {
35
35
  if (globals.version) {
36
- writeResult({ message: `vc-tools ${VERSION}`, data: { version: VERSION }, humanData: "hide" }, { json: globals.json, quiet: globals.quiet, stdout, stderr });
36
+ writeResult({ message: `vibecodr ${VERSION}`, data: { version: VERSION }, humanData: "hide" }, { json: globals.json, quiet: globals.quiet, stdout, stderr });
37
37
  return 0;
38
38
  }
39
39
  if (globals.help || commandArgs.length === 0) {
@@ -125,8 +125,8 @@ function commandInspect() {
125
125
  const summary = goalCoverageSummary();
126
126
  return {
127
127
  message: summary.hostedRequired === 0
128
- ? `vc-tools goal coverage: ${summary.localVerified}/${summary.total} inspections verified.`
129
- : `vc-tools goal coverage: ${summary.localVerified}/${summary.total} locally verified, ${summary.hostedRequired} hosted-service check pending.`,
128
+ ? `vibecodr goal coverage: ${summary.localVerified}/${summary.total} inspections verified.`
129
+ : `vibecodr goal coverage: ${summary.localVerified}/${summary.total} locally verified, ${summary.hostedRequired} hosted-service check pending.`,
130
130
  data: {
131
131
  summary,
132
132
  inspections: GOAL_INSPECTIONS
@@ -140,7 +140,7 @@ async function commandStart(context, parsed) {
140
140
  let login;
141
141
  if (!token) {
142
142
  if (context.globals.noInput) {
143
- throw new CliError("auth.approval_required", "This Agent Computer is not connected yet. Run vc-tools start without --no-input to open Vibecodr approval, or use an advanced file/stdin credential source for automation.", 3);
143
+ throw new CliError("auth.approval_required", "This Agent Computer is not connected yet. Run vibecodr start without --no-input to open Vibecodr approval, or use an advanced file/stdin credential source for automation.", 3);
144
144
  }
145
145
  login = await commandLogin(context, parseCommandOptions([]));
146
146
  token = await resolveToken(context, true);
@@ -189,7 +189,7 @@ async function commandTry(context, parsed) {
189
189
  await commandStart(context, parsed);
190
190
  const { profile } = await context.store.getProfile(context.globals.profile);
191
191
  const client = createClient(context, profile, await resolveToken(context, true));
192
- const proofDir = getStringFlag(parsed.flags, "out") ?? "vc-tools-proof";
192
+ const proofDir = getStringFlag(parsed.flags, "out") ?? "vibecodr-proof";
193
193
  const browserParsed = {
194
194
  positionals: ["https://example.com"],
195
195
  flags: {
@@ -203,7 +203,7 @@ async function commandTry(context, parsed) {
203
203
  positionals: [],
204
204
  flags: {
205
205
  ...parsed.flags,
206
- command: "node -e \"console.log('vc-tools computer ok')\"",
206
+ command: "node -e \"console.log('vibecodr computer ok')\"",
207
207
  out: proofDir,
208
208
  filename: "computer-run.json",
209
209
  pollIntervalMs: getStringFlag(parsed.flags, "pollIntervalMs") ?? "250"
@@ -287,8 +287,8 @@ async function commandDashboard(context, parsed) {
287
287
  }
288
288
  return {
289
289
  message: opened
290
- ? `Opened the Vibecodr Tools dashboard: ${urlString}`
291
- : `Vibecodr Tools dashboard: ${urlString}\nUse vc-tools dashboard --no-open to suppress opening, or --json for machine-readable metadata.`,
290
+ ? `Opened the Vibecodr dashboard: ${urlString}`
291
+ : `Vibecodr dashboard: ${urlString}\nUse vibecodr dashboard --no-open to suppress opening, or --json for machine-readable metadata.`,
292
292
  data: {
293
293
  url: urlString,
294
294
  section,
@@ -306,7 +306,7 @@ async function commandLogin(context, parsed) {
306
306
  let browserLogin;
307
307
  if (credential === undefined) {
308
308
  if (context.globals.noInput) {
309
- throw new CliError("auth.token_required", "Browser login needs interactive approval. Run vc-tools login without --no-input, or use an automation-safe credential source such as Get-Clipboard | vc-tools login --credential-stdin or vc-tools login --credential-file <path>.", 3);
309
+ throw new CliError("auth.token_required", "Browser login needs interactive approval. Run vibecodr login without --no-input, or use an automation-safe credential source such as Get-Clipboard | vibecodr login --credential-stdin or vibecodr login --credential-file <path>.", 3);
310
310
  }
311
311
  const browserExchange = await completeBrowserDeviceLogin(context, parsed);
312
312
  exchange = browserExchange.exchange;
@@ -441,8 +441,8 @@ async function commandStatus(context) {
441
441
  }
442
442
  return {
443
443
  message: auth.token
444
- ? `This Vibecodr Agent Computer has a credential available from ${auth.credential.winning?.label ?? "stored credentials"}. Run vc-tools agent status for account and connection details.`
445
- : "This Vibecodr Agent Computer is not connected yet. Run vc-tools start to connect it.",
444
+ ? `This Vibecodr Agent Computer has a credential available from ${auth.credential.winning?.label ?? "stored credentials"}. Run vibecodr agent status for account and connection details.`
445
+ : "This Vibecodr Agent Computer is not connected yet. Run vibecodr start to connect it.",
446
446
  warnings,
447
447
  data: {
448
448
  apiUrl: profile.apiUrl,
@@ -517,7 +517,7 @@ async function commandAgent(context, subcommand, rest) {
517
517
  case "status":
518
518
  return commandStart(context, parseCommandOptions(rest));
519
519
  default:
520
- throw unknownSubcommandError("agent", subcommand, ["connect", "instructions", "status"], "Use vc-tools agent connect [--client codex] or vc-tools agent status.");
520
+ throw unknownSubcommandError("agent", subcommand, ["connect", "instructions", "status"], "Use vibecodr agent connect [--client codex] or vibecodr agent status.");
521
521
  }
522
522
  }
523
523
  async function commandAuth(context, subcommand, rest) {
@@ -529,7 +529,7 @@ async function commandAuth(context, subcommand, rest) {
529
529
  case "export-agent-env":
530
530
  return commandAuthExportAgentEnv(context, parseCommandOptions(rest));
531
531
  default:
532
- throw unknownSubcommandError("auth", subcommand, ["diagnose", "status", "export-agent-env"], "Use vc-tools auth diagnose or vc-tools auth export-agent-env --out <file> --yes.");
532
+ throw unknownSubcommandError("auth", subcommand, ["diagnose", "status", "export-agent-env"], "Use vibecodr auth diagnose or vibecodr auth export-agent-env --out <file> --yes.");
533
533
  }
534
534
  }
535
535
  async function commandAuthDiagnose(context) {
@@ -562,7 +562,7 @@ async function commandAuthDiagnose(context) {
562
562
  }
563
563
  const message = auth.token
564
564
  ? `Auth diagnose: credential source is ${auth.credential.winning?.label ?? "stored credentials"}.`
565
- : "Auth diagnose: no usable credential source found. Run vc-tools start.";
565
+ : "Auth diagnose: no usable credential source found. Run vibecodr start.";
566
566
  return {
567
567
  message,
568
568
  warnings,
@@ -576,8 +576,8 @@ async function commandAuthDiagnose(context) {
576
576
  authSources: auth.credential,
577
577
  verification,
578
578
  next: auth.token
579
- ? ["Use vc-tools agent status to verify the full Agent Computer connection."]
580
- : ["Run vc-tools start to connect this Agent Computer.", "If this is an isolated agent, check VC_TOOLS_CONFIG_DIR and VC_TOOLS_CREDENTIAL_FILE."]
579
+ ? ["Use vibecodr agent status to verify the full Agent Computer connection."]
580
+ : ["Run vibecodr start to connect this Agent Computer.", "If this is an isolated agent, check VC_TOOLS_CONFIG_DIR and VC_TOOLS_CREDENTIAL_FILE."]
581
581
  }
582
582
  };
583
583
  }
@@ -595,7 +595,7 @@ async function commandAuthExportAgentEnv(context, parsed) {
595
595
  ? authState.credential
596
596
  : undefined;
597
597
  if (!auth.token) {
598
- throw new CliError("auth.missing", "No vc-tools approval is available to export. Run vc-tools start first.", 3);
598
+ throw new CliError("auth.missing", "No Vibecodr approval is available to export. Run vibecodr start first.", 3);
599
599
  }
600
600
  const target = path.resolve(context.cwd, out);
601
601
  await ensureOutputPathAllowed(context.cwd, target);
@@ -612,7 +612,7 @@ async function commandAuthExportAgentEnv(context, parsed) {
612
612
  // Windows may not honor POSIX modes, but Node still requests the narrowest practical mode.
613
613
  }
614
614
  const envName = durableCredential ? "VC_TOOLS_CREDENTIAL_FILE" : "VC_TOOLS_TOKEN_FILE";
615
- const exportedKind = durableCredential ? formatCredentialMode(durableCredential.mode) : "short-lived vc-tools grant";
615
+ const exportedKind = durableCredential ? formatCredentialMode(durableCredential.mode) : "short-lived Vibecodr grant";
616
616
  return {
617
617
  message: `Wrote an agent credential file (${exportedKind}). Set ${envName}=${target} for the agent process.`,
618
618
  data: {
@@ -648,7 +648,7 @@ async function commandBrowser(context, subcommand, rest) {
648
648
  return submitHostedCapability(context, "browser.ask", normalized, "Asked the hosted Browser to capture an inspection snapshot for your agent.", { autoFollow: true });
649
649
  }
650
650
  default:
651
- throw unknownSubcommandError("browser", subcommand, ["render", "screenshot", "read", "markdown", "pdf", "crawl", "snapshot", "ask"], "Use vc-tools browser screenshot <https-url>, browser read <https-url>, or browser snapshot <https-url> --instructions <text>.");
651
+ throw unknownSubcommandError("browser", subcommand, ["render", "screenshot", "read", "markdown", "pdf", "crawl", "snapshot", "ask"], "Use vibecodr browser screenshot <https-url>, browser read <https-url>, or browser snapshot <https-url> --instructions <text>.");
652
652
  }
653
653
  }
654
654
  async function commandComputer(context, subcommand, rest) {
@@ -657,16 +657,16 @@ async function commandComputer(context, subcommand, rest) {
657
657
  case "status":
658
658
  return commandStart(context, parseCommandOptions(rest));
659
659
  case "run": {
660
- const parsed = normalizeComputerCommandOptions(parseCommandOptions(rest), "computer run requires a command, for example: vc-tools computer run \"npm test\".");
660
+ const parsed = normalizeComputerCommandOptions(parseCommandOptions(rest), "computer run requires a command, for example: vibecodr computer run \"npm test\".");
661
661
  return submitHostedCapability(context, "computer.run", parsed, "Submitted work to the hosted Agent Computer.", { autoFollow: true });
662
662
  }
663
663
  case "test":
664
664
  case "tests": {
665
- const parsed = normalizeComputerCommandOptions(parseCommandOptions(rest), "computer test requires a command, for example: vc-tools computer test \"npm test\".");
665
+ const parsed = normalizeComputerCommandOptions(parseCommandOptions(rest), "computer test requires a command, for example: vibecodr computer test \"npm test\".");
666
666
  return submitHostedCapability(context, "computer.test", parsed, "Submitted tests to the hosted Agent Computer.", { autoFollow: true });
667
667
  }
668
668
  default:
669
- throw unknownSubcommandError("computer", subcommand, ["start", "status", "run", "test"], "Use vc-tools computer start, computer status, computer run \"<command>\", or computer test \"<command>\".");
669
+ throw unknownSubcommandError("computer", subcommand, ["start", "status", "run", "test"], "Use vibecodr computer start, computer status, computer run \"<command>\", or computer test \"<command>\".");
670
670
  }
671
671
  }
672
672
  async function commandWork(context, subcommand, rest) {
@@ -681,7 +681,7 @@ async function commandWork(context, subcommand, rest) {
681
681
  case "cancel":
682
682
  return commandJobs(context, "cancel", rest);
683
683
  default:
684
- throw unknownSubcommandError("work", subcommand, ["list", "show", "status", "follow", "cancel"], "Use vc-tools work list, work show <jobId>, work follow <jobId>, or work cancel <jobId> --yes.");
684
+ throw unknownSubcommandError("work", subcommand, ["list", "show", "status", "follow", "cancel"], "Use vibecodr work list, work show <jobId>, work follow <jobId>, or work cancel <jobId> --yes.");
685
685
  }
686
686
  }
687
687
  async function commandProof(context, subcommand, rest) {
@@ -697,7 +697,7 @@ async function commandProof(context, subcommand, rest) {
697
697
  case "delete":
698
698
  return commandArtifacts(context, "delete", rest);
699
699
  default:
700
- throw unknownSubcommandError("proof", subcommand, ["list", "show", "save", "delete"], "Use vc-tools proof list, proof show <artifactId>, proof save <artifactId> --out ./artifacts, or proof delete <artifactId> --yes.");
700
+ throw unknownSubcommandError("proof", subcommand, ["list", "show", "save", "delete"], "Use vibecodr proof list, proof show <artifactId>, proof save <artifactId> --out ./artifacts, or proof delete <artifactId> --yes.");
701
701
  }
702
702
  }
703
703
  async function commandTools(context, subcommand, rest) {
@@ -706,12 +706,12 @@ async function commandTools(context, subcommand, rest) {
706
706
  const { profile } = await context.store.getProfile(context.globals.profile);
707
707
  const client = createClient(context, profile, await resolveToken(context, true));
708
708
  const tools = await client.request("GET", "tools");
709
- return { message: "Fetched granted vc-tools capabilities.", data: tools };
709
+ return { message: "Fetched granted Vibecodr capabilities.", data: tools };
710
710
  }
711
711
  case "test":
712
712
  return commandToolsTest(context, parseCommandOptions(rest));
713
713
  default:
714
- throw unknownSubcommandError("tools", subcommand, ["list", "test"], "Use vc-tools tools list or vc-tools tools test <capability>.");
714
+ throw unknownSubcommandError("tools", subcommand, ["list", "test"], "Use vibecodr tools list or vibecodr tools test <capability>.");
715
715
  }
716
716
  }
717
717
  async function commandToolsTest(context, parsed) {
@@ -733,7 +733,7 @@ async function submitHostedCapability(context, capabilityInput, parsed, successM
733
733
  return followSubmittedWork(context, client, capability, response, parsed);
734
734
  }
735
735
  return {
736
- message: successMessage ?? (capability === "usage.read" ? "Read usage and limits from hosted vc-tools." : `Submitted ${capability} test to hosted vc-tools.`),
736
+ message: successMessage ?? (capability === "usage.read" ? "Read usage and limits from hosted Vibecodr." : `Submitted ${capability} test to hosted Vibecodr.`),
737
737
  data: response
738
738
  };
739
739
  }
@@ -832,7 +832,7 @@ function formatCompletedWorkMessage(capability, work, proof) {
832
832
  }
833
833
  if (status === "queued" || status === "running") {
834
834
  const id = jobIdFromWork(work);
835
- const follow = id ? `\nFollow it: vc-tools work follow ${id}` : "";
835
+ const follow = id ? `\nFollow it: vibecodr work follow ${id}` : "";
836
836
  return `Work accepted and still ${status}.${follow}`;
837
837
  }
838
838
  const error = isRecord(work) && isRecord(work.error) && typeof work.error.message === "string"
@@ -951,7 +951,7 @@ async function commandJobs(context, subcommand, rest) {
951
951
  return { message: `Canceled job ${jobId}.`, data: job };
952
952
  }
953
953
  default:
954
- throw unknownSubcommandError("jobs", subcommand, ["list", "status", "cancel"], "Use vc-tools jobs list, jobs status <jobId>, or jobs cancel <jobId> --yes.");
954
+ throw unknownSubcommandError("jobs", subcommand, ["list", "status", "cancel"], "Use vibecodr jobs list, jobs status <jobId>, or jobs cancel <jobId> --yes.");
955
955
  }
956
956
  }
957
957
  async function commandArtifacts(context, subcommand, rest) {
@@ -984,7 +984,7 @@ async function commandArtifacts(context, subcommand, rest) {
984
984
  return { message: `Deleted artifact ${artifactId}.`, data: artifact };
985
985
  }
986
986
  default:
987
- throw unknownSubcommandError("artifacts", subcommand, ["list", "get", "pull", "create", "delete"], "Use vc-tools artifacts list, get, pull, create, or delete.");
987
+ throw unknownSubcommandError("artifacts", subcommand, ["list", "get", "pull", "create", "delete"], "Use vibecodr artifacts list, get, pull, create, or delete.");
988
988
  }
989
989
  }
990
990
  async function commandArtifactsPull(context, client, parsed) {
@@ -1085,7 +1085,7 @@ async function commandUsage(context, parsed) {
1085
1085
  async function commandGrants(context, subcommand, rest) {
1086
1086
  const selectedSubcommand = subcommand ?? "list";
1087
1087
  if (selectedSubcommand !== "list") {
1088
- throw unknownSubcommandError("grants", subcommand, ["list"], "vc-tools grants lists effective grants by default. Use vc-tools grants list [--project <id>] [--user <id>] for explicit filters.");
1088
+ throw unknownSubcommandError("grants", subcommand, ["list"], "vibecodr grants lists effective grants by default. Use vibecodr grants list [--project <id>] [--user <id>] for explicit filters.");
1089
1089
  }
1090
1090
  const parsed = parseCommandOptions(rest);
1091
1091
  const { profile } = await context.store.getProfile(context.globals.profile);
@@ -1126,7 +1126,7 @@ async function commandRetention(context, subcommand, rest) {
1126
1126
  return { message: "Updated retention policy.", data: retention };
1127
1127
  }
1128
1128
  default:
1129
- throw unknownSubcommandError("retention", subcommand, ["show", "set"], "Use vc-tools retention show or retention set.");
1129
+ throw unknownSubcommandError("retention", subcommand, ["show", "set"], "Use vibecodr retention show or retention set.");
1130
1130
  }
1131
1131
  }
1132
1132
  async function commandScheduledQa(context, subcommand, rest) {
@@ -1167,7 +1167,7 @@ async function commandScheduledQa(context, subcommand, rest) {
1167
1167
  return { message: `Deleted scheduled QA check ${id}.`, data: deleted };
1168
1168
  }
1169
1169
  default:
1170
- throw unknownSubcommandError("scheduled-qa", subcommand, ["list", "create", "pause", "resume", "delete"], "Use vc-tools scheduled-qa list, create <url>, pause <id>, resume <id>, or delete <id>.");
1170
+ throw unknownSubcommandError("scheduled-qa", subcommand, ["list", "create", "pause", "resume", "delete"], "Use vibecodr scheduled-qa list, create <url>, pause <id>, resume <id>, or delete <id>.");
1171
1171
  }
1172
1172
  }
1173
1173
  async function commandPlans(context, parsed) {
@@ -1212,7 +1212,7 @@ async function commandDoctor(context, parsed) {
1212
1212
  const checks = [
1213
1213
  { name: "node", ok: nodeMajor() >= 22 && nodeMajor() < 26, detail: process.version },
1214
1214
  { name: "config", ok: true, detail: local.dir },
1215
- { name: "approval", ok: Boolean(token), detail: token ? "saved for this OS user or provided by automation" : "missing; run vc-tools start" },
1215
+ { name: "approval", ok: Boolean(token), detail: token ? "saved for this OS user or provided by automation" : "missing; run vibecodr start" },
1216
1216
  {
1217
1217
  name: "apiUrl",
1218
1218
  ok: profile.apiUrl.startsWith("https://") || (profile.apiUrl.startsWith("http://localhost") && allowInsecureLocalApi(context)),
@@ -1230,13 +1230,13 @@ async function commandDoctor(context, parsed) {
1230
1230
  return {
1231
1231
  message: checks.every((check) => check.ok)
1232
1232
  ? "Agent Computer checks passed. Your agent can use the hosted Vibecodr computer."
1233
- : "Agent Computer needs attention. Run vc-tools start to approve access, then retry the agent.",
1233
+ : "Agent Computer needs attention. Run vibecodr start to approve access, then retry the agent.",
1234
1234
  data: {
1235
1235
  checks,
1236
1236
  ...(surface.details || surface.operator ? { config: { dir: local.dir, credentialStore: local.credentialStore } } : {}),
1237
1237
  nextActions: checks.every((check) => check.ok)
1238
- ? ["Connect the agent with vc-tools agent connect.", "Use --json when an agent needs stable machine-readable output."]
1239
- : ["Run vc-tools start.", "If this is CI or an isolated agent, use an advanced file/stdin credential source."]
1238
+ ? ["Connect the agent with vibecodr agent connect.", "Use --json when an agent needs stable machine-readable output."]
1239
+ : ["Run vibecodr start.", "If this is CI or an isolated agent, use an advanced file/stdin credential source."]
1240
1240
  },
1241
1241
  humanData: surface.details || surface.operator ? "show" : "hide"
1242
1242
  };
@@ -1266,8 +1266,8 @@ function publicStartPayload(me, health, connection, usage, loginStarted) {
1266
1266
  health: publicHealthPayload(health),
1267
1267
  usage: publicUsagePayload(usage),
1268
1268
  nextActions: [
1269
- "Connect your agent with vc-tools agent connect --client codex.",
1270
- "Run vc-tools try to prove browser, computer, and proof are working."
1269
+ "Connect your agent with vibecodr agent connect --client codex.",
1270
+ "Run vibecodr try to prove browser, computer, and proof are working."
1271
1271
  ]
1272
1272
  };
1273
1273
  }
@@ -1323,7 +1323,7 @@ function publicPlansPayload(plans) {
1323
1323
  const rows = Array.isArray(data.plans) ? data.plans.filter(isRecord) : [];
1324
1324
  return {
1325
1325
  plans: rows.map(publicPlanPayload),
1326
- note: "Plan packaging is public product information. Use vc-tools usage for your actual account capacity."
1326
+ note: "Plan packaging is public product information. Use vibecodr usage for your actual account capacity."
1327
1327
  };
1328
1328
  }
1329
1329
  function publicPlanPayload(plan) {
@@ -1393,7 +1393,7 @@ function formatUsageSummary(usage) {
1393
1393
  if (hardCap !== undefined) {
1394
1394
  lines.push("", `Spend cap: ${hardCap ? "hard" : "soft"}`);
1395
1395
  }
1396
- lines.push("Alias: vc-tools limits");
1396
+ lines.push("Alias: vibecodr limits");
1397
1397
  return lines.join("\n");
1398
1398
  }
1399
1399
  function formatWhoamiSummary(me) {
@@ -1414,10 +1414,10 @@ function formatGrantsSummary(grants) {
1414
1414
  const granted = rows.filter((row) => row.granted === true).length;
1415
1415
  const providerMode = typeof data.providerMode === "string" ? ` (${data.providerMode})` : "";
1416
1416
  if (rows.length === 0) {
1417
- return `vc-tools grants${providerMode}\nNo tool grants were returned. The full hosted response follows.`;
1417
+ return `vibecodr grants${providerMode}\nNo tool grants were returned. The full hosted response follows.`;
1418
1418
  }
1419
1419
  return [
1420
- `vc-tools grants${providerMode}`,
1420
+ `vibecodr grants${providerMode}`,
1421
1421
  `${granted}/${rows.length} tool grants are enabled for the active account/plan.`,
1422
1422
  "The full hosted grant payload follows."
1423
1423
  ].join("\n");
@@ -1429,7 +1429,7 @@ function formatPlansSummary(plans) {
1429
1429
  return [
1430
1430
  "Vibecodr Agent Computer plans",
1431
1431
  "No plan packaging was returned.",
1432
- "Run vc-tools usage for your actual account capacity."
1432
+ "Run vibecodr usage for your actual account capacity."
1433
1433
  ].join("\n");
1434
1434
  }
1435
1435
  const lines = ["Vibecodr Agent Computer plans", ""];
@@ -1437,8 +1437,8 @@ function formatPlansSummary(plans) {
1437
1437
  lines.push(...formatPlanBullets(row));
1438
1438
  lines.push("");
1439
1439
  }
1440
- lines.push("Run vc-tools usage for your actual account capacity.");
1441
- lines.push("Run vc-tools plans --details for the full entitlement schema.");
1440
+ lines.push("Run vibecodr usage for your actual account capacity.");
1441
+ lines.push("Run vibecodr plans --details for the full entitlement schema.");
1442
1442
  return lines.join("\n").replace(/\n+$/, "");
1443
1443
  }
1444
1444
  function formatPlanBullets(plan) {
@@ -1817,7 +1817,7 @@ function buildToolTestPayload(capability, target, parsed, globalToolTimeoutMs) {
1817
1817
  };
1818
1818
  }
1819
1819
  if (capability === "artifact.create") {
1820
- throw new CliError("input.use_artifacts_create", "Use vc-tools artifacts create --file <path> --yes to create artifacts.", 2);
1820
+ throw new CliError("input.use_artifacts_create", "Use vibecodr artifacts create --file <path> --yes to create artifacts.", 2);
1821
1821
  }
1822
1822
  if (capability === "job.status" || capability === "job.cancel") {
1823
1823
  return {
@@ -1908,7 +1908,7 @@ async function inspectAuthState(context) {
1908
1908
  config.defaultDir = defaultLocal.dir;
1909
1909
  config.defaultConfigExists = defaultLocal.configExists;
1910
1910
  config.defaultCredentialsExist = defaultLocal.credentialsExist;
1911
- warnings.push(`${configDirSource} is set, so this session is isolated from the normal vc-tools config directory.`);
1911
+ warnings.push(`${configDirSource} is set, so this session is isolated from the normal Vibecodr config directory.`);
1912
1912
  }
1913
1913
  let storedAuth = { version: 2 };
1914
1914
  let storedStatus = "missing";
@@ -1958,7 +1958,7 @@ async function inspectAuthState(context) {
1958
1958
  source: local.credentialStore === "native" ? "native" : "stored",
1959
1959
  label: storedAuth.credential
1960
1960
  ? `stored ${formatCredentialMode(storedAuth.credential.mode)}`
1961
- : "cached vc-tools grant",
1961
+ : "cached Vibecodr grant",
1962
1962
  kind: "stored"
1963
1963
  };
1964
1964
  }
@@ -2040,7 +2040,7 @@ async function resolveToken(context, required, options = {}) {
2040
2040
  }
2041
2041
  }
2042
2042
  if (required) {
2043
- throw new CliError("auth.missing", "Run vc-tools start, pass a credential with --credential-file or --credential-stdin, or set VC_TOOLS_CREDENTIAL_FILE for an isolated agent.", 3);
2043
+ throw new CliError("auth.missing", "Run vibecodr start, pass a credential with --credential-file or --credential-stdin, or set VC_TOOLS_CREDENTIAL_FILE for an isolated agent.", 3);
2044
2044
  }
2045
2045
  return undefined;
2046
2046
  }
@@ -2077,11 +2077,11 @@ function isRecoverableStoredAuthError(error) {
2077
2077
  async function clearRecoverableStoredAuthState(context, warnings) {
2078
2078
  try {
2079
2079
  await context.store.clearToken(context.globals.profile);
2080
- warnings?.push("Removed an unreadable stored vc-tools approval. Run vc-tools start to connect this Agent Computer.");
2080
+ warnings?.push("Removed an unreadable stored Vibecodr approval. Run vibecodr start to connect this Agent Computer.");
2081
2081
  }
2082
2082
  catch (error) {
2083
2083
  const cliError = toCliError(error);
2084
- warnings?.push(`Could not remove an unreadable stored vc-tools approval: ${cliError.message}`);
2084
+ warnings?.push(`Could not remove an unreadable stored Vibecodr approval: ${cliError.message}`);
2085
2085
  }
2086
2086
  }
2087
2087
  function isGrantFresh(grant, nowSeconds = Math.floor(Date.now() / 1000)) {
@@ -2094,7 +2094,7 @@ function formatCredentialMode(mode) {
2094
2094
  if (mode === "oauth") {
2095
2095
  return "OAuth token";
2096
2096
  }
2097
- return "vc-tools grant";
2097
+ return "Vibecodr grant";
2098
2098
  }
2099
2099
  function storedCredentialSourceToCredentialSource(source) {
2100
2100
  return source === "env" || source === "stdin" || source === "file" || source === "flag" ? source : "file";
@@ -2153,7 +2153,7 @@ async function completeBrowserDeviceLogin(context, parsed) {
2153
2153
  const openedBrowser = await maybeOpenBrowser(context, parsed, verificationUri);
2154
2154
  if (!context.globals.json && !context.globals.quiet) {
2155
2155
  context.stderr.write([
2156
- `Open this URL to approve vc-tools login: ${verificationUri}`,
2156
+ `Open this URL to approve Vibecodr login: ${verificationUri}`,
2157
2157
  `Code: ${start.user_code}`,
2158
2158
  "Only approve the browser page if the code shown there matches this terminal.",
2159
2159
  openedBrowser ? "A browser window was opened for you." : "The browser was not opened automatically; paste the URL above.",
@@ -2190,7 +2190,7 @@ async function startBrowserDeviceLogin(authClient) {
2190
2190
  }
2191
2191
  });
2192
2192
  if (!isDeviceStartResponse(response)) {
2193
- throw new CliError("auth.invalid_device_response", "Vibecodr Auth API returned an invalid vc-tools browser-login response.", 6);
2193
+ throw new CliError("auth.invalid_device_response", "Vibecodr Auth API returned an invalid browser-login response.", 6);
2194
2194
  }
2195
2195
  return response;
2196
2196
  }
@@ -2211,7 +2211,7 @@ async function pollBrowserDeviceLogin(context, authClient, start) {
2211
2211
  intervalMs = clampPollIntervalMs(parsed.interval ?? intervalMs / 1000);
2212
2212
  await sleep(Math.min(intervalMs, Math.max(0, deadlineMs - Date.now())));
2213
2213
  }
2214
- throw new CliError("auth.device_login_expired", "vc-tools browser login expired before approval. Run vc-tools login again.", 3);
2214
+ throw new CliError("auth.device_login_expired", "Vibecodr browser login expired before approval. Run vibecodr login again.", 3);
2215
2215
  }
2216
2216
  function parseDevicePollResponse(value) {
2217
2217
  if (isCliGrantExchangeResponse(value)) {
@@ -2225,7 +2225,7 @@ function parseDevicePollResponse(value) {
2225
2225
  message: typeof value.message === "string" ? value.message : undefined
2226
2226
  };
2227
2227
  }
2228
- throw new CliError("auth.invalid_device_response", "Vibecodr Auth API returned an invalid vc-tools browser-login polling response.", 6);
2228
+ throw new CliError("auth.invalid_device_response", "Vibecodr Auth API returned an invalid browser-login polling response.", 6);
2229
2229
  }
2230
2230
  function clampPollIntervalMs(intervalSeconds) {
2231
2231
  if (!Number.isFinite(intervalSeconds)) {
@@ -2345,7 +2345,7 @@ async function resolveLoginCredential(context, parsed, includeCommandFlags) {
2345
2345
  rejectCredentialTypeFlags(parsed);
2346
2346
  const descriptors = credentialDescriptors(context, parsed, includeCommandFlags);
2347
2347
  if (descriptors.length > 1) {
2348
- throw new CliError("auth.ambiguous_credentials", `Provide only one vc-tools credential source. Received: ${descriptors.map((descriptor) => descriptor.label).join(", ")}.`, 3);
2348
+ throw new CliError("auth.ambiguous_credentials", `Provide only one Vibecodr credential source. Received: ${descriptors.map((descriptor) => descriptor.label).join(", ")}.`, 3);
2349
2349
  }
2350
2350
  const descriptor = descriptors[0];
2351
2351
  if (descriptor === undefined) {
@@ -2368,7 +2368,7 @@ function rejectCredentialTypeFlags(parsed) {
2368
2368
  "oauthTokenStdin"
2369
2369
  ].filter((flag) => Object.prototype.hasOwnProperty.call(parsed.flags, flag));
2370
2370
  if (removedFlags.length > 0) {
2371
- throw new CliError("input.unsupported_credential_flag", "Use --credential, --credential-file, or --credential-stdin. vc-tools now infers whether the credential is a grant, Clerk API key, or Clerk OAuth token.", 2);
2371
+ throw new CliError("input.unsupported_credential_flag", "Use --credential, --credential-file, or --credential-stdin. vibecodr now infers whether the credential is a grant, Clerk API key, or Clerk OAuth token.", 2);
2372
2372
  }
2373
2373
  }
2374
2374
  function credentialDescriptors(context, parsed, includeCommandFlags) {
@@ -2419,7 +2419,7 @@ function inferCredentialMode(value) {
2419
2419
  if (value.startsWith("oat_") || value.startsWith("oauth_")) {
2420
2420
  return "oauth";
2421
2421
  }
2422
- throw new CliError("auth.credential_type_unknown", "Could not identify the credential type. Use a vc-tools grant token, a Clerk API key starting with ak_, or a Clerk OAuth token starting with oat_.", 2);
2422
+ throw new CliError("auth.credential_type_unknown", "Could not identify the credential type. Use a Vibecodr grant token, a Clerk API key starting with ak_, or a Clerk OAuth token starting with oat_.", 2);
2423
2423
  }
2424
2424
  async function readCredentialDescriptor(context, descriptor) {
2425
2425
  if (descriptor.value !== undefined) {
@@ -2542,64 +2542,64 @@ function helpResult(args = []) {
2542
2542
  };
2543
2543
  }
2544
2544
  function helpText() {
2545
- return `vc-tools ${VERSION}
2546
-
2547
- The hosted Vibecodr computer for agents.
2548
-
2549
- Examples:
2550
- vc-tools start
2551
- vc-tools try
2552
- vc-tools agent connect --client codex
2553
- vc-tools computer status
2554
- vc-tools browser screenshot https://example.com --format png --out ./proof
2555
- vc-tools browser read https://example.com
2556
- vc-tools computer run "npm test" --out ./proof
2557
- vc-tools work follow job_123
2558
- vc-tools proof save art_123 --out ./artifacts
2559
-
2560
- Usage:
2561
- vc-tools <command> [options]
2562
- vc-tools help <command>
2563
-
2564
- Commands:
2565
- start Connect and verify the Agent Computer, then return agent connection details.
2566
- setup Alias for start.
2567
- try Run a small browser, computer, proof, and usage check.
2568
- agent Connect an agent to the hosted computer or check readiness.
2569
- computer Start/status/run commands on the hosted Agent Computer.
2570
- browser Ask the hosted Browser to render, read, screenshot, crawl, or inspect public HTTPS pages.
2571
- work List, follow, show, or cancel hosted work.
2572
- proof List, show, save, or delete saved outputs and artifacts.
2573
- usage Show account-scoped Agent Computer capacity and quota progress.
2574
- limits Alias for usage.
2575
- dashboard Print the hosted supervision dashboard URL.
2576
- doctor Explain whether the Agent Computer is ready and what to do next.
2577
-
2578
- Advanced/debug commands:
2579
- auth, login, logout, status, whoami, connect, tools, jobs, artifacts, grants, retention, scheduled-qa, plans, inspect
2580
-
2581
- Global flags:
2582
- --json Stable machine-readable output.
2583
- -q, --quiet Suppress non-essential human success output.
2584
- -h, --help Show help. Works after subcommands too.
2585
- --version Show version.
2586
- --api-url <url> Hosted Tools API URL. HTTPS unless local dev is explicitly allowed.
2587
- --allow-insecure-local-api Allow http://localhost API URLs for local development.
2588
- --timeout-ms <ms> Network timeout from 1000 to 300000.
2589
- --no-input Disable browser/device login for automation.
2590
- --no-color Accepted for CLI convention compatibility. vc-tools emits no color by default.
2591
-
2592
- Advanced credential/config flags:
2593
- --credential-file <path> Read a vc-tools grant, Clerk API key, or Clerk OAuth token from a file.
2594
- --credential-stdin Read a vc-tools grant, Clerk API key, or Clerk OAuth token from stdin.
2595
- --config-dir <dir> Isolated config directory override for tests/automation.
2596
-
2597
- Docs:
2598
- https://vibecodr.space/docs/vc-tools
2599
- Overview:
2600
- https://vibecodr.space/vc-tools
2601
- Support:
2602
- https://vibecodr.space/support
2545
+ return `vibecodr ${VERSION}
2546
+
2547
+ The hosted Vibecodr Agent Computer for agents.
2548
+
2549
+ Examples:
2550
+ vibecodr start
2551
+ vibecodr try
2552
+ vibecodr agent connect --client codex
2553
+ vibecodr computer status
2554
+ vibecodr browser screenshot https://example.com --format png --out ./proof
2555
+ vibecodr browser read https://example.com
2556
+ vibecodr computer run "npm test" --out ./proof
2557
+ vibecodr work follow job_123
2558
+ vibecodr proof save art_123 --out ./artifacts
2559
+
2560
+ Usage:
2561
+ vibecodr <command> [options]
2562
+ vibecodr help <command>
2563
+
2564
+ Commands:
2565
+ start Connect and verify the Agent Computer, then return agent connection details.
2566
+ setup Alias for start.
2567
+ try Run a small browser, computer, proof, and usage check.
2568
+ agent Connect an agent to the hosted computer or check readiness.
2569
+ computer Start/status/run commands on the hosted Agent Computer.
2570
+ browser Ask the hosted Browser to render, read, screenshot, crawl, or inspect public HTTPS pages.
2571
+ work List, follow, show, or cancel hosted work.
2572
+ proof List, show, save, or delete saved outputs and artifacts.
2573
+ usage Show account-scoped Agent Computer capacity and quota progress.
2574
+ limits Alias for usage.
2575
+ dashboard Print the hosted supervision dashboard URL.
2576
+ doctor Explain whether the Agent Computer is ready and what to do next.
2577
+
2578
+ Advanced/debug commands:
2579
+ auth, login, logout, status, whoami, connect, tools, jobs, artifacts, grants, retention, scheduled-qa, plans, inspect
2580
+
2581
+ Global flags:
2582
+ --json Stable machine-readable output.
2583
+ -q, --quiet Suppress non-essential human success output.
2584
+ -h, --help Show help. Works after subcommands too.
2585
+ --version Show version.
2586
+ --api-url <url> Hosted Vibecodr API URL. HTTPS unless local dev is explicitly allowed.
2587
+ --allow-insecure-local-api Allow http://localhost API URLs for local development.
2588
+ --timeout-ms <ms> Network timeout from 1000 to 300000.
2589
+ --no-input Disable browser/device login for automation.
2590
+ --no-color Accepted for CLI convention compatibility. vibecodr emits no color by default.
2591
+
2592
+ Advanced credential/config flags:
2593
+ --credential-file <path> Read a Vibecodr grant, Clerk API key, or Clerk OAuth token from a file.
2594
+ --credential-stdin Read a Vibecodr grant, Clerk API key, or Clerk OAuth token from stdin.
2595
+ --config-dir <dir> Isolated config directory override for tests/automation.
2596
+
2597
+ Docs:
2598
+ https://vibecodr.space/docs/vc-tools
2599
+ Overview:
2600
+ https://vibecodr.space/vc-tools
2601
+ Support:
2602
+ https://vibecodr.space/support
2603
2603
  `;
2604
2604
  }
2605
2605
  function commandHelpText(args) {
@@ -2610,287 +2610,287 @@ function commandHelpText(args) {
2610
2610
  switch (command) {
2611
2611
  case "start":
2612
2612
  case "setup":
2613
- return `vc-tools start
2614
-
2615
- Connect and verify the hosted Vibecodr Agent Computer, then return the connection details an agent needs.
2616
-
2617
- Examples:
2618
- vc-tools start
2619
- vc-tools start --client codex
2620
-
2621
- Usage:
2622
- vc-tools start [--client generic]
2623
- vc-tools setup [--client generic]
2613
+ return `vibecodr start
2614
+
2615
+ Connect and verify the hosted Vibecodr Agent Computer, then return the connection details an agent needs.
2616
+
2617
+ Examples:
2618
+ vibecodr start
2619
+ vibecodr start --client codex
2620
+
2621
+ Usage:
2622
+ vibecodr start [--client generic]
2623
+ vibecodr setup [--client generic]
2624
2624
  `;
2625
2625
  case "agent":
2626
- return `vc-tools agent
2627
-
2628
- Connect an agent to the hosted Vibecodr computer or check whether the computer is ready.
2629
-
2630
- Usage:
2631
- vc-tools agent connect [--client generic]
2632
- vc-tools agent instructions [--client generic]
2633
- vc-tools agent status
2626
+ return `vibecodr agent
2627
+
2628
+ Connect an agent to the hosted Vibecodr Agent Computer or check whether the computer is ready.
2629
+
2630
+ Usage:
2631
+ vibecodr agent connect [--client generic]
2632
+ vibecodr agent instructions [--client generic]
2633
+ vibecodr agent status
2634
2634
  `;
2635
2635
  case "try":
2636
- return `vc-tools try
2637
-
2638
- Run a small end-to-end Agent Computer check: auth, hosted API, public Browser read, hosted computer run, proof saving, and usage.
2639
-
2640
- Usage:
2641
- vc-tools try [--out ./vc-tools-proof] [--details]
2636
+ return `vibecodr try
2637
+
2638
+ Run a small end-to-end Agent Computer check: auth, hosted API, public Browser read, hosted computer run, proof saving, and usage.
2639
+
2640
+ Usage:
2641
+ vibecodr try [--out ./vibecodr-proof] [--details]
2642
2642
  `;
2643
2643
  case "computer":
2644
- return `vc-tools computer
2645
-
2646
- Use the hosted Agent Computer. Commands are submitted to Vibecodr Tools Cloud; nothing is executed locally.
2647
- Public HTTP(S) package/docs access is available by default; private, local, and internal destinations are blocked by hosted policy.
2648
-
2649
- Usage:
2650
- vc-tools computer start
2651
- vc-tools computer status
2652
- vc-tools computer run "<command>" [--timeout-ms <ms>] [--network public|off] [--out ./proof] [--no-wait] [--details]
2653
- vc-tools computer test "<command>" [--timeout-ms <ms>] [--network public|off] [--out ./proof] [--no-wait] [--details]
2644
+ return `vibecodr computer
2645
+
2646
+ Use the hosted Vibecodr Agent Computer. Commands are submitted to Vibecodr; nothing is executed locally.
2647
+ Public HTTP(S) package/docs access is available by default; private, local, and internal destinations are blocked by hosted policy.
2648
+
2649
+ Usage:
2650
+ vibecodr computer start
2651
+ vibecodr computer status
2652
+ vibecodr computer run "<command>" [--timeout-ms <ms>] [--network public|off] [--out ./proof] [--no-wait] [--details]
2653
+ vibecodr computer test "<command>" [--timeout-ms <ms>] [--network public|off] [--out ./proof] [--no-wait] [--details]
2654
2654
  `;
2655
2655
  case "browser":
2656
- return `vc-tools browser
2657
-
2658
- Use the hosted Browser against public HTTPS pages. Localhost, private networks, URL credentials, and internal hosts are blocked before hosted work is submitted.
2659
-
2660
- Usage:
2661
- vc-tools browser screenshot <https-url> [--format png] [--out ./proof] [--no-wait] [--details]
2662
- vc-tools browser read <https-url> [--out ./proof] [--no-wait] [--details]
2663
- vc-tools browser render <https-url> [--out ./proof] [--no-wait] [--details]
2664
- vc-tools browser pdf <https-url> [--out ./proof] [--no-wait] [--details]
2665
- vc-tools browser crawl <https-url> [--max-pages n] [--max-depth n]
2666
- vc-tools browser snapshot <https-url> [--instructions <text>]
2667
- vc-tools browser ask <https-url> --instructions <text>
2668
-
2669
- Notes:
2670
- browser snapshot captures a bounded inspection snapshot for your agent to analyze. browser ask is a compatibility alias; it is not a separate chat answerer.
2656
+ return `vibecodr browser
2657
+
2658
+ Use the hosted Browser against public HTTPS pages. Localhost, private networks, URL credentials, and internal hosts are blocked before hosted work is submitted.
2659
+
2660
+ Usage:
2661
+ vibecodr browser screenshot <https-url> [--format png] [--out ./proof] [--no-wait] [--details]
2662
+ vibecodr browser read <https-url> [--out ./proof] [--no-wait] [--details]
2663
+ vibecodr browser render <https-url> [--out ./proof] [--no-wait] [--details]
2664
+ vibecodr browser pdf <https-url> [--out ./proof] [--no-wait] [--details]
2665
+ vibecodr browser crawl <https-url> [--max-pages n] [--max-depth n]
2666
+ vibecodr browser snapshot <https-url> [--instructions <text>]
2667
+ vibecodr browser ask <https-url> --instructions <text>
2668
+
2669
+ Notes:
2670
+ browser snapshot captures a bounded inspection snapshot for your agent to analyze. browser ask is a compatibility alias; it is not a separate chat answerer.
2671
2671
  `;
2672
2672
  case "work":
2673
- return `vc-tools work
2674
-
2675
- Inspect hosted work the agent has submitted.
2676
-
2677
- Usage:
2678
- vc-tools work list [--limit 20]
2679
- vc-tools work show <jobId>
2680
- vc-tools work follow <jobId> [--out ./proof] [--details]
2681
- vc-tools work cancel <jobId> --yes
2673
+ return `vibecodr work
2674
+
2675
+ Inspect hosted work the agent has submitted.
2676
+
2677
+ Usage:
2678
+ vibecodr work list [--limit 20]
2679
+ vibecodr work show <jobId>
2680
+ vibecodr work follow <jobId> [--out ./proof] [--details]
2681
+ vibecodr work cancel <jobId> --yes
2682
2682
  `;
2683
2683
  case "proof":
2684
- return `vc-tools proof
2685
-
2686
- List, inspect, save, or delete outputs saved by hosted work.
2687
-
2688
- Usage:
2689
- vc-tools proof list [--limit 20]
2690
- vc-tools proof show <artifactId>
2691
- vc-tools proof save <artifactId> [--out <dir|file>] [--filename <name>] [--overwrite]
2692
- vc-tools proof delete <artifactId> --yes
2684
+ return `vibecodr proof
2685
+
2686
+ List, inspect, save, or delete outputs saved by hosted work.
2687
+
2688
+ Usage:
2689
+ vibecodr proof list [--limit 20]
2690
+ vibecodr proof show <artifactId>
2691
+ vibecodr proof save <artifactId> [--out <dir|file>] [--filename <name>] [--overwrite]
2692
+ vibecodr proof delete <artifactId> --yes
2693
2693
  `;
2694
2694
  case "login":
2695
- return `vc-tools login
2696
-
2697
- Approve this machine to use Vibecodr Tools Cloud. Plain login opens the browser/device approval flow.
2698
-
2699
- Examples:
2700
- vc-tools login
2701
- vc-tools login --credential-file ./vc-tools-credential.txt
2702
- vc-tools login --credential-stdin
2703
-
2704
- Usage:
2705
- vc-tools login [--no-browser]
2706
- vc-tools login (--credential-file <path> | --credential-stdin)
2707
-
2708
- Options:
2709
- --no-browser Print the approval URL and code without opening a browser.
2710
- --skip-verify Save without calling /v1/me.
2711
- --auth-api-url <url> Override the Vibecodr Auth API exchange URL.
2712
- --api-url <url> Hosted Tools API URL saved for this approval.
2695
+ return `vibecodr login
2696
+
2697
+ Approve this machine to use Vibecodr. Plain login opens the browser/device approval flow.
2698
+
2699
+ Examples:
2700
+ vibecodr login
2701
+ vibecodr login --credential-file ./vibecodr-credential.txt
2702
+ vibecodr login --credential-stdin
2703
+
2704
+ Usage:
2705
+ vibecodr login [--no-browser]
2706
+ vibecodr login (--credential-file <path> | --credential-stdin)
2707
+
2708
+ Options:
2709
+ --no-browser Print the approval URL and code without opening a browser.
2710
+ --skip-verify Save without calling /v1/me.
2711
+ --auth-api-url <url> Override the Vibecodr Auth API exchange URL.
2712
+ --api-url <url> Hosted Vibecodr API URL saved for this approval.
2713
2713
  `;
2714
2714
  case "auth":
2715
- return `vc-tools auth
2716
-
2717
- Diagnose or export the current Agent Computer approval without printing secrets.
2718
-
2719
- Usage:
2720
- vc-tools auth diagnose [--json]
2721
- vc-tools auth status [--json]
2722
- vc-tools auth export-agent-env --out <file> --yes [--overwrite]
2723
-
2724
- Notes:
2725
- diagnose shows which credential source is winning, whether VC_TOOLS_CONFIG_DIR isolates this session, and whether the stored credential store is readable.
2726
- export-agent-env writes the durable local credential when available, otherwise a bearer grant, and returns the matching file env var. The secret value is never printed.
2715
+ return `vibecodr auth
2716
+
2717
+ Diagnose or export the current Agent Computer approval without printing secrets.
2718
+
2719
+ Usage:
2720
+ vibecodr auth diagnose [--json]
2721
+ vibecodr auth status [--json]
2722
+ vibecodr auth export-agent-env --out <file> --yes [--overwrite]
2723
+
2724
+ Notes:
2725
+ diagnose shows which credential source is winning, whether VC_TOOLS_CONFIG_DIR isolates this session, and whether the stored credential store is readable.
2726
+ export-agent-env writes the durable local credential when available, otherwise a bearer grant, and returns the matching file env var. The secret value is never printed.
2727
2727
  `;
2728
2728
  case "logout":
2729
- return `vc-tools logout
2730
-
2731
- Remove the saved Agent Computer approval.
2732
-
2733
- Usage:
2734
- vc-tools logout --yes
2729
+ return `vibecodr logout
2730
+
2731
+ Remove the saved Agent Computer approval.
2732
+
2733
+ Usage:
2734
+ vibecodr logout --yes
2735
2735
  `;
2736
2736
  case "status":
2737
- return `vc-tools status
2738
-
2739
- Show whether this shell/agent has an Agent Computer approval saved, without requiring auth.
2740
-
2741
- Usage:
2742
- vc-tools status [--json]
2737
+ return `vibecodr status
2738
+
2739
+ Show whether this shell/agent has an Agent Computer approval saved, without requiring auth.
2740
+
2741
+ Usage:
2742
+ vibecodr status [--json]
2743
2743
  `;
2744
2744
  case "whoami":
2745
- return `vc-tools whoami
2746
-
2747
- Show the Vibecodr account and plan for the approved Agent Computer.
2748
-
2749
- Usage:
2750
- vc-tools whoami [--json]
2745
+ return `vibecodr whoami
2746
+
2747
+ Show the Vibecodr account and plan for the approved Agent Computer.
2748
+
2749
+ Usage:
2750
+ vibecodr whoami [--json]
2751
2751
  `;
2752
2752
  case "connect":
2753
- return `vc-tools connect
2754
-
2755
- Fetch hosted MCP connection metadata for an agent client. Most users should use vc-tools agent connect.
2756
-
2757
- Usage:
2758
- vc-tools connect [--client generic]
2753
+ return `vibecodr connect
2754
+
2755
+ Fetch hosted MCP connection metadata for an agent client. Most users should use vibecodr agent connect.
2756
+
2757
+ Usage:
2758
+ vibecodr connect [--client generic]
2759
2759
  `;
2760
2760
  case "tools":
2761
2761
  if (subcommand === "test") {
2762
- return `vc-tools tools test
2763
-
2764
- Submit a no-local-execution hosted tool test after validating local inputs.
2765
-
2766
- Examples:
2767
- vc-tools tools test browser.render https://example.com
2768
- vc-tools tools test browser.agent https://example.com --timeout-ms 1200000 --idle-timeout-ms 600000
2769
- vc-tools tools test browser.crawl https://example.com/docs --max-pages 10 --max-depth 1
2770
- vc-tools tools test sandbox.run --command "npm test"
2771
- vc-tools tools test usage
2772
-
2773
- Usage:
2774
- vc-tools tools test <capability> [target] [--command <cmd>] [--timeout-ms <ms>] [--max-pages n] [--max-depth n] [--no-render]
2775
-
2776
- Notes:
2777
- Browser Quick Actions accept up to 180000 ms. Browser agent tasks accept up to 3600000 ms and are plan-capped by the hosted service. Sandbox tasks accept up to 1800000 ms and are plan-capped by the hosted service.
2762
+ return `vibecodr tools test
2763
+
2764
+ Submit a no-local-execution hosted tool test after validating local inputs.
2765
+
2766
+ Examples:
2767
+ vibecodr tools test browser.render https://example.com
2768
+ vibecodr tools test browser.agent https://example.com --timeout-ms 1200000 --idle-timeout-ms 600000
2769
+ vibecodr tools test browser.crawl https://example.com/docs --max-pages 10 --max-depth 1
2770
+ vibecodr tools test sandbox.run --command "npm test"
2771
+ vibecodr tools test usage
2772
+
2773
+ Usage:
2774
+ vibecodr tools test <capability> [target] [--command <cmd>] [--timeout-ms <ms>] [--max-pages n] [--max-depth n] [--no-render]
2775
+
2776
+ Notes:
2777
+ Browser Quick Actions accept up to 180000 ms. Browser agent tasks accept up to 3600000 ms and are plan-capped by the hosted service. Sandbox tasks accept up to 1800000 ms and are plan-capped by the hosted service.
2778
2778
  `;
2779
2779
  }
2780
- return `vc-tools tools
2781
-
2782
- Advanced: list granted low-level capabilities or submit a hosted capability test.
2783
-
2784
- Usage:
2785
- vc-tools tools list
2786
- vc-tools tools test <capability> [target] [--command <cmd>]
2780
+ return `vibecodr tools
2781
+
2782
+ Advanced: list granted low-level capabilities or submit a hosted capability test.
2783
+
2784
+ Usage:
2785
+ vibecodr tools list
2786
+ vibecodr tools test <capability> [target] [--command <cmd>]
2787
2787
  `;
2788
2788
  case "jobs":
2789
- return `vc-tools jobs
2790
-
2791
- Advanced alias for vc-tools work.
2792
-
2793
- Usage:
2794
- vc-tools jobs list [--limit 20]
2795
- vc-tools jobs status <jobId>
2796
- vc-tools jobs cancel <jobId> --yes
2789
+ return `vibecodr jobs
2790
+
2791
+ Advanced alias for vibecodr work.
2792
+
2793
+ Usage:
2794
+ vibecodr jobs list [--limit 20]
2795
+ vibecodr jobs status <jobId>
2796
+ vibecodr jobs cancel <jobId> --yes
2797
2797
  `;
2798
2798
  case "artifacts":
2799
- return `vc-tools artifacts
2800
-
2801
- Advanced alias for vc-tools proof. Pulls and uploads are bounded to the current workspace.
2802
-
2803
- Usage:
2804
- vc-tools artifacts list [--limit 20]
2805
- vc-tools artifacts get <artifactId>
2806
- vc-tools artifacts pull <artifactId> [--out <dir|file>] [--filename <name>] [--overwrite]
2807
- vc-tools artifacts create --file <path> [--kind <kind>] --yes
2808
- vc-tools artifacts delete <artifactId> --yes
2809
-
2810
- Notes:
2811
- Delete removes the hosted shelf row and R2 bytes for the authenticated actor.
2812
- Pull output must stay inside the current workspace. Use --out ./artifacts for a directory, --out ./artifacts/report.pdf for an explicit file target, or --filename <name> to choose a file name inside a directory output.
2799
+ return `vibecodr artifacts
2800
+
2801
+ Advanced alias for vibecodr proof. Pulls and uploads are bounded to the current workspace.
2802
+
2803
+ Usage:
2804
+ vibecodr artifacts list [--limit 20]
2805
+ vibecodr artifacts get <artifactId>
2806
+ vibecodr artifacts pull <artifactId> [--out <dir|file>] [--filename <name>] [--overwrite]
2807
+ vibecodr artifacts create --file <path> [--kind <kind>] --yes
2808
+ vibecodr artifacts delete <artifactId> --yes
2809
+
2810
+ Notes:
2811
+ Delete removes the hosted shelf row and R2 bytes for the authenticated actor.
2812
+ Pull output must stay inside the current workspace. Use --out ./artifacts for a directory, --out ./artifacts/report.pdf for an explicit file target, or --filename <name> to choose a file name inside a directory output.
2813
2813
  `;
2814
2814
  case "usage":
2815
- return `vc-tools usage
2816
-
2817
- Show account-scoped Agent Computer capacity and quota progress.
2818
-
2819
- Usage:
2820
- vc-tools usage [--json]
2821
-
2822
- Alias:
2823
- vc-tools limits
2815
+ return `vibecodr usage
2816
+
2817
+ Show account-scoped Agent Computer capacity and quota progress.
2818
+
2819
+ Usage:
2820
+ vibecodr usage [--json]
2821
+
2822
+ Alias:
2823
+ vibecodr limits
2824
2824
  `;
2825
2825
  case "limits":
2826
- return `vc-tools limits
2827
-
2828
- Alias for vc-tools usage. Shows account-scoped Agent Computer capacity and quota progress.
2829
-
2830
- Usage:
2831
- vc-tools limits [--json]
2826
+ return `vibecodr limits
2827
+
2828
+ Alias for vibecodr usage. Shows account-scoped Agent Computer capacity and quota progress.
2829
+
2830
+ Usage:
2831
+ vibecodr limits [--json]
2832
2832
  `;
2833
2833
  case "grants":
2834
- return `vc-tools grants
2835
-
2836
- Show effective tool grants. With no subcommand, this defaults to list.
2837
-
2838
- Usage:
2839
- vc-tools grants
2840
- vc-tools grants list [--project <id>] [--user <id>]
2834
+ return `vibecodr grants
2835
+
2836
+ Show effective tool grants. With no subcommand, this defaults to list.
2837
+
2838
+ Usage:
2839
+ vibecodr grants
2840
+ vibecodr grants list [--project <id>] [--user <id>]
2841
2841
  `;
2842
2842
  case "retention":
2843
- return `vc-tools retention
2844
-
2845
- Show or update retention policy. Updates mutate hosted policy and require --yes.
2846
-
2847
- Usage:
2848
- vc-tools retention show
2849
- vc-tools retention set [--logs-days n] [--artifacts-days n] [--recordings off|opt-in|admin] --yes
2843
+ return `vibecodr retention
2844
+
2845
+ Show or update retention policy. Updates mutate hosted policy and require --yes.
2846
+
2847
+ Usage:
2848
+ vibecodr retention show
2849
+ vibecodr retention set [--logs-days n] [--artifacts-days n] [--recordings off|opt-in|admin] --yes
2850
2850
  `;
2851
2851
  case "scheduled-qa":
2852
- return `vc-tools scheduled-qa
2853
-
2854
- Create and manage plan-capped scheduled Browser Quick Action checks. Scheduled QA only accepts public HTTPS browser render, screenshot, markdown, and PDF checks.
2855
-
2856
- Usage:
2857
- vc-tools scheduled-qa list
2858
- vc-tools scheduled-qa create <https-url> [--capability browser.render|browser.screenshot|browser.markdown|browser.pdf] [--interval-minutes n] [--label text] [--run-now] --yes
2859
- vc-tools scheduled-qa pause <id> --yes
2860
- vc-tools scheduled-qa resume <id> [--run-now] --yes
2861
- vc-tools scheduled-qa delete <id> --yes
2852
+ return `vibecodr scheduled-qa
2853
+
2854
+ Create and manage plan-capped scheduled Browser Quick Action checks. Scheduled QA only accepts public HTTPS browser render, screenshot, markdown, and PDF checks.
2855
+
2856
+ Usage:
2857
+ vibecodr scheduled-qa list
2858
+ vibecodr scheduled-qa create <https-url> [--capability browser.render|browser.screenshot|browser.markdown|browser.pdf] [--interval-minutes n] [--label text] [--run-now] --yes
2859
+ vibecodr scheduled-qa pause <id> --yes
2860
+ vibecodr scheduled-qa resume <id> [--run-now] --yes
2861
+ vibecodr scheduled-qa delete <id> --yes
2862
2862
  `;
2863
2863
  case "plans":
2864
- return `vc-tools plans
2865
-
2866
- Show public Free, Creator, and Pro packaging. Works offline with local fallback data.
2867
-
2868
- Usage:
2869
- vc-tools plans [--json]
2864
+ return `vibecodr plans
2865
+
2866
+ Show public Free, Creator, and Pro packaging. Works offline with local fallback data.
2867
+
2868
+ Usage:
2869
+ vibecodr plans [--json]
2870
2870
  `;
2871
2871
  case "dashboard":
2872
- return `vc-tools dashboard
2873
-
2874
- Print a hosted supervision dashboard URL. Sections: ${DASHBOARD_SECTIONS.map((item) => item.id).join(", ")}.
2875
-
2876
- Usage:
2877
- vc-tools dashboard [section]
2872
+ return `vibecodr dashboard
2873
+
2874
+ Print a hosted supervision dashboard URL. Sections: ${DASHBOARD_SECTIONS.map((item) => item.id).join(", ")}.
2875
+
2876
+ Usage:
2877
+ vibecodr dashboard [section]
2878
2878
  `;
2879
2879
  case "inspect":
2880
- return `vc-tools inspect
2881
-
2882
- Show goal-coverage inspections for local release readiness.
2883
-
2884
- Usage:
2885
- vc-tools inspect [--json]
2880
+ return `vibecodr inspect
2881
+
2882
+ Show goal-coverage inspections for local release readiness.
2883
+
2884
+ Usage:
2885
+ vibecodr inspect [--json]
2886
2886
  `;
2887
2887
  case "doctor":
2888
- return `vc-tools doctor
2889
-
2890
- Explain whether the Agent Computer is ready and what to do next.
2891
-
2892
- Usage:
2893
- vc-tools doctor [--json]
2888
+ return `vibecodr doctor
2889
+
2890
+ Explain whether the Agent Computer is ready and what to do next.
2891
+
2892
+ Usage:
2893
+ vibecodr doctor [--json]
2894
2894
  `;
2895
2895
  default:
2896
2896
  throw unknownCommandError(command);
@@ -2899,8 +2899,8 @@ Usage:
2899
2899
  function helpData(topic) {
2900
2900
  return {
2901
2901
  version: VERSION,
2902
- binary: "vc-tools",
2903
- package: "@vibecodr/vc-tools",
2902
+ binary: "vibecodr",
2903
+ package: "@vibecodr/cli",
2904
2904
  topic,
2905
2905
  capabilities: CAPABILITIES,
2906
2906
  grants: LAUNCH_TOOL_GRANTS,
@@ -2913,12 +2913,12 @@ function helpData(topic) {
2913
2913
  }
2914
2914
  function unknownCommandError(command) {
2915
2915
  const suggestion = command === undefined ? undefined : suggest(command, TOP_LEVEL_COMMANDS);
2916
- const suggestionText = suggestion ? ` Did you mean "vc-tools ${suggestion}"?` : "";
2917
- return new CliError("input.unknown_command", `Unknown command "${command ?? ""}".${suggestionText} Run vc-tools --help.`, 2);
2916
+ const suggestionText = suggestion ? ` Did you mean "vibecodr ${suggestion}"?` : "";
2917
+ return new CliError("input.unknown_command", `Unknown command "${command ?? ""}".${suggestionText} Run vibecodr --help.`, 2);
2918
2918
  }
2919
2919
  function unknownSubcommandError(command, subcommand, allowed, usage) {
2920
2920
  const suggestion = subcommand === undefined ? undefined : suggest(subcommand, allowed);
2921
- const suggestionText = suggestion ? ` Did you mean "vc-tools ${command} ${suggestion}"?` : "";
2921
+ const suggestionText = suggestion ? ` Did you mean "vibecodr ${command} ${suggestion}"?` : "";
2922
2922
  return new CliError("input.unknown_subcommand", `Unknown ${command} subcommand "${subcommand ?? ""}".${suggestionText} ${usage}`, 2);
2923
2923
  }
2924
2924
  function suggest(input, candidates) {