supipowers 1.5.1 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -1
- package/bin/install.ts +12 -7
- package/package.json +1 -1
- package/src/commands/update.ts +38 -1
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ Run the interactive installer:
|
|
|
23
23
|
bunx supipowers
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
The installer detects
|
|
26
|
+
The installer detects Pi (`~/.pi`) and OMP (`~/.omp`) — when both are present it offers a multiselect to install to one or both. It registers the extension, removes legacy external context-mode MCP registrations from `agent/mcp.json` and cleans up the old `settings/mcp.json` if present, and can install missing optional tooling such as LSP servers, `mcpc`, and Playwright CLI.
|
|
27
27
|
|
|
28
28
|
> [!TIP]
|
|
29
29
|
> Run `/supi:update` at any time to upgrade to the latest version, or `/supi:doctor` to check your setup.
|
|
@@ -159,6 +159,15 @@ Configuration is a three-layer deep-merge (lowest to highest priority):
|
|
|
159
159
|
|
|
160
160
|
Three built-in channels are available: `github` (GitHub Release via `gh` CLI), `gitlab` (GitLab Release via `glab` CLI), and `gitea` (Gitea Release via `tea` CLI). Channels are selected per-project in `release.channels`.
|
|
161
161
|
|
|
162
|
+
Release notes are generated from conventional commits scoped to the paths listed in `package.json`'s `files` field — commits touching files outside those paths are excluded.
|
|
163
|
+
|
|
164
|
+
`/supi:release` accepts two optional flags:
|
|
165
|
+
|
|
166
|
+
| Flag | Effect |
|
|
167
|
+
| ----------- | ------ |
|
|
168
|
+
| `--raw` | Skip AI polish of release notes; use raw conventional-commit output |
|
|
169
|
+
| `--dry-run` | Run the full release flow without publishing |
|
|
170
|
+
|
|
162
171
|
Custom channels can be defined in `release.customChannels`:
|
|
163
172
|
|
|
164
173
|
```json
|
package/bin/install.ts
CHANGED
|
@@ -229,6 +229,12 @@ function installToPlatform(platformDir: string, packageRoot: string): string {
|
|
|
229
229
|
cpSync(join(packageRoot, "src"), join(extDir, "src"), { recursive: true });
|
|
230
230
|
cpSync(join(packageRoot, "bin"), join(extDir, "bin"), { recursive: true });
|
|
231
231
|
cpSync(join(packageRoot, "package.json"), join(extDir, "package.json"));
|
|
232
|
+
// skills/ must live inside the extension dir — src/commands/agents.ts
|
|
233
|
+
// uses a static `import from "../../skills/..."` resolved relative to src/.
|
|
234
|
+
const skillsSrc = join(packageRoot, "skills");
|
|
235
|
+
if (existsSync(skillsSrc)) {
|
|
236
|
+
cpSync(skillsSrc, join(extDir, "skills"), { recursive: true });
|
|
237
|
+
}
|
|
232
238
|
log(` files copied to ${extDir}`);
|
|
233
239
|
|
|
234
240
|
// Rewrite package.json for the installed extension.
|
|
@@ -242,13 +248,12 @@ function installToPlatform(platformDir: string, packageRoot: string): string {
|
|
|
242
248
|
type: sourcePkg.type,
|
|
243
249
|
omp: sourcePkg.omp,
|
|
244
250
|
dependencies: {
|
|
245
|
-
//
|
|
246
|
-
|
|
247
|
-
//
|
|
248
|
-
//
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
"@oh-my-pi/pi-tui": "*",
|
|
251
|
+
// Runtime deps from the published package.json (handlebars, etc.)
|
|
252
|
+
...(sourcePkg.dependencies ?? {}),
|
|
253
|
+
// Peer deps that OMP provides at its global level. On macOS Bun resolves
|
|
254
|
+
// these from the global install, but on Windows the extension's own
|
|
255
|
+
// node_modules must contain them or Bun's import fails.
|
|
256
|
+
...(sourcePkg.peerDependencies ?? {}),
|
|
252
257
|
},
|
|
253
258
|
};
|
|
254
259
|
writeFileSync(join(extDir, "package.json"), JSON.stringify(runtimePkg, null, 2));
|
package/package.json
CHANGED
package/src/commands/update.ts
CHANGED
|
@@ -98,7 +98,44 @@ async function updateSupipowers(
|
|
|
98
98
|
if (existsSync(binSource)) {
|
|
99
99
|
cpSync(binSource, join(extDir, "bin"), { recursive: true });
|
|
100
100
|
}
|
|
101
|
-
|
|
101
|
+
// skills/ must live inside the extension dir — src/commands/agents.ts
|
|
102
|
+
// uses a static `import from "../../skills/..."` resolved relative to src/.
|
|
103
|
+
const skillsDirSource = join(downloadedRoot, "skills");
|
|
104
|
+
if (existsSync(skillsDirSource)) {
|
|
105
|
+
cpSync(skillsDirSource, join(extDir, "skills"), { recursive: true });
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Rewrite package.json: merge runtime deps + peer deps so Bun on Windows
|
|
109
|
+
// can resolve all imports from the extension's own node_modules.
|
|
110
|
+
const sourcePkg = JSON.parse(readFileSync(join(downloadedRoot, "package.json"), "utf8"));
|
|
111
|
+
const runtimePkg = {
|
|
112
|
+
name: sourcePkg.name,
|
|
113
|
+
version: sourcePkg.version,
|
|
114
|
+
type: sourcePkg.type,
|
|
115
|
+
omp: sourcePkg.omp,
|
|
116
|
+
dependencies: {
|
|
117
|
+
...(sourcePkg.dependencies ?? {}),
|
|
118
|
+
...(sourcePkg.peerDependencies ?? {}),
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
writeFileSync(join(extDir, "package.json"), JSON.stringify(runtimePkg, null, 2));
|
|
122
|
+
|
|
123
|
+
// Install runtime dependencies (handlebars, etc.)
|
|
124
|
+
// Without this, the extension fails to load because node_modules/ was deleted above.
|
|
125
|
+
ctx.ui.notify("Installing dependencies...", "info");
|
|
126
|
+
const bunInstall = await platform.exec("bun", ["install", "--production"], { cwd: extDir });
|
|
127
|
+
if (bunInstall.code !== 0) {
|
|
128
|
+
// Fallback to npm if bun is not available (e.g. Windows without global bun)
|
|
129
|
+
const npmInstall = await platform.exec("npm", ["install", "--omit=dev"], { cwd: extDir });
|
|
130
|
+
if (npmInstall.code !== 0) {
|
|
131
|
+
ctx.ui.notify(
|
|
132
|
+
"Could not install extension dependencies.\n" +
|
|
133
|
+
"Commands may not appear. Run manually:\n" +
|
|
134
|
+
` cd ${extDir} && bun install`,
|
|
135
|
+
"warning",
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
102
139
|
|
|
103
140
|
// Copy skills
|
|
104
141
|
const skillsSource = join(downloadedRoot, "skills");
|