mewkit 1.7.0 → 1.7.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/package.json +1 -1
- package/dist/commands/budget.d.ts +0 -6
- package/dist/commands/budget.d.ts.map +0 -1
- package/dist/commands/budget.js +0 -95
- package/dist/commands/budget.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -4
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -365
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/init.d.ts +0 -13
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -354
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -9
- package/dist/commands/memory.d.ts.map +0 -1
- package/dist/commands/memory.js +0 -217
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/migrate.d.ts +0 -21
- package/dist/commands/migrate.d.ts.map +0 -1
- package/dist/commands/migrate.js +0 -42
- package/dist/commands/migrate.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -16
- package/dist/commands/setup.d.ts.map +0 -1
- package/dist/commands/setup.js +0 -413
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/task.d.ts +0 -10
- package/dist/commands/task.d.ts.map +0 -1
- package/dist/commands/task.js +0 -313
- package/dist/commands/task.js.map +0 -1
- package/dist/commands/upgrade.d.ts +0 -7
- package/dist/commands/upgrade.d.ts.map +0 -1
- package/dist/commands/upgrade.js +0 -143
- package/dist/commands/upgrade.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -2
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/validate.js +0 -139
- package/dist/commands/validate.js.map +0 -1
- package/dist/core/compute-checksums.d.ts +0 -25
- package/dist/core/compute-checksums.d.ts.map +0 -1
- package/dist/core/compute-checksums.js +0 -105
- package/dist/core/compute-checksums.js.map +0 -1
- package/dist/core/core-logger.d.ts +0 -9
- package/dist/core/core-logger.d.ts.map +0 -1
- package/dist/core/core-logger.js +0 -31
- package/dist/core/core-logger.js.map +0 -1
- package/dist/core/dependency-installer.d.ts +0 -29
- package/dist/core/dependency-installer.d.ts.map +0 -1
- package/dist/core/dependency-installer.js +0 -150
- package/dist/core/dependency-installer.js.map +0 -1
- package/dist/core/github-releases.d.ts +0 -32
- package/dist/core/github-releases.d.ts.map +0 -1
- package/dist/core/github-releases.js +0 -96
- package/dist/core/github-releases.js.map +0 -1
- package/dist/core/index.d.ts +0 -12
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -12
- package/dist/core/index.js.map +0 -1
- package/dist/core/merge-settings.d.ts +0 -7
- package/dist/core/merge-settings.d.ts.map +0 -1
- package/dist/core/merge-settings.js +0 -131
- package/dist/core/merge-settings.js.map +0 -1
- package/dist/core/skills-dependencies.d.ts +0 -25
- package/dist/core/skills-dependencies.d.ts.map +0 -1
- package/dist/core/skills-dependencies.js +0 -100
- package/dist/core/skills-dependencies.js.map +0 -1
- package/dist/core/smart-update-utils.d.ts +0 -10
- package/dist/core/smart-update-utils.d.ts.map +0 -1
- package/dist/core/smart-update-utils.js +0 -61
- package/dist/core/smart-update-utils.js.map +0 -1
- package/dist/core/smart-update.d.ts +0 -18
- package/dist/core/smart-update.d.ts.map +0 -1
- package/dist/core/smart-update.js +0 -177
- package/dist/core/smart-update.js.map +0 -1
- package/dist/core/substitute-placeholders.d.ts +0 -11
- package/dist/core/substitute-placeholders.d.ts.map +0 -1
- package/dist/core/substitute-placeholders.js +0 -28
- package/dist/core/substitute-placeholders.js.map +0 -1
- package/dist/core/validate-install.d.ts +0 -6
- package/dist/core/validate-install.d.ts.map +0 -1
- package/dist/core/validate-install.js +0 -97
- package/dist/core/validate-install.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -199
- package/dist/index.js.map +0 -1
- package/dist/lib/system-deps-registry.d.ts +0 -117
- package/dist/lib/system-deps-registry.d.ts.map +0 -1
- package/dist/lib/system-deps-registry.js +0 -234
- package/dist/lib/system-deps-registry.js.map +0 -1
- package/dist/logger.d.ts +0 -26
- package/dist/logger.js +0 -70
- package/dist/logger.js.map +0 -1
- package/dist/migrate/__tests__/frontmatter-parser.test.d.ts +0 -2
- package/dist/migrate/__tests__/frontmatter-parser.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/frontmatter-parser.test.js +0 -73
- package/dist/migrate/__tests__/frontmatter-parser.test.js.map +0 -1
- package/dist/migrate/__tests__/md-strip-mewkit.test.d.ts +0 -2
- package/dist/migrate/__tests__/md-strip-mewkit.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/md-strip-mewkit.test.js +0 -55
- package/dist/migrate/__tests__/md-strip-mewkit.test.js.map +0 -1
- package/dist/migrate/__tests__/migrate-scope-resolver.test.d.ts +0 -2
- package/dist/migrate/__tests__/migrate-scope-resolver.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/migrate-scope-resolver.test.js +0 -53
- package/dist/migrate/__tests__/migrate-scope-resolver.test.js.map +0 -1
- package/dist/migrate/__tests__/process-lock.test.d.ts +0 -2
- package/dist/migrate/__tests__/process-lock.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/process-lock.test.js +0 -63
- package/dist/migrate/__tests__/process-lock.test.js.map +0 -1
- package/dist/migrate/__tests__/provider-registry.test.d.ts +0 -2
- package/dist/migrate/__tests__/provider-registry.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/provider-registry.test.js +0 -53
- package/dist/migrate/__tests__/provider-registry.test.js.map +0 -1
- package/dist/migrate/__tests__/reconciler.test.d.ts +0 -2
- package/dist/migrate/__tests__/reconciler.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/reconciler.test.js +0 -180
- package/dist/migrate/__tests__/reconciler.test.js.map +0 -1
- package/dist/migrate/codex-capabilities.d.ts +0 -17
- package/dist/migrate/codex-capabilities.d.ts.map +0 -1
- package/dist/migrate/codex-capabilities.js +0 -95
- package/dist/migrate/codex-capabilities.js.map +0 -1
- package/dist/migrate/config-merger/merge-single-sections.d.ts +0 -20
- package/dist/migrate/config-merger/merge-single-sections.d.ts.map +0 -1
- package/dist/migrate/config-merger/merge-single-sections.js +0 -169
- package/dist/migrate/config-merger/merge-single-sections.js.map +0 -1
- package/dist/migrate/converters/claude-to-codex-hooks.d.ts +0 -23
- package/dist/migrate/converters/claude-to-codex-hooks.d.ts.map +0 -1
- package/dist/migrate/converters/claude-to-codex-hooks.js +0 -80
- package/dist/migrate/converters/claude-to-codex-hooks.js.map +0 -1
- package/dist/migrate/converters/direct-copy.d.ts +0 -3
- package/dist/migrate/converters/direct-copy.d.ts.map +0 -1
- package/dist/migrate/converters/direct-copy.js +0 -52
- package/dist/migrate/converters/direct-copy.js.map +0 -1
- package/dist/migrate/converters/fm-strip.d.ts +0 -4
- package/dist/migrate/converters/fm-strip.d.ts.map +0 -1
- package/dist/migrate/converters/fm-strip.js +0 -36
- package/dist/migrate/converters/fm-strip.js.map +0 -1
- package/dist/migrate/converters/fm-to-codex-toml.d.ts +0 -19
- package/dist/migrate/converters/fm-to-codex-toml.d.ts.map +0 -1
- package/dist/migrate/converters/fm-to-codex-toml.js +0 -93
- package/dist/migrate/converters/fm-to-codex-toml.js.map +0 -1
- package/dist/migrate/converters/fm-to-fm.d.ts +0 -3
- package/dist/migrate/converters/fm-to-fm.d.ts.map +0 -1
- package/dist/migrate/converters/fm-to-fm.js +0 -142
- package/dist/migrate/converters/fm-to-fm.js.map +0 -1
- package/dist/migrate/converters/fm-to-json.d.ts +0 -12
- package/dist/migrate/converters/fm-to-json.d.ts.map +0 -1
- package/dist/migrate/converters/fm-to-json.js +0 -55
- package/dist/migrate/converters/fm-to-json.js.map +0 -1
- package/dist/migrate/converters/fm-to-yaml.d.ts +0 -4
- package/dist/migrate/converters/fm-to-yaml.d.ts.map +0 -1
- package/dist/migrate/converters/fm-to-yaml.js +0 -62
- package/dist/migrate/converters/fm-to-yaml.js.map +0 -1
- package/dist/migrate/converters/gemini-hook-event-map.d.ts +0 -6
- package/dist/migrate/converters/gemini-hook-event-map.d.ts.map +0 -1
- package/dist/migrate/converters/gemini-hook-event-map.js +0 -41
- package/dist/migrate/converters/gemini-hook-event-map.js.map +0 -1
- package/dist/migrate/converters/index.d.ts +0 -12
- package/dist/migrate/converters/index.d.ts.map +0 -1
- package/dist/migrate/converters/index.js +0 -66
- package/dist/migrate/converters/index.js.map +0 -1
- package/dist/migrate/converters/md-strip.d.ts +0 -19
- package/dist/migrate/converters/md-strip.d.ts.map +0 -1
- package/dist/migrate/converters/md-strip.js +0 -290
- package/dist/migrate/converters/md-strip.js.map +0 -1
- package/dist/migrate/converters/md-to-kiro-steering.d.ts +0 -3
- package/dist/migrate/converters/md-to-kiro-steering.d.ts.map +0 -1
- package/dist/migrate/converters/md-to-kiro-steering.js +0 -90
- package/dist/migrate/converters/md-to-kiro-steering.js.map +0 -1
- package/dist/migrate/converters/md-to-mdc.d.ts +0 -3
- package/dist/migrate/converters/md-to-mdc.d.ts.map +0 -1
- package/dist/migrate/converters/md-to-mdc.js +0 -19
- package/dist/migrate/converters/md-to-mdc.js.map +0 -1
- package/dist/migrate/converters/md-to-toml.d.ts +0 -4
- package/dist/migrate/converters/md-to-toml.d.ts.map +0 -1
- package/dist/migrate/converters/md-to-toml.js +0 -25
- package/dist/migrate/converters/md-to-toml.js.map +0 -1
- package/dist/migrate/converters/skill-md.d.ts +0 -3
- package/dist/migrate/converters/skill-md.d.ts.map +0 -1
- package/dist/migrate/converters/skill-md.js +0 -18
- package/dist/migrate/converters/skill-md.js.map +0 -1
- package/dist/migrate/discovery/agents-discovery.d.ts +0 -3
- package/dist/migrate/discovery/agents-discovery.d.ts.map +0 -1
- package/dist/migrate/discovery/agents-discovery.js +0 -42
- package/dist/migrate/discovery/agents-discovery.js.map +0 -1
- package/dist/migrate/discovery/commands-discovery.d.ts +0 -3
- package/dist/migrate/discovery/commands-discovery.d.ts.map +0 -1
- package/dist/migrate/discovery/commands-discovery.js +0 -60
- package/dist/migrate/discovery/commands-discovery.js.map +0 -1
- package/dist/migrate/discovery/config-discovery.d.ts +0 -3
- package/dist/migrate/discovery/config-discovery.d.ts.map +0 -1
- package/dist/migrate/discovery/config-discovery.js +0 -17
- package/dist/migrate/discovery/config-discovery.js.map +0 -1
- package/dist/migrate/discovery/exclusions.d.ts +0 -5
- package/dist/migrate/discovery/exclusions.d.ts.map +0 -1
- package/dist/migrate/discovery/exclusions.js +0 -31
- package/dist/migrate/discovery/exclusions.js.map +0 -1
- package/dist/migrate/discovery/handlers-json-filter.d.ts +0 -17
- package/dist/migrate/discovery/handlers-json-filter.d.ts.map +0 -1
- package/dist/migrate/discovery/handlers-json-filter.js +0 -48
- package/dist/migrate/discovery/handlers-json-filter.js.map +0 -1
- package/dist/migrate/discovery/hooks-discovery.d.ts +0 -7
- package/dist/migrate/discovery/hooks-discovery.d.ts.map +0 -1
- package/dist/migrate/discovery/hooks-discovery.js +0 -45
- package/dist/migrate/discovery/hooks-discovery.js.map +0 -1
- package/dist/migrate/discovery/index.d.ts +0 -10
- package/dist/migrate/discovery/index.d.ts.map +0 -1
- package/dist/migrate/discovery/index.js +0 -10
- package/dist/migrate/discovery/index.js.map +0 -1
- package/dist/migrate/discovery/rules-discovery.d.ts +0 -3
- package/dist/migrate/discovery/rules-discovery.d.ts.map +0 -1
- package/dist/migrate/discovery/rules-discovery.js +0 -53
- package/dist/migrate/discovery/rules-discovery.js.map +0 -1
- package/dist/migrate/discovery/skills-discovery.d.ts +0 -5
- package/dist/migrate/discovery/skills-discovery.d.ts.map +0 -1
- package/dist/migrate/discovery/skills-discovery.js +0 -73
- package/dist/migrate/discovery/skills-discovery.js.map +0 -1
- package/dist/migrate/discovery/source-paths.d.ts +0 -13
- package/dist/migrate/discovery/source-paths.d.ts.map +0 -1
- package/dist/migrate/discovery/source-paths.js +0 -63
- package/dist/migrate/discovery/source-paths.js.map +0 -1
- package/dist/migrate/frontmatter-parser.d.ts +0 -4
- package/dist/migrate/frontmatter-parser.d.ts.map +0 -1
- package/dist/migrate/frontmatter-parser.js +0 -99
- package/dist/migrate/frontmatter-parser.js.map +0 -1
- package/dist/migrate/hooks/codex-features-flag.d.ts +0 -8
- package/dist/migrate/hooks/codex-features-flag.d.ts.map +0 -1
- package/dist/migrate/hooks/codex-features-flag.js +0 -146
- package/dist/migrate/hooks/codex-features-flag.js.map +0 -1
- package/dist/migrate/hooks/codex-hook-wrapper.d.ts +0 -10
- package/dist/migrate/hooks/codex-hook-wrapper.d.ts.map +0 -1
- package/dist/migrate/hooks/codex-hook-wrapper.js +0 -166
- package/dist/migrate/hooks/codex-hook-wrapper.js.map +0 -1
- package/dist/migrate/hooks/codex-path-safety.d.ts +0 -5
- package/dist/migrate/hooks/codex-path-safety.d.ts.map +0 -1
- package/dist/migrate/hooks/codex-path-safety.js +0 -99
- package/dist/migrate/hooks/codex-path-safety.js.map +0 -1
- package/dist/migrate/hooks/codex-toml-installer.d.ts +0 -15
- package/dist/migrate/hooks/codex-toml-installer.d.ts.map +0 -1
- package/dist/migrate/hooks/codex-toml-installer.js +0 -124
- package/dist/migrate/hooks/codex-toml-installer.js.map +0 -1
- package/dist/migrate/hooks/hooks-settings-merger.d.ts +0 -20
- package/dist/migrate/hooks/hooks-settings-merger.d.ts.map +0 -1
- package/dist/migrate/hooks/hooks-settings-merger.js +0 -273
- package/dist/migrate/hooks/hooks-settings-merger.js.map +0 -1
- package/dist/migrate/hooks/index.d.ts +0 -7
- package/dist/migrate/hooks/index.d.ts.map +0 -1
- package/dist/migrate/hooks/index.js +0 -7
- package/dist/migrate/hooks/index.js.map +0 -1
- package/dist/migrate/hooks/opencode-config-installer.d.ts +0 -31
- package/dist/migrate/hooks/opencode-config-installer.d.ts.map +0 -1
- package/dist/migrate/hooks/opencode-config-installer.js +0 -116
- package/dist/migrate/hooks/opencode-config-installer.js.map +0 -1
- package/dist/migrate/index.d.ts +0 -15
- package/dist/migrate/index.d.ts.map +0 -1
- package/dist/migrate/index.js +0 -15
- package/dist/migrate/index.js.map +0 -1
- package/dist/migrate/migrate-discover.d.ts +0 -28
- package/dist/migrate/migrate-discover.d.ts.map +0 -1
- package/dist/migrate/migrate-discover.js +0 -52
- package/dist/migrate/migrate-discover.js.map +0 -1
- package/dist/migrate/migrate-mode-resolver.d.ts +0 -10
- package/dist/migrate/migrate-mode-resolver.d.ts.map +0 -1
- package/dist/migrate/migrate-mode-resolver.js +0 -123
- package/dist/migrate/migrate-mode-resolver.js.map +0 -1
- package/dist/migrate/migrate-orchestrator.d.ts +0 -9
- package/dist/migrate/migrate-orchestrator.d.ts.map +0 -1
- package/dist/migrate/migrate-orchestrator.js +0 -204
- package/dist/migrate/migrate-orchestrator.js.map +0 -1
- package/dist/migrate/migrate-scope-resolver.d.ts +0 -19
- package/dist/migrate/migrate-scope-resolver.d.ts.map +0 -1
- package/dist/migrate/migrate-scope-resolver.js +0 -81
- package/dist/migrate/migrate-scope-resolver.js.map +0 -1
- package/dist/migrate/migrate-ui-summary.d.ts +0 -14
- package/dist/migrate/migrate-ui-summary.d.ts.map +0 -1
- package/dist/migrate/migrate-ui-summary.js +0 -65
- package/dist/migrate/migrate-ui-summary.js.map +0 -1
- package/dist/migrate/model-taxonomy.d.ts +0 -16
- package/dist/migrate/model-taxonomy.d.ts.map +0 -1
- package/dist/migrate/model-taxonomy.js +0 -58
- package/dist/migrate/model-taxonomy.js.map +0 -1
- package/dist/migrate/portable-installer.d.ts +0 -14
- package/dist/migrate/portable-installer.d.ts.map +0 -1
- package/dist/migrate/portable-installer.js +0 -159
- package/dist/migrate/portable-installer.js.map +0 -1
- package/dist/migrate/provider-overrides.d.ts +0 -8
- package/dist/migrate/provider-overrides.d.ts.map +0 -1
- package/dist/migrate/provider-overrides.js +0 -40
- package/dist/migrate/provider-overrides.js.map +0 -1
- package/dist/migrate/provider-registry-utils.d.ts +0 -23
- package/dist/migrate/provider-registry-utils.d.ts.map +0 -1
- package/dist/migrate/provider-registry-utils.js +0 -67
- package/dist/migrate/provider-registry-utils.js.map +0 -1
- package/dist/migrate/provider-registry.d.ts +0 -5
- package/dist/migrate/provider-registry.d.ts.map +0 -1
- package/dist/migrate/provider-registry.js +0 -327
- package/dist/migrate/provider-registry.js.map +0 -1
- package/dist/migrate/reconcile/checksum-utils.d.ts +0 -8
- package/dist/migrate/reconcile/checksum-utils.d.ts.map +0 -1
- package/dist/migrate/reconcile/checksum-utils.js +0 -32
- package/dist/migrate/reconcile/checksum-utils.js.map +0 -1
- package/dist/migrate/reconcile/conflict-resolver.d.ts +0 -8
- package/dist/migrate/reconcile/conflict-resolver.d.ts.map +0 -1
- package/dist/migrate/reconcile/conflict-resolver.js +0 -59
- package/dist/migrate/reconcile/conflict-resolver.js.map +0 -1
- package/dist/migrate/reconcile/diff-display.d.ts +0 -6
- package/dist/migrate/reconcile/diff-display.d.ts.map +0 -1
- package/dist/migrate/reconcile/diff-display.js +0 -40
- package/dist/migrate/reconcile/diff-display.js.map +0 -1
- package/dist/migrate/reconcile/index.d.ts +0 -10
- package/dist/migrate/reconcile/index.d.ts.map +0 -1
- package/dist/migrate/reconcile/index.js +0 -10
- package/dist/migrate/reconcile/index.js.map +0 -1
- package/dist/migrate/reconcile/output-sanitizer.d.ts +0 -3
- package/dist/migrate/reconcile/output-sanitizer.d.ts.map +0 -1
- package/dist/migrate/reconcile/output-sanitizer.js +0 -42
- package/dist/migrate/reconcile/output-sanitizer.js.map +0 -1
- package/dist/migrate/reconcile/portable-registry.d.ts +0 -142
- package/dist/migrate/reconcile/portable-registry.d.ts.map +0 -1
- package/dist/migrate/reconcile/portable-registry.js +0 -224
- package/dist/migrate/reconcile/portable-registry.js.map +0 -1
- package/dist/migrate/reconcile/process-lock.d.ts +0 -15
- package/dist/migrate/reconcile/process-lock.d.ts.map +0 -1
- package/dist/migrate/reconcile/process-lock.js +0 -77
- package/dist/migrate/reconcile/process-lock.js.map +0 -1
- package/dist/migrate/reconcile/reconcile-state-builders.d.ts +0 -24
- package/dist/migrate/reconcile/reconcile-state-builders.d.ts.map +0 -1
- package/dist/migrate/reconcile/reconcile-state-builders.js +0 -185
- package/dist/migrate/reconcile/reconcile-state-builders.js.map +0 -1
- package/dist/migrate/reconcile/reconcile-types.d.ts +0 -113
- package/dist/migrate/reconcile/reconcile-types.d.ts.map +0 -1
- package/dist/migrate/reconcile/reconcile-types.js +0 -42
- package/dist/migrate/reconcile/reconcile-types.js.map +0 -1
- package/dist/migrate/reconcile/reconciler.d.ts +0 -3
- package/dist/migrate/reconcile/reconciler.d.ts.map +0 -1
- package/dist/migrate/reconcile/reconciler.js +0 -445
- package/dist/migrate/reconcile/reconciler.js.map +0 -1
- package/dist/migrate/skill-directory-installer.d.ts +0 -23
- package/dist/migrate/skill-directory-installer.d.ts.map +0 -1
- package/dist/migrate/skill-directory-installer.js +0 -55
- package/dist/migrate/skill-directory-installer.js.map +0 -1
- package/dist/migrate/types.d.ts +0 -172
- package/dist/migrate/types.d.ts.map +0 -1
- package/dist/migrate/types.js +0 -45
- package/dist/migrate/types.js.map +0 -1
|
@@ -1,445 +0,0 @@
|
|
|
1
|
-
// Vendored from claudekit-cli (MIT). Source: src/commands/portable/reconciler.ts
|
|
2
|
-
// Pure reconciler module — zero I/O, fully testable.
|
|
3
|
-
// Mewkit-side adaptation: dropped manifest-driven rename/path-migration entry points
|
|
4
|
-
// (greenfield install — no v1→v2 migrations to encode). The 8-case decision matrix is
|
|
5
|
-
// ported verbatim. Reconciler stays pure (no fs, no path I/O).
|
|
6
|
-
import path from "node:path";
|
|
7
|
-
import { UNKNOWN_CHECKSUM, getReasonCopy, isUnknownChecksum, normalizeChecksum, } from "./reconcile-types.js";
|
|
8
|
-
function normalizePortablePath(value) {
|
|
9
|
-
const asPosix = value.replace(/\\/g, "/");
|
|
10
|
-
const normalized = path.posix.normalize(asPosix);
|
|
11
|
-
if (normalized === ".")
|
|
12
|
-
return "";
|
|
13
|
-
return normalized.replace(/^\.\/+/, "");
|
|
14
|
-
}
|
|
15
|
-
function makeProviderConfigKey(provider, global) {
|
|
16
|
-
return JSON.stringify([provider, global]);
|
|
17
|
-
}
|
|
18
|
-
function makeItemTypeKey(item, type) {
|
|
19
|
-
return JSON.stringify([item, type]);
|
|
20
|
-
}
|
|
21
|
-
function makeRegistryIdentityKey(entry) {
|
|
22
|
-
return JSON.stringify([entry.item, entry.type, entry.provider, entry.global]);
|
|
23
|
-
}
|
|
24
|
-
function makeDirStateKey(provider, type, global) {
|
|
25
|
-
return JSON.stringify([provider, type, global]);
|
|
26
|
-
}
|
|
27
|
-
function dedupeProviderConfigs(providerConfigs) {
|
|
28
|
-
const seen = new Set();
|
|
29
|
-
const unique = [];
|
|
30
|
-
for (const config of providerConfigs) {
|
|
31
|
-
const key = makeProviderConfigKey(config.provider, config.global);
|
|
32
|
-
if (seen.has(key))
|
|
33
|
-
continue;
|
|
34
|
-
seen.add(key);
|
|
35
|
-
unique.push(config);
|
|
36
|
-
}
|
|
37
|
-
return unique;
|
|
38
|
-
}
|
|
39
|
-
function buildTargetStateIndex(targetStates) {
|
|
40
|
-
const index = new Map();
|
|
41
|
-
for (const [mapPath, state] of targetStates) {
|
|
42
|
-
const normalizedMapPath = normalizePortablePath(mapPath);
|
|
43
|
-
if (normalizedMapPath && !index.has(normalizedMapPath))
|
|
44
|
-
index.set(normalizedMapPath, state);
|
|
45
|
-
const normalizedStatePath = normalizePortablePath(state.path);
|
|
46
|
-
if (normalizedStatePath && !index.has(normalizedStatePath))
|
|
47
|
-
index.set(normalizedStatePath, state);
|
|
48
|
-
}
|
|
49
|
-
return index;
|
|
50
|
-
}
|
|
51
|
-
function buildDirStateIndex(dirStates) {
|
|
52
|
-
const index = new Map();
|
|
53
|
-
for (const ds of dirStates) {
|
|
54
|
-
index.set(makeDirStateKey(ds.provider, ds.type, ds.global), ds);
|
|
55
|
-
}
|
|
56
|
-
return index;
|
|
57
|
-
}
|
|
58
|
-
function lookupTargetState(targetStateIndex, pathValue) {
|
|
59
|
-
return targetStateIndex.get(normalizePortablePath(pathValue));
|
|
60
|
-
}
|
|
61
|
-
function getManagedSectionKind(type) {
|
|
62
|
-
if (type === "agent")
|
|
63
|
-
return "agent";
|
|
64
|
-
if (type === "rules")
|
|
65
|
-
return "rule";
|
|
66
|
-
if (type === "config")
|
|
67
|
-
return "config";
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
function getExpectedTargetChecksum(source, provider) {
|
|
71
|
-
return normalizeChecksum(source.targetChecksums?.[provider] ?? source.convertedChecksums[provider]);
|
|
72
|
-
}
|
|
73
|
-
function getCurrentTargetChecksum(targetState, registryEntry) {
|
|
74
|
-
if (!targetState)
|
|
75
|
-
return UNKNOWN_CHECKSUM;
|
|
76
|
-
if (!targetState.exists)
|
|
77
|
-
return UNKNOWN_CHECKSUM;
|
|
78
|
-
if (targetState.sectionChecksums && registryEntry.ownedSections?.length) {
|
|
79
|
-
const sectionKind = getManagedSectionKind(registryEntry.type);
|
|
80
|
-
const sectionName = registryEntry.ownedSections[0];
|
|
81
|
-
if (sectionKind && sectionName) {
|
|
82
|
-
return normalizeChecksum(targetState.sectionChecksums[`${sectionKind}:${sectionName}`]);
|
|
83
|
-
}
|
|
84
|
-
return UNKNOWN_CHECKSUM;
|
|
85
|
-
}
|
|
86
|
-
return normalizeChecksum(targetState.currentChecksum);
|
|
87
|
-
}
|
|
88
|
-
function getTargetChangeState(targetState, registryEntry, registeredTargetChecksum) {
|
|
89
|
-
if (!targetState)
|
|
90
|
-
return "unknown";
|
|
91
|
-
if (!targetState.exists)
|
|
92
|
-
return "deleted";
|
|
93
|
-
const currentTargetChecksum = getCurrentTargetChecksum(targetState, registryEntry);
|
|
94
|
-
if (isUnknownChecksum(currentTargetChecksum) || isUnknownChecksum(registeredTargetChecksum)) {
|
|
95
|
-
return "unknown";
|
|
96
|
-
}
|
|
97
|
-
return currentTargetChecksum === registeredTargetChecksum ? "unchanged" : "changed";
|
|
98
|
-
}
|
|
99
|
-
function dedupeActions(actions) {
|
|
100
|
-
const seen = new Set();
|
|
101
|
-
const deduped = [];
|
|
102
|
-
for (const action of actions) {
|
|
103
|
-
const key = JSON.stringify([
|
|
104
|
-
action.action, action.item, action.type, action.provider, action.global,
|
|
105
|
-
normalizePortablePath(action.targetPath),
|
|
106
|
-
]);
|
|
107
|
-
if (seen.has(key))
|
|
108
|
-
continue;
|
|
109
|
-
seen.add(key);
|
|
110
|
-
deduped.push(action);
|
|
111
|
-
}
|
|
112
|
-
return deduped;
|
|
113
|
-
}
|
|
114
|
-
function suppressOverlappingActions(actions) {
|
|
115
|
-
const byIdentity = new Map();
|
|
116
|
-
for (const action of actions) {
|
|
117
|
-
const key = makeRegistryIdentityKey(action);
|
|
118
|
-
const list = byIdentity.get(key) ?? [];
|
|
119
|
-
list.push(action);
|
|
120
|
-
byIdentity.set(key, list);
|
|
121
|
-
}
|
|
122
|
-
const filtered = [];
|
|
123
|
-
for (const action of actions) {
|
|
124
|
-
const key = makeRegistryIdentityKey(action);
|
|
125
|
-
const actionsForKey = byIdentity.get(key) ?? [];
|
|
126
|
-
const hasDelete = actionsForKey.some((a) => a.action === "delete");
|
|
127
|
-
if (!hasDelete) {
|
|
128
|
-
filtered.push(action);
|
|
129
|
-
continue;
|
|
130
|
-
}
|
|
131
|
-
if (action.action === "delete" || action.action === "install")
|
|
132
|
-
filtered.push(action);
|
|
133
|
-
}
|
|
134
|
-
return filtered;
|
|
135
|
-
}
|
|
136
|
-
function applyEmptyDirOverride(actions, dirStates, respectDeletions) {
|
|
137
|
-
if (dirStates.length === 0)
|
|
138
|
-
return { actions, banners: [] };
|
|
139
|
-
const dirIndex = buildDirStateIndex(dirStates);
|
|
140
|
-
const banners = [];
|
|
141
|
-
const flippedGroups = new Map();
|
|
142
|
-
for (const action of actions) {
|
|
143
|
-
if (action.action !== "skip" || action.reasonCode !== "user-deleted-respected")
|
|
144
|
-
continue;
|
|
145
|
-
const key = makeDirStateKey(action.provider, action.type, action.global);
|
|
146
|
-
const dirState = dirIndex.get(key);
|
|
147
|
-
if (!dirState?.isEmpty)
|
|
148
|
-
continue;
|
|
149
|
-
if (respectDeletions) {
|
|
150
|
-
const existing = flippedGroups.get(key);
|
|
151
|
-
if (existing)
|
|
152
|
-
existing.count++;
|
|
153
|
-
else
|
|
154
|
-
flippedGroups.set(key, { dirState, count: 1 });
|
|
155
|
-
continue;
|
|
156
|
-
}
|
|
157
|
-
action.action = "install";
|
|
158
|
-
action.reasonCode = "target-dir-empty-reinstall";
|
|
159
|
-
action.reasonCopy = getReasonCopy("target-dir-empty-reinstall");
|
|
160
|
-
action.reason = action.reasonCopy;
|
|
161
|
-
const existing = flippedGroups.get(key);
|
|
162
|
-
if (existing)
|
|
163
|
-
existing.count++;
|
|
164
|
-
else
|
|
165
|
-
flippedGroups.set(key, { dirState, count: 1 });
|
|
166
|
-
}
|
|
167
|
-
for (const [, { dirState, count }] of flippedGroups) {
|
|
168
|
-
if (respectDeletions) {
|
|
169
|
-
banners.push({
|
|
170
|
-
kind: "empty-dir-respected",
|
|
171
|
-
provider: dirState.provider, type: dirState.type, global: dirState.global,
|
|
172
|
-
path: dirState.path, itemCount: count,
|
|
173
|
-
message: `Detected empty ${dirState.path} — respecting your deletions (${count} items skipped).`,
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
banners.push({
|
|
178
|
-
kind: "empty-dir",
|
|
179
|
-
provider: dirState.provider, type: dirState.type, global: dirState.global,
|
|
180
|
-
path: dirState.path, itemCount: count,
|
|
181
|
-
message: `Detected empty ${dirState.path} — ${count} item${count === 1 ? "" : "s"} will be reinstalled. Uncheck any to skip.`,
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
return { actions, banners };
|
|
186
|
-
}
|
|
187
|
-
export function reconcile(input) {
|
|
188
|
-
const actions = [];
|
|
189
|
-
const targetStateIndex = buildTargetStateIndex(input.targetStates);
|
|
190
|
-
const uniqueProviderConfigs = dedupeProviderConfigs(input.providerConfigs);
|
|
191
|
-
const deletedIdentityKeys = new Set();
|
|
192
|
-
for (const sourceItem of input.sourceItems) {
|
|
193
|
-
for (const providerConfig of uniqueProviderConfigs) {
|
|
194
|
-
actions.push(determineAction(sourceItem, providerConfig, input, targetStateIndex, deletedIdentityKeys));
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
actions.push(...detectOrphans(input));
|
|
198
|
-
const normalizedActions = suppressOverlappingActions(dedupeActions(actions));
|
|
199
|
-
const dirStates = input.typeDirectoryStates ?? [];
|
|
200
|
-
const respectDeletions = input.respectDeletions ?? false;
|
|
201
|
-
const { actions: finalActions, banners } = applyEmptyDirOverride(normalizedActions, dirStates, respectDeletions);
|
|
202
|
-
return buildPlan(finalActions, banners);
|
|
203
|
-
}
|
|
204
|
-
function determineAction(source, providerConfig, input, targetStateIndex, deletedIdentityKeys) {
|
|
205
|
-
let registryEntry = findRegistryEntry(source, providerConfig, input.registry);
|
|
206
|
-
const identityKey = makeRegistryIdentityKey({
|
|
207
|
-
item: source.item, type: source.type,
|
|
208
|
-
provider: providerConfig.provider, global: providerConfig.global,
|
|
209
|
-
});
|
|
210
|
-
if (registryEntry && deletedIdentityKeys.has(identityKey))
|
|
211
|
-
registryEntry = null;
|
|
212
|
-
const isDirectoryItem = source.type === "skill";
|
|
213
|
-
const common = {
|
|
214
|
-
item: source.item,
|
|
215
|
-
type: source.type,
|
|
216
|
-
provider: providerConfig.provider,
|
|
217
|
-
global: providerConfig.global,
|
|
218
|
-
targetPath: "",
|
|
219
|
-
isDirectoryItem: isDirectoryItem || undefined,
|
|
220
|
-
};
|
|
221
|
-
const convertedChecksumRaw = source.convertedChecksums[providerConfig.provider];
|
|
222
|
-
const convertedChecksum = normalizeChecksum(convertedChecksumRaw);
|
|
223
|
-
const expectedTargetChecksum = getExpectedTargetChecksum(source, providerConfig.provider);
|
|
224
|
-
if (!convertedChecksumRaw || isUnknownChecksum(convertedChecksumRaw)) {
|
|
225
|
-
if (registryEntry) {
|
|
226
|
-
common.targetPath = registryEntry.path;
|
|
227
|
-
const code = "provider-checksum-unavailable";
|
|
228
|
-
return {
|
|
229
|
-
...common, action: "skip",
|
|
230
|
-
reason: "Provider checksum unavailable — cannot verify safely",
|
|
231
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
232
|
-
sourceChecksum: UNKNOWN_CHECKSUM,
|
|
233
|
-
registeredSourceChecksum: normalizeChecksum(registryEntry.sourceChecksum),
|
|
234
|
-
registeredTargetChecksum: normalizeChecksum(registryEntry.targetChecksum),
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
const itemExistsElsewhere = input.registry.installations.some((i) => i.item === source.item && i.type === source.type);
|
|
238
|
-
const code = itemExistsElsewhere ? "new-provider-for-item" : "new-item";
|
|
239
|
-
return {
|
|
240
|
-
...common, action: "install",
|
|
241
|
-
reason: itemExistsElsewhere ? "New provider for existing item" : "New item, not previously installed",
|
|
242
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
243
|
-
sourceChecksum: UNKNOWN_CHECKSUM,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
if (!registryEntry) {
|
|
247
|
-
const itemExistsElsewhere = input.registry.installations.some((i) => i.item === source.item && i.type === source.type);
|
|
248
|
-
const code = itemExistsElsewhere ? "new-provider-for-item" : "new-item";
|
|
249
|
-
return {
|
|
250
|
-
...common, action: "install",
|
|
251
|
-
reason: itemExistsElsewhere ? "New provider for existing item" : "New item, not previously installed",
|
|
252
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
253
|
-
sourceChecksum: convertedChecksum,
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
common.targetPath = registryEntry.path;
|
|
257
|
-
const registeredSourceChecksum = normalizeChecksum(registryEntry.sourceChecksum);
|
|
258
|
-
const registeredTargetChecksum = normalizeChecksum(registryEntry.targetChecksum);
|
|
259
|
-
const targetState = lookupTargetState(targetStateIndex, registryEntry.path);
|
|
260
|
-
const currentTargetChecksum = getCurrentTargetChecksum(targetState, registryEntry);
|
|
261
|
-
const targetMatchesExpectedOutput = targetState?.exists === true &&
|
|
262
|
-
!isUnknownChecksum(expectedTargetChecksum) &&
|
|
263
|
-
currentTargetChecksum === expectedTargetChecksum;
|
|
264
|
-
if (isUnknownChecksum(registeredSourceChecksum)) {
|
|
265
|
-
if (targetMatchesExpectedOutput) {
|
|
266
|
-
const code = "target-up-to-date-backfill";
|
|
267
|
-
return {
|
|
268
|
-
...common, action: "skip",
|
|
269
|
-
reason: "Target up-to-date after registry upgrade — checksums will be backfilled",
|
|
270
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
271
|
-
sourceChecksum: convertedChecksum, currentTargetChecksum, backfillRegistry: true,
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
if (!targetState || !targetState.exists) {
|
|
275
|
-
const code = "registry-upgrade-reinstall";
|
|
276
|
-
return {
|
|
277
|
-
...common, action: "install",
|
|
278
|
-
reason: "Target deleted — reinstalling after registry upgrade",
|
|
279
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
280
|
-
sourceChecksum: convertedChecksum,
|
|
281
|
-
};
|
|
282
|
-
}
|
|
283
|
-
const code = "registry-upgrade-heal";
|
|
284
|
-
return {
|
|
285
|
-
...common, action: "update",
|
|
286
|
-
reason: "Healing stale target after registry upgrade",
|
|
287
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
288
|
-
sourceChecksum: convertedChecksum, currentTargetChecksum,
|
|
289
|
-
};
|
|
290
|
-
}
|
|
291
|
-
if (targetMatchesExpectedOutput &&
|
|
292
|
-
(convertedChecksum !== registeredSourceChecksum ||
|
|
293
|
-
currentTargetChecksum !== registeredTargetChecksum)) {
|
|
294
|
-
const code = "target-up-to-date-backfill";
|
|
295
|
-
return {
|
|
296
|
-
...common, action: "skip",
|
|
297
|
-
reason: "Target up-to-date — registry checksums will be backfilled",
|
|
298
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
299
|
-
sourceChecksum: convertedChecksum, registeredSourceChecksum,
|
|
300
|
-
currentTargetChecksum, registeredTargetChecksum, backfillRegistry: true,
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
const sourceChanged = convertedChecksum !== registeredSourceChecksum;
|
|
304
|
-
const targetChangeState = getTargetChangeState(targetState, registryEntry, registeredTargetChecksum);
|
|
305
|
-
if (targetChangeState === "deleted") {
|
|
306
|
-
const forceReinstall = input.force && !sourceChanged;
|
|
307
|
-
if (sourceChanged) {
|
|
308
|
-
const code = "target-deleted-source-changed";
|
|
309
|
-
return {
|
|
310
|
-
...common, action: "install",
|
|
311
|
-
reason: "Target was deleted, mewkit has updates — reinstalling",
|
|
312
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
313
|
-
sourceChecksum: convertedChecksum, registeredSourceChecksum,
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
if (forceReinstall) {
|
|
317
|
-
const code = "force-reinstall";
|
|
318
|
-
return {
|
|
319
|
-
...common, action: "install",
|
|
320
|
-
reason: "Force reinstall (target was deleted)",
|
|
321
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
322
|
-
sourceChecksum: convertedChecksum, registeredSourceChecksum,
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
|
-
const code = "user-deleted-respected";
|
|
326
|
-
return {
|
|
327
|
-
...common, action: "skip",
|
|
328
|
-
reason: "Target was deleted by user, mewkit unchanged — respecting deletion",
|
|
329
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
330
|
-
sourceChecksum: convertedChecksum, registeredSourceChecksum,
|
|
331
|
-
};
|
|
332
|
-
}
|
|
333
|
-
if (targetChangeState === "unknown") {
|
|
334
|
-
const code = sourceChanged
|
|
335
|
-
? "target-state-unknown-source-changed"
|
|
336
|
-
: "target-state-unknown";
|
|
337
|
-
return {
|
|
338
|
-
...common,
|
|
339
|
-
action: sourceChanged ? "conflict" : "skip",
|
|
340
|
-
reason: sourceChanged
|
|
341
|
-
? "Target state unavailable while mewkit changed — manual review required"
|
|
342
|
-
: "Target state unavailable, mewkit unchanged — preserving target",
|
|
343
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
344
|
-
sourceChecksum: convertedChecksum, registeredSourceChecksum,
|
|
345
|
-
currentTargetChecksum, registeredTargetChecksum,
|
|
346
|
-
};
|
|
347
|
-
}
|
|
348
|
-
const targetChanged = targetChangeState === "changed";
|
|
349
|
-
if (!sourceChanged && !targetChanged) {
|
|
350
|
-
const code = "no-changes";
|
|
351
|
-
return {
|
|
352
|
-
...common, action: "skip", reason: "No changes",
|
|
353
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
354
|
-
sourceChecksum: convertedChecksum, currentTargetChecksum,
|
|
355
|
-
};
|
|
356
|
-
}
|
|
357
|
-
if (!sourceChanged && targetChanged) {
|
|
358
|
-
if (input.force) {
|
|
359
|
-
return {
|
|
360
|
-
...common, action: "install",
|
|
361
|
-
reason: "Force overwrite (user edits)",
|
|
362
|
-
reasonCode: "force-overwrite",
|
|
363
|
-
reasonCopy: getReasonCopy("force-overwrite"),
|
|
364
|
-
sourceChecksum: convertedChecksum, registeredSourceChecksum,
|
|
365
|
-
currentTargetChecksum, registeredTargetChecksum,
|
|
366
|
-
};
|
|
367
|
-
}
|
|
368
|
-
const code = "user-edits-preserved";
|
|
369
|
-
return {
|
|
370
|
-
...common, action: "skip",
|
|
371
|
-
reason: "User edited, mewkit unchanged — preserving edits",
|
|
372
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
373
|
-
sourceChecksum: convertedChecksum, registeredSourceChecksum,
|
|
374
|
-
currentTargetChecksum, registeredTargetChecksum,
|
|
375
|
-
};
|
|
376
|
-
}
|
|
377
|
-
if (sourceChanged && !targetChanged) {
|
|
378
|
-
const code = "source-changed";
|
|
379
|
-
return {
|
|
380
|
-
...common, action: "update",
|
|
381
|
-
reason: "mewkit updated, no user edits — safe overwrite",
|
|
382
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
383
|
-
sourceChecksum: convertedChecksum, registeredSourceChecksum,
|
|
384
|
-
currentTargetChecksum, registeredTargetChecksum,
|
|
385
|
-
};
|
|
386
|
-
}
|
|
387
|
-
const code = "both-changed";
|
|
388
|
-
return {
|
|
389
|
-
...common, action: "conflict",
|
|
390
|
-
reason: "Both mewkit and user modified this item",
|
|
391
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
392
|
-
sourceChecksum: convertedChecksum, registeredSourceChecksum,
|
|
393
|
-
currentTargetChecksum, registeredTargetChecksum,
|
|
394
|
-
};
|
|
395
|
-
}
|
|
396
|
-
function findRegistryEntry(source, providerConfig, registry) {
|
|
397
|
-
const exactMatch = registry.installations.find((i) => i.item === source.item &&
|
|
398
|
-
i.type === source.type &&
|
|
399
|
-
i.provider === providerConfig.provider &&
|
|
400
|
-
i.global === providerConfig.global) || null;
|
|
401
|
-
if (exactMatch)
|
|
402
|
-
return exactMatch;
|
|
403
|
-
if (source.type === "config") {
|
|
404
|
-
return (registry.installations.find((i) => i.type === "config" &&
|
|
405
|
-
i.provider === providerConfig.provider &&
|
|
406
|
-
i.global === providerConfig.global) || null);
|
|
407
|
-
}
|
|
408
|
-
return null;
|
|
409
|
-
}
|
|
410
|
-
function detectOrphans(input) {
|
|
411
|
-
const actions = [];
|
|
412
|
-
const sourceItemKeys = new Set(input.sourceItems.map((s) => makeItemTypeKey(s.item, s.type)));
|
|
413
|
-
const activeProviderKeys = new Set(input.providerConfigs.map((p) => makeProviderConfigKey(p.provider, p.global)));
|
|
414
|
-
const hasConfigSource = input.sourceItems.some((s) => s.type === "config");
|
|
415
|
-
for (const entry of input.registry.installations) {
|
|
416
|
-
const sourceItemKey = makeItemTypeKey(entry.item, entry.type);
|
|
417
|
-
const providerKey = makeProviderConfigKey(entry.provider, entry.global);
|
|
418
|
-
if (!activeProviderKeys.has(providerKey))
|
|
419
|
-
continue;
|
|
420
|
-
if (entry.installSource === "manual")
|
|
421
|
-
continue;
|
|
422
|
-
if (entry.type === "skill")
|
|
423
|
-
continue;
|
|
424
|
-
if (entry.type === "config" && hasConfigSource)
|
|
425
|
-
continue;
|
|
426
|
-
if (!sourceItemKeys.has(sourceItemKey)) {
|
|
427
|
-
const code = "source-removed-orphan";
|
|
428
|
-
actions.push({
|
|
429
|
-
action: "delete",
|
|
430
|
-
item: entry.item, type: entry.type, provider: entry.provider, global: entry.global,
|
|
431
|
-
targetPath: entry.path,
|
|
432
|
-
reason: "Item no longer in mewkit source — orphaned",
|
|
433
|
-
reasonCode: code, reasonCopy: getReasonCopy(code),
|
|
434
|
-
});
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
return actions;
|
|
438
|
-
}
|
|
439
|
-
function buildPlan(actions, banners) {
|
|
440
|
-
const summary = { install: 0, update: 0, skip: 0, conflict: 0, delete: 0 };
|
|
441
|
-
for (const action of actions)
|
|
442
|
-
summary[action.action]++;
|
|
443
|
-
return { actions, summary, hasConflicts: summary.conflict > 0, banners };
|
|
444
|
-
}
|
|
445
|
-
//# sourceMappingURL=reconciler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../../../src/migrate/reconcile/reconciler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { ProviderType, SkillInfo } from "./types.js";
|
|
2
|
-
export interface SkillInstallResult {
|
|
3
|
-
skill: string;
|
|
4
|
-
provider: ProviderType;
|
|
5
|
-
success: boolean;
|
|
6
|
-
path?: string;
|
|
7
|
-
error?: string;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Install a single skill directory to the target provider.
|
|
11
|
-
* Source dir → target dir using node fs.cp recursive.
|
|
12
|
-
* Updates registry with sourceChecksum (SKILL.md content) for idempotency.
|
|
13
|
-
*/
|
|
14
|
-
export declare function installSkillDirectory(skill: SkillInfo, provider: ProviderType, options: {
|
|
15
|
-
global: boolean;
|
|
16
|
-
}): Promise<SkillInstallResult>;
|
|
17
|
-
/**
|
|
18
|
-
* Compute the install path for a skill on a target provider (used by reconciler/dry-run).
|
|
19
|
-
*/
|
|
20
|
-
export declare function getSkillInstallPath(skill: SkillInfo, provider: ProviderType, options: {
|
|
21
|
-
global: boolean;
|
|
22
|
-
}): string | null;
|
|
23
|
-
//# sourceMappingURL=skill-directory-installer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-directory-installer.d.ts","sourceRoot":"","sources":["../../src/migrate/skill-directory-installer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAC1C,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAuC7B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAC1B,MAAM,GAAG,IAAI,CAGf"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
// Skill directory installer — recursively copies a skill folder (SKILL.md + references/ + scripts/)
|
|
2
|
-
// to the target provider's skill path. Handles colon→dash sanitization for cross-platform safety.
|
|
3
|
-
import { existsSync } from "node:fs";
|
|
4
|
-
import { cp, mkdir, readFile } from "node:fs/promises";
|
|
5
|
-
import { dirname, join } from "node:path";
|
|
6
|
-
import { providers } from "./provider-registry.js";
|
|
7
|
-
import { getPortableInstallPath } from "./provider-registry-utils.js";
|
|
8
|
-
import { sanitizeSkillName } from "./discovery/skills-discovery.js";
|
|
9
|
-
import { computeContentChecksum } from "./reconcile/checksum-utils.js";
|
|
10
|
-
import { addPortableInstallation } from "./reconcile/portable-registry.js";
|
|
11
|
-
/**
|
|
12
|
-
* Install a single skill directory to the target provider.
|
|
13
|
-
* Source dir → target dir using node fs.cp recursive.
|
|
14
|
-
* Updates registry with sourceChecksum (SKILL.md content) for idempotency.
|
|
15
|
-
*/
|
|
16
|
-
export async function installSkillDirectory(skill, provider, options) {
|
|
17
|
-
const providerConfig = providers[provider];
|
|
18
|
-
if (!providerConfig?.skills) {
|
|
19
|
-
return { skill: skill.name, provider, success: false, error: `${provider} does not support skills` };
|
|
20
|
-
}
|
|
21
|
-
const sanitizedName = sanitizeSkillName(skill.dirName);
|
|
22
|
-
const targetBase = options.global ? providerConfig.skills.globalPath : providerConfig.skills.projectPath;
|
|
23
|
-
if (!targetBase) {
|
|
24
|
-
return { skill: skill.name, provider, success: false, error: `No ${options.global ? "global" : "project"} skills path for ${provider}` };
|
|
25
|
-
}
|
|
26
|
-
const targetDir = join(targetBase, sanitizedName);
|
|
27
|
-
try {
|
|
28
|
-
const parent = dirname(targetDir);
|
|
29
|
-
if (!existsSync(parent))
|
|
30
|
-
await mkdir(parent, { recursive: true });
|
|
31
|
-
await cp(skill.sourcePath, targetDir, { recursive: true, force: true, errorOnExist: false });
|
|
32
|
-
const skillMdPath = join(skill.sourcePath, "SKILL.md");
|
|
33
|
-
const skillMdTarget = join(targetDir, "SKILL.md");
|
|
34
|
-
const sourceChecksum = computeContentChecksum(await readFile(skillMdPath, "utf-8"));
|
|
35
|
-
const targetChecksum = computeContentChecksum(await readFile(skillMdTarget, "utf-8"));
|
|
36
|
-
await addPortableInstallation(skill.name, "skill", provider, options.global, targetDir, skill.sourcePath, { sourceChecksum, targetChecksum, installSource: "kit" });
|
|
37
|
-
return { skill: skill.name, provider, success: true, path: targetDir };
|
|
38
|
-
}
|
|
39
|
-
catch (err) {
|
|
40
|
-
return {
|
|
41
|
-
skill: skill.name,
|
|
42
|
-
provider,
|
|
43
|
-
success: false,
|
|
44
|
-
error: err instanceof Error ? err.message : String(err),
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Compute the install path for a skill on a target provider (used by reconciler/dry-run).
|
|
50
|
-
*/
|
|
51
|
-
export function getSkillInstallPath(skill, provider, options) {
|
|
52
|
-
const sanitizedName = sanitizeSkillName(skill.dirName);
|
|
53
|
-
return getPortableInstallPath(sanitizedName, provider, "skills", options);
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=skill-directory-installer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-directory-installer.js","sourceRoot":"","sources":["../../src/migrate/skill-directory-installer.ts"],"names":[],"mappings":"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"}
|