Skip to content

feat: normalized config schema with PersonaRecord.provider and SPROUT_AGENT_MODEL#794

Draft
wpfleger96 wants to merge 1 commit into
worktree-wpfleger+fix-model-picker-runtime-uxfrom
wpfleger/phase3b-normalized-config
Draft

feat: normalized config schema with PersonaRecord.provider and SPROUT_AGENT_MODEL#794
wpfleger96 wants to merge 1 commit into
worktree-wpfleger+fix-model-picker-runtime-uxfrom
wpfleger/phase3b-normalized-config

Conversation

@wpfleger96
Copy link
Copy Markdown
Collaborator

Wes's 24 sprout-agent personas all failed with SPROUT_AGENT_PROVIDER required even though Databricks was configured — because the desktop never injected provider/model env vars at spawn time, the goose config fallback only understood the old flat format, and pack import always stored an empty env_vars map. This PR fixes all three structural gaps.

sprout-agent gets a universal SPROUT_AGENT_MODEL env var so a single model value works regardless of which LLM provider is active. GooseDatabricksConfig is extracted into an isolated goose_compat submodule and extended to parse the newer active_provider + nested providers: format Wes's config uses. PersonaRecord gains a first-class provider field alongside runtime and model, completing the normalized config schema, and KnownAcpRuntime metadata is now fully wired into the spawn path.

  • SPROUT_AGENT_MODEL added as universal model fallback in Config::from_env() for all three provider arms; KnownAcpRuntime for sprout-agent updated to model_env_var: Some("SPROUT_AGENT_MODEL")
  • provider_env_var injection wired into spawn_agent_child() respecting provider_locked; !supports_acp_model_switching guard removed (conflation of bootstrap vs. post-session model switching)
  • runtime_env_vars() extended to emit SPROUT_AGENT_MODEL/SPROUT_AGENT_PROVIDER for sprout-agent personas vs. GOOSE_MODEL/GOOSE_PROVIDER for goose; pack import now populates PersonaRecord.env_vars (was always empty) and PersonaRecord.provider
  • LLM Provider field added to PersonaDialog for manual persona creation

…_AGENT_MODEL

sprout-agent personas all failed because the desktop never injected
SPROUT_AGENT_PROVIDER or model env vars at spawn time, and the goose
config fallback only understood the old flat format. Extract goose
config compat into an isolated submodule, add support for the newer
active_provider + nested providers format, and wire a normalized
config schema so Sprout injects the right env vars for any runtime.

Key changes:
- PersonaRecord.provider captures the LLM provider independently
- SPROUT_AGENT_MODEL works as a universal model fallback
- provider_env_var and model_env_var always injected at spawn time
- Pack import now stores resolved env vars (was always empty)
- runtime_env_vars() emits runtime-appropriate vars (SPROUT_AGENT_*
  vs GOOSE_*)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant