docs: comprehensive LS binary reverse engineering with model enum mapping
This commit is contained in:
834
docs/ls-binary-analysis.md
Normal file
834
docs/ls-binary-analysis.md
Normal file
@@ -0,0 +1,834 @@
|
||||
# LS Binary Analysis — Reverse Engineering Notes
|
||||
|
||||
Source: `strings` analysis of `/usr/share/antigravity/resources/app/extensions/antigravity/bin/language_server_linux_x64`
|
||||
|
||||
---
|
||||
|
||||
## Model IDs (All Known)
|
||||
|
||||
### Placeholder Models (M0–M50)
|
||||
|
||||
51 placeholder model slots (`MODEL_PLACEHOLDER_M0` through `MODEL_PLACEHOLDER_M50`).
|
||||
|
||||
**Known mappings** (confirmed via traffic analysis):
|
||||
|
||||
| Placeholder | Model |
|
||||
| ----------------------- | ------------------- |
|
||||
| `MODEL_PLACEHOLDER_M7` | Gemini 3 Pro (Low) |
|
||||
| `MODEL_PLACEHOLDER_M8` | Gemini 3 Pro (High) |
|
||||
| `MODEL_PLACEHOLDER_M12` | Claude Opus 4.5 |
|
||||
| `MODEL_PLACEHOLDER_M18` | Gemini 3 Flash |
|
||||
| `MODEL_PLACEHOLDER_M26` | Claude Opus 4.6 |
|
||||
|
||||
Remaining placeholders (M0–M6, M9–M11, M13–M17, M19–M25, M27–M50) are unmapped — likely reserved for future models or A/B test variants.
|
||||
|
||||
### Claude Models
|
||||
|
||||
| Model ID | Notes |
|
||||
| --------------------------------------------------- | ------------------ |
|
||||
| `MODEL_CLAUDE_3_HAIKU_20240307` | Legacy |
|
||||
| `MODEL_CLAUDE_3_SONNET_20240229` | Legacy |
|
||||
| `MODEL_CLAUDE_3_OPUS_20240229` | Legacy |
|
||||
| `MODEL_CLAUDE_3_5_HAIKU_20241022` | |
|
||||
| `MODEL_CLAUDE_3_5_SONNET_20240620` | |
|
||||
| `MODEL_CLAUDE_3_5_SONNET_20241022` | |
|
||||
| `MODEL_CLAUDE_3_5_SONNET_BYOK` | Bring Your Own Key |
|
||||
| `MODEL_CLAUDE_3_7_SONNET_20250219` | |
|
||||
| `MODEL_CLAUDE_3_7_SONNET_20250219_THINKING` | Extended thinking |
|
||||
| `MODEL_CLAUDE_3_7_SONNET_BYOK` | BYOK |
|
||||
| `MODEL_CLAUDE_3_7_SONNET_OPEN_ROUTER_BYOK` | OpenRouter BYOK |
|
||||
| `MODEL_CLAUDE_3_7_SONNET_THINKING_BYOK` | BYOK + thinking |
|
||||
| `MODEL_CLAUDE_3_7_SONNET_THINKING_OPEN_ROUTER_BYOK` | OpenRouter BYOK |
|
||||
| `MODEL_CLAUDE_4_SONNET` | Claude 4 Sonnet |
|
||||
| `MODEL_CLAUDE_4_SONNET_THINKING` | + thinking |
|
||||
| `MODEL_CLAUDE_4_SONNET_BYOK` | BYOK |
|
||||
| `MODEL_CLAUDE_4_SONNET_DATABRICKS` | Databricks hosted |
|
||||
| `MODEL_CLAUDE_4_SONNET_THINKING_DATABRICKS` | Databricks + think |
|
||||
| `MODEL_CLAUDE_4_SONNET_OPEN_ROUTER_BYOK` | OpenRouter BYOK |
|
||||
| `MODEL_CLAUDE_4_SONNET_THINKING_OPEN_ROUTER_BYOK` | OpenRouter BYOK |
|
||||
| `MODEL_CLAUDE_4_SONNET_THINKING_BYOK` | BYOK + thinking |
|
||||
| `MODEL_CLAUDE_4_OPUS` | Claude 4 Opus |
|
||||
| `MODEL_CLAUDE_4_OPUS_THINKING` | + thinking |
|
||||
| `MODEL_CLAUDE_4_OPUS_BYOK` | BYOK |
|
||||
| `MODEL_CLAUDE_4_OPUS_THINKING_BYOK` | BYOK + thinking |
|
||||
| `MODEL_CLAUDE_4_5_SONNET` | Claude 4.5 Sonnet |
|
||||
| `MODEL_CLAUDE_4_5_SONNET_THINKING` | + thinking |
|
||||
| `MODEL_CLAUDE_4_5_HAIKU` | Claude 4.5 Haiku |
|
||||
| `MODEL_CLAUDE_4_5_HAIKU_THINKING` | + thinking |
|
||||
|
||||
### Google Models
|
||||
|
||||
| Model ID | Notes |
|
||||
| ------------------------------------------------------ | ----------------------- |
|
||||
| `MODEL_GOOGLE_GEMINI_1_0_PRO` | Legacy |
|
||||
| `MODEL_GOOGLE_GEMINI_1_5_PRO` | Legacy |
|
||||
| `MODEL_GOOGLE_GEMINI_2_0_FLASH` | |
|
||||
| `MODEL_GOOGLE_GEMINI_2_5_FLASH` | |
|
||||
| `MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE` | |
|
||||
| `MODEL_GOOGLE_GEMINI_2_5_FLASH_THINKING` | |
|
||||
| `MODEL_GOOGLE_GEMINI_2_5_FLASH_THINKING_TOOLS` | With tool use |
|
||||
| `MODEL_GOOGLE_GEMINI_2_5_FLASH_IMAGE_PREVIEW` | Image input |
|
||||
| `MODEL_GOOGLE_GEMINI_2_5_FLASH_PREVIEW_04_17` | April preview |
|
||||
| `MODEL_GOOGLE_GEMINI_2_5_FLASH_PREVIEW_05_20` | May preview |
|
||||
| `MODEL_GOOGLE_GEMINI_2_5_FLASH_PREVIEW_05_20_THINKING` | May preview + thinking |
|
||||
| `MODEL_GOOGLE_GEMINI_2_5_PRO` | |
|
||||
| `MODEL_GOOGLE_GEMINI_2_5_PRO_EVAL` | Evaluation variant |
|
||||
| `MODEL_GOOGLE_GEMINI_COMPUTER_USE_EXPERIMENTAL` | Browser/computer use |
|
||||
| `MODEL_GOOGLE_GEMINI_EXP_1206` | December experiment |
|
||||
| `MODEL_GOOGLE_GEMINI_FOR_GOOGLE_2_5_PRO` | Google-internal 2.5 Pro |
|
||||
| `MODEL_GOOGLE_GEMINI_INTERNAL_BYOM` | Bring Your Own Model |
|
||||
| `MODEL_GOOGLE_GEMINI_INTERNAL_TAB_FLASH_LITE` | Tab completion model |
|
||||
| `MODEL_GOOGLE_GEMINI_INTERNAL_TAB_JUMP_FLASH_LITE` | Tab-jump completion |
|
||||
| `MODEL_GOOGLE_GEMINI_TRAINING_POLICY` | RLHF/training policy |
|
||||
| `MODEL_GOOGLE_TRAINING_CHECKPOINT` | Training checkpoint |
|
||||
| `MODEL_GOOGLE_TRAINING_JUDGE` | Evaluation judge |
|
||||
| **Codename models** (likely Gemini 3.x variants): | |
|
||||
| `MODEL_GOOGLE_GEMINI_RIFTRUNNER` | Codename |
|
||||
| `MODEL_GOOGLE_GEMINI_RIFTRUNNER_THINKING_HIGH` | High compute |
|
||||
| `MODEL_GOOGLE_GEMINI_RIFTRUNNER_THINKING_LOW` | Low compute |
|
||||
| `MODEL_GOOGLE_GEMINI_HORIZONDAWN` | Codename |
|
||||
| `MODEL_GOOGLE_GEMINI_COSMICFORGE` | Codename |
|
||||
| `MODEL_GOOGLE_GEMINI_INFINITYJET` | Codename |
|
||||
| `MODEL_GOOGLE_GEMINI_INFINITYBLOOM` | Codename |
|
||||
| `MODEL_GOOGLE_GEMINI_NEMOSREEF` | Codename |
|
||||
| `MODEL_GOOGLE_GEMINI_PUREPRISM` | Codename |
|
||||
| `MODEL_GOOGLE_GEMINI_ORIONFIRE` | Codename |
|
||||
| `MODEL_GOOGLE_GEMINI_RAINSONG` | Codename |
|
||||
| `MODEL_GOOGLE_GEMINI_GENTLEISLAND` | Codename |
|
||||
| `MODEL_GOOGLE_JARVIS_PROXY` | Jarvis proxy endpoint |
|
||||
| `MODEL_GOOGLE_JARVIS_V4S` | Jarvis v4s model |
|
||||
|
||||
### OpenAI Models
|
||||
|
||||
| Model ID | Notes |
|
||||
| ---------------------------------- | ---------------- |
|
||||
| `MODEL_OPENAI_COMPATIBLE` | Generic compat |
|
||||
| `MODEL_OPENAI_GPT_OSS_120B_MEDIUM` | Open-source 120B |
|
||||
|
||||
---
|
||||
|
||||
## gRPC Services
|
||||
|
||||
### LanguageServerService (137+ methods)
|
||||
|
||||
The main service running locally on the user's machine. Communicates with both
|
||||
the extension and the API server.
|
||||
|
||||
<details>
|
||||
<summary>Full method list (click to expand)</summary>
|
||||
|
||||
```
|
||||
AcceptTermsOfService
|
||||
AcknowledgeCascadeCodeEdit
|
||||
AcknowledgeCodeActionStep
|
||||
AddToBrowserWhitelist
|
||||
AddTrackedWorkspace
|
||||
BrowserValidateCascadeOrCancelOverlayGenerate
|
||||
CancelCascadeInvocation
|
||||
CancelCascadeSteps
|
||||
CaptureConsoleLogs
|
||||
CaptureScreenshot
|
||||
ConvertTrajectoryToMarkdown
|
||||
CopyBuiltinWorkflowToWorkspace
|
||||
CopyTrajectory
|
||||
CreateCustomizationFile
|
||||
CreateReplayWorkspace
|
||||
CreateTrajectoryShare
|
||||
CreateWorktree
|
||||
DeleteCascadeMemory
|
||||
DeleteCascadeTrajectory
|
||||
DeleteMediaArtifact
|
||||
DeleteQueuedUserInputStep
|
||||
DumpFlightRecorder
|
||||
DumpPprof
|
||||
Exit
|
||||
FocusUserPage
|
||||
ForceBackgroundResearchRefresh
|
||||
GenerateCommitMessage
|
||||
GetAgentScripts
|
||||
GetAllBrowserWhitelistedUrls
|
||||
GetAllCascadeTrajectories
|
||||
GetAllCustomAgentConfigs
|
||||
GetAllRules
|
||||
GetAllSkills
|
||||
GetAllWorkflows
|
||||
GetArtifactSnapshots
|
||||
GetAvailableCascadePlugins
|
||||
GetBrowserOpenConversation
|
||||
GetBrowserWhitelistFilePath
|
||||
GetCascadeMemories
|
||||
GetCascadeModelConfigData
|
||||
GetCascadeModelConfigs
|
||||
GetCascadeNuxes
|
||||
GetCascadePluginById
|
||||
GetCascadeTrajectory
|
||||
GetCascadeTrajectoryGeneratorMetadata
|
||||
GetCascadeTrajectorySteps
|
||||
GetChangelog
|
||||
GetCodeValidationStates
|
||||
GetCommandModelConfigs
|
||||
GetDebugDiagnostics
|
||||
GetMatchingContextScopeItems
|
||||
GetMcpServerStates
|
||||
GetMcpServerTemplates
|
||||
GetModelResponse
|
||||
GetModelStatuses
|
||||
GetPatchAndCodeChange
|
||||
GetProfileData
|
||||
GetRepoInfos
|
||||
GetRevertPreview
|
||||
GetRevisionArtifact
|
||||
GetStaticExperimentStatus
|
||||
GetStatus
|
||||
GetTeamOrganizationalControls
|
||||
GetTermsOfService
|
||||
GetTranscription
|
||||
GetUnleashData
|
||||
GetUserAnalyticsSummary
|
||||
GetUserMemories
|
||||
GetUserSettings
|
||||
GetUserStatus
|
||||
GetUserTrajectory
|
||||
GetUserTrajectoryDebug
|
||||
GetUserTrajectoryDescriptions
|
||||
GetWebDocsOptions
|
||||
GetWorkingDirectories
|
||||
GetWorkspaceEditState
|
||||
GetWorkspaceInfos
|
||||
HandleCascadeUserInteraction
|
||||
HandleScreenRecording
|
||||
HandleStreamingCommand
|
||||
Heartbeat
|
||||
ImportFromCursor
|
||||
InitializeCascadePanelState
|
||||
InstallCascadePlugin
|
||||
ListMcpResources
|
||||
ListPages
|
||||
LoadReplayConversation
|
||||
LoadTrajectory
|
||||
MigrateApiKey
|
||||
OpenUrl
|
||||
ProvideCompletionFeedback
|
||||
RecordAnalyticsEvent
|
||||
RecordChatFeedback
|
||||
RecordChatPanelSession
|
||||
RecordCommitMessageSave
|
||||
RecordEvent
|
||||
RecordInteractiveCascadeFeedback
|
||||
RecordLints
|
||||
RecordSearchDocOpen
|
||||
RecordSearchResultsView
|
||||
RecordUserGrep
|
||||
RecordUserStepSnapshot
|
||||
RefreshContextForIdeAction
|
||||
RefreshMcpServers
|
||||
RegisterGdmUser
|
||||
RemoveTrackedWorkspace
|
||||
ReplayGroundTruthTrajectory
|
||||
ResetOnboarding
|
||||
ResolveOutstandingSteps
|
||||
RevertToCascadeStep
|
||||
SaveMediaAsArtifact
|
||||
SaveScreenRecording
|
||||
SendActionToChatPanel
|
||||
SendAllQueuedMessages
|
||||
SendUserCascadeMessage
|
||||
SetBaseExperiments
|
||||
SetBrowserOpenConversation
|
||||
SetUserSettings
|
||||
SetWorkingDirectories
|
||||
SetupUniversitySandbox
|
||||
ShouldEnableUnleash
|
||||
SignalExecutableIdle
|
||||
SimulateSegFault
|
||||
SkipOnboarding
|
||||
SmartFocusConversation
|
||||
SmartOpenBrowser
|
||||
StartCascade
|
||||
StartScreenRecording
|
||||
StatUri
|
||||
StreamCascadePanelReactiveUpdates
|
||||
StreamCascadeReactiveUpdates
|
||||
StreamCascadeSummariesReactiveUpdates
|
||||
StreamTerminalShellCommand
|
||||
StreamUserTrajectoryReactiveUpdates
|
||||
UpdateCascadeMemory
|
||||
UpdateConversationAnnotations
|
||||
UpdateDevExperiments
|
||||
UpdateEnterpriseExperimentsFromUrl
|
||||
UpdatePRForWorktree
|
||||
WellSupportedLanguages
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
**Notable new findings:**
|
||||
|
||||
- `StreamCascadeReactiveUpdates` — server-sent streaming RPC for real-time cascade updates (alternative to our current polling approach)
|
||||
- `GetUnleashData` — direct access to feature flag data
|
||||
- `GetUserMemories` — persistent memory system
|
||||
- `DumpFlightRecorder` / `DumpPprof` — debug/profiling endpoints
|
||||
- `SimulateSegFault` — intentional crash trigger (testing?)
|
||||
- `ImportFromCursor` — competitive migration tool
|
||||
- `GetAllRules` / `GetAllWorkflows` / `GetAllSkills` — customization system
|
||||
- `StreamTerminalShellCommand` — streaming terminal execution
|
||||
- `HandleScreenRecording` / `CaptureScreenshot` — browser automation
|
||||
- `CreateWorktree` / `UpdatePRForWorktree` — git worktree integration
|
||||
- `ListMcpResources` / `RefreshMcpServers` — MCP tool integration
|
||||
|
||||
### ApiServerService (87+ methods)
|
||||
|
||||
Cloud-hosted API server. LS communicates with this for analytics, model config,
|
||||
and remote operations.
|
||||
|
||||
<details>
|
||||
<summary>Full method list (click to expand)</summary>
|
||||
|
||||
```
|
||||
ApplyTrajectoryHeuristics
|
||||
BatchRecordChatRequestRecords
|
||||
BatchRecordCompletions
|
||||
BatchRecordPrompts
|
||||
BatchRecordUserLastUpdateTimes
|
||||
CheckHybridDeploymentStatus
|
||||
ContactForm
|
||||
CreateHybridDeploymentInternal
|
||||
CreateTrajectoryShare
|
||||
DeleteAllowlist
|
||||
DeleteOidcProvider
|
||||
DeleteTeamOrganizationalControls
|
||||
DeleteTrajectoryShare
|
||||
ExchangeOidcCode
|
||||
FetchTrajectoryShare
|
||||
FetchTrajectoryShareByUser
|
||||
GenerateSyntheticRule
|
||||
GetAllOidcProviders
|
||||
GetAllowlist
|
||||
GetCascadeModelConfigs
|
||||
GetCascadeNuxes
|
||||
GetChatMessage
|
||||
GetCommandModelConfigs
|
||||
GetCompletionExamples
|
||||
GetDefaultWorkflowTemplates
|
||||
GetDeploymentConfig
|
||||
GetEmbeddings
|
||||
GetExtensionStats
|
||||
GetHybridDeploymentsInternal
|
||||
GetImageGeneration
|
||||
GetMQuery
|
||||
GetMcpServerTemplates
|
||||
GetModelInfos
|
||||
GetModelStatuses
|
||||
GetOidcAuthorizationUrl
|
||||
GetStatus
|
||||
GetStreamingExternalChatCompletions
|
||||
GetStreamingModelAPITextCompletion
|
||||
GetTeamOidcProviders
|
||||
GetTeamOrganizationalControls
|
||||
GetTeamOrganizationalControlsForSite
|
||||
GetTranscription
|
||||
GetUnleashContextFields
|
||||
GetUserAllowlist
|
||||
GetWebDocsOptions
|
||||
GetWebSearchRedirect
|
||||
GetWebSearchResults
|
||||
InsertAllowlist
|
||||
IsConversationSharingBlocked
|
||||
JoinWaitlist
|
||||
LogChatHybrid
|
||||
LogCompletionsHybrid
|
||||
LogFeedbackHybrid
|
||||
PingGemini
|
||||
ProvideFeedback
|
||||
RecordAsyncTelemetry
|
||||
RecordCascadeUsage
|
||||
RecordChatFeedback
|
||||
RecordChatModelNodeRun
|
||||
RecordChatPanelSession
|
||||
RecordChatSuccessfully
|
||||
RecordCodeTrackerUpdates
|
||||
RecordCommandUsage
|
||||
RecordCommitMessageGeneration
|
||||
RecordCommitMessageSave
|
||||
RecordCompletionExample
|
||||
RecordCompletions
|
||||
RecordContextRefresh
|
||||
RecordContextToPrompt
|
||||
RecordCortexCodingPlan
|
||||
RecordCortexCodingStep
|
||||
RecordCortexCodingStepFeedback
|
||||
RecordCortexError
|
||||
RecordCortexExecutionMetadata
|
||||
RecordCortexFeedback
|
||||
RecordCortexGeneratorMetadata
|
||||
RecordCortexStep
|
||||
RecordCortexTrajectory
|
||||
RecordCortexTrajectoryStep
|
||||
RecordDebounce
|
||||
RecordEvent
|
||||
RecordFullTrajectoryAnalytics
|
||||
RecordGitTelemetry
|
||||
RecordMQuery
|
||||
RecordNewCortexPlan
|
||||
RecordOpportunities
|
||||
RecordPinnedContext
|
||||
RecordProfilingData
|
||||
RecordReadUrlContent
|
||||
RecordSearch
|
||||
RecordSearchDocOpen
|
||||
RecordSearchResults
|
||||
RecordSearchResultsView
|
||||
RecordStateInitializationData
|
||||
RecordTrajectorySegmentAnalytics
|
||||
RecordTrajectorySegmentEvents
|
||||
RefreshOidcToken
|
||||
RegisterHybridDeployment
|
||||
RegisterOidcProvider
|
||||
RemoveHybridDeploymentInternal
|
||||
RunCodeAlignment
|
||||
SendReferralEmail
|
||||
StreamingTest
|
||||
Subscribe
|
||||
SubscribeToBlog
|
||||
SupportsRemoteIndexing
|
||||
UnsubscribeFromEmails
|
||||
UploadErrorTraces
|
||||
UpsertDeploymentConfig
|
||||
UpsertTeamOrganizationalControls
|
||||
UpsertTeamOrganizationalControlsForSite
|
||||
ValidateEmail
|
||||
ValidateRegistrationCode
|
||||
WhoAmI
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
**Notable:**
|
||||
|
||||
- `GetStreamingExternalChatCompletions` — streaming chat API
|
||||
- `GetStreamingModelAPITextCompletion` — streaming text completion
|
||||
- `GetImageGeneration` — image generation capability
|
||||
- `GetMQuery` / `RecordMQuery` — unknown "MQuery" system
|
||||
- `GetEmbeddings` — embedding generation
|
||||
- `PingGemini` — health check for Gemini
|
||||
- `RecordCascadeUsage` — usage reporting (our MITM target!)
|
||||
- `RunCodeAlignment` — code alignment/formatting service
|
||||
- `GetWebSearchResults` — web search integration
|
||||
|
||||
### ExtensionServerService (53+ methods)
|
||||
|
||||
Extension-side service that the LS calls back into for IDE operations.
|
||||
|
||||
<details>
|
||||
<summary>Full method list (click to expand)</summary>
|
||||
|
||||
```
|
||||
AddAnnotation
|
||||
BroadcastConversationDeletion
|
||||
CheckTerminalShellSupport
|
||||
EndAudioRecording
|
||||
ExecuteCommand
|
||||
FetchMCPAuthToken
|
||||
FindAllReferences
|
||||
FocusIDEWindow
|
||||
GetBrowserOnboardingPort
|
||||
GetChromeDevtoolsMcpUrl
|
||||
GetCurrentAudioRecording
|
||||
GetDefinition
|
||||
GetLintErrors
|
||||
GetSecretValue
|
||||
HandleAsyncPostMessage
|
||||
HandleProposeCodeExtensionVerification
|
||||
InsertCodeAtCursor
|
||||
IsAgentManagerEnabled
|
||||
LanguageServerStarted
|
||||
LaunchBrowser
|
||||
LogEvent
|
||||
OpenAntigravityRulesFile
|
||||
OpenConfigurePluginsPage
|
||||
OpenConversationWorkspaceQuickPick
|
||||
OpenDiffZones
|
||||
OpenExternalUrl
|
||||
OpenFilePointer
|
||||
OpenPluginConfigModal
|
||||
OpenPluginPage
|
||||
OpenSetting
|
||||
OpenTerminal
|
||||
OpenVirtualFile
|
||||
PlaySound
|
||||
PushUnifiedStateSyncUpdate
|
||||
ReadTerminal
|
||||
RecordErrorDelta
|
||||
RemoveAnnotation
|
||||
RestartUserStatusUpdater
|
||||
RunExtensionCode
|
||||
SaveDocument
|
||||
SendTerminalInput
|
||||
ShowAnnotation
|
||||
ShowConversationPicker
|
||||
ShowTerminal
|
||||
SmartFocusConversation
|
||||
StartAudioRecording
|
||||
StoreSecretValue
|
||||
SubscribeToUnifiedStateSyncTopic
|
||||
TerminalResearchResult
|
||||
TerminateCommand
|
||||
UpdateCascadeTrajectorySummaries
|
||||
UpdateDetailedViewWithCascadeInputPath
|
||||
WriteCascadeEdit
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
**Notable:**
|
||||
|
||||
- `FetchMCPAuthToken` — the extension handles MCP auth token fetching
|
||||
- `GetChromeDevtoolsMcpUrl` — Chrome DevTools MCP integration
|
||||
- `RunExtensionCode` — the LS can execute arbitrary extension code
|
||||
- `StartAudioRecording` / `EndAudioRecording` — audio input support
|
||||
- `PlaySound` — audio output
|
||||
- `LaunchBrowser` — browser automation trigger
|
||||
- `StoreSecretValue` / `GetSecretValue` — secret management
|
||||
|
||||
### SeatManagementService (97+ methods)
|
||||
|
||||
Team/organization management. Handles licensing, seats, credits.
|
||||
|
||||
**Notable methods:**
|
||||
|
||||
- `AddExtraFlexCreditsInternal` — credit topup
|
||||
- `GetCascadeAnalytics` — usage analytics
|
||||
- `GetPlanStatus` — subscription status
|
||||
- `GetTeamCreditEntries` — credit ledger
|
||||
- `GetTeamSettings` / `UpdateTeamConfig` — team configuration
|
||||
- `GetWrapped` — Spotify-wrapped style usage summary
|
||||
- `UpdateCascadeWebSearchEnabled` — toggle web search
|
||||
- `SetUserApiProviderKey` — BYOK key management
|
||||
|
||||
### ModelManagementService (8 methods)
|
||||
|
||||
Self-hosted model management for hybrid deployments.
|
||||
|
||||
```
|
||||
AddModel
|
||||
DeleteModel
|
||||
ListInferenceServers
|
||||
ListModels
|
||||
PollInferenceServerMemory
|
||||
StartInferenceServer
|
||||
StopInferenceServer
|
||||
UpdateInferenceServerMemory
|
||||
```
|
||||
|
||||
### PredictionService (~15 methods)
|
||||
|
||||
Google AI Platform prediction service (the upstream LLM API).
|
||||
|
||||
```
|
||||
AsyncGenerateContent
|
||||
CompleteCode
|
||||
CountTokens
|
||||
DirectPredict
|
||||
DirectRawPredict
|
||||
EmbedContent
|
||||
Explain
|
||||
FetchAvailableModels
|
||||
FetchPredictOperation
|
||||
GenerateContent
|
||||
Predict
|
||||
PredictLongRunning
|
||||
RawPredictLongRunning
|
||||
RawPredict
|
||||
RetrieveUserQuota ← quota retrieval!
|
||||
TestGrpcPredict
|
||||
```
|
||||
|
||||
### CloudCode Service (22 methods)
|
||||
|
||||
Google internal CloudCode REST-like API at `daily-cloudcode-pa.googleapis.com`.
|
||||
|
||||
```
|
||||
CompleteCode
|
||||
FetchAdminControls
|
||||
FetchCodeCustomizationState
|
||||
GenerateChat
|
||||
GenerateCode
|
||||
GetCodeAssistGlobalUserSetting
|
||||
InternalAtomicAgenticChat ← agentic chat endpoint!
|
||||
ListAgents
|
||||
ListCloudAICompanionProjects
|
||||
ListExperiments
|
||||
ListModelConfigs
|
||||
ListRemoteRepositories
|
||||
LoadCodeAssist
|
||||
MigrateDatabaseCode
|
||||
OnboardUser
|
||||
OnboardUserBackgroundTasks
|
||||
RecordClientEvent
|
||||
RecordCodeAssistMetrics
|
||||
RecordSmartchoicesFeedback
|
||||
SearchSnippets
|
||||
SetCodeAssistGlobalUserSetting
|
||||
TransformCode
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## REST Endpoints (v1internal)
|
||||
|
||||
Discovered REST endpoints on `daily-cloudcode-pa.googleapis.com`:
|
||||
|
||||
```
|
||||
v1internal:checkUrlDenylist
|
||||
v1internal:completeCode
|
||||
v1internal:countTokens
|
||||
v1internal:fetchAdminControls
|
||||
v1internal:fetchAvailableModels
|
||||
v1internal:fetchCodeCustomizationState
|
||||
v1internal:fetchUserInfo
|
||||
v1internal:generateChat
|
||||
v1internal:generateCode
|
||||
v1internal:generateContent
|
||||
v1internal:getCodeAssistGlobalUserSetting
|
||||
v1internal:internalAtomicAgenticChat
|
||||
v1internal:listAgents
|
||||
v1internal:listCloudAICompanionProjects
|
||||
v1internal:listExperiments
|
||||
v1internal:listModelConfigs
|
||||
v1internal:listRemoteRepositories
|
||||
v1internal:loadCodeAssist
|
||||
v1internal:logClientError
|
||||
v1internal:migrateDatabaseCode
|
||||
v1internal:onboardUser
|
||||
v1internal:onboardUserBackgroundTasks
|
||||
v1internal:recordClientEvent
|
||||
v1internal:recordCodeAssistMetrics
|
||||
v1internal:recordSmartchoicesFeedback
|
||||
v1internal:recordTrajectoryAnalytics
|
||||
v1internal:retrieveUserQuota
|
||||
v1internal:rewriteUri
|
||||
v1internal:searchSnippets
|
||||
v1internal:setCodeAssistGlobalUserSetting
|
||||
v1internal:setUserSettings
|
||||
v1internal:streamGenerateChat
|
||||
v1internal:streamGenerateContent ← main LLM API
|
||||
v1internal:tabChat
|
||||
v1internal:transformCode
|
||||
```
|
||||
|
||||
**Key endpoints:**
|
||||
|
||||
- `streamGenerateContent` — the main LLM streaming endpoint (confirmed via MITM)
|
||||
- `internalAtomicAgenticChat` — agentic chat (full tool-use loop in one call?)
|
||||
- `retrieveUserQuota` — quota/credits check
|
||||
- `listModelConfigs` — available models and configuration
|
||||
- `fetchAvailableModels` — model discovery
|
||||
- `countTokens` — tokenization
|
||||
- `streamGenerateChat` — streaming chat variant
|
||||
- `tabChat` — tab completion chat
|
||||
- `fetchUserInfo` — user information
|
||||
- `listExperiments` — A/B test experiments
|
||||
|
||||
---
|
||||
|
||||
## Proto Packages (v1internal)
|
||||
|
||||
Internal proto packages discovered in the binary:
|
||||
|
||||
```
|
||||
google/internal/cloud/code/v1internal/cloudcode
|
||||
google/internal/cloud/code/v1internal/credits
|
||||
google/internal/cloud/code/v1internal/jetski
|
||||
google/internal/cloud/code/v1internal/metrics
|
||||
google/internal/cloud/code/v1internal/model
|
||||
google/internal/cloud/code/v1internal/onboarding
|
||||
google/internal/cloud/code/v1internal/prediction
|
||||
google/internal/cloud/code/v1internal/remote
|
||||
```
|
||||
|
||||
**Notable:**
|
||||
|
||||
- `credits` — credit/quota system proto definitions
|
||||
- `jetski` — internal codename for the cascade/agent system
|
||||
- `prediction` — AI model prediction layer
|
||||
- `metrics` — telemetry/analytics
|
||||
|
||||
---
|
||||
|
||||
## Feature Flags & Configuration
|
||||
|
||||
### Proxy Detection
|
||||
|
||||
```
|
||||
DETECT_AND_USE_PROXY_UNSPECIFIED (0, default — ignores proxy)
|
||||
DETECT_AND_USE_PROXY_ENABLED (1, honors HTTPS_PROXY)
|
||||
DETECT_AND_USE_PROXY_DISABLED (2, explicitly ignores proxy)
|
||||
```
|
||||
|
||||
### Cascade Config Keys
|
||||
|
||||
```
|
||||
CASCADE_ENFORCE_QUOTA ← quota enforcement toggle
|
||||
CASCADE_BASE_MODEL_ID ← default model selection
|
||||
CASCADE_ENABLE_MCP_TOOLS ← MCP tool use
|
||||
CASCADE_ANTIGRAVITY_BROWSER_TOOLS_ENABLED
|
||||
CASCADE_AUTO_FIX_LINTS
|
||||
CASCADE_WEB_SEARCH_TOOL_ENABLED/DISABLED
|
||||
CASCADE_BACKGROUND_RESEARCH_CONFIG_OVERRIDE
|
||||
CASCADE_GLOBAL_CONFIG_OVERRIDE
|
||||
CASCADE_MEMORY_CONFIG_OVERRIDE
|
||||
CASCADE_DEFAULT_MODEL_OVERRIDE
|
||||
CASCADE_PLAN_BASED_CONFIG_OVERRIDE
|
||||
CASCADE_ENABLE_AUTOMATED_MEMORIES
|
||||
```
|
||||
|
||||
### Model Status
|
||||
|
||||
```
|
||||
MODEL_STATUS_UNSPECIFIED
|
||||
MODEL_STATUS_INFO
|
||||
MODEL_STATUS_WARNING
|
||||
```
|
||||
|
||||
### Cortex Step Types
|
||||
|
||||
These are the internal names for the agent's tool-use steps:
|
||||
|
||||
```
|
||||
CORTEX_STEP_TYPE_CODE_ACTION
|
||||
CORTEX_STEP_TYPE_COMMAND_STATUS
|
||||
CORTEX_STEP_TYPE_COMPILE_TOOL_PYLINT
|
||||
CORTEX_STEP_TYPE_GREP_SEARCH
|
||||
CORTEX_STEP_TYPE_RUN_COMMAND
|
||||
CORTEX_STEP_TYPE_VIEW_CODE_ITEM
|
||||
```
|
||||
|
||||
### Cortex Generation Types
|
||||
|
||||
```
|
||||
CORTEX_GENERATION_TYPE_CCI_RESEARCH
|
||||
CORTEX_GENERATION_TYPE_DYNAMIC_TRAJECTORY
|
||||
CORTEX_GENERATION_TYPE_FILE_RESEARCH
|
||||
CORTEX_GENERATION_TYPE_GRAPH
|
||||
CORTEX_GENERATION_TYPE_GROUNDTRUTH
|
||||
CORTEX_GENERATION_TYPE_INFORM
|
||||
CORTEX_GENERATION_TYPE_MASKED_GROUND_TRUTH_TRAJECTORY
|
||||
CORTEX_GENERATION_TYPE_REAPPLY_GROUND_TRUTH
|
||||
CORTEX_GENERATION_TYPE_STATIC_TRAJECTORY
|
||||
CORTEX_GENERATION_TYPE_VERIFY
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Hardcoded URLs
|
||||
|
||||
```
|
||||
https://play.googleapis.com/log ← Clearcut telemetry
|
||||
https://oauth2.googleapis.com/token ← Token refresh
|
||||
https://oauth2.googleapis.com/device/code ← Device auth flow
|
||||
https://www.googleapis.com/oauth2/v2/userinfo
|
||||
https://docs.googleapis.com/v1/documents/ ← Google Docs integration
|
||||
https://iamcredentials.googleapis.com/v1/ ← Service account impersonation
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Miscellaneous Findings
|
||||
|
||||
- **Unleash config**: Auth key `*:production.e44558998bfc35ea9584dc65858e4485fdaa5d7ef46903e0c67712d1`, domain `antigravity-unleash.goog`
|
||||
- **Sentry**: Has a sample rate config (`ANTIGRAVITY_SENTRY_SAMPLE_RATE`)
|
||||
- **Flight recorder**: Internal debug recording system (`DumpFlightRecorder`)
|
||||
- **Browser extension IDs**: Several Chrome extension IDs visible (`pebbhcjfokadbgbnlmogdkkaahmamnap`, etc.)
|
||||
- **Cortex memory**: `CORTEX_MEMORY_SOURCE_AUTO_CASCADE` — auto-generates memories from cascades
|
||||
- **RLHF/Training**: `MODEL_GOOGLE_TRAINING_JUDGE`, `MODEL_GOOGLE_TRAINING_CHECKPOINT`, `MODEL_GOOGLE_GEMINI_TRAINING_POLICY` — suggests the LS participates in model training/evaluation
|
||||
- **Hybrid deployment**: Multiple methods for on-prem/hybrid deployments (`CheckHybridDeploymentStatus`, `CreateHybridDeploymentInternal`, etc.)
|
||||
- **BYOK support**: Claude and OpenAI models have BYOK variants; also open-router and databricks hosting options
|
||||
- **Jetski**: Internal codename for the cascade/agent system. Google-internal health check: `http://jetski-server.corp.goog/healthz`
|
||||
- **XboxInferenceToolRequest**: Proto message `exa.chat_pb.XboxInferenceToolRequest` — "Xbox" is a codename for their inference tool system
|
||||
|
||||
---
|
||||
|
||||
## Protobuf Enum Numbers (from extension.js)
|
||||
|
||||
Extracted from the compiled protobuf enum definitions in `extension.js`.
|
||||
These are the wire values sent in proto field 1 (model) of usage messages.
|
||||
|
||||
### Placeholder Models
|
||||
|
||||
| Enum `no` | Proto Name |
|
||||
| --------- | ------------------------- |
|
||||
| 1000 | MODEL_PLACEHOLDER_M0 |
|
||||
| 1001 | MODEL_PLACEHOLDER_M1 |
|
||||
| 1002 | MODEL_PLACEHOLDER_M2 |
|
||||
| 1003 | MODEL_PLACEHOLDER_M3 |
|
||||
| 1004 | MODEL_PLACEHOLDER_M4 |
|
||||
| 1005 | MODEL_PLACEHOLDER_M5 |
|
||||
| 1006 | MODEL_PLACEHOLDER_M6 |
|
||||
| 1007 | MODEL_PLACEHOLDER_M7 |
|
||||
| 1008 | MODEL_PLACEHOLDER_M8 |
|
||||
| 1009 | MODEL_PLACEHOLDER_M9 |
|
||||
| 1010 | MODEL_PLACEHOLDER_M10 |
|
||||
| 1011 | MODEL_PLACEHOLDER_M11 |
|
||||
| 1012 | MODEL_PLACEHOLDER_M12 |
|
||||
| 1013–1050 | MODEL_PLACEHOLDER_M13–M50 |
|
||||
|
||||
### Claude Models
|
||||
|
||||
| Enum `no` | Proto Name |
|
||||
| --------- | -------------------------------- |
|
||||
| 281 | MODEL_CLAUDE_4_SONNET |
|
||||
| 282 | MODEL_CLAUDE_4_SONNET_THINKING |
|
||||
| 290 | MODEL_CLAUDE_4_OPUS |
|
||||
| 291 | MODEL_CLAUDE_4_OPUS_THINKING |
|
||||
| 333 | MODEL_CLAUDE_4_5_SONNET |
|
||||
| 334 | MODEL_CLAUDE_4_5_SONNET_THINKING |
|
||||
| 340 | MODEL_CLAUDE_4_5_HAIKU |
|
||||
| 341 | MODEL_CLAUDE_4_5_HAIKU_THINKING |
|
||||
|
||||
### Google Models
|
||||
|
||||
| Enum `no` | Proto Name |
|
||||
| --------- | ------------------------------------------------ |
|
||||
| 246 | MODEL_GOOGLE_GEMINI_2_5_PRO |
|
||||
| 312 | MODEL_GOOGLE_GEMINI_2_5_FLASH |
|
||||
| 313 | MODEL_GOOGLE_GEMINI_2_5_FLASH_THINKING |
|
||||
| 323 | MODEL_GOOGLE_GEMINI_TRAINING_POLICY |
|
||||
| 326 | MODEL_GOOGLE_GEMINI_INTERNAL_BYOM |
|
||||
| 327 | MODEL_GOOGLE_GEMINI_FOR_GOOGLE_2_5_PRO |
|
||||
| 328 | MODEL_GOOGLE_GEMINI_NEMOSREEF |
|
||||
| 329 | MODEL_GOOGLE_GEMINI_2_5_FLASH_THINKING_TOOLS |
|
||||
| 330 | MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE |
|
||||
| 331 | MODEL_GOOGLE_GEMINI_2_5_PRO_EVAL |
|
||||
| 332 | MODEL_GOOGLE_GEMINI_2_5_FLASH_IMAGE_PREVIEW |
|
||||
| 335 | MODEL_GOOGLE_GEMINI_COMPUTER_USE_EXPERIMENTAL |
|
||||
| 336 | MODEL_GOOGLE_GEMINI_HORIZONDAWN |
|
||||
| 337 | MODEL_GOOGLE_GEMINI_PUREPRISM |
|
||||
| 338 | MODEL_GOOGLE_GEMINI_GENTLEISLAND |
|
||||
| 339 | MODEL_GOOGLE_GEMINI_RAINSONG |
|
||||
| 343 | MODEL_GOOGLE_GEMINI_ORIONFIRE |
|
||||
| 344 | MODEL_GOOGLE_GEMINI_INTERNAL_TAB_FLASH_LITE |
|
||||
| 345 | MODEL_GOOGLE_GEMINI_INTERNAL_TAB_JUMP_FLASH_LITE |
|
||||
| 346 | MODEL_GOOGLE_JARVIS_PROXY |
|
||||
| 347 | MODEL_GOOGLE_GEMINI_COSMICFORGE |
|
||||
| 348 | MODEL_GOOGLE_GEMINI_RIFTRUNNER |
|
||||
| 349 | MODEL_GOOGLE_JARVIS_V4S |
|
||||
| 350 | MODEL_GOOGLE_GEMINI_INFINITYJET |
|
||||
| 351 | MODEL_GOOGLE_GEMINI_INFINITYBLOOM |
|
||||
| 352 | MODEL_GOOGLE_GEMINI_RIFTRUNNER_THINKING_LOW |
|
||||
| 353 | MODEL_GOOGLE_GEMINI_RIFTRUNNER_THINKING_HIGH |
|
||||
|
||||
### OpenAI Models
|
||||
|
||||
| Enum `no` | Proto Name |
|
||||
| --------- | -------------------------------- |
|
||||
| 342 | MODEL_OPENAI_GPT_OSS_120B_MEDIUM |
|
||||
|
||||
### Key Mapping Summary (for proxy constants.rs)
|
||||
|
||||
| Our Name | Placeholder | Proto Enum |
|
||||
| ------------------- | ----------- | ---------- |
|
||||
| Gemini 3 Pro (Low) | M7 | 1007 |
|
||||
| Gemini 3 Pro (High) | M8 | 1008 |
|
||||
| Claude Opus 4.5 | M12 | 1012 |
|
||||
| Gemini 3 Flash | M18 | 1018 |
|
||||
| Claude Opus 4.6 | M26 | 1026 |
|
||||
@@ -240,3 +240,36 @@ sudo update-ca-certificates
|
||||
## Next Steps
|
||||
|
||||
→ See `docs/standalone-ls-todo.md` for standalone LS isolation work
|
||||
→ See `docs/ls-binary-analysis.md` for comprehensive binary reverse engineering
|
||||
|
||||
## New Findings (from binary analysis)
|
||||
|
||||
### Alternative to Polling: `StreamCascadeReactiveUpdates`
|
||||
|
||||
The LS has a streaming gRPC method `StreamCascadeReactiveUpdates` that pushes
|
||||
cascade state changes in real-time via server-sent streaming. The extension uses
|
||||
this instead of polling `GetCascadeTrajectorySteps`.
|
||||
|
||||
**Potential improvement:** If we switch from polling to this streaming RPC, we'd
|
||||
get lower latency and less backend traffic. However, our current polling approach
|
||||
works reliably and doesn't require maintaining a long-lived gRPC stream.
|
||||
|
||||
### Quota Endpoint: `retrieveUserQuota`
|
||||
|
||||
The `PredictionService/RetrieveUserQuota` gRPC method and
|
||||
`v1internal:retrieveUserQuota` REST endpoint provide quota/credit information.
|
||||
This could be used to implement a proper `/v1/quota` endpoint instead of
|
||||
scraping the LS's own quota tracking.
|
||||
|
||||
### `internalAtomicAgenticChat`
|
||||
|
||||
A REST endpoint that appears to handle the entire agentic chat loop atomically
|
||||
(tool calls + responses in one request?). Investigation needed to understand
|
||||
the request/response format.
|
||||
|
||||
### Credits System
|
||||
|
||||
The `google/internal/cloud/code/v1internal/credits` proto package exists with
|
||||
`Credits_CreditType` enum. The `CASCADE_ENFORCE_QUOTA` config key controls
|
||||
whether quotas are enforced. Related methods: `AddExtraFlexCreditsInternal`,
|
||||
`GetTeamCreditEntries`, `GetPlanStatus`.
|
||||
|
||||
@@ -72,3 +72,16 @@ curl -sk "https://127.0.0.1:42200/.../StartCascade" ...
|
||||
- Model IDs: M18=Flash, M8=Pro-High, M7=Pro-Low, M26=Opus4.6, M12=Opus4.5
|
||||
- LS binary: `/usr/share/antigravity/resources/app/extensions/antigravity/bin/language_server_linux_x64`
|
||||
- API endpoint: `daily-cloudcode-pa.googleapis.com/v1internal:streamGenerateContent?alt=sse`
|
||||
|
||||
## New Leads (from binary analysis)
|
||||
|
||||
- **`GetUnleashData`** — LS method to fetch Unleash flags directly. Could compare
|
||||
main vs standalone to check if flags differ.
|
||||
- **`GetStaticExperimentStatus`** / `SetBaseExperiments` / `UpdateDevExperiments` —
|
||||
experiment management. Standalone might be missing experiment overrides.
|
||||
- **`FetchAdminControls`** — admin-level controls that might gate cascade execution.
|
||||
- **`LoadCodeAssist`** — initialization step that might be required before cascades work.
|
||||
- **`GetUserStatus` vs `GetUserMemories`** — check if standalone has auth context
|
||||
by calling both.
|
||||
|
||||
→ See `docs/ls-binary-analysis.md` for full RPC method catalog.
|
||||
|
||||
Reference in New Issue
Block a user