opkg 0.6.2 → 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 +71 -168
- 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 +160 -4
- 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 +70 -9
- 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 +5 -3
- package/dist/core/add/platform-path-transformer.js.map +1 -1
- package/dist/core/add/source-collector.js +1 -2
- 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 +240 -68
- 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 +37 -6
- 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 +24 -7
- 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 +39 -25
- package/dist/core/install/path-install-pipeline.js.map +1 -1
- package/dist/core/install/path-package-loader.js +25 -10
- package/dist/core/install/path-package-loader.js.map +1 -1
- 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 +400 -157
- 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 +6 -6
- 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 +44 -33
- 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 +75 -7
- 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 +346 -154
- 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 -22
- package/dist/utils/install-helpers.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 +46 -3
- package/dist/utils/package-input.js.map +1 -1
- package/dist/utils/package-management.js +60 -29
- 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 +32 -20
- package/dist/utils/platform-file.js.map +1 -1
- package/dist/utils/platform-mapper.js +214 -44
- 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 +13 -6
- package/dist/utils/platform-utils.js.map +1 -1
- package/dist/utils/platform-yaml-merge.js +20 -141
- package/dist/utils/platform-yaml-merge.js.map +1 -1
- package/dist/utils/prompts.js +90 -5
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/registry-entry-filter.js +48 -25
- package/dist/utils/registry-entry-filter.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 +111 -44
- package/package.json +7 -2
- package/platforms.jsonc +490 -82
- 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 +13 -3
- 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 +11 -4
- package/specs/install/git-sources.md +230 -0
- package/specs/install/install-behavior.md +478 -76
- 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 +16 -12
- 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 -49
- 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/push-behavior.md +4 -4
- 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 +19 -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 +8 -38
- package/specs/save/save-naming-scoping.md +4 -4
- package/specs/save/save-package-detection.md +12 -12
- 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/install/local-source-handler.js +0 -76
- package/dist/core/install/local-source-handler.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/mcp/access/context.js +0 -20
- package/dist/mcp/access/context.js.map +0 -1
- package/dist/mcp/access/index.js +0 -57
- package/dist/mcp/access/index.js.map +0 -1
- package/dist/mcp/server.js +0 -20
- package/dist/mcp/server.js.map +0 -1
- package/dist/tui/app.js +0 -105
- 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 -708
- 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/local-mgmt.js +0 -68
- package/dist/tui/services/local-mgmt.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/services/status.js +0 -18
- package/dist/tui/services/status.js.map +0 -1
- package/dist/tui/state/app-state.js +0 -21
- 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/dashboard.js +0 -106
- package/dist/tui/views/dashboard.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 -33
- 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-detail.js +0 -254
- package/dist/tui/views/package-detail.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/command-helpers.js +0 -24
- package/dist/utils/command-helpers.js.map +0 -1
- package/dist/utils/cwd-resolver.js +0 -45
- package/dist/utils/cwd-resolver.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 -214
- 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
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
</a>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
|
-
<p align="center">
|
|
12
|
+
<p align="center">Universal plugins for coding agents.</p>
|
|
13
13
|
<p align="center">
|
|
14
14
|
<a href="https://www.npmjs.com/package/opkg " target="blank">
|
|
15
15
|
<img src="https://img.shields.io/npm/v/opkg?style=flat-square" alt="Npm package for OpenPackage">
|
|
@@ -29,26 +29,35 @@
|
|
|
29
29
|
|
|
30
30
|
# OpenPackage
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
OpenPackage turns your AI coding setups into reusable modules that anyone can instantly install to any platform, any codebase, ensuring consistent workflows across projects and teams. **No API keys. No MCP.**
|
|
33
33
|
|
|
34
34
|
## Why OpenPackage?
|
|
35
35
|
|
|
36
36
|
Modern AI coding tools are powerful, but lack organization, reusability, and efficiency.
|
|
37
|
-
-
|
|
38
|
-
- Rules, commands, and subagents scattered across multiple projects.
|
|
37
|
+
- Rules, commands, subagents, and skills scattered across multiple projects.
|
|
39
38
|
- Familiar workflows rebuilt for each project, incompatible between AI coding platforms.
|
|
39
|
+
- Specs across individuals and codebases, diverging, unversioned, and incohesive.
|
|
40
40
|
|
|
41
|
-
OpenPackage
|
|
41
|
+
OpenPackage takes care of cross-platform conversions, config composition, and portability, freeing you to build more, faster.
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
- Install & sync pre-built workflows to speed up coding. No more reinventing the wheel.
|
|
44
|
+
- Reuse rules, slash commands, and skills across multiple codebases and platforms.
|
|
45
|
+
- Share and compose packages together to create powerful workflows that continuously evolve.
|
|
44
46
|
|
|
45
|
-
|
|
47
|
+
## How it works
|
|
46
48
|
|
|
47
|
-
|
|
49
|
+
At its core, OpenPackage is a lightweight CLI tool for creating versioned, AI coding platform agnostic packages, each contaning sets of coding config files and specs for simplified installs, uninstalls, and distribution. It's basically Claude Code Plugins, but universal, more powerful, and open source.
|
|
48
50
|
|
|
49
51
|
1. Declare a package
|
|
50
|
-
2. Add
|
|
51
|
-
3.
|
|
52
|
+
2. Add rules, commands, subagents, skills, mcp configs, specs, docs etc.
|
|
53
|
+
3. Install and sync to multiple codebases
|
|
54
|
+
|
|
55
|
+
## Use cases
|
|
56
|
+
|
|
57
|
+
- Install Claude Code Plugins to any coding platform
|
|
58
|
+
- Reuse files and configs across multiple codebases
|
|
59
|
+
- Sync configs across multiple platforms
|
|
60
|
+
- Modular management of specs, rules, commands, agents, skills, and MCPs
|
|
52
61
|
|
|
53
62
|
## Quick start
|
|
54
63
|
|
|
@@ -59,193 +68,87 @@ npm
|
|
|
59
68
|
npm install -g opkg
|
|
60
69
|
```
|
|
61
70
|
|
|
62
|
-
###
|
|
71
|
+
### Compose a package
|
|
63
72
|
|
|
64
73
|
```bash title="Terminal"
|
|
65
|
-
opkg
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
> [!NOTE]
|
|
70
|
-
> You can also use command `openpackage` instead of `opkg`
|
|
71
|
-
|
|
72
|
-
### Add/update/remove package files
|
|
73
|
-
|
|
74
|
-
Directly update the files (at cwd or in `.openpackage/packages/`) and perform `opkg save`.
|
|
75
|
-
You can also use the add command to add workspace files to a package.
|
|
74
|
+
opkg new <package>
|
|
75
|
+
```
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
opkg add <package> <path-to-dir-or-file>
|
|
79
|
-
```
|
|
77
|
+
Then manually add/update/remove files to and from the package following this structure:
|
|
80
78
|
|
|
81
|
-
|
|
82
|
-
>
|
|
79
|
+
```txt title="Structure"
|
|
80
|
+
<package>
|
|
81
|
+
│
|
|
82
|
+
│ # Package files
|
|
83
|
+
├── openpackage.yml # The OpenPackage manifest, required
|
|
84
|
+
├── README.md # LICENSE.md, CONTRIBUTING.md, etc.
|
|
85
|
+
│
|
|
86
|
+
│ # Content files
|
|
87
|
+
├── rules/ # Rule files
|
|
88
|
+
├── commands/ # Command files (slash commands)
|
|
89
|
+
├── agents/ # Agent files (subagents)
|
|
90
|
+
├── skills/ # Skill files (skills)
|
|
91
|
+
├── root/ # Any other root dirs or files (Ex: specs/, docs/, tests/, etc.)
|
|
92
|
+
├── AGENTS.md # Platform root file
|
|
93
|
+
├── mcp.jsonc # MCP config file
|
|
94
|
+
│
|
|
95
|
+
│ # Custom files
|
|
96
|
+
└── <other> # Customizable via `platforms.jsonc` overrides/extensions
|
|
97
|
+
```
|
|
83
98
|
|
|
84
|
-
|
|
99
|
+
You can also use the `add` and `remove` commands to add/remove files to/from a package.
|
|
85
100
|
|
|
86
101
|
```bash title="Terminal"
|
|
87
|
-
opkg
|
|
88
|
-
opkg
|
|
102
|
+
opkg add <package> .cursor/commands/clean.md # Adds workspace file or dir to package
|
|
103
|
+
opkg remove <package> commands/clean.md # Removes file or dir from package
|
|
89
104
|
```
|
|
90
105
|
|
|
91
106
|
> [!TIP]
|
|
92
|
-
>
|
|
93
|
-
|
|
94
|
-
### List local packages
|
|
95
|
-
```bash title="Terminal"
|
|
96
|
-
opkg list
|
|
97
|
-
```
|
|
98
|
-
Shows all packages currently saved to the local registry.
|
|
99
|
-
|
|
100
|
-
### Show local package details
|
|
101
|
-
```bash title="Terminal"
|
|
102
|
-
opkg show <package>
|
|
103
|
-
```
|
|
104
|
-
Outputs the details of the package and lists all included files.
|
|
107
|
+
> Learn more about packages from the [packages doc](https://openpackage.dev/docs/packages) on our official docs.
|
|
105
108
|
|
|
106
109
|
### Install packages
|
|
107
110
|
```bash title="Terminal"
|
|
108
111
|
opkg install <package>
|
|
109
112
|
```
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
### Uninstall packages
|
|
113
|
-
```bash title="Terminal"
|
|
114
|
-
opkg uninstall <package>
|
|
115
|
-
```
|
|
116
|
-
Removes all files for the specified package from the codebase at cwd.
|
|
117
|
-
|
|
118
|
-
### Upload packages (push)
|
|
119
|
-
```bash title="Terminal"
|
|
120
|
-
opkg push <package>
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Download packages (pull)
|
|
124
|
-
```bash title="Terminal"
|
|
125
|
-
opkg pull <package>
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### Authenticate CLI
|
|
129
|
-
```bash title="Terminal"
|
|
130
|
-
opkg login
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
> [!TIP]
|
|
134
|
-
> Create an account at [openpackage.dev](https://openpackage.dev) to manage packages remotely.
|
|
135
|
-
|
|
136
|
-
## Use Cases
|
|
137
|
-
|
|
138
|
-
### Reuse files across multiple codebases
|
|
139
|
-
Reuse rules, slash commands, and more across multiple codebases.
|
|
140
|
-
|
|
141
|
-
#### Single file
|
|
142
|
-
```bash title="Terminal"
|
|
143
|
-
# In current codebase
|
|
144
|
-
opkg save f specs/nextjs.md
|
|
145
|
-
# In another codebase
|
|
146
|
-
opkg install f/specs/nextjs.md
|
|
147
|
-
```
|
|
113
|
+
Installs all files from a package into the codebase at cwd, formatted and converted to per platform conventions and into their respective dirs.
|
|
148
114
|
|
|
149
|
-
|
|
115
|
+
The install command supports various package sources:
|
|
150
116
|
```bash title="Terminal"
|
|
151
|
-
#
|
|
152
|
-
opkg
|
|
153
|
-
#
|
|
154
|
-
opkg install
|
|
117
|
+
opkg install essentials # Local/remote registry
|
|
118
|
+
opkg install ../packages/essentials/ # Local path
|
|
119
|
+
opkg install github:https://github.com/enulus/awesome-openpackage.git # GitHub package repo
|
|
120
|
+
opkg install github:https://github.com/anthropics/claude-code.git # GitHub Claude Code Plugins marketplace
|
|
155
121
|
```
|
|
156
122
|
|
|
157
|
-
### Sync files across multiple platforms
|
|
158
|
-
Automatically sync your rules, slash commands, and more across multiple platform.
|
|
159
|
-
```bash title="Terminal"
|
|
160
|
-
# Current codebase has .cursor, .claude, .opencode directories
|
|
161
|
-
opkg save essentials .cursor/commands/essentials
|
|
162
|
-
# OpenPackage CLI automatically generates/syncs the same command files across all platforms.
|
|
163
|
-
|
|
164
|
-
# Before save:
|
|
165
|
-
# .cursor/commands/essentials/cleanup.md
|
|
166
|
-
|
|
167
|
-
# After save:
|
|
168
|
-
# .cursor/commands/essentials/cleanup.md
|
|
169
|
-
# .claude/commands/essentials/cleanup.md
|
|
170
|
-
# .opencode/command/essentials/cleanup.md
|
|
171
|
-
```
|
|
172
123
|
|
|
173
|
-
###
|
|
174
|
-
Create domain specific packages for modular reuse.
|
|
124
|
+
### Uninstall packages
|
|
175
125
|
```bash title="Terminal"
|
|
176
|
-
|
|
177
|
-
opkg save typescript .cursor/rules/typescript
|
|
178
|
-
|
|
179
|
-
# Create scalable-nextjs package
|
|
180
|
-
opkg save scalable-nextjs .cursor/rules/nextjs
|
|
181
|
-
|
|
182
|
-
# Create scalable-nestjs package
|
|
183
|
-
opkg save scalable-nestjs .cursor/rules/nestjs
|
|
184
|
-
|
|
185
|
-
# Create mongodb package
|
|
186
|
-
opkg save mongodb .cursor/rules/mongodb
|
|
187
|
-
|
|
188
|
-
# In your NextJS codebase
|
|
189
|
-
opkg install typescript
|
|
190
|
-
opkg install scalable-nextjs
|
|
191
|
-
|
|
192
|
-
# In your NestJS codebase
|
|
193
|
-
opkg install typescript
|
|
194
|
-
opkg install scalable-nestjs
|
|
195
|
-
opkg install mongodb
|
|
126
|
+
opkg uninstall <package>
|
|
196
127
|
```
|
|
128
|
+
Removes all files for a package from the codebase at cwd.
|
|
197
129
|
|
|
198
130
|
> [!TIP]
|
|
199
131
|
> Learn more by heading over to the [official docs](https://openpackage.dev/docs).
|
|
200
132
|
|
|
201
|
-
## Package Structure
|
|
202
|
-
|
|
203
|
-
Packages are composed using the following directory structure:
|
|
204
|
-
|
|
205
|
-
```txt title="Structure"
|
|
206
|
-
<package>
|
|
207
|
-
├── .openpackage/
|
|
208
|
-
│ ├── package.yml # The OpenPackage manifest, required
|
|
209
|
-
│ ├── rules/
|
|
210
|
-
│ │ └── # Rule files
|
|
211
|
-
│ ├── commands/
|
|
212
|
-
│ │ └── # Command files (slash commands)
|
|
213
|
-
│ ├── agents/
|
|
214
|
-
│ │ └── # Agent files (subagents)
|
|
215
|
-
│ └── skills/
|
|
216
|
-
│ └── # Skill files (Claude Code skills)
|
|
217
|
-
├── <dirs-or-files>
|
|
218
|
-
│ └── # Any other root dirs or files (Ex: specs/, docs/, tests/, etc.)
|
|
219
|
-
├── README.md # Metadata files (LICENSE.md, CONTRIBUTING.md, etc.)
|
|
220
|
-
└── AGENTS.md # Platform root file
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
There are two ways to compose packages:
|
|
224
|
-
- In a project workspace: `opkg init <package>` will create a package in `.openpackage/packages/<packages>/`
|
|
225
|
-
- In a dedicated package codebase: `opkg init` will create a package at cwd (similar to npm, pypi, etc.)
|
|
226
|
-
|
|
227
|
-
> [!TIP]
|
|
228
|
-
> Learn more about packages from the [packages doc](https://openpackage.dev/docs/packages) from our official docs.
|
|
229
|
-
|
|
230
133
|
## Supported Platforms
|
|
231
134
|
|
|
232
135
|
OpenPackage performs installation and platform sync of files for supported AI coding platforms outlined by the table below.
|
|
233
136
|
|
|
234
|
-
| Platform | Directory | Root file | Rules | Commands | Agents | Skills |
|
|
235
|
-
| --- | --- | --- | --- | --- | --- | --- |
|
|
236
|
-
| Antigravity | .agent/ | | rules/ | workflows/ | | |
|
|
237
|
-
| Augment Code | .augment/ | | rules/ | commands/ | | |
|
|
238
|
-
| Claude Code | .claude/ | CLAUDE.md | rules/ | commands/ | agents/ | skills/ |
|
|
239
|
-
| Codex | .codex/ | AGENTS.md | | prompts/ | | |
|
|
240
|
-
| Cursor | .cursor/ | AGENTS.md | rules/ | commands/ | | |
|
|
241
|
-
| Factory | .factory/ | AGENTS.md | | commands/ | droids/ | |
|
|
242
|
-
| Kilo Code | .kilocode/ | AGENTS.md | rules/ | workflows/ | | |
|
|
243
|
-
| Kiro | .kiro/ | | steering/ | | | |
|
|
244
|
-
| OpenCode | .opencode/ | AGENTS.md | | command/ | agent/ | |
|
|
245
|
-
| Qwen Code | .qwen/ | QWEN.md | | | agents/ | |
|
|
246
|
-
| Roo | .roo/ | AGENTS.md | | commands/ | | |
|
|
247
|
-
| Warp | .warp/ | WARP.md | | | |
|
|
248
|
-
| Windsurf | .windsurf/ | | rules/ | | | |
|
|
137
|
+
| Platform | Directory | Root file | Rules | Commands | Agents | Skills | MCP |
|
|
138
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
139
|
+
| Antigravity | .agent/ | | rules/ | workflows/ | | | |
|
|
140
|
+
| Augment Code | .augment/ | | rules/ | commands/ | | | |
|
|
141
|
+
| Claude Code | .claude/ | CLAUDE.md | rules/ | commands/ | agents/ | skills/ | .mcp.json (root) |
|
|
142
|
+
| Codex | .codex/ | AGENTS.md | | prompts/ | | | mcp-servers.toml |
|
|
143
|
+
| Cursor | .cursor/ | AGENTS.md | rules/ | commands/ | agents/ | | mcp.json |
|
|
144
|
+
| Factory | .factory/ | AGENTS.md | | commands/ | droids/ | | mcp.json |
|
|
145
|
+
| Kilo Code | .kilocode/ | AGENTS.md | rules/ | workflows/ | | | mcp.json |
|
|
146
|
+
| Kiro | .kiro/ | | steering/ | | | | settings/mcp.json |
|
|
147
|
+
| OpenCode | .opencode/ | AGENTS.md | | command/ | agent/ | skills/ | opencode.json |
|
|
148
|
+
| Qwen Code | .qwen/ | QWEN.md | | | agents/ | | settings.json |
|
|
149
|
+
| Roo | .roo/ | AGENTS.md | | commands/ | | | mcp.json |
|
|
150
|
+
| Warp | .warp/ | WARP.md | | | | |
|
|
151
|
+
| Windsurf | .windsurf/ | | rules/ | | | | |
|
|
249
152
|
|
|
250
153
|
The built-in `platforms.jsonc` defines supported platforms, but can be overridden by user configs:
|
|
251
154
|
- Global: `~/.openpackage/platforms.jsonc` (`.json`)
|
|
@@ -255,7 +158,7 @@ Deep-merged (local > global > built-in) for per-project customization.
|
|
|
255
158
|
|
|
256
159
|
## Contributing
|
|
257
160
|
|
|
258
|
-
We would love your help building
|
|
161
|
+
We would love your help building a more open source and universally compatible agentic coding ecosystem.
|
|
259
162
|
|
|
260
163
|
Feel free to create [PRs](https://github.com/enulus/OpenPackage/pulls) and [Github issues](https://github.com/enulus/OpenPackage/issues) for:
|
|
261
164
|
- Bugs
|
package/dist/commands/add.js
CHANGED
|
@@ -1,21 +1,45 @@
|
|
|
1
1
|
import { withErrorHandling } from '../utils/errors.js';
|
|
2
|
-
import {
|
|
2
|
+
import { runAddToSourcePipeline } from '../core/add/add-to-source-pipeline.js';
|
|
3
|
+
import { readWorkspaceIndex } from '../utils/workspace-index-yml.js';
|
|
4
|
+
import { formatPathForDisplay } from '../utils/formatters.js';
|
|
3
5
|
export function setupAddCommand(program) {
|
|
4
6
|
program
|
|
5
7
|
.command('add')
|
|
6
|
-
.argument('
|
|
7
|
-
.argument('
|
|
8
|
-
.description('
|
|
9
|
-
'Usage examples:\n' +
|
|
10
|
-
' opkg add my-package .cursor/rules/example.md\n' +
|
|
11
|
-
' opkg add my-package ai/helpers/\n' +
|
|
12
|
-
' opkg add ai/helpers/\n')
|
|
8
|
+
.argument('<package-name>', 'package name')
|
|
9
|
+
.argument('<path>', 'file or directory to add')
|
|
10
|
+
.description('Add files to a mutable package source')
|
|
13
11
|
.option('--platform-specific', 'Save platform-specific variants for platform subdir inputs')
|
|
14
|
-
.
|
|
15
|
-
|
|
12
|
+
.option('--apply', 'Apply changes to workspace immediately (requires package to be installed)')
|
|
13
|
+
.action(withErrorHandling(async (packageName, pathArg, options) => {
|
|
14
|
+
const result = await runAddToSourcePipeline(packageName, pathArg, options);
|
|
16
15
|
if (!result.success) {
|
|
17
16
|
throw new Error(result.error || 'Add operation failed');
|
|
18
17
|
}
|
|
18
|
+
// Provide helpful feedback
|
|
19
|
+
if (result.data) {
|
|
20
|
+
const cwd = process.cwd();
|
|
21
|
+
const { filesAdded, sourcePath, sourceType, packageName: resolvedName } = result.data;
|
|
22
|
+
// Format the path for display using unified formatter
|
|
23
|
+
const displayPath = formatPathForDisplay(sourcePath, cwd);
|
|
24
|
+
console.log(`\n✓ Added ${filesAdded} file${filesAdded !== 1 ? 's' : ''} to ${resolvedName}`);
|
|
25
|
+
console.log(` Path: ${displayPath}`);
|
|
26
|
+
console.log(` Type: ${sourceType} package`);
|
|
27
|
+
if (!options.apply) {
|
|
28
|
+
// Check if package is installed in workspace
|
|
29
|
+
const workspaceIndexRecord = await readWorkspaceIndex(cwd);
|
|
30
|
+
const isInstalled = !!workspaceIndexRecord.index.packages[resolvedName];
|
|
31
|
+
if (isInstalled) {
|
|
32
|
+
console.log(`\n💡 Changes not synced to workspace.`);
|
|
33
|
+
console.log(` To sync changes, run:`);
|
|
34
|
+
console.log(` opkg apply ${resolvedName}`);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
console.log(`\n💡 Package not installed in workspace.`);
|
|
38
|
+
console.log(` To install and sync, run:`);
|
|
39
|
+
console.log(` opkg install ${resolvedName}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
19
43
|
}));
|
|
20
44
|
}
|
|
21
45
|
//# sourceMappingURL=add.js.map
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAA2B,MAAM,uCAAuC,CAAC;AACxG,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC;SAC1C,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;SAC9C,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,qBAAqB,EAAE,4DAA4D,CAAC;SAC3F,MAAM,CAAC,SAAS,EAAE,2EAA2E,CAAC;SAC9F,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,WAA+B,EAAE,OAA2B,EAAE,OAA2B,EAAE,EAAE;QACpH,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,sBAAsB,CAAC,CAAC;QAC1D,CAAC;QAED,2BAA2B;QAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YAEtF,sDAAsD;YACtD,MAAM,WAAW,GAAG,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAE1D,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,QAAQ,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,YAAY,EAAE,CAAC,CAAC;YAC7F,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,UAAU,CAAC,CAAC;YAE7C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,6CAA6C;gBAC7C,MAAM,oBAAoB,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBAC3D,MAAM,WAAW,GAAG,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAExE,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;oBACrD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;oBACxD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { withErrorHandling } from '../utils/errors.js';
|
|
2
|
+
import { runApplyPipeline } from '../core/apply/apply-pipeline.js';
|
|
3
|
+
export function setupApplyCommand(program) {
|
|
4
|
+
program
|
|
5
|
+
.command('apply')
|
|
6
|
+
.description('Apply/sync package across platforms')
|
|
7
|
+
.argument('[package-name]', 'package name to apply (defaults to current/root package)')
|
|
8
|
+
.option('-f, --force', 'overwrite existing files without prompting')
|
|
9
|
+
.option('--dry-run', 'plan apply without writing files')
|
|
10
|
+
.action(withErrorHandling(async (packageName, options) => {
|
|
11
|
+
const result = await runApplyPipeline(packageName, options ?? {});
|
|
12
|
+
if (!result.success)
|
|
13
|
+
throw new Error(result.error || 'Apply operation failed');
|
|
14
|
+
}));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAA6B,MAAM,iCAAiC,CAAC;AAE9F,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qCAAqC,CAAC;SAClD,QAAQ,CAAC,gBAAgB,EAAE,0DAA0D,CAAC;SACtF,MAAM,CAAC,aAAa,EAAE,4CAA4C,CAAC;SACnE,MAAM,CAAC,WAAW,EAAE,kCAAkC,CAAC;SACvD,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,WAA+B,EAAE,OAA6B,EAAE,EAAE;QACzF,MAAM,MAAM,GAAkB,MAAM,gBAAgB,CAAC,WAAW,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,wBAAwB,CAAC,CAAC;IACjF,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
|
package/dist/commands/delete.js
CHANGED
|
@@ -151,7 +151,7 @@ export function setupDeleteCommand(program) {
|
|
|
151
151
|
program
|
|
152
152
|
.command('delete')
|
|
153
153
|
.alias('del')
|
|
154
|
-
.description('Delete
|
|
154
|
+
.description('Delete package from local registry')
|
|
155
155
|
.argument('<package>', 'package name or package@version to delete. Use package@baseVersion to delete all prerelease versions of that base version.')
|
|
156
156
|
.option('-f, --force', 'skip confirmation prompt')
|
|
157
157
|
.option('-i, --interactive', 'interactively select version to delete')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
|
+
import { resolve } from 'path';
|
|
2
|
+
import { formatPathForDisplay } from '../utils/formatters.js';
|
|
1
3
|
import { DIR_PATTERNS, PACKAGE_PATHS } from '../constants/index.js';
|
|
2
4
|
import { runBulkInstallPipeline } from '../core/install/bulk-install-pipeline.js';
|
|
3
5
|
import { runInstallPipeline, determineResolutionMode } from '../core/install/install-pipeline.js';
|
|
4
6
|
import { runPathInstallPipeline } from '../core/install/path-install-pipeline.js';
|
|
5
|
-
import {
|
|
7
|
+
import { loadPackageFromGit } from '../core/install/git-package-loader.js';
|
|
8
|
+
import { inferSourceType } from '../core/install/path-package-loader.js';
|
|
9
|
+
import { detectPluginType } from '../core/install/plugin-detector.js';
|
|
10
|
+
import { parseMarketplace, promptPluginSelection, installMarketplacePlugins } from '../core/install/marketplace-handler.js';
|
|
11
|
+
import { withErrorHandling, ValidationError } from '../utils/errors.js';
|
|
6
12
|
import { normalizePlatforms } from '../utils/platform-mapper.js';
|
|
7
13
|
import { classifyPackageInput } from '../utils/package-input.js';
|
|
14
|
+
import { findExistingPathOrGitSource } from '../utils/install-helpers.js';
|
|
8
15
|
import { logger } from '../utils/logger.js';
|
|
9
16
|
import { normalizePathForProcessing } from '../utils/path-normalization.js';
|
|
10
17
|
function assertTargetDirOutsideMetadata(targetDir) {
|
|
@@ -33,7 +40,111 @@ async function installCommand(packageInput, options) {
|
|
|
33
40
|
}
|
|
34
41
|
// Classify the input to determine if it's a registry name, directory, or tarball
|
|
35
42
|
const classification = await classifyPackageInput(packageInput, cwd);
|
|
43
|
+
// For registry-type inputs (package names), check if it's actually a path/git dependency in openpackage.yml
|
|
44
|
+
// This ensures we respect the manifest's declared source type on subsequent installs
|
|
45
|
+
if (classification.type === 'registry' && classification.name) {
|
|
46
|
+
const existingSource = await findExistingPathOrGitSource(cwd, classification.name);
|
|
47
|
+
if (existingSource) {
|
|
48
|
+
if (existingSource.type === 'git') {
|
|
49
|
+
const subdirPart = existingSource.subdirectory ? `&subdirectory=${existingSource.subdirectory}` : '';
|
|
50
|
+
logger.info(`Using git source from openpackage.yml for '${classification.name}': ${existingSource.url}`);
|
|
51
|
+
console.log(`✓ Using git source from openpackage.yml: ${existingSource.url}${existingSource.ref ? `#${existingSource.ref}` : ''}${subdirPart}`);
|
|
52
|
+
const result = await loadPackageFromGit({
|
|
53
|
+
url: existingSource.url,
|
|
54
|
+
ref: existingSource.ref,
|
|
55
|
+
subdirectory: existingSource.subdirectory
|
|
56
|
+
});
|
|
57
|
+
if (result.isMarketplace) {
|
|
58
|
+
throw new ValidationError(`Package '${classification.name}' is declared as a git source in openpackage.yml, ` +
|
|
59
|
+
`but the repository is a Claude Code plugin marketplace. ` +
|
|
60
|
+
`Marketplaces cannot be used as dependencies via openpackage.yml.`);
|
|
61
|
+
}
|
|
62
|
+
return await runPathInstallPipeline({
|
|
63
|
+
...options,
|
|
64
|
+
sourcePath: result.sourcePath,
|
|
65
|
+
sourceType: 'directory',
|
|
66
|
+
targetDir,
|
|
67
|
+
gitUrl: existingSource.url,
|
|
68
|
+
gitRef: existingSource.ref,
|
|
69
|
+
gitSubdirectory: existingSource.subdirectory
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else if (existingSource.type === 'path') {
|
|
73
|
+
logger.info(`Using path source from openpackage.yml for '${classification.name}': ${existingSource.path}`);
|
|
74
|
+
const displayPath = formatPathForDisplay(existingSource.path, cwd);
|
|
75
|
+
console.log(`✓ Using path source from openpackage.yml: ${displayPath}`);
|
|
76
|
+
const resolvedPath = resolve(cwd, existingSource.path);
|
|
77
|
+
const sourceType = inferSourceType(existingSource.path);
|
|
78
|
+
return await runPathInstallPipeline({
|
|
79
|
+
...options,
|
|
80
|
+
sourcePath: resolvedPath,
|
|
81
|
+
sourceType,
|
|
82
|
+
targetDir
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (classification.type === 'git') {
|
|
88
|
+
const result = await loadPackageFromGit({
|
|
89
|
+
url: classification.gitUrl,
|
|
90
|
+
ref: classification.gitRef,
|
|
91
|
+
subdirectory: classification.gitSubdirectory
|
|
92
|
+
});
|
|
93
|
+
// Check if this is a marketplace
|
|
94
|
+
if (result.isMarketplace) {
|
|
95
|
+
logger.info('Detected Claude Code marketplace, prompting for plugin selection', {
|
|
96
|
+
url: classification.gitUrl
|
|
97
|
+
});
|
|
98
|
+
const pluginDetection = await detectPluginType(result.sourcePath);
|
|
99
|
+
if (!pluginDetection.manifestPath) {
|
|
100
|
+
throw new ValidationError('Marketplace manifest not found');
|
|
101
|
+
}
|
|
102
|
+
// Parse marketplace and prompt for selection
|
|
103
|
+
const marketplace = await parseMarketplace(pluginDetection.manifestPath);
|
|
104
|
+
const selectedPlugins = await promptPluginSelection(marketplace);
|
|
105
|
+
if (selectedPlugins.length === 0) {
|
|
106
|
+
console.log('No plugins selected. Installation cancelled.');
|
|
107
|
+
return { success: true };
|
|
108
|
+
}
|
|
109
|
+
// Install selected plugins
|
|
110
|
+
return await installMarketplacePlugins(result.sourcePath, marketplace, selectedPlugins, classification.gitUrl, classification.gitRef, options);
|
|
111
|
+
}
|
|
112
|
+
// Not a marketplace, install as regular package/plugin
|
|
113
|
+
return await runPathInstallPipeline({
|
|
114
|
+
...options,
|
|
115
|
+
sourcePath: result.sourcePath,
|
|
116
|
+
sourceType: 'directory',
|
|
117
|
+
targetDir,
|
|
118
|
+
gitUrl: classification.gitUrl,
|
|
119
|
+
gitRef: classification.gitRef,
|
|
120
|
+
gitSubdirectory: classification.gitSubdirectory
|
|
121
|
+
});
|
|
122
|
+
}
|
|
36
123
|
if (classification.type === 'directory' || classification.type === 'tarball') {
|
|
124
|
+
// Display source comparison info if available
|
|
125
|
+
if (classification.sourceComparisonInfo) {
|
|
126
|
+
displayPackageSourceResolution(classification.sourceComparisonInfo);
|
|
127
|
+
}
|
|
128
|
+
// Check if this is a marketplace (only for directories, not tarballs)
|
|
129
|
+
if (classification.type === 'directory') {
|
|
130
|
+
const pluginDetection = await detectPluginType(classification.resolvedPath);
|
|
131
|
+
if (pluginDetection.isPlugin && pluginDetection.type === 'marketplace') {
|
|
132
|
+
logger.info('Detected Claude Code marketplace from local path, prompting for plugin selection', {
|
|
133
|
+
path: classification.resolvedPath
|
|
134
|
+
});
|
|
135
|
+
// Parse marketplace and prompt for selection
|
|
136
|
+
const marketplace = await parseMarketplace(pluginDetection.manifestPath);
|
|
137
|
+
const selectedPlugins = await promptPluginSelection(marketplace);
|
|
138
|
+
if (selectedPlugins.length === 0) {
|
|
139
|
+
console.log('No plugins selected. Installation cancelled.');
|
|
140
|
+
return { success: true };
|
|
141
|
+
}
|
|
142
|
+
// Install selected plugins (no git URL for local paths)
|
|
143
|
+
return await installMarketplacePlugins(classification.resolvedPath, marketplace, selectedPlugins, classification.resolvedPath, // Use path as "url" for tracking
|
|
144
|
+
undefined, // No git ref for local paths
|
|
145
|
+
options);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
37
148
|
return await runPathInstallPipeline({
|
|
38
149
|
...options,
|
|
39
150
|
sourcePath: classification.resolvedPath,
|
|
@@ -51,12 +162,58 @@ async function installCommand(packageInput, options) {
|
|
|
51
162
|
targetDir
|
|
52
163
|
});
|
|
53
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Display user-friendly information about package source resolution
|
|
167
|
+
*/
|
|
168
|
+
function displayPackageSourceResolution(info) {
|
|
169
|
+
const { candidates, selected, reason } = info;
|
|
170
|
+
// Workspace override - simple message
|
|
171
|
+
if (reason === 'workspace-override') {
|
|
172
|
+
console.log(`✓ Found ${selected.packageName} in workspace packages`);
|
|
173
|
+
console.log(`💡 Workspace packages always override global/registry`);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// Single source - simple message
|
|
177
|
+
if (reason === 'only-source' && candidates.length === 1) {
|
|
178
|
+
const sourceType = selected.type === 'global' ? 'global packages' :
|
|
179
|
+
selected.type === 'registry' ? 'registry' : 'workspace packages';
|
|
180
|
+
console.log(`✓ Found ${selected.packageName} in ${sourceType}`);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// Multiple sources - show comparison
|
|
184
|
+
if (candidates.length > 1) {
|
|
185
|
+
console.log(`Resolving ${selected.packageName}...`);
|
|
186
|
+
for (const candidate of candidates) {
|
|
187
|
+
const label = candidate.type === 'global' ? 'Global packages' : 'Registry';
|
|
188
|
+
const suffix = candidate.type === 'global' ? ' (mutable)' : ' (stable)';
|
|
189
|
+
console.log(` • ${label}: ${candidate.version}${suffix}`);
|
|
190
|
+
}
|
|
191
|
+
const sourceLabel = selected.type === 'global' ? 'global packages' : 'registry';
|
|
192
|
+
if (reason === 'newer-version') {
|
|
193
|
+
console.log(`✓ Using ${selected.packageName}@${selected.version} from ${sourceLabel} (newer version)`);
|
|
194
|
+
// Warn about outdated global if registry was selected
|
|
195
|
+
if (selected.type === 'registry') {
|
|
196
|
+
const global = candidates.find((c) => c.type === 'global');
|
|
197
|
+
if (global) {
|
|
198
|
+
console.log(`⚠️ Global packages has older version (${global.version})`);
|
|
199
|
+
console.log(`💡 To update global: cd ~/.openpackage/packages/${selected.packageName} && opkg pack`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
else if (reason === 'same-version-prefer-mutable') {
|
|
204
|
+
console.log(`✓ Using ${selected.packageName}@${selected.version} from ${sourceLabel} (same version, prefer mutable)`);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
console.log(`✓ Using ${selected.packageName}@${selected.version} from ${sourceLabel}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
54
211
|
export function setupInstallCommand(program) {
|
|
55
212
|
program
|
|
56
213
|
.command('install')
|
|
57
214
|
.alias('i')
|
|
58
|
-
.description('Install packages
|
|
59
|
-
.argument('[package-name]', 'name of the package to install (optional - installs all from
|
|
215
|
+
.description('Install packages to workspace')
|
|
216
|
+
.argument('[package-name]', 'name of the package to install (optional - installs all from openpackage.yml if not specified). Supports package@version syntax.')
|
|
60
217
|
.option('--dry-run', 'preview changes without applying them')
|
|
61
218
|
.option('--force', 'overwrite existing files')
|
|
62
219
|
.option('--conflicts <strategy>', 'conflict handling strategy: keep-both, overwrite, skip, or ask')
|
|
@@ -64,7 +221,6 @@ export function setupInstallCommand(program) {
|
|
|
64
221
|
.option('--platforms <platforms...>', 'prepare specific platforms (e.g., cursor claudecode opencode)')
|
|
65
222
|
.option('--remote', 'pull and install from remote registry, ignoring local versions')
|
|
66
223
|
.option('--local', 'resolve and install using only local registry versions, skipping remote metadata and pulls')
|
|
67
|
-
.option('--stable', 'prefer the latest stable version when resolving; ignore newer prerelease/WIP versions if a satisfying stable exists')
|
|
68
224
|
.option('--profile <profile>', 'profile to use for authentication')
|
|
69
225
|
.option('--api-key <key>', 'API key for authentication (overrides profile)')
|
|
70
226
|
.action(withErrorHandling(async (packageName, options) => {
|