opkg 0.6.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -186
- package/assets/openpackage_ascii_dark.png +0 -0
- package/assets/openpackage_ascii_light.png +0 -0
- package/dist/commands/add.js +34 -10
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/apply.js +16 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/delete.js +1 -1
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/install.js +177 -8
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.js +2 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.js +1 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/new.js +125 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/pack.js +7 -13
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/pull.js +1 -1
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.js +1 -1
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/remove.js +63 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/save.js +11 -17
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/set.js +33 -0
- package/dist/commands/set.js.map +1 -0
- package/dist/commands/show.js +16 -94
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/status.js +26 -701
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/uninstall.js +14 -427
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/constants/index.js +72 -16
- package/dist/constants/index.js.map +1 -1
- package/dist/core/add/add-conflict-handler.js +1 -8
- package/dist/core/add/add-conflict-handler.js.map +1 -1
- package/dist/core/add/add-pipeline.js +12 -10
- package/dist/core/add/add-pipeline.js.map +1 -1
- package/dist/core/add/add-to-source-pipeline.js +123 -0
- package/dist/core/add/add-to-source-pipeline.js.map +1 -0
- package/dist/core/add/package-index-updater.js +77 -78
- package/dist/core/add/package-index-updater.js.map +1 -1
- package/dist/core/add/platform-path-transformer.js +6 -4
- package/dist/core/add/platform-path-transformer.js.map +1 -1
- package/dist/core/add/source-collector.js +2 -3
- package/dist/core/add/source-collector.js.map +1 -1
- package/dist/core/apply/apply-pipeline.js +110 -0
- package/dist/core/apply/apply-pipeline.js.map +1 -0
- package/dist/core/dependency-resolver.js +263 -21
- package/dist/core/dependency-resolver.js.map +1 -1
- package/dist/core/discovery/file-discovery.js +1 -2
- package/dist/core/discovery/file-discovery.js.map +1 -1
- package/dist/core/discovery/platform-files-discovery.js +33 -18
- package/dist/core/discovery/platform-files-discovery.js.map +1 -1
- package/dist/core/flows/flow-executor.js +974 -0
- package/dist/core/flows/flow-executor.js.map +1 -0
- package/dist/core/flows/flow-inverter.js +442 -0
- package/dist/core/flows/flow-inverter.js.map +1 -0
- package/dist/core/flows/flow-key-extractor.js +101 -0
- package/dist/core/flows/flow-key-extractor.js.map +1 -0
- package/dist/core/flows/flow-key-mapper.js +382 -0
- package/dist/core/flows/flow-key-mapper.js.map +1 -0
- package/dist/core/flows/flow-transforms.js +632 -0
- package/dist/core/flows/flow-transforms.js.map +1 -0
- package/dist/core/flows/map-pipeline/context.js +73 -0
- package/dist/core/flows/map-pipeline/context.js.map +1 -0
- package/dist/core/flows/map-pipeline/index.js +156 -0
- package/dist/core/flows/map-pipeline/index.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/copy.js +104 -0
- package/dist/core/flows/map-pipeline/operations/copy.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/pipe.js +70 -0
- package/dist/core/flows/map-pipeline/operations/pipe.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/rename.js +102 -0
- package/dist/core/flows/map-pipeline/operations/rename.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/set.js +50 -0
- package/dist/core/flows/map-pipeline/operations/set.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/switch.js +79 -0
- package/dist/core/flows/map-pipeline/operations/switch.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/transform.js +543 -0
- package/dist/core/flows/map-pipeline/operations/transform.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/unset.js +65 -0
- package/dist/core/flows/map-pipeline/operations/unset.js.map +1 -0
- package/dist/core/flows/map-pipeline/types.js +8 -0
- package/dist/core/flows/map-pipeline/types.js.map +1 -0
- package/dist/core/flows/map-pipeline/utils.js +278 -0
- package/dist/core/flows/map-pipeline/utils.js.map +1 -0
- package/dist/core/flows/platform-converter.js +328 -0
- package/dist/core/flows/platform-converter.js.map +1 -0
- package/dist/core/flows/source-resolver.js +192 -0
- package/dist/core/flows/source-resolver.js.map +1 -0
- package/dist/core/flows/toml-domain-transforms.js +23 -0
- package/dist/core/flows/toml-domain-transforms.js.map +1 -0
- package/dist/core/install/bulk-install-pipeline.js +68 -7
- package/dist/core/install/bulk-install-pipeline.js.map +1 -1
- package/dist/core/install/canonical-plan.js +3 -3
- package/dist/core/install/canonical-plan.js.map +1 -1
- package/dist/core/install/dry-run.js +3 -3
- package/dist/core/install/dry-run.js.map +1 -1
- package/dist/core/install/flow-based-installer.js +1158 -0
- package/dist/core/install/flow-based-installer.js.map +1 -0
- package/dist/core/install/flow-workspace-tracker.js +111 -0
- package/dist/core/install/flow-workspace-tracker.js.map +1 -0
- package/dist/core/install/format-detector.js +228 -0
- package/dist/core/install/format-detector.js.map +1 -0
- package/dist/core/install/git-package-loader.js +20 -0
- package/dist/core/install/git-package-loader.js.map +1 -0
- package/dist/core/install/install-errors.js +1 -1
- package/dist/core/install/install-errors.js.map +1 -1
- package/dist/core/install/install-flow.js +34 -14
- package/dist/core/install/install-flow.js.map +1 -1
- package/dist/core/install/install-pipeline.js +52 -17
- package/dist/core/install/install-pipeline.js.map +1 -1
- package/dist/core/install/install-reporting.js +26 -8
- package/dist/core/install/install-reporting.js.map +1 -1
- package/dist/core/install/local-source-resolution.js +103 -0
- package/dist/core/install/local-source-resolution.js.map +1 -0
- package/dist/core/install/marketplace-handler.js +221 -0
- package/dist/core/install/marketplace-handler.js.map +1 -0
- package/dist/core/install/path-install-pipeline.js +241 -0
- package/dist/core/install/path-install-pipeline.js.map +1 -0
- package/dist/core/install/path-package-loader.js +116 -0
- package/dist/core/install/path-package-loader.js.map +1 -0
- package/dist/core/install/plugin-detector.js +72 -0
- package/dist/core/install/plugin-detector.js.map +1 -0
- package/dist/core/install/plugin-to-universal-converter.js +218 -0
- package/dist/core/install/plugin-to-universal-converter.js.map +1 -0
- package/dist/core/install/plugin-transformer.js +191 -0
- package/dist/core/install/plugin-transformer.js.map +1 -0
- package/dist/core/install/version-selection.js +1 -1
- package/dist/core/install/version-selection.js.map +1 -1
- package/dist/core/openpackage.js +40 -22
- package/dist/core/openpackage.js.map +1 -1
- package/dist/core/pack/pack-output.js +62 -0
- package/dist/core/pack/pack-output.js.map +1 -0
- package/dist/core/pack/pack-pipeline.js +186 -0
- package/dist/core/pack/pack-pipeline.js.map +1 -0
- package/dist/core/package-context.js +45 -70
- package/dist/core/package-context.js.map +1 -1
- package/dist/core/package-creation.js +203 -0
- package/dist/core/package-creation.js.map +1 -0
- package/dist/core/package.js +20 -6
- package/dist/core/package.js.map +1 -1
- package/dist/core/platforms.js +665 -209
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/push/push-context.js +1 -1
- package/dist/core/push/push-context.js.map +1 -1
- package/dist/core/push/push-upload.js +2 -2
- package/dist/core/push/push-upload.js.map +1 -1
- package/dist/core/registry.js +6 -6
- package/dist/core/registry.js.map +1 -1
- package/dist/core/remote-pull.js +2 -2
- package/dist/core/remote-pull.js.map +1 -1
- package/dist/core/remove/removal-collector.js +52 -0
- package/dist/core/remove/removal-collector.js.map +1 -0
- package/dist/core/remove/removal-confirmation.js +39 -0
- package/dist/core/remove/removal-confirmation.js.map +1 -0
- package/dist/core/remove/remove-from-source-pipeline.js +173 -0
- package/dist/core/remove/remove-from-source-pipeline.js.map +1 -0
- package/dist/core/save/constants.js +3 -3
- package/dist/core/save/constants.js.map +1 -1
- package/dist/core/save/flow-based-saver.js +270 -0
- package/dist/core/save/flow-based-saver.js.map +1 -0
- package/dist/core/save/name-resolution.js +1 -1
- package/dist/core/save/name-resolution.js.map +1 -1
- package/dist/core/save/package-yml-generator.js +4 -5
- package/dist/core/save/package-yml-generator.js.map +1 -1
- package/dist/core/save/save-candidate-builder.js +215 -0
- package/dist/core/save/save-candidate-builder.js.map +1 -0
- package/dist/core/save/save-candidate-loader.js +12 -11
- package/dist/core/save/save-candidate-loader.js.map +1 -1
- package/dist/core/save/save-conflict-analyzer.js +150 -0
- package/dist/core/save/save-conflict-analyzer.js.map +1 -0
- package/dist/core/save/save-conflict-resolution.js +28 -14
- package/dist/core/save/save-conflict-resolution.js.map +1 -1
- package/dist/core/save/save-conflict-resolver.js +31 -275
- package/dist/core/save/save-conflict-resolver.js.map +1 -1
- package/dist/core/save/save-group-builder.js +52 -0
- package/dist/core/save/save-group-builder.js.map +1 -0
- package/dist/core/save/save-interactive-resolver.js +190 -0
- package/dist/core/save/save-interactive-resolver.js.map +1 -0
- package/dist/core/save/save-pipeline.js +58 -34
- package/dist/core/save/save-pipeline.js.map +1 -1
- package/dist/core/save/save-platform-handler.js +53 -0
- package/dist/core/save/save-platform-handler.js.map +1 -0
- package/dist/core/save/save-resolution-executor.js +145 -0
- package/dist/core/save/save-resolution-executor.js.map +1 -0
- package/dist/core/save/save-result-reporter.js +167 -0
- package/dist/core/save/save-result-reporter.js.map +1 -0
- package/dist/core/save/save-to-source-pipeline.js +154 -0
- package/dist/core/save/save-to-source-pipeline.js.map +1 -0
- package/dist/core/save/save-versioning.js +4 -4
- package/dist/core/save/save-versioning.js.map +1 -1
- package/dist/core/save/save-write-coordinator.js +204 -0
- package/dist/core/save/save-write-coordinator.js.map +1 -0
- package/dist/core/save/save-yml-resolution.js +28 -216
- package/dist/core/save/save-yml-resolution.js.map +1 -1
- package/dist/core/save/workspace-rename.js +7 -8
- package/dist/core/save/workspace-rename.js.map +1 -1
- package/dist/core/set/set-output.js +72 -0
- package/dist/core/set/set-output.js.map +1 -0
- package/dist/core/set/set-pipeline.js +361 -0
- package/dist/core/set/set-pipeline.js.map +1 -0
- package/dist/core/set/set-types.js +5 -0
- package/dist/core/set/set-types.js.map +1 -0
- package/dist/core/show/package-resolver.js +257 -0
- package/dist/core/show/package-resolver.js.map +1 -0
- package/dist/core/show/scope-discovery.js +165 -0
- package/dist/core/show/scope-discovery.js.map +1 -0
- package/dist/core/show/show-output.js +168 -0
- package/dist/core/show/show-output.js.map +1 -0
- package/dist/core/show/show-pipeline.js +113 -0
- package/dist/core/show/show-pipeline.js.map +1 -0
- package/dist/core/show/show-types.js +5 -0
- package/dist/core/show/show-types.js.map +1 -0
- package/dist/core/source-resolution/dependency-graph.js +104 -0
- package/dist/core/source-resolution/dependency-graph.js.map +1 -0
- package/dist/core/source-resolution/resolve-mutable-source.js +109 -0
- package/dist/core/source-resolution/resolve-mutable-source.js.map +1 -0
- package/dist/core/source-resolution/resolve-package-source.js +29 -0
- package/dist/core/source-resolution/resolve-package-source.js.map +1 -0
- package/dist/core/source-resolution/resolve-registry-version.js +35 -0
- package/dist/core/source-resolution/resolve-registry-version.js.map +1 -0
- package/dist/core/source-resolution/types.js.map +1 -0
- package/dist/core/status/status-file-discovery.js +23 -12
- package/dist/core/status/status-file-discovery.js.map +1 -1
- package/dist/core/status/status-pipeline.js +134 -0
- package/dist/core/status/status-pipeline.js.map +1 -0
- package/dist/core/sync/platform-sync-summary.js +27 -0
- package/dist/core/sync/platform-sync-summary.js.map +1 -0
- package/dist/core/uninstall/flow-aware-uninstaller.js +189 -0
- package/dist/core/uninstall/flow-aware-uninstaller.js.map +1 -0
- package/dist/core/uninstall/uninstall-file-discovery.js +11 -6
- package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
- package/dist/core/uninstall/uninstall-pipeline.js +141 -0
- package/dist/core/uninstall/uninstall-pipeline.js.map +1 -0
- package/dist/core/universal-patterns.js +64 -0
- package/dist/core/universal-patterns.js.map +1 -0
- package/dist/index.js +99 -6
- package/dist/index.js.map +1 -1
- package/dist/types/flows.js +8 -0
- package/dist/types/flows.js.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/platform-flows.js +8 -0
- package/dist/types/platform-flows.js.map +1 -0
- package/dist/types/workspace-index.js +6 -0
- package/dist/types/workspace-index.js.map +1 -0
- package/dist/utils/custom-path-resolution.js +160 -0
- package/dist/utils/custom-path-resolution.js.map +1 -0
- package/dist/utils/dependency-coverage.js +1 -1
- package/dist/utils/dependency-coverage.js.map +1 -1
- package/dist/utils/file-processing.js +1 -1
- package/dist/utils/flow-index-installer.js +209 -0
- package/dist/utils/flow-index-installer.js.map +1 -0
- package/dist/utils/formatters.js +47 -1
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/fs.js +17 -0
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/git-clone-registry.js +88 -0
- package/dist/utils/git-clone-registry.js.map +1 -0
- package/dist/utils/git-clone.js +69 -0
- package/dist/utils/git-clone.js.map +1 -0
- package/dist/utils/git-spec.js +96 -0
- package/dist/utils/git-spec.js.map +1 -0
- package/dist/utils/http-client.js +7 -0
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/index-based-installer.js +356 -163
- package/dist/utils/index-based-installer.js.map +1 -1
- package/dist/utils/install-conflict-handler.js +2 -2
- package/dist/utils/install-conflict-handler.js.map +1 -1
- package/dist/utils/install-file-discovery.js +18 -13
- package/dist/utils/install-file-discovery.js.map +1 -1
- package/dist/utils/install-helpers.js +43 -20
- package/dist/utils/install-helpers.js.map +1 -1
- package/dist/utils/jsonc.js +23 -1
- package/dist/utils/jsonc.js.map +1 -1
- package/dist/utils/manifest-paths.js +1 -1
- package/dist/utils/manifest-paths.js.map +1 -1
- package/dist/utils/markdown-frontmatter.js +46 -0
- package/dist/utils/markdown-frontmatter.js.map +1 -1
- package/dist/utils/package-copy.js +5 -103
- package/dist/utils/package-copy.js.map +1 -1
- package/dist/utils/package-filters.js +9 -105
- package/dist/utils/package-filters.js.map +1 -1
- package/dist/utils/package-index-yml.js +27 -6
- package/dist/utils/package-index-yml.js.map +1 -1
- package/dist/utils/package-input.js +98 -0
- package/dist/utils/package-input.js.map +1 -0
- package/dist/utils/package-management.js +80 -28
- package/dist/utils/package-management.js.map +1 -1
- package/dist/utils/package-name-resolution.js +327 -0
- package/dist/utils/package-name-resolution.js.map +1 -0
- package/dist/utils/package-name.js +18 -16
- package/dist/utils/package-name.js.map +1 -1
- package/dist/utils/package-versioning.js +2 -33
- package/dist/utils/package-versioning.js.map +1 -1
- package/dist/utils/package-yml.js +19 -28
- package/dist/utils/package-yml.js.map +1 -1
- package/dist/utils/path-resolution.js +102 -0
- package/dist/utils/path-resolution.js.map +1 -0
- package/dist/utils/paths.js +6 -6
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/platform-file.js +36 -24
- package/dist/utils/platform-file.js.map +1 -1
- package/dist/utils/platform-mapper.js +222 -68
- package/dist/utils/platform-mapper.js.map +1 -1
- package/dist/utils/platform-root-files.js +44 -0
- package/dist/utils/platform-root-files.js.map +1 -0
- package/dist/utils/platform-utils.js +35 -54
- package/dist/utils/platform-utils.js.map +1 -1
- package/dist/utils/platform-yaml-merge.js +20 -140
- package/dist/utils/platform-yaml-merge.js.map +1 -1
- package/dist/utils/prompts.js +92 -7
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/registry-entry-filter.js +50 -27
- package/dist/utils/registry-entry-filter.js.map +1 -1
- package/dist/utils/registry-paths.js +5 -4
- package/dist/utils/registry-paths.js.map +1 -1
- package/dist/utils/scope-resolution.js +156 -0
- package/dist/utils/scope-resolution.js.map +1 -0
- package/dist/utils/source-mutability.js +15 -0
- package/dist/utils/source-mutability.js.map +1 -0
- package/dist/utils/tarball.js +29 -4
- package/dist/utils/tarball.js.map +1 -1
- package/dist/utils/version-ranges.js +1 -32
- package/dist/utils/version-ranges.js.map +1 -1
- package/dist/utils/workspace-index-helpers.js +28 -0
- package/dist/utils/workspace-index-helpers.js.map +1 -0
- package/dist/utils/workspace-index-ownership.js +100 -0
- package/dist/utils/workspace-index-ownership.js.map +1 -0
- package/dist/utils/workspace-index-yml.js +173 -0
- package/dist/utils/workspace-index-yml.js.map +1 -0
- package/examples/custom-subdirs-platform.jsonc +157 -0
- package/package.json +7 -2
- package/platforms.jsonc +531 -84
- package/schemas/map-pipeline-v1.json +256 -0
- package/schemas/platforms-v1.json +400 -0
- package/specs/README.md +88 -0
- package/specs/add/README.md +166 -0
- package/specs/agents-claude.md +570 -0
- package/specs/agents-opencode.md +622 -0
- package/specs/apply/README.md +21 -0
- package/specs/apply/apply-behavior.md +58 -0
- package/specs/apply/apply-command.md +51 -0
- package/specs/apply/conflicts.md +41 -0
- package/specs/apply/index-effects.md +81 -0
- package/specs/architecture.md +107 -0
- package/specs/auth/README.md +17 -0
- package/specs/auth/auth-http-contract.md +25 -0
- package/specs/auth/cli/credentials.md +39 -0
- package/specs/auth/cli/login.md +32 -0
- package/specs/auth/cli/logout.md +16 -0
- package/specs/claude-mcp.md +1065 -0
- package/specs/claude-plugins-marketplace.md +363 -0
- package/specs/claude-plugins.md +413 -0
- package/specs/cli-options.md +52 -0
- package/specs/codex-mcp.md +114 -0
- package/specs/commands-overview.md +175 -0
- package/specs/directory-layout.md +95 -0
- package/specs/install/README.md +12 -4
- package/specs/install/git-sources.md +230 -0
- package/specs/install/install-behavior.md +483 -73
- package/specs/install/package-yml-canonical.md +67 -35
- package/specs/install/version-resolution.md +69 -115
- package/specs/new/README.md +769 -0
- package/specs/new/SUMMARY.md +310 -0
- package/specs/new/scope-behavior.md +793 -0
- package/specs/pack/README.md +77 -0
- package/specs/pack/package-name-resolution.md +330 -0
- package/specs/package/README.md +18 -17
- package/specs/package/nested-packages-and-parent-packages.md +32 -31
- package/specs/package/package-index-yml.md +95 -101
- package/specs/package/package-root-layout.md +64 -46
- package/specs/package/registry-payload-and-copy.md +50 -44
- package/specs/package/universal-content.md +33 -56
- package/specs/package-sources.md +248 -0
- package/specs/platforms/README.md +52 -0
- package/specs/platforms/configuration.md +571 -0
- package/specs/platforms/detection.md +552 -0
- package/specs/platforms/directory-layout.md +599 -0
- package/specs/platforms/examples.md +1146 -0
- package/specs/platforms/flow-reference.md +1240 -0
- package/specs/platforms/flows.md +1488 -0
- package/specs/platforms/map-pipeline.md +801 -0
- package/specs/platforms/overview.md +349 -0
- package/specs/platforms/specification.md +700 -0
- package/specs/platforms/troubleshooting.md +697 -0
- package/specs/platforms/universal-converter.md +520 -0
- package/specs/push/README.md +1 -0
- package/specs/push/push-behavior.md +11 -3
- package/specs/push/push-remote-upload.md +1 -1
- package/specs/push/push-scoping.md +1 -1
- package/specs/push/push-version-selection.md +1 -1
- package/specs/registry.md +111 -0
- package/specs/remove/README.md +257 -0
- package/specs/save/README.md +21 -17
- package/specs/save/save-conflict-resolution.md +205 -83
- package/specs/save/save-file-discovery.md +6 -4
- package/specs/save/save-frontmatter-overrides.md +11 -15
- package/specs/save/save-modes-inputs.md +9 -39
- package/specs/save/save-naming-scoping.md +4 -4
- package/specs/save/save-package-detection.md +13 -13
- package/specs/save/save-registry-sync.md +16 -106
- package/specs/save/save-versioning.md +80 -0
- package/specs/scope-management.md +92 -0
- package/specs/set/README.md +520 -0
- package/specs/set/set-behavior.md +563 -0
- package/specs/show/README.md +483 -0
- package/specs/show/show-remote.md +494 -0
- package/specs/status/README.md +38 -0
- package/specs/uninstall/README.md +231 -0
- package/dist/commands/duplicate.js +0 -69
- package/dist/commands/duplicate.js.map +0 -1
- package/dist/commands/init.js +0 -117
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/prune.js +0 -357
- package/dist/commands/prune.js.map +0 -1
- package/dist/commands/tui.js +0 -61
- package/dist/commands/tui.js.map +0 -1
- package/dist/core/install/index.js +0 -3
- package/dist/core/install/index.js.map +0 -1
- package/dist/core/push/push-single-file.js +0 -56
- package/dist/core/push/push-single-file.js.map +0 -1
- package/dist/core/save/package-detection.js +0 -147
- package/dist/core/save/package-detection.js.map +0 -1
- package/dist/core/save/save-single-file.js +0 -124
- package/dist/core/save/save-single-file.js.map +0 -1
- package/dist/core/token-store.js +0 -73
- package/dist/core/token-store.js.map +0 -1
- package/dist/tui/app.js +0 -95
- package/dist/tui/app.js.map +0 -1
- package/dist/tui/components/package-list.js +0 -73
- package/dist/tui/components/package-list.js.map +0 -1
- package/dist/tui/controller.js +0 -365
- package/dist/tui/controller.js.map +0 -1
- package/dist/tui/index.js +0 -12
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/services/file-index.js +0 -64
- package/dist/tui/services/file-index.js.map +0 -1
- package/dist/tui/services/packages.js +0 -18
- package/dist/tui/services/packages.js.map +0 -1
- package/dist/tui/services/save.js +0 -21
- package/dist/tui/services/save.js.map +0 -1
- package/dist/tui/state/app-state.js +0 -15
- package/dist/tui/state/app-state.js.map +0 -1
- package/dist/tui/state.js +0 -17
- package/dist/tui/state.js.map +0 -1
- package/dist/tui/types.js.map +0 -1
- package/dist/tui/views/add-file-modal.js +0 -129
- package/dist/tui/views/add-file-modal.js.map +0 -1
- package/dist/tui/views/file-preview.js +0 -44
- package/dist/tui/views/file-preview.js.map +0 -1
- package/dist/tui/views/list-packages.js +0 -73
- package/dist/tui/views/list-packages.js.map +0 -1
- package/dist/tui/views/main-menu.js +0 -29
- package/dist/tui/views/main-menu.js.map +0 -1
- package/dist/tui/views/manage-view.js +0 -81
- package/dist/tui/views/manage-view.js.map +0 -1
- package/dist/tui/views/package-hub.js +0 -120
- package/dist/tui/views/package-hub.js.map +0 -1
- package/dist/tui/views/placeholder.js +0 -24
- package/dist/tui/views/placeholder.js.map +0 -1
- package/dist/utils/bun-bootstrap.js +0 -72
- package/dist/utils/bun-bootstrap.js.map +0 -1
- package/dist/utils/entity-id.js +0 -19
- package/dist/utils/entity-id.js.map +0 -1
- package/dist/utils/package-local-files.js +0 -5
- package/dist/utils/package-local-files.js.map +0 -1
- package/dist/utils/path-matching.js +0 -74
- package/dist/utils/path-matching.js.map +0 -1
- package/dist/utils/root-file-operations.js +0 -39
- package/dist/utils/root-file-operations.js.map +0 -1
- package/dist/utils/root-file-transformer.js +0 -27
- package/dist/utils/root-file-transformer.js.map +0 -1
- package/dist/utils/yaml-frontmatter.js +0 -25
- package/dist/utils/yaml-frontmatter.js.map +0 -1
- package/specs/auth/auth-device-flow.md +0 -70
- package/specs/login/login-device-flow.md +0 -70
- package/specs/platforms.md +0 -193
- package/specs/save-pack-versioning.md +0 -224
- package/specs/save-pack.md +0 -68
- /package/dist/{tui → core/source-resolution}/types.js +0 -0
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* Unified Package Context
|
|
3
3
|
*
|
|
4
4
|
* Provides consistent package location resolution for all pipelines.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Package payloads store content at the package root alongside openpackage.yml.
|
|
6
|
+
* Cached packages (workspace) live under .openpackage/packages/<name>/ with the same layout.
|
|
7
7
|
*/
|
|
8
|
-
import { join
|
|
8
|
+
import { join } from 'path';
|
|
9
9
|
import { DIR_PATTERNS, FILE_PATTERNS, OPENPACKAGE_DIRS } from '../constants/index.js';
|
|
10
10
|
import { exists, isDirectory } from '../utils/fs.js';
|
|
11
11
|
import { parsePackageYml } from '../utils/package-yml.js';
|
|
@@ -27,39 +27,31 @@ export function getPackageRootDir(cwd, location, packageName) {
|
|
|
27
27
|
return join(cwd, DIR_PATTERNS.OPENPACKAGE, OPENPACKAGE_DIRS.PACKAGES, normalizePackageName(packageName));
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
* Get the package content directory (
|
|
31
|
-
* This is where package.yml, the package index file, and universal content live.
|
|
30
|
+
* Get the package content directory (v2 layout: same as the package root).
|
|
32
31
|
*/
|
|
33
32
|
export function getPackageFilesDir(cwd, location, packageName) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
if (!packageName) {
|
|
38
|
-
throw new Error('Package name required for nested packages');
|
|
39
|
-
}
|
|
40
|
-
// Nested: cwd/.openpackage/packages/<name>/.openpackage/
|
|
41
|
-
return join(cwd, DIR_PATTERNS.OPENPACKAGE, OPENPACKAGE_DIRS.PACKAGES, normalizePackageName(packageName), DIR_PATTERNS.OPENPACKAGE);
|
|
33
|
+
// In v2, content lives at the package root.
|
|
34
|
+
return getPackageRootDir(cwd, location, packageName);
|
|
42
35
|
}
|
|
43
36
|
/**
|
|
44
|
-
* Get the
|
|
45
|
-
* package.yml is always inside the content directory (.openpackage/)
|
|
37
|
+
* Get the openpackage.yml path based on location.
|
|
46
38
|
*/
|
|
47
39
|
export function getPackageYmlPath(cwd, location, packageName) {
|
|
48
|
-
const contentDir =
|
|
49
|
-
return join(contentDir, FILE_PATTERNS.
|
|
40
|
+
const contentDir = getPackageRootDir(cwd, location, packageName);
|
|
41
|
+
return join(contentDir, FILE_PATTERNS.OPENPACKAGE_YML);
|
|
50
42
|
}
|
|
51
43
|
/**
|
|
52
|
-
* Core rule: any directory that contains
|
|
44
|
+
* Core rule: any directory that contains `openpackage.yml` is a valid package.
|
|
53
45
|
*/
|
|
54
46
|
export async function isValidPackageDirectory(dir) {
|
|
55
|
-
const packageYmlPath = join(dir,
|
|
47
|
+
const packageYmlPath = join(dir, FILE_PATTERNS.OPENPACKAGE_YML);
|
|
56
48
|
return exists(packageYmlPath);
|
|
57
49
|
}
|
|
58
50
|
/**
|
|
59
51
|
* Load package config from a directory that satisfies the core rule.
|
|
60
52
|
*/
|
|
61
53
|
export async function loadPackageConfig(dir) {
|
|
62
|
-
const packageYmlPath = join(dir,
|
|
54
|
+
const packageYmlPath = join(dir, FILE_PATTERNS.OPENPACKAGE_YML);
|
|
63
55
|
if (!(await exists(packageYmlPath))) {
|
|
64
56
|
return null;
|
|
65
57
|
}
|
|
@@ -67,7 +59,7 @@ export async function loadPackageConfig(dir) {
|
|
|
67
59
|
return await parsePackageYml(packageYmlPath);
|
|
68
60
|
}
|
|
69
61
|
catch (error) {
|
|
70
|
-
logger.debug(`Failed to parse
|
|
62
|
+
logger.debug(`Failed to parse openpackage.yml at ${packageYmlPath}: ${error}`);
|
|
71
63
|
return null;
|
|
72
64
|
}
|
|
73
65
|
}
|
|
@@ -102,7 +94,7 @@ export async function detectPackageContext(cwd, packageName) {
|
|
|
102
94
|
};
|
|
103
95
|
}
|
|
104
96
|
catch (error) {
|
|
105
|
-
logger.warn(`Failed to parse root
|
|
97
|
+
logger.warn(`Failed to parse root openpackage.yml: ${error}`);
|
|
106
98
|
return null;
|
|
107
99
|
}
|
|
108
100
|
}
|
|
@@ -125,38 +117,34 @@ export async function detectPackageContext(cwd, packageName) {
|
|
|
125
117
|
}
|
|
126
118
|
}
|
|
127
119
|
catch (error) {
|
|
128
|
-
logger.debug(`Failed to parse root
|
|
120
|
+
logger.debug(`Failed to parse root openpackage.yml: ${error}`);
|
|
129
121
|
}
|
|
130
122
|
}
|
|
131
123
|
// Check nested packages directory
|
|
132
|
-
|
|
133
|
-
const nestedPackageRootDir = getPackageRootDir(cwd, 'nested', packageName);
|
|
134
|
-
const nestedPackageFilesDir = getPackageFilesDir(cwd, 'nested', packageName);
|
|
135
|
-
if (await exists(nestedPackageYmlPath)) {
|
|
136
|
-
try {
|
|
137
|
-
const nestedConfig = await parsePackageYml(nestedPackageYmlPath);
|
|
138
|
-
if (arePackageNamesEquivalent(nestedConfig.name, packageName)) {
|
|
139
|
-
return {
|
|
140
|
-
name: normalizedName,
|
|
141
|
-
version: nestedConfig.version,
|
|
142
|
-
config: nestedConfig,
|
|
143
|
-
packageYmlPath: nestedPackageYmlPath,
|
|
144
|
-
packageRootDir: nestedPackageRootDir,
|
|
145
|
-
packageFilesDir: nestedPackageFilesDir,
|
|
146
|
-
location: 'nested',
|
|
147
|
-
isCwdPackage: false
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
catch (error) {
|
|
152
|
-
logger.debug(`Failed to parse nested package.yml at ${nestedPackageYmlPath}: ${error}`);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
// Scan nested packages for cases where directory name differs from package name
|
|
124
|
+
// Check cached packages directory for a matching package name
|
|
156
125
|
const packagesDir = join(cwd, DIR_PATTERNS.OPENPACKAGE, OPENPACKAGE_DIRS.PACKAGES);
|
|
157
126
|
if (await exists(packagesDir) && (await isDirectory(packagesDir))) {
|
|
158
127
|
try {
|
|
159
|
-
|
|
128
|
+
// Direct match on expected path
|
|
129
|
+
const nestedPackageRootDir = getPackageRootDir(cwd, 'nested', packageName);
|
|
130
|
+
const nestedPackageYmlPath = getPackageYmlPath(cwd, 'nested', packageName);
|
|
131
|
+
if (await exists(nestedPackageYmlPath)) {
|
|
132
|
+
const nestedConfig = await parsePackageYml(nestedPackageYmlPath);
|
|
133
|
+
if (arePackageNamesEquivalent(nestedConfig.name, packageName)) {
|
|
134
|
+
return {
|
|
135
|
+
name: normalizedName,
|
|
136
|
+
version: nestedConfig.version,
|
|
137
|
+
config: nestedConfig,
|
|
138
|
+
packageYmlPath: nestedPackageYmlPath,
|
|
139
|
+
packageRootDir: nestedPackageRootDir,
|
|
140
|
+
packageFilesDir: nestedPackageRootDir,
|
|
141
|
+
location: 'nested',
|
|
142
|
+
isCwdPackage: false
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Fallback: scan for mismatched directory name
|
|
147
|
+
const packageDirs = await findDirectoriesContainingFile(packagesDir, FILE_PATTERNS.OPENPACKAGE_YML, async (filePath) => {
|
|
160
148
|
try {
|
|
161
149
|
return await parsePackageYml(filePath);
|
|
162
150
|
}
|
|
@@ -168,15 +156,15 @@ export async function detectPackageContext(cwd, packageName) {
|
|
|
168
156
|
if (!parsedContent)
|
|
169
157
|
continue;
|
|
170
158
|
if (arePackageNamesEquivalent(parsedContent.name, packageName)) {
|
|
171
|
-
// dirPath is the
|
|
172
|
-
const packageRootDir =
|
|
159
|
+
// dirPath is the package root containing openpackage.yml
|
|
160
|
+
const packageRootDir = dirPath;
|
|
173
161
|
return {
|
|
174
162
|
name: normalizedName,
|
|
175
163
|
version: parsedContent.version,
|
|
176
164
|
config: parsedContent,
|
|
177
|
-
packageYmlPath: join(dirPath, FILE_PATTERNS.
|
|
165
|
+
packageYmlPath: join(dirPath, FILE_PATTERNS.OPENPACKAGE_YML),
|
|
178
166
|
packageRootDir,
|
|
179
|
-
packageFilesDir:
|
|
167
|
+
packageFilesDir: packageRootDir,
|
|
180
168
|
location: 'nested',
|
|
181
169
|
isCwdPackage: false
|
|
182
170
|
};
|
|
@@ -213,19 +201,6 @@ export function createPackageContext(cwd, config, location) {
|
|
|
213
201
|
export function isRootPackage(ctx) {
|
|
214
202
|
return ctx.location === 'root';
|
|
215
203
|
}
|
|
216
|
-
/**
|
|
217
|
-
* Convert PackageContext to legacy DetectedPackageContext format.
|
|
218
|
-
* @deprecated Use PackageContext directly
|
|
219
|
-
*/
|
|
220
|
-
export function toDetectedPackageContext(ctx) {
|
|
221
|
-
return {
|
|
222
|
-
packageDir: ctx.packageFilesDir,
|
|
223
|
-
packageYmlPath: ctx.packageYmlPath,
|
|
224
|
-
config: ctx.config,
|
|
225
|
-
location: ctx.location,
|
|
226
|
-
isCwdPackage: ctx.isCwdPackage
|
|
227
|
-
};
|
|
228
|
-
}
|
|
229
204
|
/**
|
|
230
205
|
* Error message for when no package is detected.
|
|
231
206
|
*/
|
|
@@ -233,14 +208,14 @@ export function getNoPackageDetectedMessage(packageName) {
|
|
|
233
208
|
if (packageName) {
|
|
234
209
|
return (`Package '${packageName}' not found.\n\n` +
|
|
235
210
|
`Checked locations:\n` +
|
|
236
|
-
` • Root package:
|
|
237
|
-
` •
|
|
211
|
+
` • Root package: openpackage.yml\n` +
|
|
212
|
+
` • Cached packages: .openpackage/packages/${packageName}/\n\n` +
|
|
238
213
|
`💡 To create a new package, run: opkg save ${packageName}`);
|
|
239
214
|
}
|
|
240
215
|
return (`No package detected at current directory.\n\n` +
|
|
241
|
-
`A valid package requires
|
|
242
|
-
`💡 To
|
|
243
|
-
` • Run 'opkg
|
|
216
|
+
`A valid package requires openpackage.yml to exist.\n\n` +
|
|
217
|
+
`💡 To create a package:\n` +
|
|
218
|
+
` • Run 'opkg new' to create a new package\n` +
|
|
244
219
|
` • Or specify a package name: 'opkg save <package-name>'`);
|
|
245
220
|
}
|
|
246
221
|
//# sourceMappingURL=package-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-context.js","sourceRoot":"","sources":["../../src/core/package-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"package-context.js","sourceRoot":"","sources":["../../src/core/package-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { basename } from 'path';
|
|
2
|
+
import { getScopePackageDir, getScopePackageYmlPath, getScopeDisplayPath, getScopeDescription } from '../utils/scope-resolution.js';
|
|
3
|
+
import { resolveCustomPath, validateCustomPath, formatCustomPathForDisplay } from '../utils/custom-path-resolution.js';
|
|
4
|
+
import { parsePackageYml, writePackageYml } from '../utils/package-yml.js';
|
|
5
|
+
import { promptPackageDetails, promptPackageDetailsForNamed } from '../utils/prompts.js';
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
|
+
import { displayPackageConfig } from '../utils/formatters.js';
|
|
8
|
+
import { UserCancellationError } from '../utils/errors.js';
|
|
9
|
+
import { exists, ensureDir } from '../utils/fs.js';
|
|
10
|
+
import { normalizePackageName, validatePackageName } from '../utils/package-name.js';
|
|
11
|
+
/**
|
|
12
|
+
* Create a new package with the specified scope and options
|
|
13
|
+
*
|
|
14
|
+
* This is the core package creation logic that handles:
|
|
15
|
+
* - Validation of package name and scope
|
|
16
|
+
* - Conflict detection with existing packages
|
|
17
|
+
* - Interactive prompts for package metadata
|
|
18
|
+
* - Directory structure creation
|
|
19
|
+
* - openpackage.yml writing
|
|
20
|
+
*
|
|
21
|
+
* @param options - Package creation options
|
|
22
|
+
* @returns Result containing success status and package context
|
|
23
|
+
*/
|
|
24
|
+
export async function createPackage(options) {
|
|
25
|
+
const { cwd, scope, customPath, packageName, force = false, interactive = true } = options;
|
|
26
|
+
try {
|
|
27
|
+
// Validate that either scope or customPath is provided
|
|
28
|
+
if (!scope && !customPath) {
|
|
29
|
+
return {
|
|
30
|
+
success: false,
|
|
31
|
+
error: 'Either scope or customPath must be provided'
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// Step 1: Determine initial package name
|
|
35
|
+
let normalizedName;
|
|
36
|
+
let displayName;
|
|
37
|
+
let nameFromPrompt = false;
|
|
38
|
+
if (!packageName) {
|
|
39
|
+
// No name provided - will prompt or use default
|
|
40
|
+
if (!interactive && scope && scope !== 'root' && !customPath) {
|
|
41
|
+
return {
|
|
42
|
+
success: false,
|
|
43
|
+
error: `Package name is required for ${scope} scope in non-interactive mode.\nUsage: opkg new <package-name> --scope ${scope} --non-interactive`
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// Use cwd basename as default (will be prompted for in interactive mode)
|
|
47
|
+
displayName = basename(cwd);
|
|
48
|
+
normalizedName = normalizePackageName(displayName);
|
|
49
|
+
nameFromPrompt = interactive; // Will prompt for name if interactive
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// Package name provided
|
|
53
|
+
validatePackageName(packageName);
|
|
54
|
+
normalizedName = normalizePackageName(packageName);
|
|
55
|
+
displayName = packageName;
|
|
56
|
+
}
|
|
57
|
+
// Step 2: Resolve target paths
|
|
58
|
+
let packageDir;
|
|
59
|
+
let packageYmlPath;
|
|
60
|
+
let displayPath;
|
|
61
|
+
let isCustomPath = false;
|
|
62
|
+
if (customPath) {
|
|
63
|
+
// Custom path provided - resolve and validate
|
|
64
|
+
const resolved = resolveCustomPath(customPath, cwd);
|
|
65
|
+
// Validate custom path
|
|
66
|
+
const validation = await validateCustomPath(resolved, force);
|
|
67
|
+
if (!validation.valid) {
|
|
68
|
+
return {
|
|
69
|
+
success: false,
|
|
70
|
+
error: validation.error
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// Log warning if present
|
|
74
|
+
if (validation.warning) {
|
|
75
|
+
logger.warn(validation.warning);
|
|
76
|
+
}
|
|
77
|
+
packageDir = resolved.absolute;
|
|
78
|
+
packageYmlPath = resolved.packageYmlPath;
|
|
79
|
+
displayPath = formatCustomPathForDisplay(resolved, cwd);
|
|
80
|
+
isCustomPath = true;
|
|
81
|
+
logger.info(`Creating package '${normalizedName}' at custom path: ${packageDir}`);
|
|
82
|
+
}
|
|
83
|
+
else if (scope) {
|
|
84
|
+
// Scope-based path resolution (existing logic)
|
|
85
|
+
packageDir = getScopePackageDir(cwd, scope, scope === 'root' ? undefined : normalizedName);
|
|
86
|
+
packageYmlPath = getScopePackageYmlPath(cwd, scope, scope === 'root' ? undefined : normalizedName);
|
|
87
|
+
displayPath = getScopeDisplayPath(scope, scope === 'root' ? undefined : normalizedName);
|
|
88
|
+
logger.info(`Creating ${scope} package '${normalizedName}' at: ${packageDir}`);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
return {
|
|
92
|
+
success: false,
|
|
93
|
+
error: 'Either scope or customPath must be provided'
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// Step 3: Check for existing package
|
|
97
|
+
const existingYml = await exists(packageYmlPath);
|
|
98
|
+
let existingConfig = null;
|
|
99
|
+
if (existingYml) {
|
|
100
|
+
try {
|
|
101
|
+
existingConfig = await parsePackageYml(packageYmlPath);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
logger.warn(`Failed to parse existing openpackage.yml: ${error}`);
|
|
105
|
+
}
|
|
106
|
+
if (!force) {
|
|
107
|
+
const errorMsg = existingConfig
|
|
108
|
+
? `Package '${normalizedName}' already exists at ${displayPath}. Use --force to overwrite.`
|
|
109
|
+
: `Package already exists at ${displayPath}. Use --force to overwrite.`;
|
|
110
|
+
return {
|
|
111
|
+
success: false,
|
|
112
|
+
error: errorMsg,
|
|
113
|
+
wasExisting: true
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
logger.info(`Overwriting existing package at ${displayPath} (--force enabled)`);
|
|
117
|
+
}
|
|
118
|
+
// Step 4: Prompt for package details or use defaults (before creating any directories)
|
|
119
|
+
let packageConfig;
|
|
120
|
+
if (interactive && nameFromPrompt) {
|
|
121
|
+
// Create a checker function that validates package doesn't already exist
|
|
122
|
+
const existsChecker = async (name) => {
|
|
123
|
+
if (isCustomPath) {
|
|
124
|
+
// For custom paths, we can't pre-validate by name since path is fixed
|
|
125
|
+
// Validation already happened in Step 2
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
const testPackageDir = getScopePackageDir(cwd, scope, scope === 'root' ? undefined : name);
|
|
129
|
+
const testPackageYmlPath = getScopePackageYmlPath(cwd, scope, scope === 'root' ? undefined : name);
|
|
130
|
+
return await exists(testPackageYmlPath);
|
|
131
|
+
};
|
|
132
|
+
// Prompt for full details including name (with existence validation)
|
|
133
|
+
packageConfig = await promptPackageDetails(displayName, force ? undefined : existsChecker);
|
|
134
|
+
normalizedName = normalizePackageName(packageConfig.name);
|
|
135
|
+
// Update paths with the actual name from prompt (might be different from default)
|
|
136
|
+
// But only for scope-based paths, not custom paths
|
|
137
|
+
if (!isCustomPath && scope) {
|
|
138
|
+
packageDir = getScopePackageDir(cwd, scope, scope === 'root' ? undefined : normalizedName);
|
|
139
|
+
packageYmlPath = getScopePackageYmlPath(cwd, scope, scope === 'root' ? undefined : normalizedName);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else if (interactive) {
|
|
143
|
+
// Prompt for details with pre-set name
|
|
144
|
+
packageConfig = await promptPackageDetailsForNamed(normalizedName);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// Non-interactive: use minimal config
|
|
148
|
+
packageConfig = {
|
|
149
|
+
name: normalizedName
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
// Step 5: Ensure directory structure (only after all prompts are confirmed)
|
|
153
|
+
await ensureDir(packageDir);
|
|
154
|
+
logger.debug(`Created package directory: ${packageDir}`);
|
|
155
|
+
// Step 6: Write openpackage.yml
|
|
156
|
+
await writePackageYml(packageYmlPath, packageConfig);
|
|
157
|
+
logger.info(`Created openpackage.yml at ${packageYmlPath}`);
|
|
158
|
+
// Step 7: Display success message
|
|
159
|
+
displayPackageConfig(packageConfig, packageYmlPath, false);
|
|
160
|
+
// Step 8: Show scope info
|
|
161
|
+
if (isCustomPath) {
|
|
162
|
+
console.log(`\n📍 Location: Custom path (${displayPath})`);
|
|
163
|
+
console.log(`💡 This package is at a custom location you specified`);
|
|
164
|
+
}
|
|
165
|
+
else if (scope) {
|
|
166
|
+
console.log(`\n📍 Scope: ${getScopeDescription(scope)}`);
|
|
167
|
+
if (scope === 'global') {
|
|
168
|
+
console.log(`💡 This package can be used across all workspaces`);
|
|
169
|
+
}
|
|
170
|
+
else if (scope === 'local') {
|
|
171
|
+
console.log(`💡 This package is local to the current workspace`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Step 9: Return success with context
|
|
175
|
+
return {
|
|
176
|
+
success: true,
|
|
177
|
+
context: {
|
|
178
|
+
name: normalizedName,
|
|
179
|
+
version: packageConfig.version,
|
|
180
|
+
config: packageConfig,
|
|
181
|
+
packageYmlPath,
|
|
182
|
+
packageRootDir: packageDir,
|
|
183
|
+
packageFilesDir: packageDir,
|
|
184
|
+
location: (isCustomPath || (scope && scope === 'root')) ? 'root' : 'nested',
|
|
185
|
+
isCwdPackage: !isCustomPath && scope === 'root',
|
|
186
|
+
isNew: !existingYml
|
|
187
|
+
},
|
|
188
|
+
wasExisting: existingYml
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
if (error instanceof UserCancellationError) {
|
|
193
|
+
throw error;
|
|
194
|
+
}
|
|
195
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
196
|
+
logger.error(`Failed to create package`, { error: errorMessage, scope, packageName });
|
|
197
|
+
return {
|
|
198
|
+
success: false,
|
|
199
|
+
error: `Failed to create package: ${errorMessage}`
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=package-creation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-creation.js","sourceRoot":"","sources":["../../src/core/package-creation.ts"],"names":[],"mappings":"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"}
|
package/dist/core/package.js
CHANGED
|
@@ -12,11 +12,23 @@ export class PackageManager {
|
|
|
12
12
|
/**
|
|
13
13
|
* Load a package from the registry (latest version by default)
|
|
14
14
|
*/
|
|
15
|
-
async loadPackage(packageName, version) {
|
|
15
|
+
async loadPackage(packageName, version, opts) {
|
|
16
16
|
logger.debug(`Loading package: ${packageName}`, { version });
|
|
17
17
|
validatePackageName(packageName);
|
|
18
|
-
|
|
19
|
-
if (version
|
|
18
|
+
// Check if this is a cached transformed plugin
|
|
19
|
+
if (version) {
|
|
20
|
+
const { getTransformedPlugin } = await import('./install/plugin-transformer.js');
|
|
21
|
+
const cachedPlugin = getTransformedPlugin(packageName, version);
|
|
22
|
+
if (cachedPlugin) {
|
|
23
|
+
logger.debug(`Using cached transformed plugin: ${packageName}@${version}`);
|
|
24
|
+
return cachedPlugin;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
let targetVersion = opts?.packageRootDir ? version ?? null : null;
|
|
28
|
+
if (opts?.packageRootDir) {
|
|
29
|
+
// Use provided root; version comes from manifest.
|
|
30
|
+
}
|
|
31
|
+
else if (version === UNVERSIONED) {
|
|
20
32
|
targetVersion = UNVERSIONED;
|
|
21
33
|
}
|
|
22
34
|
else if (version) {
|
|
@@ -41,15 +53,17 @@ export class PackageManager {
|
|
|
41
53
|
// No version specified - get latest
|
|
42
54
|
targetVersion = await getLatestPackageVersion(packageName);
|
|
43
55
|
}
|
|
44
|
-
if (!targetVersion) {
|
|
56
|
+
if (!targetVersion && !opts?.packageRootDir) {
|
|
45
57
|
throw new PackageNotFoundError(packageName);
|
|
46
58
|
}
|
|
47
|
-
const packagePath =
|
|
59
|
+
const packagePath = opts?.packageRootDir
|
|
60
|
+
? opts.packageRootDir
|
|
61
|
+
: getPackageVersionPath(packageName, targetVersion ?? undefined);
|
|
48
62
|
if (!(await exists(packagePath))) {
|
|
49
63
|
throw new PackageNotFoundError(packageName);
|
|
50
64
|
}
|
|
51
65
|
try {
|
|
52
|
-
// Load
|
|
66
|
+
// Load openpackage.yml for metadata
|
|
53
67
|
const packageYmlPath = join(packagePath, PACKAGE_PATHS.MANIFEST_RELATIVE);
|
|
54
68
|
if (!(await exists(packageYmlPath))) {
|
|
55
69
|
throw new PackageNotFoundError(packageName);
|
package/dist/core/package.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/core/package.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EACL,MAAM,EACN,SAAS,EACT,YAAY,EACZ,aAAa,EACb,MAAM,EACN,SAAS,EACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EACL,mBAAmB,EACnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAgBnE,MAAM,OAAO,cAAc;IAGzB;;OAEG;IACH,KAAK,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/core/package.ts"],"names":[],"mappings":"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"}
|