@golba98/codexa 1.0.4 → 1.0.5
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/package.json +1 -1
- package/src/app.tsx +128 -47
- package/src/commands/handler.ts +5 -16
- package/src/config/buildInfo.ts +2 -2
- package/src/core/models/codexModelCapabilities.ts +57 -4
- package/src/core/models/codexModelsCacheSeed.ts +153 -0
- package/src/core/models/providerModelCache.ts +106 -0
- package/src/core/process/CommandRunner.ts +12 -1
- package/src/core/providerLauncher/registry.ts +37 -7
- package/src/core/providerLauncher/types.ts +2 -1
- package/src/core/providerRuntime/anthropic.ts +3 -5
- package/src/core/providerRuntime/antigravity.ts +246 -90
- package/src/core/providerRuntime/claudeCodeDiscovery.ts +724 -692
- package/src/core/providerRuntime/mistralVibe.ts +663 -0
- package/src/core/providerRuntime/models.ts +18 -4
- package/src/core/providerRuntime/reasoning.ts +9 -6
- package/src/core/providerRuntime/registry.ts +94 -49
- package/src/core/providerRuntime/types.ts +1 -0
- package/src/index.tsx +23 -9
- package/src/test/runtimeTestUtils.ts +90 -0
- package/src/ui/{ActivityBars.tsx → chrome/ActivityBars.tsx} +1 -1
- package/src/ui/{ActivityIndicator.tsx → chrome/ActivityIndicator.tsx} +3 -3
- package/src/ui/{AnimatedStatusText.tsx → chrome/AnimatedStatusText.tsx} +3 -3
- package/src/ui/{AppShell.tsx → chrome/AppShell.tsx} +11 -11
- package/src/ui/{BottomComposer.tsx → chrome/BottomComposer.tsx} +15 -15
- package/src/ui/{DashCard.tsx → chrome/DashCard.tsx} +2 -2
- package/src/ui/{RunFooter.tsx → chrome/RunFooter.tsx} +3 -3
- package/src/ui/{RuntimeStatusBar.tsx → chrome/RuntimeStatusBar.tsx} +3 -3
- package/src/ui/{Spinner.tsx → chrome/Spinner.tsx} +1 -1
- package/src/ui/{TopHeader.tsx → chrome/TopHeader.tsx} +12 -12
- package/src/ui/{UpdateAvailableCard.tsx → chrome/UpdateAvailableCard.tsx} +3 -3
- package/src/ui/{commandNormalize.ts → input/commandNormalize.ts} +1 -1
- package/src/ui/{focus.ts → input/focus.ts} +1 -1
- package/src/ui/{inputBuffer.ts → input/inputBuffer.ts} +3 -3
- package/src/ui/{AttachmentImportPanel.tsx → panels/AttachmentImportPanel.tsx} +1 -1
- package/src/ui/{AuthPanel.tsx → panels/AuthPanel.tsx} +5 -5
- package/src/ui/{BackendPicker.tsx → panels/BackendPicker.tsx} +2 -2
- package/src/ui/{ModePicker.tsx → panels/ModePicker.tsx} +2 -2
- package/src/ui/{ModelPicker.tsx → panels/ModelPicker.tsx} +2 -2
- package/src/ui/{ModelPickerScreen.tsx → panels/ModelPickerScreen.tsx} +11 -9
- package/src/ui/{ModelReasoningPicker.tsx → panels/ModelReasoningPicker.tsx} +5 -5
- package/src/ui/{Panel.tsx → panels/Panel.tsx} +1 -1
- package/src/ui/{PermissionsPanel.tsx → panels/PermissionsPanel.tsx} +3 -3
- package/src/ui/{PlanActionPicker.tsx → panels/PlanActionPicker.tsx} +2 -2
- package/src/ui/{PlanReviewPanel.tsx → panels/PlanReviewPanel.tsx} +5 -5
- package/src/ui/{ProviderPicker.tsx → panels/ProviderPicker.tsx} +9 -7
- package/src/ui/{ReasoningPicker.tsx → panels/ReasoningPicker.tsx} +3 -3
- package/src/ui/{SelectionPanel.tsx → panels/SelectionPanel.tsx} +1 -1
- package/src/ui/{SettingsPanel.tsx → panels/SettingsPanel.tsx} +3 -3
- package/src/ui/{TextEntryPanel.tsx → panels/TextEntryPanel.tsx} +3 -3
- package/src/ui/{ThemePicker.tsx → panels/ThemePicker.tsx} +2 -2
- package/src/ui/{UpdatePromptPanel.tsx → panels/UpdatePromptPanel.tsx} +2 -2
- package/src/ui/{Markdown.tsx → render/Markdown.tsx} +2 -2
- package/src/ui/{diffRenderer.ts → render/diffRenderer.ts} +1 -1
- package/src/ui/{modeDisplay.ts → render/modeDisplay.ts} +2 -2
- package/src/ui/{outputPipeline.ts → render/outputPipeline.ts} +2 -2
- package/src/ui/{runtimeDisplay.ts → render/runtimeDisplay.ts} +9 -8
- package/src/ui/{ActionRequiredBlock.tsx → timeline/ActionRequiredBlock.tsx} +3 -3
- package/src/ui/{AgentBlock.tsx → timeline/AgentBlock.tsx} +10 -10
- package/src/ui/{StaticIntroItem.tsx → timeline/StaticIntroItem.tsx} +2 -2
- package/src/ui/{ThinkingBlock.tsx → timeline/ThinkingBlock.tsx} +4 -4
- package/src/ui/{Timeline.tsx → timeline/Timeline.tsx} +8 -8
- package/src/ui/{TranscriptShell.tsx → timeline/TranscriptShell.tsx} +6 -6
- package/src/ui/{TurnGroup.tsx → timeline/TurnGroup.tsx} +15 -15
- package/src/ui/{progressEntries.ts → timeline/progressEntries.ts} +3 -3
- package/src/ui/{runActivityView.ts → timeline/runActivityView.ts} +1 -1
- package/src/ui/{timelineMeasure.ts → timeline/timelineMeasure.ts} +14 -14
- /package/src/ui/{busyStatusAnimation.ts → chrome/busyStatusAnimation.ts} +0 -0
- /package/src/ui/{slashCommands.ts → input/slashCommands.ts} +0 -0
- /package/src/ui/{logoVariants.ts → render/logoVariants.ts} +0 -0
- /package/src/ui/{terminalAnswerFormat.ts → render/terminalAnswerFormat.ts} +0 -0
- /package/src/ui/{textLayout.ts → render/textLayout.ts} +0 -0
- /package/src/ui/{layoutListWindow.ts → timeline/layoutListWindow.ts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { WrappedTextRow } from "
|
|
2
|
-
import { getTextWidth, normalizeLineBreaks, wrapTextRows } from "
|
|
3
|
-
import { sanitizeTerminalInput } from "
|
|
1
|
+
import type { WrappedTextRow } from "../render/textLayout.js";
|
|
2
|
+
import { getTextWidth, normalizeLineBreaks, wrapTextRows } from "../render/textLayout.js";
|
|
3
|
+
import { sanitizeTerminalInput } from "../../core/terminal/terminalSanitize.js";
|
|
4
4
|
|
|
5
5
|
export type WrappedInputRow = WrappedTextRow;
|
|
6
6
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Box, Text, useFocus, useInput } from "ink";
|
|
3
|
-
import { AUTH_PREFERENCES, formatAuthPreferenceLabel } from "
|
|
4
|
-
import type { CodexAuthProbeResult } from "
|
|
5
|
-
import { getAuthStateLabel } from "
|
|
6
|
-
import type { BackendProvider } from "
|
|
7
|
-
import { useTheme } from "
|
|
3
|
+
import { AUTH_PREFERENCES, formatAuthPreferenceLabel } from "../../config/settings.js";
|
|
4
|
+
import type { CodexAuthProbeResult } from "../../core/auth/codexAuth.js";
|
|
5
|
+
import { getAuthStateLabel } from "../../core/auth/codexAuth.js";
|
|
6
|
+
import type { BackendProvider } from "../../core/providers/types.js";
|
|
7
|
+
import { useTheme } from "../theme.js";
|
|
8
8
|
|
|
9
9
|
interface AuthPanelProps {
|
|
10
10
|
focusId: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { AVAILABLE_BACKENDS } from "
|
|
3
|
-
import { FOCUS_IDS } from "
|
|
2
|
+
import { AVAILABLE_BACKENDS } from "../../config/settings.js";
|
|
3
|
+
import { FOCUS_IDS } from "../input/focus.js";
|
|
4
4
|
import { SelectionPanel } from "./SelectionPanel.js";
|
|
5
5
|
|
|
6
6
|
interface BackendPickerProps {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AVAILABLE_MODES } from "
|
|
2
|
-
import { FOCUS_IDS } from "
|
|
1
|
+
import { AVAILABLE_MODES } from "../../config/settings.js";
|
|
2
|
+
import { FOCUS_IDS } from "../input/focus.js";
|
|
3
3
|
import { SelectionPanel } from "./SelectionPanel.js";
|
|
4
4
|
|
|
5
5
|
interface ModePickerProps {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type CodexModelCapability } from "
|
|
2
|
-
import { FOCUS_IDS } from "
|
|
1
|
+
import { type CodexModelCapability } from "../../core/models/codexModelCapabilities.js";
|
|
2
|
+
import { FOCUS_IDS } from "../input/focus.js";
|
|
3
3
|
import { SelectionPanel } from "./SelectionPanel.js";
|
|
4
4
|
|
|
5
5
|
interface ModelPickerProps {
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
type CodexModelCapability,
|
|
5
5
|
type ReasoningEffortCapability,
|
|
6
6
|
normalizeReasoningForModelCapabilities,
|
|
7
|
-
} from "
|
|
8
|
-
import { formatReasoningLabel } from "
|
|
9
|
-
import { traceInputDebug } from "
|
|
10
|
-
import { FOCUS_IDS } from "
|
|
7
|
+
} from "../../core/models/codexModelCapabilities.js";
|
|
8
|
+
import { formatReasoningLabel } from "../../config/settings.js";
|
|
9
|
+
import { traceInputDebug } from "../../core/debug/inputDebug.js";
|
|
10
|
+
import { FOCUS_IDS } from "../input/focus.js";
|
|
11
11
|
import {
|
|
12
12
|
clampVisualText,
|
|
13
13
|
getShellWidth,
|
|
@@ -19,10 +19,10 @@ import {
|
|
|
19
19
|
type ActivePanelLayout,
|
|
20
20
|
type PanelLayout,
|
|
21
21
|
usePanelLayout,
|
|
22
|
-
} from "
|
|
23
|
-
import { calculateListWindow } from "
|
|
24
|
-
import { useTheme } from "
|
|
25
|
-
import type { GeminiModelSelection } from "
|
|
22
|
+
} from "../layout.js";
|
|
23
|
+
import { calculateListWindow } from "../timeline/layoutListWindow.js";
|
|
24
|
+
import { useTheme } from "../theme.js";
|
|
25
|
+
import type { GeminiModelSelection } from "../../core/providerRuntime/types.js";
|
|
26
26
|
|
|
27
27
|
// ─── Types & helpers ─────────────────────────────────────────────────────────
|
|
28
28
|
|
|
@@ -498,7 +498,9 @@ export function ModelPickerScreen({
|
|
|
498
498
|
>
|
|
499
499
|
{models.length === 0 ? (
|
|
500
500
|
<Text color={theme.textMuted}>
|
|
501
|
-
{isLoading
|
|
501
|
+
{isLoading
|
|
502
|
+
? `Discovering models from ${activeProviderLabel === "OpenAI" ? "the Codex runtime" : activeProviderLabel}...`
|
|
503
|
+
: (emptyMessage ?? "No models available.")}
|
|
502
504
|
</Text>
|
|
503
505
|
) : (
|
|
504
506
|
visibleModels.map((model, index) => {
|
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
type CodexModelCapability,
|
|
5
5
|
type ReasoningEffortCapability,
|
|
6
6
|
normalizeReasoningForModelCapabilities,
|
|
7
|
-
} from "
|
|
8
|
-
import { formatReasoningLabel } from "
|
|
9
|
-
import { traceInputDebug } from "
|
|
10
|
-
import { FOCUS_IDS } from "
|
|
11
|
-
import { useTheme } from "
|
|
7
|
+
} from "../../core/models/codexModelCapabilities.js";
|
|
8
|
+
import { formatReasoningLabel } from "../../config/settings.js";
|
|
9
|
+
import { traceInputDebug } from "../../core/debug/inputDebug.js";
|
|
10
|
+
import { FOCUS_IDS } from "../input/focus.js";
|
|
11
|
+
import { useTheme } from "../theme.js";
|
|
12
12
|
|
|
13
13
|
// ─── Types & helpers ─────────────────────────────────────────────────────────
|
|
14
14
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { ResolvedRuntimeConfig, RuntimeConfig } from "
|
|
1
|
+
import type { ResolvedRuntimeConfig, RuntimeConfig } from "../../config/runtimeConfig.js";
|
|
2
2
|
import {
|
|
3
3
|
formatApprovalPolicyLabel,
|
|
4
4
|
formatNetworkAccessLabel,
|
|
5
5
|
formatSandboxModeLabel,
|
|
6
|
-
} from "
|
|
7
|
-
import { FOCUS_IDS } from "
|
|
6
|
+
} from "../../config/runtimeConfig.js";
|
|
7
|
+
import { FOCUS_IDS } from "../input/focus.js";
|
|
8
8
|
import { SelectionPanel } from "./SelectionPanel.js";
|
|
9
9
|
|
|
10
10
|
export type PermissionsPanelAction =
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { Box, Text, useFocus, useInput, useStdin } from "ink";
|
|
3
|
-
import { FOCUS_IDS } from "
|
|
4
|
-
import { useTheme } from "
|
|
3
|
+
import { FOCUS_IDS } from "../input/focus.js";
|
|
4
|
+
import { useTheme } from "../theme.js";
|
|
5
5
|
|
|
6
6
|
export type PlanActionValue = "implement" | "revise" | "cancel";
|
|
7
7
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
|
-
import { normalizePlanReviewMarkdown } from "
|
|
4
|
-
import { getUsableShellWidth } from "
|
|
5
|
-
import { parseMarkdown } from "
|
|
6
|
-
import { getTextWidth } from "
|
|
7
|
-
import { useTheme } from "
|
|
3
|
+
import { normalizePlanReviewMarkdown } from "../../core/workspace/planStorage.js";
|
|
4
|
+
import { getUsableShellWidth } from "../layout.js";
|
|
5
|
+
import { parseMarkdown } from "../render/Markdown.js";
|
|
6
|
+
import { getTextWidth } from "../render/textLayout.js";
|
|
7
|
+
import { useTheme } from "../theme.js";
|
|
8
8
|
|
|
9
9
|
// ─── Types ────────────────────────────────────────────────────────────────────
|
|
10
10
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React, { useMemo, useState } from "react";
|
|
2
2
|
import { Box, Text, useFocus, useInput } from "ink";
|
|
3
|
-
import type { ProviderConfig, ProviderId, ProviderPickerAction } from "
|
|
4
|
-
import { traceInputDebug } from "
|
|
5
|
-
import { FOCUS_IDS } from "
|
|
3
|
+
import type { ProviderConfig, ProviderId, ProviderPickerAction } from "../../core/providerLauncher/types.js";
|
|
4
|
+
import { traceInputDebug } from "../../core/debug/inputDebug.js";
|
|
5
|
+
import { FOCUS_IDS } from "../input/focus.js";
|
|
6
6
|
import {
|
|
7
7
|
clampVisualText,
|
|
8
8
|
getShellWidth,
|
|
@@ -14,9 +14,9 @@ import {
|
|
|
14
14
|
type ActivePanelLayout,
|
|
15
15
|
type PanelLayout,
|
|
16
16
|
usePanelLayout,
|
|
17
|
-
} from "
|
|
18
|
-
import { calculateListWindow } from "
|
|
19
|
-
import { useTheme } from "
|
|
17
|
+
} from "../layout.js";
|
|
18
|
+
import { calculateListWindow } from "../timeline/layoutListWindow.js";
|
|
19
|
+
import { useTheme } from "../theme.js";
|
|
20
20
|
|
|
21
21
|
// ─── Types & helpers ─────────────────────────────────────────────────────────
|
|
22
22
|
|
|
@@ -247,7 +247,9 @@ export function ProviderPicker({
|
|
|
247
247
|
return;
|
|
248
248
|
}
|
|
249
249
|
if (key.return && selectedProvider) {
|
|
250
|
-
|
|
250
|
+
const action = actions[actionIndex];
|
|
251
|
+
if (action?.disabledReason) return;
|
|
252
|
+
onAction(selectedProvider.id, action?.value ?? "cancel");
|
|
251
253
|
}
|
|
252
254
|
}, { isActive: isFocused });
|
|
253
255
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { type ReasoningEffortCapability } from "
|
|
3
|
-
import { formatReasoningLabel } from "
|
|
4
|
-
import { FOCUS_IDS } from "
|
|
2
|
+
import { type ReasoningEffortCapability } from "../../core/models/codexModelCapabilities.js";
|
|
3
|
+
import { formatReasoningLabel } from "../../config/settings.js";
|
|
4
|
+
import { FOCUS_IDS } from "../input/focus.js";
|
|
5
5
|
import { SelectionPanel } from "./SelectionPanel.js";
|
|
6
6
|
|
|
7
7
|
interface ReasoningPickerProps {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React, { useMemo, useState } from "react";
|
|
2
2
|
import { Box, Text, useFocus, useInput } from "ink";
|
|
3
|
-
import type { SettingDefinition } from "
|
|
4
|
-
import type { FocusTargetId } from "
|
|
5
|
-
import { useTheme } from "
|
|
3
|
+
import type { SettingDefinition } from "../../config/settings.js";
|
|
4
|
+
import type { FocusTargetId } from "../input/focus.js";
|
|
5
|
+
import { useTheme } from "../theme.js";
|
|
6
6
|
|
|
7
7
|
export interface SettingsPanelProps<TKey extends string> {
|
|
8
8
|
focusId: FocusTargetId;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React, { useMemo, useState } from "react";
|
|
2
2
|
import { Box, Text, useFocus, useInput } from "ink";
|
|
3
|
-
import type { FocusTargetId } from "
|
|
4
|
-
import { useTheme } from "
|
|
5
|
-
import { stripMouseEscapes } from "
|
|
3
|
+
import type { FocusTargetId } from "../input/focus.js";
|
|
4
|
+
import { useTheme } from "../theme.js";
|
|
5
|
+
import { stripMouseEscapes } from "../input/inputBuffer.js";
|
|
6
6
|
|
|
7
7
|
interface TextEntryPanelProps {
|
|
8
8
|
focusId: FocusTargetId;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { AVAILABLE_THEMES, formatThemeLabel } from "
|
|
3
|
-
import { FOCUS_IDS } from "
|
|
2
|
+
import { AVAILABLE_THEMES, formatThemeLabel } from "../../config/settings.js";
|
|
3
|
+
import { FOCUS_IDS } from "../input/focus.js";
|
|
4
4
|
import { SelectionPanel } from "./SelectionPanel.js";
|
|
5
5
|
|
|
6
6
|
interface ThemePickerProps {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { Box, Text, useFocus, useInput } from "ink";
|
|
3
3
|
import { spawn } from "child_process";
|
|
4
|
-
import { useTheme } from "
|
|
5
|
-
import { CODEXA_NPM_PACKAGE, CODEXA_UPDATE_COMMAND, formatVersionLabel } from "
|
|
4
|
+
import { useTheme } from "../theme.js";
|
|
5
|
+
import { CODEXA_NPM_PACKAGE, CODEXA_UPDATE_COMMAND, formatVersionLabel } from "../../core/version/updateCheck.js";
|
|
6
6
|
|
|
7
7
|
type Phase = "menu" | "running" | "done" | "error";
|
|
8
8
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
|
-
import { useTheme } from "
|
|
4
|
-
import { Panel } from "
|
|
3
|
+
import { useTheme } from "../theme.js";
|
|
4
|
+
import { Panel } from "../panels/Panel.js";
|
|
5
5
|
import { maybeRenderDiff, type DiffRenderLineType } from "./diffRenderer.js";
|
|
6
6
|
import { formatLocalPathForTerminal, formatTerminalAnswerInline } from "./terminalAnswerFormat.js";
|
|
7
7
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { isNoiseLine } from "
|
|
2
|
-
import { sanitizeTerminalOutput } from "
|
|
1
|
+
import { isNoiseLine } from "../../core/providers/codexTranscript.js";
|
|
2
|
+
import { sanitizeTerminalOutput } from "../../core/terminal/terminalSanitize.js";
|
|
3
3
|
import { parseMarkdown, type Segment } from "./Markdown.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { formatModeLabel, formatReasoningLabel } from "
|
|
2
|
-
import type { RuntimeSummary } from "
|
|
3
|
-
import type { CodexModelCapability } from "
|
|
4
|
-
import type { ModelSpec } from "
|
|
5
|
-
import type { ModelContextMetadata } from "
|
|
6
|
-
import { contextMetadataToModelSpec, formatContextCompact } from "
|
|
7
|
-
import type { ActiveProviderRoute } from "
|
|
8
|
-
import { getAntigravityModelLabel } from "
|
|
1
|
+
import { formatModeLabel, formatReasoningLabel } from "../../config/settings.js";
|
|
2
|
+
import type { RuntimeSummary } from "../../config/runtimeConfig.js";
|
|
3
|
+
import type { CodexModelCapability } from "../../core/models/codexModelCapabilities.js";
|
|
4
|
+
import type { ModelSpec } from "../../core/models/modelSpecs.js";
|
|
5
|
+
import type { ModelContextMetadata } from "../../core/providerRuntime/contextMetadata.js";
|
|
6
|
+
import { contextMetadataToModelSpec, formatContextCompact } from "../../core/providerRuntime/contextMetadata.js";
|
|
7
|
+
import type { ActiveProviderRoute } from "../../core/providerRuntime/types.js";
|
|
8
|
+
import { getAntigravityModelLabel } from "../../core/providerRuntime/antigravity.js";
|
|
9
9
|
|
|
10
10
|
export interface ActiveRuntimeDisplayInput {
|
|
11
11
|
route: ActiveProviderRoute;
|
|
@@ -29,6 +29,7 @@ const PROVIDER_DISPLAY: Record<string, string> = {
|
|
|
29
29
|
openai: "OpenAI Codex CLI",
|
|
30
30
|
anthropic: "Claude Code CLI",
|
|
31
31
|
google: "Gemini CLI",
|
|
32
|
+
mistral: "Mistral Vibe CLI",
|
|
32
33
|
local: "Local",
|
|
33
34
|
antigravity: "Antigravity CLI",
|
|
34
35
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
|
-
import { getUsableShellWidth } from "
|
|
4
|
-
import { wrapPlainText } from "
|
|
5
|
-
import { useTheme } from "
|
|
3
|
+
import { getUsableShellWidth } from "../layout.js";
|
|
4
|
+
import { wrapPlainText } from "../render/textLayout.js";
|
|
5
|
+
import { useTheme } from "../theme.js";
|
|
6
6
|
|
|
7
7
|
interface ActionRequiredBlockProps {
|
|
8
8
|
cols: number;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import React, { memo, useDeferredValue, useMemo } from "react";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
|
-
import type { AssistantEvent, RunEvent } from "
|
|
4
|
-
import { getAssistantContent } from "
|
|
5
|
-
import { MemoizedRenderMessage } from "
|
|
6
|
-
import { getUsableShellWidth } from "
|
|
7
|
-
import { useTheme } from "
|
|
8
|
-
import { wrapPlainText } from "
|
|
9
|
-
import { RUN_OUTPUT_TRUNCATION_NOTICE } from "
|
|
10
|
-
import { sanitizeTerminalOutput } from "
|
|
3
|
+
import type { AssistantEvent, RunEvent } from "../../session/types.js";
|
|
4
|
+
import { getAssistantContent } from "../../session/types.js";
|
|
5
|
+
import { MemoizedRenderMessage } from "../render/Markdown.js";
|
|
6
|
+
import { getUsableShellWidth } from "../layout.js";
|
|
7
|
+
import { useTheme } from "../theme.js";
|
|
8
|
+
import { wrapPlainText } from "../render/textLayout.js";
|
|
9
|
+
import { RUN_OUTPUT_TRUNCATION_NOTICE } from "../../session/chatLifecycle.js";
|
|
10
|
+
import { sanitizeTerminalOutput } from "../../core/terminal/terminalSanitize.js";
|
|
11
11
|
import {
|
|
12
12
|
sanitizeOutput,
|
|
13
13
|
sanitizeStreamChunk,
|
|
14
14
|
normalizeOutput,
|
|
15
15
|
classifyOutput,
|
|
16
16
|
formatForBox,
|
|
17
|
-
} from "
|
|
18
|
-
import { DashCard } from "
|
|
17
|
+
} from "../render/outputPipeline.js";
|
|
18
|
+
import { DashCard } from "../chrome/DashCard.js";
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
function formatDuration(ms: number): string {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Box } from "ink";
|
|
3
|
-
import type { CodexAuthState } from "
|
|
4
|
-
import { getShellWidth, type Layout, type StartupHeaderMode } from "
|
|
3
|
+
import type { CodexAuthState } from "../../core/auth/codexAuth.js";
|
|
4
|
+
import { getShellWidth, type Layout, type StartupHeaderMode } from "../layout.js";
|
|
5
5
|
import { buildIntroRenderItem, TimelineRowView } from "./Timeline.js";
|
|
6
6
|
import type { TimelineRow } from "./timelineMeasure.js";
|
|
7
7
|
import { buildTimelineSnapshot } from "./timelineMeasure.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
|
-
import type { RunEvent } from "
|
|
4
|
-
import { clampVisualText, getUsableShellWidth } from "
|
|
5
|
-
import { useTheme } from "
|
|
6
|
-
import { DashCard } from "
|
|
3
|
+
import type { RunEvent } from "../../session/types.js";
|
|
4
|
+
import { clampVisualText, getUsableShellWidth } from "../layout.js";
|
|
5
|
+
import { useTheme } from "../theme.js";
|
|
6
|
+
import { DashCard } from "../chrome/DashCard.js";
|
|
7
7
|
import {
|
|
8
8
|
formatProgressBlockBodyLines,
|
|
9
9
|
getProgressUpdateCount,
|
|
@@ -10,17 +10,17 @@ import {
|
|
|
10
10
|
type TimelineEvent,
|
|
11
11
|
type UIState,
|
|
12
12
|
type UserPromptEvent,
|
|
13
|
-
} from "
|
|
14
|
-
import { APP_VERSION } from "
|
|
15
|
-
import { formatCodexaVersionLabel } from "
|
|
16
|
-
import type { CodexAuthState } from "
|
|
17
|
-
import { getAuthStateLabel } from "
|
|
18
|
-
import * as renderDebug from "
|
|
19
|
-
import { getShellWidth, type Layout, type StartupHeaderMode } from "
|
|
13
|
+
} from "../../session/types.js";
|
|
14
|
+
import { APP_VERSION } from "../../config/settings.js";
|
|
15
|
+
import { formatCodexaVersionLabel } from "../../core/version/channel.js";
|
|
16
|
+
import type { CodexAuthState } from "../../core/auth/codexAuth.js";
|
|
17
|
+
import { getAuthStateLabel } from "../../core/auth/codexAuth.js";
|
|
18
|
+
import * as renderDebug from "../../core/perf/renderDebug.js";
|
|
19
|
+
import { getShellWidth, type Layout, type StartupHeaderMode } from "../layout.js";
|
|
20
20
|
import type { TimelineRow, TimelineSnapshot, TimelineTone } from "./timelineMeasure.js";
|
|
21
21
|
import { buildStableTimelineSnapshot, buildTimelineSnapshot } from "./timelineMeasure.js";
|
|
22
22
|
import { resolveTurnRunPhase, type TurnOpacity, type TurnRunPhase } from "./TurnGroup.js";
|
|
23
|
-
import { useTheme } from "
|
|
23
|
+
import { useTheme } from "../theme.js";
|
|
24
24
|
|
|
25
25
|
// ─── Types & constants ────────────────────────────────────────────────────────
|
|
26
26
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React, { memo, useEffect, useMemo, useRef } from "react";
|
|
2
2
|
import { Box, Static } from "ink";
|
|
3
|
-
import type { RuntimeSummary } from "
|
|
4
|
-
import type { CodexAuthState } from "
|
|
5
|
-
import * as renderDebug from "
|
|
6
|
-
import type { TimelineEvent, UIState } from "
|
|
3
|
+
import type { RuntimeSummary } from "../../config/runtimeConfig.js";
|
|
4
|
+
import type { CodexAuthState } from "../../core/auth/codexAuth.js";
|
|
5
|
+
import * as renderDebug from "../../core/perf/renderDebug.js";
|
|
6
|
+
import type { TimelineEvent, UIState } from "../../session/types.js";
|
|
7
7
|
import {
|
|
8
8
|
buildActiveRenderItems,
|
|
9
9
|
buildIntroRenderItem,
|
|
@@ -12,13 +12,13 @@ import {
|
|
|
12
12
|
TimelineRowView,
|
|
13
13
|
type TimelineItem,
|
|
14
14
|
} from "./Timeline.js";
|
|
15
|
-
import { getShellHeight, getShellWidth, resolveStartupHeaderMode, type TerminalViewport } from "
|
|
15
|
+
import { getShellHeight, getShellWidth, resolveStartupHeaderMode, type TerminalViewport } from "../layout.js";
|
|
16
16
|
import {
|
|
17
17
|
buildNativeTranscriptParts,
|
|
18
18
|
type NativeTranscriptRowItem,
|
|
19
19
|
type TimelineRow,
|
|
20
20
|
} from "./timelineMeasure.js";
|
|
21
|
-
import { LOGO_COMPACT, LOGO_COMPACT_MIN_COLS, LOGO_LARGE, LOGO_MEDIUM, selectLogoVariant } from "
|
|
21
|
+
import { LOGO_COMPACT, LOGO_COMPACT_MIN_COLS, LOGO_LARGE, LOGO_MEDIUM, selectLogoVariant } from "../render/logoVariants.js";
|
|
22
22
|
|
|
23
23
|
type TranscriptStaticItem = NativeTranscriptRowItem & { type: "rows" };
|
|
24
24
|
type StaticRenderItem = TranscriptStaticItem;
|
|
@@ -9,30 +9,30 @@ import type {
|
|
|
9
9
|
RunToolActivity,
|
|
10
10
|
UIState,
|
|
11
11
|
UserPromptEvent,
|
|
12
|
-
} from "
|
|
13
|
-
import { getAssistantContent, getResponseSegmentText, getRunPlanText } from "
|
|
14
|
-
import { formatTerminalAnswerInline } from "
|
|
12
|
+
} from "../../session/types.js";
|
|
13
|
+
import { getAssistantContent, getResponseSegmentText, getRunPlanText } from "../../session/types.js";
|
|
14
|
+
import { formatTerminalAnswerInline } from "../render/terminalAnswerFormat.js";
|
|
15
15
|
import { ActionRequiredBlock } from "./ActionRequiredBlock.js";
|
|
16
|
-
import { DashCard } from "
|
|
17
|
-
import { useTheme } from "
|
|
18
|
-
import { sanitizeTerminalOutput } from "
|
|
19
|
-
import { wrapPlainText, wrapCommandText } from "
|
|
16
|
+
import { DashCard } from "../chrome/DashCard.js";
|
|
17
|
+
import { useTheme } from "../theme.js";
|
|
18
|
+
import { sanitizeTerminalOutput } from "../../core/terminal/terminalSanitize.js";
|
|
19
|
+
import { wrapPlainText, wrapCommandText } from "../render/textLayout.js";
|
|
20
20
|
import { selectVisibleRunActivity } from "./runActivityView.js";
|
|
21
|
-
import type { RunFileActivity } from "
|
|
22
|
-
import { RUN_OUTPUT_TRUNCATION_NOTICE } from "
|
|
21
|
+
import type { RunFileActivity } from "../../core/workspace/workspaceActivity.js";
|
|
22
|
+
import { RUN_OUTPUT_TRUNCATION_NOTICE } from "../../session/chatLifecycle.js";
|
|
23
23
|
import { formatProgressBlockBodyLines } from "./progressEntries.js";
|
|
24
|
-
import { getUsableShellWidth, transcriptContentIndent } from "
|
|
25
|
-
import { MemoizedRenderMessage } from "
|
|
24
|
+
import { getUsableShellWidth, transcriptContentIndent } from "../layout.js";
|
|
25
|
+
import { MemoizedRenderMessage } from "../render/Markdown.js";
|
|
26
26
|
import {
|
|
27
27
|
sanitizeOutput,
|
|
28
28
|
sanitizeStreamChunk,
|
|
29
29
|
normalizeOutput,
|
|
30
30
|
classifyOutput,
|
|
31
31
|
formatForBox,
|
|
32
|
-
} from "
|
|
33
|
-
import { normalizeCommand, getFriendlyActionLabel } from "
|
|
34
|
-
import * as renderDebug from "
|
|
35
|
-
import { normalizePlanReviewMarkdown } from "
|
|
32
|
+
} from "../render/outputPipeline.js";
|
|
33
|
+
import { normalizeCommand, getFriendlyActionLabel } from "../input/commandNormalize.js";
|
|
34
|
+
import * as renderDebug from "../../core/perf/renderDebug.js";
|
|
35
|
+
import { normalizePlanReviewMarkdown } from "../../core/workspace/planStorage.js";
|
|
36
36
|
|
|
37
37
|
export type TurnOpacity = "active" | "recent" | "dim";
|
|
38
38
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { RunProgressBlock, RunProgressEntry, RunProgressSource } from "
|
|
2
|
-
import { sanitizeTerminalOutput } from "
|
|
3
|
-
import { wrapPlainText } from "
|
|
1
|
+
import type { RunProgressBlock, RunProgressEntry, RunProgressSource } from "../../session/types.js";
|
|
2
|
+
import { sanitizeTerminalOutput } from "../../core/terminal/terminalSanitize.js";
|
|
3
|
+
import { wrapPlainText } from "../render/textLayout.js";
|
|
4
4
|
|
|
5
5
|
// ─── Types ───────────────────────────────────────────────────────────────────
|
|
6
6
|
|
|
@@ -4,17 +4,17 @@ import type {
|
|
|
4
4
|
RunProgressBlock,
|
|
5
5
|
RunResponseSegment,
|
|
6
6
|
RunToolActivity,
|
|
7
|
-
} from "
|
|
8
|
-
import * as renderDebug from "
|
|
9
|
-
import { getAssistantContent, getResponseSegmentText, getRunPlanText } from "
|
|
10
|
-
import { normalizeCommand, getFriendlyActionLabel } from "
|
|
11
|
-
import { formatTerminalAnswerInline } from "
|
|
12
|
-
import { RUN_OUTPUT_TRUNCATION_NOTICE } from "
|
|
13
|
-
import { sanitizeTerminalLines, sanitizeTerminalOutput } from "
|
|
14
|
-
import { clampVisualText, transcriptContentIndent } from "
|
|
15
|
-
import type { Segment } from "
|
|
16
|
-
import { classifyOutput, formatForBox, normalizeOutput, sanitizeOutput, sanitizeStreamChunk } from "
|
|
17
|
-
import { maybeRenderDiff, type DiffRenderLineType } from "
|
|
7
|
+
} from "../../session/types.js";
|
|
8
|
+
import * as renderDebug from "../../core/perf/renderDebug.js";
|
|
9
|
+
import { getAssistantContent, getResponseSegmentText, getRunPlanText } from "../../session/types.js";
|
|
10
|
+
import { normalizeCommand, getFriendlyActionLabel } from "../input/commandNormalize.js";
|
|
11
|
+
import { formatTerminalAnswerInline } from "../render/terminalAnswerFormat.js";
|
|
12
|
+
import { RUN_OUTPUT_TRUNCATION_NOTICE } from "../../session/chatLifecycle.js";
|
|
13
|
+
import { sanitizeTerminalLines, sanitizeTerminalOutput } from "../../core/terminal/terminalSanitize.js";
|
|
14
|
+
import { clampVisualText, transcriptContentIndent } from "../layout.js";
|
|
15
|
+
import type { Segment } from "../render/Markdown.js";
|
|
16
|
+
import { classifyOutput, formatForBox, normalizeOutput, sanitizeOutput, sanitizeStreamChunk } from "../render/outputPipeline.js";
|
|
17
|
+
import { maybeRenderDiff, type DiffRenderLineType } from "../render/diffRenderer.js";
|
|
18
18
|
import {
|
|
19
19
|
formatProgressBlockBodyLines,
|
|
20
20
|
getProgressUpdateCount,
|
|
@@ -22,10 +22,10 @@ import {
|
|
|
22
22
|
type VisibleProgressBlock,
|
|
23
23
|
} from "./progressEntries.js";
|
|
24
24
|
import { selectVisibleRunActivity } from "./runActivityView.js";
|
|
25
|
-
import { getTextUnits, getTextWidth, wrapPlainText, wrapCommandText, splitTextAtColumn } from "
|
|
25
|
+
import { getTextUnits, getTextWidth, wrapPlainText, wrapCommandText, splitTextAtColumn } from "../render/textLayout.js";
|
|
26
26
|
import type { RenderTimelineItem } from "./Timeline.js";
|
|
27
|
-
import { normalizePlanReviewMarkdown } from "
|
|
28
|
-
import { LOGO_COMPACT, LOGO_COMPACT_MIN_COLS, LOGO_LARGE_MIN_COLS, selectLogoVariant } from "
|
|
27
|
+
import { normalizePlanReviewMarkdown } from "../../core/workspace/planStorage.js";
|
|
28
|
+
import { LOGO_COMPACT, LOGO_COMPACT_MIN_COLS, LOGO_LARGE_MIN_COLS, selectLogoVariant } from "../render/logoVariants.js";
|
|
29
29
|
|
|
30
30
|
// ─── Exported types ───────────────────────────────────────────────────────────
|
|
31
31
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|