opkg 0.7.0 → 0.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.
Files changed (56) hide show
  1. package/README.md +33 -33
  2. package/dist/commands/install.js +12 -7
  3. package/dist/commands/install.js.map +1 -1
  4. package/dist/constants/index.js +21 -0
  5. package/dist/constants/index.js.map +1 -1
  6. package/dist/core/add/add-to-source-pipeline.js +1 -1
  7. package/dist/core/add/add-to-source-pipeline.js.map +1 -1
  8. package/dist/core/directory.js +18 -18
  9. package/dist/core/directory.js.map +1 -1
  10. package/dist/core/flows/platform-converter.js +2 -3
  11. package/dist/core/flows/platform-converter.js.map +1 -1
  12. package/dist/core/install/bulk-install-pipeline.js +2 -1
  13. package/dist/core/install/bulk-install-pipeline.js.map +1 -1
  14. package/dist/core/install/flow-based-installer.js +28 -10
  15. package/dist/core/install/flow-based-installer.js.map +1 -1
  16. package/dist/core/install/git-package-loader.js +23 -5
  17. package/dist/core/install/git-package-loader.js.map +1 -1
  18. package/dist/core/install/marketplace-handler.js +67 -26
  19. package/dist/core/install/marketplace-handler.js.map +1 -1
  20. package/dist/core/install/path-install-pipeline.js +9 -5
  21. package/dist/core/install/path-install-pipeline.js.map +1 -1
  22. package/dist/core/install/path-package-loader.js +15 -9
  23. package/dist/core/install/path-package-loader.js.map +1 -1
  24. package/dist/core/install/plugin-detector.js +4 -6
  25. package/dist/core/install/plugin-detector.js.map +1 -1
  26. package/dist/core/install/plugin-transformer.js +25 -15
  27. package/dist/core/install/plugin-transformer.js.map +1 -1
  28. package/dist/core/package.js +1 -1
  29. package/dist/core/package.js.map +1 -1
  30. package/dist/core/remove/remove-from-source-pipeline.js +1 -1
  31. package/dist/core/remove/remove-from-source-pipeline.js.map +1 -1
  32. package/dist/utils/git-cache.js +196 -0
  33. package/dist/utils/git-cache.js.map +1 -0
  34. package/dist/utils/git-clone.js +123 -43
  35. package/dist/utils/git-clone.js.map +1 -1
  36. package/dist/utils/git-url-parser.js +113 -0
  37. package/dist/utils/git-url-parser.js.map +1 -0
  38. package/dist/utils/index-based-installer.js +2 -2
  39. package/dist/utils/index-based-installer.js.map +1 -1
  40. package/dist/utils/package-input.js +5 -4
  41. package/dist/utils/package-input.js.map +1 -1
  42. package/dist/utils/package-name.js +54 -16
  43. package/dist/utils/package-name.js.map +1 -1
  44. package/dist/utils/platform-file.js +2 -4
  45. package/dist/utils/platform-file.js.map +1 -1
  46. package/dist/utils/plugin-naming.js +111 -0
  47. package/dist/utils/plugin-naming.js.map +1 -0
  48. package/dist/utils/tarball.js +2 -2
  49. package/dist/utils/tarball.js.map +1 -1
  50. package/package.json +1 -1
  51. package/platforms.jsonc +1 -1
  52. package/specs/install/README.md +2 -1
  53. package/specs/install/git-cache.md +403 -0
  54. package/specs/install/git-sources.md +111 -23
  55. package/specs/new/README.md +3 -1
  56. package/specs/set/README.md +5 -2
@@ -1,6 +1,7 @@
1
1
  import { ValidationError } from './errors.js';
2
2
  /**
3
- * Regex pattern for scoped package names (@scope/name)
3
+ * Regex pattern for scoped package names (@scope/name or @scope/name/subname/...)
4
+ * Supports multiple slashes for hierarchical names like @anthropics/claude-code/commit-commands
4
5
  */
5
6
  export const SCOPED_PACKAGE_REGEX = /^@([^\/]+)\/(.+)$/;
