@aria-cli/cli 1.0.57 → 1.0.58
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/bin/aria.mjs +2 -2
- package/package.json +17 -76
- package/dist/.tsbuildinfo +0 -1
- package/dist/attached-local-control-client.js +0 -826
- package/dist/bootstrap-local-control-client.js +0 -2
- package/dist/capability-aware-method-proxy.js +0 -42
- package/dist/cli-context.js +0 -160
- package/dist/commands/arions.js +0 -174
- package/dist/commands/auth.js +0 -123
- package/dist/commands/daemon.js +0 -367
- package/dist/commands/definitions.js +0 -176
- package/dist/commands/index.js +0 -80
- package/dist/commands/login-handler.js +0 -1108
- package/dist/commands/logout-handler.js +0 -92
- package/dist/commands/memory-handlers.js +0 -89
- package/dist/commands/pairing.js +0 -60
- package/dist/commands/runtime-cutover-reset-command.js +0 -12
- package/dist/commands/runtime-cutover-reset.js +0 -265
- package/dist/commands/terminal-setup.js +0 -84
- package/dist/config/aria-config.js +0 -238
- package/dist/config/index.js +0 -3
- package/dist/config/loader.js +0 -97
- package/dist/config.js +0 -142
- package/dist/daemon-info.js +0 -10
- package/dist/ensure-daemon.js +0 -128
- package/dist/entrypoints/command-mode.js +0 -5
- package/dist/entrypoints/daemon.js +0 -50
- package/dist/entrypoints/headless-stdio.js +0 -25
- package/dist/entrypoints/interactive.js +0 -80
- package/dist/event-loop-watchdog.js +0 -73
- package/dist/headless/auth-orchestrator.js +0 -508
- package/dist/headless/auth-service.js +0 -43
- package/dist/headless/bootstrap-fast-path.js +0 -112
- package/dist/headless/call-command.js +0 -143
- package/dist/headless/daemon-service.js +0 -318
- package/dist/headless/hook-actions.js +0 -235
- package/dist/headless/hook-service.js +0 -42
- package/dist/headless/kernel-services.js +0 -216
- package/dist/headless/kernel.js +0 -785
- package/dist/headless/operations/arion.js +0 -119
- package/dist/headless/operations/auth.js +0 -45
- package/dist/headless/operations/client.js +0 -31
- package/dist/headless/operations/config.js +0 -69
- package/dist/headless/operations/daemon.js +0 -47
- package/dist/headless/operations/hook.js +0 -56
- package/dist/headless/operations/index.js +0 -11
- package/dist/headless/operations/memory.js +0 -102
- package/dist/headless/operations/message.js +0 -279
- package/dist/headless/operations/model.js +0 -100
- package/dist/headless/operations/peer.js +0 -56
- package/dist/headless/operations/run.js +0 -24
- package/dist/headless/operations/session.js +0 -90
- package/dist/headless/operations/system.js +0 -19
- package/dist/headless/operations/utils.js +0 -35
- package/dist/headless/run-orchestrator.js +0 -703
- package/dist/headless/stdio-server.js +0 -439
- package/dist/history/SessionHistory.js +0 -8
- package/dist/history/SessionHistoryClient.js +0 -186
- package/dist/history/conversation-message.js +0 -112
- package/dist/history/index.js +0 -8
- package/dist/history/jsonl-replay.js +0 -154
- package/dist/history/repair-tool-pairing.js +0 -84
- package/dist/history/stall-phase-bridge.js +0 -11
- package/dist/history/turn-accumulator.js +0 -427
- package/dist/index.js +0 -7
- package/dist/ink-repl.js +0 -4183
- package/dist/local-control-bootstrap.js +0 -26
- package/dist/local-control-client.js +0 -2
- package/dist/local-control-error-reporting.js +0 -34
- package/dist/local-control-http-client.js +0 -362
- package/dist/local-control-lazy-wrapper.js +0 -363
- package/dist/local-control-manager.js +0 -146
- package/dist/main.js +0 -62
- package/dist/network-security.js +0 -62
- package/dist/networking-server.js +0 -38
- package/dist/peer-identity.js +0 -23
- package/dist/polling-subscription.js +0 -34
- package/dist/relaunch.js +0 -617
- package/dist/release-notes.js +0 -35
- package/dist/repl-cleanup.js +0 -47
- package/dist/runtime/configure-bun-sqlite.js +0 -3
- package/dist/runtime/crash-handlers.js +0 -111
- package/dist/runtime/interactive-invocation.js +0 -39
- package/dist/runtime/internal-mode.js +0 -14
- package/dist/runtime/launch-spec.js +0 -64
- package/dist/runtime/owner-lease.js +0 -44
- package/dist/runtime/public-mode.js +0 -20
- package/dist/runtime/run-internal-mode.js +0 -18
- package/dist/runtime/runtime-kind.js +0 -32
- package/dist/runtime/spawn-aria.js +0 -38
- package/dist/selectable-client.js +0 -2
- package/dist/selectable-peer.js +0 -2
- package/dist/session.js +0 -203
- package/dist/slash-commands.js +0 -80
- package/dist/sounds.js +0 -210
- package/dist/ui/App.js +0 -526
- package/dist/ui/components/AnthropicMethodPicker.js +0 -6
- package/dist/ui/components/ArionPrompt.js +0 -15
- package/dist/ui/components/AutocompleteDropdown.js +0 -23
- package/dist/ui/components/AutonomySelector.js +0 -55
- package/dist/ui/components/Banner.js +0 -98
- package/dist/ui/components/ConversationHistory.js +0 -175
- package/dist/ui/components/CopilotDeviceLoginFlow.js +0 -88
- package/dist/ui/components/CopilotSourcePicker.js +0 -50
- package/dist/ui/components/Cost.js +0 -10
- package/dist/ui/components/CustomSelect/option-map.js +0 -30
- package/dist/ui/components/CustomSelect/select-option.js +0 -13
- package/dist/ui/components/CustomSelect/select.js +0 -42
- package/dist/ui/components/CustomSelect/use-select-state.js +0 -179
- package/dist/ui/components/CustomSelect/use-select.js +0 -15
- package/dist/ui/components/ErrorDisplay.js +0 -35
- package/dist/ui/components/FallbackToolUseRejectedMessage.js +0 -7
- package/dist/ui/components/FileEditToolUpdatedMessage.js +0 -57
- package/dist/ui/components/HandoffMarker.js +0 -18
- package/dist/ui/components/HighlightedCode.js +0 -21
- package/dist/ui/components/InputArea.js +0 -187
- package/dist/ui/components/Message.js +0 -25
- package/dist/ui/components/OAuthLoginFlow.js +0 -113
- package/dist/ui/components/OutputTruncation.js +0 -35
- package/dist/ui/components/PermissionPrompt.js +0 -79
- package/dist/ui/components/PipelineTimingPanel.js +0 -15
- package/dist/ui/components/ProviderMethodPicker.js +0 -61
- package/dist/ui/components/ProviderPicker.js +0 -63
- package/dist/ui/components/RenderItemView.js +0 -71
- package/dist/ui/components/Spinner.js +0 -46
- package/dist/ui/components/StatusBar.js +0 -95
- package/dist/ui/components/StreamingIndicator.js +0 -55
- package/dist/ui/components/StructuredDiff.js +0 -168
- package/dist/ui/components/TextInputOverlay.js +0 -43
- package/dist/ui/components/ThinkingBlock.js +0 -82
- package/dist/ui/components/ToolCost.js +0 -17
- package/dist/ui/components/ToolExecution.js +0 -61
- package/dist/ui/components/ToolHeader.js +0 -51
- package/dist/ui/components/ToolRenderLayoutContext.js +0 -14
- package/dist/ui/components/ToolResultWrapper.js +0 -6
- package/dist/ui/components/ToolUseLoader.js +0 -35
- package/dist/ui/components/TraceWaterfall.js +0 -91
- package/dist/ui/components/index.js +0 -33
- package/dist/ui/components/messages/AssistantTextMessage.js +0 -25
- package/dist/ui/components/messages/UserImageMessage.js +0 -12
- package/dist/ui/components/messages/UserTextMessage.js +0 -12
- package/dist/ui/components/overlays/ArionSelector.js +0 -68
- package/dist/ui/components/overlays/ClientSelector.js +0 -62
- package/dist/ui/components/overlays/CommandPalette.js +0 -67
- package/dist/ui/components/overlays/DaemonControl.js +0 -87
- package/dist/ui/components/overlays/InviteShareOverlay.js +0 -15
- package/dist/ui/components/overlays/JoinInviteOverlay.js +0 -32
- package/dist/ui/components/overlays/MemoryBrowser.js +0 -100
- package/dist/ui/components/overlays/MessageSelector.js +0 -123
- package/dist/ui/components/overlays/ModelSelector.js +0 -211
- package/dist/ui/components/overlays/PairRequestOverlay.js +0 -42
- package/dist/ui/components/overlays/PeerSelector.js +0 -84
- package/dist/ui/components/overlays/SessionSelector.js +0 -102
- package/dist/ui/components/overlays/SoundSelector.js +0 -86
- package/dist/ui/components/overlays/ThemeSelector.js +0 -139
- package/dist/ui/components/overlays/index.js +0 -15
- package/dist/ui/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -53
- package/dist/ui/components/permissions/FallbackPermissionRequest.js +0 -56
- package/dist/ui/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -76
- package/dist/ui/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +0 -18
- package/dist/ui/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -64
- package/dist/ui/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -26
- package/dist/ui/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -141
- package/dist/ui/components/permissions/PermissionRequest.js +0 -70
- package/dist/ui/components/permissions/PermissionRequestTitle.js +0 -41
- package/dist/ui/components/permissions/hooks.js +0 -10
- package/dist/ui/components/permissions/toolUseOptions.js +0 -68
- package/dist/ui/components/permissions/utils.js +0 -10
- package/dist/ui/components/text-input/Cursor.js +0 -326
- package/dist/ui/components/text-input/TextInput.js +0 -231
- package/dist/ui/components/text-input/imagePaste.js +0 -28
- package/dist/ui/components/text-input/index.js +0 -6
- package/dist/ui/components/text-input/useDoublePress.js +0 -30
- package/dist/ui/components/text-input/useTextInput.js +0 -245
- package/dist/ui/components/tool-types.js +0 -9
- package/dist/ui/constants/figures.js +0 -4
- package/dist/ui/constants/index.js +0 -3
- package/dist/ui/display-mode.js +0 -93
- package/dist/ui/display-policy.js +0 -19
- package/dist/ui/hooks/index.js +0 -6
- package/dist/ui/hooks/useCommandAutocomplete.js +0 -93
- package/dist/ui/hooks/useDoublePress.js +0 -37
- package/dist/ui/hooks/useIndicatorState.js +0 -55
- package/dist/ui/hooks/useInterval.js +0 -23
- package/dist/ui/hooks/useKeyboardShortcuts.js +0 -127
- package/dist/ui/hooks/useTerminalSize.js +0 -55
- package/dist/ui/hooks/useUnifiedMessages.js +0 -117
- package/dist/ui/indicator-state.js +0 -44
- package/dist/ui/markdown/highlight.js +0 -44
- package/dist/ui/markdown/index.js +0 -1460
- package/dist/ui/markdown/tokenizer.js +0 -24
- package/dist/ui/render-item.js +0 -5
- package/dist/ui/screens/REPL.js +0 -119
- package/dist/ui/screens/approval-lifecycle.js +0 -38
- package/dist/ui/status-line.js +0 -72
- package/dist/ui/theme/index.js +0 -51
- package/dist/ui/theme/themes/claude-dark-daltonized.js +0 -51
- package/dist/ui/theme/themes/claude-dark.js +0 -50
- package/dist/ui/theme/themes/claude-light-daltonized.js +0 -51
- package/dist/ui/theme/themes/claude-light.js +0 -50
- package/dist/ui/theme/themes/dark-accessible.js +0 -18
- package/dist/ui/theme/themes/dark.js +0 -49
- package/dist/ui/theme/themes/light-accessible.js +0 -18
- package/dist/ui/theme/themes/light.js +0 -49
- package/dist/ui/theme/types.js +0 -3
- package/dist/ui/theme.js +0 -142
- package/dist/ui/to-render-items.js +0 -145
- package/dist/ui/tools/AgentTool/index.js +0 -30
- package/dist/ui/tools/ArchitectTool/index.js +0 -31
- package/dist/ui/tools/AskUserTool/index.js +0 -46
- package/dist/ui/tools/BashTool/BashToolResultMessage.js +0 -11
- package/dist/ui/tools/BashTool/OutputLine.js +0 -21
- package/dist/ui/tools/BashTool/index.js +0 -91
- package/dist/ui/tools/BrowseTool/index.js +0 -43
- package/dist/ui/tools/BrowserTool/index.js +0 -47
- package/dist/ui/tools/CbmTool/index.js +0 -188
- package/dist/ui/tools/CheckDelegationTool/index.js +0 -46
- package/dist/ui/tools/CheckMessagesTool/index.js +0 -85
- package/dist/ui/tools/CreateQuipTool/index.js +0 -30
- package/dist/ui/tools/CreateSkillTool/index.js +0 -22
- package/dist/ui/tools/CreateToolTool/index.js +0 -31
- package/dist/ui/tools/DelegateRemoteTool/index.js +0 -42
- package/dist/ui/tools/DeployTool/index.js +0 -47
- package/dist/ui/tools/FffTool/index.js +0 -103
- package/dist/ui/tools/FileEditTool/index.js +0 -67
- package/dist/ui/tools/FileReadTool/index.js +0 -68
- package/dist/ui/tools/FileWriteTool/index.js +0 -61
- package/dist/ui/tools/ForkTool/index.js +0 -47
- package/dist/ui/tools/FrgTool/index.js +0 -96
- package/dist/ui/tools/GetThreadTool/index.js +0 -39
- package/dist/ui/tools/GlobTool/index.js +0 -50
- package/dist/ui/tools/GrepTool/index.js +0 -84
- package/dist/ui/tools/HatchArionTool/index.js +0 -36
- package/dist/ui/tools/LearnSkillTool/index.js +0 -22
- package/dist/ui/tools/LearnTool/index.js +0 -43
- package/dist/ui/tools/LearnToolTool/index.js +0 -22
- package/dist/ui/tools/ListClientsTool/index.js +0 -39
- package/dist/ui/tools/LspTool/index.js +0 -261
- package/dist/ui/tools/MCPTool/index.js +0 -33
- package/dist/ui/tools/ManageNetworkTool/index.js +0 -53
- package/dist/ui/tools/MemoryReadTool/index.js +0 -64
- package/dist/ui/tools/MemoryWriteTool/index.js +0 -20
- package/dist/ui/tools/NotebookEditTool/index.js +0 -33
- package/dist/ui/tools/NotebookReadTool/index.js +0 -25
- package/dist/ui/tools/OutlookReadTool/index.js +0 -66
- package/dist/ui/tools/OutlookReplyTool/index.js +0 -49
- package/dist/ui/tools/OutlookSendTool/index.js +0 -49
- package/dist/ui/tools/PauseDelegationTool/index.js +0 -35
- package/dist/ui/tools/ProbeTool/index.js +0 -121
- package/dist/ui/tools/ProcessTool/index.js +0 -66
- package/dist/ui/tools/QuestListTool/index.js +0 -46
- package/dist/ui/tools/QuestReportTool/index.js +0 -49
- package/dist/ui/tools/QuestUpdateTool/index.js +0 -87
- package/dist/ui/tools/QuipCommentTool/index.js +0 -69
- package/dist/ui/tools/QuipReadTool/index.js +0 -71
- package/dist/ui/tools/RestArionTool/index.js +0 -32
- package/dist/ui/tools/RestartTool/index.js +0 -35
- package/dist/ui/tools/ResumeDelegationTool/index.js +0 -35
- package/dist/ui/tools/RetireArionTool/index.js +0 -32
- package/dist/ui/tools/RgTool/index.js +0 -73
- package/dist/ui/tools/SearchKnowledgeTool/index.js +0 -43
- package/dist/ui/tools/SearchMessagesTool/index.js +0 -43
- package/dist/ui/tools/SelfDiagnoseTool/index.js +0 -61
- package/dist/ui/tools/SendMessageTool/index.js +0 -45
- package/dist/ui/tools/SerenaTool/index.js +0 -124
- package/dist/ui/tools/SessionHistoryTool/index.js +0 -52
- package/dist/ui/tools/SgTool/index.js +0 -80
- package/dist/ui/tools/SlackReactTool/index.js +0 -41
- package/dist/ui/tools/SlackReadTool/index.js +0 -48
- package/dist/ui/tools/SlackSendTool/index.js +0 -45
- package/dist/ui/tools/SpawnWorkerTool/index.js +0 -33
- package/dist/ui/tools/StickerRequestTool/index.js +0 -19
- package/dist/ui/tools/ThinkTool/index.js +0 -17
- package/dist/ui/tools/UgTool/index.js +0 -108
- package/dist/ui/tools/UseSkillTool/index.js +0 -22
- package/dist/ui/tools/WakeArionTool/index.js +0 -32
- package/dist/ui/tools/WebFetchTool/index.js +0 -56
- package/dist/ui/tools/WebSearchTool/index.js +0 -44
- package/dist/ui/tools/lsTool/index.js +0 -58
- package/dist/ui/tools/registry.js +0 -197
- package/dist/ui/tools/tool-renderer.js +0 -11
- package/dist/ui/tools/truncation.js +0 -35
- package/dist/ui/types/anthropic.js +0 -4
- package/dist/ui/types/index.js +0 -2
- package/dist/ui/types/message.js +0 -3
- package/dist/ui/types/tool.js +0 -4
- package/dist/ui/utils/array.js +0 -4
- package/dist/ui/utils/cursor.js +0 -131
- package/dist/ui/utils/diff.js +0 -120
- package/dist/ui/utils/format.js +0 -42
- package/dist/ui/utils/fuzzy.js +0 -59
- package/dist/ui/utils/index.js +0 -11
- package/dist/ui/utils/keys.js +0 -8
- package/dist/ui/utils/patch.js +0 -17
- package/dist/ui/utils/risk.js +0 -114
- package/dist/ui/utils/terminal-image.js +0 -70
- package/dist/ui/utils/validation.js +0 -48
- package/dist/ui/verb-pairs.js +0 -248
- package/dist/ui.js +0 -131
- package/src/entrypoints/command-mode.ts +0 -5
- package/src/entrypoints/daemon.ts +0 -54
- package/src/entrypoints/headless-stdio.ts +0 -27
- package/src/entrypoints/interactive.ts +0 -112
- package/src/main.ts +0 -72
- package/src/runtime/configure-bun-sqlite.ts +0 -3
- package/src/runtime/crash-handlers.ts +0 -128
- package/src/runtime/interactive-invocation.test.ts +0 -42
- package/src/runtime/interactive-invocation.ts +0 -51
- package/src/runtime/internal-mode.test.ts +0 -19
- package/src/runtime/internal-mode.ts +0 -24
- package/src/runtime/launch-spec.test.ts +0 -26
- package/src/runtime/launch-spec.ts +0 -84
- package/src/runtime/owner-lease.ts +0 -52
- package/src/runtime/public-mode.test.ts +0 -18
- package/src/runtime/public-mode.ts +0 -19
- package/src/runtime/run-internal-mode.ts +0 -19
- package/src/runtime/runtime-kind.test.ts +0 -23
- package/src/runtime/runtime-kind.ts +0 -41
- package/src/runtime/spawn-aria.ts +0 -62
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// packages/cli/src/ui/components/Banner.tsx
|
|
3
|
-
import { useState, useEffect, useRef, useCallback } from "react";
|
|
4
|
-
import { Box, Text, useInput, useStdout } from "ink";
|
|
5
|
-
import gradient from "gradient-string";
|
|
6
|
-
import { getTheme } from "../theme/index.js";
|
|
7
|
-
const BUTTERFLY = ` · ·
|
|
8
|
-
· ·
|
|
9
|
-
( 🦋 )
|
|
10
|
-
· ·
|
|
11
|
-
· ·`;
|
|
12
|
-
const ARIA_LOGO = ` █████╗ ██████╗ ██╗ █████╗
|
|
13
|
-
██╔══██╗██╔══██╗██║██╔══██╗
|
|
14
|
-
███████║██████╔╝██║███████║
|
|
15
|
-
██╔══██║██╔══██╗██║██╔══██║
|
|
16
|
-
██║ ██║██║ ██║██║██║ ██║
|
|
17
|
-
╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝`;
|
|
18
|
-
const TAGLINE_TOP = "─────────────────";
|
|
19
|
-
const TAGLINE_TEXT = "A R I A";
|
|
20
|
-
const TAGLINE_BOTTOM = "─────────────────";
|
|
21
|
-
const SUBTITLE = "✦ Adaptive Reasoning Intelligence Agent ✦";
|
|
22
|
-
export function Banner({ onComplete, skipAnimation = false, version = "dev", whatsNew = [], }) {
|
|
23
|
-
const theme = getTheme();
|
|
24
|
-
const { stdout } = useStdout();
|
|
25
|
-
const terminalWidth = stdout?.columns || 80;
|
|
26
|
-
const [stage, setStage] = useState(skipAnimation ? "complete" : "butterfly");
|
|
27
|
-
const [logoVisible, setLogoVisible] = useState(skipAnimation);
|
|
28
|
-
const [showTagline, setShowTagline] = useState(skipAnimation);
|
|
29
|
-
const [useGradient, setUseGradient] = useState(skipAnimation);
|
|
30
|
-
const completedRef = useRef(false);
|
|
31
|
-
const timersRef = useRef([]);
|
|
32
|
-
// Guard to ensure onComplete fires exactly once
|
|
33
|
-
const completeOnce = useCallback(() => {
|
|
34
|
-
if (!completedRef.current) {
|
|
35
|
-
completedRef.current = true;
|
|
36
|
-
onComplete();
|
|
37
|
-
}
|
|
38
|
-
}, [onComplete]);
|
|
39
|
-
// Skip animation on any keypress
|
|
40
|
-
useInput(() => {
|
|
41
|
-
if (stage !== "complete") {
|
|
42
|
-
// Clear all pending animation timers
|
|
43
|
-
timersRef.current.forEach(clearTimeout);
|
|
44
|
-
timersRef.current = [];
|
|
45
|
-
setStage("complete");
|
|
46
|
-
setLogoVisible(true);
|
|
47
|
-
setShowTagline(true);
|
|
48
|
-
setUseGradient(true);
|
|
49
|
-
completeOnce();
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
useEffect(() => {
|
|
53
|
-
if (skipAnimation) {
|
|
54
|
-
completeOnce();
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const timers = [];
|
|
58
|
-
// Stage 1: Butterfly appears (0-400ms)
|
|
59
|
-
timers.push(setTimeout(() => {
|
|
60
|
-
setStage("logo");
|
|
61
|
-
setLogoVisible(true);
|
|
62
|
-
}, 400));
|
|
63
|
-
// Stage 2: Gradient cascade (800ms)
|
|
64
|
-
timers.push(setTimeout(() => {
|
|
65
|
-
setStage("gradient");
|
|
66
|
-
setUseGradient(true);
|
|
67
|
-
}, 800));
|
|
68
|
-
// Stage 3: Tagline fade (1200ms)
|
|
69
|
-
timers.push(setTimeout(() => {
|
|
70
|
-
setStage("tagline");
|
|
71
|
-
setShowTagline(true);
|
|
72
|
-
}, 1200));
|
|
73
|
-
// Complete (1600ms)
|
|
74
|
-
timers.push(setTimeout(() => {
|
|
75
|
-
setStage("complete");
|
|
76
|
-
completeOnce();
|
|
77
|
-
}, 1600));
|
|
78
|
-
timersRef.current = timers;
|
|
79
|
-
return () => {
|
|
80
|
-
timers.forEach(clearTimeout);
|
|
81
|
-
};
|
|
82
|
-
}, [skipAnimation, completeOnce]);
|
|
83
|
-
const ariaGradient = gradient([
|
|
84
|
-
theme.banner.gradient.start,
|
|
85
|
-
theme.banner.gradient.middle,
|
|
86
|
-
theme.banner.gradient.end,
|
|
87
|
-
]);
|
|
88
|
-
const renderLogo = () => {
|
|
89
|
-
if (!logoVisible)
|
|
90
|
-
return null;
|
|
91
|
-
if (useGradient) {
|
|
92
|
-
return ariaGradient(ARIA_LOGO);
|
|
93
|
-
}
|
|
94
|
-
return ARIA_LOGO;
|
|
95
|
-
};
|
|
96
|
-
return (_jsxs(Box, { flexDirection: "column", alignItems: "center", width: terminalWidth, paddingY: 1, children: [_jsx(Text, { color: theme.colors.primary, children: BUTTERFLY }), logoVisible && _jsx(Text, { children: renderLogo() }), showTagline && (_jsxs(Box, { flexDirection: "column", alignItems: "center", children: [_jsx(Text, { dimColor: true, children: TAGLINE_TOP }), _jsx(Text, { bold: true, children: TAGLINE_TEXT }), _jsx(Text, { dimColor: true, children: TAGLINE_BOTTOM }), _jsx(Text, { color: theme.colors.primary, children: SUBTITLE })] })), showTagline && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["v", version] }) })), showTagline && whatsNew.length > 0 && (_jsxs(Box, { flexDirection: "column", alignItems: "center", marginTop: 1, children: [_jsx(Text, { bold: true, color: theme.colors.secondary, children: "What's New" }), whatsNew.map((item, i) => (_jsxs(Text, { dimColor: true, children: ["\u2022 ", item] }, i)))] }))] }));
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=Banner.js.map
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Static, Box } from "ink";
|
|
3
|
-
import { RenderItemView } from "./RenderItemView.js";
|
|
4
|
-
import { applyDisplayPolicy } from "../display-policy.js";
|
|
5
|
-
import { parseImageDataUri, splitTextByInlineImages } from "../utils/terminal-image.js";
|
|
6
|
-
// ---------------------------------------------------------------------------
|
|
7
|
-
// historyToRenderItems — converts HistoryMessage[] directly to RenderItem[]
|
|
8
|
-
// No intermediate DisplayMessage. Tool use + result already combined.
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
10
|
-
function historyToRenderItems(messages) {
|
|
11
|
-
const items = [];
|
|
12
|
-
for (const msg of messages) {
|
|
13
|
-
switch (msg.role) {
|
|
14
|
-
case "tool_history": {
|
|
15
|
-
const tool = msg.tool;
|
|
16
|
-
items.push({
|
|
17
|
-
kind: "tool-execution",
|
|
18
|
-
id: `${msg.id}-tool`,
|
|
19
|
-
toolName: tool.name,
|
|
20
|
-
input: tool.args ?? {},
|
|
21
|
-
output: tool.resultData ?? tool.result ?? "",
|
|
22
|
-
status: tool.status === "error" ? "error" : "complete",
|
|
23
|
-
error: tool.status === "error" ? tool.error : undefined,
|
|
24
|
-
durationMs: tool.durationMs,
|
|
25
|
-
usage: tool.usage
|
|
26
|
-
? {
|
|
27
|
-
inputTokens: tool.usage.inputTokens ?? 0,
|
|
28
|
-
outputTokens: tool.usage.outputTokens ?? 0,
|
|
29
|
-
}
|
|
30
|
-
: undefined,
|
|
31
|
-
committed: true,
|
|
32
|
-
});
|
|
33
|
-
break;
|
|
34
|
-
}
|
|
35
|
-
case "thinking_history":
|
|
36
|
-
items.push({
|
|
37
|
-
kind: "thinking",
|
|
38
|
-
id: msg.id,
|
|
39
|
-
content: msg.content,
|
|
40
|
-
durationSec: msg.durationSeconds,
|
|
41
|
-
arion: msg.arionName || msg.arionEmoji || msg.arionColor
|
|
42
|
-
? {
|
|
43
|
-
name: msg.arionName ?? "ARIA",
|
|
44
|
-
emoji: msg.arionEmoji ?? "🦋",
|
|
45
|
-
color: msg.arionColor ?? "cyan",
|
|
46
|
-
}
|
|
47
|
-
: undefined,
|
|
48
|
-
committed: true,
|
|
49
|
-
});
|
|
50
|
-
break;
|
|
51
|
-
case "handoff_history":
|
|
52
|
-
items.push({
|
|
53
|
-
kind: "handoff",
|
|
54
|
-
id: msg.id,
|
|
55
|
-
target: msg.target,
|
|
56
|
-
direction: msg.direction === "from" ? "incoming" : "outgoing",
|
|
57
|
-
committed: true,
|
|
58
|
-
});
|
|
59
|
-
break;
|
|
60
|
-
case "error":
|
|
61
|
-
items.push({
|
|
62
|
-
kind: "error",
|
|
63
|
-
id: msg.id,
|
|
64
|
-
message: msg.content,
|
|
65
|
-
suggestion: msg.suggestion,
|
|
66
|
-
committed: true,
|
|
67
|
-
});
|
|
68
|
-
break;
|
|
69
|
-
default: {
|
|
70
|
-
const textMsg = msg;
|
|
71
|
-
if (textMsg.role === "assistant") {
|
|
72
|
-
items.push({
|
|
73
|
-
kind: "assistant-text",
|
|
74
|
-
id: textMsg.id,
|
|
75
|
-
text: textMsg.content,
|
|
76
|
-
arion: textMsg.arion
|
|
77
|
-
? {
|
|
78
|
-
name: textMsg.arion.name,
|
|
79
|
-
emoji: textMsg.arion.emoji,
|
|
80
|
-
color: textMsg.arion.color ?? "cyan",
|
|
81
|
-
}
|
|
82
|
-
: undefined,
|
|
83
|
-
committed: true,
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
else if (textMsg.role === "user") {
|
|
87
|
-
const segments = splitTextByInlineImages(textMsg.content);
|
|
88
|
-
for (const segment of segments) {
|
|
89
|
-
if (segment.type === "image" && parseImageDataUri(segment.dataUri)) {
|
|
90
|
-
items.push({
|
|
91
|
-
kind: "user-image",
|
|
92
|
-
id: `${textMsg.id}-image-${items.length}`,
|
|
93
|
-
dataUri: segment.dataUri,
|
|
94
|
-
userName: textMsg.userName ?? "User",
|
|
95
|
-
committed: true,
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
else if (segment.type === "text" && segment.text.length > 0) {
|
|
99
|
-
items.push({
|
|
100
|
-
kind: "user-message",
|
|
101
|
-
id: `${textMsg.id}-text-${items.length}`,
|
|
102
|
-
text: segment.text,
|
|
103
|
-
userName: textMsg.userName ?? "User",
|
|
104
|
-
committed: true,
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
items.push({
|
|
111
|
-
kind: "user-message",
|
|
112
|
-
id: textMsg.id,
|
|
113
|
-
text: textMsg.content,
|
|
114
|
-
userName: "System",
|
|
115
|
-
committed: true,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return items;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Static conversation history using the new rendering pipeline.
|
|
126
|
-
* Converts HistoryMessage[] → RenderItem[] → RenderItemView.
|
|
127
|
-
* No normalize/reorder — tool use + result already combined.
|
|
128
|
-
*/
|
|
129
|
-
export function ConversationHistory({ messages, header, displayConfig, }) {
|
|
130
|
-
const displayMode = displayConfig?.toolOutput === "expanded"
|
|
131
|
-
? "debug"
|
|
132
|
-
: displayConfig?.toolOutput === "hidden"
|
|
133
|
-
? "minimal"
|
|
134
|
-
: "standard";
|
|
135
|
-
const renderItems = applyDisplayPolicy(historyToRenderItems(messages), displayMode);
|
|
136
|
-
const showPrefixMap = new Map();
|
|
137
|
-
let lastSenderKey = "";
|
|
138
|
-
for (const item of renderItems) {
|
|
139
|
-
const key = item.kind === "user-message" || item.kind === "user-image"
|
|
140
|
-
? `user:${item.userName}`
|
|
141
|
-
: item.kind === "assistant-text"
|
|
142
|
-
? `assistant:${item.arion?.name ?? "ARIA"}`
|
|
143
|
-
: item.kind === "thinking"
|
|
144
|
-
? `assistant:${item.arion?.name ?? "ARIA"}`
|
|
145
|
-
: item.kind;
|
|
146
|
-
const showable = item.kind === "user-message" ||
|
|
147
|
-
item.kind === "user-image" ||
|
|
148
|
-
item.kind === "assistant-text" ||
|
|
149
|
-
item.kind === "thinking";
|
|
150
|
-
showPrefixMap.set(item.id, showable && key !== lastSenderKey);
|
|
151
|
-
if (showable)
|
|
152
|
-
lastSenderKey = key;
|
|
153
|
-
}
|
|
154
|
-
const items = [];
|
|
155
|
-
if (header) {
|
|
156
|
-
items.push({ type: "header", id: "header", content: header });
|
|
157
|
-
}
|
|
158
|
-
for (const ri of renderItems) {
|
|
159
|
-
items.push({
|
|
160
|
-
type: "renderItem",
|
|
161
|
-
id: ri.id,
|
|
162
|
-
renderItem: ri,
|
|
163
|
-
showPrefix: showPrefixMap.get(ri.id) ?? false,
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
if (items.length === 0)
|
|
167
|
-
return null;
|
|
168
|
-
return (_jsx(Static, { items: items, children: (item) => {
|
|
169
|
-
if (item.type === "header") {
|
|
170
|
-
return (_jsx(Box, { width: "100%", justifyContent: "center", children: item.content }, item.id));
|
|
171
|
-
}
|
|
172
|
-
return (_jsx(Box, { flexDirection: "column", marginBottom: 1, children: _jsx(RenderItemView, { item: item.renderItem, displayMode: displayMode, showPrefix: item.showPrefix }) }, item.id));
|
|
173
|
-
} }));
|
|
174
|
-
}
|
|
175
|
-
//# sourceMappingURL=ConversationHistory.js.map
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useRef, useState } from "react";
|
|
3
|
-
import { Box, Text, useInput } from "ink";
|
|
4
|
-
import { loginWithGitHubCopilotDeviceFlow } from "@aria-cli/auth";
|
|
5
|
-
import { getTheme } from "../theme/index.js";
|
|
6
|
-
import { isEscapeInput } from "../utils/keys.js";
|
|
7
|
-
import { SimpleSpinner } from "./Spinner.js";
|
|
8
|
-
export function CopilotDeviceLoginFlow({ provider, profileLabel, onCancel, isActive = true, onComplete, verificationUri, userCode, onApprove, }) {
|
|
9
|
-
const theme = getTheme();
|
|
10
|
-
const [step, setStep] = useState("starting");
|
|
11
|
-
const [errorMessage, setErrorMessage] = useState("");
|
|
12
|
-
const [deviceCode, setDeviceCode] = useState(null);
|
|
13
|
-
const startedRef = useRef(false);
|
|
14
|
-
const completedRef = useRef(false);
|
|
15
|
-
const abortRef = useRef(null);
|
|
16
|
-
const isRawModeSupported = process.stdin.isTTY ?? false;
|
|
17
|
-
useInput((input, key) => {
|
|
18
|
-
if (!isEscapeInput(input, key))
|
|
19
|
-
return;
|
|
20
|
-
abortRef.current?.abort();
|
|
21
|
-
onCancel();
|
|
22
|
-
}, { isActive: isActive && isRawModeSupported });
|
|
23
|
-
useInput((input, key) => {
|
|
24
|
-
if (!(key.return || input === "\r"))
|
|
25
|
-
return;
|
|
26
|
-
if (!verificationUri || !userCode || !onApprove)
|
|
27
|
-
return;
|
|
28
|
-
setStep("starting");
|
|
29
|
-
void Promise.resolve(onApprove()).catch((err) => {
|
|
30
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
31
|
-
setErrorMessage(msg);
|
|
32
|
-
setStep("error");
|
|
33
|
-
});
|
|
34
|
-
}, { isActive: isActive && isRawModeSupported });
|
|
35
|
-
useEffect(() => {
|
|
36
|
-
if (startedRef.current)
|
|
37
|
-
return;
|
|
38
|
-
startedRef.current = true;
|
|
39
|
-
if (verificationUri && userCode && onApprove) {
|
|
40
|
-
setDeviceCode({
|
|
41
|
-
verificationUri,
|
|
42
|
-
userCode,
|
|
43
|
-
expiresAt: Date.now() + 5 * 60_000,
|
|
44
|
-
intervalMs: 5_000,
|
|
45
|
-
});
|
|
46
|
-
setStep("waiting");
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const abortController = new AbortController();
|
|
50
|
-
abortRef.current = abortController;
|
|
51
|
-
setStep("starting");
|
|
52
|
-
loginWithGitHubCopilotDeviceFlow({
|
|
53
|
-
profileLabel,
|
|
54
|
-
signal: abortController.signal,
|
|
55
|
-
onDeviceCode: (code) => {
|
|
56
|
-
setDeviceCode(code);
|
|
57
|
-
setStep("waiting");
|
|
58
|
-
},
|
|
59
|
-
}).then((result) => {
|
|
60
|
-
if (completedRef.current || abortController.signal.aborted)
|
|
61
|
-
return;
|
|
62
|
-
if (result.success) {
|
|
63
|
-
setStep("success");
|
|
64
|
-
completedRef.current = true;
|
|
65
|
-
setTimeout(() => {
|
|
66
|
-
onComplete?.({ success: true, message: result.message });
|
|
67
|
-
}, 1000);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
setErrorMessage(result.message);
|
|
71
|
-
setStep("error");
|
|
72
|
-
}
|
|
73
|
-
}, (err) => {
|
|
74
|
-
if (completedRef.current || abortController.signal.aborted)
|
|
75
|
-
return;
|
|
76
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
77
|
-
setErrorMessage(msg);
|
|
78
|
-
setStep("error");
|
|
79
|
-
});
|
|
80
|
-
return () => {
|
|
81
|
-
abortController.abort();
|
|
82
|
-
};
|
|
83
|
-
}, [onApprove, onComplete, profileLabel, userCode, verificationUri]);
|
|
84
|
-
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: theme.colors.secondary, paddingX: 1, paddingY: 1, width: 64, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { bold: true, children: ["Sign in to ", provider] }) }), profileLabel && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: theme.colors.textMuted, children: ["Profile: github-copilot:", profileLabel] }) })), step === "starting" && (_jsxs(Box, { gap: 1, children: [_jsx(SimpleSpinner, {}), _jsx(Text, { children: "Requesting GitHub device code..." })] })), step === "waiting" && deviceCode && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { children: "Authorize this device in your browser:" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: theme.colors.primary, children: deviceCode.verificationUri }) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: ["Code: ", _jsx(Text, { bold: true, children: deviceCode.userCode })] }) }), _jsxs(Box, { marginTop: 1, gap: 1, children: [_jsx(SimpleSpinner, {}), _jsx(Text, { children: verificationUri && userCode && onApprove
|
|
85
|
-
? "Press Enter after approving in GitHub, or Esc to cancel."
|
|
86
|
-
: "Waiting for GitHub authorization..." })] })] })), step === "success" && (_jsxs(Text, { color: theme.colors.success, children: ["\u2713", " Logged in to ", provider] })), step === "error" && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: theme.colors.error, children: ["\u2717", " ", errorMessage] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: theme.colors.textMuted, children: "Press Esc to dismiss" }) })] })), step !== "success" && step !== "error" && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: theme.colors.textMuted, children: "Esc Cancel" }) }))] }));
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=CopilotDeviceLoginFlow.js.map
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useRef, useState } from "react";
|
|
3
|
-
import { Box, Text, useInput } from "ink";
|
|
4
|
-
import { getTheme } from "../theme/index.js";
|
|
5
|
-
import { isEscapeInput } from "../utils/keys.js";
|
|
6
|
-
function StatusIndicator({ status }) {
|
|
7
|
-
const theme = getTheme();
|
|
8
|
-
if (status === "connected") {
|
|
9
|
-
return _jsxs(Text, { color: theme.colors.success, children: ["\u2713", " available"] });
|
|
10
|
-
}
|
|
11
|
-
return _jsxs(Text, { color: theme.colors.textMuted, children: ["\u00b7", " requires login"] });
|
|
12
|
-
}
|
|
13
|
-
export function CopilotSourcePicker({ options, onSelect, onCancel, isActive = true, }) {
|
|
14
|
-
const theme = getTheme();
|
|
15
|
-
const [selected, setSelectedState] = useState(0);
|
|
16
|
-
const selectedRef = useRef(0);
|
|
17
|
-
const submittedRef = useRef(false);
|
|
18
|
-
const isRawModeSupported = process.stdin.isTTY ?? false;
|
|
19
|
-
const setSelected = (update) => {
|
|
20
|
-
setSelectedState((current) => {
|
|
21
|
-
const next = update(current);
|
|
22
|
-
selectedRef.current = next;
|
|
23
|
-
return next;
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
useInput((input, key) => {
|
|
27
|
-
if (submittedRef.current)
|
|
28
|
-
return;
|
|
29
|
-
if (key.upArrow) {
|
|
30
|
-
setSelected((s) => Math.max(0, s - 1));
|
|
31
|
-
}
|
|
32
|
-
else if (key.downArrow) {
|
|
33
|
-
setSelected((s) => Math.min(options.length - 1, s + 1));
|
|
34
|
-
}
|
|
35
|
-
else if (key.return) {
|
|
36
|
-
submittedRef.current = true;
|
|
37
|
-
onSelect(options[selectedRef.current]);
|
|
38
|
-
}
|
|
39
|
-
else if (isEscapeInput(input, key)) {
|
|
40
|
-
submittedRef.current = true;
|
|
41
|
-
onCancel();
|
|
42
|
-
}
|
|
43
|
-
}, { isActive: isActive && isRawModeSupported });
|
|
44
|
-
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: theme.colors.secondary, paddingX: 1, paddingY: 1, width: 72, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Select GitHub Copilot login source:" }) }), options.map((option, index) => {
|
|
45
|
-
const isHovered = index === selected;
|
|
46
|
-
const pointer = isHovered ? "\u25b8" : " ";
|
|
47
|
-
return (_jsxs(Box, { gap: 1, children: [_jsx(Text, { color: isHovered ? theme.colors.primary : undefined, children: pointer }), _jsx(Text, { color: isHovered ? theme.colors.primary : undefined, bold: isHovered, children: option.label.padEnd(44) }), _jsx(StatusIndicator, { status: option.status })] }, option.id));
|
|
48
|
-
}), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: theme.colors.textMuted, children: ["\u2191\u2193", " Navigate Enter Select Esc Cancel"] }) })] }));
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=CopilotSourcePicker.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
export function Cost({ costUSD, durationMs, debug }) {
|
|
4
|
-
if (!debug) {
|
|
5
|
-
return null;
|
|
6
|
-
}
|
|
7
|
-
const durationInSeconds = (durationMs / 1000).toFixed(1);
|
|
8
|
-
return (_jsx(Box, { flexDirection: "column", minWidth: 23, width: 23, children: _jsxs(Text, { dimColor: true, children: ["Cost: $", costUSD.toFixed(4), " (", durationInSeconds, "s)"] }) }));
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=Cost.js.map
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
// Change: Option type from @inkjs/ui → inline definition
|
|
2
|
-
import { optionHeaderKey } from "./select.js";
|
|
3
|
-
export default class OptionMap extends Map {
|
|
4
|
-
first;
|
|
5
|
-
constructor(options) {
|
|
6
|
-
const items = [];
|
|
7
|
-
let firstItem;
|
|
8
|
-
let previous;
|
|
9
|
-
let index = 0;
|
|
10
|
-
for (const option of options) {
|
|
11
|
-
const item = {
|
|
12
|
-
...option,
|
|
13
|
-
previous,
|
|
14
|
-
next: undefined,
|
|
15
|
-
index,
|
|
16
|
-
};
|
|
17
|
-
if (previous) {
|
|
18
|
-
previous.next = item;
|
|
19
|
-
}
|
|
20
|
-
firstItem ||= item;
|
|
21
|
-
const key = "value" in option ? option.value : optionHeaderKey(option);
|
|
22
|
-
items.push([key, item]);
|
|
23
|
-
index++;
|
|
24
|
-
previous = item;
|
|
25
|
-
}
|
|
26
|
-
super(items);
|
|
27
|
-
this.first = firstItem;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=option-map.js.map
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// Change: replaced @inkjs/ui useComponentTheme with inline styles using ARIA's theme
|
|
3
|
-
import { Box, Text } from "ink";
|
|
4
|
-
import { getTheme } from "../../theme/index.js";
|
|
5
|
-
// Inline Unicode figures (avoids `figures` package dependency)
|
|
6
|
-
const POINTER = "\u276F"; // ❯
|
|
7
|
-
const TRIANGLE_DOWN_SMALL = "\u25BE"; // ▾
|
|
8
|
-
const TICK = "\u2714"; // ✔
|
|
9
|
-
export function SelectOption({ isFocused, isSelected, smallPointer, children, }) {
|
|
10
|
-
const theme = getTheme();
|
|
11
|
-
return (_jsxs(Box, { gap: 1, children: [isFocused && (_jsx(Text, { color: theme.colors.primary, children: smallPointer ? TRIANGLE_DOWN_SMALL : POINTER })), _jsx(Text, { color: isFocused ? theme.colors.primary : undefined, bold: isSelected, children: children }), isSelected && _jsx(Text, { color: theme.colors.success, children: TICK })] }));
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=select-option.js.map
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// Change: replaced @inkjs/ui useComponentTheme with inline styles using ARIA's theme
|
|
3
|
-
// Change: Option type from @inkjs/ui → imported from ./option-map.js
|
|
4
|
-
import { Box, Text } from "ink";
|
|
5
|
-
import { SelectOption } from "./select-option.js";
|
|
6
|
-
import { useSelectState } from "./use-select-state.js";
|
|
7
|
-
import { useSelect } from "./use-select.js";
|
|
8
|
-
import { getTheme } from "../../theme/index.js";
|
|
9
|
-
export const optionHeaderKey = (optionHeader) => `HEADER-${optionHeader.optionValues.join(",")}`;
|
|
10
|
-
export function Select({ isDisabled = false, visibleOptionCount = 5, highlightText, options, defaultValue, onChange, onFocus, focusValue, }) {
|
|
11
|
-
const state = useSelectState({
|
|
12
|
-
visibleOptionCount,
|
|
13
|
-
options,
|
|
14
|
-
defaultValue,
|
|
15
|
-
onChange,
|
|
16
|
-
onFocus,
|
|
17
|
-
focusValue,
|
|
18
|
-
});
|
|
19
|
-
useSelect({ isDisabled, state });
|
|
20
|
-
const theme = getTheme();
|
|
21
|
-
return (_jsx(Box, { flexDirection: "column", children: state.visibleOptions.map((option) => {
|
|
22
|
-
const key = "value" in option ? option.value : optionHeaderKey(option);
|
|
23
|
-
const isFocused = !isDisabled &&
|
|
24
|
-
state.focusedValue !== undefined &&
|
|
25
|
-
("value" in option
|
|
26
|
-
? state.focusedValue === option.value
|
|
27
|
-
: option.optionValues.includes(state.focusedValue));
|
|
28
|
-
const isSelected = !!state.value &&
|
|
29
|
-
("value" in option
|
|
30
|
-
? state.value === option.value
|
|
31
|
-
: option.optionValues.includes(state.value));
|
|
32
|
-
const smallPointer = "header" in option;
|
|
33
|
-
const labelText = "label" in option ? option.label : option.header;
|
|
34
|
-
let label = labelText;
|
|
35
|
-
if (highlightText && labelText.includes(highlightText)) {
|
|
36
|
-
const index = labelText.indexOf(highlightText);
|
|
37
|
-
label = (_jsxs(_Fragment, { children: [labelText.slice(0, index), _jsx(Text, { color: theme.colors.primary, bold: true, children: highlightText }), labelText.slice(index + highlightText.length)] }));
|
|
38
|
-
}
|
|
39
|
-
return (_jsx(SelectOption, { isFocused: isFocused, isSelected: isSelected, smallPointer: smallPointer, children: label }, key));
|
|
40
|
-
}) }));
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=select.js.map
|