opkg 0.5.0 → 0.6.0
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 +49 -8
- package/dist/commands/add.js +11 -276
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/init.js +73 -145
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.js +26 -668
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/pack.js +10 -137
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/push.js +14 -8
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/save.js +12 -167
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/status.js +2 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/uninstall.js +5 -5
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/constants/index.js +18 -45
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/workspace.js +9 -0
- package/dist/constants/workspace.js.map +1 -0
- package/dist/core/add/add-conflict-handler.js +68 -0
- package/dist/core/add/add-conflict-handler.js.map +1 -0
- package/dist/core/add/add-pipeline.js +137 -0
- package/dist/core/add/add-pipeline.js.map +1 -0
- package/dist/core/add/package-index-updater.js +62 -33
- package/dist/core/add/package-index-updater.js.map +1 -1
- package/dist/core/add/platform-path-transformer.js +47 -0
- package/dist/core/add/platform-path-transformer.js.map +1 -0
- package/dist/core/add/source-collector.js +57 -0
- package/dist/core/add/source-collector.js.map +1 -0
- package/dist/core/dependency-resolver.js +3 -1
- package/dist/core/dependency-resolver.js.map +1 -1
- package/dist/core/directory.js +2 -2
- package/dist/core/directory.js.map +1 -1
- package/dist/core/discovery/file-discovery.js +55 -54
- package/dist/core/discovery/file-discovery.js.map +1 -1
- package/dist/core/discovery/platform-files-discovery.js +32 -17
- package/dist/core/discovery/platform-files-discovery.js.map +1 -1
- package/dist/core/install/bulk-install-pipeline.js +199 -0
- package/dist/core/install/bulk-install-pipeline.js.map +1 -0
- package/dist/core/install/canonical-plan.js +123 -0
- package/dist/core/install/canonical-plan.js.map +1 -0
- package/dist/core/install/dry-run.js +2 -2
- package/dist/core/install/dry-run.js.map +1 -1
- package/dist/core/install/index.js +3 -0
- package/dist/core/install/index.js.map +1 -0
- package/dist/core/install/install-errors.js +41 -0
- package/dist/core/install/install-errors.js.map +1 -0
- package/dist/core/install/install-flow.js +2 -5
- package/dist/core/install/install-flow.js.map +1 -1
- package/dist/core/install/install-pipeline.js +228 -0
- package/dist/core/install/install-pipeline.js.map +1 -0
- package/dist/core/install/install-reporting.js +99 -0
- package/dist/core/install/install-reporting.js.map +1 -0
- package/dist/core/install/platform-resolution.js +6 -6
- package/dist/core/install/platform-resolution.js.map +1 -1
- package/dist/core/install/remote-flow.js +67 -1
- package/dist/core/install/remote-flow.js.map +1 -1
- package/dist/core/openpackage.js +16 -8
- package/dist/core/openpackage.js.map +1 -1
- package/dist/core/package-context.js +246 -0
- package/dist/core/package-context.js.map +1 -0
- package/dist/core/package.js +3 -2
- package/dist/core/package.js.map +1 -1
- package/dist/core/platforms.js +126 -217
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/registry/registry-rename.js +2 -1
- package/dist/core/registry/registry-rename.js.map +1 -1
- package/dist/core/registry.js +10 -3
- package/dist/core/registry.js.map +1 -1
- package/dist/core/remote-pull.js +2 -1
- package/dist/core/remote-pull.js.map +1 -1
- package/dist/core/save/constants.js +4 -0
- package/dist/core/save/constants.js.map +1 -1
- package/dist/core/save/name-resolution.js +31 -0
- package/dist/core/save/name-resolution.js.map +1 -0
- package/dist/core/save/package-detection.js +147 -0
- package/dist/core/save/package-detection.js.map +1 -0
- package/dist/core/save/package-saver.js +46 -43
- package/dist/core/save/package-saver.js.map +1 -1
- package/dist/core/save/package-yml-generator.js +50 -71
- package/dist/core/save/package-yml-generator.js.map +1 -1
- package/dist/core/save/root-save-candidates.js.map +1 -1
- package/dist/core/save/save-candidate-loader.js +89 -0
- package/dist/core/save/save-candidate-loader.js.map +1 -0
- package/dist/core/save/save-conflict-resolution.js +72 -410
- package/dist/core/save/save-conflict-resolution.js.map +1 -1
- package/dist/core/save/save-conflict-resolver.js +277 -0
- package/dist/core/save/save-conflict-resolver.js.map +1 -0
- package/dist/core/save/save-pipeline.js +151 -0
- package/dist/core/save/save-pipeline.js.map +1 -0
- package/dist/core/save/save-types.js +2 -0
- package/dist/core/save/save-types.js.map +1 -0
- package/dist/core/save/save-yml-resolution.js +77 -39
- package/dist/core/save/save-yml-resolution.js.map +1 -1
- package/dist/core/save/workspace-rename.js +6 -6
- package/dist/core/save/workspace-rename.js.map +1 -1
- package/dist/core/scoping/package-scoping.js +13 -1
- package/dist/core/scoping/package-scoping.js.map +1 -1
- package/dist/core/status/status-file-discovery.js +12 -30
- package/dist/core/status/status-file-discovery.js.map +1 -1
- package/dist/core/sync/platform-sync.js +7 -4
- package/dist/core/sync/platform-sync.js.map +1 -1
- package/dist/core/sync/root-files-sync.js +59 -1
- package/dist/core/sync/root-files-sync.js.map +1 -1
- package/dist/core/uninstall/uninstall-file-discovery.js +1 -2
- package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/file-processing.js +5 -58
- package/dist/utils/file-processing.js.map +1 -1
- package/dist/utils/index-based-installer.js +15 -33
- package/dist/utils/index-based-installer.js.map +1 -1
- package/dist/utils/install-file-discovery.js +3 -3
- package/dist/utils/install-file-discovery.js.map +1 -1
- package/dist/utils/install-orchestrator.js +21 -21
- package/dist/utils/install-orchestrator.js.map +1 -1
- package/dist/utils/jsonc.js +44 -0
- package/dist/utils/jsonc.js.map +1 -0
- package/dist/utils/package-copy.js +199 -0
- package/dist/utils/package-copy.js.map +1 -0
- package/dist/utils/package-filters.js +125 -0
- package/dist/utils/package-filters.js.map +1 -0
- package/dist/utils/package-index-yml.js +15 -10
- package/dist/utils/package-index-yml.js.map +1 -1
- package/dist/utils/package-installation.js +4 -113
- package/dist/utils/package-installation.js.map +1 -1
- package/dist/utils/package-local-files.js +2 -35
- package/dist/utils/package-local-files.js.map +1 -1
- package/dist/utils/package-management.js +59 -37
- package/dist/utils/package-management.js.map +1 -1
- package/dist/utils/package-yml.js +24 -0
- package/dist/utils/package-yml.js.map +1 -1
- package/dist/utils/path-normalization.js +8 -53
- package/dist/utils/path-normalization.js.map +1 -1
- package/dist/utils/paths.js +17 -9
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/platform-file.js +16 -59
- package/dist/utils/platform-file.js.map +1 -1
- package/dist/utils/platform-mapper.js +29 -41
- package/dist/utils/platform-mapper.js.map +1 -1
- package/dist/utils/platform-specific-paths.js.map +1 -1
- package/dist/utils/platform-utils.js +28 -139
- package/dist/utils/platform-utils.js.map +1 -1
- package/dist/utils/platform-yaml-merge.js +13 -6
- package/dist/utils/platform-yaml-merge.js.map +1 -1
- package/dist/utils/registry-entry-filter.js +38 -24
- package/dist/utils/registry-entry-filter.js.map +1 -1
- package/dist/utils/registry-paths.js +10 -0
- package/dist/utils/registry-paths.js.map +1 -0
- package/dist/utils/root-file-installer.js +19 -0
- package/dist/utils/root-file-installer.js.map +1 -1
- package/dist/utils/root-file-registry.js.map +1 -1
- package/package.json +3 -2
- package/platforms.jsonc +178 -0
- package/specs/package/README.md +60 -0
- package/specs/package/nested-packages-and-parent-packages.md +79 -0
- package/specs/package/package-index-yml.md +171 -0
- package/specs/package/package-root-layout.md +78 -0
- package/specs/package/registry-payload-and-copy.md +77 -0
- package/specs/package/universal-content.md +144 -0
- package/specs/platforms.md +193 -0
- package/specs/save/README.md +40 -0
- package/specs/save/save-conflict-resolution.md +146 -0
- package/specs/save/save-file-discovery.md +101 -0
- package/specs/save/save-frontmatter-overrides.md +81 -0
- package/specs/save/save-modes-inputs.md +53 -0
- package/specs/save/save-naming-scoping.md +93 -0
- package/specs/save/save-package-detection.md +60 -0
- package/specs/save/save-registry-sync.md +126 -0
- package/dist/commands/release.js +0 -33
- package/dist/commands/release.js.map +0 -1
- package/dist/commands/tag.js +0 -311
- package/dist/commands/tag.js.map +0 -1
- package/dist/commands/update.js +0 -30
- package/dist/commands/update.js.map +0 -1
- package/dist/core/add/formula-index-updater.js +0 -290
- package/dist/core/add/formula-index-updater.js.map +0 -1
- package/dist/core/discovery/ai-files-discovery.js +0 -2
- package/dist/core/discovery/ai-files-discovery.js.map +0 -1
- package/dist/core/discovery/formula-files-discovery.js +0 -14
- package/dist/core/discovery/formula-files-discovery.js.map +0 -1
- package/dist/core/discovery/index-files-discovery.js +0 -91
- package/dist/core/discovery/index-files-discovery.js.map +0 -1
- package/dist/core/discovery/md-files-discovery.js +0 -82
- package/dist/core/discovery/md-files-discovery.js.map +0 -1
- package/dist/core/discovery/package-files-discovery.js +0 -14
- package/dist/core/discovery/package-files-discovery.js.map +0 -1
- package/dist/core/discovery/platform-discovery.js +0 -84
- package/dist/core/discovery/platform-discovery.js.map +0 -1
- package/dist/core/discovery/root-files-discovery.js +0 -2
- package/dist/core/discovery/root-files-discovery.js.map +0 -1
- package/dist/core/formula.js +0 -170
- package/dist/core/formula.js.map +0 -1
- package/dist/core/git-registry.js +0 -46
- package/dist/core/git-registry.js.map +0 -1
- package/dist/core/groundzero.js +0 -277
- package/dist/core/groundzero.js.map +0 -1
- package/dist/core/install/scenario.js +0 -11
- package/dist/core/install/scenario.js.map +0 -1
- package/dist/core/package-sync.js +0 -219
- package/dist/core/package-sync.js.map +0 -1
- package/dist/core/save/formula-file-generator.js +0 -167
- package/dist/core/save/formula-file-generator.js.map +0 -1
- package/dist/core/save/formula-saver.js +0 -52
- package/dist/core/save/formula-saver.js.map +0 -1
- package/dist/core/save/formula-yml-generator.js +0 -89
- package/dist/core/save/formula-yml-generator.js.map +0 -1
- package/dist/core/save/formula-yml-versioning.js +0 -108
- package/dist/core/save/formula-yml-versioning.js.map +0 -1
- package/dist/core/save/generic-file-sync.js +0 -38
- package/dist/core/save/generic-file-sync.js.map +0 -1
- package/dist/core/save/md-files-sync.js +0 -33
- package/dist/core/save/md-files-sync.js.map +0 -1
- package/dist/core/save/package-yml-versioning.js +0 -108
- package/dist/core/save/package-yml-versioning.js.map +0 -1
- package/dist/core/save/platform-sync.js +0 -95
- package/dist/core/save/platform-sync.js.map +0 -1
- package/dist/core/save/root-files-sync.js +0 -140
- package/dist/core/save/root-files-sync.js.map +0 -1
- package/dist/core/save/save-candidate-types.js +0 -2
- package/dist/core/save/save-candidate-types.js.map +0 -1
- package/dist/core/save/save-conflict-types.js +0 -2
- package/dist/core/save/save-conflict-types.js.map +0 -1
- package/dist/core/save/save-file-discovery.js +0 -5
- package/dist/core/save/save-file-discovery.js.map +0 -1
- package/dist/core/status-file-discovery.js +0 -175
- package/dist/core/status-file-discovery.js.map +0 -1
- package/dist/utils/discovery/file-processing.js +0 -156
- package/dist/utils/discovery/file-processing.js.map +0 -1
- package/dist/utils/discovery/formula-discovery.js +0 -211
- package/dist/utils/discovery/formula-discovery.js.map +0 -1
- package/dist/utils/discovery/platform-discovery.js +0 -2
- package/dist/utils/discovery/platform-discovery.js.map +0 -1
- package/dist/utils/formula-discovery.js +0 -102
- package/dist/utils/formula-discovery.js.map +0 -1
- package/dist/utils/formula-index-yml.js +0 -122
- package/dist/utils/formula-index-yml.js.map +0 -1
- package/dist/utils/formula-installation.js +0 -110
- package/dist/utils/formula-installation.js.map +0 -1
- package/dist/utils/formula-local-files.js +0 -38
- package/dist/utils/formula-local-files.js.map +0 -1
- package/dist/utils/formula-management.js +0 -191
- package/dist/utils/formula-management.js.map +0 -1
- package/dist/utils/formula-name.js +0 -97
- package/dist/utils/formula-name.js.map +0 -1
- package/dist/utils/formula-versioning.js +0 -109
- package/dist/utils/formula-versioning.js.map +0 -1
- package/dist/utils/formula-yml.js +0 -82
- package/dist/utils/formula-yml.js.map +0 -1
- package/dist/utils/git.js +0 -54
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/id-based-discovery.js +0 -126
- package/dist/utils/id-based-discovery.js.map +0 -1
- package/dist/utils/id-based-installer.js +0 -249
- package/dist/utils/id-based-installer.js.map +0 -1
- package/dist/utils/index-yml-based-installer.js +0 -375
- package/dist/utils/index-yml-based-installer.js.map +0 -1
- package/dist/utils/index-yml.js +0 -124
- package/dist/utils/index-yml.js.map +0 -1
- package/dist/utils/md-frontmatter.js +0 -3
- package/dist/utils/md-frontmatter.js.map +0 -1
- package/dist/utils/package-link-yml.js +0 -92
- package/dist/utils/package-link-yml.js.map +0 -1
- package/dist/utils/platform-discovery.js +0 -2
- package/dist/utils/platform-discovery.js.map +0 -1
- package/dist/utils/platform-frontmatter-split.js +0 -15
- package/dist/utils/platform-frontmatter-split.js.map +0 -1
- package/dist/utils/timestamp-encoder.js +0 -13
- package/dist/utils/timestamp-encoder.js.map +0 -1
- package/dist/utils/wip-versioning.js +0 -24
- package/dist/utils/wip-versioning.js.map +0 -1
|
@@ -1,40 +1,37 @@
|
|
|
1
1
|
import { dirname, join } from 'path';
|
|
2
2
|
import { FILE_PATTERNS } from '../../constants/index.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { findFilesByExtension, getFileMtime } from '../../utils/file-processing.js';
|
|
7
|
-
import { calculateFileHash } from '../../utils/hash-utils.js';
|
|
8
|
-
import { isAllowedRegistryPath, normalizeRegistryPath, isRootRegistryPath, isSkippableRegistryPath } from '../../utils/registry-entry-filter.js';
|
|
9
|
-
import { discoverPlatformFilesUnified } from '../discovery/platform-files-discovery.js';
|
|
10
|
-
import { getRelativePathFromBase } from '../../utils/path-normalization.js';
|
|
3
|
+
import { readPackageIndex, isDirKey } from '../../utils/package-index-yml.js';
|
|
4
|
+
import { ensureDir, exists, isDirectory, readTextFile, writeTextFile, remove } from '../../utils/fs.js';
|
|
5
|
+
import { normalizeRegistryPath, } from '../../utils/registry-entry-filter.js';
|
|
11
6
|
import { UTF8_ENCODING } from './constants.js';
|
|
12
|
-
import { safePrompts, promptPlatformSpecificSelection, getContentPreview } from '../../utils/prompts.js';
|
|
13
7
|
import { createPlatformSpecificRegistryPath } from '../../utils/platform-specific-paths.js';
|
|
14
8
|
import { logger } from '../../utils/logger.js';
|
|
15
9
|
import { discoverWorkspaceRootSaveCandidates, loadLocalRootSaveCandidates } from './root-save-candidates.js';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
|
|
10
|
+
import { buildFrontmatterMergePlans, applyFrontmatterMergePlans, getOverrideRelativePath, } from './save-yml-resolution.js';
|
|
11
|
+
import { loadLocalCandidates, discoverWorkspaceCandidates } from './save-candidate-loader.js';
|
|
12
|
+
import { buildCandidateGroups, pruneWorkspaceCandidatesWithLocalPlatformVariants, resolveGroup, resolveRootGroup } from './save-conflict-resolver.js';
|
|
13
|
+
import { readPackageFilesForRegistry } from '../../utils/package-copy.js';
|
|
14
|
+
import { composeMarkdown } from '../../utils/markdown-frontmatter.js';
|
|
15
|
+
export async function resolvePackageFilesWithConflicts(packageContext, options = {}) {
|
|
20
16
|
const cwd = process.cwd();
|
|
21
|
-
const
|
|
22
|
-
|
|
17
|
+
const packageFilesDir = packageContext.packageFilesDir;
|
|
18
|
+
const packageRootDir = packageContext.packageRootDir;
|
|
19
|
+
if (!(await exists(packageFilesDir)) || !(await isDirectory(packageFilesDir))) {
|
|
23
20
|
return [];
|
|
24
21
|
}
|
|
25
22
|
const [localPlatformCandidates, workspacePlatformCandidates, localRootCandidates, workspaceRootCandidates] = await Promise.all([
|
|
26
|
-
loadLocalCandidates(
|
|
27
|
-
discoverWorkspaceCandidates(cwd,
|
|
28
|
-
loadLocalRootSaveCandidates(
|
|
29
|
-
discoverWorkspaceRootSaveCandidates(cwd,
|
|
23
|
+
loadLocalCandidates(packageRootDir),
|
|
24
|
+
discoverWorkspaceCandidates(cwd, packageContext.config.name),
|
|
25
|
+
loadLocalRootSaveCandidates(packageRootDir, packageContext.config.name),
|
|
26
|
+
discoverWorkspaceRootSaveCandidates(cwd, packageContext.config.name)
|
|
30
27
|
]);
|
|
31
28
|
const localCandidates = [...localPlatformCandidates, ...localRootCandidates];
|
|
32
|
-
const indexRecord = await readPackageIndex(cwd,
|
|
29
|
+
const indexRecord = await readPackageIndex(cwd, packageContext.config.name, packageContext.location);
|
|
33
30
|
if (!indexRecord || Object.keys(indexRecord.files ?? {}).length === 0) {
|
|
34
31
|
// No index yet (first save) – run root-only conflict resolution so prompts are shown for CLAUDE.md, WARP.md, etc.
|
|
35
32
|
const rootGroups = buildCandidateGroups(localRootCandidates, workspaceRootCandidates);
|
|
36
33
|
// Prune platform-specific root candidates that already exist locally (e.g., CLAUDE.md present)
|
|
37
|
-
await pruneWorkspaceCandidatesWithLocalPlatformVariants(
|
|
34
|
+
await pruneWorkspaceCandidatesWithLocalPlatformVariants(packageRootDir, rootGroups);
|
|
38
35
|
for (const group of rootGroups) {
|
|
39
36
|
const hasLocal = !!group.local;
|
|
40
37
|
const hasWorkspace = group.workspace.length > 0;
|
|
@@ -53,7 +50,7 @@ export async function resolvePackageFilesWithConflicts(packageInfo, options = {}
|
|
|
53
50
|
continue;
|
|
54
51
|
const { selection, platformSpecific } = resolution;
|
|
55
52
|
// Always write universal AGENTS.md from the selected root section
|
|
56
|
-
await writeRootSelection(
|
|
53
|
+
await writeRootSelection(packageRootDir, packageContext.config.name, group.local, selection);
|
|
57
54
|
// Persist platform-specific root selections (e.g., CLAUDE.md, WARP.md)
|
|
58
55
|
for (const candidate of platformSpecific) {
|
|
59
56
|
const platform = candidate.platform;
|
|
@@ -62,7 +59,7 @@ export async function resolvePackageFilesWithConflicts(packageInfo, options = {}
|
|
|
62
59
|
const platformRegistryPath = createPlatformSpecificRegistryPath(group.registryPath, platform);
|
|
63
60
|
if (!platformRegistryPath)
|
|
64
61
|
continue;
|
|
65
|
-
const targetPath = join(
|
|
62
|
+
const targetPath = join(packageRootDir, platformRegistryPath);
|
|
66
63
|
try {
|
|
67
64
|
await ensureDir(dirname(targetPath));
|
|
68
65
|
const contentToWrite = candidate.isRootFile
|
|
@@ -83,7 +80,7 @@ export async function resolvePackageFilesWithConflicts(packageInfo, options = {}
|
|
|
83
80
|
}
|
|
84
81
|
}
|
|
85
82
|
// After resolving root conflicts, return filtered files from local dir
|
|
86
|
-
return await
|
|
83
|
+
return await readPackageFilesForRegistry(packageRootDir);
|
|
87
84
|
}
|
|
88
85
|
const fileKeys = new Set();
|
|
89
86
|
const dirKeys = [];
|
|
@@ -111,9 +108,11 @@ export async function resolvePackageFilesWithConflicts(packageInfo, options = {}
|
|
|
111
108
|
const filteredWorkspaceRootCandidates = workspaceRootCandidates.filter(candidate => candidate.isRootFile || isAllowedRegistryPathForPackage(candidate.registryPath));
|
|
112
109
|
const workspaceCandidates = [...filteredWorkspacePlatformCandidates, ...filteredWorkspaceRootCandidates];
|
|
113
110
|
const groups = buildCandidateGroups(localCandidates, workspaceCandidates);
|
|
114
|
-
|
|
111
|
+
let frontmatterPlans = await buildFrontmatterMergePlans(packageRootDir, groups);
|
|
112
|
+
const frontmatterPlanMap = new Map(frontmatterPlans.map(plan => [plan.registryPath, plan]));
|
|
113
|
+
const pathsWithFrontmatterPlans = new Set(frontmatterPlanMap.keys());
|
|
115
114
|
// Prune platform-specific workspace candidates that already have local platform-specific files
|
|
116
|
-
await pruneWorkspaceCandidatesWithLocalPlatformVariants(
|
|
115
|
+
await pruneWorkspaceCandidatesWithLocalPlatformVariants(packageRootDir, groups);
|
|
117
116
|
// Resolve conflicts and write chosen content back to local files
|
|
118
117
|
for (const group of groups) {
|
|
119
118
|
const hasLocal = !!group.local;
|
|
@@ -134,13 +133,32 @@ export async function resolvePackageFilesWithConflicts(packageInfo, options = {}
|
|
|
134
133
|
continue;
|
|
135
134
|
const { selection, platformSpecific } = resolution;
|
|
136
135
|
if (group.registryPath === FILE_PATTERNS.AGENTS_MD && selection.isRootFile) {
|
|
137
|
-
await writeRootSelection(
|
|
136
|
+
await writeRootSelection(packageRootDir, packageContext.config.name, group.local, selection);
|
|
138
137
|
// Continue to platform-specific persistence below (don't skip it)
|
|
139
138
|
}
|
|
139
|
+
else if (pathsWithFrontmatterPlans.has(group.registryPath)) {
|
|
140
|
+
// Only update markdown body; frontmatter will be handled by merge plans
|
|
141
|
+
if (group.local) {
|
|
142
|
+
const localBody = group.local.markdownBody ?? group.local.content;
|
|
143
|
+
const selectionBody = selection.markdownBody ?? selection.content;
|
|
144
|
+
if ((selectionBody ?? '').trim() !== (localBody ?? '').trim()) {
|
|
145
|
+
const targetPath = join(packageRootDir, group.registryPath);
|
|
146
|
+
const localFrontmatter = group.local.frontmatter;
|
|
147
|
+
const updatedContent = composeMarkdown(localFrontmatter, selectionBody);
|
|
148
|
+
try {
|
|
149
|
+
await writeTextFile(targetPath, updatedContent, UTF8_ENCODING);
|
|
150
|
+
logger.debug(`Updated markdown body (frontmatter deferred to merge plan): ${group.registryPath}`);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
logger.warn(`Failed to update markdown body for ${group.registryPath}: ${error}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
140
158
|
else {
|
|
141
159
|
if (group.local && selection.contentHash !== group.local.contentHash) {
|
|
142
160
|
// Overwrite local file content with selected content
|
|
143
|
-
const targetPath = join(
|
|
161
|
+
const targetPath = join(packageRootDir, group.registryPath);
|
|
144
162
|
try {
|
|
145
163
|
await writeTextFile(targetPath, selection.content, UTF8_ENCODING);
|
|
146
164
|
logger.debug(`Updated local file with selected content: ${group.registryPath}`);
|
|
@@ -151,7 +169,7 @@ export async function resolvePackageFilesWithConflicts(packageInfo, options = {}
|
|
|
151
169
|
}
|
|
152
170
|
else if (!group.local) {
|
|
153
171
|
// No local file existed; write the selected content to create it
|
|
154
|
-
const targetPath = join(
|
|
172
|
+
const targetPath = join(packageRootDir, group.registryPath);
|
|
155
173
|
try {
|
|
156
174
|
await ensureDir(dirname(targetPath));
|
|
157
175
|
await writeTextFile(targetPath, selection.content, UTF8_ENCODING);
|
|
@@ -173,7 +191,7 @@ export async function resolvePackageFilesWithConflicts(packageInfo, options = {}
|
|
|
173
191
|
if (!platformRegistryPath) {
|
|
174
192
|
continue;
|
|
175
193
|
}
|
|
176
|
-
const targetPath = join(
|
|
194
|
+
const targetPath = join(packageRootDir, platformRegistryPath);
|
|
177
195
|
try {
|
|
178
196
|
await ensureDir(dirname(targetPath));
|
|
179
197
|
// For root files, use sectionBody (extracted package content) instead of full content
|
|
@@ -188,6 +206,25 @@ export async function resolvePackageFilesWithConflicts(packageInfo, options = {}
|
|
|
188
206
|
}
|
|
189
207
|
await writeTextFile(targetPath, contentToWrite, UTF8_ENCODING);
|
|
190
208
|
logger.debug(`Wrote platform-specific file: ${platformRegistryPath}`);
|
|
209
|
+
if (pathsWithFrontmatterPlans.has(group.registryPath)) {
|
|
210
|
+
const overrideRelativePath = getOverrideRelativePath(group.registryPath, platform);
|
|
211
|
+
if (overrideRelativePath) {
|
|
212
|
+
const overrideFullPath = join(packageRootDir, overrideRelativePath);
|
|
213
|
+
if (await exists(overrideFullPath)) {
|
|
214
|
+
await remove(overrideFullPath);
|
|
215
|
+
logger.debug(`Removed redundant platform override: ${overrideRelativePath}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
const plan = frontmatterPlanMap.get(group.registryPath);
|
|
219
|
+
if (plan) {
|
|
220
|
+
plan.workspaceEntries = plan.workspaceEntries.filter(entry => entry.platform !== platform);
|
|
221
|
+
plan.platformOverrides.delete(platform);
|
|
222
|
+
if (plan.workspaceEntries.length === 0) {
|
|
223
|
+
frontmatterPlanMap.delete(group.registryPath);
|
|
224
|
+
pathsWithFrontmatterPlans.delete(group.registryPath);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
191
228
|
}
|
|
192
229
|
catch (error) {
|
|
193
230
|
logger.warn(`Failed to write platform-specific file ${platformRegistryPath}: ${error}`);
|
|
@@ -195,354 +232,12 @@ export async function resolvePackageFilesWithConflicts(packageInfo, options = {}
|
|
|
195
232
|
}
|
|
196
233
|
}
|
|
197
234
|
// After resolving conflicts by updating local files, simply read filtered files from local dir
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
async function loadLocalCandidates(packageDir) {
|
|
202
|
-
const entries = await findFilesByExtension(packageDir, [], packageDir);
|
|
203
|
-
const candidates = [];
|
|
204
|
-
for (const entry of entries) {
|
|
205
|
-
const normalizedPath = normalizeRegistryPath(entry.relativePath);
|
|
206
|
-
if (normalizedPath === PACKAGE_INDEX_FILENAME) {
|
|
207
|
-
continue;
|
|
208
|
-
}
|
|
209
|
-
if (normalizedPath === FILE_PATTERNS.AGENTS_MD) {
|
|
210
|
-
continue;
|
|
211
|
-
}
|
|
212
|
-
if (!isAllowedRegistryPath(normalizedPath)) {
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
const fullPath = entry.fullPath;
|
|
216
|
-
const content = await readTextFile(fullPath);
|
|
217
|
-
const isMarkdown = normalizedPath.endsWith(FILE_PATTERNS.MD_FILES);
|
|
218
|
-
const split = isMarkdown ? splitFrontmatter(content) : undefined;
|
|
219
|
-
const markdownBody = split ? split.body : content;
|
|
220
|
-
const frontmatter = split?.frontmatter ?? undefined;
|
|
221
|
-
const rawFrontmatter = split?.rawFrontmatter;
|
|
222
|
-
const contentHash = await calculateContentHash(normalizedPath, content);
|
|
223
|
-
const mtime = await getFileMtime(fullPath);
|
|
224
|
-
candidates.push({
|
|
225
|
-
source: 'local',
|
|
226
|
-
registryPath: normalizedPath,
|
|
227
|
-
fullPath,
|
|
228
|
-
content,
|
|
229
|
-
contentHash,
|
|
230
|
-
mtime,
|
|
231
|
-
displayPath: normalizedPath,
|
|
232
|
-
isMarkdown,
|
|
233
|
-
frontmatter,
|
|
234
|
-
rawFrontmatter,
|
|
235
|
-
markdownBody
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
return candidates;
|
|
239
|
-
}
|
|
240
|
-
async function discoverWorkspaceCandidates(cwd, packageName) {
|
|
241
|
-
const discovered = await discoverPlatformFilesUnified(cwd, packageName);
|
|
242
|
-
const candidates = [];
|
|
243
|
-
for (const file of discovered) {
|
|
244
|
-
const normalizedPath = normalizeRegistryPath(file.registryPath);
|
|
245
|
-
if (!isAllowedRegistryPath(normalizedPath)) {
|
|
246
|
-
continue;
|
|
247
|
-
}
|
|
248
|
-
const content = await readTextFile(file.fullPath);
|
|
249
|
-
const isMarkdown = normalizedPath.endsWith(FILE_PATTERNS.MD_FILES);
|
|
250
|
-
const split = isMarkdown ? splitFrontmatter(content) : undefined;
|
|
251
|
-
const markdownBody = split ? split.body : content;
|
|
252
|
-
const frontmatter = split?.frontmatter ?? undefined;
|
|
253
|
-
const rawFrontmatter = split?.rawFrontmatter;
|
|
254
|
-
const contentHash = await calculateContentHash(normalizedPath, content);
|
|
255
|
-
const displayPath = getRelativePathFromBase(file.fullPath, cwd) || normalizedPath;
|
|
256
|
-
const platform = inferPlatformFromWorkspaceFile(file.fullPath, file.sourceDir, normalizedPath);
|
|
257
|
-
candidates.push({
|
|
258
|
-
source: 'workspace',
|
|
259
|
-
registryPath: normalizedPath,
|
|
260
|
-
fullPath: file.fullPath,
|
|
261
|
-
content,
|
|
262
|
-
contentHash,
|
|
263
|
-
mtime: file.mtime,
|
|
264
|
-
displayPath,
|
|
265
|
-
platform,
|
|
266
|
-
isMarkdown,
|
|
267
|
-
frontmatter,
|
|
268
|
-
rawFrontmatter,
|
|
269
|
-
markdownBody
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
return candidates;
|
|
273
|
-
}
|
|
274
|
-
async function calculateContentHash(registryPath, content) {
|
|
275
|
-
const isMarkdown = registryPath.endsWith(FILE_PATTERNS.MD_FILES);
|
|
276
|
-
const normalizedContent = isMarkdown ? stripFrontmatter(content) : content;
|
|
277
|
-
return await calculateFileHash(normalizedContent);
|
|
278
|
-
}
|
|
279
|
-
function buildCandidateGroups(localCandidates, workspaceCandidates) {
|
|
280
|
-
const map = new Map();
|
|
281
|
-
for (const candidate of localCandidates) {
|
|
282
|
-
const group = ensureGroup(map, candidate.registryPath);
|
|
283
|
-
group.local = candidate;
|
|
284
|
-
}
|
|
285
|
-
for (const candidate of workspaceCandidates) {
|
|
286
|
-
const group = ensureGroup(map, candidate.registryPath);
|
|
287
|
-
group.workspace.push(candidate);
|
|
288
|
-
}
|
|
289
|
-
return Array.from(map.values());
|
|
290
|
-
}
|
|
291
|
-
function ensureGroup(map, registryPath) {
|
|
292
|
-
let group = map.get(registryPath);
|
|
293
|
-
if (!group) {
|
|
294
|
-
group = {
|
|
295
|
-
registryPath,
|
|
296
|
-
workspace: []
|
|
297
|
-
};
|
|
298
|
-
map.set(registryPath, group);
|
|
299
|
-
}
|
|
300
|
-
return group;
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Prune platform-specific workspace candidates that already have local platform-specific files.
|
|
304
|
-
* This prevents false conflicts when platform-specific workspace files are mapped to universal
|
|
305
|
-
* registry paths but corresponding platform-specific files already exist in the package.
|
|
306
|
-
*/
|
|
307
|
-
async function pruneWorkspaceCandidatesWithLocalPlatformVariants(packageDir, groups) {
|
|
308
|
-
for (const group of groups) {
|
|
309
|
-
if (!group.local) {
|
|
310
|
-
continue;
|
|
311
|
-
}
|
|
312
|
-
const filtered = [];
|
|
313
|
-
for (const candidate of group.workspace) {
|
|
314
|
-
const platform = candidate.platform;
|
|
315
|
-
if (!platform || platform === 'ai') {
|
|
316
|
-
// Keep non-platform-specific candidates
|
|
317
|
-
filtered.push(candidate);
|
|
318
|
-
continue;
|
|
319
|
-
}
|
|
320
|
-
const platformRegistryPath = createPlatformSpecificRegistryPath(group.registryPath, platform);
|
|
321
|
-
if (!platformRegistryPath) {
|
|
322
|
-
// Cannot create platform-specific path; keep candidate
|
|
323
|
-
filtered.push(candidate);
|
|
324
|
-
continue;
|
|
325
|
-
}
|
|
326
|
-
const platformFullPath = join(packageDir, platformRegistryPath);
|
|
327
|
-
if (await exists(platformFullPath)) {
|
|
328
|
-
// Local platform-specific file already exists; skip this workspace candidate
|
|
329
|
-
// to avoid false conflict detection
|
|
330
|
-
logger.debug(`Skipping workspace candidate ${candidate.displayPath} for ${group.registryPath} ` +
|
|
331
|
-
`because local platform-specific file ${platformRegistryPath} already exists`);
|
|
332
|
-
continue;
|
|
333
|
-
}
|
|
334
|
-
// No local platform-specific file exists; keep this candidate for conflict resolution
|
|
335
|
-
filtered.push(candidate);
|
|
336
|
-
}
|
|
337
|
-
group.workspace = filtered;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
async function resolveRootGroup(group, force) {
|
|
341
|
-
const orderedCandidates = [];
|
|
342
|
-
if (group.local) {
|
|
343
|
-
orderedCandidates.push(group.local);
|
|
344
|
-
}
|
|
345
|
-
if (group.workspace.length > 0) {
|
|
346
|
-
const sortedWorkspace = [...group.workspace].sort((a, b) => {
|
|
347
|
-
if (b.mtime !== a.mtime) {
|
|
348
|
-
return b.mtime - a.mtime;
|
|
349
|
-
}
|
|
350
|
-
return a.displayPath.localeCompare(b.displayPath);
|
|
351
|
-
});
|
|
352
|
-
orderedCandidates.push(...sortedWorkspace);
|
|
353
|
-
}
|
|
354
|
-
if (orderedCandidates.length === 0) {
|
|
355
|
-
return undefined;
|
|
356
|
-
}
|
|
357
|
-
const uniqueCandidates = dedupeByHash(orderedCandidates);
|
|
358
|
-
if (uniqueCandidates.length === 1) {
|
|
359
|
-
return {
|
|
360
|
-
selection: uniqueCandidates[0],
|
|
361
|
-
platformSpecific: []
|
|
362
|
-
};
|
|
363
|
-
}
|
|
364
|
-
if (group.local) {
|
|
365
|
-
const localCandidate = group.local;
|
|
366
|
-
const differsFromAnyWorkspace = group.workspace.some(w => w.contentHash !== localCandidate.contentHash);
|
|
367
|
-
if (differsFromAnyWorkspace) {
|
|
368
|
-
const latestWorkspaceMtime = group.workspace.length > 0 ? Math.max(...group.workspace.map(w => w.mtime)) : 0;
|
|
369
|
-
if (localCandidate.mtime >= latestWorkspaceMtime) {
|
|
370
|
-
return {
|
|
371
|
-
selection: localCandidate,
|
|
372
|
-
platformSpecific: []
|
|
373
|
-
};
|
|
374
|
-
}
|
|
375
|
-
if (force) {
|
|
376
|
-
logger.info(`Force-selected local version for ${group.registryPath}`);
|
|
377
|
-
return {
|
|
378
|
-
selection: localCandidate,
|
|
379
|
-
platformSpecific: []
|
|
380
|
-
};
|
|
381
|
-
}
|
|
382
|
-
return await promptForCandidate(group.registryPath, uniqueCandidates);
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
if (force) {
|
|
386
|
-
const selected = pickLatestByMtime(uniqueCandidates);
|
|
387
|
-
logger.info(`Force-selected ${selected.displayPath} for ${group.registryPath}`);
|
|
388
|
-
return {
|
|
389
|
-
selection: selected,
|
|
390
|
-
platformSpecific: []
|
|
391
|
-
};
|
|
392
|
-
}
|
|
393
|
-
return await promptForCandidate(group.registryPath, uniqueCandidates);
|
|
235
|
+
frontmatterPlans = frontmatterPlans.filter(plan => plan.workspaceEntries.length > 0);
|
|
236
|
+
await applyFrontmatterMergePlans(packageRootDir, frontmatterPlans);
|
|
237
|
+
return await readPackageFilesForRegistry(packageRootDir);
|
|
394
238
|
}
|
|
395
|
-
async function
|
|
396
|
-
const
|
|
397
|
-
if (group.local) {
|
|
398
|
-
orderedCandidates.push(group.local);
|
|
399
|
-
}
|
|
400
|
-
if (group.workspace.length > 0) {
|
|
401
|
-
const sortedWorkspace = [...group.workspace].sort((a, b) => {
|
|
402
|
-
if (b.mtime !== a.mtime) {
|
|
403
|
-
return b.mtime - a.mtime;
|
|
404
|
-
}
|
|
405
|
-
return a.displayPath.localeCompare(b.displayPath);
|
|
406
|
-
});
|
|
407
|
-
orderedCandidates.push(...sortedWorkspace);
|
|
408
|
-
}
|
|
409
|
-
if (orderedCandidates.length === 0) {
|
|
410
|
-
return undefined;
|
|
411
|
-
}
|
|
412
|
-
const uniqueCandidates = dedupeByHash(orderedCandidates);
|
|
413
|
-
if (uniqueCandidates.length === 1) {
|
|
414
|
-
return {
|
|
415
|
-
selection: uniqueCandidates[0],
|
|
416
|
-
platformSpecific: []
|
|
417
|
-
};
|
|
418
|
-
}
|
|
419
|
-
// Mirror YAML override behavior: local newer -> no prompt (local wins); workspace newer -> prompt
|
|
420
|
-
if (group.local) {
|
|
421
|
-
const localCandidate = group.local;
|
|
422
|
-
const differsFromAnyWorkspace = group.workspace.some(w => w.contentHash !== localCandidate.contentHash);
|
|
423
|
-
if (differsFromAnyWorkspace) {
|
|
424
|
-
const latestWorkspaceMtime = group.workspace.length > 0
|
|
425
|
-
? Math.max(...group.workspace.map(w => w.mtime))
|
|
426
|
-
: 0;
|
|
427
|
-
// If local is newer or equal, use it without prompting (matches YAML override behavior)
|
|
428
|
-
if (localCandidate.mtime >= latestWorkspaceMtime) {
|
|
429
|
-
return {
|
|
430
|
-
selection: localCandidate,
|
|
431
|
-
platformSpecific: []
|
|
432
|
-
};
|
|
433
|
-
}
|
|
434
|
-
// Workspace is newer: prompt unless user explicitly requested --force
|
|
435
|
-
if (!force) {
|
|
436
|
-
return await promptForCandidate(group.registryPath, uniqueCandidates);
|
|
437
|
-
}
|
|
438
|
-
// Explicit --force: always choose local version
|
|
439
|
-
logger.info(`Force-selected local version for ${group.registryPath}`);
|
|
440
|
-
return {
|
|
441
|
-
selection: localCandidate,
|
|
442
|
-
platformSpecific: []
|
|
443
|
-
};
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
// Fallback: prompt when there are multiple unique candidates
|
|
447
|
-
if (force) {
|
|
448
|
-
const selected = pickLatestByMtime(uniqueCandidates);
|
|
449
|
-
logger.info(`Force-selected ${selected.displayPath} for ${group.registryPath}`);
|
|
450
|
-
return {
|
|
451
|
-
selection: selected,
|
|
452
|
-
platformSpecific: []
|
|
453
|
-
};
|
|
454
|
-
}
|
|
455
|
-
return await promptForCandidate(group.registryPath, uniqueCandidates);
|
|
456
|
-
}
|
|
457
|
-
function dedupeByHash(candidates) {
|
|
458
|
-
const seen = new Set();
|
|
459
|
-
const unique = [];
|
|
460
|
-
for (const candidate of candidates) {
|
|
461
|
-
if (seen.has(candidate.contentHash)) {
|
|
462
|
-
continue;
|
|
463
|
-
}
|
|
464
|
-
seen.add(candidate.contentHash);
|
|
465
|
-
unique.push(candidate);
|
|
466
|
-
}
|
|
467
|
-
return unique;
|
|
468
|
-
}
|
|
469
|
-
function pickLatestByMtime(candidates) {
|
|
470
|
-
let best = candidates[0];
|
|
471
|
-
for (let i = 1; i < candidates.length; i += 1) {
|
|
472
|
-
const current = candidates[i];
|
|
473
|
-
if (current.mtime > best.mtime) {
|
|
474
|
-
best = current;
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
return best;
|
|
478
|
-
}
|
|
479
|
-
async function promptForCandidate(registryPath, candidates) {
|
|
480
|
-
console.log(`\n⚠️ Conflict detected for ${registryPath}:`);
|
|
481
|
-
candidates.forEach(candidate => {
|
|
482
|
-
console.log(` • ${formatCandidateLabel(candidate)}`);
|
|
483
|
-
});
|
|
484
|
-
// Stage 1: Allow marking workspace candidates as platform-specific when they advertise a platform
|
|
485
|
-
const platformEligibleWorkspace = candidates.filter(candidate => candidate.source === 'workspace' && candidate.platform && candidate.platform !== 'ai');
|
|
486
|
-
let markedPlatformSpecific = [];
|
|
487
|
-
if (platformEligibleWorkspace.length > 0) {
|
|
488
|
-
const options = await Promise.all(platformEligibleWorkspace.map(async (candidate) => ({
|
|
489
|
-
platform: candidate.platform ?? 'workspace',
|
|
490
|
-
sourcePath: candidate.fullPath,
|
|
491
|
-
preview: await getContentPreview(candidate.fullPath),
|
|
492
|
-
registryPath: candidate.displayPath
|
|
493
|
-
})));
|
|
494
|
-
const indices = await promptPlatformSpecificSelection(options, 'Select workspace files to mark as platform-specific:', 'Unselected files remain candidates for universal content');
|
|
495
|
-
const markedIndexSet = new Set(indices);
|
|
496
|
-
markedPlatformSpecific = platformEligibleWorkspace.filter((_, idx) => markedIndexSet.has(idx));
|
|
497
|
-
}
|
|
498
|
-
const markedSet = new Set(markedPlatformSpecific);
|
|
499
|
-
// Stage 2: Choose universal from remaining (local + unmarked workspace)
|
|
500
|
-
const local = candidates.find(candidate => candidate.source === 'local');
|
|
501
|
-
const remainingWorkspace = candidates.filter(candidate => candidate.source === 'workspace' && !markedSet.has(candidate));
|
|
502
|
-
const universalChoices = [...(local ? [local] : []), ...remainingWorkspace];
|
|
503
|
-
const resolvePlatformSpecific = (selection) => {
|
|
504
|
-
if (!markedSet.has(selection)) {
|
|
505
|
-
return markedPlatformSpecific;
|
|
506
|
-
}
|
|
507
|
-
return markedPlatformSpecific.filter(candidate => candidate !== selection);
|
|
508
|
-
};
|
|
509
|
-
if (universalChoices.length === 0) {
|
|
510
|
-
const fallbackSelection = candidates[0];
|
|
511
|
-
return {
|
|
512
|
-
selection: fallbackSelection,
|
|
513
|
-
platformSpecific: resolvePlatformSpecific(fallbackSelection)
|
|
514
|
-
};
|
|
515
|
-
}
|
|
516
|
-
if (universalChoices.length === 1) {
|
|
517
|
-
const selection = universalChoices[0];
|
|
518
|
-
return {
|
|
519
|
-
selection,
|
|
520
|
-
platformSpecific: resolvePlatformSpecific(selection)
|
|
521
|
-
};
|
|
522
|
-
}
|
|
523
|
-
const response = await safePrompts({
|
|
524
|
-
type: 'select',
|
|
525
|
-
name: 'selectedIndex',
|
|
526
|
-
message: `Choose universal content to save for ${registryPath}:`,
|
|
527
|
-
choices: universalChoices.map((candidate, index) => ({
|
|
528
|
-
title: formatCandidateLabel(candidate),
|
|
529
|
-
value: index,
|
|
530
|
-
})),
|
|
531
|
-
hint: 'Use arrow keys to compare options and press Enter to select'
|
|
532
|
-
});
|
|
533
|
-
const selectedIndex = response.selectedIndex;
|
|
534
|
-
const selection = universalChoices[selectedIndex];
|
|
535
|
-
return {
|
|
536
|
-
selection,
|
|
537
|
-
platformSpecific: resolvePlatformSpecific(selection)
|
|
538
|
-
};
|
|
539
|
-
}
|
|
540
|
-
function formatCandidateLabel(candidate) {
|
|
541
|
-
const prefix = candidate.source === 'local' ? 'Package' : 'Workspace';
|
|
542
|
-
return `${prefix}: ${candidate.displayPath}`;
|
|
543
|
-
}
|
|
544
|
-
async function writeRootSelection(packageDir, packageName, localCandidate, selection) {
|
|
545
|
-
const targetPath = `${packageDir}/${FILE_PATTERNS.AGENTS_MD}`;
|
|
239
|
+
async function writeRootSelection(packageRootDir, packageName, localCandidate, selection) {
|
|
240
|
+
const targetPath = join(packageRootDir, FILE_PATTERNS.AGENTS_MD);
|
|
546
241
|
const sectionBody = (selection.sectionBody ?? selection.content).trim();
|
|
547
242
|
const finalContent = sectionBody;
|
|
548
243
|
try {
|
|
@@ -560,37 +255,4 @@ async function writeRootSelection(packageDir, packageName, localCandidate, selec
|
|
|
560
255
|
logger.warn(`Failed to write root file ${FILE_PATTERNS.AGENTS_MD}: ${error}`);
|
|
561
256
|
}
|
|
562
257
|
}
|
|
563
|
-
/**
|
|
564
|
-
* Check if a path is a YAML override file that should be included despite isAllowedRegistryPath filtering.
|
|
565
|
-
* YAML override files are files like "rules/agent.claude.yml" that contain platform-specific frontmatter.
|
|
566
|
-
*/
|
|
567
|
-
function isYamlOverrideFileForSave(normalizedPath) {
|
|
568
|
-
// Must be skippable (which includes YAML override check) but not package.yml
|
|
569
|
-
return normalizedPath !== FILE_PATTERNS.PACKAGE_YML && isSkippableRegistryPath(normalizedPath);
|
|
570
|
-
}
|
|
571
|
-
async function readFilteredLocalPackageFiles(packageDir) {
|
|
572
|
-
const entries = await findFilesByExtension(packageDir, [], packageDir);
|
|
573
|
-
const files = [];
|
|
574
|
-
for (const entry of entries) {
|
|
575
|
-
const normalizedPath = normalizeRegistryPath(entry.relativePath);
|
|
576
|
-
if (normalizedPath === PACKAGE_INDEX_FILENAME)
|
|
577
|
-
continue;
|
|
578
|
-
// Allow files that are either allowed by normal rules, root files, YAML override files,
|
|
579
|
-
// or any root-level files adjacent to package.yml (including package.yml itself)
|
|
580
|
-
const isAllowed = isAllowedRegistryPath(normalizedPath);
|
|
581
|
-
const isRoot = isRootRegistryPath(normalizedPath);
|
|
582
|
-
const isYamlOverride = isYamlOverrideFileForSave(normalizedPath);
|
|
583
|
-
const isPackageYml = normalizedPath === FILE_PATTERNS.PACKAGE_YML;
|
|
584
|
-
const isRootLevelFile = !normalizedPath.includes('/');
|
|
585
|
-
if (!isAllowed && !isRoot && !isYamlOverride && !isPackageYml && !isRootLevelFile)
|
|
586
|
-
continue;
|
|
587
|
-
const content = await readTextFile(entry.fullPath);
|
|
588
|
-
files.push({
|
|
589
|
-
path: normalizedPath,
|
|
590
|
-
content,
|
|
591
|
-
encoding: UTF8_ENCODING
|
|
592
|
-
});
|
|
593
|
-
}
|
|
594
|
-
return files;
|
|
595
|
-
}
|
|
596
258
|
//# sourceMappingURL=save-conflict-resolution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-conflict-resolution.js","sourceRoot":"","sources":["../../../src/core/save/save-conflict-resolution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"save-conflict-resolution.js","sourceRoot":"","sources":["../../../src/core/save/save-conflict-resolution.ts"],"names":[],"mappings":"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"}
|