From 932214fd95fe33e9b42fa3dc4413c36d476c5efa Mon Sep 17 00:00:00 2001 From: Nikketryhard Date: Sat, 14 Feb 2026 04:19:48 -0600 Subject: [PATCH] docs: comprehensive LS binary reverse engineering with model enum mapping --- docs/ls-binary-analysis.md | 834 +++++++++++++++++++++++++++++++ docs/mitm-interception-status.md | 33 ++ docs/standalone-ls-todo.md | 13 + 3 files changed, 880 insertions(+) create mode 100644 docs/ls-binary-analysis.md diff --git a/docs/ls-binary-analysis.md b/docs/ls-binary-analysis.md new file mode 100644 index 0000000..2e0a682 --- /dev/null +++ b/docs/ls-binary-analysis.md @@ -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. + +
+Full method list (click to expand) + +``` +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 +``` + +
+ +**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. + +
+Full method list (click to expand) + +``` +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 +``` + +
+ +**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. + +
+Full method list (click to expand) + +``` +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 +``` + +
+ +**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 | diff --git a/docs/mitm-interception-status.md b/docs/mitm-interception-status.md index ce68b07..79b72cc 100644 --- a/docs/mitm-interception-status.md +++ b/docs/mitm-interception-status.md @@ -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`. diff --git a/docs/standalone-ls-todo.md b/docs/standalone-ls-todo.md index a3b55d4..18063d9 100644 --- a/docs/standalone-ls-todo.md +++ b/docs/standalone-ls-todo.md @@ -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.