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:
1 parent
1ea040c0f0
commit
56b0594f91
36 files changed
+430
-100
No files matched your search
@@ -8,3 +8,4 @@ export * from "./governance";
|
||||
export * from "./collaboration";
|
||||
export * from "./onboarding";
|
||||
export * from "./composio";
|
||||
export * from "./integration-keys";
|
||||
@@ -0,0 +1,18 @@
|
||||
export const INTEGRATION_KEY_NAMES = ["composio", "logo_dev", "google_antigravity_client_secret"] as const;
|
||||
|
||||
export type IntegrationKeyName = (typeof INTEGRATION_KEY_NAMES)[number];
|
||||
|
||||
export interface IntegrationKeyStatus {
|
||||
name: IntegrationKeyName;
|
||||
configured: boolean;
|
||||
updatedAt: string | null;
|
||||
}
|
||||
|
||||
export interface SetIntegrationKeyInput {
|
||||
name: IntegrationKeyName;
|
||||
value: string;
|
||||
}
|
||||
|
||||
export interface ClearIntegrationKeyInput {
|
||||
name: IntegrationKeyName;
|
||||
}
|
||||
@@ -7,6 +7,8 @@ import type {
|
||||
CancelProviderResponseInput,
|
||||
CreateAgentInput,
|
||||
SetAutonomousPausedInput,
|
||||
SetIntegrationKeyInput,
|
||||
ClearIntegrationKeyInput,
|
||||
UpdateAgentInput,
|
||||
UpdateEmployeeProfileInput,
|
||||
CreateApprovalInput,
|
||||
@@ -111,6 +113,8 @@ export interface DesktopApi {
|
||||
updateAgent(input: UpdateAgentInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
updateEmployeeProfile(input: UpdateEmployeeProfileInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
setAutonomousPaused(input: SetAutonomousPausedInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
setIntegrationKey(input: SetIntegrationKeyInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
clearIntegrationKey(input: ClearIntegrationKeyInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
createTask(input: CreateTaskInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
updateTask(input: UpdateTaskInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
deleteTask(input: DeleteTaskInput): Promise<DesktopResult<AppSnapshot>>;
|
||||
|
||||
@@ -9,6 +9,8 @@ export const IPC_CHANNELS = {
|
||||
updateAgent: "agentcompany:update-agent",
|
||||
updateEmployeeProfile: "agentcompany:update-employee-profile",
|
||||
setAutonomousPaused: "agentcompany:set-autonomous-paused",
|
||||
setIntegrationKey: "agentcompany:set-integration-key",
|
||||
clearIntegrationKey: "agentcompany:clear-integration-key",
|
||||
createTask: "agentcompany:create-task",
|
||||
updateTask: "agentcompany:update-task",
|
||||
deleteTask: "agentcompany:delete-task",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import type { AuditReplayRunRecord } from "./audit-domain";
|
||||
import type { IntegrationKeyStatus } from "./commands/integration-keys";
|
||||
import type { BoardInterventionRecord as BoardInterventionRecordModel } from "./board-domain";
|
||||
import type {
|
||||
ChatAttachmentRecord,
|
||||
@@ -71,6 +72,7 @@ export interface AppSnapshot {
|
||||
uiPreferences: UiPreferences;
|
||||
/** True while the operator has paused the autonomous run engine. */
|
||||
autonomousPaused: boolean;
|
||||
integrationKeys: IntegrationKeyStatus[];
|
||||
organizations: OrganizationRecord[];
|
||||
employees: EmployeeRecord[];
|
||||
agents: AgentRecord[];
|
||||
|
||||
Reference in new issue
Block a user