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
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pure parsers for the provider CLIs' read-only sign-in status commands,
|
|
4
|
+
* `claude auth status --json` and `codex login status`. They do no I/O. The
|
|
5
|
+
* caller runs the command with its own environment, home, and timeout, and
|
|
6
|
+
* passes the output here.
|
|
7
|
+
*
|
|
8
|
+
* A status command reports which credential the CLI would use. It does not
|
|
9
|
+
* prove that a request will authenticate: an expired or revoked token can
|
|
10
|
+
* still read as logged in.
|
|
11
|
+
*
|
|
12
|
+
* @module authStatus
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.parseClaudeAuthStatus = parseClaudeAuthStatus;
|
|
16
|
+
exports.parseCodexLoginStatus = parseCodexLoginStatus;
|
|
17
|
+
/** Larger outputs are not a status report; reading stops there. */
|
|
18
|
+
const MAX_STATUS_OUTPUT = 256 * 1024;
|
|
19
|
+
const MAX_DETAIL = 200;
|
|
20
|
+
function stringField(record, key) {
|
|
21
|
+
const value = record[key];
|
|
22
|
+
if (typeof value !== 'string')
|
|
23
|
+
return undefined;
|
|
24
|
+
const trimmed = value.trim();
|
|
25
|
+
return trimmed && trimmed.length <= 512 ? trimmed : undefined;
|
|
26
|
+
}
|
|
27
|
+
function parseJsonObject(output) {
|
|
28
|
+
const trimmed = output.trim();
|
|
29
|
+
const candidates = [trimmed];
|
|
30
|
+
// Tolerate warning lines printed ahead of the JSON document, which must
|
|
31
|
+
// then start a line and run to the end of the output.
|
|
32
|
+
const start = trimmed.search(/\n[ \t]*\{/);
|
|
33
|
+
if (start >= 0)
|
|
34
|
+
candidates.push(trimmed.slice(start).trim());
|
|
35
|
+
for (const candidate of candidates) {
|
|
36
|
+
if (!candidate.startsWith('{') || !candidate.endsWith('}'))
|
|
37
|
+
continue;
|
|
38
|
+
try {
|
|
39
|
+
const parsed = JSON.parse(candidate);
|
|
40
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed))
|
|
41
|
+
return parsed;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
/* Try the next candidate. */
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Parse the stdout of `claude auth status --json`. Claude Code exits 1 while
|
|
51
|
+
* printing valid signed-out JSON, so parse stdout whatever the exit status
|
|
52
|
+
* was. Only a JSON `"loggedIn": true` counts as logged in.
|
|
53
|
+
*/
|
|
54
|
+
function parseClaudeAuthStatus(stdout) {
|
|
55
|
+
const raw = typeof stdout === 'string' && stdout.length <= MAX_STATUS_OUTPUT
|
|
56
|
+
? parseJsonObject(stdout)
|
|
57
|
+
: undefined;
|
|
58
|
+
if (!raw)
|
|
59
|
+
return { loggedIn: false };
|
|
60
|
+
const method = stringField(raw, 'authMethod');
|
|
61
|
+
const email = stringField(raw, 'email');
|
|
62
|
+
const subscriptionType = stringField(raw, 'subscriptionType');
|
|
63
|
+
return {
|
|
64
|
+
loggedIn: raw.loggedIn === true,
|
|
65
|
+
...(method ? { method } : {}),
|
|
66
|
+
...(email ? { email } : {}),
|
|
67
|
+
...(subscriptionType ? { subscriptionType } : {}),
|
|
68
|
+
raw,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Parse the output of `codex login status`. Codex prints its status line to
|
|
73
|
+
* stderr (`Logged in using ChatGPT`, `Logged in using an API key - sk-…`,
|
|
74
|
+
* `Not logged in`), so pass both streams. The exit status is not consulted:
|
|
75
|
+
* callers that require exit 0 check it themselves.
|
|
76
|
+
*/
|
|
77
|
+
function parseCodexLoginStatus(stdout, stderr) {
|
|
78
|
+
const combined = `${typeof stdout === 'string' ? stdout : ''}\n${typeof stderr === 'string' ? stderr : ''}`.trim();
|
|
79
|
+
const firstLine = combined.split(/\r?\n/, 1)[0]?.trim() ?? '';
|
|
80
|
+
const detail = (/^(Logged in using .*?API key)\s+-\s.*$/i.exec(firstLine)?.[1] ?? firstLine)
|
|
81
|
+
.slice(0, MAX_DETAIL)
|
|
82
|
+
.trim();
|
|
83
|
+
const withDetail = detail ? { detail } : {};
|
|
84
|
+
if (!/^Logged in/i.test(combined))
|
|
85
|
+
return { loggedIn: false, ...withDetail };
|
|
86
|
+
if (/API key/i.test(combined))
|
|
87
|
+
return { loggedIn: true, method: 'api-key', ...withDetail };
|
|
88
|
+
if (/ChatGPT/i.test(combined))
|
|
89
|
+
return { loggedIn: true, method: 'chatgpt', ...withDetail };
|
|
90
|
+
return { loggedIn: true, ...withDetail };
|
|
91
|
+
}
|
package/dist/browser.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type { UsageProvider, UsageSemantics, UsageNormalizationProvenance, Provi
|
|
|
14
14
|
export { formatTokenBreakdown, summarizeTokens, sumTokenTotals, TOKEN_CONTEXT_LABEL, TOKEN_MAIN_THREAD_LABEL, TOKEN_SESSION_TOTAL_LABEL, TOKEN_SUBAGENTS_LABEL, TOKEN_TOTAL_LABEL, } from './tokenSummary';
|
|
15
15
|
export type { TokenSummary, TokenTotalsLike } from './tokenSummary';
|
|
16
16
|
export { ClaudeUsageDeduper, SYNTHETIC_MODEL } from './usage/claudeUsageDedupe';
|
|
17
|
+
export type { ClaudeUsageDedupeBuckets, ClaudeUsageDedupeState } from './usage/claudeUsageDedupe';
|
|
17
18
|
export { ASCII_CHARS_PER_TOKEN, estimateTextTokens, estimateSerializedTokens, } from './tokenEstimation';
|
|
18
19
|
export type { ExactTokenCounterContext, ExactTokenCounter, TokenEstimationMethod, TokenEstimationConfidence, TokenEstimationOptions, TokenEstimate, } from './tokenEstimation';
|
|
19
20
|
export { projectSessionTranscript } from './transcript';
|
|
@@ -24,12 +25,17 @@ export { parseMcpToolName } from './parsers/mcpToolName';
|
|
|
24
25
|
export type { McpToolNameParts } from './parsers/mcpToolName';
|
|
25
26
|
export { buildSessionContextSnapshot, calculateSessionContextPressure, createSessionContextProjector, } from './context/sessionContext';
|
|
26
27
|
export { ACCOUNT_PROVIDER_IDS, MODEL_PROVIDER_IDS, QUOTA_PROVIDER_IDS, RUNTIME_QUOTA_PROVIDER_IDS, SESSION_PROVIDER_IDS, } from './providerIds';
|
|
27
|
-
export type { AccountProviderId, ModelProviderId, QuotaProviderId, RuntimeQuotaProviderId, SessionProviderId,
|
|
28
|
+
export type { AccountProviderId, ModelProviderId, QuotaProviderId, RuntimeQuotaProviderId, SessionProviderId,
|
|
29
|
+
/** Same type as `ProviderId` from the package root and `sidekick-shared/node`. */
|
|
30
|
+
SessionProviderId as ProviderId, } from './providerIds';
|
|
28
31
|
export type { BuildSessionContextSnapshotOptions, SessionContextCapabilities, SessionContextLayerBreakdown, SessionContextPressure, SessionContextProjector, SessionContextSnapshot, SessionContextSource, SessionContextSourceType, } from './context/sessionContext';
|
|
32
|
+
export { SUBAGENT_SPAWN_TOOL_NAMES, isSubagentSpawnTool, isTaskNotificationSystemEvent, parseTaskNotification, taskNotificationFromEvent, } from './subagentSpawn';
|
|
33
|
+
export type { TaskNotification } from './subagentSpawn';
|
|
34
|
+
export type { SubagentOutcome } from './aggregation/types';
|
|
29
35
|
export { assistantTurnEventsFromSessionEvents, extractTurnSubagents, isAssistantTurnSubagentTool, reasoningSummary, segmentAssistantTurn, } from './turns/assistantTurn';
|
|
30
36
|
export type { AssistantTurnEvent, AssistantTurnEventType, AssistantTurnProcess, AssistantTurnProcessStep, AssistantTurnProjection, AssistantTurnSubagent, AssistantTurnSubagentStatus, AssistantTurnTimelineItem, AssistantTurnToolRef, ExtractTurnSubagentsOptions, ReasoningSummary, SegmentAssistantTurnOptions, } from './turns/assistantTurn';
|
|
31
|
-
export { parseModelId, getModelPricing, resolveModelPricing, getModelInfo, calculateCost, calculateCostWithPricing, calculateCostWithProvenance, mergeCostSources, shortModelName, getModelDisplayInfo, compareModelIds, sortModelIds, formatCost, } from './modelInfo';
|
|
32
|
-
export type { ModelPricing, CostTokenUsage, CostSource, CostProvenanceInput, CostWithProvenance, ModelProvider, ParsedModelId, ModelInfo, ModelDisplayInfo, ModelPricingMatch, ModelPricingProvenance, ModelPricingSource, ResolvedModelPricing, } from './modelInfo';
|
|
37
|
+
export { parseModelId, getModelPricing, resolveModelPricing, getModelInfo, calculateCost, calculateCostWithPricing, calculateCostWithProvenance, mergeCostSources, shortModelName, getModelDisplayInfo, compareModelIds, sortModelIds, formatCost, canonicalModelId, isMovingModelAlias, registerModelPricing, clearRegisteredModelPricing, getPricingCatalogInfo, costSourceFromPricingProvenance, mergeCostComponents, } from './modelInfo';
|
|
38
|
+
export type { ModelPricing, ResolveModelPricingOptions, RegisterModelPricingOptions, PricingCatalogInfo, PricingCatalogSource, CostComponent, FormatCostOptions, CostTokenUsage, CostSource, CostProvenanceInput, CostWithProvenance, ModelProvider, ParsedModelId, ModelInfo, ModelDisplayInfo, ModelPricingMatch, ModelPricingProvenance, ModelPricingSource, ResolvedModelPricing, } from './modelInfo';
|
|
33
39
|
export { exportResolvedModelCatalog, importResolvedModelCatalog, registerModelAlias, resolveModelAlias, RESOLVED_MODEL_CATALOG_SCHEMA_VERSION, } from './modelCatalog';
|
|
34
40
|
export type { ImportResolvedModelCatalogResult, ResolvedModelCatalogEntry, ResolvedModelCatalogSnapshot, } from './modelCatalog';
|
|
35
41
|
export { BILLING_BLOCK_DURATION_MS, computeBillingBlocks, findActiveBillingBlock, } from './usage/billingBlocks';
|
|
@@ -40,14 +46,18 @@ export { applySessionSummary, isFileImported, markFileImported, removeSessionSum
|
|
|
40
46
|
export type { ApplySessionSummaryOptions, SessionSummaryFromStatsOptions } from './historicalStore';
|
|
41
47
|
export { FAILING_TOOL_TREND_ARROWS, failingToolTrend, mergeFailingToolWindows, } from './failingTools';
|
|
42
48
|
export type { FailingToolTrend, FailingToolTrendRow, FailingToolWindow } from './failingTools';
|
|
43
|
-
export { diagnoseProviderFailure, PROVIDER_AUTHENTICATION_SOURCES, PROVIDER_AUTHENTICATION_STATES, PROVIDER_CREDENTIAL_KINDS, PROVIDER_FAILURE_CODES, PROVIDER_FAILURE_EVIDENCE_SOURCES, PROVIDER_RECOVERY_ACTIONS, } from './providerFailure';
|
|
44
|
-
export
|
|
49
|
+
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';
|
|
50
|
+
export { parseClaudeAuthStatus, parseCodexLoginStatus } from './authStatus';
|
|
51
|
+
export type { ParsedClaudeAuthStatus, ParsedCodexLoginStatus } from './authStatus';
|
|
52
|
+
export type { CodexErrorInfoKind, CodexErrorInfoSummary, ProviderCredentialKind, ProviderAuthenticationEvidence, ProviderFailureInput, ProviderFailureCode, ProviderRecoveryAction, ProviderRetryAfter, ProviderFailureEvidence, ProviderFailureDiagnosis, } from './providerFailure';
|
|
45
53
|
export type { ProviderServiceSeverity, ProviderServiceComponent, ProviderServiceIncident, ProviderServiceStatusFailureReason, ObservedProviderServiceStatus, UnavailableProviderServiceStatus, ProviderServiceStatus, FetchProviderServiceStatusOptions, } from './providerServiceStatusTypes';
|
|
46
54
|
export type { SessionEvent, ClaudeSessionEvent, MessageUsage, SessionMessage, SessionEventBase, MessageSessionEvent, UserSessionEvent, AssistantSessionEvent, SummarySessionEvent, SystemSessionEvent, ToolUseSessionEvent, ToolResultSessionEvent, TokenUsage, ToolCall, ToolAnalytics, TimelineEvent, PendingToolCall, TaskStatus as SessionTaskStatus, TrackedTask, TaskState, SubagentStats, PendingUserRequest, ResponseLatency, LatencyStats, PlanStep, PlanState, SessionStats, CompactionEvent, TruncationEvent, ContextAttribution, TurnAttribution, ContextSizePoint, PermissionMode, PermissionModeChange, } from './types/sessionEvent';
|
|
47
55
|
export type { CodexRolloutLine, CodexSessionMeta, CodexResponseItem, CodexMessageItem, CodexContentPart, CodexReasoningItem, CodexFunctionCallItem, CodexFunctionCallOutputItem, CodexLocalShellCallItem, CodexWebSearchCallItem, CodexCustomToolCallItem, CodexCustomToolCallOutputItem, CodexCompacted, CodexTurnContext, CodexEventMsg, CodexEvent, CodexTurnStartedEvent, CodexTurnCompleteEvent, CodexTaskStartedEvent, CodexTaskCompleteEvent, CodexTurnAbortedEvent, CodexTokenCountEvent, CodexTokenUsage, CodexRateLimits, CodexAgentMessageEvent, CodexAgentReasoningEvent, CodexUserMessageEvent, CodexExecCommandBeginEvent, CodexExecCommandEndEvent, CodexMcpToolCallBeginEvent, CodexMcpToolCallEndEvent, CodexErrorEvent, CodexContextCompactedEvent, CodexPatchAppliedEvent, CodexBackgroundEvent, CodexGenericEvent, CodexDbThread, CodexReasoningSummary, } from './types/codex';
|
|
48
56
|
export { isAggregateCodexLimit } from './types/codex';
|
|
49
57
|
export { CodexRolloutParser, DEFAULT_MAX_TRACKED_TOOL_CALLS, extractPatchFilePaths, normalizeCodexToolName, normalizeCodexToolInput, resolveCodexCallUsage, } from './parsers/codexParser';
|
|
50
|
-
export type { CodexRolloutParserOptions } from './parsers/codexParser';
|
|
58
|
+
export type { CodexPendingStats, CodexRolloutParserOptions, CodexRolloutResumeState, } from './parsers/codexParser';
|
|
59
|
+
export { codexRolloutOrigin, codexSpawnParentFromSource } from './parsers/codexRolloutOrigin';
|
|
60
|
+
export type { CodexRolloutOrigin } from './parsers/codexRolloutOrigin';
|
|
51
61
|
export { HUMAN_CLAUDE_ENTRYPOINTS, HUMAN_CODEX_SOURCES, humanPromptText, isHumanPrompt, } from './humanPrompt';
|
|
52
62
|
export type { HumanPromptProvider } from './humanPrompt';
|
|
53
63
|
export { renderHandoffUrlTemplate } from './handoffUrl';
|
package/dist/browser.js
CHANGED
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
* For pricing hydration (LiteLLM catalog refresh), use `sidekick-shared/node`.
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
12
|
+
exports.calculateCostWithPricing = exports.calculateCost = exports.getModelInfo = exports.resolveModelPricing = exports.getModelPricing = exports.parseModelId = exports.segmentAssistantTurn = exports.reasoningSummary = exports.isAssistantTurnSubagentTool = exports.extractTurnSubagents = exports.assistantTurnEventsFromSessionEvents = exports.taskNotificationFromEvent = exports.parseTaskNotification = exports.isTaskNotificationSystemEvent = exports.isSubagentSpawnTool = exports.SUBAGENT_SPAWN_TOOL_NAMES = exports.SESSION_PROVIDER_IDS = exports.RUNTIME_QUOTA_PROVIDER_IDS = exports.QUOTA_PROVIDER_IDS = exports.MODEL_PROVIDER_IDS = exports.ACCOUNT_PROVIDER_IDS = exports.createSessionContextProjector = exports.calculateSessionContextPressure = exports.buildSessionContextSnapshot = exports.parseMcpToolName = exports.parseLocalDateKey = exports.formatTokenCount = exports.formatLocalDateKey = exports.formatDurationMs = exports.addLocalDays = exports.projectSessionTranscript = exports.estimateSerializedTokens = exports.estimateTextTokens = exports.ASCII_CHARS_PER_TOKEN = exports.SYNTHETIC_MODEL = exports.ClaudeUsageDeduper = 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 = exports.DEFAULT_CONTEXT_WINDOW = exports.resolveModelContextWindow = exports.getModelContextWindowSize = void 0;
|
|
13
|
+
exports.normalizeCodexToolName = exports.extractPatchFilePaths = exports.DEFAULT_MAX_TRACKED_TOOL_CALLS = exports.CodexRolloutParser = exports.isAggregateCodexLimit = exports.parseCodexLoginStatus = exports.parseClaudeAuthStatus = exports.decodeCodexErrorInfo = exports.CODEX_ERROR_INFO_KINDS = 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.sessionSummaryFromStats = exports.removeSessionSummary = exports.markFileImported = exports.isFileImported = exports.applySessionSummary = exports.weekKey = exports.usageBucketKey = exports.summarizeUsageRows = exports.bucketUsage = exports.findActiveBillingBlock = exports.computeBillingBlocks = exports.BILLING_BLOCK_DURATION_MS = exports.RESOLVED_MODEL_CATALOG_SCHEMA_VERSION = exports.resolveModelAlias = exports.registerModelAlias = exports.importResolvedModelCatalog = exports.exportResolvedModelCatalog = exports.mergeCostComponents = exports.costSourceFromPricingProvenance = exports.getPricingCatalogInfo = exports.clearRegisteredModelPricing = exports.registerModelPricing = exports.isMovingModelAlias = exports.canonicalModelId = exports.formatCost = exports.sortModelIds = exports.compareModelIds = exports.getModelDisplayInfo = exports.shortModelName = exports.mergeCostSources = exports.calculateCostWithProvenance = void 0;
|
|
14
|
+
exports.quotaWindowShortLabel = exports.quotaWindowLabel = exports.quotaWindowHasData = exports.quotaWindowApplies = exports.formatExtraUsage = exports.extraQuotaRows = exports.claudePlanLabel = exports.TOOL_CATEGORIES = exports.classifyTool = exports.renderHandoffUrlTemplate = exports.isHumanPrompt = exports.humanPromptText = exports.HUMAN_CODEX_SOURCES = exports.HUMAN_CLAUDE_ENTRYPOINTS = exports.codexSpawnParentFromSource = exports.codexRolloutOrigin = exports.resolveCodexCallUsage = exports.normalizeCodexToolInput = void 0;
|
|
14
15
|
var modelContext_1 = require("./modelContext");
|
|
15
16
|
Object.defineProperty(exports, "getModelContextWindowSize", { enumerable: true, get: function () { return modelContext_1.getModelContextWindowSize; } });
|
|
16
17
|
Object.defineProperty(exports, "resolveModelContextWindow", { enumerable: true, get: function () { return modelContext_1.resolveModelContextWindow; } });
|
|
@@ -55,6 +56,12 @@ Object.defineProperty(exports, "MODEL_PROVIDER_IDS", { enumerable: true, get: fu
|
|
|
55
56
|
Object.defineProperty(exports, "QUOTA_PROVIDER_IDS", { enumerable: true, get: function () { return providerIds_1.QUOTA_PROVIDER_IDS; } });
|
|
56
57
|
Object.defineProperty(exports, "RUNTIME_QUOTA_PROVIDER_IDS", { enumerable: true, get: function () { return providerIds_1.RUNTIME_QUOTA_PROVIDER_IDS; } });
|
|
57
58
|
Object.defineProperty(exports, "SESSION_PROVIDER_IDS", { enumerable: true, get: function () { return providerIds_1.SESSION_PROVIDER_IDS; } });
|
|
59
|
+
var subagentSpawn_1 = require("./subagentSpawn");
|
|
60
|
+
Object.defineProperty(exports, "SUBAGENT_SPAWN_TOOL_NAMES", { enumerable: true, get: function () { return subagentSpawn_1.SUBAGENT_SPAWN_TOOL_NAMES; } });
|
|
61
|
+
Object.defineProperty(exports, "isSubagentSpawnTool", { enumerable: true, get: function () { return subagentSpawn_1.isSubagentSpawnTool; } });
|
|
62
|
+
Object.defineProperty(exports, "isTaskNotificationSystemEvent", { enumerable: true, get: function () { return subagentSpawn_1.isTaskNotificationSystemEvent; } });
|
|
63
|
+
Object.defineProperty(exports, "parseTaskNotification", { enumerable: true, get: function () { return subagentSpawn_1.parseTaskNotification; } });
|
|
64
|
+
Object.defineProperty(exports, "taskNotificationFromEvent", { enumerable: true, get: function () { return subagentSpawn_1.taskNotificationFromEvent; } });
|
|
58
65
|
var assistantTurn_1 = require("./turns/assistantTurn");
|
|
59
66
|
Object.defineProperty(exports, "assistantTurnEventsFromSessionEvents", { enumerable: true, get: function () { return assistantTurn_1.assistantTurnEventsFromSessionEvents; } });
|
|
60
67
|
Object.defineProperty(exports, "extractTurnSubagents", { enumerable: true, get: function () { return assistantTurn_1.extractTurnSubagents; } });
|
|
@@ -75,6 +82,13 @@ Object.defineProperty(exports, "getModelDisplayInfo", { enumerable: true, get: f
|
|
|
75
82
|
Object.defineProperty(exports, "compareModelIds", { enumerable: true, get: function () { return modelInfo_1.compareModelIds; } });
|
|
76
83
|
Object.defineProperty(exports, "sortModelIds", { enumerable: true, get: function () { return modelInfo_1.sortModelIds; } });
|
|
77
84
|
Object.defineProperty(exports, "formatCost", { enumerable: true, get: function () { return modelInfo_1.formatCost; } });
|
|
85
|
+
Object.defineProperty(exports, "canonicalModelId", { enumerable: true, get: function () { return modelInfo_1.canonicalModelId; } });
|
|
86
|
+
Object.defineProperty(exports, "isMovingModelAlias", { enumerable: true, get: function () { return modelInfo_1.isMovingModelAlias; } });
|
|
87
|
+
Object.defineProperty(exports, "registerModelPricing", { enumerable: true, get: function () { return modelInfo_1.registerModelPricing; } });
|
|
88
|
+
Object.defineProperty(exports, "clearRegisteredModelPricing", { enumerable: true, get: function () { return modelInfo_1.clearRegisteredModelPricing; } });
|
|
89
|
+
Object.defineProperty(exports, "getPricingCatalogInfo", { enumerable: true, get: function () { return modelInfo_1.getPricingCatalogInfo; } });
|
|
90
|
+
Object.defineProperty(exports, "costSourceFromPricingProvenance", { enumerable: true, get: function () { return modelInfo_1.costSourceFromPricingProvenance; } });
|
|
91
|
+
Object.defineProperty(exports, "mergeCostComponents", { enumerable: true, get: function () { return modelInfo_1.mergeCostComponents; } });
|
|
78
92
|
var modelCatalog_1 = require("./modelCatalog");
|
|
79
93
|
Object.defineProperty(exports, "exportResolvedModelCatalog", { enumerable: true, get: function () { return modelCatalog_1.exportResolvedModelCatalog; } });
|
|
80
94
|
Object.defineProperty(exports, "importResolvedModelCatalog", { enumerable: true, get: function () { return modelCatalog_1.importResolvedModelCatalog; } });
|
|
@@ -108,6 +122,11 @@ Object.defineProperty(exports, "PROVIDER_CREDENTIAL_KINDS", { enumerable: true,
|
|
|
108
122
|
Object.defineProperty(exports, "PROVIDER_FAILURE_CODES", { enumerable: true, get: function () { return providerFailure_1.PROVIDER_FAILURE_CODES; } });
|
|
109
123
|
Object.defineProperty(exports, "PROVIDER_FAILURE_EVIDENCE_SOURCES", { enumerable: true, get: function () { return providerFailure_1.PROVIDER_FAILURE_EVIDENCE_SOURCES; } });
|
|
110
124
|
Object.defineProperty(exports, "PROVIDER_RECOVERY_ACTIONS", { enumerable: true, get: function () { return providerFailure_1.PROVIDER_RECOVERY_ACTIONS; } });
|
|
125
|
+
Object.defineProperty(exports, "CODEX_ERROR_INFO_KINDS", { enumerable: true, get: function () { return providerFailure_1.CODEX_ERROR_INFO_KINDS; } });
|
|
126
|
+
Object.defineProperty(exports, "decodeCodexErrorInfo", { enumerable: true, get: function () { return providerFailure_1.decodeCodexErrorInfo; } });
|
|
127
|
+
var authStatus_1 = require("./authStatus");
|
|
128
|
+
Object.defineProperty(exports, "parseClaudeAuthStatus", { enumerable: true, get: function () { return authStatus_1.parseClaudeAuthStatus; } });
|
|
129
|
+
Object.defineProperty(exports, "parseCodexLoginStatus", { enumerable: true, get: function () { return authStatus_1.parseCodexLoginStatus; } });
|
|
111
130
|
var codex_1 = require("./types/codex");
|
|
112
131
|
Object.defineProperty(exports, "isAggregateCodexLimit", { enumerable: true, get: function () { return codex_1.isAggregateCodexLimit; } });
|
|
113
132
|
// Codex rollout parsing (pure: no filesystem access)
|
|
@@ -118,6 +137,9 @@ Object.defineProperty(exports, "extractPatchFilePaths", { enumerable: true, get:
|
|
|
118
137
|
Object.defineProperty(exports, "normalizeCodexToolName", { enumerable: true, get: function () { return codexParser_1.normalizeCodexToolName; } });
|
|
119
138
|
Object.defineProperty(exports, "normalizeCodexToolInput", { enumerable: true, get: function () { return codexParser_1.normalizeCodexToolInput; } });
|
|
120
139
|
Object.defineProperty(exports, "resolveCodexCallUsage", { enumerable: true, get: function () { return codexParser_1.resolveCodexCallUsage; } });
|
|
140
|
+
var codexRolloutOrigin_1 = require("./parsers/codexRolloutOrigin");
|
|
141
|
+
Object.defineProperty(exports, "codexRolloutOrigin", { enumerable: true, get: function () { return codexRolloutOrigin_1.codexRolloutOrigin; } });
|
|
142
|
+
Object.defineProperty(exports, "codexSpawnParentFromSource", { enumerable: true, get: function () { return codexRolloutOrigin_1.codexSpawnParentFromSource; } });
|
|
121
143
|
var humanPrompt_1 = require("./humanPrompt");
|
|
122
144
|
Object.defineProperty(exports, "HUMAN_CLAUDE_ENTRYPOINTS", { enumerable: true, get: function () { return humanPrompt_1.HUMAN_CLAUDE_ENTRYPOINTS; } });
|
|
123
145
|
Object.defineProperty(exports, "HUMAN_CODEX_SOURCES", { enumerable: true, get: function () { return humanPrompt_1.HUMAN_CODEX_SOURCES; } });
|
package/dist/codex.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `sidekick-shared/codex` — a small Node-only entry for Codex homes, the
|
|
3
|
+
* child-process environment, `auth.json` helpers, credential-store mode,
|
|
4
|
+
* rollout lookup, and the atomic JSON writers those helpers rely on.
|
|
5
|
+
*
|
|
6
|
+
* Loads a handful of modules and no Zod, so a host that only launches or
|
|
7
|
+
* locates Codex does not pay for the full `sidekick-shared/node` surface.
|
|
8
|
+
* Everything here is also exported from the package root and from
|
|
9
|
+
* `sidekick-shared/node`.
|
|
10
|
+
*
|
|
11
|
+
* @module codex
|
|
12
|
+
*/
|
|
13
|
+
export { getSystemCodexHome, resolveSidekickCodexHome, getCodexExecutionEnv, getCodexMonitoringHomes, getCodexSessionsDirs, getCodexCredentialStoreMode, forceFileCredentialStore, CODEX_SESSIONS_SUBDIR, CODEX_ARCHIVED_SESSIONS_SUBDIR, } from './codexPaths';
|
|
14
|
+
export type { CodexCredentialStoreMode, CodexSessionsDirsOptions } from './codexPaths';
|
|
15
|
+
export { parseAuthJson as parseCodexAuthJson, readAuthIdentityFromRaw as readCodexAuthIdentity, readLastRefresh as readCodexLastRefresh, readAccessTokenExpiry as readCodexAccessTokenExpiry, identitiesMatch as codexIdentitiesMatch, codexRefreshFingerprint, compareCodexAuthFreshness, } from './codexAuth';
|
|
16
|
+
export type { CodexAuthIdentity, CodexAuthJsonFile } from './codexAuth';
|
|
17
|
+
export { findCodexRolloutFile } from './providers/codexRollouts';
|
|
18
|
+
export type { FindCodexRolloutFileOptions } from './providers/codexRollouts';
|
|
19
|
+
export { atomicWriteJson, atomicWriteJsonSync } from './writers/atomic';
|
|
20
|
+
export { parseClaudeAuthStatus, parseCodexLoginStatus } from './authStatus';
|
|
21
|
+
export type { ParsedClaudeAuthStatus, ParsedCodexLoginStatus } from './authStatus';
|
|
22
|
+
export { codexRolloutOrigin, codexSpawnParentFromSource } from './parsers/codexRolloutOrigin';
|
|
23
|
+
export type { CodexRolloutOrigin } from './parsers/codexRolloutOrigin';
|
package/dist/codex.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `sidekick-shared/codex` — a small Node-only entry for Codex homes, the
|
|
4
|
+
* child-process environment, `auth.json` helpers, credential-store mode,
|
|
5
|
+
* rollout lookup, and the atomic JSON writers those helpers rely on.
|
|
6
|
+
*
|
|
7
|
+
* Loads a handful of modules and no Zod, so a host that only launches or
|
|
8
|
+
* locates Codex does not pay for the full `sidekick-shared/node` surface.
|
|
9
|
+
* Everything here is also exported from the package root and from
|
|
10
|
+
* `sidekick-shared/node`.
|
|
11
|
+
*
|
|
12
|
+
* @module codex
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.codexSpawnParentFromSource = exports.codexRolloutOrigin = exports.parseCodexLoginStatus = exports.parseClaudeAuthStatus = exports.atomicWriteJsonSync = exports.atomicWriteJson = exports.findCodexRolloutFile = exports.compareCodexAuthFreshness = exports.codexRefreshFingerprint = exports.codexIdentitiesMatch = exports.readCodexAccessTokenExpiry = exports.readCodexLastRefresh = exports.readCodexAuthIdentity = exports.parseCodexAuthJson = exports.CODEX_ARCHIVED_SESSIONS_SUBDIR = exports.CODEX_SESSIONS_SUBDIR = exports.forceFileCredentialStore = exports.getCodexCredentialStoreMode = exports.getCodexSessionsDirs = exports.getCodexMonitoringHomes = exports.getCodexExecutionEnv = exports.resolveSidekickCodexHome = exports.getSystemCodexHome = void 0;
|
|
16
|
+
var codexPaths_1 = require("./codexPaths");
|
|
17
|
+
Object.defineProperty(exports, "getSystemCodexHome", { enumerable: true, get: function () { return codexPaths_1.getSystemCodexHome; } });
|
|
18
|
+
Object.defineProperty(exports, "resolveSidekickCodexHome", { enumerable: true, get: function () { return codexPaths_1.resolveSidekickCodexHome; } });
|
|
19
|
+
Object.defineProperty(exports, "getCodexExecutionEnv", { enumerable: true, get: function () { return codexPaths_1.getCodexExecutionEnv; } });
|
|
20
|
+
Object.defineProperty(exports, "getCodexMonitoringHomes", { enumerable: true, get: function () { return codexPaths_1.getCodexMonitoringHomes; } });
|
|
21
|
+
Object.defineProperty(exports, "getCodexSessionsDirs", { enumerable: true, get: function () { return codexPaths_1.getCodexSessionsDirs; } });
|
|
22
|
+
Object.defineProperty(exports, "getCodexCredentialStoreMode", { enumerable: true, get: function () { return codexPaths_1.getCodexCredentialStoreMode; } });
|
|
23
|
+
Object.defineProperty(exports, "forceFileCredentialStore", { enumerable: true, get: function () { return codexPaths_1.forceFileCredentialStore; } });
|
|
24
|
+
Object.defineProperty(exports, "CODEX_SESSIONS_SUBDIR", { enumerable: true, get: function () { return codexPaths_1.CODEX_SESSIONS_SUBDIR; } });
|
|
25
|
+
Object.defineProperty(exports, "CODEX_ARCHIVED_SESSIONS_SUBDIR", { enumerable: true, get: function () { return codexPaths_1.CODEX_ARCHIVED_SESSIONS_SUBDIR; } });
|
|
26
|
+
var codexAuth_1 = require("./codexAuth");
|
|
27
|
+
Object.defineProperty(exports, "parseCodexAuthJson", { enumerable: true, get: function () { return codexAuth_1.parseAuthJson; } });
|
|
28
|
+
Object.defineProperty(exports, "readCodexAuthIdentity", { enumerable: true, get: function () { return codexAuth_1.readAuthIdentityFromRaw; } });
|
|
29
|
+
Object.defineProperty(exports, "readCodexLastRefresh", { enumerable: true, get: function () { return codexAuth_1.readLastRefresh; } });
|
|
30
|
+
Object.defineProperty(exports, "readCodexAccessTokenExpiry", { enumerable: true, get: function () { return codexAuth_1.readAccessTokenExpiry; } });
|
|
31
|
+
Object.defineProperty(exports, "codexIdentitiesMatch", { enumerable: true, get: function () { return codexAuth_1.identitiesMatch; } });
|
|
32
|
+
Object.defineProperty(exports, "codexRefreshFingerprint", { enumerable: true, get: function () { return codexAuth_1.codexRefreshFingerprint; } });
|
|
33
|
+
Object.defineProperty(exports, "compareCodexAuthFreshness", { enumerable: true, get: function () { return codexAuth_1.compareCodexAuthFreshness; } });
|
|
34
|
+
var codexRollouts_1 = require("./providers/codexRollouts");
|
|
35
|
+
Object.defineProperty(exports, "findCodexRolloutFile", { enumerable: true, get: function () { return codexRollouts_1.findCodexRolloutFile; } });
|
|
36
|
+
var atomic_1 = require("./writers/atomic");
|
|
37
|
+
Object.defineProperty(exports, "atomicWriteJson", { enumerable: true, get: function () { return atomic_1.atomicWriteJson; } });
|
|
38
|
+
Object.defineProperty(exports, "atomicWriteJsonSync", { enumerable: true, get: function () { return atomic_1.atomicWriteJsonSync; } });
|
|
39
|
+
var authStatus_1 = require("./authStatus");
|
|
40
|
+
Object.defineProperty(exports, "parseClaudeAuthStatus", { enumerable: true, get: function () { return authStatus_1.parseClaudeAuthStatus; } });
|
|
41
|
+
Object.defineProperty(exports, "parseCodexLoginStatus", { enumerable: true, get: function () { return authStatus_1.parseCodexLoginStatus; } });
|
|
42
|
+
var codexRolloutOrigin_1 = require("./parsers/codexRolloutOrigin");
|
|
43
|
+
Object.defineProperty(exports, "codexRolloutOrigin", { enumerable: true, get: function () { return codexRolloutOrigin_1.codexRolloutOrigin; } });
|
|
44
|
+
Object.defineProperty(exports, "codexSpawnParentFromSource", { enumerable: true, get: function () { return codexRolloutOrigin_1.codexSpawnParentFromSource; } });
|
package/dist/codexProfiles.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ interface CodexLoginStatus {
|
|
|
23
23
|
loggedIn: boolean;
|
|
24
24
|
authMode?: 'chatgpt' | 'api-key';
|
|
25
25
|
}
|
|
26
|
+
/** `codex login status` counts only on exit 0; the text is read by {@link parseCodexLoginStatus}. */
|
|
26
27
|
export declare function parseCodexLoginStatusOutput(status: number | null, stdout: string): CodexLoginStatus;
|
|
27
28
|
/**
|
|
28
29
|
* Blocks the caller's event loop for up to {@link PROBE_TIMEOUT_MS}. Async code
|
package/dist/codexProfiles.js
CHANGED
|
@@ -79,6 +79,7 @@ const accountRegistry_1 = require("./accountRegistry");
|
|
|
79
79
|
// re-serializing would drop fields added by newer codex versions, and the
|
|
80
80
|
// rotated refresh token inside is only valid in its freshest form.
|
|
81
81
|
const atomic_1 = require("./writers/atomic");
|
|
82
|
+
const authStatus_1 = require("./authStatus");
|
|
82
83
|
const codexAuth_1 = require("./codexAuth");
|
|
83
84
|
const codexPaths_1 = require("./codexPaths");
|
|
84
85
|
const accountHealth_1 = require("./accountHealth");
|
|
@@ -285,18 +286,14 @@ function readMetadataFromLegacyCredentials(codexHome) {
|
|
|
285
286
|
return {};
|
|
286
287
|
}
|
|
287
288
|
const PROBE_TIMEOUT_MS = 4000;
|
|
289
|
+
/** `codex login status` counts only on exit 0; the text is read by {@link parseCodexLoginStatus}. */
|
|
288
290
|
function parseCodexLoginStatusOutput(status, stdout) {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
return { loggedIn: true, authMode: 'chatgpt' };
|
|
296
|
-
}
|
|
297
|
-
return { loggedIn: true };
|
|
298
|
-
}
|
|
299
|
-
return { loggedIn: false };
|
|
291
|
+
if (status !== 0)
|
|
292
|
+
return { loggedIn: false };
|
|
293
|
+
const parsed = (0, authStatus_1.parseCodexLoginStatus)(stdout);
|
|
294
|
+
if (!parsed.loggedIn)
|
|
295
|
+
return { loggedIn: false };
|
|
296
|
+
return parsed.method ? { loggedIn: true, authMode: parsed.method } : { loggedIn: true };
|
|
300
297
|
}
|
|
301
298
|
/**
|
|
302
299
|
* Blocks the caller's event loop for up to {@link PROBE_TIMEOUT_MS}. Async code
|
|
@@ -14,6 +14,7 @@ const EventAggregator_1 = require("../aggregation/EventAggregator");
|
|
|
14
14
|
const modelContext_1 = require("../modelContext");
|
|
15
15
|
const mcpToolName_1 = require("../parsers/mcpToolName");
|
|
16
16
|
const tokenEstimation_1 = require("../tokenEstimation");
|
|
17
|
+
const subagentSpawn_1 = require("../subagentSpawn");
|
|
17
18
|
const DEFAULT_CONTEXT_SOURCE_LIMIT = 200;
|
|
18
19
|
const DEFAULT_SNIPPET_MAX_CHARS = 240;
|
|
19
20
|
const DEFAULT_BODY_MAX_CHARS = 5000;
|
|
@@ -211,6 +212,9 @@ function extractSourcesFromEvent(event, state) {
|
|
|
211
212
|
}
|
|
212
213
|
}
|
|
213
214
|
function extractSystemSource(event, state) {
|
|
215
|
+
// Background-task notices only update subagent lifecycles (like the aggregator).
|
|
216
|
+
if ((0, subagentSpawn_1.isTaskNotificationSystemEvent)(event))
|
|
217
|
+
return;
|
|
214
218
|
const message = event.message;
|
|
215
219
|
const text = extractText(message?.content);
|
|
216
220
|
const label = message?.sourceLabel ?? message?.role ?? 'system';
|