@zhijiewang/openharness 0.6.0 → 0.7.0

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 (225) hide show
  1. package/README.md +46 -1
  2. package/dist/Tool.test.d.ts +2 -0
  3. package/dist/Tool.test.d.ts.map +1 -0
  4. package/dist/Tool.test.js +42 -0
  5. package/dist/Tool.test.js.map +1 -0
  6. package/dist/commands/commands.test.d.ts +2 -0
  7. package/dist/commands/commands.test.d.ts.map +1 -0
  8. package/dist/commands/commands.test.js +67 -0
  9. package/dist/commands/commands.test.js.map +1 -0
  10. package/dist/commands/index.d.ts.map +1 -1
  11. package/dist/commands/index.js +5 -2
  12. package/dist/commands/index.js.map +1 -1
  13. package/dist/components/CybergotchiPanelConnected.d.ts +5 -1
  14. package/dist/components/CybergotchiPanelConnected.d.ts.map +1 -1
  15. package/dist/components/CybergotchiPanelConnected.js +2 -2
  16. package/dist/components/CybergotchiPanelConnected.js.map +1 -1
  17. package/dist/components/DiffView.d.ts +1 -18
  18. package/dist/components/DiffView.d.ts.map +1 -1
  19. package/dist/components/DiffView.js +1 -54
  20. package/dist/components/DiffView.js.map +1 -1
  21. package/dist/components/Messages.js +1 -1
  22. package/dist/components/Messages.js.map +1 -1
  23. package/dist/components/PermissionPrompt.d.ts.map +1 -1
  24. package/dist/components/PermissionPrompt.js +7 -49
  25. package/dist/components/PermissionPrompt.js.map +1 -1
  26. package/dist/components/REPL.d.ts.map +1 -1
  27. package/dist/components/REPL.js +56 -90
  28. package/dist/components/REPL.js.map +1 -1
  29. package/dist/components/Spinner.d.ts.map +1 -1
  30. package/dist/components/Spinner.js +3 -9
  31. package/dist/components/Spinner.js.map +1 -1
  32. package/dist/cybergotchi/bones.test.d.ts +2 -0
  33. package/dist/cybergotchi/bones.test.d.ts.map +1 -0
  34. package/dist/cybergotchi/bones.test.js +100 -0
  35. package/dist/cybergotchi/bones.test.js.map +1 -0
  36. package/dist/cybergotchi/useCybergotchi.d.ts +1 -1
  37. package/dist/cybergotchi/useCybergotchi.d.ts.map +1 -1
  38. package/dist/cybergotchi/useCybergotchi.js +3 -1
  39. package/dist/cybergotchi/useCybergotchi.js.map +1 -1
  40. package/dist/harness/config.d.ts +1 -0
  41. package/dist/harness/config.d.ts.map +1 -1
  42. package/dist/harness/config.js.map +1 -1
  43. package/dist/harness/context-warning.d.ts +12 -0
  44. package/dist/harness/context-warning.d.ts.map +1 -0
  45. package/dist/harness/context-warning.js +36 -0
  46. package/dist/harness/context-warning.js.map +1 -0
  47. package/dist/harness/context-warning.test.d.ts +2 -0
  48. package/dist/harness/context-warning.test.d.ts.map +1 -0
  49. package/dist/harness/context-warning.test.js +72 -0
  50. package/dist/harness/context-warning.test.js.map +1 -0
  51. package/dist/harness/cost.d.ts.map +1 -1
  52. package/dist/harness/cost.js +1 -0
  53. package/dist/harness/cost.js.map +1 -1
  54. package/dist/harness/credentials.test.d.ts +2 -0
  55. package/dist/harness/credentials.test.d.ts.map +1 -0
  56. package/dist/harness/credentials.test.js +113 -0
  57. package/dist/harness/credentials.test.js.map +1 -0
  58. package/dist/harness/hooks.test.d.ts +2 -0
  59. package/dist/harness/hooks.test.d.ts.map +1 -0
  60. package/dist/harness/hooks.test.js +24 -0
  61. package/dist/harness/hooks.test.js.map +1 -0
  62. package/dist/harness/keybindings.test.d.ts +2 -0
  63. package/dist/harness/keybindings.test.d.ts.map +1 -0
  64. package/dist/harness/keybindings.test.js +38 -0
  65. package/dist/harness/keybindings.test.js.map +1 -0
  66. package/dist/harness/memory.test.d.ts +2 -0
  67. package/dist/harness/memory.test.d.ts.map +1 -0
  68. package/dist/harness/memory.test.js +65 -0
  69. package/dist/harness/memory.test.js.map +1 -0
  70. package/dist/harness/plugins.test.d.ts +2 -0
  71. package/dist/harness/plugins.test.d.ts.map +1 -0
  72. package/dist/harness/plugins.test.js +97 -0
  73. package/dist/harness/plugins.test.js.map +1 -0
  74. package/dist/harness/submit-handler.d.ts +35 -0
  75. package/dist/harness/submit-handler.d.ts.map +1 -0
  76. package/dist/harness/submit-handler.js +86 -0
  77. package/dist/harness/submit-handler.js.map +1 -0
  78. package/dist/harness/submit-handler.test.d.ts +2 -0
  79. package/dist/harness/submit-handler.test.d.ts.map +1 -0
  80. package/dist/harness/submit-handler.test.js +62 -0
  81. package/dist/harness/submit-handler.test.js.map +1 -0
  82. package/dist/lsp/client.test.d.ts +2 -0
  83. package/dist/lsp/client.test.d.ts.map +1 -0
  84. package/dist/lsp/client.test.js +44 -0
  85. package/dist/lsp/client.test.js.map +1 -0
  86. package/dist/main.js +29 -4
  87. package/dist/main.js.map +1 -1
  88. package/dist/mcp/McpTool.test.d.ts +2 -0
  89. package/dist/mcp/McpTool.test.d.ts.map +1 -0
  90. package/dist/mcp/McpTool.test.js +53 -0
  91. package/dist/mcp/McpTool.test.js.map +1 -0
  92. package/dist/mcp/schema.test.d.ts +2 -0
  93. package/dist/mcp/schema.test.d.ts.map +1 -0
  94. package/dist/mcp/schema.test.js +33 -0
  95. package/dist/mcp/schema.test.js.map +1 -0
  96. package/dist/mcp/server.js +1 -1
  97. package/dist/mcp/server.test.d.ts +2 -0
  98. package/dist/mcp/server.test.d.ts.map +1 -0
  99. package/dist/mcp/server.test.js +54 -0
  100. package/dist/mcp/server.test.js.map +1 -0
  101. package/dist/providers/index.js +1 -1
  102. package/dist/providers/index.js.map +1 -1
  103. package/dist/providers/message-format.test.d.ts +2 -0
  104. package/dist/providers/message-format.test.d.ts.map +1 -0
  105. package/dist/providers/message-format.test.js +31 -0
  106. package/dist/providers/message-format.test.js.map +1 -0
  107. package/dist/providers/ollama.d.ts.map +1 -1
  108. package/dist/providers/ollama.js +39 -4
  109. package/dist/providers/ollama.js.map +1 -1
  110. package/dist/query.test.d.ts +2 -0
  111. package/dist/query.test.d.ts.map +1 -0
  112. package/dist/query.test.js +121 -0
  113. package/dist/query.test.js.map +1 -0
  114. package/dist/remote/server.test.d.ts +2 -0
  115. package/dist/remote/server.test.d.ts.map +1 -0
  116. package/dist/remote/server.test.js +120 -0
  117. package/dist/remote/server.test.js.map +1 -0
  118. package/dist/renderer/cells.d.ts +37 -0
  119. package/dist/renderer/cells.d.ts.map +1 -0
  120. package/dist/renderer/cells.js +122 -0
  121. package/dist/renderer/cells.js.map +1 -0
  122. package/dist/renderer/cells.test.d.ts +2 -0
  123. package/dist/renderer/cells.test.d.ts.map +1 -0
  124. package/dist/renderer/cells.test.js +69 -0
  125. package/dist/renderer/cells.test.js.map +1 -0
  126. package/dist/renderer/diff.d.ts +32 -0
  127. package/dist/renderer/diff.d.ts.map +1 -0
  128. package/dist/renderer/diff.js +103 -0
  129. package/dist/renderer/diff.js.map +1 -0
  130. package/dist/renderer/differ.d.ts +25 -0
  131. package/dist/renderer/differ.d.ts.map +1 -0
  132. package/dist/renderer/differ.js +91 -0
  133. package/dist/renderer/differ.js.map +1 -0
  134. package/dist/renderer/e2e.test.d.ts +6 -0
  135. package/dist/renderer/e2e.test.d.ts.map +1 -0
  136. package/dist/renderer/e2e.test.js +235 -0
  137. package/dist/renderer/e2e.test.js.map +1 -0
  138. package/dist/renderer/image.d.ts +21 -0
  139. package/dist/renderer/image.d.ts.map +1 -0
  140. package/dist/renderer/image.js +97 -0
  141. package/dist/renderer/image.js.map +1 -0
  142. package/dist/renderer/index.d.ts +73 -0
  143. package/dist/renderer/index.d.ts.map +1 -0
  144. package/dist/renderer/index.js +331 -0
  145. package/dist/renderer/index.js.map +1 -0
  146. package/dist/renderer/input.d.ts +17 -0
  147. package/dist/renderer/input.d.ts.map +1 -0
  148. package/dist/renderer/input.js +101 -0
  149. package/dist/renderer/input.js.map +1 -0
  150. package/dist/renderer/layout.d.ts +62 -0
  151. package/dist/renderer/layout.d.ts.map +1 -0
  152. package/dist/renderer/layout.js +412 -0
  153. package/dist/renderer/layout.js.map +1 -0
  154. package/dist/renderer/markdown.d.ts +18 -0
  155. package/dist/renderer/markdown.d.ts.map +1 -0
  156. package/dist/renderer/markdown.js +430 -0
  157. package/dist/renderer/markdown.js.map +1 -0
  158. package/dist/renderer/markdown.test.d.ts +2 -0
  159. package/dist/renderer/markdown.test.d.ts.map +1 -0
  160. package/dist/renderer/markdown.test.js +81 -0
  161. package/dist/renderer/markdown.test.js.map +1 -0
  162. package/dist/renderer/perf.test.d.ts +2 -0
  163. package/dist/renderer/perf.test.d.ts.map +1 -0
  164. package/dist/renderer/perf.test.js +121 -0
  165. package/dist/renderer/perf.test.js.map +1 -0
  166. package/dist/renderer/session-browser.d.ts +30 -0
  167. package/dist/renderer/session-browser.d.ts.map +1 -0
  168. package/dist/renderer/session-browser.js +113 -0
  169. package/dist/renderer/session-browser.js.map +1 -0
  170. package/dist/repl.d.ts +20 -0
  171. package/dist/repl.d.ts.map +1 -0
  172. package/dist/repl.js +464 -0
  173. package/dist/repl.js.map +1 -0
  174. package/dist/services/AgentDispatcher.test.d.ts +2 -0
  175. package/dist/services/AgentDispatcher.test.d.ts.map +1 -0
  176. package/dist/services/AgentDispatcher.test.js +66 -0
  177. package/dist/services/AgentDispatcher.test.js.map +1 -0
  178. package/dist/services/StreamingToolExecutor.test.d.ts +2 -0
  179. package/dist/services/StreamingToolExecutor.test.d.ts.map +1 -0
  180. package/dist/services/StreamingToolExecutor.test.js +103 -0
  181. package/dist/services/StreamingToolExecutor.test.js.map +1 -0
  182. package/dist/test-helpers.d.ts +31 -0
  183. package/dist/test-helpers.d.ts.map +1 -0
  184. package/dist/test-helpers.js +106 -0
  185. package/dist/test-helpers.js.map +1 -0
  186. package/dist/tools/GrepTool/index.d.ts +2 -2
  187. package/dist/tools/tools-basic.test.d.ts +6 -0
  188. package/dist/tools/tools-basic.test.d.ts.map +1 -0
  189. package/dist/tools/tools-basic.test.js +190 -0
  190. package/dist/tools/tools-basic.test.js.map +1 -0
  191. package/dist/types/message.d.ts +1 -0
  192. package/dist/types/message.d.ts.map +1 -1
  193. package/dist/types/message.test.d.ts +2 -0
  194. package/dist/types/message.test.d.ts.map +1 -0
  195. package/dist/types/message.test.js +46 -0
  196. package/dist/types/message.test.js.map +1 -0
  197. package/dist/utils/diff-algorithm.d.ts +24 -0
  198. package/dist/utils/diff-algorithm.d.ts.map +1 -0
  199. package/dist/utils/diff-algorithm.js +58 -0
  200. package/dist/utils/diff-algorithm.js.map +1 -0
  201. package/dist/utils/diff-algorithm.test.d.ts +2 -0
  202. package/dist/utils/diff-algorithm.test.d.ts.map +1 -0
  203. package/dist/utils/diff-algorithm.test.js +49 -0
  204. package/dist/utils/diff-algorithm.test.js.map +1 -0
  205. package/dist/utils/format.d.ts +6 -0
  206. package/dist/utils/format.d.ts.map +1 -0
  207. package/dist/utils/format.js +12 -0
  208. package/dist/utils/format.js.map +1 -0
  209. package/dist/utils/theme-data.d.ts +31 -0
  210. package/dist/utils/theme-data.d.ts.map +1 -0
  211. package/dist/utils/theme-data.js +55 -0
  212. package/dist/utils/theme-data.js.map +1 -0
  213. package/dist/utils/theme.d.ts +4 -21
  214. package/dist/utils/theme.d.ts.map +1 -1
  215. package/dist/utils/theme.js +4 -36
  216. package/dist/utils/theme.js.map +1 -1
  217. package/dist/utils/tool-summary.d.ts +15 -0
  218. package/dist/utils/tool-summary.d.ts.map +1 -0
  219. package/dist/utils/tool-summary.js +55 -0
  220. package/dist/utils/tool-summary.js.map +1 -0
  221. package/dist/utils/tool-summary.test.d.ts +2 -0
  222. package/dist/utils/tool-summary.test.d.ts.map +1 -0
  223. package/dist/utils/tool-summary.test.js +67 -0
  224. package/dist/utils/tool-summary.test.js.map +1 -0
  225. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=message-format.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-format.test.d.ts","sourceRoot":"","sources":["../../src/providers/message-format.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { defaultEstimateTokens, CHARS_PER_TOKEN_BY_PROVIDER } from './base.js';
