Add reusable integrations settings foundation#3487
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: 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 |
ApprovabilityVerdict: Needs human review This PR introduces a significant new feature: a complete integrations settings system with encryption at rest, external API token validation (GitHub, GitLab, Jira, Linear), new UI components, and RPC endpoints. The scope and security-sensitive nature of the encryption code warrant human review. You can customize Macroscope's approvability policy. Learn more. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 44e710a. Configure here.

Summary
Adds a reusable integrations settings foundation for GitHub, GitLab, Jira, and Linear with secure token storage/validation and a refreshed Settings navigation entry.
Changes
Visual Evidence
Test Plan
vp check.vp run typecheck.Risks
Rollback
c7ab73118301f417af1467776fbe46569fdbabb5.Follow-up
This is the building block for a future PR that can layer automations and triggers on top of the integrations registry.
Note
High Risk
Touches secret storage encryption and third-party API token handling; losing
.secret-store-keymakes stored secrets unreadable.Overview
Adds a Settings → Integrations flow for GitHub, GitLab, Jira, and Linear: contracts/schemas, a multi-step add/edit wizard, and sidebar routing.
Server behavior: integration API keys are persisted in
ServerSecretStore(notsettings.json), redacted for clients, hydrated on read, and legacy plaintext keys migrate on save.ServerSecretStorenow writes secrets as AES-256-GCM blobs (magicT3S1); payloads without that header still decrypt as plaintext for backward compatibility. A newserverTestIntegrationTokenRPC validates tokens via provider APIs (including stored keys whenuseStoredTokenis set).UI:
IntegrationsSettingsPaneltests tokens before save; Linear/Jira/GitLab icons updated.Reviewed by Cursor Bugbot for commit a3d9baa. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add integrations settings foundation with token validation and encrypted secret storage
/settings/integrationsroute renderingIntegrationsSettingsPanel, which lets users create, edit, and delete integration accounts (GitHub, GitLab, Jira, Linear) stored inServerSettings.AccountDialogthat validates account name uniqueness, optional base URL, and verifies API tokens via a newtestIntegrationTokenRPC before saving.integrations.tsfor all four providers; each fetches the authenticated user and returns anaccountLabelor a typedIntegrationAccountTokenValidationError.serverSettings.tswrites keys toServerSecretStore, redacts them in persisted JSON and client-facing views, and hydrates them on read.ServerSecretStorenow encrypts all secrets at rest using AES-256-GCM with a per-store 32-byte key file; existing unencrypted payloads are read as-is for backward compatibility..secret-store-key) is created automatically on first use; losing it makes stored integration secrets unrecoverable.Macroscope summarized a3d9baa.