mirror of
https://github.com/stablyai/orca.git
synced 2026-11-04 19:17:28 +00:00
* chore: audit preload root comments and track repository coverage * docs: track repository comment audit coverage * chore: keep comment audit tracker local * chore: shorten preload API contract comments --------- Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
200 lines
8.0 KiB
TypeScript
200 lines
8.0 KiB
TypeScript
import { contextBridge, ipcRenderer } from 'electron'
|
|
import type { PreloadApi } from './api-types'
|
|
import { installBrowserFindListener } from './preload-runtime-support'
|
|
import { appApi } from './api/app-bridge'
|
|
import { orcaProfilesApi } from './api/orca-profiles-bridge'
|
|
import { platformApi } from './api/platform-bridge'
|
|
import { wslApi } from './api/wsl-bridge'
|
|
import { wslMoveApi } from './api/wsl-move-bridge'
|
|
import { pwshApi } from './api/pwsh-bridge'
|
|
import { gitBashApi } from './api/git-bash-bridge'
|
|
import { pluginsApi } from './api/plugins-bridge'
|
|
import { reposApi } from './api/repos-bridge'
|
|
import { projectsApi } from './api/projects-bridge'
|
|
import { projectGroupsApi } from './api/project-groups-bridge'
|
|
import { folderWorkspacesApi } from './api/folder-workspaces-bridge'
|
|
import { sparsePresetsApi } from './api/sparse-presets-bridge'
|
|
import { worktreesApi } from './api/worktrees-bridge'
|
|
import { workspaceCleanupApi } from './api/workspace-cleanup-bridge'
|
|
import { workspaceSpaceApi } from './api/workspace-space-bridge'
|
|
import { workspacePortsApi } from './api/workspace-ports-bridge'
|
|
import { ptyApi } from './api/pty-bridge'
|
|
import { feedbackApi } from './api/feedback-bridge'
|
|
import { crashReportsApi } from './api/crash-reports-bridge'
|
|
import { exportApi } from './api/export-bridge'
|
|
import { ghApi } from './api/gh-bridge'
|
|
import { hostedReviewApi } from './api/hosted-review-bridge'
|
|
import { glApiBridge } from './api/gl-bridge'
|
|
import { bitbucketApi } from './api/bitbucket-bridge'
|
|
import { linearApi } from './api/linear-bridge'
|
|
import { jiraApi } from './api/jira-bridge'
|
|
import { starNagApi } from './api/star-nag-bridge'
|
|
import { diagnosticsApi } from './api/diagnostics-bridge'
|
|
import { settingsApi } from './api/settings-bridge'
|
|
import { agentAwakeApi } from './api/agent-awake-bridge'
|
|
import { localhostWorktreeLabelsApi } from './api/localhost-worktree-labels-bridge'
|
|
import { keybindingsApi } from './api/keybindings-bridge'
|
|
import { codexAccountsApi } from './api/codex-accounts-bridge'
|
|
import { claudeAccountsApi } from './api/claude-accounts-bridge'
|
|
import { cliApi } from './api/cli-bridge'
|
|
import { codexConfigSyncApi } from './api/codex-config-sync-bridge'
|
|
import { preflightApi } from './api/preflight-bridge'
|
|
import { notificationsApi } from './api/notifications-bridge'
|
|
import { onboardingApi } from './api/onboarding-bridge'
|
|
import { dashboardApi } from './api/dashboard-bridge'
|
|
import { terminalPreviewApi } from './api/terminal-preview-bridge'
|
|
import { macosTccPromptsApi } from './api/macos-tcc-prompts-bridge'
|
|
import { developerPermissionsApi } from './api/developer-permissions-bridge'
|
|
import { computerUsePermissionsApi } from './api/computer-use-permissions-bridge'
|
|
import { shellApi } from './api/shell-bridge'
|
|
import { skillsApi } from './api/skills-bridge'
|
|
import { petApi } from './api/pet-bridge'
|
|
import { browserApi } from './api/browser-bridge'
|
|
import { emulatorApi } from './api/emulator-bridge'
|
|
import { hooksApi } from './api/hooks-bridge'
|
|
import { ephemeralVmApi } from './api/ephemeral-vm-bridge'
|
|
import { cacheApi } from './api/cache-bridge'
|
|
import { sessionApi } from './api/session-bridge'
|
|
import { updaterApi } from './api/updater-bridge'
|
|
import { docPreviewApi } from './api/doc-preview-bridge'
|
|
import { notebookApi } from './api/notebook-bridge'
|
|
import { fsApi } from './api/fs-bridge'
|
|
import { gitApi } from './api/git-bridge'
|
|
import { uiApi } from './api/ui-bridge'
|
|
import { statsApi } from './api/stats-bridge'
|
|
import { memoryApi } from './api/memory-bridge'
|
|
import { claudeUsageApi } from './api/claude-usage-bridge'
|
|
import { codexUsageApi } from './api/codex-usage-bridge'
|
|
import { openCodeUsageApi } from './api/open-code-usage-bridge'
|
|
import { museUsageApi } from './api/muse-usage-bridge'
|
|
import { aiVaultApi } from './api/ai-vault-bridge'
|
|
import { nativeChatApi } from './api/native-chat-bridge'
|
|
import { runtimeApi } from './api/runtime-bridge'
|
|
import { runtimeEnvironmentsApi } from './api/runtime-environments-bridge'
|
|
import { rateLimitsApi } from './api/rate-limits-bridge'
|
|
import { opencodeGoCredentialsApi } from './api/opencode-go-credentials-bridge'
|
|
import { minimaxCredentialsApi } from './api/minimax-credentials-bridge'
|
|
import { zcodePlanCredentialsApi } from './api/zcode-plan-credentials-bridge'
|
|
import { grokAccountsApi } from './api/grok-accounts-bridge'
|
|
import { cursorAccountsApi } from './api/cursor-accounts-bridge'
|
|
import { sshApi } from './api/ssh-bridge'
|
|
import { plainSshTerminalApi } from './api/plain-ssh-terminal-bridge'
|
|
import { legacyRelayBridgeApi } from './api/legacy-relay-bridge-api'
|
|
import { automationsApi } from './api/automations-bridge'
|
|
import { e2eApi } from './api/e2e-bridge'
|
|
import { mobileApi } from './api/mobile-bridge'
|
|
import { agentStatusApi } from './api/agent-status-bridge'
|
|
import { speechApi } from './api/speech-bridge'
|
|
|
|
installBrowserFindListener()
|
|
|
|
const telemetryTrackApi: PreloadApi['telemetryTrack'] = (name, props) =>
|
|
ipcRenderer.invoke('telemetry:track', name, props)
|
|
const telemetrySetOptInApi: PreloadApi['telemetrySetOptIn'] = (optedIn) =>
|
|
ipcRenderer.invoke('telemetry:setOptIn', optedIn)
|
|
const telemetryAcknowledgeBannerApi: PreloadApi['telemetryAcknowledgeBanner'] = () =>
|
|
ipcRenderer.invoke('telemetry:acknowledgeBanner')
|
|
const telemetryGetConsentStateApi: PreloadApi['telemetryGetConsentState'] = () =>
|
|
ipcRenderer.invoke('telemetry:getConsentState')
|
|
|
|
const api = {
|
|
app: appApi,
|
|
orcaProfiles: orcaProfilesApi,
|
|
platform: platformApi,
|
|
wsl: wslApi,
|
|
wslMove: wslMoveApi,
|
|
pwsh: pwshApi,
|
|
gitBash: gitBashApi,
|
|
plugins: pluginsApi,
|
|
repos: reposApi,
|
|
projects: projectsApi,
|
|
projectGroups: projectGroupsApi,
|
|
folderWorkspaces: folderWorkspacesApi,
|
|
sparsePresets: sparsePresetsApi,
|
|
worktrees: worktreesApi,
|
|
workspaceCleanup: workspaceCleanupApi,
|
|
workspaceSpace: workspaceSpaceApi,
|
|
workspacePorts: workspacePortsApi,
|
|
pty: ptyApi,
|
|
feedback: feedbackApi,
|
|
crashReports: crashReportsApi,
|
|
export: exportApi,
|
|
gh: ghApi,
|
|
hostedReview: hostedReviewApi,
|
|
gl: glApiBridge,
|
|
bitbucket: bitbucketApi,
|
|
linear: linearApi,
|
|
jira: jiraApi,
|
|
starNag: starNagApi,
|
|
telemetryTrack: telemetryTrackApi,
|
|
telemetrySetOptIn: telemetrySetOptInApi,
|
|
telemetryAcknowledgeBanner: telemetryAcknowledgeBannerApi,
|
|
telemetryGetConsentState: telemetryGetConsentStateApi,
|
|
diagnostics: diagnosticsApi,
|
|
settings: settingsApi,
|
|
agentAwake: agentAwakeApi,
|
|
localhostWorktreeLabels: localhostWorktreeLabelsApi,
|
|
keybindings: keybindingsApi,
|
|
codexAccounts: codexAccountsApi,
|
|
claudeAccounts: claudeAccountsApi,
|
|
cli: cliApi,
|
|
codexConfigSync: codexConfigSyncApi,
|
|
preflight: preflightApi,
|
|
notifications: notificationsApi,
|
|
onboarding: onboardingApi,
|
|
dashboard: dashboardApi,
|
|
terminalPreview: terminalPreviewApi,
|
|
macosTccPrompts: macosTccPromptsApi,
|
|
developerPermissions: developerPermissionsApi,
|
|
computerUsePermissions: computerUsePermissionsApi,
|
|
shell: shellApi,
|
|
skills: skillsApi,
|
|
pet: petApi,
|
|
browser: browserApi,
|
|
emulator: emulatorApi,
|
|
hooks: hooksApi,
|
|
ephemeralVm: ephemeralVmApi,
|
|
cache: cacheApi,
|
|
session: sessionApi,
|
|
updater: updaterApi,
|
|
docPreview: docPreviewApi,
|
|
notebook: notebookApi,
|
|
fs: fsApi,
|
|
git: gitApi,
|
|
ui: uiApi,
|
|
stats: statsApi,
|
|
memory: memoryApi,
|
|
claudeUsage: claudeUsageApi,
|
|
codexUsage: codexUsageApi,
|
|
openCodeUsage: openCodeUsageApi,
|
|
museUsage: museUsageApi,
|
|
aiVault: aiVaultApi,
|
|
nativeChat: nativeChatApi,
|
|
runtime: runtimeApi,
|
|
runtimeEnvironments: runtimeEnvironmentsApi,
|
|
rateLimits: rateLimitsApi,
|
|
opencodeGoCredentials: opencodeGoCredentialsApi,
|
|
minimaxCredentials: minimaxCredentialsApi,
|
|
zcodePlanCredentials: zcodePlanCredentialsApi,
|
|
grokAccounts: grokAccountsApi,
|
|
cursorAccounts: cursorAccountsApi,
|
|
ssh: sshApi,
|
|
plainSsh: plainSshTerminalApi,
|
|
legacyRelayBridge: legacyRelayBridgeApi,
|
|
automations: automationsApi,
|
|
e2e: e2eApi,
|
|
mobile: mobileApi,
|
|
agentStatus: agentStatusApi,
|
|
speech: speechApi
|
|
} satisfies PreloadApi
|
|
|
|
if (process.contextIsolated) {
|
|
try {
|
|
contextBridge.exposeInMainWorld('api', api)
|
|
} catch (error) {
|
|
console.error(error)
|
|
}
|
|
} else {
|
|
window.api = api
|
|
}
|