# dsh-llm-pi-ai-live bundle patch. # # Mounts the live-catalog refresher. It discovers every *configured* route from # the harness itself — the settings namespace is the profile entry id, which is # why no namespace appears here — and refreshes the ones whose endpoint and # protocol it can read. # # Every config field is optional; the defaults below are what the plugin uses # when the field is omitted, and are written out so they are discoverable. # # Behaviour, in one paragraph: shortly after boot, and then on a fixed period, # each eligible route is asked what models it currently serves. The user's own # entries are carried through untouched, in order; only ids the route does not # list yet are appended, with contextWindow/maxTokens/input filled in from the # installed pi-ai catalog where it knows the model. Nothing is ever removed or # rewritten. A route that cannot be read, reached, or validated is left exactly # as it was. - insert: - id: llm-pi-ai-live name: 'dsh-llm-pi-ai-live' config: # Master switch. `false` loads the plugin but schedules nothing. enabled: true # First pass, ten seconds after mount — long enough that the rest of # the composition has settled. `0` runs it immediately; the startup # pass always runs. startupDelayMs: 10000 # Then every six hours. `0` disables the periodic pass, leaving the # startup pass and the manual tool. intervalMs: 21600000 # Per-request network timeout. timeoutMs: 30000 # Namespaces to serve. Empty auto-detects the pi-ai adapter's namespace # from the harness's own configurable-provider directory; list entry ids # here (for example `include:llm-pi-ai`) to pin it. settingsNamespaces: [] # Provider routes to refresh; empty means every configured route. include: [] # Provider routes to leave alone, e.g. ['openrouter']. exclude: [] # Fill name/contextWindow/maxTokens/input on new entries from the # installed pi-ai catalog. Turn off to record only what the endpoint # itself disclosed. enrichFromCatalog: true # Hard cap on stored model entries per route. maxModels: 2000 # Compute and report without writing — set `true` for a first look at # what the plugin would change, then set it back. dryRun: false # Register the `refresh_model_catalog` tool for on-demand refreshes. toolEnabled: true # Declare reasoning efforts for third-party models that have none. # A route pi-ai's catalog does not describe offers no thinking level at # all until something declares one; measured against a real boot, such # a model resolves to `reasoning: null`. Off by default because writing # the field changes the request shape, and nothing here is ever # inferred from a model's name — the levels and their wire spellings # are the operator's statement about their own gateway. # # An entry that already declares `reasoningEfforts` (including # `false`) and a model the installed catalog knows are both left # alone; only a genuine gap is filled. reasoning: enabled: false rules: [] # Example: every model on one hand-declared gateway reasons, with # `off` sending nothing and `high`/`max` spelled for that gateway. # # rules: # - provider: acme-gateway # glob against the route key # model: 'glm-*' # glob against the model id # efforts: # off: null # null is allowed only for `off` # high: high # max: ultra # rename a level for this gateway # - provider: local-vllm # model: '*' # efforts: false # declare them non-reasoning