opkg 0.8.3 → 0.8.5

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.
Files changed (224) hide show
  1. package/README.md +43 -21
  2. package/dist/commands/install.js +36 -8
  3. package/dist/commands/install.js.map +1 -1
  4. package/dist/commands/list.js +640 -72
  5. package/dist/commands/list.js.map +1 -1
  6. package/dist/commands/save.js +10 -29
  7. package/dist/commands/save.js.map +1 -1
  8. package/dist/commands/status.js +169 -78
  9. package/dist/commands/status.js.map +1 -1
  10. package/dist/commands/uninstall.js +92 -5
  11. package/dist/commands/uninstall.js.map +1 -1
  12. package/dist/core/config.js +66 -12
  13. package/dist/core/config.js.map +1 -1
  14. package/dist/core/flows/flow-source-discovery.js +19 -2
  15. package/dist/core/flows/flow-source-discovery.js.map +1 -1
  16. package/dist/core/flows/switch-resolver.js +56 -8
  17. package/dist/core/flows/switch-resolver.js.map +1 -1
  18. package/dist/core/install/base-detector.js +0 -9
  19. package/dist/core/install/base-detector.js.map +1 -1
  20. package/dist/core/install/convenience-matchers.js +66 -47
  21. package/dist/core/install/convenience-matchers.js.map +1 -1
  22. package/dist/core/install/conversion-context.js +163 -0
  23. package/dist/core/install/conversion-context.js.map +1 -0
  24. package/dist/core/install/conversion-coordinator.js +267 -0
  25. package/dist/core/install/conversion-coordinator.js.map +1 -0
  26. package/dist/core/install/detection-types.js +8 -0
  27. package/dist/core/install/detection-types.js.map +1 -0
  28. package/dist/core/install/download-keys.js +1 -2
  29. package/dist/core/install/download-keys.js.map +1 -1
  30. package/dist/core/install/file-format-detector.js +292 -0
  31. package/dist/core/install/file-format-detector.js.map +1 -0
  32. package/dist/core/install/format-detector.js +87 -19
  33. package/dist/core/install/format-detector.js.map +1 -1
  34. package/dist/core/install/format-distribution-analyzer.js +215 -0
  35. package/dist/core/install/format-distribution-analyzer.js.map +1 -0
  36. package/dist/core/install/format-group-merger.js +206 -0
  37. package/dist/core/install/format-group-merger.js.map +1 -0
  38. package/dist/core/install/import-flow-converter.js +430 -0
  39. package/dist/core/install/import-flow-converter.js.map +1 -0
  40. package/dist/core/install/list-handler.js +113 -0
  41. package/dist/core/install/list-handler.js.map +1 -0
  42. package/dist/core/install/marketplace-handler.js +41 -28
  43. package/dist/core/install/marketplace-handler.js.map +1 -1
  44. package/dist/core/install/operations/conflict-handler.js +0 -6
  45. package/dist/core/install/operations/conflict-handler.js.map +1 -1
  46. package/dist/core/install/operations/installation-executor.js +49 -2
  47. package/dist/core/install/operations/installation-executor.js.map +1 -1
  48. package/dist/core/install/operations/root-files.js +0 -9
  49. package/dist/core/install/operations/root-files.js.map +1 -1
  50. package/dist/core/install/orchestrator/orchestrator.js +19 -3
  51. package/dist/core/install/orchestrator/orchestrator.js.map +1 -1
  52. package/dist/core/install/orchestrator/strategies/git-strategy.js +4 -2
  53. package/dist/core/install/orchestrator/strategies/git-strategy.js.map +1 -1
  54. package/dist/core/install/package-marker-detector.js +185 -0
  55. package/dist/core/install/package-marker-detector.js.map +1 -0
  56. package/dist/core/install/path-package-loader.js +0 -9
  57. package/dist/core/install/path-package-loader.js.map +1 -1
  58. package/dist/core/install/plugin-detector.js +0 -3
  59. package/dist/core/install/plugin-detector.js.map +1 -1
  60. package/dist/core/install/plugin-metadata-resolver.js +0 -7
  61. package/dist/core/install/plugin-metadata-resolver.js.map +1 -1
  62. package/dist/core/install/plugin-sources.js +0 -15
  63. package/dist/core/install/plugin-sources.js.map +1 -1
  64. package/dist/core/install/plugin-transformer.js +0 -17
  65. package/dist/core/install/plugin-transformer.js.map +1 -1
  66. package/dist/core/install/preprocessing/convenience-preprocessor.js +2 -1
  67. package/dist/core/install/preprocessing/convenience-preprocessor.js.map +1 -1
  68. package/dist/core/install/preprocessing/input-classifier.js +1 -3
  69. package/dist/core/install/preprocessing/input-classifier.js.map +1 -1
  70. package/dist/core/install/preprocessing/options-normalizer.js +3 -0
  71. package/dist/core/install/preprocessing/options-normalizer.js.map +1 -1
  72. package/dist/core/install/remote-flow.js +1 -2
  73. package/dist/core/install/remote-flow.js.map +1 -1
  74. package/dist/core/install/resolution/executor.js +0 -5
  75. package/dist/core/install/resolution/executor.js.map +1 -1
  76. package/dist/core/install/resolution/installation-planner.js +0 -5
  77. package/dist/core/install/resolution/installation-planner.js.map +1 -1
  78. package/dist/core/install/resource-discoverer.js +233 -0
  79. package/dist/core/install/resource-discoverer.js.map +1 -0
  80. package/dist/core/install/resource-selection-menu.js +299 -0
  81. package/dist/core/install/resource-selection-menu.js.map +1 -0
  82. package/dist/core/install/resource-types.js +5 -0
  83. package/dist/core/install/resource-types.js.map +1 -0
  84. package/dist/core/install/schema-registry.js +205 -0
  85. package/dist/core/install/schema-registry.js.map +1 -0
  86. package/dist/core/install/sources/base.js.map +1 -1
  87. package/dist/core/install/sources/git-source.js +0 -4
  88. package/dist/core/install/sources/git-source.js.map +1 -1
  89. package/dist/core/install/sources/path-source.js +0 -4
  90. package/dist/core/install/sources/path-source.js.map +1 -1
  91. package/dist/core/install/sources/registry-source.js +44 -2
  92. package/dist/core/install/sources/registry-source.js.map +1 -1
  93. package/dist/core/install/sources/workspace-source.js +0 -2
  94. package/dist/core/install/sources/workspace-source.js.map +1 -1
  95. package/dist/core/install/strategies/base-strategy.js +1 -21
  96. package/dist/core/install/strategies/base-strategy.js.map +1 -1
  97. package/dist/core/install/strategies/conversion-strategy.js +0 -1
  98. package/dist/core/install/strategies/conversion-strategy.js.map +1 -1
  99. package/dist/core/install/strategies/flow-based-strategy.js +0 -4
  100. package/dist/core/install/strategies/flow-based-strategy.js.map +1 -1
  101. package/dist/core/install/strategies/helpers/temp-directory.js +37 -8
  102. package/dist/core/install/strategies/helpers/temp-directory.js.map +1 -1
  103. package/dist/core/install/strategies/strategy-selector.js +0 -17
  104. package/dist/core/install/strategies/strategy-selector.js.map +1 -1
  105. package/dist/core/install/unified/context-builders.js +3 -5
  106. package/dist/core/install/unified/context-builders.js.map +1 -1
  107. package/dist/core/install/unified/phases/conflicts.js +0 -2
  108. package/dist/core/install/unified/phases/conflicts.js.map +1 -1
  109. package/dist/core/install/unified/phases/convert.js +237 -0
  110. package/dist/core/install/unified/phases/convert.js.map +1 -0
  111. package/dist/core/install/unified/phases/execute.js +39 -5
  112. package/dist/core/install/unified/phases/execute.js.map +1 -1
  113. package/dist/core/install/unified/phases/load-package.js +2 -19
  114. package/dist/core/install/unified/phases/load-package.js.map +1 -1
  115. package/dist/core/install/unified/phases/manifest.js +0 -2
  116. package/dist/core/install/unified/phases/manifest.js.map +1 -1
  117. package/dist/core/install/unified/phases/report.js +0 -2
  118. package/dist/core/install/unified/phases/report.js.map +1 -1
  119. package/dist/core/install/unified/phases/resolve-dependencies.js +0 -1
  120. package/dist/core/install/unified/phases/resolve-dependencies.js.map +1 -1
  121. package/dist/core/install/unified/pipeline.js +15 -4
  122. package/dist/core/install/unified/pipeline.js.map +1 -1
  123. package/dist/core/list/list-pipeline.js +441 -32
  124. package/dist/core/list/list-pipeline.js.map +1 -1
  125. package/dist/core/list/list-tree-renderer.js +104 -0
  126. package/dist/core/list/list-tree-renderer.js.map +1 -0
  127. package/dist/core/list/platform-detection.js +93 -0
  128. package/dist/core/list/platform-detection.js.map +1 -0
  129. package/dist/core/list/remote-list-resolver.js +179 -0
  130. package/dist/core/list/remote-list-resolver.js.map +1 -0
  131. package/dist/core/list/untracked-files-scanner.js +471 -0
  132. package/dist/core/list/untracked-files-scanner.js.map +1 -0
  133. package/dist/core/platforms.js +111 -39
  134. package/dist/core/platforms.js.map +1 -1
  135. package/dist/core/resources/installed-resources.js +35 -0
  136. package/dist/core/resources/installed-resources.js.map +1 -0
  137. package/dist/core/resources/markdown-metadata.js +24 -0
  138. package/dist/core/resources/markdown-metadata.js.map +1 -0
  139. package/dist/core/resources/resource-catalog.js +20 -0
  140. package/dist/core/resources/resource-catalog.js.map +1 -0
  141. package/dist/core/resources/resource-naming.js +16 -0
  142. package/dist/core/resources/resource-naming.js.map +1 -0
  143. package/dist/core/resources/resource-registry.js +48 -0
  144. package/dist/core/resources/resource-registry.js.map +1 -0
  145. package/dist/core/resources/source-key-classifier.js +22 -0
  146. package/dist/core/resources/source-key-classifier.js.map +1 -0
  147. package/dist/core/save/save-candidate-builder.js +126 -48
  148. package/dist/core/save/save-candidate-builder.js.map +1 -1
  149. package/dist/core/save/save-conflict-analyzer.js +184 -29
  150. package/dist/core/save/save-conflict-analyzer.js.map +1 -1
  151. package/dist/core/save/save-conversion-helper.js +522 -0
  152. package/dist/core/save/save-conversion-helper.js.map +1 -0
  153. package/dist/core/save/save-group-builder.js +197 -16
  154. package/dist/core/save/save-group-builder.js.map +1 -1
  155. package/dist/core/save/save-interactive-resolver.js +143 -28
  156. package/dist/core/save/save-interactive-resolver.js.map +1 -1
  157. package/dist/core/save/save-merge-extractor.js +272 -0
  158. package/dist/core/save/save-merge-extractor.js.map +1 -0
  159. package/dist/core/save/save-platform-handler.js +57 -17
  160. package/dist/core/save/save-platform-handler.js.map +1 -1
  161. package/dist/core/save/save-resolution-executor.js +76 -24
  162. package/dist/core/save/save-resolution-executor.js.map +1 -1
  163. package/dist/core/save/save-result-reporter.js +140 -131
  164. package/dist/core/save/save-result-reporter.js.map +1 -1
  165. package/dist/core/save/save-to-source-pipeline.js +137 -58
  166. package/dist/core/save/save-to-source-pipeline.js.map +1 -1
  167. package/dist/core/save/save-types.js +6 -0
  168. package/dist/core/save/save-types.js.map +1 -1
  169. package/dist/core/save/save-write-coordinator.js +416 -49
  170. package/dist/core/save/save-write-coordinator.js.map +1 -1
  171. package/dist/core/status/status-pipeline.js +56 -128
  172. package/dist/core/status/status-pipeline.js.map +1 -1
  173. package/dist/core/status/tracked-files-collector.js +128 -0
  174. package/dist/core/status/tracked-files-collector.js.map +1 -0
  175. package/dist/core/uninstall/uninstall-pipeline.js +49 -1
  176. package/dist/core/uninstall/uninstall-pipeline.js.map +1 -1
  177. package/dist/index.js +3 -1
  178. package/dist/index.js.map +1 -1
  179. package/dist/types/index.js.map +1 -1
  180. package/dist/utils/entity-detector.js +78 -0
  181. package/dist/utils/entity-detector.js.map +1 -0
  182. package/dist/utils/flow-index-installer.js +7 -4
  183. package/dist/utils/flow-index-installer.js.map +1 -1
  184. package/dist/utils/formatters.js +1 -1
  185. package/dist/utils/fs.js +58 -0
  186. package/dist/utils/fs.js.map +1 -1
  187. package/dist/utils/pattern-matcher.js +16 -0
  188. package/dist/utils/pattern-matcher.js.map +1 -1
  189. package/dist/utils/platform-mapper.js +105 -43
  190. package/dist/utils/platform-mapper.js.map +1 -1
  191. package/dist/utils/platform-normalization.js +57 -0
  192. package/dist/utils/platform-normalization.js.map +1 -0
  193. package/dist/utils/plugin-naming.js +52 -0
  194. package/dist/utils/plugin-naming.js.map +1 -1
  195. package/dist/utils/smart-multiselect.js +60 -0
  196. package/dist/utils/smart-multiselect.js.map +1 -0
  197. package/dist/utils/telemetry.js +166 -0
  198. package/dist/utils/telemetry.js.map +1 -0
  199. package/dist/utils/workspace-index-ownership.js +11 -0
  200. package/dist/utils/workspace-index-ownership.js.map +1 -1
  201. package/examples/config.jsonc +53 -0
  202. package/package.json +2 -1
  203. package/plans/format-detection/README.md +225 -0
  204. package/plans/format-detection/phase-1-file-detection.md +436 -0
  205. package/plans/format-detection/phase-2-package-detection.md +457 -0
  206. package/plans/format-detection/phase-3-import-flows.md +448 -0
  207. package/plans/format-detection/phase-3-summary.md +271 -0
  208. package/plans/format-detection/phase-4-integration.md +453 -0
  209. package/plans/format-detection/phase-4-summary.md +376 -0
  210. package/plans/format-detection/phase-5-validation.md +642 -0
  211. package/plans/format-detection/phase-6-documentation.md +598 -0
  212. package/plans/save-expansion/README.md +198 -0
  213. package/plans/save-expansion/SUMMARY.md +382 -0
  214. package/plans/save-expansion/phase-1-foundation.md +426 -0
  215. package/plans/save-expansion/phase-2-analysis.md +504 -0
  216. package/plans/save-expansion/phase-3-resolution.md +597 -0
  217. package/plans/save-expansion/phase-4-integration.md +717 -0
  218. package/platforms.jsonc +32 -8
  219. package/schemas/formats/claude-agent.schema.json +52 -0
  220. package/schemas/formats/opencode-agent.schema.json +64 -0
  221. package/schemas/formats/universal-agent.schema.json +29 -0
  222. package/schemas/platforms-v1.json +47 -4
  223. package/specs/commands-overview.md +18 -0
  224. package/specs/save/README.md +192 -0
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  </a>
10
10
  </p>
