@spenceriam/impulse 0.15.0 → 0.15.3

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 (242) hide show
  1. package/bin/impulse +95 -0
  2. package/package.json +17 -51
  3. package/postinstall.mjs +115 -0
  4. package/README.md +0 -194
  5. package/dist/api/client.d.ts +0 -53
  6. package/dist/api/client.d.ts.map +0 -1
  7. package/dist/api/client.js +0 -271
  8. package/dist/api/client.js.map +0 -1
  9. package/dist/api/index.d.ts +0 -6
  10. package/dist/api/index.d.ts.map +0 -1
  11. package/dist/api/index.js +0 -7
  12. package/dist/api/index.js.map +0 -1
  13. package/dist/api/stream.d.ts +0 -98
  14. package/dist/api/stream.d.ts.map +0 -1
  15. package/dist/api/stream.js +0 -202
  16. package/dist/api/stream.js.map +0 -1
  17. package/dist/api/types.d.ts +0 -1353
  18. package/dist/api/types.d.ts.map +0 -1
  19. package/dist/api/types.js +0 -143
  20. package/dist/api/types.js.map +0 -1
  21. package/dist/bash.txt +0 -28
  22. package/dist/bus/bus.d.ts +0 -21
  23. package/dist/bus/bus.d.ts.map +0 -1
  24. package/dist/bus/bus.js +0 -22
  25. package/dist/bus/bus.js.map +0 -1
  26. package/dist/bus/events.d.ts +0 -100
  27. package/dist/bus/events.d.ts.map +0 -1
  28. package/dist/bus/events.js +0 -45
  29. package/dist/bus/events.js.map +0 -1
  30. package/dist/bus/index.d.ts +0 -3
  31. package/dist/bus/index.d.ts.map +0 -1
  32. package/dist/bus/index.js +0 -3
  33. package/dist/bus/index.js.map +0 -1
  34. package/dist/file-edit.txt +0 -21
  35. package/dist/file-read.txt +0 -18
  36. package/dist/file-write.txt +0 -16
  37. package/dist/glob.txt +0 -19
  38. package/dist/global.d.ts +0 -8
  39. package/dist/global.d.ts.map +0 -1
  40. package/dist/global.js +0 -14
  41. package/dist/global.js.map +0 -1
  42. package/dist/grep.txt +0 -20
  43. package/dist/highlights-eq9cgrbb.scm +0 -604
  44. package/dist/highlights-ghv9g403.scm +0 -205
  45. package/dist/highlights-hk7bwhj4.scm +0 -284
  46. package/dist/highlights-r812a2qc.scm +0 -150
  47. package/dist/highlights-x6tmsnaa.scm +0 -115
  48. package/dist/index.d.ts +0 -2
  49. package/dist/index.d.ts.map +0 -1
  50. package/dist/index.js +0 -62122
  51. package/dist/index.js.map +0 -1
  52. package/dist/index.jsx +0 -5
  53. package/dist/index.jsx.map +0 -1
  54. package/dist/injections-73j83es3.scm +0 -27
  55. package/dist/input/at-refs.d.ts +0 -42
  56. package/dist/input/at-refs.d.ts.map +0 -1
  57. package/dist/input/at-refs.js +0 -154
  58. package/dist/input/at-refs.js.map +0 -1
  59. package/dist/input/history.d.ts +0 -26
  60. package/dist/input/history.d.ts.map +0 -1
  61. package/dist/input/history.js +0 -109
  62. package/dist/input/history.js.map +0 -1
  63. package/dist/input/index.d.ts +0 -5
  64. package/dist/input/index.d.ts.map +0 -1
  65. package/dist/input/index.js +0 -5
  66. package/dist/input/index.js.map +0 -1
  67. package/dist/input/paste.d.ts +0 -19
  68. package/dist/input/paste.d.ts.map +0 -1
  69. package/dist/input/paste.js +0 -75
  70. package/dist/input/paste.js.map +0 -1
  71. package/dist/input/shortcuts.d.ts +0 -6
  72. package/dist/input/shortcuts.d.ts.map +0 -1
  73. package/dist/input/shortcuts.js +0 -84
  74. package/dist/input/shortcuts.js.map +0 -1
  75. package/dist/mcp/index.d.ts +0 -3
  76. package/dist/mcp/index.d.ts.map +0 -1
  77. package/dist/mcp/index.js +0 -3
  78. package/dist/mcp/index.js.map +0 -1
  79. package/dist/mcp/manager.d.ts +0 -51
  80. package/dist/mcp/manager.d.ts.map +0 -1
  81. package/dist/mcp/manager.js +0 -158
  82. package/dist/mcp/manager.js.map +0 -1
  83. package/dist/mcp/types.d.ts +0 -18
  84. package/dist/mcp/types.d.ts.map +0 -1
  85. package/dist/mcp/types.js +0 -5
  86. package/dist/mcp/types.js.map +0 -1
  87. package/dist/session/todo.d.ts +0 -24
  88. package/dist/session/todo.d.ts.map +0 -1
  89. package/dist/session/todo.js +0 -39
  90. package/dist/session/todo.js.map +0 -1
  91. package/dist/storage/index.d.ts +0 -2
  92. package/dist/storage/index.d.ts.map +0 -1
  93. package/dist/storage/index.js +0 -2
  94. package/dist/storage/index.js.map +0 -1
  95. package/dist/storage/storage.d.ts +0 -13
  96. package/dist/storage/storage.d.ts.map +0 -1
  97. package/dist/storage/storage.js +0 -84
  98. package/dist/storage/storage.js.map +0 -1
  99. package/dist/task.txt +0 -26
  100. package/dist/todo-read.txt +0 -14
  101. package/dist/todo-write.txt +0 -166
  102. package/dist/tools/bash.d.ts +0 -22
  103. package/dist/tools/bash.d.ts.map +0 -1
  104. package/dist/tools/bash.js +0 -70
  105. package/dist/tools/bash.js.map +0 -1
  106. package/dist/tools/file-edit.d.ts +0 -22
  107. package/dist/tools/file-edit.d.ts.map +0 -1
  108. package/dist/tools/file-edit.js +0 -67
  109. package/dist/tools/file-edit.js.map +0 -1
  110. package/dist/tools/file-read.d.ts +0 -19
  111. package/dist/tools/file-read.d.ts.map +0 -1
  112. package/dist/tools/file-read.js +0 -70
  113. package/dist/tools/file-read.js.map +0 -1
  114. package/dist/tools/file-write.d.ts +0 -16
  115. package/dist/tools/file-write.d.ts.map +0 -1
  116. package/dist/tools/file-write.js +0 -45
  117. package/dist/tools/file-write.js.map +0 -1
  118. package/dist/tools/glob.d.ts +0 -16
  119. package/dist/tools/glob.d.ts.map +0 -1
  120. package/dist/tools/glob.js +0 -45
  121. package/dist/tools/glob.js.map +0 -1
  122. package/dist/tools/grep.d.ts +0 -19
  123. package/dist/tools/grep.d.ts.map +0 -1
  124. package/dist/tools/grep.js +0 -65
  125. package/dist/tools/grep.js.map +0 -1
  126. package/dist/tools/index.d.ts +0 -11
  127. package/dist/tools/index.d.ts.map +0 -1
  128. package/dist/tools/index.js +0 -11
  129. package/dist/tools/index.js.map +0 -1
  130. package/dist/tools/registry.d.ts +0 -22
  131. package/dist/tools/registry.d.ts.map +0 -1
  132. package/dist/tools/registry.js +0 -75
  133. package/dist/tools/registry.js.map +0 -1
  134. package/dist/tools/task.d.ts +0 -19
  135. package/dist/tools/task.d.ts.map +0 -1
  136. package/dist/tools/task.js +0 -51
  137. package/dist/tools/task.js.map +0 -1
  138. package/dist/tools/todo-read.d.ts +0 -7
  139. package/dist/tools/todo-read.d.ts.map +0 -1
  140. package/dist/tools/todo-read.js +0 -56
  141. package/dist/tools/todo-read.js.map +0 -1
  142. package/dist/tools/todo-write.d.ts +0 -38
  143. package/dist/tools/todo-write.d.ts.map +0 -1
  144. package/dist/tools/todo-write.js +0 -40
  145. package/dist/tools/todo-write.js.map +0 -1
  146. package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  147. package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
  148. package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  149. package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  150. package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
  151. package/dist/ui/App.d.ts +0 -6
  152. package/dist/ui/App.d.ts.map +0 -1
  153. package/dist/ui/App.jsx +0 -37
  154. package/dist/ui/App.jsx.map +0 -1
  155. package/dist/ui/components/Autocomplete.d.ts +0 -24
  156. package/dist/ui/components/Autocomplete.d.ts.map +0 -1
  157. package/dist/ui/components/Autocomplete.jsx +0 -67
  158. package/dist/ui/components/Autocomplete.jsx.map +0 -1
  159. package/dist/ui/components/ChatView.d.ts +0 -14
  160. package/dist/ui/components/ChatView.d.ts.map +0 -1
  161. package/dist/ui/components/ChatView.jsx +0 -11
  162. package/dist/ui/components/ChatView.jsx.map +0 -1
  163. package/dist/ui/components/InputArea.d.ts +0 -18
  164. package/dist/ui/components/InputArea.d.ts.map +0 -1
  165. package/dist/ui/components/InputArea.jsx +0 -35
  166. package/dist/ui/components/InputArea.jsx.map +0 -1
  167. package/dist/ui/components/MessageBlock.d.ts +0 -21
  168. package/dist/ui/components/MessageBlock.d.ts.map +0 -1
  169. package/dist/ui/components/MessageBlock.jsx +0 -94
  170. package/dist/ui/components/MessageBlock.jsx.map +0 -1
  171. package/dist/ui/components/Overlay.d.ts +0 -28
  172. package/dist/ui/components/Overlay.d.ts.map +0 -1
  173. package/dist/ui/components/Overlay.jsx +0 -102
  174. package/dist/ui/components/Overlay.jsx.map +0 -1
  175. package/dist/ui/components/ProgressBar.d.ts +0 -9
  176. package/dist/ui/components/ProgressBar.d.ts.map +0 -1
  177. package/dist/ui/components/ProgressBar.jsx +0 -17
  178. package/dist/ui/components/ProgressBar.jsx.map +0 -1
  179. package/dist/ui/components/Sidebar.d.ts +0 -22
  180. package/dist/ui/components/Sidebar.d.ts.map +0 -1
  181. package/dist/ui/components/Sidebar.jsx +0 -96
  182. package/dist/ui/components/Sidebar.jsx.map +0 -1
  183. package/dist/ui/components/StatusLine.d.ts +0 -6
  184. package/dist/ui/components/StatusLine.d.ts.map +0 -1
  185. package/dist/ui/components/StatusLine.jsx +0 -32
  186. package/dist/ui/components/StatusLine.jsx.map +0 -1
  187. package/dist/ui/components/ThinkingBlock.d.ts +0 -15
  188. package/dist/ui/components/ThinkingBlock.d.ts.map +0 -1
  189. package/dist/ui/components/ThinkingBlock.jsx +0 -33
  190. package/dist/ui/components/ThinkingBlock.jsx.map +0 -1
  191. package/dist/ui/components/TodoItem.d.ts +0 -22
  192. package/dist/ui/components/TodoItem.d.ts.map +0 -1
  193. package/dist/ui/components/TodoItem.jsx +0 -11
  194. package/dist/ui/components/TodoItem.jsx.map +0 -1
  195. package/dist/ui/components/ToolBlock.d.ts +0 -27
  196. package/dist/ui/components/ToolBlock.d.ts.map +0 -1
  197. package/dist/ui/components/ToolBlock.jsx +0 -76
  198. package/dist/ui/components/ToolBlock.jsx.map +0 -1
  199. package/dist/ui/components/index.d.ts +0 -12
  200. package/dist/ui/components/index.d.ts.map +0 -1
  201. package/dist/ui/components/index.js +0 -12
  202. package/dist/ui/components/index.js.map +0 -1
  203. package/dist/ui/context/index.d.ts +0 -4
  204. package/dist/ui/context/index.d.ts.map +0 -1
  205. package/dist/ui/context/index.js +0 -4
  206. package/dist/ui/context/index.js.map +0 -1
  207. package/dist/ui/context/mode.d.ts +0 -24
  208. package/dist/ui/context/mode.d.ts.map +0 -1
  209. package/dist/ui/context/mode.jsx +0 -53
  210. package/dist/ui/context/mode.jsx.map +0 -1
  211. package/dist/ui/context/session.d.ts +0 -43
  212. package/dist/ui/context/session.d.ts.map +0 -1
  213. package/dist/ui/context/session.jsx +0 -63
  214. package/dist/ui/context/session.jsx.map +0 -1
  215. package/dist/ui/context/todo.d.ts +0 -32
  216. package/dist/ui/context/todo.d.ts.map +0 -1
  217. package/dist/ui/context/todo.jsx +0 -75
  218. package/dist/ui/context/todo.jsx.map +0 -1
  219. package/dist/ui/design.d.ts +0 -182
  220. package/dist/ui/design.d.ts.map +0 -1
  221. package/dist/ui/design.js +0 -189
  222. package/dist/ui/design.js.map +0 -1
  223. package/dist/ui/index.d.ts +0 -4
  224. package/dist/ui/index.d.ts.map +0 -1
  225. package/dist/ui/index.js +0 -3
  226. package/dist/ui/index.js.map +0 -1
  227. package/dist/util/config.d.ts +0 -22
  228. package/dist/util/config.d.ts.map +0 -1
  229. package/dist/util/config.js +0 -55
  230. package/dist/util/config.js.map +0 -1
  231. package/dist/util/instructions.d.ts +0 -39
  232. package/dist/util/instructions.d.ts.map +0 -1
  233. package/dist/util/instructions.js +0 -96
  234. package/dist/util/instructions.js.map +0 -1
  235. package/dist/util/lock.d.ts +0 -18
  236. package/dist/util/lock.d.ts.map +0 -1
  237. package/dist/util/lock.js +0 -65
  238. package/dist/util/lock.js.map +0 -1
  239. package/dist/util/logger.d.ts +0 -8
  240. package/dist/util/logger.d.ts.map +0 -1
  241. package/dist/util/logger.js +0 -81
  242. package/dist/util/logger.js.map +0 -1
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC"}
package/dist/index.jsx DELETED
@@ -1,5 +0,0 @@
1
- import { render } from "@opentui/solid";
2
- render(() => {
3
- console.log("Starting glm-cli...");
4
- });
5
- //# sourceMappingURL=index.jsx.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.jsx","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,CAAC,GAAG,EAAE;IACV,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC"}
@@ -1,27 +0,0 @@
1
- ; Query from: https://raw.githubusercontent.com/nvim-treesitter/nvim-treesitter/refs/heads/master/queries/markdown/injections.scm
2
- (fenced_code_block
3
- (info_string
4
- (language) @_lang)
5
- (code_fence_content) @injection.content
6
- (#set-lang-from-info-string! @_lang))
7
-
8
- ((html_block) @injection.content
9
- (#set! injection.language "html")
10
- (#set! injection.combined)
11
- (#set! injection.include-children))
12
-
13
- ((minus_metadata) @injection.content
14
- (#set! injection.language "yaml")
15
- (#offset! @injection.content 1 0 -1 0)
16
- (#set! injection.include-children))
17
-
18
- ((plus_metadata) @injection.content
19
- (#set! injection.language "toml")
20
- (#offset! @injection.content 1 0 -1 0)
21
- (#set! injection.include-children))
22
-
23
- ([
24
- (inline)
25
- (pipe_table_cell)
26
- ] @injection.content
27
- (#set! injection.language "markdown_inline"))
@@ -1,42 +0,0 @@
1
- /**
2
- * @ Reference Parser
3
- * Parses @ file/directory references with fuzzy matching and line range support
4
- */
5
- export interface AtReference {
6
- fullMatch: string;
7
- path: string;
8
- lineRange?: {
9
- start: number;
10
- end: number;
11
- };
12
- }
13
- export interface AtCandidate {
14
- path: string;
15
- display: string;
16
- type: "file" | "directory";
17
- }
18
- /**
19
- * Parse @ reference from input
20
- * Supports:
21
- * - @file - file reference
22
- * - @~ - home directory expansion
23
- * - @dir/ - directory reference
24
- * - @file#10-20 - line range reference
25
- */
26
- export declare function parseAtReference(input: string, cursorPosition: number): {
27
- reference: AtReference | null;
28
- position: number;
29
- } | null;
30
- /**
31
- * Get completion candidates for @ reference
32
- */
33
- export declare function getAtCandidates(partialPath: string, workingDirectory?: string): Promise<AtCandidate[]>;
34
- /**
35
- * Filter candidates by fuzzy match
36
- */
37
- export declare function filterCandidatesByFuzzy(candidates: AtCandidate[], searchTerm: string): AtCandidate[];
38
- /**
39
- * Format reference with line range
40
- */
41
- export declare function formatReference(reference: AtReference): string;
42
- //# sourceMappingURL=at-refs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"at-refs.d.ts","sourceRoot":"","sources":["../../src/input/at-refs.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,GACrB;IAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAuD5D;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,gBAAgB,GAAE,MAAsB,GACvC,OAAO,CAAC,WAAW,EAAE,CAAC,CA0DxB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,WAAW,EAAE,EACzB,UAAU,EAAE,MAAM,GACjB,WAAW,EAAE,CA2Bf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CAQ9D"}
@@ -1,154 +0,0 @@
1
- import { glob } from "glob";
2
- import path from "path";
3
- import os from "os";
4
- /**
5
- * Parse @ reference from input
6
- * Supports:
7
- * - @file - file reference
8
- * - @~ - home directory expansion
9
- * - @dir/ - directory reference
10
- * - @file#10-20 - line range reference
11
- */
12
- export function parseAtReference(input, cursorPosition) {
13
- // Find @ before cursor
14
- const beforeCursor = input.slice(0, cursorPosition);
15
- const atIndex = beforeCursor.lastIndexOf("@");
16
- if (atIndex === -1) {
17
- return null;
18
- }
19
- // Get reference text after @
20
- const refText = input.slice(atIndex, cursorPosition);
21
- // Validate reference (must contain something after @)
22
- if (refText.length <= 1) {
23
- return null;
24
- }
25
- let filePath = refText.slice(1);
26
- let lineRange;
27
- // Parse line range (e.g., @file#10-20)
28
- const lineMatch = filePath.match(/^(.+?)#(\d+)(?:-(\d+))?$/);
29
- if (lineMatch && lineMatch[1] && lineMatch[2]) {
30
- filePath = lineMatch[1];
31
- const start = parseInt(lineMatch[2], 10);
32
- const end = lineMatch[3] ? parseInt(lineMatch[3], 10) : start;
33
- lineRange = { start, end };
34
- }
35
- // Handle @~ home directory
36
- if (filePath.startsWith("~")) {
37
- const homeDir = os.homedir();
38
- if (homeDir) {
39
- filePath = path.join(homeDir, filePath.slice(1));
40
- }
41
- }
42
- if (lineRange) {
43
- return {
44
- reference: {
45
- fullMatch: refText,
46
- path: filePath || "",
47
- lineRange,
48
- },
49
- position: atIndex,
50
- };
51
- }
52
- return {
53
- reference: {
54
- fullMatch: refText,
55
- path: filePath || "",
56
- },
57
- position: atIndex,
58
- };
59
- }
60
- /**
61
- * Get completion candidates for @ reference
62
- */
63
- export async function getAtCandidates(partialPath, workingDirectory = process.cwd()) {
64
- let searchPath = partialPath;
65
- // Handle @~ home directory
66
- if (searchPath.startsWith("~")) {
67
- searchPath = path.join(os.homedir(), searchPath.slice(1));
68
- }
69
- // If path is empty or just ~, use working directory or home
70
- if (!searchPath || searchPath === "~") {
71
- searchPath = workingDirectory;
72
- }
73
- const candidates = [];
74
- try {
75
- // Search for files and directories
76
- const pattern = path.join(searchPath, "**/*");
77
- const files = await glob(pattern, {
78
- nodir: true,
79
- windowsPathsNoEscape: true,
80
- ignore: [
81
- "**/node_modules/**",
82
- "**/.git/**",
83
- "**/dist/**",
84
- "**/build/**",
85
- ],
86
- });
87
- const dirPattern = path.join(searchPath, "*/");
88
- const dirs = await glob(dirPattern, {
89
- windowsPathsNoEscape: true,
90
- });
91
- // Add file candidates
92
- for (const file of files.slice(0, 50)) {
93
- const relativePath = path.relative(workingDirectory, file);
94
- candidates.push({
95
- path: file,
96
- display: relativePath,
97
- type: "file",
98
- });
99
- }
100
- // Add directory candidates
101
- for (const dir of dirs.slice(0, 20)) {
102
- const relativePath = path.relative(workingDirectory, dir.slice(0, -1)); // Remove trailing /
103
- candidates.push({
104
- path: dir.slice(0, -1),
105
- display: relativePath + "/",
106
- type: "directory",
107
- });
108
- }
109
- }
110
- catch (error) {
111
- console.error("Error getting @ candidates:", error);
112
- }
113
- return candidates;
114
- }
115
- /**
116
- * Filter candidates by fuzzy match
117
- */
118
- export function filterCandidatesByFuzzy(candidates, searchTerm) {
119
- if (!searchTerm) {
120
- return candidates;
121
- }
122
- const lowerSearch = searchTerm.toLowerCase();
123
- return candidates
124
- .filter((candidate) => {
125
- const lowerPath = candidate.display.toLowerCase();
126
- // Exact match
127
- if (lowerPath.includes(lowerSearch)) {
128
- return true;
129
- }
130
- // Fuzzy match (all characters in order)
131
- let searchIndex = 0;
132
- for (const char of lowerPath) {
133
- if (char === lowerSearch[searchIndex]) {
134
- searchIndex++;
135
- if (searchIndex >= lowerSearch.length) {
136
- return true;
137
- }
138
- }
139
- }
140
- return false;
141
- })
142
- .slice(0, 10); // Limit to 10 results
143
- }
144
- /**
145
- * Format reference with line range
146
- */
147
- export function formatReference(reference) {
148
- let result = `@${reference.path}`;
149
- if (reference.lineRange) {
150
- result += `#${reference.lineRange.start}-${reference.lineRange.end}`;
151
- }
152
- return result;
153
- }
154
- //# sourceMappingURL=at-refs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"at-refs.js","sourceRoot":"","sources":["../../src/input/at-refs.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Input History Manager
3
- * Manages submitted inputs for navigation with up/down arrows
4
- */
5
- export interface InputHistory {
6
- items: string[];
7
- currentIndex: number;
8
- currentInput: string;
9
- }
10
- export declare function useInputHistory(): {
11
- addItem: (input: string) => void;
12
- goBack: () => string;
13
- goForward: () => string;
14
- reset: () => void;
15
- storeCurrentInput: (input: string) => void;
16
- getState: () => {
17
- items: string[];
18
- currentIndex: number;
19
- currentInput: string;
20
- canGoBack: boolean;
21
- canGoForward: boolean;
22
- isNavigating: boolean;
23
- };
24
- clear: () => void;
25
- };
26
- //# sourceMappingURL=history.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/input/history.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,eAAe;qBAQL,MAAM,KAAG,IAAI;kBAiBlB,MAAM;qBA8BH,MAAM;iBA2BV,IAAI;+BAOY,MAAM,KAAG,IAAI;;;;;;;;;iBAmB7B,IAAI;EAevB"}
@@ -1,109 +0,0 @@
1
- import { createSignal } from "solid-js";
2
- export function useInputHistory() {
3
- const [items, setItems] = createSignal([]);
4
- const [currentIndex, setCurrentIndex] = createSignal(-1);
5
- const [currentInput, setCurrentInput] = createSignal("");
6
- /**
7
- * Add a new item to history
8
- */
9
- const addItem = (input) => {
10
- if (!input.trim()) {
11
- return;
12
- }
13
- // Don't add if same as last item
14
- if (items()[0] === input) {
15
- return;
16
- }
17
- setItems((prev) => [input, ...prev]);
18
- setCurrentIndex(-1);
19
- };
20
- /**
21
- * Navigate to previous input (up arrow)
22
- */
23
- const goBack = () => {
24
- const historyItems = items();
25
- if (historyItems.length === 0) {
26
- return currentInput();
27
- }
28
- // If we're not in history, start from beginning
29
- if (currentIndex() === -1) {
30
- setCurrentIndex(0);
31
- const item = historyItems[0];
32
- if (item) {
33
- setCurrentInput(item);
34
- }
35
- return item || "";
36
- }
37
- // Move to previous item
38
- const newIndex = Math.min(currentIndex() + 1, historyItems.length - 1);
39
- setCurrentIndex(newIndex);
40
- const item = historyItems[newIndex];
41
- if (item) {
42
- setCurrentInput(item);
43
- }
44
- return item || "";
45
- };
46
- /**
47
- * Navigate to next input (down arrow)
48
- */
49
- const goForward = () => {
50
- const historyItems = items();
51
- if (currentIndex() === -1) {
52
- return currentInput();
53
- }
54
- // Move to next item
55
- const newIndex = currentIndex() - 1;
56
- if (newIndex < 0) {
57
- // Back to current input
58
- setCurrentIndex(-1);
59
- return currentInput();
60
- }
61
- setCurrentIndex(newIndex);
62
- const item = historyItems[newIndex];
63
- if (item) {
64
- setCurrentInput(item);
65
- }
66
- return item || "";
67
- };
68
- /**
69
- * Reset history navigation (back to current input)
70
- */
71
- const reset = () => {
72
- setCurrentIndex(-1);
73
- };
74
- /**
75
- * Store the current unsaved input
76
- */
77
- const storeCurrentInput = (input) => {
78
- setCurrentInput(input);
79
- };
80
- /**
81
- * Get current navigation state
82
- */
83
- const getState = () => ({
84
- items: items(),
85
- currentIndex: currentIndex(),
86
- currentInput: currentInput(),
87
- canGoBack: currentIndex() < items().length - 1,
88
- canGoForward: currentIndex() > -1,
89
- isNavigating: currentIndex() !== -1,
90
- });
91
- /**
92
- * Clear all history
93
- */
94
- const clear = () => {
95
- setItems([]);
96
- setCurrentIndex(-1);
97
- setCurrentInput("");
98
- };
99
- return {
100
- addItem,
101
- goBack,
102
- goForward,
103
- reset,
104
- storeCurrentInput,
105
- getState,
106
- clear,
107
- };
108
- }
109
- //# sourceMappingURL=history.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/input/history.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export { useKeyboardHandler } from "./shortcuts";
2
- export { usePasteHandler } from "./paste";
3
- export * from "./at-refs";
4
- export { useInputHistory } from "./history";
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -1,5 +0,0 @@
1
- export { useKeyboardHandler } from "./shortcuts";
2
- export { usePasteHandler } from "./paste";
3
- export * from "./at-refs";
4
- export { useInputHistory } from "./history";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Paste Event Handler
3
- * Detects and handles multi-line paste events
4
- */
5
- export interface PasteEvent {
6
- content: string;
7
- isPaste: boolean;
8
- lineCount: number;
9
- isImage?: boolean;
10
- imageIndex?: number;
11
- }
12
- export declare function usePasteHandler(): {
13
- handleInput: (value: string, previousValue: string) => PasteEvent;
14
- handleImagePaste: () => PasteEvent;
15
- getIndicator: () => string | null;
16
- clearIndicator: () => void;
17
- imageCount: () => number;
18
- };
19
- //# sourceMappingURL=paste.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paste.d.ts","sourceRoot":"","sources":["../../src/input/paste.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,wBAAgB,eAAe;yBAUD,MAAM,iBAAiB,MAAM,KAAG,UAAU;4BAkCzC,UAAU;;;;EA2CxC"}
@@ -1,75 +0,0 @@
1
- import { createSignal } from "solid-js";
2
- const PASTE_THRESHOLD_MS = 100;
3
- export function usePasteHandler() {
4
- const [pasteIndicator, setPasteIndicator] = createSignal(null);
5
- const [imageCount, setImageCount] = createSignal(0);
6
- let lastKeyPressTime = 0;
7
- let pendingPasteTimeout = null;
8
- /**
9
- * Handle input change - detect paste vs typing
10
- */
11
- const handleInput = (value, previousValue) => {
12
- const now = Date.now();
13
- const timeSinceLastKey = now - lastKeyPressTime;
14
- // If large amount of text added quickly, it's likely a paste
15
- const lineCount = (value.match(/\n/g) || []).length + 1;
16
- const addedLines = value.length - previousValue.length;
17
- const likelyPaste = addedLines > 20 || (addedLines > 3 && timeSinceLastKey < PASTE_THRESHOLD_MS);
18
- if (likelyPaste) {
19
- const indicator = `[Pasted ~${lineCount} lines]`;
20
- setPasteIndicator(indicator);
21
- if (pendingPasteTimeout) {
22
- clearTimeout(pendingPasteTimeout);
23
- }
24
- pendingPasteTimeout = setTimeout(() => {
25
- setPasteIndicator(null);
26
- }, 3000);
27
- }
28
- lastKeyPressTime = now;
29
- return {
30
- content: value,
31
- isPaste: likelyPaste,
32
- lineCount,
33
- };
34
- };
35
- /**
36
- * Handle image paste
37
- */
38
- const handleImagePaste = () => {
39
- setImageCount((count) => count + 1);
40
- const currentCount = imageCount() + 1;
41
- const indicator = `[Image ${currentCount}]`;
42
- setPasteIndicator(indicator);
43
- if (pendingPasteTimeout) {
44
- clearTimeout(pendingPasteTimeout);
45
- }
46
- pendingPasteTimeout = setTimeout(() => {
47
- setPasteIndicator(null);
48
- }, 3000);
49
- return {
50
- content: "",
51
- isPaste: true,
52
- lineCount: 0,
53
- isImage: true,
54
- imageIndex: currentCount,
55
- };
56
- };
57
- /**
58
- * Get current paste indicator
59
- */
60
- const getIndicator = () => pasteIndicator();
61
- /**
62
- * Clear paste indicator manually
63
- */
64
- const clearIndicator = () => {
65
- setPasteIndicator(null);
66
- };
67
- return {
68
- handleInput,
69
- handleImagePaste,
70
- getIndicator,
71
- clearIndicator,
72
- imageCount: () => imageCount(),
73
- };
74
- }
75
- //# sourceMappingURL=paste.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paste.js","sourceRoot":"","sources":["../../src/input/paste.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAexC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,YAAY,CAAgB,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,YAAY,CAAS,CAAC,CAAC,CAAC;IAE5D,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,mBAAmB,GAAyC,IAAI,CAAC;IAErE;;OAEG;IACH,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,aAAqB,EAAc,EAAE;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,gBAAgB,GAAG,GAAG,GAAG,gBAAgB,CAAC;QAEhD,6DAA6D;QAC7D,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;QACvD,MAAM,WAAW,GAAG,UAAU,GAAG,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,gBAAgB,GAAG,kBAAkB,CAAC,CAAC;QAEjG,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,YAAY,SAAS,SAAS,CAAC;YACjD,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAE7B,IAAI,mBAAmB,EAAE,CAAC;gBACxB,YAAY,CAAC,mBAAmB,CAAC,CAAC;YACpC,CAAC;YAED,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE;gBACpC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;QAED,gBAAgB,GAAG,GAAG,CAAC;QAEvB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,WAAW;YACpB,SAAS;SACV,CAAC;IACJ,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,gBAAgB,GAAG,GAAe,EAAE;QACxC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,YAAY,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC;QAEtC,MAAM,SAAS,GAAG,UAAU,YAAY,GAAG,CAAC;QAC5C,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,mBAAmB,EAAE,CAAC;YACxB,YAAY,CAAC,mBAAmB,CAAC,CAAC;QACpC,CAAC;QAED,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,OAAO;YACL,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,YAAY;SACzB,CAAC;IACJ,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;IAE5C;;OAEG;IACH,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,gBAAgB;QAChB,YAAY;QACZ,cAAc;QACd,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;KAC/B,CAAC;AACJ,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Keyboard Handler
3
- * Global keyboard shortcut handler for mode switching, commands, etc.
4
- */
5
- export declare function useKeyboardHandler(): void;
6
- //# sourceMappingURL=shortcuts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shortcuts.d.ts","sourceRoot":"","sources":["../../src/input/shortcuts.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,kBAAkB,SAmEjC"}
@@ -1,84 +0,0 @@
1
- import { onMount, onCleanup } from "solid-js";
2
- import { useKeyboard } from "@opentui/solid";
3
- import { useMode, useSession } from "../ui/context";
4
- /**
5
- * Keyboard Shortcut Definitions
6
- */
7
- const SHORTCUTS = {
8
- TAB: "tab",
9
- SHIFT_TAB: "shift+tab",
10
- CTRL_P: "ctrl+p",
11
- CTRL_M: "ctrl+m",
12
- ESCAPE: "escape",
13
- CTRL_C: "ctrl+c",
14
- };
15
- /**
16
- * Keyboard Handler
17
- * Global keyboard shortcut handler for mode switching, commands, etc.
18
- */
19
- export function useKeyboardHandler() {
20
- const { cycleMode, cycleModeReverse } = useMode();
21
- const { setThinking } = useSession();
22
- let ctrlCCount = 0;
23
- let ctrlCTimeout = null;
24
- let escCount = 0;
25
- let escTimeout = null;
26
- onMount(() => {
27
- useKeyboard((key) => {
28
- // Mode cycling
29
- if (key.name === SHORTCUTS.TAB) {
30
- if (key.shift) {
31
- cycleModeReverse();
32
- }
33
- else {
34
- cycleMode();
35
- }
36
- }
37
- // Toggle thinking mode
38
- if (key.ctrl && key.name === "t") {
39
- setThinking((t) => !t);
40
- }
41
- // Command palette (Ctrl+P)
42
- if (key.ctrl && key.name === "p") {
43
- // TODO: Open command palette overlay
44
- }
45
- // MCP status (Ctrl+M)
46
- if (key.ctrl && key.name === "m") {
47
- // TODO: Open MCP status overlay
48
- }
49
- // Double-press escape for cancel
50
- if (key.name === SHORTCUTS.ESCAPE) {
51
- escCount++;
52
- if (escCount >= 2) {
53
- escCount = 0;
54
- // TODO: Cancel current operation
55
- }
56
- if (escTimeout)
57
- clearTimeout(escTimeout);
58
- escTimeout = setTimeout(() => {
59
- escCount = 0;
60
- }, 300);
61
- }
62
- // Double-press Ctrl+C for exit
63
- if (key.ctrl && key.name === "c") {
64
- ctrlCCount++;
65
- if (ctrlCCount >= 2) {
66
- ctrlCCount = 0;
67
- // Exit handled by App.tsx renderer.destroy()
68
- }
69
- if (ctrlCTimeout)
70
- clearTimeout(ctrlCTimeout);
71
- ctrlCTimeout = setTimeout(() => {
72
- ctrlCCount = 0;
73
- }, 500);
74
- }
75
- });
76
- });
77
- onCleanup(() => {
78
- if (ctrlCTimeout)
79
- clearTimeout(ctrlCTimeout);
80
- if (escTimeout)
81
- clearTimeout(escTimeout);
82
- });
83
- }
84
- //# sourceMappingURL=shortcuts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../src/input/shortcuts.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export * from "./types";
2
- export { MCPManager, mcpManager } from "./manager";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
package/dist/mcp/index.js DELETED
@@ -1,3 +0,0 @@
1
- export * from "./types";
2
- export { MCPManager, mcpManager } from "./manager";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}