Skip to content

SEP Phase 7 (smooth): th cast models surfaces extension providers + engine pin bump#160

Merged
brentrager merged 1 commit into
mainfrom
th-287d54-provider-merge
Jul 3, 2026
Merged

SEP Phase 7 (smooth): th cast models surfaces extension providers + engine pin bump#160
brentrager merged 1 commit into
mainfrom
th-287d54-provider-merge

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

Problem

SEP Phase 7 (pearl th-287d54): with the engine now supporting extension-registered LLM providers, the smooth CLI should surface them. th cast models only knew about gateway + local providers.

Solution

  • th cast models folds in extension providers. Globally installed extensions (~/.smooth/extensions/) that register a provider via SEP registerProvider are loaded headlessly (ExtensionHost::providers()), and their declared models are listed under an extension <ext>.<provider> section (in --json, as <provider>/<model> ids). Model ids are filtered + sorted like gateway/local models; a provider with no matching models is dropped.
  • Gated + fail-safe. Only global extensions load — a plain th cast models in a repo never spawns a project extension. Any failure yields an empty list, so extension providers are strictly additive and can't break the core listing. The whole extension load is skipped with zero cost when no global extensions are installed.
  • Engine pin bump 26b448946fbbea (smooth-operator-core SEP Phase 7: registerProvider / OAuth / proxied streaming / session/set_model), which exposes ExtensionHost::providers().

Verification

  • cargo build --workspace clean against the bumped engine (additive change — no breakage).
  • New unit tests for the pure fold_extension_models merge (filter/sort/drop-empty). cargo test -p smooai-smooth-cli green (277 tests); cargo fmt --check clean; my diff is clippy-clean.
  • Docs: docs/Engineering/Using-th-CLI.md documents the new th cast models behavior.

Paired with merged smooth-operator-core#31 and smooth-operator#157.

🤖 Generated with Claude Code

…roviders + engine pin bump

`th cast models` now folds in LLM providers contributed by globally installed
extensions. Each such extension is loaded headlessly (via ExtensionHost) and its
declared provider models are listed under an `extension <ext>.<provider>` section
(in --json, as `<provider>/<model>` ids), filtered + sorted like gateway/local
models. Gated to global extensions only — a plain `th cast models` in a repo
never spawns a project extension — and any failure yields an empty list, so
extension providers are strictly additive and never break the core listing.

Engine pin bumped 26b4489 → 46fbbea (smooth-operator-core SEP Phase 7:
registerProvider / OAuth / proxied streaming / session/set_model), which exposes
ExtensionHost::providers().

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Jul 3, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: d91e2e1

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@smooai/smooth Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@brentrager brentrager enabled auto-merge (squash) July 3, 2026 11:34
@brentrager brentrager merged commit 5b4d7a6 into main Jul 3, 2026
2 checks passed
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