@chiendt/ack-cli 1.3.0-dev.1 → 1.3.0-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cli-manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "1.3.0-dev.1",
3
- "generatedAt": "2026-05-30T18:47:23.209Z",
2
+ "version": "1.3.0-dev.3",
3
+ "generatedAt": "2026-06-01T17:38:45.019Z",
4
4
  "commands": {
5
5
  "agents": {
6
6
  "name": "agents",
package/dist/index.js CHANGED
@@ -61065,6 +61065,19 @@ import { existsSync as existsSync37 } from "node:fs";
61065
61065
  import { readFile as readFile27 } from "node:fs/promises";
61066
61066
  import { homedir as homedir32 } from "node:os";
61067
61067
  import { basename as basename21, join as join55, resolve as resolve28 } from "node:path";
61068
+ function resolveKitInfo(metadata) {
61069
+ const kitsMap = metadata.kits ?? null;
61070
+ if (kitsMap && typeof kitsMap === "object") {
61071
+ const kits2 = Object.entries(kitsMap).map(([kit, info]) => ({ kit, version: (info?.version ?? "").toString() })).filter(({ version }) => version.trim() !== "");
61072
+ if (kits2.length > 0) {
61073
+ return { primaryKit: kits2[0].kit, primaryVersion: kits2[0].version, kits: kits2 };
61074
+ }
61075
+ }
61076
+ const legacyKit = typeof metadata.kit === "string" ? metadata.kit : null;
61077
+ const legacyVersion = typeof metadata.version === "string" ? metadata.version : null;
61078
+ const kits = legacyKit && legacyVersion ? [{ kit: legacyKit, version: legacyVersion }] : [];
61079
+ return { primaryKit: legacyKit, primaryVersion: legacyVersion, kits };
61080
+ }
61068
61081
  function registerProjectRoutes(app) {
61069
61082
  app.get("/api/projects", async (req, res) => {
61070
61083
  try {
@@ -61318,13 +61331,15 @@ async function buildProjectInfoFromRegistry(registered, cachedSettings, cachedSk
61318
61331
  const health = existsSync37(settingsPath) ? "healthy" : "warning";
61319
61332
  const model = getCurrentModel() || settings?.model || "claude-sonnet-4";
61320
61333
  const planData = includePlanData ? await buildProjectPlanData(registered.path, "project") : null;
61334
+ const kitInfo = resolveKitInfo(metadata);
61321
61335
  return {
61322
61336
  id: registered.id,
61323
61337
  name: registered.alias,
61324
61338
  path: registered.path,
61325
61339
  hasLocalConfig,
61326
- kitType: metadata.kit || null,
61327
- version: metadata.version || null,
61340
+ kitType: kitInfo.primaryKit,
61341
+ version: kitInfo.primaryVersion,
61342
+ kits: kitInfo.kits,
61328
61343
  health,
61329
61344
  model,
61330
61345
  activeHooks: settings ? countHooks(settings) : 0,
@@ -61361,13 +61376,15 @@ async function detectAndBuildProjectInfo(path5, id, cachedSettings, cachedSkills
61361
61376
  const model = getCurrentModel() || settings?.model || "claude-sonnet-4";
61362
61377
  const scope = id === "global" ? "global" : "project";
61363
61378
  const planData = includePlanData ? await buildProjectPlanData(id === "global" ? null : path5, scope) : null;
61379
+ const kitInfo = resolveKitInfo(metadata);
61364
61380
  return {
61365
61381
  id,
61366
61382
  name: basename21(path5) || (id === "global" ? "Global" : "Current"),
61367
61383
  path: path5,
61368
61384
  hasLocalConfig,
61369
- kitType: metadata.kit || null,
61370
- version: metadata.version || null,
61385
+ kitType: kitInfo.primaryKit,
61386
+ version: kitInfo.primaryVersion,
61387
+ kits: kitInfo.kits,
61371
61388
  health,
61372
61389
  model,
61373
61390
  activeHooks: settings ? countHooks(settings) : 0,
@@ -63710,7 +63727,7 @@ var package_default;
63710
63727
  var init_package = __esm(() => {
63711
63728
  package_default = {
63712
63729
  name: "@chiendt/ack-cli",
63713
- version: "1.3.0-dev.1",
63730
+ version: "1.3.0-dev.3",
63714
63731
  description: "ACK CLI - tool for bootstrapping and updating ACK kits (Claude Code agent kits)",
63715
63732
  type: "module",
63716
63733
  repository: {
@@ -64211,12 +64228,12 @@ async function detectMetadataFormat(claudeDir3) {
64211
64228
  if (parsed.name || parsed.version || parsed.files) {
64212
64229
  let detectedKit = null;
64213
64230
  const nameToCheck = parsed.name || "";
64214
- if (/\bengineer\b/i.test(nameToCheck)) {
64231
+ if (/\bfqc-qa\b|\bfqc\s*qa\b/i.test(nameToCheck)) {
64232
+ detectedKit = "fqc-qa";
64233
+ } else if (/\bengineer\b/i.test(nameToCheck)) {
64215
64234
  detectedKit = "engineer";
64216
64235
  } else if (/\bmarketing\b/i.test(nameToCheck)) {
64217
64236
  detectedKit = "marketing";
64218
- } else {
64219
- detectedKit = "engineer";
64220
64237
  }
64221
64238
  return { format: "legacy", metadata: parsed, detectedKit };
64222
64239
  }
@@ -64256,7 +64273,16 @@ async function migrateToMultiKit(claudeDir3) {
64256
64273
  error: "Metadata exists but could not be read"
64257
64274
  };
64258
64275
  }
64259
- const legacyKit = detection.detectedKit || "engineer";
64276
+ const legacyKit = detection.detectedKit;
64277
+ if (!legacyKit) {
64278
+ logger.warning("Legacy metadata found but kit could not be identified from name — skipping migration. Run `ack init --kit <kit>` to relabel.");
64279
+ return {
64280
+ success: true,
64281
+ migrated: false,
64282
+ fromFormat: "legacy",
64283
+ toFormat: "legacy"
64284
+ };
64285
+ }
64260
64286
  try {
64261
64287
  const kitMetadata = {
64262
64288
  version: legacy.version || "unknown",
@@ -64336,19 +64362,16 @@ function getInstalledKits(metadata) {
64336
64362
  }
64337
64363
  const nameToCheck = metadata.name || "";
64338
64364
  const kits = [];
64365
+ if (/\bfqc-qa\b|\bfqc\s*qa\b/i.test(nameToCheck)) {
64366
+ kits.push("fqc-qa");
64367
+ }
64339
64368
  if (/\bengineer\b/i.test(nameToCheck)) {
64340
64369
  kits.push("engineer");
64341
64370
  }
64342
64371
  if (/\bmarketing\b/i.test(nameToCheck)) {
64343
64372
  kits.push("marketing");
64344
64373
  }
64345
- if (kits.length > 0) {
64346
- return kits;
64347
- }
64348
- if (metadata.version) {
64349
- return ["engineer"];
64350
- }
64351
- return [];
64374
+ return kits;
64352
64375
  }
64353
64376
  var import_fs_extra6;
64354
64377
  var init_metadata_migration = __esm(() => {
@@ -105773,7 +105796,9 @@ async function handleSelection(ctx) {
105773
105796
  const existingKitsDisplay = otherKits.map((k3) => `${k3}@${existingMetadata.kits?.[k3]?.version || "unknown"}`).join(", ");
105774
105797
  if (!ctx.options.yes && !ctx.isNonInteractive) {
105775
105798
  try {
105776
- const confirmAdd = await ctx.prompts.confirm(`${existingKitsDisplay} already installed. Add ${kit.name} alongside?`);
105799
+ const confirmAdd = await ctx.prompts.confirm(`Existing kit(s) in this directory: ${existingKitsDisplay}
105800
+ Selected kit to add: ${kit.name}
105801
+ Install both kits side-by-side?`);
105777
105802
  if (!confirmAdd) {
105778
105803
  logger.info("To remove one installed kit first, run:");
105779
105804
  for (const command of buildKitScopedUninstallCommands(otherKits, resolvedDir, ctx.options.global)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chiendt/ack-cli",
3
- "version": "1.3.0-dev.1",
3
+ "version": "1.3.0-dev.3",
4
4
  "description": "ACK CLI - tool for bootstrapping and updating ACK kits (Claude Code agent kits)",
5
5
  "type": "module",
6
6
  "repository": {