mewkit 1.13.0 → 1.14.1
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/README.md +37 -0
- package/dist/commands/migrate.d.ts +2 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +2 -0
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/validate.js +14 -7
- package/dist/commands/validate.js.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/migrate/apply-env-var-rewrites.d.ts +15 -0
- package/dist/migrate/apply-env-var-rewrites.d.ts.map +1 -0
- package/dist/migrate/apply-env-var-rewrites.js +26 -0
- package/dist/migrate/apply-env-var-rewrites.js.map +1 -0
- package/dist/migrate/config-merger/merge-single-sections.d.ts.map +1 -1
- package/dist/migrate/config-merger/merge-single-sections.js +4 -2
- package/dist/migrate/config-merger/merge-single-sections.js.map +1 -1
- package/dist/migrate/converters/command-to-codex-skill.d.ts +10 -0
- package/dist/migrate/converters/command-to-codex-skill.d.ts.map +1 -0
- package/dist/migrate/converters/command-to-codex-skill.js +88 -0
- package/dist/migrate/converters/command-to-codex-skill.js.map +1 -0
- package/dist/migrate/converters/direct-copy.d.ts +4 -1
- package/dist/migrate/converters/direct-copy.d.ts.map +1 -1
- package/dist/migrate/converters/direct-copy.js +19 -22
- package/dist/migrate/converters/direct-copy.js.map +1 -1
- package/dist/migrate/converters/fm-strip.d.ts.map +1 -1
- package/dist/migrate/converters/fm-strip.js +5 -1
- package/dist/migrate/converters/fm-strip.js.map +1 -1
- package/dist/migrate/converters/fm-to-codex-toml.d.ts +4 -1
- package/dist/migrate/converters/fm-to-codex-toml.d.ts.map +1 -1
- package/dist/migrate/converters/fm-to-codex-toml.js +8 -3
- package/dist/migrate/converters/fm-to-codex-toml.js.map +1 -1
- package/dist/migrate/converters/fm-to-fm.js +4 -4
- package/dist/migrate/converters/fm-to-fm.js.map +1 -1
- package/dist/migrate/converters/fm-to-json.d.ts.map +1 -1
- package/dist/migrate/converters/fm-to-json.js +2 -1
- package/dist/migrate/converters/fm-to-json.js.map +1 -1
- package/dist/migrate/converters/fm-to-yaml.js +1 -1
- package/dist/migrate/converters/fm-to-yaml.js.map +1 -1
- package/dist/migrate/converters/index.d.ts +7 -2
- package/dist/migrate/converters/index.d.ts.map +1 -1
- package/dist/migrate/converters/index.js +8 -8
- package/dist/migrate/converters/index.js.map +1 -1
- package/dist/migrate/converters/mcp-json-to-codex-toml.d.ts +8 -0
- package/dist/migrate/converters/mcp-json-to-codex-toml.d.ts.map +1 -0
- package/dist/migrate/converters/mcp-json-to-codex-toml.js +65 -0
- package/dist/migrate/converters/mcp-json-to-codex-toml.js.map +1 -0
- package/dist/migrate/converters/md-strip.d.ts +10 -1
- package/dist/migrate/converters/md-strip.d.ts.map +1 -1
- package/dist/migrate/converters/md-strip.js +27 -70
- package/dist/migrate/converters/md-strip.js.map +1 -1
- package/dist/migrate/converters/md-to-kiro-steering.js +1 -1
- package/dist/migrate/converters/md-to-kiro-steering.js.map +1 -1
- package/dist/migrate/converters/md-to-mdc.js +1 -1
- package/dist/migrate/converters/md-to-mdc.js.map +1 -1
- package/dist/migrate/converters/md-to-toml.js +1 -1
- package/dist/migrate/converters/md-to-toml.js.map +1 -1
- package/dist/migrate/discovery/config-discovery.d.ts +29 -0
- package/dist/migrate/discovery/config-discovery.d.ts.map +1 -1
- package/dist/migrate/discovery/config-discovery.js +45 -0
- package/dist/migrate/discovery/config-discovery.js.map +1 -1
- package/dist/migrate/discovery/handlers-json-filter.d.ts.map +1 -1
- package/dist/migrate/discovery/handlers-json-filter.js +4 -2
- package/dist/migrate/discovery/handlers-json-filter.js.map +1 -1
- package/dist/migrate/discovery/hooks-discovery.d.ts +5 -0
- package/dist/migrate/discovery/hooks-discovery.d.ts.map +1 -1
- package/dist/migrate/discovery/hooks-discovery.js +21 -5
- package/dist/migrate/discovery/hooks-discovery.js.map +1 -1
- package/dist/migrate/hooks/codex-features-flag.d.ts.map +1 -1
- package/dist/migrate/hooks/codex-features-flag.js +21 -6
- package/dist/migrate/hooks/codex-features-flag.js.map +1 -1
- package/dist/migrate/hooks/codex-hook-wrapper.d.ts +15 -1
- package/dist/migrate/hooks/codex-hook-wrapper.d.ts.map +1 -1
- package/dist/migrate/hooks/codex-hook-wrapper.js +79 -8
- package/dist/migrate/hooks/codex-hook-wrapper.js.map +1 -1
- package/dist/migrate/hooks/codex-mcp-installer.d.ts +9 -0
- package/dist/migrate/hooks/codex-mcp-installer.d.ts.map +1 -0
- package/dist/migrate/hooks/codex-mcp-installer.js +65 -0
- package/dist/migrate/hooks/codex-mcp-installer.js.map +1 -0
- package/dist/migrate/hooks/codex-path-safety.d.ts +29 -0
- package/dist/migrate/hooks/codex-path-safety.d.ts.map +1 -1
- package/dist/migrate/hooks/codex-path-safety.js +36 -1
- package/dist/migrate/hooks/codex-path-safety.js.map +1 -1
- package/dist/migrate/hooks/codex-sh-wrapper-script.d.ts +8 -0
- package/dist/migrate/hooks/codex-sh-wrapper-script.d.ts.map +1 -0
- package/dist/migrate/hooks/codex-sh-wrapper-script.js +118 -0
- package/dist/migrate/hooks/codex-sh-wrapper-script.js.map +1 -0
- package/dist/migrate/hooks/codex-shell-env-installer.d.ts +14 -0
- package/dist/migrate/hooks/codex-shell-env-installer.d.ts.map +1 -0
- package/dist/migrate/hooks/codex-shell-env-installer.js +82 -0
- package/dist/migrate/hooks/codex-shell-env-installer.js.map +1 -0
- package/dist/migrate/hooks/codex-toml-installer.d.ts +2 -0
- package/dist/migrate/hooks/codex-toml-installer.d.ts.map +1 -1
- package/dist/migrate/hooks/codex-toml-installer.js +18 -7
- package/dist/migrate/hooks/codex-toml-installer.js.map +1 -1
- package/dist/migrate/hooks/hooks-settings-merger.d.ts +3 -0
- package/dist/migrate/hooks/hooks-settings-merger.d.ts.map +1 -1
- package/dist/migrate/hooks/hooks-settings-merger.js +157 -21
- package/dist/migrate/hooks/hooks-settings-merger.js.map +1 -1
- package/dist/migrate/migrate-orchestrator.d.ts +19 -0
- package/dist/migrate/migrate-orchestrator.d.ts.map +1 -1
- package/dist/migrate/migrate-orchestrator.js +233 -26
- package/dist/migrate/migrate-orchestrator.js.map +1 -1
- package/dist/migrate/migrate-ui-summary.d.ts +25 -0
- package/dist/migrate/migrate-ui-summary.d.ts.map +1 -1
- package/dist/migrate/migrate-ui-summary.js +50 -0
- package/dist/migrate/migrate-ui-summary.js.map +1 -1
- package/dist/migrate/model-routing-config.d.ts +3 -1
- package/dist/migrate/model-routing-config.d.ts.map +1 -1
- package/dist/migrate/model-routing-config.js +28 -0
- package/dist/migrate/model-routing-config.js.map +1 -1
- package/dist/migrate/portability-policy.d.ts +3 -1
- package/dist/migrate/portability-policy.d.ts.map +1 -1
- package/dist/migrate/portability-policy.js +5 -31
- package/dist/migrate/portability-policy.js.map +1 -1
- package/dist/migrate/portable-installer.d.ts +17 -1
- package/dist/migrate/portable-installer.d.ts.map +1 -1
- package/dist/migrate/portable-installer.js +171 -9
- package/dist/migrate/portable-installer.js.map +1 -1
- package/dist/migrate/provider-registry-utils.d.ts.map +1 -1
- package/dist/migrate/provider-registry-utils.js +5 -0
- package/dist/migrate/provider-registry-utils.js.map +1 -1
- package/dist/migrate/providers/codex/capabilities.d.ts +6 -1
- package/dist/migrate/providers/codex/capabilities.d.ts.map +1 -1
- package/dist/migrate/providers/codex/capabilities.js +87 -0
- package/dist/migrate/providers/codex/capabilities.js.map +1 -1
- package/dist/migrate/providers/codex/config.d.ts.map +1 -1
- package/dist/migrate/providers/codex/config.js +27 -8
- package/dist/migrate/providers/codex/config.js.map +1 -1
- package/dist/migrate/providers/codex/contract.d.ts.map +1 -1
- package/dist/migrate/providers/codex/contract.js +4 -3
- package/dist/migrate/providers/codex/contract.js.map +1 -1
- package/dist/migrate/providers/codex/shell-env-policy-emitter.d.ts +27 -0
- package/dist/migrate/providers/codex/shell-env-policy-emitter.d.ts.map +1 -0
- package/dist/migrate/providers/codex/shell-env-policy-emitter.js +86 -0
- package/dist/migrate/providers/codex/shell-env-policy-emitter.js.map +1 -0
- package/dist/migrate/providers/provider-config-types.d.ts +1 -1
- package/dist/migrate/providers/provider-config-types.d.ts.map +1 -1
- package/dist/migrate/reconcile/index.d.ts +1 -1
- package/dist/migrate/reconcile/index.d.ts.map +1 -1
- package/dist/migrate/reconcile/index.js +1 -1
- package/dist/migrate/reconcile/index.js.map +1 -1
- package/dist/migrate/reconcile/portable-manifest.d.ts +18 -12
- package/dist/migrate/reconcile/portable-manifest.d.ts.map +1 -1
- package/dist/migrate/reconcile/portable-manifest.js +23 -0
- package/dist/migrate/reconcile/portable-manifest.js.map +1 -1
- package/dist/migrate/reconcile/portable-registry.d.ts +30 -30
- package/dist/migrate/reconcile/process-lock.d.ts.map +1 -1
- package/dist/migrate/reconcile/process-lock.js +10 -1
- package/dist/migrate/reconcile/process-lock.js.map +1 -1
- package/dist/migrate/reconcile/reconcile-state-builders.d.ts +12 -5
- package/dist/migrate/reconcile/reconcile-state-builders.d.ts.map +1 -1
- package/dist/migrate/reconcile/reconcile-state-builders.js +2 -2
- package/dist/migrate/reconcile/reconcile-state-builders.js.map +1 -1
- package/dist/migrate/references/codex-command-skill-path.d.ts +12 -0
- package/dist/migrate/references/codex-command-skill-path.d.ts.map +1 -0
- package/dist/migrate/references/codex-command-skill-path.js +27 -0
- package/dist/migrate/references/codex-command-skill-path.js.map +1 -0
- package/dist/migrate/references/env-var-rewrite-table.d.ts +36 -0
- package/dist/migrate/references/env-var-rewrite-table.d.ts.map +1 -0
- package/dist/migrate/references/env-var-rewrite-table.js +97 -0
- package/dist/migrate/references/env-var-rewrite-table.js.map +1 -0
- package/dist/migrate/references/fence-aware-reference-rewriter.d.ts +30 -0
- package/dist/migrate/references/fence-aware-reference-rewriter.d.ts.map +1 -0
- package/dist/migrate/references/fence-aware-reference-rewriter.js +182 -0
- package/dist/migrate/references/fence-aware-reference-rewriter.js.map +1 -0
- package/dist/migrate/references/reference-classifier.d.ts +27 -0
- package/dist/migrate/references/reference-classifier.d.ts.map +1 -0
- package/dist/migrate/references/reference-classifier.js +177 -0
- package/dist/migrate/references/reference-classifier.js.map +1 -0
- package/dist/migrate/references/reference-target-registry.d.ts +42 -0
- package/dist/migrate/references/reference-target-registry.d.ts.map +1 -0
- package/dist/migrate/references/reference-target-registry.js +100 -0
- package/dist/migrate/references/reference-target-registry.js.map +1 -0
- package/dist/migrate/references/reference-types.d.ts +23 -0
- package/dist/migrate/references/reference-types.d.ts.map +1 -0
- package/dist/migrate/references/reference-types.js +5 -0
- package/dist/migrate/references/reference-types.js.map +1 -0
- package/dist/migrate/runtime-compat-audit.d.ts +3 -1
- package/dist/migrate/runtime-compat-audit.d.ts.map +1 -1
- package/dist/migrate/runtime-compat-audit.js +10 -5
- package/dist/migrate/runtime-compat-audit.js.map +1 -1
- package/dist/migrate/runtime-coupling-patterns.d.ts +32 -3
- package/dist/migrate/runtime-coupling-patterns.d.ts.map +1 -1
- package/dist/migrate/runtime-coupling-patterns.js +51 -8
- package/dist/migrate/runtime-coupling-patterns.js.map +1 -1
- package/dist/migrate/skill-directory-audit.d.ts +17 -0
- package/dist/migrate/skill-directory-audit.d.ts.map +1 -1
- package/dist/migrate/skill-directory-audit.js +70 -11
- package/dist/migrate/skill-directory-audit.js.map +1 -1
- package/dist/migrate/skill-directory-installer.d.ts +5 -0
- package/dist/migrate/skill-directory-installer.d.ts.map +1 -1
- package/dist/migrate/skill-directory-installer.js +115 -9
- package/dist/migrate/skill-directory-installer.js.map +1 -1
- package/dist/migrate/state-changing-script-detector.d.ts +16 -0
- package/dist/migrate/state-changing-script-detector.d.ts.map +1 -0
- package/dist/migrate/state-changing-script-detector.js +144 -0
- package/dist/migrate/state-changing-script-detector.js.map +1 -0
- package/dist/migrate/types.d.ts +20 -10
- package/dist/migrate/types.d.ts.map +1 -1
- package/dist/migrate/types.js +4 -0
- package/dist/migrate/types.js.map +1 -1
- package/dist/migrate/validation/migrate-conversion-report.d.ts +48 -0
- package/dist/migrate/validation/migrate-conversion-report.d.ts.map +1 -0
- package/dist/migrate/validation/migrate-conversion-report.js +146 -0
- package/dist/migrate/validation/migrate-conversion-report.js.map +1 -0
- package/dist/migrate/validation/migration-ledger-inputs.d.ts +56 -0
- package/dist/migrate/validation/migration-ledger-inputs.d.ts.map +1 -0
- package/dist/migrate/validation/migration-ledger-inputs.js +160 -0
- package/dist/migrate/validation/migration-ledger-inputs.js.map +1 -0
- package/dist/migrate/validation/migration-record-types.d.ts +38 -0
- package/dist/migrate/validation/migration-record-types.d.ts.map +1 -0
- package/dist/migrate/validation/migration-record-types.js +12 -0
- package/dist/migrate/validation/migration-record-types.js.map +1 -0
- package/dist/migrate/validation/migration-report-writer.d.ts +98 -0
- package/dist/migrate/validation/migration-report-writer.d.ts.map +1 -0
- package/dist/migrate/validation/migration-report-writer.js +0 -0
- package/dist/migrate/validation/migration-report-writer.js.map +1 -0
- package/dist/migrate/validation/unresolved-reference-scanner.d.ts +18 -0
- package/dist/migrate/validation/unresolved-reference-scanner.d.ts.map +1 -0
- package/dist/migrate/validation/unresolved-reference-scanner.js +47 -0
- package/dist/migrate/validation/unresolved-reference-scanner.js.map +1 -0
- package/package.json +1 -1
- package/portable-manifest.json +10 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Main migration orchestrator. Composes all phases into runMigrate(options).
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
3
|
import { readFile } from "node:fs/promises";
|
|
4
|
-
import { join } from "node:path";
|
|
4
|
+
import { join, relative } from "node:path";
|
|
5
5
|
import * as p from "@clack/prompts";
|
|
6
6
|
import pc from "picocolors";
|
|
7
7
|
import { applyMewkitOverrides } from "./provider-overrides.js";
|
|
@@ -12,13 +12,25 @@ import { providers } from "./provider-registry.js";
|
|
|
12
12
|
import { detectProviderPathCollisions, getPortableInstallPath } from "./provider-registry-utils.js";
|
|
13
13
|
import { acquireMigrationLock, buildSourceItemState, buildTargetStates, buildTypeDirectoryStates, generateDiff, loadPortableEvolutionManifest, readPortableRegistry, reconcile, releaseMigrationLock, resolveConflict, updateAppliedManifestVersion, } from "./reconcile/index.js";
|
|
14
14
|
import { convertItem } from "./converters/index.js";
|
|
15
|
+
import { buildConversionReport, MigrationLedger } from "./validation/migrate-conversion-report.js";
|
|
16
|
+
import { buildRunRecords } from "./validation/migration-ledger-inputs.js";
|
|
17
|
+
import { buildMigrationReport, writeMigrationReport } from "./validation/migration-report-writer.js";
|
|
18
|
+
import { discoverEnvKeys } from "./discovery/config-discovery.js";
|
|
19
|
+
import { emitShellEnvPolicyScaffold } from "./providers/codex/shell-env-policy-emitter.js";
|
|
20
|
+
import { getCodexRoot } from "./hooks/codex-path-safety.js";
|
|
21
|
+
import { formatMcpIncludeRerunCommand } from "./migrate-ui-summary.js";
|
|
22
|
+
import { convertMcpJsonToCodexToml } from "./converters/mcp-json-to-codex-toml.js";
|
|
23
|
+
import { installCodexMcpServers } from "./hooks/codex-mcp-installer.js";
|
|
24
|
+
import { installCodexShellEnvPolicy } from "./hooks/codex-shell-env-installer.js";
|
|
25
|
+
import { CODEX_MIN_SUPPORTED_VERSION } from "./providers/codex/capabilities.js";
|
|
26
|
+
import { createReferenceIntegrityIndex, } from "./references/fence-aware-reference-rewriter.js";
|
|
15
27
|
import { codexBulkActionShim, providerKey, skillActionShim } from "./migrate-action-shims.js";
|
|
16
28
|
import { executeDeleteAction, executeInstallAction } from "./portable-installer.js";
|
|
17
29
|
import { installSkillDirectory } from "./skill-directory-installer.js";
|
|
18
30
|
import { buildInstalledBackRef } from "../core/install-metadata-backref.js";
|
|
19
31
|
import { installCodexAgents, mergeHooksSettings } from "./hooks/index.js";
|
|
20
32
|
import { loadModelRoutingConfig } from "./model-routing-config.js";
|
|
21
|
-
import { printActionDetails, printFinalSummary, printPreflight } from "./migrate-ui-summary.js";
|
|
33
|
+
import { printActionDetails, printFinalSummary, printPreflight, printReportPath } from "./migrate-ui-summary.js";
|
|
22
34
|
import { collectProviderContractDiagnostics, summarizeProviderContractDiagnostics, } from "./provider-contract-diagnostics.js";
|
|
23
35
|
import { buildPortableSkillsByProvider, buildSkillDryRunMessages, filterPlanForPortability, summarizeRuleMigrationByProvider, } from "./portability-policy.js";
|
|
24
36
|
export async function runMigrate(options, ctx) {
|
|
@@ -54,7 +66,10 @@ async function runMigrateUnderLock(options, ctx, scope, targets, isGlobal, model
|
|
|
54
66
|
bundledKitDir: ctx.bundledKitDir,
|
|
55
67
|
});
|
|
56
68
|
spinner?.stop("Discovery complete.");
|
|
57
|
-
|
|
69
|
+
// Built once, up front: threaded into BOTH the reconcile preview (buildSourceItemState)
|
|
70
|
+
// and the install path so the codex-agent preview checksum matches install output.
|
|
71
|
+
const migratedRefs = buildMigratedRefsIndex(discovered);
|
|
72
|
+
const sourceItems = flattenForReconcile(discovered).map((item) => buildSourceItemState(item, item.type, targets, { migratedRefs }));
|
|
58
73
|
const registry = await readPortableRegistry();
|
|
59
74
|
const manifest = await loadPortableEvolutionManifest(ctx.bundledKitDir, registry);
|
|
60
75
|
const targetStates = await buildTargetStates(registry.installations);
|
|
@@ -70,7 +85,7 @@ async function runMigrateUnderLock(options, ctx, scope, targets, isGlobal, model
|
|
|
70
85
|
respectDeletions: options.respectDeletions,
|
|
71
86
|
});
|
|
72
87
|
const itemsByT = itemsByType(discovered);
|
|
73
|
-
const portabilityFiltered = filterPlanForPortability(plan, itemsByT);
|
|
88
|
+
const portabilityFiltered = filterPlanForPortability(plan, itemsByT, { allRules: options.allRules });
|
|
74
89
|
const portableSkills = await buildPortableSkillsByProvider(discovered.skills, targets);
|
|
75
90
|
const ruleSummaries = summarizeRuleMigrationByProvider(discovered.rules, targets);
|
|
76
91
|
const skillDryRunMessages = buildSkillDryRunMessages(portableSkills.skillsByProvider, targets);
|
|
@@ -85,6 +100,32 @@ async function runMigrateUnderLock(options, ctx, scope, targets, isGlobal, model
|
|
|
85
100
|
}) ?? "";
|
|
86
101
|
}
|
|
87
102
|
}
|
|
103
|
+
const mcpSourcePath = join(process.cwd(), ".mcp.json");
|
|
104
|
+
const mcpApplicable = targets.includes("codex") && existsSync(mcpSourcePath);
|
|
105
|
+
const mcpBanners = [];
|
|
106
|
+
if (mcpApplicable) {
|
|
107
|
+
mcpBanners.push(options.includeMcp
|
|
108
|
+
? ".mcp.json will be merged into .codex/config.toml [mcp_servers] (--include-mcp)"
|
|
109
|
+
: ".mcp.json detected but not migrated — opt in with --include-mcp");
|
|
110
|
+
}
|
|
111
|
+
// When .mcp.json exists but --include-mcp is off, surface the exact re-run command
|
|
112
|
+
// (Phase 5 field on PreflightContext); undefined otherwise.
|
|
113
|
+
const mcpIncludeAdvisory = mcpApplicable && !options.includeMcp
|
|
114
|
+
? { rerunCommand: formatMcpIncludeRerunCommand(["mewkit", ...ctx.argv]) }
|
|
115
|
+
: undefined;
|
|
116
|
+
// Phase 5 shell-env scaffold: from .claude/.env KEY NAMES only (no values). The
|
|
117
|
+
// scaffold text is emitted into the codex config output; the aggregate count of
|
|
118
|
+
// secret-like key names omitted is recorded in the report (names never surface).
|
|
119
|
+
let secretKeysOmitted = 0;
|
|
120
|
+
let shellEnvScaffold = "";
|
|
121
|
+
if (targets.includes("codex")) {
|
|
122
|
+
const envKeys = await discoverEnvKeys(join(discovered.source.root, ".env"));
|
|
123
|
+
const scaffold = emitShellEnvPolicyScaffold(envKeys);
|
|
124
|
+
secretKeysOmitted = scaffold.omittedSecretCount;
|
|
125
|
+
shellEnvScaffold = scaffold.content;
|
|
126
|
+
for (const warning of scaffold.warnings)
|
|
127
|
+
mcpBanners.push(warning);
|
|
128
|
+
}
|
|
88
129
|
const collisions = detectProviderPathCollisions(targets, { global: isGlobal });
|
|
89
130
|
const collisionBanners = collisions.map((c) => `Shared target: ${c.path} (${c.portableType}) used by ${c.providers.join(" + ")} — each provider writes the same content here`);
|
|
90
131
|
const modelRoutingBanners = modelRoutingWarnings.map((warning) => `Model routing: ${warning}`);
|
|
@@ -92,6 +133,14 @@ async function runMigrateUnderLock(options, ctx, scope, targets, isGlobal, model
|
|
|
92
133
|
const manifestBanners = manifest && manifestCleanupCount > 0
|
|
93
134
|
? [`Portable manifest ${manifest.mewkitVersion}: ${manifestCleanupCount} cleanup action(s) planned`]
|
|
94
135
|
: [];
|
|
136
|
+
// In-memory conversion pass: classifier decisions, budget projections, and
|
|
137
|
+
// the unresolved-reference invariant check all land in the preflight report.
|
|
138
|
+
const conversionReport = buildConversionReport({
|
|
139
|
+
actions: portabilityFiltered.plan.actions,
|
|
140
|
+
itemsByType: itemsByT,
|
|
141
|
+
skillsByProvider: portableSkills.skillsByProvider,
|
|
142
|
+
migratedRefs,
|
|
143
|
+
});
|
|
95
144
|
printPreflight(portabilityFiltered.plan, {
|
|
96
145
|
source: { root: discovered.source.root, origin: discovered.source.origin },
|
|
97
146
|
skippedShellHooks: discovered.skippedShellHooks.length,
|
|
@@ -99,24 +148,31 @@ async function runMigrateUnderLock(options, ctx, scope, targets, isGlobal, model
|
|
|
99
148
|
...collisionBanners,
|
|
100
149
|
...modelRoutingBanners,
|
|
101
150
|
...manifestBanners,
|
|
151
|
+
...mcpBanners,
|
|
102
152
|
...portabilityFiltered.skipMessages,
|
|
103
153
|
...portableSkills.skipMessages,
|
|
104
154
|
...providerDiagnosticMessages,
|
|
105
155
|
...ruleSummaries.flatMap((summary) => summary.messages),
|
|
106
156
|
...skillDryRunMessages,
|
|
107
157
|
],
|
|
158
|
+
conversionReport,
|
|
159
|
+
mcpIncludeAdvisory,
|
|
108
160
|
});
|
|
109
161
|
if (options.dryRun) {
|
|
110
162
|
printActionDetails(portabilityFiltered.plan.actions);
|
|
111
163
|
console.log();
|
|
112
164
|
console.log(pc.dim("(dry run — no files written)"));
|
|
113
|
-
return 0;
|
|
165
|
+
return conversionReport.validationErrors.length > 0 ? 1 : 0;
|
|
166
|
+
}
|
|
167
|
+
if (conversionReport.validationErrors.length > 0) {
|
|
168
|
+
console.error(pc.red("Aborting before install: the reference rewriter left unexplained source references (see above)."));
|
|
169
|
+
return 1;
|
|
114
170
|
}
|
|
115
171
|
// Compute diffs lazily for conflicting actions so the "Show diff" prompt has data.
|
|
116
172
|
for (const action of portabilityFiltered.plan.actions) {
|
|
117
173
|
if (action.action !== "conflict")
|
|
118
174
|
continue;
|
|
119
|
-
await attachConflictDiff(action, itemsByT);
|
|
175
|
+
await attachConflictDiff(action, itemsByT, migratedRefs);
|
|
120
176
|
const policy = options.force ? "overwrite" : "keep";
|
|
121
177
|
const resolution = await resolveConflict(action, {
|
|
122
178
|
interactive: !!process.stdout.isTTY && !options.yes,
|
|
@@ -135,13 +191,92 @@ async function runMigrateUnderLock(options, ctx, scope, targets, isGlobal, model
|
|
|
135
191
|
// One-way bridge: link exported assets back to the installed metadata they
|
|
136
192
|
// came from. Absent installed metadata yields null and the bridge is omitted.
|
|
137
193
|
const installedBackRef = buildInstalledBackRef(discovered.source.root);
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
194
|
+
// The ledger accumulates every run-time decision; it is serialized in the
|
|
195
|
+
// finally-path below so the outcome is persisted even on a partial failure.
|
|
196
|
+
const ledger = new MigrationLedger();
|
|
197
|
+
const reportProvider = targets.includes("codex") ? "codex" : targets[0];
|
|
198
|
+
const reportVersion = manifest?.mewkitVersion ?? "unknown";
|
|
199
|
+
// Orchestrator-owned accumulators: retained by the finally-path even if
|
|
200
|
+
// executePlan throws mid-run, so the report captures what happened up to then.
|
|
201
|
+
const sink = { results: [], outcomes: new Map(), phaseRecords: [] };
|
|
202
|
+
try {
|
|
203
|
+
const executed = await executePlan(portabilityFiltered.plan.actions, { allItems: itemsByT, installedBackRef, migratedRefs }, portableSkills.skillsByProvider, targets, isGlobal, scope.skills, join(discovered.source.root, "settings.json"), sink);
|
|
204
|
+
// Emit the [shell_environment_policy] scaffold into the codex config output
|
|
205
|
+
// (real run, idempotent managed block). Failure is non-fatal but recorded.
|
|
206
|
+
if (targets.includes("codex") && shellEnvScaffold.length > 0) {
|
|
207
|
+
const envResult = await installCodexShellEnvPolicy(shellEnvScaffold, { global: isGlobal });
|
|
208
|
+
if (!envResult.success) {
|
|
209
|
+
console.error(pc.red(`[x] shell_environment_policy scaffold write failed: ${envResult.error}`));
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
let mcpFailed = false;
|
|
213
|
+
if (mcpApplicable && options.includeMcp) {
|
|
214
|
+
mcpFailed = !(await migrateMcpServers(mcpSourcePath, isGlobal));
|
|
215
|
+
}
|
|
216
|
+
printFinalSummary(executed.results);
|
|
217
|
+
const hasFailures = executed.results.some((r) => !r.success);
|
|
218
|
+
if (!hasFailures && manifest) {
|
|
219
|
+
await updateAppliedManifestVersion(manifest.mewkitVersion);
|
|
220
|
+
}
|
|
221
|
+
return hasFailures || mcpFailed ? 1 : 0;
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
// Persist what happened — even on partial failure. A failed report write is
|
|
225
|
+
// logged but NEVER masks the original run exception (it is re-thrown by the
|
|
226
|
+
// finally semantics because we do not swallow it). The sink holds outcomes
|
|
227
|
+
// accumulated up to a mid-run throw. The report is provider-parameterized but
|
|
228
|
+
// codex is the first (and today only) consumer with a resolved output dir, so
|
|
229
|
+
// non-codex runs are left byte-for-byte unchanged.
|
|
230
|
+
if (targets.includes("codex")) {
|
|
231
|
+
ledger.addAll(buildRunRecords({
|
|
232
|
+
discovered,
|
|
233
|
+
provider: reportProvider,
|
|
234
|
+
outcomes: sink.outcomes,
|
|
235
|
+
phaseRecords: sink.phaseRecords,
|
|
236
|
+
preservedOccurrences: conversionReport.preservedOccurrences,
|
|
237
|
+
}));
|
|
238
|
+
const report = buildMigrationReport({
|
|
239
|
+
provider: reportProvider,
|
|
240
|
+
version: reportVersion,
|
|
241
|
+
records: ledger.all(),
|
|
242
|
+
budgetLines: conversionReport.budgetLines,
|
|
243
|
+
secretKeysOmitted,
|
|
244
|
+
codexMinSupportedVersion: CODEX_MIN_SUPPORTED_VERSION,
|
|
245
|
+
});
|
|
246
|
+
try {
|
|
247
|
+
const outputDir = getCodexRoot({ global: isGlobal });
|
|
248
|
+
const written = await writeMigrationReport(report, outputDir);
|
|
249
|
+
printReportPath(written.verdictLine);
|
|
250
|
+
}
|
|
251
|
+
catch (writeErr) {
|
|
252
|
+
// Log the write failure without masking whatever the run was already doing.
|
|
253
|
+
console.error(pc.red(`[x] Failed to write migration report: ${writeErr instanceof Error ? writeErr.message : String(writeErr)}`));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/** Opt-in .mcp.json → config.toml [mcp_servers] migration for the Codex target. */
|
|
259
|
+
async function migrateMcpServers(mcpSourcePath, isGlobal) {
|
|
260
|
+
try {
|
|
261
|
+
const raw = await readFile(mcpSourcePath, "utf-8");
|
|
262
|
+
const converted = convertMcpJsonToCodexToml(raw);
|
|
263
|
+
for (const warning of converted.warnings) {
|
|
264
|
+
console.log(pc.yellow(`[!] ${warning}`));
|
|
265
|
+
}
|
|
266
|
+
if (!converted.content)
|
|
267
|
+
return true;
|
|
268
|
+
const result = await installCodexMcpServers(converted.content, { global: isGlobal });
|
|
269
|
+
if (!result.success) {
|
|
270
|
+
console.error(pc.red(`[x] MCP server merge failed: ${result.error}`));
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
console.log(pc.green(`[+] Merged ${converted.serverNames.length} MCP server(s) into ${result.configPath}`));
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
catch (err) {
|
|
277
|
+
console.error(pc.red(`[x] MCP migration failed: ${err instanceof Error ? err.message : String(err)}`));
|
|
278
|
+
return false;
|
|
143
279
|
}
|
|
144
|
-
return hasFailures ? 1 : 0;
|
|
145
280
|
}
|
|
146
281
|
async function confirmExecution(count) {
|
|
147
282
|
const choice = await p.confirm({
|
|
@@ -152,8 +287,32 @@ async function confirmExecution(count) {
|
|
|
152
287
|
return false;
|
|
153
288
|
return choice === true;
|
|
154
289
|
}
|
|
155
|
-
|
|
156
|
-
|
|
290
|
+
/**
|
|
291
|
+
* Build the migration-set membership index used by the fenced-reference
|
|
292
|
+
* integrity check: source-relative reference forms of every discovered item.
|
|
293
|
+
*/
|
|
294
|
+
function buildMigratedRefsIndex(discovered) {
|
|
295
|
+
const entries = [];
|
|
296
|
+
const root = discovered.source.root;
|
|
297
|
+
for (const item of [...discovered.agents, ...discovered.commands, ...discovered.rules, ...discovered.hooks]) {
|
|
298
|
+
const rel = relative(root, item.sourcePath).replace(/\\/g, "/");
|
|
299
|
+
if (!rel.startsWith(".."))
|
|
300
|
+
entries.push(`.claude/${rel}`);
|
|
301
|
+
}
|
|
302
|
+
if (discovered.config)
|
|
303
|
+
entries.push("CLAUDE.md");
|
|
304
|
+
for (const skill of discovered.skills) {
|
|
305
|
+
entries.push(`.claude/skills/${skill.dirName}/`);
|
|
306
|
+
}
|
|
307
|
+
return createReferenceIntegrityIndex(entries);
|
|
308
|
+
}
|
|
309
|
+
function recordOutcome(outcomes, type, source, outcome) {
|
|
310
|
+
outcomes.set(`${type}:${source}`, outcome);
|
|
311
|
+
}
|
|
312
|
+
async function executePlan(actions, ctx, skillsByProvider, targets, isGlobal, skillsScopeEnabled, sourceSettingsPath, sink) {
|
|
313
|
+
const results = sink.results;
|
|
314
|
+
const outcomes = sink.outcomes;
|
|
315
|
+
const phaseRecords = sink.phaseRecords;
|
|
157
316
|
const codexAgentActions = new Set();
|
|
158
317
|
const codexHookActions = new Set();
|
|
159
318
|
const hookTargetPathsByProvider = new Map();
|
|
@@ -170,10 +329,21 @@ async function executePlan(actions, ctx, skillsByProvider, targets, isGlobal, sk
|
|
|
170
329
|
hookTargetPathsByProvider.set(target, providerMap);
|
|
171
330
|
}
|
|
172
331
|
for (const action of actions) {
|
|
173
|
-
if (action.action === "skip")
|
|
332
|
+
if (action.action === "skip") {
|
|
333
|
+
// A no-op skip means the artifact is already present on the target — it is
|
|
334
|
+
// migrated (installed), not absent. Only a user-deleted-respected skip
|
|
335
|
+
// leaves the target absent. Recording this keeps re-run reports honest and
|
|
336
|
+
// the migrated/skipped identity stable across idempotent runs.
|
|
337
|
+
if (action.reasonCode !== "user-deleted-respected" && action.reasonCode !== "source-removed-orphan") {
|
|
338
|
+
recordOutcome(outcomes, action.type, action.item, { outcome: "migrated", target: action.targetPath || undefined });
|
|
339
|
+
}
|
|
174
340
|
continue;
|
|
175
|
-
|
|
341
|
+
}
|
|
342
|
+
if (action.action === "conflict" && action.resolution?.type === "keep") {
|
|
343
|
+
// User kept their edited target — the artifact is still installed (migrated).
|
|
344
|
+
recordOutcome(outcomes, action.type, action.item, { outcome: "migrated", target: action.targetPath || undefined });
|
|
176
345
|
continue;
|
|
346
|
+
}
|
|
177
347
|
if (action.provider === "codex" && action.type === "agent") {
|
|
178
348
|
if (action.action !== "delete") {
|
|
179
349
|
codexAgentActions.add(action.item);
|
|
@@ -193,6 +363,15 @@ async function executePlan(actions, ctx, skillsByProvider, targets, isGlobal, sk
|
|
|
193
363
|
else {
|
|
194
364
|
const result = await executeInstallAction(action, ctx);
|
|
195
365
|
results.push(result);
|
|
366
|
+
phaseRecords.push(...(result.records ?? []));
|
|
367
|
+
if (result.success) {
|
|
368
|
+
recordOutcome(outcomes, action.type, action.item, { outcome: "migrated", target: action.targetPath });
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
// executeInstallAction returns audit failures as structured errors; treat
|
|
372
|
+
// any non-success as a failed outcome (audit vs conversion reason is on the record).
|
|
373
|
+
recordOutcome(outcomes, action.type, action.item, { outcome: "failed", error: result.error });
|
|
374
|
+
}
|
|
196
375
|
if (result.success && action.type === "hooks") {
|
|
197
376
|
const provider = action.provider;
|
|
198
377
|
const providerMap = hookTargetPathsByProvider.get(provider) ?? new Map();
|
|
@@ -202,21 +381,36 @@ async function executePlan(actions, ctx, skillsByProvider, targets, isGlobal, sk
|
|
|
202
381
|
}
|
|
203
382
|
}
|
|
204
383
|
catch (err) {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
384
|
+
// An internal (non-audit) installer exception: record as failed with an
|
|
385
|
+
// internal-error reason rather than letting the artifact vanish silently.
|
|
386
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
387
|
+
results.push({ action, success: false, error: message });
|
|
388
|
+
if (action.action !== "delete") {
|
|
389
|
+
recordOutcome(outcomes, action.type, action.item, {
|
|
390
|
+
outcome: "failed",
|
|
391
|
+
error: message,
|
|
392
|
+
internalError: true,
|
|
393
|
+
});
|
|
394
|
+
}
|
|
210
395
|
}
|
|
211
396
|
}
|
|
212
397
|
if (targets.includes("codex") && codexAgentActions.size > 0) {
|
|
213
398
|
const agentsToWrite = ctx.allItems.agent.filter((agent) => codexAgentActions.has(agent.name));
|
|
214
|
-
const result = await installCodexAgents(agentsToWrite, {
|
|
399
|
+
const result = await installCodexAgents(agentsToWrite, {
|
|
400
|
+
global: isGlobal,
|
|
401
|
+
configAgents: agentsToWrite,
|
|
402
|
+
migratedRefs: ctx.migratedRefs,
|
|
403
|
+
});
|
|
215
404
|
results.push({
|
|
216
405
|
action: codexBulkActionShim("agent", "codex", isGlobal, result.written),
|
|
217
406
|
success: result.success,
|
|
218
407
|
error: result.error,
|
|
219
408
|
});
|
|
409
|
+
// The bulk install is all-or-nothing; record each batched agent's outcome so the
|
|
410
|
+
// per-artifact report is not left blank for the 24 codex agents.
|
|
411
|
+
for (const agent of agentsToWrite) {
|
|
412
|
+
recordOutcome(outcomes, "agent", agent.name, result.success ? { outcome: "migrated" } : { outcome: "failed", error: result.error });
|
|
413
|
+
}
|
|
220
414
|
}
|
|
221
415
|
const hookProviders = targets.filter((target) => providers[target].hooks);
|
|
222
416
|
if (ctx.allItems.hooks.length > 0 && hookProviders.length > 0) {
|
|
@@ -235,6 +429,12 @@ async function executePlan(actions, ctx, skillsByProvider, targets, isGlobal, sk
|
|
|
235
429
|
success: result.success,
|
|
236
430
|
error: result.error,
|
|
237
431
|
});
|
|
432
|
+
// Thread the Phase 2 per-hook decision records (codex today) into the ledger,
|
|
433
|
+
// and record a baseline migrated/failed outcome per hook item in the batch.
|
|
434
|
+
phaseRecords.push(...(result.records ?? []));
|
|
435
|
+
for (const hook of hookItems) {
|
|
436
|
+
recordOutcome(outcomes, "hooks", hook.name, result.success ? { outcome: "migrated" } : { outcome: "failed", error: result.error });
|
|
437
|
+
}
|
|
238
438
|
}
|
|
239
439
|
}
|
|
240
440
|
if (skillsScopeEnabled) {
|
|
@@ -243,16 +443,23 @@ async function executePlan(actions, ctx, skillsByProvider, targets, isGlobal, sk
|
|
|
243
443
|
continue;
|
|
244
444
|
const skills = skillsByProvider.get(target) ?? [];
|
|
245
445
|
for (const skill of skills) {
|
|
246
|
-
const r = await installSkillDirectory(skill, target, {
|
|
446
|
+
const r = await installSkillDirectory(skill, target, {
|
|
447
|
+
global: isGlobal,
|
|
448
|
+
installedBackRef: ctx.installedBackRef,
|
|
449
|
+
migratedRefs: ctx.migratedRefs,
|
|
450
|
+
});
|
|
247
451
|
results.push({
|
|
248
452
|
action: skillActionShim(skill, target, isGlobal, r.path ?? ""),
|
|
249
453
|
success: r.success,
|
|
250
454
|
error: r.error,
|
|
455
|
+
records: r.records,
|
|
251
456
|
});
|
|
457
|
+
phaseRecords.push(...(r.records ?? []));
|
|
458
|
+
recordOutcome(outcomes, "skill", skill.name, r.success ? { outcome: "migrated", target: r.path } : { outcome: "failed", error: r.error });
|
|
252
459
|
}
|
|
253
460
|
}
|
|
254
461
|
}
|
|
255
|
-
return results;
|
|
462
|
+
return { results, outcomes, phaseRecords };
|
|
256
463
|
}
|
|
257
464
|
/**
|
|
258
465
|
* Read the on-disk target file, run the converter against the matching source item,
|
|
@@ -260,7 +467,7 @@ async function executePlan(actions, ctx, skillsByProvider, targets, isGlobal, sk
|
|
|
260
467
|
* has real content. Best-effort — silent failures leave action.diff undefined and
|
|
261
468
|
* the resolver will display "[i] Diff not available."
|
|
262
469
|
*/
|
|
263
|
-
async function attachConflictDiff(action, itemsByT) {
|
|
470
|
+
async function attachConflictDiff(action, itemsByT, migratedRefs) {
|
|
264
471
|
if (action.diff)
|
|
265
472
|
return;
|
|
266
473
|
if (!action.targetPath || !existsSync(action.targetPath))
|
|
@@ -274,7 +481,7 @@ async function attachConflictDiff(action, itemsByT) {
|
|
|
274
481
|
return;
|
|
275
482
|
try {
|
|
276
483
|
const targetContent = await readFile(action.targetPath, "utf-8");
|
|
277
|
-
const conversion = convertItem(sourceItem, pathConfig.format, action.provider);
|
|
484
|
+
const conversion = convertItem(sourceItem, pathConfig.format, action.provider, { migratedRefs });
|
|
278
485
|
if (conversion.error)
|
|
279
486
|
return;
|
|
280
487
|
action.diff = generateDiff(targetContent, conversion.content, action.item);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-orchestrator.js","sourceRoot":"","sources":["../../src/migrate/migrate-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrate-orchestrator.js","sourceRoot":"","sources":["../../src/migrate/migrate-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ReconcileAction, ReconcilePlan } from "./reconcile/reconcile-types.js";
|
|
2
2
|
import type { InstallResult } from "./portable-installer.js";
|
|
3
|
+
import type { ConversionReport } from "./validation/migrate-conversion-report.js";
|
|
3
4
|
export interface PreflightContext {
|
|
4
5
|
source: {
|
|
5
6
|
root: string;
|
|
@@ -7,8 +8,32 @@ export interface PreflightContext {
|
|
|
7
8
|
};
|
|
8
9
|
skippedShellHooks: number;
|
|
9
10
|
bannerExtras: string[];
|
|
11
|
+
conversionReport?: ConversionReport;
|
|
12
|
+
/**
|
|
13
|
+
* When `.mcp.json` was detected but `--include-mcp` is off, this carries the
|
|
14
|
+
* advisory so the preflight can print the exact re-run command. Undefined when
|
|
15
|
+
* not applicable (no .mcp.json, or the flag is already on).
|
|
16
|
+
*/
|
|
17
|
+
mcpIncludeAdvisory?: McpIncludeAdvisory;
|
|
10
18
|
}
|
|
19
|
+
/** Advisory that `.mcp.json` exists but is not being migrated (flag off). */
|
|
20
|
+
export interface McpIncludeAdvisory {
|
|
21
|
+
/** The exact command the user should re-run to include MCP servers. */
|
|
22
|
+
rerunCommand: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Build the exact `--include-mcp` re-run command from the original argv. The
|
|
26
|
+
* command is normalized to a `mewkit migrate ... --include-mcp` invocation so the
|
|
27
|
+
* user can copy-paste it verbatim. `--include-mcp` is appended only when absent.
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatMcpIncludeRerunCommand(argv: readonly string[]): string;
|
|
11
30
|
export declare function printPreflight(plan: ReconcilePlan, ctx: PreflightContext): void;
|
|
12
31
|
export declare function printActionDetails(actions: ReconcileAction[]): void;
|
|
32
|
+
/**
|
|
33
|
+
* Print the persisted migration-report path + verdict line at the end of a run.
|
|
34
|
+
* The verdict line already embeds the path; this keeps report presentation in the
|
|
35
|
+
* UI layer alongside the other run printers.
|
|
36
|
+
*/
|
|
37
|
+
export declare function printReportPath(verdictLine: string): void;
|
|
13
38
|
export declare function printFinalSummary(results: InstallResult[]): void;
|
|
14
39
|
//# sourceMappingURL=migrate-ui-summary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-ui-summary.d.ts","sourceRoot":"","sources":["../../src/migrate/migrate-ui-summary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,eAAe,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"migrate-ui-summary.d.ts","sourceRoot":"","sources":["../../src/migrate/migrate-ui-summary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,eAAe,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAElF,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACxC;AAED,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IAClC,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAG5E;AAgBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,gBAAgB,GAAG,IAAI,CA6C/E;AAOD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAoBnE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAGzD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI,CAqBhE"}
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
// Preflight + final-summary printers for `mewkit migrate`. Console output only.
|
|
2
2
|
import pc from "picocolors";
|
|
3
|
+
/**
|
|
4
|
+
* Build the exact `--include-mcp` re-run command from the original argv. The
|
|
5
|
+
* command is normalized to a `mewkit migrate ... --include-mcp` invocation so the
|
|
6
|
+
* user can copy-paste it verbatim. `--include-mcp` is appended only when absent.
|
|
7
|
+
*/
|
|
8
|
+
export function formatMcpIncludeRerunCommand(argv) {
|
|
9
|
+
const args = argv.filter((a) => a !== "--include-mcp");
|
|
10
|
+
return `${args.join(" ")} --include-mcp`.trim();
|
|
11
|
+
}
|
|
12
|
+
const SECTION_DETAIL_CAP = 20;
|
|
13
|
+
function printCappedSection(title, lines, paint) {
|
|
14
|
+
if (lines.length === 0)
|
|
15
|
+
return;
|
|
16
|
+
console.log();
|
|
17
|
+
console.log(pc.bold(`${title} (${lines.length}):`));
|
|
18
|
+
for (const line of lines.slice(0, SECTION_DETAIL_CAP)) {
|
|
19
|
+
console.log(` ${paint(line)}`);
|
|
20
|
+
}
|
|
21
|
+
if (lines.length > SECTION_DETAIL_CAP) {
|
|
22
|
+
console.log(pc.dim(` … and ${lines.length - SECTION_DETAIL_CAP} more`));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
3
25
|
export function printPreflight(plan, ctx) {
|
|
4
26
|
console.log();
|
|
5
27
|
console.log(pc.bold("Migrate plan"));
|
|
@@ -23,6 +45,19 @@ export function printPreflight(plan, ctx) {
|
|
|
23
45
|
for (const extra of ctx.bannerExtras) {
|
|
24
46
|
console.log(pc.dim(`[i] ${extra}`));
|
|
25
47
|
}
|
|
48
|
+
if (ctx.mcpIncludeAdvisory) {
|
|
49
|
+
console.log();
|
|
50
|
+
console.log(pc.cyan("[i] .mcp.json detected but not migrated. Re-run with --include-mcp to convert it into"));
|
|
51
|
+
console.log(pc.cyan(" .codex/config.toml [mcp_servers]:"));
|
|
52
|
+
console.log(` ${pc.bold(ctx.mcpIncludeAdvisory.rerunCommand)}`);
|
|
53
|
+
}
|
|
54
|
+
const report = ctx.conversionReport;
|
|
55
|
+
if (report) {
|
|
56
|
+
printCappedSection("Preserved references (need attention)", report.warnedReferences, (l) => pc.yellow(`[!] ${l}`));
|
|
57
|
+
printCappedSection("Conversion notes", report.conversionWarnings, (l) => pc.dim(`[i] ${l}`));
|
|
58
|
+
printCappedSection("Instruction-file budget", report.budgetLines, (l) => l.includes("OVER") ? pc.yellow(`[!] ${l}`) : pc.dim(`[i] ${l}`));
|
|
59
|
+
printCappedSection("Validation errors", report.validationErrors, (l) => pc.red(`[x] ${l}`));
|
|
60
|
+
}
|
|
26
61
|
}
|
|
27
62
|
function printBanner(banner) {
|
|
28
63
|
if (banner.kind === "empty-dir")
|
|
@@ -49,12 +84,27 @@ export function printActionDetails(actions) {
|
|
|
49
84
|
console.log(pc.dim(` … and ${list.length - 10} more`));
|
|
50
85
|
}
|
|
51
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Print the persisted migration-report path + verdict line at the end of a run.
|
|
89
|
+
* The verdict line already embeds the path; this keeps report presentation in the
|
|
90
|
+
* UI layer alongside the other run printers.
|
|
91
|
+
*/
|
|
92
|
+
export function printReportPath(verdictLine) {
|
|
93
|
+
console.log();
|
|
94
|
+
console.log(pc.bold(verdictLine));
|
|
95
|
+
}
|
|
52
96
|
export function printFinalSummary(results) {
|
|
53
97
|
const succeeded = results.filter((r) => r.success).length;
|
|
54
98
|
const failed = results.filter((r) => !r.success);
|
|
55
99
|
console.log();
|
|
56
100
|
console.log(pc.bold("Migration complete"));
|
|
57
101
|
console.log(` ${pc.green(`${succeeded} succeeded`)}`);
|
|
102
|
+
const warned = results.filter((r) => r.warnings && r.warnings.length > 0);
|
|
103
|
+
for (const result of warned.slice(0, SECTION_DETAIL_CAP)) {
|
|
104
|
+
for (const warning of result.warnings ?? []) {
|
|
105
|
+
console.log(` ${pc.yellow(`[!] ${result.action.provider}/${result.action.type}/${result.action.item}: ${warning}`)}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
58
108
|
if (failed.length > 0) {
|
|
59
109
|
console.log(` ${pc.red(`${failed.length} failed`)}`);
|
|
60
110
|
for (const result of failed.slice(0, 5)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-ui-summary.js","sourceRoot":"","sources":["../../src/migrate/migrate-ui-summary.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"migrate-ui-summary.js","sourceRoot":"","sources":["../../src/migrate/migrate-ui-summary.ts"],"names":[],"mappings":"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"}
|