sidekick-shared 0.22.0 → 0.23.1
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/README.md +75 -63
- package/dist/accountManager.js +10 -0
- package/dist/accountRegistry.d.ts +2 -0
- package/dist/accountStatus.d.ts +1 -0
- package/dist/accountStatus.js +6 -0
- package/dist/accounts.js +2 -0
- package/dist/aggregation/EventAggregator.d.ts +36 -2
- package/dist/aggregation/EventAggregator.js +259 -33
- package/dist/aggregation/snapshot.d.ts +1 -1
- package/dist/aggregation/snapshot.js +2 -1
- package/dist/aggregation/types.d.ts +25 -1
- package/dist/analytics/codeImpact.d.ts +20 -0
- package/dist/analytics/codeImpact.js +21 -0
- package/dist/analytics/compactionLedger.d.ts +11 -0
- package/dist/analytics/compactionLedger.js +31 -0
- package/dist/analytics/qualityScore.d.ts +26 -0
- package/dist/analytics/qualityScore.js +115 -0
- package/dist/autoSwitch.d.ts +1 -1
- package/dist/autoSwitch.js +14 -3
- package/dist/codexProfiles.js +2 -0
- package/dist/codexQuota.d.ts +2 -0
- package/dist/codexQuota.js +27 -0
- package/dist/codexQuotaWatcher.d.ts +7 -0
- package/dist/codexQuotaWatcher.js +37 -19
- package/dist/context/composer.d.ts +3 -2
- package/dist/context/composer.js +5 -5
- package/dist/context/sessionContext.js +35 -9
- package/dist/credentialIO.js +19 -5
- package/dist/doctor.d.ts +55 -0
- package/dist/doctor.js +244 -0
- package/dist/errorHistory.d.ts +33 -0
- package/dist/errorHistory.js +95 -0
- package/dist/extractors/errorTaxonomy.d.ts +6 -0
- package/dist/extractors/errorTaxonomy.js +47 -0
- package/dist/extractors/toolCall.d.ts +9 -0
- package/dist/extractors/toolCall.js +79 -0
- package/dist/handoffUrl.d.ts +7 -0
- package/dist/handoffUrl.js +26 -0
- package/dist/index.d.ts +32 -9
- package/dist/index.js +64 -24
- package/dist/modelInfo.js +6 -0
- package/dist/multiProviderQuotaService.js +13 -2
- package/dist/parsers/codexParser.js +17 -1
- package/dist/parsers/openCodeParser.js +13 -0
- package/dist/parsers/planExtractor.js +17 -6
- package/dist/parsers/sessionActivityDetector.js +2 -0
- package/dist/parsers/sessionPathResolver.js +19 -16
- package/dist/parsers/subagentScanner.d.ts +1 -1
- package/dist/parsers/subagentScanner.js +4 -5
- package/dist/parsers/subagentTraceParser.js +4 -7
- package/dist/paths.d.ts +10 -0
- package/dist/paths.js +18 -5
- package/dist/projectMigration.d.ts +23 -0
- package/dist/projectMigration.js +95 -0
- package/dist/providerStatus.js +13 -2
- package/dist/providers/claudeCode.js +18 -4
- package/dist/providers/codex.js +42 -13
- package/dist/providers/codexDatabase.d.ts +1 -11
- package/dist/providers/detect.js +32 -3
- package/dist/providers/openCodeDatabase.d.ts +1 -31
- package/dist/providers/openCodeDatabase.js +21 -11
- package/dist/providers/types.d.ts +1 -0
- package/dist/quota.js +8 -0
- package/dist/quotaPoller.js +17 -6
- package/dist/quotaSnapshots.js +80 -26
- package/dist/readers/decisions.d.ts +2 -1
- package/dist/readers/decisions.js +5 -5
- package/dist/readers/handoff.d.ts +2 -1
- package/dist/readers/handoff.js +13 -8
- package/dist/readers/helpers.d.ts +3 -0
- package/dist/readers/helpers.js +12 -0
- package/dist/readers/notes.d.ts +2 -1
- package/dist/readers/notes.js +11 -8
- package/dist/readers/plans.js +3 -5
- package/dist/readers/tasks.d.ts +2 -1
- package/dist/readers/tasks.js +5 -5
- package/dist/report/htmlHelpers.js +6 -1
- package/dist/report/openBrowser.js +3 -3
- package/dist/schemas/index.d.ts +2 -0
- package/dist/schemas/index.js +10 -1
- package/dist/schemas/observedSessionV1.d.ts +499 -0
- package/dist/schemas/observedSessionV1.js +69 -0
- package/dist/schemas/sessionEvent.d.ts +13 -0
- package/dist/schemas/sessionEvent.js +19 -0
- package/dist/search/sessionSearch.d.ts +2 -2
- package/dist/search/sessionSearch.js +2 -3
- package/dist/sessionMonitor.d.ts +29 -0
- package/dist/sessionMonitor.js +71 -0
- package/dist/statusline/BurnRateCalculator.d.ts +14 -0
- package/dist/statusline/BurnRateCalculator.js +45 -0
- package/dist/statusline/formatter.d.ts +16 -0
- package/dist/statusline/formatter.js +84 -0
- package/dist/statusline/index.d.ts +7 -0
- package/dist/statusline/index.js +13 -0
- package/dist/terminalSync.js +16 -7
- package/dist/types/codex.d.ts +2 -0
- package/dist/types/historicalData.d.ts +49 -1
- package/dist/types/historicalData.js +28 -2
- package/dist/types/observedSessionV1.d.ts +70 -0
- package/dist/types/observedSessionV1.js +186 -0
- package/dist/types/opencode.d.ts +1 -0
- package/dist/types/sessionEvent.d.ts +19 -1
- package/dist/watchers/eventBridge.js +1 -0
- package/dist/watchers/factory.js +14 -3
- package/dist/watchers/jsonlTail.js +34 -14
- package/dist/watchers/jsonlWatcher.js +5 -3
- package/dist/watchers/providerReaderWatcher.js +4 -2
- package/dist/watchers/sqliteWatcher.d.ts +2 -0
- package/dist/watchers/sqliteWatcher.js +27 -14
- package/dist/watchers/types.d.ts +5 -0
- package/dist/writers/atomic.d.ts +4 -0
- package/dist/writers/atomic.js +200 -0
- package/dist/writers/decisions.d.ts +12 -0
- package/dist/writers/decisions.js +88 -0
- package/dist/writers/notes.d.ts +8 -0
- package/dist/writers/notes.js +82 -0
- package/dist/writers/tasks.d.ts +6 -0
- package/dist/writers/tasks.js +100 -0
- package/dist/zaiQuotaWatcher.js +6 -0
- package/package.json +5 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderHandoffUrlTemplate = renderHandoffUrlTemplate;
|
|
4
|
+
const ALLOWED_PLACEHOLDERS = new Set(['sessionId', 'provider', 'projectPath']);
|
|
5
|
+
/** Renders an external handoff URL using identifiers only. */
|
|
6
|
+
function renderHandoffUrlTemplate(template, identifiers) {
|
|
7
|
+
if (!template.trim())
|
|
8
|
+
throw new Error('No handoff URL template is configured.');
|
|
9
|
+
const rendered = template.replace(/\{([^}]+)\}/g, (_match, name) => {
|
|
10
|
+
if (!ALLOWED_PLACEHOLDERS.has(name)) {
|
|
11
|
+
throw new Error(`Unsupported handoff URL placeholder: {${name}}`);
|
|
12
|
+
}
|
|
13
|
+
return encodeURIComponent(identifiers[name]);
|
|
14
|
+
});
|
|
15
|
+
let url;
|
|
16
|
+
try {
|
|
17
|
+
url = new URL(rendered);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
throw new Error('The rendered handoff URL is invalid.');
|
|
21
|
+
}
|
|
22
|
+
if (['javascript:', 'data:', 'file:'].includes(url.protocol)) {
|
|
23
|
+
throw new Error(`Unsafe handoff URL protocol: ${url.protocol}`);
|
|
24
|
+
}
|
|
25
|
+
return url.toString();
|
|
26
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,11 +11,13 @@ export type { DecisionEntry, DecisionLogStore, DecisionSource } from './types/de
|
|
|
11
11
|
export { DECISION_LOG_SCHEMA_VERSION } from './types/decisionLog';
|
|
12
12
|
export type { KnowledgeNote, KnowledgeNoteStore, KnowledgeNoteType, KnowledgeNoteSource, KnowledgeNoteStatus, KnowledgeNoteImportance, } from './types/knowledgeNote';
|
|
13
13
|
export { KNOWLEDGE_NOTE_SCHEMA_VERSION, IMPORTANCE_DECAY_FACTORS, STALENESS_THRESHOLDS, } from './types/knowledgeNote';
|
|
14
|
-
export type { HistoricalDataStore, DailyData, MonthlyData, AllTimeStats, TokenTotals, ModelUsageRecord, ToolUsageRecord, SessionSummary, } from './types/historicalData';
|
|
15
|
-
export { HISTORICAL_DATA_SCHEMA_VERSION, createEmptyTokenTotals } from './types/historicalData';
|
|
14
|
+
export type { HistoricalDataStore, DailyData, HourlyData, MonthlyData, AllTimeStats, TokenTotals, ModelUsageRecord, ToolUsageRecord, SessionSummary, SessionHistoryRecord, } from './types/historicalData';
|
|
15
|
+
export { HISTORICAL_DATA_SCHEMA_VERSION, HISTORICAL_SESSION_RETENTION_LIMIT, createEmptyTokenTotals, createEmptyDataStore, } from './types/historicalData';
|
|
16
16
|
export type { PersistedPlan, PersistedPlanStep, PlanHistoryStore, PlanStepStatus, PlanStatus, PlanSource, PlanStepComplexity, } from './types/plan';
|
|
17
17
|
export { PLAN_SCHEMA_VERSION, MAX_PLANS_PER_PROJECT } from './types/plan';
|
|
18
|
-
export { getConfigDir, getProjectDataPath, getGlobalDataPath, encodeWorkspacePath, getProjectSlug, getProjectSlugRaw, } from './paths';
|
|
18
|
+
export { getConfigDir, getProjectDataPath, getGlobalDataPath, encodeWorkspacePath, getProjectSlug, getProjectSlugRaw, resolveProjectIdentity, } from './paths';
|
|
19
|
+
export type { ProjectIdentity } from './paths';
|
|
20
|
+
export { migrateLegacyProjectStores } from './projectMigration';
|
|
19
21
|
export { readTasks } from './readers/tasks';
|
|
20
22
|
export type { ReadTasksOptions } from './readers/tasks';
|
|
21
23
|
export { readDecisions } from './readers/decisions';
|
|
@@ -26,7 +28,15 @@ export { readHistory } from './readers/history';
|
|
|
26
28
|
export { readLatestHandoff } from './readers/handoff';
|
|
27
29
|
export { readPlans, getLatestPlan, writePlans, getPlanAnalytics, readClaudeCodePlanFiles, } from './readers/plans';
|
|
28
30
|
export type { ReadPlansOptions, PlanAnalytics } from './readers/plans';
|
|
31
|
+
export { atomicWriteJson, atomicWriteJsonSync, updateJsonStoreAtomic } from './writers/atomic';
|
|
32
|
+
export { addTask, completeTask } from './writers/tasks';
|
|
33
|
+
export { addDecision, decisionFingerprint } from './writers/decisions';
|
|
34
|
+
export { addNote } from './writers/notes';
|
|
35
|
+
export { renderHandoffUrlTemplate } from './handoffUrl';
|
|
36
|
+
export type { HandoffUrlIdentifiers } from './handoffUrl';
|
|
29
37
|
export type { ProviderId, SessionProvider, SessionProviderBase, SessionFileStats, SessionFileInfo, SearchHit, ProjectFolderInfo, SessionReader, ProviderRuntimeStatus, } from './providers/types';
|
|
38
|
+
export { createProviderSessionAdapterV1, derivePendingUserRequestV1, } from './types/observedSessionV1';
|
|
39
|
+
export type { ObservationProvenanceV1, ObservedAgentSessionV1, ObservedValueV1, PendingUserRequestV1, ProviderCapabilitiesV1, ProviderSessionAdapterV1, SessionEvidenceRefV1, } from './types/observedSessionV1';
|
|
30
40
|
export { detectProvider, getAllDetectedProviders } from './providers/detect';
|
|
31
41
|
export { ClaudeCodeProvider } from './providers/claudeCode';
|
|
32
42
|
export { OpenCodeProvider, getOpenCodeDataDir } from './providers/openCode';
|
|
@@ -77,16 +87,26 @@ export type { HighlightFormat } from './formatters/eventHighlighter';
|
|
|
77
87
|
export { ALL_PHRASES, PHRASE_CATEGORIES, getRandomPhrase } from './phrases';
|
|
78
88
|
export type { PhraseCategory } from './phrases';
|
|
79
89
|
export { EventAggregator, parseTodoDependencies } from './aggregation/EventAggregator';
|
|
90
|
+
export { SessionMonitor } from './sessionMonitor';
|
|
91
|
+
export type { SessionMonitorOptions } from './sessionMonitor';
|
|
80
92
|
export type { SerializedAggregatorState } from './aggregation/EventAggregator';
|
|
81
93
|
export { saveSnapshot, loadSnapshot, deleteSnapshot, isSnapshotValid, getSnapshotPath, } from './aggregation/snapshot';
|
|
82
94
|
export type { SessionSnapshot } from './aggregation/snapshot';
|
|
83
|
-
export type { EventAggregatorOptions, AggregatedTokens, ModelUsageStats, BurnRateInfo, SubagentLifecycle, AggregatedMetrics, FrequencyMetric, PatternMetric, HeatmapBucketMetric, } from './aggregation/types';
|
|
95
|
+
export type { EventAggregatorOptions, AggregatedTokens, ModelUsageStats, BurnRateInfo, SubagentLifecycle, AggregatedMetrics, FrequencyMetric, PatternMetric, HeatmapBucketMetric, ErrorRollup, ErrorRollupEntry, ErrorBucketMetric, } from './aggregation/types';
|
|
96
|
+
export { ERROR_HISTORY_SCHEMA_VERSION, MAX_ERROR_HISTORY_SESSIONS, appendErrorHistory, getTopFailingTools, readErrorHistory, } from './errorHistory';
|
|
97
|
+
export type { ErrorHistorySessionRecord, ErrorHistoryStore, TopFailingTool } from './errorHistory';
|
|
84
98
|
export { FrequencyTracker } from './aggregation/FrequencyTracker';
|
|
85
99
|
export type { FrequencyEntry, SerializedFrequencyState } from './aggregation/FrequencyTracker';
|
|
86
100
|
export { HeatmapTracker } from './aggregation/HeatmapTracker';
|
|
87
101
|
export type { HeatmapBucket, SerializedHeatmapState } from './aggregation/HeatmapTracker';
|
|
88
102
|
export { PatternExtractor } from './aggregation/PatternExtractor';
|
|
89
103
|
export type { PatternCluster, SerializedPatternState } from './aggregation/PatternExtractor';
|
|
104
|
+
export { calculateQualityTrend, scoreSessionQuality } from './analytics/qualityScore';
|
|
105
|
+
export type { QualityFactorContribution, QualityFactorId, SessionQualityScore, QualityTrend, } from './analytics/qualityScore';
|
|
106
|
+
export { calculateCodeImpact } from './analytics/codeImpact';
|
|
107
|
+
export type { CodeImpact, ModelCostInput } from './analytics/codeImpact';
|
|
108
|
+
export { calculateCompactionLedger, formatCompactionLedger } from './analytics/compactionLedger';
|
|
109
|
+
export type { CompactionLedger } from './analytics/compactionLedger';
|
|
90
110
|
export { generateHtmlReport, parseTranscript, parseTranscriptFromEvents, openInBrowser, } from './report';
|
|
91
111
|
export type { TranscriptContentBlock, TranscriptEntry, HtmlReportOptions } from './report';
|
|
92
112
|
export { readActiveCredentials, writeActiveCredentials } from './credentialIO';
|
|
@@ -122,28 +142,29 @@ export { fetchCodexResetCreditsFromApi, fetchCodexQuotaFromApi, quotaFromCodexRa
|
|
|
122
142
|
export type { CodexQuotaApiOptions, CodexQuotaCreditsSnapshot, CodexQuotaResolveOptions, CodexQuotaResolveSource, } from './codexQuota';
|
|
123
143
|
export { CodexQuotaWatcher } from './codexQuotaWatcher';
|
|
124
144
|
export type { CodexQuotaWatcherOptions } from './codexQuotaWatcher';
|
|
125
|
-
export { accumulateZaiUsage, extractNextFlushTime, inferZaiQuotaState, isZaiProviderId, makeUnavailableZaiQuotaState, parseZaiQuotaError, resolveZaiTier, rowsToZaiTurnsAndErrors, turnTokenWeight, ZAI_PROMPT_INVOCATIONS, ZAI_PROVIDER_IDS, ZAI_TIER_BUDGETS, } from './zaiQuota';
|
|
126
|
-
export type { ZaiAccumulatedUsage, ZaiAssistantTurn, ZaiOpenCodeRow, ZaiProviderId, ZaiQuotaError, ZaiQuotaErrorKind, ZaiTier, InferZaiQuotaStateOptions, } from './zaiQuota';
|
|
127
|
-
export { ZaiQuotaWatcher } from './zaiQuotaWatcher';
|
|
128
|
-
export type { ZaiQuotaWatcherOptions } from './zaiQuotaWatcher';
|
|
129
145
|
export { fetchZaiQuotaFromApi, quotaStateFromZaiQuotaLimitPayload, readZaiCredentials, resolveZaiQuota, } from './zaiQuotaApi';
|
|
130
146
|
export type { ReadZaiCredentialsOptions, ZaiCredentialSource, ZaiCredentials, ZaiPlatform, ZaiQuotaApiOptions, ZaiQuotaResolveOptions, } from './zaiQuotaApi';
|
|
131
147
|
export { MultiProviderQuotaService } from './multiProviderQuotaService';
|
|
132
148
|
export type { MultiProviderQuotaServiceOptions } from './multiProviderQuotaService';
|
|
133
149
|
export type { ProviderQuotaMap, ProviderQuotaState, RuntimeQuotaProvider } from './providerQuota';
|
|
134
150
|
export type { QuotaSnapshotProviderId } from './quotaSnapshots';
|
|
151
|
+
export { BurnRateCalculator, estimateTimeToQuota } from './statusline/BurnRateCalculator';
|
|
152
|
+
export { formatStatusline, selectStatuslineAccount } from './statusline/formatter';
|
|
153
|
+
export type { StatuslineInput, StatuslineSelection } from './statusline/formatter';
|
|
135
154
|
export { getModelContextWindowSize, DEFAULT_CONTEXT_WINDOW } from './modelContext';
|
|
136
155
|
export { parseModelId, getModelPricing, getModelInfo, calculateCost, calculateCostWithPricing, calculateCostWithProvenance, mergeCostSources, shortModelName, getModelDisplayInfo, compareModelIds, sortModelIds, formatCost, } from './modelInfo';
|
|
137
156
|
export type { ModelPricing, CostTokenUsage, CostSource, CostProvenanceInput, CostWithProvenance, ModelInfo, ModelProvider, ParsedModelId, ModelDisplayInfo, } from './modelInfo';
|
|
138
157
|
export { hydratePricingCatalog, normalizeLiteLlmCatalog, LITELLM_CATALOG_URL, } from './pricingCatalog';
|
|
139
158
|
export type { HydrateOptions, HydrateResult } from './pricingCatalog';
|
|
140
159
|
export { extractTokenUsage } from './extractors/tokenUsage';
|
|
141
|
-
export { extractToolCall, extractToolCalls } from './extractors/toolCall';
|
|
142
160
|
export { extractUrls, extractFilePaths, extractCommands } from './extractors/sessionAssets';
|
|
143
161
|
export type { AssetAgent, ExtractedAsset, ExtractedAssetProvenance, ExtractedAssetType, ExtractedAssets, SourceAssets, } from './extractors/sessionAssets';
|
|
144
162
|
export { readClaudeAssets, claudeSessions } from './extractors/sources/claudeAssets';
|
|
145
163
|
export { readCodexAssets, codexSessions } from './extractors/sources/codexAssets';
|
|
146
164
|
export { gatherAssetsForCwd } from './extractors/gatherAssets';
|
|
165
|
+
export { categorizeError, extractErrorMessage } from './extractors/errorTaxonomy';
|
|
166
|
+
export type { ErrorCategory } from './extractors/errorTaxonomy';
|
|
167
|
+
export { extractToolCall, extractToolCalls, ToolCallTracker } from './extractors/toolCall';
|
|
147
168
|
export type { GatherAssetsOptions, GatherAssetsResult } from './extractors/gatherAssets';
|
|
148
169
|
export { messageUsageSchema, sessionMessageSchema, sessionEventSchema, permissionModeSchema, extractSessionEvents, } from './schemas/sessionEvent';
|
|
149
170
|
export { quotaWindowSchema, quotaStateSchema, quotaFailureKindSchema, quotaProviderIdSchema, quotaSourceSchema, codexResetCreditSchema, codexResetCreditsSnapshotSchema, peakHoursStateSchema, quotaFailureDescriptorSchema, runtimeQuotaProviderSchema, providerQuotaStateSchema, claudeProviderQuotaStateSchema, codexProviderQuotaStateSchema, zaiProviderQuotaStateSchema, providerQuotaMapSchema, } from './schemas/quota';
|
|
@@ -153,5 +174,7 @@ export { accountProviderIdSchema, accountManagerResultSchema, beginAccountLoginR
|
|
|
153
174
|
export { assistantTurnEventSchema, assistantTurnEventTypeSchema, assistantTurnNarrationStepSchema, assistantTurnProcessSchema, assistantTurnProcessStepSchema, assistantTurnProjectionSchema, assistantTurnReasoningTimelineItemSchema, assistantTurnSubagentSchema, assistantTurnSubagentStatusSchema, assistantTurnTimelineItemSchema, assistantTurnToolGroupStepSchema, assistantTurnToolRefSchema, } from './schemas/assistantTurn';
|
|
154
175
|
export { fetchProviderStatus, fetchOpenAIStatus } from './providerStatus';
|
|
155
176
|
export type { ProviderStatusState } from './providerStatus';
|
|
177
|
+
export { formatHealthReport, getSessionDiagnostics, runDoctor } from './doctor';
|
|
178
|
+
export type { DeprecatedSetting, DoctorOptions, HealthCheck, HealthCheckStatus, HealthReport, SessionDiagnostics, } from './doctor';
|
|
156
179
|
export { createPeakHoursNotApplicableState, fetchPeakHoursStatus, isClaudeCodeSessionProvider, scopePeakHoursToSessionProvider, } from './peakHours';
|
|
157
180
|
export type { PeakHoursState } from './peakHours';
|
package/dist/index.js
CHANGED
|
@@ -3,12 +3,13 @@
|
|
|
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.
|
|
6
|
+
exports.TRUNCATION_PATTERNS = exports.JsonlParser = exports.CodexProvider = exports.getOpenCodeDataDir = exports.OpenCodeProvider = exports.ClaudeCodeProvider = exports.getAllDetectedProviders = exports.detectProvider = exports.derivePendingUserRequestV1 = exports.createProviderSessionAdapterV1 = exports.renderHandoffUrlTemplate = exports.addNote = exports.decisionFingerprint = exports.addDecision = exports.completeTask = exports.addTask = exports.updateJsonStoreAtomic = 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.getConfigDir = 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 = void 0;
|
|
7
|
+
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.scanSubagentTraces = exports.findAllSessionsWithWorktrees = exports.discoverWorktreeSiblings = exports.resolveWorktreeMainRepo = exports.getAllClaudeProjectFolders = exports.decodeEncodedPath = exports.getMostRecentlyActiveSessionDir = exports.findSubdirectorySessionDirs = exports.findSessionsInDirectory = exports.findAllClaudeSessions = exports.findActiveClaudeSession = exports.discoverSessionDirectory = exports.getClaudeSessionDirectory = exports.encodeClaudeWorkspacePath = exports.detectSessionActivity = exports.extractTaskInfo = exports.scanSubagentDir = exports.normalizeCodexToolInput = exports.normalizeCodexToolName = exports.extractPatchFilePaths = exports.CodexRolloutParser = exports.parseDbPartData = exports.parseDbMessageData = exports.convertOpenCodeMessage = exports.detectPlanModeFromText = exports.normalizeToolInput = exports.normalizeToolName = void 0;
|
|
8
|
+
exports.readClaudeMaxAccessTokenSync = exports.readClaudeMaxCredentials = exports.writeActiveCredentials = exports.readActiveCredentials = exports.openInBrowser = exports.parseTranscriptFromEvents = exports.parseTranscript = exports.generateHtmlReport = exports.formatCompactionLedger = exports.calculateCompactionLedger = exports.calculateCodeImpact = exports.scoreSessionQuality = exports.calculateQualityTrend = exports.PatternExtractor = exports.HeatmapTracker = exports.FrequencyTracker = exports.readErrorHistory = exports.getTopFailingTools = exports.appendErrorHistory = exports.MAX_ERROR_HISTORY_SESSIONS = exports.ERROR_HISTORY_SCHEMA_VERSION = exports.getSnapshotPath = exports.isSnapshotValid = exports.deleteSnapshot = exports.loadSnapshot = exports.saveSnapshot = exports.SessionMonitor = exports.parseTodoDependencies = exports.EventAggregator = exports.getRandomPhrase = exports.PHRASE_CATEGORIES = exports.ALL_PHRASES = exports.HIGHLIGHT_CSS = exports.clearHighlightCache = exports.highlightEvent = exports.formatSessionJson = exports.formatSessionMarkdown = exports.formatSessionText = exports.classifyNoise = exports.shouldMergeWithPrevious = exports.classifyFollowEvent = exports.classifyMessage = exports.getSoftNoiseReason = exports.isHardNoiseFollowEvent = exports.isHardNoise = exports.formatToolSummary = exports.formatTokenCount = exports.formatDurationMs = exports.createJsonlTail = exports.toFollowEvents = void 0;
|
|
9
|
+
exports.removeCodexAccount = exports.switchToCodexAccount = exports.finalizeCodexAccount = exports.prepareCodexAccount = exports.getCodexExecutionEnv = exports.resolveSidekickCodexHome = exports.resolveActiveCodexAccount = exports.getActiveCodexAccount = exports.listCodexAccounts = exports.getSystemCodexHome = exports.getCodexMonitoringHomes = exports.getCodexProfileHome = exports.getCodexProfilesDir = exports.readClaudeProfileIdentity = exports.isClaudeProfileAuthenticated = exports.claudeKeychainService = exports.claudeKeychainSuffix = exports.getClaudeProfileHome = exports.getClaudeProfilesDir = exports.getActiveAccountStatus = exports.removeSavedAccountProfile = exports.replaceSavedAccountProfiles = exports.setActiveSavedAccount = exports.upsertSavedAccountProfile = exports.getActiveSavedAccount = exports.listSavedAccountProfiles = exports.writeSavedAccountRegistry = exports.readSavedAccountRegistry = exports.getAccountsDir = exports.resolveClaudeLoginCommand = exports.listAllAccounts = exports.switchAccount = exports.spawnAccountLogin = exports.finalizeAccountLogin = 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 = void 0;
|
|
10
|
+
exports.getModelDisplayInfo = exports.shortModelName = exports.mergeCostSources = exports.calculateCostWithProvenance = exports.calculateCostWithPricing = exports.calculateCost = exports.getModelInfo = exports.getModelPricing = exports.parseModelId = exports.DEFAULT_CONTEXT_WINDOW = exports.getModelContextWindowSize = exports.selectStatuslineAccount = exports.formatStatusline = exports.estimateTimeToQuota = exports.BurnRateCalculator = exports.MultiProviderQuotaService = exports.resolveZaiQuota = exports.readZaiCredentials = exports.quotaStateFromZaiQuotaLimitPayload = exports.fetchZaiQuotaFromApi = exports.CodexQuotaWatcher = exports.resolveCodexQuotaFromLocalSources = exports.resolveCodexQuota = exports.readLatestCodexQuotaFromRollouts = exports.quotaFromCodexRateLimits = exports.fetchCodexQuotaFromApi = exports.fetchCodexResetCreditsFromApi = exports.getWorkspaceIdFromPath = exports.pruneQuotaHistory = exports.readQuotaHistoryDailyBuckets = exports.readQuotaHistoryRange = exports.appendQuotaHistorySample = exports.writeQuotaSnapshot = exports.readQuotaSnapshot = exports.QuotaPoller = exports.describeQuotaFailure = exports.withQuotaProjections = exports.projectQuotaWindow = exports.fetchQuota = exports.SEVEN_DAY_WINDOW_MS = exports.FIVE_HOUR_WINDOW_MS = exports.AutoSwitchController = exports.decideAutoSwitch = exports.DEFAULT_AUTO_SWITCH_CONFIG = exports.removeLauncher = exports.writeLauncher = exports.isShellHookInstalled = exports.uninstallShellHook = exports.installShellHook = exports.setTerminalActiveProfile = void 0;
|
|
11
|
+
exports.accountEntrySchema = exports.accountLoginStatusSchema = exports.beginAccountLoginResultSchema = exports.accountManagerResultSchema = exports.accountProviderIdSchema = exports.activeAccountStatusSchema = exports.activeProviderAccountStatusSchema = exports.quotaHistoryDailyBucketSchema = exports.quotaHistorySampleSchema = exports.quotaHistoryRuntimeProviderSchema = exports.providerQuotaMapSchema = exports.zaiProviderQuotaStateSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.codexResetCreditsSnapshotSchema = exports.codexResetCreditSchema = exports.quotaSourceSchema = exports.quotaProviderIdSchema = exports.quotaFailureKindSchema = exports.quotaStateSchema = exports.quotaWindowSchema = exports.extractSessionEvents = exports.permissionModeSchema = exports.sessionEventSchema = exports.sessionMessageSchema = exports.messageUsageSchema = exports.ToolCallTracker = exports.extractToolCalls = exports.extractToolCall = exports.extractErrorMessage = exports.categorizeError = exports.gatherAssetsForCwd = exports.codexSessions = exports.readCodexAssets = exports.claudeSessions = exports.readClaudeAssets = exports.extractCommands = exports.extractFilePaths = exports.extractUrls = exports.extractTokenUsage = exports.LITELLM_CATALOG_URL = exports.normalizeLiteLlmCatalog = exports.hydratePricingCatalog = exports.formatCost = exports.sortModelIds = exports.compareModelIds = void 0;
|
|
12
|
+
exports.scopePeakHoursToSessionProvider = exports.isClaudeCodeSessionProvider = exports.fetchPeakHoursStatus = exports.createPeakHoursNotApplicableState = exports.runDoctor = exports.getSessionDiagnostics = exports.formatHealthReport = exports.fetchOpenAIStatus = exports.fetchProviderStatus = exports.assistantTurnToolRefSchema = exports.assistantTurnToolGroupStepSchema = exports.assistantTurnTimelineItemSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnReasoningTimelineItemSchema = exports.assistantTurnProjectionSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnProcessSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnEventTypeSchema = exports.assistantTurnEventSchema = exports.listAllAccountsResultSchema = exports.savedAccountProfileSchema = void 0;
|
|
12
13
|
var codex_1 = require("./types/codex");
|
|
13
14
|
Object.defineProperty(exports, "isAggregateCodexLimit", { enumerable: true, get: function () { return codex_1.isAggregateCodexLimit; } });
|
|
14
15
|
var taskPersistence_1 = require("./types/taskPersistence");
|
|
@@ -22,7 +23,9 @@ Object.defineProperty(exports, "IMPORTANCE_DECAY_FACTORS", { enumerable: true, g
|
|
|
22
23
|
Object.defineProperty(exports, "STALENESS_THRESHOLDS", { enumerable: true, get: function () { return knowledgeNote_1.STALENESS_THRESHOLDS; } });
|
|
23
24
|
var historicalData_1 = require("./types/historicalData");
|
|
24
25
|
Object.defineProperty(exports, "HISTORICAL_DATA_SCHEMA_VERSION", { enumerable: true, get: function () { return historicalData_1.HISTORICAL_DATA_SCHEMA_VERSION; } });
|
|
26
|
+
Object.defineProperty(exports, "HISTORICAL_SESSION_RETENTION_LIMIT", { enumerable: true, get: function () { return historicalData_1.HISTORICAL_SESSION_RETENTION_LIMIT; } });
|
|
25
27
|
Object.defineProperty(exports, "createEmptyTokenTotals", { enumerable: true, get: function () { return historicalData_1.createEmptyTokenTotals; } });
|
|
28
|
+
Object.defineProperty(exports, "createEmptyDataStore", { enumerable: true, get: function () { return historicalData_1.createEmptyDataStore; } });
|
|
26
29
|
var plan_1 = require("./types/plan");
|
|
27
30
|
Object.defineProperty(exports, "PLAN_SCHEMA_VERSION", { enumerable: true, get: function () { return plan_1.PLAN_SCHEMA_VERSION; } });
|
|
28
31
|
Object.defineProperty(exports, "MAX_PLANS_PER_PROJECT", { enumerable: true, get: function () { return plan_1.MAX_PLANS_PER_PROJECT; } });
|
|
@@ -34,6 +37,9 @@ Object.defineProperty(exports, "getGlobalDataPath", { enumerable: true, get: fun
|
|
|
34
37
|
Object.defineProperty(exports, "encodeWorkspacePath", { enumerable: true, get: function () { return paths_1.encodeWorkspacePath; } });
|
|
35
38
|
Object.defineProperty(exports, "getProjectSlug", { enumerable: true, get: function () { return paths_1.getProjectSlug; } });
|
|
36
39
|
Object.defineProperty(exports, "getProjectSlugRaw", { enumerable: true, get: function () { return paths_1.getProjectSlugRaw; } });
|
|
40
|
+
Object.defineProperty(exports, "resolveProjectIdentity", { enumerable: true, get: function () { return paths_1.resolveProjectIdentity; } });
|
|
41
|
+
var projectMigration_1 = require("./projectMigration");
|
|
42
|
+
Object.defineProperty(exports, "migrateLegacyProjectStores", { enumerable: true, get: function () { return projectMigration_1.migrateLegacyProjectStores; } });
|
|
37
43
|
// Readers
|
|
38
44
|
var tasks_1 = require("./readers/tasks");
|
|
39
45
|
Object.defineProperty(exports, "readTasks", { enumerable: true, get: function () { return tasks_1.readTasks; } });
|
|
@@ -51,6 +57,24 @@ Object.defineProperty(exports, "getLatestPlan", { enumerable: true, get: functio
|
|
|
51
57
|
Object.defineProperty(exports, "writePlans", { enumerable: true, get: function () { return plans_1.writePlans; } });
|
|
52
58
|
Object.defineProperty(exports, "getPlanAnalytics", { enumerable: true, get: function () { return plans_1.getPlanAnalytics; } });
|
|
53
59
|
Object.defineProperty(exports, "readClaudeCodePlanFiles", { enumerable: true, get: function () { return plans_1.readClaudeCodePlanFiles; } });
|
|
60
|
+
// Atomic persistence writers
|
|
61
|
+
var atomic_1 = require("./writers/atomic");
|
|
62
|
+
Object.defineProperty(exports, "atomicWriteJson", { enumerable: true, get: function () { return atomic_1.atomicWriteJson; } });
|
|
63
|
+
Object.defineProperty(exports, "atomicWriteJsonSync", { enumerable: true, get: function () { return atomic_1.atomicWriteJsonSync; } });
|
|
64
|
+
Object.defineProperty(exports, "updateJsonStoreAtomic", { enumerable: true, get: function () { return atomic_1.updateJsonStoreAtomic; } });
|
|
65
|
+
var tasks_2 = require("./writers/tasks");
|
|
66
|
+
Object.defineProperty(exports, "addTask", { enumerable: true, get: function () { return tasks_2.addTask; } });
|
|
67
|
+
Object.defineProperty(exports, "completeTask", { enumerable: true, get: function () { return tasks_2.completeTask; } });
|
|
68
|
+
var decisions_2 = require("./writers/decisions");
|
|
69
|
+
Object.defineProperty(exports, "addDecision", { enumerable: true, get: function () { return decisions_2.addDecision; } });
|
|
70
|
+
Object.defineProperty(exports, "decisionFingerprint", { enumerable: true, get: function () { return decisions_2.decisionFingerprint; } });
|
|
71
|
+
var notes_2 = require("./writers/notes");
|
|
72
|
+
Object.defineProperty(exports, "addNote", { enumerable: true, get: function () { return notes_2.addNote; } });
|
|
73
|
+
var handoffUrl_1 = require("./handoffUrl");
|
|
74
|
+
Object.defineProperty(exports, "renderHandoffUrlTemplate", { enumerable: true, get: function () { return handoffUrl_1.renderHandoffUrlTemplate; } });
|
|
75
|
+
var observedSessionV1_1 = require("./types/observedSessionV1");
|
|
76
|
+
Object.defineProperty(exports, "createProviderSessionAdapterV1", { enumerable: true, get: function () { return observedSessionV1_1.createProviderSessionAdapterV1; } });
|
|
77
|
+
Object.defineProperty(exports, "derivePendingUserRequestV1", { enumerable: true, get: function () { return observedSessionV1_1.derivePendingUserRequestV1; } });
|
|
54
78
|
var detect_1 = require("./providers/detect");
|
|
55
79
|
Object.defineProperty(exports, "detectProvider", { enumerable: true, get: function () { return detect_1.detectProvider; } });
|
|
56
80
|
Object.defineProperty(exports, "getAllDetectedProviders", { enumerable: true, get: function () { return detect_1.getAllDetectedProviders; } });
|
|
@@ -180,12 +204,20 @@ Object.defineProperty(exports, "getRandomPhrase", { enumerable: true, get: funct
|
|
|
180
204
|
var EventAggregator_1 = require("./aggregation/EventAggregator");
|
|
181
205
|
Object.defineProperty(exports, "EventAggregator", { enumerable: true, get: function () { return EventAggregator_1.EventAggregator; } });
|
|
182
206
|
Object.defineProperty(exports, "parseTodoDependencies", { enumerable: true, get: function () { return EventAggregator_1.parseTodoDependencies; } });
|
|
207
|
+
var sessionMonitor_1 = require("./sessionMonitor");
|
|
208
|
+
Object.defineProperty(exports, "SessionMonitor", { enumerable: true, get: function () { return sessionMonitor_1.SessionMonitor; } });
|
|
183
209
|
var snapshot_1 = require("./aggregation/snapshot");
|
|
184
210
|
Object.defineProperty(exports, "saveSnapshot", { enumerable: true, get: function () { return snapshot_1.saveSnapshot; } });
|
|
185
211
|
Object.defineProperty(exports, "loadSnapshot", { enumerable: true, get: function () { return snapshot_1.loadSnapshot; } });
|
|
186
212
|
Object.defineProperty(exports, "deleteSnapshot", { enumerable: true, get: function () { return snapshot_1.deleteSnapshot; } });
|
|
187
213
|
Object.defineProperty(exports, "isSnapshotValid", { enumerable: true, get: function () { return snapshot_1.isSnapshotValid; } });
|
|
188
214
|
Object.defineProperty(exports, "getSnapshotPath", { enumerable: true, get: function () { return snapshot_1.getSnapshotPath; } });
|
|
215
|
+
var errorHistory_1 = require("./errorHistory");
|
|
216
|
+
Object.defineProperty(exports, "ERROR_HISTORY_SCHEMA_VERSION", { enumerable: true, get: function () { return errorHistory_1.ERROR_HISTORY_SCHEMA_VERSION; } });
|
|
217
|
+
Object.defineProperty(exports, "MAX_ERROR_HISTORY_SESSIONS", { enumerable: true, get: function () { return errorHistory_1.MAX_ERROR_HISTORY_SESSIONS; } });
|
|
218
|
+
Object.defineProperty(exports, "appendErrorHistory", { enumerable: true, get: function () { return errorHistory_1.appendErrorHistory; } });
|
|
219
|
+
Object.defineProperty(exports, "getTopFailingTools", { enumerable: true, get: function () { return errorHistory_1.getTopFailingTools; } });
|
|
220
|
+
Object.defineProperty(exports, "readErrorHistory", { enumerable: true, get: function () { return errorHistory_1.readErrorHistory; } });
|
|
189
221
|
// Aggregation — analytics engines
|
|
190
222
|
var FrequencyTracker_1 = require("./aggregation/FrequencyTracker");
|
|
191
223
|
Object.defineProperty(exports, "FrequencyTracker", { enumerable: true, get: function () { return FrequencyTracker_1.FrequencyTracker; } });
|
|
@@ -193,6 +225,14 @@ var HeatmapTracker_1 = require("./aggregation/HeatmapTracker");
|
|
|
193
225
|
Object.defineProperty(exports, "HeatmapTracker", { enumerable: true, get: function () { return HeatmapTracker_1.HeatmapTracker; } });
|
|
194
226
|
var PatternExtractor_1 = require("./aggregation/PatternExtractor");
|
|
195
227
|
Object.defineProperty(exports, "PatternExtractor", { enumerable: true, get: function () { return PatternExtractor_1.PatternExtractor; } });
|
|
228
|
+
var qualityScore_1 = require("./analytics/qualityScore");
|
|
229
|
+
Object.defineProperty(exports, "calculateQualityTrend", { enumerable: true, get: function () { return qualityScore_1.calculateQualityTrend; } });
|
|
230
|
+
Object.defineProperty(exports, "scoreSessionQuality", { enumerable: true, get: function () { return qualityScore_1.scoreSessionQuality; } });
|
|
231
|
+
var codeImpact_1 = require("./analytics/codeImpact");
|
|
232
|
+
Object.defineProperty(exports, "calculateCodeImpact", { enumerable: true, get: function () { return codeImpact_1.calculateCodeImpact; } });
|
|
233
|
+
var compactionLedger_1 = require("./analytics/compactionLedger");
|
|
234
|
+
Object.defineProperty(exports, "calculateCompactionLedger", { enumerable: true, get: function () { return compactionLedger_1.calculateCompactionLedger; } });
|
|
235
|
+
Object.defineProperty(exports, "formatCompactionLedger", { enumerable: true, get: function () { return compactionLedger_1.formatCompactionLedger; } });
|
|
196
236
|
// Report — HTML session report generation
|
|
197
237
|
var report_1 = require("./report");
|
|
198
238
|
Object.defineProperty(exports, "generateHtmlReport", { enumerable: true, get: function () { return report_1.generateHtmlReport; } });
|
|
@@ -305,21 +345,6 @@ Object.defineProperty(exports, "resolveCodexQuota", { enumerable: true, get: fun
|
|
|
305
345
|
Object.defineProperty(exports, "resolveCodexQuotaFromLocalSources", { enumerable: true, get: function () { return codexQuota_1.resolveCodexQuotaFromLocalSources; } });
|
|
306
346
|
var codexQuotaWatcher_1 = require("./codexQuotaWatcher");
|
|
307
347
|
Object.defineProperty(exports, "CodexQuotaWatcher", { enumerable: true, get: function () { return codexQuotaWatcher_1.CodexQuotaWatcher; } });
|
|
308
|
-
var zaiQuota_1 = require("./zaiQuota");
|
|
309
|
-
Object.defineProperty(exports, "accumulateZaiUsage", { enumerable: true, get: function () { return zaiQuota_1.accumulateZaiUsage; } });
|
|
310
|
-
Object.defineProperty(exports, "extractNextFlushTime", { enumerable: true, get: function () { return zaiQuota_1.extractNextFlushTime; } });
|
|
311
|
-
Object.defineProperty(exports, "inferZaiQuotaState", { enumerable: true, get: function () { return zaiQuota_1.inferZaiQuotaState; } });
|
|
312
|
-
Object.defineProperty(exports, "isZaiProviderId", { enumerable: true, get: function () { return zaiQuota_1.isZaiProviderId; } });
|
|
313
|
-
Object.defineProperty(exports, "makeUnavailableZaiQuotaState", { enumerable: true, get: function () { return zaiQuota_1.makeUnavailableZaiQuotaState; } });
|
|
314
|
-
Object.defineProperty(exports, "parseZaiQuotaError", { enumerable: true, get: function () { return zaiQuota_1.parseZaiQuotaError; } });
|
|
315
|
-
Object.defineProperty(exports, "resolveZaiTier", { enumerable: true, get: function () { return zaiQuota_1.resolveZaiTier; } });
|
|
316
|
-
Object.defineProperty(exports, "rowsToZaiTurnsAndErrors", { enumerable: true, get: function () { return zaiQuota_1.rowsToZaiTurnsAndErrors; } });
|
|
317
|
-
Object.defineProperty(exports, "turnTokenWeight", { enumerable: true, get: function () { return zaiQuota_1.turnTokenWeight; } });
|
|
318
|
-
Object.defineProperty(exports, "ZAI_PROMPT_INVOCATIONS", { enumerable: true, get: function () { return zaiQuota_1.ZAI_PROMPT_INVOCATIONS; } });
|
|
319
|
-
Object.defineProperty(exports, "ZAI_PROVIDER_IDS", { enumerable: true, get: function () { return zaiQuota_1.ZAI_PROVIDER_IDS; } });
|
|
320
|
-
Object.defineProperty(exports, "ZAI_TIER_BUDGETS", { enumerable: true, get: function () { return zaiQuota_1.ZAI_TIER_BUDGETS; } });
|
|
321
|
-
var zaiQuotaWatcher_1 = require("./zaiQuotaWatcher");
|
|
322
|
-
Object.defineProperty(exports, "ZaiQuotaWatcher", { enumerable: true, get: function () { return zaiQuotaWatcher_1.ZaiQuotaWatcher; } });
|
|
323
348
|
var zaiQuotaApi_1 = require("./zaiQuotaApi");
|
|
324
349
|
Object.defineProperty(exports, "fetchZaiQuotaFromApi", { enumerable: true, get: function () { return zaiQuotaApi_1.fetchZaiQuotaFromApi; } });
|
|
325
350
|
Object.defineProperty(exports, "quotaStateFromZaiQuotaLimitPayload", { enumerable: true, get: function () { return zaiQuotaApi_1.quotaStateFromZaiQuotaLimitPayload; } });
|
|
@@ -327,6 +352,12 @@ Object.defineProperty(exports, "readZaiCredentials", { enumerable: true, get: fu
|
|
|
327
352
|
Object.defineProperty(exports, "resolveZaiQuota", { enumerable: true, get: function () { return zaiQuotaApi_1.resolveZaiQuota; } });
|
|
328
353
|
var multiProviderQuotaService_1 = require("./multiProviderQuotaService");
|
|
329
354
|
Object.defineProperty(exports, "MultiProviderQuotaService", { enumerable: true, get: function () { return multiProviderQuotaService_1.MultiProviderQuotaService; } });
|
|
355
|
+
var BurnRateCalculator_1 = require("./statusline/BurnRateCalculator");
|
|
356
|
+
Object.defineProperty(exports, "BurnRateCalculator", { enumerable: true, get: function () { return BurnRateCalculator_1.BurnRateCalculator; } });
|
|
357
|
+
Object.defineProperty(exports, "estimateTimeToQuota", { enumerable: true, get: function () { return BurnRateCalculator_1.estimateTimeToQuota; } });
|
|
358
|
+
var formatter_1 = require("./statusline/formatter");
|
|
359
|
+
Object.defineProperty(exports, "formatStatusline", { enumerable: true, get: function () { return formatter_1.formatStatusline; } });
|
|
360
|
+
Object.defineProperty(exports, "selectStatuslineAccount", { enumerable: true, get: function () { return formatter_1.selectStatuslineAccount; } });
|
|
330
361
|
// Model Context
|
|
331
362
|
var modelContext_1 = require("./modelContext");
|
|
332
363
|
Object.defineProperty(exports, "getModelContextWindowSize", { enumerable: true, get: function () { return modelContext_1.getModelContextWindowSize; } });
|
|
@@ -354,9 +385,6 @@ Object.defineProperty(exports, "LITELLM_CATALOG_URL", { enumerable: true, get: f
|
|
|
354
385
|
// Extractors — per-event token usage and tool call extraction
|
|
355
386
|
var tokenUsage_1 = require("./extractors/tokenUsage");
|
|
356
387
|
Object.defineProperty(exports, "extractTokenUsage", { enumerable: true, get: function () { return tokenUsage_1.extractTokenUsage; } });
|
|
357
|
-
var toolCall_1 = require("./extractors/toolCall");
|
|
358
|
-
Object.defineProperty(exports, "extractToolCall", { enumerable: true, get: function () { return toolCall_1.extractToolCall; } });
|
|
359
|
-
Object.defineProperty(exports, "extractToolCalls", { enumerable: true, get: function () { return toolCall_1.extractToolCalls; } });
|
|
360
388
|
// Extractors — actionable session assets. Node-only: safe for CLI and
|
|
361
389
|
// extension-host code, not for browser/webview bundles.
|
|
362
390
|
var sessionAssets_1 = require("./extractors/sessionAssets");
|
|
@@ -371,6 +399,13 @@ Object.defineProperty(exports, "readCodexAssets", { enumerable: true, get: funct
|
|
|
371
399
|
Object.defineProperty(exports, "codexSessions", { enumerable: true, get: function () { return codexAssets_1.codexSessions; } });
|
|
372
400
|
var gatherAssets_1 = require("./extractors/gatherAssets");
|
|
373
401
|
Object.defineProperty(exports, "gatherAssetsForCwd", { enumerable: true, get: function () { return gatherAssets_1.gatherAssetsForCwd; } });
|
|
402
|
+
var errorTaxonomy_1 = require("./extractors/errorTaxonomy");
|
|
403
|
+
Object.defineProperty(exports, "categorizeError", { enumerable: true, get: function () { return errorTaxonomy_1.categorizeError; } });
|
|
404
|
+
Object.defineProperty(exports, "extractErrorMessage", { enumerable: true, get: function () { return errorTaxonomy_1.extractErrorMessage; } });
|
|
405
|
+
var toolCall_1 = require("./extractors/toolCall");
|
|
406
|
+
Object.defineProperty(exports, "extractToolCall", { enumerable: true, get: function () { return toolCall_1.extractToolCall; } });
|
|
407
|
+
Object.defineProperty(exports, "extractToolCalls", { enumerable: true, get: function () { return toolCall_1.extractToolCalls; } });
|
|
408
|
+
Object.defineProperty(exports, "ToolCallTracker", { enumerable: true, get: function () { return toolCall_1.ToolCallTracker; } });
|
|
374
409
|
// Schemas — Zod runtime validation for session events
|
|
375
410
|
var sessionEvent_1 = require("./schemas/sessionEvent");
|
|
376
411
|
Object.defineProperty(exports, "messageUsageSchema", { enumerable: true, get: function () { return sessionEvent_1.messageUsageSchema; } });
|
|
@@ -429,6 +464,11 @@ Object.defineProperty(exports, "assistantTurnToolRefSchema", { enumerable: true,
|
|
|
429
464
|
var providerStatus_1 = require("./providerStatus");
|
|
430
465
|
Object.defineProperty(exports, "fetchProviderStatus", { enumerable: true, get: function () { return providerStatus_1.fetchProviderStatus; } });
|
|
431
466
|
Object.defineProperty(exports, "fetchOpenAIStatus", { enumerable: true, get: function () { return providerStatus_1.fetchOpenAIStatus; } });
|
|
467
|
+
// Shared diagnostics / health report
|
|
468
|
+
var doctor_1 = require("./doctor");
|
|
469
|
+
Object.defineProperty(exports, "formatHealthReport", { enumerable: true, get: function () { return doctor_1.formatHealthReport; } });
|
|
470
|
+
Object.defineProperty(exports, "getSessionDiagnostics", { enumerable: true, get: function () { return doctor_1.getSessionDiagnostics; } });
|
|
471
|
+
Object.defineProperty(exports, "runDoctor", { enumerable: true, get: function () { return doctor_1.runDoctor; } });
|
|
432
472
|
// Peak Hours (PromoClock — third-party)
|
|
433
473
|
var peakHours_1 = require("./peakHours");
|
|
434
474
|
Object.defineProperty(exports, "createPeakHoursNotApplicableState", { enumerable: true, get: function () { return peakHours_1.createPeakHoursNotApplicableState; } });
|
package/dist/modelInfo.js
CHANGED
|
@@ -142,6 +142,12 @@ const PRICING_TABLE = {
|
|
|
142
142
|
cacheWriteCostPerMillion: 6.25,
|
|
143
143
|
cacheReadCostPerMillion: 0.5,
|
|
144
144
|
},
|
|
145
|
+
'claude-opus-4-5': {
|
|
146
|
+
inputCostPerMillion: 5.0,
|
|
147
|
+
outputCostPerMillion: 25.0,
|
|
148
|
+
cacheWriteCostPerMillion: 6.25,
|
|
149
|
+
cacheReadCostPerMillion: 0.5,
|
|
150
|
+
},
|
|
145
151
|
'claude-opus-4.5': {
|
|
146
152
|
inputCostPerMillion: 5.0,
|
|
147
153
|
outputCostPerMillion: 25.0,
|
|
@@ -174,7 +174,7 @@ class MultiProviderQuotaService {
|
|
|
174
174
|
providerId: 'claude-code',
|
|
175
175
|
});
|
|
176
176
|
this.lastEmittedClaudeState = nextState;
|
|
177
|
-
if (nextState.available) {
|
|
177
|
+
if (nextState.available && nextState.stale !== true) {
|
|
178
178
|
this.lastSuccessfulClaudeState = nextState;
|
|
179
179
|
}
|
|
180
180
|
this.quotaByProvider = {
|
|
@@ -323,7 +323,18 @@ class MultiProviderQuotaService {
|
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
325
|
this.cachedFallbackActive = hasVisibleCachedSuccess;
|
|
326
|
-
if (
|
|
326
|
+
if (hasVisibleCachedSuccess) {
|
|
327
|
+
this.emitClaudeState({
|
|
328
|
+
...this.lastSuccessfulClaudeState,
|
|
329
|
+
error: state.error,
|
|
330
|
+
failureKind: state.failureKind,
|
|
331
|
+
httpStatus: state.httpStatus,
|
|
332
|
+
retryAfterMs: state.retryAfterMs,
|
|
333
|
+
source: 'cache',
|
|
334
|
+
stale: true,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
327
338
|
this.emitClaudeState(state);
|
|
328
339
|
}
|
|
329
340
|
}
|
|
@@ -18,6 +18,17 @@ exports.normalizeCodexToolInput = normalizeCodexToolInput;
|
|
|
18
18
|
exports.extractPatchFilePaths = extractPatchFilePaths;
|
|
19
19
|
const codex_1 = require("../types/codex");
|
|
20
20
|
const openCodeParser_1 = require("./openCodeParser");
|
|
21
|
+
function reportedCompaction(tokensBefore, tokensAfter) {
|
|
22
|
+
if (typeof tokensBefore !== 'number' ||
|
|
23
|
+
typeof tokensAfter !== 'number' ||
|
|
24
|
+
!Number.isFinite(tokensBefore) ||
|
|
25
|
+
!Number.isFinite(tokensAfter) ||
|
|
26
|
+
tokensBefore < tokensAfter ||
|
|
27
|
+
tokensAfter < 0) {
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
return { compaction: { tokensBefore, tokensAfter } };
|
|
31
|
+
}
|
|
21
32
|
function normalizeRateLimits(rateLimits) {
|
|
22
33
|
if (!rateLimits?.primary && !rateLimits?.secondary)
|
|
23
34
|
return undefined;
|
|
@@ -476,6 +487,7 @@ class CodexRolloutParser {
|
|
|
476
487
|
content: payload.summary || 'Context compacted',
|
|
477
488
|
},
|
|
478
489
|
timestamp,
|
|
490
|
+
...reportedCompaction(payload.tokens_before, payload.tokens_after),
|
|
479
491
|
},
|
|
480
492
|
];
|
|
481
493
|
}
|
|
@@ -664,6 +676,7 @@ class CodexRolloutParser {
|
|
|
664
676
|
content: e.summary || 'Context compacted',
|
|
665
677
|
},
|
|
666
678
|
timestamp,
|
|
679
|
+
...reportedCompaction(e.tokens_before, e.tokens_after),
|
|
667
680
|
},
|
|
668
681
|
];
|
|
669
682
|
}
|
|
@@ -769,7 +782,10 @@ class CodexRolloutParser {
|
|
|
769
782
|
return [];
|
|
770
783
|
const mappedUsage = usage
|
|
771
784
|
? {
|
|
772
|
-
|
|
785
|
+
// Codex reports cached_input_tokens as a subset of input_tokens,
|
|
786
|
+
// while MessageUsage categories are disjoint. Normalize once here
|
|
787
|
+
// so aggregation and pricing do not count cached input twice.
|
|
788
|
+
input_tokens: Math.max(0, (usage.input_tokens || 0) - (usage.cached_input_tokens || 0)),
|
|
773
789
|
output_tokens: usage.output_tokens || 0,
|
|
774
790
|
cache_read_input_tokens: usage.cached_input_tokens || 0,
|
|
775
791
|
cache_creation_input_tokens: 0,
|
|
@@ -336,6 +336,14 @@ function convertAssistantMessage(message, parts) {
|
|
|
336
336
|
reasoning_tokens: message.tokens.reasoning || 0,
|
|
337
337
|
};
|
|
338
338
|
const timestamp = toISOString(message.time.completed || message.time.created);
|
|
339
|
+
const retryAttempts = parts
|
|
340
|
+
.filter((part) => part.type === 'retry')
|
|
341
|
+
.map((part) => part.attempt)
|
|
342
|
+
.filter((attempt) => typeof attempt === 'number');
|
|
343
|
+
const finishReasons = parts
|
|
344
|
+
.filter((part) => part.type === 'step-finish')
|
|
345
|
+
.map((part) => part.reason)
|
|
346
|
+
.filter((reason) => typeof reason === 'string' && reason.length > 0);
|
|
339
347
|
// Emit assistant event (even if content is empty, usage data is valuable)
|
|
340
348
|
if (content.length > 0 || message.tokens.input > 0 || message.tokens.output > 0) {
|
|
341
349
|
events.push({
|
|
@@ -348,6 +356,11 @@ function convertAssistantMessage(message, parts) {
|
|
|
348
356
|
content,
|
|
349
357
|
},
|
|
350
358
|
timestamp,
|
|
359
|
+
providerMetadata: {
|
|
360
|
+
...(retryAttempts.length > 0 ? { retryAttempts } : {}),
|
|
361
|
+
...(finishReasons.length > 0 ? { finishReasons } : {}),
|
|
362
|
+
...(message.error ? { providerError: message.error } : {}),
|
|
363
|
+
},
|
|
351
364
|
});
|
|
352
365
|
}
|
|
353
366
|
// Emit synthetic tool_result events for completed tool invocations
|
|
@@ -194,7 +194,7 @@ class PlanExtractor {
|
|
|
194
194
|
// Capture Write/Edit tool calls to plan files during plan mode
|
|
195
195
|
if (this._planModeActive && event.type === 'tool_use') {
|
|
196
196
|
const raw = event.raw;
|
|
197
|
-
const input = raw
|
|
197
|
+
const input = extractToolInput(raw);
|
|
198
198
|
const filePath = input?.file_path;
|
|
199
199
|
if (event.toolName === 'Write') {
|
|
200
200
|
const content = input?.content;
|
|
@@ -254,9 +254,9 @@ class PlanExtractor {
|
|
|
254
254
|
}
|
|
255
255
|
extractCodexPlan(event) {
|
|
256
256
|
const raw = event.raw;
|
|
257
|
-
|
|
257
|
+
const input = extractToolInput(raw);
|
|
258
|
+
if (!input)
|
|
258
259
|
return false;
|
|
259
|
-
const input = raw.input;
|
|
260
260
|
// Codex UpdatePlan can use either approach[] or plan[] format
|
|
261
261
|
const approach = (input.approach ?? input.plan);
|
|
262
262
|
if (!approach || !Array.isArray(approach))
|
|
@@ -305,10 +305,11 @@ class PlanExtractor {
|
|
|
305
305
|
}
|
|
306
306
|
finalizePlanMode() {
|
|
307
307
|
this._planModeActive = false;
|
|
308
|
-
// Prefer
|
|
308
|
+
// Prefer captured Write content, then the final file after Edit, then prose fallback.
|
|
309
|
+
// Edit only contains a diff, so reading the file must happen before accumulated text.
|
|
309
310
|
const markdown = this._planFileContent ||
|
|
310
|
-
(this.
|
|
311
|
-
(this.
|
|
311
|
+
(this._planFilePath && this._readFile ? this._readFile(this._planFilePath) : null) ||
|
|
312
|
+
(this._planTexts.length > 0 ? this._planTexts.join('\n') : null);
|
|
312
313
|
this._planFileContent = null;
|
|
313
314
|
this._planFilePath = null;
|
|
314
315
|
this._planTexts = [];
|
|
@@ -328,3 +329,13 @@ class PlanExtractor {
|
|
|
328
329
|
}
|
|
329
330
|
}
|
|
330
331
|
exports.PlanExtractor = PlanExtractor;
|
|
332
|
+
function extractToolInput(raw) {
|
|
333
|
+
if (!raw)
|
|
334
|
+
return null;
|
|
335
|
+
if (raw.input && typeof raw.input === 'object')
|
|
336
|
+
return raw.input;
|
|
337
|
+
const tool = raw.tool;
|
|
338
|
+
if (tool?.input && typeof tool.input === 'object')
|
|
339
|
+
return tool.input;
|
|
340
|
+
return null;
|
|
341
|
+
}
|
|
@@ -126,6 +126,8 @@ function detectSessionActivity(sessionPath) {
|
|
|
126
126
|
}
|
|
127
127
|
if (!hasTerminal) {
|
|
128
128
|
for (const pattern of ENDING_PATTERNS) {
|
|
129
|
+
if (pattern === '"type":"user"' && line.includes('"type":"tool_result"'))
|
|
130
|
+
continue;
|
|
129
131
|
if (line.includes(pattern)) {
|
|
130
132
|
lastEndingIndex = i;
|
|
131
133
|
break;
|
|
@@ -81,10 +81,9 @@ const os = __importStar(require("os"));
|
|
|
81
81
|
function encodeWorkspacePath(workspacePath) {
|
|
82
82
|
// Normalize path separators to forward slash
|
|
83
83
|
const normalized = workspacePath.replace(/\\/g, '/');
|
|
84
|
-
//
|
|
85
|
-
//
|
|
86
|
-
|
|
87
|
-
return normalized.replace(/[:/_]/g, '-');
|
|
84
|
+
// Claude Code replaces every non-alphanumeric path character, including
|
|
85
|
+
// dots and spaces, with a hyphen.
|
|
86
|
+
return normalized.replace(/[^a-zA-Z0-9]/g, '-');
|
|
88
87
|
}
|
|
89
88
|
/**
|
|
90
89
|
* Gets the session directory path for a workspace.
|
|
@@ -249,12 +248,7 @@ function discoverSessionDirectory(workspacePath) {
|
|
|
249
248
|
});
|
|
250
249
|
// Try to match by workspace path components
|
|
251
250
|
// Normalize workspace path for comparison
|
|
252
|
-
const normalizedWorkspace = workspacePath
|
|
253
|
-
.replace(/\\/g, '/')
|
|
254
|
-
.replace(/:/g, '-')
|
|
255
|
-
.replace(/_/g, '-')
|
|
256
|
-
.replace(/\//g, '-')
|
|
257
|
-
.toLowerCase();
|
|
251
|
+
const normalizedWorkspace = encodeWorkspacePath(workspacePath).toLowerCase();
|
|
258
252
|
for (const dir of existingDirs) {
|
|
259
253
|
// Check if the directory name matches (case-insensitive)
|
|
260
254
|
if (dir.toLowerCase() === normalizedWorkspace) {
|
|
@@ -262,7 +256,10 @@ function discoverSessionDirectory(workspacePath) {
|
|
|
262
256
|
}
|
|
263
257
|
}
|
|
264
258
|
// Fallback: match by final path component (project name)
|
|
265
|
-
const workspaceBasename = path
|
|
259
|
+
const workspaceBasename = path
|
|
260
|
+
.basename(workspacePath)
|
|
261
|
+
.replace(/[^a-zA-Z0-9]/g, '-')
|
|
262
|
+
.toLowerCase();
|
|
266
263
|
for (const dir of existingDirs) {
|
|
267
264
|
const dirLower = dir.toLowerCase();
|
|
268
265
|
// Check if dir ends with the project name
|
|
@@ -406,12 +403,18 @@ function findAllSessions(workspacePath) {
|
|
|
406
403
|
.filter((file) => file.endsWith('.jsonl'))
|
|
407
404
|
.map((file) => {
|
|
408
405
|
const fullPath = path.join(sessionDir, file);
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
406
|
+
try {
|
|
407
|
+
const stats = fs.statSync(fullPath);
|
|
408
|
+
return {
|
|
409
|
+
path: fullPath,
|
|
410
|
+
mtime: stats.mtime.getTime(),
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
catch {
|
|
414
|
+
return null;
|
|
415
|
+
}
|
|
414
416
|
})
|
|
417
|
+
.filter((file) => file !== null)
|
|
415
418
|
.sort((a, b) => b.mtime - a.mtime)
|
|
416
419
|
.map((file) => file.path);
|
|
417
420
|
return files;
|
|
@@ -26,7 +26,7 @@ import type { SubagentStats, TaskState } from '../types/sessionEvent';
|
|
|
26
26
|
* }
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
export declare function scanSubagentDir(sessionDir: string, sessionId: string, logger?: (msg: string) => void): SubagentStats[];
|
|
29
|
+
export declare function scanSubagentDir(sessionDir: string, sessionId: string, logger?: (msg: string) => void, skipFiles?: ReadonlySet<string>): SubagentStats[];
|
|
30
30
|
/**
|
|
31
31
|
* Handles TaskUpdate tool input and updates task state.
|
|
32
32
|
*/
|