A ComposioConnectionService owns the toolkit catalog (cursor-paged, cached), managed auth-config reuse, connect-link initiation, and the local connected-account mirror that agent runs read. Five IPC surfaces carry it to the UI - list toolkits, connect a toolkit, refresh account statuses, and employee-side grant/revoke - and the snapshot now includes connectorAccounts and connectorGrants. The org API key resolves through one choke point that seeds itself once from the developer cred.txt next to the app when the database has none, so both the UI and agent runtime pick up the key without manual setup.
195 lines
10 KiB
TypeScript
195 lines
10 KiB
TypeScript
import type { DesktopResult } from "./result";
|
|
import type { AppSnapshot, SearchResultRecord } from "./domain";
|
|
import type { ProviderModelEntry } from "./provider-models";
|
|
import type {
|
|
BindSkillInput,
|
|
BootstrapOnboardingInput,
|
|
BootstrapOnboardingSummary,
|
|
CancelProviderResponseInput,
|
|
CreateAgentInput,
|
|
UpdateAgentInput,
|
|
CreateApprovalInput,
|
|
CreateAutomationRuleInput,
|
|
CreateDocumentInput,
|
|
CreateGoalInput,
|
|
CreateMeetingInput,
|
|
CreateSprintInput,
|
|
DeleteMeetingInput,
|
|
DeleteSprintInput,
|
|
CreateKnowledgeEntryInput,
|
|
CreateProjectInput,
|
|
CreateWorkspaceInput,
|
|
DeleteAutomationRuleInput,
|
|
DeleteDocumentInput,
|
|
DeleteTaskInput,
|
|
DeleteKnowledgeEntryInput,
|
|
UpdateAutomationRuleInput,
|
|
UpdateDocumentInput,
|
|
UpdateTaskInput,
|
|
CreateAuditReplayInput,
|
|
CreateChatSpaceInput,
|
|
CreateComplianceExportInput,
|
|
CreateLegalHoldInput,
|
|
CreateMigrationReportInput,
|
|
CheckProviderHealthInput,
|
|
ListProviderModelsInput,
|
|
StartProviderOAuthInput,
|
|
StartProviderOAuthResult,
|
|
CancelProviderOAuthInput,
|
|
MarkChatSpaceReadInput,
|
|
CreateOrganizationInput,
|
|
CreateProviderResponseInput,
|
|
CreateRetentionFreezeInput,
|
|
CreateRollbackSnapshotInput,
|
|
CreateScheduledPostInput,
|
|
CreateSocialAccountInput,
|
|
CreateTaskInput,
|
|
DecideApprovalInput,
|
|
DeleteMessageInput,
|
|
DeleteOrganizationInput,
|
|
EditMessageInput,
|
|
ImportFileInput,
|
|
OpenFileInput,
|
|
ImportSkillDirectoryInput,
|
|
GrantRoleInput,
|
|
LaunchProviderSignInInput,
|
|
LaunchSocialLoginInput,
|
|
ResolveAgentSkillsInput,
|
|
ResolveMigrationReconciliationInput,
|
|
RunChaosDrillInput,
|
|
RunEvalSuiteInput,
|
|
RunSdlcReviewInput,
|
|
RunSkillTestsInput,
|
|
RunTaskInput,
|
|
RevokeProviderCredentialInput,
|
|
SaveProviderCredentialInput,
|
|
SaveComposioSettingsInput,
|
|
ComposioToolkitSummaryDto,
|
|
ConnectComposioToolkitInput,
|
|
ConnectComposioToolkitResult,
|
|
ConnectorGrantInput,
|
|
ListComposioToolkitsInput,
|
|
RefreshComposioAccountsInput,
|
|
SearchInput,
|
|
SendMessageInput,
|
|
SetActiveOrganizationInput,
|
|
SetFilePinnedInput,
|
|
SetFeatureFlagInput,
|
|
SetLegalHoldStateInput,
|
|
SetPrBotGateInput,
|
|
SetRollbackSnapshotActiveInput,
|
|
SetRetentionFreezeStateInput,
|
|
SetScheduledPostStateInput,
|
|
StreamProviderResponseInput,
|
|
SyncEmployeeIdentityInput,
|
|
UpdateProviderPolicyInput,
|
|
UpdateTaskStatusInput,
|
|
} from "./commands";
|
|
import type { ProviderStreamRendererEvent } from "./provider-request-domain";
|
|
|
|
export type ProviderOAuthPhase = "authorize" | "progress" | "active" | "error" | "cancelled";
|
|
|
|
export interface ProviderOAuthEvent {
|
|
type: "provider-oauth";
|
|
providerKey: string;
|
|
phase: ProviderOAuthPhase;
|
|
url?: string;
|
|
instructions?: string;
|
|
message?: string;
|
|
}
|
|
|
|
export type RendererEvent =
|
|
| { type: "snapshot-changed" }
|
|
| { type: "provider-response-stream"; event: ProviderStreamRendererEvent }
|
|
| ProviderOAuthEvent;
|
|
|
|
export interface DesktopApi {
|
|
loadSnapshot(): Promise<DesktopResult<AppSnapshot>>;
|
|
bootstrapOnboarding(input: BootstrapOnboardingInput): Promise<DesktopResult<BootstrapOnboardingSummary>>;
|
|
setActiveOrganization(input: SetActiveOrganizationInput): Promise<DesktopResult<AppSnapshot>>;
|
|
deleteOrganization(input: DeleteOrganizationInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createOrganization(input: CreateOrganizationInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createAgent(input: CreateAgentInput): Promise<DesktopResult<AppSnapshot>>;
|
|
updateAgent(input: UpdateAgentInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createTask(input: CreateTaskInput): Promise<DesktopResult<AppSnapshot>>;
|
|
updateTask(input: UpdateTaskInput): Promise<DesktopResult<AppSnapshot>>;
|
|
deleteTask(input: DeleteTaskInput): Promise<DesktopResult<AppSnapshot>>;
|
|
updateTaskStatus(input: UpdateTaskStatusInput): Promise<DesktopResult<AppSnapshot>>;
|
|
runTask(input: RunTaskInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createGoal(input: CreateGoalInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createProject(input: CreateProjectInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createWorkspace(input: CreateWorkspaceInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createDocument(input: CreateDocumentInput): Promise<DesktopResult<AppSnapshot>>;
|
|
updateDocument(input: UpdateDocumentInput): Promise<DesktopResult<AppSnapshot>>;
|
|
deleteDocument(input: DeleteDocumentInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createKnowledgeEntry(input: CreateKnowledgeEntryInput): Promise<DesktopResult<AppSnapshot>>;
|
|
deleteKnowledgeEntry(input: DeleteKnowledgeEntryInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createAutomationRule(input: CreateAutomationRuleInput): Promise<DesktopResult<AppSnapshot>>;
|
|
updateAutomationRule(input: UpdateAutomationRuleInput): Promise<DesktopResult<AppSnapshot>>;
|
|
deleteAutomationRule(input: DeleteAutomationRuleInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createMeeting(input: CreateMeetingInput): Promise<DesktopResult<AppSnapshot>>;
|
|
deleteMeeting(input: DeleteMeetingInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createSprint(input: CreateSprintInput): Promise<DesktopResult<AppSnapshot>>;
|
|
deleteSprint(input: DeleteSprintInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createApproval(input: CreateApprovalInput): Promise<DesktopResult<AppSnapshot>>;
|
|
decideApproval(input: DecideApprovalInput): Promise<DesktopResult<AppSnapshot>>;
|
|
syncEmployeeIdentity(input: SyncEmployeeIdentityInput): Promise<DesktopResult<AppSnapshot>>;
|
|
grantRole(input: GrantRoleInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createChatSpace(input: CreateChatSpaceInput): Promise<DesktopResult<AppSnapshot>>;
|
|
sendMessage(input: SendMessageInput): Promise<DesktopResult<AppSnapshot>>;
|
|
editMessage(input: EditMessageInput): Promise<DesktopResult<AppSnapshot>>;
|
|
deleteMessage(input: DeleteMessageInput): Promise<DesktopResult<AppSnapshot>>;
|
|
markChatSpaceRead(input: MarkChatSpaceReadInput): Promise<DesktopResult<AppSnapshot>>;
|
|
saveProviderCredential(input: SaveProviderCredentialInput): Promise<DesktopResult<AppSnapshot>>;
|
|
revokeProviderCredential(input: RevokeProviderCredentialInput): Promise<DesktopResult<AppSnapshot>>;
|
|
launchProviderSignIn(input: LaunchProviderSignInInput): Promise<DesktopResult<null>>;
|
|
startProviderOAuth(input: StartProviderOAuthInput): Promise<DesktopResult<StartProviderOAuthResult>>;
|
|
cancelProviderOAuth(input: CancelProviderOAuthInput): Promise<DesktopResult<null>>;
|
|
checkProviderHealth(input: CheckProviderHealthInput): Promise<DesktopResult<AppSnapshot>>;
|
|
listProviderModels(input: ListProviderModelsInput): Promise<DesktopResult<ProviderModelEntry[]>>;
|
|
updateProviderPolicy(input: UpdateProviderPolicyInput): Promise<DesktopResult<AppSnapshot>>;
|
|
openExternalUrl(url: string): Promise<DesktopResult<null>>;
|
|
createProviderResponse(input: CreateProviderResponseInput): Promise<DesktopResult<AppSnapshot>>;
|
|
streamProviderResponse(input: StreamProviderResponseInput): Promise<DesktopResult<AppSnapshot>>;
|
|
cancelProviderResponse(input: CancelProviderResponseInput): Promise<DesktopResult<AppSnapshot>>;
|
|
importSkillDirectory(input: ImportSkillDirectoryInput): Promise<DesktopResult<AppSnapshot>>;
|
|
bindSkill(input: BindSkillInput): Promise<DesktopResult<AppSnapshot>>;
|
|
resolveAgentSkills(input: ResolveAgentSkillsInput): Promise<DesktopResult<AppSnapshot>>;
|
|
runSkillTests(input: RunSkillTestsInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createSocialAccount(input: CreateSocialAccountInput): Promise<DesktopResult<AppSnapshot>>;
|
|
launchSocialLogin(input: LaunchSocialLoginInput): Promise<DesktopResult<null>>;
|
|
createScheduledPost(input: CreateScheduledPostInput): Promise<DesktopResult<AppSnapshot>>;
|
|
setScheduledPostState(input: SetScheduledPostStateInput): Promise<DesktopResult<AppSnapshot>>;
|
|
importFile(input: ImportFileInput): Promise<DesktopResult<string | null>>;
|
|
openFile(input: OpenFileInput): Promise<DesktopResult<null>>;
|
|
pickDirectory(): Promise<DesktopResult<string | null>>;
|
|
setFilePinned(input: SetFilePinnedInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createMigrationReport(input: CreateMigrationReportInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createRollbackSnapshot(input: CreateRollbackSnapshotInput): Promise<DesktopResult<AppSnapshot>>;
|
|
setRollbackSnapshotActive(input: SetRollbackSnapshotActiveInput): Promise<DesktopResult<AppSnapshot>>;
|
|
resolveMigrationReconciliation(input: ResolveMigrationReconciliationInput): Promise<DesktopResult<AppSnapshot>>;
|
|
setFeatureFlag(input: SetFeatureFlagInput): Promise<DesktopResult<AppSnapshot>>;
|
|
runChaosDrill(input: RunChaosDrillInput): Promise<DesktopResult<AppSnapshot>>;
|
|
runSdlcReview(input: RunSdlcReviewInput): Promise<DesktopResult<AppSnapshot>>;
|
|
runEvalSuite(input: RunEvalSuiteInput): Promise<DesktopResult<AppSnapshot>>;
|
|
setPrBotGate(input: SetPrBotGateInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createComplianceExport(input: CreateComplianceExportInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createAuditReplay(input: CreateAuditReplayInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createLegalHold(input: CreateLegalHoldInput): Promise<DesktopResult<AppSnapshot>>;
|
|
setLegalHoldState(input: SetLegalHoldStateInput): Promise<DesktopResult<AppSnapshot>>;
|
|
createRetentionFreeze(input: CreateRetentionFreezeInput): Promise<DesktopResult<AppSnapshot>>;
|
|
setRetentionFreezeState(input: SetRetentionFreezeStateInput): Promise<DesktopResult<AppSnapshot>>;
|
|
saveComposioSettings(input: SaveComposioSettingsInput): Promise<DesktopResult<AppSnapshot>>;
|
|
listComposioToolkits(input: ListComposioToolkitsInput): Promise<DesktopResult<ComposioToolkitSummaryDto[]>>;
|
|
connectComposioToolkit(input: ConnectComposioToolkitInput): Promise<DesktopResult<ConnectComposioToolkitResult>>;
|
|
refreshComposioAccounts(input: RefreshComposioAccountsInput): Promise<DesktopResult<AppSnapshot>>;
|
|
grantConnector(input: ConnectorGrantInput): Promise<DesktopResult<AppSnapshot>>;
|
|
revokeConnector(input: ConnectorGrantInput): Promise<DesktopResult<AppSnapshot>>;
|
|
search(input: SearchInput): Promise<DesktopResult<SearchResultRecord[]>>;
|
|
subscribe(callback: (event: RendererEvent) => void): () => void;
|
|
platform: "win32" | "darwin" | "linux";
|
|
windowMinimize(): Promise<void>;
|
|
windowMaximize(): Promise<void>;
|
|
windowClose(): Promise<void>;
|
|
}
|