@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.
Files changed (206) hide show
  1. package/README.md +10 -5
  2. package/bin/codemie-claude-acp.js +21 -0
  3. package/bin/codemie.js +13 -0
  4. package/dist/agents/codemie-code/agent.d.ts +23 -5
  5. package/dist/agents/codemie-code/agent.d.ts.map +1 -1
  6. package/dist/agents/codemie-code/agent.js +293 -197
  7. package/dist/agents/codemie-code/agent.js.map +1 -1
  8. package/dist/agents/codemie-code/index.d.ts +1 -1
  9. package/dist/agents/codemie-code/index.d.ts.map +1 -1
  10. package/dist/agents/codemie-code/index.js +9 -6
  11. package/dist/agents/codemie-code/index.js.map +1 -1
  12. package/dist/agents/codemie-code/prompts.d.ts +9 -11
  13. package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
  14. package/dist/agents/codemie-code/prompts.js +43 -16
  15. package/dist/agents/codemie-code/prompts.js.map +1 -1
  16. package/dist/agents/codemie-code/skills/core/SkillDiscovery.d.ts.map +1 -0
  17. package/dist/{skills → agents/codemie-code/skills}/core/SkillDiscovery.js +1 -1
  18. package/dist/agents/codemie-code/skills/core/SkillDiscovery.js.map +1 -0
  19. package/dist/agents/codemie-code/skills/core/SkillManager.d.ts.map +1 -0
  20. package/dist/{skills → agents/codemie-code/skills}/core/SkillManager.js +1 -1
  21. package/dist/agents/codemie-code/skills/core/SkillManager.js.map +1 -0
  22. package/dist/agents/codemie-code/skills/core/types.d.ts.map +1 -0
  23. package/dist/agents/codemie-code/skills/core/types.js.map +1 -0
  24. package/dist/agents/codemie-code/skills/index.d.ts.map +1 -0
  25. package/dist/agents/codemie-code/skills/index.js.map +1 -0
  26. package/dist/agents/codemie-code/skills/utils/content-loader.d.ts.map +1 -0
  27. package/dist/{skills → agents/codemie-code/skills}/utils/content-loader.js +1 -1
  28. package/dist/agents/codemie-code/skills/utils/content-loader.js.map +1 -0
  29. package/dist/agents/codemie-code/skills/utils/frontmatter.d.ts.map +1 -0
  30. package/dist/agents/codemie-code/skills/utils/frontmatter.js.map +1 -0
  31. package/dist/agents/codemie-code/skills/utils/pattern-matcher.d.ts.map +1 -0
  32. package/dist/agents/codemie-code/skills/utils/pattern-matcher.js.map +1 -0
  33. package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -1
  34. package/dist/agents/codemie-code/toolMetadata.js +9 -8
  35. package/dist/agents/codemie-code/toolMetadata.js.map +1 -1
  36. package/dist/agents/codemie-code/tools/assistant-invocation.d.ts +47 -0
  37. package/dist/agents/codemie-code/tools/assistant-invocation.d.ts.map +1 -0
  38. package/dist/agents/codemie-code/tools/assistant-invocation.js +129 -0
  39. package/dist/agents/codemie-code/tools/assistant-invocation.js.map +1 -0
  40. package/dist/agents/codemie-code/tools/index.d.ts +70 -4
  41. package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
  42. package/dist/agents/codemie-code/tools/index.js +57 -44
  43. package/dist/agents/codemie-code/tools/index.js.map +1 -1
  44. package/dist/agents/codemie-code/tools/planning.d.ts +6 -5
  45. package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -1
  46. package/dist/agents/codemie-code/tools/planning.js +12 -10
  47. package/dist/agents/codemie-code/tools/planning.js.map +1 -1
  48. package/dist/agents/codemie-code/types.d.ts +25 -4
  49. package/dist/agents/codemie-code/types.d.ts.map +1 -1
  50. package/dist/agents/codemie-code/types.js +24 -0
  51. package/dist/agents/codemie-code/types.js.map +1 -1
  52. package/dist/agents/codemie-code/ui/autocomplete.d.ts +98 -0
  53. package/dist/agents/codemie-code/ui/autocomplete.d.ts.map +1 -0
  54. package/dist/agents/codemie-code/ui/autocomplete.js +145 -0
  55. package/dist/agents/codemie-code/ui/autocomplete.js.map +1 -0
  56. package/dist/agents/codemie-code/ui/keyHandlers.d.ts +112 -0
  57. package/dist/agents/codemie-code/ui/keyHandlers.d.ts.map +1 -0
  58. package/dist/agents/codemie-code/ui/keyHandlers.js +415 -0
  59. package/dist/agents/codemie-code/ui/keyHandlers.js.map +1 -0
  60. package/dist/agents/codemie-code/ui/mentions.d.ts +86 -0
  61. package/dist/agents/codemie-code/ui/mentions.d.ts.map +1 -0
  62. package/dist/agents/codemie-code/ui/mentions.js +122 -0
  63. package/dist/agents/codemie-code/ui/mentions.js.map +1 -0
  64. package/dist/agents/codemie-code/ui/terminalCodes.d.ts +38 -0
  65. package/dist/agents/codemie-code/ui/terminalCodes.d.ts.map +1 -0
  66. package/dist/agents/codemie-code/ui/terminalCodes.js +42 -0
  67. package/dist/agents/codemie-code/ui/terminalCodes.js.map +1 -0
  68. package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -1
  69. package/dist/agents/codemie-code/ui/todoPanel.js +3 -4
  70. package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -1
  71. package/dist/agents/codemie-code/ui.d.ts +8 -7
  72. package/dist/agents/codemie-code/ui.d.ts.map +1 -1
  73. package/dist/agents/codemie-code/ui.js +87 -145
  74. package/dist/agents/codemie-code/ui.js.map +1 -1
  75. package/dist/agents/core/AgentCLI.d.ts +5 -0
  76. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  77. package/dist/agents/core/AgentCLI.js +22 -0
  78. package/dist/agents/core/AgentCLI.js.map +1 -1
  79. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  80. package/dist/agents/core/BaseAgentAdapter.js +58 -28
  81. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  82. package/dist/agents/core/extension/BaseExtensionInstaller.d.ts +7 -1
  83. package/dist/agents/core/extension/BaseExtensionInstaller.d.ts.map +1 -1
  84. package/dist/agents/core/extension/BaseExtensionInstaller.js +58 -15
  85. package/dist/agents/core/extension/BaseExtensionInstaller.js.map +1 -1
  86. package/dist/agents/core/types.d.ts +17 -0
  87. package/dist/agents/core/types.d.ts.map +1 -1
  88. package/dist/agents/plugins/claude/claude-acp.plugin.d.ts +27 -0
  89. package/dist/agents/plugins/claude/claude-acp.plugin.d.ts.map +1 -0
  90. package/dist/agents/plugins/claude/claude-acp.plugin.js +63 -0
  91. package/dist/agents/plugins/claude/claude-acp.plugin.js.map +1 -0
  92. package/dist/agents/plugins/claude/claude-message-types.d.ts +1 -0
  93. package/dist/agents/plugins/claude/claude-message-types.d.ts.map +1 -1
  94. package/dist/agents/plugins/claude/claude.plugin.d.ts +1 -1
  95. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  96. package/dist/agents/plugins/claude/claude.plugin.js +66 -29
  97. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  98. package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
  99. package/dist/agents/plugins/claude/claude.session.js +14 -7
  100. package/dist/agents/plugins/claude/claude.session.js.map +1 -1
  101. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  102. package/dist/agents/plugins/claude/plugin/commands/codemie-subagents.md +4 -4
  103. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
  104. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +43 -8
  105. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
  106. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
  107. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +68 -40
  108. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
  109. package/dist/agents/registry.d.ts +1 -1
  110. package/dist/agents/registry.d.ts.map +1 -1
  111. package/dist/agents/registry.js +3 -1
  112. package/dist/agents/registry.js.map +1 -1
  113. package/dist/cli/commands/assistants/chat.d.ts +11 -0
  114. package/dist/cli/commands/assistants/chat.d.ts.map +1 -0
  115. package/dist/cli/commands/assistants/chat.js +201 -0
  116. package/dist/cli/commands/assistants/chat.js.map +1 -0
  117. package/dist/cli/commands/assistants/constants.d.ts +81 -0
  118. package/dist/cli/commands/assistants/constants.d.ts.map +1 -0
  119. package/dist/cli/commands/assistants/constants.js +75 -0
  120. package/dist/cli/commands/assistants/constants.js.map +1 -0
  121. package/dist/cli/commands/assistants/generators/claude-agent-generator.d.ts +26 -0
  122. package/dist/cli/commands/assistants/generators/claude-agent-generator.d.ts.map +1 -0
  123. package/dist/cli/commands/assistants/generators/claude-agent-generator.js +115 -0
  124. package/dist/cli/commands/assistants/generators/claude-agent-generator.js.map +1 -0
  125. package/dist/cli/commands/assistants/index.d.ts +11 -0
  126. package/dist/cli/commands/assistants/index.d.ts.map +1 -0
  127. package/dist/cli/commands/assistants/index.js +28 -0
  128. package/dist/cli/commands/assistants/index.js.map +1 -0
  129. package/dist/cli/commands/assistants/list.d.ts +11 -0
  130. package/dist/cli/commands/assistants/list.d.ts.map +1 -0
  131. package/dist/cli/commands/assistants/list.js +323 -0
  132. package/dist/cli/commands/assistants/list.js.map +1 -0
  133. package/dist/cli/commands/install.d.ts.map +1 -1
  134. package/dist/cli/commands/install.js +26 -6
  135. package/dist/cli/commands/install.js.map +1 -1
  136. package/dist/cli/commands/self-update.d.ts +3 -0
  137. package/dist/cli/commands/self-update.d.ts.map +1 -0
  138. package/dist/cli/commands/self-update.js +55 -0
  139. package/dist/cli/commands/self-update.js.map +1 -0
  140. package/dist/cli/commands/skill.js +1 -1
  141. package/dist/cli/commands/skill.js.map +1 -1
  142. package/dist/cli/commands/update.d.ts.map +1 -1
  143. package/dist/cli/commands/update.js +8 -0
  144. package/dist/cli/commands/update.js.map +1 -1
  145. package/dist/cli/index.d.ts.map +1 -1
  146. package/dist/cli/index.js +8 -4
  147. package/dist/cli/index.js.map +1 -1
  148. package/dist/env/types.d.ts +13 -0
  149. package/dist/env/types.d.ts.map +1 -1
  150. package/dist/env/types.js +1 -1
  151. package/dist/env/types.js.map +1 -1
  152. package/dist/utils/auth.d.ts +22 -0
  153. package/dist/utils/auth.d.ts.map +1 -0
  154. package/dist/utils/auth.js +50 -0
  155. package/dist/utils/auth.js.map +1 -0
  156. package/dist/utils/cli-updater.d.ts +70 -0
  157. package/dist/utils/cli-updater.d.ts.map +1 -0
  158. package/dist/utils/cli-updater.js +339 -0
  159. package/dist/utils/cli-updater.js.map +1 -0
  160. package/dist/utils/config.d.ts +6 -1
  161. package/dist/utils/config.d.ts.map +1 -1
  162. package/dist/utils/config.js +13 -0
  163. package/dist/utils/config.js.map +1 -1
  164. package/dist/utils/native-installer.d.ts.map +1 -1
  165. package/dist/utils/native-installer.js +85 -17
  166. package/dist/utils/native-installer.js.map +1 -1
  167. package/dist/utils/processes.js +1 -1
  168. package/dist/utils/profile.d.ts +2 -0
  169. package/dist/utils/profile.d.ts.map +1 -1
  170. package/dist/utils/profile.js +5 -0
  171. package/dist/utils/profile.js.map +1 -1
  172. package/dist/utils/sdk-client.d.ts +15 -0
  173. package/dist/utils/sdk-client.d.ts.map +1 -0
  174. package/dist/utils/sdk-client.js +92 -0
  175. package/dist/utils/sdk-client.js.map +1 -0
  176. package/dist/utils/windows-path.d.ts +54 -0
  177. package/dist/utils/windows-path.d.ts.map +1 -0
  178. package/dist/utils/windows-path.js +347 -0
  179. package/dist/utils/windows-path.js.map +1 -0
  180. package/package.json +7 -2
  181. package/dist/agents/plugins/claude/plugin/commands/codemie-pr.md +0 -25
  182. package/dist/skills/core/SkillDiscovery.d.ts.map +0 -1
  183. package/dist/skills/core/SkillDiscovery.js.map +0 -1
  184. package/dist/skills/core/SkillManager.d.ts.map +0 -1
  185. package/dist/skills/core/SkillManager.js.map +0 -1
  186. package/dist/skills/core/types.d.ts.map +0 -1
  187. package/dist/skills/core/types.js.map +0 -1
  188. package/dist/skills/index.d.ts.map +0 -1
  189. package/dist/skills/index.js.map +0 -1
  190. package/dist/skills/utils/content-loader.d.ts.map +0 -1
  191. package/dist/skills/utils/content-loader.js.map +0 -1
  192. package/dist/skills/utils/frontmatter.d.ts.map +0 -1
  193. package/dist/skills/utils/frontmatter.js.map +0 -1
  194. package/dist/skills/utils/pattern-matcher.d.ts.map +0 -1
  195. package/dist/skills/utils/pattern-matcher.js.map +0 -1
  196. /package/dist/{skills → agents/codemie-code/skills}/core/SkillDiscovery.d.ts +0 -0
  197. /package/dist/{skills → agents/codemie-code/skills}/core/SkillManager.d.ts +0 -0
  198. /package/dist/{skills → agents/codemie-code/skills}/core/types.d.ts +0 -0
  199. /package/dist/{skills → agents/codemie-code/skills}/core/types.js +0 -0
  200. /package/dist/{skills → agents/codemie-code/skills}/index.d.ts +0 -0
  201. /package/dist/{skills → agents/codemie-code/skills}/index.js +0 -0
  202. /package/dist/{skills → agents/codemie-code/skills}/utils/content-loader.d.ts +0 -0
  203. /package/dist/{skills → agents/codemie-code/skills}/utils/frontmatter.d.ts +0 -0
  204. /package/dist/{skills → agents/codemie-code/skills}/utils/frontmatter.js +0 -0
  205. /package/dist/{skills → agents/codemie-code/skills}/utils/pattern-matcher.d.ts +0 -0
  206. /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"}