claudekit-cli 3.36.0-dev.35 → 3.36.0-dev.37
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/dist/index.js
CHANGED
|
@@ -10971,6 +10971,16 @@ var init_fm_to_yaml = __esm(() => {
|
|
|
10971
10971
|
});
|
|
10972
10972
|
|
|
10973
10973
|
// src/commands/portable/provider-registry.ts
|
|
10974
|
+
var exports_provider_registry = {};
|
|
10975
|
+
__export(exports_provider_registry, {
|
|
10976
|
+
providers: () => providers,
|
|
10977
|
+
getProvidersSupporting: () => getProvidersSupporting,
|
|
10978
|
+
getProviderConfig: () => getProviderConfig,
|
|
10979
|
+
getPortableInstallPath: () => getPortableInstallPath,
|
|
10980
|
+
getAllProviderTypes: () => getAllProviderTypes,
|
|
10981
|
+
detectProviderPathCollisions: () => detectProviderPathCollisions,
|
|
10982
|
+
detectInstalledProviders: () => detectInstalledProviders
|
|
10983
|
+
});
|
|
10974
10984
|
import { existsSync, readdirSync, statSync } from "node:fs";
|
|
10975
10985
|
import { homedir } from "node:os";
|
|
10976
10986
|
import { join } from "node:path";
|
|
@@ -10994,6 +11004,12 @@ function hasInstallSignal(path) {
|
|
|
10994
11004
|
function hasAnyInstallSignal(paths) {
|
|
10995
11005
|
return paths.some((path) => hasInstallSignal(path));
|
|
10996
11006
|
}
|
|
11007
|
+
function getAllProviderTypes() {
|
|
11008
|
+
return Object.keys(providers);
|
|
11009
|
+
}
|
|
11010
|
+
function getProviderConfig(type) {
|
|
11011
|
+
return providers[type];
|
|
11012
|
+
}
|
|
10997
11013
|
async function detectInstalledProviders() {
|
|
10998
11014
|
const installed = [];
|
|
10999
11015
|
for (const [type, config] of Object.entries(providers)) {
|
|
@@ -11006,6 +11022,19 @@ async function detectInstalledProviders() {
|
|
|
11006
11022
|
function getProvidersSupporting(type) {
|
|
11007
11023
|
return Object.entries(providers).filter(([, config]) => config[type] != null).map(([name]) => name);
|
|
11008
11024
|
}
|
|
11025
|
+
function getPortableInstallPath(itemName, provider, portableType, options2) {
|
|
11026
|
+
const config = providers[provider];
|
|
11027
|
+
const pathConfig = config[portableType];
|
|
11028
|
+
if (!pathConfig)
|
|
11029
|
+
return null;
|
|
11030
|
+
const basePath = options2.global ? pathConfig.globalPath : pathConfig.projectPath;
|
|
11031
|
+
if (!basePath)
|
|
11032
|
+
return null;
|
|
11033
|
+
if (pathConfig.writeStrategy === "merge-single" || pathConfig.writeStrategy === "yaml-merge" || pathConfig.writeStrategy === "json-merge" || pathConfig.writeStrategy === "single-file") {
|
|
11034
|
+
return basePath;
|
|
11035
|
+
}
|
|
11036
|
+
return join(basePath, `${itemName}${pathConfig.fileExtension}`);
|
|
11037
|
+
}
|
|
11009
11038
|
function detectProviderPathCollisions(selectedProviders, options2) {
|
|
11010
11039
|
const portableTypes = ["agents", "commands", "skills", "config", "rules", "hooks"];
|
|
11011
11040
|
const collisions = [];
|
|
@@ -12185,6 +12214,18 @@ function isUnknownChecksum(checksum) {
|
|
|
12185
12214
|
var UNKNOWN_CHECKSUM = "unknown";
|
|
12186
12215
|
|
|
12187
12216
|
// src/commands/portable/portable-registry.ts
|
|
12217
|
+
var exports_portable_registry = {};
|
|
12218
|
+
__export(exports_portable_registry, {
|
|
12219
|
+
writePortableRegistry: () => writePortableRegistry,
|
|
12220
|
+
updateAppliedManifestVersion: () => updateAppliedManifestVersion,
|
|
12221
|
+
syncPortableRegistry: () => syncPortableRegistry,
|
|
12222
|
+
removePortableInstallation: () => removePortableInstallation,
|
|
12223
|
+
removeInstallationsByFilter: () => removeInstallationsByFilter,
|
|
12224
|
+
readPortableRegistry: () => readPortableRegistry,
|
|
12225
|
+
getInstallationsByType: () => getInstallationsByType,
|
|
12226
|
+
findPortableInstallations: () => findPortableInstallations,
|
|
12227
|
+
addPortableInstallation: () => addPortableInstallation
|
|
12228
|
+
});
|
|
12188
12229
|
import { existsSync as existsSync2 } from "node:fs";
|
|
12189
12230
|
import { mkdir, readFile as readFile2, rename, unlink, writeFile } from "node:fs/promises";
|
|
12190
12231
|
import { homedir as homedir3 } from "node:os";
|
|
@@ -12444,6 +12485,9 @@ function findPortableInstallations(registry, item, type, provider, global2) {
|
|
|
12444
12485
|
return true;
|
|
12445
12486
|
});
|
|
12446
12487
|
}
|
|
12488
|
+
function getInstallationsByType(registry, type) {
|
|
12489
|
+
return registry.installations.filter((i) => i.type === type);
|
|
12490
|
+
}
|
|
12447
12491
|
async function updateAppliedManifestVersion(version) {
|
|
12448
12492
|
await withRegistryLock(async () => {
|
|
12449
12493
|
const registry = await readPortableRegistry();
|
|
@@ -42177,7 +42221,7 @@ var init_claudekit_data = __esm(() => {
|
|
|
42177
42221
|
});
|
|
42178
42222
|
|
|
42179
42223
|
// src/types/ck-config.ts
|
|
42180
|
-
var PlanValidationModeSchema, PlanFocusAreaSchema, PlanResolutionOrderSchema, ProjectTypeSchema, PackageManagerSchema, FrameworkSchema, GeminiModelSchema, StatuslineModeSchema, CodingLevelSchema, PlanResolutionSchema, PlanValidationSchema, CkPlanConfigSchema, CkDocsConfigSchema, CkPathsConfigSchema, CkLocaleConfigSchema, CkTrustConfigSchema, CkProjectConfigSchema, CkGeminiConfigSchema, CkSkillsConfigSchema, ResolvedModelConfigSchema, ModelTierMapSchema, CkModelTaxonomySchema, CkAssertionSchema, CkHooksConfigSchema, CkConfigSchema, DEFAULT_CK_CONFIG, CK_HOOK_NAMES;
|
|
42224
|
+
var PlanValidationModeSchema, PlanFocusAreaSchema, PlanResolutionOrderSchema, ProjectTypeSchema, PackageManagerSchema, FrameworkSchema, GeminiModelSchema, StatuslineModeSchema, CodingLevelSchema, PlanResolutionSchema, PlanValidationSchema, CkPlanConfigSchema, CkDocsConfigSchema, CkPathsConfigSchema, CkLocaleConfigSchema, CkTrustConfigSchema, CkProjectConfigSchema, CkGeminiConfigSchema, CkSkillsConfigSchema, UpdatePipelineSchema, ResolvedModelConfigSchema, ModelTierMapSchema, CkModelTaxonomySchema, CkAssertionSchema, CkHooksConfigSchema, CkConfigSchema, DEFAULT_CK_CONFIG, CK_HOOK_NAMES;
|
|
42181
42225
|
var init_ck_config = __esm(() => {
|
|
42182
42226
|
init_zod();
|
|
42183
42227
|
PlanValidationModeSchema = exports_external.enum(["prompt", "auto", "strict", "none"]);
|
|
@@ -42270,6 +42314,11 @@ var init_ck_config = __esm(() => {
|
|
|
42270
42314
|
useGemini: exports_external.boolean().optional()
|
|
42271
42315
|
}).passthrough().optional()
|
|
42272
42316
|
}).passthrough();
|
|
42317
|
+
UpdatePipelineSchema = exports_external.object({
|
|
42318
|
+
autoInitAfterUpdate: exports_external.boolean().default(false),
|
|
42319
|
+
autoMigrateAfterInit: exports_external.boolean().default(false),
|
|
42320
|
+
migrateProviders: exports_external.union([exports_external.literal("auto"), exports_external.array(exports_external.string())]).default("auto")
|
|
42321
|
+
});
|
|
42273
42322
|
ResolvedModelConfigSchema = exports_external.object({
|
|
42274
42323
|
model: exports_external.string(),
|
|
42275
42324
|
effort: exports_external.string().optional()
|
|
@@ -42312,6 +42361,7 @@ var init_ck_config = __esm(() => {
|
|
|
42312
42361
|
skills: CkSkillsConfigSchema.optional(),
|
|
42313
42362
|
assertions: exports_external.array(CkAssertionSchema).optional(),
|
|
42314
42363
|
hooks: CkHooksConfigSchema.optional(),
|
|
42364
|
+
updatePipeline: UpdatePipelineSchema.optional(),
|
|
42315
42365
|
modelTaxonomy: CkModelTaxonomySchema.optional()
|
|
42316
42366
|
}).passthrough();
|
|
42317
42367
|
DEFAULT_CK_CONFIG = {
|
|
@@ -42374,6 +42424,11 @@ var init_ck_config = __esm(() => {
|
|
|
42374
42424
|
"scout-block": true,
|
|
42375
42425
|
"privacy-block": true,
|
|
42376
42426
|
"post-edit-simplify-reminder": true
|
|
42427
|
+
},
|
|
42428
|
+
updatePipeline: {
|
|
42429
|
+
autoInitAfterUpdate: false,
|
|
42430
|
+
autoMigrateAfterInit: false,
|
|
42431
|
+
migrateProviders: "auto"
|
|
42377
42432
|
}
|
|
42378
42433
|
};
|
|
42379
42434
|
CK_HOOK_NAMES = [
|
|
@@ -48320,6 +48375,31 @@ var init_ck_config_schema = __esm(() => {
|
|
|
48320
48375
|
},
|
|
48321
48376
|
additionalProperties: false
|
|
48322
48377
|
},
|
|
48378
|
+
updatePipeline: {
|
|
48379
|
+
type: "object",
|
|
48380
|
+
description: "Auto-chaining behavior for update -> init -> migrate pipeline",
|
|
48381
|
+
properties: {
|
|
48382
|
+
autoInitAfterUpdate: {
|
|
48383
|
+
type: "boolean",
|
|
48384
|
+
default: false,
|
|
48385
|
+
description: "Automatically run ck init after ck update when kit has new version"
|
|
48386
|
+
},
|
|
48387
|
+
autoMigrateAfterInit: {
|
|
48388
|
+
type: "boolean",
|
|
48389
|
+
default: false,
|
|
48390
|
+
description: "Automatically run ck migrate after ck init for detected providers"
|
|
48391
|
+
},
|
|
48392
|
+
migrateProviders: {
|
|
48393
|
+
oneOf: [
|
|
48394
|
+
{ type: "string", const: "auto" },
|
|
48395
|
+
{ type: "array", items: { type: "string" } }
|
|
48396
|
+
],
|
|
48397
|
+
default: "auto",
|
|
48398
|
+
description: "Which providers to auto-migrate. 'auto' scans filesystem."
|
|
48399
|
+
}
|
|
48400
|
+
},
|
|
48401
|
+
additionalProperties: false
|
|
48402
|
+
},
|
|
48323
48403
|
modelTaxonomy: {
|
|
48324
48404
|
type: "object",
|
|
48325
48405
|
description: "Custom model mappings for portable migration. Keys are provider names (e.g., 'codex', 'gemini-cli'), values map tiers to model config.",
|
|
@@ -56639,7 +56719,7 @@ var package_default;
|
|
|
56639
56719
|
var init_package = __esm(() => {
|
|
56640
56720
|
package_default = {
|
|
56641
56721
|
name: "claudekit-cli",
|
|
56642
|
-
version: "3.36.0-dev.
|
|
56722
|
+
version: "3.36.0-dev.37",
|
|
56643
56723
|
description: "CLI tool for bootstrapping and updating ClaudeKit projects",
|
|
56644
56724
|
type: "module",
|
|
56645
56725
|
repository: {
|
|
@@ -56655,6 +56735,10 @@ var init_package = __esm(() => {
|
|
|
56655
56735
|
},
|
|
56656
56736
|
files: [
|
|
56657
56737
|
"bin/ck.js",
|
|
56738
|
+
"bin/ck-linux-x64",
|
|
56739
|
+
"bin/ck-darwin-arm64",
|
|
56740
|
+
"bin/ck-darwin-x64",
|
|
56741
|
+
"bin/ck-win32-x64.exe",
|
|
56658
56742
|
"dist/index.js",
|
|
56659
56743
|
"dist/ui/"
|
|
56660
56744
|
],
|
|
@@ -56668,6 +56752,7 @@ var init_package = __esm(() => {
|
|
|
56668
56752
|
"compile:binary": "bun run ui:build && bun run scripts/compile-binary.ts --outfile bin/ck && cp bin/ck /usr/local/bin/ck && echo '✅ Installed globally: /usr/local/bin/ck'",
|
|
56669
56753
|
"compile:binaries": "node scripts/build-all-binaries.js",
|
|
56670
56754
|
"check-version-sync": "node scripts/check-binary-version-sync.js",
|
|
56755
|
+
"verify:package": "node scripts/prepublish-check.js",
|
|
56671
56756
|
"build:platform-binaries": "bun run scripts/build-platform-binaries.js",
|
|
56672
56757
|
test: "bun test",
|
|
56673
56758
|
"test:integration": "CK_RUN_CLI_INTEGRATION=1 bun test tests/integration/cli.test.ts",
|
|
@@ -58033,7 +58118,11 @@ async function fetchLatestReleaseTag(kit, beta) {
|
|
|
58033
58118
|
async function promptKitUpdate(beta, yes, deps) {
|
|
58034
58119
|
try {
|
|
58035
58120
|
const execFn = deps?.execAsyncFn ?? execAsync2;
|
|
58036
|
-
const
|
|
58121
|
+
const loadFullConfigFn = deps?.loadFullConfigFn ?? CkConfigManager.loadFull;
|
|
58122
|
+
const confirmFn = deps?.confirmFn ?? se;
|
|
58123
|
+
const isCancelFn = deps?.isCancelFn ?? lD;
|
|
58124
|
+
const getSetupFn = deps?.getSetupFn ?? getClaudeKitSetup;
|
|
58125
|
+
const setup = await getSetupFn();
|
|
58037
58126
|
const hasLocal = !!setup.project.metadata;
|
|
58038
58127
|
const hasGlobal = !!setup.global.metadata;
|
|
58039
58128
|
const localMetadata = hasLocal ? await readMetadataFile(setup.project.path) : null;
|
|
@@ -58063,15 +58152,22 @@ async function promptKitUpdate(beta, yes, deps) {
|
|
|
58063
58152
|
logger.info(`Kit update available: ${kitVersion} -> ${latestTag}`);
|
|
58064
58153
|
}
|
|
58065
58154
|
}
|
|
58066
|
-
|
|
58155
|
+
let autoInit = false;
|
|
58156
|
+
try {
|
|
58157
|
+
const ckConfig = await loadFullConfigFn(null);
|
|
58158
|
+
autoInit = ckConfig.config.updatePipeline?.autoInitAfterUpdate ?? false;
|
|
58159
|
+
} catch {}
|
|
58160
|
+
if (!yes && !autoInit) {
|
|
58067
58161
|
logger.info("");
|
|
58068
|
-
const shouldUpdate = await
|
|
58162
|
+
const shouldUpdate = await confirmFn({
|
|
58069
58163
|
message: promptMessage
|
|
58070
58164
|
});
|
|
58071
|
-
if (
|
|
58165
|
+
if (isCancelFn(shouldUpdate) || !shouldUpdate) {
|
|
58072
58166
|
log.info("Skipped kit content update");
|
|
58073
58167
|
return;
|
|
58074
58168
|
}
|
|
58169
|
+
} else if (autoInit && !yes) {
|
|
58170
|
+
logger.info("Auto-running kit update (updatePipeline.autoInitAfterUpdate is enabled)");
|
|
58075
58171
|
} else {
|
|
58076
58172
|
logger.verbose("Auto-proceeding with kit update (--yes flag)");
|
|
58077
58173
|
}
|
|
@@ -58281,6 +58377,7 @@ Manual update: ${redactCommandForLog(updateCmd)}`;
|
|
|
58281
58377
|
}
|
|
58282
58378
|
var import_compare_versions3, import_fs_extra5, execAsync2, CliUpdateError;
|
|
58283
58379
|
var init_update_cli = __esm(() => {
|
|
58380
|
+
init_ck_config_manager();
|
|
58284
58381
|
init_npm_registry();
|
|
58285
58382
|
init_package_manager_detector();
|
|
58286
58383
|
init_metadata_migration();
|
|
@@ -95391,6 +95488,116 @@ import { join as join108 } from "node:path";
|
|
|
95391
95488
|
init_logger();
|
|
95392
95489
|
init_path_resolver();
|
|
95393
95490
|
var import_fs_extra30 = __toESM(require_lib3(), 1);
|
|
95491
|
+
|
|
95492
|
+
// src/commands/init/phases/post-init-migrate-nudge.ts
|
|
95493
|
+
init_ck_config_manager();
|
|
95494
|
+
init_logger();
|
|
95495
|
+
init_safe_prompts();
|
|
95496
|
+
import { exec as exec8 } from "node:child_process";
|
|
95497
|
+
import { promisify as promisify14 } from "node:util";
|
|
95498
|
+
var execAsync8 = promisify14(exec8);
|
|
95499
|
+
var SAFE_PROVIDER_NAME = /^[a-z0-9-]+$/;
|
|
95500
|
+
async function maybePostInitMigrate(ctx, deps) {
|
|
95501
|
+
if (ctx.cancelled || !ctx.resolvedDir)
|
|
95502
|
+
return;
|
|
95503
|
+
try {
|
|
95504
|
+
const providerRegistry = deps?.detectInstalledProvidersFn && deps?.getProviderConfigFn ? null : await Promise.resolve().then(() => (init_provider_registry(), exports_provider_registry));
|
|
95505
|
+
const portableRegistry = deps?.readPortableRegistryFn ? null : await Promise.resolve().then(() => (init_portable_registry(), exports_portable_registry));
|
|
95506
|
+
const detectInstalledProvidersFn = deps?.detectInstalledProvidersFn ?? providerRegistry?.detectInstalledProviders;
|
|
95507
|
+
const getProviderConfigFn = deps?.getProviderConfigFn ?? providerRegistry?.getProviderConfig;
|
|
95508
|
+
const readPortableRegistryFn = deps?.readPortableRegistryFn ?? portableRegistry?.readPortableRegistry;
|
|
95509
|
+
const loadFullConfigFn = deps?.loadFullConfigFn ?? CkConfigManager.loadFull;
|
|
95510
|
+
if (!detectInstalledProvidersFn || !getProviderConfigFn || !readPortableRegistryFn) {
|
|
95511
|
+
return;
|
|
95512
|
+
}
|
|
95513
|
+
const allProviders = await detectInstalledProvidersFn();
|
|
95514
|
+
const targets = allProviders.filter((p) => p !== "claude-code");
|
|
95515
|
+
if (targets.length === 0)
|
|
95516
|
+
return;
|
|
95517
|
+
const providerNames = targets.map((p) => getProviderConfigFn(p).displayName).join(", ");
|
|
95518
|
+
const registry = await readPortableRegistryFn();
|
|
95519
|
+
const hasHistory = registry.installations.some((i) => i.provider !== "claude-code");
|
|
95520
|
+
const ckConfig = await loadFullConfigFn(ctx.options.global ? null : ctx.resolvedDir);
|
|
95521
|
+
const pipeline = ckConfig.config.updatePipeline;
|
|
95522
|
+
const autoMigrate = pipeline?.autoMigrateAfterInit ?? false;
|
|
95523
|
+
if (autoMigrate) {
|
|
95524
|
+
await runAutoMigrate(ctx, pipeline, targets, providerNames, deps);
|
|
95525
|
+
} else if (!hasHistory && !ctx.isNonInteractive) {
|
|
95526
|
+
await showNudge(ctx, providerNames, deps);
|
|
95527
|
+
}
|
|
95528
|
+
} catch (error) {
|
|
95529
|
+
logger.debug(`Post-init migrate check skipped: ${error instanceof Error ? error.message : "unknown"}`);
|
|
95530
|
+
}
|
|
95531
|
+
}
|
|
95532
|
+
async function showNudge(ctx, providerNames, deps) {
|
|
95533
|
+
const noteFn = deps?.noteFn ?? note;
|
|
95534
|
+
const confirmFn = deps?.confirmFn ?? se;
|
|
95535
|
+
const isCancelFn = deps?.isCancelFn ?? lD;
|
|
95536
|
+
const execAsyncFn = deps?.execAsyncFn ?? execAsync8;
|
|
95537
|
+
noteFn([
|
|
95538
|
+
`Detected providers: ${providerNames}`,
|
|
95539
|
+
"Run `ck migrate` to sync your kit to these providers.",
|
|
95540
|
+
"Set `autoMigrateAfterInit: true` in .ck.json to auto-sync on future updates."
|
|
95541
|
+
].join(`
|
|
95542
|
+
`), "[i] Provider Sync Available");
|
|
95543
|
+
const shouldMigrate = await confirmFn({
|
|
95544
|
+
message: "Run ck migrate now?"
|
|
95545
|
+
});
|
|
95546
|
+
if (isCancelFn(shouldMigrate) || !shouldMigrate)
|
|
95547
|
+
return;
|
|
95548
|
+
const parts = ["ck", "migrate"];
|
|
95549
|
+
if (ctx.options.global)
|
|
95550
|
+
parts.push("-g");
|
|
95551
|
+
parts.push("--yes");
|
|
95552
|
+
const cmd = parts.join(" ");
|
|
95553
|
+
try {
|
|
95554
|
+
logger.info(`Running: ${cmd}`);
|
|
95555
|
+
await execAsyncFn(cmd, { timeout: 300000 });
|
|
95556
|
+
logger.success("Migration complete");
|
|
95557
|
+
} catch (error) {
|
|
95558
|
+
logger.warning(`Migration failed: ${error instanceof Error ? error.message : "unknown"}. Run \`ck migrate\` manually to retry.`);
|
|
95559
|
+
}
|
|
95560
|
+
}
|
|
95561
|
+
async function runAutoMigrate(ctx, pipeline, detectedTargets, providerNames, deps) {
|
|
95562
|
+
const execAsyncFn = deps?.execAsyncFn ?? execAsync8;
|
|
95563
|
+
let providers2;
|
|
95564
|
+
if (!pipeline?.migrateProviders || pipeline.migrateProviders === "auto") {
|
|
95565
|
+
providers2 = detectedTargets;
|
|
95566
|
+
} else if (Array.isArray(pipeline.migrateProviders)) {
|
|
95567
|
+
const invalid = pipeline.migrateProviders.filter((p) => !detectedTargets.includes(p));
|
|
95568
|
+
if (invalid.length > 0) {
|
|
95569
|
+
logger.warning(`Unknown/uninstalled providers in migrateProviders: ${invalid.join(", ")}`);
|
|
95570
|
+
}
|
|
95571
|
+
providers2 = pipeline.migrateProviders.filter((p) => detectedTargets.includes(p));
|
|
95572
|
+
} else {
|
|
95573
|
+
return;
|
|
95574
|
+
}
|
|
95575
|
+
if (providers2.length === 0)
|
|
95576
|
+
return;
|
|
95577
|
+
const safeProviders = providers2.filter((p) => SAFE_PROVIDER_NAME.test(p));
|
|
95578
|
+
if (safeProviders.length !== providers2.length) {
|
|
95579
|
+
logger.warning("Some provider names contain invalid characters and were skipped");
|
|
95580
|
+
}
|
|
95581
|
+
if (safeProviders.length === 0)
|
|
95582
|
+
return;
|
|
95583
|
+
const parts = ["ck", "migrate"];
|
|
95584
|
+
if (ctx.options.global)
|
|
95585
|
+
parts.push("-g");
|
|
95586
|
+
for (const p of safeProviders) {
|
|
95587
|
+
parts.push("--agent", p);
|
|
95588
|
+
}
|
|
95589
|
+
parts.push("--yes");
|
|
95590
|
+
const cmd = parts.join(" ");
|
|
95591
|
+
logger.info(`Auto-migrating to: ${providerNames}`);
|
|
95592
|
+
try {
|
|
95593
|
+
await execAsyncFn(cmd, { timeout: 300000 });
|
|
95594
|
+
logger.success("Auto-migration complete");
|
|
95595
|
+
} catch (error) {
|
|
95596
|
+
logger.warning(`Auto-migration failed: ${error instanceof Error ? error.message : "unknown"}. Run \`ck migrate\` manually to retry.`);
|
|
95597
|
+
}
|
|
95598
|
+
}
|
|
95599
|
+
|
|
95600
|
+
// src/commands/init/phases/post-install-handler.ts
|
|
95394
95601
|
async function handlePostInstall(ctx) {
|
|
95395
95602
|
if (ctx.cancelled || !ctx.extractDir || !ctx.resolvedDir || !ctx.claudeDir) {
|
|
95396
95603
|
return ctx;
|
|
@@ -95460,6 +95667,7 @@ async function handlePostInstall(ctx) {
|
|
|
95460
95667
|
logger.debug(`Project auto-registration skipped: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
95461
95668
|
}
|
|
95462
95669
|
}
|
|
95670
|
+
await maybePostInitMigrate(ctx);
|
|
95463
95671
|
return {
|
|
95464
95672
|
...ctx,
|
|
95465
95673
|
installSkills
|
|
@@ -95500,9 +95708,9 @@ async function detectAccessibleKits() {
|
|
|
95500
95708
|
|
|
95501
95709
|
// src/domains/github/preflight-checker.ts
|
|
95502
95710
|
init_logger();
|
|
95503
|
-
import { exec as
|
|
95504
|
-
import { promisify as
|
|
95505
|
-
var
|
|
95711
|
+
import { exec as exec9 } from "node:child_process";
|
|
95712
|
+
import { promisify as promisify15 } from "node:util";
|
|
95713
|
+
var execAsync9 = promisify15(exec9);
|
|
95506
95714
|
function createSuccessfulPreflightResult() {
|
|
95507
95715
|
return {
|
|
95508
95716
|
success: true,
|
|
@@ -95535,7 +95743,7 @@ async function runPreflightChecks() {
|
|
|
95535
95743
|
errorLines: []
|
|
95536
95744
|
};
|
|
95537
95745
|
try {
|
|
95538
|
-
const { stdout: stdout2 } = await
|
|
95746
|
+
const { stdout: stdout2 } = await execAsync9("gh --version", { timeout: GH_COMMAND_TIMEOUT_MS });
|
|
95539
95747
|
const match2 = stdout2.match(/(\d+\.\d+\.\d+)/);
|
|
95540
95748
|
if (!match2) {
|
|
95541
95749
|
logger.debug(`GitHub CLI version not detected from output: ${stdout2.trim()}`);
|
|
@@ -95573,7 +95781,7 @@ async function runPreflightChecks() {
|
|
|
95573
95781
|
}
|
|
95574
95782
|
}
|
|
95575
95783
|
try {
|
|
95576
|
-
await
|
|
95784
|
+
await execAsync9("gh auth status -h github.com", {
|
|
95577
95785
|
timeout: GH_COMMAND_TIMEOUT_MS,
|
|
95578
95786
|
env: { ...process.env, GH_NO_UPDATE_NOTIFIER: "1" }
|
|
95579
95787
|
});
|