@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
package/dist/ui/utils/risk.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
// packages/cli/src/ui/utils/risk.ts
|
|
2
|
-
export function assessToolRisk(toolName, args) {
|
|
3
|
-
const reasons = [];
|
|
4
|
-
let score = 30; // Base score (moderate)
|
|
5
|
-
// Tool-specific risk assessment
|
|
6
|
-
switch (toolName.toLowerCase()) {
|
|
7
|
-
case "fileread":
|
|
8
|
-
case "glob":
|
|
9
|
-
case "grep":
|
|
10
|
-
case "ls":
|
|
11
|
-
case "read":
|
|
12
|
-
score = 10; // Low risk - read-only
|
|
13
|
-
break;
|
|
14
|
-
case "fileedit":
|
|
15
|
-
case "edit":
|
|
16
|
-
score = 40; // Moderate - modifies existing files
|
|
17
|
-
reasons.push("Modifies existing file");
|
|
18
|
-
break;
|
|
19
|
-
case "filewrite":
|
|
20
|
-
case "write":
|
|
21
|
-
score = 50; // Moderate-high - creates/overwrites files
|
|
22
|
-
reasons.push("Creates or overwrites file");
|
|
23
|
-
break;
|
|
24
|
-
case "bash":
|
|
25
|
-
score = assessBashRisk(typeof args.command === "string" ? args.command : undefined, reasons);
|
|
26
|
-
break;
|
|
27
|
-
default:
|
|
28
|
-
score = 50; // Unknown tools default to moderate-high
|
|
29
|
-
reasons.push("Unknown tool type");
|
|
30
|
-
}
|
|
31
|
-
// Determine level from score
|
|
32
|
-
let level;
|
|
33
|
-
if (score < 30) {
|
|
34
|
-
level = "low";
|
|
35
|
-
}
|
|
36
|
-
else if (score < 70) {
|
|
37
|
-
level = "moderate";
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
level = "high";
|
|
41
|
-
}
|
|
42
|
-
return { level, score, reasons };
|
|
43
|
-
}
|
|
44
|
-
function assessBashRisk(command, reasons) {
|
|
45
|
-
if (!command)
|
|
46
|
-
return 50;
|
|
47
|
-
const cmd = command.toLowerCase();
|
|
48
|
-
let score = 40;
|
|
49
|
-
// High-risk patterns
|
|
50
|
-
const highRiskPatterns = [
|
|
51
|
-
{ pattern: /\brm\s+-(rf|fr|r\b)|\brm\s+--recursive/, reason: "Recursive delete command" },
|
|
52
|
-
{ pattern: /\bsudo\b/, reason: "Elevated privileges" },
|
|
53
|
-
{ pattern: /\bchmod\b.*777/, reason: "Insecure permissions" },
|
|
54
|
-
{ pattern: /\|\s*(bash|sh|zsh)\b/, reason: "Piped to shell execution" },
|
|
55
|
-
{ pattern: /\b(curl|wget)\b.*\|\s*(bash|sh)/, reason: "Remote script execution" },
|
|
56
|
-
{ pattern: /\bdd\b/, reason: "Low-level disk operation" },
|
|
57
|
-
{ pattern: /\bmkfs\b/, reason: "Filesystem creation" },
|
|
58
|
-
{ pattern: />\s*\/dev\//, reason: "Device file write" },
|
|
59
|
-
{ pattern: /\bchmod\s+000/, reason: "Removes all file permissions" },
|
|
60
|
-
{ pattern: /(?:^|[;&|])\s*>/, reason: "File truncation via redirect" },
|
|
61
|
-
{
|
|
62
|
-
pattern: /\b(curl|wget)\b.*-o.*&&\s*(bash|sh|chmod)/,
|
|
63
|
-
reason: "Download and execute pattern",
|
|
64
|
-
},
|
|
65
|
-
];
|
|
66
|
-
for (const { pattern, reason } of highRiskPatterns) {
|
|
67
|
-
if (pattern.test(cmd)) {
|
|
68
|
-
score = Math.max(score, 80);
|
|
69
|
-
reasons.push(reason);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// Moderate-risk patterns
|
|
73
|
-
const moderateRiskPatterns = [
|
|
74
|
-
{ pattern: /\brm\b/, reason: "Delete command" },
|
|
75
|
-
{ pattern: /\bmv\b/, reason: "Move/rename command" },
|
|
76
|
-
{ pattern: /\bcp\b.*-r/, reason: "Recursive copy" },
|
|
77
|
-
{ pattern: /\bnpm\s+(install|i)\b/, reason: "Package installation" },
|
|
78
|
-
{ pattern: /\bgit\s+(push|reset|rebase)/, reason: "Git write operation" },
|
|
79
|
-
{ pattern: /\btruncate\b/, reason: "File truncation command" },
|
|
80
|
-
{ pattern: /\bkill\s+-9\b|\bpkill\b/, reason: "Force kill process" },
|
|
81
|
-
];
|
|
82
|
-
for (const { pattern, reason } of moderateRiskPatterns) {
|
|
83
|
-
if (pattern.test(cmd) && score < 60) {
|
|
84
|
-
score = Math.max(score, 50);
|
|
85
|
-
reasons.push(reason);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
// Low-risk patterns
|
|
89
|
-
const lowRiskPatterns = [
|
|
90
|
-
/\bls\b/,
|
|
91
|
-
/\bcat\b/,
|
|
92
|
-
/\bgrep\b/,
|
|
93
|
-
/\bfind\b/,
|
|
94
|
-
/\becho\b/,
|
|
95
|
-
/\bpwd\b/,
|
|
96
|
-
/\bwhoami\b/,
|
|
97
|
-
/\bgit\s+(status|log|diff|branch)\b/,
|
|
98
|
-
];
|
|
99
|
-
if (lowRiskPatterns.some((p) => p.test(cmd)) && reasons.length === 0) {
|
|
100
|
-
score = 20;
|
|
101
|
-
}
|
|
102
|
-
return score;
|
|
103
|
-
}
|
|
104
|
-
export function getRiskColor(level, theme) {
|
|
105
|
-
switch (level) {
|
|
106
|
-
case "low":
|
|
107
|
-
return theme.colors.success;
|
|
108
|
-
case "moderate":
|
|
109
|
-
return theme.colors.warning;
|
|
110
|
-
case "high":
|
|
111
|
-
return theme.colors.error;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=risk.js.map
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
const IMAGE_DATA_URI_RE = /data:image\/[a-zA-Z0-9.+-]+;base64,[a-zA-Z0-9+/=\n\r]+/g;
|
|
3
|
-
export function isITerm2Terminal() {
|
|
4
|
-
return (process.env.TERM_PROGRAM ?? "").toLowerCase() === "iterm.app";
|
|
5
|
-
}
|
|
6
|
-
export function supportsInlineImages() {
|
|
7
|
-
return isITerm2Terminal() && Boolean(process.stdout?.isTTY);
|
|
8
|
-
}
|
|
9
|
-
export function parseImageDataUri(text) {
|
|
10
|
-
const trimmed = text.trim();
|
|
11
|
-
const match = trimmed.match(/^data:(image\/[a-zA-Z0-9.+-]+);base64,([a-zA-Z0-9+/=\n\r]+)$/);
|
|
12
|
-
if (!match)
|
|
13
|
-
return null;
|
|
14
|
-
const [, mimeType, base64Payload] = match;
|
|
15
|
-
if (!mimeType || !base64Payload)
|
|
16
|
-
return null;
|
|
17
|
-
try {
|
|
18
|
-
const cleanPayload = base64Payload.replace(/\s+/g, "");
|
|
19
|
-
const buffer = Buffer.from(cleanPayload, "base64");
|
|
20
|
-
if (buffer.length === 0)
|
|
21
|
-
return null;
|
|
22
|
-
return { buffer, mimeType };
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
export function terminalInlineImageFromDataUri(text) {
|
|
29
|
-
const parsed = parseImageDataUri(text);
|
|
30
|
-
if (!parsed)
|
|
31
|
-
return null;
|
|
32
|
-
return terminalInlineImage(parsed.buffer, parsed.mimeType);
|
|
33
|
-
}
|
|
34
|
-
export function terminalInlineImage(buffer, mimeType = "image/png") {
|
|
35
|
-
if (!supportsInlineImages())
|
|
36
|
-
return null;
|
|
37
|
-
const payload = buffer.toString("base64");
|
|
38
|
-
// iTerm2 proprietary escape sequence (OSC 1337)
|
|
39
|
-
// (BEL) terminator is widely supported in iTerm2.
|
|
40
|
-
return `\u001b]1337;File=inline=1;preserveAspectRatio=1;size=${buffer.length};type=${mimeType}:${payload}\u0007`;
|
|
41
|
-
}
|
|
42
|
-
export function terminalInlineImageFromPath(path, mimeType = "image/png") {
|
|
43
|
-
try {
|
|
44
|
-
const buffer = readFileSync(path);
|
|
45
|
-
return terminalInlineImage(buffer, mimeType);
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
export function splitTextByInlineImages(text) {
|
|
52
|
-
const segments = [];
|
|
53
|
-
let lastIndex = 0;
|
|
54
|
-
for (const match of text.matchAll(IMAGE_DATA_URI_RE)) {
|
|
55
|
-
const index = match.index ?? 0;
|
|
56
|
-
const matched = match[0] ?? "";
|
|
57
|
-
if (!matched)
|
|
58
|
-
continue;
|
|
59
|
-
if (index > lastIndex) {
|
|
60
|
-
segments.push({ type: "text", text: text.slice(lastIndex, index) });
|
|
61
|
-
}
|
|
62
|
-
segments.push({ type: "image", dataUri: matched });
|
|
63
|
-
lastIndex = index + matched.length;
|
|
64
|
-
}
|
|
65
|
-
if (lastIndex < text.length) {
|
|
66
|
-
segments.push({ type: "text", text: text.slice(lastIndex) });
|
|
67
|
-
}
|
|
68
|
-
return segments.length > 0 ? segments : [{ type: "text", text }];
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=terminal-image.js.map
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// packages/cli/src/ui/utils/validation.ts
|
|
2
|
-
export function success() {
|
|
3
|
-
return { valid: true };
|
|
4
|
-
}
|
|
5
|
-
export function failure(message, suggestion) {
|
|
6
|
-
return { valid: false, message, suggestion };
|
|
7
|
-
}
|
|
8
|
-
export function findSimilar(input, candidates, threshold = 0.6) {
|
|
9
|
-
const inputLower = input.toLowerCase();
|
|
10
|
-
// Exact prefix match first
|
|
11
|
-
const prefixMatch = candidates.find((c) => c.toLowerCase().startsWith(inputLower));
|
|
12
|
-
if (prefixMatch)
|
|
13
|
-
return prefixMatch;
|
|
14
|
-
// Levenshtein distance for typos
|
|
15
|
-
let bestMatch;
|
|
16
|
-
let bestScore = 0;
|
|
17
|
-
for (const candidate of candidates) {
|
|
18
|
-
const score = similarity(inputLower, candidate.toLowerCase());
|
|
19
|
-
if (score > threshold && score > bestScore) {
|
|
20
|
-
bestScore = score;
|
|
21
|
-
bestMatch = candidate;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return bestMatch;
|
|
25
|
-
}
|
|
26
|
-
function similarity(a, b) {
|
|
27
|
-
if (a === b)
|
|
28
|
-
return 1;
|
|
29
|
-
if (a.length === 0 || b.length === 0)
|
|
30
|
-
return 0;
|
|
31
|
-
const matrix = [];
|
|
32
|
-
for (let i = 0; i <= a.length; i++) {
|
|
33
|
-
matrix[i] = [i];
|
|
34
|
-
}
|
|
35
|
-
for (let j = 0; j <= b.length; j++) {
|
|
36
|
-
matrix[0][j] = j;
|
|
37
|
-
}
|
|
38
|
-
for (let i = 1; i <= a.length; i++) {
|
|
39
|
-
for (let j = 1; j <= b.length; j++) {
|
|
40
|
-
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
41
|
-
matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const distance = matrix[a.length][b.length];
|
|
45
|
-
const maxLen = Math.max(a.length, b.length);
|
|
46
|
-
return 1 - distance / maxLen;
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=validation.js.map
|
package/dist/ui/verb-pairs.js
DELETED
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
// Shared verb pairs for thinking indicator and thinking block.
|
|
2
|
-
// Present tense shown in StreamingIndicator, past tense in ThinkingBlock.
|
|
3
|
-
export const VERB_PAIRS = [
|
|
4
|
-
// ── General ──────────────────────────────────────────────────────────
|
|
5
|
-
{ present: "Accomplishing", past: "Accomplished" },
|
|
6
|
-
{ present: "Actioning", past: "Actioned" },
|
|
7
|
-
{ present: "Actualizing", past: "Actualized" },
|
|
8
|
-
{ present: "Absquatulating", past: "Absquatulated" }, // archaic: departing abruptly
|
|
9
|
-
{ present: "Brewing", past: "Brewed" },
|
|
10
|
-
{ present: "Calculating", past: "Calculated" },
|
|
11
|
-
{ present: "Cerebrating", past: "Cerebrated" },
|
|
12
|
-
{ present: "Churning", past: "Churned" },
|
|
13
|
-
{ present: "Coalescing", past: "Coalesced" },
|
|
14
|
-
{ present: "Cogitating", past: "Cogitated" },
|
|
15
|
-
{ present: "Conjuring", past: "Conjured" },
|
|
16
|
-
{ present: "Considering", past: "Considered" },
|
|
17
|
-
{ present: "Contemplating", past: "Contemplated" },
|
|
18
|
-
{ present: "Cooking", past: "Cooked" },
|
|
19
|
-
{ present: "Crafting", past: "Crafted" },
|
|
20
|
-
{ present: "Crunching", past: "Crunched" },
|
|
21
|
-
{ present: "Deliberating", past: "Deliberated" },
|
|
22
|
-
{ present: "Determining", past: "Determined" },
|
|
23
|
-
{ present: "Dillydallying", past: "Dillydallied" },
|
|
24
|
-
{ present: "Discombobulating", past: "Discombobulated" },
|
|
25
|
-
{ present: "Doing", past: "Done" },
|
|
26
|
-
{ present: "Effecting", past: "Effected" },
|
|
27
|
-
{ present: "Fizzwizzling", past: "Fizzwizzled" }, // Roald Dahl energy
|
|
28
|
-
{ present: "Forging", past: "Forged" },
|
|
29
|
-
{ present: "Frobnicating", past: "Frobnicated" }, // hacker jargon: twiddle purposelessly
|
|
30
|
-
{ present: "Gallivanting", past: "Gallivanted" },
|
|
31
|
-
{ present: "Generating", past: "Generated" },
|
|
32
|
-
{ present: "Hatching", past: "Hatched" },
|
|
33
|
-
{ present: "Herding", past: "Herded" },
|
|
34
|
-
{ present: "Honking", past: "Honked" },
|
|
35
|
-
{ present: "Ideating", past: "Ideated" },
|
|
36
|
-
{ present: "Inferring", past: "Inferred" },
|
|
37
|
-
{ present: "Lollygagging", past: "Lollygagged" },
|
|
38
|
-
{ present: "Manifesting", past: "Manifested" },
|
|
39
|
-
{ present: "Marinating", past: "Marinated" },
|
|
40
|
-
{ present: "Moseying", past: "Moseyed" },
|
|
41
|
-
{ present: "Mulling", past: "Mulled" },
|
|
42
|
-
{ present: "Mustering", past: "Mustered" },
|
|
43
|
-
{ present: "Musing", past: "Mused" },
|
|
44
|
-
{ present: "Noodling", past: "Noodled" },
|
|
45
|
-
{ present: "Perambulating", past: "Perambulated" }, // fancy strolling
|
|
46
|
-
{ present: "Percolating", past: "Percolated" },
|
|
47
|
-
{ present: "Pondering", past: "Pondered" },
|
|
48
|
-
{ present: "Prestidigitating", past: "Prestidigitated" },
|
|
49
|
-
{ present: "Processing", past: "Processed" },
|
|
50
|
-
{ present: "Puttering", past: "Puttered" },
|
|
51
|
-
{ present: "Reflecting", past: "Reflected" },
|
|
52
|
-
{ present: "Reticulating", past: "Reticulated" },
|
|
53
|
-
{ present: "Ruminating", past: "Ruminated" },
|
|
54
|
-
{ present: "Schlepping", past: "Schlepped" },
|
|
55
|
-
{ present: "Shenaniganing", past: "Shenaniganed" },
|
|
56
|
-
{ present: "Skedaddling", past: "Skedaddled" },
|
|
57
|
-
{ present: "Snozzwangling", past: "Snozzwangled" }, // made-up Dahl-esque nonsense
|
|
58
|
-
{ present: "Simmering", past: "Simmered" },
|
|
59
|
-
{ present: "Smooshing", past: "Smooshed" },
|
|
60
|
-
{ present: "Spinning", past: "Spun" },
|
|
61
|
-
{ present: "Stewing", past: "Stewed" },
|
|
62
|
-
{ present: "Synthesizing", past: "Synthesized" },
|
|
63
|
-
{ present: "Thaumaturging", past: "Thaumaturged" },
|
|
64
|
-
{ present: "Thinking", past: "Thought" },
|
|
65
|
-
{ present: "Transmogrifying", past: "Transmogrified" },
|
|
66
|
-
{ present: "Transmuting", past: "Transmuted" },
|
|
67
|
-
{ present: "Vibing", past: "Vibed" },
|
|
68
|
-
{ present: "Weaving", past: "Woven" },
|
|
69
|
-
{ present: "Working", past: "Worked" },
|
|
70
|
-
// ── ARIA / Arion 🦋 ─────────────────────────────────────────────────
|
|
71
|
-
{ present: "Chrysalizing", past: "Chrysalized" }, // cocoon phase
|
|
72
|
-
{ present: "Fluttering", past: "Fluttered" }, // butterfly vibes
|
|
73
|
-
{ present: "Harmonizing", past: "Harmonized" }, // ARIA = music
|
|
74
|
-
{ present: "Metamorphosing", past: "Metamorphosed" }, // butterfly transformation
|
|
75
|
-
{ present: "Orchestrating", past: "Orchestrated" }, // conductor energy
|
|
76
|
-
// ── Pokémon ──────────────────────────────────────────────────────────
|
|
77
|
-
{ present: "Catching", past: "Caught" }, // Gotta catch 'em all
|
|
78
|
-
{ present: "Evolving", past: "Evolved" }, // What? ARIA is evolving!
|
|
79
|
-
{ present: "Mega Evolving", past: "Mega Evolved" }, // beyond evolution
|
|
80
|
-
{ present: "Summoning", past: "Summoned" }, // I choose you!
|
|
81
|
-
// ── Dragon Ball ──────────────────────────────────────────────────────
|
|
82
|
-
{ present: "Charging", past: "Charged" }, // Kamehame…HAAA
|
|
83
|
-
{ present: "Fusing", past: "Fused" }, // fu-sion-HA!
|
|
84
|
-
{ present: "Kamehameha-ing", past: "Kamehameha'd" }, // KA-ME-HA-ME-HAAA
|
|
85
|
-
{ present: "Powering Up", past: "Powered Up" }, // OVER 9000!!!
|
|
86
|
-
{ present: "Spirit Bombing", past: "Spirit Bombed" }, // lend me your energy
|
|
87
|
-
{ present: "Transcending", past: "Transcended" }, // ultra instinct
|
|
88
|
-
// ── One Piece ────────────────────────────────────────────────────────
|
|
89
|
-
{ present: "Gear Shifting", past: "Gear Shifted" }, // GEAR FIFTH
|
|
90
|
-
{ present: "Gum-Gum-ing", past: "Gum-Gum'd" }, // gomu gomu no~
|
|
91
|
-
{ present: "Navigating", past: "Navigated" }, // to the Grand Line
|
|
92
|
-
{ present: "Plundering", past: "Plundered" }, // pirate things
|
|
93
|
-
{ present: "Sailing", past: "Sailed" }, // to the New World
|
|
94
|
-
{ present: "Setting Sail", past: "Set Sail" }, // the king of pirates
|
|
95
|
-
// ── Gundam ───────────────────────────────────────────────────────────
|
|
96
|
-
{ present: "Catapulting", past: "Catapulted" }, // Gundam, launching!
|
|
97
|
-
{ present: "Mobilizing", past: "Mobilized" }, // mobile suit go
|
|
98
|
-
{ present: "Newtypeing", past: "Newtyped" }, // awakened pilot sense
|
|
99
|
-
{ present: "Trans-Am-ing", past: "Trans-Am'd" }, // 00 Gundam overdrive
|
|
100
|
-
// ── Marvel ───────────────────────────────────────────────────────────
|
|
101
|
-
{ present: "Assembling", past: "Assembled" }, // Avengers, assemble!
|
|
102
|
-
{ present: "Hulking", past: "Hulked" }, // ARIA smash
|
|
103
|
-
{ present: "Snapping", past: "Snapped" }, // perfectly balanced
|
|
104
|
-
{ present: "Vibranium-ing", past: "Vibranium'd" }, // Wakanda forever
|
|
105
|
-
// ── Sci-fi / Fantasy ────────────────────────────────────────────────
|
|
106
|
-
{ present: "Alchemizing", past: "Alchemized" }, // equivalent exchange
|
|
107
|
-
{ present: "Assimilating", past: "Assimilated" }, // resistance is futile
|
|
108
|
-
{ present: "Astral Projecting", past: "Astral Projected" }, // out of body
|
|
109
|
-
{ present: "Beaming", past: "Beamed" }, // beam me up
|
|
110
|
-
{ present: "Cloaking", past: "Cloaked" }, // Romulan style
|
|
111
|
-
{ present: "Dematerializing", past: "Dematerialized" }, // TARDIS vibes
|
|
112
|
-
{ present: "Enchanting", past: "Enchanted" }, // +5 to wisdom
|
|
113
|
-
{ present: "Engaging", past: "Engaged" }, // make it so
|
|
114
|
-
{ present: "Ensorcelling", past: "Ensorcelled" }, // bewitching
|
|
115
|
-
{ present: "Holographing", past: "Holographed" }, // help me Obi-Wan
|
|
116
|
-
{ present: "Hyperjumping", past: "Hyperjumped" }, // punch it, Chewie
|
|
117
|
-
{ present: "Morphing", past: "Morphed" }, // it's morphin' time
|
|
118
|
-
{ present: "Nebulizing", past: "Nebulized" }, // dissolving into stardust
|
|
119
|
-
{ present: "Phasing", past: "Phased" }, // passing through walls
|
|
120
|
-
{ present: "Quantum Leaping", past: "Quantum Leapt" }, // oh boy
|
|
121
|
-
{ present: "Shapeshifting", past: "Shapeshifted" }, // T-1000
|
|
122
|
-
{ present: "Spellcasting", past: "Spellcast" }, // rolling a nat 20
|
|
123
|
-
{ present: "Teleporting", past: "Teleported" }, // *blink*
|
|
124
|
-
{ present: "Terraforming", past: "Terraformed" }, // making worlds
|
|
125
|
-
{ present: "Time Traveling", past: "Time Traveled" }, // 1.21 gigawatts!
|
|
126
|
-
{ present: "Time Warping", past: "Time Warped" }, // it's just a jump to the left
|
|
127
|
-
{ present: "Transforming", past: "Transformed" }, // more than meets the eye
|
|
128
|
-
{ present: "Warping", past: "Warped" }, // warp drive
|
|
129
|
-
{ present: "Wormholing", past: "Wormholed" }, // bending spacetime
|
|
130
|
-
// ── Totally Made Up ──────────────────────────────────────────────────
|
|
131
|
-
{ present: "Bepuzzling", past: "Bepuzzled" },
|
|
132
|
-
{ present: "Blorbulating", past: "Blorbulated" },
|
|
133
|
-
{ present: "Cattywampusing", past: "Cattywampused" },
|
|
134
|
-
{ present: "Cromulating", past: "Cromulated" }, // perfectly cromulent
|
|
135
|
-
{ present: "Discorbuflating", past: "Discorbuflated" },
|
|
136
|
-
{ present: "Embiggenating", past: "Embiggenated" }, // a noble spirit embiggens
|
|
137
|
-
{ present: "Flibbertigibbeting", past: "Flibbertigibbeted" },
|
|
138
|
-
{ present: "Flonkifying", past: "Flonkified" },
|
|
139
|
-
{ present: "Frobscottling", past: "Frobscottled" }, // BFG-tier nonsense
|
|
140
|
-
{ present: "Glorpifying", past: "Glorpified" },
|
|
141
|
-
{ present: "Gobsmacking", past: "Gobsmacked" },
|
|
142
|
-
{ present: "Higgledy-piggling", past: "Higgledy-piggled" },
|
|
143
|
-
{ present: "Kerfuffling", past: "Kerfuffled" },
|
|
144
|
-
{ present: "Mumblewumbling", past: "Mumblewumbled" },
|
|
145
|
-
{ present: "Phantasmagoring", past: "Phantasmagored" },
|
|
146
|
-
{ present: "Quibberflasting", past: "Quibberflasted" },
|
|
147
|
-
{ present: "Quorfluxing", past: "Quorfluxed" },
|
|
148
|
-
{ present: "Rigmaroling", past: "Rigmaroled" },
|
|
149
|
-
{ present: "Snizzleworfing", past: "Snizzleworfed" },
|
|
150
|
-
{ present: "Snorfulating", past: "Snorfulated" },
|
|
151
|
-
{ present: "Spatchcocking", past: "Spatchcocked" }, // real word, absurd out of context
|
|
152
|
-
{ present: "Wibbling", past: "Wibbled" }, // Doctor Who vibes
|
|
153
|
-
{ present: "Yoinking", past: "Yoinked" },
|
|
154
|
-
{ present: "Zippledorping", past: "Zippledorped" },
|
|
155
|
-
{ present: "Zorbinating", past: "Zorbinated" },
|
|
156
|
-
// ── Manga (general) ─────────────────────────────────────────────────
|
|
157
|
-
{ present: "Awakening", past: "Awakened" }, // final form unlocked
|
|
158
|
-
{ present: "Bankai-ing", past: "Bankai'd" }, // Bleach
|
|
159
|
-
{ present: "Rasengan-ing", past: "Rasengan'd" }, // Naruto
|
|
160
|
-
{ present: "Unleashing", past: "Unleashed" }, // hidden power
|
|
161
|
-
];
|
|
162
|
-
export function pickRandomVerbPair() {
|
|
163
|
-
return VERB_PAIRS[Math.floor(Math.random() * VERB_PAIRS.length)] ?? VERB_PAIRS[0];
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Convert a present-tense verb to past tense using the verb pairs table.
|
|
167
|
-
* Falls back to the input if not found.
|
|
168
|
-
*/
|
|
169
|
-
export function presentToPast(present) {
|
|
170
|
-
const pair = VERB_PAIRS.find((p) => p.present === present);
|
|
171
|
-
return pair?.past ?? present;
|
|
172
|
-
}
|
|
173
|
-
// Words dropped entirely from display (file/web tools only)
|
|
174
|
-
const DROP_WORDS = new Set(["file", "web"]);
|
|
175
|
-
// Tool names that don't read well when naively title-cased.
|
|
176
|
-
// Maps the raw tool name to the word(s) used for display.
|
|
177
|
-
const TOOL_ALIASES = {
|
|
178
|
-
ls: "list",
|
|
179
|
-
rm: "remove",
|
|
180
|
-
cp: "copy",
|
|
181
|
-
mv: "move",
|
|
182
|
-
cd: "change_dir",
|
|
183
|
-
mkdir: "make_dir",
|
|
184
|
-
};
|
|
185
|
-
// Known nouns in tool names — never inflected with "-ing".
|
|
186
|
-
// Any word NOT in this set is treated as the verb.
|
|
187
|
-
const NOUNS = new Set([
|
|
188
|
-
"arion",
|
|
189
|
-
"delegation",
|
|
190
|
-
"knowledge",
|
|
191
|
-
"patch",
|
|
192
|
-
"processes",
|
|
193
|
-
"process",
|
|
194
|
-
"quest",
|
|
195
|
-
"skill",
|
|
196
|
-
"stdin",
|
|
197
|
-
"tool",
|
|
198
|
-
"user",
|
|
199
|
-
"worker",
|
|
200
|
-
]);
|
|
201
|
-
/**
|
|
202
|
-
* Format a snake_case tool name for display.
|
|
203
|
-
* Drops "file" and "web" for brevity, title-cases the rest.
|
|
204
|
-
* When active=true, adds "-ing" to the verb word (first non-noun).
|
|
205
|
-
*
|
|
206
|
-
* Base: "create_skill" → "Create Skill", "read_file" → "Read", "quest_list" → "Quest List"
|
|
207
|
-
* Active: "create_skill" → "Creating Skill", "read_file" → "Reading", "quest_list" → "Quest Listing"
|
|
208
|
-
*/
|
|
209
|
-
export function toolDisplayName(toolName, active = false) {
|
|
210
|
-
const canonical = TOOL_ALIASES[toolName] ?? toolName;
|
|
211
|
-
const words = canonical.split("_").filter((w) => !DROP_WORDS.has(w.toLowerCase()));
|
|
212
|
-
if (words.length === 0)
|
|
213
|
-
return active ? addIng(canonical.toLowerCase()) : capitalize(canonical);
|
|
214
|
-
// Find verb index: first non-noun word; fallback to first word
|
|
215
|
-
const verbIdx = active ? findVerbIndex(words) : -1;
|
|
216
|
-
return words
|
|
217
|
-
.map((w, i) => (i === verbIdx ? addIng(w.toLowerCase()) : capitalize(w.toLowerCase())))
|
|
218
|
-
.join(" ");
|
|
219
|
-
}
|
|
220
|
-
function findVerbIndex(words) {
|
|
221
|
-
const idx = words.findIndex((w) => !NOUNS.has(w.toLowerCase()));
|
|
222
|
-
return idx >= 0 ? idx : 0;
|
|
223
|
-
}
|
|
224
|
-
// Words where the final consonant doubles before "-ing" (stressed final CVC)
|
|
225
|
-
const DOUBLE_FINAL = new Set([
|
|
226
|
-
"glob",
|
|
227
|
-
"grep",
|
|
228
|
-
"run",
|
|
229
|
-
"get",
|
|
230
|
-
"set",
|
|
231
|
-
"put",
|
|
232
|
-
"stop",
|
|
233
|
-
"spin",
|
|
234
|
-
"forget",
|
|
235
|
-
]);
|
|
236
|
-
function addIng(lower) {
|
|
237
|
-
if (lower.endsWith("e") && lower.length > 2) {
|
|
238
|
-
return capitalize(lower.slice(0, -1)) + "ing";
|
|
239
|
-
}
|
|
240
|
-
if (DOUBLE_FINAL.has(lower)) {
|
|
241
|
-
return capitalize(lower) + lower[lower.length - 1] + "ing";
|
|
242
|
-
}
|
|
243
|
-
return capitalize(lower) + "ing";
|
|
244
|
-
}
|
|
245
|
-
function capitalize(s) {
|
|
246
|
-
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
247
|
-
}
|
|
248
|
-
//# sourceMappingURL=verb-pairs.js.map
|
package/dist/ui.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ARIA CLI UI Components
|
|
3
|
-
* Polished terminal UI with colors, spinners, and system messages
|
|
4
|
-
*/
|
|
5
|
-
// ANSI color codes
|
|
6
|
-
export const colors = {
|
|
7
|
-
reset: "\x1b[0m",
|
|
8
|
-
bold: "\x1b[1m",
|
|
9
|
-
dim: "\x1b[2m",
|
|
10
|
-
cyan: "\x1b[36m",
|
|
11
|
-
magenta: "\x1b[35m",
|
|
12
|
-
green: "\x1b[32m",
|
|
13
|
-
yellow: "\x1b[33m",
|
|
14
|
-
red: "\x1b[31m",
|
|
15
|
-
blue: "\x1b[34m",
|
|
16
|
-
white: "\x1b[37m",
|
|
17
|
-
gray: "\x1b[90m",
|
|
18
|
-
};
|
|
19
|
-
// Cursor control
|
|
20
|
-
export const cursor = {
|
|
21
|
-
hide: "\x1b[?25l",
|
|
22
|
-
show: "\x1b[?25h",
|
|
23
|
-
clearLine: "\x1b[2K",
|
|
24
|
-
moveUp: (n) => `\x1b[${n}A`,
|
|
25
|
-
moveDown: (n) => `\x1b[${n}B`,
|
|
26
|
-
moveToColumn: (n) => `\x1b[${n}G`,
|
|
27
|
-
};
|
|
28
|
-
// Box drawing characters
|
|
29
|
-
const box = {
|
|
30
|
-
topLeft: "┌",
|
|
31
|
-
bottomLeft: "└",
|
|
32
|
-
vertical: "│",
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Animated spinner with label
|
|
36
|
-
*/
|
|
37
|
-
export class Spinner {
|
|
38
|
-
interval = null;
|
|
39
|
-
frame = 0;
|
|
40
|
-
frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
41
|
-
label;
|
|
42
|
-
labelColor;
|
|
43
|
-
lineCount = 1;
|
|
44
|
-
minimal;
|
|
45
|
-
constructor(label = "", labelColor = colors.yellow, minimal = false) {
|
|
46
|
-
this.label = label;
|
|
47
|
-
this.labelColor = labelColor;
|
|
48
|
-
this.minimal = minimal;
|
|
49
|
-
}
|
|
50
|
-
start() {
|
|
51
|
-
process.stdout.write(cursor.hide);
|
|
52
|
-
if (this.minimal) {
|
|
53
|
-
// Minimal mode: just the spinner, no prefix
|
|
54
|
-
this.interval = setInterval(() => {
|
|
55
|
-
process.stdout.write(`\r${colors.cyan}${this.frames[this.frame++ % this.frames.length]}${colors.reset}`);
|
|
56
|
-
}, 80);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
const prefix = `${colors.magenta}ARIA${colors.reset} ${colors.dim}${box.topLeft}${colors.reset} `;
|
|
60
|
-
const labelText = this.label ? `${this.labelColor}${this.label}${colors.reset} ` : "";
|
|
61
|
-
this.interval = setInterval(() => {
|
|
62
|
-
process.stdout.write(`\r${prefix}${labelText}${colors.cyan}${this.frames[this.frame++ % this.frames.length]}${colors.reset}`);
|
|
63
|
-
}, 80);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
stop() {
|
|
67
|
-
if (this.interval) {
|
|
68
|
-
clearInterval(this.interval);
|
|
69
|
-
this.interval = null;
|
|
70
|
-
}
|
|
71
|
-
process.stdout.write("\r" + cursor.clearLine);
|
|
72
|
-
process.stdout.write(cursor.show);
|
|
73
|
-
}
|
|
74
|
-
/** Get number of lines this spinner occupies */
|
|
75
|
-
getLineCount() {
|
|
76
|
-
return this.lineCount;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* System message box for displaying status and results
|
|
81
|
-
*/
|
|
82
|
-
export class SystemMessage {
|
|
83
|
-
/**
|
|
84
|
-
* Display a boxed message with header and content lines
|
|
85
|
-
*/
|
|
86
|
-
static show(options) {
|
|
87
|
-
const { header, headerColor, content = [], contentColor = `${colors.dim}${colors.gray}`, } = options;
|
|
88
|
-
const prefix = `${colors.magenta}ARIA${colors.reset}`;
|
|
89
|
-
const dimBorder = `${colors.dim}${colors.gray}`;
|
|
90
|
-
// Header line
|
|
91
|
-
console.log(`${prefix} ${dimBorder}${box.topLeft}${colors.reset} ${headerColor}${header}${colors.reset}`);
|
|
92
|
-
// Content lines
|
|
93
|
-
for (let i = 0; i < content.length; i++) {
|
|
94
|
-
const borderChar = i === content.length - 1 ? box.bottomLeft : box.vertical;
|
|
95
|
-
console.log(` ${dimBorder}${borderChar}${colors.reset} ${contentColor}${content[i]}${colors.reset}`);
|
|
96
|
-
}
|
|
97
|
-
return 1 + content.length; // Return line count
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Show "remembered" message with learned memories
|
|
101
|
-
*/
|
|
102
|
-
static showRemembered(memories) {
|
|
103
|
-
if (memories.length === 0)
|
|
104
|
-
return;
|
|
105
|
-
SystemMessage.show({
|
|
106
|
-
header: "remembered",
|
|
107
|
-
headerColor: colors.green,
|
|
108
|
-
content: memories.map((m) => m.content),
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Show error message
|
|
113
|
-
*/
|
|
114
|
-
static showError(message) {
|
|
115
|
-
SystemMessage.show({
|
|
116
|
-
header: `⚠ error`,
|
|
117
|
-
headerColor: colors.red,
|
|
118
|
-
content: [message],
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Format the user prompt
|
|
124
|
-
*/
|
|
125
|
-
export function formatPrompt(userName) {
|
|
126
|
-
if (userName) {
|
|
127
|
-
return `${colors.cyan}${userName}${colors.reset} `;
|
|
128
|
-
}
|
|
129
|
-
return `${colors.cyan}>${colors.reset} `;
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=ui.js.map
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import type { DaemonLauncherCliOptions } from "@aria-cli/server/daemon-launcher";
|
|
2
|
-
import { runServerDaemonLauncherFromCli } from "@aria-cli/server/daemon-launcher";
|
|
3
|
-
|
|
4
|
-
function requireValue(argv: string[], index: number, flag: string): string {
|
|
5
|
-
const value = argv[index + 1];
|
|
6
|
-
if (!value) throw new Error(`${flag} requires a value`);
|
|
7
|
-
return value;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
function parseDaemonArgs(argv: string[]): DaemonLauncherCliOptions {
|
|
11
|
-
const options: DaemonLauncherCliOptions = {};
|
|
12
|
-
|
|
13
|
-
for (let i = 0; i < argv.length; i += 1) {
|
|
14
|
-
const arg = argv[i];
|
|
15
|
-
switch (arg) {
|
|
16
|
-
case "--arion":
|
|
17
|
-
options.arion = requireValue(argv, i, arg);
|
|
18
|
-
i += 1;
|
|
19
|
-
break;
|
|
20
|
-
case "--port":
|
|
21
|
-
options.port = requireValue(argv, i, arg);
|
|
22
|
-
i += 1;
|
|
23
|
-
break;
|
|
24
|
-
case "--interval-ms":
|
|
25
|
-
options.intervalMs = requireValue(argv, i, arg);
|
|
26
|
-
i += 1;
|
|
27
|
-
break;
|
|
28
|
-
case "--allowed-tool-categories":
|
|
29
|
-
options.allowedToolCategories = requireValue(argv, i, arg);
|
|
30
|
-
i += 1;
|
|
31
|
-
break;
|
|
32
|
-
case "--allowed-shell-commands":
|
|
33
|
-
options.allowedShellCommands = requireValue(argv, i, arg);
|
|
34
|
-
i += 1;
|
|
35
|
-
break;
|
|
36
|
-
case "--max-write-ops-per-minute":
|
|
37
|
-
options.maxWriteOpsPerMinute = requireValue(argv, i, arg);
|
|
38
|
-
i += 1;
|
|
39
|
-
break;
|
|
40
|
-
case "--max-git-pushes-per-hour":
|
|
41
|
-
options.maxGitPushesPerHour = requireValue(argv, i, arg);
|
|
42
|
-
i += 1;
|
|
43
|
-
break;
|
|
44
|
-
default:
|
|
45
|
-
throw new Error(`[aria] Unknown internal daemon arg: ${arg}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return options;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export async function runDaemonEntrypoint(argv: string[]): Promise<void> {
|
|
53
|
-
await runServerDaemonLauncherFromCli(parseDaemonArgs(argv));
|
|
54
|
-
}
|