opkg 0.6.1 → 0.7.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 +109 -186
- package/assets/openpackage_ascii_dark.png +0 -0
- package/assets/openpackage_ascii_light.png +0 -0
- package/dist/commands/add.js +34 -10
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/apply.js +16 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/delete.js +1 -1
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/install.js +177 -8
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.js +2 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.js +1 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/new.js +125 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/pack.js +7 -13
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/pull.js +1 -1
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.js +1 -1
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/remove.js +63 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/save.js +11 -17
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/set.js +33 -0
- package/dist/commands/set.js.map +1 -0
- package/dist/commands/show.js +16 -94
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/status.js +26 -701
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/uninstall.js +14 -427
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/constants/index.js +72 -16
- package/dist/constants/index.js.map +1 -1
- package/dist/core/add/add-conflict-handler.js +1 -8
- package/dist/core/add/add-conflict-handler.js.map +1 -1
- package/dist/core/add/add-pipeline.js +12 -10
- package/dist/core/add/add-pipeline.js.map +1 -1
- package/dist/core/add/add-to-source-pipeline.js +123 -0
- package/dist/core/add/add-to-source-pipeline.js.map +1 -0
- package/dist/core/add/package-index-updater.js +77 -78
- package/dist/core/add/package-index-updater.js.map +1 -1
- package/dist/core/add/platform-path-transformer.js +6 -4
- package/dist/core/add/platform-path-transformer.js.map +1 -1
- package/dist/core/add/source-collector.js +2 -3
- package/dist/core/add/source-collector.js.map +1 -1
- package/dist/core/apply/apply-pipeline.js +110 -0
- package/dist/core/apply/apply-pipeline.js.map +1 -0
- package/dist/core/dependency-resolver.js +263 -21
- package/dist/core/dependency-resolver.js.map +1 -1
- package/dist/core/discovery/file-discovery.js +1 -2
- package/dist/core/discovery/file-discovery.js.map +1 -1
- package/dist/core/discovery/platform-files-discovery.js +33 -18
- package/dist/core/discovery/platform-files-discovery.js.map +1 -1
- package/dist/core/flows/flow-executor.js +974 -0
- package/dist/core/flows/flow-executor.js.map +1 -0
- package/dist/core/flows/flow-inverter.js +442 -0
- package/dist/core/flows/flow-inverter.js.map +1 -0
- package/dist/core/flows/flow-key-extractor.js +101 -0
- package/dist/core/flows/flow-key-extractor.js.map +1 -0
- package/dist/core/flows/flow-key-mapper.js +382 -0
- package/dist/core/flows/flow-key-mapper.js.map +1 -0
- package/dist/core/flows/flow-transforms.js +632 -0
- package/dist/core/flows/flow-transforms.js.map +1 -0
- package/dist/core/flows/map-pipeline/context.js +73 -0
- package/dist/core/flows/map-pipeline/context.js.map +1 -0
- package/dist/core/flows/map-pipeline/index.js +156 -0
- package/dist/core/flows/map-pipeline/index.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/copy.js +104 -0
- package/dist/core/flows/map-pipeline/operations/copy.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/pipe.js +70 -0
- package/dist/core/flows/map-pipeline/operations/pipe.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/rename.js +102 -0
- package/dist/core/flows/map-pipeline/operations/rename.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/set.js +50 -0
- package/dist/core/flows/map-pipeline/operations/set.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/switch.js +79 -0
- package/dist/core/flows/map-pipeline/operations/switch.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/transform.js +543 -0
- package/dist/core/flows/map-pipeline/operations/transform.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/unset.js +65 -0
- package/dist/core/flows/map-pipeline/operations/unset.js.map +1 -0
- package/dist/core/flows/map-pipeline/types.js +8 -0
- package/dist/core/flows/map-pipeline/types.js.map +1 -0
- package/dist/core/flows/map-pipeline/utils.js +278 -0
- package/dist/core/flows/map-pipeline/utils.js.map +1 -0
- package/dist/core/flows/platform-converter.js +328 -0
- package/dist/core/flows/platform-converter.js.map +1 -0
- package/dist/core/flows/source-resolver.js +192 -0
- package/dist/core/flows/source-resolver.js.map +1 -0
- package/dist/core/flows/toml-domain-transforms.js +23 -0
- package/dist/core/flows/toml-domain-transforms.js.map +1 -0
- package/dist/core/install/bulk-install-pipeline.js +68 -7
- package/dist/core/install/bulk-install-pipeline.js.map +1 -1
- package/dist/core/install/canonical-plan.js +3 -3
- package/dist/core/install/canonical-plan.js.map +1 -1
- package/dist/core/install/dry-run.js +3 -3
- package/dist/core/install/dry-run.js.map +1 -1
- package/dist/core/install/flow-based-installer.js +1158 -0
- package/dist/core/install/flow-based-installer.js.map +1 -0
- package/dist/core/install/flow-workspace-tracker.js +111 -0
- package/dist/core/install/flow-workspace-tracker.js.map +1 -0
- package/dist/core/install/format-detector.js +228 -0
- package/dist/core/install/format-detector.js.map +1 -0
- package/dist/core/install/git-package-loader.js +20 -0
- package/dist/core/install/git-package-loader.js.map +1 -0
- package/dist/core/install/install-errors.js +1 -1
- package/dist/core/install/install-errors.js.map +1 -1
- package/dist/core/install/install-flow.js +34 -14
- package/dist/core/install/install-flow.js.map +1 -1
- package/dist/core/install/install-pipeline.js +52 -17
- package/dist/core/install/install-pipeline.js.map +1 -1
- package/dist/core/install/install-reporting.js +26 -8
- package/dist/core/install/install-reporting.js.map +1 -1
- package/dist/core/install/local-source-resolution.js +103 -0
- package/dist/core/install/local-source-resolution.js.map +1 -0
- package/dist/core/install/marketplace-handler.js +221 -0
- package/dist/core/install/marketplace-handler.js.map +1 -0
- package/dist/core/install/path-install-pipeline.js +241 -0
- package/dist/core/install/path-install-pipeline.js.map +1 -0
- package/dist/core/install/path-package-loader.js +116 -0
- package/dist/core/install/path-package-loader.js.map +1 -0
- package/dist/core/install/plugin-detector.js +72 -0
- package/dist/core/install/plugin-detector.js.map +1 -0
- package/dist/core/install/plugin-to-universal-converter.js +218 -0
- package/dist/core/install/plugin-to-universal-converter.js.map +1 -0
- package/dist/core/install/plugin-transformer.js +191 -0
- package/dist/core/install/plugin-transformer.js.map +1 -0
- package/dist/core/install/version-selection.js +1 -1
- package/dist/core/install/version-selection.js.map +1 -1
- package/dist/core/openpackage.js +40 -22
- package/dist/core/openpackage.js.map +1 -1
- package/dist/core/pack/pack-output.js +62 -0
- package/dist/core/pack/pack-output.js.map +1 -0
- package/dist/core/pack/pack-pipeline.js +186 -0
- package/dist/core/pack/pack-pipeline.js.map +1 -0
- package/dist/core/package-context.js +45 -70
- package/dist/core/package-context.js.map +1 -1
- package/dist/core/package-creation.js +203 -0
- package/dist/core/package-creation.js.map +1 -0
- package/dist/core/package.js +20 -6
- package/dist/core/package.js.map +1 -1
- package/dist/core/platforms.js +665 -209
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/push/push-context.js +1 -1
- package/dist/core/push/push-context.js.map +1 -1
- package/dist/core/push/push-upload.js +2 -2
- package/dist/core/push/push-upload.js.map +1 -1
- package/dist/core/registry.js +6 -6
- package/dist/core/registry.js.map +1 -1
- package/dist/core/remote-pull.js +2 -2
- package/dist/core/remote-pull.js.map +1 -1
- package/dist/core/remove/removal-collector.js +52 -0
- package/dist/core/remove/removal-collector.js.map +1 -0
- package/dist/core/remove/removal-confirmation.js +39 -0
- package/dist/core/remove/removal-confirmation.js.map +1 -0
- package/dist/core/remove/remove-from-source-pipeline.js +173 -0
- package/dist/core/remove/remove-from-source-pipeline.js.map +1 -0
- package/dist/core/save/constants.js +3 -3
- package/dist/core/save/constants.js.map +1 -1
- package/dist/core/save/flow-based-saver.js +270 -0
- package/dist/core/save/flow-based-saver.js.map +1 -0
- package/dist/core/save/name-resolution.js +1 -1
- package/dist/core/save/name-resolution.js.map +1 -1
- package/dist/core/save/package-yml-generator.js +4 -5
- package/dist/core/save/package-yml-generator.js.map +1 -1
- package/dist/core/save/save-candidate-builder.js +215 -0
- package/dist/core/save/save-candidate-builder.js.map +1 -0
- package/dist/core/save/save-candidate-loader.js +12 -11
- package/dist/core/save/save-candidate-loader.js.map +1 -1
- package/dist/core/save/save-conflict-analyzer.js +150 -0
- package/dist/core/save/save-conflict-analyzer.js.map +1 -0
- package/dist/core/save/save-conflict-resolution.js +28 -14
- package/dist/core/save/save-conflict-resolution.js.map +1 -1
- package/dist/core/save/save-conflict-resolver.js +31 -275
- package/dist/core/save/save-conflict-resolver.js.map +1 -1
- package/dist/core/save/save-group-builder.js +52 -0
- package/dist/core/save/save-group-builder.js.map +1 -0
- package/dist/core/save/save-interactive-resolver.js +190 -0
- package/dist/core/save/save-interactive-resolver.js.map +1 -0
- package/dist/core/save/save-pipeline.js +58 -34
- package/dist/core/save/save-pipeline.js.map +1 -1
- package/dist/core/save/save-platform-handler.js +53 -0
- package/dist/core/save/save-platform-handler.js.map +1 -0
- package/dist/core/save/save-resolution-executor.js +145 -0
- package/dist/core/save/save-resolution-executor.js.map +1 -0
- package/dist/core/save/save-result-reporter.js +167 -0
- package/dist/core/save/save-result-reporter.js.map +1 -0
- package/dist/core/save/save-to-source-pipeline.js +154 -0
- package/dist/core/save/save-to-source-pipeline.js.map +1 -0
- package/dist/core/save/save-versioning.js +4 -4
- package/dist/core/save/save-versioning.js.map +1 -1
- package/dist/core/save/save-write-coordinator.js +204 -0
- package/dist/core/save/save-write-coordinator.js.map +1 -0
- package/dist/core/save/save-yml-resolution.js +28 -216
- package/dist/core/save/save-yml-resolution.js.map +1 -1
- package/dist/core/save/workspace-rename.js +7 -8
- package/dist/core/save/workspace-rename.js.map +1 -1
- package/dist/core/set/set-output.js +72 -0
- package/dist/core/set/set-output.js.map +1 -0
- package/dist/core/set/set-pipeline.js +361 -0
- package/dist/core/set/set-pipeline.js.map +1 -0
- package/dist/core/set/set-types.js +5 -0
- package/dist/core/set/set-types.js.map +1 -0
- package/dist/core/show/package-resolver.js +257 -0
- package/dist/core/show/package-resolver.js.map +1 -0
- package/dist/core/show/scope-discovery.js +165 -0
- package/dist/core/show/scope-discovery.js.map +1 -0
- package/dist/core/show/show-output.js +168 -0
- package/dist/core/show/show-output.js.map +1 -0
- package/dist/core/show/show-pipeline.js +113 -0
- package/dist/core/show/show-pipeline.js.map +1 -0
- package/dist/core/show/show-types.js +5 -0
- package/dist/core/show/show-types.js.map +1 -0
- package/dist/core/source-resolution/dependency-graph.js +104 -0
- package/dist/core/source-resolution/dependency-graph.js.map +1 -0
- package/dist/core/source-resolution/resolve-mutable-source.js +109 -0
- package/dist/core/source-resolution/resolve-mutable-source.js.map +1 -0
- package/dist/core/source-resolution/resolve-package-source.js +29 -0
- package/dist/core/source-resolution/resolve-package-source.js.map +1 -0
- package/dist/core/source-resolution/resolve-registry-version.js +35 -0
- package/dist/core/source-resolution/resolve-registry-version.js.map +1 -0
- package/dist/core/source-resolution/types.js.map +1 -0
- package/dist/core/status/status-file-discovery.js +23 -12
- package/dist/core/status/status-file-discovery.js.map +1 -1
- package/dist/core/status/status-pipeline.js +134 -0
- package/dist/core/status/status-pipeline.js.map +1 -0
- package/dist/core/sync/platform-sync-summary.js +27 -0
- package/dist/core/sync/platform-sync-summary.js.map +1 -0
- package/dist/core/uninstall/flow-aware-uninstaller.js +189 -0
- package/dist/core/uninstall/flow-aware-uninstaller.js.map +1 -0
- package/dist/core/uninstall/uninstall-file-discovery.js +11 -6
- package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
- package/dist/core/uninstall/uninstall-pipeline.js +141 -0
- package/dist/core/uninstall/uninstall-pipeline.js.map +1 -0
- package/dist/core/universal-patterns.js +64 -0
- package/dist/core/universal-patterns.js.map +1 -0
- package/dist/index.js +99 -6
- package/dist/index.js.map +1 -1
- package/dist/types/flows.js +8 -0
- package/dist/types/flows.js.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/platform-flows.js +8 -0
- package/dist/types/platform-flows.js.map +1 -0
- package/dist/types/workspace-index.js +6 -0
- package/dist/types/workspace-index.js.map +1 -0
- package/dist/utils/custom-path-resolution.js +160 -0
- package/dist/utils/custom-path-resolution.js.map +1 -0
- package/dist/utils/dependency-coverage.js +1 -1
- package/dist/utils/dependency-coverage.js.map +1 -1
- package/dist/utils/file-processing.js +1 -1
- package/dist/utils/flow-index-installer.js +209 -0
- package/dist/utils/flow-index-installer.js.map +1 -0
- package/dist/utils/formatters.js +47 -1
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/fs.js +17 -0
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/git-clone-registry.js +88 -0
- package/dist/utils/git-clone-registry.js.map +1 -0
- package/dist/utils/git-clone.js +69 -0
- package/dist/utils/git-clone.js.map +1 -0
- package/dist/utils/git-spec.js +96 -0
- package/dist/utils/git-spec.js.map +1 -0
- package/dist/utils/http-client.js +7 -0
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/index-based-installer.js +356 -163
- package/dist/utils/index-based-installer.js.map +1 -1
- package/dist/utils/install-conflict-handler.js +2 -2
- package/dist/utils/install-conflict-handler.js.map +1 -1
- package/dist/utils/install-file-discovery.js +18 -13
- package/dist/utils/install-file-discovery.js.map +1 -1
- package/dist/utils/install-helpers.js +43 -20
- package/dist/utils/install-helpers.js.map +1 -1
- package/dist/utils/jsonc.js +23 -1
- package/dist/utils/jsonc.js.map +1 -1
- package/dist/utils/manifest-paths.js +1 -1
- package/dist/utils/manifest-paths.js.map +1 -1
- package/dist/utils/markdown-frontmatter.js +46 -0
- package/dist/utils/markdown-frontmatter.js.map +1 -1
- package/dist/utils/package-copy.js +5 -103
- package/dist/utils/package-copy.js.map +1 -1
- package/dist/utils/package-filters.js +9 -105
- package/dist/utils/package-filters.js.map +1 -1
- package/dist/utils/package-index-yml.js +27 -6
- package/dist/utils/package-index-yml.js.map +1 -1
- package/dist/utils/package-input.js +98 -0
- package/dist/utils/package-input.js.map +1 -0
- package/dist/utils/package-management.js +80 -28
- package/dist/utils/package-management.js.map +1 -1
- package/dist/utils/package-name-resolution.js +327 -0
- package/dist/utils/package-name-resolution.js.map +1 -0
- package/dist/utils/package-name.js +18 -16
- package/dist/utils/package-name.js.map +1 -1
- package/dist/utils/package-versioning.js +2 -33
- package/dist/utils/package-versioning.js.map +1 -1
- package/dist/utils/package-yml.js +19 -28
- package/dist/utils/package-yml.js.map +1 -1
- package/dist/utils/path-resolution.js +102 -0
- package/dist/utils/path-resolution.js.map +1 -0
- package/dist/utils/paths.js +6 -6
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/platform-file.js +36 -24
- package/dist/utils/platform-file.js.map +1 -1
- package/dist/utils/platform-mapper.js +222 -68
- package/dist/utils/platform-mapper.js.map +1 -1
- package/dist/utils/platform-root-files.js +44 -0
- package/dist/utils/platform-root-files.js.map +1 -0
- package/dist/utils/platform-utils.js +35 -54
- package/dist/utils/platform-utils.js.map +1 -1
- package/dist/utils/platform-yaml-merge.js +20 -140
- package/dist/utils/platform-yaml-merge.js.map +1 -1
- package/dist/utils/prompts.js +92 -7
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/registry-entry-filter.js +50 -27
- package/dist/utils/registry-entry-filter.js.map +1 -1
- package/dist/utils/registry-paths.js +5 -4
- package/dist/utils/registry-paths.js.map +1 -1
- package/dist/utils/scope-resolution.js +156 -0
- package/dist/utils/scope-resolution.js.map +1 -0
- package/dist/utils/source-mutability.js +15 -0
- package/dist/utils/source-mutability.js.map +1 -0
- package/dist/utils/tarball.js +29 -4
- package/dist/utils/tarball.js.map +1 -1
- package/dist/utils/version-ranges.js +1 -32
- package/dist/utils/version-ranges.js.map +1 -1
- package/dist/utils/workspace-index-helpers.js +28 -0
- package/dist/utils/workspace-index-helpers.js.map +1 -0
- package/dist/utils/workspace-index-ownership.js +100 -0
- package/dist/utils/workspace-index-ownership.js.map +1 -0
- package/dist/utils/workspace-index-yml.js +173 -0
- package/dist/utils/workspace-index-yml.js.map +1 -0
- package/examples/custom-subdirs-platform.jsonc +157 -0
- package/package.json +7 -2
- package/platforms.jsonc +531 -84
- package/schemas/map-pipeline-v1.json +256 -0
- package/schemas/platforms-v1.json +400 -0
- package/specs/README.md +88 -0
- package/specs/add/README.md +166 -0
- package/specs/agents-claude.md +570 -0
- package/specs/agents-opencode.md +622 -0
- package/specs/apply/README.md +21 -0
- package/specs/apply/apply-behavior.md +58 -0
- package/specs/apply/apply-command.md +51 -0
- package/specs/apply/conflicts.md +41 -0
- package/specs/apply/index-effects.md +81 -0
- package/specs/architecture.md +107 -0
- package/specs/auth/README.md +17 -0
- package/specs/auth/auth-http-contract.md +25 -0
- package/specs/auth/cli/credentials.md +39 -0
- package/specs/auth/cli/login.md +32 -0
- package/specs/auth/cli/logout.md +16 -0
- package/specs/claude-mcp.md +1065 -0
- package/specs/claude-plugins-marketplace.md +363 -0
- package/specs/claude-plugins.md +413 -0
- package/specs/cli-options.md +52 -0
- package/specs/codex-mcp.md +114 -0
- package/specs/commands-overview.md +175 -0
- package/specs/directory-layout.md +95 -0
- package/specs/install/README.md +12 -4
- package/specs/install/git-sources.md +230 -0
- package/specs/install/install-behavior.md +483 -73
- package/specs/install/package-yml-canonical.md +67 -35
- package/specs/install/version-resolution.md +69 -115
- package/specs/new/README.md +769 -0
- package/specs/new/SUMMARY.md +310 -0
- package/specs/new/scope-behavior.md +793 -0
- package/specs/pack/README.md +77 -0
- package/specs/pack/package-name-resolution.md +330 -0
- package/specs/package/README.md +18 -17
- package/specs/package/nested-packages-and-parent-packages.md +32 -31
- package/specs/package/package-index-yml.md +95 -101
- package/specs/package/package-root-layout.md +64 -46
- package/specs/package/registry-payload-and-copy.md +50 -44
- package/specs/package/universal-content.md +33 -56
- package/specs/package-sources.md +248 -0
- package/specs/platforms/README.md +52 -0
- package/specs/platforms/configuration.md +571 -0
- package/specs/platforms/detection.md +552 -0
- package/specs/platforms/directory-layout.md +599 -0
- package/specs/platforms/examples.md +1146 -0
- package/specs/platforms/flow-reference.md +1240 -0
- package/specs/platforms/flows.md +1488 -0
- package/specs/platforms/map-pipeline.md +801 -0
- package/specs/platforms/overview.md +349 -0
- package/specs/platforms/specification.md +700 -0
- package/specs/platforms/troubleshooting.md +697 -0
- package/specs/platforms/universal-converter.md +520 -0
- package/specs/push/README.md +1 -0
- package/specs/push/push-behavior.md +11 -3
- package/specs/push/push-remote-upload.md +1 -1
- package/specs/push/push-scoping.md +1 -1
- package/specs/push/push-version-selection.md +1 -1
- package/specs/registry.md +111 -0
- package/specs/remove/README.md +257 -0
- package/specs/save/README.md +21 -17
- package/specs/save/save-conflict-resolution.md +205 -83
- package/specs/save/save-file-discovery.md +6 -4
- package/specs/save/save-frontmatter-overrides.md +11 -15
- package/specs/save/save-modes-inputs.md +9 -39
- package/specs/save/save-naming-scoping.md +4 -4
- package/specs/save/save-package-detection.md +13 -13
- package/specs/save/save-registry-sync.md +16 -106
- package/specs/save/save-versioning.md +80 -0
- package/specs/scope-management.md +92 -0
- package/specs/set/README.md +520 -0
- package/specs/set/set-behavior.md +563 -0
- package/specs/show/README.md +483 -0
- package/specs/show/show-remote.md +494 -0
- package/specs/status/README.md +38 -0
- package/specs/uninstall/README.md +231 -0
- package/dist/commands/duplicate.js +0 -69
- package/dist/commands/duplicate.js.map +0 -1
- package/dist/commands/init.js +0 -117
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/prune.js +0 -357
- package/dist/commands/prune.js.map +0 -1
- package/dist/commands/tui.js +0 -61
- package/dist/commands/tui.js.map +0 -1
- package/dist/core/install/index.js +0 -3
- package/dist/core/install/index.js.map +0 -1
- package/dist/core/push/push-single-file.js +0 -56
- package/dist/core/push/push-single-file.js.map +0 -1
- package/dist/core/save/package-detection.js +0 -147
- package/dist/core/save/package-detection.js.map +0 -1
- package/dist/core/save/save-single-file.js +0 -124
- package/dist/core/save/save-single-file.js.map +0 -1
- package/dist/core/token-store.js +0 -73
- package/dist/core/token-store.js.map +0 -1
- package/dist/tui/app.js +0 -95
- package/dist/tui/app.js.map +0 -1
- package/dist/tui/components/package-list.js +0 -73
- package/dist/tui/components/package-list.js.map +0 -1
- package/dist/tui/controller.js +0 -365
- package/dist/tui/controller.js.map +0 -1
- package/dist/tui/index.js +0 -12
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/services/file-index.js +0 -64
- package/dist/tui/services/file-index.js.map +0 -1
- package/dist/tui/services/packages.js +0 -18
- package/dist/tui/services/packages.js.map +0 -1
- package/dist/tui/services/save.js +0 -21
- package/dist/tui/services/save.js.map +0 -1
- package/dist/tui/state/app-state.js +0 -15
- package/dist/tui/state/app-state.js.map +0 -1
- package/dist/tui/state.js +0 -17
- package/dist/tui/state.js.map +0 -1
- package/dist/tui/types.js.map +0 -1
- package/dist/tui/views/add-file-modal.js +0 -129
- package/dist/tui/views/add-file-modal.js.map +0 -1
- package/dist/tui/views/file-preview.js +0 -44
- package/dist/tui/views/file-preview.js.map +0 -1
- package/dist/tui/views/list-packages.js +0 -73
- package/dist/tui/views/list-packages.js.map +0 -1
- package/dist/tui/views/main-menu.js +0 -29
- package/dist/tui/views/main-menu.js.map +0 -1
- package/dist/tui/views/manage-view.js +0 -81
- package/dist/tui/views/manage-view.js.map +0 -1
- package/dist/tui/views/package-hub.js +0 -120
- package/dist/tui/views/package-hub.js.map +0 -1
- package/dist/tui/views/placeholder.js +0 -24
- package/dist/tui/views/placeholder.js.map +0 -1
- package/dist/utils/bun-bootstrap.js +0 -72
- package/dist/utils/bun-bootstrap.js.map +0 -1
- package/dist/utils/entity-id.js +0 -19
- package/dist/utils/entity-id.js.map +0 -1
- package/dist/utils/package-local-files.js +0 -5
- package/dist/utils/package-local-files.js.map +0 -1
- package/dist/utils/path-matching.js +0 -74
- package/dist/utils/path-matching.js.map +0 -1
- package/dist/utils/root-file-operations.js +0 -39
- package/dist/utils/root-file-operations.js.map +0 -1
- package/dist/utils/root-file-transformer.js +0 -27
- package/dist/utils/root-file-transformer.js.map +0 -1
- package/dist/utils/yaml-frontmatter.js +0 -25
- package/dist/utils/yaml-frontmatter.js.map +0 -1
- package/specs/auth/auth-device-flow.md +0 -70
- package/specs/login/login-device-flow.md +0 -70
- package/specs/platforms.md +0 -193
- package/specs/save-pack-versioning.md +0 -224
- package/specs/save-pack.md +0 -68
- /package/dist/{tui → core/source-resolution}/types.js +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { join } from 'path';
|
|
2
|
+
import { exists, readTextFile } from '../../utils/fs.js';
|
|
3
|
+
import { logger } from '../../utils/logger.js';
|
|
4
|
+
const PLUGIN_DIR = '.claude-plugin';
|
|
5
|
+
const PLUGIN_MANIFEST = 'plugin.json';
|
|
6
|
+
const MARKETPLACE_MANIFEST = 'marketplace.json';
|
|
7
|
+
/**
|
|
8
|
+
* Detect if a directory contains a Claude Code plugin.
|
|
9
|
+
*
|
|
10
|
+
* Detection order:
|
|
11
|
+
* 1. Check for .claude-plugin/plugin.json (individual plugin)
|
|
12
|
+
* 2. Check for .claude-plugin/marketplace.json (marketplace)
|
|
13
|
+
*
|
|
14
|
+
* @param dirPath - Absolute path to directory to check
|
|
15
|
+
* @returns Detection result with plugin type if found
|
|
16
|
+
*/
|
|
17
|
+
export async function detectPluginType(dirPath) {
|
|
18
|
+
logger.debug('Detecting plugin type', { dirPath });
|
|
19
|
+
const pluginDir = join(dirPath, PLUGIN_DIR);
|
|
20
|
+
// Check for individual plugin
|
|
21
|
+
const pluginManifestPath = join(pluginDir, PLUGIN_MANIFEST);
|
|
22
|
+
if (await exists(pluginManifestPath)) {
|
|
23
|
+
logger.info('Detected individual Claude Code plugin', { path: pluginManifestPath });
|
|
24
|
+
return {
|
|
25
|
+
isPlugin: true,
|
|
26
|
+
type: 'individual',
|
|
27
|
+
manifestPath: pluginManifestPath
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// Check for marketplace
|
|
31
|
+
const marketplaceManifestPath = join(pluginDir, MARKETPLACE_MANIFEST);
|
|
32
|
+
if (await exists(marketplaceManifestPath)) {
|
|
33
|
+
logger.info('Detected Claude Code plugin marketplace', { path: marketplaceManifestPath });
|
|
34
|
+
return {
|
|
35
|
+
isPlugin: true,
|
|
36
|
+
type: 'marketplace',
|
|
37
|
+
manifestPath: marketplaceManifestPath
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Not a plugin
|
|
41
|
+
return { isPlugin: false };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if a directory is an individual plugin.
|
|
45
|
+
*/
|
|
46
|
+
export async function isIndividualPlugin(dirPath) {
|
|
47
|
+
const result = await detectPluginType(dirPath);
|
|
48
|
+
return result.isPlugin && result.type === 'individual';
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check if a directory is a marketplace.
|
|
52
|
+
*/
|
|
53
|
+
export async function isMarketplace(dirPath) {
|
|
54
|
+
const result = await detectPluginType(dirPath);
|
|
55
|
+
return result.isPlugin && result.type === 'marketplace';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Validate that a plugin manifest can be parsed.
|
|
59
|
+
* Returns true if the manifest is valid JSON.
|
|
60
|
+
*/
|
|
61
|
+
export async function validatePluginManifest(manifestPath) {
|
|
62
|
+
try {
|
|
63
|
+
const content = await readTextFile(manifestPath);
|
|
64
|
+
JSON.parse(content);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
logger.error('Failed to parse plugin manifest', { manifestPath, error });
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=plugin-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-detector.js","sourceRoot":"","sources":["../../../src/core/install/plugin-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAU/C,MAAM,UAAU,GAAG,gBAAgB,CAAC;AACpC,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe;IACpD,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE5C,8BAA8B;IAC9B,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC5D,IAAI,MAAM,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACpF,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,kBAAkB;SACjC,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,MAAM,uBAAuB,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACtE,IAAI,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC1F,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,aAAa;YACnB,YAAY,EAAE,uBAAuB;SACtC,CAAC;IACJ,CAAC;IAED,eAAe;IACf,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe;IACtD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe;IACjD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,YAAoB;IAC/D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { logger } from '../../utils/logger.js';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a Claude Code plugin from Claude-specific format to OpenPackage universal format.
|
|
4
|
+
*
|
|
5
|
+
* Strategy: For Claude-specific files (agents, MCP), create BOTH versions:
|
|
6
|
+
* 1. Claude-specific with .claude suffix → installs to Claude only, bypasses flows
|
|
7
|
+
* 2. Universal version → installs to other platforms, goes through flows
|
|
8
|
+
*
|
|
9
|
+
* This ensures:
|
|
10
|
+
* - Claude platform gets original Claude format (no double-transformation)
|
|
11
|
+
* - Other platforms get properly converted universal format
|
|
12
|
+
*
|
|
13
|
+
* @param pkg - Package object from transformPluginToPackage()
|
|
14
|
+
* @returns Package with both Claude-specific (suffixed) and universal files
|
|
15
|
+
*/
|
|
16
|
+
export async function convertClaudePluginToUniversal(pkg) {
|
|
17
|
+
console.log('🔧 Converting Claude Code plugin files...');
|
|
18
|
+
logger.info('Converting Claude Code plugin to universal format', {
|
|
19
|
+
name: pkg.metadata.name,
|
|
20
|
+
fileCount: pkg.files.length
|
|
21
|
+
});
|
|
22
|
+
const convertedFiles = [];
|
|
23
|
+
for (const file of pkg.files) {
|
|
24
|
+
// For Claude-specific files (agents, MCP), we create BOTH versions:
|
|
25
|
+
// 1. Claude-specific with .claude suffix (installs to Claude only, no flow transforms)
|
|
26
|
+
// 2. Universal version (for other platforms, goes through flows)
|
|
27
|
+
if (file.path.startsWith('agents/') && file.path.endsWith('.md')) {
|
|
28
|
+
console.log(` 📝 Agent file: ${file.path}`);
|
|
29
|
+
// Version 1: Claude-specific (original format, with .claude suffix)
|
|
30
|
+
const claudeSpecificPath = file.path.replace(/\.md$/, '.claude.md');
|
|
31
|
+
convertedFiles.push({
|
|
32
|
+
path: claudeSpecificPath,
|
|
33
|
+
content: file.content,
|
|
34
|
+
encoding: file.encoding
|
|
35
|
+
});
|
|
36
|
+
console.log(` ✅ Added Claude-specific: ${claudeSpecificPath}`);
|
|
37
|
+
// Version 2: Universal (converted format, for other platforms)
|
|
38
|
+
const universalFile = await convertClaudeAgentFile(file);
|
|
39
|
+
convertedFiles.push(universalFile);
|
|
40
|
+
console.log(` ✅ Added universal: ${file.path}`);
|
|
41
|
+
}
|
|
42
|
+
else if (file.path === '.mcp.json') {
|
|
43
|
+
console.log(` 📝 MCP file: ${file.path}`);
|
|
44
|
+
// Version 1: Claude-specific (original format, with .claude suffix)
|
|
45
|
+
convertedFiles.push({
|
|
46
|
+
path: '.mcp.claude.json',
|
|
47
|
+
content: file.content,
|
|
48
|
+
encoding: file.encoding
|
|
49
|
+
});
|
|
50
|
+
console.log(` ✅ Added Claude-specific: .mcp.claude.json`);
|
|
51
|
+
// Version 2: Universal (converted format, for other platforms)
|
|
52
|
+
const universalFile = convertClaudeMcpFile(file);
|
|
53
|
+
convertedFiles.push(universalFile);
|
|
54
|
+
console.log(` ✅ Added universal: mcp.jsonc`);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Commands and skills are already universal
|
|
58
|
+
convertedFiles.push(file);
|
|
59
|
+
console.log(` ✅ Kept as-is: ${file.path}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
console.log(`✅ Conversion complete: ${convertedFiles.length} files`);
|
|
63
|
+
logger.info('Converted Claude Code plugin to universal format', {
|
|
64
|
+
name: pkg.metadata.name,
|
|
65
|
+
originalFiles: pkg.files.length,
|
|
66
|
+
convertedFiles: convertedFiles.length
|
|
67
|
+
});
|
|
68
|
+
const convertedPkg = {
|
|
69
|
+
metadata: pkg.metadata,
|
|
70
|
+
files: convertedFiles
|
|
71
|
+
};
|
|
72
|
+
// Cache the converted plugin so packageManager.loadPackage can return it
|
|
73
|
+
const { cacheTransformedPlugin } = await import('./plugin-transformer.js');
|
|
74
|
+
cacheTransformedPlugin(convertedPkg);
|
|
75
|
+
console.log(`🗂️ Cached converted plugin: ${pkg.metadata.name}@${pkg.metadata.version}`);
|
|
76
|
+
return convertedPkg;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Convert a Claude agent file from Claude-specific format to universal format.
|
|
80
|
+
*
|
|
81
|
+
* Claude Format:
|
|
82
|
+
* ---
|
|
83
|
+
* name: reviewer # Auto-set from filename
|
|
84
|
+
* model: sonnet # Simplified model name
|
|
85
|
+
* tools: read_file, write_file # Comma-separated string
|
|
86
|
+
* ---
|
|
87
|
+
*
|
|
88
|
+
* Universal Format:
|
|
89
|
+
* ---
|
|
90
|
+
* model: anthropic/claude-sonnet-4.0 # Full model name
|
|
91
|
+
* tools: # Object format
|
|
92
|
+
* read_file: true
|
|
93
|
+
* write_file: true
|
|
94
|
+
* ---
|
|
95
|
+
*/
|
|
96
|
+
async function convertClaudeAgentFile(file) {
|
|
97
|
+
try {
|
|
98
|
+
const { splitFrontmatter, composeMarkdown } = await import('../../utils/markdown-frontmatter.js');
|
|
99
|
+
const parsed = splitFrontmatter(file.content);
|
|
100
|
+
if (!parsed.frontmatter) {
|
|
101
|
+
// No frontmatter, return as-is
|
|
102
|
+
return file;
|
|
103
|
+
}
|
|
104
|
+
const frontmatter = parsed.frontmatter;
|
|
105
|
+
const convertedFrontmatter = { ...frontmatter };
|
|
106
|
+
// Remove 'name' field (it's auto-set from filename in Claude)
|
|
107
|
+
if ('name' in convertedFrontmatter) {
|
|
108
|
+
delete convertedFrontmatter.name;
|
|
109
|
+
}
|
|
110
|
+
// Convert model: simplified → full format
|
|
111
|
+
if (frontmatter.model) {
|
|
112
|
+
const model = frontmatter.model;
|
|
113
|
+
if (model === 'sonnet') {
|
|
114
|
+
convertedFrontmatter.model = 'anthropic/claude-sonnet-4.0';
|
|
115
|
+
}
|
|
116
|
+
else if (model === 'opus') {
|
|
117
|
+
convertedFrontmatter.model = 'anthropic/claude-opus-4.0';
|
|
118
|
+
}
|
|
119
|
+
else if (model === 'haiku') {
|
|
120
|
+
convertedFrontmatter.model = 'anthropic/claude-haiku-4.0';
|
|
121
|
+
}
|
|
122
|
+
else if (model === 'inherit') {
|
|
123
|
+
// 'inherit' is universal, keep it
|
|
124
|
+
convertedFrontmatter.model = 'inherit';
|
|
125
|
+
}
|
|
126
|
+
// Otherwise keep the model as-is (might already be full format)
|
|
127
|
+
}
|
|
128
|
+
// Convert tools: comma-separated string → object with boolean values
|
|
129
|
+
if (frontmatter.tools && typeof frontmatter.tools === 'string') {
|
|
130
|
+
const toolsArray = frontmatter.tools
|
|
131
|
+
.split(',')
|
|
132
|
+
.map((tool) => tool.trim())
|
|
133
|
+
.filter((tool) => tool.length > 0);
|
|
134
|
+
const toolsObject = {};
|
|
135
|
+
for (const tool of toolsArray) {
|
|
136
|
+
toolsObject[tool] = true;
|
|
137
|
+
}
|
|
138
|
+
convertedFrontmatter.tools = toolsObject;
|
|
139
|
+
}
|
|
140
|
+
// Re-add 'permission' field if it was removed (Claude flows do $unset)
|
|
141
|
+
// Universal format should have it
|
|
142
|
+
if (!('permission' in convertedFrontmatter)) {
|
|
143
|
+
convertedFrontmatter.permission = {};
|
|
144
|
+
}
|
|
145
|
+
// Serialize back to Markdown with frontmatter
|
|
146
|
+
const convertedContent = composeMarkdown(convertedFrontmatter, parsed.body);
|
|
147
|
+
return {
|
|
148
|
+
path: file.path,
|
|
149
|
+
content: convertedContent,
|
|
150
|
+
encoding: file.encoding
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
logger.warn(`Failed to convert agent file ${file.path}, using as-is`, { error });
|
|
155
|
+
return file;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Convert Claude MCP config from Claude-specific format to universal format.
|
|
160
|
+
*
|
|
161
|
+
* Claude Format (.mcp.json):
|
|
162
|
+
* {
|
|
163
|
+
* "mcpServers": {
|
|
164
|
+
* "server1": { ... }
|
|
165
|
+
* }
|
|
166
|
+
* }
|
|
167
|
+
*
|
|
168
|
+
* Universal Format (mcp.jsonc):
|
|
169
|
+
* {
|
|
170
|
+
* "mcp": {
|
|
171
|
+
* "server1": { ... }
|
|
172
|
+
* }
|
|
173
|
+
* }
|
|
174
|
+
*/
|
|
175
|
+
function convertClaudeMcpFile(file) {
|
|
176
|
+
try {
|
|
177
|
+
const content = JSON.parse(file.content);
|
|
178
|
+
// Rename mcpServers → mcp (reverse of Claude flow transform)
|
|
179
|
+
if ('mcpServers' in content) {
|
|
180
|
+
const converted = {
|
|
181
|
+
mcp: content.mcpServers
|
|
182
|
+
};
|
|
183
|
+
// Copy other top-level keys if any
|
|
184
|
+
for (const key in content) {
|
|
185
|
+
if (key !== 'mcpServers') {
|
|
186
|
+
converted[key] = content[key];
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Change path to mcp.jsonc (universal format uses JSONC)
|
|
190
|
+
return {
|
|
191
|
+
path: 'mcp.jsonc',
|
|
192
|
+
content: JSON.stringify(converted, null, 2),
|
|
193
|
+
encoding: file.encoding
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
// If no mcpServers key, might already be universal format or malformed
|
|
197
|
+
return file;
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
logger.warn(`Failed to convert MCP file ${file.path}, using as-is`, { error });
|
|
201
|
+
return file;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Check if a package appears to be a Claude Code plugin based on its structure.
|
|
206
|
+
* Used to determine if conversion should be applied.
|
|
207
|
+
*/
|
|
208
|
+
export function isClaudePlugin(pkg) {
|
|
209
|
+
// Check for Claude-specific file patterns
|
|
210
|
+
const hasClaudeAgents = pkg.files.some(f => f.path.startsWith('agents/'));
|
|
211
|
+
const hasClaudeMcp = pkg.files.some(f => f.path === '.mcp.json');
|
|
212
|
+
const hasCommands = pkg.files.some(f => f.path.startsWith('commands/'));
|
|
213
|
+
const hasSkills = pkg.files.some(f => f.path.startsWith('skills/'));
|
|
214
|
+
// If it has agents or Claude-specific .mcp.json, it's likely a Claude plugin
|
|
215
|
+
// Commands and skills alone aren't enough (could be universal package)
|
|
216
|
+
return hasClaudeAgents || hasClaudeMcp;
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=plugin-to-universal-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-to-universal-converter.js","sourceRoot":"","sources":["../../../src/core/install/plugin-to-universal-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { join, relative } from 'path';
|
|
2
|
+
import { readTextFile, walkFiles } from '../../utils/fs.js';
|
|
3
|
+
import { logger } from '../../utils/logger.js';
|
|
4
|
+
import { ValidationError } from '../../utils/errors.js';
|
|
5
|
+
import { isJunk } from 'junk';
|
|
6
|
+
import { detectPackageFormat } from './format-detector.js';
|
|
7
|
+
/**
|
|
8
|
+
* In-memory cache for transformed plugin packages.
|
|
9
|
+
* Key: `${packageName}@${version}`
|
|
10
|
+
*/
|
|
11
|
+
const transformedPluginCache = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* Cache a transformed plugin package for later retrieval.
|
|
14
|
+
*/
|
|
15
|
+
export function cacheTransformedPlugin(pkg) {
|
|
16
|
+
const key = `${pkg.metadata.name}@${pkg.metadata.version}`;
|
|
17
|
+
transformedPluginCache.set(key, pkg);
|
|
18
|
+
logger.debug('Cached transformed plugin', { name: pkg.metadata.name, version: pkg.metadata.version });
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Retrieve a cached transformed plugin package.
|
|
22
|
+
*/
|
|
23
|
+
export function getTransformedPlugin(name, version) {
|
|
24
|
+
const key = `${name}@${version}`;
|
|
25
|
+
return transformedPluginCache.get(key);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Clear the plugin cache (useful for testing).
|
|
29
|
+
*/
|
|
30
|
+
export function clearPluginCache() {
|
|
31
|
+
transformedPluginCache.clear();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Transform a Claude Code plugin to an OpenPackage Package.
|
|
35
|
+
*
|
|
36
|
+
* Reads the plugin manifest (.claude-plugin/plugin.json), converts it to
|
|
37
|
+
* OpenPackage format, and collects all plugin files.
|
|
38
|
+
*
|
|
39
|
+
* @param pluginDir - Absolute path to plugin directory
|
|
40
|
+
* @returns Package object ready for installation
|
|
41
|
+
*/
|
|
42
|
+
export async function transformPluginToPackage(pluginDir) {
|
|
43
|
+
logger.debug('Transforming Claude Code plugin to OpenPackage format', { pluginDir });
|
|
44
|
+
// Read and parse plugin manifest
|
|
45
|
+
const manifestPath = join(pluginDir, '.claude-plugin', 'plugin.json');
|
|
46
|
+
let pluginManifest;
|
|
47
|
+
try {
|
|
48
|
+
const content = await readTextFile(manifestPath);
|
|
49
|
+
pluginManifest = JSON.parse(content);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
throw new ValidationError(`Failed to parse plugin manifest at ${manifestPath}: ${error}`);
|
|
53
|
+
}
|
|
54
|
+
// Validate required fields
|
|
55
|
+
if (!pluginManifest.name) {
|
|
56
|
+
throw new ValidationError(`Plugin manifest at ${manifestPath} is missing required field: name`);
|
|
57
|
+
}
|
|
58
|
+
if (!pluginManifest.version) {
|
|
59
|
+
throw new ValidationError(`Plugin manifest at ${manifestPath} is missing required field: version`);
|
|
60
|
+
}
|
|
61
|
+
// Transform to OpenPackage metadata
|
|
62
|
+
const metadata = {
|
|
63
|
+
name: pluginManifest.name,
|
|
64
|
+
version: pluginManifest.version,
|
|
65
|
+
description: pluginManifest.description,
|
|
66
|
+
keywords: pluginManifest.keywords,
|
|
67
|
+
license: pluginManifest.license,
|
|
68
|
+
homepage: pluginManifest.homepage
|
|
69
|
+
};
|
|
70
|
+
// Extract author name
|
|
71
|
+
if (pluginManifest.author?.name) {
|
|
72
|
+
metadata.author = pluginManifest.author.name;
|
|
73
|
+
}
|
|
74
|
+
// Extract repository
|
|
75
|
+
if (pluginManifest.repository?.url) {
|
|
76
|
+
metadata.repository = {
|
|
77
|
+
type: pluginManifest.repository.type || 'git',
|
|
78
|
+
url: pluginManifest.repository.url
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// Collect all plugin files (preserve entire directory structure)
|
|
82
|
+
const files = await extractPluginFiles(pluginDir);
|
|
83
|
+
// Detect package format for conversion hints
|
|
84
|
+
const format = detectPackageFormat(files);
|
|
85
|
+
// Claude plugins have universal structure but Claude-specific content (frontmatter)
|
|
86
|
+
// Mark as native Claude format: needs path mapping but no content transformation
|
|
87
|
+
// - isNativeFormat: true = content is already in target format (skip map/pipe transforms)
|
|
88
|
+
// - nativePlatform: 'claude' = this content is designed for Claude platform
|
|
89
|
+
// - platform: 'claude' = source format is Claude-specific
|
|
90
|
+
//
|
|
91
|
+
// Installation behavior:
|
|
92
|
+
// - Installing to claude: Use path mappings only (commands/ → .claude/commands/)
|
|
93
|
+
// - Installing to other platforms: Full conversion (claude → universal → target)
|
|
94
|
+
format.type = 'platform-specific';
|
|
95
|
+
format.platform = 'claude';
|
|
96
|
+
format.isNativeFormat = true;
|
|
97
|
+
format.nativePlatform = 'claude';
|
|
98
|
+
const pkg = {
|
|
99
|
+
metadata,
|
|
100
|
+
files,
|
|
101
|
+
// Store format metadata for installation pipeline
|
|
102
|
+
_format: format
|
|
103
|
+
};
|
|
104
|
+
// Cache the transformed plugin for later retrieval
|
|
105
|
+
cacheTransformedPlugin(pkg);
|
|
106
|
+
logger.info('Transformed Claude Code plugin', {
|
|
107
|
+
name: metadata.name,
|
|
108
|
+
version: metadata.version,
|
|
109
|
+
fileCount: files.length,
|
|
110
|
+
format: format.type,
|
|
111
|
+
platform: format.platform,
|
|
112
|
+
confidence: format.confidence
|
|
113
|
+
});
|
|
114
|
+
return pkg;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Extract all files from a plugin directory, preserving structure.
|
|
118
|
+
*
|
|
119
|
+
* Plugin files are kept with their original paths (commands/, agents/, etc.)
|
|
120
|
+
* The OpenPackage platform system will handle installing them to the correct
|
|
121
|
+
* platform-specific directories (.claude/commands/, .cursor/commands/, etc.)
|
|
122
|
+
*
|
|
123
|
+
* Special handling for plugin-specific files:
|
|
124
|
+
* - .claude-plugin/ → skipped (plugin metadata, not needed in workspace)
|
|
125
|
+
* - .mcp.json, .lsp.json → kept as root files
|
|
126
|
+
* - commands/, agents/, skills/, hooks/ → universal subdirs
|
|
127
|
+
*
|
|
128
|
+
* @param pluginDir - Absolute path to plugin directory
|
|
129
|
+
* @returns Array of package files with original paths
|
|
130
|
+
*/
|
|
131
|
+
export async function extractPluginFiles(pluginDir) {
|
|
132
|
+
const files = [];
|
|
133
|
+
try {
|
|
134
|
+
for await (const fullPath of walkFiles(pluginDir)) {
|
|
135
|
+
const relativePath = relative(pluginDir, fullPath);
|
|
136
|
+
// Skip junk files (e.g., .DS_Store, Thumbs.db)
|
|
137
|
+
const pathParts = relativePath.split('/');
|
|
138
|
+
if (pathParts.some(part => isJunk(part))) {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
// Skip git metadata
|
|
142
|
+
if (relativePath.startsWith('.git/') || relativePath === '.git') {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
// Skip .claude-plugin directory (plugin metadata, not needed in workspace)
|
|
146
|
+
if (relativePath.startsWith('.claude-plugin/')) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
const content = await readTextFile(fullPath);
|
|
150
|
+
files.push({
|
|
151
|
+
path: relativePath,
|
|
152
|
+
content,
|
|
153
|
+
encoding: 'utf8'
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
logger.debug(`Extracted ${files.length} files from plugin`, { pluginDir });
|
|
157
|
+
return files;
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
throw new ValidationError(`Failed to extract files from plugin directory ${pluginDir}: ${error}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Validate plugin structure by checking for expected directories.
|
|
165
|
+
* This is a soft validation - missing directories are warnings, not errors.
|
|
166
|
+
*/
|
|
167
|
+
export function validatePluginStructure(files) {
|
|
168
|
+
const warnings = [];
|
|
169
|
+
const paths = files.map(f => f.path);
|
|
170
|
+
// Check for .claude-plugin directory
|
|
171
|
+
const hasManifest = paths.some(p => p.startsWith('.claude-plugin/'));
|
|
172
|
+
if (!hasManifest) {
|
|
173
|
+
warnings.push('Plugin is missing .claude-plugin/ directory');
|
|
174
|
+
}
|
|
175
|
+
// Warn if no commands, agents, or skills (but this is valid)
|
|
176
|
+
const hasCommands = paths.some(p => p.startsWith('commands/'));
|
|
177
|
+
const hasAgents = paths.some(p => p.startsWith('agents/'));
|
|
178
|
+
const hasSkills = paths.some(p => p.startsWith('skills/'));
|
|
179
|
+
const hasHooks = paths.some(p => p.startsWith('hooks/'));
|
|
180
|
+
const hasMcp = paths.some(p => p === '.mcp.json');
|
|
181
|
+
const hasLsp = paths.some(p => p === '.lsp.json');
|
|
182
|
+
if (!hasCommands && !hasAgents && !hasSkills && !hasHooks && !hasMcp && !hasLsp) {
|
|
183
|
+
warnings.push('Plugin does not contain any commands, agents, skills, hooks, MCP, or LSP configurations. ' +
|
|
184
|
+
'It may be empty or incomplete.');
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
valid: true,
|
|
188
|
+
warnings
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=plugin-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-transformer.js","sourceRoot":"","sources":["../../../src/core/install/plugin-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,7 +89,7 @@ export async function gatherVersionSourcesForInstall(args) {
|
|
|
89
89
|
}
|
|
90
90
|
export async function selectVersionForInstall(args) {
|
|
91
91
|
const sources = await gatherVersionSourcesForInstall(args);
|
|
92
|
-
// Merge
|
|
92
|
+
// Merge selection options with explicit prerelease intent if provided
|
|
93
93
|
const selectionOptions = {
|
|
94
94
|
...(args.selectionOptions ?? {}),
|
|
95
95
|
...(args.explicitPrereleaseIntent ? { explicitPrereleaseIntent: true } : {})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-selection.js","sourceRoot":"","sources":["../../../src/core/install/version-selection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"version-selection.js","sourceRoot":"","sources":["../../../src/core/install/version-selection.ts"],"names":[],"mappings":"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"}
|