opkg 0.6.2 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -170
- 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 +165 -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 +91 -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/directory.js +18 -18
- package/dist/core/directory.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 +327 -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 +38 -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 +1176 -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 +38 -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 +262 -0
- package/dist/core/install/marketplace-handler.js.map +1 -0
- package/dist/core/install/path-install-pipeline.js +46 -28
- package/dist/core/install/path-install-pipeline.js.map +1 -1
- package/dist/core/install/path-package-loader.js +37 -16
- package/dist/core/install/path-package-loader.js.map +1 -1
- package/dist/core/install/plugin-detector.js +70 -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 +201 -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-cache.js +196 -0
- package/dist/utils/git-cache.js.map +1 -0
- 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 +149 -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/git-url-parser.js +113 -0
- package/dist/utils/git-url-parser.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 +48 -4
- 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 +68 -28
- 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 +34 -24
- 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/plugin-naming.js +111 -0
- package/dist/utils/plugin-naming.js.map +1 -0
- 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 +31 -6
- 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 +12 -4
- package/specs/install/git-cache.md +403 -0
- package/specs/install/git-sources.md +318 -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 +771 -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 +523 -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.
|
|
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
|
+
## Use cases
|
|
46
48
|
|
|
47
|
-
|
|
49
|
+
- Install Claude Code Plugins to any coding platform
|
|
50
|
+
- Sync specs, rules, commands, agents, skills, and MCPs across platforms
|
|
51
|
+
- Reuse files and configs across multiple codebases
|
|
52
|
+
- Modular management of configs and specs
|
|
53
|
+
|
|
54
|
+
## How it works
|
|
55
|
+
|
|
56
|
+
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
57
|
|
|
49
58
|
1. Declare a package
|
|
50
|
-
2. Add
|
|
51
|
-
3.
|
|
59
|
+
2. Add rules, commands, subagents, skills, mcp configs, specs, docs etc.
|
|
60
|
+
3. Install and sync to multiple codebases
|
|
52
61
|
|
|
53
62
|
## Quick start
|
|
54
63
|
|
|
@@ -59,193 +68,87 @@ npm
|
|
|
59
68
|
npm install -g opkg
|
|
60
69
|
```
|
|
61
70
|
|
|
62
|
-
### Create a package
|
|
63
|
-
|
|
64
|
-
```bash title="Terminal"
|
|
65
|
-
opkg init # Initialize the workspace as a package, or
|
|
66
|
-
opkg init <package> # Initialize a package under cwd `.openpackage/packages`
|
|
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.
|
|
76
|
-
|
|
77
|
-
```bash title="Terminal"
|
|
78
|
-
opkg add <package> <path-to-dir-or-file>
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
> [!TIP]
|
|
82
|
-
> Learn how to compose packages by reading the [packages doc](https://openpackage.dev/docs/packages) from our official docs.
|
|
83
|
-
|
|
84
|
-
Use `save` or `pack` to save the set of dirs and files as a package to your local registry for reuse and distribution.
|
|
85
|
-
|
|
86
|
-
```bash title="Terminal"
|
|
87
|
-
opkg save [package] # Prerelease/unversioned
|
|
88
|
-
opkg pack [package] # Stable releases
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
> [!TIP]
|
|
92
|
-
> Packages are saved to your local machine at `~/.openpackage/registry/`.
|
|
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.
|
|
105
|
-
|
|
106
71
|
### Install packages
|
|
107
72
|
```bash title="Terminal"
|
|
108
73
|
opkg install <package>
|
|
109
74
|
```
|
|
110
|
-
|
|
75
|
+
Installs all files from a package into the codebase at cwd, formatted and converted to per platform conventions and into their respective dirs.
|
|
111
76
|
|
|
112
|
-
|
|
77
|
+
The install command supports various package sources:
|
|
113
78
|
```bash title="Terminal"
|
|
114
|
-
opkg
|
|
79
|
+
opkg install essentials # Local/remote registry
|
|
80
|
+
opkg install ../packages/essentials/ # Local path
|
|
81
|
+
opkg install git:https://github.com/enulus/awesome-openpackage.git # GitHub package repo
|
|
82
|
+
opkg install github:anthropics/claude-code # GitHub Claude Code Plugins marketplace
|
|
83
|
+
opkg install github:anthropics/claude-code#subdirectory=plugins/commit-commands # GitHub Claude Code Plugin
|
|
115
84
|
```
|
|
116
|
-
Removes all files for the specified package from the codebase at cwd.
|
|
117
85
|
|
|
118
|
-
###
|
|
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
|
|
86
|
+
### Uninstall packages
|
|
129
87
|
```bash title="Terminal"
|
|
130
|
-
opkg
|
|
88
|
+
opkg uninstall <package>
|
|
131
89
|
```
|
|
90
|
+
Removes all files for a package from the codebase at cwd.
|
|
132
91
|
|
|
133
92
|
> [!TIP]
|
|
134
|
-
>
|
|
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
|
-
```
|
|
148
|
-
|
|
149
|
-
#### Multiple files via package
|
|
150
|
-
```bash title="Terminal"
|
|
151
|
-
# In current codebase
|
|
152
|
-
opkg save essentials
|
|
153
|
-
# In another codebase
|
|
154
|
-
opkg install essentials
|
|
155
|
-
```
|
|
156
|
-
|
|
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
|
|
93
|
+
> Learn more by heading over to the [official docs](https://openpackage.dev/docs).
|
|
166
94
|
|
|
167
|
-
|
|
168
|
-
# .cursor/commands/essentials/cleanup.md
|
|
169
|
-
# .claude/commands/essentials/cleanup.md
|
|
170
|
-
# .opencode/command/essentials/cleanup.md
|
|
171
|
-
```
|
|
95
|
+
### Compose a package
|
|
172
96
|
|
|
173
|
-
### Modular management of files
|
|
174
|
-
Create domain specific packages for modular reuse.
|
|
175
97
|
```bash title="Terminal"
|
|
176
|
-
|
|
177
|
-
|
|
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
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
> [!TIP]
|
|
199
|
-
> Learn more by heading over to the [official docs](https://openpackage.dev/docs).
|
|
200
|
-
|
|
201
|
-
## Package Structure
|
|
98
|
+
opkg new <package>
|
|
99
|
+
```
|
|
202
100
|
|
|
203
|
-
|
|
101
|
+
Then manually add/update/remove files to and from the package following this structure:
|
|
204
102
|
|
|
205
103
|
```txt title="Structure"
|
|
206
104
|
<package>
|
|
207
|
-
|
|
208
|
-
│
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
│
|
|
212
|
-
│
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
├──
|
|
218
|
-
|
|
219
|
-
├──
|
|
220
|
-
|
|
105
|
+
│
|
|
106
|
+
│ # Package files
|
|
107
|
+
├── openpackage.yml # The OpenPackage manifest, required
|
|
108
|
+
├── README.md # LICENSE.md, CONTRIBUTING.md, etc.
|
|
109
|
+
│
|
|
110
|
+
│ # Content files
|
|
111
|
+
├── rules/ # Rule files
|
|
112
|
+
├── commands/ # Command files (slash commands)
|
|
113
|
+
├── agents/ # Agent files (subagents)
|
|
114
|
+
├── skills/ # Skill files (skills)
|
|
115
|
+
├── root/ # Any other root dirs or files (Ex: specs/, docs/, tests/, etc.)
|
|
116
|
+
├── AGENTS.md # Platform root file
|
|
117
|
+
├── mcp.jsonc # MCP config file
|
|
118
|
+
│
|
|
119
|
+
│ # Custom files
|
|
120
|
+
└── <other> # Customizable via `platforms.jsonc` overrides/extensions
|
|
221
121
|
```
|
|
222
122
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
123
|
+
You can also use the `add` and `remove` commands to add/remove files to/from a package.
|
|
124
|
+
|
|
125
|
+
```bash title="Terminal"
|
|
126
|
+
opkg add <package> .cursor/commands/clean.md # Adds workspace file or dir to package
|
|
127
|
+
opkg remove <package> commands/clean.md # Removes file or dir from package
|
|
128
|
+
```
|
|
226
129
|
|
|
227
130
|
> [!TIP]
|
|
228
|
-
> Learn more about packages from the [packages doc](https://openpackage.dev/docs/packages)
|
|
131
|
+
> Learn more about packages from the [packages doc](https://openpackage.dev/docs/packages) on our official docs.
|
|
229
132
|
|
|
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/ | | | config.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,116 @@ 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.repoPath,
|
|
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 (pass context for fallback naming)
|
|
103
|
+
const marketplace = await parseMarketplace(pluginDetection.manifestPath, {
|
|
104
|
+
gitUrl: classification.gitUrl,
|
|
105
|
+
repoPath: result.repoPath
|
|
106
|
+
});
|
|
107
|
+
const selectedPlugins = await promptPluginSelection(marketplace);
|
|
108
|
+
if (selectedPlugins.length === 0) {
|
|
109
|
+
console.log('No plugins selected. Installation cancelled.');
|
|
110
|
+
return { success: true };
|
|
111
|
+
}
|
|
112
|
+
// Install selected plugins
|
|
113
|
+
return await installMarketplacePlugins(result.repoPath, marketplace, selectedPlugins, classification.gitUrl, classification.gitRef, options);
|
|
114
|
+
}
|
|
115
|
+
// Not a marketplace, install as regular package/plugin
|
|
116
|
+
return await runPathInstallPipeline({
|
|
117
|
+
...options,
|
|
118
|
+
sourcePath: result.repoPath,
|
|
119
|
+
sourceType: 'directory',
|
|
120
|
+
targetDir,
|
|
121
|
+
gitUrl: classification.gitUrl,
|
|
122
|
+
gitRef: classification.gitRef,
|
|
123
|
+
gitSubdirectory: classification.gitSubdirectory
|
|
124
|
+
});
|
|
125
|
+
}
|
|
36
126
|
if (classification.type === 'directory' || classification.type === 'tarball') {
|
|
127
|
+
// Display source comparison info if available
|
|
128
|
+
if (classification.sourceComparisonInfo) {
|
|
129
|
+
displayPackageSourceResolution(classification.sourceComparisonInfo);
|
|
130
|
+
}
|
|
131
|
+
// Check if this is a marketplace (only for directories, not tarballs)
|
|
132
|
+
if (classification.type === 'directory') {
|
|
133
|
+
const pluginDetection = await detectPluginType(classification.resolvedPath);
|
|
134
|
+
if (pluginDetection.isPlugin && pluginDetection.type === 'marketplace') {
|
|
135
|
+
logger.info('Detected Claude Code marketplace from local path, prompting for plugin selection', {
|
|
136
|
+
path: classification.resolvedPath
|
|
137
|
+
});
|
|
138
|
+
// Parse marketplace and prompt for selection (pass context for fallback naming)
|
|
139
|
+
const marketplace = await parseMarketplace(pluginDetection.manifestPath, {
|
|
140
|
+
repoPath: classification.resolvedPath
|
|
141
|
+
});
|
|
142
|
+
const selectedPlugins = await promptPluginSelection(marketplace);
|
|
143
|
+
if (selectedPlugins.length === 0) {
|
|
144
|
+
console.log('No plugins selected. Installation cancelled.');
|
|
145
|
+
return { success: true };
|
|
146
|
+
}
|
|
147
|
+
// Install selected plugins (no git URL for local paths)
|
|
148
|
+
return await installMarketplacePlugins(classification.resolvedPath, marketplace, selectedPlugins, classification.resolvedPath, // Use path as "url" for tracking
|
|
149
|
+
undefined, // No git ref for local paths
|
|
150
|
+
options);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
37
153
|
return await runPathInstallPipeline({
|
|
38
154
|
...options,
|
|
39
155
|
sourcePath: classification.resolvedPath,
|
|
@@ -51,12 +167,58 @@ async function installCommand(packageInput, options) {
|
|
|
51
167
|
targetDir
|
|
52
168
|
});
|
|
53
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Display user-friendly information about package source resolution
|
|
172
|
+
*/
|
|
173
|
+
function displayPackageSourceResolution(info) {
|
|
174
|
+
const { candidates, selected, reason } = info;
|
|
175
|
+
// Workspace override - simple message
|
|
176
|
+
if (reason === 'workspace-override') {
|
|
177
|
+
console.log(`✓ Found ${selected.packageName} in workspace packages`);
|
|
178
|
+
console.log(`💡 Workspace packages always override global/registry`);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
// Single source - simple message
|
|
182
|
+
if (reason === 'only-source' && candidates.length === 1) {
|
|
183
|
+
const sourceType = selected.type === 'global' ? 'global packages' :
|
|
184
|
+
selected.type === 'registry' ? 'registry' : 'workspace packages';
|
|
185
|
+
console.log(`✓ Found ${selected.packageName} in ${sourceType}`);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
// Multiple sources - show comparison
|
|
189
|
+
if (candidates.length > 1) {
|
|
190
|
+
console.log(`Resolving ${selected.packageName}...`);
|
|
191
|
+
for (const candidate of candidates) {
|
|
192
|
+
const label = candidate.type === 'global' ? 'Global packages' : 'Registry';
|
|
193
|
+
const suffix = candidate.type === 'global' ? ' (mutable)' : ' (stable)';
|
|
194
|
+
console.log(` • ${label}: ${candidate.version}${suffix}`);
|
|
195
|
+
}
|
|
196
|
+
const sourceLabel = selected.type === 'global' ? 'global packages' : 'registry';
|
|
197
|
+
if (reason === 'newer-version') {
|
|
198
|
+
console.log(`✓ Using ${selected.packageName}@${selected.version} from ${sourceLabel} (newer version)`);
|
|
199
|
+
// Warn about outdated global if registry was selected
|
|
200
|
+
if (selected.type === 'registry') {
|
|
201
|
+
const global = candidates.find((c) => c.type === 'global');
|
|
202
|
+
if (global) {
|
|
203
|
+
console.log(`⚠️ Global packages has older version (${global.version})`);
|
|
204
|
+
console.log(`💡 To update global: cd ~/.openpackage/packages/${selected.packageName} && opkg pack`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else if (reason === 'same-version-prefer-mutable') {
|
|
209
|
+
console.log(`✓ Using ${selected.packageName}@${selected.version} from ${sourceLabel} (same version, prefer mutable)`);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
console.log(`✓ Using ${selected.packageName}@${selected.version} from ${sourceLabel}`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
54
216
|
export function setupInstallCommand(program) {
|
|
55
217
|
program
|
|
56
218
|
.command('install')
|
|
57
219
|
.alias('i')
|
|
58
|
-
.description('Install packages
|
|
59
|
-
.argument('[package-name]', 'name of the package to install (optional - installs all from
|
|
220
|
+
.description('Install packages to workspace')
|
|
221
|
+
.argument('[package-name]', 'name of the package to install (optional - installs all from openpackage.yml if not specified). Supports package@version syntax.')
|
|
60
222
|
.option('--dry-run', 'preview changes without applying them')
|
|
61
223
|
.option('--force', 'overwrite existing files')
|
|
62
224
|
.option('--conflicts <strategy>', 'conflict handling strategy: keep-both, overwrite, skip, or ask')
|
|
@@ -64,7 +226,6 @@ export function setupInstallCommand(program) {
|
|
|
64
226
|
.option('--platforms <platforms...>', 'prepare specific platforms (e.g., cursor claudecode opencode)')
|
|
65
227
|
.option('--remote', 'pull and install from remote registry, ignoring local versions')
|
|
66
228
|
.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
229
|
.option('--profile <profile>', 'profile to use for authentication')
|
|
69
230
|
.option('--api-key <key>', 'API key for authentication (overrides profile)')
|
|
70
231
|
.action(withErrorHandling(async (packageName, options) => {
|