4
+ describe('defaultEstimateTokens', () => {
5
+ it('returns reasonable number for "hello world" with anthropic (~3-4)', () => {
6
+ const tokens = defaultEstimateTokens('hello world', 'anthropic');
7
+ // "hello world" is 11 chars; ratio 3.3 => ceil(11/3.3) = 4
8
+ assert.ok(tokens >= 3 && tokens <= 5, `Expected 3-5, got ${tokens}`);
9
+ });
10
+ it('uses different ratio for openai than anthropic', () => {
11
+ const text = 'a'.repeat(100);
12
+ const anthropicTokens = defaultEstimateTokens(text, 'anthropic');
13
+ const openaiTokens = defaultEstimateTokens(text, 'openai');
14
+ // anthropic ratio 3.3, openai ratio 3.5 => anthropic returns more tokens
15
+ assert.notEqual(anthropicTokens, openaiTokens);
16
+ assert.ok(anthropicTokens > openaiTokens, 'anthropic (smaller ratio) should yield more tokens');
17
+ });
18
+ it('CHARS_PER_TOKEN_BY_PROVIDER has entries for anthropic, openai, ollama', () => {
19
+ assert.ok('anthropic' in CHARS_PER_TOKEN_BY_PROVIDER);
20
+ assert.ok('openai' in CHARS_PER_TOKEN_BY_PROVIDER);
21
+ assert.ok('ollama' in CHARS_PER_TOKEN_BY_PROVIDER);
22
+ assert.equal(typeof CHARS_PER_TOKEN_BY_PROVIDER.anthropic, 'number');
23
+ assert.equal(typeof CHARS_PER_TOKEN_BY_PROVIDER.openai, 'number');
24
+ assert.equal(typeof CHARS_PER_TOKEN_BY_PROVIDER.ollama, 'number');
25
+ });
26
+ it('returns 0 for empty string', () => {
27
+ const tokens = defaultEstimateTokens('', 'anthropic');
28
+ assert.equal(tokens, 0);
29
+ });
30
+ });
31
+ //# sourceMappingURL=message-format.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-format.test.js","sourceRoot":"","sources":["../../src/providers/message-format.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAE/E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,MAAM,GAAG,qBAAqB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACjE,2DAA2D;QAC3D,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,qBAAqB,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3D,yEAAyE;QACzE,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAC/C,MAAM,CAAC,EAAE,CAAC,eAAe,GAAG,YAAY,EAAE,oDAAoD,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,CAAC,EAAE,CAAC,WAAW,IAAI,2BAA2B,CAAC,CAAC;QACtD,MAAM,CAAC,EAAE,CAAC,QAAQ,IAAI,2BAA2B,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,QAAQ,IAAI,2BAA2B,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACrE,MAAM,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClE,MAAM,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,oBAAoB,CAAC;AAExE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjF,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,cAAc;IAKlC,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,YAAY;IAYb,MAAM,CACX,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,UAAU,EAAE,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC;IAqI9B,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,UAAU,EAAE,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC;IAuCnB,UAAU,IAAI,SAAS,EAAE;IAInB,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IA+BnC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQtC"}
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,oBAAoB,CAAC;AAExE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjF,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,cAAc;IAKlC,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,YAAY;IAYb,MAAM,CACX,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,UAAU,EAAE,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC;IAyJ9B,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,UAAU,EAAE,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC;IAkDnB,UAAU,IAAI,SAAS,EAAE;IAInB,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IA+BnC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQtC"}
@@ -86,8 +86,30 @@ export class OllamaProvider {
86
86
  return;
87
87
  }
