mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-10-30 12:25:29 +08:00
1.8 KiB
1.8 KiB
Shared runtime source candidate (SDK >=0.7.4)
This source declares sharedRuntime: shared-runtime-v1 and componentModel: stateless-v1.
It is source-reviewed for the multi-tenant contract; it is not certified and makes no
claim of live tenant acceptance.
What is per invocation
openai_api_key,api_base_url,model_name, andimage_sizeare read fromself.get_plugin_config()inside the!drawinvocation. Nothing from tenant config is copied onto the plugin object or theDrawcomponent.AIImagePlugin.create_client()builds a freshAsyncOpenAIfrom that invocation'sopenai_api_keyandapi_base_url. The SDK client is a thin httpx wrapper and is cheap to construct; the command closes it in afinallyso no connection pool outlives the invocation.initialize()is not overridden and no client is cached on the plugin: a shared worker attaches it once with an empty config, so a cached client would carry one installation's API key and base URL into every other installation's!draw.
Binding-keyed state
- None. No process-local tenant cache, no Host storage rows, and no detached tasks exist, so
on_installation_revoked()keeps theBasePluginno-op.
Known limits
- One
!drawperforms one async image request; a slow or failing provider fails only that command and the client is still closed. - The API key is a Host-stored configuration string. Restrict access to plugin configuration.
- The
openaipackage is not installed in the local test environment, so the test replacessys.modules["openai"]with a recorder and drives two installation bindings through one plugin/component object. These are not live provider tests. - Not certified; independent review, signer approval, and two-Workspace invocation acceptance are still required.