opkg 0.8.4 → 0.9.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/.claude/agents/essentials/code-simplifier.md +52 -0
- package/README.md +79 -24
- package/dist/commands/add.js +201 -51
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/install.js +8 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.js +118 -353
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/new.js +22 -49
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/publish.js +9 -5
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/remove.js +170 -53
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/save.js +1 -1
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/search.js +231 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/set.js +1 -1
- package/dist/commands/set.js.map +1 -1
- package/dist/commands/uninstall.js +437 -21
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/unpublish.js +177 -0
- package/dist/commands/unpublish.js.map +1 -0
- package/dist/commands/view.js +295 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/core/add/add-conflict-handler.js +16 -3
- package/dist/core/add/add-conflict-handler.js.map +1 -1
- package/dist/core/add/add-dependency-flow.js +92 -0
- package/dist/core/add/add-dependency-flow.js.map +1 -0
- package/dist/core/add/add-input-classifier.js +159 -0
- package/dist/core/add/add-input-classifier.js.map +1 -0
- package/dist/core/add/add-to-source-pipeline.js +76 -65
- package/dist/core/add/add-to-source-pipeline.js.map +1 -1
- package/dist/core/dependency-resolver/resolver.js +1 -2
- package/dist/core/dependency-resolver/resolver.js.map +1 -1
- package/dist/core/directory.js +15 -1
- package/dist/core/directory.js.map +1 -1
- package/dist/core/execution-context.js +2 -1
- package/dist/core/execution-context.js.map +1 -1
- package/dist/core/flows/flow-execution-coordinator.js +6 -2
- package/dist/core/flows/flow-execution-coordinator.js.map +1 -1
- package/dist/core/flows/flow-executor.js +2 -1
- package/dist/core/flows/flow-executor.js.map +1 -1
- package/dist/core/install/conflicts/file-conflict-resolver.js +610 -0
- package/dist/core/install/conflicts/file-conflict-resolver.js.map +1 -0
- package/dist/core/install/convenience-matchers.js +66 -22
- package/dist/core/install/convenience-matchers.js.map +1 -1
- package/dist/core/install/conversion-context.js +1 -1
- package/dist/core/install/conversion-coordinator.js +13 -7
- package/dist/core/install/conversion-coordinator.js.map +1 -1
- package/dist/core/install/file-format-detector.js +28 -3
- package/dist/core/install/file-format-detector.js.map +1 -1
- package/dist/core/install/flow-based-installer.js +2 -2
- package/dist/core/install/flow-based-installer.js.map +1 -1
- package/dist/core/install/format-detector.js +27 -5
- package/dist/core/install/format-detector.js.map +1 -1
- package/dist/core/install/import-flow-converter.js +7 -1
- package/dist/core/install/import-flow-converter.js.map +1 -1
- package/dist/core/install/install-reporting.js +58 -33
- package/dist/core/install/install-reporting.js.map +1 -1
- package/dist/core/install/list-handler.js +111 -0
- package/dist/core/install/list-handler.js.map +1 -0
- package/dist/core/install/marketplace-handler.js +401 -183
- package/dist/core/install/marketplace-handler.js.map +1 -1
- package/dist/core/install/operations/conflict-handler.js +12 -5
- package/dist/core/install/operations/conflict-handler.js.map +1 -1
- package/dist/core/install/operations/installation-executor.js +71 -4
- package/dist/core/install/operations/installation-executor.js.map +1 -1
- package/dist/core/install/orchestrator/index.js +1 -0
- package/dist/core/install/orchestrator/index.js.map +1 -1
- package/dist/core/install/orchestrator/orchestrator.js +325 -41
- package/dist/core/install/orchestrator/orchestrator.js.map +1 -1
- package/dist/core/install/orchestrator/strategies/git-strategy.js +4 -2
- package/dist/core/install/orchestrator/strategies/git-strategy.js.map +1 -1
- package/dist/core/install/orchestrator/subsumption-resolver.js +196 -0
- package/dist/core/install/orchestrator/subsumption-resolver.js.map +1 -0
- package/dist/core/install/preprocessing/base-resolver.js +33 -4
- package/dist/core/install/preprocessing/base-resolver.js.map +1 -1
- package/dist/core/install/preprocessing/input-classifier.js +36 -101
- package/dist/core/install/preprocessing/input-classifier.js.map +1 -1
- package/dist/core/install/preprocessing/options-normalizer.js +4 -1
- package/dist/core/install/preprocessing/options-normalizer.js.map +1 -1
- package/dist/core/install/resolution/executor.js +2 -2
- package/dist/core/install/resolution/executor.js.map +1 -1
- package/dist/core/install/resolution/graph-builder.js +18 -2
- package/dist/core/install/resolution/graph-builder.js.map +1 -1
- package/dist/core/install/resource-discoverer.js +233 -0
- package/dist/core/install/resource-discoverer.js.map +1 -0
- package/dist/core/install/resource-selection-menu.js +264 -0
- package/dist/core/install/resource-selection-menu.js.map +1 -0
- package/dist/core/install/resource-types.js +5 -0
- package/dist/core/install/resource-types.js.map +1 -0
- package/dist/core/install/sources/registry-source.js +44 -2
- package/dist/core/install/sources/registry-source.js.map +1 -1
- package/dist/core/install/strategies/base-strategy.js.map +1 -1
- package/dist/core/install/strategies/conversion-strategy.js +4 -4
- package/dist/core/install/strategies/conversion-strategy.js.map +1 -1
- package/dist/core/install/strategies/flow-based-strategy.js +273 -3
- package/dist/core/install/strategies/flow-based-strategy.js.map +1 -1
- package/dist/core/install/strategies/helpers/result-converter.js +3 -1
- package/dist/core/install/strategies/helpers/result-converter.js.map +1 -1
- package/dist/core/install/strategies/helpers/temp-directory.js +12 -0
- package/dist/core/install/strategies/helpers/temp-directory.js.map +1 -1
- package/dist/core/install/unified/context-builders.js +3 -1
- package/dist/core/install/unified/context-builders.js.map +1 -1
- package/dist/core/install/unified/phases/conflicts.js +2 -2
- package/dist/core/install/unified/phases/conflicts.js.map +1 -1
- package/dist/core/install/unified/phases/convert.js +49 -9
- package/dist/core/install/unified/phases/convert.js.map +1 -1
- package/dist/core/install/unified/phases/execute.js.map +1 -1
- package/dist/core/install/unified/phases/report.js +17 -3
- package/dist/core/install/unified/phases/report.js.map +1 -1
- package/dist/core/install/unified/phases/resolve-dependencies.js +7 -3
- package/dist/core/install/unified/phases/resolve-dependencies.js.map +1 -1
- package/dist/core/install/validators/options-validator.js +2 -2
- package/dist/core/interaction-policy.js +60 -0
- package/dist/core/interaction-policy.js.map +1 -0
- package/dist/core/list/list-pipeline.js +252 -16
- package/dist/core/list/list-pipeline.js.map +1 -1
- package/dist/core/list/list-printers.js +245 -0
- package/dist/core/list/list-printers.js.map +1 -0
- package/dist/core/list/list-tree-renderer.js +143 -0
- package/dist/core/list/list-tree-renderer.js.map +1 -0
- package/dist/core/list/remote-list-resolver.js +75 -5
- package/dist/core/list/remote-list-resolver.js.map +1 -1
- package/dist/core/list/scope-data-collector.js +307 -0
- package/dist/core/list/scope-data-collector.js.map +1 -0
- package/dist/core/list/untracked-files-scanner.js +126 -9
- package/dist/core/list/untracked-files-scanner.js.map +1 -1
- package/dist/core/list/view-metadata.js +31 -0
- package/dist/core/list/view-metadata.js.map +1 -0
- package/dist/core/package-creation.js +10 -55
- package/dist/core/package-creation.js.map +1 -1
- package/dist/core/publish/local-publish-pipeline.js +159 -0
- package/dist/core/publish/local-publish-pipeline.js.map +1 -0
- package/dist/core/publish/publish-output.js +39 -1
- package/dist/core/publish/publish-output.js.map +1 -1
- package/dist/core/publish/publish-pipeline.js +153 -25
- package/dist/core/publish/publish-pipeline.js.map +1 -1
- package/dist/core/registry-writer.js +80 -0
- package/dist/core/registry-writer.js.map +1 -0
- package/dist/core/remove/removal-confirmation.js +8 -18
- package/dist/core/remove/removal-confirmation.js.map +1 -1
- package/dist/core/remove/remove-dependency-flow.js +22 -0
- package/dist/core/remove/remove-dependency-flow.js.map +1 -0
- package/dist/core/remove/remove-from-source-pipeline.js +114 -87
- package/dist/core/remove/remove-from-source-pipeline.js.map +1 -1
- package/dist/core/remove/remove-input-classifier.js +53 -0
- package/dist/core/remove/remove-input-classifier.js.map +1 -0
- package/dist/core/resources/disambiguation-prompt.js +56 -0
- package/dist/core/resources/disambiguation-prompt.js.map +1 -0
- package/dist/core/resources/installed-resources.js +35 -0
- package/dist/core/resources/installed-resources.js.map +1 -0
- package/dist/core/resources/markdown-metadata.js +24 -0
- package/dist/core/resources/markdown-metadata.js.map +1 -0
- package/dist/core/resources/resource-builder.js +140 -0
- package/dist/core/resources/resource-builder.js.map +1 -0
- package/dist/core/resources/resource-catalog.js +20 -0
- package/dist/core/resources/resource-catalog.js.map +1 -0
- package/dist/core/resources/resource-namespace.js +84 -0
- package/dist/core/resources/resource-namespace.js.map +1 -0
- package/dist/core/resources/resource-naming.js +29 -0
- package/dist/core/resources/resource-naming.js.map +1 -0
- package/dist/core/resources/resource-registry.js +48 -0
- package/dist/core/resources/resource-registry.js.map +1 -0
- package/dist/core/resources/resource-resolver.js +67 -0
- package/dist/core/resources/resource-resolver.js.map +1 -0
- package/dist/core/resources/scope-traversal.js +52 -0
- package/dist/core/resources/scope-traversal.js.map +1 -0
- package/dist/core/resources/source-key-classifier.js +22 -0
- package/dist/core/resources/source-key-classifier.js.map +1 -0
- package/dist/core/uninstall/uninstall-pipeline.js +57 -54
- package/dist/core/uninstall/uninstall-pipeline.js.map +1 -1
- package/dist/core/uninstall/uninstall-reporter.js +56 -5
- package/dist/core/uninstall/uninstall-reporter.js.map +1 -1
- package/dist/core/unpublish/local-unpublish-pipeline.js +173 -0
- package/dist/core/unpublish/local-unpublish-pipeline.js.map +1 -0
- package/dist/core/unpublish/unpublish-output.js +25 -0
- package/dist/core/unpublish/unpublish-output.js.map +1 -0
- package/dist/core/unpublish/unpublish-pipeline.js +17 -0
- package/dist/core/unpublish/unpublish-pipeline.js.map +1 -0
- package/dist/core/unpublish/unpublish-types.js +2 -0
- package/dist/core/unpublish/unpublish-types.js.map +1 -0
- package/dist/index.js +9 -4
- package/dist/index.js.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/clack-multiselect.js +42 -0
- package/dist/utils/clack-multiselect.js.map +1 -0
- package/dist/utils/clack-wrappers.js +42 -0
- package/dist/utils/clack-wrappers.js.map +1 -0
- package/dist/utils/cleanup-empty-parents.js +56 -0
- package/dist/utils/cleanup-empty-parents.js.map +1 -0
- package/dist/utils/directory-preservation.js +4 -2
- package/dist/utils/directory-preservation.js.map +1 -1
- package/dist/utils/entity-detector.js +78 -0
- package/dist/utils/entity-detector.js.map +1 -0
- package/dist/utils/expand-directory-selections.js +101 -0
- package/dist/utils/expand-directory-selections.js.map +1 -0
- package/dist/utils/file-scanner.js +163 -0
- package/dist/utils/file-scanner.js.map +1 -0
- package/dist/utils/file-selector-with-header.js +253 -0
- package/dist/utils/file-selector-with-header.js.map +1 -0
- package/dist/utils/flow-index-installer.js +19 -5
- package/dist/utils/flow-index-installer.js.map +1 -1
- package/dist/utils/formatters.js +27 -8
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/index-based-installer.js +6 -723
- package/dist/utils/index-based-installer.js.map +1 -1
- package/dist/utils/input-classifier-base.js +173 -0
- package/dist/utils/input-classifier-base.js.map +1 -0
- package/dist/utils/install-error-messages.js +0 -25
- package/dist/utils/install-error-messages.js.map +1 -1
- package/dist/utils/interactive-file-selector.js +103 -0
- package/dist/utils/interactive-file-selector.js.map +1 -0
- package/dist/utils/interactive-package-selector.js +157 -0
- package/dist/utils/interactive-package-selector.js.map +1 -0
- package/dist/utils/output.js +221 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/package-installation.js +1 -1
- package/dist/utils/package-installation.js.map +1 -1
- package/dist/utils/package-management.js +54 -15
- package/dist/utils/package-management.js.map +1 -1
- package/dist/utils/platform-mapper.js +150 -48
- package/dist/utils/platform-mapper.js.map +1 -1
- package/dist/utils/plugin-naming.js +95 -0
- package/dist/utils/plugin-naming.js.map +1 -1
- package/dist/utils/prompts.js +65 -49
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/resource-arg-parser.js +4 -1
- package/dist/utils/resource-arg-parser.js.map +1 -1
- package/dist/utils/root-file-uninstaller.js +2 -1
- package/dist/utils/root-file-uninstaller.js.map +1 -1
- package/dist/utils/scope-resolution.js +25 -38
- package/dist/utils/scope-resolution.js.map +1 -1
- package/dist/utils/smart-multiselect.js +60 -0
- package/dist/utils/smart-multiselect.js.map +1 -0
- package/dist/utils/source-operation-arguments.js +66 -0
- package/dist/utils/source-operation-arguments.js.map +1 -0
- package/dist/utils/validation/index.js +5 -0
- package/dist/utils/validation/index.js.map +1 -0
- package/dist/utils/validation/manifest.js +27 -0
- package/dist/utils/validation/manifest.js.map +1 -0
- package/dist/utils/validation/package-files.js +15 -0
- package/dist/utils/validation/package-files.js.map +1 -0
- package/dist/utils/validation/version.js +42 -0
- package/dist/utils/validation/version.js.map +1 -0
- package/dist/utils/workspace-index-ownership.js +11 -0
- package/dist/utils/workspace-index-ownership.js.map +1 -1
- package/dist/utils/workspace-package-context.js +68 -0
- package/dist/utils/workspace-package-context.js.map +1 -0
- package/package.json +3 -1
- package/platforms.jsonc +851 -69
- package/specs/add/README.md +7 -6
- package/specs/commands-overview.md +34 -34
- package/specs/install/install-behavior.md +0 -2
- package/specs/new/README.md +37 -172
- package/specs/new/SUMMARY.md +26 -41
- package/specs/publish/README.md +276 -56
- package/specs/remove/README.md +37 -26
- package/specs/save/README.md +0 -3
- package/specs/scope-management.md +4 -4
- package/specs/set/README.md +1 -1
- package/plans/format-detection/README.md +0 -225
- package/plans/format-detection/phase-1-file-detection.md +0 -436
- package/plans/format-detection/phase-2-package-detection.md +0 -457
- package/plans/format-detection/phase-3-import-flows.md +0 -448
- package/plans/format-detection/phase-3-summary.md +0 -271
- package/plans/format-detection/phase-4-integration.md +0 -453
- package/plans/format-detection/phase-4-summary.md +0 -376
- package/plans/format-detection/phase-5-validation.md +0 -642
- package/plans/format-detection/phase-6-documentation.md +0 -598
- package/plans/save-expansion/README.md +0 -198
- package/plans/save-expansion/SUMMARY.md +0 -382
- package/plans/save-expansion/phase-1-foundation.md +0 -426
- package/plans/save-expansion/phase-2-analysis.md +0 -504
- package/plans/save-expansion/phase-3-resolution.md +0 -597
- package/plans/save-expansion/phase-4-integration.md +0 -717
- package/specs/pack/README.md +0 -77
- package/specs/pack/package-name-resolution.md +0 -330
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-simplifier
|
|
3
|
+
description: Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Focuses on recently modified code unless instructed otherwise.
|
|
4
|
+
model: opus
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are an expert code simplification specialist focused on enhancing code clarity, consistency, and maintainability while preserving exact functionality. Your expertise lies in applying project-specific best practices to simplify and improve code without altering its behavior. You prioritize readable, explicit code over overly compact solutions. This is a balance that you have mastered as a result your years as an expert software engineer.
|
|
8
|
+
|
|
9
|
+
You will analyze recently modified code and apply refinements that:
|
|
10
|
+
|
|
11
|
+
1. **Preserve Functionality**: Never change what the code does - only how it does it. All original features, outputs, and behaviors must remain intact.
|
|
12
|
+
|
|
13
|
+
2. **Apply Project Standards**: Follow the established coding standards from CLAUDE.md including:
|
|
14
|
+
|
|
15
|
+
- Use ES modules with proper import sorting and extensions
|
|
16
|
+
- Prefer `function` keyword over arrow functions
|
|
17
|
+
- Use explicit return type annotations for top-level functions
|
|
18
|
+
- Follow proper React component patterns with explicit Props types
|
|
19
|
+
- Use proper error handling patterns (avoid try/catch when possible)
|
|
20
|
+
- Maintain consistent naming conventions
|
|
21
|
+
|
|
22
|
+
3. **Enhance Clarity**: Simplify code structure by:
|
|
23
|
+
|
|
24
|
+
- Reducing unnecessary complexity and nesting
|
|
25
|
+
- Eliminating redundant code and abstractions
|
|
26
|
+
- Improving readability through clear variable and function names
|
|
27
|
+
- Consolidating related logic
|
|
28
|
+
- Removing unnecessary comments that describe obvious code
|
|
29
|
+
- IMPORTANT: Avoid nested ternary operators - prefer switch statements or if/else chains for multiple conditions
|
|
30
|
+
- Choose clarity over brevity - explicit code is often better than overly compact code
|
|
31
|
+
|
|
32
|
+
4. **Maintain Balance**: Avoid over-simplification that could:
|
|
33
|
+
|
|
34
|
+
- Reduce code clarity or maintainability
|
|
35
|
+
- Create overly clever solutions that are hard to understand
|
|
36
|
+
- Combine too many concerns into single functions or components
|
|
37
|
+
- Remove helpful abstractions that improve code organization
|
|
38
|
+
- Prioritize "fewer lines" over readability (e.g., nested ternaries, dense one-liners)
|
|
39
|
+
- Make the code harder to debug or extend
|
|
40
|
+
|
|
41
|
+
5. **Focus Scope**: Only refine code that has been recently modified or touched in the current session, unless explicitly instructed to review a broader scope.
|
|
42
|
+
|
|
43
|
+
Your refinement process:
|
|
44
|
+
|
|
45
|
+
1. Identify the recently modified code sections
|
|
46
|
+
2. Analyze for opportunities to improve elegance and consistency
|
|
47
|
+
3. Apply project-specific best practices and coding standards
|
|
48
|
+
4. Ensure all functionality remains unchanged
|
|
49
|
+
5. Verify the refined code is simpler and more maintainable
|
|
50
|
+
6. Document only significant changes that affect understanding
|
|
51
|
+
|
|
52
|
+
You operate autonomously and proactively, refining code immediately after it's written or modified without requiring explicit requests. Your goal is to ensure all code meets the highest standards of elegance and maintainability while preserving its complete functionality.
|
package/README.md
CHANGED
|
@@ -104,12 +104,17 @@ opkg install https://github.com/vercel-labs/agent-skills/tree/main/skills/react-
|
|
|
104
104
|
|
|
105
105
|
| Option | Description |
|
|
106
106
|
| --- | --- |
|
|
107
|
-
| `-g, --global` | Install to
|
|
108
|
-
| `-a, --agents <agents...>` | Install specific agents by name |
|
|
107
|
+
| `-g, --global` | Install to home directory (~/) instead of current workspace |
|
|
109
108
|
| `-s, --skills <skills...>` | Install specific skills by name |
|
|
109
|
+
| `-a, --agents <agents...>` | Install specific agents by name |
|
|
110
|
+
| `-c, --commands <commands...>` | Install specific commands by name |
|
|
111
|
+
| `-r, --rules <rules...>` | Install specific rules by name |
|
|
110
112
|
| `--plugins <plugins...>` | Install specific plugins by name |
|
|
111
|
-
| `--platforms
|
|
112
|
-
|
|
|
113
|
+
| `--platforms <platforms...>` | Install to specific platforms (e.g., cursor claudecode opencode) |
|
|
114
|
+
| `-i, --interactive` | Interactively select resources to install |
|
|
115
|
+
| `--dev` | Add resource to dev-dependencies |
|
|
116
|
+
| `--remote` | Pull and install from remote registry, ignoring local versions |
|
|
117
|
+
| `--local` | Resolve and install using only local registry versions |
|
|
113
118
|
|
|
114
119
|
### List installed resources
|
|
115
120
|
```bash title="Terminal"
|
|
@@ -122,13 +127,12 @@ Use the list command to show an overview of packages and files installed.
|
|
|
122
127
|
|
|
123
128
|
| Option | Description |
|
|
124
129
|
| --- | --- |
|
|
125
|
-
| `-
|
|
126
|
-
| `-
|
|
127
|
-
| `-
|
|
128
|
-
| `-
|
|
129
|
-
| `-
|
|
130
|
-
|
|
|
131
|
-
| `--platforms` | Lists packages & files from specified platforms |
|
|
130
|
+
| `-s, --scope <scope>` | Workspace scope: project or global (default: both) |
|
|
131
|
+
| `-d, --deps` | Show dependency tree (full tree including transitive dependencies) |
|
|
132
|
+
| `-f, --files` | Show individual file paths |
|
|
133
|
+
| `-t, --tracked` | Show only tracked resources (skip untracked scan) |
|
|
134
|
+
| `-u, --untracked` | Show only untracked resources |
|
|
135
|
+
| `--platforms <platforms...>` | Filter by specific platforms (e.g., cursor, claude) |
|
|
132
136
|
|
|
133
137
|
### Uninstall packages
|
|
134
138
|
```bash title="Terminal"
|
|
@@ -140,7 +144,8 @@ Removes all files for a package from the codebase at cwd.
|
|
|
140
144
|
|
|
141
145
|
| Option | Description |
|
|
142
146
|
| --- | --- |
|
|
143
|
-
| `-g, --global` | Uninstall from
|
|
147
|
+
| `-g, --global` | Uninstall from home directory (~/) instead of current workspace |
|
|
148
|
+
| `-i, --interactive` | Interactively select items to uninstall |
|
|
144
149
|
|
|
145
150
|
> [!TIP]
|
|
146
151
|
> Learn more by heading over to the [official docs](https://openpackage.dev/docs).
|
|
@@ -151,6 +156,13 @@ Removes all files for a package from the codebase at cwd.
|
|
|
151
156
|
opkg new <package>
|
|
152
157
|
```
|
|
153
158
|
|
|
159
|
+
#### Options
|
|
160
|
+
|
|
161
|
+
| Option | Description |
|
|
162
|
+
| --- | --- |
|
|
163
|
+
| `--scope <scope>` | Package scope: root, project, or global (default: global) |
|
|
164
|
+
| `--path <path>` | Custom path for package directory (overrides scope) |
|
|
165
|
+
|
|
154
166
|
Then manually add/update/remove files to and from the package following this structure:
|
|
155
167
|
|
|
156
168
|
```txt title="Structure"
|
|
@@ -176,10 +188,27 @@ Then manually add/update/remove files to and from the package following this str
|
|
|
176
188
|
You can also use the `add` and `remove` commands to add/remove files to/from a package.
|
|
177
189
|
|
|
178
190
|
```bash title="Terminal"
|
|
179
|
-
opkg add <package>
|
|
180
|
-
opkg
|
|
191
|
+
opkg add --to <package> # Interactively select files from cwd to add to package
|
|
192
|
+
opkg add .cursor/commands/clean.md --to <package> # Adds workspace file or dir to package
|
|
193
|
+
opkg remove --from <package> # Interactively select files from package to remove
|
|
194
|
+
opkg remove commands/clean.md --from <package> # Removes file or dir from package
|
|
181
195
|
```
|
|
182
196
|
|
|
197
|
+
#### `add` options
|
|
198
|
+
|
|
199
|
+
| Option | Description |
|
|
200
|
+
| --- | --- |
|
|
201
|
+
| `--to <package-name>` | Target package (for dependency: which manifest; for copy: which package source) |
|
|
202
|
+
| `--dev` | Add to dev-dependencies instead of dependencies |
|
|
203
|
+
| `--copy` | Force copy mode (copy files instead of recording dependency) |
|
|
204
|
+
| `--platform-specific` | Save platform-specific variants for platform subdir inputs |
|
|
205
|
+
|
|
206
|
+
#### `remove` options
|
|
207
|
+
|
|
208
|
+
| Option | Description |
|
|
209
|
+
| --- | --- |
|
|
210
|
+
| `--from <package-name>` | Source package name (defaults to workspace package) |
|
|
211
|
+
|
|
183
212
|
> [!TIP]
|
|
184
213
|
> Learn more about packages from the [packages doc](https://openpackage.dev/docs/packages) on our official docs.
|
|
185
214
|
|
|
@@ -189,20 +218,46 @@ OpenPackage performs installation and platform sync of files for supported AI co
|
|
|
189
218
|
|
|
190
219
|
| Platform | Directory | Root file | Rules | Commands | Agents | Skills | MCP |
|
|
191
220
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
221
|
+
| AdaL | .adal/ | | | | | skills/ | settings.json |
|
|
222
|
+
| Amp | .agents/ | | checks/ | | | skills/ | .amp/settings.json |
|
|
192
223
|
| Antigravity | .agent/ | | rules/ | workflows/ | | skills/ | |
|
|
193
|
-
| Augment Code | .augment/ | | rules/ | commands/ | | | |
|
|
224
|
+
| Augment Code | .augment/ | | rules/ | commands/ | | skills/ | |
|
|
194
225
|
| Claude Code | .claude/ | CLAUDE.md | rules/ | commands/ | agents/ | skills/ | .mcp.json (root) |
|
|
195
|
-
|
|
|
196
|
-
|
|
|
197
|
-
|
|
|
198
|
-
|
|
|
199
|
-
|
|
|
200
|
-
|
|
|
201
|
-
|
|
|
226
|
+
| Claude Code Plugin | .claude-plugin/ | | rules/ | commands/ | agents/ | skills/ | .mcp.json (root) |
|
|
227
|
+
| Cline | .cline/ | | | | | skills/ | cline_mcp_settings.json |
|
|
228
|
+
| CodeBuddy | .codebuddy/ | | rules/ | | | skills/ | |
|
|
229
|
+
| Codex CLI | .codex/ | | | prompts/ | | skills/ | config.toml |
|
|
230
|
+
| Command Code | .commandcode/ | | | commands/ | agents/ | skills/ | |
|
|
231
|
+
| Continue | .continue/ | | rules/ | prompts/ | | skills/ | |
|
|
232
|
+
| Crush | .config/crush/ | | | | | skills/ | crush.json (root) |
|
|
233
|
+
| Cursor | .cursor/ | | rules/ | commands/ | agents/ | skills/ | mcp.json |
|
|
234
|
+
| Factory AI | .factory/ | | | commands/ | droids/ | skills/ | settings/mcp.json |
|
|
235
|
+
| GitHub Copilot | .github/ | | | | agents/ | skills/ | |
|
|
236
|
+
| Goose | .goose/ | | | | | skills/ | config.yaml |
|
|
237
|
+
| iFlow CLI | .iflow/ | IFLOW.md | | commands/ | agents/ | skills/ | settings.json |
|
|
238
|
+
| Junie | .junie/ | | | | | skills/ | |
|
|
239
|
+
| Kilo Code | .kilocode/ | | rules/ | workflows/ | | skills/ | mcp.json |
|
|
240
|
+
| Kimi Code CLI | .agents/ | | | | | skills/ | .kimi/mcp.json |
|
|
241
|
+
| Kiro | .kiro/ | | steering/ | | | skills/ | settings/mcp.json |
|
|
242
|
+
| Kode | .kode/ | | | | | skills/ | |
|
|
243
|
+
| MCPJam | .mcpjam/ | | | | | skills/ | |
|
|
244
|
+
| Mistral Vibe | .vibe/ | | | | | skills/ | |
|
|
245
|
+
| Mux | .mux/ | | | | | skills/ | |
|
|
246
|
+
| Neovate | .neovate/ | | | | | skills/ | mcp.json |
|
|
247
|
+
| OpenClaw | .openclaw/ | | | | | skills/ | |
|
|
248
|
+
| OpenCode | .opencode/ | | | commands/ | agents/ | skills/ | opencode.json |
|
|
249
|
+
| OpenHands | .openhands/ | | | | | skills/ | mcp.json |
|
|
250
|
+
| Pi-Mono | .pi/ | | | agent/prompts/ | | agent/skills/ | |
|
|
251
|
+
| Pochi | .pochi/ | | | | | skills/ | |
|
|
252
|
+
| Qoder | .qoder/ | | rules/ | commands/ | agents/ | skills/ | |
|
|
202
253
|
| Qwen Code | .qwen/ | QWEN.md | | | agents/ | skills/ | settings.json |
|
|
203
|
-
|
|
|
204
|
-
|
|
|
254
|
+
| Replit | .agents/ | replit.md | | | | skills/ | |
|
|
255
|
+
| Roo Code | .roo/ | | | commands/ | | skills/ | mcp.json |
|
|
256
|
+
| Trae | .trae/ | | rules/ | | | skills/ | |
|
|
257
|
+
| Trae CN | .trae-cn/ | | rules/ | | | skills/ | |
|
|
258
|
+
| Warp | .warp/ | WARP.md | | | | | |
|
|
205
259
|
| Windsurf | .windsurf/ | | rules/ | | | skills/ | |
|
|
260
|
+
| Zencoder | .zencoder/ | | | | | skills/ | |
|
|
206
261
|
|
|
207
262
|
The built-in `platforms.jsonc` defines supported platforms, but can be overridden by user configs:
|
|
208
263
|
- Global: `~/.openpackage/platforms.jsonc` (`.json`)
|
package/dist/commands/add.js
CHANGED
|
@@ -1,70 +1,220 @@
|
|
|
1
|
+
import { join, relative, resolve } from 'path';
|
|
1
2
|
import { withErrorHandling } from '../utils/errors.js';
|
|
2
|
-
import { runAddToSourcePipeline } from '../core/add/add-to-source-pipeline.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { runAddToSourcePipeline, runAddToSourcePipelineBatch } from '../core/add/add-to-source-pipeline.js';
|
|
4
|
+
import { classifyAddInput } from '../core/add/add-input-classifier.js';
|
|
5
|
+
import { runAddDependencyFlow } from '../core/add/add-dependency-flow.js';
|
|
6
|
+
import { formatPathForDisplay, getTreeConnector } from '../utils/formatters.js';
|
|
7
|
+
import { interactiveFileSelect } from '../utils/interactive-file-selector.js';
|
|
8
|
+
import { expandDirectorySelections, hasDirectorySelections } from '../utils/expand-directory-selections.js';
|
|
9
|
+
import { createExecutionContext } from '../core/execution-context.js';
|
|
10
|
+
import { resolveMutableSource } from '../core/source-resolution/resolve-mutable-source.js';
|
|
11
|
+
import { buildWorkspacePackageContext } from '../utils/workspace-package-context.js';
|
|
12
|
+
import { createInteractionPolicy, PromptTier } from '../core/interaction-policy.js';
|
|
13
|
+
import { setOutputMode, output, isInteractive } from '../utils/output.js';
|
|
14
|
+
import { exists } from '../utils/fs.js';
|
|
5
15
|
/**
|
|
6
|
-
* Display add operation results
|
|
16
|
+
* Display add operation results.
|
|
17
|
+
* Interactive: flat list in clack note (like uninstall -i).
|
|
18
|
+
* Non-interactive: tree view with connectors.
|
|
19
|
+
* @param skipHeader - When true (interactive add), header was already shown before selection
|
|
7
20
|
*/
|
|
8
|
-
function displayAddResults(data,
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
21
|
+
function displayAddResults(data, skipHeader = false) {
|
|
22
|
+
const { filesAdded, packageName: resolvedName, addedFilePaths, isWorkspaceRoot, sourcePath } = data;
|
|
23
|
+
const target = isWorkspaceRoot ? 'workspace package' : resolvedName;
|
|
24
|
+
if (!skipHeader) {
|
|
25
|
+
const pkgLabel = isWorkspaceRoot ? 'workspace package' : resolvedName;
|
|
26
|
+
const displayPath = formatPathForDisplay(sourcePath, process.cwd());
|
|
27
|
+
const header = `To: ${pkgLabel} (${displayPath})`;
|
|
28
|
+
if (isInteractive())
|
|
29
|
+
output.info(header);
|
|
30
|
+
else
|
|
31
|
+
output.success(header);
|
|
17
32
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
33
|
+
if (filesAdded > 0) {
|
|
34
|
+
const count = filesAdded === 1 ? '1 file' : `${filesAdded} files`;
|
|
35
|
+
output.success(`Added ${count} to ${target}`);
|
|
36
|
+
const sortedFiles = [...(addedFilePaths || [])].sort((a, b) => a.localeCompare(b));
|
|
37
|
+
const relPaths = sortedFiles.map((f) => relative(sourcePath, f).replace(/\\/g, '/'));
|
|
38
|
+
if (isInteractive()) {
|
|
39
|
+
const maxDisplay = 10;
|
|
40
|
+
const displayPaths = relPaths.slice(0, maxDisplay);
|
|
41
|
+
const more = relPaths.length > maxDisplay ? `\n... and ${relPaths.length - maxDisplay} more` : '';
|
|
42
|
+
output.note(displayPaths.join('\n') + more, 'Added files');
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
for (let i = 0; i < relPaths.length; i++) {
|
|
46
|
+
const connector = getTreeConnector(i === relPaths.length - 1);
|
|
47
|
+
output.message(` ${connector}${relPaths[i]}`);
|
|
48
|
+
}
|
|
27
49
|
}
|
|
28
50
|
}
|
|
29
51
|
else {
|
|
30
|
-
|
|
52
|
+
output.success(`No new files added to ${target}`);
|
|
31
53
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
54
|
+
}
|
|
55
|
+
function displayDependencyResult(result, classification) {
|
|
56
|
+
const displayPath = formatPathForDisplay(result.targetManifest, process.cwd());
|
|
57
|
+
const header = `To: ${result.packageName} (${displayPath})`;
|
|
58
|
+
if (isInteractive())
|
|
59
|
+
output.info(header);
|
|
60
|
+
else
|
|
61
|
+
output.success(header);
|
|
62
|
+
// Show auto-detection hint for local paths
|
|
63
|
+
if (result.wasAutoDetected) {
|
|
64
|
+
output.info(`Detected package at ${classification.localPath} — adding as dependency.`);
|
|
65
|
+
output.message('To copy files instead, use --copy.');
|
|
66
|
+
}
|
|
67
|
+
const versionSuffix = classification.version ? `@${classification.version}` : '';
|
|
68
|
+
output.success(`Added ${result.packageName}${versionSuffix} to ${result.section}`);
|
|
69
|
+
output.message(`in ${formatPathForDisplay(result.targetManifest, process.cwd())}`);
|
|
70
|
+
}
|
|
71
|
+
/** Check if input looks like a bare name (could be registry or local path) */
|
|
72
|
+
function isBareNameInput(input) {
|
|
73
|
+
return (!input.startsWith('./') &&
|
|
74
|
+
!input.startsWith('../') &&
|
|
75
|
+
!input.startsWith('/') &&
|
|
76
|
+
!input.startsWith('~') &&
|
|
77
|
+
!input.endsWith('/'));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Process a single resource spec through the add pipeline
|
|
81
|
+
*/
|
|
82
|
+
async function processAddResource(resourceSpec, options, cwd, execContext) {
|
|
83
|
+
const classification = await classifyAddInput(resourceSpec, cwd, {
|
|
84
|
+
copy: options.copy,
|
|
85
|
+
dev: options.dev,
|
|
86
|
+
});
|
|
87
|
+
if (classification.mode === 'dependency') {
|
|
88
|
+
if (options.platformSpecific) {
|
|
89
|
+
// --platform-specific is only valid for copy mode
|
|
90
|
+
throw new Error('--platform-specific can only be used with --copy or when adding files');
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const result = await runAddDependencyFlow(classification, {
|
|
94
|
+
dev: options.dev,
|
|
95
|
+
to: options.to,
|
|
96
|
+
});
|
|
97
|
+
displayDependencyResult(result, classification);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
101
|
+
if (isBareNameInput(resourceSpec)) {
|
|
102
|
+
const localPath = resolve(cwd, resourceSpec);
|
|
103
|
+
if (await exists(localPath)) {
|
|
104
|
+
throw new Error(`${msg}\n\nA local path './${resourceSpec}' exists — did you mean:\n opkg add ./${resourceSpec}`);
|
|
105
|
+
}
|
|
46
106
|
}
|
|
47
|
-
|
|
48
|
-
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (classification.mode === 'workspace-resource') {
|
|
111
|
+
if (options.dev) {
|
|
112
|
+
throw new Error('--dev can only be used when adding a dependency, not when copying files');
|
|
113
|
+
}
|
|
114
|
+
const resource = classification.resolvedResource;
|
|
115
|
+
const ctx = await createExecutionContext({
|
|
116
|
+
global: resource.scope === 'global',
|
|
49
117
|
});
|
|
118
|
+
const absPath = resource.sourcePath || join(ctx.targetDir, resource.targetFiles[0]);
|
|
119
|
+
const packageName = options.to;
|
|
120
|
+
const result = await runAddToSourcePipeline(packageName, absPath, { ...options, execContext });
|
|
121
|
+
if (!result.success) {
|
|
122
|
+
throw new Error(result.error || 'Add operation failed');
|
|
123
|
+
}
|
|
124
|
+
if (result.data) {
|
|
125
|
+
output.info(`Resolved "${resourceSpec}" from installed workspace resources.`);
|
|
126
|
+
displayAddResults(result.data);
|
|
127
|
+
}
|
|
50
128
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
.description('Add files to a mutable package source or workspace package')
|
|
58
|
-
.option('--platform-specific', 'Save platform-specific variants for platform subdir inputs')
|
|
59
|
-
.action(withErrorHandling(async (packageName, pathArg, options) => {
|
|
60
|
-
const result = await runAddToSourcePipeline(packageName, pathArg, options);
|
|
129
|
+
else {
|
|
130
|
+
if (options.dev) {
|
|
131
|
+
throw new Error('--dev can only be used when adding a dependency, not when copying files');
|
|
132
|
+
}
|
|
133
|
+
const packageName = options.to;
|
|
134
|
+
const result = await runAddToSourcePipeline(packageName, classification.copySourcePath, { ...options, execContext });
|
|
61
135
|
if (!result.success) {
|
|
62
136
|
throw new Error(result.error || 'Add operation failed');
|
|
63
137
|
}
|
|
64
|
-
// Display results
|
|
65
138
|
if (result.data) {
|
|
66
|
-
displayAddResults(result.data
|
|
139
|
+
displayAddResults(result.data);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
export function setupAddCommand(program) {
|
|
144
|
+
program
|
|
145
|
+
.command('add')
|
|
146
|
+
.argument('[resource-spec]', 'resource to add (package[@version], gh@owner/repo, https://github.com/owner/repo, or /path/to/file). If omitted, shows interactive file selector.')
|
|
147
|
+
.description('Add a dependency to openpackage.yml or copy files to a package')
|
|
148
|
+
.option('--to <package-name>', 'target package (for dependency: which manifest; for copy: which package source)')
|
|
149
|
+
.option('--dev', 'add to dev-dependencies instead of dependencies')
|
|
150
|
+
.option('--copy', 'force copy mode (copy files instead of recording dependency)')
|
|
151
|
+
.option('--platform-specific', 'save platform-specific variants for platform subdir inputs')
|
|
152
|
+
.option('--force', 'overwrite existing files without prompting')
|
|
153
|
+
.action(withErrorHandling(async (resource, options, command) => {
|
|
154
|
+
const cwd = process.cwd();
|
|
155
|
+
const programOpts = command.parent?.opts() || {};
|
|
156
|
+
const execContext = await createExecutionContext({
|
|
157
|
+
global: false,
|
|
158
|
+
cwd: programOpts.cwd,
|
|
159
|
+
});
|
|
160
|
+
const policy = createInteractionPolicy({
|
|
161
|
+
interactive: !resource,
|
|
162
|
+
force: options.force,
|
|
163
|
+
});
|
|
164
|
+
execContext.interactionPolicy = policy;
|
|
165
|
+
// Set output mode: interactive (clack UI) when no resource, plain console otherwise
|
|
166
|
+
setOutputMode(!resource);
|
|
167
|
+
// If no resource provided, show interactive file selector
|
|
168
|
+
if (!resource) {
|
|
169
|
+
if (!policy.canPrompt(PromptTier.OptionalMenu)) {
|
|
170
|
+
throw new Error('<resource-spec> argument is required in non-interactive mode.\n' +
|
|
171
|
+
'Usage: opkg add <resource-spec> [options]\n\n' +
|
|
172
|
+
'Examples:\n' +
|
|
173
|
+
' opkg add ./path/to/file.txt # Add local file\n' +
|
|
174
|
+
' opkg add gh@owner/repo # Add from GitHub\n' +
|
|
175
|
+
' opkg add package@version # Add package dependency');
|
|
176
|
+
}
|
|
177
|
+
// Resolve target package and show header before file selection
|
|
178
|
+
let pkgLabel;
|
|
179
|
+
let sourcePath;
|
|
180
|
+
if (options.to) {
|
|
181
|
+
const source = await resolveMutableSource({ cwd, packageName: options.to });
|
|
182
|
+
pkgLabel = source.packageName;
|
|
183
|
+
sourcePath = source.absolutePath;
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
const context = await buildWorkspacePackageContext(cwd);
|
|
187
|
+
pkgLabel = 'workspace package';
|
|
188
|
+
sourcePath = context.packageRootDir;
|
|
189
|
+
}
|
|
190
|
+
const displayPath = formatPathForDisplay(sourcePath, cwd);
|
|
191
|
+
output.step(`To: ${pkgLabel} (${displayPath})`);
|
|
192
|
+
output.connector();
|
|
193
|
+
// Show interactive file selector
|
|
194
|
+
const selectedFiles = await interactiveFileSelect({ cwd, includeDirs: true });
|
|
195
|
+
// Handle cancellation or empty selection
|
|
196
|
+
if (!selectedFiles || selectedFiles.length === 0) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
// Expand any directory selections to individual files
|
|
200
|
+
let filesToProcess;
|
|
201
|
+
if (hasDirectorySelections(selectedFiles)) {
|
|
202
|
+
filesToProcess = await expandDirectorySelections(selectedFiles, cwd);
|
|
203
|
+
output.info(`Found ${filesToProcess.length} total file${filesToProcess.length === 1 ? '' : 's'} to add`);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
filesToProcess = selectedFiles;
|
|
207
|
+
}
|
|
208
|
+
const absPaths = filesToProcess.map((f) => join(cwd, f));
|
|
209
|
+
const result = await runAddToSourcePipelineBatch(options.to, absPaths, cwd, { ...options, execContext });
|
|
210
|
+
if (!result.success)
|
|
211
|
+
throw new Error(result.error || 'Add operation failed');
|
|
212
|
+
if (result.data)
|
|
213
|
+
displayAddResults(result.data, true);
|
|
214
|
+
return;
|
|
67
215
|
}
|
|
216
|
+
// Process single resource (existing behavior)
|
|
217
|
+
await processAddResource(resource, options, cwd, execContext);
|
|
68
218
|
}));
|
|
69
219
|
}
|
|
70
220
|
//# sourceMappingURL=add.js.map
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -16,17 +16,24 @@ export function setupInstallCommand(program) {
|
|
|
16
16
|
.option('-g, --global', 'install to home directory (~/) instead of current workspace')
|
|
17
17
|
.option('-a, --agents <names...>', 'install specific agents by name (matches frontmatter name or filename)')
|
|
18
18
|
.option('-s, --skills <names...>', 'install specific skills by name (matches SKILL.md frontmatter name or directory name)')
|
|
19
|
+
.option('-r, --rules <names...>', 'install specific rules by name (matches frontmatter name or filename)')
|
|
20
|
+
.option('-c, --commands <names...>', 'install specific commands by name (matches frontmatter name or filename)')
|
|
19
21
|
.option('--plugins <names...>', 'install specific plugins from marketplace (bypasses interactive selection)')
|
|
20
22
|
.option('--platforms <platforms...>', 'install to specific platforms (e.g., cursor claudecode opencode)')
|
|
23
|
+
.option('-i, --interactive', 'interactively select resources to install (agents, skills, commands, etc.)')
|
|
21
24
|
.option('--dry-run', 'preview changes without applying them')
|
|
22
25
|
.option('--force', 'overwrite existing files')
|
|
23
|
-
.option('--conflicts <strategy>', 'conflict handling strategy:
|
|
26
|
+
.option('--conflicts <strategy>', 'conflict handling strategy: namespace, overwrite, skip, or ask')
|
|
24
27
|
.option('--dev', 'add resource to dev-dependencies (instead of dependencies)')
|
|
25
28
|
.option('--remote', 'pull and install from remote registry, ignoring local versions')
|
|
26
29
|
.option('--local', 'resolve and install using only local registry versions, skipping remote metadata and pulls')
|
|
27
30
|
.option('--profile <profile>', 'profile to use for authentication')
|
|
28
31
|
.option('--api-key <key>', 'API key for authentication (overrides profile)')
|
|
29
32
|
.action(withErrorHandling(async (packageName, options, command) => {
|
|
33
|
+
// Validate mutually exclusive options
|
|
34
|
+
if (options.interactive && (options.agents || options.skills || options.rules || options.commands)) {
|
|
35
|
+
throw new Error('--interactive cannot be used with --agents, --skills, --rules, or --commands. Use --interactive for interactive selection or specify filters directly.');
|
|
36
|
+
}
|
|
30
37
|
// Get program-level options (for --cwd)
|
|
31
38
|
const programOpts = command.parent?.opts() || {};
|
|
32
39
|
// Create telemetry collector
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,+BAA+B,CAAC;SAC5C,QAAQ,CACP,iBAAiB,EACjB,6HAA6H,CAC9H;SACA,MAAM,CAAC,cAAc,EAAE,6DAA6D,CAAC;SACrF,MAAM,CAAC,yBAAyB,EAAE,wEAAwE,CAAC;SAC3G,MAAM,CAAC,yBAAyB,EAAE,uFAAuF,CAAC;SAC1H,MAAM,CAAC,sBAAsB,EAAE,4EAA4E,CAAC;SAC5G,MAAM,CAAC,4BAA4B,EAAE,kEAAkE,CAAC;SACxG,MAAM,CAAC,WAAW,EAAE,uCAAuC,CAAC;SAC5D,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC;SAC7C,MAAM,CAAC,wBAAwB,EAAE,gEAAgE,CAAC;SAClG,MAAM,CAAC,OAAO,EAAE,4DAA4D,CAAC;SAC7E,MAAM,CAAC,UAAU,EAAE,gEAAgE,CAAC;SACpF,MAAM,CAAC,SAAS,EAAE,4FAA4F,CAAC;SAC/G,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;SAC3E,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAC7B,WAA+B,EAC/B,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|