opkg 0.6.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -186
- package/assets/openpackage_ascii_dark.png +0 -0
- package/assets/openpackage_ascii_light.png +0 -0
- package/dist/commands/add.js +34 -10
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/apply.js +16 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/delete.js +1 -1
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/install.js +177 -8
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.js +2 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.js +1 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/new.js +125 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/pack.js +7 -13
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/pull.js +1 -1
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.js +1 -1
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/remove.js +63 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/save.js +11 -17
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/set.js +33 -0
- package/dist/commands/set.js.map +1 -0
- package/dist/commands/show.js +16 -94
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/status.js +26 -701
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/uninstall.js +14 -427
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/constants/index.js +72 -16
- package/dist/constants/index.js.map +1 -1
- package/dist/core/add/add-conflict-handler.js +1 -8
- package/dist/core/add/add-conflict-handler.js.map +1 -1
- package/dist/core/add/add-pipeline.js +12 -10
- package/dist/core/add/add-pipeline.js.map +1 -1
- package/dist/core/add/add-to-source-pipeline.js +123 -0
- package/dist/core/add/add-to-source-pipeline.js.map +1 -0
- package/dist/core/add/package-index-updater.js +77 -78
- package/dist/core/add/package-index-updater.js.map +1 -1
- package/dist/core/add/platform-path-transformer.js +6 -4
- package/dist/core/add/platform-path-transformer.js.map +1 -1
- package/dist/core/add/source-collector.js +2 -3
- package/dist/core/add/source-collector.js.map +1 -1
- package/dist/core/apply/apply-pipeline.js +110 -0
- package/dist/core/apply/apply-pipeline.js.map +1 -0
- package/dist/core/dependency-resolver.js +263 -21
- package/dist/core/dependency-resolver.js.map +1 -1
- package/dist/core/discovery/file-discovery.js +1 -2
- package/dist/core/discovery/file-discovery.js.map +1 -1
- package/dist/core/discovery/platform-files-discovery.js +33 -18
- package/dist/core/discovery/platform-files-discovery.js.map +1 -1
- package/dist/core/flows/flow-executor.js +974 -0
- package/dist/core/flows/flow-executor.js.map +1 -0
- package/dist/core/flows/flow-inverter.js +442 -0
- package/dist/core/flows/flow-inverter.js.map +1 -0
- package/dist/core/flows/flow-key-extractor.js +101 -0
- package/dist/core/flows/flow-key-extractor.js.map +1 -0
- package/dist/core/flows/flow-key-mapper.js +382 -0
- package/dist/core/flows/flow-key-mapper.js.map +1 -0
- package/dist/core/flows/flow-transforms.js +632 -0
- package/dist/core/flows/flow-transforms.js.map +1 -0
- package/dist/core/flows/map-pipeline/context.js +73 -0
- package/dist/core/flows/map-pipeline/context.js.map +1 -0
- package/dist/core/flows/map-pipeline/index.js +156 -0
- package/dist/core/flows/map-pipeline/index.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/copy.js +104 -0
- package/dist/core/flows/map-pipeline/operations/copy.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/pipe.js +70 -0
- package/dist/core/flows/map-pipeline/operations/pipe.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/rename.js +102 -0
- package/dist/core/flows/map-pipeline/operations/rename.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/set.js +50 -0
- package/dist/core/flows/map-pipeline/operations/set.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/switch.js +79 -0
- package/dist/core/flows/map-pipeline/operations/switch.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/transform.js +543 -0
- package/dist/core/flows/map-pipeline/operations/transform.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/unset.js +65 -0
- package/dist/core/flows/map-pipeline/operations/unset.js.map +1 -0
- package/dist/core/flows/map-pipeline/types.js +8 -0
- package/dist/core/flows/map-pipeline/types.js.map +1 -0
- package/dist/core/flows/map-pipeline/utils.js +278 -0
- package/dist/core/flows/map-pipeline/utils.js.map +1 -0
- package/dist/core/flows/platform-converter.js +328 -0
- package/dist/core/flows/platform-converter.js.map +1 -0
- package/dist/core/flows/source-resolver.js +192 -0
- package/dist/core/flows/source-resolver.js.map +1 -0
- package/dist/core/flows/toml-domain-transforms.js +23 -0
- package/dist/core/flows/toml-domain-transforms.js.map +1 -0
- package/dist/core/install/bulk-install-pipeline.js +68 -7
- package/dist/core/install/bulk-install-pipeline.js.map +1 -1
- package/dist/core/install/canonical-plan.js +3 -3
- package/dist/core/install/canonical-plan.js.map +1 -1
- package/dist/core/install/dry-run.js +3 -3
- package/dist/core/install/dry-run.js.map +1 -1
- package/dist/core/install/flow-based-installer.js +1158 -0
- package/dist/core/install/flow-based-installer.js.map +1 -0
- package/dist/core/install/flow-workspace-tracker.js +111 -0
- package/dist/core/install/flow-workspace-tracker.js.map +1 -0
- package/dist/core/install/format-detector.js +228 -0
- package/dist/core/install/format-detector.js.map +1 -0
- package/dist/core/install/git-package-loader.js +20 -0
- package/dist/core/install/git-package-loader.js.map +1 -0
- package/dist/core/install/install-errors.js +1 -1
- package/dist/core/install/install-errors.js.map +1 -1
- package/dist/core/install/install-flow.js +34 -14
- package/dist/core/install/install-flow.js.map +1 -1
- package/dist/core/install/install-pipeline.js +52 -17
- package/dist/core/install/install-pipeline.js.map +1 -1
- package/dist/core/install/install-reporting.js +26 -8
- package/dist/core/install/install-reporting.js.map +1 -1
- package/dist/core/install/local-source-resolution.js +103 -0
- package/dist/core/install/local-source-resolution.js.map +1 -0
- package/dist/core/install/marketplace-handler.js +221 -0
- package/dist/core/install/marketplace-handler.js.map +1 -0
- package/dist/core/install/path-install-pipeline.js +241 -0
- package/dist/core/install/path-install-pipeline.js.map +1 -0
- package/dist/core/install/path-package-loader.js +116 -0
- package/dist/core/install/path-package-loader.js.map +1 -0
- package/dist/core/install/plugin-detector.js +72 -0
- package/dist/core/install/plugin-detector.js.map +1 -0
- package/dist/core/install/plugin-to-universal-converter.js +218 -0
- package/dist/core/install/plugin-to-universal-converter.js.map +1 -0
- package/dist/core/install/plugin-transformer.js +191 -0
- package/dist/core/install/plugin-transformer.js.map +1 -0
- package/dist/core/install/version-selection.js +1 -1
- package/dist/core/install/version-selection.js.map +1 -1
- package/dist/core/openpackage.js +40 -22
- package/dist/core/openpackage.js.map +1 -1
- package/dist/core/pack/pack-output.js +62 -0
- package/dist/core/pack/pack-output.js.map +1 -0
- package/dist/core/pack/pack-pipeline.js +186 -0
- package/dist/core/pack/pack-pipeline.js.map +1 -0
- package/dist/core/package-context.js +45 -70
- package/dist/core/package-context.js.map +1 -1
- package/dist/core/package-creation.js +203 -0
- package/dist/core/package-creation.js.map +1 -0
- package/dist/core/package.js +20 -6
- package/dist/core/package.js.map +1 -1
- package/dist/core/platforms.js +665 -209
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/push/push-context.js +1 -1
- package/dist/core/push/push-context.js.map +1 -1
- package/dist/core/push/push-upload.js +2 -2
- package/dist/core/push/push-upload.js.map +1 -1
- package/dist/core/registry.js +6 -6
- package/dist/core/registry.js.map +1 -1
- package/dist/core/remote-pull.js +2 -2
- package/dist/core/remote-pull.js.map +1 -1
- package/dist/core/remove/removal-collector.js +52 -0
- package/dist/core/remove/removal-collector.js.map +1 -0
- package/dist/core/remove/removal-confirmation.js +39 -0
- package/dist/core/remove/removal-confirmation.js.map +1 -0
- package/dist/core/remove/remove-from-source-pipeline.js +173 -0
- package/dist/core/remove/remove-from-source-pipeline.js.map +1 -0
- package/dist/core/save/constants.js +3 -3
- package/dist/core/save/constants.js.map +1 -1
- package/dist/core/save/flow-based-saver.js +270 -0
- package/dist/core/save/flow-based-saver.js.map +1 -0
- package/dist/core/save/name-resolution.js +1 -1
- package/dist/core/save/name-resolution.js.map +1 -1
- package/dist/core/save/package-yml-generator.js +4 -5
- package/dist/core/save/package-yml-generator.js.map +1 -1
- package/dist/core/save/save-candidate-builder.js +215 -0
- package/dist/core/save/save-candidate-builder.js.map +1 -0
- package/dist/core/save/save-candidate-loader.js +12 -11
- package/dist/core/save/save-candidate-loader.js.map +1 -1
- package/dist/core/save/save-conflict-analyzer.js +150 -0
- package/dist/core/save/save-conflict-analyzer.js.map +1 -0
- package/dist/core/save/save-conflict-resolution.js +28 -14
- package/dist/core/save/save-conflict-resolution.js.map +1 -1
- package/dist/core/save/save-conflict-resolver.js +31 -275
- package/dist/core/save/save-conflict-resolver.js.map +1 -1
- package/dist/core/save/save-group-builder.js +52 -0
- package/dist/core/save/save-group-builder.js.map +1 -0
- package/dist/core/save/save-interactive-resolver.js +190 -0
- package/dist/core/save/save-interactive-resolver.js.map +1 -0
- package/dist/core/save/save-pipeline.js +58 -34
- package/dist/core/save/save-pipeline.js.map +1 -1
- package/dist/core/save/save-platform-handler.js +53 -0
- package/dist/core/save/save-platform-handler.js.map +1 -0
- package/dist/core/save/save-resolution-executor.js +145 -0
- package/dist/core/save/save-resolution-executor.js.map +1 -0
- package/dist/core/save/save-result-reporter.js +167 -0
- package/dist/core/save/save-result-reporter.js.map +1 -0
- package/dist/core/save/save-to-source-pipeline.js +154 -0
- package/dist/core/save/save-to-source-pipeline.js.map +1 -0
- package/dist/core/save/save-versioning.js +4 -4
- package/dist/core/save/save-versioning.js.map +1 -1
- package/dist/core/save/save-write-coordinator.js +204 -0
- package/dist/core/save/save-write-coordinator.js.map +1 -0
- package/dist/core/save/save-yml-resolution.js +28 -216
- package/dist/core/save/save-yml-resolution.js.map +1 -1
- package/dist/core/save/workspace-rename.js +7 -8
- package/dist/core/save/workspace-rename.js.map +1 -1
- package/dist/core/set/set-output.js +72 -0
- package/dist/core/set/set-output.js.map +1 -0
- package/dist/core/set/set-pipeline.js +361 -0
- package/dist/core/set/set-pipeline.js.map +1 -0
- package/dist/core/set/set-types.js +5 -0
- package/dist/core/set/set-types.js.map +1 -0
- package/dist/core/show/package-resolver.js +257 -0
- package/dist/core/show/package-resolver.js.map +1 -0
- package/dist/core/show/scope-discovery.js +165 -0
- package/dist/core/show/scope-discovery.js.map +1 -0
- package/dist/core/show/show-output.js +168 -0
- package/dist/core/show/show-output.js.map +1 -0
- package/dist/core/show/show-pipeline.js +113 -0
- package/dist/core/show/show-pipeline.js.map +1 -0
- package/dist/core/show/show-types.js +5 -0
- package/dist/core/show/show-types.js.map +1 -0
- package/dist/core/source-resolution/dependency-graph.js +104 -0
- package/dist/core/source-resolution/dependency-graph.js.map +1 -0
- package/dist/core/source-resolution/resolve-mutable-source.js +109 -0
- package/dist/core/source-resolution/resolve-mutable-source.js.map +1 -0
- package/dist/core/source-resolution/resolve-package-source.js +29 -0
- package/dist/core/source-resolution/resolve-package-source.js.map +1 -0
- package/dist/core/source-resolution/resolve-registry-version.js +35 -0
- package/dist/core/source-resolution/resolve-registry-version.js.map +1 -0
- package/dist/core/source-resolution/types.js.map +1 -0
- package/dist/core/status/status-file-discovery.js +23 -12
- package/dist/core/status/status-file-discovery.js.map +1 -1
- package/dist/core/status/status-pipeline.js +134 -0
- package/dist/core/status/status-pipeline.js.map +1 -0
- package/dist/core/sync/platform-sync-summary.js +27 -0
- package/dist/core/sync/platform-sync-summary.js.map +1 -0
- package/dist/core/uninstall/flow-aware-uninstaller.js +189 -0
- package/dist/core/uninstall/flow-aware-uninstaller.js.map +1 -0
- package/dist/core/uninstall/uninstall-file-discovery.js +11 -6
- package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
- package/dist/core/uninstall/uninstall-pipeline.js +141 -0
- package/dist/core/uninstall/uninstall-pipeline.js.map +1 -0
- package/dist/core/universal-patterns.js +64 -0
- package/dist/core/universal-patterns.js.map +1 -0
- package/dist/index.js +99 -6
- package/dist/index.js.map +1 -1
- package/dist/types/flows.js +8 -0
- package/dist/types/flows.js.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/platform-flows.js +8 -0
- package/dist/types/platform-flows.js.map +1 -0
- package/dist/types/workspace-index.js +6 -0
- package/dist/types/workspace-index.js.map +1 -0
- package/dist/utils/custom-path-resolution.js +160 -0
- package/dist/utils/custom-path-resolution.js.map +1 -0
- package/dist/utils/dependency-coverage.js +1 -1
- package/dist/utils/dependency-coverage.js.map +1 -1
- package/dist/utils/file-processing.js +1 -1
- package/dist/utils/flow-index-installer.js +209 -0
- package/dist/utils/flow-index-installer.js.map +1 -0
- package/dist/utils/formatters.js +47 -1
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/fs.js +17 -0
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/git-clone-registry.js +88 -0
- package/dist/utils/git-clone-registry.js.map +1 -0
- package/dist/utils/git-clone.js +69 -0
- package/dist/utils/git-clone.js.map +1 -0
- package/dist/utils/git-spec.js +96 -0
- package/dist/utils/git-spec.js.map +1 -0
- package/dist/utils/http-client.js +7 -0
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/index-based-installer.js +356 -163
- package/dist/utils/index-based-installer.js.map +1 -1
- package/dist/utils/install-conflict-handler.js +2 -2
- package/dist/utils/install-conflict-handler.js.map +1 -1
- package/dist/utils/install-file-discovery.js +18 -13
- package/dist/utils/install-file-discovery.js.map +1 -1
- package/dist/utils/install-helpers.js +43 -20
- package/dist/utils/install-helpers.js.map +1 -1
- package/dist/utils/jsonc.js +23 -1
- package/dist/utils/jsonc.js.map +1 -1
- package/dist/utils/manifest-paths.js +1 -1
- package/dist/utils/manifest-paths.js.map +1 -1
- package/dist/utils/markdown-frontmatter.js +46 -0
- package/dist/utils/markdown-frontmatter.js.map +1 -1
- package/dist/utils/package-copy.js +5 -103
- package/dist/utils/package-copy.js.map +1 -1
- package/dist/utils/package-filters.js +9 -105
- package/dist/utils/package-filters.js.map +1 -1
- package/dist/utils/package-index-yml.js +27 -6
- package/dist/utils/package-index-yml.js.map +1 -1
- package/dist/utils/package-input.js +98 -0
- package/dist/utils/package-input.js.map +1 -0
- package/dist/utils/package-management.js +80 -28
- package/dist/utils/package-management.js.map +1 -1
- package/dist/utils/package-name-resolution.js +327 -0
- package/dist/utils/package-name-resolution.js.map +1 -0
- package/dist/utils/package-name.js +18 -16
- package/dist/utils/package-name.js.map +1 -1
- package/dist/utils/package-versioning.js +2 -33
- package/dist/utils/package-versioning.js.map +1 -1
- package/dist/utils/package-yml.js +19 -28
- package/dist/utils/package-yml.js.map +1 -1
- package/dist/utils/path-resolution.js +102 -0
- package/dist/utils/path-resolution.js.map +1 -0
- package/dist/utils/paths.js +6 -6
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/platform-file.js +36 -24
- package/dist/utils/platform-file.js.map +1 -1
- package/dist/utils/platform-mapper.js +222 -68
- package/dist/utils/platform-mapper.js.map +1 -1
- package/dist/utils/platform-root-files.js +44 -0
- package/dist/utils/platform-root-files.js.map +1 -0
- package/dist/utils/platform-utils.js +35 -54
- package/dist/utils/platform-utils.js.map +1 -1
- package/dist/utils/platform-yaml-merge.js +20 -140
- package/dist/utils/platform-yaml-merge.js.map +1 -1
- package/dist/utils/prompts.js +92 -7
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/registry-entry-filter.js +50 -27
- package/dist/utils/registry-entry-filter.js.map +1 -1
- package/dist/utils/registry-paths.js +5 -4
- package/dist/utils/registry-paths.js.map +1 -1
- package/dist/utils/scope-resolution.js +156 -0
- package/dist/utils/scope-resolution.js.map +1 -0
- package/dist/utils/source-mutability.js +15 -0
- package/dist/utils/source-mutability.js.map +1 -0
- package/dist/utils/tarball.js +29 -4
- package/dist/utils/tarball.js.map +1 -1
- package/dist/utils/version-ranges.js +1 -32
- package/dist/utils/version-ranges.js.map +1 -1
- package/dist/utils/workspace-index-helpers.js +28 -0
- package/dist/utils/workspace-index-helpers.js.map +1 -0
- package/dist/utils/workspace-index-ownership.js +100 -0
- package/dist/utils/workspace-index-ownership.js.map +1 -0
- package/dist/utils/workspace-index-yml.js +173 -0
- package/dist/utils/workspace-index-yml.js.map +1 -0
- package/examples/custom-subdirs-platform.jsonc +157 -0
- package/package.json +7 -2
- package/platforms.jsonc +531 -84
- package/schemas/map-pipeline-v1.json +256 -0
- package/schemas/platforms-v1.json +400 -0
- package/specs/README.md +88 -0
- package/specs/add/README.md +166 -0
- package/specs/agents-claude.md +570 -0
- package/specs/agents-opencode.md +622 -0
- package/specs/apply/README.md +21 -0
- package/specs/apply/apply-behavior.md +58 -0
- package/specs/apply/apply-command.md +51 -0
- package/specs/apply/conflicts.md +41 -0
- package/specs/apply/index-effects.md +81 -0
- package/specs/architecture.md +107 -0
- package/specs/auth/README.md +17 -0
- package/specs/auth/auth-http-contract.md +25 -0
- package/specs/auth/cli/credentials.md +39 -0
- package/specs/auth/cli/login.md +32 -0
- package/specs/auth/cli/logout.md +16 -0
- package/specs/claude-mcp.md +1065 -0
- package/specs/claude-plugins-marketplace.md +363 -0
- package/specs/claude-plugins.md +413 -0
- package/specs/cli-options.md +52 -0
- package/specs/codex-mcp.md +114 -0
- package/specs/commands-overview.md +175 -0
- package/specs/directory-layout.md +95 -0
- package/specs/install/README.md +12 -4
- package/specs/install/git-sources.md +230 -0
- package/specs/install/install-behavior.md +483 -73
- package/specs/install/package-yml-canonical.md +67 -35
- package/specs/install/version-resolution.md +69 -115
- package/specs/new/README.md +769 -0
- package/specs/new/SUMMARY.md +310 -0
- package/specs/new/scope-behavior.md +793 -0
- package/specs/pack/README.md +77 -0
- package/specs/pack/package-name-resolution.md +330 -0
- package/specs/package/README.md +18 -17
- package/specs/package/nested-packages-and-parent-packages.md +32 -31
- package/specs/package/package-index-yml.md +95 -101
- package/specs/package/package-root-layout.md +64 -46
- package/specs/package/registry-payload-and-copy.md +50 -44
- package/specs/package/universal-content.md +33 -56
- package/specs/package-sources.md +248 -0
- package/specs/platforms/README.md +52 -0
- package/specs/platforms/configuration.md +571 -0
- package/specs/platforms/detection.md +552 -0
- package/specs/platforms/directory-layout.md +599 -0
- package/specs/platforms/examples.md +1146 -0
- package/specs/platforms/flow-reference.md +1240 -0
- package/specs/platforms/flows.md +1488 -0
- package/specs/platforms/map-pipeline.md +801 -0
- package/specs/platforms/overview.md +349 -0
- package/specs/platforms/specification.md +700 -0
- package/specs/platforms/troubleshooting.md +697 -0
- package/specs/platforms/universal-converter.md +520 -0
- package/specs/push/README.md +1 -0
- package/specs/push/push-behavior.md +11 -3
- package/specs/push/push-remote-upload.md +1 -1
- package/specs/push/push-scoping.md +1 -1
- package/specs/push/push-version-selection.md +1 -1
- package/specs/registry.md +111 -0
- package/specs/remove/README.md +257 -0
- package/specs/save/README.md +21 -17
- package/specs/save/save-conflict-resolution.md +205 -83
- package/specs/save/save-file-discovery.md +6 -4
- package/specs/save/save-frontmatter-overrides.md +11 -15
- package/specs/save/save-modes-inputs.md +9 -39
- package/specs/save/save-naming-scoping.md +4 -4
- package/specs/save/save-package-detection.md +13 -13
- package/specs/save/save-registry-sync.md +16 -106
- package/specs/save/save-versioning.md +80 -0
- package/specs/scope-management.md +92 -0
- package/specs/set/README.md +520 -0
- package/specs/set/set-behavior.md +563 -0
- package/specs/show/README.md +483 -0
- package/specs/show/show-remote.md +494 -0
- package/specs/status/README.md +38 -0
- package/specs/uninstall/README.md +231 -0
- package/dist/commands/duplicate.js +0 -69
- package/dist/commands/duplicate.js.map +0 -1
- package/dist/commands/init.js +0 -117
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/prune.js +0 -357
- package/dist/commands/prune.js.map +0 -1
- package/dist/commands/tui.js +0 -61
- package/dist/commands/tui.js.map +0 -1
- package/dist/core/install/index.js +0 -3
- package/dist/core/install/index.js.map +0 -1
- package/dist/core/push/push-single-file.js +0 -56
- package/dist/core/push/push-single-file.js.map +0 -1
- package/dist/core/save/package-detection.js +0 -147
- package/dist/core/save/package-detection.js.map +0 -1
- package/dist/core/save/save-single-file.js +0 -124
- package/dist/core/save/save-single-file.js.map +0 -1
- package/dist/core/token-store.js +0 -73
- package/dist/core/token-store.js.map +0 -1
- package/dist/tui/app.js +0 -95
- package/dist/tui/app.js.map +0 -1
- package/dist/tui/components/package-list.js +0 -73
- package/dist/tui/components/package-list.js.map +0 -1
- package/dist/tui/controller.js +0 -365
- package/dist/tui/controller.js.map +0 -1
- package/dist/tui/index.js +0 -12
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/services/file-index.js +0 -64
- package/dist/tui/services/file-index.js.map +0 -1
- package/dist/tui/services/packages.js +0 -18
- package/dist/tui/services/packages.js.map +0 -1
- package/dist/tui/services/save.js +0 -21
- package/dist/tui/services/save.js.map +0 -1
- package/dist/tui/state/app-state.js +0 -15
- package/dist/tui/state/app-state.js.map +0 -1
- package/dist/tui/state.js +0 -17
- package/dist/tui/state.js.map +0 -1
- package/dist/tui/types.js.map +0 -1
- package/dist/tui/views/add-file-modal.js +0 -129
- package/dist/tui/views/add-file-modal.js.map +0 -1
- package/dist/tui/views/file-preview.js +0 -44
- package/dist/tui/views/file-preview.js.map +0 -1
- package/dist/tui/views/list-packages.js +0 -73
- package/dist/tui/views/list-packages.js.map +0 -1
- package/dist/tui/views/main-menu.js +0 -29
- package/dist/tui/views/main-menu.js.map +0 -1
- package/dist/tui/views/manage-view.js +0 -81
- package/dist/tui/views/manage-view.js.map +0 -1
- package/dist/tui/views/package-hub.js +0 -120
- package/dist/tui/views/package-hub.js.map +0 -1
- package/dist/tui/views/placeholder.js +0 -24
- package/dist/tui/views/placeholder.js.map +0 -1
- package/dist/utils/bun-bootstrap.js +0 -72
- package/dist/utils/bun-bootstrap.js.map +0 -1
- package/dist/utils/entity-id.js +0 -19
- package/dist/utils/entity-id.js.map +0 -1
- package/dist/utils/package-local-files.js +0 -5
- package/dist/utils/package-local-files.js.map +0 -1
- package/dist/utils/path-matching.js +0 -74
- package/dist/utils/path-matching.js.map +0 -1
- package/dist/utils/root-file-operations.js +0 -39
- package/dist/utils/root-file-operations.js.map +0 -1
- package/dist/utils/root-file-transformer.js +0 -27
- package/dist/utils/root-file-transformer.js.map +0 -1
- package/dist/utils/yaml-frontmatter.js +0 -25
- package/dist/utils/yaml-frontmatter.js.map +0 -1
- package/specs/auth/auth-device-flow.md +0 -70
- package/specs/login/login-device-flow.md +0 -70
- package/specs/platforms.md +0 -193
- package/specs/save-pack-versioning.md +0 -224
- package/specs/save-pack.md +0 -68
- /package/dist/{tui → core/source-resolution}/types.js +0 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform Converter Module
|
|
3
|
+
*
|
|
4
|
+
* High-level orchestration for converting packages between formats:
|
|
5
|
+
* - Platform-specific → Universal → Platform-specific
|
|
6
|
+
* - Direct installation when source = target platform
|
|
7
|
+
*/
|
|
8
|
+
import { join, relative } from 'path';
|
|
9
|
+
import { promises as fs } from 'fs';
|
|
10
|
+
import { detectPackageFormat, isPlatformSpecific, needsConversion } from '../install/format-detector.js';
|
|
11
|
+
import { getPlatformDefinition, getGlobalImportFlows } from '../platforms.js';
|
|
12
|
+
import { createFlowExecutor } from './flow-executor.js';
|
|
13
|
+
import { logger } from '../../utils/logger.js';
|
|
14
|
+
import { ensureDir, writeTextFile } from '../../utils/fs.js';
|
|
15
|
+
import { tmpdir } from 'os';
|
|
16
|
+
import { mkdtemp, rm } from 'fs/promises';
|
|
17
|
+
/**
|
|
18
|
+
* Platform Converter
|
|
19
|
+
*
|
|
20
|
+
* Orchestrates multi-stage conversions between package formats
|
|
21
|
+
*/
|
|
22
|
+
export class PlatformConverter {
|
|
23
|
+
constructor(workspaceRoot) {
|
|
24
|
+
this.workspaceRoot = workspaceRoot;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Convert a package to target platform format
|
|
28
|
+
*/
|
|
29
|
+
async convert(pkg, targetPlatform, options) {
|
|
30
|
+
logger.info('Starting platform conversion', {
|
|
31
|
+
package: pkg.metadata.name,
|
|
32
|
+
targetPlatform
|
|
33
|
+
});
|
|
34
|
+
// Use provided format if available, otherwise detect from files
|
|
35
|
+
const sourceFormat = pkg._format || detectPackageFormat(pkg.files);
|
|
36
|
+
logger.debug('Source format', {
|
|
37
|
+
type: sourceFormat.type,
|
|
38
|
+
platform: sourceFormat.platform,
|
|
39
|
+
confidence: sourceFormat.confidence,
|
|
40
|
+
source: pkg._format ? 'provided' : 'detected'
|
|
41
|
+
});
|
|
42
|
+
// Build conversion pipeline
|
|
43
|
+
const pipeline = this.buildPipeline(sourceFormat, targetPlatform);
|
|
44
|
+
if (!pipeline.needsConversion) {
|
|
45
|
+
logger.info('No conversion needed - formats match');
|
|
46
|
+
return {
|
|
47
|
+
success: true,
|
|
48
|
+
convertedPackage: pkg,
|
|
49
|
+
stages: []
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Execute pipeline
|
|
53
|
+
return await this.executePipeline(pkg, pipeline, options);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Build conversion pipeline based on source and target formats
|
|
57
|
+
*/
|
|
58
|
+
buildPipeline(sourceFormat, targetPlatform) {
|
|
59
|
+
const stages = [];
|
|
60
|
+
const needsConv = needsConversion(sourceFormat, targetPlatform);
|
|
61
|
+
logger.info('Checking if conversion needed', {
|
|
62
|
+
sourceType: sourceFormat.type,
|
|
63
|
+
sourcePlatform: sourceFormat.platform,
|
|
64
|
+
targetPlatform,
|
|
65
|
+
needsConversion: needsConv
|
|
66
|
+
});
|
|
67
|
+
if (!needsConv) {
|
|
68
|
+
return {
|
|
69
|
+
source: sourceFormat,
|
|
70
|
+
target: targetPlatform,
|
|
71
|
+
stages: [],
|
|
72
|
+
needsConversion: false
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// Platform-specific → Universal
|
|
76
|
+
if (isPlatformSpecific(sourceFormat) && sourceFormat.platform) {
|
|
77
|
+
const sourcePlatform = sourceFormat.platform;
|
|
78
|
+
// Get source platform import flows (these transform workspace → package)
|
|
79
|
+
const platformDef = getPlatformDefinition(sourcePlatform, this.workspaceRoot);
|
|
80
|
+
const platformImportFlows = platformDef.import || [];
|
|
81
|
+
const globalImportFlows = getGlobalImportFlows(this.workspaceRoot) || [];
|
|
82
|
+
const allImportFlows = [...globalImportFlows, ...platformImportFlows];
|
|
83
|
+
logger.info(`Building conversion stage with ${allImportFlows.length} import flows`, {
|
|
84
|
+
sourcePlatform,
|
|
85
|
+
flowCount: allImportFlows.length
|
|
86
|
+
});
|
|
87
|
+
// For plugins: files are already in universal structure, just need content transformation
|
|
88
|
+
// Import flows already have correct paths (workspace → package)
|
|
89
|
+
// Adjust for plugins where workspace files are in universal locations
|
|
90
|
+
const adjustedFlows = allImportFlows.map(flow => {
|
|
91
|
+
// Import flows have 'from' as workspace path and 'to' as package path
|
|
92
|
+
// For plugins, workspace paths may need adjustment
|
|
93
|
+
const platformPrefix = `.${sourcePlatform}/`;
|
|
94
|
+
// Handle both string and array 'from' patterns
|
|
95
|
+
const fromPatterns = Array.isArray(flow.from) ? flow.from : [flow.from];
|
|
96
|
+
const adjustedFromPatterns = fromPatterns.map(fromPattern => {
|
|
97
|
+
if (fromPattern.startsWith(platformPrefix)) {
|
|
98
|
+
return fromPattern.substring(platformPrefix.length);
|
|
99
|
+
}
|
|
100
|
+
return fromPattern;
|
|
101
|
+
});
|
|
102
|
+
// Return adjusted flow
|
|
103
|
+
if (Array.isArray(flow.from)) {
|
|
104
|
+
return { ...flow, from: adjustedFromPatterns };
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
return { ...flow, from: adjustedFromPatterns[0] };
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
stages.push({
|
|
111
|
+
name: 'platform-to-universal',
|
|
112
|
+
description: `Convert from ${sourcePlatform} format to universal format`,
|
|
113
|
+
flows: adjustedFlows,
|
|
114
|
+
inverted: false // Not inverted - using import flows directly
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
// Universal → Target Platform
|
|
118
|
+
// Note: This stage will be handled by the normal flow-based installer
|
|
119
|
+
// We only need to convert TO universal here; the installer handles universal → platform
|
|
120
|
+
return {
|
|
121
|
+
source: sourceFormat,
|
|
122
|
+
target: targetPlatform,
|
|
123
|
+
stages,
|
|
124
|
+
needsConversion: true
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Execute conversion pipeline
|
|
129
|
+
*/
|
|
130
|
+
async executePipeline(pkg, pipeline, options) {
|
|
131
|
+
const result = {
|
|
132
|
+
success: true,
|
|
133
|
+
stages: []
|
|
134
|
+
};
|
|
135
|
+
let currentPackage = pkg;
|
|
136
|
+
const dryRun = options?.dryRun ?? false;
|
|
137
|
+
// Create temporary directory for intermediate files
|
|
138
|
+
let tempDir = null;
|
|
139
|
+
try {
|
|
140
|
+
tempDir = await mkdtemp(join(tmpdir(), 'opkg-convert-'));
|
|
141
|
+
for (const stage of pipeline.stages) {
|
|
142
|
+
logger.info(`Executing conversion stage: ${stage.name}`);
|
|
143
|
+
const stageResult = await this.executeStage(currentPackage, stage, tempDir, dryRun);
|
|
144
|
+
result.stages.push({
|
|
145
|
+
stage: stage.name,
|
|
146
|
+
filesProcessed: stageResult.filesProcessed,
|
|
147
|
+
success: stageResult.success,
|
|
148
|
+
error: stageResult.error
|
|
149
|
+
});
|
|
150
|
+
if (!stageResult.success) {
|
|
151
|
+
result.success = false;
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
// Update package with converted files
|
|
155
|
+
if (stageResult.convertedFiles) {
|
|
156
|
+
currentPackage = {
|
|
157
|
+
...currentPackage,
|
|
158
|
+
files: stageResult.convertedFiles
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
result.convertedPackage = currentPackage;
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
logger.error('Conversion pipeline failed', { error });
|
|
167
|
+
result.success = false;
|
|
168
|
+
result.stages.push({
|
|
169
|
+
stage: 'pipeline',
|
|
170
|
+
filesProcessed: 0,
|
|
171
|
+
success: false,
|
|
172
|
+
error: error.message
|
|
173
|
+
});
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
// Cleanup temp directory
|
|
178
|
+
if (tempDir) {
|
|
179
|
+
try {
|
|
180
|
+
await rm(tempDir, { recursive: true, force: true });
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
logger.warn('Failed to cleanup temp directory', { tempDir, error });
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Discover files matching a glob pattern
|
|
190
|
+
*/
|
|
191
|
+
async discoverMatchingFiles(pattern, baseDir) {
|
|
192
|
+
const patterns = Array.isArray(pattern) ? pattern : [pattern];
|
|
193
|
+
const matches = [];
|
|
194
|
+
const { minimatch } = await import('minimatch');
|
|
195
|
+
// Walk all files in baseDir
|
|
196
|
+
async function* walkFiles(dir) {
|
|
197
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
198
|
+
for (const entry of entries) {
|
|
199
|
+
const fullPath = join(dir, entry.name);
|
|
200
|
+
if (entry.isDirectory()) {
|
|
201
|
+
yield* walkFiles(fullPath);
|
|
202
|
+
}
|
|
203
|
+
else if (entry.isFile()) {
|
|
204
|
+
yield fullPath;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// Check each file against the patterns
|
|
209
|
+
for await (const filePath of walkFiles(baseDir)) {
|
|
210
|
+
const relativePath = relative(baseDir, filePath);
|
|
211
|
+
// Check if file matches any pattern (with priority - first match wins for arrays)
|
|
212
|
+
for (const p of patterns) {
|
|
213
|
+
if (minimatch(relativePath, p, { dot: false })) {
|
|
214
|
+
matches.push(filePath);
|
|
215
|
+
break; // Only match once per file
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return matches;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Execute a single conversion stage
|
|
223
|
+
*/
|
|
224
|
+
async executeStage(pkg, stage, tempDir, dryRun) {
|
|
225
|
+
try {
|
|
226
|
+
const executor = createFlowExecutor();
|
|
227
|
+
const convertedFiles = [];
|
|
228
|
+
let filesProcessed = 0;
|
|
229
|
+
// Create a temporary package root with source files
|
|
230
|
+
const packageRoot = join(tempDir, 'source');
|
|
231
|
+
await ensureDir(packageRoot);
|
|
232
|
+
// Write package files to temp directory
|
|
233
|
+
for (const file of pkg.files) {
|
|
234
|
+
const filePath = join(packageRoot, file.path);
|
|
235
|
+
await ensureDir(join(filePath, '..'));
|
|
236
|
+
await writeTextFile(filePath, file.content);
|
|
237
|
+
}
|
|
238
|
+
// Build flow context
|
|
239
|
+
const context = {
|
|
240
|
+
workspaceRoot: tempDir, // Use temp dir as workspace
|
|
241
|
+
packageRoot,
|
|
242
|
+
platform: 'claude', // Temporary platform for conversion context
|
|
243
|
+
packageName: pkg.metadata.name,
|
|
244
|
+
direction: 'install', // Always use 'install' direction for conversion (inverted flows handle the logic)
|
|
245
|
+
variables: {
|
|
246
|
+
name: pkg.metadata.name,
|
|
247
|
+
version: pkg.metadata.version || '0.0.0'
|
|
248
|
+
},
|
|
249
|
+
dryRun
|
|
250
|
+
};
|
|
251
|
+
// Execute flows for each matching file
|
|
252
|
+
for (const flow of stage.flows) {
|
|
253
|
+
// Discover files that match the flow's 'from' pattern
|
|
254
|
+
const matchingFiles = await this.discoverMatchingFiles(flow.from, packageRoot);
|
|
255
|
+
logger.info(`Flow pattern matching`, {
|
|
256
|
+
pattern: flow.from,
|
|
257
|
+
matchCount: matchingFiles.length,
|
|
258
|
+
matches: matchingFiles.map(f => relative(packageRoot, f))
|
|
259
|
+
});
|
|
260
|
+
if (matchingFiles.length === 0) {
|
|
261
|
+
logger.debug('No files match flow pattern', {
|
|
262
|
+
pattern: flow.from,
|
|
263
|
+
packageRoot
|
|
264
|
+
});
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
// Execute flow for each matching file
|
|
268
|
+
for (const sourceFile of matchingFiles) {
|
|
269
|
+
const sourceRelative = relative(packageRoot, sourceFile);
|
|
270
|
+
// Create concrete flow with specific file path
|
|
271
|
+
const concreteFlow = {
|
|
272
|
+
...flow,
|
|
273
|
+
from: sourceRelative
|
|
274
|
+
};
|
|
275
|
+
const flowResult = await executor.executeFlow(concreteFlow, context);
|
|
276
|
+
if (!flowResult.success) {
|
|
277
|
+
return {
|
|
278
|
+
success: false,
|
|
279
|
+
filesProcessed,
|
|
280
|
+
error: `Flow execution failed for ${sourceRelative}: ${flowResult.error?.message}`
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
filesProcessed++;
|
|
284
|
+
// Collect transformed files
|
|
285
|
+
if (typeof flowResult.target === 'string') {
|
|
286
|
+
const targetPath = relative(tempDir, flowResult.target);
|
|
287
|
+
// Read transformed file content
|
|
288
|
+
try {
|
|
289
|
+
const { readTextFile } = await import('../../utils/fs.js');
|
|
290
|
+
const content = await readTextFile(flowResult.target);
|
|
291
|
+
convertedFiles.push({
|
|
292
|
+
path: targetPath,
|
|
293
|
+
content,
|
|
294
|
+
encoding: 'utf8'
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
logger.warn('Failed to read converted file', {
|
|
299
|
+
target: flowResult.target,
|
|
300
|
+
error
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return {
|
|
307
|
+
success: true,
|
|
308
|
+
filesProcessed,
|
|
309
|
+
convertedFiles: convertedFiles.length > 0 ? convertedFiles : undefined
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
logger.error('Stage execution failed', { stage: stage.name, error });
|
|
314
|
+
return {
|
|
315
|
+
success: false,
|
|
316
|
+
filesProcessed: 0,
|
|
317
|
+
error: error.message
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Create a platform converter instance
|
|
324
|
+
*/
|
|
325
|
+
export function createPlatformConverter(workspaceRoot) {
|
|
326
|
+
return new PlatformConverter(workspaceRoot);
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=platform-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-converter.js","sourceRoot":"","sources":["../../../src/core/flows/platform-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Pattern Resolver
|
|
3
|
+
*
|
|
4
|
+
* Resolves source file patterns (including arrays with priority) to actual file paths.
|
|
5
|
+
* Supports glob patterns and priority-based pattern selection.
|
|
6
|
+
*/
|
|
7
|
+
import { promises as fs } from 'fs';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import { minimatch } from 'minimatch';
|
|
10
|
+
import * as fsUtils from '../../utils/fs.js';
|
|
11
|
+
import { logger } from '../../utils/logger.js';
|
|
12
|
+
/**
|
|
13
|
+
* Source Pattern Resolver
|
|
14
|
+
*
|
|
15
|
+
* Handles resolution of single patterns, arrays of patterns (with priority),
|
|
16
|
+
* and glob patterns to actual file paths.
|
|
17
|
+
*/
|
|
18
|
+
export class SourcePatternResolver {
|
|
19
|
+
/**
|
|
20
|
+
* Resolve source pattern(s) to file paths
|
|
21
|
+
*
|
|
22
|
+
* For single patterns: returns all matching files
|
|
23
|
+
* For array patterns: returns files from first matching pattern only (priority order)
|
|
24
|
+
*
|
|
25
|
+
* @param pattern - Single pattern or array of patterns with priority
|
|
26
|
+
* @param options - Resolution options
|
|
27
|
+
* @returns Resolution result with paths and warnings
|
|
28
|
+
*/
|
|
29
|
+
async resolve(pattern, options) {
|
|
30
|
+
// Handle array of patterns with priority
|
|
31
|
+
if (Array.isArray(pattern)) {
|
|
32
|
+
return this.resolveWithPriority(pattern, options);
|
|
33
|
+
}
|
|
34
|
+
// Single pattern
|
|
35
|
+
const paths = await this.resolveSinglePattern(pattern, options.baseDir);
|
|
36
|
+
return {
|
|
37
|
+
paths,
|
|
38
|
+
warnings: [],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Resolve array of patterns with priority (first match wins)
|
|
43
|
+
*
|
|
44
|
+
* Iterates through patterns in order, returning files from first matching pattern.
|
|
45
|
+
* Logs warnings if lower-priority patterns also match.
|
|
46
|
+
*
|
|
47
|
+
* @param patterns - Array of patterns in priority order
|
|
48
|
+
* @param options - Resolution options
|
|
49
|
+
* @returns Resolution result
|
|
50
|
+
*/
|
|
51
|
+
async resolveWithPriority(patterns, options) {
|
|
52
|
+
if (patterns.length === 0) {
|
|
53
|
+
return { paths: [], warnings: ['Empty pattern array provided'] };
|
|
54
|
+
}
|
|
55
|
+
const warnings = [];
|
|
56
|
+
const skippedPatterns = [];
|
|
57
|
+
// Try each pattern in priority order
|
|
58
|
+
for (let i = 0; i < patterns.length; i++) {
|
|
59
|
+
const currentPattern = patterns[i];
|
|
60
|
+
const matches = await this.resolveSinglePattern(currentPattern, options.baseDir);
|
|
61
|
+
if (matches.length > 0) {
|
|
62
|
+
// Found matches - check if lower-priority patterns also match
|
|
63
|
+
for (let j = i + 1; j < patterns.length; j++) {
|
|
64
|
+
const lowerPriorityPattern = patterns[j];
|
|
65
|
+
const lowerMatches = await this.resolveSinglePattern(lowerPriorityPattern, options.baseDir);
|
|
66
|
+
if (lowerMatches.length > 0) {
|
|
67
|
+
const warning = `Pattern "${currentPattern}" matched (priority ${i + 1}). ` +
|
|
68
|
+
`Ignoring lower-priority pattern "${lowerPriorityPattern}" (priority ${j + 1}) ` +
|
|
69
|
+
`which also matched ${lowerMatches.length} file(s).`;
|
|
70
|
+
warnings.push(warning);
|
|
71
|
+
skippedPatterns.push(lowerPriorityPattern);
|
|
72
|
+
if (options.logWarnings !== false) {
|
|
73
|
+
logger.debug(warning);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
paths: matches,
|
|
79
|
+
warnings,
|
|
80
|
+
matchedPattern: currentPattern,
|
|
81
|
+
skippedPatterns: skippedPatterns.length > 0 ? skippedPatterns : undefined,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// No patterns matched
|
|
86
|
+
return {
|
|
87
|
+
paths: [],
|
|
88
|
+
warnings: [`No files matched any of the ${patterns.length} pattern(s): ${patterns.join(', ')}`],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Resolve a single pattern to file paths
|
|
93
|
+
*
|
|
94
|
+
* Handles both glob patterns and literal file paths.
|
|
95
|
+
*
|
|
96
|
+
* @param pattern - File pattern (may contain globs)
|
|
97
|
+
* @param baseDir - Base directory for resolution
|
|
98
|
+
* @returns Array of resolved file paths
|
|
99
|
+
*/
|
|
100
|
+
async resolveSinglePattern(pattern, baseDir) {
|
|
101
|
+
// Check if pattern contains glob wildcard
|
|
102
|
+
if (this.isGlobPattern(pattern)) {
|
|
103
|
+
return this.resolveGlobPattern(pattern, baseDir);
|
|
104
|
+
}
|
|
105
|
+
// Literal file path - check if it exists
|
|
106
|
+
const resolved = path.join(baseDir, pattern);
|
|
107
|
+
const exists = await fsUtils.exists(resolved);
|
|
108
|
+
return exists ? [resolved] : [];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Check if pattern contains glob wildcards
|
|
112
|
+
*
|
|
113
|
+
* @param pattern - Pattern to check
|
|
114
|
+
* @returns True if pattern contains glob syntax
|
|
115
|
+
*/
|
|
116
|
+
isGlobPattern(pattern) {
|
|
117
|
+
return pattern.includes('*') || pattern.includes('?') || pattern.includes('[');
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Resolve glob pattern to matching files
|
|
121
|
+
*
|
|
122
|
+
* @param pattern - Glob pattern
|
|
123
|
+
* @param baseDir - Base directory
|
|
124
|
+
* @returns Array of matching file paths
|
|
125
|
+
*/
|
|
126
|
+
async resolveGlobPattern(pattern, baseDir) {
|
|
127
|
+
const matches = [];
|
|
128
|
+
// Extract directory and file pattern
|
|
129
|
+
const parts = pattern.split('/');
|
|
130
|
+
const globPart = parts.findIndex(p => this.isGlobPattern(p));
|
|
131
|
+
if (globPart === -1) {
|
|
132
|
+
// No glob found (shouldn't happen, but handle gracefully)
|
|
133
|
+
return [path.join(baseDir, pattern)];
|
|
134
|
+
}
|
|
135
|
+
// Build directory path up to first glob
|
|
136
|
+
const dirPath = path.join(baseDir, ...parts.slice(0, globPart));
|
|
137
|
+
const filePattern = parts.slice(globPart).join('/');
|
|
138
|
+
// Check if directory exists
|
|
139
|
+
if (!await fsUtils.exists(dirPath)) {
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
142
|
+
// Recursively find matching files
|
|
143
|
+
await this.findMatchingFiles(dirPath, filePattern, baseDir, matches);
|
|
144
|
+
return matches;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Recursively find files matching glob pattern
|
|
148
|
+
*
|
|
149
|
+
* Supports ** for recursive directory matching.
|
|
150
|
+
*
|
|
151
|
+
* @param dir - Current directory
|
|
152
|
+
* @param pattern - Pattern to match
|
|
153
|
+
* @param baseDir - Base directory for relative paths
|
|
154
|
+
* @param matches - Array to accumulate matches
|
|
155
|
+
*/
|
|
156
|
+
async findMatchingFiles(dir, pattern, baseDir, matches) {
|
|
157
|
+
try {
|
|
158
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
159
|
+
for (const entry of entries) {
|
|
160
|
+
const fullPath = path.join(dir, entry.name);
|
|
161
|
+
const relativePath = path.relative(baseDir, fullPath);
|
|
162
|
+
if (entry.isDirectory()) {
|
|
163
|
+
// Always recurse for ** patterns
|
|
164
|
+
if (pattern.startsWith('**') || pattern.includes('/**/')) {
|
|
165
|
+
await this.findMatchingFiles(fullPath, pattern, baseDir, matches);
|
|
166
|
+
}
|
|
167
|
+
else if (pattern.includes('/')) {
|
|
168
|
+
// For patterns with subdirs, continue searching
|
|
169
|
+
await this.findMatchingFiles(fullPath, pattern, baseDir, matches);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else if (entry.isFile()) {
|
|
173
|
+
// Test file against pattern
|
|
174
|
+
if (minimatch(relativePath, pattern, { dot: false })) {
|
|
175
|
+
matches.push(fullPath);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
// Ignore errors (directory not accessible, etc.)
|
|
182
|
+
logger.debug(`Error reading directory ${dir}: ${error}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Create a source pattern resolver instance
|
|
188
|
+
*/
|
|
189
|
+
export function createSourceResolver() {
|
|
190
|
+
return new SourcePatternResolver();
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=source-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-resolver.js","sourceRoot":"","sources":["../../../src/core/flows/source-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TOML Domain Transforms
|
|
3
|
+
*
|
|
4
|
+
* This file previously contained legacy MCP-to-Codex transforms.
|
|
5
|
+
* Those transforms have been replaced by the declarative map pipeline
|
|
6
|
+
* approach defined in platforms.jsonc.
|
|
7
|
+
*
|
|
8
|
+
* The file is kept as a placeholder for future domain-specific transforms
|
|
9
|
+
* if needed.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Register TOML domain transforms
|
|
13
|
+
*
|
|
14
|
+
* Currently no domain transforms are registered.
|
|
15
|
+
* All TOML transformations are handled through:
|
|
16
|
+
* 1. Map pipeline operations (in platforms.jsonc)
|
|
17
|
+
* 2. Generic json-to-toml / toml-to-json transforms (in flow-transforms.ts)
|
|
18
|
+
*/
|
|
19
|
+
export function registerTomlDomainTransforms(registry) {
|
|
20
|
+
// No transforms to register
|
|
21
|
+
// Legacy mcp-to-codex-toml and codex-toml-to-mcp have been removed
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=toml-domain-transforms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toml-domain-transforms.js","sourceRoot":"","sources":["../../../src/core/flows/toml-domain-transforms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAAa;IACxD,4BAA4B;IAC5B,mEAAmE;AACrE,CAAC"}
|