sidekick-shared 0.28.3 → 0.29.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/CHANGELOG.md +86 -0
- package/README.md +188 -27
- package/dist/aggregation/EventAggregator.d.ts +19 -0
- package/dist/aggregation/EventAggregator.js +174 -35
- package/dist/aggregation/snapshot.d.ts +37 -8
- package/dist/aggregation/snapshot.js +31 -9
- package/dist/aggregation/types.d.ts +13 -0
- package/dist/authStatus.d.ts +54 -0
- package/dist/authStatus.js +91 -0
- package/dist/browser.d.ts +16 -6
- package/dist/browser.js +24 -2
- package/dist/codex.d.ts +23 -0
- package/dist/codex.js +44 -0
- package/dist/codexProfiles.d.ts +1 -0
- package/dist/codexProfiles.js +8 -11
- package/dist/context/sessionContext.js +4 -0
- package/dist/esm/aggregation/EventAggregator.js +174 -35
- package/dist/esm/aggregation/snapshot.js +31 -9
- package/dist/esm/authStatus.js +87 -0
- package/dist/esm/browser.js +5 -2
- package/dist/esm/codex.js +18 -0
- package/dist/esm/codexProfiles.js +8 -11
- package/dist/esm/context/sessionContext.js +4 -0
- package/dist/esm/formatters/toolSummary.js +4 -1
- package/dist/esm/formatting.js +10 -1
- package/dist/esm/index.js +11 -6
- package/dist/esm/modelCatalog.js +7 -5
- package/dist/esm/modelContext.js +4 -3
- package/dist/esm/modelInfo.js +425 -47
- package/dist/esm/node.js +9 -3
- package/dist/esm/observedContextWindows.js +2 -1
- package/dist/esm/ownKey.js +26 -0
- package/dist/esm/parsers/codexParser.js +351 -54
- package/dist/esm/parsers/codexRolloutOrigin.js +107 -0
- package/dist/esm/parsers/openCodeParser.js +85 -22
- package/dist/esm/parsers/subagentScanner.js +33 -12
- package/dist/esm/parsers/subagentTraceParser.js +97 -37
- package/dist/esm/pricing.js +18 -0
- package/dist/esm/pricingCatalog.js +17 -9
- package/dist/esm/promptHistory.js +66 -4
- package/dist/esm/providerFailure.js +124 -3
- package/dist/esm/providers/claudeCode.js +10 -2
- package/dist/esm/providers/codex.js +84 -62
- package/dist/esm/providers/codexDatabase.js +3 -19
- package/dist/esm/providers/codexRollouts.js +24 -1
- package/dist/esm/providers/openCode.js +9 -17
- package/dist/esm/report/htmlReportGenerator.js +42 -5
- package/dist/esm/report/transcriptParser.js +13 -11
- package/dist/esm/schemas/providerFailure.js +3 -1
- package/dist/esm/schemas/sessionEvent.js +35 -14
- package/dist/esm/schemas/transcript.js +4 -0
- package/dist/esm/sessionPromptHistory.js +2 -2
- package/dist/esm/statusline/payload.js +9 -0
- package/dist/esm/subagentSpawn.js +163 -0
- package/dist/esm/testing/credentialGuard.js +87 -5
- package/dist/esm/toolCallOrigins.js +310 -0
- package/dist/esm/transcript.js +46 -3
- package/dist/esm/turns/assistantTurn.js +3 -2
- package/dist/esm/usage/claudeUsageDedupe.js +68 -0
- package/dist/esm/usage/usageEvents.js +146 -17
- package/dist/esm/usage/usageReports.js +39 -6
- package/dist/esm/watchers/eventBridge.js +15 -0
- package/dist/esm/watchers/factory.js +5 -3
- package/dist/esm/watchers/jsonlTail.js +442 -58
- package/dist/esm/watchers/jsonlWatcher.js +51 -4
- package/dist/esm/watchers/providerReaderWatcher.js +13 -0
- package/dist/esm/zaiQuota.js +2 -1
- package/dist/formatters/toolSummary.js +4 -1
- package/dist/formatting.d.ts +26 -1
- package/dist/formatting.js +11 -1
- package/dist/index.d.ts +22 -11
- package/dist/index.js +44 -12
- package/dist/modelCatalog.js +7 -5
- package/dist/modelContext.js +4 -3
- package/dist/modelInfo.d.ts +185 -16
- package/dist/modelInfo.js +434 -49
- package/dist/node.d.ts +16 -5
- package/dist/node.js +33 -2
- package/dist/observedContextWindows.js +2 -1
- package/dist/ownKey.d.ts +16 -0
- package/dist/ownKey.js +30 -0
- package/dist/parsers/codexParser.d.ts +118 -0
- package/dist/parsers/codexParser.js +352 -54
- package/dist/parsers/codexRolloutOrigin.d.ts +49 -0
- package/dist/parsers/codexRolloutOrigin.js +111 -0
- package/dist/parsers/openCodeParser.d.ts +38 -0
- package/dist/parsers/openCodeParser.js +88 -22
- package/dist/parsers/subagentScanner.d.ts +19 -6
- package/dist/parsers/subagentScanner.js +33 -12
- package/dist/parsers/subagentTraceParser.d.ts +25 -5
- package/dist/parsers/subagentTraceParser.js +97 -37
- package/dist/pricing.d.ts +22 -0
- package/dist/pricing.js +50 -0
- package/dist/pricingCatalog.d.ts +10 -0
- package/dist/pricingCatalog.js +16 -8
- package/dist/promptHistory.d.ts +65 -4
- package/dist/promptHistory.js +68 -5
- package/dist/providerFailure.d.ts +44 -0
- package/dist/providerFailure.js +126 -4
- package/dist/providers/claudeCode.js +9 -1
- package/dist/providers/codex.d.ts +3 -22
- package/dist/providers/codex.js +85 -64
- package/dist/providers/codexDatabase.d.ts +3 -2
- package/dist/providers/codexDatabase.js +4 -22
- package/dist/providers/codexRollouts.d.ts +22 -0
- package/dist/providers/codexRollouts.js +24 -0
- package/dist/providers/openCode.js +8 -16
- package/dist/providers/types.d.ts +14 -0
- package/dist/report/htmlReportGenerator.js +42 -5
- package/dist/report/transcriptParser.d.ts +10 -1
- package/dist/report/transcriptParser.js +13 -11
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/providerFailure.d.ts +39 -0
- package/dist/schemas/providerFailure.js +2 -0
- package/dist/schemas/sessionEvent.d.ts +27 -10
- package/dist/schemas/sessionEvent.js +35 -14
- package/dist/schemas/transcript.d.ts +2 -0
- package/dist/schemas/transcript.js +4 -0
- package/dist/sessionPromptHistory.d.ts +7 -1
- package/dist/sessionPromptHistory.js +1 -1
- package/dist/statusline/payload.d.ts +10 -0
- package/dist/statusline/payload.js +14 -0
- package/dist/subagentSpawn.d.ts +80 -0
- package/dist/subagentSpawn.js +174 -0
- package/dist/testing/credentialGuard.d.ts +14 -0
- package/dist/testing/credentialGuard.js +87 -5
- package/dist/toolCallOrigins.d.ts +70 -0
- package/dist/toolCallOrigins.js +346 -0
- package/dist/transcript.d.ts +12 -0
- package/dist/transcript.js +46 -3
- package/dist/turns/assistantTurn.d.ts +1 -0
- package/dist/turns/assistantTurn.js +3 -2
- package/dist/types/opencode.d.ts +2 -0
- package/dist/usage/claudeUsageDedupe.d.ts +31 -0
- package/dist/usage/claudeUsageDedupe.js +68 -0
- package/dist/usage/usageEvents.d.ts +54 -6
- package/dist/usage/usageEvents.js +146 -17
- package/dist/usage/usageReports.d.ts +35 -4
- package/dist/usage/usageReports.js +39 -6
- package/dist/watchers/eventBridge.js +15 -0
- package/dist/watchers/factory.d.ts +6 -0
- package/dist/watchers/factory.js +5 -3
- package/dist/watchers/jsonlTail.d.ts +124 -4
- package/dist/watchers/jsonlTail.js +446 -59
- package/dist/watchers/jsonlWatcher.d.ts +18 -1
- package/dist/watchers/jsonlWatcher.js +50 -3
- package/dist/watchers/providerReaderWatcher.d.ts +7 -0
- package/dist/watchers/providerReaderWatcher.js +13 -0
- package/dist/watchers/types.d.ts +12 -0
- package/dist/zaiQuota.js +2 -1
- package/package.json +41 -1
package/dist/esm/index.js
CHANGED
|
@@ -6,7 +6,8 @@ export { formatTokenBreakdown, summarizeTokens, sumTokenTotals, TOKEN_CONTEXT_LA
|
|
|
6
6
|
export { ASCII_CHARS_PER_TOKEN, estimateTextTokens, estimateSerializedTokens, } from './tokenEstimation';
|
|
7
7
|
export { projectSessionTranscript } from './transcript';
|
|
8
8
|
export { listRecentSessions, readSessionTranscript } from './sessionTranscripts';
|
|
9
|
-
export { collectPromptHistory, isPromptHistorySessionSettled, parsePromptHistoryCursor, } from './promptHistory';
|
|
9
|
+
export { collectPromptHistory, isPromptHistorySessionSettled, parsePromptHistoryCursor, PROMPT_HISTORY_ORDINAL_MAX_RECORD_BYTES, } from './promptHistory';
|
|
10
|
+
export { findToolCallOrigins } from './toolCallOrigins';
|
|
10
11
|
export { collectSessionPromptHistory } from './sessionPromptHistory';
|
|
11
12
|
export { HUMAN_CLAUDE_ENTRYPOINTS, HUMAN_CODEX_SOURCES, humanPromptText, isHumanPrompt, } from './humanPrompt';
|
|
12
13
|
export { computeSessionFileStats, firstUserPrompt, providerContextSizeFn, readSessionFileStats, } from './sessionStats';
|
|
@@ -56,6 +57,7 @@ export { JsonlParser, TRUNCATION_PATTERNS } from './parsers/jsonl';
|
|
|
56
57
|
export { normalizeToolName, normalizeToolInput, detectPlanModeFromText, convertOpenCodeMessage, parseDbMessageData, parseDbPartData, } from './parsers/openCodeParser';
|
|
57
58
|
// Parsers — Codex
|
|
58
59
|
export { CodexRolloutParser, DEFAULT_MAX_TRACKED_TOOL_CALLS, extractPatchFilePaths, normalizeCodexToolName, normalizeCodexToolInput, resolveCodexCallUsage, } from './parsers/codexParser';
|
|
60
|
+
export { codexRolloutOrigin, codexSpawnParentFromSource } from './parsers/codexRolloutOrigin';
|
|
59
61
|
// Parsers — Subagent scanning
|
|
60
62
|
export { scanSubagentDir, extractTaskInfo, readAgentMeta } from './parsers/subagentScanner';
|
|
61
63
|
// Usage — split-line dedupe, subagent tokens, session totals
|
|
@@ -85,6 +87,8 @@ export { FilterEngine } from './search/advancedFilter';
|
|
|
85
87
|
// Context
|
|
86
88
|
export { composeContext } from './context/composer';
|
|
87
89
|
export { buildSessionContextSnapshot, calculateSessionContextPressure, createSessionContextProjector, readSessionContextSnapshot, } from './context/sessionContext';
|
|
90
|
+
// Subagent spawns (`Agent` / `Task`) and background-task notifications
|
|
91
|
+
export { SUBAGENT_SPAWN_TOOL_NAMES, isSubagentSpawnTool, isTaskNotificationSystemEvent, parseTaskNotification, taskNotificationFromEvent, } from './subagentSpawn';
|
|
88
92
|
// Assistant turn projection
|
|
89
93
|
export { assistantTurnEventsFromSessionEvents, extractTurnSubagents, isAssistantTurnSubagentTool, reasoningSummary, segmentAssistantTurn, } from './turns/assistantTurn';
|
|
90
94
|
// Plan Extraction
|
|
@@ -93,7 +97,7 @@ export { PlanExtractor, parsePlanMarkdown as parsePlanMarkdownShared, extractPro
|
|
|
93
97
|
export { parseChangelog } from './parsers/changelogParser';
|
|
94
98
|
export { createWatcher, resolveSessionPath } from './watchers/factory';
|
|
95
99
|
export { toFollowEvents } from './watchers/eventBridge';
|
|
96
|
-
export { createJsonlTail, DEFAULT_JSONL_TAIL_MAX_LINE_BYTES, DEFAULT_JSONL_TAIL_READ_BYTES, } from './watchers/jsonlTail';
|
|
100
|
+
export { captureJsonlCheckpoint, createJsonlTail, DEFAULT_JSONL_TAIL_MAX_LINE_BYTES, DEFAULT_JSONL_TAIL_READ_BYTES, JSONL_TAIL_CHECKPOINT_VERSION, JsonlTailSymlinkError, verifyJsonlCheckpoint, } from './watchers/jsonlTail';
|
|
97
101
|
// Formatters
|
|
98
102
|
export { addLocalDays, formatDurationMs, formatLocalDateKey, formatTokenCount, parseLocalDateKey, } from './formatting';
|
|
99
103
|
export { formatToolSummary } from './formatters/toolSummary';
|
|
@@ -125,7 +129,7 @@ export { inspectClaudeCredentialStores, repairClaudeCredentialStores, parseKeych
|
|
|
125
129
|
// Credentials
|
|
126
130
|
export { readClaudeMaxCredentials, readClaudeMaxCredentialsRaw, readClaudeMaxAccessTokenSync, } from './credentials';
|
|
127
131
|
export { parseClaudeCredentialBlob, claudeCredentialFreshness, isNewerClaudeCredential, resolveClaudeRefreshExpiry, claudeRefreshFingerprint, claudeLoginOnly, mergeClaudeLoginIntoLive, CLAUDE_ACCESS_TOKEN_LIFETIME_MS, CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS, } from './claudeCredentials';
|
|
128
|
-
export { parseAuthJson as parseCodexAuthJson, readAuthIdentityFromRaw as readCodexAuthIdentity, readLastRefresh as readCodexLastRefresh, readAccessTokenExpiry as readCodexAccessTokenExpiry, identitiesMatch as codexIdentitiesMatch, } from './codexAuth';
|
|
132
|
+
export { parseAuthJson as parseCodexAuthJson, readAuthIdentityFromRaw as readCodexAuthIdentity, readLastRefresh as readCodexLastRefresh, readAccessTokenExpiry as readCodexAccessTokenExpiry, identitiesMatch as codexIdentitiesMatch, codexRefreshFingerprint, compareCodexAuthFreshness, } from './codexAuth';
|
|
129
133
|
// Accounts
|
|
130
134
|
export { ensureDefaultAccounts } from './ensureDefaultAccounts';
|
|
131
135
|
export { readAccountRegistry, writeAccountRegistry, readActiveClaudeAccount, addCurrentAccount, switchToAccount, switchToAccountAsync, syncClaudeLiveState, cleanupAbandonedClaudeLogins, resolveActiveClaudeHome, applyActiveClaudeToLiveHome, reconcileClaudeAuthState, removeAccount, listAccounts, getActiveAccount, resolveActiveClaudeAccount, isMultiAccountEnabled, } from './accounts';
|
|
@@ -165,7 +169,7 @@ export { formatStatusline, selectStatuslineAccount } from './statusline/formatte
|
|
|
165
169
|
// Model Context
|
|
166
170
|
export { getModelContextWindowSize, resolveModelContextWindow, DEFAULT_CONTEXT_WINDOW, } from './modelContext';
|
|
167
171
|
// Model Info & Pricing
|
|
168
|
-
export { parseModelId, getModelPricing, resolveModelPricing, getModelInfo, calculateCost, calculateCostWithPricing, calculateCostWithProvenance, mergeCostSources, shortModelName, getModelDisplayInfo, compareModelIds, sortModelIds, formatCost, MODEL_PROVIDER_IDS, } from './modelInfo';
|
|
172
|
+
export { parseModelId, getModelPricing, resolveModelPricing, getModelInfo, calculateCost, calculateCostWithPricing, calculateCostWithProvenance, mergeCostSources, shortModelName, getModelDisplayInfo, compareModelIds, sortModelIds, formatCost, MODEL_PROVIDER_IDS, canonicalModelId, isMovingModelAlias, registerModelPricing, clearRegisteredModelPricing, getPricingCatalogInfo, costSourceFromPricingProvenance, mergeCostComponents, } from './modelInfo';
|
|
169
173
|
export { exportResolvedModelCatalog, importResolvedModelCatalog, registerModelAlias, resolveModelAlias, RESOLVED_MODEL_CATALOG_SCHEMA_VERSION, } from './modelCatalog';
|
|
170
174
|
// Pricing Catalog (LiteLLM hydration) — Node-only. Safe for extension host
|
|
171
175
|
// and CLI; do NOT import from browser bundles (webviews).
|
|
@@ -201,12 +205,13 @@ export { formatHealthReport, getSessionDiagnostics, runDoctor } from './doctor';
|
|
|
201
205
|
// Peak Hours (PromoClock — third-party)
|
|
202
206
|
export { _resetPeakHoursCache, createPeakHoursNotApplicableState, DEFAULT_PEAK_HOURS_TIMEOUT_MS, fetchPeakHoursStatus, getScheduledPeakHoursState, isClaudeCodeSessionProvider, PEAK_HOURS_CACHE_MS, PEAK_HOURS_DESCRIPTION, scopePeakHoursToSessionProvider, } from './peakHours';
|
|
203
207
|
export { FAILING_TOOL_TREND_ARROWS, failingToolTrend, mergeFailingToolWindows, } from './failingTools';
|
|
204
|
-
export { diagnoseProviderFailure, PROVIDER_AUTHENTICATION_SOURCES, PROVIDER_AUTHENTICATION_STATES, PROVIDER_CREDENTIAL_KINDS, PROVIDER_FAILURE_CODES, PROVIDER_FAILURE_EVIDENCE_SOURCES, PROVIDER_RECOVERY_ACTIONS, } from './providerFailure';
|
|
208
|
+
export { diagnoseProviderFailure, PROVIDER_AUTHENTICATION_SOURCES, PROVIDER_AUTHENTICATION_STATES, PROVIDER_CREDENTIAL_KINDS, PROVIDER_FAILURE_CODES, PROVIDER_FAILURE_EVIDENCE_SOURCES, PROVIDER_RECOVERY_ACTIONS, CODEX_ERROR_INFO_KINDS, decodeCodexErrorInfo, } from './providerFailure';
|
|
209
|
+
export { parseClaudeAuthStatus, parseCodexLoginStatus } from './authStatus';
|
|
205
210
|
export { fetchProviderServiceStatus } from './providerServiceStatus';
|
|
206
211
|
export { inspectCodexCredentialStores, repairCodexCredentialStores } from './codexCredentialDoctor';
|
|
207
212
|
export { readStoredCodexAccount, syncCodexLiveStateAsync } from './codexProfiles';
|
|
208
213
|
// Codex rollout directories (live and archived)
|
|
209
|
-
export { getCodexSessionsDirs, CODEX_SESSIONS_SUBDIR, CODEX_ARCHIVED_SESSIONS_SUBDIR, } from './codexPaths';
|
|
214
|
+
export { getCodexSessionsDirs, forceFileCredentialStore, CODEX_SESSIONS_SUBDIR, CODEX_ARCHIVED_SESSIONS_SUBDIR, } from './codexPaths';
|
|
210
215
|
// Tool categories across providers
|
|
211
216
|
export { classifyTool, TOOL_CATEGORIES } from './toolCategory';
|
|
212
217
|
// Workspace roots (realpath plus git worktree expansion)
|
package/dist/esm/modelCatalog.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { setOwnValue } from './ownKey';
|
|
1
2
|
import { _getModelContextIds, _setImportedResolvedContextWindows, resolveModelContextWindow, } from './modelContext';
|
|
2
3
|
import { _getModelPricingIds, _setImportedResolvedPricing, resolveModelPricing, } from './modelInfo';
|
|
3
4
|
import { _getModelAliases, _importModelAliases, registerModelAlias, resolveModelAlias, } from './modelAliases';
|
|
@@ -24,12 +25,13 @@ export function exportResolvedModelCatalog(ids) {
|
|
|
24
25
|
const selectedIds = normalizedIds(ids);
|
|
25
26
|
for (const id of selectedIds) {
|
|
26
27
|
const canonicalId = resolveModelAlias(id);
|
|
27
|
-
models
|
|
28
|
+
setOwnValue(models, id, {
|
|
28
29
|
id,
|
|
29
30
|
canonicalId,
|
|
30
31
|
contextWindow: resolveModelContextWindow(id),
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
// Registered prices are this realm's local configuration, never exported.
|
|
33
|
+
pricing: resolveModelPricing(id, { includeRegistered: false }),
|
|
34
|
+
});
|
|
33
35
|
}
|
|
34
36
|
const selectedCanonicalIds = new Set(Object.values(models).flatMap(({ id, canonicalId }) => [id, canonicalId]));
|
|
35
37
|
const aliases = Object.fromEntries(Object.entries(_getModelAliases()).filter(([alias, canonicalId]) => selectedCanonicalIds.has(alias) || selectedCanonicalIds.has(canonicalId)));
|
|
@@ -74,9 +76,9 @@ export function importResolvedModelCatalog(snapshot) {
|
|
|
74
76
|
if (!id)
|
|
75
77
|
continue;
|
|
76
78
|
if (contextResolved)
|
|
77
|
-
contexts
|
|
79
|
+
setOwnValue(contexts, id, context);
|
|
78
80
|
if (pricingResolved)
|
|
79
|
-
prices
|
|
81
|
+
setOwnValue(prices, id, pricing);
|
|
80
82
|
}
|
|
81
83
|
imported++;
|
|
82
84
|
}
|
package/dist/esm/modelContext.js
CHANGED
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
* webviews. Same pattern as `_setPricingOverrides` in `modelInfo.ts`.
|
|
29
29
|
*/
|
|
30
30
|
import { resolveModelAlias } from './modelAliases';
|
|
31
|
+
import { ownValue, setOwnValue } from './ownKey';
|
|
31
32
|
/** Known model context window sizes (in tokens); current models verified 2026-09-05. */
|
|
32
33
|
const MODEL_CONTEXT_SIZES = {
|
|
33
34
|
// Published API limits verified 2026-10-30; GLM's API documents 1M even
|
|
@@ -144,7 +145,7 @@ function normalizeOverrides(overrides) {
|
|
|
144
145
|
for (const [key, value] of Object.entries(overrides)) {
|
|
145
146
|
if (!Number.isFinite(value) || value <= 0)
|
|
146
147
|
continue;
|
|
147
|
-
out
|
|
148
|
+
setOwnValue(out, key.trim().toLowerCase(), value);
|
|
148
149
|
}
|
|
149
150
|
return out;
|
|
150
151
|
}
|
|
@@ -208,7 +209,7 @@ export function _getModelContextIds() {
|
|
|
208
209
|
// ── Lookup ──
|
|
209
210
|
/** Exact match against one table. */
|
|
210
211
|
function exactWindow(table, modelId) {
|
|
211
|
-
const hit = table
|
|
212
|
+
const hit = ownValue(table, modelId);
|
|
212
213
|
return hit === undefined ? null : hit;
|
|
213
214
|
}
|
|
214
215
|
function exactWindowMatch(table, modelId) {
|
|
@@ -256,7 +257,7 @@ export function resolveModelContextWindow(modelId) {
|
|
|
256
257
|
// Imported resolutions rank below local observed data: a window this realm
|
|
257
258
|
// saw first-hand is fresher than a snapshot transferred from another realm.
|
|
258
259
|
if (!observedExact) {
|
|
259
|
-
const imported = importedTable
|
|
260
|
+
const imported = ownValue(importedTable, stripped) ?? ownValue(importedTable, canonicalModelId);
|
|
260
261
|
if (imported) {
|
|
261
262
|
return { ...imported, modelId: rawModelId, canonicalModelId };
|
|
262
263
|
}
|