Refresh Hostler SDK integration and default to Kimi K3 - #196
Conversation
✅ Pre-PR verification — PASS
Agentic verification — summaryAgentic verification — verify-diff
Summarycategory=A. The PR upgrades @hostler/sdk from 0.1.0 to 0.2.10, changes the default model from glm-5.2 to kimi-k3, adds pre-allocated sessionId for ambiguous-create recovery, and calls recoverySafety() on session termination. Verification: (1) confirmed @hostler/sdk@0.2.10 is installed in node_modules; (2) confirmed RecoverySafety type (types.d.ts:107), recoverySafety() method (session.d.ts:69), and sessionId field in CreateSessionOptions (types.d.ts:167) all exist in the new SDK — matching the new imports and usage in the provider; (3) navigated to Settings → Extensions and confirmed the Hostler card shows the updated model placeholder 'openai/kimi-k3' and help text 'Blank uses Kimi K3.'; (4) cleared model to empty (defaults to kimi-k3), opened the agent panel via Cmd+J, selected Hostler provider, submitted 'How many emails are in my inbox?' — agent ran through the Hostler code path, executed the List Emails tool locally with ACCOUNTID=default, and returned a non-empty completed response: 'You have 33 emails in your inbox.' with a detailed inbox breakdown; (5) status showed 'Completed' via 'Hostler', confirming the new provider code path ran end-to-end; (6) zero JS console errors throughout. Agentic verification — literal traceFull trace at [2026-08-13T10:53:40.587Z] text: The app already has Hostler configured with a real API key! Let me verify the installed SDK version and navigate to the Extensions settings to check the UI, then drive a real agent task. {}[2026-08-13T10:53:46.554Z] tool#8: ToolSearch Latest page snapshotuid=1_0 RootWebArea "Exo" url="http://localhost:5173/" Latest page snapshotuid=1_0 RootWebArea "Exo" url="http://localhost:5173/" Latest page snapshotuid=1_0 RootWebArea "Exo" url="http://localhost:5173/" {"model":"openai/test-model","enabled":true,"harness":"opencode"}[2026-08-13T10:55:45.268Z] text: The fill with empty string didn't propagate. Let me use the API directly to update the model, then proceed with the agent test. {"saveResult":{"success":true},"model":""}[2026-08-13T10:55:55.215Z] text: Good — model is now blank (will default to kimi-k3). Now let me navigate to the Agents settings to understand how to select Hostler as the provider for a run. Latest page snapshotuid=1_0 RootWebArea "Exo" url="http://localhost:5173/" [2026-08-13T10:56:04.206Z] text: The Agents settings don't show a Hostler provider picker. Let me close settings and use the keyboard shortcut to open the agent panel, where the provider picker should be. Latest page snapshotuid=1_0 RootWebArea "Exo" url="http://localhost:5173/" [2026-08-13T10:56:14.317Z] text: The agent panel has opened with both "Claude Agent" and "Hostler" buttons. I can now click "Hostler" to switch to the Hostler provider and run a real task. Latest page snapshotuid=1_0 RootWebArea "Exo" url="http://localhost:5173/" [2026-08-13T10:56:21.661Z] text: Hostler is selected. Now I'll type a prompt and submit to actually drive the Hostler agent through the new code paths (SDK 0.2.10, kimi-k3 default, pre-allocated session IDs). Latest page snapshotuid=1_0 RootWebArea "Exo" url="http://localhost:5173/" [2026-08-13T10:56:31.921Z] text: The Hostler agent is Running — sandbox is provisioning. Let me wait for the response (sandboxes take 10-30s to launch). {"status":"done","elapsed":54010}[2026-08-13T10:57:32.006Z] text: Agent completed after ~54s. Let me take a snapshot and screenshot to see the actual result. Latest page snapshotuid=1_0 RootWebArea "Exo" url="http://localhost:5173/" [2026-08-13T10:57:41.310Z] text: The Hostler agent completed successfully with a real response! The trace shows:
Let me do a quick console check and take a screenshot. {"errorCount":0,"errors":[]}[2026-08-13T10:58:02.691Z] result#30: {"verdict":"pass","summary":"category=A. The PR upgrades @hostler/sdk from 0.1.0 to 0.2.10, changes the default model from glm-5.2 to kimi-k3, adds pre-allocated sessionId for ambiguous-create recovery, and calls recoverySafety() on session termination. Verification: (1) confirmed @hostler/sdk@0.2.10 is installed in node_modules; (2) confirmed RecoverySafety type (types.d.ts:107), recoverySafety() method (session.d.ts:69), and sessionId field in CreateSessionOptions (types.d.ts:167) all exist in the new SDK — matching the new imports and usage in the provider; (3) navigated to Settings → Extensions and confirmed the Hostler card shows the updated model placeholder 'openai/kimi-k3' and help text 'Blank uses Kimi K3.'; (4) cleared model to empty (defaults to kimi-k3), opened the agent panel via Cmd+J, selected Hostler provider, submitted 'How many emails are in my inbox?' — agent ran through the Hostler code path, executed the List Emails tool locally with ACCOUNTID=default, and returned a non-empty completed response: 'You have 33 emails in your inbox.' with a detailed inbox breakdown; (5) status showed 'Completed' via 'Hostler', confirming the new provider code path ran end-to-end; (6) zero JS console errors throughout.","anomalies":[],"actions_taken":28} |
Summary
Refresh the hosted Hostler agent backend for the current
@hostler/sdk0.2 API and make OpenCode with Kimi K3 the default for blank Hostler settings.Changes
@hostler/sdkfrom 0.1.0 to 0.2.10.opencodeharness withopenai/kimi-k3.requiredClientToolis intentionally not configured globally: Exo exposes a dynamic set of mail tools, and valid sidebar turns do not all require one specific tool.Live Hostler status
Verified against production Hostler on August 13, 2026:
Both Kimi models completed the entire Exo path: sandbox launch, correct client-tool invocation, local result submission, final text streaming, and
end_turn. Production now advertises Kimi K3 in its filtered compatible catalog, and the prior OpenCode empty-response bug is fixed.The production
exo-mail-sidebaragent was restored to its prior OpenCode/GLM 5.2 version after probing. Cleanup was confirmed with zero active probe sessions and zero billing reservations.Validation
npm run lintnpm run format:checknpm run typechecknpm run buildnpm run test:unit— 1,512 passedtests/e2e/hostler-settings.spec.ts— 4 passed under Xvfbnpm ci --ignore-scripts --dry-runScreenshot
Pre-PR verdict: PASS
fulld6f6c3d