11
11
 
12
- <p align="center">Universal plugins for coding agents.</p>
12
+ <p align="center">The package manager for coding agent configs.</p>
13
13
  <p align="center">
14
14
  <a href="https://www.npmjs.com/package/opkg " target="blank">
15
15
  <img src="https://img.shields.io/npm/v/opkg?style=flat-square" alt="Npm package for OpenPackage">
@@ -33,8 +33,7 @@ OpenPackage enables simple, modular management of coding agent configs, providin
33
33
 
34
34
  ## Why OpenPackage?
35
35
 
36
- Modern AI coding tools are powerful and efficient when rules, commands, subagents, and skills are properly setup.
37
- Unfortunately, these files remain difficult to organize and manage.
36
+ Modern AI coding tools are powerful and efficient when rules, commands, subagents, and skills are properly setup. Unfortunately, these files remain difficult to organize and manage.
38
37
 
39
38
  OpenPackage provides a centralized and universal interface for installing, uninstalling, and packaging coding agent config files for simplified management and distribution.
40
39
 
@@ -54,7 +53,7 @@ OpenPackage provides a centralized and universal interface for installing, unins
54
53
 
55
54
  At its core, OpenPackage is a lightweight CLI package manager that performs installs and uninstalls of config files, with the ability to keep track of file sources and dependencies, plus packaging capabilities.
