* feat: add a decision model for skills, tools, and teams
Let a small model shortlist what the chat model sees, including a local Laya install, and show the result on the turn.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: stop Laya through the POSIX-safe kill helper
Windows mypy does not see os.killpg, so process-group shutdown goes through the shared helper.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: compare the Laya install command without a POSIX path
Windows quotes the interpreter, so the displayed command is checked against the same argv list.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: show Laya readiness and wait for local decisions
Pin the local-CPU timeout fix and distinguish a ready Laya service from the service currently enabled for decisions.
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat: save each decision service and pick the default on the card
Clicking a card selects the default. Endpoint and key stay in the drawer
so Jev, Laya, and custom can be kept at once.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: jubaoliang <jubaoliang@tencent.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Plugin tools returning large octop_ui payloads (e.g. a bangumi season
with 1200+ episodes, ~228KB JSON) blew up the LLM context because the
same tool-result string served both the model and the UI.
Add OctopUiOffloadMiddleware at the innermost agent middleware layer:
when a ToolMessage content is a >=4000-char string carrying a non-empty
octop_ui renderer and data (and no file:// media refs), the payload is
moved in-place to ToolMessage.artifact and the model-visible content is
replaced by a compact result that keeps title/summary. Tool id,
tool_call_id, name and status are preserved.
Frontend restores rendering from artifact: ToolCallData.artifact,
closeToolCall extraction, history replay path, and resolvePluginUiData
prefers explicit data over data_ref. serialize.py surfaces artifact on
tool_result blocks; history recorder backfills artifact as fallback.
Spec: docs/octop-ui-payload-offload.md
Co-authored-by: jubaoliang <jubaoliang@gmail.com>