@golba98/codexa 1.0.4 → 1.0.6

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.
Files changed (78) hide show
  1. package/README.md +6 -10
  2. package/package.json +1 -1
  3. package/src/app.tsx +188 -121
  4. package/src/commands/handler.ts +11 -20
  5. package/src/config/appVersion.ts +65 -0
  6. package/src/config/buildInfo.ts +2 -2
  7. package/src/config/settings.ts +5 -1
  8. package/src/config/updateCheckCache.ts +18 -8
  9. package/src/core/models/codexModelCapabilities.ts +57 -4
  10. package/src/core/models/codexModelsCacheSeed.ts +153 -0
  11. package/src/core/models/providerModelCache.ts +90 -0
  12. package/src/core/process/CommandRunner.ts +12 -1
  13. package/src/core/providerLauncher/registry.ts +37 -7
  14. package/src/core/providerLauncher/types.ts +2 -1
  15. package/src/core/providerRuntime/anthropic.ts +3 -5
  16. package/src/core/providerRuntime/antigravity.ts +257 -90
  17. package/src/core/providerRuntime/claudeCodeDiscovery.ts +724 -692
  18. package/src/core/providerRuntime/mistralVibe.ts +663 -0
  19. package/src/core/providerRuntime/models.ts +18 -4
  20. package/src/core/providerRuntime/reasoning.ts +9 -6
  21. package/src/core/providerRuntime/registry.ts +93 -44
  22. package/src/core/providerRuntime/types.ts +1 -0
  23. package/src/core/version/packageManager.ts +119 -0
  24. package/src/core/version/updateCheck.ts +15 -9
  25. package/src/index.tsx +23 -9
  26. package/src/ui/{ActivityBars.tsx → chrome/ActivityBars.tsx} +1 -1
  27. package/src/ui/{ActivityIndicator.tsx → chrome/ActivityIndicator.tsx} +3 -3
  28. package/src/ui/{AnimatedStatusText.tsx → chrome/AnimatedStatusText.tsx} +3 -3
  29. package/src/ui/{AppShell.tsx → chrome/AppShell.tsx} +11 -11
  30. package/src/ui/{BottomComposer.tsx → chrome/BottomComposer.tsx} +15 -15
  31. package/src/ui/{DashCard.tsx → chrome/DashCard.tsx} +2 -2
  32. package/src/ui/{RunFooter.tsx → chrome/RunFooter.tsx} +3 -3
  33. package/src/ui/{RuntimeStatusBar.tsx → chrome/RuntimeStatusBar.tsx} +3 -3
  34. package/src/ui/{Spinner.tsx → chrome/Spinner.tsx} +1 -1
  35. package/src/ui/{TopHeader.tsx → chrome/TopHeader.tsx} +15 -13
  36. package/src/ui/{UpdateAvailableCard.tsx → chrome/UpdateAvailableCard.tsx} +6 -5
  37. package/src/ui/{commandNormalize.ts → input/commandNormalize.ts} +1 -1
  38. package/src/ui/{focus.ts → input/focus.ts} +1 -1
  39. package/src/ui/{inputBuffer.ts → input/inputBuffer.ts} +3 -3
  40. package/src/ui/{slashCommands.ts → input/slashCommands.ts} +1 -0
  41. package/src/ui/{AttachmentImportPanel.tsx → panels/AttachmentImportPanel.tsx} +1 -1
  42. package/src/ui/{AuthPanel.tsx → panels/AuthPanel.tsx} +5 -5
  43. package/src/ui/{BackendPicker.tsx → panels/BackendPicker.tsx} +2 -2
  44. package/src/ui/{ModePicker.tsx → panels/ModePicker.tsx} +2 -2
  45. package/src/ui/{ModelPicker.tsx → panels/ModelPicker.tsx} +2 -2
  46. package/src/ui/{ModelPickerScreen.tsx → panels/ModelPickerScreen.tsx} +11 -9
  47. package/src/ui/{ModelReasoningPicker.tsx → panels/ModelReasoningPicker.tsx} +5 -5
  48. package/src/ui/{Panel.tsx → panels/Panel.tsx} +1 -1
  49. package/src/ui/{PermissionsPanel.tsx → panels/PermissionsPanel.tsx} +3 -3
  50. package/src/ui/{PlanActionPicker.tsx → panels/PlanActionPicker.tsx} +2 -2
  51. package/src/ui/{PlanReviewPanel.tsx → panels/PlanReviewPanel.tsx} +5 -5
  52. package/src/ui/{ProviderPicker.tsx → panels/ProviderPicker.tsx} +9 -7
  53. package/src/ui/{ReasoningPicker.tsx → panels/ReasoningPicker.tsx} +3 -3
  54. package/src/ui/{SelectionPanel.tsx → panels/SelectionPanel.tsx} +1 -1
  55. package/src/ui/{SettingsPanel.tsx → panels/SettingsPanel.tsx} +3 -3
  56. package/src/ui/{TextEntryPanel.tsx → panels/TextEntryPanel.tsx} +3 -3
  57. package/src/ui/{ThemePicker.tsx → panels/ThemePicker.tsx} +2 -2
  58. package/src/ui/{UpdatePromptPanel.tsx → panels/UpdatePromptPanel.tsx} +54 -44
  59. package/src/ui/{Markdown.tsx → render/Markdown.tsx} +2 -2
  60. package/src/ui/{diffRenderer.ts → render/diffRenderer.ts} +1 -1
  61. package/src/ui/{modeDisplay.ts → render/modeDisplay.ts} +2 -2
  62. package/src/ui/{outputPipeline.ts → render/outputPipeline.ts} +2 -2
  63. package/src/ui/{runtimeDisplay.ts → render/runtimeDisplay.ts} +9 -8
  64. package/src/ui/{ActionRequiredBlock.tsx → timeline/ActionRequiredBlock.tsx} +3 -3
  65. package/src/ui/{AgentBlock.tsx → timeline/AgentBlock.tsx} +10 -10
  66. package/src/ui/{StaticIntroItem.tsx → timeline/StaticIntroItem.tsx} +2 -2
  67. package/src/ui/{ThinkingBlock.tsx → timeline/ThinkingBlock.tsx} +4 -4
  68. package/src/ui/{Timeline.tsx → timeline/Timeline.tsx} +8 -8
  69. package/src/ui/{TranscriptShell.tsx → timeline/TranscriptShell.tsx} +6 -6
  70. package/src/ui/{TurnGroup.tsx → timeline/TurnGroup.tsx} +15 -15
  71. package/src/ui/{progressEntries.ts → timeline/progressEntries.ts} +3 -3
  72. package/src/ui/{runActivityView.ts → timeline/runActivityView.ts} +1 -1
  73. package/src/ui/{timelineMeasure.ts → timeline/timelineMeasure.ts} +14 -14
  74. /package/src/ui/{busyStatusAnimation.ts → chrome/busyStatusAnimation.ts} +0 -0
  75. /package/src/ui/{logoVariants.ts → render/logoVariants.ts} +0 -0
  76. /package/src/ui/{terminalAnswerFormat.ts → render/terminalAnswerFormat.ts} +0 -0
  77. /package/src/ui/{textLayout.ts → render/textLayout.ts} +0 -0
  78. /package/src/ui/{layoutListWindow.ts → timeline/layoutListWindow.ts} +0 -0