56
55
 
57
- It's basically a much more powerful, universal, and open source version of Claude Code Plugins.
56
+ It's basically a much more powerful, universal, and open source version of Vercel Skills and Claude Code Plugins.
58
57
 
59
58
  ## Install OpenPackage
60
59
 
@@ -75,44 +74,61 @@ Installs all files from a specified resource into the codebase at cwd, formatted
75
74
  #### Install resources (packages, plugins, rules, commands, agents, and skills)
76
75
 
77
76
  ```bash title="Terminal"
78
- # Packages or Marketplaces
79
- opkg install gh@<user>/<repo>
77
+ # OpenPackage local or remote packages
78
+ opkg install <package-name>
80
79
 
81
- # Packages or Claude Plugins hosted on GitHub
82
- opkg install gh@<user>/<repo> --plugins <plugin-name>
83
-
84
- # Agents and Skills hosted on GitHub
85
- opkg install gh@<user>/<repo> --plugins <plugin-name> --agents <agent-name>
86
- opkg install gh@<user>/<repo> --plugins <plugin-name> --skills <agent-name>
87
- opkg install gh@<user>/<repo> --skills <agent-name>
80
+ # Github repos
81
+ opkg install gh@<owner>/<repo>
88
82
 
89
83
  # GitHub URLs
90
- opkg install https://github.com/<user>/<repo>/<path-to-resource>
84
+ opkg install https://github.com/<owner>/<repo>/<path-to-resource>
91
85
 
92
86
  # Local path to package or Claude Plugin
93
87
  opkg install <path-to-dir>
94
88
 
89
+ # Git URLs
90
+ opkg install git@<host>:<repo>.git
91
+
95
92
  # Examples
93
+ opkg install essentials
96
94
  opkg install gh@anthropics/claude-code --plugins code-review
95
+ opkg install gh@wshobson/agents --plugins ui-design --agents ui-designer
96
+ opkg install gh@wshobson/agents/plugins/ui-design/agents/ui-designer
97
97
  opkg install gh@vercel-labs/agent-skills --skills react-best-practices
98
98
  opkg install https://github.com/anthropics/claude-code/tree/main/plugins/code-review
99
+ opkg install https://github.com/wshobson/agents/tree/main/plugins/ui-design/ui-designer.md
99
100
  opkg install https://github.com/vercel-labs/agent-skills/tree/main/skills/react-best-practices
100
101
  ```
