Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
187 commits
Select commit Hold shift + click to select a range
1da3727
docs: add RPI Cockpit design spec and Fluent mockup
MichaelDanCurtis Jun 24, 2026
a733cd4
docs: add RPI Cockpit MVP implementation plan
MichaelDanCurtis Jun 24, 2026
69ec133
feat(cockpit): scaffold bridge package
MichaelDanCurtis Jun 24, 2026
74599ab
feat(cockpit): add beat and decision schemas
MichaelDanCurtis Jun 24, 2026
af8ffb9
feat(cockpit): add session state reducer
MichaelDanCurtis Jun 24, 2026
622ed02
feat(cockpit): add bridge with decision handshake
MichaelDanCurtis Jun 24, 2026
f18d7c9
feat(cockpit): add beat tool handlers
MichaelDanCurtis Jun 24, 2026
bac942c
feat(cockpit): add http and websocket server
MichaelDanCurtis Jun 24, 2026
56147b4
fix(cockpit): harden ws server (json guard, path traversal, close ord…
MichaelDanCurtis Jun 24, 2026
1559f58
feat(cockpit): add mcp face and entry point
MichaelDanCurtis Jun 24, 2026
7c24cad
feat(cockpit): add ui render and websocket client
MichaelDanCurtis Jun 24, 2026
e776141
fix(cockpit): escape all server-derived strings in cockpit client (xss)
MichaelDanCurtis Jun 24, 2026
8114110
feat(cockpit): add instrumentation, registration, and e2e smoke
MichaelDanCurtis Jun 24, 2026
44dc007
test(cockpit): make e2e wait on conditions; clarify instrumentation doc
MichaelDanCurtis Jun 24, 2026
60548cc
fix(cockpit): wire validation gate to UI; guard empty options and dec…
MichaelDanCurtis Jun 24, 2026
6da22fa
docs(agents): instrument RPI agents to narrate to the RPI Cockpit
MichaelDanCurtis Jun 24, 2026
5787b32
feat(cockpit): bind loopback, finite decision timeout, packaging
MichaelDanCurtis Jun 24, 2026
d627ead
feat(cockpit): add idempotent `init` command to wire MCP + narration …
MichaelDanCurtis Jun 24, 2026
60017a8
feat(cockpit): generate host MCP configs + narration via init
MichaelDanCurtis Jun 24, 2026
76b74a2
docs(cockpit): consolidate RPI narration to the canonical contract
MichaelDanCurtis Jun 24, 2026
1f5929c
docs(cockpit): fix Claude Code setup footgun; align .mcp.json.example
MichaelDanCurtis Jun 24, 2026
d046b33
fix(agents): stop RPI agent infinite loop in VS Code Copilot
MichaelDanCurtis Jun 24, 2026
9f1fb94
fix(agents): make hve-core agent handoffs click-to-advance (send: false)
MichaelDanCurtis Jun 24, 2026
2b3efc5
fix(cockpit): Discover presents next-work, does not auto-execute it
MichaelDanCurtis Jun 24, 2026
5bae117
docs(cockpit): spec for live GUI wiring + browser→agent steering
MichaelDanCurtis Jun 24, 2026
3b5007c
docs(cockpit): implementation plan for live GUI wiring + steering
MichaelDanCurtis Jun 24, 2026
5151fff
feat(cockpit): GUI dashboard design (baseline before live wiring)
MichaelDanCurtis Jun 24, 2026
66b73aa
feat(cockpit): directive/steer schemas and approaches.offer beat
MichaelDanCurtis Jun 24, 2026
fcab039
feat(cockpit): steerMenu + directive queue in session state
MichaelDanCurtis Jun 24, 2026
c2ee377
feat(cockpit): bridge enqueue/drain/offerApproaches
MichaelDanCurtis Jun 24, 2026
db5aeab
feat(cockpit): offer_approaches + check_directives MCP tools
MichaelDanCurtis Jun 24, 2026
55d78a9
feat(cockpit): extend toViewModel with header/lead/steer/directives
MichaelDanCurtis Jun 24, 2026
9efe05d
feat(cockpit): broadcast view model and accept steer frames
MichaelDanCurtis Jun 24, 2026
956d34c
feat(cockpit): dashboard bind points + working steer panel, remove fa…
MichaelDanCurtis Jun 24, 2026
6cec54a
feat(cockpit): state-driven client with reconnect + steering
MichaelDanCurtis Jun 24, 2026
d16935e
fix(cockpit): escape step status in client + harden render
MichaelDanCurtis Jun 24, 2026
5afb841
docs(cockpit): document offer_approaches + check_directives in the na…
MichaelDanCurtis Jun 24, 2026
7340e4a
refactor(cockpit): symmetric inbound branches + clarify approach valu…
MichaelDanCurtis Jun 24, 2026
8564db3
Merge branch 'design/rpi-cockpit': RPI Cockpit live GUI wiring + stee…
MichaelDanCurtis Jun 24, 2026
43cb281
feat(cockpit): per-session token auth for HTTP + WS
MichaelDanCurtis Jun 26, 2026
aeb3bdb
feat(cockpit): file-mediated talk-back (directives/decisions JSONL sink)
MichaelDanCurtis Jun 26, 2026
db6806f
feat(cockpit): agent-authored screen pane (sandboxed iframe)
MichaelDanCurtis Jun 26, 2026
b815935
docs(cockpit): add RPI Cockpit roadmap (server-less-first visual comp…
MichaelDanCurtis Jun 26, 2026
b89afc2
docs(cockpit): add representation map (HVE Core archetypes -> cockpit…
MichaelDanCurtis Jun 26, 2026
1f5aa8c
docs(cockpit): roadmap + map reflect host-managed panes and the app_f…
MichaelDanCurtis Jun 26, 2026
8e96e99
docs(cockpit): add v1 embed-mode implementation plan
MichaelDanCurtis Jun 26, 2026
08482a5
feat(cockpit): add resolvePort helper (PORT > RPI_COCKPIT_PORT > 4399)
MichaelDanCurtis Jun 26, 2026
c25678d
feat(cockpit): opt-in loopback-trust embed mode (skip token, keep Ori…
MichaelDanCurtis Jun 26, 2026
9c2e3bc
feat(cockpit): resolve port via resolvePort in the MCP entry
MichaelDanCurtis Jun 26, 2026
1617386
feat(cockpit): committed preview launcher + embed launch config
MichaelDanCurtis Jun 26, 2026
210cd27
docs(cockpit): re-center roadmap on the HVE Cockpit (Navigator + loop…
MichaelDanCurtis Jun 26, 2026
8fb012c
docs(cockpit): add HVE Cockpit Navigator design spec (home, loop view…
MichaelDanCurtis Jun 26, 2026
83f0f31
docs(cockpit): add Navigator home v1 implementation plan
MichaelDanCurtis Jun 26, 2026
8978096
feat(cockpit): add workflow capability catalog for the Navigator
MichaelDanCurtis Jun 26, 2026
63a1ff1
feat(cockpit): add home/loop view + workflow catalog to state and vie…
MichaelDanCurtis Jun 26, 2026
eef3d30
feat(cockpit): launch + navigate inbound frames (intent to the agent,…
MichaelDanCurtis Jun 26, 2026
90b3411
feat(cockpit): Navigator home screen with workflow tiles and home/loo…
MichaelDanCurtis Jun 26, 2026
5db3972
fix(cockpit): hide back-to-home control while on the Navigator home
MichaelDanCurtis Jun 26, 2026
2435853
feat(cockpit): preview opens on the Navigator home and simulates the …
MichaelDanCurtis Jun 26, 2026
e1db637
test(cockpit): replace timer settles with state-event awaits, assert …
MichaelDanCurtis Jun 26, 2026
1aab872
docs(cockpit): add elicitation decision primitive design spec
MichaelDanCurtis Jun 26, 2026
b5d39f9
docs(cockpit): add elicitation decision primitive implementation plan
MichaelDanCurtis Jun 26, 2026
fdbf83b
feat(cockpit): elicitation form + result mappers for the decision pri…
MichaelDanCurtis Jun 26, 2026
6e98a66
fix(cockpit): guard optionsToElicitSchema against empty options + tes…
MichaelDanCurtis Jun 26, 2026
b241f20
feat(cockpit): race the pane card and native elicitation, first answe…
MichaelDanCurtis Jun 26, 2026
1527702
feat(cockpit): present_options drives the native elicitation card alo…
MichaelDanCurtis Jun 26, 2026
0d4419c
docs(cockpit): add reviewers findings panel design spec (read-only v1)
MichaelDanCurtis Jun 26, 2026
eb6cc2e
docs(cockpit): add reviewers findings panel implementation plan
MichaelDanCurtis Jun 26, 2026
29174d5
feat(cockpit): review.start + finding.add beats and findings state
MichaelDanCurtis Jun 26, 2026
cee0331
feat(cockpit): findings grouped by severity in the view-model
MichaelDanCurtis Jun 26, 2026
db9c6d4
feat(cockpit): review_start + add_finding MCP tools
MichaelDanCurtis Jun 26, 2026
3d8fba7
feat(cockpit): read-only findings panel rendered on the review domain
MichaelDanCurtis Jun 26, 2026
7f78f0f
fix(cockpit): review.start sets view to loop so the findings panel sh…
MichaelDanCurtis Jun 26, 2026
2b79285
docs(cockpit): add guided doc interview design spec (question primiti…
MichaelDanCurtis Jun 26, 2026
c939fdf
docs(cockpit): add guided doc interview implementation plan
MichaelDanCurtis Jun 26, 2026
ce1b58e
feat(cockpit): interview.start beat, interview domain, docType + pend…
MichaelDanCurtis Jun 26, 2026
9e4cc80
feat(cockpit): question primitive (askQuestion) on a shared elicitati…
MichaelDanCurtis Jun 26, 2026
5c1ec71
feat(cockpit): interview_start + ask_question tools and the answer frame
MichaelDanCurtis Jun 26, 2026
5b91a57
feat(cockpit): guided doc interview view (question card + document pa…
MichaelDanCurtis Jun 26, 2026
2b4bda4
fix(cockpit): guard interview doc srcdoc and dedup the answer-send lo…
MichaelDanCurtis Jun 26, 2026
8b20f10
fix(cockpit): interview.start clears any stale pendingQuestion
MichaelDanCurtis Jun 26, 2026
9935f60
fix(cockpit): welcome is a one-time pop-up modal, not a permanent hom…
MichaelDanCurtis Jun 26, 2026
a420e3e
feat(cockpit): move the workflow launcher to a native choice card (pr…
MichaelDanCurtis Jun 26, 2026
f75591b
feat(cockpit): persistent help button reopens the welcome/intro modal…
MichaelDanCurtis Jun 26, 2026
47fe6e8
fix(cockpit): rebrand to HVE Cockpit; stop the home section bleeding …
MichaelDanCurtis Jun 27, 2026
e40d023
feat(cockpit): Navigator pop-up picker in the cockpit (tiles) + open_…
MichaelDanCurtis Jun 27, 2026
cce56f0
polish(cockpit): style Navigator tile icons; rewrite navigator-design…
MichaelDanCurtis Jun 27, 2026
27c7d2b
feat(cockpit): backlog orchestration kanban loop view (board beats + …
MichaelDanCurtis Jun 27, 2026
0b5f3c3
docs(cockpit): backlog kanban loop view design spec
MichaelDanCurtis Jun 27, 2026
3222d27
feat(cockpit): context badges primitive (active instructions/skills/c…
MichaelDanCurtis Jun 27, 2026
57aabef
docs(cockpit): context badges primitive design spec
MichaelDanCurtis Jun 27, 2026
2340972
feat(cockpit): live preview tour drives every loop view (context stri…
MichaelDanCurtis Jun 27, 2026
d806fb0
fix(cockpit): harden — decision card in all domains, dismissable navi…
MichaelDanCurtis Jun 27, 2026
e2b38b3
feat(cockpit): app frame primitive — trusted loopback-only iframe of …
MichaelDanCurtis Jun 27, 2026
fec73fd
docs(cockpit): app frame primitive design spec
MichaelDanCurtis Jun 27, 2026
4730511
feat(cockpit): Fluent depth, material, and motion polish (reduced-mot…
MichaelDanCurtis Jun 27, 2026
f179434
docs(cockpit): Fluent and motion polish design brief
MichaelDanCurtis Jun 27, 2026
1083668
feat(cockpit): live team-orchestration view — orchestrator + subagent…
MichaelDanCurtis Jun 27, 2026
943ab11
docs(cockpit): live team-orchestration view design spec
MichaelDanCurtis Jun 27, 2026
75d1460
feat(cockpit): 3D codebase map — CSS-3D spatial view with a camera th…
MichaelDanCurtis Jun 27, 2026
1e1ddba
fix(cockpit): codemap stage fills the main area (#loop now flexes); a…
MichaelDanCurtis Jun 27, 2026
b0301e8
feat(cockpit): live pane via a file-backed cross-process bridge (stat…
MichaelDanCurtis Jun 27, 2026
8cf18ba
feat(cockpit): extend narration contract to every archetype so all ag…
MichaelDanCurtis Jun 27, 2026
df7acd2
fix(cockpit): live producer seeks inbox.jsonl to the end on startup s…
MichaelDanCurtis Jun 27, 2026
116cf15
fix(cockpit): RPI loop view is a three-column dashboard (stepper rail…
MichaelDanCurtis Jun 27, 2026
b56ba06
docs(cockpit): numbered, categorized inventory of all 65 agents for t…
MichaelDanCurtis Jun 27, 2026
b8ec526
docs(cockpit): decision-flow design spec (navigable, revisitable Q&A;…
MichaelDanCurtis Jun 28, 2026
716b81a
docs(cockpit): decision-flow implementation plan (7 TDD tasks)
MichaelDanCurtis Jun 28, 2026
8d6866e
feat(cockpit): decision-flow state model (decisions array + pure redu…
MichaelDanCurtis Jun 28, 2026
6f73568
feat(cockpit): bridge drives the decision flow (append/answer/revise/…
MichaelDanCurtis Jun 28, 2026
bac0098
feat(cockpit): revise inbound frame (rewind a decision)
MichaelDanCurtis Jun 28, 2026
0d856ba
feat(cockpit): view-model projects the decision flow
MichaelDanCurtis Jun 28, 2026
18e5d33
feat(cockpit): present_options/ask_question take an id; report host e…
MichaelDanCurtis Jun 28, 2026
0ff54b4
feat(cockpit): decision-flow list view replaces the decision card and…
MichaelDanCurtis Jun 28, 2026
ab28531
docs(cockpit): narration contract covers the revise-decision rewind
MichaelDanCurtis Jun 28, 2026
3183977
refactor(cockpit): drop dead .iv-empty rule; rename addDecision index…
MichaelDanCurtis Jun 28, 2026
cf70d1d
docs(cockpit): review-panel improvements design (orchestrator progres…
MichaelDanCurtis Jun 28, 2026
6f165f5
docs(cockpit): review-panel improvements implementation plan (2 tasks)
MichaelDanCurtis Jun 28, 2026
9db6beb
feat(cockpit): findings panel shows the reviewer pipeline + copyable …
MichaelDanCurtis Jun 28, 2026
a4b36ca
docs(cockpit): contract for reviewer pipeline progress and narrative …
MichaelDanCurtis Jun 28, 2026
afaf0ba
docs(cockpit): backlog hierarchy design (parent/child board nesting)
MichaelDanCurtis Jun 28, 2026
852c269
docs(cockpit): backlog hierarchy implementation plan (4 tasks)
MichaelDanCurtis Jun 28, 2026
c817fdc
feat(cockpit): backlog items accept an optional parent
MichaelDanCurtis Jun 28, 2026
9ac320d
feat(cockpit): view-model projects backlog hierarchy (depth + parentRef)
MichaelDanCurtis Jun 28, 2026
8975cbb
feat(cockpit): kanban nests child cards and shows cross-column parentage
MichaelDanCurtis Jun 28, 2026
726263a
docs(cockpit): add_item gains parent; PRD-to-WIT planners nest the WI…
MichaelDanCurtis Jun 28, 2026
b5a1630
docs(cockpit): dataset profile view design (new dataprofile domain)
MichaelDanCurtis Jun 28, 2026
d296094
docs(cockpit): dataset profile view implementation plan (4 tasks)
MichaelDanCurtis Jun 28, 2026
2c41b66
feat(cockpit): dataprofile domain state, beats, and view-model
MichaelDanCurtis Jun 28, 2026
775eeff
feat(cockpit): dataset_profile and add_column MCP tools
MichaelDanCurtis Jun 28, 2026
90bf3e4
feat(cockpit): dataprofile table view and domain routing
MichaelDanCurtis Jun 28, 2026
b6d1da5
docs(cockpit): data-science narration contract (profile, dashboards, …
MichaelDanCurtis Jun 28, 2026
00fc32c
docs(cockpit): interview progress stepper design
MichaelDanCurtis Jun 28, 2026
367e053
docs(cockpit): interview progress stepper implementation plan (4 tasks)
MichaelDanCurtis Jun 28, 2026
1621781
feat(cockpit): interview steps state, beat, and view-model projection
MichaelDanCurtis Jun 28, 2026
6cc5ea6
feat(cockpit): set_steps MCP tool for the interview stepper
MichaelDanCurtis Jun 28, 2026
615640e
feat(cockpit): interview view renders the program stepper
MichaelDanCurtis Jun 28, 2026
0e57c79
docs(cockpit): contract for the interview progress stepper
MichaelDanCurtis Jun 28, 2026
fd3abd5
docs(cockpit): polish design (responsive interview layout, step sub-p…
MichaelDanCurtis Jun 28, 2026
ebb7514
docs(cockpit): polish implementation plan (3 tasks)
MichaelDanCurtis Jun 28, 2026
14c39d3
feat(cockpit): responsive side-by-side interview layout
MichaelDanCurtis Jun 28, 2026
638e44e
feat(cockpit): per-step sub-progress in the interview stepper
MichaelDanCurtis Jun 28, 2026
d2fe266
feat(cockpit): open-in-editor intent on findings
MichaelDanCurtis Jun 28, 2026
fb3f01e
fix(cockpit): keyboard focus ring on finding-loc/finding-open buttons
MichaelDanCurtis Jun 28, 2026
1703233
docs(cockpit): 65-agent graphic verification matrix
MichaelDanCurtis Jun 28, 2026
e2ecd51
docs(cockpit): gallery surface design spec
MichaelDanCurtis Jun 28, 2026
5bf5711
docs(cockpit): gallery surface implementation plan
MichaelDanCurtis Jun 28, 2026
c5d8c69
feat(cockpit): gallery domain state, beats, and view-model
MichaelDanCurtis Jun 28, 2026
d995b57
feat(cockpit): gallery_open/add/clear MCP tools with url validation
MichaelDanCurtis Jun 28, 2026
47fed66
feat(cockpit): gallery view with scaled thumbnails, size toggle, and …
MichaelDanCurtis Jun 28, 2026
6c1efa7
feat(cockpit): agent-gallery producer feeds the gallery surface
MichaelDanCurtis Jun 28, 2026
d6afce7
docs(cockpit): gallery narration contract
MichaelDanCurtis Jun 28, 2026
64bc828
fix(cockpit): responsive gallery sizing (S boxes, M/L fluid thumbnails)
MichaelDanCurtis Jun 29, 2026
5c2e856
fix(cockpit): backfill stale snapshots in live consumer; align produc…
MichaelDanCurtis Jun 29, 2026
a4538f4
feat(cockpit): shift gallery sizes up; L is a full-width vertical stack
MichaelDanCurtis Jun 29, 2026
4a7e839
docs(cockpit): promptlab workbench design spec
MichaelDanCurtis Jun 29, 2026
6fe9841
docs(cockpit): promptlab workbench implementation plan
MichaelDanCurtis Jun 29, 2026
21e1f92
feat(cockpit): promptlab domain state, beats, and view-model
MichaelDanCurtis Jun 29, 2026
a7612e3
feat(cockpit): promptlab_start and add_case MCP tools
MichaelDanCurtis Jun 29, 2026
9c616ee
feat(cockpit): promptlab workbench view (case table + prompt panel) a…
MichaelDanCurtis Jun 29, 2026
ed9e2aa
fix(cockpit): key promptlab expand state by case id and reconcile per…
MichaelDanCurtis Jun 29, 2026
8465943
docs(cockpit): prompt-engineering narration contract (promptlab)
MichaelDanCurtis Jun 29, 2026
6ff4d5e
chore(cockpit): promptlab expand-handler comment + selector-safe row …
MichaelDanCurtis Jun 29, 2026
da7409c
docs(cockpit): memory view design spec
MichaelDanCurtis Jun 29, 2026
095a71b
docs(cockpit): memory view implementation plan
MichaelDanCurtis Jun 29, 2026
505853c
feat(cockpit): memory domain state, beats, and view-model
MichaelDanCurtis Jun 29, 2026
647f217
feat(cockpit): memory_open, add_memory, add_handoff MCP tools
MichaelDanCurtis Jun 29, 2026
9677514
feat(cockpit): memory view (category-grouped entries + handoff strip)…
MichaelDanCurtis Jun 29, 2026
b11eb83
docs(cockpit): memory narration contract
MichaelDanCurtis Jun 29, 2026
646a910
docs(cockpit): align memory spec handoff empty-state with implementation
MichaelDanCurtis Jun 29, 2026
66e4a78
docs(cockpit): gh-aw flow surface deep-thinking exploration (pre-brai…
MichaelDanCurtis Jun 29, 2026
031784a
docs(cockpit): flow canvas (gh-aw pipeline) design spec
MichaelDanCurtis Jun 29, 2026
459eaed
docs(cockpit): flow canvas implementation plan
MichaelDanCurtis Jun 29, 2026
a604e2b
feat(cockpit): flow domain state, beats, and view-model
MichaelDanCurtis Jun 29, 2026
5309c78
feat(cockpit): flow_open, add_flow_node, add_flow_edge, flow_focus MC…
MichaelDanCurtis Jun 29, 2026
1269c04
feat(cockpit): computeFlowLayout (layered, back-edge tolerant) for th…
MichaelDanCurtis Jun 29, 2026
0d03c5b
feat(cockpit): flow canvas shell, camera, node cards, and routing
MichaelDanCurtis Jun 29, 2026
397f9bb
feat(cockpit): flow canvas SVG bezier edges + live-run animation
MichaelDanCurtis Jun 29, 2026
9047a34
feat(cockpit): flow canvas drill-in, inspector, and minimap
MichaelDanCurtis Jun 29, 2026
630c6e1
docs(cockpit): agentic-workflows narration contract (flow canvas)
MichaelDanCurtis Jun 29, 2026
a08236e
fix(cockpit): fit the flow camera to the graph on a new pipeline or d…
MichaelDanCurtis Jun 29, 2026
0841c7a
chore(cockpit): pin npm dependencies to exact versions
MichaelDanCurtis Jun 29, 2026
11c5bb2
feat(cockpit): add /gallery command + cockpit convention
MichaelDanCurtis Jun 30, 2026
c19c013
fix(cockpit): render gh-aw agent (#58) gallery tile as the flow DAG
MichaelDanCurtis Jun 30, 2026
4dc32de
fix(cockpit): render memory (#57) + prompt cluster (#60/#61/#62) gall…
MichaelDanCurtis Jun 30, 2026
fbfeb5c
chore: keep internal design docs and roadmap out of the upstream cont…
MichaelDanCurtis Jun 30, 2026
f3dfbb1
Merge branch 'main' into design/rpi-cockpit
jkim323 Jul 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .claude/commands/gallery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---

Check warning on line 1 in .claude/commands/gallery.md

View workflow job for this annotation

GitHub Actions / Frontmatter Validation / Validate Markdown Frontmatter

Missing standard Copilot footer
description: Launch the HVE Cockpit agent gallery (all 65 agents) and show it live in the preview pane
argument-hint: ""
---

# Gallery

Open the **HVE Cockpit gallery** surface (the scrollable contact sheet of every HVE Core agent) and show it live in the Claude Code preview pane. Do this without asking for confirmation.

1. **Build if needed.** From `rpi-cockpit/`, run `npm run build` only when `dist/` is missing or older than `src/`; otherwise skip it.
2. **Launch the producer in the background:** `cd rpi-cockpit && node tools/agent-gallery.mjs` (pass `PORT=<n>` if 4505 is taken). It renders every agent through the real cockpit client and prints `agent gallery: http://127.0.0.1:<port>/?key=<token>` while it keeps serving. Capture that full keyed URL from its output.
3. **Show it in the preview pane.** Start or reuse a preview server, then navigate the preview to the captured keyed URL (`preview_eval` setting `window.location.href`). The page loads the full cockpit with the `gallery` domain already open.
4. **Verify** with a screenshot (agent tiles grouped by category, the S/M/L size toggle bottom-left of the header, click-to-expand lightbox) and a console-error check.
5. **Report** the keyed URL so the user can open it in their own browser, and remind them the **S/M/L** toggle resizes the tiles and clicking a tile opens the full-size lightbox.

Leave the producer running so the user can keep exploring; it serves until killed.
11 changes: 11 additions & 0 deletions .claude/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": "0.0.1",
"configurations": [
{
"name": "rpi-cockpit",
"runtimeExecutable": "node",
"runtimeArgs": ["rpi-cockpit/dist/index.js", "live"],
"autoPort": true
}
]
}
6 changes: 3 additions & 3 deletions .github/agents/hve-core/memory.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ handoffs:
- label: "🗑️ Clear"
agent: RPI Agent
prompt: "/clear"
send: true
send: false
- label: "🚀 Continue with RPI"
agent: RPI Agent
prompt: "/rpi suggest"
send: true
send: false
- label: "🚀 Continue with Backlog"
agent: GitHub Backlog Manager
prompt: "/github-suggest"
send: true
send: false
---

# Memory Agent
Expand Down
8 changes: 4 additions & 4 deletions .github/agents/hve-core/prompt-builder.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,19 @@ handoffs:
- label: "🛠️ Refactor"
agent: Prompt Builder
prompt: /prompt-refactor all prompt files in this conversation
send: true
send: false
- label: "🤔 Analyze"
agent: Prompt Builder
prompt: /prompt-analyze all prompt files in this conversation
send: true
send: false
- label: "🔧 Apply Fixes"
agent: Prompt Builder
prompt: "/prompt-build make updates based on findings in this conversation"
send: true
send: false
- label: "♻️ Cleanup Sandbox"
agent: Prompt Builder
prompt: "Clear the sandbox for this conversation"
send: true
send: false
---

# Prompt Builder
Expand Down
23 changes: 17 additions & 6 deletions .github/agents/hve-core/rpi-agent.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,27 @@ handoffs:
- label: "1️⃣"
agent: RPI Agent
prompt: "/rpi continue=1"
send: true
send: false
- label: "2️⃣"
agent: RPI Agent
prompt: "/rpi continue=2"
send: true
send: false
- label: "3️⃣"
agent: RPI Agent
prompt: "/rpi continue=3"
send: true
send: false
- label: "▶️ All"
agent: RPI Agent
prompt: "/rpi continue=all"
send: true
send: false
- label: "🔄 Suggest"
agent: RPI Agent
prompt: "/rpi suggest"
send: true
send: false
- label: "💾 Save"
agent: Memory
prompt: /checkpoint
send: true
send: false
---

# RPI Agent
Expand Down Expand Up @@ -99,6 +99,17 @@ When a task requires subagents but neither `runSubagent` nor `task` tools are av

Treat the phase guidance below as operating defaults rather than ceremony. Delegate only when it materially improves the outcome.

## Cockpit narration

When the `rpi-cockpit` MCP tools are available, narrate this workflow to the RPI Cockpit following `rpi-cockpit/agents/cockpit-instructions.md`. Skip silently when the tools are not connected. Map the beats as follows:

* Call `session_begin(task, host)` once when the user request starts.
* Call `phase_enter(phase)` when entering each phase: `research`, `plan`, `implement`, `review`, and `discover`.
* Wrap every `Researcher Subagent` and `Phase Implementor` dispatch with `subagent_start(name, role)` before and `subagent_stop(name, result)` after.
* Call `validate(check, status)` for each check run in the Phase 3 validation gate.
* Call `artifact_update(path, summary)` after writing or updating each `.copilot-tracking/` artifact.
* In Phase 5, surface the Suggested Next Work list through `present_options(prompt, options[])` so the user can choose the next item in the cockpit. Act only on an explicit user selection; if no selection is made, stop and yield to the user rather than auto-starting the next cycle.

## Context Discipline

After any subagent returns, this turn must be lean:
Expand Down
6 changes: 3 additions & 3 deletions .github/agents/hve-core/task-challenger.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ handoffs:
- label: "🔬 Research Questions"
agent: Task Researcher
prompt: "/task-research Find and read the most recent challenge tracking document in .copilot-tracking/challenges/ (most recent by date prefix) for the Q&A log and unresolved items: these define the research scope."
send: true
send: false
- label: "📋 Revise Plan"
agent: Task Planner
prompt: "/task-plan Find and read the most recent challenge tracking document in .copilot-tracking/challenges/ (most recent by date prefix) for challenge findings and unresolved items before planning."
send: true
send: false
- label: "⚡ Implement Changes"
agent: Task Implementor
prompt: "/task-implement Address the immediate changes identified through the challenge session. Find and read the most recent challenge tracking document in .copilot-tracking/challenges/ (most recent by date prefix) for findings."
send: true
send: false
---

# Task Challenger
Expand Down
11 changes: 10 additions & 1 deletion .github/agents/hve-core/task-implementor.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ handoffs:
- label: "✅ Review"
agent: Task Reviewer
prompt: /task-review
send: true
send: false
---

# Task Implementor
Expand Down Expand Up @@ -63,6 +63,15 @@ The Researcher Subagent returns deep research findings: subagent research docume

Subagents can run in parallel when investigating independent topics or executing independent phases.

## Cockpit narration

When the `rpi-cockpit` MCP tools are available, narrate implementation progress to the RPI Cockpit following `rpi-cockpit/agents/cockpit-instructions.md`. Skip silently when the tools are not connected. Map the beats as follows:

* Call `phase_enter("implement")` when implementation starts.
* Wrap every `Phase Implementor` dispatch with `subagent_start(name, role)` before and `subagent_stop(name, result)` after.
* Call `validate(check, status)` for each lint, type, test, and build check.
* Call `artifact_update(path, summary)` after updating the changes log in `.copilot-tracking/changes/`.

## Context Discipline

After any subagent returns, this turn must be lean:
Expand Down
11 changes: 10 additions & 1 deletion .github/agents/hve-core/task-planner.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ handoffs:
- label: "⚡ Implement"
agent: Task Implementor
prompt: /task-implement
send: true
send: false
---

# Task Planner
Expand Down Expand Up @@ -54,6 +54,15 @@ Run `Plan Validator` using `runSubagent` or `task`, providing these inputs:

Subagents can run in parallel when investigating independent topics or validating independent concerns.

## Cockpit narration

When the `rpi-cockpit` MCP tools are available, narrate planning progress to the RPI Cockpit following `rpi-cockpit/agents/cockpit-instructions.md`. Skip silently when the tools are not connected. Map the beats as follows:

* Call `phase_enter("plan")` when planning starts.
* Wrap every `Researcher Subagent` and `Plan Validator` dispatch with `subagent_start(name, role)` before and `subagent_stop(name, result)` after.
* Call `artifact_update(path, summary)` after writing or updating each plan, details, or planning log file in `.copilot-tracking/`.
* Present Planning Decisions (PD) choices through `present_options(prompt, options[])` instead of asking in chat, then act on the returned id.

## Context Discipline

After any subagent returns, this turn must be lean:
Expand Down
10 changes: 9 additions & 1 deletion .github/agents/hve-core/task-researcher.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ handoffs:
- label: "📋 Create Plan"
agent: Task Planner
prompt: /task-plan
send: true
send: false
- label: "🔬 Deeper Research"
agent: Task Researcher
prompt: /task-research continue deeper research based on potential next research items
Expand Down Expand Up @@ -46,6 +46,14 @@ Run `Researcher Subagent` with `runSubagent` or `task`, and parallelize calls wh

Subagents can run in parallel when investigating independent topics or sources.

## Cockpit narration

When the `rpi-cockpit` MCP tools are available, narrate research progress to the RPI Cockpit following `rpi-cockpit/agents/cockpit-instructions.md`. Skip silently when the tools are not connected. Map the beats as follows:

* Call `phase_enter("research")` when research starts.
* Wrap every `Researcher Subagent` dispatch with `subagent_start(name, role)` before and `subagent_stop(name, result)` after.
* Call `artifact_update(path, summary)` after writing or updating each research document in `.copilot-tracking/research/`.

## Context Discipline

After any subagent returns, this turn must be lean:
Expand Down
14 changes: 11 additions & 3 deletions .github/agents/hve-core/task-reviewer.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ handoffs:
- label: "🔬 Research More"
agent: Task Researcher
prompt: /task-research
send: true
send: false
- label: "📋 Revise Plan"
agent: Task Planner
prompt: /task-plan
send: true
send: false
- label: "⚡ Implement Immediately"
agent: Task Implementor
prompt: /task-implement Address the findings found in the review document
send: true
send: false
---

# Implementation Reviewer
Expand All @@ -33,6 +33,14 @@ Reviews completed implementation work from `.copilot-tracking/` artifacts. Valid
* Match `applyTo` patterns from `.github/instructions/` files against changed file types to identify applicable conventions.
* Subagents return structured, evidence-based responses with severity levels and can ask clarifying questions rather than guessing.

## Cockpit narration

When the `rpi-cockpit` MCP tools are available, narrate review progress to the RPI Cockpit following `rpi-cockpit/agents/cockpit-instructions.md`. Skip silently when the tools are not connected. Map the beats as follows:

* Call `phase_enter("review")` when review starts.
* Call `artifact_update(path, summary)` after writing or updating the review log in `.copilot-tracking/reviews/`.
* When review surfaces a choice for the user, present it through `present_options(prompt, options[])` instead of asking in chat, then act on the returned id.

## Context Discipline

After any subagent returns, this turn must be lean:
Expand Down
58 changes: 58 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -297,3 +297,61 @@ The `copilot-setup-steps.yml` and `.devcontainer/scripts/on-create.sh` share mos
<!-- </coding-agent-environment> -->

🤖 Crafted with precision by ✨Copilot following brilliant human instruction, then carefully refined by our team of discerning human reviewers.

<!-- rpi-cockpit:narration:begin -->
## Cockpit instrumentation

When the `rpi-cockpit` MCP tools are available, narrate your work to the cockpit by calling them. Pick the surface that matches what you are doing: the cockpit renders one view per kind of work, so a reviewer drives the findings panel, a backlog manager drives the kanban, an orchestrator drives the team board, and so on. These calls are informational and non-blocking unless noted. When the tools are not available, do nothing extra (the user's steering is still readable from disk, see the end).

### Always, in any workflow

* At the start of a coding session or build, call `session_begin(task, host)`.
* Call `set_context(instructions, skills, collection)` to show which coding standards, skills, and collection are active for this work. Pass everything currently active; omitting a field clears that group.
* At each major step, and before any decision, call `check_directives()`. It returns immediately with any notes or picks the user queued in the cockpit (or "no pending directives"). You MUST read and act on them.
* To let the user choose what to do, call `present_workflows()` (a native choice card in the chat), or `open_navigator()` to pop the in-cockpit workflow picker (for example on a `/Nav` request).
* To show the user's app under development beside the cockpit, call `set_app_frame(url)` with a loopback http(s) URL (localhost, 127.0.0.1, or [::1]); non-loopback URLs are rejected. Pass null to clear it.

### Asking the user (any workflow, these BLOCK)

* `present_options(prompt, options[])` for a bounded choice: it blocks until the user picks (in the cockpit or the native card) and returns the chosen `id`. Act on the returned id.
* `ask_question(prompt)` for a free-text answer: it blocks until the user answers and returns the text.

### RPI build loop (research, plan, implement, review, discover)

* `phase_enter(phase)` on entering each phase (research|plan|implement|review|discover).
* `subagent_start(name, role)` before a subagent and `subagent_stop(name, result)` after.
* `artifact_update(path, summary)` after writing a tracking file.
* `validate(check, status)` on each validation check (status ok|running|fail|pending).
* `offer_approaches(label, options[])` to populate the cockpit's Steer select with the real choices for the next phase (non-blocking).
* `show_screen(html, title?)` and `clear_screen()` for arbitrary static HTML (a mockup, a diff, rendered markdown, a diagram) in a sandboxed pane.

### Reviews and audits (code review, PR review, security, accessibility, RAI)

* `review_start(target)` when you begin a review (target is the branch, PR, or scope).
* `add_finding(severity, title, file?, line?, detail?)` per finding (severity critical|high|medium|low|info). The cockpit groups findings by severity with file links.

### Guided document builders (PRD, BRD, ADR, security, RAI, accessibility plans)

* `interview_start(docType)` when you begin the guided interview.
* Ask each question with `ask_question(prompt)` (it blocks for the answer); render the growing draft with `show_screen(html, "…")`.

### Backlog orchestration (GitHub, ADO, Jira: discover, triage, sprint, execute)

* `backlog_start(target, columns[])` to open the board (target is the sprint, repo, or project; columns are the ordered state names).
* `add_item(id, title, column, kind?, tier?)` to add or update a work item, `move_item(id, column)` as it progresses, and `set_backlog_action(text)` to show the action you are taking (null clears it).

### Team orchestration (an orchestrator running subagents)

* `team_start(task, orchestrator)` to open the team board.
* `add_agent(id, name, role?, status)` (status queued|running|blocked|done|failed), `update_agent(id, status?, action?)` as each subagent progresses, and `remove_agent(id)` when one leaves.
* The user's pause, swap, and spawn interventions arrive as directives: call `check_directives()` and act on them. The cockpit expresses intent only and never controls agents directly.

### Codebase navigation (research and large edits)

* `codemap_set(nodes[])` with the slice of files relevant to the task (each node has id, path, kind file|dir, and an optional group). This opens the spatial codebase map.
* `codemap_focus(id)` as you move to a file, and `codemap_touch(id, kind)` to mark a node read or edit (your trail through the code).

### When the tools are not available

Do not call them. The user's steering is still readable from disk: notes and approach picks are appended to `<state-dir>/directives.jsonl` and answered decisions to `<state-dir>/decisions.jsonl`, one JSON object per line. The `<state-dir>` is printed on startup (`rpi-cockpit: state dir <state-dir>`).
<!-- rpi-cockpit:narration:end -->
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,7 @@ FodyWeavers.xsd
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
!.vscode/mcp.json
!.vscode/mcp.json.sample
!.vscode/README.md

Expand Down Expand Up @@ -488,6 +489,9 @@ dependency-pinning-artifacts/
.mcp/*.local.json
.mcp/.env

# Codex MCP config holds a machine-specific absolute path (rpi-cockpit init) - never commit
/.codex/

# Docusaurus build artifacts
docs/docusaurus/build/
docs/docusaurus/.docusaurus/
Expand Down
14 changes: 14 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"mcpServers": {
"rpi-cockpit": {
"type": "stdio",
"command": "node",
"args": [
"${CLAUDE_PROJECT_DIR}/rpi-cockpit/dist/index.js"
],
"env": {
"RPI_COCKPIT_PORT": "4399"
}
}
}
}
12 changes: 12 additions & 0 deletions .vscode/mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"servers": {
"rpi-cockpit": {
"type": "stdio",
"command": "node",
"args": [
"${workspaceFolder}/rpi-cockpit/dist/index.js"
],
"cwd": "${workspaceFolder}"
}
}
}
Loading
Loading