6
7
  /**
@@ -45,17 +46,26 @@ function validatePackageNamePart(part, fullName, partType) {
45
46
  if (/[A-Z]/.test(part)) {
46
47
  throw new ValidationError(`Package name '${fullName}' must be lowercase`);
47
48
  }
48
- // Check first character
49
- if (/^[0-9.\-]/.test(part)) {
50
- throw new ValidationError(`Package ${partType} '${fullName}' cannot start with a number, dot, or hyphen`);
51
- }
52
- // Check for consecutive special characters
53
- if (/(\.\.|__|--)/.test(part)) {
54
- throw new ValidationError(`Package name '${fullName}' cannot have consecutive dots, underscores, or hyphens`);
55
- }
56
- // Check allowed characters only
57
- if (!/^[a-z0-9._-]+$/.test(part)) {
58
- throw new ValidationError(`Package name '${fullName}' contains invalid characters (use only: a-z, 0-9, ., _, -)`);
49
+ // Split by slashes to validate each segment individually
50
+ const segments = part.split('/');
51
+ for (let i = 0; i < segments.length; i++) {
52
+ const segment = segments[i];
53
+ // Check for empty segments (e.g., double slashes)
54
+ if (!segment || segment.trim() === '') {
55
+ throw new ValidationError(`Package name '${fullName}' cannot have empty segments (consecutive or trailing slashes)`);
56
+ }
57
+ // Check first character of each segment
58
+ if (/^[0-9.\-]/.test(segment)) {
59
+ throw new ValidationError(`Package ${partType} '${fullName}' segment '${segment}' cannot start with a number, dot, or hyphen`);
60
+ }
61
+ // Check for consecutive special characters within a segment
62
+ if (/(\.\.|__|--)/.test(segment)) {
63
+ throw new ValidationError(`Package name '${fullName}' segment '${segment}' cannot have consecutive dots, underscores, or hyphens`);
64
+ }
65
+ // Check allowed characters only (a-z, 0-9, ., _, -, but no slashes within segment)
66
+ if (!/^[a-z0-9._-]+$/.test(segment)) {
67
+ throw new ValidationError(`Package name '${fullName}' segment '${segment}' contains invalid characters (use only: a-z, 0-9, ., _, -)`);
68
+ }
59
69
  }
60
70
  }
61
71
  /**
@@ -89,13 +99,41 @@ export function parsePackageInput(packageInput) {
89
99
  * Returns { name, version?, registryPath? }
90
100
  */
