Skip to content

Commit b0c8e88

Browse files
committed
pi: harness v0.4.2 (memory + auto-phase) + config-backup v0.2.0 (guardrails)
- pi-harness v0.4.2: reimplemented memory subsystem (remember/recall/forget/reflect), auto-infer phase from actions, auto-reflect on task completion, auto-promote decisions to memory/facts - pi-config-backup v0.2.0: backup manifest with sha256 hashes, restore divergence protection (skips locally modified files), pre-restore snapshot, syntax validation with node --check before backup - Added ui-ux-design extension v0.1.0 - Added .backup-manifest.json for restore guardrails
1 parent d0b3ba0 commit b0c8e88

9 files changed

Lines changed: 1365 additions & 149 deletions

File tree

config/pi/.backup-manifest.json

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
{
2+
"manifestVersion": 1,
3+
"lastBackupAt": "2026-05-20T20:08:02.078Z",
4+
"files": {
5+
"agent/settings.example.json": {
6+
"hash": "sha256:35e79dd1a8378a08ad62725a92875ff6eb835f63a5e7b9366293fc195c6a4e4b",
7+
"backedUpAt": "2026-05-20T20:08:01.906Z",
8+
"size": 333
9+
},
10+
"agent/extensions/gemini-auto-router/README.md": {
11+
"hash": "sha256:7ff21412eee6be9daed21fb0cf155629f928fa93856afda13eb145a0db7b6ec5",
12+
"backedUpAt": "2026-05-20T20:08:01.907Z",
13+
"size": 1510
14+
},
15+
"agent/extensions/gemini-auto-router/index.ts": {
16+
"hash": "sha256:82f899a6c33eeac178bfc7660841c15af18c9d928f89b5dab44277886e621e7d",
17+
"backedUpAt": "2026-05-20T20:08:01.928Z",
18+
"size": 18902
19+
},
20+
"agent/extensions/gpt-auto-router/README.md": {
21+
"hash": "sha256:dc85df6e7a00da1828855e4b223a82ff1c48bb06499ec13aac285f3c08f93b1b",
22+
"backedUpAt": "2026-05-20T20:08:01.929Z",
23+
"size": 2497
24+
},
25+
"agent/extensions/gpt-auto-router/index.ts": {
26+
"hash": "sha256:d11e3d179ed41061441f2f4941a5095a25391609a113baf8f117c7cb07ab7f10",
27+
"backedUpAt": "2026-05-20T20:08:01.947Z",
28+
"size": 19083
29+
},
30+
"agent/extensions/guardrails.json": {
31+
"hash": "sha256:81a73fc0f872991b72496c9f76c4d6210adb293e38a27a48abba99c846fe6fc6",
32+
"backedUpAt": "2026-05-20T20:08:01.948Z",
33+
"size": 191
34+
},
35+
"agent/extensions/hypr-theme-sync.js": {
36+
"hash": "sha256:576a2dfbf6b9b2a4c209dc5dd57e7afc33c1966aea5a938e633d43251983bd11",
37+
"backedUpAt": "2026-05-20T20:08:01.966Z",
38+
"size": 2412
39+
},
40+
"agent/extensions/list-google-models.js": {
41+
"hash": "sha256:ff8bcfbb01232b0678121f143446943c13332f55da69d53ac74f53d7b243a5cb",
42+
"backedUpAt": "2026-05-20T20:08:01.984Z",
43+
"size": 362
44+
},
45+
"agent/extensions/pi-config-backup/index.ts": {
46+
"hash": "sha256:28024f42d1d295d8bba09f58607f965aff5384cad543d57ffd5e60d3b2906ae4",
47+
"version": "0.2.0",
48+
"backedUpAt": "2026-05-20T20:08:02.002Z",
49+
"size": 22598
50+
},
51+
"agent/extensions/pi-harness/README.md": {
52+
"hash": "sha256:cc49d12dc9eae83866bbb6928944cb07179d2ff85ac3f57950755cdfdc5a48ce",
53+
"backedUpAt": "2026-05-20T20:08:02.002Z",
54+
"size": 4018
55+
},
56+
"agent/extensions/pi-harness/index.ts": {
57+
"hash": "sha256:c51230e93e496e084eb1abf57688d5e1ff7e577111c0b4bc42a53f6f84d81dc1",
58+
"version": "0.4.2",
59+
"backedUpAt": "2026-05-20T20:08:02.022Z",
60+
"size": 64080
61+
},
62+
"agent/extensions/pi-skill-audit/README.md": {
63+
"hash": "sha256:c22331bbdc547127bc016201e5c212b3c1e9a80ec6e1d5c82187d48b05eb7fe0",
64+
"backedUpAt": "2026-05-20T20:08:02.022Z",
65+
"size": 2935
66+
},
67+
"agent/extensions/pi-skill-audit/index.ts": {
68+
"hash": "sha256:f6c55158f736648f3ccd26d84072343c2157621bd866cd788ea8449eeb44c57e",
69+
"version": "0.1.0",
70+
"backedUpAt": "2026-05-20T20:08:02.039Z",
71+
"size": 39754
72+
},
73+
"agent/extensions/ui-ux-design/index.ts": {
74+
"hash": "sha256:c60890b8943328d6d31ca770ab6d4a33a6413fdedca3fb3ce8842a3ea66cf2c1",
75+
"version": "0.1.0",
76+
"backedUpAt": "2026-05-20T20:08:02.058Z",
77+
"size": 16961
78+
},
79+
"agent/extensions/zai-auto-router/README.md": {
80+
"hash": "sha256:c614efee92f3b9a7f1109817a6826380343c78baabfa8dc416872a0f64851aa5",
81+
"backedUpAt": "2026-05-20T20:08:02.058Z",
82+
"size": 2236
83+
},
84+
"agent/extensions/zai-auto-router/index.ts": {
85+
"hash": "sha256:221f4915f4a61f662d87c43454d96e9b28db159e4abbcf8611222954f7755ecb",
86+
"backedUpAt": "2026-05-20T20:08:02.076Z",
87+
"size": 19717
88+
},
89+
"agent/skills/frontend-design/.my-pi-source.json": {
90+
"hash": "sha256:a8097d74cf53d599a91e32fc7df33679ba0fb9f8c5d51070505a1c774db162ba",
91+
"backedUpAt": "2026-05-20T20:08:02.076Z",
92+
"size": 676
93+
},
94+
"agent/skills/frontend-design/SKILL.md": {
95+
"hash": "sha256:8bf9905dbcd9b1edb47f2a44cadbb9bb66314f73a8e3631ec7feee913777ceb8",
96+
"backedUpAt": "2026-05-20T20:08:02.076Z",
97+
"size": 4275
98+
},
99+
"agent/themes/tokyonight.json": {
100+
"hash": "sha256:8324200abc602896c7ec77a3530ef4ba78d4aec76444b17d524f0d935a45f7c4",
101+
"backedUpAt": "2026-05-20T20:08:02.077Z",
102+
"size": 2197
103+
},
104+
"agent/themes/wellpunk-dark.json": {
105+
"hash": "sha256:4ae066db19c6807570e7d40a656dea74933d7ad65c8a8c260154fa88d85b668f",
106+
"backedUpAt": "2026-05-20T20:08:02.077Z",
107+
"size": 2178
108+
},
109+
"agent/themes/wellpunk-light.json": {
110+
"hash": "sha256:363ae2f10fef85cb7ad52f8ad8cbe9dfef572c9c47990fa6752c644e1622ce25",
111+
"backedUpAt": "2026-05-20T20:08:02.078Z",
112+
"size": 2135
113+
}
114+
}
115+
}