@@ -1,11 +1,11 @@
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";
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 "./layout.js";
4
- import { wrapPlainText } from "./textLayout.js";
5
- import { useTheme } from "./theme.js";
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 "../session/types.js";
4
- import { getAssistantContent } from "../session/types.js";
5
- import { MemoizedRenderMessage } from "./Markdown.js";
6
- import { getUsableShellWidth } from "./layout.js";
7
- import { useTheme } from "./theme.js";
8
- import { wrapPlainText } from "./textLayout.js";
9
- import { RUN_OUTPUT_TRUNCATION_NOTICE } from "../session/chatLifecycle.js";
10
- import { sanitizeTerminalOutput } from "../core/terminal/terminalSanitize.js";
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 "./outputPipeline.js";
18
- import { DashCard } from "./DashCard.js";
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 "../core/auth/codexAuth.js";
4
- import { getShellWidth, type Layout, type StartupHeaderMode } from "./layout.js";
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 "../session/types.js";
4
- import { clampVisualText, getUsableShellWidth } from "./layout.js";
5
- import { useTheme } from "./theme.js";
6
- import { DashCard } from "./DashCard.js";
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 "../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";
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 "./theme.js";
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 "../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";
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 "./layout.js";
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 "./logoVariants.js";
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 "../session/types.js";
13
- import { getAssistantContent, getResponseSegmentText, getRunPlanText } from "../session/types.js";
14
- import { formatTerminalAnswerInline } from "./terminalAnswerFormat.js";
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 "./DashCard.js";
17
- import { useTheme } from "./theme.js";
18
- import { sanitizeTerminalOutput } from "../core/terminal/terminalSanitize.js";
19
- import { wrapPlainText, wrapCommandText } from "./textLayout.js";
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 "../core/workspace/workspaceActivity.js";
22
- import { RUN_OUTPUT_TRUNCATION_NOTICE } from "../session/chatLifecycle.js";
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 "./layout.js";
25
- import { MemoizedRenderMessage } from "./Markdown.js";
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 "./outputPipeline.js";
33
- import { normalizeCommand, getFriendlyActionLabel } from "./commandNormalize.js";
34
- import * as renderDebug from "../core/perf/renderDebug.js";
35
- import { normalizePlanReviewMarkdown } from "../core/workspace/planStorage.js";
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 "../session/types.js";
2
- import { sanitizeTerminalOutput } from "../core/terminal/terminalSanitize.js";
3
- import { wrapPlainText } from "./textLayout.js";
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
 
@@ -1,4 +1,4 @@
1
- import type { RunEvent } from "../session/types.js";
1
+ import type { RunEvent } from "../../session/types.js";
2
2
 
3
3
  const MAX_VISIBLE_ACTIVE_ACTIVITY = 6;
4
4
  const MAX_VISIBLE_SUMMARY_ACTIVITY = 4;
@@ -4,17 +4,17 @@ import type {
4
4
  RunProgressBlock,
5
5
  RunResponseSegment,
6
6
  RunToolActivity,
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 "./commandNormalize.js";
11
- import { formatTerminalAnswerInline } from "./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 "./Markdown.js";
16
- import { classifyOutput, formatForBox, normalizeOutput, sanitizeOutput, sanitizeStreamChunk } from "./outputPipeline.js";
17
- import { maybeRenderDiff, type DiffRenderLineType } from "./diffRenderer.js";
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 "./textLayout.js";
25
+ import { getTextUnits, getTextWidth, wrapPlainText, wrapCommandText, splitTextAtColumn } from "../render/textLayout.js";
26
26
  import type { RenderTimelineItem } from "./Timeline.js";
27
- import { normalizePlanReviewMarkdown } from "../core/workspace/planStorage.js";
28
- import { LOGO_COMPACT, LOGO_COMPACT_MIN_COLS, LOGO_LARGE_MIN_COLS, selectLogoVariant } from "./logoVariants.js";
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