sidekick-shared 0.24.5 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +159 -52
  3. package/dist/accountChangeSignal.d.ts +3 -0
  4. package/dist/accountChangeSignal.js +19 -0
  5. package/dist/accountChanges.d.ts +21 -0
  6. package/dist/accountChanges.js +151 -0
  7. package/dist/accountRegistry.d.ts +3 -1
  8. package/dist/accountRegistry.js +5 -0
  9. package/dist/browser.d.ts +8 -3
  10. package/dist/browser.js +15 -1
  11. package/dist/codexQuotaWatcher.d.ts +6 -0
  12. package/dist/codexQuotaWatcher.js +101 -47
  13. package/dist/index.d.ts +23 -13
  14. package/dist/index.js +34 -10
  15. package/dist/modelAliases.d.ts +13 -0
  16. package/dist/modelAliases.js +58 -0
  17. package/dist/modelCatalog.d.ts +32 -0
  18. package/dist/modelCatalog.js +145 -0
  19. package/dist/modelContext.d.ts +36 -3
  20. package/dist/modelContext.js +109 -34
  21. package/dist/modelInfo.d.ts +30 -1
  22. package/dist/modelInfo.js +116 -26
  23. package/dist/multiProviderQuotaService.d.ts +8 -0
  24. package/dist/multiProviderQuotaService.js +64 -3
  25. package/dist/node.d.ts +4 -4
  26. package/dist/node.js +4 -1
  27. package/dist/observedSessionCollector.d.ts +75 -4
  28. package/dist/observedSessionCollector.js +452 -42
  29. package/dist/parsers/codexHistory.d.ts +4 -2
  30. package/dist/parsers/codexHistory.js +9 -2
  31. package/dist/parsers/sessionActivityDetector.d.ts +6 -0
  32. package/dist/parsers/sessionActivityDetector.js +17 -0
  33. package/dist/providerIds.d.ts +11 -0
  34. package/dist/providerIds.js +9 -0
  35. package/dist/providerQuota.d.ts +3 -1
  36. package/dist/providerQuota.js +3 -0
  37. package/dist/providers/claudeCode.d.ts +10 -1
  38. package/dist/providers/claudeCode.js +204 -39
  39. package/dist/providers/codex.d.ts +18 -1
  40. package/dist/providers/codex.js +269 -40
  41. package/dist/providers/codexDatabase.d.ts +9 -0
  42. package/dist/providers/codexDatabase.js +107 -2
  43. package/dist/providers/diagnostics.d.ts +13 -0
  44. package/dist/providers/diagnostics.js +88 -0
  45. package/dist/providers/factory.d.ts +14 -0
  46. package/dist/providers/factory.js +57 -0
  47. package/dist/providers/openCode.d.ts +20 -1
  48. package/dist/providers/openCode.js +361 -11
  49. package/dist/providers/openCodeDatabase.d.ts +10 -0
  50. package/dist/providers/openCodeDatabase.js +69 -0
  51. package/dist/providers/types.d.ts +52 -2
  52. package/dist/providers/types.js +4 -0
  53. package/dist/quota.d.ts +4 -1
  54. package/dist/quota.js +3 -7
  55. package/dist/quotaHistory.d.ts +2 -1
  56. package/dist/quotaPoller.d.ts +13 -1
  57. package/dist/quotaPoller.js +65 -3
  58. package/dist/schemas/accountManager.d.ts +2 -2
  59. package/dist/schemas/accountManager.js +2 -4
  60. package/dist/schemas/accountStatus.d.ts +3 -0
  61. package/dist/schemas/accountStatus.js +1 -0
  62. package/dist/schemas/index.d.ts +1 -0
  63. package/dist/schemas/index.js +7 -2
  64. package/dist/schemas/observedSessionV1.d.ts +27 -26
  65. package/dist/schemas/observedSessionV1.js +6 -4
  66. package/dist/schemas/quota.d.ts +2 -2
  67. package/dist/schemas/quota.js +3 -6
  68. package/dist/schemas/quotaHistory.d.ts +2 -2
  69. package/dist/schemas/tokenEstimation.d.ts +1 -1
  70. package/dist/sessionMonitor.d.ts +15 -0
  71. package/dist/sessionMonitor.js +142 -0
  72. package/dist/sessionPreviews.d.ts +26 -1
  73. package/dist/sessionPreviews.js +319 -4
  74. package/dist/types/observedSessionV1.d.ts +6 -2
  75. package/dist/types/observedSessionV1.js +14 -8
  76. package/package.json +22 -1
package/dist/index.d.ts CHANGED
@@ -9,8 +9,8 @@ export { projectSessionTranscript } from './transcript';
9
9
  export type { TranscriptFidelity, TranscriptSourceProvenance, CanonicalTranscriptBlock, CanonicalTranscriptMessage, CanonicalToolCall, CanonicalTranscriptUsageTotals, CanonicalSessionTranscript, ProjectSessionTranscriptOptions, } from './transcript';
10
10
  export { listRecentSessions, readSessionTranscript } from './sessionTranscripts';
11
11
  export type { ProviderSessionIndex, ListRecentSessionsOptions } from './sessionTranscripts';
12
- export { ObservedSessionCollector, observedSessionSourceFromProvider, fileFingerprint, } from './observedSessionCollector';
13
- export type { ObservedSessionReference, ObservedSessionCollectionSource, ProviderObservedSessionCollectionSource, ObservedSessionDiagnosticKind, ObservedSessionDiagnostic, ObservedSessionCollection, ObservedSessionCollectorOptions, } from './observedSessionCollector';
12
+ export { ObservedSessionCollector, observedSessionSourceFromProvider, fileFingerprint, fileFingerprintParts, } from './observedSessionCollector';
13
+ export type { KnownObservedSessionFingerprint, ObservedSessionChange, ObservedSessionChangeBatch, ObservedSessionChangeType, ObservedSessionReference, ObservedSessionFingerprintParts, ObservedSessionSourceSubscribeOptions, ObservedSessionSubscribeOptions, ObservedSessionCollectionSource, ProviderObservedSessionCollectionSource, ObservedSessionDiagnosticKind, ObservedSessionDiagnosticPhase, ObservedSessionDiagnosticSeverity, ObservedSessionDiagnostic, ObservedSessionCollection, ObservedSessionCollectorOptions, } from './observedSessionCollector';
14
14
  export type { SessionEvent, ClaudeSessionEvent, MessageUsage, SessionMessage, SessionEventBase, MessageSessionEvent, UserSessionEvent, AssistantSessionEvent, SummarySessionEvent, SystemSessionEvent, ToolUseSessionEvent, ToolResultSessionEvent, TokenUsage, ToolCall, ToolAnalytics, TimelineEvent, PendingToolCall, TaskStatus as SessionTaskStatus, TrackedTask, TaskState, SubagentStats, PendingUserRequest, ResponseLatency, LatencyStats, PlanStep, PlanState, SessionStats, CompactionEvent, TruncationEvent, ContextAttribution, TurnAttribution, ContextSizePoint, PermissionMode, PermissionModeChange, } from './types/sessionEvent';
15
15
  export type { OpenCodeSession, OpenCodeMessage, OpenCodePart, OpenCodeTextPart, OpenCodeReasoningPart, OpenCodeToolInvocationPart, OpenCodeCompactionPart, OpenCodeDbToolPart, OpenCodeStepStartPart, OpenCodeStepFinishPart, OpenCodePatchPart, OpenCodeSubtaskPart, OpenCodeAgentPart, OpenCodeFilePart, OpenCodeRetryPart, OpenCodeSnapshotPart, OpenCodeProject, DbProject as OpenCodeDbProject, DbSession as OpenCodeDbSession, DbMessage as OpenCodeDbMessage, DbPart as OpenCodeDbPart, } from './types/opencode';
16
16
  export type { CodexRolloutLine, CodexSessionMeta, CodexResponseItem, CodexMessageItem, CodexContentPart, CodexReasoningItem, CodexFunctionCallItem, CodexFunctionCallOutputItem, CodexLocalShellCallItem, CodexWebSearchCallItem, CodexCustomToolCallItem, CodexCustomToolCallOutputItem, CodexCompacted, CodexTurnContext, CodexEventMsg, CodexEvent, CodexTurnStartedEvent, CodexTurnCompleteEvent, CodexTaskStartedEvent, CodexTaskCompleteEvent, CodexTurnAbortedEvent, CodexTokenCountEvent, CodexTokenUsage, CodexRateLimits, CodexAgentMessageEvent, CodexAgentReasoningEvent, CodexUserMessageEvent, CodexExecCommandBeginEvent, CodexExecCommandEndEvent, CodexMcpToolCallBeginEvent, CodexMcpToolCallEndEvent, CodexErrorEvent, CodexContextCompactedEvent, CodexPatchAppliedEvent, CodexBackgroundEvent, CodexGenericEvent, CodexDbThread, CodexReasoningSummary, } from './types/codex';
@@ -44,9 +44,12 @@ export { addDecision, decisionFingerprint } from './writers/decisions';
44
44
  export { addNote } from './writers/notes';
45
45
  export { renderHandoffUrlTemplate } from './handoffUrl';
46
46
  export type { HandoffUrlIdentifiers } from './handoffUrl';
