Changeset 0.29.1 (#196)

This commit is contained in:
2026-03-17 19:32:20 +00:00
parent 5d637d3a90
commit d4de84f3f1
24 changed files with 3117 additions and 28 deletions

View File

@@ -1,5 +1,67 @@
# Changelog
## [0.29.1] — 2026-03-17
### Summary
API extensions. Starlark packages serve custom JSON endpoints via
`api_routes` manifest key, with SSRF-safe outbound HTTP, LLM provider
access via BYOK chain, capability-based routing, and config-file
provider types. Five changesets (CS0CS4).
### New
- **Extension API routes** (`/s/:slug/api/*path`) — Starlark packages
declare routes in `manifest.api_routes` and implement `on_request(req)`
entry point. Supports exact and prefix path matching, wildcard methods,
and boolean shorthand. JWT-authenticated.
- **HTTP outbound module** (`http`) — `http.get/post/put/delete/request`
builtins with SSRF protection (private/loopback IP blocking via
`net.Dialer.Control`), manifest-based allowlist/blocklist
(`network_access.allow/block`), redirect chain validation, 1 MB
response cap, 10 s timeout. Requires `api.http` permission.
- **Provider module** (`provider`) — `provider.complete(messages, model?,
max_tokens?, temperature?)` makes synchronous LLM calls via BYOK chain.
`requires_provider` manifest key with optional `provider_config_id` pin
and `model` default. Requires `provider.complete` permission.
- **`RunContext`** — per-invocation state (user_id, channel_id) passed
through `CallEntryPoint` for user-scoped modules. All callers updated:
API routes pass JWT user, task executor passes owner, filters pass nil.
- **`ProviderResolver` interface** — decouples sandbox from handlers
package (avoids circular dependency). `ProviderResolverAdapter` in
handlers bridges to `ResolveProviderConfig` + provider registry.
- **`capability_match` routing policy** — filters candidates by model
capabilities (`required_caps: ["tool_calling", "vision"]`) with
optional `prefer_cheapest` sort by output price. Forward-compatible
with unknown capability names.
- **Config-file provider types** — `PROVIDER_TYPES_FILE` env var points
to JSON array of custom provider type definitions. Registers
OpenAI-compatible endpoints (Ollama, LiteLLM, vLLM) at startup
without code deploy. Built-in IDs are protected from override.
- **`provider.complete` permission** — new extension permission constant
for LLM completion access from Starlark scripts.
### Changed
- `Runner.ExecPackage` and `Runner.CallEntryPoint` signatures gain
`*RunContext` parameter. All callers updated (breaking internal API,
no external impact).
- `Runner.buildModules` receives manifest for module-specific config
(http reads `network_access`, provider reads `requires_provider`).
- Routing policy admin handler validation switch includes
`capability_match`.
- `PolicyConfig` gains `RequiredCaps` and `PreferCheapest` fields.
- Routing `Context` gains `Capabilities` map for capability-match
evaluation.
### Deferred
- **Server-side tool execution in completion handler** → v0.29.2.
`provider.complete()` covers bare completions; full tool loop
(extensions defining tools that execute server-side during chat
completions) requires tool registry integration with the sandbox,
which aligns with the DB extensions scope.
## [0.29.0] — 2026-03-17
### Summary