diff --git a/src/resources/extensions/remote-questions/config.d.ts b/src/resources/extensions/remote-questions/config.d.ts index 96d2e17ee..aa3c9b16b 100644 --- a/src/resources/extensions/remote-questions/config.d.ts +++ b/src/resources/extensions/remote-questions/config.d.ts @@ -5,4 +5,6 @@ export interface RemoteConfig { } export function resolveRemoteConfig(): RemoteConfig; -export function loadRemoteConfig(path?: string): RemoteConfig; +export function resolveRemotePreferenceConfig(hydrateTokens?: boolean): RemoteConfig; +export function getRemoteConfigStatus(): string; +export function isValidChannelId(channel: string, id: string): boolean; diff --git a/src/resources/extensions/search-the-web/url-utils.d.ts b/src/resources/extensions/search-the-web/url-utils.d.ts index 9e5ed32f8..3f7542a19 100644 --- a/src/resources/extensions/search-the-web/url-utils.d.ts +++ b/src/resources/extensions/search-the-web/url-utils.d.ts @@ -1,3 +1,8 @@ -export function normalizeUrl(url: string): string; -export function isValidUrl(url: string): boolean; +export function setFetchAllowedUrls(hostnames: string[]): void; +export function getFetchAllowedUrls(): string[]; +export function isBlockedUrl(url: string): boolean; +export function normalizeQuery(query: string): string; +export function toDedupeKey(url: string): string; export function extractDomain(url: string): string; +export function detectFreshness(query: string): string | null; +export function detectDomainHints(query: string): string[]; diff --git a/src/resources/extensions/sf/agentic-docs-scaffold.d.ts b/src/resources/extensions/sf/agentic-docs-scaffold.d.ts index a6bc3db81..b188266db 100644 --- a/src/resources/extensions/sf/agentic-docs-scaffold.d.ts +++ b/src/resources/extensions/sf/agentic-docs-scaffold.d.ts @@ -1,7 +1,2 @@ -export interface ScaffoldResult { - success: boolean; - files?: string[]; - error?: string; -} - -export function scaffoldDocs(options?: { basePath?: string }): ScaffoldResult; +export const SCAFFOLD_FILES: string[]; +export function ensureAgenticDocsScaffold(basePath?: string): void; diff --git a/src/resources/extensions/sf/code-intelligence.d.ts b/src/resources/extensions/sf/code-intelligence.d.ts index 9b3e28bf2..ea97f587c 100644 --- a/src/resources/extensions/sf/code-intelligence.d.ts +++ b/src/resources/extensions/sf/code-intelligence.d.ts @@ -1,8 +1,24 @@ -export interface CodeIntelligenceResult { - symbols?: string[]; - dependencies?: string[]; - complexity?: number; -} - -export function analyzeCode(path: string): CodeIntelligenceResult; -export function getSymbolDefinitions(query: string): unknown[]; +export const PROJECT_RAG_MCP_SERVER_NAME: string; +export function detectProjectRag(projectRoot: string, prefs: Record, env?: NodeJS.ProcessEnv): unknown; +export function resolveProjectRagBinary(env?: NodeJS.ProcessEnv): string | null; +export function resolveSiftBinary(env?: NodeJS.ProcessEnv): string | null; +export function detectSift(_projectRoot: string, prefs: Record, env?: NodeJS.ProcessEnv): unknown; +export function ensureSiftIndexWarmup(projectRoot: string, prefs: Record, options?: Record): Promise; +export function resolveProjectRagBuildJobs(env?: NodeJS.ProcessEnv): number; +export function findProjectRagSourceDir(projectRoot: string, env?: NodeJS.ProcessEnv): string | null; +export function resolveProjectRagBinaryForProject(projectRoot: string, env?: NodeJS.ProcessEnv): string | null; +export function buildProjectRagMcpServerConfig(projectRoot?: string, env?: NodeJS.ProcessEnv): Record; +export function buildProjectRagBinary(projectRoot: string, env?: NodeJS.ProcessEnv): boolean; +export function ensureProjectRagMcpConfig(projectRoot: string, env?: NodeJS.ProcessEnv): void; +export function resolveCodebaseIndexerBackendName(prefs: Record): string; +export function resolveEffectiveCodebaseIndexerBackendName(projectRoot: string, prefs: Record, env?: NodeJS.ProcessEnv): string; +export function getCodebaseIndexerBackend(prefsOrName: Record | string): unknown; +export function detectCodebaseIndexer(projectRoot: string, prefs: Record, env?: NodeJS.ProcessEnv): unknown; +export function formatCodebaseIndexerStatus(projectRoot: string, prefs: Record, env?: NodeJS.ProcessEnv): string; +export function buildCodeIntelligenceContextBlock(projectRoot: string, prefs: Record, env?: NodeJS.ProcessEnv): string; +export function formatProjectRagStatus(projectRoot: string, prefs: Record, env?: NodeJS.ProcessEnv): string; +export function formatSiftStatus(projectRoot: string, prefs: Record, env?: NodeJS.ProcessEnv): string; +export const PROJECT_RAG_CODEBASE_INDEXER_BACKEND: Record; +export const SIFT_CODEBASE_INDEXER_BACKEND: Record; +export const NO_CODEBASE_INDEXER_BACKEND: Record; +export const CODEBASE_INDEXER_BACKENDS: Record; diff --git a/src/resources/extensions/sf/doc-checker.d.ts b/src/resources/extensions/sf/doc-checker.d.ts index 4200749e1..ec1a7ab0c 100644 --- a/src/resources/extensions/sf/doc-checker.d.ts +++ b/src/resources/extensions/sf/doc-checker.d.ts @@ -1,7 +1,2 @@ -export interface DocCheckResult { - summary: string; - issues?: string[]; - score?: number; -} - -export function checkDocsScaffold(path: string): DocCheckResult; +export function checkDocsScaffold(repoRoot: string): { summary: string; issues?: string[]; score?: number }; +export function formatDocCheckReport(report: { summary: string; issues?: string[]; score?: number }): string; diff --git a/src/resources/extensions/sf/doctor.d.ts b/src/resources/extensions/sf/doctor.d.ts index 6d32257ea..4194d2c22 100644 --- a/src/resources/extensions/sf/doctor.d.ts +++ b/src/resources/extensions/sf/doctor.d.ts @@ -1,8 +1,2 @@ -export interface DoctorResult { - healthy: boolean; - issues: string[]; - recommendations: string[]; -} - -export function runDoctor(): DoctorResult; -export function checkSystemHealth(): Promise; +export function validateTitle(title: string): boolean; +export function buildStateMarkdown(state: Record): string; diff --git a/src/resources/extensions/sf/gitignore.d.ts b/src/resources/extensions/sf/gitignore.d.ts index f5797e08d..55582388a 100644 --- a/src/resources/extensions/sf/gitignore.d.ts +++ b/src/resources/extensions/sf/gitignore.d.ts @@ -1,2 +1,6 @@ -export function isPathIgnored(path: string, basePath?: string): boolean; -export function loadGitignore(basePath?: string): void; +export function isSfGitignored(basePath?: string): boolean; +export function hasGitTrackedSfFiles(basePath?: string): boolean; +export function ensureGitInfoExclude(basePath?: string): void; +export function ensureGitignore(basePath?: string, options?: Record): void; +export function untrackRuntimeFiles(basePath?: string): void; +export function ensurePreferences(basePath?: string): void; diff --git a/src/resources/extensions/sf/native-git-bridge.d.ts b/src/resources/extensions/sf/native-git-bridge.d.ts index 523ea1484..2477d3cdc 100644 --- a/src/resources/extensions/sf/native-git-bridge.d.ts +++ b/src/resources/extensions/sf/native-git-bridge.d.ts @@ -1,9 +1,52 @@ -export interface GitStatus { - branch: string; - clean: boolean; - modified: string[]; - untracked: string[]; -} - -export function getGitStatus(path?: string): GitStatus; -export function execGit(args: string[], cwd?: string): { stdout: string; stderr: string; code: number }; +export function nativeGetCurrentBranch(basePath: string): string; +export function nativeDetectMainBranch(basePath: string): string; +export function nativeBranchExists(basePath: string, branch: string): boolean; +export function nativeHasMergeConflicts(basePath: string): boolean; +export function nativeWorkingTreeStatus(basePath: string): string; +export function nativeHasChanges(basePath: string): boolean; +export function _resetHasChangesCache(): void; +export function nativeCommitCountBetween(basePath: string, fromRef: string, toRef: string): number; +export function nativeIsRepo(basePath: string): boolean; +export function nativeHasStagedChanges(basePath: string): boolean; +export function nativeDiffStat(basePath: string, fromRef: string, toRef: string): string; +export function nativeDiffNameStatus(basePath: string, fromRef: string, toRef: string, pathspec?: string, useMergeBase?: boolean): string[]; +export function nativeDiffNumstat(basePath: string, fromRef: string, toRef: string): string; +export function nativeDiffContent(basePath: string, fromRef: string, toRef: string, pathspec?: string, exclude?: string[], useMergeBase?: boolean): string; +export function nativeLogOneline(basePath: string, fromRef?: string, toRef?: string): string[]; +export function nativeWorktreeList(basePath: string): string[]; +export function nativeBranchList(basePath: string, pattern?: string): string[]; +export function nativeBranchListMerged(basePath: string, target: string, pattern?: string): string[]; +export function nativeLsFiles(basePath: string, pathspec?: string): string[]; +export function nativeForEachRef(basePath: string, prefix?: string): string[]; +export function nativeConflictFiles(basePath: string): string[]; +export function nativeBatchInfo(basePath: string): Record; +export function nativeInit(basePath: string, initialBranch?: string): void; +export function nativeAddAll(basePath: string): void; +export function nativeAddTracked(basePath: string): void; +export function nativeAddAllWithExclusions(basePath: string, exclusions: string[]): void; +export function nativeAddPaths(basePath: string, paths: string[]): void; +export function nativeResetPaths(basePath: string, paths: string[]): void; +export function nativeCommit(basePath: string, message: string, options?: Record): void; +export function nativeCheckoutBranch(basePath: string, branch: string): void; +export function nativeCheckoutTheirs(basePath: string, paths: string[]): void; +export function nativeMergeSquash(basePath: string, branch: string): void; +export function nativeMergeAbort(basePath: string): void; +export function nativeRebaseAbort(basePath: string): void; +export function nativeResetHard(basePath: string): void; +export function nativeResetSoft(basePath: string, target?: string): void; +export function nativeCommitSubject(basePath: string, ref: string): string; +export function nativeBranchDelete(basePath: string, branch: string, force?: boolean): void; +export function nativeBranchForceReset(basePath: string, branch: string, target: string): void; +export function nativeRmCached(basePath: string, paths: string[], recursive?: boolean): void; +export function nativeRmForce(basePath: string, paths: string[]): void; +export function nativeWorktreeAdd(basePath: string, wtPath: string, branch: string, createBranch?: boolean, startPoint?: string): void; +export function nativeWorktreeRemove(basePath: string, wtPath: string, force?: boolean): void; +export function nativeWorktreePrune(basePath: string): void; +export function nativeRevertCommit(basePath: string, sha: string): void; +export function nativeRevertAbort(basePath: string): void; +export function nativeUpdateRef(basePath: string, refname: string, target: string): void; +export function isNativeGitAvailable(): boolean; +export function nativeIsAncestor(basePath: string, ancestor: string, descendant: string): boolean; +export function nativeLastCommitEpoch(basePath: string, ref?: string): number; +export function nativeUnpushedCount(basePath: string, branch: string): number; +export function getCommitsBehindMain(worktreePath: string, mainRef: string): number; diff --git a/src/resources/extensions/sf/paths.d.ts b/src/resources/extensions/sf/paths.d.ts index dcd55aa94..60679822a 100644 --- a/src/resources/extensions/sf/paths.d.ts +++ b/src/resources/extensions/sf/paths.d.ts @@ -1,2 +1,30 @@ -export function resolvePath(path: string): string; -export function getProjectRoot(): string; +export function clearPathCache(): void; +export function buildMilestoneFileName(milestoneId: string, suffix: string): string; +export function buildSliceFileName(sliceId: string, suffix: string): string; +export function buildTaskFileName(taskId: string, suffix: string): string; +export function resolveDir(parentDir: string, idPrefix: string): string; +export function resolveFile(dir: string, idPrefix: string, suffix: string): string; +export function resolveTaskFiles(tasksDir: string, suffix: string): string[]; +export function resolveTaskJsonFiles(tasksDir: string, suffix: string): string[]; +export const SF_ROOT_FILES: Record; +export function _clearSfRootCache(): void; +export function sfRoot(basePath?: string): string; +export const projectRoot: typeof sfRoot; +export function isRunningOnSelf(basePath?: string): boolean; +export function _resetSelfDetectionCache(): void; +export function sfRuntimeRoot(basePath?: string): string; +export function milestonesDir(basePath?: string): string; +export function resolveRuntimeFile(basePath?: string): string; +export function resolveSfRootFile(basePath: string, key: string): string; +export function relSfRootFile(key: string): string; +export function resolveMilestonePath(basePath: string, milestoneId: string): string; +export function resolveMilestoneFile(basePath: string, milestoneId: string, suffix: string): string; +export function resolveSlicePath(basePath: string, milestoneId: string, sliceId: string): string; +export function resolveSliceFile(basePath: string, milestoneId: string, sliceId: string, suffix: string): string; +export function resolveTasksDir(basePath: string, milestoneId: string, sliceId: string): string; +export function resolveTaskFile(basePath: string, milestoneId: string, sliceId: string, taskId: string, suffix: string): string; +export function relMilestonePath(basePath: string, milestoneId: string): string; +export function relMilestoneFile(basePath: string, milestoneId: string, suffix: string): string; +export function relSlicePath(basePath: string, milestoneId: string, sliceId: string): string; +export function relSliceFile(basePath: string, milestoneId: string, sliceId: string, suffix: string): string; +export function relTaskFile(basePath: string, milestoneId: string, sliceId: string, taskId: string, suffix: string): string; diff --git a/src/resources/extensions/sf/preferences-models.d.ts b/src/resources/extensions/sf/preferences-models.d.ts index 67a8c23d4..65f63658b 100644 --- a/src/resources/extensions/sf/preferences-models.d.ts +++ b/src/resources/extensions/sf/preferences-models.d.ts @@ -1,8 +1,20 @@ -export interface ModelConfig { - provider: string; - model: string; - [key: string]: unknown; -} - -export function isProviderModelAllowed(provider: string, model: string): boolean; -export function getDefaultModel(): ModelConfig; +export function filterModelsByProviderModelAllow(models: unknown[], providerModelAllow: unknown, providerModelBlock: unknown): unknown[]; +export function isProviderAllowedByLists(provider: string, allowedProviders: string[], blockedProviders: string[]): boolean; +export function isProviderAllowedForAdvisor(providerKey: string, prefs: Record): boolean; +export function resolveModelForUnit(unitType: string): string; +export function resolveModelWithFallbacksForUnit(unitType: string, options?: Record): string; +export function resolveDefaultSessionModel(sessionProvider: string): string; +export function isCustomProvider(provider: string): boolean; +export function getNextFallbackModel(currentModelId: string, modelConfig: Record): string | null; +export function isTransientNetworkError(errorMsg: string): boolean; +export function validateModelId(modelId: string): boolean; +export function updatePreferencesModels(models: unknown[]): void; +export function updateSubscriptionTokensUsed(provider: string, tokensConsumed: number): void; +export function resolveDynamicRoutingConfig(): Record; +export function resolvePersistModelChanges(): boolean; +export function resolveAutoSupervisorConfig(): Record; +export function resolveProfileDefaults(profile: string): Record; +export function resolveEffectiveProfile(): string; +export function resolveInlineLevel(): string; +export function resolveContextSelection(): string; +export function resolveSearchProviderFromPreferences(): string; diff --git a/src/resources/extensions/sf/preferences.d.ts b/src/resources/extensions/sf/preferences.d.ts index 39b85a21c..bb18e6e03 100644 --- a/src/resources/extensions/sf/preferences.d.ts +++ b/src/resources/extensions/sf/preferences.d.ts @@ -1,13 +1,16 @@ -export interface Preferences { - preferences?: { - experimental?: { - rtk?: boolean; - [key: string]: unknown; - }; - [key: string]: unknown; - }; - [key: string]: unknown; -} - -export function loadPreferences(): Preferences; -export function getPreferences(): Preferences; +export function resolveSkillDiscoveryMode(): string; +export function resolveSkillStalenessDays(): number; +export function getGlobalSFPreferencesPath(): string; +export function getLegacyGlobalSFPreferencesPath(): string; +export function getProjectSFPreferencesPath(): string; +export function loadGlobalSFPreferences(): Record; +export function loadProjectSFPreferences(): Record; +export function loadEffectiveSFPreferences(): Record; +export function _resetParseWarningFlag(): void; +export function parsePreferencesMarkdown(content: string): Record; +export function applyModeDefaults(mode: string, prefs: Record): Record; +export function renderPreferencesForSystemPrompt(preferences: Record, resolutions: Record): string; +export function resolvePostUnitHooks(): string[]; +export function resolvePreDispatchHooks(): string[]; +export function getIsolationMode(): string; +export function resolveParallelConfig(prefs: Record): Record; diff --git a/src/resources/extensions/sf/repo-identity.d.ts b/src/resources/extensions/sf/repo-identity.d.ts index aae8a4d88..6f92cd246 100644 --- a/src/resources/extensions/sf/repo-identity.d.ts +++ b/src/resources/extensions/sf/repo-identity.d.ts @@ -1,9 +1,10 @@ -export interface RepoIdentity { - name: string; - url?: string; - branch: string; - commit: string; -} - -export function getRepoIdentity(path?: string): RepoIdentity; -export function getRepoName(): string; +export function readRepoMeta(externalPath: string): Record; +export function isInheritedRepo(basePath?: string): boolean; +export function validateProjectId(id: string): boolean; +export function repoIdentity(basePath?: string): Record; +export function externalSfRoot(basePath?: string): string | null; +export function externalProjectsRoot(): string; +export function cleanNumberedSfVariants(projectPath: string): string; +export function hasExternalProjectState(externalPath: string): boolean; +export function ensureSfSymlink(projectPath: string): void; +export function isInsideWorktree(cwd: string): boolean; diff --git a/src/resources/extensions/sf/trace-collector.d.ts b/src/resources/extensions/sf/trace-collector.d.ts index b053fa4dd..832bd8be6 100644 --- a/src/resources/extensions/sf/trace-collector.d.ts +++ b/src/resources/extensions/sf/trace-collector.d.ts @@ -15,5 +15,15 @@ export interface Trace { attributes: Record; } -export function initTraceCollector(): { getActiveTrace(): Trace | null } | null; -export function getTraceCollector(): { getActiveTrace(): Trace | null } | null; +export function isTraceEnabled(): boolean; +export function initTraceCollector(projectRoot: string, sessionId: string, command: string, model: string): unknown; +export function flushTrace(projectRoot: string): void; +export function getActiveTrace(): Trace | null; +export function startUnitSpan(unitType: string, unitId: string, attributes?: Record): Span; +export function startToolSpan(parentSpan: Span, toolName: string, toolCallId: string, attributes?: Record): Span; +export function completeSpan(span: Span, status?: string): void; +export function traceEvent(span: Span, name: string, attrs: Record): void; +export function traceError(span: Span, message: string, stack?: string): void; +export function findTraceSpan(id: string): Span | null; +export function setTraceCost(inputTokens: number, outputTokens: number, cacheReadTokens: number, cacheWriteTokens: number, costUsd: number): void; +export function setTraceExitCode(code: number): void; diff --git a/src/resources/extensions/sf/types.d.ts b/src/resources/extensions/sf/types.d.ts index 68c687fb3..df19354b7 100644 --- a/src/resources/extensions/sf/types.d.ts +++ b/src/resources/extensions/sf/types.d.ts @@ -1,30 +1,5 @@ -export interface Milestone { - id: string; - title: string; - status: string; - phase?: string; - nextAction?: string; -} - -export interface Slice { - id: string; - milestoneId: string; - title: string; - status: string; -} - -export interface Task { - id: string; - sliceId: string; - milestoneId: string; - title: string; - status: string; -} - -export type UnitType = "milestone" | "slice" | "task"; - -export interface Unit { - id: string; - type: UnitType; - status: string; +export interface SFState { + milestones: unknown[]; + slices: unknown[]; + tasks: unknown[]; }