47
- export type { ProviderId, SessionProvider, SessionProviderBase, SessionFileStats, SessionFileInfo, SearchHit, ProjectFolderInfo, SessionReader, ProviderRuntimeStatus, } from './providers/types';
47
+ export type { ProviderId, SessionProvider, SessionProviderBase, SessionFileStats, SessionFileInfo, SearchHit, ProjectFolderInfo, SessionReader, SessionProviderOptions, ProviderOperationStatus, SessionProviderDiagnostic, SessionProviderDiagnosticKind, SessionProviderDiagnosticPhase, SessionProviderDiagnosticSeverity, ProviderRuntimeStatus, } from './providers/types';
48
+ export { SESSION_PROVIDER_IDS } from './providers/types';
49
+ export { createSessionProviders } from './providers/factory';
50
+ export type { CreateSessionProvidersOptions, CreateSessionProvidersResult, } from './providers/factory';
48
51
  export { createProviderSessionAdapterV1, derivePendingUserRequestV1, } from './types/observedSessionV1';
49
- export type { ObservationProvenanceV1, ObservedAgentSessionV1, ObservedValueV1, PendingUserRequestV1, ProviderCapabilitiesV1, ProviderSessionAdapterV1, SessionEvidenceRefV1, } from './types/observedSessionV1';
52
+ export type { ObservationProvenanceV1, ObservedAgentSessionV1, ObservedValueV1, PendingUserRequestV1, ProviderCapabilitiesV1, ProviderSessionAdapterV1, ProviderSessionAdapterV1Options, SessionEvidenceRefV1, } from './types/observedSessionV1';
50
53
  export { detectProvider, getAllDetectedProviders } from './providers/detect';
51
54
  export { ClaudeCodeProvider } from './providers/claudeCode';
52
55
  export { OpenCodeProvider, getOpenCodeDataDir } from './providers/openCode';
@@ -57,7 +60,7 @@ export type { RawSessionEvent, JsonlParserCallbacks, JsonlParserOptions } from '
57
60
  export { normalizeToolName, normalizeToolInput, detectPlanModeFromText, convertOpenCodeMessage, parseDbMessageData, parseDbPartData, } from './parsers/openCodeParser';
58
61
  export { CodexRolloutParser, extractPatchFilePaths, normalizeCodexToolName, normalizeCodexToolInput, } from './parsers/codexParser';
59
62
  export { scanSubagentDir, extractTaskInfo } from './parsers/subagentScanner';
60
- export { detectSessionActivity } from './parsers/sessionActivityDetector';
63
+ export { detectSessionActivity, refreshSessionActivityState, } from './parsers/sessionActivityDetector';
61
64
  export type { SessionActivityState, SessionActivityResult, } from './parsers/sessionActivityDetector';
62
65
  export { encodeWorkspacePath as encodeClaudeWorkspacePath, getSessionDirectory as getClaudeSessionDirectory, discoverSessionDirectory, findActiveSession as findActiveClaudeSession, findAllSessions as findAllClaudeSessions, findSessionsInDirectory, findSubdirectorySessionDirs, getMostRecentlyActiveSessionDir, decodeEncodedPath, getAllProjectFolders as getAllClaudeProjectFolders, resolveWorktreeMainRepo, discoverWorktreeSiblings, findAllSessionsWithWorktrees, } from './parsers/sessionPathResolver';
63
66
  export { scanSubagentTraces } from './parsers/subagentTraceParser';
@@ -66,8 +69,8 @@ export { parseMcpToolName } from './parsers/mcpToolName';
66
69
  export type { McpToolNameParts } from './parsers/mcpToolName';
67
70
  export { readCodexHistory } from './parsers/codexHistory';
68
71
  export type { CodexHistoryEntry, ReadCodexHistoryOptions } from './parsers/codexHistory';
69
- export { listSessionPreviews, readSessionPreview } from './sessionPreviews';
70
- export type { ListSessionPreviewsOptions, ReadSessionPreviewOptions, SessionPreview, } from './sessionPreviews';
72
+ export { listSessionPreviews, listSessionPreviewsAsync, readSessionPreview, readSessionPreviewAsync, } from './sessionPreviews';
73
+ export type { AsyncSessionPreviewOptions, ListSessionPreviewsAsyncOptions, ListSessionPreviewsOptions, ReadSessionPreviewAsyncOptions, ReadSessionPreviewOptions, SessionPreview, SessionPreviewListResult, SessionPreviewReadResult, } from './sessionPreviews';
71
74
  export { parseDebugLog, filterByLevel, collapseDuplicates, discoverDebugLogs, } from './parsers/debugLogParser';
72
75
  export type { DebugLogEntry, DebugLogFile, DebugLogLevel } from './parsers/debugLogParser';
73
76
  export { OpenCodeDatabase } from './providers/openCodeDatabase';
@@ -105,7 +108,7 @@ export { ALL_PHRASES, PHRASE_CATEGORIES, getRandomPhrase } from './phrases';
105
108
  export type { PhraseCategory } from './phrases';
106
109
  export { EventAggregator, parseTodoDependencies } from './aggregation/EventAggregator';
107
110
  export { SessionMonitor } from './sessionMonitor';
108
- export type { SessionMonitorOptions } from './sessionMonitor';
111
+ export type { SessionMonitorOptions, SessionMonitorSubscribeOptions } from './sessionMonitor';
109
112
  export type { SerializedAggregatorState } from './aggregation/EventAggregator';
110
113
  export { saveSnapshot, loadSnapshot, deleteSnapshot, isSnapshotValid, getSnapshotPath, } from './aggregation/snapshot';
111
114
  export type { SessionSnapshot } from './aggregation/snapshot';
