@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,70 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
// Changes:
|
|
3
|
-
// - Tool import → minimal ToolLike interface
|
|
4
|
-
// - Removed tool object references (FileEditTool, BashTool, etc.) → name-based dispatch
|
|
5
|
-
// - Removed PRODUCT_NAME → "ARIA"
|
|
6
|
-
// - Removed useNotifyAfterTimeout (analytics/notification)
|
|
7
|
-
// - Removed AssistantMessage import → inline type
|
|
8
|
-
// - Removed CommandSubcommandPrefixResult → inline type
|
|
9
|
-
import { useInput } from "ink";
|
|
10
|
-
import * as React from "react";
|
|
11
|
-
import { isEscapeInput } from "../../utils/keys.js";
|
|
12
|
-
import { FileEditPermissionRequest } from "./FileEditPermissionRequest/FileEditPermissionRequest.js";
|
|
13
|
-
import { BashPermissionRequest } from "./BashPermissionRequest/BashPermissionRequest.js";
|
|
14
|
-
import { FallbackPermissionRequest } from "./FallbackPermissionRequest.js";
|
|
15
|
-
import { FileWritePermissionRequest } from "./FileWritePermissionRequest/FileWritePermissionRequest.js";
|
|
16
|
-
import { FilesystemPermissionRequest } from "./FilesystemPermissionRequest/FilesystemPermissionRequest.js";
|
|
17
|
-
// Name-based routing for tool-specific permission components
|
|
18
|
-
const FILE_EDIT_TOOLS = new Set(["Edit", "file_edit", "str_replace_editor"]);
|
|
19
|
-
const FILE_WRITE_TOOLS = new Set(["Write", "file_write", "create_file"]);
|
|
20
|
-
const BASH_TOOLS = new Set(["Bash", "bash", "execute_command"]);
|
|
21
|
-
const FILESYSTEM_TOOLS = new Set([
|
|
22
|
-
"Glob",
|
|
23
|
-
"glob",
|
|
24
|
-
"Grep",
|
|
25
|
-
"grep",
|
|
26
|
-
"LS",
|
|
27
|
-
"ls",
|
|
28
|
-
"Read",
|
|
29
|
-
"file_read",
|
|
30
|
-
"read_file",
|
|
31
|
-
"NotebookRead",
|
|
32
|
-
"notebook_read",
|
|
33
|
-
"NotebookEdit",
|
|
34
|
-
"notebook_edit",
|
|
35
|
-
]);
|
|
36
|
-
function permissionComponentForToolName(name) {
|
|
37
|
-
if (FILE_EDIT_TOOLS.has(name))
|
|
38
|
-
return FileEditPermissionRequest;
|
|
39
|
-
if (FILE_WRITE_TOOLS.has(name))
|
|
40
|
-
return FileWritePermissionRequest;
|
|
41
|
-
if (BASH_TOOLS.has(name))
|
|
42
|
-
return BashPermissionRequest;
|
|
43
|
-
if (FILESYSTEM_TOOLS.has(name))
|
|
44
|
-
return FilesystemPermissionRequest;
|
|
45
|
-
return FallbackPermissionRequest;
|
|
46
|
-
}
|
|
47
|
-
export function toolUseConfirmGetPrefix(toolUseConfirm) {
|
|
48
|
-
return ((toolUseConfirm.commandPrefix &&
|
|
49
|
-
!toolUseConfirm.commandPrefix.commandInjectionDetected &&
|
|
50
|
-
toolUseConfirm.commandPrefix.commandPrefix) ||
|
|
51
|
-
null);
|
|
52
|
-
}
|
|
53
|
-
export function PermissionRequest({ toolUseConfirm, onDone, verbose, }) {
|
|
54
|
-
const dismissedRef = React.useRef(false);
|
|
55
|
-
// Handle Ctrl+C and Escape — reject and close the modal.
|
|
56
|
-
// Guard with dismissedRef so rapid keypresses don't double-fire
|
|
57
|
-
// onReject/onDone before React unmounts the component.
|
|
58
|
-
useInput((input, key) => {
|
|
59
|
-
if (dismissedRef.current)
|
|
60
|
-
return;
|
|
61
|
-
if ((key.ctrl && input === "c") || isEscapeInput(input, key)) {
|
|
62
|
-
dismissedRef.current = true;
|
|
63
|
-
toolUseConfirm.onReject();
|
|
64
|
-
onDone();
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
const PermissionComponent = permissionComponentForToolName(toolUseConfirm.tool.name);
|
|
68
|
-
return _jsx(PermissionComponent, { toolUseConfirm: toolUseConfirm, onDone: onDone, verbose: verbose });
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=PermissionRequest.js.map
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from "ink";
|
|
3
|
-
import { getTheme } from "../../theme/index.js";
|
|
4
|
-
export function categoryForRiskScore(riskScore) {
|
|
5
|
-
return riskScore >= 70 ? "high" : riskScore >= 30 ? "moderate" : "low";
|
|
6
|
-
}
|
|
7
|
-
function colorSchemeForRiskScoreCategory(category) {
|
|
8
|
-
const theme = getTheme();
|
|
9
|
-
switch (category) {
|
|
10
|
-
case "low":
|
|
11
|
-
return {
|
|
12
|
-
highlightColor: theme.colors.success,
|
|
13
|
-
textColor: theme.colors.primary,
|
|
14
|
-
};
|
|
15
|
-
case "moderate":
|
|
16
|
-
return {
|
|
17
|
-
highlightColor: theme.colors.warning,
|
|
18
|
-
textColor: theme.colors.warning,
|
|
19
|
-
};
|
|
20
|
-
case "high":
|
|
21
|
-
return {
|
|
22
|
-
highlightColor: theme.colors.error,
|
|
23
|
-
textColor: theme.colors.error,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
export function textColorForRiskScore(riskScore) {
|
|
28
|
-
if (riskScore === null) {
|
|
29
|
-
return getTheme().colors.primary;
|
|
30
|
-
}
|
|
31
|
-
const category = categoryForRiskScore(riskScore);
|
|
32
|
-
return colorSchemeForRiskScoreCategory(category).textColor;
|
|
33
|
-
}
|
|
34
|
-
export function PermissionRiskScore({ riskScore }) {
|
|
35
|
-
const category = categoryForRiskScore(riskScore);
|
|
36
|
-
return _jsxs(Text, { color: textColorForRiskScore(riskScore), children: ["Risk: ", category] });
|
|
37
|
-
}
|
|
38
|
-
export function PermissionRequestTitle({ title, riskScore }) {
|
|
39
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: getTheme().colors.primary, children: title }), riskScore !== null && _jsx(PermissionRiskScore, { riskScore: riskScore })] }));
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=PermissionRequestTitle.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// Change: removed all analytics (usePermissionRequestLogging was Statsig + unary logging)
|
|
2
|
-
// This hook is now a no-op stub kept for structural compatibility.
|
|
3
|
-
/**
|
|
4
|
-
* Stub for usePermissionRequestLogging.
|
|
5
|
-
* Analytics removed.
|
|
6
|
-
*/
|
|
7
|
-
export function usePermissionRequestLogging(_toolUseConfirm, _unaryEvent) {
|
|
8
|
-
// no-op: analytics removed
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=hooks.js.map
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
// Changes:
|
|
2
|
-
// - Option type from @inkjs/ui → imported from CustomSelect
|
|
3
|
-
// - isUnsafeCompoundCommand → inline stub (always false)
|
|
4
|
-
// - getCwd → process.cwd()
|
|
5
|
-
// - getTheme → ARIA's theme
|
|
6
|
-
import chalk from "chalk";
|
|
7
|
-
import { toolUseConfirmGetPrefix } from "./PermissionRequest.js";
|
|
8
|
-
import { getTheme } from "../../theme/index.js";
|
|
9
|
-
/**
|
|
10
|
-
* Detects compound shell commands that chain multiple operations.
|
|
11
|
-
* Returns true if the command contains shell operators that could execute
|
|
12
|
-
* additional commands beyond what was explicitly approved.
|
|
13
|
-
*/
|
|
14
|
-
function isUnsafeCompoundCommand(command) {
|
|
15
|
-
// Strip content inside single-quoted strings (they don't expand)
|
|
16
|
-
const withoutSingleQuoted = command.replace(/'[^']*'/g, "");
|
|
17
|
-
// Strip content inside double-quoted strings (preserve operators outside quotes)
|
|
18
|
-
const withoutQuoted = withoutSingleQuoted.replace(/"[^"]*"/g, "");
|
|
19
|
-
// Check for shell compound operators: &&, ||, ;, |, backticks, $()
|
|
20
|
-
if (/&&|\|\||[;|]/.test(withoutQuoted))
|
|
21
|
-
return true;
|
|
22
|
-
if (/`/.test(withoutQuoted))
|
|
23
|
-
return true;
|
|
24
|
-
if (/\$\(/.test(withoutQuoted))
|
|
25
|
-
return true;
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Generates options for the tool use confirmation dialog
|
|
30
|
-
*/
|
|
31
|
-
export function toolUseOptions({ toolUseConfirm, command, }) {
|
|
32
|
-
// Hide "don't ask again" options if the command is an unsafe compound command, or a potential command injection
|
|
33
|
-
const showDontAskAgainOption = !isUnsafeCompoundCommand(command) &&
|
|
34
|
-
toolUseConfirm.commandPrefix &&
|
|
35
|
-
!toolUseConfirm.commandPrefix.commandInjectionDetected;
|
|
36
|
-
const prefix = toolUseConfirmGetPrefix(toolUseConfirm);
|
|
37
|
-
const showDontAskAgainPrefixOption = showDontAskAgainOption && prefix !== null;
|
|
38
|
-
let dontShowAgainOptions = [];
|
|
39
|
-
if (showDontAskAgainPrefixOption) {
|
|
40
|
-
// Prefix option takes precedence over full command option
|
|
41
|
-
dontShowAgainOptions = [
|
|
42
|
-
{
|
|
43
|
-
label: `Yes, and don't ask again for ${chalk.bold(prefix)} commands in ${chalk.bold(process.cwd())}`,
|
|
44
|
-
value: "yes-dont-ask-again-prefix",
|
|
45
|
-
},
|
|
46
|
-
];
|
|
47
|
-
}
|
|
48
|
-
else if (showDontAskAgainOption) {
|
|
49
|
-
dontShowAgainOptions = [
|
|
50
|
-
{
|
|
51
|
-
label: `Yes, and don't ask again for ${chalk.bold(command)} commands in ${chalk.bold(process.cwd())}`,
|
|
52
|
-
value: "yes-dont-ask-again-full",
|
|
53
|
-
},
|
|
54
|
-
];
|
|
55
|
-
}
|
|
56
|
-
return [
|
|
57
|
-
{
|
|
58
|
-
label: "Yes",
|
|
59
|
-
value: "yes",
|
|
60
|
-
},
|
|
61
|
-
...dontShowAgainOptions,
|
|
62
|
-
{
|
|
63
|
-
label: `No, and provide instructions (${chalk.bold.hex(getTheme().colors.warning)("esc")})`,
|
|
64
|
-
value: "no",
|
|
65
|
-
},
|
|
66
|
-
];
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=toolUseOptions.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// Change: removed logUnaryEvent and env imports (analytics removed)
|
|
2
|
-
// This module is now a no-op stub kept for structural compatibility.
|
|
3
|
-
/**
|
|
4
|
-
* Stub for logUnaryPermissionEvent.
|
|
5
|
-
* Analytics removed.
|
|
6
|
-
*/
|
|
7
|
-
export function logUnaryPermissionEvent(_completion_type, _toolUseConfirm, _event) {
|
|
8
|
-
// no-op: analytics removed
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
import stringWidth from "string-width";
|
|
2
|
-
export class Cursor {
|
|
3
|
-
measuredText;
|
|
4
|
-
selection;
|
|
5
|
-
offset;
|
|
6
|
-
constructor(measuredText, offset = 0, selection = 0) {
|
|
7
|
-
this.measuredText = measuredText;
|
|
8
|
-
this.selection = selection;
|
|
9
|
-
// it's ok for the cursor to be 1 char beyond the end of the string
|
|
10
|
-
this.offset = Math.max(0, Math.min(this.measuredText.text.length, offset));
|
|
11
|
-
}
|
|
12
|
-
static fromText(text, columns, offset = 0, selection = 0) {
|
|
13
|
-
// make MeasuredText on less than columns width, to account for cursor
|
|
14
|
-
return new Cursor(new MeasuredText(text, columns - 1), offset, selection);
|
|
15
|
-
}
|
|
16
|
-
render(cursorChar, mask, invert) {
|
|
17
|
-
const { line, column } = this.getPosition();
|
|
18
|
-
return this.measuredText
|
|
19
|
-
.getWrappedText()
|
|
20
|
-
.map((text, currentLine, allLines) => {
|
|
21
|
-
let displayText = text;
|
|
22
|
-
if (mask && currentLine === allLines.length - 1) {
|
|
23
|
-
const lastSixStart = Math.max(0, text.length - 6);
|
|
24
|
-
displayText = mask.repeat(lastSixStart) + text.slice(lastSixStart);
|
|
25
|
-
}
|
|
26
|
-
// looking for the line with the cursor
|
|
27
|
-
if (line != currentLine)
|
|
28
|
-
return displayText.trimEnd();
|
|
29
|
-
return (displayText.slice(0, column) +
|
|
30
|
-
invert(displayText[column] || cursorChar) +
|
|
31
|
-
displayText.trimEnd().slice(column + 1));
|
|
32
|
-
})
|
|
33
|
-
.join("\n");
|
|
34
|
-
}
|
|
35
|
-
left() {
|
|
36
|
-
return new Cursor(this.measuredText, this.offset - 1);
|
|
37
|
-
}
|
|
38
|
-
right() {
|
|
39
|
-
return new Cursor(this.measuredText, this.offset + 1);
|
|
40
|
-
}
|
|
41
|
-
up() {
|
|
42
|
-
const { line, column } = this.getPosition();
|
|
43
|
-
if (line == 0) {
|
|
44
|
-
return new Cursor(this.measuredText, 0, 0);
|
|
45
|
-
}
|
|
46
|
-
const newOffset = this.getOffset({ line: line - 1, column });
|
|
47
|
-
return new Cursor(this.measuredText, newOffset, 0);
|
|
48
|
-
}
|
|
49
|
-
down() {
|
|
50
|
-
const { line, column } = this.getPosition();
|
|
51
|
-
if (line >= this.measuredText.lineCount - 1) {
|
|
52
|
-
return new Cursor(this.measuredText, this.text.length, 0);
|
|
53
|
-
}
|
|
54
|
-
const newOffset = this.getOffset({ line: line + 1, column });
|
|
55
|
-
return new Cursor(this.measuredText, newOffset, 0);
|
|
56
|
-
}
|
|
57
|
-
startOfLine() {
|
|
58
|
-
const { line } = this.getPosition();
|
|
59
|
-
return new Cursor(this.measuredText, this.getOffset({
|
|
60
|
-
line,
|
|
61
|
-
column: 0,
|
|
62
|
-
}), 0);
|
|
63
|
-
}
|
|
64
|
-
endOfLine() {
|
|
65
|
-
const { line } = this.getPosition();
|
|
66
|
-
const column = this.measuredText.getLineLength(line);
|
|
67
|
-
const offset = this.getOffset({ line, column });
|
|
68
|
-
return new Cursor(this.measuredText, offset, 0);
|
|
69
|
-
}
|
|
70
|
-
nextWord() {
|
|
71
|
-
let nextCursor = this;
|
|
72
|
-
// If we're on a word, move to the next non-word
|
|
73
|
-
while (nextCursor.isOverWordChar() && !nextCursor.isAtEnd()) {
|
|
74
|
-
nextCursor = nextCursor.right();
|
|
75
|
-
}
|
|
76
|
-
// now move to the next word char
|
|
77
|
-
while (!nextCursor.isOverWordChar() && !nextCursor.isAtEnd()) {
|
|
78
|
-
nextCursor = nextCursor.right();
|
|
79
|
-
}
|
|
80
|
-
return nextCursor;
|
|
81
|
-
}
|
|
82
|
-
prevWord() {
|
|
83
|
-
let cursor = this;
|
|
84
|
-
// if we are already at the beginning of a word, step off it
|
|
85
|
-
if (!cursor.left().isOverWordChar()) {
|
|
86
|
-
cursor = cursor.left();
|
|
87
|
-
}
|
|
88
|
-
// Move left over any non-word characters
|
|
89
|
-
while (!cursor.isOverWordChar() && !cursor.isAtStart()) {
|
|
90
|
-
cursor = cursor.left();
|
|
91
|
-
}
|
|
92
|
-
// If we're over a word character, move to the start of this word
|
|
93
|
-
if (cursor.isOverWordChar()) {
|
|
94
|
-
while (cursor.left().isOverWordChar() && !cursor.isAtStart()) {
|
|
95
|
-
cursor = cursor.left();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return cursor;
|
|
99
|
-
}
|
|
100
|
-
modifyText(end, insertString = "") {
|
|
101
|
-
const startOffset = this.offset;
|
|
102
|
-
const endOffset = end.offset;
|
|
103
|
-
const newText = this.text.slice(0, startOffset) + insertString + this.text.slice(endOffset);
|
|
104
|
-
return Cursor.fromText(newText, this.columns, startOffset + insertString.length);
|
|
105
|
-
}
|
|
106
|
-
insert(insertString) {
|
|
107
|
-
const newCursor = this.modifyText(this, insertString);
|
|
108
|
-
return newCursor;
|
|
109
|
-
}
|
|
110
|
-
del() {
|
|
111
|
-
if (this.isAtEnd()) {
|
|
112
|
-
return this;
|
|
113
|
-
}
|
|
114
|
-
return this.modifyText(this.right());
|
|
115
|
-
}
|
|
116
|
-
backspace() {
|
|
117
|
-
if (this.isAtStart()) {
|
|
118
|
-
return this;
|
|
119
|
-
}
|
|
120
|
-
// Get the current position
|
|
121
|
-
const currentOffset = this.offset;
|
|
122
|
-
// Create a new cursor at the position before the current one
|
|
123
|
-
const leftCursor = this.left();
|
|
124
|
-
const leftOffset = leftCursor.offset;
|
|
125
|
-
// Create the new text by removing one character
|
|
126
|
-
const newText = this.text.slice(0, leftOffset) + this.text.slice(currentOffset);
|
|
127
|
-
// Return a new cursor with the updated text and position
|
|
128
|
-
return Cursor.fromText(newText, this.columns, leftOffset);
|
|
129
|
-
}
|
|
130
|
-
deleteToLineStart() {
|
|
131
|
-
return this.startOfLine().modifyText(this);
|
|
132
|
-
}
|
|
133
|
-
deleteToLineEnd() {
|
|
134
|
-
// If cursor is on a newline character, delete just that character
|
|
135
|
-
if (this.text[this.offset] === "\n") {
|
|
136
|
-
return this.modifyText(this.right());
|
|
137
|
-
}
|
|
138
|
-
return this.modifyText(this.endOfLine());
|
|
139
|
-
}
|
|
140
|
-
deleteWordBefore() {
|
|
141
|
-
if (this.isAtStart()) {
|
|
142
|
-
return this;
|
|
143
|
-
}
|
|
144
|
-
return this.prevWord().modifyText(this);
|
|
145
|
-
}
|
|
146
|
-
deleteWordAfter() {
|
|
147
|
-
if (this.isAtEnd()) {
|
|
148
|
-
return this;
|
|
149
|
-
}
|
|
150
|
-
return this.modifyText(this.nextWord());
|
|
151
|
-
}
|
|
152
|
-
isOverWordChar() {
|
|
153
|
-
const currentChar = this.text[this.offset] ?? "";
|
|
154
|
-
return /\w/.test(currentChar);
|
|
155
|
-
}
|
|
156
|
-
equals(other) {
|
|
157
|
-
return this.offset === other.offset && this.measuredText == other.measuredText;
|
|
158
|
-
}
|
|
159
|
-
isAtStart() {
|
|
160
|
-
return this.offset == 0;
|
|
161
|
-
}
|
|
162
|
-
isAtEnd() {
|
|
163
|
-
return this.offset == this.text.length;
|
|
164
|
-
}
|
|
165
|
-
get text() {
|
|
166
|
-
return this.measuredText.text;
|
|
167
|
-
}
|
|
168
|
-
get columns() {
|
|
169
|
-
return this.measuredText.columns + 1;
|
|
170
|
-
}
|
|
171
|
-
getPosition() {
|
|
172
|
-
return this.measuredText.getPositionFromOffset(this.offset);
|
|
173
|
-
}
|
|
174
|
-
getOffset(position) {
|
|
175
|
-
return this.measuredText.getOffsetFromPosition(position);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
class WrappedLine {
|
|
179
|
-
text;
|
|
180
|
-
startOffset;
|
|
181
|
-
isPrecededByNewline;
|
|
182
|
-
endsWithNewline;
|
|
183
|
-
constructor(text, startOffset, isPrecededByNewline, endsWithNewline = false) {
|
|
184
|
-
this.text = text;
|
|
185
|
-
this.startOffset = startOffset;
|
|
186
|
-
this.isPrecededByNewline = isPrecededByNewline;
|
|
187
|
-
this.endsWithNewline = endsWithNewline;
|
|
188
|
-
}
|
|
189
|
-
equals(other) {
|
|
190
|
-
return this.text === other.text && this.startOffset === other.startOffset;
|
|
191
|
-
}
|
|
192
|
-
get length() {
|
|
193
|
-
return this.text.length + (this.endsWithNewline ? 1 : 0);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
export class MeasuredText {
|
|
197
|
-
text;
|
|
198
|
-
columns;
|
|
199
|
-
wrappedLines;
|
|
200
|
-
constructor(text, columns) {
|
|
201
|
-
this.text = text;
|
|
202
|
-
this.columns = columns;
|
|
203
|
-
this.wrappedLines = this.measureWrappedText();
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Walk the text character-by-character using stringWidth for visual widths,
|
|
207
|
-
* computing line breaks directly. This replaces the old wrapAnsi+indexOf
|
|
208
|
-
* approach which crashed when wrapAnsi transformed text (tab expansion,
|
|
209
|
-
* ANSI re-sequencing, wide-char padding) making indexOf fail.
|
|
210
|
-
*/
|
|
211
|
-
measureWrappedText() {
|
|
212
|
-
if (this.text.length === 0) {
|
|
213
|
-
return [new WrappedLine("", 0, true, false)];
|
|
214
|
-
}
|
|
215
|
-
const lines = [];
|
|
216
|
-
let pos = 0;
|
|
217
|
-
while (pos < this.text.length) {
|
|
218
|
-
const lineStart = pos;
|
|
219
|
-
const isAfterNewline = pos === 0 || this.text[pos - 1] === "\n";
|
|
220
|
-
let width = 0;
|
|
221
|
-
let scan = pos;
|
|
222
|
-
let lastSpacePos = -1;
|
|
223
|
-
while (scan < this.text.length) {
|
|
224
|
-
const ch = this.text[scan];
|
|
225
|
-
if (ch === "\n") {
|
|
226
|
-
lines.push(new WrappedLine(this.text.slice(lineStart, scan), lineStart, isAfterNewline, true));
|
|
227
|
-
pos = scan + 1;
|
|
228
|
-
break;
|
|
229
|
-
}
|
|
230
|
-
const cp = this.text.codePointAt(scan);
|
|
231
|
-
const fullChar = String.fromCodePoint(cp);
|
|
232
|
-
const charWidth = stringWidth(fullChar);
|
|
233
|
-
if (width + charWidth > this.columns) {
|
|
234
|
-
let wrapPos;
|
|
235
|
-
if (lastSpacePos >= lineStart && lastSpacePos + 1 < scan) {
|
|
236
|
-
// Word wrap: break after the last space
|
|
237
|
-
wrapPos = lastSpacePos + 1;
|
|
238
|
-
}
|
|
239
|
-
else if (scan > lineStart) {
|
|
240
|
-
// Hard wrap: break before this character
|
|
241
|
-
wrapPos = scan;
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
// Single character wider than columns — force it on this line
|
|
245
|
-
wrapPos = scan + fullChar.length;
|
|
246
|
-
}
|
|
247
|
-
lines.push(new WrappedLine(this.text.slice(lineStart, wrapPos), lineStart, isAfterNewline, false));
|
|
248
|
-
pos = wrapPos;
|
|
249
|
-
break;
|
|
250
|
-
}
|
|
251
|
-
if (ch === " " || ch === "\t") {
|
|
252
|
-
lastSpacePos = scan;
|
|
253
|
-
}
|
|
254
|
-
width += charWidth;
|
|
255
|
-
scan += fullChar.length;
|
|
256
|
-
}
|
|
257
|
-
// Reached end of text without hitting \n or wrap
|
|
258
|
-
if (scan >= this.text.length && pos === lineStart) {
|
|
259
|
-
lines.push(new WrappedLine(this.text.slice(lineStart), lineStart, isAfterNewline, false));
|
|
260
|
-
pos = this.text.length;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
// Trailing newline produces an empty final line
|
|
264
|
-
if (this.text.length > 0 && this.text[this.text.length - 1] === "\n") {
|
|
265
|
-
lines.push(new WrappedLine("", this.text.length, true, false));
|
|
266
|
-
}
|
|
267
|
-
return lines;
|
|
268
|
-
}
|
|
269
|
-
getWrappedText() {
|
|
270
|
-
return this.wrappedLines.map((line) => line.isPrecededByNewline ? line.text : line.text.trimStart());
|
|
271
|
-
}
|
|
272
|
-
getLine(line) {
|
|
273
|
-
return this.wrappedLines[Math.max(0, Math.min(line, this.wrappedLines.length - 1))];
|
|
274
|
-
}
|
|
275
|
-
getOffsetFromPosition(position) {
|
|
276
|
-
const wrappedLine = this.getLine(position.line);
|
|
277
|
-
const startOffsetPlusColumn = wrappedLine.startOffset + position.column;
|
|
278
|
-
// Handle blank lines specially
|
|
279
|
-
if (wrappedLine.text.length === 0 && wrappedLine.endsWithNewline) {
|
|
280
|
-
return wrappedLine.startOffset;
|
|
281
|
-
}
|
|
282
|
-
// For normal lines
|
|
283
|
-
const lineEnd = wrappedLine.startOffset + wrappedLine.text.length;
|
|
284
|
-
// Add 1 only if this line ends with a newline
|
|
285
|
-
const maxOffset = wrappedLine.endsWithNewline ? lineEnd + 1 : lineEnd;
|
|
286
|
-
return Math.min(startOffsetPlusColumn, maxOffset);
|
|
287
|
-
}
|
|
288
|
-
getLineLength(line) {
|
|
289
|
-
const currentLine = this.getLine(line);
|
|
290
|
-
const nextLine = this.getLine(line + 1);
|
|
291
|
-
if (nextLine.equals(currentLine)) {
|
|
292
|
-
return this.text.length - currentLine.startOffset;
|
|
293
|
-
}
|
|
294
|
-
return nextLine.startOffset - currentLine.startOffset - 1;
|
|
295
|
-
}
|
|
296
|
-
getPositionFromOffset(offset) {
|
|
297
|
-
const lines = this.wrappedLines;
|
|
298
|
-
for (let line = 0; line < lines.length; line++) {
|
|
299
|
-
const currentLine = lines[line];
|
|
300
|
-
const nextLine = lines[line + 1];
|
|
301
|
-
if (offset >= currentLine.startOffset && (!nextLine || offset < nextLine.startOffset)) {
|
|
302
|
-
const leadingWhitepace = currentLine.isPrecededByNewline
|
|
303
|
-
? 0
|
|
304
|
-
: currentLine.text.length - currentLine.text.trimStart().length;
|
|
305
|
-
const column = Math.max(0, Math.min(offset - currentLine.startOffset - leadingWhitepace, currentLine.text.length));
|
|
306
|
-
return {
|
|
307
|
-
line,
|
|
308
|
-
column,
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
// If we're past the last character, return the end of the last line
|
|
313
|
-
const line = lines.length - 1;
|
|
314
|
-
return {
|
|
315
|
-
line,
|
|
316
|
-
column: this.wrappedLines[line].text.length,
|
|
317
|
-
};
|
|
318
|
-
}
|
|
319
|
-
get lineCount() {
|
|
320
|
-
return this.wrappedLines.length;
|
|
321
|
-
}
|
|
322
|
-
equals(other) {
|
|
323
|
-
return this.text === other.text && this.columns === other.columns;
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
//# sourceMappingURL=Cursor.js.map
|