| name | external-consumers |
| description | Known external consumers of APIs from this monorepo's extensions. Use when changing public API surfaces (activate return types, exported types, services sub-objects), evaluating breaking changes, removing exports, or checking if anything uses a given API member. |
External Consumers
Other repos consume APIs from this monorepo's extensions. Some are private.
- Exported extension APIs = public contracts
- Remove/change field, method, behavior = breaking
- Add field = non-breaking
- Cannot grep this monorepo alone — must check external repos
- Consumers version-gate (
semver.satisfies) — major bump alone insufficient
On-demand validation via gh CLI
gh api -X GET "search/code?q=SYMBOL+repo:forcedotcom/REPO&per_page=20" \
--jq '.items[] | "\(.path)"'
gh api repos/forcedotcom/REPO/contents/PATH --jq '.content' | base64 -d
gh api -X GET "search/code?q=SYMBOL+org:forcedotcom&per_page=30" \
--jq '.items[] | "\(.repository.name): \(.path)"'
gh api -X GET "search/code?q=SYMBOL+org:salesforcecli&per_page=30" \
--jq '.items[] | "\(.repository.name): \(.path)"'
Rate limit ~30 req/min on search API. Use contents API for targeted reads.
Direct core API consumers (SalesforceVSCodeCoreApi)
Via vscode.extensions.getExtension('salesforce.salesforcedx-vscode-core').exports:
| Repo | Visibility | Consumed |
|---|
| einstein-gpt | Private | services.{ChannelService,WorkspaceContext,SalesforceProjectConfig,CommandEventDispatcher}, workspaceContextUtils.getOrgShape |
| vscode-agents | Public | services.{ChannelService,TelemetryService,WorkspaceContext} |
| metadata-visualizer | Private | services.TelemetryService |
| code-analyzer | Public | services.WorkspaceContext (direct), telemetry via service-provider |
@salesforce/vscode-service-provider consumers
Repo (public) — abstraction bridging to core services. Still depends on core being active.
| Repo | Service |
|---|
| code-analyzer | ServiceType.Telemetry |
| einstein-gpt | ServiceType.Telemetry |
extensionDependency-only (no API consumption)
| Repo | Visibility | Notes |
|---|
| ui-preview | Private | Activation ordering only. Uses bundled WorkspaceContextUtil from utils-vscode. |
No current core dependency
| Repo | Notes |
|---|
| slds | No extensionDep, no getExtension. In same extension pack. |
| apex-language-support | Experimental. String refs only in tests/comments. |
In-repo consumers
IMPORTANT: In-repo packages access core API via TWO patterns:
- Wrapper functions in
coreExtensionUtils.ts (easy to grep)
- Direct
.exports.MEMBER() calls scattered across source files (easy to miss)
Always grep for \.exports\.\w+ across the full monorepo, not just coreExtensionUtils.ts.
| Package | Files | Members accessed |
|---|
| apex | coreExtensionUtils.ts, index.ts, languageServer.ts | .WorkspaceContext, .services.TelemetryService, .getAuthFields, .services.SalesforceProjectConfig |
| apex-debugger | coreExtensionUtils.ts, index.ts, debugConfigurationProvider.ts | .channelService, .SfCommandlet, .telemetryService, .SfCommandletExecutor, .isCLIInstalled |
| apex-replay-debugger | index.ts, checkpointService.ts, quickLaunch.ts, debugConfigurationProvider.ts | .services.WorkspaceContext, .getUserId |
| apex-oas | coreExtensionUtils.ts, index.ts, oasUtils.ts, externalServiceRegistrationManager.ts, auraEnabledStrategy.ts | .WorkspaceContext, .services.SalesforceProjectConfig, .services.RegistryAccess, .services.WorkspaceContext |
| utils-vscode | authUtils.ts, workspaceContextUtil.ts, telemetryUtils.ts | .sharedAuthState, .channelService, .getSharedTelemetryUserId (phantom — not on API type) |
Keeping current
Verified 2026-04-29. Before asserting "nobody uses X":
- Grep monorepo for
\.exports\.MEMBER — catches direct access outside wrapper files
- Search
org:forcedotcom and org:salesforcecli via gh api
- Read private repos via contents API
- Check
extensionPack in salesforcedx-vscode and salesforcedx-vscode-expanded for new extensions