attocode 0.1.5 → 0.1.7

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 (187) hide show
  1. package/CHANGELOG.md +27 -2
  2. package/README.md +47 -0
  3. package/dist/src/adapters.d.ts +21 -1
  4. package/dist/src/adapters.d.ts.map +1 -1
  5. package/dist/src/adapters.js +29 -1
  6. package/dist/src/adapters.js.map +1 -1
  7. package/dist/src/agent.d.ts +69 -3
  8. package/dist/src/agent.d.ts.map +1 -1
  9. package/dist/src/agent.js +692 -42
  10. package/dist/src/agent.js.map +1 -1
  11. package/dist/src/commands/agents-commands.d.ts.map +1 -1
  12. package/dist/src/commands/agents-commands.js +18 -4
  13. package/dist/src/commands/agents-commands.js.map +1 -1
  14. package/dist/src/commands/handler.d.ts.map +1 -1
  15. package/dist/src/commands/handler.js +120 -5
  16. package/dist/src/commands/handler.js.map +1 -1
  17. package/dist/src/core/index.d.ts +1 -6
  18. package/dist/src/core/index.d.ts.map +1 -1
  19. package/dist/src/core/index.js +4 -7
  20. package/dist/src/core/index.js.map +1 -1
  21. package/dist/src/defaults.d.ts +31 -1
  22. package/dist/src/defaults.d.ts.map +1 -1
  23. package/dist/src/defaults.js +52 -2
  24. package/dist/src/defaults.js.map +1 -1
  25. package/dist/src/integrations/agent-registry.d.ts.map +1 -1
  26. package/dist/src/integrations/agent-registry.js +12 -5
  27. package/dist/src/integrations/agent-registry.js.map +1 -1
  28. package/dist/src/integrations/codebase-context.d.ts +163 -0
  29. package/dist/src/integrations/codebase-context.d.ts.map +1 -1
  30. package/dist/src/integrations/codebase-context.js +462 -0
  31. package/dist/src/integrations/codebase-context.js.map +1 -1
  32. package/dist/src/integrations/economics.js +2 -2
  33. package/dist/src/integrations/economics.js.map +1 -1
  34. package/dist/src/integrations/file-change-tracker.d.ts +1 -0
  35. package/dist/src/integrations/file-change-tracker.d.ts.map +1 -1
  36. package/dist/src/integrations/file-change-tracker.js +30 -12
  37. package/dist/src/integrations/file-change-tracker.js.map +1 -1
  38. package/dist/src/integrations/graph-visualization.d.ts +72 -0
  39. package/dist/src/integrations/graph-visualization.d.ts.map +1 -0
  40. package/dist/src/integrations/graph-visualization.js +383 -0
  41. package/dist/src/integrations/graph-visualization.js.map +1 -0
  42. package/dist/src/integrations/index.d.ts +3 -1
  43. package/dist/src/integrations/index.d.ts.map +1 -1
  44. package/dist/src/integrations/index.js +4 -0
  45. package/dist/src/integrations/index.js.map +1 -1
  46. package/dist/src/integrations/memory.d.ts +8 -0
  47. package/dist/src/integrations/memory.d.ts.map +1 -1
  48. package/dist/src/integrations/memory.js +23 -0
  49. package/dist/src/integrations/memory.js.map +1 -1
  50. package/dist/src/integrations/pending-plan.d.ts +26 -1
  51. package/dist/src/integrations/pending-plan.d.ts.map +1 -1
  52. package/dist/src/integrations/pending-plan.js +131 -3
  53. package/dist/src/integrations/pending-plan.js.map +1 -1
  54. package/dist/src/integrations/planning.d.ts +19 -0
  55. package/dist/src/integrations/planning.d.ts.map +1 -1
  56. package/dist/src/integrations/planning.js +78 -4
  57. package/dist/src/integrations/planning.js.map +1 -1
  58. package/dist/src/integrations/safety.d.ts +4 -0
  59. package/dist/src/integrations/safety.d.ts.map +1 -1
  60. package/dist/src/integrations/safety.js +46 -7
  61. package/dist/src/integrations/safety.js.map +1 -1
  62. package/dist/src/integrations/sqlite-store.d.ts.map +1 -1
  63. package/dist/src/integrations/sqlite-store.js +24 -2
  64. package/dist/src/integrations/sqlite-store.js.map +1 -1
  65. package/dist/src/integrations/task-manager.d.ts +132 -0
  66. package/dist/src/integrations/task-manager.d.ts.map +1 -0
  67. package/dist/src/integrations/task-manager.js +309 -0
  68. package/dist/src/integrations/task-manager.js.map +1 -0
  69. package/dist/src/modes/tui.d.ts.map +1 -1
  70. package/dist/src/modes/tui.js +9 -0
  71. package/dist/src/modes/tui.js.map +1 -1
  72. package/dist/src/modes.d.ts +30 -0
  73. package/dist/src/modes.d.ts.map +1 -1
  74. package/dist/src/modes.js +130 -2
  75. package/dist/src/modes.js.map +1 -1
  76. package/dist/src/providers/adapters/openai.d.ts +46 -2
  77. package/dist/src/providers/adapters/openai.d.ts.map +1 -1
  78. package/dist/src/providers/adapters/openai.js +221 -21
  79. package/dist/src/providers/adapters/openai.js.map +1 -1
  80. package/dist/src/providers/llm-resilience.d.ts +8 -0
  81. package/dist/src/providers/llm-resilience.d.ts.map +1 -1
  82. package/dist/src/providers/llm-resilience.js +36 -0
  83. package/dist/src/providers/llm-resilience.js.map +1 -1
  84. package/dist/src/tools/agent.d.ts +38 -1
  85. package/dist/src/tools/agent.d.ts.map +1 -1
  86. package/dist/src/tools/agent.js +152 -2
  87. package/dist/src/tools/agent.js.map +1 -1
  88. package/dist/src/tools/file.d.ts.map +1 -1
  89. package/dist/src/tools/file.js +17 -3
  90. package/dist/src/tools/file.js.map +1 -1
  91. package/dist/src/tools/tasks.d.ts +32 -0
  92. package/dist/src/tools/tasks.d.ts.map +1 -0
  93. package/dist/src/tools/tasks.js +334 -0
  94. package/dist/src/tools/tasks.js.map +1 -0
  95. package/dist/src/tracing/trace-collector.d.ts +81 -0
  96. package/dist/src/tracing/trace-collector.d.ts.map +1 -1
  97. package/dist/src/tracing/trace-collector.js +216 -4
  98. package/dist/src/tracing/trace-collector.js.map +1 -1
  99. package/dist/src/tracing/types.d.ts +8 -0
  100. package/dist/src/tracing/types.d.ts.map +1 -1
  101. package/dist/src/tracing/types.js.map +1 -1
  102. package/dist/src/tui/app.d.ts.map +1 -1
  103. package/dist/src/tui/app.js +503 -90
  104. package/dist/src/tui/app.js.map +1 -1
  105. package/dist/src/tui/components/ActiveAgentsPanel.d.ts +45 -0
  106. package/dist/src/tui/components/ActiveAgentsPanel.d.ts.map +1 -0
  107. package/dist/src/tui/components/ActiveAgentsPanel.js +121 -0
  108. package/dist/src/tui/components/ActiveAgentsPanel.js.map +1 -0
  109. package/dist/src/tui/components/CollapsibleDiffView.d.ts +49 -0
  110. package/dist/src/tui/components/CollapsibleDiffView.d.ts.map +1 -0
  111. package/dist/src/tui/components/CollapsibleDiffView.js +302 -0
  112. package/dist/src/tui/components/CollapsibleDiffView.js.map +1 -0
  113. package/dist/src/tui/components/DiffView.d.ts +55 -0
  114. package/dist/src/tui/components/DiffView.d.ts.map +1 -0
  115. package/dist/src/tui/components/DiffView.js +356 -0
  116. package/dist/src/tui/components/DiffView.js.map +1 -0
  117. package/dist/src/tui/components/ErrorBoundary.d.ts +63 -0
  118. package/dist/src/tui/components/ErrorBoundary.d.ts.map +1 -0
  119. package/dist/src/tui/components/ErrorBoundary.js +88 -0
  120. package/dist/src/tui/components/ErrorBoundary.js.map +1 -0
  121. package/dist/src/tui/components/FileChangeSummary.d.ts +48 -0
  122. package/dist/src/tui/components/FileChangeSummary.d.ts.map +1 -0
  123. package/dist/src/tui/components/FileChangeSummary.js +152 -0
  124. package/dist/src/tui/components/FileChangeSummary.js.map +1 -0
  125. package/dist/src/tui/components/SideBySideDiff.d.ts +62 -0
  126. package/dist/src/tui/components/SideBySideDiff.d.ts.map +1 -0
  127. package/dist/src/tui/components/SideBySideDiff.js +320 -0
  128. package/dist/src/tui/components/SideBySideDiff.js.map +1 -0
  129. package/dist/src/tui/components/SyntaxText.d.ts +47 -0
  130. package/dist/src/tui/components/SyntaxText.d.ts.map +1 -0
  131. package/dist/src/tui/components/SyntaxText.js +43 -0
  132. package/dist/src/tui/components/SyntaxText.js.map +1 -0
  133. package/dist/src/tui/components/TasksPanel.d.ts +25 -0
  134. package/dist/src/tui/components/TasksPanel.d.ts.map +1 -0
  135. package/dist/src/tui/components/TasksPanel.js +101 -0
  136. package/dist/src/tui/components/TasksPanel.js.map +1 -0
  137. package/dist/src/tui/components/index.d.ts +8 -0
  138. package/dist/src/tui/components/index.d.ts.map +1 -1
  139. package/dist/src/tui/components/index.js +13 -0
  140. package/dist/src/tui/components/index.js.map +1 -1
  141. package/dist/src/tui/hooks/index.d.ts +7 -0
  142. package/dist/src/tui/hooks/index.d.ts.map +1 -0
  143. package/dist/src/tui/hooks/index.js +7 -0
  144. package/dist/src/tui/hooks/index.js.map +1 -0
  145. package/dist/src/tui/hooks/useMessagePruning.d.ts +114 -0
  146. package/dist/src/tui/hooks/useMessagePruning.d.ts.map +1 -0
  147. package/dist/src/tui/hooks/useMessagePruning.js +127 -0
  148. package/dist/src/tui/hooks/useMessagePruning.js.map +1 -0
  149. package/dist/src/tui/index.d.ts +3 -0
  150. package/dist/src/tui/index.d.ts.map +1 -1
  151. package/dist/src/tui/index.js +9 -0
  152. package/dist/src/tui/index.js.map +1 -1
  153. package/dist/src/tui/syntax/index.d.ts +12 -0
  154. package/dist/src/tui/syntax/index.d.ts.map +1 -0
  155. package/dist/src/tui/syntax/index.js +14 -0
  156. package/dist/src/tui/syntax/index.js.map +1 -0
  157. package/dist/src/tui/syntax/languages/bash.d.ts +8 -0
  158. package/dist/src/tui/syntax/languages/bash.d.ts.map +1 -0
  159. package/dist/src/tui/syntax/languages/bash.js +296 -0
  160. package/dist/src/tui/syntax/languages/bash.js.map +1 -0
  161. package/dist/src/tui/syntax/languages/javascript.d.ts +8 -0
  162. package/dist/src/tui/syntax/languages/javascript.d.ts.map +1 -0
  163. package/dist/src/tui/syntax/languages/javascript.js +253 -0
  164. package/dist/src/tui/syntax/languages/javascript.js.map +1 -0
  165. package/dist/src/tui/syntax/languages/json.d.ts +8 -0
  166. package/dist/src/tui/syntax/languages/json.d.ts.map +1 -0
  167. package/dist/src/tui/syntax/languages/json.js +112 -0
  168. package/dist/src/tui/syntax/languages/json.js.map +1 -0
  169. package/dist/src/tui/syntax/languages/python.d.ts +8 -0
  170. package/dist/src/tui/syntax/languages/python.d.ts.map +1 -0
  171. package/dist/src/tui/syntax/languages/python.js +232 -0
  172. package/dist/src/tui/syntax/languages/python.js.map +1 -0
  173. package/dist/src/tui/syntax/lexer.d.ts +51 -0
  174. package/dist/src/tui/syntax/lexer.d.ts.map +1 -0
  175. package/dist/src/tui/syntax/lexer.js +131 -0
  176. package/dist/src/tui/syntax/lexer.js.map +1 -0
  177. package/dist/src/tui/utils/index.d.ts +7 -0
  178. package/dist/src/tui/utils/index.d.ts.map +1 -0
  179. package/dist/src/tui/utils/index.js +7 -0
  180. package/dist/src/tui/utils/index.js.map +1 -0
  181. package/dist/src/tui/utils/keyboard.d.ts +123 -0
  182. package/dist/src/tui/utils/keyboard.d.ts.map +1 -0
  183. package/dist/src/tui/utils/keyboard.js +185 -0
  184. package/dist/src/tui/utils/keyboard.js.map +1 -0
  185. package/dist/src/types.d.ts +73 -0
  186. package/dist/src/types.d.ts.map +1 -1
  187. package/package.json +4 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tui/syntax/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mBAAmB;AACnB,OAAO,EAIL,QAAQ,EACR,cAAc,EACd,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,qDAAqD;AACrD,OAAO,2BAA2B,CAAC;AACnC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,qBAAqB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Bash/Shell Tokenizer
