@codemieai/code 0.0.34 → 0.0.36
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/README.md +10 -5
- package/bin/codemie-claude-acp.js +21 -0
- package/bin/codemie.js +13 -0
- package/dist/agents/codemie-code/agent.d.ts +23 -5
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +293 -197
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/index.d.ts +1 -1
- package/dist/agents/codemie-code/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/index.js +9 -6
- package/dist/agents/codemie-code/index.js.map +1 -1
- package/dist/agents/codemie-code/prompts.d.ts +9 -11
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
- package/dist/agents/codemie-code/prompts.js +43 -16
- package/dist/agents/codemie-code/prompts.js.map +1 -1
- package/dist/agents/codemie-code/skills/core/SkillDiscovery.d.ts.map +1 -0
- package/dist/{skills → agents/codemie-code/skills}/core/SkillDiscovery.js +1 -1
- package/dist/agents/codemie-code/skills/core/SkillDiscovery.js.map +1 -0
- package/dist/agents/codemie-code/skills/core/SkillManager.d.ts.map +1 -0
- package/dist/{skills → agents/codemie-code/skills}/core/SkillManager.js +1 -1
- package/dist/agents/codemie-code/skills/core/SkillManager.js.map +1 -0
- package/dist/agents/codemie-code/skills/core/types.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/core/types.js.map +1 -0
- package/dist/agents/codemie-code/skills/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/index.js.map +1 -0
- package/dist/agents/codemie-code/skills/utils/content-loader.d.ts.map +1 -0
- package/dist/{skills → agents/codemie-code/skills}/utils/content-loader.js +1 -1
- package/dist/agents/codemie-code/skills/utils/content-loader.js.map +1 -0
- package/dist/agents/codemie-code/skills/utils/frontmatter.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/utils/frontmatter.js.map +1 -0
- package/dist/agents/codemie-code/skills/utils/pattern-matcher.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/utils/pattern-matcher.js.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -1
- package/dist/agents/codemie-code/toolMetadata.js +9 -8
- package/dist/agents/codemie-code/toolMetadata.js.map +1 -1
- package/dist/agents/codemie-code/tools/assistant-invocation.d.ts +47 -0
- package/dist/agents/codemie-code/tools/assistant-invocation.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/assistant-invocation.js +129 -0
- package/dist/agents/codemie-code/tools/assistant-invocation.js.map +1 -0
- package/dist/agents/codemie-code/tools/index.d.ts +70 -4
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/index.js +57 -44
- package/dist/agents/codemie-code/tools/index.js.map +1 -1
- package/dist/agents/codemie-code/tools/planning.d.ts +6 -5
- package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/planning.js +12 -10
- package/dist/agents/codemie-code/tools/planning.js.map +1 -1
- package/dist/agents/codemie-code/types.d.ts +25 -4
- package/dist/agents/codemie-code/types.d.ts.map +1 -1
- package/dist/agents/codemie-code/types.js +24 -0
- package/dist/agents/codemie-code/types.js.map +1 -1
- package/dist/agents/codemie-code/ui/autocomplete.d.ts +98 -0
- package/dist/agents/codemie-code/ui/autocomplete.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/autocomplete.js +145 -0
- package/dist/agents/codemie-code/ui/autocomplete.js.map +1 -0
- package/dist/agents/codemie-code/ui/keyHandlers.d.ts +112 -0
- package/dist/agents/codemie-code/ui/keyHandlers.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/keyHandlers.js +415 -0
- package/dist/agents/codemie-code/ui/keyHandlers.js.map +1 -0
- package/dist/agents/codemie-code/ui/mentions.d.ts +86 -0
- package/dist/agents/codemie-code/ui/mentions.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/mentions.js +122 -0
- package/dist/agents/codemie-code/ui/mentions.js.map +1 -0
- package/dist/agents/codemie-code/ui/terminalCodes.d.ts +38 -0
- package/dist/agents/codemie-code/ui/terminalCodes.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/terminalCodes.js +42 -0
- package/dist/agents/codemie-code/ui/terminalCodes.js.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -1
- package/dist/agents/codemie-code/ui/todoPanel.js +3 -4
- package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -1
- package/dist/agents/codemie-code/ui.d.ts +8 -7
- package/dist/agents/codemie-code/ui.d.ts.map +1 -1
- package/dist/agents/codemie-code/ui.js +87 -145
- package/dist/agents/codemie-code/ui.js.map +1 -1
- package/dist/agents/core/AgentCLI.d.ts +5 -0
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +22 -0
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +58 -28
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts +7 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.js +58 -15
- package/dist/agents/core/extension/BaseExtensionInstaller.js.map +1 -1
- package/dist/agents/core/types.d.ts +17 -0
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude-acp.plugin.d.ts +27 -0
- package/dist/agents/plugins/claude/claude-acp.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/claude/claude-acp.plugin.js +63 -0
- package/dist/agents/plugins/claude/claude-acp.plugin.js.map +1 -0
- package/dist/agents/plugins/claude/claude-message-types.d.ts +1 -0
- package/dist/agents/plugins/claude/claude-message-types.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +66 -29
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.session.js +14 -7
- package/dist/agents/plugins/claude/claude.session.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/agents/plugins/claude/plugin/commands/codemie-subagents.md +4 -4
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +43 -8
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +68 -40
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
- package/dist/agents/registry.d.ts +1 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +3 -1
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/assistants/chat.d.ts +11 -0
- package/dist/cli/commands/assistants/chat.d.ts.map +1 -0
- package/dist/cli/commands/assistants/chat.js +201 -0
- package/dist/cli/commands/assistants/chat.js.map +1 -0
- package/dist/cli/commands/assistants/constants.d.ts +81 -0
- package/dist/cli/commands/assistants/constants.d.ts.map +1 -0
- package/dist/cli/commands/assistants/constants.js +75 -0
- package/dist/cli/commands/assistants/constants.js.map +1 -0
- package/dist/cli/commands/assistants/generators/claude-agent-generator.d.ts +26 -0
- package/dist/cli/commands/assistants/generators/claude-agent-generator.d.ts.map +1 -0
- package/dist/cli/commands/assistants/generators/claude-agent-generator.js +115 -0
- package/dist/cli/commands/assistants/generators/claude-agent-generator.js.map +1 -0
- package/dist/cli/commands/assistants/index.d.ts +11 -0
- package/dist/cli/commands/assistants/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/index.js +28 -0
- package/dist/cli/commands/assistants/index.js.map +1 -0
- package/dist/cli/commands/assistants/list.d.ts +11 -0
- package/dist/cli/commands/assistants/list.d.ts.map +1 -0
- package/dist/cli/commands/assistants/list.js +323 -0
- package/dist/cli/commands/assistants/list.js.map +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +26 -6
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/self-update.d.ts +3 -0
- package/dist/cli/commands/self-update.d.ts.map +1 -0
- package/dist/cli/commands/self-update.js +55 -0
- package/dist/cli/commands/self-update.js.map +1 -0
- package/dist/cli/commands/skill.js +1 -1
- package/dist/cli/commands/skill.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +8 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +8 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts +13 -0
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js +1 -1
- package/dist/env/types.js.map +1 -1
- package/dist/utils/auth.d.ts +22 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +50 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/cli-updater.d.ts +70 -0
- package/dist/utils/cli-updater.d.ts.map +1 -0
- package/dist/utils/cli-updater.js +339 -0
- package/dist/utils/cli-updater.js.map +1 -0
- package/dist/utils/config.d.ts +6 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +13 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/native-installer.d.ts.map +1 -1
- package/dist/utils/native-installer.js +85 -17
- package/dist/utils/native-installer.js.map +1 -1
- package/dist/utils/processes.js +1 -1
- package/dist/utils/profile.d.ts +2 -0
- package/dist/utils/profile.d.ts.map +1 -1
- package/dist/utils/profile.js +5 -0
- package/dist/utils/profile.js.map +1 -1
- package/dist/utils/sdk-client.d.ts +15 -0
- package/dist/utils/sdk-client.d.ts.map +1 -0
- package/dist/utils/sdk-client.js +92 -0
- package/dist/utils/sdk-client.js.map +1 -0
- package/dist/utils/windows-path.d.ts +54 -0
- package/dist/utils/windows-path.d.ts.map +1 -0
- package/dist/utils/windows-path.js +347 -0
- package/dist/utils/windows-path.js.map +1 -0
- package/package.json +7 -2
- package/dist/agents/plugins/claude/plugin/commands/codemie-pr.md +0 -25
- package/dist/skills/core/SkillDiscovery.d.ts.map +0 -1
- package/dist/skills/core/SkillDiscovery.js.map +0 -1
- package/dist/skills/core/SkillManager.d.ts.map +0 -1
- package/dist/skills/core/SkillManager.js.map +0 -1
- package/dist/skills/core/types.d.ts.map +0 -1
- package/dist/skills/core/types.js.map +0 -1
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/utils/content-loader.d.ts.map +0 -1
- package/dist/skills/utils/content-loader.js.map +0 -1
- package/dist/skills/utils/frontmatter.d.ts.map +0 -1
- package/dist/skills/utils/frontmatter.js.map +0 -1
- package/dist/skills/utils/pattern-matcher.d.ts.map +0 -1
- package/dist/skills/utils/pattern-matcher.js.map +0 -1
- /package/dist/{skills → agents/codemie-code/skills}/core/SkillDiscovery.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/core/SkillManager.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/core/types.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/core/types.js +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/index.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/index.js +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/content-loader.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/frontmatter.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/frontmatter.js +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/pattern-matcher.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/pattern-matcher.js +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key Handler Registry
|
|
3
|
+
*
|
|
4
|
+
* Declarative key handling system using priority-based handler matching.
|
|
5
|
+
* Replaces nested if-statements with a clean registry pattern.
|
|
6
|
+
*/
|
|
7
|
+
import type { ClipboardImage } from '../../../utils/clipboard.js';
|
|
8
|
+
import type { CodeMieTerminalUI } from '../ui.js';
|
|
9
|
+
import type { AssistantSuggestion } from './autocomplete.js';
|
|
10
|
+
/**
|
|
11
|
+
* Input state consolidated into single object for handler access
|
|
12
|
+
*/
|
|
13
|
+
export interface InputState {
|
|
14
|
+
currentLine: string;
|
|
15
|
+
lines: string[];
|
|
16
|
+
isFirstLine: boolean;
|
|
17
|
+
autocompleteActive: boolean;
|
|
18
|
+
autocompleteList: AssistantSuggestion[];
|
|
19
|
+
autocompleteIndex: number;
|
|
20
|
+
autocompleteStartPos: number;
|
|
21
|
+
escapeSequence: string;
|
|
22
|
+
images: ClipboardImage[];
|
|
23
|
+
ui: CodeMieTerminalUI;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Result returned by key handlers
|
|
27
|
+
*/
|
|
28
|
+
export interface HandlerResult {
|
|
29
|
+
/** Whether this handler processed the key */
|
|
30
|
+
handled: boolean;
|
|
31
|
+
/** Whether to return from input loop (submit/cancel) */
|
|
32
|
+
shouldReturn?: boolean;
|
|
33
|
+
/** Value to return when shouldReturn is true */
|
|
34
|
+
value?: {
|
|
35
|
+
text: string;
|
|
36
|
+
images: ClipboardImage[];
|
|
37
|
+
} | null;
|
|
38
|
+
/** Whether to rewrite the prompt and current line */
|
|
39
|
+
shouldRewritePrompt?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Priority levels for handler execution order
|
|
43
|
+
*/
|
|
44
|
+
export type Priority = 'ESCAPE_SEQ' | 'CRITICAL' | 'MEDIUM' | 'FALLBACK';
|
|
45
|
+
/**
|
|
46
|
+
* Key handler definition
|
|
47
|
+
*/
|
|
48
|
+
export interface KeyHandler {
|
|
49
|
+
/** Handler name for debugging */
|
|
50
|
+
name: string;
|
|
51
|
+
/** Condition to match this handler */
|
|
52
|
+
match: (data: string, state: InputState) => boolean;
|
|
53
|
+
/** Action to perform when matched */
|
|
54
|
+
action: (data: string, state: InputState) => HandlerResult | Promise<HandlerResult>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Handle escape sequences (arrow keys, plain escape, incomplete sequences)
|
|
58
|
+
*/
|
|
59
|
+
export declare function handleEscapeSequences(data: string, state: InputState): HandlerResult | Promise<HandlerResult>;
|
|
60
|
+
/**
|
|
61
|
+
* Handle backspace/delete key
|
|
62
|
+
*/
|
|
63
|
+
export declare function handleBackspace(data: string, state: InputState): HandlerResult;
|
|
64
|
+
/**
|
|
65
|
+
* Handle Tab key (autocomplete selection or clipboard image insertion)
|
|
66
|
+
*/
|
|
67
|
+
export declare function handleTab(data: string, state: InputState): Promise<HandlerResult>;
|
|
68
|
+
/**
|
|
69
|
+
* Handle Ctrl+C (cancel input)
|
|
70
|
+
*/
|
|
71
|
+
export declare function handleCtrlC(data: string, state: InputState): HandlerResult;
|
|
72
|
+
/**
|
|
73
|
+
* Handle Shift+Enter (add new line)
|
|
74
|
+
*/
|
|
75
|
+
export declare function handleShiftEnter(data: string, state: InputState): HandlerResult;
|
|
76
|
+
/**
|
|
77
|
+
* Handle Enter key (submit or autocomplete selection)
|
|
78
|
+
*/
|
|
79
|
+
export declare function handleEnter(data: string, state: InputState): HandlerResult;
|
|
80
|
+
/**
|
|
81
|
+
* Handle Ctrl+P (toggle plan mode)
|
|
82
|
+
*/
|
|
83
|
+
export declare function handleCtrlP(data: string, state: InputState): HandlerResult;
|
|
84
|
+
/**
|
|
85
|
+
* Handle Ctrl+H (show hotkey help)
|
|
86
|
+
*/
|
|
87
|
+
export declare function handleCtrlH(data: string, state: InputState): HandlerResult;
|
|
88
|
+
/**
|
|
89
|
+
* Handle Ctrl+T (show todos)
|
|
90
|
+
*/
|
|
91
|
+
export declare function handleCtrlT(data: string, state: InputState): HandlerResult;
|
|
92
|
+
/**
|
|
93
|
+
* Handle Ctrl+S (show mode status)
|
|
94
|
+
*/
|
|
95
|
+
export declare function handleCtrlS(data: string, state: InputState): HandlerResult;
|
|
96
|
+
/**
|
|
97
|
+
* Handle Alt+M (show mode status alternative)
|
|
98
|
+
*/
|
|
99
|
+
export declare function handleAltM(data: string, state: InputState): HandlerResult;
|
|
100
|
+
/**
|
|
101
|
+
* Handle printable text input and paste
|
|
102
|
+
*/
|
|
103
|
+
export declare function handlePrintableText(data: string, state: InputState): HandlerResult;
|
|
104
|
+
/**
|
|
105
|
+
* Key handler registry organized by priority
|
|
106
|
+
*/
|
|
107
|
+
export declare const keyHandlers: Record<Priority, KeyHandler[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Process key input through handler registry
|
|
110
|
+
*/
|
|
111
|
+
export declare function processKeyInput(data: string, state: InputState): Promise<HandlerResult>;
|
|
112
|
+
//# sourceMappingURL=keyHandlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyHandlers.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/ui/keyHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key Handler Registry
|
|
3
|
+
*
|
|
4
|
+
* Declarative key handling system using priority-based handler matching.
|
|
5
|
+
* Replaces nested if-statements with a clean registry pattern.
|
|
6
|
+
*/
|
|
7
|
+
import { hasClipboardImage, getClipboardImage } from '../../../utils/clipboard.js';
|
|
8
|
+
import { parseAutocompleteQuery, filterAssistants, renderAutocompleteUI, clearAutocompleteUI, navigateUp, navigateDown, } from './autocomplete.js';
|
|
9
|
+
import { ESC, CONTROL, NEWLINE, startsWithEscape, isKey } from './terminalCodes.js';
|
|
10
|
+
import { logger } from '../../../utils/logger.js';
|
|
11
|
+
/**
|
|
12
|
+
* Handle escape sequences (arrow keys, plain escape, incomplete sequences)
|
|
13
|
+
*/
|
|
14
|
+
export function handleEscapeSequences(data, state) {
|
|
15
|
+
const { escapeSequence } = state;
|
|
16
|
+
// Arrow Up
|
|
17
|
+
if (isKey(escapeSequence, 'ARROW_UP')) {
|
|
18
|
+
state.escapeSequence = '';
|
|
19
|
+
if (state.autocompleteActive && state.autocompleteList.length > 0) {
|
|
20
|
+
state.autocompleteIndex = navigateUp(state.autocompleteIndex, state.autocompleteList.length);
|
|
21
|
+
const output = clearAutocompleteUI(state.autocompleteList.length, state.currentLine) +
|
|
22
|
+
renderAutocompleteUI(state.autocompleteList, state.autocompleteIndex, state.currentLine);
|
|
23
|
+
process.stdout.write(output);
|
|
24
|
+
}
|
|
25
|
+
return { handled: true };
|
|
26
|
+
}
|
|
27
|
+
// Arrow Down
|
|
28
|
+
if (isKey(escapeSequence, 'ARROW_DOWN')) {
|
|
29
|
+
state.escapeSequence = '';
|
|
30
|
+
if (state.autocompleteActive && state.autocompleteList.length > 0) {
|
|
31
|
+
state.autocompleteIndex = navigateDown(state.autocompleteIndex, state.autocompleteList.length);
|
|
32
|
+
const output = clearAutocompleteUI(state.autocompleteList.length, state.currentLine) +
|
|
33
|
+
renderAutocompleteUI(state.autocompleteList, state.autocompleteIndex, state.currentLine);
|
|
34
|
+
process.stdout.write(output);
|
|
35
|
+
logger.debug('[Autocomplete] Arrow Down - new index:', state.autocompleteIndex);
|
|
36
|
+
}
|
|
37
|
+
return { handled: true };
|
|
38
|
+
}
|
|
39
|
+
// Plain Escape key (deactivate autocomplete)
|
|
40
|
+
if (escapeSequence === ESC) {
|
|
41
|
+
return new Promise((resolve) => {
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
if (state.escapeSequence === ESC) {
|
|
44
|
+
state.escapeSequence = '';
|
|
45
|
+
if (state.autocompleteActive) {
|
|
46
|
+
const output = clearAutocompleteUI(state.autocompleteList.length, state.currentLine);
|
|
47
|
+
process.stdout.write(output);
|
|
48
|
+
state.autocompleteActive = false;
|
|
49
|
+
state.autocompleteList = [];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
resolve({ handled: true });
|
|
53
|
+
}, 50);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
// Incomplete or unrecognized escape sequences
|
|
57
|
+
if (escapeSequence.length > 0 && escapeSequence.length < 5) {
|
|
58
|
+
return new Promise((resolve) => {
|
|
59
|
+
setTimeout(() => {
|
|
60
|
+
if (state.escapeSequence.length > 0 && state.escapeSequence.length < 5) {
|
|
61
|
+
state.escapeSequence = '';
|
|
62
|
+
}
|
|
63
|
+
resolve({ handled: true });
|
|
64
|
+
}, 50);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return { handled: false };
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Handle backspace/delete key
|
|
71
|
+
*/
|
|
72
|
+
export function handleBackspace(data, state) {
|
|
73
|
+
if (state.currentLine.length > 0) {
|
|
74
|
+
state.currentLine = state.currentLine.slice(0, -1);
|
|
75
|
+
process.stdout.write('\b \b');
|
|
76
|
+
// Update autocomplete if active
|
|
77
|
+
if (state.autocompleteActive) {
|
|
78
|
+
// Parse the current query
|
|
79
|
+
const queryResult = parseAutocompleteQuery(state.currentLine);
|
|
80
|
+
// Deactivate if we backspaced past @ or if query is empty (just @ remaining)
|
|
81
|
+
if (!queryResult.hasQuery || queryResult.query.length === 0) {
|
|
82
|
+
const output = clearAutocompleteUI(state.autocompleteList.length, state.currentLine);
|
|
83
|
+
process.stdout.write(output);
|
|
84
|
+
state.autocompleteActive = false;
|
|
85
|
+
state.autocompleteList = [];
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// Update autocomplete filtering
|
|
89
|
+
const assistants = state.ui['assistantSuggestions'] || [];
|
|
90
|
+
state.autocompleteList = filterAssistants(queryResult.query, assistants);
|
|
91
|
+
const output = clearAutocompleteUI(state.autocompleteList.length + 1, state.currentLine) +
|
|
92
|
+
renderAutocompleteUI(state.autocompleteList, state.autocompleteIndex, state.currentLine);
|
|
93
|
+
process.stdout.write(output);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return { handled: true };
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Handle Tab key (autocomplete selection or clipboard image insertion)
|
|
101
|
+
*/
|
|
102
|
+
export async function handleTab(data, state) {
|
|
103
|
+
// If autocomplete is active, select the current item
|
|
104
|
+
if (state.autocompleteActive && state.autocompleteList.length > 0) {
|
|
105
|
+
selectAutocomplete(state);
|
|
106
|
+
return { handled: true, shouldRewritePrompt: true };
|
|
107
|
+
}
|
|
108
|
+
// Otherwise, handle clipboard image insertion
|
|
109
|
+
const hasImage = await hasClipboardImage();
|
|
110
|
+
if (hasImage) {
|
|
111
|
+
const image = await getClipboardImage();
|
|
112
|
+
if (image) {
|
|
113
|
+
state.images.push(image);
|
|
114
|
+
const imageIndicator = `[Image ${state.images.length}] `;
|
|
115
|
+
state.currentLine += imageIndicator;
|
|
116
|
+
process.stdout.write(imageIndicator);
|
|
117
|
+
console.log(`\n📸 Image ${state.images.length} inserted from clipboard (${image.mimeType})`);
|
|
118
|
+
return { handled: true, shouldRewritePrompt: true };
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return { handled: true };
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Handle Ctrl+C (cancel input)
|
|
125
|
+
*/
|
|
126
|
+
export function handleCtrlC(data, state) {
|
|
127
|
+
process.stdout.write('\n');
|
|
128
|
+
if (state.autocompleteActive) {
|
|
129
|
+
const output = clearAutocompleteUI(state.autocompleteList.length, '');
|
|
130
|
+
process.stdout.write(output);
|
|
131
|
+
}
|
|
132
|
+
return { handled: true, shouldReturn: true, value: null };
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Handle Shift+Enter (add new line)
|
|
136
|
+
*/
|
|
137
|
+
export function handleShiftEnter(data, state) {
|
|
138
|
+
state.lines.push(state.currentLine);
|
|
139
|
+
state.currentLine = '';
|
|
140
|
+
state.isFirstLine = false;
|
|
141
|
+
process.stdout.write('\n');
|
|
142
|
+
state.escapeSequence = '';
|
|
143
|
+
return { handled: true, shouldRewritePrompt: true };
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Handle Enter key (submit or autocomplete selection)
|
|
147
|
+
*/
|
|
148
|
+
export function handleEnter(data, state) {
|
|
149
|
+
// If autocomplete is active, select the item
|
|
150
|
+
if (state.autocompleteActive && state.autocompleteList.length > 0) {
|
|
151
|
+
selectAutocomplete(state);
|
|
152
|
+
return { handled: true, shouldRewritePrompt: true };
|
|
153
|
+
}
|
|
154
|
+
// Empty input
|
|
155
|
+
if (state.currentLine.trim() === '' && state.lines.length === 0) {
|
|
156
|
+
return { handled: true, shouldRewritePrompt: true };
|
|
157
|
+
}
|
|
158
|
+
// Send the message
|
|
159
|
+
if (state.currentLine.trim() !== '') {
|
|
160
|
+
state.lines.push(state.currentLine);
|
|
161
|
+
}
|
|
162
|
+
process.stdout.write('\n');
|
|
163
|
+
const finalText = state.lines.join('\n');
|
|
164
|
+
const finalImages = state.images;
|
|
165
|
+
return {
|
|
166
|
+
handled: true,
|
|
167
|
+
shouldReturn: true,
|
|
168
|
+
value: { text: finalText, images: finalImages },
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Handle Ctrl+P (toggle plan mode)
|
|
173
|
+
*/
|
|
174
|
+
export function handleCtrlP(data, state) {
|
|
175
|
+
state.ui.handleHotkey('toggle-plan-mode');
|
|
176
|
+
return { handled: true, shouldRewritePrompt: true };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Handle Ctrl+H (show hotkey help)
|
|
180
|
+
*/
|
|
181
|
+
export function handleCtrlH(data, state) {
|
|
182
|
+
state.ui.showHotkeyHelp();
|
|
183
|
+
return { handled: true, shouldRewritePrompt: true };
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Handle Ctrl+T (show todos)
|
|
187
|
+
*/
|
|
188
|
+
export function handleCtrlT(data, state) {
|
|
189
|
+
state.ui.handleHotkey('show-todos');
|
|
190
|
+
return { handled: true, shouldRewritePrompt: true };
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Handle Ctrl+S (show mode status)
|
|
194
|
+
*/
|
|
195
|
+
export function handleCtrlS(data, state) {
|
|
196
|
+
state.ui.showModeStatus();
|
|
197
|
+
return { handled: true, shouldRewritePrompt: true };
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Handle Alt+M (show mode status alternative)
|
|
201
|
+
*/
|
|
202
|
+
export function handleAltM(data, state) {
|
|
203
|
+
state.ui.showModeStatus();
|
|
204
|
+
state.escapeSequence = '';
|
|
205
|
+
return { handled: true, shouldRewritePrompt: true };
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Check if @ character should trigger autocomplete
|
|
209
|
+
*/
|
|
210
|
+
function shouldActivateAutocomplete(currentLine, printableData) {
|
|
211
|
+
if (!printableData.includes('@')) {
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
const atPos = currentLine.lastIndexOf('@');
|
|
215
|
+
const beforeAt = atPos > 0 ? currentLine[atPos - 1] : ' ';
|
|
216
|
+
const isWordBoundary = beforeAt === ' ' || beforeAt === '\n' || atPos === 0;
|
|
217
|
+
return isWordBoundary;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Activate autocomplete for @ mentions
|
|
221
|
+
*/
|
|
222
|
+
function activateAutocomplete(state) {
|
|
223
|
+
const queryResult = parseAutocompleteQuery(state.currentLine);
|
|
224
|
+
if (!queryResult.hasQuery) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
const assistants = state.ui['assistantSuggestions'] || [];
|
|
228
|
+
state.autocompleteList = filterAssistants(queryResult.query, assistants);
|
|
229
|
+
state.autocompleteActive = state.autocompleteList.length > 0;
|
|
230
|
+
state.autocompleteIndex = 0;
|
|
231
|
+
state.autocompleteStartPos = queryResult.startPosition;
|
|
232
|
+
if (state.autocompleteActive) {
|
|
233
|
+
const output = renderAutocompleteUI(state.autocompleteList, state.autocompleteIndex, state.currentLine);
|
|
234
|
+
process.stdout.write(output);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Deactivate autocomplete
|
|
239
|
+
*/
|
|
240
|
+
function deactivateAutocomplete(state) {
|
|
241
|
+
const output = clearAutocompleteUI(state.autocompleteList.length, state.currentLine);
|
|
242
|
+
process.stdout.write(output);
|
|
243
|
+
state.autocompleteActive = false;
|
|
244
|
+
state.autocompleteList = [];
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Select autocomplete suggestion and update input line
|
|
248
|
+
*/
|
|
249
|
+
function selectAutocomplete(state) {
|
|
250
|
+
const selectedAssistant = state.autocompleteList[state.autocompleteIndex];
|
|
251
|
+
// Calculate new line with selected suggestion
|
|
252
|
+
const atPos = state.autocompleteStartPos;
|
|
253
|
+
const beforeAt = state.currentLine.slice(0, atPos);
|
|
254
|
+
const newLine = `${beforeAt}@${selectedAssistant.slug} `;
|
|
255
|
+
// Clear autocomplete dropdown lines
|
|
256
|
+
for (let i = 0; i < state.autocompleteList.length; i++) {
|
|
257
|
+
process.stdout.write('\n\x1b[2K'); // Move down and clear line
|
|
258
|
+
}
|
|
259
|
+
// Move cursor back up
|
|
260
|
+
process.stdout.write(`\x1b[${state.autocompleteList.length}A`);
|
|
261
|
+
// Update state
|
|
262
|
+
state.currentLine = newLine;
|
|
263
|
+
state.autocompleteActive = false;
|
|
264
|
+
state.autocompleteList = [];
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Update autocomplete filtering as user types
|
|
268
|
+
*/
|
|
269
|
+
function updateAutocompleteFiltering(state) {
|
|
270
|
+
const queryResult = parseAutocompleteQuery(state.currentLine);
|
|
271
|
+
if (!queryResult.hasQuery) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const assistants = state.ui['assistantSuggestions'] || [];
|
|
275
|
+
state.autocompleteList = filterAssistants(queryResult.query, assistants);
|
|
276
|
+
state.autocompleteIndex = 0;
|
|
277
|
+
if (state.autocompleteList.length === 0) {
|
|
278
|
+
const output = clearAutocompleteUI(1, state.currentLine);
|
|
279
|
+
process.stdout.write(output);
|
|
280
|
+
state.autocompleteActive = false;
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
const output = clearAutocompleteUI(state.autocompleteList.length + 1, state.currentLine) +
|
|
284
|
+
renderAutocompleteUI(state.autocompleteList, state.autocompleteIndex, state.currentLine);
|
|
285
|
+
process.stdout.write(output);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Handle printable text input and paste
|
|
290
|
+
*/
|
|
291
|
+
export function handlePrintableText(data, state) {
|
|
292
|
+
// Filter to printable characters and tabs
|
|
293
|
+
const printableData = data.split('').filter(char => (char.codePointAt(0) ?? 0) >= 32 || char === CONTROL.TAB).join('');
|
|
294
|
+
if (printableData.length === 0) {
|
|
295
|
+
return { handled: false };
|
|
296
|
+
}
|
|
297
|
+
state.currentLine += printableData;
|
|
298
|
+
process.stdout.write(printableData);
|
|
299
|
+
// Handle @ character for autocomplete activation
|
|
300
|
+
if (!state.autocompleteActive && shouldActivateAutocomplete(state.currentLine, printableData)) {
|
|
301
|
+
activateAutocomplete(state);
|
|
302
|
+
return { handled: true };
|
|
303
|
+
}
|
|
304
|
+
// Handle space to deactivate autocomplete
|
|
305
|
+
if (state.autocompleteActive && printableData.includes(' ')) {
|
|
306
|
+
deactivateAutocomplete(state);
|
|
307
|
+
return { handled: true };
|
|
308
|
+
}
|
|
309
|
+
// Update autocomplete filtering if active
|
|
310
|
+
if (state.autocompleteActive) {
|
|
311
|
+
updateAutocompleteFiltering(state);
|
|
312
|
+
}
|
|
313
|
+
return { handled: true };
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Key handler registry organized by priority
|
|
317
|
+
*/
|
|
318
|
+
export const keyHandlers = {
|
|
319
|
+
// Process escape sequences first (highest priority)
|
|
320
|
+
ESCAPE_SEQ: [
|
|
321
|
+
{
|
|
322
|
+
name: 'escape-sequences',
|
|
323
|
+
match: (data, state) => state.escapeSequence.length > 0,
|
|
324
|
+
action: handleEscapeSequences,
|
|
325
|
+
},
|
|
326
|
+
],
|
|
327
|
+
// Critical keys that must be processed before others
|
|
328
|
+
CRITICAL: [
|
|
329
|
+
{
|
|
330
|
+
name: 'ctrl-c',
|
|
331
|
+
match: (data) => data === CONTROL.CTRL_C,
|
|
332
|
+
action: handleCtrlC,
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
name: 'backspace',
|
|
336
|
+
match: (data) => data === CONTROL.DELETE || data === CONTROL.BACKSPACE,
|
|
337
|
+
action: handleBackspace,
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
name: 'shift-enter',
|
|
341
|
+
match: (data, state) => data === NEWLINE.CRLF ||
|
|
342
|
+
data === NEWLINE.LFCR ||
|
|
343
|
+
(!!state.escapeSequence && data === NEWLINE.CR),
|
|
344
|
+
action: handleShiftEnter,
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
name: 'enter',
|
|
348
|
+
match: (data) => data === NEWLINE.CR || data === NEWLINE.LF,
|
|
349
|
+
action: handleEnter,
|
|
350
|
+
},
|
|
351
|
+
],
|
|
352
|
+
// Medium priority keys (hotkeys and special functions)
|
|
353
|
+
MEDIUM: [
|
|
354
|
+
{
|
|
355
|
+
name: 'ctrl-p',
|
|
356
|
+
match: (data) => data === CONTROL.CTRL_P,
|
|
357
|
+
action: handleCtrlP,
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
name: 'ctrl-h',
|
|
361
|
+
match: (data) => data === CONTROL.CTRL_H,
|
|
362
|
+
action: handleCtrlH,
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
name: 'ctrl-t',
|
|
366
|
+
match: (data) => data === CONTROL.CTRL_T,
|
|
367
|
+
action: handleCtrlT,
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
name: 'ctrl-s',
|
|
371
|
+
match: (data) => data === CONTROL.CTRL_S,
|
|
372
|
+
action: handleCtrlS,
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
name: 'alt-m',
|
|
376
|
+
match: (data, state) => data === 'm' && state.escapeSequence.includes(ESC),
|
|
377
|
+
action: handleAltM,
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
name: 'tab',
|
|
381
|
+
match: (data) => data === CONTROL.CTRL_I,
|
|
382
|
+
action: handleTab,
|
|
383
|
+
},
|
|
384
|
+
],
|
|
385
|
+
// Fallback handler for normal text input
|
|
386
|
+
FALLBACK: [
|
|
387
|
+
{
|
|
388
|
+
name: 'printable-text',
|
|
389
|
+
match: (data, state) => !startsWithEscape(data) &&
|
|
390
|
+
state.escapeSequence.length === 0 &&
|
|
391
|
+
(data.length > 1 || (data.length === 1 && ((data.codePointAt(0) ?? 0) >= 32 || data === CONTROL.TAB))),
|
|
392
|
+
action: handlePrintableText,
|
|
393
|
+
},
|
|
394
|
+
],
|
|
395
|
+
};
|
|
396
|
+
/**
|
|
397
|
+
* Process key input through handler registry
|
|
398
|
+
*/
|
|
399
|
+
export async function processKeyInput(data, state) {
|
|
400
|
+
const priorities = ['ESCAPE_SEQ', 'CRITICAL', 'MEDIUM', 'FALLBACK'];
|
|
401
|
+
for (const priority of priorities) {
|
|
402
|
+
const handlers = keyHandlers[priority];
|
|
403
|
+
for (const handler of handlers) {
|
|
404
|
+
if (handler.match(data, state)) {
|
|
405
|
+
const result = await handler.action(data, state);
|
|
406
|
+
if (result.handled) {
|
|
407
|
+
return result;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
// No handler matched
|
|
413
|
+
return { handled: false };
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=keyHandlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyHandlers.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/ui/keyHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mention Utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles parsing and highlighting of @mentions and assistant references in text.
|
|
5
|
+
* Provides centralized regex patterns and highlighting logic for consistent
|
|
6
|
+
* mention handling across the application.
|
|
7
|
+
*/
|
|
8
|
+
/** Default color for mention highlights (#B1B9F9) */
|
|
9
|
+
export declare const DEFAULT_MENTION_COLOR: {
|
|
10
|
+
r: number;
|
|
11
|
+
g: number;
|
|
12
|
+
b: number;
|
|
13
|
+
};
|
|
14
|
+
/** Mention type constants */
|
|
15
|
+
export declare const MENTION_TYPES: {
|
|
16
|
+
readonly SIMPLE: "simple";
|
|
17
|
+
readonly ASSISTANT_REFERENCE: "assistant_reference";
|
|
18
|
+
};
|
|
19
|
+
/** Mention type union from constants */
|
|
20
|
+
export type MentionType = typeof MENTION_TYPES[keyof typeof MENTION_TYPES];
|
|
21
|
+
/** Regex patterns for matching different mention formats */
|
|
22
|
+
export declare const MENTION_PATTERNS: {
|
|
23
|
+
readonly SIMPLE: RegExp;
|
|
24
|
+
readonly ASSISTANT_REFERENCE: RegExp;
|
|
25
|
+
readonly AT_START: RegExp;
|
|
26
|
+
};
|
|
27
|
+
/** Represents a parsed mention in text */
|
|
28
|
+
export interface Mention {
|
|
29
|
+
type: MentionType;
|
|
30
|
+
slug: string;
|
|
31
|
+
fullMatch: string;
|
|
32
|
+
startIndex: number;
|
|
33
|
+
endIndex: number;
|
|
34
|
+
}
|
|
35
|
+
/** Options for customizing mention highlighting */
|
|
36
|
+
export interface MentionHighlightOptions {
|
|
37
|
+
color?: {
|
|
38
|
+
r: number;
|
|
39
|
+
g: number;
|
|
40
|
+
b: number;
|
|
41
|
+
};
|
|
42
|
+
bold?: boolean;
|
|
43
|
+
underline?: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parse all mentions from text
|
|
47
|
+
* @param text - Text to parse for mentions
|
|
48
|
+
* @returns Array of parsed mentions with metadata
|
|
49
|
+
*/
|
|
50
|
+
export declare function parseMentions(text: string): Mention[];
|
|
51
|
+
/**
|
|
52
|
+
* Check if text contains any mentions
|
|
53
|
+
* @param text - Text to check
|
|
54
|
+
* @returns True if text contains mentions
|
|
55
|
+
*/
|
|
56
|
+
export declare function hasMentions(text: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Extract just the assistant slugs from mentions in text
|
|
59
|
+
* @param text - Text to extract slugs from
|
|
60
|
+
* @returns Array of assistant slugs (without @ prefix)
|
|
61
|
+
*/
|
|
62
|
+
export declare function extractMentionSlugs(text: string): string[];
|
|
63
|
+
/**
|
|
64
|
+
* Apply highlight color to a single piece of text
|
|
65
|
+
* @param text - Text to highlight
|
|
66
|
+
* @param options - Highlighting options
|
|
67
|
+
* @returns Highlighted text with ANSI color codes
|
|
68
|
+
*/
|
|
69
|
+
export declare function highlightMention(text: string, options?: MentionHighlightOptions): string;
|
|
70
|
+
/**
|
|
71
|
+
* Highlight all mentions in text
|
|
72
|
+
* @param text - Text containing mentions
|
|
73
|
+
* @param options - Highlighting options
|
|
74
|
+
* @returns Text with all mentions highlighted
|
|
75
|
+
*/
|
|
76
|
+
export declare function highlightMentionsInText(text: string, options?: MentionHighlightOptions): string;
|
|
77
|
+
/**
|
|
78
|
+
* Parse @mention command format (@slug message content)
|
|
79
|
+
* @param text - Text to parse
|
|
80
|
+
* @returns Object with assistantSlug and message, or null if not a mention command
|
|
81
|
+
*/
|
|
82
|
+
export declare function parseAtMentionCommand(text: string): {
|
|
83
|
+
assistantSlug: string;
|
|
84
|
+
message: string;
|
|
85
|
+
} | null;
|
|
86
|
+
//# sourceMappingURL=mentions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mentions.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/ui/mentions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,qDAAqD;AACrD,eAAO,MAAM,qBAAqB;;;;CAA6B,CAAC;AAEhE,6BAA6B;AAC7B,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AAEX,wCAAwC;AACxC,MAAM,MAAM,WAAW,GAAG,OAAO,aAAa,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE3E,4DAA4D;AAC5D,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,0CAA0C;AAC1C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mDAAmD;AACnD,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAqCrD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAG1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,MAAM,CAaxF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,MAAM,CAQ/F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAYrG"}
|