## Summary
- Add `VITE_PUBLIC_KIMI_LAUNCH` feature flag controlling Kimi partnership branding
- BrowserOS provider card shows "Powered by Kimi K2.5 from Moonshot AI" badge and "Extended usage limits for the next 2 weeks!" when flag is on
- Moonshot/Kimi highlighted as "Recommended" in provider templates
- LLM Hub defaults to Kimi, ChatGPT, Claude, Gemini (with legacy defaults migration)
- Kimi hub row shows "Powered by Moonshot AI" flare
- Model selector locked to kimi-k2.5
- "How to get a Kimi API key" link in provider dialog
- Moonshot provider fully integrated across frontend and backend
* feat: generalized compaction prompts with split turn handling
Replace browser-specific XML prompts with domain-agnostic markdown format.
Add split turn detection and parallel summarization for large single-turn
conversations. Switch compaction from generateText to streamText for
Fireworks API compatibility. Add comprehensive unit and E2E tests (84 total).
* fix: address code review issues for compaction (PR #391)
Enforce COMPACTION_MAX_SUMMARIZATION_INPUT cap, extract shared
callSummarizer helper, add runtime type guard for experimental_context,
move magic constants to AGENT_LIMITS, and remove dead constants.
* fix: cap truncatedTurnPrefix input to maxSummarizationInput
Apply the same sliding window cap to turn prefix messages that was
already applied to toSummarize, preventing unbounded LLM input for
long single-turn conversations with many tool calls.
* fix: reduce browseros-auto default context window to 200K
The 400K setting caused compaction to trigger at ~383K, but the actual
model limit is 262K. Conversations hit the hard limit before compaction
could kick in.
Automatically detect whether custom MCP servers use Streamable HTTP or
SSE transport by probing with a POST request before creating the config.
- Add detectMcpTransport() utility that probes the server endpoint
- If POST returns 200 with JSON/event-stream, use Streamable HTTP
- If POST returns 404/405 or fails, fall back to SSE transport
- Cache detection results per URL with 1-hour TTL
- Skip caching for transient errors (5xx, network failures)
Known servers (browseros-mcp, klavis-strata) skip detection and use
Streamable HTTP directly.
* fix: tempDir is executionDir and create per session execution dir
* fix: move create() in gemini-agent to top
* fix: log(debug) directories
* fix: chat routes bug
* feat: support userSessionDir in /chat request schema
* fix: clean-up un-used types
* fix: lint errors
* fix: controller-ext is built separately
* fix: remove un-used scripts in agent/
* fix: rename to assistant
* fix: add build scripts
* feat: new start:dev to start both
* fix: update gitignore
* feat: --new-ports support for dev:start
* feat: update start-all to support port and new data dir
* fix: add help insturctions for start:dev
* feat: agent-sdk outline
* feat: unit tests for agent-sdk
* feat: implement /sdk routes
* feat: integration test for agent-sdk with server
* feat: ENV to disble headless mode for testing
* feat: act() integration test working
* chore: refactor package/shared to have constants/ and /types separately
* feat: verify() and extract() sdk APIs
* feat: extract() use remote endpoint for extraction
* feat: verify() implemented - lazy parsing to avoid strong schema checks
* fix: remove generateStructuredOutput as not models support it
* fix: clean-up LLM types and use zod schema
* fix: typecheck vitetest error
* fix: remove directly calling GeminiAgent in sdk act()
* fix: lefthook for refactor warning
* fix: refactor routes/sdk to move business logic out
* chore: fix monorepo setup
1) use single .env.development file at the root
2) update package.json to contain commands to start server and agent
3) rename "Assistant" package name to "agent"
4) rename HTTP_MCP_PORT to SERVER_PORT
* chore: update README
* chore: update .env.example