lonny-agent 0.1.2 → 0.1.9

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 (216) hide show
  1. package/.kilo/plans/1780064105789-mighty-pixel.md +171 -0
  2. package/.lonny/fix-new-command-session-cleanup.md +65 -0
  3. package/.lonny/tui-autocomplete-above.md +62 -0
  4. package/dist/agent/__tests__/compaction.test.js +6 -4
  5. package/dist/agent/__tests__/compaction.test.js.map +1 -1
  6. package/dist/agent/llm.d.ts +1 -1
  7. package/dist/agent/llm.d.ts.map +1 -1
  8. package/dist/agent/prompt-builder.d.ts.map +1 -1
  9. package/dist/agent/prompt-builder.js +26 -8
  10. package/dist/agent/prompt-builder.js.map +1 -1
  11. package/dist/agent/providers/anthropic.d.ts +1 -1
  12. package/dist/agent/providers/anthropic.d.ts.map +1 -1
  13. package/dist/agent/providers/anthropic.js +2 -2
  14. package/dist/agent/providers/anthropic.js.map +1 -1
  15. package/dist/agent/providers/google.d.ts +1 -1
  16. package/dist/agent/providers/google.d.ts.map +1 -1
  17. package/dist/agent/providers/google.js +2 -1
  18. package/dist/agent/providers/google.js.map +1 -1
  19. package/dist/agent/providers/ollama.d.ts +1 -1
  20. package/dist/agent/providers/ollama.d.ts.map +1 -1
  21. package/dist/agent/providers/ollama.js +2 -1
  22. package/dist/agent/providers/ollama.js.map +1 -1
  23. package/dist/agent/providers/openai.d.ts +1 -1
  24. package/dist/agent/providers/openai.d.ts.map +1 -1
  25. package/dist/agent/providers/openai.js +2 -2
  26. package/dist/agent/providers/openai.js.map +1 -1
  27. package/dist/agent/session.d.ts +1 -0
  28. package/dist/agent/session.d.ts.map +1 -1
  29. package/dist/agent/session.js +8 -2
  30. package/dist/agent/session.js.map +1 -1
  31. package/dist/pi-tui/autocomplete.d.ts +54 -0
  32. package/dist/pi-tui/autocomplete.d.ts.map +1 -0
  33. package/dist/pi-tui/autocomplete.js +636 -0
  34. package/dist/pi-tui/autocomplete.js.map +1 -0
  35. package/dist/pi-tui/components/box.d.ts +22 -0
  36. package/dist/pi-tui/components/box.d.ts.map +1 -0
  37. package/dist/pi-tui/components/box.js +104 -0
  38. package/dist/pi-tui/components/box.js.map +1 -0
  39. package/dist/pi-tui/components/cancellable-loader.d.ts +22 -0
  40. package/dist/pi-tui/components/cancellable-loader.d.ts.map +1 -0
  41. package/dist/pi-tui/components/cancellable-loader.js +35 -0
  42. package/dist/pi-tui/components/cancellable-loader.js.map +1 -0
  43. package/dist/pi-tui/components/editor.d.ts +249 -0
  44. package/dist/pi-tui/components/editor.d.ts.map +1 -0
  45. package/dist/pi-tui/components/editor.js +1883 -0
  46. package/dist/pi-tui/components/editor.js.map +1 -0
  47. package/dist/pi-tui/components/image.d.ts +28 -0
  48. package/dist/pi-tui/components/image.d.ts.map +1 -0
  49. package/dist/pi-tui/components/image.js +90 -0
  50. package/dist/pi-tui/components/image.js.map +1 -0
  51. package/dist/pi-tui/components/input.d.ts +37 -0
  52. package/dist/pi-tui/components/input.d.ts.map +1 -0
  53. package/dist/pi-tui/components/input.js +382 -0
  54. package/dist/pi-tui/components/input.js.map +1 -0
  55. package/dist/pi-tui/components/loader.d.ts +31 -0
  56. package/dist/pi-tui/components/loader.d.ts.map +1 -0
  57. package/dist/pi-tui/components/loader.js +70 -0
  58. package/dist/pi-tui/components/loader.js.map +1 -0
  59. package/dist/pi-tui/components/markdown.d.ts +96 -0
  60. package/dist/pi-tui/components/markdown.d.ts.map +1 -0
  61. package/dist/pi-tui/components/markdown.js +647 -0
  62. package/dist/pi-tui/components/markdown.js.map +1 -0
  63. package/dist/pi-tui/components/select-list.d.ts +50 -0
  64. package/dist/pi-tui/components/select-list.d.ts.map +1 -0
  65. package/dist/pi-tui/components/select-list.js +167 -0
  66. package/dist/pi-tui/components/select-list.js.map +1 -0
  67. package/dist/pi-tui/components/settings-list.d.ts +50 -0
  68. package/dist/pi-tui/components/settings-list.d.ts.map +1 -0
  69. package/dist/pi-tui/components/settings-list.js +189 -0
  70. package/dist/pi-tui/components/settings-list.js.map +1 -0
  71. package/dist/pi-tui/components/spacer.d.ts +12 -0
  72. package/dist/pi-tui/components/spacer.d.ts.map +1 -0
  73. package/dist/pi-tui/components/spacer.js +23 -0
  74. package/dist/pi-tui/components/spacer.js.map +1 -0
  75. package/dist/pi-tui/components/text.d.ts +19 -0
  76. package/dist/pi-tui/components/text.d.ts.map +1 -0
  77. package/dist/pi-tui/components/text.js +91 -0
  78. package/dist/pi-tui/components/text.js.map +1 -0
  79. package/dist/pi-tui/components/truncated-text.d.ts +13 -0
  80. package/dist/pi-tui/components/truncated-text.d.ts.map +1 -0
  81. package/dist/pi-tui/components/truncated-text.js +51 -0
  82. package/dist/pi-tui/components/truncated-text.js.map +1 -0
  83. package/dist/pi-tui/editor-component.d.ts +39 -0
  84. package/dist/pi-tui/editor-component.d.ts.map +1 -0
  85. package/dist/pi-tui/editor-component.js +2 -0
  86. package/dist/pi-tui/editor-component.js.map +1 -0
  87. package/dist/pi-tui/fuzzy.d.ts +16 -0
  88. package/dist/pi-tui/fuzzy.d.ts.map +1 -0
  89. package/dist/pi-tui/fuzzy.js +110 -0
  90. package/dist/pi-tui/fuzzy.js.map +1 -0
  91. package/dist/pi-tui/index.d.ts +23 -0
  92. package/dist/pi-tui/index.d.ts.map +1 -0
  93. package/dist/pi-tui/index.js +32 -0
  94. package/dist/pi-tui/index.js.map +1 -0
  95. package/dist/pi-tui/keybindings.d.ts +193 -0
  96. package/dist/pi-tui/keybindings.d.ts.map +1 -0
  97. package/dist/pi-tui/keybindings.js +174 -0
  98. package/dist/pi-tui/keybindings.js.map +1 -0
  99. package/dist/pi-tui/keys.d.ts +184 -0
  100. package/dist/pi-tui/keys.d.ts.map +1 -0
  101. package/dist/pi-tui/keys.js +1182 -0
  102. package/dist/pi-tui/keys.js.map +1 -0
  103. package/dist/pi-tui/kill-ring.d.ts +28 -0
  104. package/dist/pi-tui/kill-ring.d.ts.map +1 -0
  105. package/dist/pi-tui/kill-ring.js +44 -0
  106. package/dist/pi-tui/kill-ring.js.map +1 -0
  107. package/dist/pi-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  108. package/dist/pi-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  109. package/dist/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  110. package/dist/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  111. package/dist/pi-tui/native-modifiers.d.ts +3 -0
  112. package/dist/pi-tui/native-modifiers.d.ts.map +1 -0
  113. package/dist/pi-tui/native-modifiers.js +53 -0
  114. package/dist/pi-tui/native-modifiers.js.map +1 -0
  115. package/dist/pi-tui/stdin-buffer.d.ts +50 -0
  116. package/dist/pi-tui/stdin-buffer.d.ts.map +1 -0
  117. package/dist/pi-tui/stdin-buffer.js +361 -0
  118. package/dist/pi-tui/stdin-buffer.js.map +1 -0
  119. package/dist/pi-tui/terminal-image.d.ts +90 -0
  120. package/dist/pi-tui/terminal-image.d.ts.map +1 -0
  121. package/dist/pi-tui/terminal-image.js +343 -0
  122. package/dist/pi-tui/terminal-image.js.map +1 -0
  123. package/dist/pi-tui/terminal.d.ts +113 -0
  124. package/dist/pi-tui/terminal.d.ts.map +1 -0
  125. package/dist/pi-tui/terminal.js +478 -0
  126. package/dist/pi-tui/terminal.js.map +1 -0
  127. package/dist/pi-tui/tui.d.ts +227 -0
  128. package/dist/pi-tui/tui.d.ts.map +1 -0
  129. package/dist/pi-tui/tui.js +1091 -0
  130. package/dist/pi-tui/tui.js.map +1 -0
  131. package/dist/pi-tui/undo-stack.d.ts +17 -0
  132. package/dist/pi-tui/undo-stack.d.ts.map +1 -0
  133. package/dist/pi-tui/undo-stack.js +25 -0
  134. package/dist/pi-tui/undo-stack.js.map +1 -0
  135. package/dist/pi-tui/utils.d.ts +84 -0
  136. package/dist/pi-tui/utils.d.ts.map +1 -0
  137. package/dist/pi-tui/utils.js +1024 -0
  138. package/dist/pi-tui/utils.js.map +1 -0
  139. package/dist/pi-tui/word-navigation.d.ts +25 -0
  140. package/dist/pi-tui/word-navigation.d.ts.map +1 -0
  141. package/dist/pi-tui/word-navigation.js +98 -0
  142. package/dist/pi-tui/word-navigation.js.map +1 -0
  143. package/dist/tools/__tests__/edit.test.js +85 -0
  144. package/dist/tools/__tests__/edit.test.js.map +1 -1
  145. package/dist/tools/edit.d.ts.map +1 -1
  146. package/dist/tools/edit.js +23 -1
  147. package/dist/tools/edit.js.map +1 -1
  148. package/dist/tui/components.d.ts +1 -1
  149. package/dist/tui/components.d.ts.map +1 -1
  150. package/dist/tui/components.js +1 -1
  151. package/dist/tui/components.js.map +1 -1
  152. package/dist/tui/editor-patch.d.ts +13 -0
  153. package/dist/tui/editor-patch.d.ts.map +1 -0
  154. package/dist/tui/editor-patch.js +41 -0
  155. package/dist/tui/editor-patch.js.map +1 -0
  156. package/dist/tui/index.d.ts.map +1 -1
  157. package/dist/tui/index.js +15 -3
  158. package/dist/tui/index.js.map +1 -1
  159. package/dist/web/index.d.ts.map +1 -1
  160. package/dist/web/index.js +9 -2
  161. package/dist/web/index.js.map +1 -1
  162. package/dist/web/public/app.js +65 -4
  163. package/dist/web/public/style.css +49 -0
  164. package/dist/web/session-bridge.d.ts +0 -4
  165. package/dist/web/session-bridge.d.ts.map +1 -1
  166. package/dist/web/session-bridge.js +16 -2
  167. package/dist/web/session-bridge.js.map +1 -1
  168. package/package.json +5 -3
  169. package/src/agent/__tests__/compaction.test.ts +6 -4
  170. package/src/agent/llm.ts +5 -1
  171. package/src/agent/prompt-builder.ts +27 -8
  172. package/src/agent/providers/anthropic.ts +15 -8
  173. package/src/agent/providers/google.ts +6 -1
  174. package/src/agent/providers/ollama.ts +6 -1
  175. package/src/agent/providers/openai.ts +21 -12
  176. package/src/agent/session.ts +12 -2
  177. package/src/pi-tui/autocomplete.ts +808 -0
  178. package/src/pi-tui/components/box.ts +137 -0
  179. package/src/pi-tui/components/cancellable-loader.ts +40 -0
  180. package/src/pi-tui/components/editor.ts +2321 -0
  181. package/src/pi-tui/components/image.ts +130 -0
  182. package/src/pi-tui/components/input.ts +456 -0
  183. package/src/pi-tui/components/loader.ts +93 -0
  184. package/src/pi-tui/components/markdown.ts +839 -0
  185. package/src/pi-tui/components/select-list.ts +263 -0
  186. package/src/pi-tui/components/settings-list.ts +264 -0
  187. package/src/pi-tui/components/spacer.ts +28 -0
  188. package/src/pi-tui/components/text.ts +113 -0
  189. package/src/pi-tui/components/truncated-text.ts +65 -0
  190. package/src/pi-tui/editor-component.ts +74 -0
  191. package/src/pi-tui/fuzzy.ts +137 -0
  192. package/src/pi-tui/index.ts +115 -0
  193. package/src/pi-tui/keybindings.ts +245 -0
  194. package/src/pi-tui/keys.ts +1440 -0
  195. package/src/pi-tui/kill-ring.ts +46 -0
  196. package/src/pi-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  197. package/src/pi-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  198. package/src/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  199. package/src/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  200. package/src/pi-tui/native-modifiers.ts +65 -0
  201. package/src/pi-tui/stdin-buffer.ts +434 -0
  202. package/src/pi-tui/terminal-image.ts +469 -0
  203. package/src/pi-tui/terminal.ts +594 -0
  204. package/src/pi-tui/tui.ts +1376 -0
  205. package/src/pi-tui/undo-stack.ts +28 -0
  206. package/src/pi-tui/utils.ts +1176 -0
  207. package/src/pi-tui/word-navigation.ts +127 -0
  208. package/src/tools/__tests__/edit.test.ts +91 -0
  209. package/src/tools/edit.ts +27 -1
  210. package/src/tui/components.ts +2 -2
  211. package/src/tui/index.ts +24 -10
  212. package/src/web/index.ts +9 -2
  213. package/src/web/public/app.js +65 -4
  214. package/src/web/public/style.css +49 -0
  215. package/src/web/session-bridge.ts +13 -2
  216. package/tsconfig.json +2 -2