91
101
  export function parsePackageInstallSpec(raw) {
92
- const firstSlash = raw.indexOf('/', raw.startsWith('@') ? raw.indexOf('/', 1) + 1 : 0);
93
- if (firstSlash === -1) {
102
+ // Explicit separator for unambiguous registry paths:
103
+ // package@1.2.3::rules/foo.md
104
+ // @scope/name/sub::commands/bar.md
105
+ const explicitSep = raw.indexOf('::');
106
+ if (explicitSep !== -1) {
107
+ const packagePortion = raw.slice(0, explicitSep);
108
+ const registryPath = raw.slice(explicitSep + 2);
109
+ if (!packagePortion || !registryPath) {
110
+ throw new ValidationError(`Invalid install spec '${raw}'. Use 'package::path/to/file' or 'package@version::path/to/file'.`);
111
+ }
112
+ const { name, version } = parsePackageInput(packagePortion);
113
+ return { name, version, registryPath };
114
+ }
115
+ // Backward-compatible "package/path" parsing, with special handling for scoped
116
+ // hierarchical names like @scope/marketplace/plugin (3+ segments).
117
+ const scopeFirstSlash = raw.startsWith('@') ? raw.indexOf('/', 1) : -1;
118
+ const scopedSecondSlash = scopeFirstSlash !== -1 ? raw.indexOf('/', scopeFirstSlash + 1) : -1;
119
+ const splitSlashIndex = raw.indexOf('/', raw.startsWith('@') ? scopeFirstSlash + 1 : 0);
120
+ // For scoped names, only treat the third segment as registryPath if it looks like a path
121
+ // (contains '/' or '.') to avoid breaking marketplace plugin names like:
122
+ // @anthropics/claude-plugins-official/github
123
+ if (raw.startsWith('@') && scopedSecondSlash !== -1) {
124
+ const registryPathCandidate = raw.slice(scopedSecondSlash + 1);
125
+ const looksLikeRegistryPath = registryPathCandidate.includes('/') || registryPathCandidate.includes('.');
126
+ if (!looksLikeRegistryPath) {
127
+ // Treat the whole string as the package name.
128
+ return parsePackageInput(raw);
129
+ }
130
+ }
131
+ if (splitSlashIndex === -1) {
94
132
  // No path portion; fall back to standard parsing
95
133
  return parsePackageInput(raw);
96
134
  }
97
- const packagePortion = raw.slice(0, firstSlash);
98
- const registryPath = raw.slice(firstSlash + 1);
135
+ const packagePortion = raw.slice(0, splitSlashIndex);
136
+ const registryPath = raw.slice(splitSlashIndex + 1);
99
137
  if (!registryPath) {
100
138
  throw new ValidationError(`Invalid install spec '${raw}'. Provide a registry path after the package name, e.g. package/path/to/file.md.`);
101
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"package-name.js","sourceRoot":"","sources":["../../src/utils/package-name.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-name.js","sourceRoot":"","sources":["../../src/utils/package-name.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,11 @@
2
2
  * Platform File Utilities
3
3
  * Shared utilities for handling platform-specific file paths and extensions
4
4
  */
5
- import { basename } from 'path';
5
+ import { basename, join } from 'path';
6
6
  import { getPlatformDefinition, getAllPlatforms, getAllUniversalSubdirs, isPlatformId } from '../core/platforms.js';
7
7
  import { FILE_PATTERNS } from '../constants/index.js';
8
8
  import { getFirstPathComponent, parsePathWithPrefix, normalizePathForProcessing } from './path-normalization.js';
9
+ import { mapUniversalToPlatform } from './platform-mapper.js';
9
10
  /**
10
11
  * Parse a registry or universal path to extract subdir and relative path info
11
12
  * Platform suffix detection is always enabled and supports both file-level and directory-level suffixes.
@@ -116,12 +117,9 @@ export function getPlatformSpecificFilename(universalPath, platform, cwd) {
116
117
  * @returns Object with absolute directory and file paths
117
118
  */
118
119
  export async function getPlatformSpecificPath(cwd, universalSubdir, relPath, platform) {
119
- // Import here to avoid circular dependencies
120
- const { mapUniversalToPlatform } = await import('./platform-mapper.js');
121
120
  // Get the mapping
122
121
  const { relDir, relFile } = mapUniversalToPlatform(platform, universalSubdir, relPath, cwd);
123
122
  // Convert relative paths to absolute paths
124
- const { join } = await import('path');
125
123
  return {
126
124
  absDir: join(cwd, relDir),
127
125
  absFile: join(cwd, relFile)
@@ -1 +1 @@
1
- {"version":3,"file":"platform-file.js","sourceRoot":"","sources":["../../src/utils/platform-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-file.js","sourceRoot":"","sources":["../../src/utils/platform-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import { basename } from 'path';
2
+ import { extractGitHubInfo } from './git-url-parser.js';
3
+ import { logger } from './logger.js';
4
+ /**
5
+ * Generate a scoped name for a Claude Code plugin.
6
+ *
7
+ * Format:
8
+ * - GitHub repo with subdirectory: @username/repo/plugin-name
9
+ * - GitHub repo (plugin is the repo): @username/plugin-name
10
+ * - Non-GitHub or local: plugin-name (no scoping)
11
+ *
12
+ * Fallback behavior:
13
+ * - If pluginManifestName is undefined → use subdirectory name or repo name
14
+ * - If marketplaceName is undefined → use repo name
15
+ */
16
+ export function generatePluginName(context) {
17
+ const { gitUrl, subdirectory, pluginManifestName, marketplaceName, repoPath } = context;
18
+ // If no Git URL, use plugin manifest name or fallback
19
+ if (!gitUrl) {
20
+ const generated = pluginManifestName || (subdirectory ? basename(subdirectory) : 'unnamed-plugin');
21
+ return generated;
22
+ }
23
+ // Try to extract GitHub info
24
+ const githubInfo = extractGitHubInfo(gitUrl);
25
+ // If not GitHub, use plugin manifest name
26
+ if (!githubInfo) {
27
+ logger.debug('Non-GitHub URL, using plugin manifest name', { gitUrl });
28
+ const generated = pluginManifestName || (subdirectory ? basename(subdirectory) : 'unnamed-plugin');
29
+ return generated;
30
+ }
31
+ // GitHub URL - generate scoped name
32
+ const { username, repo } = githubInfo;
33
+ // Determine plugin name
34
+ let pluginName;
35
+ if (pluginManifestName) {
36
+ // Use plugin manifest name if provided
37
+ pluginName = pluginManifestName;
38
+ }
39
+ else if (subdirectory) {
40
+ // Use subdirectory name as fallback
41
+ pluginName = basename(subdirectory);
42
+ }
43
+ else {
44
+ // Use repo name as fallback
45
+ pluginName = repo;
46
+ }
47
+ // Determine if this is a marketplace plugin (has subdirectory)
48
+ const isMarketplacePlugin = Boolean(subdirectory);
49
+ if (isMarketplacePlugin) {
50
+ // Format (marketplace plugin): @username/marketplace/plugin
51
+ // This matches how Claude Code marketplaces identify plugins.
52
+ const marketplace = (marketplaceName || repo).toLowerCase();
53
+ const plugin = pluginName.toLowerCase();
54
+ const generated = `@${username}/${marketplace}/${plugin}`;
55
+ return generated;
56
+ }
57
+ else {
58
+ // Format: @username/plugin-name
59
+ const generated = `@${username}/${pluginName}`;
60
+ return generated;
61
+ }
62
+ }
63
+ /**
64
+ * Generate a scoped name for a marketplace.
65
+ *
66
+ * Format:
67
+ * - GitHub: @username/marketplace-name
68
+ * - Non-GitHub: marketplace-name
69
+ */
70
+ export function generateMarketplaceName(gitUrl, marketplaceManifestName, repoPath) {
71
+ // If no Git URL, use marketplace manifest name or fallback
72
+ if (!gitUrl) {
73
+ return marketplaceManifestName ||
74
+ (repoPath ? basename(repoPath) : 'unnamed-marketplace');
75
+ }
76
+ // Try to extract GitHub info
77
+ const githubInfo = extractGitHubInfo(gitUrl);
78
+ // If not GitHub, use marketplace manifest name
79
+ if (!githubInfo) {
80
+ return marketplaceManifestName ||
81
+ (repoPath ? basename(repoPath) : 'unnamed-marketplace');
82
+ }
83
+ // GitHub URL - generate scoped name
84
+ const { username, repo } = githubInfo;
85
+ const marketplaceName = marketplaceManifestName || repo;
86
+ return `@${username}/${marketplaceName}`;
87
+ }
88
+ /**
89
+ * Parse a scoped plugin name into its components.
90
+ * Returns null if the name is not scoped.
91
+ */
92
+ export function parseScopedPluginName(name) {
93
+ // Format: @username/marketplace/plugin or @username/plugin
94
+ const match = name.match(/^@([^\/]+)\/(?:([^\/]+)\/)?([^\/]+)$/);
95
+ if (!match) {
96
+ return null;
97
+ }
98
+ const [, username, marketplace, plugin] = match;
99
+ return {
100
+ username,
101
+ marketplace,
102
+ plugin
103
+ };
104
+ }
105
+ /**
106
+ * Check if a name is a scoped plugin name.
107
+ */
108
+ export function isScopedPluginName(name) {
109
+ return parseScopedPluginName(name) !== null;
110
+ }
111
+ //# sourceMappingURL=plugin-naming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-naming.js","sourceRoot":"","sources":["../../src/utils/plugin-naming.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { tmpdir } from 'os';
6
6
  import { logger } from './logger.js';
7
7
  import { ValidationError } from './errors.js';
8
8
  import { writeTextFile, readTextFile, ensureDir, exists } from './fs.js';
9
- import { UNVERSIONED } from '../constants/index.js';
9
+ import { UNVERSIONED, FILE_PATTERNS } from '../constants/index.js';
10
10
  /**
11
11
  * Create a tarball from package files
12
12
  */
@@ -162,7 +162,7 @@ export function createFormDataForUpload(packageName, version, tarballInfo) {
162
162
  }
163
163
  // Add tarball file
164
164
  const blob = new Blob([tarballInfo.buffer], { type: 'application/gzip' });
165
- const filename = version ? `${packageName}-${version}.tgz` : `${packageName}-${UNVERSIONED}.tgz`;
165
+ const filename = version ? `${packageName}-${version}${FILE_PATTERNS.TGZ_FILES}` : `${packageName}-${UNVERSIONED}${FILE_PATTERNS.TGZ_FILES}`;
166
166
  formData.append('file', blob, filename);
167
167
  return formData;
168
168
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tarball.js","sourceRoot":"","sources":["../../src/utils/tarball.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tarball.js","sourceRoot":"","sources":["../../src/utils/tarball.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opkg",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/platforms.jsonc CHANGED
@@ -193,7 +193,7 @@
193
193
  "to": "skills/**/*"
194
194
  },
195
195
  {
196
- "from": [".mcp.json", ".mcp.jsonc"],
196
+ "from": ".mcp.json",
197
197
  "to": "mcp.jsonc"
198
198
  }
199
199
  ]
@@ -14,7 +14,8 @@ The documents are intended to be implementation-guiding but not tied to specific
14
14
  ### Files
15
15
 
16
16
  - **`install-behavior.md`**: Top-level `opkg install` UX and scenarios (CLI shapes, fresh vs existing deps, dev vs prod). Includes Claude Code plugin support (§9) with Universal Converter integration.
17
- - **`git-sources.md`**: Installing packages from git repositories (`git:` and `github:` inputs), including subdirectory support for monorepos and Claude Code plugins.
17
+ - **`git-sources.md`**: Installing packages from git repositories (`git:` and `github:` inputs), including subdirectory support for monorepos and Claude Code plugins. Covers scoped naming for GitHub plugins.
18
+ - **`git-cache.md`**: Structured Git cache architecture at `~/.openpackage/cache/git/` with deterministic paths, automatic reuse, and metadata tracking.
18
19
  - **`version-resolution.md`**: Formal rules for "latest in range from local+remote", including pre-release vs stable semantics.
19
20
  - **`package-yml-canonical.md`**: Rules for treating `openpackage.yml` as the canonical declaration for install.
20
21