101
102
 
102
103
  #### Options
103
104
 
104
- Use the `--global` (or `-g`) option to install files to user scope:
105
- ```bash title="Terminal"
106
- # Installs to home dir, ex: ~/.cursor/, ~/.opencode/
107
- opkg install github:anthropics/claude-code -g
108
- ```
105
+ | Option | Description |
106
+ | --- | --- |
107
+ | `-g, --global` | Install to user directory instead of project |
108
+ | `-a, --agents <agents...>` | Install specific agents by name |
109
+ | `-s, --skills <skills...>` | Install specific skills by name |
110
+ | `--plugins <plugins...>` | Install specific plugins by name |
111
+ | `--platforms` | Install to only specified platforms |
112
+ | `--remote` | Install from remote source / skip cache |
109
113
 
110
114
  ### List installed resources
111
115
  ```bash title="Terminal"
112
116
  opkg list # Lists resources installed to workspace at cwd
113
117
  opkg list <package> # Lists installed files for specified resource
114
118
  ```
115
- Use the status command to show an overview of packages and files installed.
119
+ Use the list command to show an overview of packages and files installed.
120
+
121
+ #### Options
122
+
123
+ | Option | Description |
124
+ | --- | --- |
125
+ | `-p, --project` | Lists only project scoped packages & resource file count |
126
+ | `-g, --global` | Lists only user scoped packages & resource file count |
127
+ | `-a, --all` | Lists all packages recursively (includes nested) |
128
+ | `-f, --files` | Lists all resource files |
129
+ | `-t, --tracked` | Lists all packages & resources tracked by OpenPackage |
130
+ | `-u, --untracked` | Lists all resources not tracked by OpenPackage |
131
+ | `--platforms` | Lists packages & files from specified platforms |
116
132
 
