refactor: rename ACP "provider" to "runtime" across the codebase#783
Merged
Conversation
430fc47 to
32b58f7
Compare
6c90bad to
d54f3c0
Compare
d54f3c0 to
9842fec
Compare
70f9c0b to
643f3ec
Compare
The codebase conflated three unrelated concepts under "provider": ACP runtime/harness (goose, claude, codex), LLM inference provider (Databricks, Anthropic), and deployment backend. This rename disambiguates the first concept as "runtime" throughout. KnownAcpProvider becomes KnownAcpRuntime with new capability metadata fields (supports_acp_model_switching, model_env_var, provider_env_var, provider_locked, default_env) that Phase 3 will consume for metadata-driven env var injection. PersonaRecord.provider becomes PersonaRecord.runtime with an idempotent startup migration. ResolvedPersona.provider becomes ResolvedPersona.llm_provider to clarify it holds the LLM provider from the model string colon prefix, not the harness ID. PersonaConfig/Frontmatter gain a runtime field so persona packs can declare their preferred harness. The pack import conflation is fixed: llm_provider no longer leaks into PersonaRecord.runtime. persona_card.rs reads "provider" as a fallback key from old .persona.json files. TemplateAgentEntry/TemplateTeamEntry use serde alias for the same backward compat. Deployment backend types (BackendKind::Provider, provider_binary_path) are intentionally NOT renamed.
Remaining provider: field names in PersonaDialog submit, personaDialogState initial values, useTeamActions update call, and test fixtures that were missed in the main rename — all feeding into CreatePersonaInput / UpdatePersonaInput which now only accept runtime:.
localStorage key migration: useLastRuntime now reads the legacy "sprout:last-runtime-provider" key as a fallback and clears it on first write, preventing silent loss of saved runtime preference on upgrade. Remaining stale local variable names (selectedProviderId, acpProvidersQuery, etc.) renamed for consistency across 12 TS files. Migration and template serde alias backward-compat tests added.
…ove stale conflict marker
… dropdown UX Replace hardcoded GOOSE_MODE injection with a metadata-driven default_env loop on KnownAcpRuntime, and inject GOOSE_MODEL via model_env_var for runtimes that don't support ACP model switching. This ensures goose agents respect PersonaRecord.model even without a persona pack. Redesign the AddChannelBotDialog runtime dropdown: defaults to "Use persona defaults" (unset) instead of auto-selecting the first runtime. Explicit selection overrides all personas. Per-persona runtime badges on chips show the effective runtime with warning styling when overridden or when a stored preference is unavailable.
643f3ec to
c9b0d56
Compare
The idempotent `migrate_persona_provider_to_runtime` function added in this branch pushes migration.rs past main's 1005-line override.
c9b0d56 to
dffa75e
Compare
tlongwell-block
approved these changes
Jun 7, 2026
tlongwell-block
added a commit
that referenced
this pull request
Jun 8, 2026
The provider→runtime rename in #783 missed this callsite in mesh_llm/preset.rs, causing a compilation error.
tlongwell-block
added a commit
that referenced
this pull request
Jun 8, 2026
The provider→runtime rename in #783 missed a callsite in mesh_llm/preset.rs and a stale doc comment in mesh_llm/mod.rs.
tellaho
pushed a commit
that referenced
this pull request
Jun 8, 2026
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
tlongwell-block
pushed a commit
that referenced
this pull request
Jun 9, 2026
* origin/main: (32 commits) docs: add NIP-ER event reminders (#875) feat(acp): pass slash commands through to ACP connectors (#919) fix(sdk): resolve multi-word display names and add NIP-27 nostr:npub mention extraction (#905) fix(desktop): re-enable mcp_command reconciliation and harden spawn site (#909) Fix desktop DM and sidebar UI polish (#908) Animate reaction counts (#904) Mobile custom emoji + settings redesign (#906) Renew TTL when unarchiving ephemeral channels (#902) chore(release): release version 0.3.13 (#903) Collapse channel header actions (#901) sprout-agent: make Databricks defaults env-only (#868) Restyle settings sections (#894) Add emoji reaction particles (#890) Move settings into the app shell (#893) Tune chat text sizing (#891) Style channel header navigation (#889) fix: rename missed known_acp_provider_exact → known_acp_runtime_exact (#900) chore(deps): update radix-ui-primitives monorepo (#898) chore(deps): update actions/checkout digest to df4cb1c (#897) refactor: rename ACP "provider" to "runtime" across the codebase (#783) ... # Conflicts: # desktop/src/features/agents/ui/CreateAgentDialog.tsx
tlongwell-block
pushed a commit
that referenced
this pull request
Jun 9, 2026
* origin/main: (32 commits) docs: add NIP-ER event reminders (#875) feat(acp): pass slash commands through to ACP connectors (#919) fix(sdk): resolve multi-word display names and add NIP-27 nostr:npub mention extraction (#905) fix(desktop): re-enable mcp_command reconciliation and harden spawn site (#909) Fix desktop DM and sidebar UI polish (#908) Animate reaction counts (#904) Mobile custom emoji + settings redesign (#906) Renew TTL when unarchiving ephemeral channels (#902) chore(release): release version 0.3.13 (#903) Collapse channel header actions (#901) sprout-agent: make Databricks defaults env-only (#868) Restyle settings sections (#894) Add emoji reaction particles (#890) Move settings into the app shell (#893) Tune chat text sizing (#891) Style channel header navigation (#889) fix: rename missed known_acp_provider_exact → known_acp_runtime_exact (#900) chore(deps): update radix-ui-primitives monorepo (#898) chore(deps): update actions/checkout digest to df4cb1c (#897) refactor: rename ACP "provider" to "runtime" across the codebase (#783) ... Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co> # Conflicts: # desktop/src/features/agents/ui/CreateAgentDialog.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This branch renames every use of "provider" that means ACP harness/runtime to "runtime", resolves the pack import conflation that caused all 7 Dune personas to show "sprout-agent" as runtime, enriches
KnownAcpRuntimewith capability metadata, and uses that metadata to replace ad-hoc env var injection with structured, metadata-driven behavior.The codebase used "provider" for three unrelated concepts: ACP runtime/harness (goose, claude, codex), LLM inference provider (Databricks, Anthropic), and deployment backend — making it impossible to read a field name and know what it contains.
BackendKind::Providerand related deployment backend types are intentionally NOT renamed.KnownAcpProvider→KnownAcpRuntimewith 5 new capability fields (supports_acp_model_switching,model_env_var,provider_env_var,provider_locked,default_env)PersonaRecord.provider→PersonaRecord.runtimewith idempotent startup migration;ResolvedPersona.provider→.llm_providerPersonaConfig/Frontmattergain aruntimefield so persona packs can declare preferred harness in frontmatterllm_providerno longer leaks intoPersonaRecord.runtimepersona_card.rsreads"provider"as fallback key from old.persona.jsonfiles; template types use#[serde(alias = "provider")]for backward compatuseLastRuntimelocalStorage key migrated with legacy fallback so existing users keep their saved preferenceGOOSE_MODEinjection replaced withdefault_envloop fromKnownAcpRuntimemetadata — only goose agents receiveGOOSE_MODEnowGOOSE_MODELinjected at spawn time viamodel_env_varmetadata for runtimes that don't support ACP model switching