Move Composio, logo.dev and Antigravity keys into Settings

The three third-party keys were hardcoded or read from the environment.
Operators now enter them in Settings > Integrations; they are stored
encrypted in the app-wide integration_keys table (migration 058).
An agent holding connector grants fails loudly when no Composio key is
saved. The goal-review test no longer depends on absolute dates.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-08 01:34:14 -04:00
1 parent 1ea040c0f0
commit 56b0594f91
36 files changed
+430 -100

No files matched your search

@@ -0,0 +1,10 @@
export const integrationKeysSchema = `
create table if not exists integration_keys (
name text primary key,
ciphertext blob not null,
updated_at text not null
);
insert into schema_migrations(version, name, applied_at)
values (58, 'integration_keys', datetime('now'));
`;
+2
View File
@@ -56,6 +56,7 @@ import { closeStaleWakeTasksSchema } from "./migrations/054-close-stale-wake-tas
import { taskOriginSchema } from "./migrations/055-task-origin";
import { kimiProvidersSchema } from "./migrations/056-kimi-providers";
import { kimiCodeProviderSchema } from "./migrations/057-kimi-code-provider";
import { integrationKeysSchema } from "./migrations/058-integration-keys";
interface Migration {
version: number;
@@ -121,6 +122,7 @@ const MIGRATIONS: Migration[] = [
{ version: 55, name: "task_origin", sql: taskOriginSchema },
{ version: 56, name: "kimi_providers", sql: kimiProvidersSchema },
{ version: 57, name: "kimi_code_provider", sql: kimiCodeProviderSchema },
{ version: 58, name: "integration_keys", sql: integrationKeysSchema },
];
const SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1].version;