@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 +2 -2
- package/dist/index.js +42 -17
- package/package.json +1 -1
package/cli-manifest.json
CHANGED
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:
|
|
61327
|
-
version:
|
|
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:
|
|
61370
|
-
version:
|
|
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.
|
|
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 (/\
|
|
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
|
|
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
|
-
|
|
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(
|
|
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)) {
|