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,8 +1,8 @@
|
|
|
1
|
-
import { join, basename } from 'path';
|
|
2
|
-
import { getPlatformDefinition, getDetectedPlatforms, getAllPlatforms } from '../core/platforms.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { join, basename, dirname } from 'path';
|
|
2
|
+
import { getPlatformDefinition, getDetectedPlatforms, getAllPlatforms, getWorkspaceExt, getPackageExt, isExtAllowed } from '../core/platforms.js';
|
|
3
|
+
import { logger } from './logger.js';
|
|
4
|
+
import { UNIVERSAL_SUBDIRS } from '../constants/index.js';
|
|
5
|
+
import { normalizePathForProcessing, findSubpathIndex } from './path-normalization.js';
|
|
6
6
|
/**
|
|
7
7
|
* Normalize platform names from command line input
|
|
8
8
|
*/
|
|
@@ -27,9 +27,15 @@ export function mapUniversalToPlatform(platform, subdir, relPath) {
|
|
|
27
27
|
}
|
|
28
28
|
// Build the absolute directory path
|
|
29
29
|
const absDir = join(definition.rootDir, subdirDef.path);
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
const
|
|
30
|
+
const packageExtMatch = relPath.match(/\.[^.]+$/);
|
|
31
|
+
const packageExt = packageExtMatch?.[0] ?? '';
|
|
32
|
+
const baseName = packageExt ? relPath.slice(0, -packageExt.length) : relPath;
|
|
33
|
+
const targetExt = packageExt ? getWorkspaceExt(subdirDef, packageExt) : '';
|
|
34
|
+
if (targetExt && !isExtAllowed(subdirDef, targetExt)) {
|
|
35
|
+
logger.warn(`Skipped ${relPath} for platform ${platform}: extension ${targetExt} is not allowed in ${subdir}`);
|
|
36
|
+
throw new Error(`Extension ${targetExt} is not allowed for subdir ${subdir} on platform ${platform}`);
|
|
37
|
+
}
|
|
38
|
+
const targetFileName = packageExt ? `${baseName}${targetExt}` : relPath;
|
|
33
39
|
const absFile = join(absDir, targetFileName);
|
|
34
40
|
return { absDir, absFile };
|
|
35
41
|
}
|
|
@@ -39,7 +45,7 @@ export function mapUniversalToPlatform(platform, subdir, relPath) {
|
|
|
39
45
|
export function mapPlatformFileToUniversal(absPath) {
|
|
40
46
|
const normalizedPath = normalizePathForProcessing(absPath);
|
|
41
47
|
// Check each platform
|
|
42
|
-
for (const platform of
|
|
48
|
+
for (const platform of getAllPlatforms({ includeDisabled: true })) {
|
|
43
49
|
const definition = getPlatformDefinition(platform);
|
|
44
50
|
// Check each subdir in this platform
|
|
45
51
|
for (const [subdirName, subdirDef] of Object.entries(definition.subdirs)) {
|
|
@@ -56,10 +62,13 @@ export function mapPlatformFileToUniversal(absPath) {
|
|
|
56
62
|
const patternLength = isAbsPattern ? absPattern.length : relPattern.length;
|
|
57
63
|
const relPathStart = subdirIndex + patternLength;
|
|
58
64
|
let relPath = normalizedPath.substring(relPathStart);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
65
|
+
const workspaceExtMatch = relPath.match(/\.[^.]+$/);
|
|
66
|
+
if (workspaceExtMatch) {
|
|
67
|
+
const workspaceExt = workspaceExtMatch[0];
|
|
68
|
+
const packageExt = getPackageExt(subdirDef, workspaceExt);
|
|
69
|
+
if (packageExt !== workspaceExt) {
|
|
70
|
+
relPath = relPath.slice(0, -workspaceExt.length) + packageExt;
|
|
71
|
+
}
|
|
63
72
|
}
|
|
64
73
|
return { platform, subdir, relPath };
|
|
65
74
|
}
|
|
@@ -117,41 +126,20 @@ export function getAllPlatformSubdirs(platform, cwd) {
|
|
|
117
126
|
* Uses platform definitions for scalable platform detection
|
|
118
127
|
*/
|
|
119
128
|
export function resolveTargetDirectory(targetPath, registryPath) {
|
|
120
|
-
|
|
129
|
+
const normalized = normalizePathForProcessing(registryPath);
|
|
130
|
+
const dir = dirname(normalized);
|
|
131
|
+
if (!dir || dir === '.' || dir === '') {
|
|
121
132
|
return targetPath;
|
|
122
133
|
}
|
|
123
|
-
|
|
124
|
-
const pathParts = getRelativePathParts(registryPath);
|
|
125
|
-
const firstPart = pathParts[0];
|
|
126
|
-
const platformDirectories = getAllPlatformDirs();
|
|
127
|
-
if (platformDirectories.includes(firstPart)) {
|
|
128
|
-
// Special case: AI directory should not be prefixed again since it's already the base
|
|
129
|
-
if (firstPart === PLATFORM_DIRS.AI) {
|
|
130
|
-
return targetPath;
|
|
131
|
-
}
|
|
132
|
-
return join(targetPath, firstPart);
|
|
133
|
-
}
|
|
134
|
-
// For universal subdirs, return target path as-is
|
|
135
|
-
return targetPath;
|
|
134
|
+
return join(targetPath, dir);
|
|
136
135
|
}
|
|
137
136
|
/**
|
|
138
137
|
* Get the appropriate target file path for saving
|
|
139
138
|
* Handles platform-specific file naming conventions using platform definitions
|
|
140
139
|
*/
|
|
141
140
|
export function resolveTargetFilePath(targetDir, registryPath) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
// Check if the file is in a platform-specific commands directory
|
|
146
|
-
// If so, just use the basename (they already have the correct structure)
|
|
147
|
-
for (const platform of getAllPlatforms()) {
|
|
148
|
-
const definition = getPlatformDefinition(platform);
|
|
149
|
-
const commandsSubdir = definition.subdirs[UNIVERSAL_SUBDIRS.COMMANDS];
|
|
150
|
-
if (commandsSubdir && registryPath.includes(join(definition.rootDir, commandsSubdir.path))) {
|
|
151
|
-
return join(targetDir, basename(registryPath));
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
// For all other files, preserve the full relative path structure
|
|
155
|
-
return join(targetDir, registryPath);
|
|
141
|
+
const normalized = normalizePathForProcessing(registryPath);
|
|
142
|
+
const fileName = basename(normalized);
|
|
143
|
+
return join(targetDir, fileName || normalized);
|
|
156
144
|
}
|
|
157
145
|
//# sourceMappingURL=platform-mapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-mapper.js","sourceRoot":"","sources":["../../src/utils/platform-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"platform-mapper.js","sourceRoot":"","sources":["../../src/utils/platform-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-specific-paths.js","sourceRoot":"","sources":["../../src/utils/platform-specific-paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"platform-specific-paths.js","sourceRoot":"","sources":["../../src/utils/platform-specific-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAiB,MAAM,sBAAsB,CAAC;AAE5E,SAAS,YAAY,CAAC,QAAkB;IACtC,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAAoB,EAAE,QAAkB;IACzE,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;IAEhC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAE/C,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAEzC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC;IAC3C,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAoB,EAAE,QAAkB;IAC5E,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,YAAY,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAChD,YAAoB,EACpB,QAAkB;IAElB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;IAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAEnD,IAAI,UAAU,EAAE,QAAQ,EAAE,CAAC;YACzB,OAAO,UAAU,CAAC,QAAQ,CAAC;QAC7B,CAAC;QAED,iGAAiG;QACjG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,OAAO,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -3,12 +3,9 @@
|
|
|
3
3
|
* Utility functions for platform management, detection, and file operations
|
|
4
4
|
*/
|
|
5
5
|
import { join } from 'path';
|
|
6
|
-
import { exists, listFiles, remove, getStats } from './fs.js';
|
|
7
|
-
import { logger } from './logger.js';
|
|
8
6
|
import { getPathLeaf } from './path-normalization.js';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { discoverFiles } from '../core/discovery/file-discovery.js';
|
|
7
|
+
import { FILE_PATTERNS } from '../constants/index.js';
|
|
8
|
+
import { getAllPlatforms, PLATFORM_DEFINITIONS, detectAllPlatforms, getPlatformDefinition } from '../core/platforms.js';
|
|
12
9
|
/**
|
|
13
10
|
* Enhanced platform detection with detailed information
|
|
14
11
|
*/
|
|
@@ -25,144 +22,11 @@ export async function detectPlatformsWithDetails(cwd) {
|
|
|
25
22
|
}, {});
|
|
26
23
|
return { detected, allResults, byCategory };
|
|
27
24
|
}
|
|
28
|
-
/**
|
|
29
|
-
* Find platform-specific files in a directory
|
|
30
|
-
*/
|
|
31
|
-
export async function findPlatformFiles(cwd, platform, packageName) {
|
|
32
|
-
const paths = getPlatformDirectoryPaths(cwd);
|
|
33
|
-
const platformPaths = paths[platform];
|
|
34
|
-
// Check if platform directory exists
|
|
35
|
-
if (!(await exists(platformPaths.rulesDir))) {
|
|
36
|
-
return [];
|
|
37
|
-
}
|
|
38
|
-
const rulesDirFilePatterns = getPlatformRulesDirFilePatterns(platform);
|
|
39
|
-
const allFiles = await listFiles(platformPaths.rulesDir);
|
|
40
|
-
const files = [];
|
|
41
|
-
// Process files in parallel for better performance
|
|
42
|
-
const filePromises = allFiles
|
|
43
|
-
.filter(file => rulesDirFilePatterns.some(pattern => file.endsWith(pattern)))
|
|
44
|
-
.map(async (file) => {
|
|
45
|
-
const fullPath = join(platformPaths.rulesDir, file);
|
|
46
|
-
try {
|
|
47
|
-
const stats = await getStats(fullPath);
|
|
48
|
-
const mtime = stats.mtime.getTime();
|
|
49
|
-
// Frontmatter support removed - no package name filtering
|
|
50
|
-
return { fullPath, relativePath: file, mtime };
|
|
51
|
-
}
|
|
52
|
-
catch (error) {
|
|
53
|
-
logger.debug(`Failed to get stats for ${fullPath}: ${error}`);
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
const results = await Promise.all(filePromises);
|
|
58
|
-
return results.filter((file) => file !== null);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Clean up platform-specific files
|
|
62
|
-
*/
|
|
63
|
-
export async function cleanupPlatformFiles(targetDir, platform, packageName, options = {}) {
|
|
64
|
-
const paths = getPlatformDirectoryPaths(targetDir);
|
|
65
|
-
const platformPaths = paths[platform];
|
|
66
|
-
// If no rules dir, platform not present
|
|
67
|
-
if (!platformPaths || !(await exists(platformPaths.rulesDir))) {
|
|
68
|
-
return { removedCount: 0, files: [], errors: [] };
|
|
69
|
-
}
|
|
70
|
-
const removedFiles = [];
|
|
71
|
-
const errors = [];
|
|
72
|
-
try {
|
|
73
|
-
// Build subdir list using centralized helper
|
|
74
|
-
const subdirs = getPlatformUniversalSubdirs(targetDir, platform);
|
|
75
|
-
// const filePatterns = getPlatformRulesDirFilePatterns(platform);
|
|
76
|
-
for (const { dir, label, leaf } of subdirs) {
|
|
77
|
-
const discovered = await discoverFiles(dir, packageName, platform, label);
|
|
78
|
-
const removalPromises = discovered.map(async (file) => {
|
|
79
|
-
if (!options.dryRun) {
|
|
80
|
-
try {
|
|
81
|
-
await remove(file.fullPath);
|
|
82
|
-
logger.debug(`Removed platform file: ${file.fullPath}`);
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
logger.error(`Failed to remove file ${file.fullPath}: ${error}`);
|
|
86
|
-
return { success: false, path: file.fullPath };
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return { success: true, path: file.fullPath };
|
|
90
|
-
});
|
|
91
|
-
const results = await Promise.all(removalPromises);
|
|
92
|
-
for (const r of results) {
|
|
93
|
-
if (r.success)
|
|
94
|
-
removedFiles.push(r.path);
|
|
95
|
-
else
|
|
96
|
-
errors.push(r.path);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return { removedCount: removedFiles.length, files: removedFiles, errors };
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
logger.error(`Failed to cleanup platform files for ${platform}: ${error}`);
|
|
103
|
-
return { removedCount: 0, files: [], errors: [`Failed to cleanup ${platform}: ${error}`] };
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Validate all platform structures
|
|
108
|
-
*/
|
|
109
|
-
export async function validateAllPlatforms(cwd) {
|
|
110
|
-
// Process all platforms in parallel for better performance
|
|
111
|
-
const validationPromises = getAllPlatforms().map(async (platform) => {
|
|
112
|
-
const validation = await validatePlatformStructure(cwd, platform);
|
|
113
|
-
return { platform, validation };
|
|
114
|
-
});
|
|
115
|
-
const results = await Promise.all(validationPromises);
|
|
116
|
-
const valid = [];
|
|
117
|
-
const invalid = [];
|
|
118
|
-
for (const { platform, validation } of results) {
|
|
119
|
-
if (validation.valid) {
|
|
120
|
-
valid.push(platform);
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
invalid.push({ platform, issues: validation.issues });
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return { valid, invalid };
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Create platform directories for detected platforms
|
|
130
|
-
*/
|
|
131
|
-
export async function setupDetectedPlatforms(cwd) {
|
|
132
|
-
const { detected } = await detectPlatformsWithDetails(cwd);
|
|
133
|
-
// Process all platforms in parallel for better performance
|
|
134
|
-
const setupPromises = detected.map(async (platform) => {
|
|
135
|
-
try {
|
|
136
|
-
const platformDirs = await createPlatformDirectories(cwd, [platform]);
|
|
137
|
-
return { success: true, dirs: platformDirs, platform };
|
|
138
|
-
}
|
|
139
|
-
catch (error) {
|
|
140
|
-
logger.error(`Failed to create directories for ${platform}: ${error}`);
|
|
141
|
-
return { success: false, error: `${platform}: ${error}`, platform };
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
const results = await Promise.all(setupPromises);
|
|
145
|
-
const created = [];
|
|
146
|
-
const errors = [];
|
|
147
|
-
for (const result of results) {
|
|
148
|
-
if (result.success) {
|
|
149
|
-
created.push(...(result.dirs || []));
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
errors.push(result.error || 'Unknown error');
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
return { created, errors };
|
|
156
|
-
}
|
|
157
25
|
/**
|
|
158
26
|
* Extract platform name from source directory path
|
|
159
27
|
* Uses platform definitions for scalable platform detection
|
|
160
28
|
*/
|
|
161
29
|
export function getPlatformNameFromSource(sourceDir) {
|
|
162
|
-
// Handle special case for AI directory
|
|
163
|
-
if (sourceDir === PLATFORM_DIRS.AI) {
|
|
164
|
-
return PLATFORM_DIRS.AI;
|
|
165
|
-
}
|
|
166
30
|
// Use platform definitions to find matching platform
|
|
167
31
|
for (const platform of getAllPlatforms()) {
|
|
168
32
|
const definition = PLATFORM_DEFINITIONS[platform];
|
|
@@ -186,6 +50,31 @@ export function getPlatformNameFromSource(sourceDir) {
|
|
|
186
50
|
* Returns an array of all supported platform directory names
|
|
187
51
|
*/
|
|
188
52
|
export function getAllPlatformDirs() {
|
|
189
|
-
|
|
53
|
+
const dirs = new Set();
|
|
54
|
+
for (const platform of getAllPlatforms({ includeDisabled: true })) {
|
|
55
|
+
dirs.add(PLATFORM_DEFINITIONS[platform].rootDir);
|
|
56
|
+
}
|
|
57
|
+
return Array.from(dirs);
|
|
58
|
+
}
|
|
59
|
+
let platformRootFilesCache = null;
|
|
60
|
+
function buildPlatformRootFiles() {
|
|
61
|
+
const rootFiles = new Set();
|
|
62
|
+
for (const platform of getAllPlatforms()) {
|
|
63
|
+
const def = getPlatformDefinition(platform);
|
|
64
|
+
if (def.rootFile) {
|
|
65
|
+
rootFiles.add(def.rootFile);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
rootFiles.add(FILE_PATTERNS.AGENTS_MD);
|
|
69
|
+
return rootFiles;
|
|
70
|
+
}
|
|
71
|
+
export function getPlatformRootFiles() {
|
|
72
|
+
if (!platformRootFilesCache) {
|
|
73
|
+
platformRootFilesCache = buildPlatformRootFiles();
|
|
74
|
+
}
|
|
75
|
+
return platformRootFilesCache;
|
|
76
|
+
}
|
|
77
|
+
export function isPlatformRootFile(fileName) {
|
|
78
|
+
return getPlatformRootFiles().has(fileName);
|
|
190
79
|
}
|
|
191
80
|
//# sourceMappingURL=platform-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-utils.js","sourceRoot":"","sources":["../../src/utils/platform-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"platform-utils.js","sourceRoot":"","sources":["../../src/utils/platform-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* Reusable helper to merge platform-specific YAML frontmatter overrides
|
|
4
4
|
* into universal markdown content.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { DIR_PATTERNS, FILE_PATTERNS, UNIVERSAL_SUBDIRS } from '../constants/index.js';
|
|
7
7
|
import { packageManager } from '../core/package.js';
|
|
8
8
|
import * as yaml from 'js-yaml';
|
|
9
|
+
import { getAllPlatforms } from '../core/platforms.js';
|
|
10
|
+
const OPENPACKAGE_PREFIX = `${DIR_PATTERNS.OPENPACKAGE}/`;
|
|
9
11
|
function isPlainObject(value) {
|
|
10
12
|
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
11
13
|
}
|
|
@@ -73,7 +75,7 @@ function formatWithFrontmatter(data, body) {
|
|
|
73
75
|
* Merge platform-specific YAML override with universal content.
|
|
74
76
|
*
|
|
75
77
|
* - Only acts on markdown files (relPath must end with .md)
|
|
76
|
-
* - Looks for
|
|
78
|
+
* - Looks for `.openpackage/{universalSubdir}/{base}.{platform}.yml` in the provided files
|
|
77
79
|
* - If found, merges YAML (non-package) before the package block
|
|
78
80
|
* - Returns original content if no matching override
|
|
79
81
|
*/
|
|
@@ -82,7 +84,8 @@ export function mergePlatformYamlOverride(universalContent, targetPlatform, univ
|
|
|
82
84
|
if (!relPath.endsWith(FILE_PATTERNS.MD_FILES))
|
|
83
85
|
return universalContent;
|
|
84
86
|
const base = relPath.slice(0, -FILE_PATTERNS.MD_FILES.length);
|
|
85
|
-
|
|
87
|
+
// Canonical override path: .openpackage/<subdir>/<base>.<platform>.yml
|
|
88
|
+
const overridePath = `${OPENPACKAGE_PREFIX}${universalSubdir}/${base}.${targetPlatform}.yml`;
|
|
86
89
|
const matchingYml = packageFiles.find(f => f.path === overridePath);
|
|
87
90
|
if (!matchingYml?.content?.trim()) {
|
|
88
91
|
return universalContent;
|
|
@@ -117,19 +120,23 @@ export function mergePlatformYamlOverride(universalContent, targetPlatform, univ
|
|
|
117
120
|
}
|
|
118
121
|
/**
|
|
119
122
|
* Load platform-specific YAML override files from the registry for a package version.
|
|
120
|
-
* Matches files in universal subdirs with pattern: "{subdir}/{base}.{platform}.yml"
|
|
123
|
+
* Matches files in universal subdirs with pattern: ".openpackage/{subdir}/{base}.{platform}.yml"
|
|
121
124
|
*/
|
|
122
125
|
export async function loadRegistryYamlOverrides(packageName, version) {
|
|
123
126
|
const overrides = [];
|
|
124
127
|
// Load package from registry
|
|
125
128
|
const pkg = await packageManager.loadPackage(packageName, version);
|
|
126
129
|
// Known platforms for suffix matching
|
|
127
|
-
const platformValues =
|
|
130
|
+
const platformValues = getAllPlatforms({ includeDisabled: true });
|
|
128
131
|
const subdirs = Object.values(UNIVERSAL_SUBDIRS);
|
|
129
132
|
for (const file of pkg.files) {
|
|
130
133
|
const path = file.path;
|
|
134
|
+
// Must be under .openpackage/<subdir>/ (canonical layout)
|
|
135
|
+
if (!path.startsWith(OPENPACKAGE_PREFIX))
|
|
136
|
+
continue;
|
|
137
|
+
const afterPrefix = path.slice(OPENPACKAGE_PREFIX.length);
|
|
131
138
|
// Must be in a universal subdir
|
|
132
|
-
if (!subdirs.some(sd =>
|
|
139
|
+
if (!subdirs.some(sd => afterPrefix.startsWith(sd + '/')))
|
|
133
140
|
continue;
|
|
134
141
|
// Must end with .yml and have a platform suffix before it
|
|
135
142
|
if (!path.endsWith(FILE_PATTERNS.YML_FILE))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-yaml-merge.js","sourceRoot":"","sources":["../../src/utils/platform-yaml-merge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"platform-yaml-merge.js","sourceRoot":"","sources":["../../src/utils/platform-yaml-merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getFirstPathComponent, normalizePathForProcessing } from './path-normalization.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
FILE_PATTERNS.QWEN_MD,
|
|
8
|
-
FILE_PATTERNS.WARP_MD
|
|
9
|
-
];
|
|
1
|
+
import { DIR_PATTERNS, FILE_PATTERNS, UNIVERSAL_SUBDIRS } from '../constants/index.js';
|
|
2
|
+
import { getFirstPathComponent, getPathAfterFirstComponent, normalizePathForProcessing } from './path-normalization.js';
|
|
3
|
+
import { getAllRootFiles, isPlatformId } from '../core/platforms.js';
|
|
4
|
+
const ROOT_REGISTRY_FILE_NAMES = getAllRootFiles();
|
|
5
|
+
const UNIVERSAL_VALUES = Object.values(UNIVERSAL_SUBDIRS);
|
|
6
|
+
const OPENPACKAGE_PREFIX = `${DIR_PATTERNS.OPENPACKAGE}/`;
|
|
10
7
|
export function normalizeRegistryPath(registryPath) {
|
|
11
8
|
return normalizePathForProcessing(registryPath);
|
|
12
9
|
}
|
|
@@ -16,24 +13,29 @@ export function isRootRegistryPath(registryPath) {
|
|
|
16
13
|
}
|
|
17
14
|
export function isSkippableRegistryPath(registryPath) {
|
|
18
15
|
const normalized = normalizeRegistryPath(registryPath);
|
|
19
|
-
|
|
16
|
+
// Handle package.yml at any level (.openpackage/package.yml, package.yml, etc.)
|
|
17
|
+
const filename = normalized.split('/').pop();
|
|
18
|
+
if (filename === FILE_PATTERNS.PACKAGE_YML) {
|
|
20
19
|
return true;
|
|
21
20
|
}
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
if (!universalValues.some(subdir => normalized.startsWith(`${subdir}/`))) {
|
|
21
|
+
const universalInfo = extractUniversalSubdirInfo(normalized);
|
|
22
|
+
if (!universalInfo) {
|
|
25
23
|
return false;
|
|
26
24
|
}
|
|
27
|
-
|
|
25
|
+
const normalizedRel = normalizePathForProcessing(universalInfo.relPath);
|
|
26
|
+
if (!normalizedRel.endsWith(FILE_PATTERNS.YML_FILE)) {
|
|
28
27
|
return false;
|
|
29
28
|
}
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
if (secondLastDot === -1) {
|
|
29
|
+
const fileName = normalizedRel.split('/').pop();
|
|
30
|
+
if (!fileName) {
|
|
33
31
|
return false;
|
|
34
32
|
}
|
|
35
|
-
const
|
|
36
|
-
|
|
33
|
+
const parts = fileName.split('.');
|
|
34
|
+
if (parts.length < 3) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
const possiblePlatform = parts[parts.length - 2];
|
|
38
|
+
return isPlatformId(possiblePlatform);
|
|
37
39
|
}
|
|
38
40
|
export function isAllowedRegistryPath(registryPath) {
|
|
39
41
|
const normalized = normalizeRegistryPath(registryPath);
|
|
@@ -43,10 +45,22 @@ export function isAllowedRegistryPath(registryPath) {
|
|
|
43
45
|
if (isSkippableRegistryPath(normalized)) {
|
|
44
46
|
return false;
|
|
45
47
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
export function extractUniversalSubdirInfo(registryPath) {
|
|
51
|
+
const normalized = normalizeRegistryPath(registryPath);
|
|
52
|
+
if (!normalized.startsWith(OPENPACKAGE_PREFIX)) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const afterPrefix = normalized.slice(OPENPACKAGE_PREFIX.length);
|
|
56
|
+
const firstComponent = getFirstPathComponent(afterPrefix);
|
|
57
|
+
if (!firstComponent || !UNIVERSAL_VALUES.includes(firstComponent)) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const relPath = getPathAfterFirstComponent(afterPrefix) ?? '';
|
|
61
|
+
return {
|
|
62
|
+
universalSubdir: firstComponent,
|
|
63
|
+
relPath
|
|
64
|
+
};
|
|
51
65
|
}
|
|
52
66
|
//# sourceMappingURL=registry-entry-filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-entry-filter.js","sourceRoot":"","sources":["../../src/utils/registry-entry-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"registry-entry-filter.js","sourceRoot":"","sources":["../../src/utils/registry-entry-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DIR_PATTERNS, UNIVERSAL_SUBDIRS } from '../constants/index.js';
|
|
2
|
+
export function formatRegistryPathForDisplay(registryPath) {
|
|
3
|
+
const universalValues = Object.values(UNIVERSAL_SUBDIRS);
|
|
4
|
+
const firstComponent = registryPath.split('/')[0];
|
|
5
|
+
if (firstComponent && universalValues.includes(firstComponent)) {
|
|
6
|
+
return `${DIR_PATTERNS.OPENPACKAGE}/${registryPath}`;
|
|
7
|
+
}
|
|
8
|
+
return registryPath;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=registry-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-paths.js","sourceRoot":"","sources":["../../src/utils/registry-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,UAAU,4BAA4B,CAAC,YAAoB;IAC/D,MAAM,eAAe,GAAa,MAAM,CAAC,MAAM,CAAC,iBAA2C,CAAC,CAAC;IAC7F,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAElD,IAAI,cAAc,IAAI,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/D,OAAO,GAAG,YAAY,CAAC,WAAW,IAAI,YAAY,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -15,10 +15,29 @@ export async function installRootFilesFromMap(cwd, packageName, rootFilesMap, de
|
|
|
15
15
|
const result = { installed: [], skipped: [], updated: [] };
|
|
16
16
|
if (rootFilesMap.size === 0)
|
|
17
17
|
return result;
|
|
18
|
+
// Always install/merge universal AGENTS.md regardless of platform detection
|
|
19
|
+
const agentsContent = rootFilesMap.get(FILE_PATTERNS.AGENTS_MD);
|
|
20
|
+
if (agentsContent && agentsContent.trim()) {
|
|
21
|
+
try {
|
|
22
|
+
const wasUpdated = await installSingleRootFile(cwd, FILE_PATTERNS.AGENTS_MD, packageName, agentsContent);
|
|
23
|
+
if (wasUpdated)
|
|
24
|
+
result.updated.push(FILE_PATTERNS.AGENTS_MD);
|
|
25
|
+
else
|
|
26
|
+
result.installed.push(FILE_PATTERNS.AGENTS_MD);
|
|
27
|
+
logger.debug(`Installed universal root file ${FILE_PATTERNS.AGENTS_MD} for ${packageName}`);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
logger.error(`Failed to install universal root file ${FILE_PATTERNS.AGENTS_MD}: ${error}`);
|
|
31
|
+
result.skipped.push(FILE_PATTERNS.AGENTS_MD);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
18
34
|
for (const platform of detectedPlatforms) {
|
|
19
35
|
const platformDef = getPlatformDefinition(platform);
|
|
20
36
|
if (!platformDef.rootFile)
|
|
21
37
|
continue;
|
|
38
|
+
if (platformDef.rootFile === FILE_PATTERNS.AGENTS_MD) {
|
|
39
|
+
continue; // Already handled by the universal install above
|
|
40
|
+
}
|
|
22
41
|
// Prefer platform-specific, otherwise use AGENTS.md if present
|
|
23
42
|
let content = rootFilesMap.get(platformDef.rootFile);
|
|
24
43
|
let sourceFileName = platformDef.rootFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root-file-installer.js","sourceRoot":"","sources":["../../src/utils/root-file-installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"root-file-installer.js","sourceRoot":"","sources":["../../src/utils/root-file-installer.ts"],"names":[],"mappings":"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"}
|