config/pi/agent/extensions/gemini-auto-router/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,16 @@ export default function geminiAutoRouter(pi: ExtensionAPI) {
286286
function updateStatus(ctx: ExtensionContext) {
287287
const theme = ctx.ui.theme;
288288

289+
if (!isGoogleActive(ctx)) {
290+
ctx.ui.setStatus("gem-router", undefined);
291+
return;
292+
}
293+
294+
// Gemini router is active; hide statuses from sibling routers that may have
295+
// been left behind after a manual provider/router switch.
296+
ctx.ui.setStatus("gpt-router", undefined);
297+
ctx.ui.setStatus("zai-router", undefined);
298+
289299
if (!autoRouting) {
290300
ctx.ui.setStatus("gem-router", theme.fg("dim", "gem:manual"));
291301
return;

config/pi/agent/extensions/gpt-auto-router/index.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,12 +304,16 @@ export default function gptAutoRouter(pi: ExtensionAPI) {
304304
function updateStatus(ctx: ExtensionContext) {
305305
const theme = ctx.ui.theme;
306306

307-
// Allow status if codex is active OR we have a recent route (model may still be switching)
308-
if (!isCodexActive(ctx) && !lastRoute) {
307+
if (!isCodexActive(ctx)) {
309308
ctx.ui.setStatus("gpt-router", undefined);
310309
return;
311310
}
312311

312+
// GPT router is active; hide statuses from sibling routers that may have
313+
// been left behind after a manual provider/router switch.
314+
ctx.ui.setStatus("gem-router", undefined);
315+
ctx.ui.setStatus("zai-router", undefined);
316+
313317
if (!autoRouting) {
314318
ctx.ui.setStatus(
315319
"gpt-router",

0 commit comments

Comments
 (0)