@@ -137,8 +140,11 @@ export { beginAccountLogin, getAccountLoginStatus, getAccountLoginStatusAsync, f
137
140
  export type { AccountLoginCommand, AccountLoginState, AccountLoginStatus, BeginAccountLoginResult, FinalizeAccountLoginOptions, ListAllAccountsResult, SpawnAccountLoginOptions, } from './accountManager';
138
141
  export { getAccountsDir, readSavedAccountRegistry, writeSavedAccountRegistry, listSavedAccountProfiles, getActiveSavedAccount, upsertSavedAccountProfile, setActiveSavedAccount, replaceSavedAccountProfiles, removeSavedAccountProfile, } from './accountRegistry';
139
142
  export type { AccountProviderId, AccountIdentityMetadata, ResolvedActiveAccount, SavedAccountProfile, SavedAccountRegistry, } from './accountRegistry';
143
+ export { ACCOUNT_PROVIDER_IDS } from './accountRegistry';
140
144
  export { getActiveAccountStatus } from './accountStatus';
141
145
  export type { ActiveAccountStatus, ActiveProviderAccountStatus } from './accountStatus';
146
+ export { onAccountsChanged } from './accountChanges';
147
+ export type { AccountsChangedEvent, OnAccountsChangedOptions } from './accountChanges';
142
148
  export { getClaudeProfilesDir, getClaudeProfileHome, claudeKeychainSuffix, claudeKeychainService, isClaudeProfileAuthenticated, readClaudeProfileIdentity, } from './claudeProfiles';
143
149
  export type { ClaudeProfileIdentity } from './claudeProfiles';
144
150
  export { getCodexProfilesDir, getCodexProfileHome, getCodexMonitoringHomes, getSystemCodexHome, listCodexAccounts, getActiveCodexAccount, resolveActiveCodexAccount, resolveSidekickCodexHome, getCodexExecutionEnv, prepareCodexAccount, prepareCodexAccountAsync, finalizeCodexAccount, finalizeCodexAccountAsync, switchToCodexAccount, switchToCodexAccountAsync, removeCodexAccount, } from './codexProfiles';
@@ -146,8 +152,8 @@ export type { CodexAccountManagerResult } from './codexProfiles';
146
152
  export { setTerminalActiveProfile, installShellHook, uninstallShellHook, isShellHookInstalled, writeLauncher, removeLauncher, } from './terminalSync';
147
153
  export { DEFAULT_AUTO_SWITCH_CONFIG, decideAutoSwitch, AutoSwitchController } from './autoSwitch';
148
154
  export type { AutoSwitchActiveAccount, AutoSwitchCandidate, AutoSwitchConfig, AutoSwitchControllerOptions, AutoSwitchDecision, AutoSwitchTransitionEvent, } from './autoSwitch';
149
- export { FIVE_HOUR_WINDOW_MS, SEVEN_DAY_WINDOW_MS, fetchQuota, projectQuotaWindow, withQuotaProjections, } from './quota';
150
- export type { CodexResetCredit, CodexResetCreditsSnapshot, QuotaProjectionInput, QuotaWindow, QuotaState, } from './quota';
155
+ export { FIVE_HOUR_WINDOW_MS, QUOTA_PROVIDER_IDS, SEVEN_DAY_WINDOW_MS, fetchQuota, projectQuotaWindow, withQuotaProjections, } from './quota';
156
+ export type { CodexResetCredit, CodexResetCreditsSnapshot, QuotaProjectionInput, QuotaProviderId, QuotaWindow, QuotaState, } from './quota';
151
157
  export { describeQuotaFailure } from './quotaPresentation';
152
158
  export type { QuotaFailureDescriptor } from './quotaPresentation';
153
159
  export { QuotaPoller } from './quotaPoller';
@@ -163,14 +169,18 @@ export { fetchZaiQuotaFromApi, quotaStateFromZaiQuotaLimitPayload, readZaiCreden
163
169
  export type { ReadZaiCredentialsOptions, ZaiCredentialSource, ZaiCredentials, ZaiPlatform, ZaiQuotaApiOptions, ZaiQuotaResolveOptions, } from './zaiQuotaApi';
164
170
  export { MultiProviderQuotaService } from './multiProviderQuotaService';
165
171
  export type { MultiProviderQuotaServiceOptions } from './multiProviderQuotaService';
172
+ export { RUNTIME_QUOTA_PROVIDER_IDS } from './providerQuota';
166
173
  export type { ProviderQuotaMap, ProviderQuotaState, RuntimeQuotaProvider } from './providerQuota';
167
174
  export type { QuotaSnapshotProviderId } from './quotaSnapshots';
168
175
  export { BurnRateCalculator, estimateTimeToQuota } from './statusline/BurnRateCalculator';
169
176
  export { formatStatusline, selectStatuslineAccount } from './statusline/formatter';
170
177
  export type { StatuslineInput, StatuslineSelection } from './statusline/formatter';
171
- export { getModelContextWindowSize, DEFAULT_CONTEXT_WINDOW } from './modelContext';
172
- export { parseModelId, getModelPricing, getModelInfo, calculateCost, calculateCostWithPricing, calculateCostWithProvenance, mergeCostSources, shortModelName, getModelDisplayInfo, compareModelIds, sortModelIds, formatCost, } from './modelInfo';
173
- export type { ModelPricing, CostTokenUsage, CostSource, CostProvenanceInput, CostWithProvenance, ModelInfo, ModelProvider, ParsedModelId, ModelDisplayInfo, } from './modelInfo';
178
+ export { getModelContextWindowSize, resolveModelContextWindow, DEFAULT_CONTEXT_WINDOW, } from './modelContext';
179
+ export type { ModelCatalogMatch, ModelContextWindowProvenance, ModelContextWindowSource, ResolvedModelContextWindow, } from './modelContext';
180
+ export { parseModelId, getModelPricing, resolveModelPricing, getModelInfo, calculateCost, calculateCostWithPricing, calculateCostWithProvenance, mergeCostSources, shortModelName, getModelDisplayInfo, compareModelIds, sortModelIds, formatCost, MODEL_PROVIDER_IDS, } from './modelInfo';
181
+ export type { ModelPricing, CostTokenUsage, CostSource, CostProvenanceInput, CostWithProvenance, ModelInfo, ModelProvider, ParsedModelId, ModelDisplayInfo, ModelPricingMatch, ModelPricingProvenance, ModelPricingSource, ResolvedModelPricing, } from './modelInfo';
182
+ export { exportResolvedModelCatalog, importResolvedModelCatalog, registerModelAlias, resolveModelAlias, RESOLVED_MODEL_CATALOG_SCHEMA_VERSION, } from './modelCatalog';
183
+ export type { ImportResolvedModelCatalogResult, ResolvedModelCatalogEntry, ResolvedModelCatalogSnapshot, } from './modelCatalog';
174
184
  export { hydratePricingCatalog, normalizeLiteLlmCatalog, normalizeLiteLlmContextWindows, LITELLM_CATALOG_URL, } from './pricingCatalog';
175
185
  export type { HydrateOptions, HydrateResult } from './pricingCatalog';
176
186
  export { loadObservedContextWindows, recordObservedContextWindow, getObservedContextWindowPath, } from './observedContextWindows';
package/dist/index.js CHANGED
@@ -3,14 +3,14 @@
3
3
  * Public API for sidekick-shared.
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.updateJsonStoreAtomic = exports.atomicWriteFileSync = exports.atomicWriteJsonSync = exports.atomicWriteJson = exports.readClaudeCodePlanFiles = exports.getPlanAnalytics = exports.writePlans = exports.getLatestPlan = exports.readPlans = exports.readLatestHandoff = exports.readHistory = exports.readNotes = exports.readDecisions = exports.readTasks = exports.migrateLegacyProjectStores = exports.resolveProjectIdentity = exports.getProjectSlugRaw = exports.getProjectSlug = exports.encodeWorkspacePath = exports.getGlobalDataPath = exports.getProjectDataPath = exports.setConfigDir = exports.getDefaultConfigDir = exports.getConfigDirOverride = exports.getConfigDir = exports.CONFIG_DIR_ENV_VAR = exports.MAX_PLANS_PER_PROJECT = exports.PLAN_SCHEMA_VERSION = exports.createEmptyDataStore = exports.createEmptyTokenTotals = exports.HISTORICAL_SESSION_RETENTION_LIMIT = exports.HISTORICAL_DATA_SCHEMA_VERSION = exports.STALENESS_THRESHOLDS = exports.IMPORTANCE_DECAY_FACTORS = exports.KNOWLEDGE_NOTE_SCHEMA_VERSION = exports.DECISION_LOG_SCHEMA_VERSION = exports.normalizeTaskStatus = exports.TASK_PERSISTENCE_SCHEMA_VERSION = exports.isAggregateCodexLimit = exports.fileFingerprint = exports.observedSessionSourceFromProvider = exports.ObservedSessionCollector = exports.readSessionTranscript = exports.listRecentSessions = exports.projectSessionTranscript = exports.estimateSerializedTokens = exports.estimateTextTokens = exports.calculateNormalizedUsageCost = exports.extractNormalizedUsage = exports.normalizeProviderUsage = void 0;
7
- exports.readSessionPreview = exports.listSessionPreviews = exports.readCodexHistory = exports.parseMcpToolName = exports.scanSubagentTraces = exports.findAllSessionsWithWorktrees = exports.discoverWorktreeSiblings = exports.resolveWorktreeMainRepo = exports.getAllClaudeProjectFolders = exports.decodeEncodedPath = exports.getMostRecentlyActiveSessionDir = exports.findSubdirectorySessionDirs = exports.findSessionsInDirectory = exports.findAllClaudeSessions = exports.findActiveClaudeSession = exports.discoverSessionDirectory = exports.getClaudeSessionDirectory = exports.encodeClaudeWorkspacePath = exports.detectSessionActivity = exports.extractTaskInfo = exports.scanSubagentDir = exports.normalizeCodexToolInput = exports.normalizeCodexToolName = exports.extractPatchFilePaths = exports.CodexRolloutParser = exports.parseDbPartData = exports.parseDbMessageData = exports.convertOpenCodeMessage = exports.detectPlanModeFromText = exports.normalizeToolInput = exports.normalizeToolName = exports.TRUNCATION_PATTERNS = exports.JsonlParser = exports.findCodexRolloutFile = exports.CodexProvider = exports.getOpenCodeDataDir = exports.OpenCodeProvider = exports.ClaudeCodeProvider = exports.getAllDetectedProviders = exports.detectProvider = exports.derivePendingUserRequestV1 = exports.createProviderSessionAdapterV1 = exports.renderHandoffUrlTemplate = exports.addNote = exports.decisionFingerprint = exports.addDecision = exports.completeTask = exports.addTask = exports.withFileLockSync = exports.updateJsonStoreAtomicSync = void 0;
8
- exports.deleteSnapshot = exports.loadSnapshot = exports.saveSnapshot = exports.SessionMonitor = exports.parseTodoDependencies = exports.EventAggregator = exports.getRandomPhrase = exports.PHRASE_CATEGORIES = exports.ALL_PHRASES = exports.HIGHLIGHT_CSS = exports.clearHighlightCache = exports.highlightEvent = exports.formatSessionJson = exports.formatSessionMarkdown = exports.formatSessionText = exports.classifyNoise = exports.shouldMergeWithPrevious = exports.classifyFollowEvent = exports.classifyMessage = exports.getSoftNoiseReason = exports.isHardNoiseFollowEvent = exports.isHardNoise = exports.formatToolSummary = exports.formatTokenCount = exports.formatDurationMs = exports.createJsonlTail = exports.toFollowEvents = exports.createWatcher = exports.parseChangelog = exports.extractProposedPlanShared = exports.parsePlanMarkdownShared = exports.PlanExtractor = exports.segmentAssistantTurn = exports.reasoningSummary = exports.isAssistantTurnSubagentTool = exports.extractTurnSubagents = exports.assistantTurnEventsFromSessionEvents = exports.readSessionContextSnapshot = exports.createSessionContextProjector = exports.calculateSessionContextPressure = exports.buildSessionContextSnapshot = exports.composeContext = exports.FilterEngine = exports.searchSessions = exports.CodexDatabase = exports.OpenCodeDatabase = exports.discoverDebugLogs = exports.collapseDuplicates = exports.filterByLevel = exports.parseDebugLog = void 0;
9
- exports.writeSavedAccountRegistry = exports.readSavedAccountRegistry = exports.getAccountsDir = exports.resolveClaudeLoginCommand = exports.listAllAccounts = exports.switchAccountAsync = exports.switchAccount = exports.spawnAccountLogin = exports.finalizeAccountLoginAsync = exports.finalizeAccountLogin = exports.getAccountLoginStatusAsync = exports.getAccountLoginStatus = exports.beginAccountLogin = exports.isMultiAccountEnabled = exports.resolveActiveClaudeAccount = exports.getActiveAccount = exports.listAccounts = exports.removeAccount = exports.reconcileClaudeAuthState = exports.applyActiveClaudeToLiveHome = exports.resolveActiveClaudeHome = exports.switchToAccount = exports.addCurrentAccount = exports.readActiveClaudeAccount = exports.writeAccountRegistry = exports.readAccountRegistry = exports.ensureDefaultAccounts = exports.readClaudeMaxAccessTokenSync = exports.readClaudeMaxCredentials = exports.writeActiveCredentials = exports.readActiveCredentials = exports.openInBrowser = exports.parseTranscriptFromEvents = exports.parseTranscript = exports.generateHtmlReport = exports.formatCompactionLedger = exports.calculateCompactionLedger = exports.calculateCodeImpact = exports.scoreSessionQuality = exports.calculateQualityTrend = exports.PatternExtractor = exports.HeatmapTracker = exports.FrequencyTracker = exports.readErrorHistory = exports.getTopFailingTools = exports.appendErrorHistory = exports.MAX_ERROR_HISTORY_SESSIONS = exports.ERROR_HISTORY_SCHEMA_VERSION = exports.getSnapshotPath = exports.isSnapshotValid = void 0;
10
- exports.readQuotaHistoryDailyBuckets = exports.readQuotaHistoryRange = exports.appendQuotaHistorySample = exports.writeQuotaSnapshot = exports.readQuotaSnapshot = exports.QuotaPoller = exports.describeQuotaFailure = exports.withQuotaProjections = exports.projectQuotaWindow = exports.fetchQuota = exports.SEVEN_DAY_WINDOW_MS = exports.FIVE_HOUR_WINDOW_MS = exports.AutoSwitchController = exports.decideAutoSwitch = exports.DEFAULT_AUTO_SWITCH_CONFIG = exports.removeLauncher = exports.writeLauncher = exports.isShellHookInstalled = exports.uninstallShellHook = exports.installShellHook = exports.setTerminalActiveProfile = exports.removeCodexAccount = exports.switchToCodexAccountAsync = exports.switchToCodexAccount = exports.finalizeCodexAccountAsync = exports.finalizeCodexAccount = exports.prepareCodexAccountAsync = exports.prepareCodexAccount = exports.getCodexExecutionEnv = exports.resolveSidekickCodexHome = exports.resolveActiveCodexAccount = exports.getActiveCodexAccount = exports.listCodexAccounts = exports.getSystemCodexHome = exports.getCodexMonitoringHomes = exports.getCodexProfileHome = exports.getCodexProfilesDir = exports.readClaudeProfileIdentity = exports.isClaudeProfileAuthenticated = exports.claudeKeychainService = exports.claudeKeychainSuffix = exports.getClaudeProfileHome = exports.getClaudeProfilesDir = exports.getActiveAccountStatus = exports.removeSavedAccountProfile = exports.replaceSavedAccountProfiles = exports.setActiveSavedAccount = exports.upsertSavedAccountProfile = exports.getActiveSavedAccount = exports.listSavedAccountProfiles = void 0;
11
- exports.extractErrorMessage = exports.categorizeError = exports.gatherAssetsForCwd = exports.codexSessions = exports.readCodexAssets = exports.claudeSessions = exports.readClaudeAssets = exports.extractCommands = exports.extractFilePaths = exports.extractUrls = exports.extractTokenUsage = exports.getObservedContextWindowPath = exports.recordObservedContextWindow = exports.loadObservedContextWindows = exports.LITELLM_CATALOG_URL = exports.normalizeLiteLlmContextWindows = exports.normalizeLiteLlmCatalog = exports.hydratePricingCatalog = exports.formatCost = exports.sortModelIds = exports.compareModelIds = exports.getModelDisplayInfo = exports.shortModelName = exports.mergeCostSources = exports.calculateCostWithProvenance = exports.calculateCostWithPricing = exports.calculateCost = exports.getModelInfo = exports.getModelPricing = exports.parseModelId = exports.DEFAULT_CONTEXT_WINDOW = exports.getModelContextWindowSize = exports.selectStatuslineAccount = exports.formatStatusline = exports.estimateTimeToQuota = exports.BurnRateCalculator = exports.MultiProviderQuotaService = exports.resolveZaiQuota = exports.readZaiCredentials = exports.quotaStateFromZaiQuotaLimitPayload = exports.fetchZaiQuotaFromApi = exports.CodexQuotaWatcher = exports.resolveCodexQuotaFromLocalSources = exports.resolveCodexQuota = exports.readLatestCodexQuotaFromRollouts = exports.quotaFromCodexRateLimits = exports.fetchCodexQuotaFromApi = exports.fetchCodexResetCreditsFromApi = exports.getWorkspaceIdFromPath = exports.pruneQuotaHistory = void 0;
12
- exports.formatHealthReport = exports.fetchOpenAIStatus = exports.fetchProviderStatus = exports.assistantTurnToolRefSchema = exports.assistantTurnToolGroupStepSchema = exports.assistantTurnTimelineItemSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnReasoningTimelineItemSchema = exports.assistantTurnProjectionSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnProcessSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnEventTypeSchema = exports.assistantTurnEventSchema = exports.listAllAccountsResultSchema = exports.savedAccountProfileSchema = exports.accountEntrySchema = exports.accountLoginStatusSchema = exports.beginAccountLoginResultSchema = exports.accountManagerResultSchema = exports.accountProviderIdSchema = exports.activeAccountStatusSchema = exports.activeProviderAccountStatusSchema = exports.quotaHistoryDailyBucketSchema = exports.quotaHistorySampleSchema = exports.quotaHistoryRuntimeProviderSchema = exports.providerQuotaMapSchema = exports.zaiProviderQuotaStateSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.codexResetCreditsSnapshotSchema = exports.codexResetCreditSchema = exports.quotaSourceSchema = exports.quotaProviderIdSchema = exports.quotaFailureKindSchema = exports.quotaStateSchema = exports.quotaWindowSchema = exports.extractSessionEvents = exports.permissionModeSchema = exports.sessionEventSchema = exports.sessionMessageSchema = exports.messageUsageSchema = exports.ToolCallTracker = exports.extractToolCalls = exports.extractToolCall = void 0;
13
- exports.scopePeakHoursToSessionProvider = exports.isClaudeCodeSessionProvider = exports.fetchPeakHoursStatus = exports.DEFAULT_PEAK_HOURS_TIMEOUT_MS = exports.createPeakHoursNotApplicableState = exports.runDoctor = exports.getSessionDiagnostics = void 0;
6
+ exports.atomicWriteFileSync = exports.atomicWriteJsonSync = exports.atomicWriteJson = exports.readClaudeCodePlanFiles = exports.getPlanAnalytics = exports.writePlans = exports.getLatestPlan = exports.readPlans = exports.readLatestHandoff = exports.readHistory = exports.readNotes = exports.readDecisions = exports.readTasks = exports.migrateLegacyProjectStores = exports.resolveProjectIdentity = exports.getProjectSlugRaw = exports.getProjectSlug = exports.encodeWorkspacePath = exports.getGlobalDataPath = exports.getProjectDataPath = exports.setConfigDir = exports.getDefaultConfigDir = exports.getConfigDirOverride = exports.getConfigDir = exports.CONFIG_DIR_ENV_VAR = exports.MAX_PLANS_PER_PROJECT = exports.PLAN_SCHEMA_VERSION = exports.createEmptyDataStore = exports.createEmptyTokenTotals = exports.HISTORICAL_SESSION_RETENTION_LIMIT = exports.HISTORICAL_DATA_SCHEMA_VERSION = exports.STALENESS_THRESHOLDS = exports.IMPORTANCE_DECAY_FACTORS = exports.KNOWLEDGE_NOTE_SCHEMA_VERSION = exports.DECISION_LOG_SCHEMA_VERSION = exports.normalizeTaskStatus = exports.TASK_PERSISTENCE_SCHEMA_VERSION = exports.isAggregateCodexLimit = exports.fileFingerprintParts = exports.fileFingerprint = exports.observedSessionSourceFromProvider = exports.ObservedSessionCollector = exports.readSessionTranscript = exports.listRecentSessions = exports.projectSessionTranscript = exports.estimateSerializedTokens = exports.estimateTextTokens = exports.calculateNormalizedUsageCost = exports.extractNormalizedUsage = exports.normalizeProviderUsage = void 0;
7
+ exports.scanSubagentTraces = exports.findAllSessionsWithWorktrees = exports.discoverWorktreeSiblings = exports.resolveWorktreeMainRepo = exports.getAllClaudeProjectFolders = exports.decodeEncodedPath = exports.getMostRecentlyActiveSessionDir = exports.findSubdirectorySessionDirs = exports.findSessionsInDirectory = exports.findAllClaudeSessions = exports.findActiveClaudeSession = exports.discoverSessionDirectory = exports.getClaudeSessionDirectory = exports.encodeClaudeWorkspacePath = exports.refreshSessionActivityState = exports.detectSessionActivity = exports.extractTaskInfo = exports.scanSubagentDir = exports.normalizeCodexToolInput = exports.normalizeCodexToolName = exports.extractPatchFilePaths = exports.CodexRolloutParser = exports.parseDbPartData = exports.parseDbMessageData = exports.convertOpenCodeMessage = exports.detectPlanModeFromText = exports.normalizeToolInput = exports.normalizeToolName = exports.TRUNCATION_PATTERNS = exports.JsonlParser = exports.findCodexRolloutFile = exports.CodexProvider = exports.getOpenCodeDataDir = exports.OpenCodeProvider = exports.ClaudeCodeProvider = exports.getAllDetectedProviders = exports.detectProvider = exports.derivePendingUserRequestV1 = exports.createProviderSessionAdapterV1 = exports.createSessionProviders = exports.SESSION_PROVIDER_IDS = exports.renderHandoffUrlTemplate = exports.addNote = exports.decisionFingerprint = exports.addDecision = exports.completeTask = exports.addTask = exports.withFileLockSync = exports.updateJsonStoreAtomicSync = exports.updateJsonStoreAtomic = void 0;
8
+ exports.getRandomPhrase = exports.PHRASE_CATEGORIES = exports.ALL_PHRASES = exports.HIGHLIGHT_CSS = exports.clearHighlightCache = exports.highlightEvent = exports.formatSessionJson = exports.formatSessionMarkdown = exports.formatSessionText = exports.classifyNoise = exports.shouldMergeWithPrevious = exports.classifyFollowEvent = exports.classifyMessage = exports.getSoftNoiseReason = exports.isHardNoiseFollowEvent = exports.isHardNoise = exports.formatToolSummary = exports.formatTokenCount = exports.formatDurationMs = exports.createJsonlTail = exports.toFollowEvents = exports.createWatcher = exports.parseChangelog = exports.extractProposedPlanShared = exports.parsePlanMarkdownShared = exports.PlanExtractor = exports.segmentAssistantTurn = exports.reasoningSummary = exports.isAssistantTurnSubagentTool = exports.extractTurnSubagents = exports.assistantTurnEventsFromSessionEvents = exports.readSessionContextSnapshot = exports.createSessionContextProjector = exports.calculateSessionContextPressure = exports.buildSessionContextSnapshot = exports.composeContext = exports.FilterEngine = exports.searchSessions = exports.CodexDatabase = exports.OpenCodeDatabase = exports.discoverDebugLogs = exports.collapseDuplicates = exports.filterByLevel = exports.parseDebugLog = exports.readSessionPreviewAsync = exports.readSessionPreview = exports.listSessionPreviewsAsync = exports.listSessionPreviews = exports.readCodexHistory = exports.parseMcpToolName = void 0;
9
+ exports.switchAccount = exports.spawnAccountLogin = exports.finalizeAccountLoginAsync = exports.finalizeAccountLogin = exports.getAccountLoginStatusAsync = exports.getAccountLoginStatus = exports.beginAccountLogin = exports.isMultiAccountEnabled = exports.resolveActiveClaudeAccount = exports.getActiveAccount = exports.listAccounts = exports.removeAccount = exports.reconcileClaudeAuthState = exports.applyActiveClaudeToLiveHome = exports.resolveActiveClaudeHome = exports.switchToAccount = exports.addCurrentAccount = exports.readActiveClaudeAccount = exports.writeAccountRegistry = exports.readAccountRegistry = exports.ensureDefaultAccounts = exports.readClaudeMaxAccessTokenSync = exports.readClaudeMaxCredentials = exports.writeActiveCredentials = exports.readActiveCredentials = exports.openInBrowser = exports.parseTranscriptFromEvents = exports.parseTranscript = exports.generateHtmlReport = exports.formatCompactionLedger = exports.calculateCompactionLedger = exports.calculateCodeImpact = exports.scoreSessionQuality = exports.calculateQualityTrend = exports.PatternExtractor = exports.HeatmapTracker = exports.FrequencyTracker = exports.readErrorHistory = exports.getTopFailingTools = exports.appendErrorHistory = exports.MAX_ERROR_HISTORY_SESSIONS = exports.ERROR_HISTORY_SCHEMA_VERSION = exports.getSnapshotPath = exports.isSnapshotValid = exports.deleteSnapshot = exports.loadSnapshot = exports.saveSnapshot = exports.SessionMonitor = exports.parseTodoDependencies = exports.EventAggregator = void 0;
10
+ exports.fetchQuota = exports.SEVEN_DAY_WINDOW_MS = exports.QUOTA_PROVIDER_IDS = exports.FIVE_HOUR_WINDOW_MS = exports.AutoSwitchController = exports.decideAutoSwitch = exports.DEFAULT_AUTO_SWITCH_CONFIG = exports.removeLauncher = exports.writeLauncher = exports.isShellHookInstalled = exports.uninstallShellHook = exports.installShellHook = exports.setTerminalActiveProfile = exports.removeCodexAccount = exports.switchToCodexAccountAsync = exports.switchToCodexAccount = exports.finalizeCodexAccountAsync = exports.finalizeCodexAccount = exports.prepareCodexAccountAsync = exports.prepareCodexAccount = exports.getCodexExecutionEnv = exports.resolveSidekickCodexHome = exports.resolveActiveCodexAccount = exports.getActiveCodexAccount = exports.listCodexAccounts = exports.getSystemCodexHome = exports.getCodexMonitoringHomes = exports.getCodexProfileHome = exports.getCodexProfilesDir = exports.readClaudeProfileIdentity = exports.isClaudeProfileAuthenticated = exports.claudeKeychainService = exports.claudeKeychainSuffix = exports.getClaudeProfileHome = exports.getClaudeProfilesDir = exports.onAccountsChanged = exports.getActiveAccountStatus = exports.ACCOUNT_PROVIDER_IDS = exports.removeSavedAccountProfile = exports.replaceSavedAccountProfiles = exports.setActiveSavedAccount = exports.upsertSavedAccountProfile = exports.getActiveSavedAccount = exports.listSavedAccountProfiles = exports.writeSavedAccountRegistry = exports.readSavedAccountRegistry = exports.getAccountsDir = exports.resolveClaudeLoginCommand = exports.listAllAccounts = exports.switchAccountAsync = void 0;
11
+ exports.RESOLVED_MODEL_CATALOG_SCHEMA_VERSION = exports.resolveModelAlias = exports.registerModelAlias = exports.importResolvedModelCatalog = exports.exportResolvedModelCatalog = exports.MODEL_PROVIDER_IDS = exports.formatCost = exports.sortModelIds = exports.compareModelIds = exports.getModelDisplayInfo = exports.shortModelName = exports.mergeCostSources = exports.calculateCostWithProvenance = exports.calculateCostWithPricing = exports.calculateCost = exports.getModelInfo = exports.resolveModelPricing = exports.getModelPricing = exports.parseModelId = exports.DEFAULT_CONTEXT_WINDOW = exports.resolveModelContextWindow = exports.getModelContextWindowSize = exports.selectStatuslineAccount = exports.formatStatusline = exports.estimateTimeToQuota = exports.BurnRateCalculator = exports.RUNTIME_QUOTA_PROVIDER_IDS = exports.MultiProviderQuotaService = exports.resolveZaiQuota = exports.readZaiCredentials = exports.quotaStateFromZaiQuotaLimitPayload = exports.fetchZaiQuotaFromApi = exports.CodexQuotaWatcher = exports.resolveCodexQuotaFromLocalSources = exports.resolveCodexQuota = exports.readLatestCodexQuotaFromRollouts = exports.quotaFromCodexRateLimits = exports.fetchCodexQuotaFromApi = exports.fetchCodexResetCreditsFromApi = exports.getWorkspaceIdFromPath = exports.pruneQuotaHistory = exports.readQuotaHistoryDailyBuckets = exports.readQuotaHistoryRange = exports.appendQuotaHistorySample = exports.writeQuotaSnapshot = exports.readQuotaSnapshot = exports.QuotaPoller = exports.describeQuotaFailure = exports.withQuotaProjections = exports.projectQuotaWindow = void 0;
12
+ exports.accountLoginStatusSchema = exports.beginAccountLoginResultSchema = exports.accountManagerResultSchema = exports.accountProviderIdSchema = exports.activeAccountStatusSchema = exports.activeProviderAccountStatusSchema = exports.quotaHistoryDailyBucketSchema = exports.quotaHistorySampleSchema = exports.quotaHistoryRuntimeProviderSchema = exports.providerQuotaMapSchema = exports.zaiProviderQuotaStateSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.codexResetCreditsSnapshotSchema = exports.codexResetCreditSchema = exports.quotaSourceSchema = exports.quotaProviderIdSchema = exports.quotaFailureKindSchema = exports.quotaStateSchema = exports.quotaWindowSchema = exports.extractSessionEvents = exports.permissionModeSchema = exports.sessionEventSchema = exports.sessionMessageSchema = exports.messageUsageSchema = exports.ToolCallTracker = exports.extractToolCalls = exports.extractToolCall = exports.extractErrorMessage = exports.categorizeError = exports.gatherAssetsForCwd = exports.codexSessions = exports.readCodexAssets = exports.claudeSessions = exports.readClaudeAssets = exports.extractCommands = exports.extractFilePaths = exports.extractUrls = exports.extractTokenUsage = exports.getObservedContextWindowPath = exports.recordObservedContextWindow = exports.loadObservedContextWindows = exports.LITELLM_CATALOG_URL = exports.normalizeLiteLlmContextWindows = exports.normalizeLiteLlmCatalog = exports.hydratePricingCatalog = void 0;
13
+ exports.scopePeakHoursToSessionProvider = exports.isClaudeCodeSessionProvider = exports.fetchPeakHoursStatus = exports.DEFAULT_PEAK_HOURS_TIMEOUT_MS = exports.createPeakHoursNotApplicableState = exports.runDoctor = exports.getSessionDiagnostics = exports.formatHealthReport = exports.fetchOpenAIStatus = exports.fetchProviderStatus = exports.assistantTurnToolRefSchema = exports.assistantTurnToolGroupStepSchema = exports.assistantTurnTimelineItemSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnReasoningTimelineItemSchema = exports.assistantTurnProjectionSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnProcessSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnEventTypeSchema = exports.assistantTurnEventSchema = exports.listAllAccountsResultSchema = exports.savedAccountProfileSchema = exports.accountEntrySchema = void 0;
14
14
  var usageNormalization_1 = require("./usageNormalization");
15
15
  Object.defineProperty(exports, "normalizeProviderUsage", { enumerable: true, get: function () { return usageNormalization_1.normalizeProviderUsage; } });
16
16
  Object.defineProperty(exports, "extractNormalizedUsage", { enumerable: true, get: function () { return usageNormalization_1.extractNormalizedUsage; } });
@@ -27,6 +27,7 @@ var observedSessionCollector_1 = require("./observedSessionCollector");
27
27
  Object.defineProperty(exports, "ObservedSessionCollector", { enumerable: true, get: function () { return observedSessionCollector_1.ObservedSessionCollector; } });
28
28
  Object.defineProperty(exports, "observedSessionSourceFromProvider", { enumerable: true, get: function () { return observedSessionCollector_1.observedSessionSourceFromProvider; } });
29
29
  Object.defineProperty(exports, "fileFingerprint", { enumerable: true, get: function () { return observedSessionCollector_1.fileFingerprint; } });
30
+ Object.defineProperty(exports, "fileFingerprintParts", { enumerable: true, get: function () { return observedSessionCollector_1.fileFingerprintParts; } });
30
31
  var codex_1 = require("./types/codex");
31
32
  Object.defineProperty(exports, "isAggregateCodexLimit", { enumerable: true, get: function () { return codex_1.isAggregateCodexLimit; } });
32
33
  var taskPersistence_1 = require("./types/taskPersistence");
@@ -96,6 +97,10 @@ var notes_2 = require("./writers/notes");
96
97
  Object.defineProperty(exports, "addNote", { enumerable: true, get: function () { return notes_2.addNote; } });
97
98
  var handoffUrl_1 = require("./handoffUrl");
98
99
  Object.defineProperty(exports, "renderHandoffUrlTemplate", { enumerable: true, get: function () { return handoffUrl_1.renderHandoffUrlTemplate; } });
100
+ var types_1 = require("./providers/types");
101
+ Object.defineProperty(exports, "SESSION_PROVIDER_IDS", { enumerable: true, get: function () { return types_1.SESSION_PROVIDER_IDS; } });
102
+ var factory_1 = require("./providers/factory");
103
+ Object.defineProperty(exports, "createSessionProviders", { enumerable: true, get: function () { return factory_1.createSessionProviders; } });
99
104
  var observedSessionV1_1 = require("./types/observedSessionV1");
100
105
  Object.defineProperty(exports, "createProviderSessionAdapterV1", { enumerable: true, get: function () { return observedSessionV1_1.createProviderSessionAdapterV1; } });
101
106
  Object.defineProperty(exports, "derivePendingUserRequestV1", { enumerable: true, get: function () { return observedSessionV1_1.derivePendingUserRequestV1; } });
@@ -135,6 +140,7 @@ Object.defineProperty(exports, "extractTaskInfo", { enumerable: true, get: funct
135
140
  // Parsers — Session activity detection
136
141
  var sessionActivityDetector_1 = require("./parsers/sessionActivityDetector");
137
142
  Object.defineProperty(exports, "detectSessionActivity", { enumerable: true, get: function () { return sessionActivityDetector_1.detectSessionActivity; } });
143
+ Object.defineProperty(exports, "refreshSessionActivityState", { enumerable: true, get: function () { return sessionActivityDetector_1.refreshSessionActivityState; } });
138
144
  // Parsers — Session path resolution (Claude Code)
139
145
  var sessionPathResolver_1 = require("./parsers/sessionPathResolver");
140
146
  Object.defineProperty(exports, "encodeClaudeWorkspacePath", { enumerable: true, get: function () { return sessionPathResolver_1.encodeWorkspacePath; } });
@@ -162,7 +168,9 @@ Object.defineProperty(exports, "readCodexHistory", { enumerable: true, get: func
162
168
  // Session previews (bounded, stat-first)
163
169
  var sessionPreviews_1 = require("./sessionPreviews");
164
170
  Object.defineProperty(exports, "listSessionPreviews", { enumerable: true, get: function () { return sessionPreviews_1.listSessionPreviews; } });
171
+ Object.defineProperty(exports, "listSessionPreviewsAsync", { enumerable: true, get: function () { return sessionPreviews_1.listSessionPreviewsAsync; } });
165
172
  Object.defineProperty(exports, "readSessionPreview", { enumerable: true, get: function () { return sessionPreviews_1.readSessionPreview; } });
173
+ Object.defineProperty(exports, "readSessionPreviewAsync", { enumerable: true, get: function () { return sessionPreviews_1.readSessionPreviewAsync; } });
166
174
  // Parsers — Debug log parsing
167
175
  var debugLogParser_1 = require("./parsers/debugLogParser");
168
176
  Object.defineProperty(exports, "parseDebugLog", { enumerable: true, get: function () { return debugLogParser_1.parseDebugLog; } });
@@ -202,8 +210,8 @@ Object.defineProperty(exports, "extractProposedPlanShared", { enumerable: true,
202
210
  // Changelog Parsing
203
211
  var changelogParser_1 = require("./parsers/changelogParser");
204
212
  Object.defineProperty(exports, "parseChangelog", { enumerable: true, get: function () { return changelogParser_1.parseChangelog; } });
205
- var factory_1 = require("./watchers/factory");
206
- Object.defineProperty(exports, "createWatcher", { enumerable: true, get: function () { return factory_1.createWatcher; } });
213
+ var factory_2 = require("./watchers/factory");
214
+ Object.defineProperty(exports, "createWatcher", { enumerable: true, get: function () { return factory_2.createWatcher; } });
207
215
  var eventBridge_1 = require("./watchers/eventBridge");
208
216
  Object.defineProperty(exports, "toFollowEvents", { enumerable: true, get: function () { return eventBridge_1.toFollowEvents; } });
209
217
  var jsonlTail_1 = require("./watchers/jsonlTail");
@@ -320,8 +328,12 @@ Object.defineProperty(exports, "upsertSavedAccountProfile", { enumerable: true,
320
328
  Object.defineProperty(exports, "setActiveSavedAccount", { enumerable: true, get: function () { return accountRegistry_1.setActiveSavedAccount; } });
321
329
  Object.defineProperty(exports, "replaceSavedAccountProfiles", { enumerable: true, get: function () { return accountRegistry_1.replaceSavedAccountProfiles; } });
322
330
  Object.defineProperty(exports, "removeSavedAccountProfile", { enumerable: true, get: function () { return accountRegistry_1.removeSavedAccountProfile; } });
331
+ var accountRegistry_2 = require("./accountRegistry");
332
+ Object.defineProperty(exports, "ACCOUNT_PROVIDER_IDS", { enumerable: true, get: function () { return accountRegistry_2.ACCOUNT_PROVIDER_IDS; } });
323
333
  var accountStatus_1 = require("./accountStatus");
324
334
  Object.defineProperty(exports, "getActiveAccountStatus", { enumerable: true, get: function () { return accountStatus_1.getActiveAccountStatus; } });
335
+ var accountChanges_1 = require("./accountChanges");
336
+ Object.defineProperty(exports, "onAccountsChanged", { enumerable: true, get: function () { return accountChanges_1.onAccountsChanged; } });
325
337
  var claudeProfiles_1 = require("./claudeProfiles");
326
338
  Object.defineProperty(exports, "getClaudeProfilesDir", { enumerable: true, get: function () { return claudeProfiles_1.getClaudeProfilesDir; } });
327
339
  Object.defineProperty(exports, "getClaudeProfileHome", { enumerable: true, get: function () { return claudeProfiles_1.getClaudeProfileHome; } });
@@ -360,6 +372,7 @@ Object.defineProperty(exports, "AutoSwitchController", { enumerable: true, get:
360
372
  // Quota
361
373
  var quota_1 = require("./quota");
362
374
  Object.defineProperty(exports, "FIVE_HOUR_WINDOW_MS", { enumerable: true, get: function () { return quota_1.FIVE_HOUR_WINDOW_MS; } });
375
+ Object.defineProperty(exports, "QUOTA_PROVIDER_IDS", { enumerable: true, get: function () { return quota_1.QUOTA_PROVIDER_IDS; } });
363
376
  Object.defineProperty(exports, "SEVEN_DAY_WINDOW_MS", { enumerable: true, get: function () { return quota_1.SEVEN_DAY_WINDOW_MS; } });
364
377
  Object.defineProperty(exports, "fetchQuota", { enumerable: true, get: function () { return quota_1.fetchQuota; } });
365
378
  Object.defineProperty(exports, "projectQuotaWindow", { enumerable: true, get: function () { return quota_1.projectQuotaWindow; } });
@@ -393,6 +406,8 @@ Object.defineProperty(exports, "readZaiCredentials", { enumerable: true, get: fu
393
406
  Object.defineProperty(exports, "resolveZaiQuota", { enumerable: true, get: function () { return zaiQuotaApi_1.resolveZaiQuota; } });
394
407
  var multiProviderQuotaService_1 = require("./multiProviderQuotaService");
395
408
  Object.defineProperty(exports, "MultiProviderQuotaService", { enumerable: true, get: function () { return multiProviderQuotaService_1.MultiProviderQuotaService; } });
409
+ var providerQuota_1 = require("./providerQuota");
410
+ Object.defineProperty(exports, "RUNTIME_QUOTA_PROVIDER_IDS", { enumerable: true, get: function () { return providerQuota_1.RUNTIME_QUOTA_PROVIDER_IDS; } });
396
411
  var BurnRateCalculator_1 = require("./statusline/BurnRateCalculator");
397
412
  Object.defineProperty(exports, "BurnRateCalculator", { enumerable: true, get: function () { return BurnRateCalculator_1.BurnRateCalculator; } });
398
413
  Object.defineProperty(exports, "estimateTimeToQuota", { enumerable: true, get: function () { return BurnRateCalculator_1.estimateTimeToQuota; } });
@@ -402,11 +417,13 @@ Object.defineProperty(exports, "selectStatuslineAccount", { enumerable: true, ge
402
417
  // Model Context
403
418
  var modelContext_1 = require("./modelContext");
404
419
  Object.defineProperty(exports, "getModelContextWindowSize", { enumerable: true, get: function () { return modelContext_1.getModelContextWindowSize; } });
420
+ Object.defineProperty(exports, "resolveModelContextWindow", { enumerable: true, get: function () { return modelContext_1.resolveModelContextWindow; } });
405
421
  Object.defineProperty(exports, "DEFAULT_CONTEXT_WINDOW", { enumerable: true, get: function () { return modelContext_1.DEFAULT_CONTEXT_WINDOW; } });
406
422
  // Model Info & Pricing
407
423
  var modelInfo_1 = require("./modelInfo");
408
424
  Object.defineProperty(exports, "parseModelId", { enumerable: true, get: function () { return modelInfo_1.parseModelId; } });
409
425
  Object.defineProperty(exports, "getModelPricing", { enumerable: true, get: function () { return modelInfo_1.getModelPricing; } });
426
+ Object.defineProperty(exports, "resolveModelPricing", { enumerable: true, get: function () { return modelInfo_1.resolveModelPricing; } });
410
427
  Object.defineProperty(exports, "getModelInfo", { enumerable: true, get: function () { return modelInfo_1.getModelInfo; } });
411
428
  Object.defineProperty(exports, "calculateCost", { enumerable: true, get: function () { return modelInfo_1.calculateCost; } });
412
429
  Object.defineProperty(exports, "calculateCostWithPricing", { enumerable: true, get: function () { return modelInfo_1.calculateCostWithPricing; } });
@@ -417,6 +434,13 @@ Object.defineProperty(exports, "getModelDisplayInfo", { enumerable: true, get: f
417
434
  Object.defineProperty(exports, "compareModelIds", { enumerable: true, get: function () { return modelInfo_1.compareModelIds; } });
418
435
  Object.defineProperty(exports, "sortModelIds", { enumerable: true, get: function () { return modelInfo_1.sortModelIds; } });
419
436
  Object.defineProperty(exports, "formatCost", { enumerable: true, get: function () { return modelInfo_1.formatCost; } });
437
+ Object.defineProperty(exports, "MODEL_PROVIDER_IDS", { enumerable: true, get: function () { return modelInfo_1.MODEL_PROVIDER_IDS; } });
438
+ var modelCatalog_1 = require("./modelCatalog");
439
+ Object.defineProperty(exports, "exportResolvedModelCatalog", { enumerable: true, get: function () { return modelCatalog_1.exportResolvedModelCatalog; } });
440
+ Object.defineProperty(exports, "importResolvedModelCatalog", { enumerable: true, get: function () { return modelCatalog_1.importResolvedModelCatalog; } });
441
+ Object.defineProperty(exports, "registerModelAlias", { enumerable: true, get: function () { return modelCatalog_1.registerModelAlias; } });
442
+ Object.defineProperty(exports, "resolveModelAlias", { enumerable: true, get: function () { return modelCatalog_1.resolveModelAlias; } });
443
+ Object.defineProperty(exports, "RESOLVED_MODEL_CATALOG_SCHEMA_VERSION", { enumerable: true, get: function () { return modelCatalog_1.RESOLVED_MODEL_CATALOG_SCHEMA_VERSION; } });
420
444
  // Pricing Catalog (LiteLLM hydration) — Node-only. Safe for extension host
421
445
  // and CLI; do NOT import from browser bundles (webviews).
422
446
  var pricingCatalog_1 = require("./pricingCatalog");
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Register a short or host-specific model name that resolves to a canonical ID.
3
+ * Invalid and cyclic registrations are rejected without changing the registry.
4
+ */
5
+ export declare function registerModelAlias(alias: string, canonicalId: string): boolean;
6
+ /** Resolve a registered alias, returning normalized input when no alias exists. */
7
+ export declare function resolveModelAlias(modelId: string): string;
8
+ /** Internal snapshot used by the cross-realm catalog serializer. */
9
+ export declare function _getModelAliases(): Record<string, string>;
10
+ /** Internal hydration hook used by the cross-realm catalog importer. */
11
+ export declare function _importModelAliases(values: Record<string, string>): void;
12
+ /** Internal test hook. */
13
+ export declare function _clearModelAliases(): void;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerModelAlias = registerModelAlias;
4
+ exports.resolveModelAlias = resolveModelAlias;
5
+ exports._getModelAliases = _getModelAliases;
6
+ exports._importModelAliases = _importModelAliases;
7
+ exports._clearModelAliases = _clearModelAliases;
8
+ const aliases = new Map();
9
+ function normalizeAlias(value) {
10
+ return value.trim().toLowerCase();
11
+ }
12
+ /**
13
+ * Register a short or host-specific model name that resolves to a canonical ID.
14
+ * Invalid and cyclic registrations are rejected without changing the registry.
15
+ */
16
+ function registerModelAlias(alias, canonicalId) {
17
+ const normalizedAlias = normalizeAlias(alias);
18
+ const normalizedCanonicalId = normalizeAlias(canonicalId);
19
+ if (!normalizedAlias || !normalizedCanonicalId || normalizedAlias === normalizedCanonicalId) {
20
+ return false;
21
+ }
22
+ let candidate = normalizedCanonicalId;
23
+ const visited = new Set([normalizedAlias]);
24
+ while (aliases.has(candidate)) {
25
+ if (visited.has(candidate))
26
+ return false;
27
+ visited.add(candidate);
28
+ candidate = aliases.get(candidate);
29
+ }
30
+ if (candidate === normalizedAlias)
31
+ return false;
32
+ aliases.set(normalizedAlias, normalizedCanonicalId);
33
+ return true;
34
+ }
35
+ /** Resolve a registered alias, returning normalized input when no alias exists. */
36
+ function resolveModelAlias(modelId) {
37
+ let current = normalizeAlias(modelId);
38
+ const visited = new Set();
39
+ while (aliases.has(current) && !visited.has(current)) {
40
+ visited.add(current);
41
+ current = aliases.get(current);
42
+ }
43
+ return current;
44
+ }
45
+ /** Internal snapshot used by the cross-realm catalog serializer. */
46
+ function _getModelAliases() {
47
+ return Object.fromEntries(aliases);
48
+ }
49
+ /** Internal hydration hook used by the cross-realm catalog importer. */
50
+ function _importModelAliases(values) {
51
+ for (const [alias, canonicalId] of Object.entries(values)) {
52
+ registerModelAlias(alias, canonicalId);
53
+ }
54
+ }
55
+ /** Internal test hook. */
56
+ function _clearModelAliases() {
57
+ aliases.clear();
58
+ }
@@ -0,0 +1,32 @@
1
+ import { type ResolvedModelContextWindow } from './modelContext';
2
+ import { type ResolvedModelPricing } from './modelInfo';
3
+ import { registerModelAlias, resolveModelAlias } from './modelAliases';
4
+ export declare const RESOLVED_MODEL_CATALOG_SCHEMA_VERSION: 1;
5
+ export interface ResolvedModelCatalogEntry {
6
+ id: string;
7
+ canonicalId: string;
8
+ contextWindow: ResolvedModelContextWindow;
9
+ pricing: ResolvedModelPricing;
10
+ }
11
+ export interface ResolvedModelCatalogSnapshot {
12
+ schemaVersion: typeof RESOLVED_MODEL_CATALOG_SCHEMA_VERSION;
13
+ models: Record<string, ResolvedModelCatalogEntry>;
14
+ aliases: Record<string, string>;
15
+ }
16
+ export interface ImportResolvedModelCatalogResult {
17
+ imported: number;
18
+ diagnostics: string[];
19
+ }
20
+ /**
21
+ * Export an entirely serializable catalog suitable for IPC to another JS realm.
22
+ * Each entry records published, observed, and tier-effective context windows,
23
+ * plus pricing match provenance (including prefix inheritance).
24
+ */
25
+ export declare function exportResolvedModelCatalog(ids?: readonly string[]): ResolvedModelCatalogSnapshot;
26
+ /**
27
+ * Hydrate exact model resolutions exported by another bundle realm.
28
+ * Invalid entries are skipped and reported; import never partially mutates an
29
+ * entry or throws for malformed IPC data.
30
+ */
31
+ export declare function importResolvedModelCatalog(snapshot: unknown): ImportResolvedModelCatalogResult;
32
+ export { registerModelAlias, resolveModelAlias };
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveModelAlias = exports.registerModelAlias = exports.RESOLVED_MODEL_CATALOG_SCHEMA_VERSION = void 0;
4
+ exports.exportResolvedModelCatalog = exportResolvedModelCatalog;
5
+ exports.importResolvedModelCatalog = importResolvedModelCatalog;
6
+ const modelContext_1 = require("./modelContext");
7
+ const modelInfo_1 = require("./modelInfo");
8
+ const modelAliases_1 = require("./modelAliases");
9
+ Object.defineProperty(exports, "registerModelAlias", { enumerable: true, get: function () { return modelAliases_1.registerModelAlias; } });
10
+ Object.defineProperty(exports, "resolveModelAlias", { enumerable: true, get: function () { return modelAliases_1.resolveModelAlias; } });
11
+ exports.RESOLVED_MODEL_CATALOG_SCHEMA_VERSION = 1;
12
+ function normalizedIds(ids) {
13
+ if (ids) {
14
+ return Array.from(new Set(ids.map((id) => id.trim()).filter(Boolean)));
15
+ }
16
+ const aliases = (0, modelAliases_1._getModelAliases)();
17
+ return Array.from(new Set([
18
+ ...(0, modelContext_1._getModelContextIds)(),
19
+ ...(0, modelInfo_1._getModelPricingIds)(),
20
+ ...Object.keys(aliases),
21
+ ...Object.values(aliases),
22
+ ])).sort();
23
+ }
24
+ /**
25
+ * Export an entirely serializable catalog suitable for IPC to another JS realm.
26
+ * Each entry records published, observed, and tier-effective context windows,
27
+ * plus pricing match provenance (including prefix inheritance).
28
+ */
29
+ function exportResolvedModelCatalog(ids) {
30
+ const models = {};
31
+ const selectedIds = normalizedIds(ids);
32
+ for (const id of selectedIds) {
33
+ const canonicalId = (0, modelAliases_1.resolveModelAlias)(id);
34
+ models[id] = {
35
+ id,
36
+ canonicalId,
37
+ contextWindow: (0, modelContext_1.resolveModelContextWindow)(id),
38
+ pricing: (0, modelInfo_1.resolveModelPricing)(id),
39
+ };
40
+ }
41
+ const selectedCanonicalIds = new Set(Object.values(models).flatMap(({ id, canonicalId }) => [id, canonicalId]));
42
+ const aliases = Object.fromEntries(Object.entries((0, modelAliases_1._getModelAliases)()).filter(([alias, canonicalId]) => selectedCanonicalIds.has(alias) || selectedCanonicalIds.has(canonicalId)));
43
+ return { schemaVersion: exports.RESOLVED_MODEL_CATALOG_SCHEMA_VERSION, models, aliases };
44
+ }
45
+ /**
46
+ * Hydrate exact model resolutions exported by another bundle realm.
47
+ * Invalid entries are skipped and reported; import never partially mutates an
48
+ * entry or throws for malformed IPC data.
49
+ */
50
+ function importResolvedModelCatalog(snapshot) {
51
+ const diagnostics = [];
52
+ if (!isRecord(snapshot) || snapshot.schemaVersion !== exports.RESOLVED_MODEL_CATALOG_SCHEMA_VERSION) {
53
+ return { imported: 0, diagnostics: ['unsupported resolved model catalog snapshot'] };
54
+ }
55
+ const aliases = isStringRecord(snapshot.aliases) ? snapshot.aliases : {};
56
+ (0, modelAliases_1._importModelAliases)(aliases);
57
+ const contexts = {};
58
+ const prices = {};
59
+ const models = isRecord(snapshot.models) ? snapshot.models : {};
60
+ let imported = 0;
61
+ for (const [key, rawEntry] of Object.entries(models)) {
62
+ if (!isResolvedEntry(rawEntry)) {
63
+ diagnostics.push(`ignored invalid model catalog entry: ${key}`);
64
+ continue;
65
+ }
66
+ const entry = rawEntry;
67
+ const normalizedKey = key.trim().toLowerCase();
68
+ const canonicalId = entry.canonicalId.trim().toLowerCase();
69
+ const context = cloneContext(entry.contextWindow, entry.id, canonicalId);
70
+ const pricing = clonePricing(entry.pricing, entry.id, canonicalId);
71
+ // Unresolved facets are not importable facts: pinning a 'default' window
72
+ // or 'none' pricing would outrank data the importing realm can resolve
73
+ // (or later learn) on its own.
74
+ const contextResolved = context.provenance.source !== 'default';
75
+ const pricingResolved = pricing.provenance.source !== 'none';
76
+ if (!contextResolved && !pricingResolved) {
77
+ diagnostics.push(`skipped unresolved model catalog entry: ${key}`);
78
+ continue;
79
+ }
80
+ for (const id of new Set([normalizedKey, entry.id.trim().toLowerCase(), canonicalId])) {
81
+ if (!id)
82
+ continue;
83
+ if (contextResolved)
84
+ contexts[id] = context;
85
+ if (pricingResolved)
86
+ prices[id] = pricing;
87
+ }
88
+ imported++;
89
+ }
90
+ (0, modelContext_1._setImportedResolvedContextWindows)(contexts);
91
+ (0, modelInfo_1._setImportedResolvedPricing)(prices);
92
+ return { imported, diagnostics };
93
+ }
94
+ function cloneContext(value, modelId, canonicalModelId) {
95
+ return {
96
+ ...value,
97
+ modelId,
98
+ canonicalModelId,
99
+ provenance: { ...value.provenance },
100
+ };
101
+ }
102
+ function clonePricing(value, modelId, canonicalModelId) {
103
+ return {
104
+ ...value,
105
+ modelId,
106
+ canonicalModelId,
107
+ pricing: value.pricing ? { ...value.pricing } : null,
108
+ provenance: { ...value.provenance },
109
+ };
110
+ }
111
+ function isRecord(value) {
112
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
113
+ }
114
+ function isStringRecord(value) {
115
+ return isRecord(value) && Object.values(value).every((item) => typeof item === 'string');
116
+ }
117
+ function validPricing(value) {
118
+ if (!isRecord(value))
119
+ return false;
120
+ return [
121
+ value.inputCostPerMillion,
122
+ value.outputCostPerMillion,
123
+ value.cacheWriteCostPerMillion,
124
+ value.cacheReadCostPerMillion,
125
+ ].every((item) => typeof item === 'number' && Number.isFinite(item) && item >= 0);
126
+ }
127
+ function isResolvedEntry(value) {
128
+ if (!isRecord(value) || typeof value.id !== 'string' || typeof value.canonicalId !== 'string') {
129
+ return false;
130
+ }
131
+ const context = value.contextWindow;
132
+ const pricing = value.pricing;
133
+ if (!isRecord(context) || !isRecord(pricing))
134
+ return false;
135
+ if (typeof context.tierEffective !== 'number' ||
136
+ !Number.isFinite(context.tierEffective) ||
137
+ context.tierEffective <= 0 ||
138
+ (context.published !== null && typeof context.published !== 'number') ||
139
+ (context.observed !== null && typeof context.observed !== 'number') ||
140
+ !isRecord(context.provenance) ||
141
+ !isRecord(pricing.provenance)) {
142
+ return false;
143
+ }
144
+ return pricing.pricing === null || validPricing(pricing.pricing);
145
+ }
@@ -9,13 +9,19 @@
9
9
  * model, persisted across runs by `observedContextWindows.ts`. Reflects the
10
10
  * effective window for this account/tier, which can be well below the
11
11
  * model's published maximum.
12
- * 3. Catalog overrides — `max_input_tokens` from the LiteLLM catalog, hydrated
12
+ * 3. Imported resolutions — exact entries hydrated from another realm via
13
+ * `importResolvedModelCatalog()`. Below local observed data (a window this
14
+ * realm saw first-hand is fresher than a transferred snapshot), above the
15
+ * catalog.
16
+ * 4. Catalog overrides — `max_input_tokens` from the LiteLLM catalog, hydrated
13
17
  * by `pricingCatalog.ts`. Keeps new models correct without a code change.
14
- * 4. The static table below — offline baseline of last resort.
18
+ * 5. The static table below — offline baseline of last resort.
15
19
  *
16
20
  * Within that order, match quality comes first: every layer is tried for an
17
21
  * exact hit before any layer is tried for a prefix hit. See
18
- * `getModelContextWindowSize`.
22
+ * `getModelContextWindowSize`. The raw (alias) id is tried before its
23
+ * canonical target at every step, so registering an alias never orphans data
24
+ * recorded under the alias itself.
19
25
  *
20
26
  * Layers 2 and 3 are pushed in by Node-only modules through the `_set*` hooks,
21
27
  * so this file stays browser-safe (no node:fs, no fetch) and can be bundled for
@@ -23,6 +29,21 @@
23
29
  */
24
30
  /** Default context window size when model is unknown. */
25
31
  export declare const DEFAULT_CONTEXT_WINDOW = 200000;
32
+ export type ModelContextWindowSource = 'explicit-1m' | 'imported' | 'observed' | 'catalog' | 'static' | 'default';
33
+ export type ModelCatalogMatch = 'exact' | 'prefix' | 'default';
34
+ export interface ModelContextWindowProvenance {
35
+ source: ModelContextWindowSource;
36
+ match: ModelCatalogMatch;
37
+ matchedModelId?: string;
38
+ }
39
+ export interface ResolvedModelContextWindow {
40
+ modelId: string;
41
+ canonicalModelId: string;
42
+ published: number | null;
43
+ observed: number | null;
44
+ tierEffective: number;
45
+ provenance: ModelContextWindowProvenance;
46
+ }
26
47
  /**
27
48
  * Internal: replace the observed-context-window map. Called by
28
49
  * `observedContextWindows.ts` on load and on each newly observed value.
@@ -43,6 +64,18 @@ export declare function _setCatalogContextWindows(overrides: Record<string, numb
43
64
  export declare function _getCatalogContextWindows(): Record<string, number>;
44
65
  /** Internal: clear catalog overrides (used by tests and when disabling hydration). */
45
66
  export declare function _clearCatalogContextWindows(): void;
67
+ /**
68
+ * Internal: hydrate exact, already-resolved context data from another realm.
69
+ * Merges so successive partial imports accumulate (aliases already merge);
70
+ * use `_clearImportedResolvedContextWindows` to reset.
71
+ */
72
+ export declare function _setImportedResolvedContextWindows(values: Record<string, ResolvedModelContextWindow>): void;
73
+ /** Internal test hook. */
74
+ export declare function _clearImportedResolvedContextWindows(): void;
75
+ /** Internal: list every ID known to the context resolver. */
76
+ export declare function _getModelContextIds(): string[];
77
+ /** Resolve published, observed, and tier-effective context windows with provenance. */
78
+ export declare function resolveModelContextWindow(modelId?: string): ResolvedModelContextWindow;
46
79
  /**
47
80
  * Returns the context window size for a model ID.
48
81
  *