diff --git a/docs/.internal/extension-host-migration/openclaw-capability-catalog-and-arbitration-spec.md b/docs/.internal/extension-host-migration/openclaw-capability-catalog-and-arbitration-spec.md index 1463820fd94..8218bd7c0bf 100644 --- a/docs/.internal/extension-host-migration/openclaw-capability-catalog-and-arbitration-spec.md +++ b/docs/.internal/extension-host-migration/openclaw-capability-catalog-and-arbitration-spec.md @@ -65,7 +65,7 @@ What has been implemented: - exclusive-slot selection and default-slot resolution now route through `src/extension-host/slot-arbitration.ts` ahead of broader catalog-backed arbitration ownership - ACP backend registration and runtime resolution now route through `src/extension-host/acp-runtime-backend-registry.ts` ahead of broader catalog-backed backend ownership - embedding-provider auto-selection, provider creation, local-setup guidance, and primary plus fallback routing now route through `src/extension-host/embedding-runtime-registry.ts`, shared fallback-model selection now routes through `src/extension-host/embedding-runtime-policy.ts`, the public embedding runtime surface plus result typing now route through `src/extension-host/embedding-runtime.ts` and `src/extension-host/embedding-runtime-types.ts`, manager-side batch policy plus fallback activation now route through `src/extension-host/embedding-manager-runtime.ts`, sync plus reindex planning now route through `src/extension-host/embedding-sync-planning.ts`, sync plus reindex orchestration now route through `src/extension-host/embedding-sync-execution.ts`, reindex sync-body execution plus unsafe reset now route through `src/extension-host/embedding-reindex-execution.ts`, and safe-reindex temp-db creation, file swap, reopen, and cleanup now route through `src/extension-host/embedding-safe-reindex.ts` while `src/memory/embeddings.ts` remains the compatibility facade -- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now route through `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now route through `src/extension-host/media-runtime-registry.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now route through `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now route through `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now route through `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now route through `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` while `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, and `src/media-understanding/resolve.ts` remain compatibility facades +- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now route through `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now route through `src/extension-host/media-runtime-registry.ts`; shared default and preferred runtime-backend ordering plus fallback chaining now route through `src/extension-host/runtime-backend-policy.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now route through `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now route through `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now route through `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now route through `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` while `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, and `src/media-understanding/resolve.ts` remain compatibility facades - TTS provider metadata, provider ordering, API-key resolution, configuration checks, and telephony support now route through `src/extension-host/tts-runtime-registry.ts`, provider execution loops, output-format selection, telephony synthesis, and provider-error shaping now route through `src/extension-host/tts-runtime-execution.ts`, provider selection plus request setup now route through `src/extension-host/tts-runtime-setup.ts`, TTS config normalization, defaults, and model-override policy now route through `src/extension-host/tts-config.ts`, prefs-path resolution, auto-mode policy, and persisted TTS preference reads and writes now route through `src/extension-host/tts-preferences.ts`, auto-TTS gating, directive cleanup, truncation, summarization, and payload planning now route through `src/extension-host/tts-payload.ts`, and last-attempt state plus shared status snapshots now route through `src/extension-host/tts-status.ts` while `src/tts/tts.ts` remains the compatibility facade - legacy internal-hook bridging and typed prompt-injection compatibility policy now route through `src/extension-host/hook-compat.ts` ahead of broader catalog-backed registry ownership - compatibility `OpenClawPluginApi` composition and logger shaping now route through `src/extension-host/plugin-api.ts` ahead of broader catalog-backed registry ownership @@ -618,7 +618,7 @@ Capability selection must emit structured events for: - channel capabilities from `extensions/discord/src/channel.ts:74`, `extensions/slack/src/channel.ts:107`, and `extensions/telegram/src/channel.ts:120` collapse into canonical messaging action families - diffs becomes an agent-visible tool family plus a host-managed route surface from `extensions/diffs/index.ts:27` - provider integration from `extensions/google-gemini-cli-auth/index.ts:24` becomes operator-visible setup and auth capabilities -- catalog-backed runtime-family descriptors for embeddings, media, and TTS now route through `src/extension-host/runtime-backend-catalog.ts`; embedding shared backend definitions in `src/extension-host/embedding-runtime-backends.ts`, media shared backend definitions in `src/extension-host/media-runtime-backends.ts`, TTS shared backend definitions in `src/extension-host/tts-runtime-backends.ts`, and initial runtime-family arbitration in `src/extension-host/runtime-backend-arbitration.ts`; embedding auto-provider selection, embedding local setup guidance, memory doctor guidance for embedding auto-provider order, and explicit embedding fallback policy in `src/extension-host/embedding-runtime-policy.ts`, media provider candidate ordering plus default-model fallback selection in `src/extension-host/media-runtime-policy.ts`, and TTS request setup, status, compatibility provider-order exports, plus explicit TTS configured-fallback policy in `src/extension-host/tts-runtime-policy.ts` already consume that catalog-backed arbitration data, and broader consumer adoption and arbitration should continue moving those subsystem runtimes toward runtime-internal registries rather than leaving them as a universal plugin-provider API shape +- catalog-backed runtime-family descriptors for embeddings, media, and TTS now route through `src/extension-host/runtime-backend-catalog.ts`; embedding shared backend definitions in `src/extension-host/embedding-runtime-backends.ts`, media shared backend definitions in `src/extension-host/media-runtime-backends.ts`, TTS shared backend definitions in `src/extension-host/tts-runtime-backends.ts`, initial runtime-family arbitration in `src/extension-host/runtime-backend-arbitration.ts`, and shared default and preferred backend ordering plus fallback chaining in `src/extension-host/runtime-backend-policy.ts`; embedding auto-provider selection, embedding local setup guidance, memory doctor guidance for embedding auto-provider order, and explicit embedding fallback policy in `src/extension-host/embedding-runtime-policy.ts`, media provider candidate ordering plus default-model fallback selection in `src/extension-host/media-runtime-policy.ts`, and TTS request setup, status, compatibility provider-order exports, plus explicit TTS configured-fallback policy in `src/extension-host/tts-runtime-policy.ts` already consume that catalog-backed arbitration and backend-policy data, and broader consumer adoption and arbitration should continue moving those subsystem runtimes toward runtime-internal registries rather than leaving them as a universal plugin-provider API shape - extension-backed web search should become an agent-visible tool family unless it is only a runtime-internal backend feeding another host-owned surface - voice-call from `extensions/voice-call/index.ts:230` becomes a mix of agent-visible actions, runtime providers, and operator surfaces - ACP backend registration from `extensions/acpx/src/service.ts:55` becomes runtime-internal backend arbitration diff --git a/docs/.internal/extension-host-migration/openclaw-extension-contribution-schema-spec.md b/docs/.internal/extension-host-migration/openclaw-extension-contribution-schema-spec.md index ea3a5de125f..b4a02e45f19 100644 --- a/docs/.internal/extension-host-migration/openclaw-extension-contribution-schema-spec.md +++ b/docs/.internal/extension-host-migration/openclaw-extension-contribution-schema-spec.md @@ -44,7 +44,7 @@ What has been implemented: - exclusive-slot selection and default-slot resolution now route through `src/extension-host/slot-arbitration.ts` while `src/plugins/slots.ts` remains the compatibility facade - ACP backend registration and runtime resolution now route through `src/extension-host/acp-runtime-backend-registry.ts` while `src/acp/runtime/registry.ts` remains the compatibility facade - embedding-provider auto-selection, provider creation, local-setup guidance, and primary plus fallback routing now route through `src/extension-host/embedding-runtime-registry.ts`, shared fallback-model selection now routes through `src/extension-host/embedding-runtime-policy.ts`, the public embedding runtime surface and result typing now route through `src/extension-host/embedding-runtime.ts` and `src/extension-host/embedding-runtime-types.ts`, manager-side batch policy plus fallback activation now route through `src/extension-host/embedding-manager-runtime.ts`, sync plus reindex planning now route through `src/extension-host/embedding-sync-planning.ts`, sync plus reindex orchestration now route through `src/extension-host/embedding-sync-execution.ts`, reindex sync-body execution plus unsafe reset now route through `src/extension-host/embedding-reindex-execution.ts`, and safe-reindex temp-db creation, file swap, reopen, and cleanup now route through `src/extension-host/embedding-safe-reindex.ts` while `src/memory/embeddings.ts` remains the compatibility facade -- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now route through `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now route through `src/extension-host/media-runtime-registry.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now route through `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now route through `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now route through `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now route through `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` while `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, and `src/media-understanding/resolve.ts` remain compatibility facades +- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now route through `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now route through `src/extension-host/media-runtime-registry.ts`; shared default and preferred runtime-backend ordering plus fallback chaining now route through `src/extension-host/runtime-backend-policy.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now route through `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now route through `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now route through `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now route through `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` while `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, and `src/media-understanding/resolve.ts` remain compatibility facades - TTS provider metadata, provider ordering, API-key resolution, configuration checks, and telephony support now route through `src/extension-host/tts-runtime-registry.ts`, provider execution loops, output-format selection, telephony synthesis, and provider-error shaping now route through `src/extension-host/tts-runtime-execution.ts`, provider selection plus request setup now route through `src/extension-host/tts-runtime-setup.ts`, TTS config normalization, defaults, and model-override policy now route through `src/extension-host/tts-config.ts`, prefs-path resolution, auto-mode policy, and persisted TTS preference reads and writes now route through `src/extension-host/tts-preferences.ts`, auto-TTS gating, directive cleanup, truncation, summarization, and payload planning now route through `src/extension-host/tts-payload.ts`, and last-attempt state plus shared status snapshots now route through `src/extension-host/tts-status.ts` while `src/tts/tts.ts` remains the compatibility facade - legacy internal-hook bridging and typed prompt-injection compatibility policy now route through `src/extension-host/hook-compat.ts` - compatibility `OpenClawPluginApi` composition and logger shaping now route through `src/extension-host/plugin-api.ts` diff --git a/docs/.internal/extension-host-migration/openclaw-extension-host-implementation-guide.md b/docs/.internal/extension-host-migration/openclaw-extension-host-implementation-guide.md index a3209ea76fc..0abcb8e7933 100644 --- a/docs/.internal/extension-host-migration/openclaw-extension-host-implementation-guide.md +++ b/docs/.internal/extension-host-migration/openclaw-extension-host-implementation-guide.md @@ -103,7 +103,7 @@ What has been implemented so far: - plugin provider discovery filtering, order grouping, and result normalization now route through `src/extension-host/provider-discovery.ts` - provider matching, auth-method selection, config-patch merging, and default-model application now route through `src/extension-host/provider-auth.ts` - embedding-provider auto-selection, provider creation, local-setup guidance, and primary plus fallback routing now route through `src/extension-host/embedding-runtime-registry.ts`, shared fallback-model selection now routes through `src/extension-host/embedding-runtime-policy.ts`, the public embedding runtime surface plus result typing now route through `src/extension-host/embedding-runtime.ts` and `src/extension-host/embedding-runtime-types.ts`, manager-side batch policy plus fallback activation now route through `src/extension-host/embedding-manager-runtime.ts`, sync plus reindex planning now route through `src/extension-host/embedding-sync-planning.ts`, sync plus reindex orchestration now route through `src/extension-host/embedding-sync-execution.ts`, reindex sync-body execution plus unsafe reset now route through `src/extension-host/embedding-reindex-execution.ts`, and safe-reindex temp-db creation, file swap, reopen, and cleanup now route through `src/extension-host/embedding-safe-reindex.ts` while `src/memory/embeddings.ts` remains the compatibility facade -- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now route through `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now route through `src/extension-host/media-runtime-registry.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now route through `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now route through `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now route through `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now route through `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` while `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, and `src/media-understanding/resolve.ts` remain compatibility facades +- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now route through `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now route through `src/extension-host/media-runtime-registry.ts`; shared default and preferred runtime-backend ordering plus fallback chaining now route through `src/extension-host/runtime-backend-policy.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now route through `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now route through `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now route through `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now route through `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` while `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, and `src/media-understanding/resolve.ts` remain compatibility facades - TTS provider metadata, provider ordering, API-key resolution, configuration checks, and telephony support now route through `src/extension-host/tts-runtime-registry.ts`, provider execution loops, output-format selection, telephony synthesis, and provider-error shaping now route through `src/extension-host/tts-runtime-execution.ts`, provider selection plus request setup now route through `src/extension-host/tts-runtime-setup.ts`, TTS config normalization, defaults, and model-override policy now route through `src/extension-host/tts-config.ts`, prefs-path resolution, auto-mode policy, and persisted TTS preference reads and writes now route through `src/extension-host/tts-preferences.ts`, auto-TTS gating, directive cleanup, truncation, summarization, and payload planning now route through `src/extension-host/tts-payload.ts`, and last-attempt state plus shared status snapshots now route through `src/extension-host/tts-status.ts` while `src/tts/tts.ts` remains the compatibility facade - provider onboarding option building, model-picker entry building, and provider-method choice resolution now route through `src/extension-host/provider-wizard.ts` - loaded-provider auth application, plugin-enable gating, auth-method execution, and post-auth default-model handling now route through `src/extension-host/provider-auth-flow.ts` @@ -275,6 +275,8 @@ Committed implementation slices so far: - `1b87cdeca1` `TTS: add backend fallback policy` - `fcb6dd911c` `Memory: add embedding fallback policy` - `c205208497` `Media: add runtime selection policy` +- `a9e5d36f7e` `Runtime: share backend policy helper` +- `8d8b9ba42d` `Memory: adopt shared backend policy` - `89414ed857` `Docs: track extension host migration internally` - `d8af1eceaf` `Docs: refresh extension host migration status` @@ -294,7 +296,7 @@ Recent plan refinements: - it now explicitly treats interactive callback routing, namespace ownership, dedupe, and fallback behavior as first-class migration surfaces - it now explicitly treats inbound claim as a canonical ingress-stage concern rather than a permanent plugin-era hook shape - it now explicitly treats Telegram and Discord as the first validated rollout targets for interactive control surfaces while keeping the underlying contracts generic, host-owned, and kernel-agnostic -- it now explicitly treats embeddings, media understanding, and TTS as in-progress host-owned subsystem runtimes, with embedding backend definitions now shared between `src/extension-host/embedding-runtime-backends.ts`, `src/extension-host/embedding-runtime-registry.ts`, and `src/extension-host/runtime-backend-catalog.ts`, embedding selection, fallback routing, explicit fallback policy in `src/extension-host/embedding-runtime-policy.ts`, public runtime surface, result typing, manager-side batch and fallback policy, sync plus reindex planning, sync plus reindex orchestration, reindex sync-body execution plus unsafe reset, safe-reindex temp-db creation, file swap, reopen, and cleanup, plus runtime-backend catalog descriptors now extracted and embedding auto-provider selection, local setup guidance, and memory doctor guidance already consuming the catalog-backed embedding auto-provider order, media backend definitions now shared between `src/extension-host/media-runtime-backends.ts`, `src/extension-host/media-runtime-registry.ts`, and `src/extension-host/runtime-backend-catalog.ts`, with media registry, explicit selection policy in `src/extension-host/media-runtime-policy.ts`, execution, auto-entry selection, orchestration, planning helpers, remaining API composition, lazy entrypoint wiring, plus runtime-backend catalog descriptors now extracted and media provider candidate ordering plus default-model fallback lookup already consuming that catalog order, TTS backend definitions now shared between `src/extension-host/tts-runtime-backends.ts`, `src/extension-host/tts-runtime-registry.ts`, and `src/extension-host/runtime-backend-catalog.ts`, with TTS registry, execution, request setup, config normalization, preferences, payload planning, shared status state, API composition, plus runtime-backend catalog descriptors now extracted, initial runtime-family arbitration now landing in `src/extension-host/runtime-backend-arbitration.ts`, explicit configured-fallback policy now landing in `src/extension-host/tts-runtime-policy.ts`, and TTS request setup, status, plus compatibility provider-order exports already consuming that arbitration-backed catalog order, and broader consumer adoption and arbitration on top of those catalog-backed runtime-family descriptors still pending, all with capability routing, typed request envelopes, provider-id normalization, and fallback policy +- it now explicitly treats embeddings, media understanding, and TTS as in-progress host-owned subsystem runtimes, with embedding backend definitions now shared between `src/extension-host/embedding-runtime-backends.ts`, `src/extension-host/embedding-runtime-registry.ts`, and `src/extension-host/runtime-backend-catalog.ts`, shared default and preferred runtime-backend ordering plus fallback chaining now landing in `src/extension-host/runtime-backend-policy.ts`, embedding selection, fallback routing, explicit fallback policy in `src/extension-host/embedding-runtime-policy.ts`, public runtime surface, result typing, manager-side batch and fallback policy, sync plus reindex planning, sync plus reindex orchestration, reindex sync-body execution plus unsafe reset, safe-reindex temp-db creation, file swap, reopen, and cleanup, plus runtime-backend catalog descriptors now extracted and embedding auto-provider selection, local setup guidance, and memory doctor guidance already consuming the catalog-backed embedding backend-policy order, media backend definitions now shared between `src/extension-host/media-runtime-backends.ts`, `src/extension-host/media-runtime-registry.ts`, and `src/extension-host/runtime-backend-catalog.ts`, with media registry, explicit selection policy in `src/extension-host/media-runtime-policy.ts`, execution, auto-entry selection, orchestration, planning helpers, remaining API composition, lazy entrypoint wiring, plus runtime-backend catalog descriptors now extracted and media provider candidate ordering plus default-model fallback lookup already consuming that catalog-backed backend-policy order, TTS backend definitions now shared between `src/extension-host/tts-runtime-backends.ts`, `src/extension-host/tts-runtime-registry.ts`, and `src/extension-host/runtime-backend-catalog.ts`, with TTS registry, execution, request setup, config normalization, preferences, payload planning, shared status state, API composition, plus runtime-backend catalog descriptors now extracted, initial runtime-family arbitration now landing in `src/extension-host/runtime-backend-arbitration.ts`, explicit configured-fallback policy now landing in `src/extension-host/tts-runtime-policy.ts`, and TTS request setup, status, plus compatibility provider-order exports already consuming that arbitration-backed backend-policy order, and broader consumer adoption and arbitration on top of those catalog-backed runtime-family descriptors still pending, all with capability routing, typed request envelopes, provider-id normalization, and fallback policy - it now explicitly rejects widening the legacy `registerProvider(...)` or `ProviderPlugin` surface into a universal runtime API while retaining capability routing, typed request envelopes, provider-id normalization, and fallback behavior where those are part of the target model - it now explicitly treats extension-backed search as either a canonical tool contribution or a host-owned runtime backend depending on whether the search surface is agent-visible diff --git a/docs/.internal/extension-host-migration/openclaw-extension-host-lifecycle-and-security-spec.md b/docs/.internal/extension-host-migration/openclaw-extension-host-lifecycle-and-security-spec.md index 3f0a7e65a5e..11f9e70c904 100644 --- a/docs/.internal/extension-host-migration/openclaw-extension-host-lifecycle-and-security-spec.md +++ b/docs/.internal/extension-host-migration/openclaw-extension-host-lifecycle-and-security-spec.md @@ -43,7 +43,7 @@ What has been implemented: - exclusive-slot selection and default-slot resolution now delegate through `src/extension-host/slot-arbitration.ts` while `src/plugins/slots.ts` remains the compatibility facade - ACP backend registration and runtime resolution now delegate through `src/extension-host/acp-runtime-backend-registry.ts` while `src/acp/runtime/registry.ts` remains the compatibility facade - embedding-provider auto-selection, provider creation, local-setup guidance, and primary plus fallback routing now delegate through `src/extension-host/embedding-runtime-registry.ts`, shared fallback-model selection now delegates through `src/extension-host/embedding-runtime-policy.ts`, the public embedding runtime surface plus result typing now delegate through `src/extension-host/embedding-runtime.ts` and `src/extension-host/embedding-runtime-types.ts`, manager-side batch policy plus fallback activation now delegate through `src/extension-host/embedding-manager-runtime.ts`, sync plus reindex planning now delegate through `src/extension-host/embedding-sync-planning.ts`, sync plus reindex orchestration now delegate through `src/extension-host/embedding-sync-execution.ts`, reindex sync-body execution plus unsafe reset now delegate through `src/extension-host/embedding-reindex-execution.ts`, and safe-reindex temp-db creation, file swap, reopen, and cleanup now delegate through `src/extension-host/embedding-safe-reindex.ts` while `src/memory/embeddings.ts` remains the compatibility facade -- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now delegate through `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now delegate through `src/extension-host/media-runtime-registry.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now delegate through `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now delegate through `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now delegate through `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now delegate through `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` while `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, and `src/media-understanding/resolve.ts` remain the compatibility facades +- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now delegate through `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now delegate through `src/extension-host/media-runtime-registry.ts`; shared default and preferred runtime-backend ordering plus fallback chaining now delegate through `src/extension-host/runtime-backend-policy.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now delegate through `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now delegate through `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now delegate through `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now delegate through `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` while `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, and `src/media-understanding/resolve.ts` remain the compatibility facades - TTS provider metadata, provider ordering, API-key resolution, configuration checks, and telephony support now delegate through `src/extension-host/tts-runtime-registry.ts`, provider execution loops, output-format selection, telephony synthesis, and provider-error shaping now delegate through `src/extension-host/tts-runtime-execution.ts`, provider selection plus request setup now delegate through `src/extension-host/tts-runtime-setup.ts`, TTS config normalization, defaults, and model-override policy now delegate through `src/extension-host/tts-config.ts`, prefs-path resolution, auto-mode policy, and persisted TTS preference reads and writes now delegate through `src/extension-host/tts-preferences.ts`, auto-TTS gating, directive cleanup, truncation, summarization, and payload planning now delegate through `src/extension-host/tts-payload.ts`, and last-attempt state plus shared status snapshots now delegate through `src/extension-host/tts-status.ts` while `src/tts/tts.ts` remains the compatibility facade - legacy internal-hook bridging and typed prompt-injection compatibility policy now delegate through `src/extension-host/hook-compat.ts` - compatibility `OpenClawPluginApi` composition and logger shaping now delegate through `src/extension-host/plugin-api.ts` diff --git a/docs/.internal/extension-host-migration/openclaw-kernel-event-pipeline-spec.md b/docs/.internal/extension-host-migration/openclaw-kernel-event-pipeline-spec.md index b91be8a2d3f..d6608e559df 100644 --- a/docs/.internal/extension-host-migration/openclaw-kernel-event-pipeline-spec.md +++ b/docs/.internal/extension-host-migration/openclaw-kernel-event-pipeline-spec.md @@ -40,7 +40,7 @@ Relevant prerequisite work that has landed: - exclusive-slot selection and default-slot resolution now have a host-owned helper boundary in `src/extension-host/slot-arbitration.ts` - ACP backend registration and runtime resolution now have a host-owned helper boundary in `src/extension-host/acp-runtime-backend-registry.ts` - embedding-provider auto-selection, provider creation, local-setup guidance, and primary plus fallback routing now have a host-owned helper boundary in `src/extension-host/embedding-runtime-registry.ts`, shared fallback-model selection now has a host-owned helper boundary in `src/extension-host/embedding-runtime-policy.ts`, the public embedding runtime surface plus result typing now have host-owned boundaries in `src/extension-host/embedding-runtime.ts` and `src/extension-host/embedding-runtime-types.ts`, manager-side batch policy plus fallback activation now have a host-owned helper boundary in `src/extension-host/embedding-manager-runtime.ts`, sync plus reindex planning now have a host-owned helper boundary in `src/extension-host/embedding-sync-planning.ts`, sync plus reindex orchestration now has a host-owned helper boundary in `src/extension-host/embedding-sync-execution.ts`, reindex sync-body execution plus unsafe reset now have a host-owned helper boundary in `src/extension-host/embedding-reindex-execution.ts`, and safe-reindex temp-db creation, file swap, reopen, and cleanup now have a host-owned helper boundary in `src/extension-host/embedding-safe-reindex.ts` -- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now have a host-owned helper boundary in `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now have a host-owned helper boundary in `src/extension-host/media-runtime-registry.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now have a host-owned helper boundary in `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now have a host-owned helper boundary in `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now have host-owned helper boundaries in `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now have host-owned helper boundaries in `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` +- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now have a host-owned helper boundary in `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now have a host-owned helper boundary in `src/extension-host/media-runtime-registry.ts`; shared default and preferred runtime-backend ordering plus fallback chaining now have a host-owned helper boundary in `src/extension-host/runtime-backend-policy.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now have a host-owned helper boundary in `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now have a host-owned helper boundary in `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now have host-owned helper boundaries in `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now have host-owned helper boundaries in `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` - TTS provider metadata, provider ordering, API-key resolution, configuration checks, and telephony support now have a host-owned helper boundary in `src/extension-host/tts-runtime-registry.ts`, provider execution loops, output-format selection, telephony synthesis, and provider-error shaping now have a host-owned helper boundary in `src/extension-host/tts-runtime-execution.ts`, provider selection plus request setup now have a host-owned helper boundary in `src/extension-host/tts-runtime-setup.ts`, TTS config normalization, defaults, and model-override policy now have a host-owned helper boundary in `src/extension-host/tts-config.ts`, prefs-path resolution, auto-mode policy, and persisted TTS preference reads and writes now have a host-owned helper boundary in `src/extension-host/tts-preferences.ts`, auto-TTS gating, directive cleanup, truncation, summarization, and payload planning now have a host-owned helper boundary in `src/extension-host/tts-payload.ts`, and last-attempt state plus shared status snapshots now have a host-owned helper boundary in `src/extension-host/tts-status.ts` - loader cache key construction and registry cache control now have a host-owned helper boundary - loader provenance helpers now have a host-owned helper boundary diff --git a/docs/.internal/extension-host-migration/openclaw-kernel-extension-host-transition-plan.md b/docs/.internal/extension-host-migration/openclaw-kernel-extension-host-transition-plan.md index e3cd601d428..480bfd44861 100644 --- a/docs/.internal/extension-host-migration/openclaw-kernel-extension-host-transition-plan.md +++ b/docs/.internal/extension-host-migration/openclaw-kernel-extension-host-transition-plan.md @@ -89,7 +89,7 @@ What has landed: - plugin provider discovery filtering, order grouping, and result normalization now route through `src/extension-host/provider-discovery.ts` - provider matching, auth-method selection, config-patch merging, and default-model application now route through `src/extension-host/provider-auth.ts` - embedding-provider auto-selection, provider creation, local-setup guidance, and primary plus fallback routing now route through `src/extension-host/embedding-runtime-registry.ts`, shared fallback-model selection now routes through `src/extension-host/embedding-runtime-policy.ts`, the public embedding runtime surface plus result typing now route through `src/extension-host/embedding-runtime.ts` and `src/extension-host/embedding-runtime-types.ts`, manager-side batch policy plus fallback activation now route through `src/extension-host/embedding-manager-runtime.ts`, sync plus reindex planning now route through `src/extension-host/embedding-sync-planning.ts`, sync plus reindex orchestration now route through `src/extension-host/embedding-sync-execution.ts`, reindex sync-body execution plus unsafe reset now route through `src/extension-host/embedding-reindex-execution.ts`, and safe-reindex temp-db creation, file swap, reopen, and cleanup now route through `src/extension-host/embedding-safe-reindex.ts` while `src/memory/embeddings.ts` remains the compatibility facade -- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now route through `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now route through `src/extension-host/media-runtime-registry.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now route through `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now route through `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now route through `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now route through `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` while `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, and `src/media-understanding/resolve.ts` remain compatibility facades +- built-in media backend definitions, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now route through `src/extension-host/media-runtime-backends.ts`; override merging and runtime lookup now route through `src/extension-host/media-runtime-registry.ts`; shared default and preferred runtime-backend ordering plus fallback chaining now route through `src/extension-host/runtime-backend-policy.ts`; provider candidate ordering, active-model precedence, and default-model fallback selection now route through `src/extension-host/media-runtime-policy.ts`; provider and CLI entry execution, output parsing, provider query normalization, provider auth/context shaping, and proxy-aware fetch handling now route through `src/extension-host/media-runtime-execution.ts`; local-binary probing, auto-entry selection, and top-level capability orchestration now route through `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`; and media prompt, timeout, scope, model-entry, concurrency, and decision helpers now route through `src/extension-host/media-runtime-config.ts` and `src/extension-host/media-runtime-decision.ts` while `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, and `src/media-understanding/resolve.ts` remain compatibility facades - TTS provider metadata, provider ordering, API-key resolution, configuration checks, and telephony support now route through `src/extension-host/tts-runtime-registry.ts`, provider execution loops, output-format selection, telephony synthesis, and provider-error shaping now route through `src/extension-host/tts-runtime-execution.ts`, provider selection plus request setup now route through `src/extension-host/tts-runtime-setup.ts`, TTS config normalization, defaults, and model-override policy now route through `src/extension-host/tts-config.ts`, prefs-path resolution, auto-mode policy, and persisted TTS preference reads and writes now route through `src/extension-host/tts-preferences.ts`, auto-TTS gating, directive cleanup, truncation, summarization, and payload planning now route through `src/extension-host/tts-payload.ts`, and last-attempt state plus shared status snapshots now route through `src/extension-host/tts-status.ts` while `src/tts/tts.ts` remains the compatibility facade - provider onboarding option building, model-picker entry building, and provider-method choice resolution now route through `src/extension-host/provider-wizard.ts` - loaded-provider auth application, plugin-enable gating, auth-method execution, and post-auth default-model handling now route through `src/extension-host/provider-auth-flow.ts` @@ -261,6 +261,8 @@ Committed implementation slices so far: - `1b87cdeca1` `TTS: add backend fallback policy` - `fcb6dd911c` `Memory: add embedding fallback policy` - `c205208497` `Media: add runtime selection policy` +- `a9e5d36f7e` `Runtime: share backend policy helper` +- `8d8b9ba42d` `Memory: adopt shared backend policy` - `89414ed857` `Docs: track extension host migration internally` - `d8af1eceaf` `Docs: refresh extension host migration status` diff --git a/src/extension-host/cutover-inventory.md b/src/extension-host/cutover-inventory.md index b11f9266fdf..13f10dce6ba 100644 --- a/src/extension-host/cutover-inventory.md +++ b/src/extension-host/cutover-inventory.md @@ -99,8 +99,8 @@ This is an implementation checklist, not a future-design spec. | Interactive channel control verbs for bound agents | product-shaped runtime helpers added under `src/plugins/runtime/*` and direct channel-specific helpers in extension code | host-owned adapter runtime contracts and interaction capabilities | `not started` | The host needs a bounded first-cut set of control verbs for interactive agents, such as typing leases plus message or conversation actions. Those verbs should be expressed as generic host-owned adapter capabilities, even if the first validated rollout only exercises them through Telegram and Discord. | | Slot arbitration | `src/plugins/slots.ts` | `src/extension-host/slot-arbitration.ts` | `partial` | Exclusive-slot selection and default-slot resolution now route through a host-owned slot-arbitration helper while `src/plugins/slots.ts` remains the compatibility facade. Broader slot and catalog arbitration are still pending. | | ACP backend registry | `src/acp/runtime/registry.ts` | `src/extension-host/acp-runtime-backend-registry.ts` | `partial` | ACP backend registration and resolution now route through a host-owned ACP runtime-backend registry while `src/acp/runtime/registry.ts` remains the compatibility facade. Broader runtime-backend catalog ownership and ACPX pilot migration are still pending. | -| Runtime-backend family catalog | built-in embedding, media-understanding, and TTS runtime descriptors currently implied by runtime-specific host registries | `src/extension-host/runtime-backend-catalog.ts` and `src/extension-host/runtime-backend-arbitration.ts` | `partial` | Embedding, media-understanding, and TTS runtime families now publish host-owned `capability.runtime-backend` catalog descriptors through `src/extension-host/runtime-backend-catalog.ts`. The catalog keeps subsystem ids, selector keys, capabilities, explicit auto-selection metadata, default models, and default ranking explicit without widening the legacy provider API. Embedding now shares host-owned backend definitions between `src/extension-host/embedding-runtime-backends.ts`, `src/extension-host/embedding-runtime-registry.ts`, and the runtime-backend catalog instead of the catalog deriving those built-ins from the registry facade. Media-understanding now shares host-owned backend definitions between `src/extension-host/media-runtime-backends.ts`, `src/extension-host/media-runtime-registry.ts`, and the runtime-backend catalog instead of the catalog deriving those built-ins from the registry facade. TTS now shares host-owned backend definitions between `src/extension-host/tts-runtime-backends.ts`, `src/extension-host/tts-runtime-registry.ts`, and the runtime-backend catalog instead of the catalog deriving those built-ins from the registry facade. Initial runtime-family arbitration now routes through `src/extension-host/runtime-backend-arbitration.ts`, embeddings, media, and TTS now also have explicit host-owned policy seams in `src/extension-host/embedding-runtime-policy.ts`, `src/extension-host/media-runtime-policy.ts`, and `src/extension-host/tts-runtime-policy.ts`, and embedding auto-provider selection, embedding local setup guidance, memory doctor guidance, media provider candidate ordering plus default-model lookup, and TTS request setup, status, plus compatibility provider-order exports now read runtime-family data through that catalog-backed arbitration path. Broader selection and arbitration consumers still need to adopt it. | -| Embedding provider registry and fallback routing | `src/memory/embeddings.ts`, `src/memory/manager.ts`, `src/memory/manager-sync-ops.ts`, plus plugin provider capability filtering through `src/plugins/runtime.ts` | `src/extension-host/embedding-runtime-backends.ts`, `src/extension-host/embedding-runtime-policy.ts`, `src/extension-host/embedding-runtime-registry.ts`, `src/extension-host/embedding-runtime.ts`, `src/extension-host/embedding-runtime-types.ts`, `src/extension-host/embedding-manager-runtime.ts`, `src/extension-host/embedding-sync-planning.ts`, `src/extension-host/embedding-sync-execution.ts`, `src/extension-host/embedding-reindex-execution.ts`, and `src/extension-host/embedding-safe-reindex.ts` | `partial` | Built-in embedding backend ids, default-model metadata, default local backend identity, and auto-selection metadata now route through shared host-owned definitions in `src/extension-host/embedding-runtime-backends.ts`, which feed both `src/extension-host/embedding-runtime-registry.ts` and the runtime-backend catalog. Embedding-provider auto-selection, provider creation, local-setup guidance, and primary plus fallback routing now route through a host-owned embedding runtime-registry helper, with auto-provider order and local setup guidance now reading remote backend ordering from `src/extension-host/runtime-backend-catalog.ts` instead of the backend-definition module directly. Explicit embedding fallback-model selection now routes through `src/extension-host/embedding-runtime-policy.ts`, and both the runtime registry and manager fallback activation reuse that one host-owned policy seam instead of keeping duplicate provider-specific fallback logic. The public embedding runtime surface and result typing now route through `src/extension-host/embedding-runtime.ts` and `src/extension-host/embedding-runtime-types.ts`, the main memory-manager consumers now use that host-owned boundary, manager-side batch policy plus fallback activation now route through `src/extension-host/embedding-manager-runtime.ts`, sync and reindex planning now route through `src/extension-host/embedding-sync-planning.ts`, sync and reindex orchestration now route through `src/extension-host/embedding-sync-execution.ts`, reindex sync-body execution plus unsafe reset now route through `src/extension-host/embedding-reindex-execution.ts`, and safe-reindex temp-db creation, file swap, reopen, and cleanup now route through `src/extension-host/embedding-safe-reindex.ts` while `src/memory/embeddings.ts` remains the compatibility facade. Runtime-backend catalog descriptors now also route through `src/extension-host/runtime-backend-catalog.ts`, and memory doctor guidance now reads the embedding auto-provider order from that catalog. Remaining embedding work is down to broader consumer adoption and arbitration on top of that catalog surface. | +| Runtime-backend family catalog | built-in embedding, media-understanding, and TTS runtime descriptors currently implied by runtime-specific host registries | `src/extension-host/runtime-backend-catalog.ts`, `src/extension-host/runtime-backend-arbitration.ts`, and `src/extension-host/runtime-backend-policy.ts` | `partial` | Embedding, media-understanding, and TTS runtime families now publish host-owned `capability.runtime-backend` catalog descriptors through `src/extension-host/runtime-backend-catalog.ts`. The catalog keeps subsystem ids, selector keys, capabilities, explicit auto-selection metadata, default models, and default ranking explicit without widening the legacy provider API. Embedding now shares host-owned backend definitions between `src/extension-host/embedding-runtime-backends.ts`, `src/extension-host/embedding-runtime-registry.ts`, and the runtime-backend catalog instead of the catalog deriving those built-ins from the registry facade. Media-understanding now shares host-owned backend definitions between `src/extension-host/media-runtime-backends.ts`, `src/extension-host/media-runtime-registry.ts`, and the runtime-backend catalog instead of the catalog deriving those built-ins from the registry facade. TTS now shares host-owned backend definitions between `src/extension-host/tts-runtime-backends.ts`, `src/extension-host/tts-runtime-registry.ts`, and the runtime-backend catalog instead of the catalog deriving those built-ins from the registry facade. Initial runtime-family arbitration now routes through `src/extension-host/runtime-backend-arbitration.ts`, shared default and preferred backend ordering plus fallback chaining now route through `src/extension-host/runtime-backend-policy.ts`, embeddings, media, and TTS now also have explicit host-owned policy seams in `src/extension-host/embedding-runtime-policy.ts`, `src/extension-host/media-runtime-policy.ts`, and `src/extension-host/tts-runtime-policy.ts`, and embedding auto-provider selection, embedding local setup guidance, memory doctor guidance, media provider candidate ordering plus default-model lookup, and TTS request setup, status, plus compatibility provider-order exports now read runtime-family data through that catalog-backed arbitration and backend-policy path. Broader selection and arbitration consumers still need to adopt it. | +| Embedding provider registry and fallback routing | `src/memory/embeddings.ts`, `src/memory/manager.ts`, `src/memory/manager-sync-ops.ts`, plus plugin provider capability filtering through `src/plugins/runtime.ts` | `src/extension-host/embedding-runtime-backends.ts`, `src/extension-host/embedding-runtime-policy.ts`, `src/extension-host/embedding-runtime-registry.ts`, `src/extension-host/embedding-runtime.ts`, `src/extension-host/embedding-runtime-types.ts`, `src/extension-host/embedding-manager-runtime.ts`, `src/extension-host/embedding-sync-planning.ts`, `src/extension-host/embedding-sync-execution.ts`, `src/extension-host/embedding-reindex-execution.ts`, and `src/extension-host/embedding-safe-reindex.ts` | `partial` | Built-in embedding backend ids, default-model metadata, default local backend identity, and auto-selection metadata now route through shared host-owned definitions in `src/extension-host/embedding-runtime-backends.ts`, which feed both `src/extension-host/embedding-runtime-registry.ts` and the runtime-backend catalog. Embedding-provider auto-selection, provider creation, local-setup guidance, and primary plus fallback routing now route through a host-owned embedding runtime-registry helper, with auto-provider order and local setup guidance now reading remote backend ordering from `src/extension-host/embedding-runtime-policy.ts` instead of the backend-definition module directly. Explicit embedding fallback-model selection now routes through `src/extension-host/embedding-runtime-policy.ts`, and both the runtime registry and manager fallback activation reuse that one host-owned policy seam instead of keeping duplicate provider-specific fallback logic. The public embedding runtime surface and result typing now route through `src/extension-host/embedding-runtime.ts` and `src/extension-host/embedding-runtime-types.ts`, the main memory-manager consumers now use that host-owned boundary, manager-side batch policy plus fallback activation now route through `src/extension-host/embedding-manager-runtime.ts`, sync and reindex planning now route through `src/extension-host/embedding-sync-planning.ts`, sync and reindex orchestration now route through `src/extension-host/embedding-sync-execution.ts`, reindex sync-body execution plus unsafe reset now route through `src/extension-host/embedding-reindex-execution.ts`, and safe-reindex temp-db creation, file swap, reopen, and cleanup now route through `src/extension-host/embedding-safe-reindex.ts` while `src/memory/embeddings.ts` remains the compatibility facade. Runtime-backend catalog descriptors now also route through `src/extension-host/runtime-backend-catalog.ts`, and memory doctor guidance now reads the embedding auto-provider order from that policy seam. Remaining embedding work is down to broader consumer adoption and arbitration on top of that catalog surface. | | Media-understanding provider registry and execution routing | `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, `src/media-understanding/resolve.ts`, plus plugin provider capability filtering through `src/plugins/runtime.ts` | `src/extension-host/media-runtime-backends.ts`, `src/extension-host/media-runtime-registry.ts`, `src/extension-host/media-runtime-policy.ts`, `src/extension-host/media-runtime-execution.ts`, `src/extension-host/media-runtime-auto.ts`, `src/extension-host/media-runtime-orchestration.ts`, `src/extension-host/media-runtime-config.ts`, `src/extension-host/media-runtime-decision.ts`, `src/extension-host/media-runtime-api.ts`, and `src/extension-host/media-runtime-entrypoints.ts` | `partial` | Built-in media backend ids, provider normalization, auto-selection seed order, selector-key shaping, and default-model metadata now route through shared host-owned definitions in `src/extension-host/media-runtime-backends.ts`, which feed both `src/extension-host/media-runtime-registry.ts` and the runtime-backend catalog. Override merging and runtime lookup now route through a host-owned media runtime-registry helper. Media provider candidate ordering, active-model precedence, and default-model fallback selection now route through `src/extension-host/media-runtime-policy.ts`, so `src/extension-host/media-runtime-auto.ts` no longer open-codes that subsystem-local ordering. Provider and CLI entry execution, output parsing, provider query normalization, provider auth and context shaping, and proxy-aware fetch handling now route through `src/extension-host/media-runtime-execution.ts`. Local-binary probing, auto-entry selection, and top-level capability orchestration now route through `src/extension-host/media-runtime-auto.ts` and `src/extension-host/media-runtime-orchestration.ts`. Prompt, timeout, scope, model-entry, and concurrency planning now route through `src/extension-host/media-runtime-config.ts`, and media decision shaping now routes through `src/extension-host/media-runtime-decision.ts`. The remaining API composition in `src/media-understanding/runner.ts` now routes through `src/extension-host/media-runtime-api.ts`, and the remaining lazy provider and CLI entrypoint wiring in `src/media-understanding/runner.entries.ts` now routes through `src/extension-host/media-runtime-entrypoints.ts`, leaving `src/media-understanding/providers/index.ts`, `src/media-understanding/runner.ts`, `src/media-understanding/runner.entries.ts`, and `src/media-understanding/resolve.ts` as compatibility facades. Runtime-backend catalog descriptors now also route through `src/extension-host/runtime-backend-catalog.ts`, and media auto-selection plus default-model lookup now consume that catalog through the shared media policy seam. Remaining media work is down to broader consumer adoption and arbitration on top of that catalog surface. | | TTS provider registry and execution routing | `src/tts/tts.ts`, `src/gateway/server-methods/tts.ts`, and `src/auto-reply/reply/commands-tts.ts` | `src/extension-host/tts-runtime-backends.ts`, `src/extension-host/tts-runtime-registry.ts`, `src/extension-host/tts-runtime-policy.ts`, `src/extension-host/tts-runtime-execution.ts`, `src/extension-host/tts-runtime-setup.ts`, `src/extension-host/tts-config.ts`, `src/extension-host/tts-preferences.ts`, `src/extension-host/tts-payload.ts`, `src/extension-host/tts-status.ts`, and `src/extension-host/tts-api.ts` | `partial` | Built-in TTS backend metadata now routes through shared host-owned definitions in `src/extension-host/tts-runtime-backends.ts`, which feed both `src/extension-host/tts-runtime-registry.ts` and the runtime-backend catalog. Provider ordering, API-key resolution, configuration checks, and telephony support now route through that shared host-owned TTS runtime surface. Explicit TTS override and configured-fallback policy now routes through `src/extension-host/tts-runtime-policy.ts`, so default provider selection and fallback chaining no longer depend on hardcoded local ordering. Provider execution loops, output-format selection, telephony synthesis, and provider-error shaping now route through `src/extension-host/tts-runtime-execution.ts`. Provider selection and request setup now route through `src/extension-host/tts-runtime-setup.ts`. TTS config normalization, defaults, and model-override policy now route through `src/extension-host/tts-config.ts`. Prefs-path resolution, auto-mode policy, and persisted TTS preference reads and writes now route through `src/extension-host/tts-preferences.ts`. Auto-TTS gating, directive cleanup, truncation, summarization, and payload planning now route through `src/extension-host/tts-payload.ts`. Last-attempt state, status snapshots, and shared status formatting now route through `src/extension-host/tts-status.ts`. The remaining API composition in `src/tts/tts.ts` now routes through `src/extension-host/tts-api.ts`, so `src/tts/tts.ts` is down to a compatibility facade. Runtime-backend catalog descriptors now also route through `src/extension-host/runtime-backend-catalog.ts`, and TTS request setup, status, plus compatibility provider-order exports now consume that catalog-backed arbitration policy directly. Remaining TTS work is down to broader consumer adoption and arbitration on top of that catalog surface. | | Onboarding/install/setup surfaces | `src/plugins/install.ts`, package manifests, channel catalog, onboarding commands | host-owned static descriptors | `partial` | Static metadata normalization has started; full setup/install descriptor migration is not done. |