v2: thermo-cleanup rewrite (supersedes main/v1)#37
Conversation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace mcp-oauth-callback.ts template-in-TypeScript with a proper
.html template (apps/server/src/templates/) + Nitro renderer handler.
HTML is now in a separate file; the renderer (catch-all) handles the
/mcp/oauth/callback route so the HTML rendering is clearly separated
from API endpoints.
- Delete toolset.ts barrel re-export. Import createMcpToolset directly
from ./remote in tools/index.ts.
- Remove the useless try-catch wrapper loop that was wrapping all tools
(native + MCP) in tools/index.ts. MCP tools manage their own task
lifecycle in remote.ts; native tools handle errors themselves.
- Enable html.parser.interpolation in biome.jsonc so {{ }} template
placeholders in .html files don't produce parse errors.
- Add docs/mcp-improvements.md: audit of security gaps and reliability
improvements for the MCP integration (teamId scoping, approval queue
ordering, proactive token refresh, field-level lockdown).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add optional teamId to listMcpServersByUser and listEnabledMcpServersByUser so Slack Enterprise Grid workspaces can't see each other's MCP servers. Pass context.teamId from all Slack event handlers through to queries. - Convert publishHome and applyPrompt to dict params (AGENTS.md rule: >1 param → options object). Propagate teamId through all 13 call sites including app_home_opened, all MCP actions/views, and prompt actions. - Convert generateResponse to dict params for the same reason. - Move MCP empty-state user-facing string to config.ts (appHome.mcpEmptyState). - Extract extractResultText() in remote.ts: the MCP result text-content narrowing was genuinely complex (multi-step type guards) and now lives as a named function per AGENTS.md. - Fix save/index.ts: early-return with publishHome when createMcpServer returns null instead of silently skipping all follow-up DB work. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The function was byte-for-byte identical in apps/bot and apps/server. Move it to packages/utils/src/mcp-json.ts with an explicit `secret` parameter (removing the implicit env read), then update all call sites to pass env.MCP_TOKEN_ENCRYPTION_KEY directly. Delete both app-level copies. Add zod to @repo/utils dependencies. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ironment handling
…e sandbox file handling
…ssistant greeting message
… Slack integration
All conflicts resolved in favor of this branch; main's diverging commits are intentionally not applied (ours wins everything). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016EYre4YJdSK9ZH3VRsaEXR * origin/main: fix: remove google native retry fix: restore summariser retry order fix: narrow chat retry fallbacks fix: prefer inference retry fallbacks fix: add summariser inference retry fix: validate inference env fix: use inference base url fix: add inference retry provider
|
Important Review skippedToo many files! This PR contains 262 files, which is 112 over the limit of 150. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (38)
📒 Files selected for processing (262)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Merges the thermo-cleanup (v2) branch into
main.Merge strategy
main's pre-merge state is preserved on thev1branch (backup).-s ours: this branch's tree wins entirely — all conflicts resolved in our favor, andmain's 8 diverging commits are intentionally not applied. The merge commit just makes the branch a clean descendant ofmainso this PR merges without conflicts.What's in here (high level)
models.jsonso a unique inference model id resolves to the custom endpoint instead of opencode-go.!compactin-thread command, opt-in onboarding flow, read tools allowed on the current (even private) conversation, custom profile fields.Rollback
If anything's wrong,
main(pre-merge) lives onv1.🤖 Generated with Claude Code
https://claude.ai/code/session_016EYre4YJdSK9ZH3VRsaEXR