88
88
  if (!res.ok) {
89
- yield { type: "error", message: `Ollama HTTP ${res.status}: ${await res.text()}` };
90
- return;
89
+ const errText = await res.text();
90
+ // Retry without tools if model doesn't support them
91
+ if (res.status === 400 && errText.includes("does not support tools") && body.tools) {
92
+ delete body.tools;
93
+ try {
94
+ res = await fetch(`${this.baseUrl}/api/chat`, {
95
+ method: "POST",
96
+ headers: { "Content-Type": "application/json" },
97
+ body: JSON.stringify(body),
98
+ });
99
+ }
100
+ catch (err) {
101
+ yield { type: "error", message: `Ollama retry failed: ${err}` };
102
+ return;
103
+ }
104
+ if (!res.ok) {
105
+ yield { type: "error", message: `Ollama HTTP ${res.status}: ${await res.text()}` };
106
+ return;
107
+ }
108
+ }
109
+ else {
110
+ yield { type: "error", message: `Ollama HTTP ${res.status}: ${errText}` };
111
+ return;
112
+ }
91
113
  }
92
114
  const reader = res.body?.getReader();
93
115
  if (!reader) {
@@ -201,13 +223,26 @@ export class OllamaProvider {
201
223
  const ollamaTools = this.convertTools(tools);
202
224
  if (ollamaTools)
203
225
  body.tools = ollamaTools;
204
- const res = await fetch(`${this.baseUrl}/api/chat`, {
226
+ let res = await fetch(`${this.baseUrl}/api/chat`, {
205
227
  method: "POST",
206
228
  headers: { "Content-Type": "application/json" },
207
229
  body: JSON.stringify(body),
208
230
  });
209
231
  if (!res.ok) {
210
- throw new Error(`Ollama HTTP ${res.status}: ${await res.text()}`);
232
+ const errText = await res.text();
233
+ if (res.status === 400 && errText.includes("does not support tools") && body.tools) {
234
+ delete body.tools;
235
+ res = await fetch(`${this.baseUrl}/api/chat`, {
236
+ method: "POST",
237
+ headers: { "Content-Type": "application/json" },
238
+ body: JSON.stringify(body),
239
+ });
240
+ if (!res.ok)
241
+ throw new Error(`Ollama HTTP ${res.status}: ${await res.text()}`);
242
+ }
243
+ else {
244
+ throw new Error(`Ollama HTTP ${res.status}: ${errText}`);
245
+ }
211
246
  }
212
247
  const data = await res.json();
213
248
  const content = data.message?.content ?? "";
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=query.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.test.d.ts","sourceRoot":"","sources":["../src/query.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,121 @@
1
+ import test from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { query, compressMessages } from './query.js';
4
+ import { createMockProvider, textResponseEvents, toolCallEvents, createErrorProvider, createMockTool } from './test-helpers.js';
5
+ import { createUserMessage, createAssistantMessage, createMessage } from './types/message.js';
6
+ // ── Basic flow ──
7
+ test('query: text response yields text_delta then turn_complete', async () => {
8
+ const provider = createMockProvider([textResponseEvents('Hello')]);
9
+ const events = [];
10
+ for await (const ev of query('hi', { provider, tools: [], systemPrompt: 'test', permissionMode: 'trust' })) {
11
+ events.push(ev);
12
+ }
13
+ assert.ok(events.some(e => e.type === 'text_delta' && e.content === 'Hello'));
14
+ assert.ok(events.some(e => e.type === 'turn_complete' && e.reason === 'completed'));
15
+ });
16
+ test('query: terminates at maxTurns', async () => {
17
+ // Provider always returns a tool call, forcing loop
18
+ const toolEvents = toolCallEvents('MockTool', { input: 'x' });
19
+ const provider = createMockProvider([toolEvents, toolEvents, toolEvents]);
20
+ const mockTool = createMockTool('MockTool');
21
+ const events = [];
22
+ for await (const ev of query('go', { provider, tools: [mockTool], systemPrompt: 'test', permissionMode: 'trust', maxTurns: 2 })) {
23
+ events.push(ev);
24
+ }
25
+ const complete = events.filter(e => e.type === 'turn_complete');
26
+ assert.ok(complete.length > 0);
27
+ });
28
+ test('query: terminates on abortSignal', async () => {
29
+ const controller = new AbortController();
30
+ controller.abort(); // abort immediately
31
+ const provider = createMockProvider([textResponseEvents('Hello')]);
32
+ const events = [];
33
+ for await (const ev of query('hi', { provider, tools: [], systemPrompt: 'test', permissionMode: 'trust', abortSignal: controller.signal })) {
34
+ events.push(ev);
35
+ }
36
+ assert.ok(events.some(e => e.type === 'turn_complete' && e.reason === 'aborted'));
37
+ });
38
+ test('query: terminates on budget exceeded', async () => {
39
+ const provider = createMockProvider([textResponseEvents('Hello')]);
40
+ const events = [];
41
+ for await (const ev of query('hi', { provider, tools: [], systemPrompt: 'test', permissionMode: 'trust', maxCost: 0.0001 })) {
42
+ events.push(ev);
43
+ }
44
+ // Should either complete or hit budget
45
+ assert.ok(events.length > 0);
46
+ });
47
+ // ── Error recovery ──
48
+ test('query: rate limit triggers retry', async () => {
49
+ const error = new Error('HTTP 429 rate limit exceeded');
50
+ const errorProvider = createErrorProvider(error);
51
+ const events = [];
52
+ for await (const ev of query('hi', { provider: errorProvider, tools: [], systemPrompt: 'test', permissionMode: 'trust', maxTurns: 1 })) {
53
+ events.push(ev);
54
+ }
55
+ assert.ok(events.some(e => e.type === 'rate_limited' || e.type === 'error'));
56
+ });
57
+ test('query: network error yields error event', async () => {
58
+ const error = new Error('fetch failed: network error');
59
+ const errorProvider = createErrorProvider(error);
60
+ const events = [];
61
+ for await (const ev of query('hi', { provider: errorProvider, tools: [], systemPrompt: 'test', permissionMode: 'trust', maxTurns: 1 })) {
62
+ events.push(ev);
63
+ }
64
+ assert.ok(events.some(e => e.type === 'error'));
65
+ });
66
+ // ── compressMessages ──
67
+ test('compressMessages: preserves last N messages', () => {
68
+ const msgs = [];
69
+ for (let i = 0; i < 20; i++) {
70
+ msgs.push(createUserMessage(`msg ${i}`));
71
+ msgs.push(createAssistantMessage(`reply ${i}`));
72
+ }
73
+ const result = compressMessages(msgs, 100); // very low target
74
+ assert.ok(result.length < msgs.length);
75
+ assert.ok(result.length >= 10); // keepLast = 10
76
+ });
77
+ test('compressMessages: truncates old tool results', () => {
78
+ const msgs = [
79
+ createUserMessage('start'),
80
+ createAssistantMessage('ok', [{ id: 'tc1', toolName: 'Bash', arguments: {} }]),
81
+ createMessage('tool', 'x'.repeat(1000), { toolResults: [{ callId: 'tc1', output: 'x'.repeat(1000), isError: false }] }),
82
+ ];
83
+ // Add enough messages to push old ones past keepLast
84
+ for (let i = 0; i < 15; i++) {
85
+ msgs.push(createUserMessage(`msg ${i}`));
86
+ msgs.push(createAssistantMessage(`reply ${i}`));
87
+ }
88
+ const result = compressMessages(msgs, 500);
89
+ // Old tool result should be truncated
90
+ const toolMsgs = result.filter(m => m.role === 'tool');
91
+ if (toolMsgs.length > 0) {
92
+ assert.ok(toolMsgs[0].content.length < 1000 || toolMsgs[0].content.includes('truncated'));
93
+ }
94
+ });
95
+ test('compressMessages: preserves pinned messages', () => {
96
+ const msgs = [
97
+ createMessage('system', 'PINNED RULES', { meta: { isInfo: true, pinned: true } }),
98
+ ...Array.from({ length: 30 }, (_, i) => createUserMessage(`msg ${i}`)),
99
+ ];
100
+ const result = compressMessages(msgs, 50);
101
+ const pinned = result.filter(m => m.meta?.pinned);
102
+ assert.equal(pinned.length, 1);
103
+ assert.equal(pinned[0].content, 'PINNED RULES');
104
+ });
105
+ test('compressMessages: removes orphaned tool results', () => {
106
+ const msgs = [
107
+ createUserMessage('hi'),
108
+ // Tool result with no matching assistant tool call
109
+ createMessage('tool', 'orphaned', { toolResults: [{ callId: 'orphan-id', output: 'orphaned', isError: false }] }),
110
+ createAssistantMessage('done'),
111
+ ];
112
+ const result = compressMessages(msgs, 10000);
113
+ const toolMsgs = result.filter(m => m.role === 'tool');
114
+ assert.equal(toolMsgs.length, 0); // orphaned result removed
115
+ });
116
+ test('compressMessages: returns input unchanged when <= 2 messages', () => {
117
+ const msgs = [createUserMessage('hi')];
118
+ const result = compressMessages(msgs, 10);
119
+ assert.deepEqual(result, msgs);
120
+ });
121
+ //# sourceMappingURL=query.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.test.js","sourceRoot":"","sources":["../src/query.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=server.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.test.d.ts","sourceRoot":"","sources":["../../src/remote/server.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,120 @@
1
+ import test from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import http from 'node:http';
4
+ import { RemoteServer } from './server.js';
5
+ import { createMockProvider, textResponseEvents, createMockTool } from '../test-helpers.js';
6
+ const provider = createMockProvider([textResponseEvents('Hello remote!')]);
7
+ const tools = [createMockTool('TestTool')];
8
+ let server;
9
+ let port;
10
+ // Use a random port for each test run
11
+ function getRandomPort() {
12
+ return 30000 + Math.floor(Math.random() * 10000);
13
+ }
14
+ function httpGet(path) {
15
+ return new Promise((resolve, reject) => {
16
+ http.get(`http://localhost:${port}${path}`, (res) => {
17
+ let body = '';
18
+ res.on('data', (chunk) => body += chunk);
19
+ res.on('end', () => resolve({ status: res.statusCode, body }));
20
+ }).on('error', reject);
21
+ });
22
+ }
23
+ function httpPost(path, data) {
24
+ return new Promise((resolve, reject) => {
25
+ const body = JSON.stringify(data);
26
+ const req = http.request(`http://localhost:${port}${path}`, {
27
+ method: 'POST',
28
+ headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(body) },
29
+ }, (res) => {
30
+ let resBody = '';
31
+ res.on('data', (chunk) => resBody += chunk);
32
+ res.on('end', () => resolve({ status: res.statusCode, body: resBody }));
33
+ });
34
+ req.on('error', reject);
35
+ req.write(body);
36
+ req.end();
37
+ });
38
+ }
39
+ test('remote server: GET /status returns 200', async () => {
40
+ port = getRandomPort();
41
+ server = new RemoteServer({
42
+ port,
43
+ provider,
44
+ tools,
45
+ systemPrompt: 'test',
46
+ permissionMode: 'trust',
47
+ model: 'mock',
48
+ });
49
+ await server.start();
50
+ try {
51
+ const res = await httpGet('/status');
52
+ assert.equal(res.status, 200);
53
+ const data = JSON.parse(res.body);
54
+ assert.equal(data.status, 'ok');
55
+ assert.equal(data.provider, 'mock');
56
+ }
57
+ finally {
58
+ server.stop();
59
+ }
60
+ });
61
+ test('remote server: unknown endpoint returns 404', async () => {
62
+ port = getRandomPort();
63
+ server = new RemoteServer({
64
+ port,
65
+ provider,
66
+ tools,
67
+ systemPrompt: 'test',
68
+ permissionMode: 'trust',
69
+ });
70
+ await server.start();
71
+ try {
72
+ const res = await httpGet('/nonexistent');
73
+ assert.equal(res.status, 404);
74
+ }
75
+ finally {
76
+ server.stop();
77
+ }
78
+ });
79
+ test('remote server: POST /dispatch with missing prompt returns 400', async () => {
80
+ port = getRandomPort();
81
+ server = new RemoteServer({
82
+ port,
83
+ provider,
84
+ tools,
85
+ systemPrompt: 'test',
86
+ permissionMode: 'trust',
87
+ });
88
+ await server.start();
89
+ try {
90
+ const res = await httpPost('/dispatch', {});
91
+ assert.equal(res.status, 400);
92
+ const data = JSON.parse(res.body);
93
+ assert.ok(data.error.includes('prompt'));
94
+ }
95
+ finally {
96
+ server.stop();
97
+ }
98
+ });
99
+ test('remote server: POST /dispatch with prompt returns SSE events', async () => {
100
+ port = getRandomPort();
101
+ const freshProvider = createMockProvider([textResponseEvents('Hi!')]);
102
+ server = new RemoteServer({
103
+ port,
104
+ provider: freshProvider,
105
+ tools,
106
+ systemPrompt: 'test',
107
+ permissionMode: 'trust',
108
+ });
109
+ await server.start();
110
+ try {
111
+ const res = await httpPost('/dispatch', { prompt: 'hello' });
112
+ assert.equal(res.status, 200);
113
+ assert.ok(res.body.includes('data:'));
114
+ assert.ok(res.body.includes('[DONE]'));
115
+ }
116
+ finally {
117
+ server.stop();
118
+ }
119
+ });
120
+ //# sourceMappingURL=server.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../src/remote/server.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Cell grid — 2D array of styled characters for terminal rendering.
3
+ */
4
+ export type Style = {
5
+ fg: string | null;
6
+ bg: string | null;
7
+ bold: boolean;
8
+ dim: boolean;
9
+ underline: boolean;
10
+ };
11
+ export type Cell = {
12
+ char: string;
13
+ style: Style;
14
+ };
15
+ export declare const EMPTY_STYLE: Style;
16
+ export declare const EMPTY_CELL: Cell;
17
+ export declare function cellsEqual(a: Cell, b: Cell): boolean;
18
+ export declare class CellGrid {
19
+ readonly width: number;
20
+ readonly height: number;
21
+ cells: Cell[][];
22
+ constructor(width: number, height: number);
23
+ clear(): void;
24
+ setCell(row: number, col: number, char: string, style: Style): void;
25
+ /**
26
+ * Write a string into the grid at (row, col). Handles \n for line breaks.
27
+ * Returns the number of rows consumed.
28
+ */
29
+ writeText(row: number, col: number, text: string, style: Style, wrapWidth?: number): number;
30
+ /**
31
+ * Write word-wrapped text. Splits on spaces, wraps at wrapWidth.
32
+ * Returns the number of rows consumed.
33
+ */
34
+ writeWrapped(row: number, col: number, text: string, style: Style, wrapWidth: number): number;
35
+ clone(): CellGrid;
36
+ }
37
+ //# sourceMappingURL=cells.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cells.d.ts","sourceRoot":"","sources":["../../src/renderer/cells.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAyE,CAAC;AACpG,eAAO,MAAM,UAAU,EAAE,IAA+C,CAAC;AAEzE,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAOpD;AAED,qBAAa,QAAQ;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;gBAEJ,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAazC,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAKnE;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAsB3F;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAoC7F,KAAK,IAAI,QAAQ;CAUlB"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Cell grid — 2D array of styled characters for terminal rendering.
3
+ */
4
+ export const EMPTY_STYLE = { fg: null, bg: null, bold: false, dim: false, underline: false };
5
+ export const EMPTY_CELL = { char: ' ', style: { ...EMPTY_STYLE } };
6
+ export function cellsEqual(a, b) {
7
+ return a.char === b.char &&
8
+ a.style.fg === b.style.fg &&
9
+ a.style.bg === b.style.bg &&
10
+ a.style.bold === b.style.bold &&
11
+ a.style.dim === b.style.dim &&
12
+ a.style.underline === b.style.underline;
13
+ }
14
+ export class CellGrid {
15
+ width;
16
+ height;
17
+ cells;
18
+ constructor(width, height) {
19
+ this.width = width;
20
+ this.height = height;
21
+ this.cells = [];
22
+ for (let r = 0; r < height; r++) {
23
+ const row = [];
24
+ for (let c = 0; c < width; c++) {
25
+ row.push({ char: ' ', style: { ...EMPTY_STYLE } });
26
+ }
27
+ this.cells.push(row);
28
+ }
29
+ }
30
+ clear() {
31
+ for (let r = 0; r < this.height; r++) {
32
+ for (let c = 0; c < this.width; c++) {
33
+ this.cells[r][c] = { char: ' ', style: { ...EMPTY_STYLE } };
34
+ }
35
+ }
36
+ }
37
+ setCell(row, col, char, style) {
38
+ if (row < 0 || row >= this.height || col < 0 || col >= this.width)
39
+ return;
40
+ this.cells[row][col] = { char, style };
41
+ }
42
+ /**
43
+ * Write a string into the grid at (row, col). Handles \n for line breaks.
44
+ * Returns the number of rows consumed.
45
+ */
46
+ writeText(row, col, text, style, wrapWidth) {
47
+ const maxCol = wrapWidth ?? this.width;
48
+ let r = row;
49
+ let c = col;
50
+ for (let i = 0; i < text.length; i++) {
51
+ const ch = text[i];
52
+ if (ch === '\n') {
53
+ r++;
54
+ c = col;
55
+ continue;
56
+ }
57
+ if (c >= maxCol) {
58
+ r++;
59
+ c = col;
60
+ }
61
+ if (r >= this.height)
62
+ break;
63
+ this.setCell(r, c, ch, style);
64
+ c++;
65
+ }
66
+ return r - row + 1;
67
+ }
68
+ /**
69
+ * Write word-wrapped text. Splits on spaces, wraps at wrapWidth.
70
+ * Returns the number of rows consumed.
71
+ */
72
+ writeWrapped(row, col, text, style, wrapWidth) {
73
+ const lines = text.split('\n');
74
+ let r = row;
75
+ for (const line of lines) {
76
+ if (r >= this.height)
77
+ break;
78
+ const words = line.split(' ');
79
+ let c = col;
80
+ for (const word of words) {
81
+ if (word.length === 0)
82
+ continue;
83
+ // Wrap if word doesn't fit on current line (unless at start of line)
84
+ if (c > col && c + word.length + 1 > wrapWidth) {
85
+ r++;
86
+ c = col;
87
+ if (r >= this.height)
88
+ break;
89
+ }
90
+ // Add space before word (unless at start of line)
91
+ if (c > col) {
92
+ this.setCell(r, c, ' ', style);
93
+ c++;
94
+ }
95
+ // Write word character by character (may still wrap if word > wrapWidth)
96
+ for (let i = 0; i < word.length; i++) {
97
+ if (c >= wrapWidth) {
98
+ r++;
99
+ c = col;
100
+ if (r >= this.height)
101
+ break;
102
+ }
103
+ this.setCell(r, c, word[i], style);
104
+ c++;
105
+ }
106
+ }
107
+ r++;
108
+ }
109
+ return r - row;
110
+ }
111
+ clone() {
112
+ const g = new CellGrid(this.width, this.height);
113
+ for (let r = 0; r < this.height; r++) {
114
+ for (let c = 0; c < this.width; c++) {
115
+ const src = this.cells[r][c];
116
+ g.cells[r][c] = { char: src.char, style: { ...src.style } };
117
+ }
118
+ }
119
+ return g;
120
+ }
121
+ }
122
+ //# sourceMappingURL=cells.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cells.js","sourceRoot":"","sources":["../../src/renderer/cells.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cells.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cells.test.d.ts","sourceRoot":"","sources":["../../src/renderer/cells.test.ts"],"names":[],"mappings":""}