sidekick-shared 0.26.5 → 0.27.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 (68) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +98 -59
  3. package/dist/accountChanges.js +21 -2
  4. package/dist/accountHealth.d.ts +72 -0
  5. package/dist/accountHealth.js +286 -0
  6. package/dist/accountLaunch.d.ts +30 -0
  7. package/dist/accountLaunch.js +124 -0
  8. package/dist/accountManager.d.ts +33 -8
  9. package/dist/accountManager.js +183 -50
  10. package/dist/accountRegistry.d.ts +10 -0
  11. package/dist/accountRegistry.js +42 -22
  12. package/dist/accountSwitch.d.ts +43 -0
  13. package/dist/accountSwitch.js +115 -0
  14. package/dist/accountSync.d.ts +30 -0
  15. package/dist/accountSync.js +180 -0
  16. package/dist/accountSyncTypes.d.ts +25 -0
  17. package/dist/accountSyncTypes.js +7 -0
  18. package/dist/accounts.d.ts +58 -6
  19. package/dist/accounts.js +408 -189
  20. package/dist/claudeCredentials.d.ts +38 -0
  21. package/dist/claudeCredentials.js +74 -0
  22. package/dist/claudeProfiles.d.ts +40 -0
  23. package/dist/claudeProfiles.js +102 -10
  24. package/dist/codexAuth.d.ts +32 -0
  25. package/dist/codexAuth.js +127 -0
  26. package/dist/codexPaths.d.ts +21 -0
  27. package/dist/codexPaths.js +117 -0
  28. package/dist/codexProfiles.d.ts +58 -5
  29. package/dist/codexProfiles.js +574 -289
  30. package/dist/credentialIO.d.ts +12 -5
  31. package/dist/credentialIO.js +63 -29
  32. package/dist/credentials.d.ts +8 -0
  33. package/dist/credentials.js +28 -32
  34. package/dist/ensureDefaultAccounts.d.ts +8 -0
  35. package/dist/ensureDefaultAccounts.js +42 -82
  36. package/dist/humanPrompt.d.ts +27 -0
  37. package/dist/humanPrompt.js +93 -0
  38. package/dist/index.d.ts +31 -10
  39. package/dist/index.js +72 -13
  40. package/dist/keepAlive.d.ts +44 -0
  41. package/dist/keepAlive.js +106 -0
  42. package/dist/modelContext.js +4 -0
  43. package/dist/modelInfo.js +26 -1
  44. package/dist/node.d.ts +4 -0
  45. package/dist/node.js +9 -2
  46. package/dist/processDetection.d.ts +32 -0
  47. package/dist/processDetection.js +210 -0
  48. package/dist/promptHistory.d.ts +108 -0
  49. package/dist/promptHistory.js +616 -0
  50. package/dist/schemas/accountManager.d.ts +283 -1
  51. package/dist/schemas/accountManager.js +122 -1
  52. package/dist/schemas/assistantTurn.d.ts +2 -2
  53. package/dist/schemas/index.d.ts +6 -1
  54. package/dist/schemas/index.js +14 -1
  55. package/dist/schemas/observedSessionV1.d.ts +21 -21
  56. package/dist/schemas/quota.d.ts +18 -18
  57. package/dist/schemas/quotaHistory.d.ts +1 -1
  58. package/dist/schemas/sessionEvent.d.ts +25 -0
  59. package/dist/schemas/sessionEvent.js +3 -0
  60. package/dist/schemas/stateFile.d.ts +5 -5
  61. package/dist/terminalSync.d.ts +5 -5
  62. package/dist/terminalSync.js +7 -112
  63. package/dist/transcript.d.ts +6 -0
  64. package/dist/transcript.js +3 -0
  65. package/dist/types/sessionEvent.d.ts +8 -0
  66. package/dist/writers/atomic.d.ts +2 -0
  67. package/dist/writers/atomic.js +49 -2
  68. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -10,6 +10,10 @@ export type { ExactTokenCounterContext, ExactTokenCounter, TokenEstimationMethod
10
10
  export { projectSessionTranscript } from './transcript';
11
11
  export type { TranscriptFidelity, TranscriptSourceProvenance, CanonicalTranscriptBlock, CanonicalTranscriptMessage, CanonicalToolCall, CanonicalTranscriptUsageTotals, CanonicalSessionTranscript, ProjectSessionTranscriptOptions, } from './transcript';
12
12
  export { listRecentSessions, readSessionTranscript } from './sessionTranscripts';
13
+ export { collectPromptHistory } from './promptHistory';
14
+ export type { CollectPromptHistoryOptions, PromptHistoryBound, PromptHistoryBounds, PromptHistoryCursor, PromptHistoryCursorSession, PromptHistoryEntry, PromptHistoryProvider, PromptHistoryResult, PromptHistoryResumeState, PromptHistoryStats, PromptHistoryUsage, } from './promptHistory';
15
+ export { HUMAN_CLAUDE_ENTRYPOINTS, HUMAN_CODEX_SOURCES, humanPromptText, isHumanPrompt, } from './humanPrompt';
16
+ export type { HumanPromptProvider } from './humanPrompt';
13
17
  export { computeSessionFileStats, firstUserPrompt, providerContextSizeFn, readSessionFileStats, } from './sessionStats';
14
18
  export { readSessionReportInputs } from './report/sessionReportInputs';
15
19
  export type { SessionReportInputs } from './report/sessionReportInputs';
@@ -154,27 +158,44 @@ export { calculateCompactionLedger, formatCompactionLedger } from './analytics/c
154
158
  export type { CompactionLedger } from './analytics/compactionLedger';
155
159
  export { generateHtmlReport, parseTranscript, parseTranscriptFromEvents, openInBrowser, } from './report';
156
160
  export type { TranscriptContentBlock, TranscriptEntry, HtmlReportOptions } from './report';
157
- export { readActiveCredentials, writeActiveCredentials } from './credentialIO';
158
- export { readClaudeMaxCredentials, readClaudeMaxAccessTokenSync } from './credentials';
161
+ export { readActiveCredentials, writeActiveCredentials, deleteStoredCredentials, } from './credentialIO';
162
+ export { readClaudeMaxCredentials, readClaudeMaxCredentialsRaw, readClaudeMaxAccessTokenSync, } from './credentials';
159
163
  export type { ClaudeMaxCredentials } from './credentials';
164
+ export { parseClaudeCredentialBlob, claudeCredentialFreshness, isNewerClaudeCredential, resolveClaudeRefreshExpiry, CLAUDE_ACCESS_TOKEN_LIFETIME_MS, CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS, } from './claudeCredentials';
165
+ export type { ClaudeOauthCredentials } from './claudeCredentials';
166
+ export { parseAuthJson as parseCodexAuthJson, readAuthIdentityFromRaw as readCodexAuthIdentity, readLastRefresh as readCodexLastRefresh, readAccessTokenExpiry as readCodexAccessTokenExpiry, identitiesMatch as codexIdentitiesMatch, } from './codexAuth';
167
+ export type { CodexAuthIdentity, CodexAuthJsonFile } from './codexAuth';
160
168
  export { ensureDefaultAccounts } from './ensureDefaultAccounts';
161
169
  export type { EnsureDefaultAccountStatus, EnsureDefaultAccountsOptions, EnsureDefaultAccountsResult, } from './ensureDefaultAccounts';
162
- export { readAccountRegistry, writeAccountRegistry, readActiveClaudeAccount, addCurrentAccount, switchToAccount, resolveActiveClaudeHome, applyActiveClaudeToLiveHome, reconcileClaudeAuthState, removeAccount, listAccounts, getActiveAccount, resolveActiveClaudeAccount, isMultiAccountEnabled, } from './accounts';
170
+ export { readAccountRegistry, writeAccountRegistry, readActiveClaudeAccount, addCurrentAccount, switchToAccount, switchToAccountAsync, syncClaudeLiveState, cleanupAbandonedClaudeLogins, resolveActiveClaudeHome, applyActiveClaudeToLiveHome, reconcileClaudeAuthState, removeAccount, listAccounts, getActiveAccount, resolveActiveClaudeAccount, isMultiAccountEnabled, } from './accounts';
163
171
  export type { AccountEntry, AccountRegistry, ActiveAccountInfo, AccountManagerResult, } from './accounts';
164
- export { beginAccountLogin, getAccountLoginStatus, getAccountLoginStatusAsync, finalizeAccountLogin, finalizeAccountLoginAsync, spawnAccountLogin, switchAccount, switchAccountAsync, listAllAccounts, resolveClaudeLoginCommand, } from './accountManager';
165
- export type { AccountLoginCommand, AccountLoginState, AccountLoginStatus, BeginAccountLoginResult, FinalizeAccountLoginOptions, ListAllAccountsResult, SpawnAccountLoginOptions, } from './accountManager';
172
+ export { beginAccountLogin, getAccountLoginStatus, getAccountLoginStatusAsync, finalizeAccountLogin, finalizeAccountLoginAsync, spawnAccountLogin, switchAccount, switchAccountAsync, undoLastSwitch, getLastSwitch, listAllAccounts, resolveClaudeLoginCommand, } from './accountManager';
173
+ export type { AccountLoginCommand, AccountLoginState, AccountLoginStatus, BeginAccountLoginOptions, BeginAccountLoginResult, BeginAccountLoginSuccess, FinalizeAccountLoginOptions, ListAllAccountsResult, SpawnAccountLoginOptions, } from './accountManager';
174
+ export { readLastSwitch, getLastSwitchPath } from './accountSwitch';
175
+ export type { LastSwitchRecord, SwitchAccountOptions, SwitchAccountResult, SwitchVerification, } from './accountSwitch';
176
+ export { syncLiveAccountState, syncLiveAccountStateSync, cleanupAbandonedLogins, } from './accountSync';
177
+ export type { SyncLiveAccountStateOptions, CleanupAbandonedLoginsResult } from './accountSync';
178
+ export type { ProviderSyncReport, SyncReason, SyncReport } from './accountSyncTypes';
179
+ export { getAccountHealth, listAccountsWithHealth, readHealthSidecar, getHealthSidecarPath, } from './accountHealth';
180
+ export type { AccountHealth, AccountHealthOptions, AccountHealthSidecar, AccountHealthSource, AccountHealthState, AccountView, } from './accountHealth';
181
+ export { getAccountLaunchEnv } from './accountLaunch';
182
+ export type { AccountLaunchEnv, AccountLaunchOptions } from './accountLaunch';
183
+ export { refreshInactiveAccounts, keepAliveCommand } from './keepAlive';
184
+ export type { KeepAliveRunner, RefreshInactiveAccountsOptions, RefreshInactiveAccountsResult, } from './keepAlive';
185
+ export { findRunningProcesses, findRunningProcessesSync, detectRunningAccountConsumers, detectRunningAccountConsumersSync, describeAccountConsumer, ACCOUNT_CONSUMER_REACHABILITY, } from './processDetection';
186
+ export type { AccountConsumerKind, RunningAccountConsumer, RunningProcess, } from './processDetection';
166
187
  export { getAccountsDir, readSavedAccountRegistry, writeSavedAccountRegistry, listSavedAccountProfiles, getActiveSavedAccount, upsertSavedAccountProfile, setActiveSavedAccount, replaceSavedAccountProfiles, removeSavedAccountProfile, } from './accountRegistry';
167
- export type { AccountProviderId, AccountIdentityMetadata, ResolvedActiveAccount, SavedAccountProfile, SavedAccountRegistry, } from './accountRegistry';
188
+ export type { AccountProviderId, AccountIdentityMetadata, AccountProfileOrigin, ResolvedActiveAccount, SavedAccountProfile, SavedAccountRegistry, } from './accountRegistry';
168
189
  export { ACCOUNT_PROVIDER_IDS } from './accountRegistry';
169
190
  export { getActiveAccountStatus } from './accountStatus';
170
191
  export type { ActiveAccountStatus, ActiveAccountStatusOptions, ActiveProviderAccountStatus, } from './accountStatus';
171
192
  export { onAccountsChanged } from './accountChanges';
172
193
  export type { AccountsChangedEvent, OnAccountsChangedOptions } from './accountChanges';
173
- export { getClaudeProfilesDir, getClaudeProfileHome, claudeKeychainSuffix, claudeKeychainService, isClaudeProfileAuthenticated, readClaudeProfileIdentity, } from './claudeProfiles';
194
+ export { getClaudeProfilesDir, getClaudeProfileHome, getLiveClaudeHome, getDefaultClaudeHome, getClaudeConfigPath, claudeKeychainSuffix, claudeKeychainService, claudeKeychainAccountName, buildClaudeChildEnv, CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV, isClaudeProfileAuthenticated, readClaudeProfileIdentity, readLiveClaudeIdentity, } from './claudeProfiles';
174
195
  export type { ClaudeProfileIdentity } from './claudeProfiles';
175
- export { getCodexProfilesDir, getCodexProfileHome, getCodexMonitoringHomes, getSystemCodexHome, listCodexAccounts, getActiveCodexAccount, resolveActiveCodexAccount, resolveSidekickCodexHome, getCodexExecutionEnv, prepareCodexAccount, prepareCodexAccountAsync, finalizeCodexAccount, finalizeCodexAccountAsync, switchToCodexAccount, switchToCodexAccountAsync, removeCodexAccount, } from './codexProfiles';
176
- export type { CodexAccountManagerResult } from './codexProfiles';
177
- export { setTerminalActiveProfile, installShellHook, uninstallShellHook, isShellHookInstalled, writeLauncher, removeLauncher, } from './terminalSync';
196
+ export { getCodexProfilesDir, getCodexProfileHome, getCodexMonitoringHomes, getSystemCodexHome, listCodexAccounts, getActiveCodexAccount, resolveActiveCodexAccount, resolveSidekickCodexHome, getCodexExecutionEnv, prepareCodexAccount, prepareCodexAccountAsync, finalizeCodexAccount, finalizeCodexAccountAsync, switchToCodexAccount, switchToCodexAccountAsync, removeCodexAccount, syncCodexLiveState, cleanupAbandonedCodexLogins, getCodexCredentialStoreMode, CODEX_KEYRING_FIX_HINT, } from './codexProfiles';
197
+ export type { CodexAccountManagerResult, CodexCredentialStoreMode } from './codexProfiles';
198
+ export { writeLauncher, removeLauncher } from './terminalSync';
178
199
  export { DEFAULT_AUTO_SWITCH_CONFIG, decideAutoSwitch, AutoSwitchController } from './autoSwitch';
179
200
  export type { AutoSwitchActiveAccount, AutoSwitchCandidate, AutoSwitchConfig, AutoSwitchControllerOptions, AutoSwitchDecision, AutoSwitchTransitionEvent, } from './autoSwitch';
180
201
  export { FIVE_HOUR_WINDOW_MS, QUOTA_PROVIDER_IDS, SEVEN_DAY_WINDOW_MS, fetchQuota, projectQuotaWindow, withQuotaProjections, } from './quota';
package/dist/index.js CHANGED
@@ -3,15 +3,16 @@
3
3
  * Public API for sidekick-shared.
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DirectoryListingCache = exports.fileFingerprintParts = exports.fileFingerprint = exports.observedSessionSourceFromProvider = exports.ObservedSessionCollector = exports.weekKey = exports.usageBucketKey = exports.summarizeUsageRows = exports.bucketUsage = exports.importSessionHistory = exports.ACTIVE_SESSION_MTIME_THRESHOLD_MS = exports.sessionSummaryFromStats = exports.removeSessionSummary = exports.markFileImported = exports.isFileImported = exports.applySessionSummary = exports.pruneUsageCache = exports.getUsageCacheDir = exports.collectUsageEvents = exports.USAGE_CACHE_VERSION = exports.MAX_USAGE_CACHE_FILES = exports.findActiveBillingBlock = exports.computeBillingBlocks = exports.BILLING_BLOCK_DURATION_MS = exports.writeStateFile = exports.readStateFile = exports.quotaToStateFile = exports.getStateFilePath = exports.billingBlockToStateFile = exports.STATE_FILE_SCHEMA_VERSION = exports.STATE_FILE_NAME = exports.sessionFingerprintParts = exports.fingerprintString = exports.readSessionReportInputs = exports.readSessionFileStats = exports.providerContextSizeFn = exports.firstUserPrompt = exports.computeSessionFileStats = exports.readSessionTranscript = exports.listRecentSessions = exports.projectSessionTranscript = exports.estimateSerializedTokens = exports.estimateTextTokens = exports.TOKEN_TOTAL_LABEL = exports.TOKEN_CONTEXT_LABEL = exports.sumTokenTotals = exports.summarizeTokens = exports.calculateNormalizedUsageCost = exports.extractNormalizedUsage = exports.normalizeProviderUsage = void 0;
7
- exports.createSessionProviders = exports.SESSION_PROVIDER_IDS = exports.renderHandoffUrlTemplate = exports.addNote = exports.decisionFingerprint = exports.addDecision = exports.completeTask = exports.addTask = exports.withFileLockSync = exports.updateJsonStoreAtomicSync = 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.splitWatchedPath = void 0;
8
- exports.listSessionPreviews = exports.readCodexHistory = exports.parseMcpToolName = exports.scanSubagentTraces = exports.findAllSessionsWithWorktrees = exports.discoverWorktreeSiblings = exports.resolveWorktreeMainRepo = exports.getAllClaudeProjectFolders = exports.decodeEncodedPath = exports.getMostRecentlyActiveSessionDir = exports.findSubdirectorySessionDirs = exports.findSessionFilesWithStats = exports.findSessionsInDirectory = exports.findAllClaudeSessions = exports.findActiveClaudeSession = exports.discoverSessionDirectory = exports.getClaudeSessionDirectory = exports.encodeClaudeWorkspacePath = exports.SESSION_ACTIVITY_STALENESS_MS = exports.SESSION_ACTIVITY_GRACE_PERIOD_MS = exports.refreshSessionActivityState = exports.detectSessionActivity = exports.classifySessionActivity = 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.walkRolloutFilesAsync = exports.walkRolloutFiles = exports.findCodexRolloutFile = exports.CodexProvider = exports.getOpenCodeDataDir = exports.OpenCodeProvider = exports.ClaudeCodeProvider = exports.getAllDetectedProviders = exports.detectProvider = exports._resetProviderDetectionCache = exports.getObservedActivityReason = exports.derivePendingUserRequestV1 = exports.createProviderSessionAdapterV1 = void 0;
9
- 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.parseLocalDateKey = exports.formatTokenCount = exports.formatLocalDateKey = exports.formatDurationMs = exports.addLocalDays = exports.createJsonlTail = exports.toFollowEvents = exports.resolveSessionPath = 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 = void 0;
10
- 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.describeCostProvenance = exports.classifyCostProvenance = 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.MAX_SNAPSHOT_FILES = exports.pruneSnapshots = exports.isSnapshotValid = exports.deleteSnapshot = exports.loadSnapshot = exports.saveSnapshot = exports.SessionMonitor = exports.parseTodoDependencies = exports.EventAggregator = exports.getRandomPhrase = void 0;
11
- 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 = exports.switchAccount = exports.spawnAccountLogin = exports.finalizeAccountLoginAsync = exports.finalizeAccountLogin = exports.getAccountLoginStatusAsync = void 0;
12
- 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.quotaFromStatuslinePayload = exports.parseClaudeStatuslinePayload = exports.evaluateQuotaThresholds = exports.describeQuotaThresholdAlert = exports.DEFAULT_QUOTA_THRESHOLDS = exports.QUOTA_FRESH_MAX_AGE_MS = exports.QUOTA_AGING_MAX_AGE_MS = exports.formatQuotaAge = exports.classifyQuotaFreshness = exports.resolveQuota = exports.writeQuotaSnapshot = exports.readQuotaSnapshot = exports.QuotaPoller = exports.describeQuotaFailure = exports.withQuotaProjections = exports.projectQuotaWindow = exports.fetchQuota = exports.SEVEN_DAY_WINDOW_MS = exports.QUOTA_PROVIDER_IDS = exports.FIVE_HOUR_WINDOW_MS = exports.AutoSwitchController = void 0;
13
- 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 = 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 = void 0;
14
- exports.fetchProviderServiceStatus = exports.diagnoseProviderFailure = exports.mergeFailingToolWindows = exports.failingToolTrend = exports.FAILING_TOOL_TREND_ARROWS = exports.scopePeakHoursToSessionProvider = exports.PEAK_HOURS_DESCRIPTION = exports.PEAK_HOURS_CACHE_MS = exports.isClaudeCodeSessionProvider = exports.getScheduledPeakHoursState = exports.fetchPeakHoursStatus = exports.DEFAULT_PEAK_HOURS_TIMEOUT_MS = exports.createPeakHoursNotApplicableState = exports._resetPeakHoursCache = exports.runDoctor = exports.getSessionDiagnostics = exports.formatHealthReport = exports.toLegacyProviderStatus = 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 = void 0;
6
+ exports.weekKey = exports.usageBucketKey = exports.summarizeUsageRows = exports.bucketUsage = exports.importSessionHistory = exports.ACTIVE_SESSION_MTIME_THRESHOLD_MS = exports.sessionSummaryFromStats = exports.removeSessionSummary = exports.markFileImported = exports.isFileImported = exports.applySessionSummary = exports.pruneUsageCache = exports.getUsageCacheDir = exports.collectUsageEvents = exports.USAGE_CACHE_VERSION = exports.MAX_USAGE_CACHE_FILES = exports.findActiveBillingBlock = exports.computeBillingBlocks = exports.BILLING_BLOCK_DURATION_MS = exports.writeStateFile = exports.readStateFile = exports.quotaToStateFile = exports.getStateFilePath = exports.billingBlockToStateFile = exports.STATE_FILE_SCHEMA_VERSION = exports.STATE_FILE_NAME = exports.sessionFingerprintParts = exports.fingerprintString = exports.readSessionReportInputs = exports.readSessionFileStats = exports.providerContextSizeFn = exports.firstUserPrompt = exports.computeSessionFileStats = exports.isHumanPrompt = exports.humanPromptText = exports.HUMAN_CODEX_SOURCES = exports.HUMAN_CLAUDE_ENTRYPOINTS = exports.collectPromptHistory = exports.readSessionTranscript = exports.listRecentSessions = exports.projectSessionTranscript = exports.estimateSerializedTokens = exports.estimateTextTokens = exports.TOKEN_TOTAL_LABEL = exports.TOKEN_CONTEXT_LABEL = exports.sumTokenTotals = exports.summarizeTokens = exports.calculateNormalizedUsageCost = exports.extractNormalizedUsage = exports.normalizeProviderUsage = void 0;
7
+ exports.addDecision = exports.completeTask = exports.addTask = exports.withFileLockSync = exports.updateJsonStoreAtomicSync = 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.splitWatchedPath = exports.DirectoryListingCache = exports.fileFingerprintParts = exports.fileFingerprint = exports.observedSessionSourceFromProvider = exports.ObservedSessionCollector = void 0;
8
+ exports.discoverWorktreeSiblings = exports.resolveWorktreeMainRepo = exports.getAllClaudeProjectFolders = exports.decodeEncodedPath = exports.getMostRecentlyActiveSessionDir = exports.findSubdirectorySessionDirs = exports.findSessionFilesWithStats = exports.findSessionsInDirectory = exports.findAllClaudeSessions = exports.findActiveClaudeSession = exports.discoverSessionDirectory = exports.getClaudeSessionDirectory = exports.encodeClaudeWorkspacePath = exports.SESSION_ACTIVITY_STALENESS_MS = exports.SESSION_ACTIVITY_GRACE_PERIOD_MS = exports.refreshSessionActivityState = exports.detectSessionActivity = exports.classifySessionActivity = 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.walkRolloutFilesAsync = exports.walkRolloutFiles = exports.findCodexRolloutFile = exports.CodexProvider = exports.getOpenCodeDataDir = exports.OpenCodeProvider = exports.ClaudeCodeProvider = exports.getAllDetectedProviders = exports.detectProvider = exports._resetProviderDetectionCache = exports.getObservedActivityReason = exports.derivePendingUserRequestV1 = exports.createProviderSessionAdapterV1 = exports.createSessionProviders = exports.SESSION_PROVIDER_IDS = exports.renderHandoffUrlTemplate = exports.addNote = exports.decisionFingerprint = void 0;
9
+ exports.formatSessionJson = exports.formatSessionMarkdown = exports.formatSessionText = exports.classifyNoise = exports.shouldMergeWithPrevious = exports.classifyFollowEvent = exports.classifyMessage = exports.getSoftNoiseReason = exports.isHardNoiseFollowEvent = exports.isHardNoise = exports.formatToolSummary = exports.parseLocalDateKey = exports.formatTokenCount = exports.formatLocalDateKey = exports.formatDurationMs = exports.addLocalDays = exports.createJsonlTail = exports.toFollowEvents = exports.resolveSessionPath = 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 = exports.scanSubagentTraces = exports.findAllSessionsWithWorktrees = void 0;
10
+ exports.readCodexLastRefresh = exports.readCodexAuthIdentity = exports.parseCodexAuthJson = exports.CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS = exports.CLAUDE_ACCESS_TOKEN_LIFETIME_MS = exports.resolveClaudeRefreshExpiry = exports.isNewerClaudeCredential = exports.claudeCredentialFreshness = exports.parseClaudeCredentialBlob = exports.readClaudeMaxAccessTokenSync = exports.readClaudeMaxCredentialsRaw = exports.readClaudeMaxCredentials = exports.deleteStoredCredentials = exports.writeActiveCredentials = exports.readActiveCredentials = exports.openInBrowser = exports.parseTranscriptFromEvents = exports.parseTranscript = exports.generateHtmlReport = exports.formatCompactionLedger = exports.calculateCompactionLedger = exports.describeCostProvenance = exports.classifyCostProvenance = 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.MAX_SNAPSHOT_FILES = exports.pruneSnapshots = exports.isSnapshotValid = 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 = void 0;
11
+ exports.getAccountsDir = exports.ACCOUNT_CONSUMER_REACHABILITY = exports.describeAccountConsumer = exports.detectRunningAccountConsumersSync = exports.detectRunningAccountConsumers = exports.findRunningProcessesSync = exports.findRunningProcesses = exports.keepAliveCommand = exports.refreshInactiveAccounts = exports.getAccountLaunchEnv = exports.getHealthSidecarPath = exports.readHealthSidecar = exports.listAccountsWithHealth = exports.getAccountHealth = exports.cleanupAbandonedLogins = exports.syncLiveAccountStateSync = exports.syncLiveAccountState = exports.getLastSwitchPath = exports.readLastSwitch = exports.resolveClaudeLoginCommand = exports.listAllAccounts = exports.getLastSwitch = exports.undoLastSwitch = 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.cleanupAbandonedClaudeLogins = exports.syncClaudeLiveState = exports.switchToAccountAsync = exports.switchToAccount = exports.addCurrentAccount = exports.readActiveClaudeAccount = exports.writeAccountRegistry = exports.readAccountRegistry = exports.ensureDefaultAccounts = exports.codexIdentitiesMatch = exports.readCodexAccessTokenExpiry = void 0;
12
+ exports.FIVE_HOUR_WINDOW_MS = exports.AutoSwitchController = exports.decideAutoSwitch = exports.DEFAULT_AUTO_SWITCH_CONFIG = exports.removeLauncher = exports.writeLauncher = exports.CODEX_KEYRING_FIX_HINT = exports.getCodexCredentialStoreMode = exports.cleanupAbandonedCodexLogins = exports.syncCodexLiveState = 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.readLiveClaudeIdentity = exports.readClaudeProfileIdentity = exports.isClaudeProfileAuthenticated = exports.CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV = exports.buildClaudeChildEnv = exports.claudeKeychainAccountName = exports.claudeKeychainService = exports.claudeKeychainSuffix = exports.getClaudeConfigPath = exports.getDefaultClaudeHome = exports.getLiveClaudeHome = 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 = void 0;
13
+ 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.quotaFromStatuslinePayload = exports.parseClaudeStatuslinePayload = exports.evaluateQuotaThresholds = exports.describeQuotaThresholdAlert = exports.DEFAULT_QUOTA_THRESHOLDS = exports.QUOTA_FRESH_MAX_AGE_MS = exports.QUOTA_AGING_MAX_AGE_MS = exports.formatQuotaAge = exports.classifyQuotaFreshness = exports.resolveQuota = exports.writeQuotaSnapshot = exports.readQuotaSnapshot = exports.QuotaPoller = exports.describeQuotaFailure = exports.withQuotaProjections = exports.projectQuotaWindow = exports.fetchQuota = exports.SEVEN_DAY_WINDOW_MS = exports.QUOTA_PROVIDER_IDS = void 0;
14
+ 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 = 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 = void 0;
15
+ exports.fetchProviderServiceStatus = exports.diagnoseProviderFailure = exports.mergeFailingToolWindows = exports.failingToolTrend = exports.FAILING_TOOL_TREND_ARROWS = exports.scopePeakHoursToSessionProvider = exports.PEAK_HOURS_DESCRIPTION = exports.PEAK_HOURS_CACHE_MS = exports.isClaudeCodeSessionProvider = exports.getScheduledPeakHoursState = exports.fetchPeakHoursStatus = exports.DEFAULT_PEAK_HOURS_TIMEOUT_MS = exports.createPeakHoursNotApplicableState = exports._resetPeakHoursCache = exports.runDoctor = exports.getSessionDiagnostics = exports.formatHealthReport = exports.toLegacyProviderStatus = 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 = void 0;
15
16
  var usageNormalization_1 = require("./usageNormalization");
16
17
  Object.defineProperty(exports, "normalizeProviderUsage", { enumerable: true, get: function () { return usageNormalization_1.normalizeProviderUsage; } });
17
18
  Object.defineProperty(exports, "extractNormalizedUsage", { enumerable: true, get: function () { return usageNormalization_1.extractNormalizedUsage; } });
@@ -29,6 +30,13 @@ Object.defineProperty(exports, "projectSessionTranscript", { enumerable: true, g
29
30
  var sessionTranscripts_1 = require("./sessionTranscripts");
30
31
  Object.defineProperty(exports, "listRecentSessions", { enumerable: true, get: function () { return sessionTranscripts_1.listRecentSessions; } });
31
32
  Object.defineProperty(exports, "readSessionTranscript", { enumerable: true, get: function () { return sessionTranscripts_1.readSessionTranscript; } });
33
+ var promptHistory_1 = require("./promptHistory");
34
+ Object.defineProperty(exports, "collectPromptHistory", { enumerable: true, get: function () { return promptHistory_1.collectPromptHistory; } });
35
+ var humanPrompt_1 = require("./humanPrompt");
36
+ Object.defineProperty(exports, "HUMAN_CLAUDE_ENTRYPOINTS", { enumerable: true, get: function () { return humanPrompt_1.HUMAN_CLAUDE_ENTRYPOINTS; } });
37
+ Object.defineProperty(exports, "HUMAN_CODEX_SOURCES", { enumerable: true, get: function () { return humanPrompt_1.HUMAN_CODEX_SOURCES; } });
38
+ Object.defineProperty(exports, "humanPromptText", { enumerable: true, get: function () { return humanPrompt_1.humanPromptText; } });
39
+ Object.defineProperty(exports, "isHumanPrompt", { enumerable: true, get: function () { return humanPrompt_1.isHumanPrompt; } });
32
40
  var sessionStats_1 = require("./sessionStats");
33
41
  Object.defineProperty(exports, "computeSessionFileStats", { enumerable: true, get: function () { return sessionStats_1.computeSessionFileStats; } });
34
42
  Object.defineProperty(exports, "firstUserPrompt", { enumerable: true, get: function () { return sessionStats_1.firstUserPrompt; } });
@@ -355,10 +363,25 @@ Object.defineProperty(exports, "openInBrowser", { enumerable: true, get: functio
355
363
  var credentialIO_1 = require("./credentialIO");
356
364
  Object.defineProperty(exports, "readActiveCredentials", { enumerable: true, get: function () { return credentialIO_1.readActiveCredentials; } });
357
365
  Object.defineProperty(exports, "writeActiveCredentials", { enumerable: true, get: function () { return credentialIO_1.writeActiveCredentials; } });
366
+ Object.defineProperty(exports, "deleteStoredCredentials", { enumerable: true, get: function () { return credentialIO_1.deleteStoredCredentials; } });
358
367
  // Credentials
359
368
  var credentials_1 = require("./credentials");
360
369
  Object.defineProperty(exports, "readClaudeMaxCredentials", { enumerable: true, get: function () { return credentials_1.readClaudeMaxCredentials; } });
370
+ Object.defineProperty(exports, "readClaudeMaxCredentialsRaw", { enumerable: true, get: function () { return credentials_1.readClaudeMaxCredentialsRaw; } });
361
371
  Object.defineProperty(exports, "readClaudeMaxAccessTokenSync", { enumerable: true, get: function () { return credentials_1.readClaudeMaxAccessTokenSync; } });
372
+ var claudeCredentials_1 = require("./claudeCredentials");
373
+ Object.defineProperty(exports, "parseClaudeCredentialBlob", { enumerable: true, get: function () { return claudeCredentials_1.parseClaudeCredentialBlob; } });
374
+ Object.defineProperty(exports, "claudeCredentialFreshness", { enumerable: true, get: function () { return claudeCredentials_1.claudeCredentialFreshness; } });
375
+ Object.defineProperty(exports, "isNewerClaudeCredential", { enumerable: true, get: function () { return claudeCredentials_1.isNewerClaudeCredential; } });
376
+ Object.defineProperty(exports, "resolveClaudeRefreshExpiry", { enumerable: true, get: function () { return claudeCredentials_1.resolveClaudeRefreshExpiry; } });
377
+ Object.defineProperty(exports, "CLAUDE_ACCESS_TOKEN_LIFETIME_MS", { enumerable: true, get: function () { return claudeCredentials_1.CLAUDE_ACCESS_TOKEN_LIFETIME_MS; } });
378
+ Object.defineProperty(exports, "CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS", { enumerable: true, get: function () { return claudeCredentials_1.CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS; } });
379
+ var codexAuth_1 = require("./codexAuth");
380
+ Object.defineProperty(exports, "parseCodexAuthJson", { enumerable: true, get: function () { return codexAuth_1.parseAuthJson; } });
381
+ Object.defineProperty(exports, "readCodexAuthIdentity", { enumerable: true, get: function () { return codexAuth_1.readAuthIdentityFromRaw; } });
382
+ Object.defineProperty(exports, "readCodexLastRefresh", { enumerable: true, get: function () { return codexAuth_1.readLastRefresh; } });
383
+ Object.defineProperty(exports, "readCodexAccessTokenExpiry", { enumerable: true, get: function () { return codexAuth_1.readAccessTokenExpiry; } });
384
+ Object.defineProperty(exports, "codexIdentitiesMatch", { enumerable: true, get: function () { return codexAuth_1.identitiesMatch; } });
362
385
  // Accounts
363
386
  var ensureDefaultAccounts_1 = require("./ensureDefaultAccounts");
364
387
  Object.defineProperty(exports, "ensureDefaultAccounts", { enumerable: true, get: function () { return ensureDefaultAccounts_1.ensureDefaultAccounts; } });
@@ -368,6 +391,9 @@ Object.defineProperty(exports, "writeAccountRegistry", { enumerable: true, get:
368
391
  Object.defineProperty(exports, "readActiveClaudeAccount", { enumerable: true, get: function () { return accounts_1.readActiveClaudeAccount; } });
369
392
  Object.defineProperty(exports, "addCurrentAccount", { enumerable: true, get: function () { return accounts_1.addCurrentAccount; } });
370
393
  Object.defineProperty(exports, "switchToAccount", { enumerable: true, get: function () { return accounts_1.switchToAccount; } });
394
+ Object.defineProperty(exports, "switchToAccountAsync", { enumerable: true, get: function () { return accounts_1.switchToAccountAsync; } });
395
+ Object.defineProperty(exports, "syncClaudeLiveState", { enumerable: true, get: function () { return accounts_1.syncClaudeLiveState; } });
396
+ Object.defineProperty(exports, "cleanupAbandonedClaudeLogins", { enumerable: true, get: function () { return accounts_1.cleanupAbandonedClaudeLogins; } });
371
397
  Object.defineProperty(exports, "resolveActiveClaudeHome", { enumerable: true, get: function () { return accounts_1.resolveActiveClaudeHome; } });
372
398
  Object.defineProperty(exports, "applyActiveClaudeToLiveHome", { enumerable: true, get: function () { return accounts_1.applyActiveClaudeToLiveHome; } });
373
399
  Object.defineProperty(exports, "reconcileClaudeAuthState", { enumerable: true, get: function () { return accounts_1.reconcileClaudeAuthState; } });
@@ -385,8 +411,34 @@ Object.defineProperty(exports, "finalizeAccountLoginAsync", { enumerable: true,
385
411
  Object.defineProperty(exports, "spawnAccountLogin", { enumerable: true, get: function () { return accountManager_1.spawnAccountLogin; } });
386
412
  Object.defineProperty(exports, "switchAccount", { enumerable: true, get: function () { return accountManager_1.switchAccount; } });
387
413
  Object.defineProperty(exports, "switchAccountAsync", { enumerable: true, get: function () { return accountManager_1.switchAccountAsync; } });
414
+ Object.defineProperty(exports, "undoLastSwitch", { enumerable: true, get: function () { return accountManager_1.undoLastSwitch; } });
415
+ Object.defineProperty(exports, "getLastSwitch", { enumerable: true, get: function () { return accountManager_1.getLastSwitch; } });
388
416
  Object.defineProperty(exports, "listAllAccounts", { enumerable: true, get: function () { return accountManager_1.listAllAccounts; } });
389
417
  Object.defineProperty(exports, "resolveClaudeLoginCommand", { enumerable: true, get: function () { return accountManager_1.resolveClaudeLoginCommand; } });
418
+ var accountSwitch_1 = require("./accountSwitch");
419
+ Object.defineProperty(exports, "readLastSwitch", { enumerable: true, get: function () { return accountSwitch_1.readLastSwitch; } });
420
+ Object.defineProperty(exports, "getLastSwitchPath", { enumerable: true, get: function () { return accountSwitch_1.getLastSwitchPath; } });
421
+ var accountSync_1 = require("./accountSync");
422
+ Object.defineProperty(exports, "syncLiveAccountState", { enumerable: true, get: function () { return accountSync_1.syncLiveAccountState; } });
423
+ Object.defineProperty(exports, "syncLiveAccountStateSync", { enumerable: true, get: function () { return accountSync_1.syncLiveAccountStateSync; } });
424
+ Object.defineProperty(exports, "cleanupAbandonedLogins", { enumerable: true, get: function () { return accountSync_1.cleanupAbandonedLogins; } });
425
+ var accountHealth_1 = require("./accountHealth");
426
+ Object.defineProperty(exports, "getAccountHealth", { enumerable: true, get: function () { return accountHealth_1.getAccountHealth; } });
427
+ Object.defineProperty(exports, "listAccountsWithHealth", { enumerable: true, get: function () { return accountHealth_1.listAccountsWithHealth; } });
428
+ Object.defineProperty(exports, "readHealthSidecar", { enumerable: true, get: function () { return accountHealth_1.readHealthSidecar; } });
429
+ Object.defineProperty(exports, "getHealthSidecarPath", { enumerable: true, get: function () { return accountHealth_1.getHealthSidecarPath; } });
430
+ var accountLaunch_1 = require("./accountLaunch");
431
+ Object.defineProperty(exports, "getAccountLaunchEnv", { enumerable: true, get: function () { return accountLaunch_1.getAccountLaunchEnv; } });
432
+ var keepAlive_1 = require("./keepAlive");
433
+ Object.defineProperty(exports, "refreshInactiveAccounts", { enumerable: true, get: function () { return keepAlive_1.refreshInactiveAccounts; } });
434
+ Object.defineProperty(exports, "keepAliveCommand", { enumerable: true, get: function () { return keepAlive_1.keepAliveCommand; } });
435
+ var processDetection_1 = require("./processDetection");
436
+ Object.defineProperty(exports, "findRunningProcesses", { enumerable: true, get: function () { return processDetection_1.findRunningProcesses; } });
437
+ Object.defineProperty(exports, "findRunningProcessesSync", { enumerable: true, get: function () { return processDetection_1.findRunningProcessesSync; } });
438
+ Object.defineProperty(exports, "detectRunningAccountConsumers", { enumerable: true, get: function () { return processDetection_1.detectRunningAccountConsumers; } });
439
+ Object.defineProperty(exports, "detectRunningAccountConsumersSync", { enumerable: true, get: function () { return processDetection_1.detectRunningAccountConsumersSync; } });
440
+ Object.defineProperty(exports, "describeAccountConsumer", { enumerable: true, get: function () { return processDetection_1.describeAccountConsumer; } });
441
+ Object.defineProperty(exports, "ACCOUNT_CONSUMER_REACHABILITY", { enumerable: true, get: function () { return processDetection_1.ACCOUNT_CONSUMER_REACHABILITY; } });
390
442
  var accountRegistry_1 = require("./accountRegistry");
391
443
  Object.defineProperty(exports, "getAccountsDir", { enumerable: true, get: function () { return accountRegistry_1.getAccountsDir; } });
392
444
  Object.defineProperty(exports, "readSavedAccountRegistry", { enumerable: true, get: function () { return accountRegistry_1.readSavedAccountRegistry; } });
@@ -406,10 +458,17 @@ Object.defineProperty(exports, "onAccountsChanged", { enumerable: true, get: fun
406
458
  var claudeProfiles_1 = require("./claudeProfiles");
407
459
  Object.defineProperty(exports, "getClaudeProfilesDir", { enumerable: true, get: function () { return claudeProfiles_1.getClaudeProfilesDir; } });
408
460
  Object.defineProperty(exports, "getClaudeProfileHome", { enumerable: true, get: function () { return claudeProfiles_1.getClaudeProfileHome; } });
461
+ Object.defineProperty(exports, "getLiveClaudeHome", { enumerable: true, get: function () { return claudeProfiles_1.getLiveClaudeHome; } });
462
+ Object.defineProperty(exports, "getDefaultClaudeHome", { enumerable: true, get: function () { return claudeProfiles_1.getDefaultClaudeHome; } });
463
+ Object.defineProperty(exports, "getClaudeConfigPath", { enumerable: true, get: function () { return claudeProfiles_1.getClaudeConfigPath; } });
409
464
  Object.defineProperty(exports, "claudeKeychainSuffix", { enumerable: true, get: function () { return claudeProfiles_1.claudeKeychainSuffix; } });
410
465
  Object.defineProperty(exports, "claudeKeychainService", { enumerable: true, get: function () { return claudeProfiles_1.claudeKeychainService; } });
466
+ Object.defineProperty(exports, "claudeKeychainAccountName", { enumerable: true, get: function () { return claudeProfiles_1.claudeKeychainAccountName; } });
467
+ Object.defineProperty(exports, "buildClaudeChildEnv", { enumerable: true, get: function () { return claudeProfiles_1.buildClaudeChildEnv; } });
468
+ Object.defineProperty(exports, "CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV", { enumerable: true, get: function () { return claudeProfiles_1.CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV; } });
411
469
  Object.defineProperty(exports, "isClaudeProfileAuthenticated", { enumerable: true, get: function () { return claudeProfiles_1.isClaudeProfileAuthenticated; } });
412
470
  Object.defineProperty(exports, "readClaudeProfileIdentity", { enumerable: true, get: function () { return claudeProfiles_1.readClaudeProfileIdentity; } });
471
+ Object.defineProperty(exports, "readLiveClaudeIdentity", { enumerable: true, get: function () { return claudeProfiles_1.readLiveClaudeIdentity; } });
413
472
  var codexProfiles_1 = require("./codexProfiles");
414
473
  Object.defineProperty(exports, "getCodexProfilesDir", { enumerable: true, get: function () { return codexProfiles_1.getCodexProfilesDir; } });
415
474
  Object.defineProperty(exports, "getCodexProfileHome", { enumerable: true, get: function () { return codexProfiles_1.getCodexProfileHome; } });
@@ -427,11 +486,11 @@ Object.defineProperty(exports, "finalizeCodexAccountAsync", { enumerable: true,
427
486
  Object.defineProperty(exports, "switchToCodexAccount", { enumerable: true, get: function () { return codexProfiles_1.switchToCodexAccount; } });
428
487
  Object.defineProperty(exports, "switchToCodexAccountAsync", { enumerable: true, get: function () { return codexProfiles_1.switchToCodexAccountAsync; } });
429
488
  Object.defineProperty(exports, "removeCodexAccount", { enumerable: true, get: function () { return codexProfiles_1.removeCodexAccount; } });
489
+ Object.defineProperty(exports, "syncCodexLiveState", { enumerable: true, get: function () { return codexProfiles_1.syncCodexLiveState; } });
490
+ Object.defineProperty(exports, "cleanupAbandonedCodexLogins", { enumerable: true, get: function () { return codexProfiles_1.cleanupAbandonedCodexLogins; } });
491
+ Object.defineProperty(exports, "getCodexCredentialStoreMode", { enumerable: true, get: function () { return codexProfiles_1.getCodexCredentialStoreMode; } });
492
+ Object.defineProperty(exports, "CODEX_KEYRING_FIX_HINT", { enumerable: true, get: function () { return codexProfiles_1.CODEX_KEYRING_FIX_HINT; } });
430
493
  var terminalSync_1 = require("./terminalSync");
431
- Object.defineProperty(exports, "setTerminalActiveProfile", { enumerable: true, get: function () { return terminalSync_1.setTerminalActiveProfile; } });
432
- Object.defineProperty(exports, "installShellHook", { enumerable: true, get: function () { return terminalSync_1.installShellHook; } });
433
- Object.defineProperty(exports, "uninstallShellHook", { enumerable: true, get: function () { return terminalSync_1.uninstallShellHook; } });
434
- Object.defineProperty(exports, "isShellHookInstalled", { enumerable: true, get: function () { return terminalSync_1.isShellHookInstalled; } });
435
494
  Object.defineProperty(exports, "writeLauncher", { enumerable: true, get: function () { return terminalSync_1.writeLauncher; } });
436
495
  Object.defineProperty(exports, "removeLauncher", { enumerable: true, get: function () { return terminalSync_1.removeLauncher; } });
437
496
  var autoSwitch_1 = require("./autoSwitch");
@@ -0,0 +1,44 @@
1
+ import type { AccountProviderId } from './accountRegistry';
2
+ export interface KeepAliveRunner {
3
+ (command: string, args: string[], env: NodeJS.ProcessEnv, timeoutMs: number): Promise<{
4
+ status: number | null;
5
+ stdout: string;
6
+ }>;
7
+ }
8
+ export interface RefreshInactiveAccountsOptions {
9
+ providers?: AccountProviderId[];
10
+ /** Per-account CLI timeout. Default 20 s. */
11
+ timeoutMs?: number;
12
+ /** Report what would run without running it. */
13
+ dryRun?: boolean;
14
+ /** Also refresh accounts whose credential is still fresh. Default false. */
15
+ includeFresh?: boolean;
16
+ runner?: KeepAliveRunner;
17
+ now?: number;
18
+ }
19
+ export interface RefreshInactiveAccountsResult {
20
+ refreshed: Array<{
21
+ id: string;
22
+ providerId: AccountProviderId;
23
+ }>;
24
+ skipped: Array<{
25
+ id: string;
26
+ providerId: AccountProviderId;
27
+ reason: string;
28
+ }>;
29
+ failed: Array<{
30
+ id: string;
31
+ providerId: AccountProviderId;
32
+ error: string;
33
+ }>;
34
+ }
35
+ /** The command each CLI runs to load (and refresh) its stored login. */
36
+ export declare function keepAliveCommand(provider: AccountProviderId): {
37
+ command: string;
38
+ args: string[];
39
+ };
40
+ /**
41
+ * Serialised, bounded refresh of every inactive account that is `expiring`
42
+ * (or `unknown` for Claude). Never touches the live account.
43
+ */
44
+ export declare function refreshInactiveAccounts(options?: RefreshInactiveAccountsOptions): Promise<RefreshInactiveAccountsResult>;
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keepAliveCommand = keepAliveCommand;
4
+ exports.refreshInactiveAccounts = refreshInactiveAccounts;
5
+ /**
6
+ * Opt-in keep-alive for saved-but-inactive accounts. Sidekick never calls the
7
+ * providers' OAuth endpoints itself: it runs the official CLI inside the
8
+ * profile's isolated home and lets the CLI refresh (and rotate) the token
9
+ * where it belongs, then re-reads the store to record the new expiry.
10
+ */
11
+ const child_process_1 = require("child_process");
12
+ const accountHealth_1 = require("./accountHealth");
13
+ const accountLaunch_1 = require("./accountLaunch");
14
+ /** The command each CLI runs to load (and refresh) its stored login. */
15
+ function keepAliveCommand(provider) {
16
+ if (provider === 'codex')
17
+ return { command: 'codex', args: ['login', 'status'] };
18
+ const override = process.env.SIDEKICK_CLAUDE_KEEPALIVE_ARGS?.trim();
19
+ return { command: 'claude', args: override ? override.split(/\s+/) : ['auth', 'status'] };
20
+ }
21
+ const defaultRunner = (command, args, env, timeoutMs) => new Promise((resolve) => {
22
+ try {
23
+ (0, child_process_1.execFile)(command, args, { encoding: 'utf8', env, timeout: timeoutMs, killSignal: 'SIGKILL', windowsHide: true }, (error, stdout) => {
24
+ const status = error
25
+ ? (error.code ?? null)
26
+ : 0;
27
+ resolve({
28
+ status: typeof status === 'number' ? status : null,
29
+ stdout: String(stdout ?? ''),
30
+ });
31
+ });
32
+ }
33
+ catch {
34
+ resolve({ status: null, stdout: '' });
35
+ }
36
+ });
37
+ function eligible(view, includeFresh) {
38
+ if (view.health.isLive)
39
+ return 'live account; the CLI refreshes it in normal use';
40
+ if (view.health.state === 'expired')
41
+ return 'expired; sign in again';
42
+ if (view.health.state === 'missing')
43
+ return 'no stored credentials';
44
+ if (view.health.state === 'fresh' && !includeFresh)
45
+ return 'fresh';
46
+ if (view.providerId === 'codex' && view.health.state === 'unknown')
47
+ return 'api-key login';
48
+ return null;
49
+ }
50
+ /**
51
+ * Serialised, bounded refresh of every inactive account that is `expiring`
52
+ * (or `unknown` for Claude). Never touches the live account.
53
+ */
54
+ async function refreshInactiveAccounts(options = {}) {
55
+ const result = { refreshed: [], skipped: [], failed: [] };
56
+ const timeoutMs = options.timeoutMs ?? 20_000;
57
+ const runner = options.runner ?? defaultRunner;
58
+ const views = (0, accountHealth_1.listAccountsWithHealth)(undefined, { now: options.now }).filter((view) => !options.providers || options.providers.includes(view.providerId));
59
+ for (const view of views) {
60
+ const reason = eligible(view, options.includeFresh ?? false);
61
+ if (reason) {
62
+ result.skipped.push({ id: view.id, providerId: view.providerId, reason });
63
+ continue;
64
+ }
65
+ const launch = (0, accountLaunch_1.getAccountLaunchEnv)(view.providerId, view.id, { materialize: true });
66
+ if (launch.error) {
67
+ result.skipped.push({ id: view.id, providerId: view.providerId, reason: launch.error });
68
+ continue;
69
+ }
70
+ const { command, args } = keepAliveCommand(view.providerId);
71
+ if (options.dryRun) {
72
+ result.skipped.push({
73
+ id: view.id,
74
+ providerId: view.providerId,
75
+ reason: `dry run: would run ${command} ${args.join(' ')}`,
76
+ });
77
+ continue;
78
+ }
79
+ const env = { ...process.env, ...launch.env };
80
+ for (const name of launch.envUnset)
81
+ delete env[name];
82
+ try {
83
+ const run = await runner(command, args, env, timeoutMs);
84
+ const after = (0, accountHealth_1.getAccountHealth)(view.providerId, view.id, {
85
+ probe: 'store',
86
+ now: options.now,
87
+ });
88
+ if (after.state === 'fresh') {
89
+ result.refreshed.push({ id: view.id, providerId: view.providerId });
90
+ }
91
+ else {
92
+ result.failed.push({
93
+ id: view.id,
94
+ providerId: view.providerId,
95
+ error: run.status === 0
96
+ ? `${command} ran but the stored credential is still ${after.state}.`
97
+ : `${command} exited with status ${run.status ?? 'unknown'}.`,
98
+ });
99
+ }
100
+ }
101
+ catch (err) {
102
+ result.failed.push({ id: view.id, providerId: view.providerId, error: String(err) });
103
+ }
104
+ }
105
+ return result;
106
+ }
@@ -48,6 +48,8 @@ const MODEL_CONTEXT_SIZES = {
48
48
  'claude-fable-5-1': 1_000_000,
49
49
  'claude-fable-5.1': 1_000_000,
50
50
  'claude-fable-5': 1_000_000,
51
+ 'claude-opus-5-5': 1_000_000,
52
+ 'claude-opus-5.5': 1_000_000,
51
53
  'claude-opus-5': 1_000_000,
52
54
  'claude-opus-4-8': 1_000_000,
53
55
  'claude-opus-4-7': 1_000_000,
@@ -75,6 +77,8 @@ const MODEL_CONTEXT_SIZES = {
75
77
  // window per account tier via token_count; that value wins through the
76
78
  // observed-override layer.
77
79
  'gpt-6-astra': 1_050_000,
80
+ 'gpt-6-sol': 1_050_000,
81
+ 'gpt-6-luna': 1_050_000,
78
82
  'gpt-5.6-sol': 1_050_000,
79
83
  'gpt-5.6-terra': 1_050_000,
80
84
  'gpt-5.6-luna': 1_050_000,
package/dist/modelInfo.js CHANGED
@@ -52,7 +52,7 @@ Object.defineProperty(exports, "MODEL_PROVIDER_IDS", { enumerable: true, get: fu
52
52
  * Sources:
53
53
  * - Anthropic: https://platform.claude.com/docs/en/about-claude/pricing
54
54
  * - OpenAI: https://developers.openai.com/api/docs/models
55
- * Current Anthropic and GPT-5.6/6 rates verified: 2026-09-05.
55
+ * Current Anthropic and GPT-5.6/6 rates verified: 2026-09-22.
56
56
  * Runtime LiteLLM hydration refreshes this offline baseline.
57
57
  *
58
58
  * Anthropic keys appear in both dashed (`claude-opus-4-8`, the real model-ID
@@ -136,6 +136,19 @@ const PRICING_TABLE = {
136
136
  cacheWriteCostPerMillion: 3.75,
137
137
  cacheReadCostPerMillion: 0.3,
138
138
  },
139
+ // Opus 5.5 undercuts Opus 5; without its own keys it would prefix-match 'claude-opus-5'.
140
+ 'claude-opus-5-5': {
141
+ inputCostPerMillion: 4.0,
142
+ outputCostPerMillion: 20.0,
143
+ cacheWriteCostPerMillion: 5.0,
144
+ cacheReadCostPerMillion: 0.2,
145
+ },
146
+ 'claude-opus-5.5': {
147
+ inputCostPerMillion: 4.0,
148
+ outputCostPerMillion: 20.0,
149
+ cacheWriteCostPerMillion: 5.0,
150
+ cacheReadCostPerMillion: 0.2,
151
+ },
139
152
  'claude-opus-5': {
140
153
  inputCostPerMillion: 5.0,
141
154
  outputCostPerMillion: 25.0,
@@ -259,6 +272,18 @@ const PRICING_TABLE = {
259
272
  cacheWriteCostPerMillion: 12.5,
260
273
  cacheReadCostPerMillion: 1.0,
261
274
  },
275
+ 'gpt-6-sol': {
276
+ inputCostPerMillion: 2.0,
277
+ outputCostPerMillion: 10.0,
278
+ cacheWriteCostPerMillion: 2.5,
279
+ cacheReadCostPerMillion: 0.2,
280
+ },
281
+ 'gpt-6-luna': {
282
+ inputCostPerMillion: 0.1,
283
+ outputCostPerMillion: 0.5,
284
+ cacheWriteCostPerMillion: 0.125,
285
+ cacheReadCostPerMillion: 0.01,
286
+ },
262
287
  'gpt-5.6-sol': {
263
288
  inputCostPerMillion: 4.0,
264
289
  outputCostPerMillion: 20.0,
package/dist/node.d.ts CHANGED
@@ -10,6 +10,10 @@ export type { HydrateOptions, HydrateResult } from './pricingCatalog';
10
10
  export { loadObservedContextWindows, recordObservedContextWindow, getObservedContextWindowPath, } from './observedContextWindows';
11
11
  export type { ObservedContextWindowOptions, ObservedContextWindowStore, } from './observedContextWindows';
12
12
  export { listRecentSessions, readSessionTranscript } from './sessionTranscripts';
13
+ export { collectPromptHistory } from './promptHistory';
14
+ export type { CollectPromptHistoryOptions, PromptHistoryBound, PromptHistoryBounds, PromptHistoryCursor, PromptHistoryCursorSession, PromptHistoryEntry, PromptHistoryProvider, PromptHistoryResult, PromptHistoryResumeState, PromptHistoryStats, PromptHistoryUsage, } from './promptHistory';
15
+ export { HUMAN_CLAUDE_ENTRYPOINTS, HUMAN_CODEX_SOURCES, humanPromptText, isHumanPrompt, } from './humanPrompt';
16
+ export type { HumanPromptProvider } from './humanPrompt';
13
17
  export { computeSessionFileStats, firstUserPrompt, providerContextSizeFn, readSessionFileStats, } from './sessionStats';
14
18
  export { readSessionReportInputs } from './report/sessionReportInputs';
15
19
  export type { SessionReportInputs } from './report/sessionReportInputs';
package/dist/node.js CHANGED
@@ -7,8 +7,8 @@
7
7
  * for browser bundles — use `sidekick-shared/browser` there.
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.readSessionPreviewAsync = exports.readSessionPreview = exports.listSessionPreviewsAsync = exports.listSessionPreviews = exports.readCodexHistory = exports.walkRolloutFilesAsync = exports.walkRolloutFiles = exports.findCodexRolloutFile = exports.weekKey = exports.usageBucketKey = exports.summarizeUsageRows = exports.bucketUsage = exports.importSessionHistory = exports.ACTIVE_SESSION_MTIME_THRESHOLD_MS = exports.sessionSummaryFromStats = exports.removeSessionSummary = exports.markFileImported = exports.isFileImported = exports.applySessionSummary = exports.pruneUsageCache = exports.getUsageCacheDir = exports.collectUsageEvents = exports.USAGE_CACHE_VERSION = exports.MAX_USAGE_CACHE_FILES = exports.findActiveBillingBlock = exports.computeBillingBlocks = exports.BILLING_BLOCK_DURATION_MS = exports.writeStateFile = exports.readStateFile = exports.quotaToStateFile = exports.getStateFilePath = exports.billingBlockToStateFile = exports.STATE_FILE_SCHEMA_VERSION = exports.STATE_FILE_NAME = exports.sessionFingerprintParts = exports.fingerprintString = exports.readSessionReportInputs = exports.readSessionFileStats = exports.providerContextSizeFn = exports.firstUserPrompt = exports.computeSessionFileStats = exports.readSessionTranscript = exports.listRecentSessions = exports.getObservedContextWindowPath = exports.recordObservedContextWindow = exports.loadObservedContextWindows = exports.LITELLM_CATALOG_URL = exports.normalizeLiteLlmContextWindows = exports.normalizeLiteLlmCatalog = exports.hydratePricingCatalog = void 0;
11
- exports.fetchProviderServiceStatus = exports.splitWatchedPath = exports.DirectoryListingCache = exports.fileFingerprintParts = exports.fileFingerprint = exports.observedSessionSourceFromProvider = exports.ObservedSessionCollector = void 0;
10
+ exports.walkRolloutFilesAsync = exports.walkRolloutFiles = exports.findCodexRolloutFile = exports.weekKey = exports.usageBucketKey = exports.summarizeUsageRows = exports.bucketUsage = exports.importSessionHistory = exports.ACTIVE_SESSION_MTIME_THRESHOLD_MS = exports.sessionSummaryFromStats = exports.removeSessionSummary = exports.markFileImported = exports.isFileImported = exports.applySessionSummary = exports.pruneUsageCache = exports.getUsageCacheDir = exports.collectUsageEvents = exports.USAGE_CACHE_VERSION = exports.MAX_USAGE_CACHE_FILES = exports.findActiveBillingBlock = exports.computeBillingBlocks = exports.BILLING_BLOCK_DURATION_MS = exports.writeStateFile = exports.readStateFile = exports.quotaToStateFile = exports.getStateFilePath = exports.billingBlockToStateFile = exports.STATE_FILE_SCHEMA_VERSION = exports.STATE_FILE_NAME = exports.sessionFingerprintParts = exports.fingerprintString = exports.readSessionReportInputs = exports.readSessionFileStats = exports.providerContextSizeFn = exports.firstUserPrompt = exports.computeSessionFileStats = exports.isHumanPrompt = exports.humanPromptText = exports.HUMAN_CODEX_SOURCES = exports.HUMAN_CLAUDE_ENTRYPOINTS = exports.collectPromptHistory = exports.readSessionTranscript = exports.listRecentSessions = exports.getObservedContextWindowPath = exports.recordObservedContextWindow = exports.loadObservedContextWindows = exports.LITELLM_CATALOG_URL = exports.normalizeLiteLlmContextWindows = exports.normalizeLiteLlmCatalog = exports.hydratePricingCatalog = void 0;
11
+ exports.fetchProviderServiceStatus = exports.splitWatchedPath = exports.DirectoryListingCache = exports.fileFingerprintParts = exports.fileFingerprint = exports.observedSessionSourceFromProvider = exports.ObservedSessionCollector = exports.readSessionPreviewAsync = exports.readSessionPreview = exports.listSessionPreviewsAsync = exports.listSessionPreviews = exports.readCodexHistory = void 0;
12
12
  var pricingCatalog_1 = require("./pricingCatalog");
13
13
  Object.defineProperty(exports, "hydratePricingCatalog", { enumerable: true, get: function () { return pricingCatalog_1.hydratePricingCatalog; } });
14
14
  Object.defineProperty(exports, "normalizeLiteLlmCatalog", { enumerable: true, get: function () { return pricingCatalog_1.normalizeLiteLlmCatalog; } });
@@ -21,6 +21,13 @@ Object.defineProperty(exports, "getObservedContextWindowPath", { enumerable: tru
21
21
  var sessionTranscripts_1 = require("./sessionTranscripts");
22
22
  Object.defineProperty(exports, "listRecentSessions", { enumerable: true, get: function () { return sessionTranscripts_1.listRecentSessions; } });
23
23
  Object.defineProperty(exports, "readSessionTranscript", { enumerable: true, get: function () { return sessionTranscripts_1.readSessionTranscript; } });
24
+ var promptHistory_1 = require("./promptHistory");
25
+ Object.defineProperty(exports, "collectPromptHistory", { enumerable: true, get: function () { return promptHistory_1.collectPromptHistory; } });
26
+ var humanPrompt_1 = require("./humanPrompt");
27
+ Object.defineProperty(exports, "HUMAN_CLAUDE_ENTRYPOINTS", { enumerable: true, get: function () { return humanPrompt_1.HUMAN_CLAUDE_ENTRYPOINTS; } });
28
+ Object.defineProperty(exports, "HUMAN_CODEX_SOURCES", { enumerable: true, get: function () { return humanPrompt_1.HUMAN_CODEX_SOURCES; } });
29
+ Object.defineProperty(exports, "humanPromptText", { enumerable: true, get: function () { return humanPrompt_1.humanPromptText; } });
30
+ Object.defineProperty(exports, "isHumanPrompt", { enumerable: true, get: function () { return humanPrompt_1.isHumanPrompt; } });
24
31
  var sessionStats_1 = require("./sessionStats");
25
32
  Object.defineProperty(exports, "computeSessionFileStats", { enumerable: true, get: function () { return sessionStats_1.computeSessionFileStats; } });
26
33
  Object.defineProperty(exports, "firstUserPrompt", { enumerable: true, get: function () { return sessionStats_1.firstUserPrompt; } });
@@ -0,0 +1,32 @@
1
+ export interface RunningProcess {
2
+ pid: number;
3
+ /** The matched name (as passed to the finder). */
4
+ name: string;
5
+ /** The executable as reported by the OS (basename or image name). */
6
+ command: string;
7
+ }
8
+ export type AccountConsumerKind = 'claude-cli' | 'claude-desktop' | 'codex-cli' | 'codex-app' | 'vscode-extension-host';
9
+ export interface RunningAccountConsumer {
10
+ kind: AccountConsumerKind;
11
+ pids: number[];
12
+ /** Whether a live-store switch reaches this consumer once it restarts. */
13
+ switched: boolean;
14
+ /** The user-facing sentence both UIs print for this consumer. */
15
+ reachability: string;
16
+ }
17
+ /** Sync sibling of {@link findRunningProcesses}; blocks up to 4 s. */
18
+ export declare function findRunningProcessesSync(names: string[]): RunningProcess[];
19
+ export declare function findRunningProcesses(names: string[]): Promise<RunningProcess[]>;
20
+ export declare const ACCOUNT_CONSUMER_REACHABILITY: Record<AccountConsumerKind, {
21
+ switched: boolean;
22
+ reachability: string;
23
+ }>;
24
+ /**
25
+ * Which credential consumers are running right now, with the reachability
26
+ * sentence to show for each. Optionally scoped to one provider.
27
+ */
28
+ export declare function detectRunningAccountConsumers(provider?: 'claude-code' | 'codex'): Promise<RunningAccountConsumer[]>;
29
+ /** Sync sibling of {@link detectRunningAccountConsumers}; blocks up to 4 s. */
30
+ export declare function detectRunningAccountConsumersSync(provider?: 'claude-code' | 'codex'): RunningAccountConsumer[];
31
+ /** Build a consumer entry for a kind the host detects itself (e.g. its own extension host). */
32
+ export declare function describeAccountConsumer(kind: AccountConsumerKind, pids?: number[]): RunningAccountConsumer;