sidekick-shared 0.27.5 → 0.28.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.
- package/CHANGELOG.md +58 -0
- package/README.md +93 -52
- package/dist/accountHealth.d.ts +14 -0
- package/dist/accountHealth.js +61 -14
- package/dist/accountLaunch.d.ts +6 -0
- package/dist/accountLaunch.js +61 -4
- package/dist/accountLease.d.ts +5 -0
- package/dist/accountLease.js +98 -0
- package/dist/accountManager.d.ts +7 -0
- package/dist/accountManager.js +226 -89
- package/dist/accountSync.d.ts +1 -5
- package/dist/accountSync.js +22 -6
- package/dist/accountSyncTypes.d.ts +9 -0
- package/dist/accounts.d.ts +75 -18
- package/dist/accounts.js +712 -189
- package/dist/browser.d.ts +13 -2
- package/dist/browser.js +30 -2
- package/dist/claudeCredentialDoctor.d.ts +50 -0
- package/dist/claudeCredentialDoctor.js +277 -0
- package/dist/claudeCredentialLedger.d.ts +15 -0
- package/dist/claudeCredentialLedger.js +130 -0
- package/dist/claudeCredentials.d.ts +20 -3
- package/dist/claudeCredentials.js +50 -3
- package/dist/claudeLiveGuard.d.ts +33 -0
- package/dist/claudeLiveGuard.js +46 -0
- package/dist/claudePaths.d.ts +11 -0
- package/dist/claudePaths.js +61 -0
- package/dist/claudeProfiles.d.ts +15 -8
- package/dist/claudeProfiles.js +30 -23
- package/dist/claudeRefreshLock.d.ts +15 -0
- package/dist/claudeRefreshLock.js +145 -0
- package/dist/codexAuth.d.ts +4 -0
- package/dist/codexAuth.js +18 -0
- package/dist/codexCredentialDoctor.d.ts +33 -0
- package/dist/codexCredentialDoctor.js +302 -0
- package/dist/codexCredentialStore.d.ts +29 -0
- package/dist/codexCredentialStore.js +213 -0
- package/dist/codexKeepAlive.d.ts +2 -0
- package/dist/codexKeepAlive.js +116 -0
- package/dist/codexPaths.d.ts +30 -2
- package/dist/codexPaths.js +118 -7
- package/dist/codexProfiles.d.ts +38 -35
- package/dist/codexProfiles.js +848 -715
- package/dist/credentialIO.d.ts +67 -7
- package/dist/credentialIO.js +211 -47
- package/dist/doctor.js +2 -2
- package/dist/ensureDefaultAccounts.js +1 -8
- package/dist/esm/accountChangeSignal.js +15 -0
- package/dist/esm/accountChanges.js +152 -0
- package/dist/esm/accountHealth.js +288 -0
- package/dist/esm/accountLaunch.js +145 -0
- package/dist/esm/accountLease.js +60 -0
- package/dist/esm/accountManager.js +606 -0
- package/dist/esm/accountRegistry.js +214 -0
- package/dist/esm/accountStatus.js +51 -0
- package/dist/esm/accountSwitch.js +74 -0
- package/dist/esm/accountSync.js +156 -0
- package/dist/esm/accountSyncTypes.js +4 -0
- package/dist/esm/accounts.js +1291 -0
- package/dist/esm/aggregation/EventAggregator.js +2034 -0
- package/dist/esm/aggregation/FrequencyTracker.js +69 -0
- package/dist/esm/aggregation/HeatmapTracker.js +89 -0
- package/dist/esm/aggregation/PatternExtractor.js +168 -0
- package/dist/esm/aggregation/costProvenance.js +31 -0
- package/dist/esm/aggregation/snapshot.js +161 -0
- package/dist/esm/aggregation/types.js +5 -0
- package/dist/esm/analytics/codeImpact.js +18 -0
- package/dist/esm/analytics/compactionLedger.js +37 -0
- package/dist/esm/analytics/qualityScore.js +112 -0
- package/dist/esm/autoSwitch.js +185 -0
- package/dist/esm/browser.js +34 -0
- package/dist/esm/claudeCredentialDoctor.js +239 -0
- package/dist/esm/claudeCredentialLedger.js +91 -0
- package/dist/esm/claudeCredentials.js +111 -0
- package/dist/esm/claudeLiveGuard.js +43 -0
- package/dist/esm/claudePaths.js +22 -0
- package/dist/esm/claudeProfiles.js +142 -0
- package/dist/esm/claudeRefreshLock.js +106 -0
- package/dist/esm/codexAuth.js +101 -0
- package/dist/esm/codexCredentialDoctor.js +265 -0
- package/dist/esm/codexCredentialStore.js +164 -0
- package/dist/esm/codexKeepAlive.js +112 -0
- package/dist/esm/codexPaths.js +172 -0
- package/dist/esm/codexProfiles.js +1251 -0
- package/dist/esm/codexQuota.js +564 -0
- package/dist/esm/codexQuotaWatcher.js +363 -0
- package/dist/esm/context/composer.js +71 -0
- package/dist/esm/context/sessionContext.js +546 -0
- package/dist/esm/credentialIO.js +283 -0
- package/dist/esm/credentials.js +49 -0
- package/dist/esm/doctor.js +305 -0
- package/dist/esm/ensureDefaultAccounts.js +62 -0
- package/dist/esm/errorHistory.js +56 -0
- package/dist/esm/extractors/errorTaxonomy.js +43 -0
- package/dist/esm/extractors/gatherAssets.js +32 -0
- package/dist/esm/extractors/sessionAssets.js +176 -0
- package/dist/esm/extractors/sources/claudeAssets.js +158 -0
- package/dist/esm/extractors/sources/codexAssets.js +234 -0
- package/dist/esm/extractors/tokenUsage.js +41 -0
- package/dist/esm/extractors/toolCall.js +142 -0
- package/dist/esm/failingTools.js +65 -0
- package/dist/esm/fileHead.js +27 -0
- package/dist/esm/formatters/eventHighlighter.js +332 -0
- package/dist/esm/formatters/noiseClassifier.js +209 -0
- package/dist/esm/formatters/sessionDump.js +328 -0
- package/dist/esm/formatters/toolSummary.js +226 -0
- package/dist/esm/formatting.js +82 -0
- package/dist/esm/handoffUrl.js +23 -0
- package/dist/esm/historicalStore.js +305 -0
- package/dist/esm/humanPrompt.js +88 -0
- package/dist/esm/index.js +213 -0
- package/dist/esm/keepAlive.js +189 -0
- package/dist/esm/liveCredentialGuard.js +33 -0
- package/dist/esm/modelAliases.js +51 -0
- package/dist/esm/modelCatalog.js +139 -0
- package/dist/esm/modelContext.js +280 -0
- package/dist/esm/modelInfo.js +832 -0
- package/dist/esm/multiProviderQuotaService.js +450 -0
- package/dist/esm/node.js +46 -0
- package/dist/esm/observedContextWindows.js +165 -0
- package/dist/esm/observedSessionCollector.js +939 -0
- package/dist/esm/parsers/changelogParser.js +71 -0
- package/dist/esm/parsers/codexHistory.js +89 -0
- package/dist/esm/parsers/codexParser.js +906 -0
- package/dist/esm/parsers/debugLogParser.js +126 -0
- package/dist/esm/parsers/jsonl.js +66 -0
- package/dist/esm/parsers/mcpToolName.js +28 -0
- package/dist/esm/parsers/openCodeParser.js +625 -0
- package/dist/esm/parsers/planExtractor.js +335 -0
- package/dist/esm/parsers/sessionActivityDetector.js +246 -0
- package/dist/esm/parsers/sessionPathResolver.js +713 -0
- package/dist/esm/parsers/subagentScanner.js +360 -0
- package/dist/esm/parsers/subagentStatsCache.js +45 -0
- package/dist/esm/parsers/subagentTraceParser.js +325 -0
- package/dist/esm/paths.js +134 -0
- package/dist/esm/peakHours.js +194 -0
- package/dist/esm/phrases.js +1330 -0
- package/dist/esm/pricingCatalog.js +247 -0
- package/dist/esm/processDetection.js +200 -0
- package/dist/esm/projectMigration.js +59 -0
- package/dist/esm/promptHistory.js +1221 -0
- package/dist/esm/providerFailure.js +362 -0
- package/dist/esm/providerIds.js +6 -0
- package/dist/esm/providerQuota.js +1 -0
- package/dist/esm/providerServiceStatus.js +145 -0
- package/dist/esm/providerServiceStatusTypes.js +1 -0
- package/dist/esm/providerStatus.js +117 -0
- package/dist/esm/providers/claudeCode.js +575 -0
- package/dist/esm/providers/claudeListing.js +121 -0
- package/dist/esm/providers/codex.js +1034 -0
- package/dist/esm/providers/codexDatabase.js +297 -0
- package/dist/esm/providers/codexRollouts.js +215 -0
- package/dist/esm/providers/detect.js +185 -0
- package/dist/esm/providers/diagnostics.js +83 -0
- package/dist/esm/providers/directoryListingCache.js +206 -0
- package/dist/esm/providers/factory.js +54 -0
- package/dist/esm/providers/openCode.js +2008 -0
- package/dist/esm/providers/openCodeDatabase.js +419 -0
- package/dist/esm/providers/rolloutWalker.js +252 -0
- package/dist/esm/providers/types.js +12 -0
- package/dist/esm/quota.js +182 -0
- package/dist/esm/quotaHistory.js +364 -0
- package/dist/esm/quotaPoller.js +230 -0
- package/dist/esm/quotaPresentation.js +97 -0
- package/dist/esm/quotaResolver.js +231 -0
- package/dist/esm/quotaSnapshots.js +130 -0
- package/dist/esm/quotaThresholds.js +85 -0
- package/dist/esm/readers/decisions.js +24 -0
- package/dist/esm/readers/handoff.js +20 -0
- package/dist/esm/readers/helpers.js +27 -0
- package/dist/esm/readers/history.js +9 -0
- package/dist/esm/readers/notes.js +48 -0
- package/dist/esm/readers/plans.js +225 -0
- package/dist/esm/readers/tasks.js +19 -0
- package/dist/esm/report/htmlHelpers.js +280 -0
- package/dist/esm/report/htmlReportGenerator.js +704 -0
- package/dist/esm/report/index.js +7 -0
- package/dist/esm/report/logo.js +2 -0
- package/dist/esm/report/openBrowser.js +19 -0
- package/dist/esm/report/sessionReportInputs.js +33 -0
- package/dist/esm/report/transcriptParser.js +83 -0
- package/dist/esm/report/types.js +4 -0
- package/dist/esm/schemas/accountManager.js +204 -0
- package/dist/esm/schemas/accountStatus.js +25 -0
- package/dist/esm/schemas/assistantTurn.js +74 -0
- package/dist/esm/schemas/index.js +25 -0
- package/dist/esm/schemas/observedSessionV1.js +77 -0
- package/dist/esm/schemas/providerFailure.js +37 -0
- package/dist/esm/schemas/quota.js +132 -0
- package/dist/esm/schemas/quotaHistory.js +40 -0
- package/dist/esm/schemas/sessionEvent.js +216 -0
- package/dist/esm/schemas/stateFile.js +75 -0
- package/dist/esm/schemas/tokenEstimation.js +7 -0
- package/dist/esm/schemas/transcript.js +86 -0
- package/dist/esm/schemas/usageNormalization.js +38 -0
- package/dist/esm/search/advancedFilter.js +197 -0
- package/dist/esm/search/sessionSearch.js +66 -0
- package/dist/esm/sessionFingerprint.js +40 -0
- package/dist/esm/sessionMonitor.js +198 -0
- package/dist/esm/sessionPreviews.js +522 -0
- package/dist/esm/sessionPromptHistory.js +254 -0
- package/dist/esm/sessionPromptSignals.js +364 -0
- package/dist/esm/sessionStats.js +160 -0
- package/dist/esm/sessionTokenTotals.js +98 -0
- package/dist/esm/sessionTranscripts.js +49 -0
- package/dist/esm/stateFile.js +119 -0
- package/dist/esm/statusline/BurnRateCalculator.js +40 -0
- package/dist/esm/statusline/claudeStatuslinePayload.js +148 -0
- package/dist/esm/statusline/formatter.js +122 -0
- package/dist/esm/statusline/index.js +8 -0
- package/dist/esm/terminalSync.js +95 -0
- package/dist/esm/testing/credentialGuard.js +197 -0
- package/dist/esm/testing/index.js +12 -0
- package/dist/esm/testing/sessionLogFixtures.js +128 -0
- package/dist/esm/tokenEstimation.js +67 -0
- package/dist/esm/tokenSummary.js +113 -0
- package/dist/esm/toolCategory.js +82 -0
- package/dist/esm/transcript.js +257 -0
- package/dist/esm/turns/assistantTurn.js +373 -0
- package/dist/esm/types/codex.js +23 -0
- package/dist/esm/types/decisionLog.js +5 -0
- package/dist/esm/types/historicalData.js +47 -0
- package/dist/esm/types/knowledgeNote.js +15 -0
- package/dist/esm/types/observedSessionV1.js +257 -0
- package/dist/esm/types/opencode.js +12 -0
- package/dist/esm/types/plan.js +7 -0
- package/dist/esm/types/sessionEvent.js +10 -0
- package/dist/esm/types/taskPersistence.js +12 -0
- package/dist/esm/usage/billingBlocks.js +148 -0
- package/dist/esm/usage/claudeUsageDedupe.js +189 -0
- package/dist/esm/usage/importSessionHistory.js +84 -0
- package/dist/esm/usage/subagentUsage.js +18 -0
- package/dist/esm/usage/usageEvents.js +402 -0
- package/dist/esm/usage/usageReports.js +202 -0
- package/dist/esm/usageNormalization.js +95 -0
- package/dist/esm/watchers/eventBridge.js +219 -0
- package/dist/esm/watchers/factory.js +63 -0
- package/dist/esm/watchers/jsonlTail.js +289 -0
- package/dist/esm/watchers/jsonlWatcher.js +435 -0
- package/dist/esm/watchers/providerReaderWatcher.js +118 -0
- package/dist/esm/watchers/sqliteWatcher.js +285 -0
- package/dist/esm/watchers/types.js +4 -0
- package/dist/esm/workspaceRoots.js +56 -0
- package/dist/esm/writers/atomic.js +375 -0
- package/dist/esm/writers/decisions.js +51 -0
- package/dist/esm/writers/notes.js +46 -0
- package/dist/esm/writers/tasks.js +63 -0
- package/dist/esm/zaiQuota.js +323 -0
- package/dist/esm/zaiQuotaApi.js +271 -0
- package/dist/esm/zaiQuotaWatcher.js +265 -0
- package/dist/fileHead.d.ts +22 -0
- package/dist/fileHead.js +33 -0
- package/dist/index.d.ts +30 -11
- package/dist/index.js +72 -15
- package/dist/keepAlive.d.ts +2 -1
- package/dist/keepAlive.js +116 -29
- package/dist/liveCredentialGuard.d.ts +28 -0
- package/dist/liveCredentialGuard.js +36 -0
- package/dist/node.d.ts +13 -1
- package/dist/node.js +43 -2
- package/dist/parsers/codexHistory.js +2 -2
- package/dist/parsers/codexParser.d.ts +12 -0
- package/dist/parsers/codexParser.js +34 -12
- package/dist/parsers/debugLogParser.js +2 -2
- package/dist/parsers/sessionPathResolver.js +5 -4
- package/dist/processDetection.d.ts +10 -3
- package/dist/processDetection.js +44 -11
- package/dist/promptHistory.d.ts +32 -0
- package/dist/promptHistory.js +115 -59
- package/dist/providerFailure.d.ts +12 -6
- package/dist/providerFailure.js +45 -0
- package/dist/providers/claudeCode.js +7 -99
- package/dist/providers/claudeListing.d.ts +22 -0
- package/dist/providers/claudeListing.js +158 -0
- package/dist/providers/codex.d.ts +3 -1
- package/dist/providers/codex.js +26 -227
- package/dist/providers/codexRollouts.d.ts +44 -0
- package/dist/providers/codexRollouts.js +261 -0
- package/dist/providers/detect.js +4 -4
- package/dist/readers/plans.js +3 -3
- package/dist/schemas/accountManager.d.ts +22 -0
- package/dist/schemas/accountManager.js +4 -0
- package/dist/schemas/assistantTurn.d.ts +2 -2
- package/dist/schemas/index.d.ts +2 -0
- package/dist/schemas/index.js +7 -2
- package/dist/schemas/providerFailure.d.ts +154 -0
- package/dist/schemas/providerFailure.js +40 -0
- package/dist/sessionPromptHistory.d.ts +12 -7
- package/dist/sessionPromptHistory.js +15 -3
- package/dist/sessionPromptSignals.d.ts +9 -0
- package/dist/sessionPromptSignals.js +13 -0
- package/dist/terminalSync.d.ts +12 -2
- package/dist/terminalSync.js +27 -2
- package/dist/testing/credentialGuard.d.ts +23 -0
- package/dist/testing/credentialGuard.js +233 -0
- package/dist/testing/index.d.ts +14 -0
- package/dist/testing/index.js +22 -0
- package/dist/testing/sessionLogFixtures.d.ts +28 -0
- package/dist/testing/sessionLogFixtures.js +169 -0
- package/dist/tokenEstimation.d.ts +2 -0
- package/dist/tokenEstimation.js +21 -11
- package/dist/toolCategory.d.ts +18 -0
- package/dist/toolCategory.js +86 -0
- package/dist/types/codex.d.ts +4 -0
- package/dist/usage/usageEvents.d.ts +16 -0
- package/dist/usage/usageEvents.js +53 -9
- package/dist/watchers/jsonlTail.d.ts +26 -1
- package/dist/watchers/jsonlTail.js +136 -28
- package/dist/watchers/jsonlWatcher.js +7 -0
- package/dist/watchers/providerReaderWatcher.js +1 -0
- package/dist/watchers/types.d.ts +6 -0
- package/dist/workspaceRoots.d.ts +23 -0
- package/dist/workspaceRoots.js +93 -0
- package/package.json +22 -2
package/dist/index.js
CHANGED
|
@@ -3,17 +3,18 @@
|
|
|
3
3
|
* Public API for sidekick-shared.
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
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 = void 0;
|
|
6
|
+
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.collectSessionPromptHistory = exports.parsePromptHistoryCursor = exports.isPromptHistorySessionSettled = exports.collectPromptHistory = exports.readSessionTranscript = exports.listRecentSessions = exports.projectSessionTranscript = exports.estimateSerializedTokens = exports.estimateTextTokens = exports.ASCII_CHARS_PER_TOKEN = exports.TOKEN_TOTAL_LABEL = exports.TOKEN_SUBAGENTS_LABEL = exports.TOKEN_SESSION_TOTAL_LABEL = exports.TOKEN_MAIN_THREAD_LABEL = exports.TOKEN_CONTEXT_LABEL = exports.sumTokenTotals = exports.summarizeTokens = exports.formatTokenBreakdown = exports.calculateNormalizedUsageCost = exports.extractNormalizedUsage = exports.normalizeProviderUsage = void 0;
|
|
7
|
+
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 = exports.weekKey = exports.usageBucketKey = exports.summarizeUsageRows = exports.bucketUsage = exports.importSessionHistory = exports.ACTIVE_SESSION_MTIME_THRESHOLD_MS = exports.sessionSummaryFromStats = exports.removeSessionSummary = void 0;
|
|
8
|
+
exports.combineSessionTokenTotals = exports.collectSessionTokenTotals = exports.addUsageToSubagent = exports.normalizeClaudeUsage = exports.dedupedRawClaudeUsage = exports.SYNTHETIC_MODEL = exports.ClaudeUsageDeduper = exports.readAgentMeta = exports.extractTaskInfo = exports.scanSubagentDir = exports.resolveCodexCallUsage = exports.normalizeCodexToolInput = exports.normalizeCodexToolName = exports.extractPatchFilePaths = exports.DEFAULT_MAX_TRACKED_TOOL_CALLS = 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 = exports.addDecision = exports.completeTask = exports.addTask = exports.withFileLockSync = exports.updateJsonStoreAtomicSync = exports.updateJsonStoreAtomic = exports.atomicWriteFileSync = exports.atomicWriteJsonSync = void 0;
|
|
9
|
+
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 = 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.subagentTokenTotals = exports.scanSessionSubagents = exports.readMainThreadTokenTotals = void 0;
|
|
10
|
+
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 = 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.DEFAULT_JSONL_TAIL_READ_BYTES = exports.DEFAULT_JSONL_TAIL_MAX_LINE_BYTES = exports.createJsonlTail = exports.toFollowEvents = exports.resolveSessionPath = exports.createWatcher = exports.parseChangelog = void 0;
|
|
11
|
+
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 = exports.readCodexLastRefresh = exports.readCodexAuthIdentity = exports.parseCodexAuthJson = exports.CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS = exports.CLAUDE_ACCESS_TOKEN_LIFETIME_MS = exports.mergeClaudeLoginIntoLive = exports.claudeLoginOnly = exports.claudeRefreshFingerprint = exports.resolveClaudeRefreshExpiry = exports.isNewerClaudeCredential = exports.claudeCredentialFreshness = exports.parseClaudeCredentialBlob = exports.readClaudeMaxAccessTokenSync = exports.readClaudeMaxCredentialsRaw = exports.readClaudeMaxCredentials = exports.parseKeychainDump = exports.repairClaudeCredentialStores = exports.inspectClaudeCredentialStores = exports.getClaudeCredentialLedgerPath = exports.readClaudeCredentialLedger = exports.decideLiveClaudeWrite = exports.SIDEKICK_KEYCHAIN_COMMENT_PREFIX = exports.ClaudeCredentialWriteError = exports.deleteStoredCredentials = exports.writeActiveCredentials = exports.readClaudeCredentialStore = exports.readActiveCredentials = exports.openInBrowser = exports.parseTranscriptFromEvents = exports.parseTranscript = exports.generateHtmlReport = exports.formatCompactionLedger = exports.calculateCompactionLedger = exports.describeCostProvenance = exports.classifyCostProvenance = void 0;
|
|
12
|
+
exports.getClaudeConfigPath = 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.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.discardAccountLogin = 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 = void 0;
|
|
13
|
+
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 = exports.decideAutoSwitch = exports.DEFAULT_AUTO_SWITCH_CONFIG = exports.removeLauncher = exports.writeLauncher = exports.writeAccountLauncher = 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.getClaudeProjectsDir = exports.isDefaultClaudeHome = exports.getDefaultClaudeHome = exports.getLiveClaudeHome = exports.readLiveClaudeIdentity = exports.readClaudeProfileIdentity = exports.isClaudeProfileAuthenticated = exports.CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV = exports.buildClaudeChildEnv = exports.claudeKeychainAccountName = exports.claudeKeychainService = exports.claudeKeychainSuffix = void 0;
|
|
14
|
+
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.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 = void 0;
|
|
15
|
+
exports.providerFailureDiagnosisSchema = exports.providerRetryAfterSchema = exports.providerFailureEvidenceSchema = exports.providerAuthenticationEvidenceSchema = 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 = exports.RESOLVED_MODEL_CATALOG_SCHEMA_VERSION = exports.resolveModelAlias = void 0;
|
|
16
|
+
exports.readStoredCodexAccount = exports.repairCodexCredentialStores = exports.inspectCodexCredentialStores = exports.fetchProviderServiceStatus = exports.PROVIDER_RECOVERY_ACTIONS = exports.PROVIDER_FAILURE_EVIDENCE_SOURCES = exports.PROVIDER_FAILURE_CODES = exports.PROVIDER_CREDENTIAL_KINDS = exports.PROVIDER_AUTHENTICATION_STATES = exports.PROVIDER_AUTHENTICATION_SOURCES = 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 = void 0;
|
|
17
|
+
exports.resolveWorkspaceRoots = exports.TOOL_CATEGORIES = exports.classifyTool = exports.CODEX_ARCHIVED_SESSIONS_SUBDIR = exports.CODEX_SESSIONS_SUBDIR = exports.getCodexSessionsDirs = exports.syncCodexLiveStateAsync = void 0;
|
|
17
18
|
var usageNormalization_1 = require("./usageNormalization");
|
|
18
19
|
Object.defineProperty(exports, "normalizeProviderUsage", { enumerable: true, get: function () { return usageNormalization_1.normalizeProviderUsage; } });
|
|
19
20
|
Object.defineProperty(exports, "extractNormalizedUsage", { enumerable: true, get: function () { return usageNormalization_1.extractNormalizedUsage; } });
|
|
@@ -28,6 +29,7 @@ Object.defineProperty(exports, "TOKEN_SESSION_TOTAL_LABEL", { enumerable: true,
|
|
|
28
29
|
Object.defineProperty(exports, "TOKEN_SUBAGENTS_LABEL", { enumerable: true, get: function () { return tokenSummary_1.TOKEN_SUBAGENTS_LABEL; } });
|
|
29
30
|
Object.defineProperty(exports, "TOKEN_TOTAL_LABEL", { enumerable: true, get: function () { return tokenSummary_1.TOKEN_TOTAL_LABEL; } });
|
|
30
31
|
var tokenEstimation_1 = require("./tokenEstimation");
|
|
32
|
+
Object.defineProperty(exports, "ASCII_CHARS_PER_TOKEN", { enumerable: true, get: function () { return tokenEstimation_1.ASCII_CHARS_PER_TOKEN; } });
|
|
31
33
|
Object.defineProperty(exports, "estimateTextTokens", { enumerable: true, get: function () { return tokenEstimation_1.estimateTextTokens; } });
|
|
32
34
|
Object.defineProperty(exports, "estimateSerializedTokens", { enumerable: true, get: function () { return tokenEstimation_1.estimateSerializedTokens; } });
|
|
33
35
|
var transcript_1 = require("./transcript");
|
|
@@ -37,6 +39,8 @@ Object.defineProperty(exports, "listRecentSessions", { enumerable: true, get: fu
|
|
|
37
39
|
Object.defineProperty(exports, "readSessionTranscript", { enumerable: true, get: function () { return sessionTranscripts_1.readSessionTranscript; } });
|
|
38
40
|
var promptHistory_1 = require("./promptHistory");
|
|
39
41
|
Object.defineProperty(exports, "collectPromptHistory", { enumerable: true, get: function () { return promptHistory_1.collectPromptHistory; } });
|
|
42
|
+
Object.defineProperty(exports, "isPromptHistorySessionSettled", { enumerable: true, get: function () { return promptHistory_1.isPromptHistorySessionSettled; } });
|
|
43
|
+
Object.defineProperty(exports, "parsePromptHistoryCursor", { enumerable: true, get: function () { return promptHistory_1.parsePromptHistoryCursor; } });
|
|
40
44
|
var sessionPromptHistory_1 = require("./sessionPromptHistory");
|
|
41
45
|
Object.defineProperty(exports, "collectSessionPromptHistory", { enumerable: true, get: function () { return sessionPromptHistory_1.collectSessionPromptHistory; } });
|
|
42
46
|
var humanPrompt_1 = require("./humanPrompt");
|
|
@@ -201,6 +205,7 @@ Object.defineProperty(exports, "parseDbPartData", { enumerable: true, get: funct
|
|
|
201
205
|
// Parsers — Codex
|
|
202
206
|
var codexParser_1 = require("./parsers/codexParser");
|
|
203
207
|
Object.defineProperty(exports, "CodexRolloutParser", { enumerable: true, get: function () { return codexParser_1.CodexRolloutParser; } });
|
|
208
|
+
Object.defineProperty(exports, "DEFAULT_MAX_TRACKED_TOOL_CALLS", { enumerable: true, get: function () { return codexParser_1.DEFAULT_MAX_TRACKED_TOOL_CALLS; } });
|
|
204
209
|
Object.defineProperty(exports, "extractPatchFilePaths", { enumerable: true, get: function () { return codexParser_1.extractPatchFilePaths; } });
|
|
205
210
|
Object.defineProperty(exports, "normalizeCodexToolName", { enumerable: true, get: function () { return codexParser_1.normalizeCodexToolName; } });
|
|
206
211
|
Object.defineProperty(exports, "normalizeCodexToolInput", { enumerable: true, get: function () { return codexParser_1.normalizeCodexToolInput; } });
|
|
@@ -308,6 +313,8 @@ var eventBridge_1 = require("./watchers/eventBridge");
|
|
|
308
313
|
Object.defineProperty(exports, "toFollowEvents", { enumerable: true, get: function () { return eventBridge_1.toFollowEvents; } });
|
|
309
314
|
var jsonlTail_1 = require("./watchers/jsonlTail");
|
|
310
315
|
Object.defineProperty(exports, "createJsonlTail", { enumerable: true, get: function () { return jsonlTail_1.createJsonlTail; } });
|
|
316
|
+
Object.defineProperty(exports, "DEFAULT_JSONL_TAIL_MAX_LINE_BYTES", { enumerable: true, get: function () { return jsonlTail_1.DEFAULT_JSONL_TAIL_MAX_LINE_BYTES; } });
|
|
317
|
+
Object.defineProperty(exports, "DEFAULT_JSONL_TAIL_READ_BYTES", { enumerable: true, get: function () { return jsonlTail_1.DEFAULT_JSONL_TAIL_READ_BYTES; } });
|
|
311
318
|
// Formatters
|
|
312
319
|
var formatting_1 = require("./formatting");
|
|
313
320
|
Object.defineProperty(exports, "addLocalDays", { enumerable: true, get: function () { return formatting_1.addLocalDays; } });
|
|
@@ -385,8 +392,20 @@ Object.defineProperty(exports, "openInBrowser", { enumerable: true, get: functio
|
|
|
385
392
|
// Credential I/O (platform-aware: Keychain on macOS, file on Linux/Windows)
|
|
386
393
|
var credentialIO_1 = require("./credentialIO");
|
|
387
394
|
Object.defineProperty(exports, "readActiveCredentials", { enumerable: true, get: function () { return credentialIO_1.readActiveCredentials; } });
|
|
395
|
+
Object.defineProperty(exports, "readClaudeCredentialStore", { enumerable: true, get: function () { return credentialIO_1.readClaudeCredentialStore; } });
|
|
388
396
|
Object.defineProperty(exports, "writeActiveCredentials", { enumerable: true, get: function () { return credentialIO_1.writeActiveCredentials; } });
|
|
389
397
|
Object.defineProperty(exports, "deleteStoredCredentials", { enumerable: true, get: function () { return credentialIO_1.deleteStoredCredentials; } });
|
|
398
|
+
Object.defineProperty(exports, "ClaudeCredentialWriteError", { enumerable: true, get: function () { return credentialIO_1.ClaudeCredentialWriteError; } });
|
|
399
|
+
Object.defineProperty(exports, "SIDEKICK_KEYCHAIN_COMMENT_PREFIX", { enumerable: true, get: function () { return credentialIO_1.SIDEKICK_KEYCHAIN_COMMENT_PREFIX; } });
|
|
400
|
+
var claudeLiveGuard_1 = require("./claudeLiveGuard");
|
|
401
|
+
Object.defineProperty(exports, "decideLiveClaudeWrite", { enumerable: true, get: function () { return claudeLiveGuard_1.decideLiveClaudeWrite; } });
|
|
402
|
+
var claudeCredentialLedger_1 = require("./claudeCredentialLedger");
|
|
403
|
+
Object.defineProperty(exports, "readClaudeCredentialLedger", { enumerable: true, get: function () { return claudeCredentialLedger_1.readClaudeCredentialLedger; } });
|
|
404
|
+
Object.defineProperty(exports, "getClaudeCredentialLedgerPath", { enumerable: true, get: function () { return claudeCredentialLedger_1.getClaudeCredentialLedgerPath; } });
|
|
405
|
+
var claudeCredentialDoctor_1 = require("./claudeCredentialDoctor");
|
|
406
|
+
Object.defineProperty(exports, "inspectClaudeCredentialStores", { enumerable: true, get: function () { return claudeCredentialDoctor_1.inspectClaudeCredentialStores; } });
|
|
407
|
+
Object.defineProperty(exports, "repairClaudeCredentialStores", { enumerable: true, get: function () { return claudeCredentialDoctor_1.repairClaudeCredentialStores; } });
|
|
408
|
+
Object.defineProperty(exports, "parseKeychainDump", { enumerable: true, get: function () { return claudeCredentialDoctor_1.parseKeychainDump; } });
|
|
390
409
|
// Credentials
|
|
391
410
|
var credentials_1 = require("./credentials");
|
|
392
411
|
Object.defineProperty(exports, "readClaudeMaxCredentials", { enumerable: true, get: function () { return credentials_1.readClaudeMaxCredentials; } });
|
|
@@ -397,6 +416,9 @@ Object.defineProperty(exports, "parseClaudeCredentialBlob", { enumerable: true,
|
|
|
397
416
|
Object.defineProperty(exports, "claudeCredentialFreshness", { enumerable: true, get: function () { return claudeCredentials_1.claudeCredentialFreshness; } });
|
|
398
417
|
Object.defineProperty(exports, "isNewerClaudeCredential", { enumerable: true, get: function () { return claudeCredentials_1.isNewerClaudeCredential; } });
|
|
399
418
|
Object.defineProperty(exports, "resolveClaudeRefreshExpiry", { enumerable: true, get: function () { return claudeCredentials_1.resolveClaudeRefreshExpiry; } });
|
|
419
|
+
Object.defineProperty(exports, "claudeRefreshFingerprint", { enumerable: true, get: function () { return claudeCredentials_1.claudeRefreshFingerprint; } });
|
|
420
|
+
Object.defineProperty(exports, "claudeLoginOnly", { enumerable: true, get: function () { return claudeCredentials_1.claudeLoginOnly; } });
|
|
421
|
+
Object.defineProperty(exports, "mergeClaudeLoginIntoLive", { enumerable: true, get: function () { return claudeCredentials_1.mergeClaudeLoginIntoLive; } });
|
|
400
422
|
Object.defineProperty(exports, "CLAUDE_ACCESS_TOKEN_LIFETIME_MS", { enumerable: true, get: function () { return claudeCredentials_1.CLAUDE_ACCESS_TOKEN_LIFETIME_MS; } });
|
|
401
423
|
Object.defineProperty(exports, "CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS", { enumerable: true, get: function () { return claudeCredentials_1.CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS; } });
|
|
402
424
|
var codexAuth_1 = require("./codexAuth");
|
|
@@ -438,6 +460,7 @@ Object.defineProperty(exports, "undoLastSwitch", { enumerable: true, get: functi
|
|
|
438
460
|
Object.defineProperty(exports, "getLastSwitch", { enumerable: true, get: function () { return accountManager_1.getLastSwitch; } });
|
|
439
461
|
Object.defineProperty(exports, "listAllAccounts", { enumerable: true, get: function () { return accountManager_1.listAllAccounts; } });
|
|
440
462
|
Object.defineProperty(exports, "resolveClaudeLoginCommand", { enumerable: true, get: function () { return accountManager_1.resolveClaudeLoginCommand; } });
|
|
463
|
+
Object.defineProperty(exports, "discardAccountLogin", { enumerable: true, get: function () { return accountManager_1.discardAccountLogin; } });
|
|
441
464
|
var accountSwitch_1 = require("./accountSwitch");
|
|
442
465
|
Object.defineProperty(exports, "readLastSwitch", { enumerable: true, get: function () { return accountSwitch_1.readLastSwitch; } });
|
|
443
466
|
Object.defineProperty(exports, "getLastSwitchPath", { enumerable: true, get: function () { return accountSwitch_1.getLastSwitchPath; } });
|
|
@@ -481,8 +504,6 @@ Object.defineProperty(exports, "onAccountsChanged", { enumerable: true, get: fun
|
|
|
481
504
|
var claudeProfiles_1 = require("./claudeProfiles");
|
|
482
505
|
Object.defineProperty(exports, "getClaudeProfilesDir", { enumerable: true, get: function () { return claudeProfiles_1.getClaudeProfilesDir; } });
|
|
483
506
|
Object.defineProperty(exports, "getClaudeProfileHome", { enumerable: true, get: function () { return claudeProfiles_1.getClaudeProfileHome; } });
|
|
484
|
-
Object.defineProperty(exports, "getLiveClaudeHome", { enumerable: true, get: function () { return claudeProfiles_1.getLiveClaudeHome; } });
|
|
485
|
-
Object.defineProperty(exports, "getDefaultClaudeHome", { enumerable: true, get: function () { return claudeProfiles_1.getDefaultClaudeHome; } });
|
|
486
507
|
Object.defineProperty(exports, "getClaudeConfigPath", { enumerable: true, get: function () { return claudeProfiles_1.getClaudeConfigPath; } });
|
|
487
508
|
Object.defineProperty(exports, "claudeKeychainSuffix", { enumerable: true, get: function () { return claudeProfiles_1.claudeKeychainSuffix; } });
|
|
488
509
|
Object.defineProperty(exports, "claudeKeychainService", { enumerable: true, get: function () { return claudeProfiles_1.claudeKeychainService; } });
|
|
@@ -492,6 +513,11 @@ Object.defineProperty(exports, "CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV", { enumerab
|
|
|
492
513
|
Object.defineProperty(exports, "isClaudeProfileAuthenticated", { enumerable: true, get: function () { return claudeProfiles_1.isClaudeProfileAuthenticated; } });
|
|
493
514
|
Object.defineProperty(exports, "readClaudeProfileIdentity", { enumerable: true, get: function () { return claudeProfiles_1.readClaudeProfileIdentity; } });
|
|
494
515
|
Object.defineProperty(exports, "readLiveClaudeIdentity", { enumerable: true, get: function () { return claudeProfiles_1.readLiveClaudeIdentity; } });
|
|
516
|
+
var claudePaths_1 = require("./claudePaths");
|
|
517
|
+
Object.defineProperty(exports, "getLiveClaudeHome", { enumerable: true, get: function () { return claudePaths_1.getLiveClaudeHome; } });
|
|
518
|
+
Object.defineProperty(exports, "getDefaultClaudeHome", { enumerable: true, get: function () { return claudePaths_1.getDefaultClaudeHome; } });
|
|
519
|
+
Object.defineProperty(exports, "isDefaultClaudeHome", { enumerable: true, get: function () { return claudePaths_1.isDefaultClaudeHome; } });
|
|
520
|
+
Object.defineProperty(exports, "getClaudeProjectsDir", { enumerable: true, get: function () { return claudePaths_1.getClaudeProjectsDir; } });
|
|
495
521
|
var codexProfiles_1 = require("./codexProfiles");
|
|
496
522
|
Object.defineProperty(exports, "getCodexProfilesDir", { enumerable: true, get: function () { return codexProfiles_1.getCodexProfilesDir; } });
|
|
497
523
|
Object.defineProperty(exports, "getCodexProfileHome", { enumerable: true, get: function () { return codexProfiles_1.getCodexProfileHome; } });
|
|
@@ -514,6 +540,7 @@ Object.defineProperty(exports, "cleanupAbandonedCodexLogins", { enumerable: true
|
|
|
514
540
|
Object.defineProperty(exports, "getCodexCredentialStoreMode", { enumerable: true, get: function () { return codexProfiles_1.getCodexCredentialStoreMode; } });
|
|
515
541
|
Object.defineProperty(exports, "CODEX_KEYRING_FIX_HINT", { enumerable: true, get: function () { return codexProfiles_1.CODEX_KEYRING_FIX_HINT; } });
|
|
516
542
|
var terminalSync_1 = require("./terminalSync");
|
|
543
|
+
Object.defineProperty(exports, "writeAccountLauncher", { enumerable: true, get: function () { return terminalSync_1.writeAccountLauncher; } });
|
|
517
544
|
Object.defineProperty(exports, "writeLauncher", { enumerable: true, get: function () { return terminalSync_1.writeLauncher; } });
|
|
518
545
|
Object.defineProperty(exports, "removeLauncher", { enumerable: true, get: function () { return terminalSync_1.removeLauncher; } });
|
|
519
546
|
var autoSwitch_1 = require("./autoSwitch");
|
|
@@ -671,6 +698,12 @@ var quotaHistory_2 = require("./schemas/quotaHistory");
|
|
|
671
698
|
Object.defineProperty(exports, "quotaHistoryRuntimeProviderSchema", { enumerable: true, get: function () { return quotaHistory_2.quotaHistoryRuntimeProviderSchema; } });
|
|
672
699
|
Object.defineProperty(exports, "quotaHistorySampleSchema", { enumerable: true, get: function () { return quotaHistory_2.quotaHistorySampleSchema; } });
|
|
673
700
|
Object.defineProperty(exports, "quotaHistoryDailyBucketSchema", { enumerable: true, get: function () { return quotaHistory_2.quotaHistoryDailyBucketSchema; } });
|
|
701
|
+
// Schemas — Zod runtime validation for provider-failure diagnoses
|
|
702
|
+
var providerFailure_1 = require("./schemas/providerFailure");
|
|
703
|
+
Object.defineProperty(exports, "providerAuthenticationEvidenceSchema", { enumerable: true, get: function () { return providerFailure_1.providerAuthenticationEvidenceSchema; } });
|
|
704
|
+
Object.defineProperty(exports, "providerFailureEvidenceSchema", { enumerable: true, get: function () { return providerFailure_1.providerFailureEvidenceSchema; } });
|
|
705
|
+
Object.defineProperty(exports, "providerRetryAfterSchema", { enumerable: true, get: function () { return providerFailure_1.providerRetryAfterSchema; } });
|
|
706
|
+
Object.defineProperty(exports, "providerFailureDiagnosisSchema", { enumerable: true, get: function () { return providerFailure_1.providerFailureDiagnosisSchema; } });
|
|
674
707
|
// Schemas — Zod runtime validation for account status
|
|
675
708
|
var accountStatus_2 = require("./schemas/accountStatus");
|
|
676
709
|
Object.defineProperty(exports, "activeProviderAccountStatusSchema", { enumerable: true, get: function () { return accountStatus_2.activeProviderAccountStatusSchema; } });
|
|
@@ -721,7 +754,31 @@ var failingTools_1 = require("./failingTools");
|
|
|
721
754
|
Object.defineProperty(exports, "FAILING_TOOL_TREND_ARROWS", { enumerable: true, get: function () { return failingTools_1.FAILING_TOOL_TREND_ARROWS; } });
|
|
722
755
|
Object.defineProperty(exports, "failingToolTrend", { enumerable: true, get: function () { return failingTools_1.failingToolTrend; } });
|
|
723
756
|
Object.defineProperty(exports, "mergeFailingToolWindows", { enumerable: true, get: function () { return failingTools_1.mergeFailingToolWindows; } });
|
|
724
|
-
var
|
|
725
|
-
Object.defineProperty(exports, "diagnoseProviderFailure", { enumerable: true, get: function () { return
|
|
757
|
+
var providerFailure_2 = require("./providerFailure");
|
|
758
|
+
Object.defineProperty(exports, "diagnoseProviderFailure", { enumerable: true, get: function () { return providerFailure_2.diagnoseProviderFailure; } });
|
|
759
|
+
Object.defineProperty(exports, "PROVIDER_AUTHENTICATION_SOURCES", { enumerable: true, get: function () { return providerFailure_2.PROVIDER_AUTHENTICATION_SOURCES; } });
|
|
760
|
+
Object.defineProperty(exports, "PROVIDER_AUTHENTICATION_STATES", { enumerable: true, get: function () { return providerFailure_2.PROVIDER_AUTHENTICATION_STATES; } });
|
|
761
|
+
Object.defineProperty(exports, "PROVIDER_CREDENTIAL_KINDS", { enumerable: true, get: function () { return providerFailure_2.PROVIDER_CREDENTIAL_KINDS; } });
|
|
762
|
+
Object.defineProperty(exports, "PROVIDER_FAILURE_CODES", { enumerable: true, get: function () { return providerFailure_2.PROVIDER_FAILURE_CODES; } });
|
|
763
|
+
Object.defineProperty(exports, "PROVIDER_FAILURE_EVIDENCE_SOURCES", { enumerable: true, get: function () { return providerFailure_2.PROVIDER_FAILURE_EVIDENCE_SOURCES; } });
|
|
764
|
+
Object.defineProperty(exports, "PROVIDER_RECOVERY_ACTIONS", { enumerable: true, get: function () { return providerFailure_2.PROVIDER_RECOVERY_ACTIONS; } });
|
|
726
765
|
var providerServiceStatus_1 = require("./providerServiceStatus");
|
|
727
766
|
Object.defineProperty(exports, "fetchProviderServiceStatus", { enumerable: true, get: function () { return providerServiceStatus_1.fetchProviderServiceStatus; } });
|
|
767
|
+
var codexCredentialDoctor_1 = require("./codexCredentialDoctor");
|
|
768
|
+
Object.defineProperty(exports, "inspectCodexCredentialStores", { enumerable: true, get: function () { return codexCredentialDoctor_1.inspectCodexCredentialStores; } });
|
|
769
|
+
Object.defineProperty(exports, "repairCodexCredentialStores", { enumerable: true, get: function () { return codexCredentialDoctor_1.repairCodexCredentialStores; } });
|
|
770
|
+
var codexProfiles_2 = require("./codexProfiles");
|
|
771
|
+
Object.defineProperty(exports, "readStoredCodexAccount", { enumerable: true, get: function () { return codexProfiles_2.readStoredCodexAccount; } });
|
|
772
|
+
Object.defineProperty(exports, "syncCodexLiveStateAsync", { enumerable: true, get: function () { return codexProfiles_2.syncCodexLiveStateAsync; } });
|
|
773
|
+
// Codex rollout directories (live and archived)
|
|
774
|
+
var codexPaths_1 = require("./codexPaths");
|
|
775
|
+
Object.defineProperty(exports, "getCodexSessionsDirs", { enumerable: true, get: function () { return codexPaths_1.getCodexSessionsDirs; } });
|
|
776
|
+
Object.defineProperty(exports, "CODEX_SESSIONS_SUBDIR", { enumerable: true, get: function () { return codexPaths_1.CODEX_SESSIONS_SUBDIR; } });
|
|
777
|
+
Object.defineProperty(exports, "CODEX_ARCHIVED_SESSIONS_SUBDIR", { enumerable: true, get: function () { return codexPaths_1.CODEX_ARCHIVED_SESSIONS_SUBDIR; } });
|
|
778
|
+
// Tool categories across providers
|
|
779
|
+
var toolCategory_1 = require("./toolCategory");
|
|
780
|
+
Object.defineProperty(exports, "classifyTool", { enumerable: true, get: function () { return toolCategory_1.classifyTool; } });
|
|
781
|
+
Object.defineProperty(exports, "TOOL_CATEGORIES", { enumerable: true, get: function () { return toolCategory_1.TOOL_CATEGORIES; } });
|
|
782
|
+
// Workspace roots (realpath plus git worktree expansion)
|
|
783
|
+
var workspaceRoots_1 = require("./workspaceRoots");
|
|
784
|
+
Object.defineProperty(exports, "resolveWorkspaceRoots", { enumerable: true, get: function () { return workspaceRoots_1.resolveWorkspaceRoots; } });
|
package/dist/keepAlive.d.ts
CHANGED
|
@@ -39,6 +39,7 @@ export declare function keepAliveCommand(provider: AccountProviderId): {
|
|
|
39
39
|
};
|
|
40
40
|
/**
|
|
41
41
|
* Serialised, bounded refresh of every inactive account that is `expiring`
|
|
42
|
-
* (or `unknown` for Claude). Never touches the live account
|
|
42
|
+
* (or `unknown` for Claude). Never touches the live account or any copy of
|
|
43
|
+
* its chain.
|
|
43
44
|
*/
|
|
44
45
|
export declare function refreshInactiveAccounts(options?: RefreshInactiveAccountsOptions): Promise<RefreshInactiveAccountsResult>;
|
package/dist/keepAlive.js
CHANGED
|
@@ -7,33 +7,50 @@ exports.refreshInactiveAccounts = refreshInactiveAccounts;
|
|
|
7
7
|
* providers' OAuth endpoints itself: it runs the official CLI inside the
|
|
8
8
|
* profile's isolated home and lets the CLI refresh (and rotate) the token
|
|
9
9
|
* where it belongs, then re-reads the store to record the new expiry.
|
|
10
|
+
*
|
|
11
|
+
* A refresh rotates the refresh token, so keep-alive only runs where the
|
|
12
|
+
* profile home holds the one live copy of its chain: never the live account,
|
|
13
|
+
* never a copy whose refresh token equals live's, never a copy taken from the
|
|
14
|
+
* live store that no switch has handed back yet, and never a stale copy when
|
|
15
|
+
* the backup is newer. The check and a lease are taken under the swap lock, so
|
|
16
|
+
* no switch can install that account while its CLI is refreshing.
|
|
10
17
|
*/
|
|
18
|
+
const codexKeepAlive_1 = require("./codexKeepAlive");
|
|
19
|
+
const codexProfiles_1 = require("./codexProfiles");
|
|
20
|
+
const codexPaths_1 = require("./codexPaths");
|
|
21
|
+
const codexCredentialStore_1 = require("./codexCredentialStore");
|
|
22
|
+
const codexAuth_1 = require("./codexAuth");
|
|
11
23
|
const child_process_1 = require("child_process");
|
|
12
24
|
const accountHealth_1 = require("./accountHealth");
|
|
13
25
|
const accountLaunch_1 = require("./accountLaunch");
|
|
26
|
+
const accounts_1 = require("./accounts");
|
|
14
27
|
/** The command each CLI runs to load (and refresh) its stored login. */
|
|
15
28
|
function keepAliveCommand(provider) {
|
|
16
29
|
if (provider === 'codex')
|
|
17
|
-
return { command: 'codex', args: ['
|
|
30
|
+
return { command: 'codex', args: ['app-server', '-c', 'cli_auth_credentials_store="file"'] };
|
|
18
31
|
const override = process.env.SIDEKICK_CLAUDE_KEEPALIVE_ARGS?.trim();
|
|
19
32
|
return { command: 'claude', args: override ? override.split(/\s+/) : ['auth', 'status'] };
|
|
20
33
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
34
|
+
/** How long a keep-alive lease outlives the CLI timeout before it lapses on its own. */
|
|
35
|
+
const LEASE_GRACE_MS = 30_000;
|
|
36
|
+
const defaultRunner = (command, args, env, timeoutMs) => command === 'codex'
|
|
37
|
+
? (0, codexKeepAlive_1.runCodexKeepAlive)(command, args, env, timeoutMs)
|
|
38
|
+
: new Promise((resolve) => {
|
|
39
|
+
try {
|
|
40
|
+
(0, child_process_1.execFile)(command, args, { encoding: 'utf8', env, timeout: timeoutMs, killSignal: 'SIGKILL', windowsHide: true }, (error, stdout) => {
|
|
41
|
+
const status = error
|
|
42
|
+
? (error.code ?? null)
|
|
43
|
+
: 0;
|
|
44
|
+
resolve({
|
|
45
|
+
status: typeof status === 'number' ? status : null,
|
|
46
|
+
stdout: String(stdout ?? ''),
|
|
47
|
+
});
|
|
30
48
|
});
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
});
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
resolve({ status: null, stdout: '' });
|
|
52
|
+
}
|
|
53
|
+
});
|
|
37
54
|
function eligible(view, includeFresh) {
|
|
38
55
|
if (view.health.isLive)
|
|
39
56
|
return 'live account; the CLI refreshes it in normal use';
|
|
@@ -49,7 +66,8 @@ function eligible(view, includeFresh) {
|
|
|
49
66
|
}
|
|
50
67
|
/**
|
|
51
68
|
* Serialised, bounded refresh of every inactive account that is `expiring`
|
|
52
|
-
* (or `unknown` for Claude). Never touches the live account
|
|
69
|
+
* (or `unknown` for Claude). Never touches the live account or any copy of
|
|
70
|
+
* its chain.
|
|
53
71
|
*/
|
|
54
72
|
async function refreshInactiveAccounts(options = {}) {
|
|
55
73
|
const result = { refreshed: [], skipped: [], failed: [] };
|
|
@@ -62,10 +80,15 @@ async function refreshInactiveAccounts(options = {}) {
|
|
|
62
80
|
result.skipped.push({ id: view.id, providerId: view.providerId, reason });
|
|
63
81
|
continue;
|
|
64
82
|
}
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
83
|
+
const isClaude = view.providerId === 'claude-code';
|
|
84
|
+
const beginLease = isClaude ? accounts_1.beginClaudeKeepAlive : codexProfiles_1.beginCodexKeepAlive;
|
|
85
|
+
const finishLease = isClaude ? accounts_1.finishClaudeKeepAlive : codexProfiles_1.finishCodexKeepAlive;
|
|
86
|
+
if (options.dryRun) {
|
|
87
|
+
const blocker = (isClaude ? accounts_1.getClaudeKeepAliveBlocker : codexProfiles_1.getCodexKeepAliveBlocker)(view.id);
|
|
88
|
+
if (blocker) {
|
|
89
|
+
result.skipped.push({ id: view.id, providerId: view.providerId, reason: blocker });
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
69
92
|
}
|
|
70
93
|
const { command, args } = keepAliveCommand(view.providerId);
|
|
71
94
|
if (options.dryRun) {
|
|
@@ -76,16 +99,71 @@ async function refreshInactiveAccounts(options = {}) {
|
|
|
76
99
|
});
|
|
77
100
|
continue;
|
|
78
101
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
102
|
+
{
|
|
103
|
+
const begin = beginLease(view.id, timeoutMs + LEASE_GRACE_MS);
|
|
104
|
+
if (!begin.ok) {
|
|
105
|
+
result.skipped.push({ id: view.id, providerId: view.providerId, reason: begin.reason });
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
let released = false;
|
|
110
|
+
const release = () => {
|
|
111
|
+
if (!released) {
|
|
112
|
+
released = true;
|
|
113
|
+
finishLease(view.id);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
82
116
|
try {
|
|
83
|
-
const
|
|
117
|
+
const launch = (0, accountLaunch_1.getAccountLaunchEnv)(view.providerId, view.id, {
|
|
118
|
+
materialize: true,
|
|
119
|
+
restoreBackup: false,
|
|
120
|
+
});
|
|
121
|
+
if (launch.error) {
|
|
122
|
+
release();
|
|
123
|
+
result.skipped.push({ id: view.id, providerId: view.providerId, reason: launch.error });
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (!isClaude &&
|
|
127
|
+
(0, codexCredentialStore_1.canonicalCodexPath)(launch.home) === (0, codexCredentialStore_1.canonicalCodexPath)((0, codexPaths_1.getSystemCodexHome)())) {
|
|
128
|
+
result.skipped.push({
|
|
129
|
+
id: view.id,
|
|
130
|
+
providerId: view.providerId,
|
|
131
|
+
reason: 'the account became live before refresh',
|
|
132
|
+
});
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const before = isClaude ? null : (0, codexCredentialStore_1.readCodexCredentialStore)(launch.home);
|
|
136
|
+
const env = { ...process.env, ...launch.env };
|
|
137
|
+
for (const name of launch.envUnset)
|
|
138
|
+
delete env[name];
|
|
139
|
+
if (!isClaude)
|
|
140
|
+
for (const name of [
|
|
141
|
+
'OPENAI_API_KEY',
|
|
142
|
+
'CODEX_API_KEY',
|
|
143
|
+
'CODEX_ACCESS_TOKEN',
|
|
144
|
+
'OPENAI_FEDERATION_RULE_ID',
|
|
145
|
+
'OPENAI_IDENTITY_TOKEN_FILE',
|
|
146
|
+
'OPENAI_WORKLOAD_IDENTITY_CONTEXT',
|
|
147
|
+
])
|
|
148
|
+
delete env[name];
|
|
149
|
+
let run;
|
|
150
|
+
try {
|
|
151
|
+
run = await runner(command, args, env, timeoutMs);
|
|
152
|
+
}
|
|
153
|
+
finally {
|
|
154
|
+
release();
|
|
155
|
+
}
|
|
84
156
|
const after = (0, accountHealth_1.getAccountHealth)(view.providerId, view.id, {
|
|
85
157
|
probe: 'store',
|
|
86
158
|
now: options.now,
|
|
87
159
|
});
|
|
88
|
-
|
|
160
|
+
const codexAfter = isClaude ? null : (0, codexCredentialStore_1.readCodexCredentialStore)(launch.home);
|
|
161
|
+
const advanced = isClaude ||
|
|
162
|
+
(before?.status === 'ok' &&
|
|
163
|
+
codexAfter?.status === 'ok' &&
|
|
164
|
+
(0, codexAuth_1.identitiesMatch)((0, codexAuth_1.readAuthIdentityFromRaw)(before.snapshot.authRaw), (0, codexAuth_1.readAuthIdentityFromRaw)(codexAfter.snapshot.authRaw)) &&
|
|
165
|
+
(0, codexAuth_1.compareCodexAuthFreshness)(codexAfter.snapshot.authRaw, before.snapshot.authRaw) > 0);
|
|
166
|
+
if (after.state === 'fresh' && advanced && (isClaude || run.status === 0)) {
|
|
89
167
|
result.refreshed.push({ id: view.id, providerId: view.providerId });
|
|
90
168
|
}
|
|
91
169
|
else {
|
|
@@ -93,13 +171,22 @@ async function refreshInactiveAccounts(options = {}) {
|
|
|
93
171
|
id: view.id,
|
|
94
172
|
providerId: view.providerId,
|
|
95
173
|
error: run.status === 0
|
|
96
|
-
?
|
|
97
|
-
|
|
174
|
+
? isClaude
|
|
175
|
+
? `${command} ran but the stored credential is still ${after.state}.`
|
|
176
|
+
: `${command} ran but no verified credential advance was observed (health: ${after.state}).`
|
|
177
|
+
: `${command} exited with status ${run.status ?? 'unknown'}.${isClaude ? '' : ' Codex app-server refresh requires a compatible Codex CLI; update it and retry.'}`,
|
|
98
178
|
});
|
|
99
179
|
}
|
|
100
180
|
}
|
|
101
181
|
catch (err) {
|
|
102
|
-
result.failed.push({
|
|
182
|
+
result.failed.push({
|
|
183
|
+
id: view.id,
|
|
184
|
+
providerId: view.providerId,
|
|
185
|
+
error: isClaude ? String(err) : 'Codex keep-alive could not complete safely.',
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
finally {
|
|
189
|
+
release();
|
|
103
190
|
}
|
|
104
191
|
}
|
|
105
192
|
return result;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Pure policy shared by provider-specific live credential installers. */
|
|
2
|
+
export type LiveCredentialWriteIntent = 'switch' | 'relogin' | 'repair' | 'rollback';
|
|
3
|
+
export type LiveCredentialWriteRefusal = 'live-unreadable' | 'invalid-candidate' | 'same-account' | 'different-account' | 'same-link' | 'not-captured' | 'not-newer' | 'live-changed';
|
|
4
|
+
export type LiveCredentialWriteDecision = {
|
|
5
|
+
allow: true;
|
|
6
|
+
} | {
|
|
7
|
+
allow: false;
|
|
8
|
+
code: LiveCredentialWriteRefusal;
|
|
9
|
+
reason: string;
|
|
10
|
+
};
|
|
11
|
+
export interface LiveCredentialWriteFacts {
|
|
12
|
+
provider: string;
|
|
13
|
+
intent: LiveCredentialWriteIntent;
|
|
14
|
+
liveStatus: 'ok' | 'absent' | 'corrupt' | 'error';
|
|
15
|
+
candidateValid: boolean;
|
|
16
|
+
liveHasCredential: boolean;
|
|
17
|
+
liveAccountId: string | null;
|
|
18
|
+
candidateAccountId: string;
|
|
19
|
+
sameLink: boolean;
|
|
20
|
+
strictlyNewer: boolean;
|
|
21
|
+
capturedOutgoing?: boolean;
|
|
22
|
+
matchesWritten: boolean;
|
|
23
|
+
/** Compatibility with Claude's established missing/corrupt rollback policy. */
|
|
24
|
+
allowNonOkRollback?: boolean;
|
|
25
|
+
rejectCorrupt?: boolean;
|
|
26
|
+
requireDifferentLinkForAdvance?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare function decideLiveCredentialWrite(f: LiveCredentialWriteFacts): LiveCredentialWriteDecision;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decideLiveCredentialWrite = decideLiveCredentialWrite;
|
|
4
|
+
function decideLiveCredentialWrite(f) {
|
|
5
|
+
const refuse = (code, reason) => ({ allow: false, code, reason });
|
|
6
|
+
if (f.liveStatus === 'error' || (f.rejectCorrupt && f.liveStatus === 'corrupt')) {
|
|
7
|
+
return refuse('live-unreadable', `The live ${f.provider} login could not be read, so it was left untouched.`);
|
|
8
|
+
}
|
|
9
|
+
if (f.intent === 'rollback') {
|
|
10
|
+
return f.matchesWritten || (f.allowNonOkRollback && f.liveStatus !== 'ok')
|
|
11
|
+
? { allow: true }
|
|
12
|
+
: refuse('live-changed', `The live ${f.provider} login changed after the switch wrote it; it was kept.`);
|
|
13
|
+
}
|
|
14
|
+
if (!f.candidateValid)
|
|
15
|
+
return refuse('invalid-candidate', `The saved credential is not a ${f.provider} login.`);
|
|
16
|
+
if (f.intent === 'switch') {
|
|
17
|
+
if (f.liveAccountId !== null && f.liveAccountId === f.candidateAccountId) {
|
|
18
|
+
return refuse('same-account', 'That account is already the live login.');
|
|
19
|
+
}
|
|
20
|
+
if (f.sameLink)
|
|
21
|
+
return refuse('same-link', 'The saved login is the same refresh token the live login holds; sign in to that account again.');
|
|
22
|
+
if (f.liveHasCredential && !f.capturedOutgoing) {
|
|
23
|
+
return refuse('not-captured', 'The outgoing live login was not saved first, so it was left untouched.');
|
|
24
|
+
}
|
|
25
|
+
return { allow: true };
|
|
26
|
+
}
|
|
27
|
+
if (f.liveAccountId !== null && f.liveAccountId !== f.candidateAccountId) {
|
|
28
|
+
return refuse('different-account', `The live ${f.provider} login belongs to another account; switch accounts instead.`);
|
|
29
|
+
}
|
|
30
|
+
if (!f.liveHasCredential)
|
|
31
|
+
return { allow: true };
|
|
32
|
+
if (!f.strictlyNewer || (f.requireDifferentLinkForAdvance && f.sameLink)) {
|
|
33
|
+
return refuse('not-newer', `The live ${f.provider} login is already at least as new; it was kept.`);
|
|
34
|
+
}
|
|
35
|
+
return { allow: true };
|
|
36
|
+
}
|
package/dist/node.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ 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';
|
|
13
|
+
export { collectPromptHistory, isPromptHistorySessionSettled, parsePromptHistoryCursor, } from './promptHistory';
|
|
14
14
|
export type { CollectPromptHistoryOptions, PromptHistoryAnswerState, PromptHistoryBound, PromptHistoryBounds, PromptHistoryCursor, PromptHistoryCursorSession, PromptHistoryEntry, PromptHistoryExclusion, PromptHistoryMetadataStatus, PromptHistoryPendingPrompt, PromptHistoryProvider, PromptHistoryResult, PromptHistoryResumeState, PromptHistoryStats, PromptHistoryUsage, } from './promptHistory';
|
|
15
15
|
export { collectSessionPromptHistory } from './sessionPromptHistory';
|
|
16
16
|
export type { CollectSessionPromptHistoryOptions, PromptHistorySession, PromptHistorySessionPrompt, PromptHistorySessionRef, SessionPromptHistoryBound, SessionPromptHistoryBounds, SessionPromptHistoryInclude, SessionPromptHistoryResult, SessionPromptHistoryStats, } from './sessionPromptHistory';
|
|
@@ -53,5 +53,17 @@ export type { ListSessionFilesOptions, ProviderId, SessionEnumerationCounters, S
|
|
|
53
53
|
export { createSessionProviders } from './providers/factory';
|
|
54
54
|
export type { CreateSessionProvidersOptions, CreateSessionProvidersResult, } from './providers/factory';
|
|
55
55
|
export { SYNTHETIC_MODEL } from './usage/claudeUsageDedupe';
|
|
56
|
+
export { CONFIG_DIR_ENV_VAR, getConfigDir, getConfigDirOverride, getDefaultConfigDir, } from './paths';
|
|
57
|
+
export { encodeWorkspacePath as encodeClaudeWorkspacePath, getSessionDirectory as getClaudeSessionDirectory, } from './parsers/sessionPathResolver';
|
|
58
|
+
export { getLiveClaudeHome, getDefaultClaudeHome, isDefaultClaudeHome, getClaudeProjectsDir, } from './claudePaths';
|
|
59
|
+
export { getSystemCodexHome, getCodexMonitoringHomes, resolveSidekickCodexHome, getCodexExecutionEnv, getCodexSessionsDirs, CODEX_SESSIONS_SUBDIR, CODEX_ARCHIVED_SESSIONS_SUBDIR, } from './codexPaths';
|
|
60
|
+
export type { CodexSessionsDirsOptions } from './codexPaths';
|
|
56
61
|
export type { ProviderServiceSeverity, ProviderServiceComponent, ProviderServiceIncident, ProviderServiceStatusFailureReason, ObservedProviderServiceStatus, UnavailableProviderServiceStatus, ProviderServiceStatus, FetchProviderServiceStatusOptions, } from './providerServiceStatusTypes';
|
|
57
62
|
export { fetchProviderServiceStatus } from './providerServiceStatus';
|
|
63
|
+
export { classifyTool, TOOL_CATEGORIES } from './toolCategory';
|
|
64
|
+
export type { ClassifyToolOptions, ToolCategory } from './toolCategory';
|
|
65
|
+
export { resolveWorkspaceRoots } from './workspaceRoots';
|
|
66
|
+
export type { ResolveWorkspaceRootsOptions, ResolvedWorkspaceRoots } from './workspaceRoots';
|
|
67
|
+
export { discoverWorktreeSiblings, resolveWorktreeMainRepo } from './parsers/sessionPathResolver';
|
|
68
|
+
export { createJsonlTail, DEFAULT_JSONL_TAIL_MAX_LINE_BYTES, DEFAULT_JSONL_TAIL_READ_BYTES, } from './watchers/jsonlTail';
|
|
69
|
+
export type { JsonlTail, JsonlTailBatch, JsonlTailLine, JsonlTailOptions, JsonlTailReset, JsonlTailResetReason, } from './watchers/jsonlTail';
|