P4: Reginald is real — model router + agent loop + query_project #42
Reference in New Issue
Block a user
No description provided.
Delete Branch "p4/reginald"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The fixture chat panel is now a working agent. Ask Reginald a question → it consults the real project through a tool loop → answers in grounded prose. Read-only v0 (writes still go through propose-approve). Branch cut from
main, targetsmain— no stacking.Core (
@commitea/core/agent)runAgentTurndrives call→tool→result→call until prose (or a step budget), recording each step. Injectedcomplete+execute→ fully testable offline.focus/board/calibration/issue/searchviews from scheduler + lifecycle + calibration. Unbuilt views return anotImplementedmarker — never fabricated. The model reports, never computes.query_projectdeclaration + Reginald's system prompt.App
model:status,model:chat) runs the loop;query_projectreconciles the repo and builds the view. Model traffic stays in main (token/CSP).gitea.tsrefactored to sharegetGiteaClient+reconcileSnapshot.global.d.tsexpose the bridge;useChatdrives the panel — real agent turn when a model is configured, scripted fixture reply otherwise (fixture e2e unchanged). Subtle "consulted the project" activity line.Config
Env, defaults to LM Studio on
:1234:COMMITEA_MODEL_URL/_SMALL(google/gemma-4-e4b) /_BIG(qwen/qwen3.6-35b-a3b).COMMITEA_E2E=1keeps it unconfigured so the panel stays scripted.Verified
88 core tests green (14 agent: client parse, loop tool/error/step-budget, all views) + a gated live integration test against the real model. Desktop typecheck clean, 14 fixture e2e green.
Gated live e2e drives the real app against gitea +
gemma-4-e4b: asked "What should I work on right now?", Reginald calledquery_project(focus)and answered "The current focus is on issue #2" — the real scheduler pick. Screenshot in the PR.Next (Reginald, continued)
apply_changes(engine from #41) through the loop with mid-turn propose-approve — chat becomes the write-path in full.capture_workdecomposition;record_directive→ the pm-state ledger.query_projectviews (milestone/runway/standup) + streaming.Depends on nothing outstanding; #41 (apply_changes) is independent and can merge in either order.
🤖 Generated with Claude Code
d70c6e2542to25cf0a6d39