3
+ *
4
+ * Handles bash, sh, zsh syntax highlighting.
5
+ * Produces tokens for: keywords, strings, comments, variables, operators.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=bash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../../../src/tui/syntax/languages/bash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,296 @@
1
+ /**
2
+ * Bash/Shell Tokenizer
3
+ *
4
+ * Handles bash, sh, zsh syntax highlighting.
5
+ * Produces tokens for: keywords, strings, comments, variables, operators.
6
+ */
7
+ import { registerTokenizer } from '../lexer.js';
8
+ // =============================================================================
9
+ // PATTERNS
10
+ // =============================================================================
11
+ const KEYWORDS = new Set([
12
+ // Control flow
13
+ 'if', 'then', 'else', 'elif', 'fi',
14
+ 'case', 'esac', 'in',
15
+ 'for', 'while', 'until', 'do', 'done',
16
+ 'select',
17
+ // Functions
18
+ 'function',
19
+ // Builtins
20
+ 'break', 'continue', 'return', 'exit',
21
+ 'source', 'export', 'local', 'readonly', 'unset',
22
+ 'eval', 'exec', 'shift', 'trap', 'wait',
23
+ 'true', 'false',
24
+ ]);
25
+ const COMMANDS = new Set([
26
+ // Common commands
27
+ 'echo', 'printf', 'read', 'cd', 'pwd', 'ls', 'cp', 'mv', 'rm', 'mkdir', 'rmdir',
28
+ 'cat', 'head', 'tail', 'less', 'more', 'grep', 'sed', 'awk', 'sort', 'uniq',
29
+ 'find', 'xargs', 'wc', 'cut', 'tr', 'tee', 'diff', 'patch',
30
+ 'chmod', 'chown', 'chgrp', 'touch', 'ln', 'file', 'stat',
31
+ 'ps', 'kill', 'top', 'bg', 'fg', 'jobs', 'nohup',
32
+ 'curl', 'wget', 'ssh', 'scp', 'rsync',
33
+ 'git', 'npm', 'node', 'python', 'pip', 'make', 'docker',
34
+ 'sudo', 'su', 'which', 'whereis', 'type', 'alias', 'set',
35
+ 'test', '[', '[[',
36
+ ]);
37
+ const OPERATORS = /^(?:&&|\|\||;;|<<-?|>>|[|&;<>])/;
38
+ const VARIABLE = /^\$(?:[a-zA-Z_][a-zA-Z0-9_]*|\{[^}]+\}|[0-9@#?$!*-])/;
39
+ const NUMBER = /^(?:0[xX][0-9a-fA-F]+|0[0-7]+|[0-9]+)/;
40
+ const IDENTIFIER = /^[a-zA-Z_][a-zA-Z0-9_]*/;
41
+ const WHITESPACE = /^[ \t]+/;
42
+ // =============================================================================
43
+ // TOKENIZER
44
+ // =============================================================================
45
+ function tokenizeBash(code) {
46
+ const tokens = [];
47
+ let pos = 0;
48
+ let lineStart = true;
49
+ while (pos < code.length) {
50
+ const remaining = code.slice(pos);
51
+ let matched = false;
52
+ // Comment
53
+ if (remaining[0] === '#' && (lineStart || /^[ \t]$/.test(code[pos - 1] ?? ''))) {
54
+ const endOfLine = remaining.indexOf('\n');
55
+ const commentEnd = endOfLine === -1 ? remaining.length : endOfLine;
56
+ tokens.push({ type: 'comment', content: remaining.slice(0, commentEnd) });
57
+ pos += commentEnd;
58
+ matched = true;
59
+ }
60
+ // Heredoc (simplified - just match the delimiter)
61
+ else if (/^<<-?'?(\w+)'?/.test(remaining)) {
62
+ const match = remaining.match(/^<<-?'?(\w+)'?/);
63
+ tokens.push({ type: 'operator', content: match[0] });
64
+ pos += match[0].length;
65
+ matched = true;
66
+ }
67
+ // Double-quoted string (allows variable interpolation)
68
+ else if (remaining[0] === '"') {
69
+ const result = matchDoubleQuotedString(remaining);
70
+ tokens.push(...result.tokens);
71
+ pos += result.length;
72
+ matched = true;
73
+ }
74
+ // Single-quoted string (no interpolation)
75
+ else if (remaining[0] === "'") {
76
+ let end = 1;
77
+ while (end < remaining.length && remaining[end] !== "'") {
78
+ end++;
79
+ }
80
+ if (end < remaining.length)
81
+ end++; // Include closing quote
82
+ tokens.push({ type: 'string', content: remaining.slice(0, end) });
83
+ pos += end;
84
+ matched = true;
85
+ }
86
+ // ANSI-C quoted string: $'...'
87
+ else if (remaining.startsWith("$'")) {
88
+ let end = 2;
89
+ while (end < remaining.length) {
90
+ if (remaining[end] === '\\' && end + 1 < remaining.length) {
91
+ end += 2;
92
+ }
93
+ else if (remaining[end] === "'") {
94
+ end++;
95
+ break;
96
+ }
97
+ else {
98
+ end++;
99
+ }
100
+ }
101
+ tokens.push({ type: 'string', content: remaining.slice(0, end) });
102
+ pos += end;
103
+ matched = true;
104
+ }
105
+ // Variable
106
+ else if (VARIABLE.test(remaining)) {
107
+ const match = remaining.match(VARIABLE);
108
+ tokens.push({ type: 'number', content: match[0] }); // Use 'number' for variables (orange)
109
+ pos += match[0].length;
110
+ matched = true;
111
+ }
112
+ // Command substitution: $(...)
113
+ else if (remaining.startsWith('$(')) {
114
+ tokens.push({ type: 'operator', content: '$(' });
115
+ pos += 2;
116
+ matched = true;
117
+ }
118
+ // Backtick command substitution
119
+ else if (remaining[0] === '`') {
120
+ let end = 1;
121
+ while (end < remaining.length && remaining[end] !== '`') {
122
+ if (remaining[end] === '\\' && end + 1 < remaining.length) {
123
+ end += 2;
124
+ }
125
+ else {
126
+ end++;
127
+ }
128
+ }
129
+ if (end < remaining.length)
130
+ end++;
131
+ tokens.push({ type: 'string', content: remaining.slice(0, end) });
132
+ pos += end;
133
+ matched = true;
134
+ }
135
+ // Number
136
+ else if (NUMBER.test(remaining) && (lineStart || /[^a-zA-Z_]/.test(code[pos - 1] ?? ''))) {
137
+ const match = remaining.match(NUMBER);
138
+ tokens.push({ type: 'number', content: match[0] });
139
+ pos += match[0].length;
140
+ matched = true;
141
+ }
142
+ // Identifier / Keyword / Command
143
+ else if (IDENTIFIER.test(remaining)) {
144
+ const match = remaining.match(IDENTIFIER);
145
+ const word = match[0];
146
+ // Determine token type
147
+ let type;
148
+ if (KEYWORDS.has(word)) {
149
+ type = 'keyword';
150
+ }
151
+ else if (lineStart && COMMANDS.has(word)) {
152
+ type = 'function';
153
+ }
154
+ else if (COMMANDS.has(word)) {
155
+ type = 'function';
156
+ }
157
+ else {
158
+ type = 'plain';
159
+ }
160
+ tokens.push({ type, content: word });
161
+ pos += word.length;
162
+ matched = true;
163
+ }
164
+ // Operators
165
+ else if (OPERATORS.test(remaining)) {
166
+ const match = remaining.match(OPERATORS);
167
+ tokens.push({ type: 'operator', content: match[0] });
168
+ pos += match[0].length;
169
+ matched = true;
170
+ }
171
+ // Whitespace
172
+ else if (WHITESPACE.test(remaining)) {
173
+ const match = remaining.match(WHITESPACE);
174
+ tokens.push({ type: 'plain', content: match[0] });
175
+ pos += match[0].length;
176
+ lineStart = false;
177
+ matched = true;
178
+ }
179
+ // Newline
180
+ else if (remaining[0] === '\n') {
181
+ tokens.push({ type: 'plain', content: '\n' });
182
+ pos++;
183
+ lineStart = true;
184
+ matched = true;
185
+ }
186
+ // Punctuation
187
+ else if (/^[{}[\]();=]/.test(remaining)) {
188
+ tokens.push({ type: 'plain', content: remaining[0] });
189
+ pos++;
190
+ matched = true;
191
+ }
192
+ // Fallback
193
+ if (!matched) {
194
+ tokens.push({ type: 'plain', content: remaining[0] });
195
+ pos++;
196
+ }
197
+ // Track line start
198
+ if (remaining[0] !== ' ' && remaining[0] !== '\t' && remaining[0] !== '\n') {
199
+ lineStart = false;
200
+ }
201
+ }
202
+ return mergeAdjacentTokens(tokens);
203
+ }
204
+ // =============================================================================
205
+ // HELPERS
206
+ // =============================================================================
207
+ /**
208
+ * Match a double-quoted string with variable interpolation.
209
+ */
210
+ function matchDoubleQuotedString(code) {
211
+ const tokens = [];
212
+ let pos = 1; // Skip opening quote
213
+ let stringStart = 0;
214
+ tokens.push({ type: 'string', content: '"' });
215
+ while (pos < code.length) {
216
+ // Escaped character
217
+ if (code[pos] === '\\' && pos + 1 < code.length) {
218
+ pos += 2;
219
+ continue;
220
+ }
221
+ // Variable
222
+ if (code[pos] === '$') {
223
+ // Push string content before variable
224
+ if (pos > stringStart + 1) {
225
+ tokens.push({ type: 'string', content: code.slice(stringStart + 1, pos) });
226
+ }
227
+ // Match variable
228
+ const remaining = code.slice(pos);
229
+ const varMatch = remaining.match(VARIABLE);
230
+ if (varMatch) {
231
+ tokens.push({ type: 'number', content: varMatch[0] });
232
+ pos += varMatch[0].length;
233
+ stringStart = pos - 1;
234
+ continue;
235
+ }
236
+ // $(command)
237
+ if (remaining.startsWith('$(')) {
238
+ let depth = 1;
239
+ let end = 2;
240
+ while (end < remaining.length && depth > 0) {
241
+ if (remaining[end] === '(')
242
+ depth++;
243
+ else if (remaining[end] === ')')
244
+ depth--;
245
+ end++;
246
+ }
247
+ tokens.push({ type: 'operator', content: remaining.slice(0, end) });
248
+ pos += end;
249
+ stringStart = pos - 1;
250
+ continue;
251
+ }
252
+ }
253
+ // Closing quote
254
+ if (code[pos] === '"') {
255
+ if (pos > stringStart + 1) {
256
+ tokens.push({ type: 'string', content: code.slice(stringStart + 1, pos) });
257
+ }
258
+ tokens.push({ type: 'string', content: '"' });
259
+ return { tokens, length: pos + 1 };
260
+ }
261
+ pos++;
262
+ }
263
+ // Unterminated string
264
+ if (pos > stringStart + 1) {
265
+ tokens.push({ type: 'string', content: code.slice(stringStart + 1, pos) });
266
+ }
267
+ return { tokens, length: pos };
268
+ }
269
+ /**
270
+ * Merge adjacent tokens of the same type.
271
+ */
272
+ function mergeAdjacentTokens(tokens) {
273
+ if (tokens.length === 0)
274
+ return tokens;
275
+ const merged = [];
276
+ let current = tokens[0];
277
+ for (let i = 1; i < tokens.length; i++) {
278
+ if (tokens[i].type === current.type) {
279
+ current = { type: current.type, content: current.content + tokens[i].content };
280
+ }
281
+ else {
282
+ merged.push(current);
283
+ current = tokens[i];
284
+ }
285
+ }
286
+ merged.push(current);
287
+ return merged;
288
+ }
289
+ // =============================================================================
290
+ // REGISTER
291
+ // =============================================================================
292
+ registerTokenizer('bash', tokenizeBash);
293
+ registerTokenizer('sh', tokenizeBash);
294
+ registerTokenizer('shell', tokenizeBash);
295
+ registerTokenizer('zsh', tokenizeBash);
296
+ //# sourceMappingURL=bash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../../../src/tui/syntax/languages/bash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * JavaScript/TypeScript Tokenizer
3
+ *
4
+ * Handles JS, JSX, TS, TSX syntax highlighting.
5
+ * Produces tokens for: keywords, strings, comments, numbers, functions, types, operators.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=javascript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../../../../src/tui/syntax/languages/javascript.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,253 @@
1
+ /**
2
+ * JavaScript/TypeScript Tokenizer
3
+ *
4
+ * Handles JS, JSX, TS, TSX syntax highlighting.
5
+ * Produces tokens for: keywords, strings, comments, numbers, functions, types, operators.
6
+ */
7
+ import { registerTokenizer } from '../lexer.js';
8
+ // =============================================================================
9
+ // PATTERNS
10
+ // =============================================================================
11
+ const KEYWORDS = new Set([
12
+ // Declarations
13
+ 'const', 'let', 'var', 'function', 'class', 'interface', 'type', 'enum', 'namespace',
14
+ // Control flow
15
+ 'if', 'else', 'switch', 'case', 'default', 'break', 'continue',
16
+ 'for', 'while', 'do', 'in', 'of',
17
+ 'try', 'catch', 'finally', 'throw',
18
+ 'return', 'yield',
19
+ // Modules
20
+ 'import', 'export', 'from', 'as', 'default',
21
+ // Async
22
+ 'async', 'await',
23
+ // OOP
24
+ 'new', 'this', 'super', 'extends', 'implements', 'static', 'get', 'set',
25
+ 'public', 'private', 'protected', 'readonly', 'abstract', 'override',
26
+ // Operators
27
+ 'typeof', 'instanceof', 'delete', 'void',
28
+ // Values
29
+ 'true', 'false', 'null', 'undefined', 'NaN', 'Infinity',
30
+ // TypeScript
31
+ 'declare', 'module', 'keyof', 'infer', 'satisfies', 'is', 'asserts',
32
+ ]);
33
+ const OPERATORS = /^(?:[+\-*/%&|^!~<>=?:]+|\.{3}|=>)/;
34
+ const NUMBER = /^(?:0[xX][0-9a-fA-F_]+|0[oO][0-7_]+|0[bB][01_]+|(?:\d[\d_]*\.?[\d_]*|\.\d[\d_]*)(?:[eE][+-]?\d[\d_]*)?n?)/;
35
+ const IDENTIFIER = /^[a-zA-Z_$][a-zA-Z0-9_$]*/;
36
+ const WHITESPACE = /^[ \t]+/;
37
+ // =============================================================================
38
+ // TOKENIZER
39
+ // =============================================================================
40
+ function tokenizeJavaScript(code) {
41
+ const tokens = [];
42
+ let pos = 0;
43
+ while (pos < code.length) {
44
+ const remaining = code.slice(pos);
45
+ let matched = false;
46
+ // Single-line comment
47
+ if (remaining.startsWith('//')) {
48
+ const endOfLine = remaining.indexOf('\n');
49
+ const commentEnd = endOfLine === -1 ? remaining.length : endOfLine;
50
+ tokens.push({ type: 'comment', content: remaining.slice(0, commentEnd) });
51
+ pos += commentEnd;
52
+ matched = true;
53
+ }
54
+ // Multi-line comment
55
+ else if (remaining.startsWith('/*')) {
56
+ const endComment = remaining.indexOf('*/', 2);
57
+ const commentEnd = endComment === -1 ? remaining.length : endComment + 2;
58
+ tokens.push({ type: 'comment', content: remaining.slice(0, commentEnd) });
59
+ pos += commentEnd;
60
+ matched = true;
61
+ }
62
+ // Template literal
63
+ else if (remaining[0] === '`') {
64
+ const result = matchTemplateLiteral(remaining);
65
+ tokens.push(...result.tokens);
66
+ pos += result.length;
67
+ matched = true;
68
+ }
69
+ // String (single or double quote)
70
+ else if (remaining[0] === '"' || remaining[0] === "'") {
71
+ const quote = remaining[0];
72
+ let end = 1;
73
+ while (end < remaining.length) {
74
+ if (remaining[end] === '\\' && end + 1 < remaining.length) {
75
+ end += 2; // Skip escaped character
76
+ }
77
+ else if (remaining[end] === quote) {
78
+ end++;
79
+ break;
80
+ }
81
+ else if (remaining[end] === '\n') {
82
+ // Unterminated string
83
+ break;
84
+ }
85
+ else {
86
+ end++;
87
+ }
88
+ }
89
+ tokens.push({ type: 'string', content: remaining.slice(0, end) });
90
+ pos += end;
91
+ matched = true;
92
+ }
93
+ // Number
94
+ else if (NUMBER.test(remaining)) {
95
+ const match = remaining.match(NUMBER);
96
+ tokens.push({ type: 'number', content: match[0] });
97
+ pos += match[0].length;
98
+ matched = true;
99
+ }
100
+ // Identifier / Keyword / Function / Type
101
+ else if (IDENTIFIER.test(remaining)) {
102
+ const match = remaining.match(IDENTIFIER);
103
+ const word = match[0];
104
+ const afterWord = remaining.slice(word.length);
105
+ // Check what follows the identifier
106
+ const followedByParen = /^\s*\(/.test(afterWord);
107
+ const followedByGeneric = /^\s*</.test(afterWord);
108
+ // Determine token type
109
+ let type;
110
+ if (KEYWORDS.has(word)) {
111
+ type = 'keyword';
112
+ }
113
+ else if (followedByParen || followedByGeneric) {
114
+ // Function call or generic type
115
+ type = isPascalCase(word) ? 'type' : 'function';
116
+ }
117
+ else if (isPascalCase(word)) {
118
+ type = 'type';
119
+ }
120
+ else {
121
+ type = 'plain';
122
+ }
123
+ tokens.push({ type, content: word });
124
+ pos += word.length;
125
+ matched = true;
126
+ }
127
+ // Operators
128
+ else if (OPERATORS.test(remaining)) {
129
+ const match = remaining.match(OPERATORS);
130
+ tokens.push({ type: 'operator', content: match[0] });
131
+ pos += match[0].length;
132
+ matched = true;
133
+ }
134
+ // Whitespace
135
+ else if (WHITESPACE.test(remaining)) {
136
+ const match = remaining.match(WHITESPACE);
137
+ tokens.push({ type: 'plain', content: match[0] });
138
+ pos += match[0].length;
139
+ matched = true;
140
+ }
141
+ // Newline
142
+ else if (remaining[0] === '\n') {
143
+ tokens.push({ type: 'plain', content: '\n' });
144
+ pos++;
145
+ matched = true;
146
+ }
147
+ // Punctuation (braces, brackets, semicolons, etc.)
148
+ else if (/^[{}[\]();,]/.test(remaining)) {
149
+ tokens.push({ type: 'plain', content: remaining[0] });
150
+ pos++;
151
+ matched = true;
152
+ }
153
+ // Fallback: single character as plain
154
+ if (!matched) {
155
+ tokens.push({ type: 'plain', content: remaining[0] });
156
+ pos++;
157
+ }
158
+ }
159
+ return mergeAdjacentTokens(tokens);
160
+ }
161
+ // =============================================================================
162
+ // HELPERS
163
+ // =============================================================================
164
+ /**
165
+ * Check if identifier is PascalCase (likely a type/class name).
166
+ */
167
+ function isPascalCase(word) {
168
+ return /^[A-Z][a-zA-Z0-9]*$/.test(word);
169
+ }
170
+ /**
171
+ * Match a template literal with embedded expressions.
172
+ */
173
+ function matchTemplateLiteral(code) {
174
+ const tokens = [];
175
+ let pos = 1; // Skip opening backtick
176
+ let stringStart = 0;
177
+ // Add opening backtick
178
+ tokens.push({ type: 'string', content: '`' });
179
+ while (pos < code.length) {
180
+ // Escaped character
181
+ if (code[pos] === '\\' && pos + 1 < code.length) {
182
+ pos += 2;
183
+ continue;
184
+ }
185
+ // Template expression: ${...}
186
+ if (code[pos] === '$' && code[pos + 1] === '{') {
187
+ // Push string content before expression
188
+ if (pos > stringStart + 1) {
189
+ tokens.push({ type: 'string', content: code.slice(stringStart + 1, pos) });
190
+ }
191
+ // Find matching closing brace
192
+ let braceDepth = 1;
193
+ let exprEnd = pos + 2;
194
+ while (exprEnd < code.length && braceDepth > 0) {
195
+ if (code[exprEnd] === '{')
196
+ braceDepth++;
197
+ else if (code[exprEnd] === '}')
198
+ braceDepth--;
199
+ exprEnd++;
200
+ }
201
+ // Tokenize the expression content
202
+ const exprContent = code.slice(pos + 2, exprEnd - 1);
203
+ tokens.push({ type: 'operator', content: '${' });
204
+ tokens.push(...tokenizeJavaScript(exprContent));
205
+ tokens.push({ type: 'operator', content: '}' });
206
+ pos = exprEnd;
207
+ stringStart = pos - 1;
208
+ continue;
209
+ }
210
+ // Closing backtick
211
+ if (code[pos] === '`') {
212
+ if (pos > stringStart + 1) {
213
+ tokens.push({ type: 'string', content: code.slice(stringStart + 1, pos) });
214
+ }
215
+ tokens.push({ type: 'string', content: '`' });
216
+ return { tokens, length: pos + 1 };
217
+ }
218
+ pos++;
219
+ }
220
+ // Unterminated template literal
221
+ if (pos > stringStart + 1) {
222
+ tokens.push({ type: 'string', content: code.slice(stringStart + 1, pos) });
223
+ }
224
+ return { tokens, length: pos };
225
+ }
226
+ /**
227
+ * Merge adjacent tokens of the same type for cleaner output.
228
+ */
229
+ function mergeAdjacentTokens(tokens) {
230
+ if (tokens.length === 0)
231
+ return tokens;
232
+ const merged = [];
233
+ let current = tokens[0];
234
+ for (let i = 1; i < tokens.length; i++) {
235
+ if (tokens[i].type === current.type) {
236
+ current = { type: current.type, content: current.content + tokens[i].content };
237
+ }
238
+ else {
239
+ merged.push(current);
240
+ current = tokens[i];
241
+ }
242
+ }
243
+ merged.push(current);
244
+ return merged;
245
+ }
246
+ // =============================================================================
247
+ // REGISTER
248
+ // =============================================================================
249
+ registerTokenizer('javascript', tokenizeJavaScript);
250
+ registerTokenizer('typescript', tokenizeJavaScript);
251
+ registerTokenizer('jsx', tokenizeJavaScript);
252
+ registerTokenizer('tsx', tokenizeJavaScript);
253
+ //# sourceMappingURL=javascript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../../../src/tui/syntax/languages/javascript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * JSON Tokenizer
3
+ *
4
+ * Handles JSON syntax highlighting.
5
+ * Produces tokens for: keywords (true/false/null), strings, numbers.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../../src/tui/syntax/languages/json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}