117
133
  ### Uninstall packages
118
134
  ```bash title="Terminal"
@@ -120,6 +136,12 @@ opkg uninstall <package>
120
136
  ```
121
137
  Removes all files for a package from the codebase at cwd.
122
138
 
139
+ #### Options
140
+
141
+ | Option | Description |
142
+ | --- | --- |
143
+ | `-g, --global` | Uninstall from user directory |
144
+
123
145
  > [!TIP]
124
146
  > Learn more by heading over to the [official docs](https://openpackage.dev/docs).
125
147
 
@@ -161,7 +183,7 @@ opkg remove <package> commands/clean.md # Removes file or dir from packa
161
183
  > [!TIP]
162
184
  > Learn more about packages from the [packages doc](https://openpackage.dev/docs/packages) on our official docs.
163
185
 
164
- ## Supported Platforms
186
+ ## Supported Platforms & Files
165
187
 
166
188
  OpenPackage performs installation and platform sync of files for supported AI coding platforms outlined by the table below.
167
189
 
@@ -2,6 +2,8 @@ import { withErrorHandling } from '../utils/errors.js';
2
2
  import { createOrchestrator } from '../core/install/orchestrator/index.js';
3
3
  import { normalizeInstallOptions } from '../core/install/preprocessing/index.js';
4
4
  import { createExecutionContext } from '../core/execution-context.js';
5
+ import { createTelemetryCollector } from '../utils/telemetry.js';
6
+ import { createHttpClient } from '../utils/http-client.js';
5
7
  /**
6
8
  * Setup install command
7
9
  */
@@ -10,34 +12,60 @@ export function setupInstallCommand(program) {
10
12
  .command('install')
11
13
  .alias('i')
12
14
  .description('Install packages to workspace')
13
- .argument('[package-name]', 'name of the package to install (optional - installs workspace-level files and all packages from openpackage.yml if not specified). ' +
14
- 'Supports package@version syntax.')
15
+ .argument('[resource-spec]', 'resource to install (package[@version], gh@owner/repo, https://github.com/owner/repo, /path/to/local, or git@host:repo.git)')
15
16
  .option('-g, --global', 'install to home directory (~/) instead of current workspace')
17
+ .option('-a, --agents <names...>', 'install specific agents by name (matches frontmatter name or filename)')
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)')
21
+ .option('--plugins <names...>', 'install specific plugins from marketplace (bypasses interactive selection)')
22
+ .option('--platforms <platforms...>', 'install to specific platforms (e.g., cursor claudecode opencode)')
16
23
  .option('--dry-run', 'preview changes without applying them')
17
24
  .option('--force', 'overwrite existing files')
18
25
  .option('--conflicts <strategy>', 'conflict handling strategy: keep-both, overwrite, skip, or ask')
19
- .option('--dev', 'add package to dev-dependencies instead of dependencies')
20
- .option('--platforms <platforms...>', 'prepare specific platforms (e.g., cursor claudecode opencode)')
26
+ .option('--dev', 'add resource to dev-dependencies (instead of dependencies)')
21
27
  .option('--remote', 'pull and install from remote registry, ignoring local versions')
22
28
  .option('--local', 'resolve and install using only local registry versions, skipping remote metadata and pulls')
23
29
  .option('--profile <profile>', 'profile to use for authentication')
24
30
  .option('--api-key <key>', 'API key for authentication (overrides profile)')
25
- .option('--plugins <names...>', 'install specific plugins from marketplace (bypasses interactive selection)')
26
- .option('--agents <names...>', 'install specific agents by name (matches frontmatter name or filename)')
27
- .option('--skills <names...>', 'install specific skills by name (matches SKILL.md frontmatter name or directory name)')
31
+ // .option('--list', 'interactively select resources to install (agents, skills, commands, etc.)')
28
32
  .action(withErrorHandling(async (packageName, options, command) => {
33
+ // Validate mutually exclusive options
34
+ if (options.list && (options.agents || options.skills || options.rules || options.commands)) {
35
+ throw new Error('--list cannot be used with --agents, --skills, --rules, or --commands. Use --list for interactive selection or specify filters directly.');
36
+ }
29
37
  // Get program-level options (for --cwd)
30
38
  const programOpts = command.parent?.opts() || {};
31
- // Create execution context
39
+ // Create telemetry collector
40
+ const telemetryCollector = await createTelemetryCollector('install');
41
+ // Create execution context with telemetry
32
42
  const execContext = await createExecutionContext({
33
43
  global: options.global,
34
44
  cwd: programOpts.cwd
35
45
  });
46
+ // Add telemetry collector to context
47
+ if (telemetryCollector) {
48
+ execContext.telemetryCollector = telemetryCollector;
49
+ }
36
50
  // Normalize all options at CLI boundary
37
51
  const normalizedOptions = normalizeInstallOptions(options);
38
52
  // Create and execute orchestrator with execution context
39
53
  const orchestrator = createOrchestrator();
40
54
  const result = await orchestrator.execute(packageName, normalizedOptions, execContext);
55
+ // Flush telemetry (truly fire-and-forget, non-blocking)
56
+ if (telemetryCollector && result.success) {
57
+ // Run in background without blocking command completion
58
+ setImmediate(() => {
59
+ createHttpClient({
60
+ apiKey: options.apiKey,
61
+ profile: options.profile
62
+ })
63
+ .then(httpClient => telemetryCollector.flush(httpClient))
64
+ .catch(() => {
65
+ // Silent failure - already logged in telemetry module
66
+ });
67
+ });
68
+ }
41
69
  // Handle result
42
70
  if (!result.success) {
43
71
  if (result.error === 'Package not found') {
@@ -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;AAEtE;;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,gBAAgB,EAChB,qIAAqI;QACrI,kCAAkC,CACnC;SACA,MAAM,CAAC,cAAc,EAAE,6DAA6D,CAAC;SACrF,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,yDAAyD,CAAC;SAC1E,MAAM,CAAC,4BAA4B,EAAE,+DAA+D,CAAC;SACrG,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,sBAAsB,EAAE,4EAA4E,CAAC;SAC5G,MAAM,CAAC,qBAAqB,EAAE,wEAAwE,CAAC;SACvG,MAAM,CAAC,qBAAqB,EAAE,uFAAuF,CAAC;SACtH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAC7B,WAA+B,EAC/B,OAIC,EACD,OAAgB,EAChB,EAAE;QACF,wCAAwC;QACxC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAEjD,2BAA2B;QAC3B,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC;YAC/C,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,WAAW,CAAC,GAAG;SACrB,CAAC,CAAC;QAEH,wCAAwC;QACxC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAE3D,yDAAyD;QACzD,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAEvF,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,MAAM,CAAC,KAAK,KAAK,mBAAmB,EAAE,CAAC;gBACzC,OAAO,CAAC,4BAA4B;YACtC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,+BAA+B,CAAC,CAAC;QACnE,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}