@juicesharp/rpiv-pi 1.14.2 → 1.14.3
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.
|
@@ -242,9 +242,12 @@ describe("session_start hook — notifications", () => {
|
|
|
242
242
|
await captured.events.get("session_start")?.[0]({ reason: "startup" } as never, ctx as never);
|
|
243
243
|
const warnCall = (ctx.ui.notify as ReturnType<typeof vi.fn>).mock.calls.find((c) => c[1] === "warning");
|
|
244
244
|
expect(warnCall).toBeDefined();
|
|
245
|
-
expect(warnCall?.[0]).toContain("rpiv-pi
|
|
245
|
+
expect(warnCall?.[0]).toContain("rpiv-pi: 2 sibling extensions missing");
|
|
246
246
|
expect(warnCall?.[0]).toContain("@juicesharp/rpiv-advisor");
|
|
247
247
|
expect(warnCall?.[0]).toContain("@juicesharp/rpiv-args");
|
|
248
|
+
expect(warnCall?.[0]).toContain("Run /rpiv-setup to install them.");
|
|
249
|
+
expect(warnCall?.[0]).toContain("╭");
|
|
250
|
+
expect(warnCall?.[0]).toContain("╯");
|
|
248
251
|
expect(warnCall?.[0]).not.toContain("npm:");
|
|
249
252
|
});
|
|
250
253
|
|
|
@@ -62,8 +62,16 @@ const msgAgentsAdded = (n: number) => `Copied ${n} rpiv-pi agent(s) to ~/.pi/age
|
|
|
62
62
|
const msgAgentsHealed = (parts: string[]) => `Synced bundled agent(s): ${parts.join(", ")}.`;
|
|
63
63
|
const msgAgentsDrift = (parts: string[]) => `${parts.join(", ")} agent(s). Run /rpiv-update-agents to sync.`;
|
|
64
64
|
const msgAgentsErrors = (n: number) => `Agent sync reported ${n} error(s). Run /rpiv-update-agents for details.`;
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
function msgMissingSiblings(pkgs: string[]): string {
|
|
66
|
+
const n = pkgs.length;
|
|
67
|
+
const title = `rpiv-pi: ${n} sibling extension${n === 1 ? "" : "s"} missing`;
|
|
68
|
+
const body = [...pkgs.map((p) => `• ${p}`), "", "Run /rpiv-setup to install them."];
|
|
69
|
+
const total = Math.max(title.length + 6, ...body.map((l) => l.length + 4));
|
|
70
|
+
const top = `╭─ ${title} ${"─".repeat(total - title.length - 5)}╮`;
|
|
71
|
+
const middle = body.map((l) => `│ ${l.padEnd(total - 4)}│`).join("\n");
|
|
72
|
+
const bottom = `╰${"─".repeat(total - 2)}╯`;
|
|
73
|
+
return `${top}\n${middle}\n${bottom}`;
|
|
74
|
+
}
|
|
67
75
|
|
|
68
76
|
type UI = { notify: (msg: string, sev: "info" | "warning" | "error") => void };
|
|
69
77
|
|
|
@@ -264,5 +272,5 @@ function notifyCleanup(ui: UI, result: CleanupResult): void {
|
|
|
264
272
|
function warnMissingSiblings(ui: UI): void {
|
|
265
273
|
const missing = findMissingSiblings();
|
|
266
274
|
if (missing.length === 0) return;
|
|
267
|
-
ui.notify(msgMissingSiblings(missing.
|
|
275
|
+
ui.notify(msgMissingSiblings(missing.map((m) => m.pkg.replace(/^npm:/, ""))), "warning");
|
|
268
276
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@juicesharp/rpiv-pi",
|
|
3
|
-
"version": "1.14.
|
|
3
|
+
"version": "1.14.3",
|
|
4
4
|
"description": "A skill-based development workflow for Pi Agent. Five skills (research, design, plan, implement, validate) and the shared subagents that compose its ship-loop.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|