@@ -0,0 +1,171 @@
1
+ # Plan: Vendor `@earendil-works/pi-tui` source
2
+
3
+ ## Objective
4
+
5
+ Replace the `@earendil-works/pi-tui` npm dependency with vendored source code from [pi/packages/tui](https://github.com/earendil-works/pi/tree/main/packages/tui), so the project no longer depends on that npm package.
6
+
7
+ ## Current state
8
+
9
+ - `package.json` depends on `"@earendil-works/pi-tui": "0.75.5"`
10
+ - A patch file `patches/@earendil-works+pi-tui+0.75.5.patch` applies 2 modifications (autocomplete above editor, alternate screen buffer on start/stop)
11
+ - `patch-package` is in devDependencies for applying the patch
12
+ - Only 2 source files import from `@earendil-works/pi-tui`:
13
+ - `src/tui/index.ts` (type imports + 11 class exports)
14
+ - `src/tui/components.ts` (Component type + SelectList class)
15
+ - Internal Editor access: `(editor as any).killRing`, `.undoStack`, `.history`
16
+
17
+ ## Steps
18
+
19
+ ### 1. Download pi-tui source from GitHub
20
+
21
+ Clone a shallow copy of the repo to get the source at the matching version or the main branch:
22
+
23
+ ```bash
24
+ # From project root temp dir
25
+ git clone --depth 1 --branch main https://github.com/earendil-works/pi.git /tmp/pi-source
26
+ ```
27
+
28
+ Alternatively, if git clone is not feasible, download each file individually from GitHub.
29
+
30
+ Source files needed from `packages/tui/src/`:
31
+ ```
32
+ src/
33
+ index.ts - barrel exports
34
+ autocomplete.ts - CombinedAutocompleteProvider, AutocompleteProvider, etc.
35
+ editor-component.ts - EditorComponent type
36
+ fuzzy.ts - fuzzyFilter, fuzzyMatch
37
+ keybindings.ts - KeybindingsManager, TUI_KEYBINDINGS, etc.
38
+ keys.ts - Key, matchesKey, parseKey, etc.
39
+ kill-ring.ts - KillRing
40
+ native-modifiers.ts - native keyboard modifiers
41
+ stdin-buffer.ts - StdinBuffer
42
+ terminal-image.ts - image rendering
43
+ terminal.ts - ProcessTerminal, Terminal interface
44
+ tui.ts - TUI, Container, Component, OverlayHandle, OverlayOptions, Focusable, CURSOR_MARKER, etc.
45
+ undo-stack.ts - UndoStack
46
+ utils.ts - visibleWidth, truncateToWidth, wrapTextWithAnsi, etc.
47
+ word-navigation.ts - word boundary navigation
48
+ components/
49
+ box.ts
50
+ cancellable-loader.ts
51
+ editor.ts
52
+ image.ts
53
+ input.ts
54
+ loader.ts
55
+ markdown.ts
56
+ select-list.ts
57
+ settings-list.ts
58
+ spacer.ts
59
+ text.ts
60
+ truncated-text.ts
61
+ ```
62
+
63
+ Also copy `native/` directory (Windows VT input helper):
64
+ ```
65
+ native/win32/prebuilds/win32-x64/win32-console-mode.node
66
+ native/win32/prebuilds/win32-arm64/win32-console-mode.node
67
+ ```
68
+
69
+ ### 2. Place vendored code at `src/pi-tui/`
70
+
71
+ ```
72
+ src/
73
+ pi-tui/
74
+ index.ts
75
+ autocomplete.ts
76
+ editor-component.ts
77
+ fuzzy.ts
78
+ keybindings.ts
79
+ keys.ts
80
+ kill-ring.ts
81
+ native-modifiers.ts
82
+ stdin-buffer.ts
83
+ terminal-image.ts
84
+ terminal.ts
85
+ tui.ts
86
+ undo-stack.ts
87
+ utils.ts
88
+ word-navigation.ts
89
+ components/
90
+ box.ts
91
+ cancellable-loader.ts
92
+ editor.ts
93
+ image.ts
94
+ input.ts
95
+ loader.ts
96
+ markdown.ts
97
+ select-list.ts
98
+ settings-list.ts
99
+ spacer.ts
100
+ text.ts
101
+ truncated-text.ts
102
+ native/
103
+ win32/prebuilds/win32-x64/win32-console-mode.node
104
+ win32/prebuilds/win32-arm64/win32-console-mode.node
105
+ ```
106
+
107
+ ### 3. Apply the two manual patches to the vendored source
108
+
109
+ The patch file modifies the **compiled dist JS**, but we need to apply equivalent changes to the **TypeScript source**:
110
+
111
+ **Patch 1** — `components/editor.ts`: Move autocomplete rendering above the editor
112
+ - Find the `render()` method where autocomplete lines are appended
113
+ - Change `result.push(...acLines)` → `result.unshift(...acLines)` (or equivalent logic)
114
+
115
+ **Patch 2** — `tui.ts`: Add alternate screen buffer on start/stop
116
+ - In `start()`: add `this.terminal.write("\x1b[?1049h");` before `this.terminal.start(…)`
117
+ - In `stop()`: add `this.terminal.write("\x1b[?1049l");` before cursor/timer cleanup
118
+
119
+ ### 4. Update import paths
120
+
121
+ **`src/tui/index.ts`** — change:
122
+ ```ts
123
+ import type { EditorTheme, MarkdownTheme, OverlayHandle, SelectItem, SelectListTheme, SlashCommand } from '@earendil-works/pi-tui'
124
+ import { Box, CombinedAutocompleteProvider, Container, Editor, Loader, Markdown, ProcessTerminal, Text, TUI } from '@earendil-works/pi-tui'
125
+ ```
126
+ to:
127
+ ```ts
128
+ import type { EditorTheme, MarkdownTheme, OverlayHandle, SelectItem, SelectListTheme, SlashCommand } from '../pi-tui/index.js'
129
+ import { Box, CombinedAutocompleteProvider, Container, Editor, Loader, Markdown, ProcessTerminal, Text, TUI } from '../pi-tui/index.js'
130
+ ```
131
+
132
+ **`src/tui/components.ts`** — change:
133
+ ```ts
134
+ import type { Component, SelectItem, SelectListTheme } from '@earendil-works/pi-tui'
135
+ import { SelectList } from '@earendil-works/pi-tui'
136
+ ```
137
+ to:
138
+ ```ts
139
+ import type { Component, SelectItem, SelectListTheme } from '../pi-tui/index.js'
140
+ import { SelectList } from '../pi-tui/index.js'
141
+ ```
142
+
143
+ ### 5. Keep `marked` and `get-east-asian-width` as runtime dependencies
144
+
145
+ These are pi-tui's own runtime dependencies used by `Markdown` and `visibleWidth` respectively. They remain in `dependencies`.
146
+
147
+ ### 6. Remove pi-tui-related npm setup
148
+
149
+ - `package.json`: Remove `"@earendil-works/pi-tui": "0.75.5"` from `dependencies`
150
+ - `package.json`: Remove `"patch-package": "^8.0.1"` from `devDependencies` (only existed for pi-tui patching)
151
+ - `package.json`: Change `"postinstall": "npx patch-package"` to `"postinstall": "husky"` (or remove entirely if not needed)
152
+ - Delete `patches/@earendil-works+pi-tui+0.75.5.patch`
153
+ - Delete `patches/` directory if empty
154
+ - Run `npm uninstall @earendil-works/pi-tui` and `npm uninstall patch-package` to update lockfile
155
+
156
+ ### 7. Update `package-lock.json`
157
+
158
+ Run `npm install` to regenerate `package-lock.json` without pi-tui/patch-package.
159
+
160
+ ### 8. Verify
161
+
162
+ - `npm run build` — tsc should compile successfully
163
+ - `npm run lint` — biome should pass
164
+ - `npm test` — vitest tests should pass
165
+ - Verify the TUI starts correctly with `npm run dev`
166
+
167
+ ## Open questions
168
+
169
+ 1. Should we use the exact version `0.75.5` source (may need to checkout a tag) or the latest `main` branch source? **Answer: main branch is fine unless it introduces breaking changes.**
170
+ 2. The `native-modifiers.ts` file on GitHub may export functions used by `terminal.ts`. If unavailable, we can stub it or inline the native module loading logic.
171
+ 3. If the GitHub raw URLs are flaky, alternative: download from npm tarball and reverse-engineer from dist JS (less ideal).
@@ -0,0 +1,65 @@
1
+ # Plan: Fix /new Command Session Cleanup Issues
2
+
3
+ ## Analysis
4
+
5
+ Reviewing `src/tui/index.ts` lines 485-496, the `/new` command has two issues:
6
+
7
+ ### Issue 1: No `session.stop()` when agent is running
8
+
9
+ The slash command handler intentionally allows all commands even when `isRunning === true` (see comment on line 471: "Allow slash commands even when agent is running (critical for /stop)"). However, `/new` creates a **new** `Session` object while the **old** session's `session.chat()` promise may still be in-flight:
10
+
11
+ - The old session continues consuming API tokens via its pending LLM stream
12
+ - When the old `chat()` promise resolves, it writes to `chatContent` via the `output.write` closure — but `chatContent` was just cleared by `/new`, causing stale output to pollute the fresh chat display
13
+ - The old promise's `.then()` callback sets `isRunning = false` and calls `updateFooter()` etc. (harmless but messy)
14
+
15
+ ### Issue 2: Editor internal state not fully reset
16
+
17
+ `editor.setText('')` (called at line 468 before the slash command handler) resets the text, cursor, and `scrollOffset`. But it does NOT clear:
18
+
19
+ - `undoStack` — pressing Ctrl+Z after `/new` could restore old session content
20
+ - `history` (command history for up/down navigation) — old commands linger
21
+ - `killRing` (Emacs kill/yank ring) — old killed text is still accessible
22
+
23
+ The Editor class declares these as `private` (see `editor.d.ts` lines 57-59, 64), so we need `(editor as any)` casts to access them at runtime.
24
+
25
+ ## Fix
26
+
27
+ Edit `src/tui/index.ts` lines 485-496, replacing the `/new` handler with:
28
+
29
+ ```typescript
30
+ if (cmd === 'new') {
31
+ // If the agent is running, stop the old session gracefully first.
32
+ // Without this, the pending chat() promise would continue consuming
33
+ // tokens and write stale output into the freshly cleared chat display.
34
+ if (isRunning) {
35
+ session.stop()
36
+ isRunning = false
37
+ loader.setMessage('')
38
+ tui.setShowHardwareCursor(true)
39
+ }
40
+ Session.clearSavedSession(config.cwd)
41
+ resetTokenUsage(config.cwd)
42
+ resetGlobalEventBus()
43
+ session = new Session(config, output)
44
+ session.onPlanWritten = planCb
45
+ chatContent = ''
46
+ chatMarkdown.setText('')
47
+ plansList.clearFilter()
48
+ // Reset editor internal state that setText('') doesn't clear
49
+ ;(editor as any).undoStack.clear()
50
+ ;(editor as any).history = []
51
+ ;(editor as any).killRing = new (require('@earendil-works/pi-tui').KillRing)()
52
+ updateFooter()
53
+ return
54
+ }
55
+ ```
56
+
57
+ > **Note about `KillRing` import**: The `KillRing` class is internal to pi-tui and not exported in the public types. Using `require('@earendil-works/pi-tui').KillRing` at runtime works because the package exports it internally. An alternative is to just set `(editor as any).killRing = { length: 0, ring: [], push: () => {}, peek: () => null, rotate: () => {} }` as a mock.
58
+
59
+ > **Actual implementation**: Used `(editor as any).killRing.ring = []` instead of replacing the whole KillRing instance — simpler and avoids ESM `require` issues.
60
+
61
+ ## Todo List
62
+
63
+ - [x] Replace the `/new` command handler in `src/tui/index.ts` (around line 485) with the version above that calls `session.stop()` if running and resets editor internal state
64
+ - [x] Run `npm run build` to verify compilation
65
+ - [x] Test: start agent, let it run, type `/new`, verify no stale output appears and editor history/undo is clean
@@ -0,0 +1,62 @@
1
+ # Plan: Adjust TUI Autocomplete to Render Above the Editor (Matching Web Style)
2
+
3
+ ## Problem
4
+
5
+ The TUI's slash command autocomplete list currently renders **below** the editor input area (after the bottom border). The web version displays command hints **above** the input (`bottom: 100%` via CSS). The user wants the TUI behavior to match the web — "向上的" (upward/above).
6
+
7
+ ## Root Cause
8
+
9
+ The `Editor` component from `@earendil-works/pi-tui` (`node_modules/@earendil-works/pi-tui/dist/components/editor.js`) appends the autocomplete `SelectList` lines **after** the editor's bottom border in its `render()` method (lines 418-426). To get the "above" behavior, these lines need to appear **before** the editor's top border instead.
10
+
11
+ ## Approach (Final: patch-package + direct node_modules edit)
12
+
13
+ Instead of monkey-patching at runtime (which had clipping issues with `maxHeight`), we:
14
+
15
+ 1. **Directly edit** `node_modules/@earendil-works/pi-tui/dist/components/editor.js` to use `result.unshift(...acLines)` instead of `result.push(...)` — placing autocomplete BEFORE the top border
16
+ 2. **Increase `maxHeight`** from 6 to 12 in `src/tui/index.ts` to accommodate both autocomplete and editor content
17
+ 3. **Use `patch-package`** to persist the node_modules change across `npm install`
18
+
19
+ This approach:
20
+ - Renders autocomplete ABOVE the editor (matching web UI)
21
+ - Eliminates the clipping bug (autocomplete no longer competes with editor content for the 6-line overlay)
22
+ - Survives `npm install` via patch-package
23
+
24
+ ## Files Changed
25
+
26
+ ### 1. `node_modules/@earendil-works/pi-tui/dist/components/editor.js` (patched)
27
+
28
+ Changed `result.push(...acLines)` to `result.unshift(...acLines)` so autocomplete renders BEFORE the top border.
29
+
30
+ ### 2. `src/tui/index.ts`
31
+
32
+ - Increased `maxHeight` from 6 to 12 on both editor overlay instances
33
+ - Removed `applyEditorPatch()` import and call (old monkey-patch approach)
34
+ - Deleted `src/tui/editor-patch.ts`
35
+
36
+ ### 3. `package.json`
37
+
38
+ - Added `"postinstall": "patch-package"` script
39
+ - Added `patch-package` devDependency
40
+
41
+ ### 4. `patches/@earendil-works+pi-tui+0.75.5.patch` (new)
42
+
43
+ Created by `patch-package` to persist both changes:
44
+ - `editor.js`: autocomplete unshifted to before top border
45
+ - `tui.js`: alternate screen buffer handling
46
+
47
+ ## Edge Cases Considered
48
+
49
+ 1. **No autocomplete active** → `unshift` on empty array is a no-op; render output is unchanged
50
+ 2. **Scrolled editor** → autocomplete still renders above the top border/indicator line
51
+ 3. **Multiple autocomplete lines** → all moved above correctly
52
+ 4. **Resize** → render is called again with new width, positioning stays correct
53
+ 5. **npm install** → patch-package automatically reapplies the node_modules change
54
+
55
+ ## Todo List
56
+
57
+ - [x] Step 1: Edit `node_modules/@earendil-works/pi-tui/dist/components/editor.js` to use `unshift` instead of `push` for autocomplete lines
58
+ - [x] Step 2: Increase `maxHeight` from 6 to 12 in `src/tui/index.ts`
59
+ - [x] Step 3: Remove old monkey-patch (`editor-patch.ts`, `applyEditorPatch()` import/call)
60
+ - [x] Step 4: Install `patch-package` and create patch file
61
+ - [x] Step 5: Add `postinstall` script to `package.json`
62
+ - [x] Step 6: Build and verify (`npm run build` succeeds)
@@ -82,9 +82,10 @@ describe('compact', () => {
82
82
  // Should have: system + summary + 5 recent
83
83
  expect(result.newCount).toBeLessThan(result.originalCount);
84
84
  expect(result.messages[0].role).toBe('system');
85
- // Second message should be the summary
86
- expect(result.messages[1].role).toBe('system');
87
- expect(result.messages[1].content).toContain('Conversation History Summary');
85
+ // Last message should be the summary (appended at end for prompt cache stability)
86
+ const summaryMsg = result.messages[result.messages.length - 1];
87
+ expect(summaryMsg.role).toBe('system');
88
+ expect(summaryMsg.content).toContain('Conversation History Summary');
88
89
  });
89
90
  test('preserves tool-call cycles when cutting off', () => {
90
91
  // Create: system, user, assistant(tool), tool, assistant(tool), tool, ... recent
@@ -117,7 +118,8 @@ describe('compact', () => {
117
118
  messages.push(toolResult('edit'));
118
119
  const result = compact(messages, 100, 5);
119
120
  if (result.compressed) {
120
- const summary = result.messages[1].content || '';
121
+ // Summary is always the last message (appended at end for prompt cache stability)
122
+ const summary = result.messages[result.messages.length - 1].content || '';
121
123
  expect(summary).toContain('Total exchanges');
122
124
  }
123
125
  });
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.test.js","sourceRoot":"","sources":["../../../src/agent/__tests__/compaction.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compaction.test.js","sourceRoot":"","sources":["../../../src/agent/__tests__/compaction.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGzE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAC,aAAa;QACrD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAC,WAAW;IACnD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,SAAS,GAAG,CAAC,OAAe;QAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAClC,CAAC;IAED,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,QAAQ,GAAG;YACf,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,eAAe,EAAE;YACrD,GAAG,CAAC,OAAO,CAAC;YACZ,GAAG,CAAC,OAAO,CAAC;SACb,CAAA;QACD,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,oDAAoD;QACpD,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAClC,MAAM,QAAQ,GAAG;YACf,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,eAAe,EAAE;YACrD,GAAG,CAAC,WAAW,CAAC;YAChB,GAAG,CAAC,WAAW,CAAC;YAChB,GAAG,CAAC,WAAW,CAAC;SACjB,CAAA;QACD,yEAAyE;QACzE,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QACzE,iEAAiE;QACjE,kDAAkD;QAClD,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,SAAS,GAAG,CAAC,OAAO,GAAG,QAAQ;QAC7B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;IACpC,CAAC;IAED,SAAS,IAAI,CAAC,OAAe;QAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAClC,CAAC;IAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,KAA8B;QACzE,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;SAC5C,CAAA;IACH,CAAC;IAED,SAAS,UAAU,CAAC,IAAY;QAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IACtE,CAAC;IAED,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACpE,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACrC,+CAA+C;QAC/C,MAAM,QAAQ,GAAiB,CAAC,GAAG,EAAE,CAAC,CAAA;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAA;QACrE,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACvC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACrC,2CAA2C;QAC3C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAC1D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9C,kFAAkF;QAClF,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC9D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACvD,iFAAiF;QACjF,MAAM,QAAQ,GAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC9C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;QACnC,oBAAoB;QACpB,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QACtE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QACjC,gBAAgB;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;QACrC,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACxC,yEAAyE;QACzE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACvC,wFAAwF;oBACxF,MAAM,CACJ,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CACxF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACd,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAChD,MAAM,QAAQ,GAAiB,CAAC,GAAG,EAAE,CAAC,CAAA;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5C,CAAC;QACD,QAAQ,CAAC,IAAI,CACX,qBAAqB,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAC1F,CAAA;QACD,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QAEjC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACxC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,kFAAkF;YAClF,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAA;YACzE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,QAAQ,GAAiB,CAAC,GAAG,EAAE,CAAC,CAAA;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;QACjC,CAAC;QACD,MAAM,UAAU,GAAG,EAAE,CAAA;QACrB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,CAAA;QAEhD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,oEAAoE;YACpE,oDAAoD;YACpD,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,wBAAwB;YACxE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA,CAAC,aAAa;QACjF,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -8,7 +8,7 @@ export interface LLMMessage {
8
8
  reasoning_content?: string;
9
9
  }
10
10
  export interface LLMProvider {
11
- chat(messages: LLMMessage[], tools: ToolDefinition[]): AsyncGenerator<LLMChunk>;
11
+ chat(messages: LLMMessage[], tools: ToolDefinition[], signal?: AbortSignal): AsyncGenerator<LLMChunk>;
12
12
  }
13
13
  export interface TokenUsage {
14
14
  input_tokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/agent/llm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEjE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAA;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;CAChF;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAA;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,QAAQ,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB"}
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/agent/llm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEjE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAA;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CACF,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC,CAAA;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAA;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,QAAQ,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/agent/prompt-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA+GxD"}
1
+ {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/agent/prompt-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAkIxD"}
@@ -22,7 +22,19 @@ export function buildSystemPrompt(config) {
22
22
  - \`search\`: Search the web using Tavily (query: string, search_depth?: string, include_answer?: boolean, max_results?: number, topic?: string, days?: number)
23
23
  `;
24
24
  }
25
- const planOnly = mode === 'plan';
25
+ if (mode === 'plan') {
26
+ return `Available tools (read-only investigation + write_plan):
27
+ - \`read\`: Read file contents (paths: string[])
28
+ - \`glob\`: Find files by glob pattern (pattern: string)
29
+ - \`grep\`: Search file content by regex (pattern: string, include?: string, path?: string)
30
+ - \`ls\`: List directory (path?: string)
31
+ - \`bash\`: Execute read-only shell commands for investigation (NEVER modify files)
32
+ - \`find\`: Find files by name pattern (pattern: string, path?: string, maxResults?: number)
33
+ - \`git\`: Run read-only git commands (command: string)
34
+ - \`search\`: Search the web using Tavily (query: string, search_depth?: string, include_answer?: boolean, max_results?: number, topic?: string, days?: number)
35
+ - \`write_plan\`: Save plan/todo markdown into .lonny/ folder
36
+ `;
37
+ }
26
38
  return `Available tools:
27
39
  - \`read\`: Read file contents (paths: string[])
28
40
  - \`glob\`: Find files by glob pattern (pattern: string)
@@ -30,7 +42,7 @@ export function buildSystemPrompt(config) {
30
42
  - \`ls\`: List directory (path?: string)
31
43
  - \`bash\`: Execute a shell command
32
44
  - \`edit\`: Replace text in files — call with {"edits": [{"file_path", "old_string", "new_string"}]} (array required)
33
- ${planOnly ? '- `write_plan`: Save plan/todo markdown into .lonny/ folder\n' : ''}- \`install_skill\`: Install an npm package as a skill — fetches package info from npm, runs npm install, and creates a .lonny/skills/ file with usage instructions for the AI
45
+ - \`install_skill\`: Install an npm package as a skill — fetches package info from npm, runs npm install, and creates a .lonny/skills/ file with usage instructions for the AI
34
46
  - \`find\`: Find files by name pattern (pattern: string, path?: string, maxResults?: number)
35
47
  - \`git\`: Run read-only git commands (command: string)
36
48
  - \`search\`: Search the web using Tavily (query: string, search_depth?: string, include_answer?: boolean, max_results?: number, topic?: string, days?: number)
@@ -52,10 +64,12 @@ ${getToolListForMode(config.mode)}`;
52
64
 
53
65
  RULES (plan-specific):
54
66
  1. Read first: Use read/grep/glob tools to gather all context you need before planning.
55
- 2. You CANNOT edit source files you have no code edit tools. Only read and analyze.
56
- 3. Use \`bash\` for read-only commands only.
57
- 4. You MUST persist the final plan AND todo list to a file in \`.lonny/\` using \`write_plan\`. The \`write_plan\` content MUST include both ## Plan and ## Todo List sections.
58
- 5. You MUST also include the todo list in your text response to the user (not just in the file).
67
+ 2. You NEVER edit source files. You ONLY use read-only tools (read/glob/grep/ls/find/git/search) and bash (read-only commands only). You do NOT have access to edit, install_skill, or exec.
68
+ 3. Use \`bash\` for investigation only NEVER to modify files, install packages, or run write operations.
69
+ 4. Your ONLY output is a plan file saved via \`write_plan\`. You CANNOT modify the codebase directly.
70
+ 5. You MUST persist the final plan AND todo list to a file in \`.lonny/\` using \`write_plan\`. The \`write_plan\` content MUST include both ## Plan and ## Todo List sections.
71
+ 6. You MUST also include the todo list in your text response to the user (not just in the file).
72
+ 7. If the user asks you to modify files, run write commands, or install packages — refuse and explain they need to switch to code mode (\`/mode code\`).
59
73
 
60
74
  OUTPUT FORMAT (you MUST include both in write_plan AND in your response text):
61
75
 
@@ -104,9 +118,13 @@ RULES (code-specific):
104
118
  - Available shell commands: ${isWindows ? 'PowerShell (cmd is also available but PowerShell is preferred)' : 'bash'}
105
119
  ${isWindows ? ' - Use PowerShell. Do NOT use Unix commands like `cat`, `ls`, `grep`, `which`, `chmod`, `mv`, `cp`, `rm`, `touch`, `mkdir`, `uname`, etc.' : ''}
106
120
  ${isWindows ? ' - Use `type` instead of `cat`, `dir` instead of `ls`, `where` instead of `which`' : ''}`;
121
+ // Plan mode uses its own standalone tool list inside modeInstructions — skip sharedRules
122
+ const rulesSection = config.mode === 'plan'
123
+ ? ''
124
+ : `
125
+ ${sharedRules}`;
107
126
  return `${modeInstructions}
108
127
 
109
- ${envSection}
110
- ${sharedRules}${skillsSection}`;
128
+ ${envSection}${rulesSection}${skillsSection}`;
111
129
  }
112
130
  //# sourceMappingURL=prompt-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/agent/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE/D;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;IAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAA;IACnE,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;IACtB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;IACtB,MAAM,SAAS,GAAG,QAAQ,KAAK,OAAO,CAAA;IAEtC,0EAA0E;IAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAEnD,yEAAyE;IACzE,SAAS,kBAAkB,CAAC,IAAY;QACtC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO;;;CAGZ,CAAA;QACG,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,KAAK,MAAM,CAAA;QAChC,OAAO;;;;;;;EAOT,QAAQ,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,EAAE;;;;;CAKhF,CAAA;IACC,CAAC;IAED,4EAA4E;IAC5E,MAAM,WAAW,GAAG;;;;;;;EAOpB,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAA;IAEjC,4EAA4E;IAC5E,MAAM,gBAAgB,GACpB,MAAM,CAAC,IAAI,KAAK,MAAM;QACpB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;sHAsB8G;QAChH,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK;YACrB,CAAC,CAAC;;;;;;;;;yHAS+G;YACjH,CAAC,CAAC;;;;;;;;;;;;mPAYyO,CAAA;IAEjP,4EAA4E;IAC5E,MAAM,UAAU,GAAG;cACP,QAAQ,IAAI,OAAO,KAAK,IAAI;WAC/B,KAAK;uBACO,GAAG;QAClB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;8BACf,SAAS,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,MAAM;EACjH,SAAS,CAAC,CAAC,CAAC,4IAA4I,CAAC,CAAC,CAAC,EAAE;EAC7J,SAAS,CAAC,CAAC,CAAC,oFAAoF,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IAEvG,OAAO,GAAG,gBAAgB;;EAE1B,UAAU;EACV,WAAW,GAAG,aAAa,EAAE,CAAA;AAC/B,CAAC"}
1
+ {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/agent/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE/D;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;IAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAA;IACnE,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;IACtB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;IACtB,MAAM,SAAS,GAAG,QAAQ,KAAK,OAAO,CAAA;IAEtC,0EAA0E;IAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAEnD,yEAAyE;IACzE,SAAS,kBAAkB,CAAC,IAAY;QACtC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO;;;CAGZ,CAAA;QACG,CAAC;QACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO;;;;;;;;;;CAUZ,CAAA;QACG,CAAC;QACD,OAAO;;;;;;;;;;;;CAYV,CAAA;IACC,CAAC;IAED,4EAA4E;IAC5E,MAAM,WAAW,GAAG;;;;;;;EAOpB,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAA;IAEjC,4EAA4E;IAC5E,MAAM,gBAAgB,GACpB,MAAM,CAAC,IAAI,KAAK,MAAM;QACpB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;sHAwB8G;QAChH,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK;YACrB,CAAC,CAAC;;;;;;;;;yHAS+G;YACjH,CAAC,CAAC;;;;;;;;;;;;mPAYyO,CAAA;IAEjP,4EAA4E;IAC5E,MAAM,UAAU,GAAG;cACP,QAAQ,IAAI,OAAO,KAAK,IAAI;WAC/B,KAAK;uBACO,GAAG;QAClB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;8BACf,SAAS,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,MAAM;EACjH,SAAS,CAAC,CAAC,CAAC,4IAA4I,CAAC,CAAC,CAAC,EAAE;EAC7J,SAAS,CAAC,CAAC,CAAC,oFAAoF,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IAEvG,yFAAyF;IACzF,MAAM,YAAY,GAChB,MAAM,CAAC,IAAI,KAAK,MAAM;QACpB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;EACN,WAAW,EAAE,CAAA;IACb,OAAO,GAAG,gBAAgB;;EAE1B,UAAU,GAAG,YAAY,GAAG,aAAa,EAAE,CAAA;AAC7C,CAAC"}
@@ -4,6 +4,6 @@ export declare class AnthropicProvider implements LLMProvider {
4
4
  private client;
5
5
  private model;
6
6
  constructor(apiKey: string, baseURL?: string, model?: string);
7
- chat(messages: LLMMessage[], tools: ToolDefinition[]): AsyncGenerator<LLMChunk>;
7
+ chat(messages: LLMMessage[], tools: ToolDefinition[], signal?: AbortSignal): AsyncGenerator<LLMChunk>;
8
8
  }
9
9
  //# sourceMappingURL=anthropic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAElE,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,KAAK,CAAQ;gBAET,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAKrD,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC;CA0IvF"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAElE,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,KAAK,CAAQ;gBAET,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAKrD,IAAI,CACT,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC;CA6I5B"}
@@ -6,7 +6,7 @@ export class AnthropicProvider {
6
6
  this.client = new Anthropic({ apiKey, baseURL });
7
7
  this.model = model || 'claude-sonnet-4-20250514';
8
8
  }
9
- async *chat(messages, tools) {
9
+ async *chat(messages, tools, signal) {
10
10
  const anthropicTools = tools.map(t => {
11
11
  const properties = {};
12
12
  for (const [key, param] of Object.entries(t.parameters)) {
@@ -68,7 +68,7 @@ export class AnthropicProvider {
68
68
  messages: anthropicMessages,
69
69
  tools: anthropicTools.length > 0 ? anthropicTools : undefined,
70
70
  max_tokens: 8192,
71
- });
71
+ }, signal ? { signal } : undefined);
72
72
  let currentToolUse = null;
73
73
  let inputTokens = 0;
74
74
  let outputTokens = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAA;AAKzC,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAW;IACjB,KAAK,CAAQ;IAErB,YAAY,MAAc,EAAE,OAAgB,EAAE,KAAc;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,0BAA0B,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,CAAC,IAAI,CAAC,QAAsB,EAAE,KAAuB;QACzD,MAAM,cAAc,GAAqB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACrD,MAAM,UAAU,GAA4B,EAAE,CAAA;YAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxD,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;gBACtC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;YACxB,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAiB;oBACvB,UAAU;oBACV,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;yBACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;yBAC7B,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;iBACnB;aACF,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;QACzD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;QAEnE,MAAM,iBAAiB,GAAmB,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAClE,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAA;YAC5D,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC3B,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5C,OAAO;wBACL,IAAI,EAAE,WAAoB;wBAC1B,OAAO,EAAE;4BACP,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BAClE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gCACzB,IAAI,EAAE,UAAmB;gCACzB,EAAE,EAAE,EAAE,CAAC,EAAE;gCACT,IAAI,EAAE,EAAE,CAAC,IAAI;gCACb,KAAK,EAAE,EAAE,CAAC,KAAK;6BAChB,CAAC,CAAC;yBACJ;qBACF,CAAA;gBACH,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,WAAoB,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAA;YACjE,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO;oBACL,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,aAAsB;4BAC5B,WAAW,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE;4BACjC,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;yBACzB;qBACF;iBACF,CAAA;YACH,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QAC/C,CAAC,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,SAAS,EAAE,OAAO,IAAI,EAAE;YAChC,QAAQ,EAAE,iBAAiB;YAC3B,KAAK,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;YAC7D,UAAU,EAAE,IAAI;SACjB,CAAC,CAAA;QAEF,IAAI,cAAc,GAIP,IAAI,CAAA;QAEf,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,IAAI,YAAY,GAAG,CAAC,CAAA;QAEpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACxB,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAA;gBACrD,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBAChD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACtC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;gBAChD,CAAC;qBAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,cAAc,EAAE,CAAC;oBACrE,cAAc,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAA;gBAClD,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBAChD,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC5C,cAAc,GAAG;wBACf,EAAE,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE;wBAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI;wBAC9B,KAAK,EAAE,EAAE;qBACV,CAAA;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBAC/C,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM;wBACJ,IAAI,EAAE,UAAU;wBAChB,SAAS,EAAE;4BACT,EAAE,EAAE,cAAc,CAAC,EAAE;4BACrB,IAAI,EAAE,cAAc,CAAC,IAAI;4BACzB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC;yBAChD;qBACF,CAAA;oBACD,cAAc,GAAG,IAAI,CAAA;gBACvB,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACzC,MAAM;oBACJ,IAAI,EAAE,UAAU;oBAChB,aAAa,EAAE,UAAU;oBACzB,KAAK,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE;iBAClE,CAAA;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC1C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAA;gBAC/C,CAAC;gBACD,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,KAAK,eAAe,EAAE,CAAC;oBAC1F,IAAI,cAAc,EAAE,CAAC;wBACnB,MAAM;4BACJ,IAAI,EAAE,UAAU;4BAChB,SAAS,EAAE;gCACT,EAAE,EAAE,cAAc,CAAC,EAAE;gCACrB,IAAI,EAAE,cAAc,CAAC,IAAI;gCACzB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC;6BAChD;yBACF,CAAA;wBACD,cAAc,GAAG,IAAI,CAAA;oBACvB,CAAC;oBACD,MAAM;wBACJ,IAAI,EAAE,UAAU;wBAChB,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;wBACtC,KAAK,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE;qBAClE,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,6 @@ export declare class GoogleProvider implements LLMProvider {
5
5
  private model;
6
6
  private baseUrl;
7
7
  constructor(apiKey: string, baseURL?: string, model?: string);
8
- chat(messages: LLMMessage[], tools: ToolDefinition[]): AsyncGenerator<LLMChunk>;
8
+ chat(messages: LLMMessage[], tools: ToolDefinition[], signal?: AbortSignal): AsyncGenerator<LLMChunk>;
9
9
  }
10
10
  //# sourceMappingURL=google.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/google.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAsClE,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAQ;gBAEX,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAMrD,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC;CA2JvF"}
1
+ {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/google.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAsClE,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAQ;gBAEX,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAMrD,IAAI,CACT,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC;CA4J5B"}
@@ -7,7 +7,7 @@ export class GoogleProvider {
7
7
  this.model = model || 'gemini-2.0-flash';
8
8
  this.baseUrl = baseURL || 'https://generativelanguage.googleapis.com/v1beta';
9
9
  }
10
- async *chat(messages, tools) {
10
+ async *chat(messages, tools, signal) {
11
11
  const systemInstruction = messages.find(m => m.role === 'system')?.content || '';
12
12
  const nonSystemMessages = messages.filter(m => m.role !== 'system');
13
13
  // Build Google-format contents
@@ -90,6 +90,7 @@ export class GoogleProvider {
90
90
  'Content-Type': 'application/json',
91
91
  'x-goog-api-key': this.apiKey,
92
92
  },
93
+ signal,
93
94
  body: JSON.stringify(body),
94
95
  });
95
96
  if (!response.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/agent/providers/google.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/agent/providers/google.ts"],"names":[],"mappings":"AAuCA,MAAM,OAAO,cAAc;IACjB,MAAM,CAAQ;IACd,KAAK,CAAQ;IACb,OAAO,CAAQ;IAEvB,YAAY,MAAc,EAAE,OAAgB,EAAE,KAAc;QAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,kBAAkB,CAAA;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,kDAAkD,CAAA;IAC9E,CAAC;IAED,KAAK,CAAC,CAAC,IAAI,CACT,QAAsB,EACtB,KAAuB,EACvB,MAAoB;QAEpB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,OAAO,IAAI,EAAE,CAAA;QAChF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;QAEnE,+BAA+B;QAC/B,MAAM,QAAQ,GAAoB,EAAE,CAAA;QAEpC,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,KAAK,GAA2B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAA;gBACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;YACxC,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAClC,MAAM,KAAK,GAA2B,EAAE,CAAA;gBACxC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBACd,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;gBACjC,CAAC;gBACD,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBACjB,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;wBAC9B,KAAK,CAAC,IAAI,CAAC;4BACT,YAAY,EAAE;gCACZ,IAAI,EAAE,EAAE,CAAC,IAAI;gCACb,IAAI,EAAE,EAAE,CAAC,KAAgC;6BAC1C;yBACF,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;YACzC,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC7B,8DAA8D;gBAC9D,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE;wBACL;4BACE,gBAAgB,EAAE;gCAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;gCAClB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE;6BACvC;yBACF;qBACF;iBACF,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,cAAc;QACd,MAAM,WAAW,GACf,KAAK,CAAC,MAAM,GAAG,CAAC;YACd,CAAC,CAAC;gBACE;oBACE,oBAAoB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;wBAClC,MAAM,UAAU,GAA4B,EAAE,CAAA;wBAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;4BACxD,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;4BACtC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;wBACxB,CAAC;wBACD,OAAO;4BACL,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,WAAW,EAAE,CAAC,CAAC,WAAW;4BAC1B,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,UAAU;gCACV,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;qCACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;qCAC7B,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;6BACnB;yBACF,CAAA;oBACH,CAAC,CAAC;iBACH;aACF;YACH,CAAC,CAAC,SAAS,CAAA;QAEf,qBAAqB;QACrB,MAAM,IAAI,GAA4B;YACpC,QAAQ;YACR,KAAK,EAAE,WAAW;SACnB,CAAA;QACD,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,kBAAkB,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAA;QACpE,CAAC;QAED,0BAA0B;QAC1B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,WAAW,IAAI,CAAC,KAAK,gCAAgC,CAAA;QAChF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,gBAAgB,EAAE,IAAI,CAAC,MAAM;aAC9B;YACD,MAAM;YACN,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YACrC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,OAAO,EAAE,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAA;QACzC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAEhD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,WAAW,GAAG,CAAC,CAAA;QAEnB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAC3C,IAAI,IAAI;gBAAE,MAAK;YAEf,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YACjD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAChC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;YAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAAE,SAAQ;gBACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBACpC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ;oBAAE,SAAQ;gBAE9C,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAA;oBACtD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;wBACxB,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,IAAI,CAAC,CAAA;wBACtD,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,oBAAoB,IAAI,CAAC,CAAA;oBAC7D,CAAC;oBAED,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;wBAAE,SAAQ;oBACpC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;oBACrC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;oBAE1C,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;wBACf,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;oBACzC,CAAC;oBAED,IAAI,IAAI,EAAE,YAAY,EAAE,CAAC;wBACvB,MAAM;4BACJ,IAAI,EAAE,UAAU;4BAChB,SAAS,EAAE;gCACT,EAAE,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;gCAChD,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;gCAC5B,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;6BAC9B;yBACF,CAAA;oBACH,CAAC;oBAED,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;wBAC3B,MAAM;4BACJ,IAAI,EAAE,UAAU;4BAChB,aAAa,EAAE,SAAS,CAAC,YAAY;4BACrC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE;yBAChE,CAAA;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,sBAAsB;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -4,6 +4,6 @@ export declare class OllamaProvider implements LLMProvider {
4
4
  private baseUrl;
5
5
  private model;
6
6
  constructor(_apiKey: string, baseURL?: string, model?: string);
7
- chat(messages: LLMMessage[], tools: ToolDefinition[]): AsyncGenerator<LLMChunk>;
7
+ chat(messages: LLMMessage[], tools: ToolDefinition[], signal?: AbortSignal): AsyncGenerator<LLMChunk>;
8
8
  }
9
9
  //# sourceMappingURL=ollama.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAgClE,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,KAAK,CAAQ;gBAET,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAKtD,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC;CAsIvF"}
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAgClE,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,KAAK,CAAQ;gBAET,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAKtD,IAAI,CACT,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC;CAuI5B"}
@@ -5,7 +5,7 @@ export class OllamaProvider {
5
5
  this.baseUrl = baseURL || 'http://localhost:11434';
6
6
  this.model = model || 'llama3.2';
7
7
  }
8
- async *chat(messages, tools) {
8
+ async *chat(messages, tools, signal) {
9
9
  // Build Ollama-format messages
10
10
  const ollamaMessages = messages.map(m => {
11
11
  if (m.role === 'system') {
@@ -69,6 +69,7 @@ export class OllamaProvider {
69
69
  const response = await fetch(`${this.baseUrl}/api/chat`, {
70
70
  method: 'POST',
71
71
  headers: { 'Content-Type': 'application/json' },
72
+ signal,
72
73
  body: JSON.stringify(body),
73
74
  });
74
75
  if (!response.ok) {