@oh-my-pi/cli 0.3.0 → 0.4.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/.editorconfig +14 -0
- package/.prettierrc +6 -0
- package/README.md +65 -71
- package/bun.lock +13 -10
- package/dist/cli.js +114 -34
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/features.d.ts.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/symlinks.d.ts +1 -0
- package/dist/symlinks.d.ts.map +1 -1
- package/package.json +11 -4
- package/plugins/exa/README.md +44 -38
- package/plugins/exa/package.json +44 -11
- package/plugins/exa/tools/exa/company.ts +24 -13
- package/plugins/exa/tools/exa/index.ts +43 -34
- package/plugins/exa/tools/exa/linkedin.ts +24 -13
- package/plugins/exa/tools/exa/researcher.ts +26 -18
- package/plugins/exa/tools/exa/search.ts +31 -20
- package/plugins/exa/tools/exa/shared.ts +182 -156
- package/plugins/exa/tools/exa/websets.ts +39 -28
- package/plugins/metal-theme/package.json +13 -4
- package/plugins/subagents/README.md +3 -0
- package/plugins/subagents/agents/explore.md +11 -0
- package/plugins/subagents/agents/planner.md +3 -0
- package/plugins/subagents/agents/reviewer.md +6 -0
- package/plugins/subagents/agents/task.md +8 -1
- package/plugins/subagents/commands/architect-plan.md +1 -0
- package/plugins/subagents/commands/implement-with-critic.md +1 -0
- package/plugins/subagents/commands/implement.md +1 -0
- package/plugins/subagents/package.json +43 -11
- package/plugins/subagents/tools/task/index.ts +1089 -861
- package/plugins/user-prompt/README.md +22 -66
- package/plugins/user-prompt/package.json +15 -4
- package/plugins/user-prompt/tools/user-prompt/index.ts +185 -157
- package/scripts/bump-version.sh +10 -13
- package/src/cli.ts +1 -1
- package/src/commands/config.ts +21 -6
- package/src/commands/features.ts +49 -12
- package/src/commands/install.ts +91 -24
- package/src/commands/list.ts +14 -3
- package/src/commands/uninstall.ts +4 -1
- package/src/commands/update.ts +6 -1
- package/src/runtime.ts +3 -10
- package/src/symlinks.ts +12 -7
package/.editorconfig
ADDED
package/.prettierrc
ADDED
package/README.md
CHANGED
|
@@ -74,10 +74,10 @@ Plugins declare which files to install via the `omp.install` field in their `pac
|
|
|
74
74
|
|
|
75
75
|
omp supports both global and project-local plugin configurations:
|
|
76
76
|
|
|
77
|
-
| Scope
|
|
78
|
-
|
|
79
|
-
| Global | `~/.pi/plugins/` | `~/.pi/agent/`
|
|
80
|
-
| Local
|
|
77
|
+
| Scope | Config Location | Agent Directory | Use Case |
|
|
78
|
+
| ------ | ---------------- | --------------- | ------------------------ |
|
|
79
|
+
| Global | `~/.pi/plugins/` | `~/.pi/agent/` | Personal defaults |
|
|
80
|
+
| Local | `.pi/` | `.pi/agent/` | Project-specific plugins |
|
|
81
81
|
|
|
82
82
|
```bash
|
|
83
83
|
# Explicit scope
|
|
@@ -92,25 +92,25 @@ Initialize a project-local config with `omp init`.
|
|
|
92
92
|
|
|
93
93
|
## Commands
|
|
94
94
|
|
|
95
|
-
| Command
|
|
96
|
-
|
|
97
|
-
| `omp install [pkg...]` | `i`
|
|
98
|
-
| `omp uninstall <pkg>`
|
|
99
|
-
| `omp update [pkg]`
|
|
100
|
-
| `omp list`
|
|
101
|
-
| `omp search <query>`
|
|
102
|
-
| `omp info <pkg>`
|
|
103
|
-
| `omp outdated`
|
|
104
|
-
| `omp doctor`
|
|
105
|
-
| `omp link <path>`
|
|
106
|
-
| `omp create <name>`
|
|
107
|
-
| `omp init`
|
|
108
|
-
| `omp why <file>`
|
|
109
|
-
| `omp enable <name>`
|
|
110
|
-
| `omp disable <name>`
|
|
111
|
-
| `omp features <name>`
|
|
112
|
-
| `omp config <name>`
|
|
113
|
-
| `omp env`
|
|
95
|
+
| Command | Alias | Description |
|
|
96
|
+
| ---------------------- | ----- | ------------------------------------------------------ |
|
|
97
|
+
| `omp install [pkg...]` | `i` | Install plugin(s). No args = install from plugins.json |
|
|
98
|
+
| `omp uninstall <pkg>` | `rm` | Remove plugin and its symlinks |
|
|
99
|
+
| `omp update [pkg]` | `up` | Update to latest within semver range |
|
|
100
|
+
| `omp list` | `ls` | Show installed plugins |
|
|
101
|
+
| `omp search <query>` | | Search npm for plugins |
|
|
102
|
+
| `omp info <pkg>` | | Show plugin details before install |
|
|
103
|
+
| `omp outdated` | | List plugins with newer versions |
|
|
104
|
+
| `omp doctor` | | Check for broken symlinks, conflicts |
|
|
105
|
+
| `omp link <path>` | | Symlink local plugin (dev mode) |
|
|
106
|
+
| `omp create <name>` | | Scaffold new plugin from template |
|
|
107
|
+
| `omp init` | | Create .pi/plugins.json in current project |
|
|
108
|
+
| `omp why <file>` | | Show which plugin installed a file |
|
|
109
|
+
| `omp enable <name>` | | Enable a disabled plugin |
|
|
110
|
+
| `omp disable <name>` | | Disable plugin without uninstalling |
|
|
111
|
+
| `omp features <name>` | | List or configure plugin features |
|
|
112
|
+
| `omp config <name>` | | Get or set plugin configuration variables |
|
|
113
|
+
| `omp env` | | Print environment variables for shell eval |
|
|
114
114
|
|
|
115
115
|
Most commands accept `-g`/`--global` or `-l`/`--local` flags to override scope auto-detection.
|
|
116
116
|
|
|
@@ -190,16 +190,16 @@ Plugins are npm packages with an `omp` field in `package.json`:
|
|
|
190
190
|
|
|
191
191
|
```json
|
|
192
192
|
{
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
193
|
+
"name": "my-cool-plugin",
|
|
194
|
+
"version": "1.0.0",
|
|
195
|
+
"keywords": ["omp-plugin"],
|
|
196
|
+
"omp": {
|
|
197
|
+
"install": [
|
|
198
|
+
{ "src": "agents/researcher.md", "dest": "agent/agents/researcher.md" },
|
|
199
|
+
{ "src": "commands/research.md", "dest": "agent/commands/research.md" }
|
|
200
|
+
]
|
|
201
|
+
},
|
|
202
|
+
"files": ["agents", "commands", "tools", "themes"]
|
|
203
203
|
}
|
|
204
204
|
```
|
|
205
205
|
|
|
@@ -209,44 +209,38 @@ Plugins can define optional features and configurable variables:
|
|
|
209
209
|
|
|
210
210
|
```json
|
|
211
211
|
{
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
"default": "general"
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
212
|
+
"name": "@oh-my-pi/exa",
|
|
213
|
+
"version": "1.0.0",
|
|
214
|
+
"keywords": ["omp-plugin"],
|
|
215
|
+
"omp": {
|
|
216
|
+
"install": [{ "src": "tools/core.ts", "dest": "agent/tools/exa/core.ts" }],
|
|
217
|
+
"variables": {
|
|
218
|
+
"apiKey": {
|
|
219
|
+
"type": "string",
|
|
220
|
+
"env": "EXA_API_KEY",
|
|
221
|
+
"description": "Exa API key",
|
|
222
|
+
"required": true
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"features": {
|
|
226
|
+
"search": {
|
|
227
|
+
"description": "Web search capabilities",
|
|
228
|
+
"default": true,
|
|
229
|
+
"install": [{ "src": "tools/search.ts", "dest": "agent/tools/exa/search.ts" }]
|
|
230
|
+
},
|
|
231
|
+
"websets": {
|
|
232
|
+
"description": "Curated content collections",
|
|
233
|
+
"default": false,
|
|
234
|
+
"install": [{ "src": "tools/websets.ts", "dest": "agent/tools/exa/websets.ts" }],
|
|
235
|
+
"variables": {
|
|
236
|
+
"defaultCollection": {
|
|
237
|
+
"type": "string",
|
|
238
|
+
"default": "general"
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
250
244
|
}
|
|
251
245
|
```
|
|
252
246
|
|
package/bun.lock
CHANGED
|
@@ -10,31 +10,32 @@
|
|
|
10
10
|
"commander": "^12.0.0",
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
|
-
"@biomejs/biome": "2.3.
|
|
13
|
+
"@biomejs/biome": "2.3.10",
|
|
14
14
|
"@types/node": "^22.10.5",
|
|
15
15
|
"bun-types": "^1.2.17",
|
|
16
|
+
"prettier": "^3.7.4",
|
|
16
17
|
"typescript": "^5.9.2",
|
|
17
18
|
},
|
|
18
19
|
},
|
|
19
20
|
},
|
|
20
21
|
"packages": {
|
|
21
|
-
"@biomejs/biome": ["@biomejs/biome@2.3.
|
|
22
|
+
"@biomejs/biome": ["@biomejs/biome@2.3.10", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.3.10", "@biomejs/cli-darwin-x64": "2.3.10", "@biomejs/cli-linux-arm64": "2.3.10", "@biomejs/cli-linux-arm64-musl": "2.3.10", "@biomejs/cli-linux-x64": "2.3.10", "@biomejs/cli-linux-x64-musl": "2.3.10", "@biomejs/cli-win32-arm64": "2.3.10", "@biomejs/cli-win32-x64": "2.3.10" }, "bin": { "biome": "bin/biome" } }, "sha512-/uWSUd1MHX2fjqNLHNL6zLYWBbrJeG412/8H7ESuK8ewoRoMPUgHDebqKrPTx/5n6f17Xzqc9hdg3MEqA5hXnQ=="],
|
|
22
23
|
|
|
23
|
-
"@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.3.
|
|
24
|
+
"@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.3.10", "", { "os": "darwin", "cpu": "arm64" }, "sha512-M6xUjtCVnNGFfK7HMNKa593nb7fwNm43fq1Mt71kpLpb+4mE7odO8W/oWVDyBVO4ackhresy1ZYO7OJcVo/B7w=="],
|
|
24
25
|
|
|
25
|
-
"@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.3.
|
|
26
|
+
"@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.3.10", "", { "os": "darwin", "cpu": "x64" }, "sha512-Vae7+V6t/Avr8tVbFNjnFSTKZogZHFYl7MMH62P/J1kZtr0tyRQ9Fe0onjqjS2Ek9lmNLmZc/VR5uSekh+p1fg=="],
|
|
26
27
|
|
|
27
|
-
"@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.3.
|
|
28
|
+
"@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.3.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-hhPw2V3/EpHKsileVOFynuWiKRgFEV48cLe0eA+G2wO4SzlwEhLEB9LhlSrVeu2mtSn205W283LkX7Fh48CaxA=="],
|
|
28
29
|
|
|
29
|
-
"@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.3.
|
|
30
|
+
"@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.3.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-B9DszIHkuKtOH2IFeeVkQmSMVUjss9KtHaNXquYYWCjH8IstNgXgx5B0aSBQNr6mn4RcKKRQZXn9Zu1rM3O0/A=="],
|
|
30
31
|
|
|
31
|
-
"@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.3.
|
|
32
|
+
"@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.3.10", "", { "os": "linux", "cpu": "x64" }, "sha512-wwAkWD1MR95u+J4LkWP74/vGz+tRrIQvr8kfMMJY8KOQ8+HMVleREOcPYsQX82S7uueco60L58Wc6M1I9WA9Dw=="],
|
|
32
33
|
|
|
33
|
-
"@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.3.
|
|
34
|
+
"@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.3.10", "", { "os": "linux", "cpu": "x64" }, "sha512-QTfHZQh62SDFdYc2nfmZFuTm5yYb4eO1zwfB+90YxUumRCR171tS1GoTX5OD0wrv4UsziMPmrePMtkTnNyYG3g=="],
|
|
34
35
|
|
|
35
|
-
"@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.3.
|
|
36
|
+
"@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.3.10", "", { "os": "win32", "cpu": "arm64" }, "sha512-o7lYc9n+CfRbHvkjPhm8s9FgbKdYZu5HCcGVMItLjz93EhgJ8AM44W+QckDqLA9MKDNFrR8nPbO4b73VC5kGGQ=="],
|
|
36
37
|
|
|
37
|
-
"@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.3.
|
|
38
|
+
"@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.3.10", "", { "os": "win32", "cpu": "x64" }, "sha512-pHEFgq7dUEsKnqG9mx9bXihxGI49X+ar+UBrEIj3Wqj3UCZp1rNgV+OoyjFgcXsjCWpuEAF4VJdkZr3TrWdCbQ=="],
|
|
38
39
|
|
|
39
40
|
"@inquirer/ansi": ["@inquirer/ansi@2.0.2", "", {}, "sha512-SYLX05PwJVnW+WVegZt1T4Ip1qba1ik+pNJPDiqvk6zS5Y/i8PhRzLpGEtVd7sW0G8cMtkD8t4AZYhQwm8vnww=="],
|
|
40
41
|
|
|
@@ -92,6 +93,8 @@
|
|
|
92
93
|
|
|
93
94
|
"mute-stream": ["mute-stream@3.0.0", "", {}, "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw=="],
|
|
94
95
|
|
|
96
|
+
"prettier": ["prettier@3.7.4", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA=="],
|
|
97
|
+
|
|
95
98
|
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
|
|
96
99
|
|
|
97
100
|
"signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
|
package/dist/cli.js
CHANGED
|
@@ -2858,12 +2858,13 @@ function collectVariables(pkgJson, enabledFeatures) {
|
|
|
2858
2858
|
}
|
|
2859
2859
|
function parseValue(value, varDef) {
|
|
2860
2860
|
switch (varDef.type) {
|
|
2861
|
-
case "number":
|
|
2861
|
+
case "number": {
|
|
2862
2862
|
const num = Number(value);
|
|
2863
|
-
if (isNaN(num)) {
|
|
2863
|
+
if (Number.isNaN(num)) {
|
|
2864
2864
|
throw new Error(`Invalid number: ${value}`);
|
|
2865
2865
|
}
|
|
2866
2866
|
return num;
|
|
2867
|
+
}
|
|
2867
2868
|
case "boolean":
|
|
2868
2869
|
if (value === "true" || value === "1" || value === "yes")
|
|
2869
2870
|
return true;
|
|
@@ -2891,8 +2892,6 @@ function formatValue(value, varDef) {
|
|
|
2891
2892
|
return String(value);
|
|
2892
2893
|
}
|
|
2893
2894
|
function resolveEnabledFeatures(allFeatureNames, storedFeatures, pluginFeatures) {
|
|
2894
|
-
if (storedFeatures === null)
|
|
2895
|
-
return allFeatureNames;
|
|
2896
2895
|
if (Array.isArray(storedFeatures) && storedFeatures.includes("*"))
|
|
2897
2896
|
return allFeatureNames;
|
|
2898
2897
|
if (Array.isArray(storedFeatures))
|
|
@@ -3058,7 +3057,7 @@ async function deleteConfig(name, key, options = {}) {
|
|
|
3058
3057
|
return;
|
|
3059
3058
|
}
|
|
3060
3059
|
const config = pluginsJson.config?.[name];
|
|
3061
|
-
if (!config?.variables
|
|
3060
|
+
if (!config?.variables || !Object.hasOwn(config.variables, key)) {
|
|
3062
3061
|
console.log(source_default.yellow(`Variable "${key}" is not set for ${name}.`));
|
|
3063
3062
|
return;
|
|
3064
3063
|
}
|
|
@@ -3480,7 +3479,7 @@ function readRuntimeConfig(runtimePath) {
|
|
|
3480
3479
|
const content = readFileSync(runtimePath, "utf-8");
|
|
3481
3480
|
return JSON.parse(content);
|
|
3482
3481
|
} catch {
|
|
3483
|
-
return {
|
|
3482
|
+
return {};
|
|
3484
3483
|
}
|
|
3485
3484
|
}
|
|
3486
3485
|
async function writeRuntimeConfig(runtimePath, config, verbose = false) {
|
|
@@ -3490,7 +3489,7 @@ async function writeRuntimeConfig(runtimePath, config, verbose = false) {
|
|
|
3490
3489
|
features: config.features ?? existing.features ?? [],
|
|
3491
3490
|
options: { ...existing.options, ...config.options }
|
|
3492
3491
|
};
|
|
3493
|
-
writeFileSync(runtimePath, JSON.stringify(merged, null, 2)
|
|
3492
|
+
writeFileSync(runtimePath, `${JSON.stringify(merged, null, 2)}
|
|
3494
3493
|
`);
|
|
3495
3494
|
if (verbose) {
|
|
3496
3495
|
console.log(source_default.dim(` Updated: ${runtimePath}`));
|
|
@@ -3509,7 +3508,11 @@ function getRuntimeConfigPath(pkgJson, global = true) {
|
|
|
3509
3508
|
return join4(getBaseDir(global), runtimeEntry.dest);
|
|
3510
3509
|
}
|
|
3511
3510
|
async function removePluginSymlinks(_pluginName, pkgJson, global = true, verbose = true) {
|
|
3512
|
-
const result = {
|
|
3511
|
+
const result = {
|
|
3512
|
+
removed: [],
|
|
3513
|
+
errors: [],
|
|
3514
|
+
skippedNonSymlinks: []
|
|
3515
|
+
};
|
|
3513
3516
|
const installEntries = getInstallEntries(pkgJson);
|
|
3514
3517
|
if (installEntries.length === 0) {
|
|
3515
3518
|
return result;
|
|
@@ -3564,7 +3567,11 @@ async function removePluginSymlinks(_pluginName, pkgJson, global = true, verbose
|
|
|
3564
3567
|
return result;
|
|
3565
3568
|
}
|
|
3566
3569
|
async function checkPluginSymlinks(pluginName, pkgJson, global = true) {
|
|
3567
|
-
const result = {
|
|
3570
|
+
const result = {
|
|
3571
|
+
valid: [],
|
|
3572
|
+
broken: [],
|
|
3573
|
+
missing: []
|
|
3574
|
+
};
|
|
3568
3575
|
const sourceDir = getPluginSourceDir(pluginName, global);
|
|
3569
3576
|
const baseDir = getBaseDir(global);
|
|
3570
3577
|
const installEntries = getInstallEntries(pkgJson);
|
|
@@ -3965,8 +3972,6 @@ function collectVariables2(pkgJson, enabledFeatures) {
|
|
|
3965
3972
|
return vars;
|
|
3966
3973
|
}
|
|
3967
3974
|
function resolveEnabledFeatures2(allFeatureNames, storedFeatures, pluginFeatures) {
|
|
3968
|
-
if (storedFeatures === null)
|
|
3969
|
-
return allFeatureNames;
|
|
3970
3975
|
if (Array.isArray(storedFeatures) && storedFeatures.includes("*"))
|
|
3971
3976
|
return allFeatureNames;
|
|
3972
3977
|
if (Array.isArray(storedFeatures))
|
|
@@ -5730,8 +5735,14 @@ async function interactiveFeatures(name, options = {}) {
|
|
|
5730
5735
|
console.log(source_default.yellow(`Plugin "${name}" does not have a runtime.json config file.`));
|
|
5731
5736
|
return;
|
|
5732
5737
|
}
|
|
5733
|
-
const
|
|
5734
|
-
|
|
5738
|
+
const pluginConfig = pluginsJson.config?.[name];
|
|
5739
|
+
let enabledFeatures;
|
|
5740
|
+
if (Array.isArray(pluginConfig?.features)) {
|
|
5741
|
+
enabledFeatures = pluginConfig.features;
|
|
5742
|
+
} else {
|
|
5743
|
+
const runtimeConfig = readRuntimeConfig(runtimePath);
|
|
5744
|
+
enabledFeatures = runtimeConfig.features ?? getDefaultFeatures(features);
|
|
5745
|
+
}
|
|
5735
5746
|
if (options.json) {
|
|
5736
5747
|
console.log(JSON.stringify({
|
|
5737
5748
|
plugin: name,
|
|
@@ -5767,8 +5778,8 @@ Configure features for ${name}:
|
|
|
5767
5778
|
choices,
|
|
5768
5779
|
pageSize: 15
|
|
5769
5780
|
});
|
|
5770
|
-
await applyFeatureChanges(name, runtimePath, features, enabledFeatures, selected);
|
|
5771
|
-
} catch (
|
|
5781
|
+
await applyFeatureChanges(name, runtimePath, features, enabledFeatures, selected, isGlobal);
|
|
5782
|
+
} catch (_err) {
|
|
5772
5783
|
console.log(source_default.dim(`
|
|
5773
5784
|
Cancelled.`));
|
|
5774
5785
|
}
|
|
@@ -5793,7 +5804,7 @@ Features for ${name}:
|
|
|
5793
5804
|
console.log(source_default.dim(`Configure with: omp features ${name} --enable <feature> --disable <feature>`));
|
|
5794
5805
|
console.log(source_default.dim(`Or set exactly: omp features ${name} --set feature1,feature2`));
|
|
5795
5806
|
}
|
|
5796
|
-
async function applyFeatureChanges(name, runtimePath,
|
|
5807
|
+
async function applyFeatureChanges(name, runtimePath, _features, currentlyEnabled, newEnabled, isGlobal) {
|
|
5797
5808
|
const toDisable = currentlyEnabled.filter((f) => !newEnabled.includes(f));
|
|
5798
5809
|
const toEnable = newEnabled.filter((f) => !currentlyEnabled.includes(f));
|
|
5799
5810
|
if (toDisable.length === 0 && toEnable.length === 0) {
|
|
@@ -5809,6 +5820,13 @@ Applying changes...`));
|
|
|
5809
5820
|
if (toEnable.length > 0) {
|
|
5810
5821
|
console.log(source_default.dim(` Enabling: ${toEnable.join(", ")}`));
|
|
5811
5822
|
}
|
|
5823
|
+
const pluginsJson = await loadPluginsJson(isGlobal);
|
|
5824
|
+
if (!pluginsJson.config)
|
|
5825
|
+
pluginsJson.config = {};
|
|
5826
|
+
if (!pluginsJson.config[name])
|
|
5827
|
+
pluginsJson.config[name] = {};
|
|
5828
|
+
pluginsJson.config[name].features = newEnabled;
|
|
5829
|
+
await savePluginsJson(pluginsJson, isGlobal);
|
|
5812
5830
|
await writeRuntimeConfig(runtimePath, { features: newEnabled });
|
|
5813
5831
|
console.log(source_default.green(`
|
|
5814
5832
|
\u2713 Features updated`));
|
|
@@ -5845,8 +5863,14 @@ async function configureFeatures(name, options = {}) {
|
|
|
5845
5863
|
process.exitCode = 1;
|
|
5846
5864
|
return;
|
|
5847
5865
|
}
|
|
5848
|
-
const
|
|
5849
|
-
|
|
5866
|
+
const pluginConfig = pluginsJson.config?.[name];
|
|
5867
|
+
let currentlyEnabled;
|
|
5868
|
+
if (Array.isArray(pluginConfig?.features)) {
|
|
5869
|
+
currentlyEnabled = pluginConfig.features;
|
|
5870
|
+
} else {
|
|
5871
|
+
const runtimeConfig = readRuntimeConfig(runtimePath);
|
|
5872
|
+
currentlyEnabled = runtimeConfig.features ?? getDefaultFeatures(features);
|
|
5873
|
+
}
|
|
5850
5874
|
let newEnabled;
|
|
5851
5875
|
if (options.set !== undefined) {
|
|
5852
5876
|
if (options.set === "*") {
|
|
@@ -5888,7 +5912,7 @@ async function configureFeatures(name, options = {}) {
|
|
|
5888
5912
|
}
|
|
5889
5913
|
}
|
|
5890
5914
|
}
|
|
5891
|
-
await applyFeatureChanges(name, runtimePath, features, currentlyEnabled, newEnabled);
|
|
5915
|
+
await applyFeatureChanges(name, runtimePath, features, currentlyEnabled, newEnabled, isGlobal);
|
|
5892
5916
|
if (options.json) {
|
|
5893
5917
|
console.log(JSON.stringify({ plugin: name, enabled: newEnabled }, null, 2));
|
|
5894
5918
|
}
|
|
@@ -6151,7 +6175,12 @@ init_source();
|
|
|
6151
6175
|
function parsePackageSpecWithFeatures(spec) {
|
|
6152
6176
|
const match = spec.match(/^(@?[^@[\]]+)(?:\[([^\]]*)\])?(?:@(.+))?$/);
|
|
6153
6177
|
if (!match) {
|
|
6154
|
-
return {
|
|
6178
|
+
return {
|
|
6179
|
+
name: spec,
|
|
6180
|
+
version: "latest",
|
|
6181
|
+
features: null,
|
|
6182
|
+
allFeatures: false
|
|
6183
|
+
};
|
|
6155
6184
|
}
|
|
6156
6185
|
const [, name, featuresStr, version = "latest"] = match;
|
|
6157
6186
|
if (featuresStr === undefined) {
|
|
@@ -6311,7 +6340,12 @@ Installing ${pkgSpec}...`));
|
|
|
6311
6340
|
if (!info) {
|
|
6312
6341
|
console.log(source_default.red(` \u2717 Package not found: ${name}`));
|
|
6313
6342
|
process.exitCode = 1;
|
|
6314
|
-
results.push({
|
|
6343
|
+
results.push({
|
|
6344
|
+
name,
|
|
6345
|
+
version,
|
|
6346
|
+
success: false,
|
|
6347
|
+
error: "Package not found"
|
|
6348
|
+
});
|
|
6315
6349
|
continue;
|
|
6316
6350
|
}
|
|
6317
6351
|
resolvedVersion = info.version;
|
|
@@ -6325,7 +6359,12 @@ Installing ${pkgSpec}...`));
|
|
|
6325
6359
|
console.log(source_default.red(` ${dupe.dest} \u2190 ${dupe.sources.join(", ")}`));
|
|
6326
6360
|
}
|
|
6327
6361
|
process.exitCode = 1;
|
|
6328
|
-
results.push({
|
|
6362
|
+
results.push({
|
|
6363
|
+
name,
|
|
6364
|
+
version: info.version,
|
|
6365
|
+
success: false,
|
|
6366
|
+
error: "Duplicate destinations in plugin"
|
|
6367
|
+
});
|
|
6329
6368
|
continue;
|
|
6330
6369
|
}
|
|
6331
6370
|
const preInstallConflicts = detectConflicts(name, preInstallPkgJson, existingPlugins);
|
|
@@ -6359,7 +6398,12 @@ Installing ${pkgSpec}...`));
|
|
|
6359
6398
|
if (abort) {
|
|
6360
6399
|
console.log(source_default.yellow(` Aborted due to conflicts (before download)`));
|
|
6361
6400
|
process.exitCode = 1;
|
|
6362
|
-
results.push({
|
|
6401
|
+
results.push({
|
|
6402
|
+
name,
|
|
6403
|
+
version: info.version,
|
|
6404
|
+
success: false,
|
|
6405
|
+
error: "Conflicts"
|
|
6406
|
+
});
|
|
6363
6407
|
continue;
|
|
6364
6408
|
}
|
|
6365
6409
|
}
|
|
@@ -6380,9 +6424,16 @@ Installing ${pkgSpec}...`));
|
|
|
6380
6424
|
for (const dupe of intraDupes) {
|
|
6381
6425
|
console.log(source_default.red(` ${dupe.dest} \u2190 ${dupe.sources.join(", ")}`));
|
|
6382
6426
|
}
|
|
6383
|
-
execFileSync2("npm", ["uninstall", "--prefix", prefix, name], {
|
|
6427
|
+
execFileSync2("npm", ["uninstall", "--prefix", prefix, name], {
|
|
6428
|
+
stdio: "pipe"
|
|
6429
|
+
});
|
|
6384
6430
|
process.exitCode = 1;
|
|
6385
|
-
results.push({
|
|
6431
|
+
results.push({
|
|
6432
|
+
name,
|
|
6433
|
+
version: info.version,
|
|
6434
|
+
success: false,
|
|
6435
|
+
error: "Duplicate destinations in plugin"
|
|
6436
|
+
});
|
|
6386
6437
|
continue;
|
|
6387
6438
|
}
|
|
6388
6439
|
const conflicts = detectConflicts(name, pkgJson, existingPlugins);
|
|
@@ -6392,7 +6443,9 @@ Installing ${pkgSpec}...`));
|
|
|
6392
6443
|
for (const conflict of conflicts) {
|
|
6393
6444
|
console.log(source_default.yellow(` \u26A0 ${formatConflicts([conflict])[0]}`));
|
|
6394
6445
|
}
|
|
6395
|
-
execFileSync2("npm", ["uninstall", "--prefix", prefix, name], {
|
|
6446
|
+
execFileSync2("npm", ["uninstall", "--prefix", prefix, name], {
|
|
6447
|
+
stdio: "pipe"
|
|
6448
|
+
});
|
|
6396
6449
|
process.exitCode = 1;
|
|
6397
6450
|
results.push({
|
|
6398
6451
|
name,
|
|
@@ -6416,9 +6469,16 @@ Installing ${pkgSpec}...`));
|
|
|
6416
6469
|
}
|
|
6417
6470
|
if (abort) {
|
|
6418
6471
|
console.log(source_default.yellow(` Aborted due to conflicts`));
|
|
6419
|
-
execFileSync2("npm", ["uninstall", "--prefix", prefix, name], {
|
|
6472
|
+
execFileSync2("npm", ["uninstall", "--prefix", prefix, name], {
|
|
6473
|
+
stdio: "pipe"
|
|
6474
|
+
});
|
|
6420
6475
|
process.exitCode = 1;
|
|
6421
|
-
results.push({
|
|
6476
|
+
results.push({
|
|
6477
|
+
name,
|
|
6478
|
+
version: info.version,
|
|
6479
|
+
success: false,
|
|
6480
|
+
error: "Conflicts"
|
|
6481
|
+
});
|
|
6422
6482
|
continue;
|
|
6423
6483
|
}
|
|
6424
6484
|
}
|
|
@@ -6478,11 +6538,18 @@ Installing ${pkgSpec}...`));
|
|
|
6478
6538
|
if (npmInstallSucceeded) {
|
|
6479
6539
|
console.log(source_default.dim(" Rolling back npm install..."));
|
|
6480
6540
|
try {
|
|
6481
|
-
execFileSync2("npm", ["uninstall", "--prefix", prefix, name], {
|
|
6541
|
+
execFileSync2("npm", ["uninstall", "--prefix", prefix, name], {
|
|
6542
|
+
stdio: "pipe"
|
|
6543
|
+
});
|
|
6482
6544
|
} catch {}
|
|
6483
6545
|
}
|
|
6484
6546
|
process.exitCode = 1;
|
|
6485
|
-
results.push({
|
|
6547
|
+
results.push({
|
|
6548
|
+
name,
|
|
6549
|
+
version: resolvedVersion,
|
|
6550
|
+
success: false,
|
|
6551
|
+
error: errorMsg
|
|
6552
|
+
});
|
|
6486
6553
|
}
|
|
6487
6554
|
}
|
|
6488
6555
|
const successful = results.filter((r) => r.success);
|
|
@@ -6507,7 +6574,12 @@ async function installLocalPlugin(localPath, isGlobal, _options) {
|
|
|
6507
6574
|
if (!existsSync8(localPath)) {
|
|
6508
6575
|
console.log(source_default.red(`Error: Path does not exist: ${localPath}`));
|
|
6509
6576
|
process.exitCode = 1;
|
|
6510
|
-
return {
|
|
6577
|
+
return {
|
|
6578
|
+
name: basename(localPath),
|
|
6579
|
+
version: "local",
|
|
6580
|
+
success: false,
|
|
6581
|
+
error: "Path not found"
|
|
6582
|
+
};
|
|
6511
6583
|
}
|
|
6512
6584
|
const _prefix = isGlobal ? PLUGINS_DIR : ".pi";
|
|
6513
6585
|
const nodeModules = isGlobal ? NODE_MODULES_DIR : PROJECT_NODE_MODULES;
|
|
@@ -6581,7 +6653,12 @@ Installing ${pluginName} from ${localPath}...`));
|
|
|
6581
6653
|
const errorMsg = err.message;
|
|
6582
6654
|
console.log(source_default.red(` \u2717 Failed: ${errorMsg}`));
|
|
6583
6655
|
process.exitCode = 1;
|
|
6584
|
-
return {
|
|
6656
|
+
return {
|
|
6657
|
+
name: basename(localPath),
|
|
6658
|
+
version: "local",
|
|
6659
|
+
success: false,
|
|
6660
|
+
error: errorMsg
|
|
6661
|
+
};
|
|
6585
6662
|
}
|
|
6586
6663
|
}
|
|
6587
6664
|
|
|
@@ -7007,7 +7084,10 @@ The following files are not symlinks and were not removed:`));
|
|
|
7007
7084
|
console.log(source_default.dim(` - ${file}`));
|
|
7008
7085
|
}
|
|
7009
7086
|
if (process.stdin.isTTY && process.stdout.isTTY) {
|
|
7010
|
-
const rl = createInterface4({
|
|
7087
|
+
const rl = createInterface4({
|
|
7088
|
+
input: process.stdin,
|
|
7089
|
+
output: process.stdout
|
|
7090
|
+
});
|
|
7011
7091
|
const answer = await new Promise((resolve5) => {
|
|
7012
7092
|
rl.question(source_default.yellow("Delete these files anyway? [y/N] "), (ans) => {
|
|
7013
7093
|
rl.close();
|
|
@@ -7298,7 +7378,7 @@ if (!npmCheck.available) {
|
|
|
7298
7378
|
console.log(source_default.red(npmCheck.error));
|
|
7299
7379
|
process.exit(1);
|
|
7300
7380
|
}
|
|
7301
|
-
program.name("omp").description("Oh My Pi - Plugin manager for pi configuration").version("0.
|
|
7381
|
+
program.name("omp").description("Oh My Pi - Plugin manager for pi configuration").version("0.4.0");
|
|
7302
7382
|
program.command("install [packages...]").alias("i").description("Install plugin(s). No args = install from plugins.json").addHelpText("after", `
|
|
7303
7383
|
Examples:
|
|
7304
7384
|
$ omp install @oh-my-pi/subagents # Install from npm (all features)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAsGD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFzF;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CrG;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DpH;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCxG;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,EACrC,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa,EACvC,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/commands/features.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/commands/features.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiGpG;AA4FD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwGlG;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQhG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAOA,OAAO,EAKN,KAAK,YAAY,EACjB,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAOA,OAAO,EAKN,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAGtB,MAAM,eAAe,CAAC;AAavB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,2BAA2B;IAC3B,WAAW,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAwC5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,cAAc,EAAE,YAAY,GAAG,SAAS,EACxC,WAAW,EAAE,OAAO,GAClB;IAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,YAAY,GAAG,SAAS,CAAA;CAAE,CAwExE;AA0BD,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAqCD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6XpG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAwHD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,gBAAgB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,gBAAgB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2GjG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsJ5F"}
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAkDA;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA6BrF;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,UAAO,EAAE,KAAK,GAAE,IAAI,GAAG,MAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAanG;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE/E"}
|
package/dist/symlinks.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export interface SymlinkRemovalResult {
|
|
|
33
33
|
export declare function createPluginSymlinks(pluginName: string, pkgJson: PluginPackageJson, global?: boolean, verbose?: boolean, skipDestinations?: Set<string>, enabledFeatures?: string[]): Promise<SymlinkResult>;
|
|
34
34
|
/**
|
|
35
35
|
* Read runtime.json config from a plugin's installed location
|
|
36
|
+
* Returns {} on failure so callers can detect missing/corrupt config and fall back to defaults
|
|
36
37
|
*/
|
|
37
38
|
export declare function readRuntimeConfig(runtimePath: string): PluginRuntimeConfig;
|
|
38
39
|
/**
|