@packmind/cli 0.8.0 → 0.10.0

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 (2) hide show
  1. package/main.cjs +242 -89
  2. package/package.json +1 -1
package/main.cjs CHANGED
@@ -3852,7 +3852,7 @@ var require_package = __commonJS({
3852
3852
  "apps/cli/package.json"(exports2, module2) {
3853
3853
  module2.exports = {
3854
3854
  name: "@packmind/cli",
3855
- version: "0.8.0",
3855
+ version: "0.10.0",
3856
3856
  description: "A command-line interface for Packmind linting and code quality checks",
3857
3857
  private: false,
3858
3858
  bin: {
@@ -4034,8 +4034,23 @@ var UserJoinedOrganizationEvent = class extends PackmindEvent {
4034
4034
  }
4035
4035
  };
4036
4036
 
4037
- // packages/types/src/analytics/RecipeUsage.ts
4038
- var createRecipeUsageId = brandedIdFactory();
4037
+ // packages/types/src/accounts/events/TrialStartedEvent.ts
4038
+ var TrialStartedEvent = class extends PackmindEvent {
4039
+ static {
4040
+ this.eventName = "accounts.trial.started";
4041
+ }
4042
+ };
4043
+
4044
+ // packages/types/src/accounts/events/TrialAccountActivatedEvent.ts
4045
+ var TrialAccountActivatedEvent = class extends PackmindEvent {
4046
+ static {
4047
+ this.eventName = "accounts.trial.activated";
4048
+ }
4049
+ };
4050
+
4051
+ // packages/types/src/accounts/TrialActivationToken.ts
4052
+ var createTrialActivationTokenId = brandedIdFactory();
4053
+ var createTrialActivationToken = brandedIdFactory();
4039
4054
 
4040
4055
  // packages/types/src/recipes/RecipeId.ts
4041
4056
  var createRecipeId = brandedIdFactory();
@@ -4076,7 +4091,8 @@ var RENDER_MODE_ORDER = [
4076
4091
  "GH_COPILOT" /* GH_COPILOT */,
4077
4092
  "CLAUDE" /* CLAUDE */,
4078
4093
  "CURSOR" /* CURSOR */,
4079
- "GITLAB_DUO" /* GITLAB_DUO */
4094
+ "GITLAB_DUO" /* GITLAB_DUO */,
4095
+ "CONTINUE" /* CONTINUE */
4080
4096
  ];
4081
4097
  var normalizeRenderModes = (modes) => {
4082
4098
  const uniqueModes = new Set(modes);
@@ -9312,6 +9328,24 @@ function mergeSectionsIntoFileContent(existingContent, sections) {
9312
9328
  const endMarker = `<!-- end: ${section.key} -->`;
9313
9329
  const startIndex = result.indexOf(startMarker);
9314
9330
  const endIndex = result.indexOf(endMarker);
9331
+ if (section.content.trim() === "") {
9332
+ if (startIndex !== -1 && endIndex !== -1 && endIndex > startIndex) {
9333
+ const before = result.substring(0, startIndex);
9334
+ const after = result.substring(endIndex + endMarker.length);
9335
+ const trimmedBefore = before.trimEnd();
9336
+ const trimmedAfter = after.trimStart();
9337
+ if (trimmedBefore === "" && trimmedAfter === "") {
9338
+ result = "";
9339
+ } else if (trimmedBefore === "") {
9340
+ result = trimmedAfter;
9341
+ } else if (trimmedAfter === "") {
9342
+ result = trimmedBefore + "\n";
9343
+ } else {
9344
+ result = trimmedBefore + "\n" + trimmedAfter;
9345
+ }
9346
+ }
9347
+ continue;
9348
+ }
9315
9349
  if (startIndex !== -1 && endIndex !== -1 && endIndex > startIndex) {
9316
9350
  const before = result.substring(0, startIndex + startMarker.length);
9317
9351
  const after = result.substring(endIndex);
@@ -9447,18 +9481,26 @@ var InstallPackagesUseCase = class {
9447
9481
  sections
9448
9482
  );
9449
9483
  if (currentContent !== mergedContent) {
9450
- await fs4.writeFile(fullPath, mergedContent, "utf-8");
9451
- if (fileExists) {
9452
- result.filesUpdated++;
9484
+ if (this.isEffectivelyEmpty(mergedContent) && fileExists) {
9485
+ await fs4.unlink(fullPath);
9486
+ result.filesDeleted++;
9453
9487
  } else {
9454
- result.filesCreated++;
9488
+ await fs4.writeFile(fullPath, mergedContent, "utf-8");
9489
+ if (fileExists) {
9490
+ result.filesUpdated++;
9491
+ } else {
9492
+ result.filesCreated++;
9493
+ }
9455
9494
  }
9456
9495
  }
9457
9496
  }
9458
9497
  async deleteFile(baseDirectory, filePath, result) {
9459
9498
  const fullPath = path5.join(baseDirectory, filePath);
9460
- const fileExists = await this.fileExists(fullPath);
9461
- if (fileExists) {
9499
+ const stat4 = await fs4.stat(fullPath).catch(() => null);
9500
+ if (stat4?.isDirectory()) {
9501
+ await fs4.rm(fullPath, { recursive: true, force: true });
9502
+ result.filesDeleted++;
9503
+ } else if (stat4?.isFile()) {
9462
9504
  await fs4.unlink(fullPath);
9463
9505
  result.filesDeleted++;
9464
9506
  }
@@ -9510,6 +9552,17 @@ ${newSectionContent}
9510
9552
  ${endMarker}`;
9511
9553
  }
9512
9554
  }
9555
+ /**
9556
+ * Checks if content is effectively empty (only whitespace and empty section markers).
9557
+ * This helps determine if a file should be deleted after section removal.
9558
+ */
9559
+ isEffectivelyEmpty(content) {
9560
+ const withoutEmptySections = content.replace(
9561
+ /<!--\s*start:\s*[^-]+?\s*-->\s*<!--\s*end:\s*[^-]+?\s*-->/g,
9562
+ ""
9563
+ );
9564
+ return withoutEmptySections.trim() === "";
9565
+ }
9513
9566
  /**
9514
9567
  * Escapes special regex characters in a string
9515
9568
  */
@@ -9904,7 +9957,8 @@ var WhoamiUseCase = class {
9904
9957
  var ALL_AGENTS = [
9905
9958
  { type: "claude", name: "Claude Code" },
9906
9959
  { type: "cursor", name: "Cursor" },
9907
- { type: "vscode", name: "VS Code" }
9960
+ { type: "vscode", name: "VS Code" },
9961
+ { type: "continue", name: "Continue.dev" }
9908
9962
  ];
9909
9963
  var SetupMcpUseCase = class {
9910
9964
  constructor(deps) {
@@ -9962,6 +10016,8 @@ var McpConfigService = class {
9962
10016
  return this.installCursorMcp(config);
9963
10017
  case "vscode":
9964
10018
  return this.installVSCodeMcp(config);
10019
+ case "continue":
10020
+ return this.installContinueMcp(config);
9965
10021
  default:
9966
10022
  return { success: false, error: `Unknown agent: ${agent}` };
9967
10023
  }
@@ -10020,6 +10076,22 @@ var McpConfigService = class {
10020
10076
  return { success: false, error: errorMessage };
10021
10077
  }
10022
10078
  }
10079
+ installContinueMcp(config) {
10080
+ try {
10081
+ const continueDir = path7.join(this.projectDir, ".continue");
10082
+ const mcpServersDir = path7.join(continueDir, "mcpServers");
10083
+ if (!fs7.existsSync(mcpServersDir)) {
10084
+ fs7.mkdirSync(mcpServersDir, { recursive: true });
10085
+ }
10086
+ const continueConfigPath = path7.join(mcpServersDir, "packmind.yaml");
10087
+ const continueConfig = this.buildContinueYamlConfig(config);
10088
+ fs7.writeFileSync(continueConfigPath, continueConfig);
10089
+ return { success: true };
10090
+ } catch (error) {
10091
+ const errorMessage = error instanceof Error ? error.message : String(error);
10092
+ return { success: false, error: errorMessage };
10093
+ }
10094
+ }
10023
10095
  buildCursorConfig(config) {
10024
10096
  return {
10025
10097
  mcpServers: {
@@ -10046,6 +10118,19 @@ var McpConfigService = class {
10046
10118
  inputs: []
10047
10119
  };
10048
10120
  }
10121
+ buildContinueYamlConfig(config) {
10122
+ return `name: Packmind MCP Server
10123
+ version: 0.0.1
10124
+ schema: v1
10125
+ mcpServers:
10126
+ - name: Packmind
10127
+ type: streamable-http
10128
+ url: ${config.url}
10129
+ requestOptions:
10130
+ headers:
10131
+ Authorization: "Bearer ${config.accessToken}"
10132
+ `;
10133
+ }
10049
10134
  readExistingJsonConfig(filePath) {
10050
10135
  try {
10051
10136
  if (fs7.existsSync(filePath)) {
@@ -10135,6 +10220,15 @@ var ConfigFileRepository = class {
10135
10220
  const configContent = JSON.stringify(config, null, 2) + "\n";
10136
10221
  await fs8.writeFile(configPath, configContent, "utf-8");
10137
10222
  }
10223
+ async configExists(baseDirectory) {
10224
+ const configPath = path8.join(baseDirectory, this.CONFIG_FILENAME);
10225
+ try {
10226
+ await fs8.access(configPath);
10227
+ return true;
10228
+ } catch {
10229
+ return false;
10230
+ }
10231
+ }
10138
10232
  async readConfig(baseDirectory) {
10139
10233
  const configPath = path8.join(baseDirectory, this.CONFIG_FILENAME);
10140
10234
  try {
@@ -10406,6 +10500,11 @@ var PackmindCliHexa = class {
10406
10500
  async getPackageBySlug(command8) {
10407
10501
  return this.hexa.useCases.getPackageBySlug.execute(command8);
10408
10502
  }
10503
+ async configExists(baseDirectory) {
10504
+ return await this.hexa.repositories.configFileRepository.configExists(
10505
+ baseDirectory
10506
+ );
10507
+ }
10409
10508
  async readConfig(baseDirectory) {
10410
10509
  const config = await this.hexa.repositories.configFileRepository.readConfig(
10411
10510
  baseDirectory
@@ -10795,6 +10894,34 @@ var path10 = __toESM(require("path"));
10795
10894
  var import_cmd_ts2 = __toESM(require_cjs());
10796
10895
 
10797
10896
  // apps/cli/src/infra/commands/installPackagesHandler.ts
10897
+ async function notifyDistributionIfInGitRepo(params) {
10898
+ const { packmindCliHexa, cwd, packages, log } = params;
10899
+ const gitRoot = await packmindCliHexa.tryGetGitRepositoryRoot(cwd);
10900
+ if (!gitRoot) {
10901
+ return false;
10902
+ }
10903
+ try {
10904
+ const gitRemoteUrl = packmindCliHexa.getGitRemoteUrlFromPath(gitRoot);
10905
+ const gitBranch = packmindCliHexa.getCurrentBranch(gitRoot);
10906
+ let relativePath = cwd.startsWith(gitRoot) ? cwd.slice(gitRoot.length) : "/";
10907
+ if (!relativePath.startsWith("/")) {
10908
+ relativePath = "/" + relativePath;
10909
+ }
10910
+ if (!relativePath.endsWith("/")) {
10911
+ relativePath = relativePath + "/";
10912
+ }
10913
+ await packmindCliHexa.notifyDistribution({
10914
+ distributedPackages: packages,
10915
+ gitRemoteUrl,
10916
+ gitBranch,
10917
+ relativePath
10918
+ });
10919
+ log("Successfully notified Packmind of the new distribution");
10920
+ return true;
10921
+ } catch {
10922
+ return false;
10923
+ }
10924
+ }
10798
10925
  async function listPackagesHandler(_args, deps) {
10799
10926
  const { packmindCliHexa, exit, log, error } = deps;
10800
10927
  try {
@@ -11010,29 +11137,14 @@ async function executeInstallForDirectory(directory, deps) {
11010
11137
  };
11011
11138
  }
11012
11139
  let notificationSent = false;
11013
- if (result.filesCreated > 0 || result.filesUpdated > 0) {
11014
- const gitRoot = await packmindCliHexa.tryGetGitRepositoryRoot(directory);
11015
- if (gitRoot) {
11016
- try {
11017
- const gitRemoteUrl = packmindCliHexa.getGitRemoteUrlFromPath(gitRoot);
11018
- const gitBranch = packmindCliHexa.getCurrentBranch(gitRoot);
11019
- let relativePath = directory.startsWith(gitRoot) ? directory.slice(gitRoot.length) : "/";
11020
- if (!relativePath.startsWith("/")) {
11021
- relativePath = "/" + relativePath;
11022
- }
11023
- if (!relativePath.endsWith("/")) {
11024
- relativePath = relativePath + "/";
11025
- }
11026
- await packmindCliHexa.notifyDistribution({
11027
- distributedPackages: configPackages,
11028
- gitRemoteUrl,
11029
- gitBranch,
11030
- relativePath
11031
- });
11032
- notificationSent = true;
11033
- } catch {
11140
+ if (result.filesCreated > 0 || result.filesUpdated > 0 || result.filesDeleted > 0) {
11141
+ notificationSent = await notifyDistributionIfInGitRepo({
11142
+ packmindCliHexa,
11143
+ cwd: directory,
11144
+ packages: configPackages,
11145
+ log: () => {
11034
11146
  }
11035
- }
11147
+ });
11036
11148
  }
11037
11149
  return {
11038
11150
  success: true,
@@ -11058,10 +11170,10 @@ async function installPackagesHandler(args2, deps) {
11058
11170
  const { packagesSlugs } = args2;
11059
11171
  const cwd = getCwd();
11060
11172
  let configPackages;
11061
- let configExists = false;
11173
+ let configFileExists = false;
11062
11174
  try {
11175
+ configFileExists = await packmindCliHexa.configExists(cwd);
11063
11176
  configPackages = await packmindCliHexa.readConfig(cwd);
11064
- configExists = configPackages.length > 0;
11065
11177
  } catch (err) {
11066
11178
  error("ERROR Failed to parse packmind.json");
11067
11179
  if (err instanceof Error) {
@@ -11080,7 +11192,13 @@ async function installPackagesHandler(args2, deps) {
11080
11192
  }
11081
11193
  const allPackages = [.../* @__PURE__ */ new Set([...configPackages, ...packagesSlugs])];
11082
11194
  if (allPackages.length === 0) {
11083
- logWarningConsole("config packmind.json not found");
11195
+ if (configFileExists) {
11196
+ logWarningConsole(
11197
+ "config packmind.json is empty, no packages to install"
11198
+ );
11199
+ } else {
11200
+ logWarningConsole("config packmind.json not found");
11201
+ }
11084
11202
  log("Usage: packmind-cli install <package-slug> [package-slug...]");
11085
11203
  log(" packmind-cli install --list");
11086
11204
  log("");
@@ -11098,7 +11216,7 @@ async function installPackagesHandler(args2, deps) {
11098
11216
  notificationSent: false
11099
11217
  };
11100
11218
  }
11101
- if (!configExists && packagesSlugs.length > 0) {
11219
+ if (!configFileExists && packagesSlugs.length > 0) {
11102
11220
  log("INFO initializing packmind.json");
11103
11221
  }
11104
11222
  try {
@@ -11134,30 +11252,13 @@ added ${result.filesCreated} files, changed ${result.filesUpdated} files, remove
11134
11252
  };
11135
11253
  }
11136
11254
  let notificationSent = false;
11137
- if (result.filesCreated > 0 || result.filesUpdated > 0) {
11138
- const gitRoot = await packmindCliHexa.tryGetGitRepositoryRoot(cwd);
11139
- if (gitRoot) {
11140
- try {
11141
- const gitRemoteUrl = packmindCliHexa.getGitRemoteUrlFromPath(gitRoot);
11142
- const gitBranch = packmindCliHexa.getCurrentBranch(gitRoot);
11143
- let relativePath = cwd.startsWith(gitRoot) ? cwd.slice(gitRoot.length) : "/";
11144
- if (!relativePath.startsWith("/")) {
11145
- relativePath = "/" + relativePath;
11146
- }
11147
- if (!relativePath.endsWith("/")) {
11148
- relativePath = relativePath + "/";
11149
- }
11150
- await packmindCliHexa.notifyDistribution({
11151
- distributedPackages: allPackages,
11152
- gitRemoteUrl,
11153
- gitBranch,
11154
- relativePath
11155
- });
11156
- log("Successfully notified Packmind of the new distribution");
11157
- notificationSent = true;
11158
- } catch {
11159
- }
11160
- }
11255
+ if (result.filesCreated > 0 || result.filesUpdated > 0 || result.filesDeleted > 0) {
11256
+ notificationSent = await notifyDistributionIfInGitRepo({
11257
+ packmindCliHexa,
11258
+ cwd,
11259
+ packages: allPackages,
11260
+ log
11261
+ });
11161
11262
  }
11162
11263
  return {
11163
11264
  filesCreated: result.filesCreated,
@@ -11169,9 +11270,15 @@ added ${result.filesCreated} files, changed ${result.filesUpdated} files, remove
11169
11270
  error("\n\u274C Failed to install content:");
11170
11271
  if (err instanceof Error) {
11171
11272
  const errorObj = err;
11172
- if (errorObj.statusCode === 404) {
11273
+ if (errorObj.statusCode === 400) {
11173
11274
  error(` ${errorObj.message}`);
11174
- if (configExists && configPackages.length > 0) {
11275
+ error("\n\u{1F4A1} This is a validation error. Please check:");
11276
+ error(" - The command syntax is correct");
11277
+ error(" - You have provided at least one package slug");
11278
+ error(" - Your packmind.json file contains valid package slugs");
11279
+ } else if (errorObj.statusCode === 404) {
11280
+ error(` ${errorObj.message}`);
11281
+ if (configFileExists && configPackages.length > 0) {
11175
11282
  const missingPackages = allPackages.filter(
11176
11283
  (pkg) => configPackages.includes(pkg)
11177
11284
  );
@@ -11246,7 +11353,9 @@ async function uninstallPackagesHandler(args2, deps) {
11246
11353
  };
11247
11354
  }
11248
11355
  let configPackages;
11356
+ let configFileExists = false;
11249
11357
  try {
11358
+ configFileExists = await packmindCliHexa.configExists(cwd);
11250
11359
  configPackages = await packmindCliHexa.readConfig(cwd);
11251
11360
  } catch (err) {
11252
11361
  error("\u274C Failed to read packmind.json");
@@ -11263,7 +11372,11 @@ async function uninstallPackagesHandler(args2, deps) {
11263
11372
  };
11264
11373
  }
11265
11374
  if (configPackages.length === 0) {
11266
- error("\u274C No packmind.json found in current directory.");
11375
+ if (configFileExists) {
11376
+ error("\u274C packmind.json is empty.");
11377
+ } else {
11378
+ error("\u274C No packmind.json found in current directory.");
11379
+ }
11267
11380
  log("");
11268
11381
  log("\u{1F4A1} There are no packages to uninstall.");
11269
11382
  log(" To install packages, run: packmind-cli install <package-slug>");
@@ -11306,30 +11419,61 @@ async function uninstallPackagesHandler(args2, deps) {
11306
11419
  const remainingPackages = configPackages.filter(
11307
11420
  (pkg) => !packagesToUninstall.includes(pkg)
11308
11421
  );
11309
- const result = await packmindCliHexa.installPackages({
11310
- baseDirectory: cwd,
11311
- packagesSlugs: remainingPackages,
11312
- previousPackagesSlugs: configPackages
11313
- });
11314
- if (result.recipesCount > 0 || result.standardsCount > 0) {
11315
- log(
11316
- `Removing ${result.recipesCount} recipes and ${result.standardsCount} standards...`
11317
- );
11318
- }
11319
- log(`
11422
+ let filesDeleted = 0;
11423
+ if (remainingPackages.length === 0) {
11424
+ log("Removing all packages and cleaning up...");
11425
+ const result = await packmindCliHexa.installPackages({
11426
+ baseDirectory: cwd,
11427
+ packagesSlugs: [],
11428
+ previousPackagesSlugs: configPackages
11429
+ });
11430
+ log(`
11320
11431
  removed ${result.filesDeleted} files`);
11321
- if (result.errors.length > 0) {
11322
- log("\n\u26A0\uFE0F Errors encountered:");
11323
- result.errors.forEach((err) => {
11324
- log(` - ${err}`);
11432
+ if (result.errors.length > 0) {
11433
+ log("\n\u26A0\uFE0F Errors encountered:");
11434
+ result.errors.forEach((err) => {
11435
+ log(` - ${err}`);
11436
+ });
11437
+ exit(1);
11438
+ return {
11439
+ filesDeleted: result.filesDeleted,
11440
+ packagesUninstalled: packagesToUninstall
11441
+ };
11442
+ }
11443
+ filesDeleted = result.filesDeleted;
11444
+ } else {
11445
+ const result = await packmindCliHexa.installPackages({
11446
+ baseDirectory: cwd,
11447
+ packagesSlugs: remainingPackages,
11448
+ previousPackagesSlugs: configPackages
11325
11449
  });
11326
- exit(1);
11327
- return {
11328
- filesDeleted: result.filesDeleted,
11329
- packagesUninstalled: packagesToUninstall
11330
- };
11450
+ if (result.recipesCount > 0 || result.standardsCount > 0) {
11451
+ log(
11452
+ `Removing ${result.recipesCount} recipes and ${result.standardsCount} standards...`
11453
+ );
11454
+ }
11455
+ log(`
11456
+ removed ${result.filesDeleted} files`);
11457
+ if (result.errors.length > 0) {
11458
+ log("\n\u26A0\uFE0F Errors encountered:");
11459
+ result.errors.forEach((err) => {
11460
+ log(` - ${err}`);
11461
+ });
11462
+ exit(1);
11463
+ return {
11464
+ filesDeleted: result.filesDeleted,
11465
+ packagesUninstalled: packagesToUninstall
11466
+ };
11467
+ }
11468
+ filesDeleted = result.filesDeleted;
11331
11469
  }
11332
11470
  await packmindCliHexa.writeConfig(cwd, remainingPackages);
11471
+ await notifyDistributionIfInGitRepo({
11472
+ packmindCliHexa,
11473
+ cwd,
11474
+ packages: remainingPackages,
11475
+ log
11476
+ });
11333
11477
  log("");
11334
11478
  if (packagesToUninstall.length === 1) {
11335
11479
  log(`\u2713 Package '${packagesToUninstall[0]}' has been uninstalled.`);
@@ -11342,7 +11486,7 @@ removed ${result.filesDeleted} files`);
11342
11486
  log(" Your packmind.json still exists but contains no packages.");
11343
11487
  }
11344
11488
  return {
11345
- filesDeleted: result.filesDeleted,
11489
+ filesDeleted,
11346
11490
  packagesUninstalled: packagesToUninstall
11347
11491
  };
11348
11492
  } catch (err) {
@@ -11727,6 +11871,9 @@ var AgentDetectionService = class {
11727
11871
  if (this.isVSCodeAvailable()) {
11728
11872
  agents.push({ type: "vscode", name: "VS Code" });
11729
11873
  }
11874
+ if (this.isContinueAvailable()) {
11875
+ agents.push({ type: "continue", name: "Continue.dev" });
11876
+ }
11730
11877
  return agents;
11731
11878
  }
11732
11879
  isClaudeAvailable() {
@@ -11740,6 +11887,10 @@ var AgentDetectionService = class {
11740
11887
  const vscodeDir = path9.join(this.projectDir, ".vscode");
11741
11888
  return fs9.existsSync(vscodeDir);
11742
11889
  }
11890
+ isContinueAvailable() {
11891
+ const continueDir = path9.join(this.projectDir, ".continue");
11892
+ return fs9.existsSync(continueDir);
11893
+ }
11743
11894
  isCommandAvailable(command8) {
11744
11895
  try {
11745
11896
  const whichCommand = process.platform === "win32" ? "where" : "which";
@@ -11752,11 +11903,12 @@ var AgentDetectionService = class {
11752
11903
  };
11753
11904
 
11754
11905
  // apps/cli/src/infra/commands/SetupMcpCommand.ts
11755
- var VALID_AGENTS = ["copilot", "cursor", "claude"];
11906
+ var VALID_AGENTS = ["copilot", "cursor", "claude", "continue"];
11756
11907
  var agentArgToType = {
11757
11908
  copilot: "vscode",
11758
11909
  cursor: "cursor",
11759
- claude: "claude"
11910
+ claude: "claude",
11911
+ continue: "continue"
11760
11912
  };
11761
11913
  var AgentArgType = {
11762
11914
  from: async (input) => {
@@ -11772,7 +11924,8 @@ var AgentArgType = {
11772
11924
  var ALL_AGENTS2 = [
11773
11925
  { type: "claude", name: "Claude Code" },
11774
11926
  { type: "cursor", name: "Cursor" },
11775
- { type: "vscode", name: "VS Code" }
11927
+ { type: "vscode", name: "VS Code" },
11928
+ { type: "continue", name: "Continue.dev" }
11776
11929
  ];
11777
11930
  async function promptAgentsWithReadline(choices) {
11778
11931
  const input = fs10.createReadStream("/dev/tty");
@@ -11814,7 +11967,7 @@ var setupMcpCommand = (0, import_cmd_ts7.command)({
11814
11967
  type: (0, import_cmd_ts7.array)(AgentArgType),
11815
11968
  long: "target",
11816
11969
  short: "t",
11817
- description: "Target agent(s) to configure (copilot, cursor, or claude). Can be specified multiple times. If omitted, interactive mode is used."
11970
+ description: "Target agent(s) to configure (copilot, cursor, claude, or continue). Can be specified multiple times. If omitted, interactive mode is used."
11818
11971
  })
11819
11972
  },
11820
11973
  handler: async ({ targets }) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@packmind/cli",
3
- "version": "0.8.0",
3
+ "version": "0.10.0",
4
4
  "description": "A command-line interface for Packmind linting and code quality checks",
5
5
  "private": false,
6
6
  "bin": {