openhorse 0.1.5

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 (587) hide show
  1. package/README.md +460 -0
  2. package/bin/openhorse +56 -0
  3. package/dist/agents/coder.d.ts +12 -0
  4. package/dist/agents/coder.d.ts.map +1 -0
  5. package/dist/agents/coder.js +48 -0
  6. package/dist/agents/coder.js.map +1 -0
  7. package/dist/agents/leader.d.ts +12 -0
  8. package/dist/agents/leader.d.ts.map +1 -0
  9. package/dist/agents/leader.js +49 -0
  10. package/dist/agents/leader.js.map +1 -0
  11. package/dist/agents/router.d.ts +59 -0
  12. package/dist/agents/router.d.ts.map +1 -0
  13. package/dist/agents/router.js +193 -0
  14. package/dist/agents/router.js.map +1 -0
  15. package/dist/cli-ink.d.ts +7 -0
  16. package/dist/cli-ink.d.ts.map +1 -0
  17. package/dist/cli-ink.js +135 -0
  18. package/dist/cli-ink.js.map +1 -0
  19. package/dist/cli.d.ts +7 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +638 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/commands/index.d.ts +12 -0
  24. package/dist/commands/index.d.ts.map +1 -0
  25. package/dist/commands/index.js +1095 -0
  26. package/dist/commands/index.js.map +1 -0
  27. package/dist/commands/parser.d.ts +26 -0
  28. package/dist/commands/parser.d.ts.map +1 -0
  29. package/dist/commands/parser.js +61 -0
  30. package/dist/commands/parser.js.map +1 -0
  31. package/dist/commands/types.d.ts +61 -0
  32. package/dist/commands/types.d.ts.map +1 -0
  33. package/dist/commands/types.js +32 -0
  34. package/dist/commands/types.js.map +1 -0
  35. package/dist/core/agent.d.ts +66 -0
  36. package/dist/core/agent.d.ts.map +1 -0
  37. package/dist/core/agent.js +55 -0
  38. package/dist/core/agent.js.map +1 -0
  39. package/dist/core/brain.d.ts +41 -0
  40. package/dist/core/brain.d.ts.map +1 -0
  41. package/dist/core/brain.js +92 -0
  42. package/dist/core/brain.js.map +1 -0
  43. package/dist/core/cost-tracker.d.ts +107 -0
  44. package/dist/core/cost-tracker.d.ts.map +1 -0
  45. package/dist/core/cost-tracker.js +199 -0
  46. package/dist/core/cost-tracker.js.map +1 -0
  47. package/dist/core/strategy-tracker.d.ts +61 -0
  48. package/dist/core/strategy-tracker.d.ts.map +1 -0
  49. package/dist/core/strategy-tracker.js +124 -0
  50. package/dist/core/strategy-tracker.js.map +1 -0
  51. package/dist/framework/index.d.ts +20 -0
  52. package/dist/framework/index.d.ts.map +1 -0
  53. package/dist/framework/index.js +29 -0
  54. package/dist/framework/index.js.map +1 -0
  55. package/dist/framework/prompt.d.ts +40 -0
  56. package/dist/framework/prompt.d.ts.map +1 -0
  57. package/dist/framework/prompt.js +112 -0
  58. package/dist/framework/prompt.js.map +1 -0
  59. package/dist/framework/query.d.ts +86 -0
  60. package/dist/framework/query.d.ts.map +1 -0
  61. package/dist/framework/query.js +177 -0
  62. package/dist/framework/query.js.map +1 -0
  63. package/dist/framework/store.d.ts +64 -0
  64. package/dist/framework/store.d.ts.map +1 -0
  65. package/dist/framework/store.js +78 -0
  66. package/dist/framework/store.js.map +1 -0
  67. package/dist/framework/tool-state.d.ts +22 -0
  68. package/dist/framework/tool-state.d.ts.map +1 -0
  69. package/dist/framework/tool-state.js +40 -0
  70. package/dist/framework/tool-state.js.map +1 -0
  71. package/dist/framework/tool.d.ts +88 -0
  72. package/dist/framework/tool.d.ts.map +1 -0
  73. package/dist/framework/tool.js +60 -0
  74. package/dist/framework/tool.js.map +1 -0
  75. package/dist/harness/harness.d.ts +96 -0
  76. package/dist/harness/harness.d.ts.map +1 -0
  77. package/dist/harness/harness.js +224 -0
  78. package/dist/harness/harness.js.map +1 -0
  79. package/dist/harness/safety.d.ts +89 -0
  80. package/dist/harness/safety.d.ts.map +1 -0
  81. package/dist/harness/safety.js +178 -0
  82. package/dist/harness/safety.js.map +1 -0
  83. package/dist/index.d.ts +30 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +57 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/init.d.ts +178 -0
  88. package/dist/init.d.ts.map +1 -0
  89. package/dist/init.js +473 -0
  90. package/dist/init.js.map +1 -0
  91. package/dist/ink/bidi.d.ts +16 -0
  92. package/dist/ink/bidi.d.ts.map +1 -0
  93. package/dist/ink/bidi.js +124 -0
  94. package/dist/ink/bidi.js.map +1 -0
  95. package/dist/ink/clearTerminal.d.ts +14 -0
  96. package/dist/ink/clearTerminal.d.ts.map +1 -0
  97. package/dist/ink/clearTerminal.js +63 -0
  98. package/dist/ink/clearTerminal.js.map +1 -0
  99. package/dist/ink/colorize.d.ts +17 -0
  100. package/dist/ink/colorize.d.ts.map +1 -0
  101. package/dist/ink/colorize.js +208 -0
  102. package/dist/ink/colorize.js.map +1 -0
  103. package/dist/ink/components/App.d.ts +73 -0
  104. package/dist/ink/components/App.d.ts.map +1 -0
  105. package/dist/ink/components/App.js +646 -0
  106. package/dist/ink/components/App.js.map +1 -0
  107. package/dist/ink/components/AppContext.d.ts +12 -0
  108. package/dist/ink/components/AppContext.d.ts.map +1 -0
  109. package/dist/ink/components/AppContext.js +14 -0
  110. package/dist/ink/components/AppContext.js.map +1 -0
  111. package/dist/ink/components/Box.d.ts +44 -0
  112. package/dist/ink/components/Box.d.ts.map +1 -0
  113. package/dist/ink/components/Box.js +191 -0
  114. package/dist/ink/components/Box.js.map +1 -0
  115. package/dist/ink/components/ClockContext.d.ts +9 -0
  116. package/dist/ink/components/ClockContext.d.ts.map +1 -0
  117. package/dist/ink/components/ClockContext.js +146 -0
  118. package/dist/ink/components/ClockContext.js.map +1 -0
  119. package/dist/ink/components/CursorDeclarationContext.d.ts +23 -0
  120. package/dist/ink/components/CursorDeclarationContext.d.ts.map +1 -0
  121. package/dist/ink/components/CursorDeclarationContext.js +6 -0
  122. package/dist/ink/components/CursorDeclarationContext.js.map +1 -0
  123. package/dist/ink/components/ErrorOverview.d.ts +6 -0
  124. package/dist/ink/components/ErrorOverview.d.ts.map +1 -0
  125. package/dist/ink/components/ErrorOverview.js +27 -0
  126. package/dist/ink/components/ErrorOverview.js.map +1 -0
  127. package/dist/ink/components/Newline.d.ts +13 -0
  128. package/dist/ink/components/Newline.d.ts.map +1 -0
  129. package/dist/ink/components/Newline.js +36 -0
  130. package/dist/ink/components/Newline.js.map +1 -0
  131. package/dist/ink/components/NoSelect.d.ts +20 -0
  132. package/dist/ink/components/NoSelect.d.ts.map +1 -0
  133. package/dist/ink/components/NoSelect.js +63 -0
  134. package/dist/ink/components/NoSelect.js.map +1 -0
  135. package/dist/ink/components/RawAnsi.d.ts +17 -0
  136. package/dist/ink/components/RawAnsi.d.ts.map +1 -0
  137. package/dist/ink/components/RawAnsi.js +52 -0
  138. package/dist/ink/components/RawAnsi.js.map +1 -0
  139. package/dist/ink/components/Spacer.d.ts +6 -0
  140. package/dist/ink/components/Spacer.d.ts.map +1 -0
  141. package/dist/ink/components/Spacer.js +26 -0
  142. package/dist/ink/components/Spacer.js.map +1 -0
  143. package/dist/ink/components/StdinContext.d.ts +28 -0
  144. package/dist/ink/components/StdinContext.d.ts.map +1 -0
  145. package/dist/ink/components/StdinContext.js +19 -0
  146. package/dist/ink/components/StdinContext.js.map +1 -0
  147. package/dist/ink/components/TerminalFocusContext.d.ts +10 -0
  148. package/dist/ink/components/TerminalFocusContext.d.ts.map +1 -0
  149. package/dist/ink/components/TerminalFocusContext.js +81 -0
  150. package/dist/ink/components/TerminalFocusContext.js.map +1 -0
  151. package/dist/ink/components/TerminalSizeContext.d.ts +6 -0
  152. package/dist/ink/components/TerminalSizeContext.d.ts.map +1 -0
  153. package/dist/ink/components/TerminalSizeContext.js +6 -0
  154. package/dist/ink/components/TerminalSizeContext.js.map +1 -0
  155. package/dist/ink/components/Text.d.ts +56 -0
  156. package/dist/ink/components/Text.d.ts.map +1 -0
  157. package/dist/ink/components/Text.js +201 -0
  158. package/dist/ink/components/Text.js.map +1 -0
  159. package/dist/ink/constants.d.ts +2 -0
  160. package/dist/ink/constants.d.ts.map +1 -0
  161. package/dist/ink/constants.js +6 -0
  162. package/dist/ink/constants.js.map +1 -0
  163. package/dist/ink/devtools.d.ts +3 -0
  164. package/dist/ink/devtools.d.ts.map +1 -0
  165. package/dist/ink/devtools.js +5 -0
  166. package/dist/ink/devtools.js.map +1 -0
  167. package/dist/ink/dom.d.ts +77 -0
  168. package/dist/ink/dom.d.ts.map +1 -0
  169. package/dist/ink/dom.js +322 -0
  170. package/dist/ink/dom.js.map +1 -0
  171. package/dist/ink/events/click-event.d.ts +32 -0
  172. package/dist/ink/events/click-event.d.ts.map +1 -0
  173. package/dist/ink/events/click-event.js +30 -0
  174. package/dist/ink/events/click-event.js.map +1 -0
  175. package/dist/ink/events/dispatcher.d.ts +41 -0
  176. package/dist/ink/events/dispatcher.d.ts.map +1 -0
  177. package/dist/ink/events/dispatcher.js +181 -0
  178. package/dist/ink/events/dispatcher.js.map +1 -0
  179. package/dist/ink/events/emitter.d.ts +6 -0
  180. package/dist/ink/events/emitter.d.ts.map +1 -0
  181. package/dist/ink/events/emitter.js +36 -0
  182. package/dist/ink/events/emitter.js.map +1 -0
  183. package/dist/ink/events/event-handlers.d.ts +47 -0
  184. package/dist/ink/events/event-handlers.d.ts.map +1 -0
  185. package/dist/ink/events/event-handlers.js +34 -0
  186. package/dist/ink/events/event-handlers.js.map +1 -0
  187. package/dist/ink/events/event.d.ts +6 -0
  188. package/dist/ink/events/event.d.ts.map +1 -0
  189. package/dist/ink/events/event.js +16 -0
  190. package/dist/ink/events/event.js.map +1 -0
  191. package/dist/ink/events/focus-event.d.ts +14 -0
  192. package/dist/ink/events/focus-event.d.ts.map +1 -0
  193. package/dist/ink/events/focus-event.js +20 -0
  194. package/dist/ink/events/focus-event.js.map +1 -0
  195. package/dist/ink/events/input-event.d.ts +31 -0
  196. package/dist/ink/events/input-event.d.ts.map +1 -0
  197. package/dist/ink/events/input-event.js +163 -0
  198. package/dist/ink/events/input-event.js.map +1 -0
  199. package/dist/ink/events/keyboard-event.d.ts +20 -0
  200. package/dist/ink/events/keyboard-event.d.ts.map +1 -0
  201. package/dist/ink/events/keyboard-event.js +44 -0
  202. package/dist/ink/events/keyboard-event.js.map +1 -0
  203. package/dist/ink/events/terminal-event.d.ts +55 -0
  204. package/dist/ink/events/terminal-event.d.ts.map +1 -0
  205. package/dist/ink/events/terminal-event.js +79 -0
  206. package/dist/ink/events/terminal-event.js.map +1 -0
  207. package/dist/ink/events/terminal-focus-event.d.ts +14 -0
  208. package/dist/ink/events/terminal-focus-event.d.ts.map +1 -0
  209. package/dist/ink/events/terminal-focus-event.js +19 -0
  210. package/dist/ink/events/terminal-focus-event.js.map +1 -0
  211. package/dist/ink/focus.d.ts +44 -0
  212. package/dist/ink/focus.d.ts.map +1 -0
  213. package/dist/ink/focus.js +164 -0
  214. package/dist/ink/focus.js.map +1 -0
  215. package/dist/ink/frame.d.ts +95 -0
  216. package/dist/ink/frame.d.ts.map +1 -0
  217. package/dist/ink/frame.js +35 -0
  218. package/dist/ink/frame.js.map +1 -0
  219. package/dist/ink/get-max-width.d.ts +18 -0
  220. package/dist/ink/get-max-width.d.ts.map +1 -0
  221. package/dist/ink/get-max-width.js +26 -0
  222. package/dist/ink/get-max-width.js.map +1 -0
  223. package/dist/ink/hit-test.d.ts +34 -0
  224. package/dist/ink/hit-test.d.ts.map +1 -0
  225. package/dist/ink/hit-test.js +119 -0
  226. package/dist/ink/hit-test.js.map +1 -0
  227. package/dist/ink/hooks/use-animation-frame.d.ts +27 -0
  228. package/dist/ink/hooks/use-animation-frame.d.ts.map +1 -0
  229. package/dist/ink/hooks/use-animation-frame.js +52 -0
  230. package/dist/ink/hooks/use-animation-frame.js.map +1 -0
  231. package/dist/ink/hooks/use-app.d.ts +6 -0
  232. package/dist/ink/hooks/use-app.d.ts.map +1 -0
  233. package/dist/ink/hooks/use-app.js +13 -0
  234. package/dist/ink/hooks/use-app.js.map +1 -0
  235. package/dist/ink/hooks/use-declared-cursor.d.ts +27 -0
  236. package/dist/ink/hooks/use-declared-cursor.d.ts.map +1 -0
  237. package/dist/ink/hooks/use-declared-cursor.js +67 -0
  238. package/dist/ink/hooks/use-declared-cursor.js.map +1 -0
  239. package/dist/ink/hooks/use-input.d.ts +38 -0
  240. package/dist/ink/hooks/use-input.d.ts.map +1 -0
  241. package/dist/ink/hooks/use-input.js +86 -0
  242. package/dist/ink/hooks/use-input.js.map +1 -0
  243. package/dist/ink/hooks/use-interval.d.ts +19 -0
  244. package/dist/ink/hooks/use-interval.d.ts.map +1 -0
  245. package/dist/ink/hooks/use-interval.js +59 -0
  246. package/dist/ink/hooks/use-interval.js.map +1 -0
  247. package/dist/ink/hooks/use-search-highlight.d.ts +31 -0
  248. package/dist/ink/hooks/use-search-highlight.d.ts.map +1 -0
  249. package/dist/ink/hooks/use-search-highlight.js +39 -0
  250. package/dist/ink/hooks/use-search-highlight.js.map +1 -0
  251. package/dist/ink/hooks/use-selection.d.ts +40 -0
  252. package/dist/ink/hooks/use-selection.d.ts.map +1 -0
  253. package/dist/ink/hooks/use-selection.js +68 -0
  254. package/dist/ink/hooks/use-selection.js.map +1 -0
  255. package/dist/ink/hooks/use-stdin.d.ts +6 -0
  256. package/dist/ink/hooks/use-stdin.d.ts.map +1 -0
  257. package/dist/ink/hooks/use-stdin.js +13 -0
  258. package/dist/ink/hooks/use-stdin.js.map +1 -0
  259. package/dist/ink/hooks/use-tab-status.d.ts +14 -0
  260. package/dist/ink/hooks/use-tab-status.d.ts.map +1 -0
  261. package/dist/ink/hooks/use-tab-status.js +61 -0
  262. package/dist/ink/hooks/use-tab-status.js.map +1 -0
  263. package/dist/ink/hooks/use-terminal-focus.d.ts +11 -0
  264. package/dist/ink/hooks/use-terminal-focus.d.ts.map +1 -0
  265. package/dist/ink/hooks/use-terminal-focus.js +22 -0
  266. package/dist/ink/hooks/use-terminal-focus.js.map +1 -0
  267. package/dist/ink/hooks/use-terminal-title.d.ts +13 -0
  268. package/dist/ink/hooks/use-terminal-title.d.ts.map +1 -0
  269. package/dist/ink/hooks/use-terminal-title.js +36 -0
  270. package/dist/ink/hooks/use-terminal-title.js.map +1 -0
  271. package/dist/ink/hooks/use-terminal-viewport.d.ts +30 -0
  272. package/dist/ink/hooks/use-terminal-viewport.d.ts.map +1 -0
  273. package/dist/ink/hooks/use-terminal-viewport.js +81 -0
  274. package/dist/ink/hooks/use-terminal-viewport.js.map +1 -0
  275. package/dist/ink/index.d.ts +54 -0
  276. package/dist/ink/index.d.ts.map +1 -0
  277. package/dist/ink/index.js +111 -0
  278. package/dist/ink/index.js.map +1 -0
  279. package/dist/ink/ink.d.ts +371 -0
  280. package/dist/ink/ink.d.ts.map +1 -0
  281. package/dist/ink/ink.js +1686 -0
  282. package/dist/ink/ink.js.map +1 -0
  283. package/dist/ink/instances.d.ts +4 -0
  284. package/dist/ink/instances.d.ts.map +1 -0
  285. package/dist/ink/instances.js +10 -0
  286. package/dist/ink/instances.js.map +1 -0
  287. package/dist/ink/line-width-cache.d.ts +2 -0
  288. package/dist/ink/line-width-cache.d.ts.map +1 -0
  289. package/dist/ink/line-width-cache.js +23 -0
  290. package/dist/ink/line-width-cache.js.map +1 -0
  291. package/dist/ink/log-update.d.ts +18 -0
  292. package/dist/ink/log-update.d.ts.map +1 -0
  293. package/dist/ink/log-update.js +637 -0
  294. package/dist/ink/log-update.js.map +1 -0
  295. package/dist/ink/measure-element.d.ts +17 -0
  296. package/dist/ink/measure-element.d.ts.map +1 -0
  297. package/dist/ink/measure-element.js +11 -0
  298. package/dist/ink/measure-element.js.map +1 -0
  299. package/dist/ink/measure-text.d.ts +7 -0
  300. package/dist/ink/measure-text.d.ts.map +1 -0
  301. package/dist/ink/measure-text.js +38 -0
  302. package/dist/ink/measure-text.js.map +1 -0
  303. package/dist/ink/node-cache.d.ts +21 -0
  304. package/dist/ink/node-cache.d.ts.map +1 -0
  305. package/dist/ink/node-cache.js +36 -0
  306. package/dist/ink/node-cache.js.map +1 -0
  307. package/dist/ink/optimizer.d.ts +16 -0
  308. package/dist/ink/optimizer.d.ts.map +1 -0
  309. package/dist/ink/optimizer.js +85 -0
  310. package/dist/ink/optimizer.js.map +1 -0
  311. package/dist/ink/output.d.ts +120 -0
  312. package/dist/ink/output.d.ts.map +1 -0
  313. package/dist/ink/output.js +559 -0
  314. package/dist/ink/output.js.map +1 -0
  315. package/dist/ink/parse-keypress.d.ts +112 -0
  316. package/dist/ink/parse-keypress.d.ts.map +1 -0
  317. package/dist/ink/parse-keypress.js +719 -0
  318. package/dist/ink/parse-keypress.js.map +1 -0
  319. package/dist/ink/parse-keypress.test.d.ts +2 -0
  320. package/dist/ink/parse-keypress.test.d.ts.map +1 -0
  321. package/dist/ink/parse-keypress.test.js +37 -0
  322. package/dist/ink/parse-keypress.test.js.map +1 -0
  323. package/dist/ink/reconciler.d.ts +12 -0
  324. package/dist/ink/reconciler.d.ts.map +1 -0
  325. package/dist/ink/reconciler.js +456 -0
  326. package/dist/ink/reconciler.js.map +1 -0
  327. package/dist/ink/render-border.d.ts +25 -0
  328. package/dist/ink/render-border.d.ts.map +1 -0
  329. package/dist/ink/render-border.js +141 -0
  330. package/dist/ink/render-border.js.map +1 -0
  331. package/dist/ink/render-node-to-output.d.ts +46 -0
  332. package/dist/ink/render-node-to-output.d.ts.map +1 -0
  333. package/dist/ink/render-node-to-output.js +1257 -0
  334. package/dist/ink/render-node-to-output.js.map +1 -0
  335. package/dist/ink/render-to-screen.d.ts +47 -0
  336. package/dist/ink/render-to-screen.d.ts.map +1 -0
  337. package/dist/ink/render-to-screen.js +213 -0
  338. package/dist/ink/render-to-screen.js.map +1 -0
  339. package/dist/ink/renderer.d.ts +15 -0
  340. package/dist/ink/renderer.d.ts.map +1 -0
  341. package/dist/ink/renderer.js +169 -0
  342. package/dist/ink/renderer.js.map +1 -0
  343. package/dist/ink/root.d.ts +75 -0
  344. package/dist/ink/root.d.ts.map +1 -0
  345. package/dist/ink/root.js +89 -0
  346. package/dist/ink/root.js.map +1 -0
  347. package/dist/ink/screen.d.ts +270 -0
  348. package/dist/ink/screen.d.ts.map +1 -0
  349. package/dist/ink/screen.js +1194 -0
  350. package/dist/ink/screen.js.map +1 -0
  351. package/dist/ink/searchHighlight.d.ts +21 -0
  352. package/dist/ink/searchHighlight.d.ts.map +1 -0
  353. package/dist/ink/searchHighlight.js +82 -0
  354. package/dist/ink/searchHighlight.js.map +1 -0
  355. package/dist/ink/selection.d.ts +230 -0
  356. package/dist/ink/selection.d.ts.map +1 -0
  357. package/dist/ink/selection.js +814 -0
  358. package/dist/ink/selection.js.map +1 -0
  359. package/dist/ink/squash-text-nodes.d.ts +23 -0
  360. package/dist/ink/squash-text-nodes.d.ts.map +1 -0
  361. package/dist/ink/squash-text-nodes.js +60 -0
  362. package/dist/ink/squash-text-nodes.js.map +1 -0
  363. package/dist/ink/stringWidth.d.ts +2 -0
  364. package/dist/ink/stringWidth.d.ts.map +1 -0
  365. package/dist/ink/stringWidth.js +207 -0
  366. package/dist/ink/stringWidth.js.map +1 -0
  367. package/dist/ink/styles.d.ts +307 -0
  368. package/dist/ink/styles.d.ts.map +1 -0
  369. package/dist/ink/styles.js +302 -0
  370. package/dist/ink/styles.js.map +1 -0
  371. package/dist/ink/supports-hyperlinks.d.ts +14 -0
  372. package/dist/ink/supports-hyperlinks.d.ts.map +1 -0
  373. package/dist/ink/supports-hyperlinks.js +48 -0
  374. package/dist/ink/supports-hyperlinks.js.map +1 -0
  375. package/dist/ink/tabstops.d.ts +2 -0
  376. package/dist/ink/tabstops.d.ts.map +1 -0
  377. package/dist/ink/tabstops.js +43 -0
  378. package/dist/ink/tabstops.js.map +1 -0
  379. package/dist/ink/terminal-focus-state.d.ts +7 -0
  380. package/dist/ink/terminal-focus-state.d.ts.map +1 -0
  381. package/dist/ink/terminal-focus-state.js +43 -0
  382. package/dist/ink/terminal-focus-state.js.map +1 -0
  383. package/dist/ink/terminal-querier.d.ts +130 -0
  384. package/dist/ink/terminal-querier.d.ts.map +1 -0
  385. package/dist/ink/terminal-querier.js +184 -0
  386. package/dist/ink/terminal-querier.js.map +1 -0
  387. package/dist/ink/terminal.d.ts +56 -0
  388. package/dist/ink/terminal.d.ts.map +1 -0
  389. package/dist/ink/terminal.js +249 -0
  390. package/dist/ink/terminal.js.map +1 -0
  391. package/dist/ink/termio/csi.d.ts +166 -0
  392. package/dist/ink/termio/csi.d.ts.map +1 -0
  393. package/dist/ink/termio/csi.js +285 -0
  394. package/dist/ink/termio/csi.js.map +1 -0
  395. package/dist/ink/termio/dec.d.ts +38 -0
  396. package/dist/ink/termio/dec.d.ts.map +1 -0
  397. package/dist/ink/termio/dec.js +59 -0
  398. package/dist/ink/termio/dec.js.map +1 -0
  399. package/dist/ink/termio.d.ts +25 -0
  400. package/dist/ink/termio.d.ts.map +1 -0
  401. package/dist/ink/termio.js +32 -0
  402. package/dist/ink/termio.js.map +1 -0
  403. package/dist/ink/useTerminalNotification.d.ts +27 -0
  404. package/dist/ink/useTerminalNotification.d.ts.map +1 -0
  405. package/dist/ink/useTerminalNotification.js +62 -0
  406. package/dist/ink/useTerminalNotification.js.map +1 -0
  407. package/dist/ink/warn.d.ts +2 -0
  408. package/dist/ink/warn.d.ts.map +1 -0
  409. package/dist/ink/warn.js +14 -0
  410. package/dist/ink/warn.js.map +1 -0
  411. package/dist/ink/widest-line.d.ts +2 -0
  412. package/dist/ink/widest-line.d.ts.map +1 -0
  413. package/dist/ink/widest-line.js +18 -0
  414. package/dist/ink/widest-line.js.map +1 -0
  415. package/dist/ink/wrap-text.d.ts +3 -0
  416. package/dist/ink/wrap-text.d.ts.map +1 -0
  417. package/dist/ink/wrap-text.js +61 -0
  418. package/dist/ink/wrap-text.js.map +1 -0
  419. package/dist/ink/wrapAnsi.d.ts +8 -0
  420. package/dist/ink/wrapAnsi.d.ts.map +1 -0
  421. package/dist/ink/wrapAnsi.js +13 -0
  422. package/dist/ink/wrapAnsi.js.map +1 -0
  423. package/dist/memory/embeddings.d.ts +33 -0
  424. package/dist/memory/embeddings.d.ts.map +1 -0
  425. package/dist/memory/embeddings.js +123 -0
  426. package/dist/memory/embeddings.js.map +1 -0
  427. package/dist/memory/index.d.ts +14 -0
  428. package/dist/memory/index.d.ts.map +1 -0
  429. package/dist/memory/index.js +31 -0
  430. package/dist/memory/index.js.map +1 -0
  431. package/dist/memory/prompts.d.ts +12 -0
  432. package/dist/memory/prompts.d.ts.map +1 -0
  433. package/dist/memory/prompts.js +117 -0
  434. package/dist/memory/prompts.js.map +1 -0
  435. package/dist/memory/semantic-search.d.ts +45 -0
  436. package/dist/memory/semantic-search.d.ts.map +1 -0
  437. package/dist/memory/semantic-search.js +112 -0
  438. package/dist/memory/semantic-search.js.map +1 -0
  439. package/dist/memory/storage.d.ts +79 -0
  440. package/dist/memory/storage.d.ts.map +1 -0
  441. package/dist/memory/storage.js +285 -0
  442. package/dist/memory/storage.js.map +1 -0
  443. package/dist/memory/store.d.ts +103 -0
  444. package/dist/memory/store.d.ts.map +1 -0
  445. package/dist/memory/store.js +226 -0
  446. package/dist/memory/store.js.map +1 -0
  447. package/dist/memory/types.d.ts +40 -0
  448. package/dist/memory/types.d.ts.map +1 -0
  449. package/dist/memory/types.js +71 -0
  450. package/dist/memory/types.js.map +1 -0
  451. package/dist/memory/validation.d.ts +28 -0
  452. package/dist/memory/validation.d.ts.map +1 -0
  453. package/dist/memory/validation.js +147 -0
  454. package/dist/memory/validation.js.map +1 -0
  455. package/dist/memory/vector-store.d.ts +49 -0
  456. package/dist/memory/vector-store.d.ts.map +1 -0
  457. package/dist/memory/vector-store.js +259 -0
  458. package/dist/memory/vector-store.js.map +1 -0
  459. package/dist/screens/REPL.d.ts +21 -0
  460. package/dist/screens/REPL.d.ts.map +1 -0
  461. package/dist/screens/REPL.js +139 -0
  462. package/dist/screens/REPL.js.map +1 -0
  463. package/dist/services/agent-runner.d.ts +68 -0
  464. package/dist/services/agent-runner.d.ts.map +1 -0
  465. package/dist/services/agent-runner.js +186 -0
  466. package/dist/services/agent-runner.js.map +1 -0
  467. package/dist/services/atomic-write.d.ts +12 -0
  468. package/dist/services/atomic-write.d.ts.map +1 -0
  469. package/dist/services/atomic-write.js +27 -0
  470. package/dist/services/atomic-write.js.map +1 -0
  471. package/dist/services/config-dir.d.ts +55 -0
  472. package/dist/services/config-dir.d.ts.map +1 -0
  473. package/dist/services/config-dir.js +136 -0
  474. package/dist/services/config-dir.js.map +1 -0
  475. package/dist/services/config.d.ts +54 -0
  476. package/dist/services/config.d.ts.map +1 -0
  477. package/dist/services/config.js +98 -0
  478. package/dist/services/config.js.map +1 -0
  479. package/dist/services/file-glob.d.ts +26 -0
  480. package/dist/services/file-glob.d.ts.map +1 -0
  481. package/dist/services/file-glob.js +134 -0
  482. package/dist/services/file-glob.js.map +1 -0
  483. package/dist/services/global-config.d.ts +109 -0
  484. package/dist/services/global-config.d.ts.map +1 -0
  485. package/dist/services/global-config.js +211 -0
  486. package/dist/services/global-config.js.map +1 -0
  487. package/dist/services/llm.d.ts +139 -0
  488. package/dist/services/llm.d.ts.map +1 -0
  489. package/dist/services/llm.js +376 -0
  490. package/dist/services/llm.js.map +1 -0
  491. package/dist/services/memory.d.ts +39 -0
  492. package/dist/services/memory.d.ts.map +1 -0
  493. package/dist/services/memory.js +88 -0
  494. package/dist/services/memory.js.map +1 -0
  495. package/dist/services/session-storage.d.ts +136 -0
  496. package/dist/services/session-storage.d.ts.map +1 -0
  497. package/dist/services/session-storage.js +304 -0
  498. package/dist/services/session-storage.js.map +1 -0
  499. package/dist/services/task-manager.d.ts +154 -0
  500. package/dist/services/task-manager.d.ts.map +1 -0
  501. package/dist/services/task-manager.js +288 -0
  502. package/dist/services/task-manager.js.map +1 -0
  503. package/dist/services/yaml-config.d.ts +57 -0
  504. package/dist/services/yaml-config.d.ts.map +1 -0
  505. package/dist/services/yaml-config.js +176 -0
  506. package/dist/services/yaml-config.js.map +1 -0
  507. package/dist/skills/discovery.d.ts +22 -0
  508. package/dist/skills/discovery.d.ts.map +1 -0
  509. package/dist/skills/discovery.js +75 -0
  510. package/dist/skills/discovery.js.map +1 -0
  511. package/dist/skills/index.d.ts +10 -0
  512. package/dist/skills/index.d.ts.map +1 -0
  513. package/dist/skills/index.js +26 -0
  514. package/dist/skills/index.js.map +1 -0
  515. package/dist/skills/loader.d.ts +48 -0
  516. package/dist/skills/loader.d.ts.map +1 -0
  517. package/dist/skills/loader.js +231 -0
  518. package/dist/skills/loader.js.map +1 -0
  519. package/dist/skills/registry.d.ts +37 -0
  520. package/dist/skills/registry.d.ts.map +1 -0
  521. package/dist/skills/registry.js +134 -0
  522. package/dist/skills/registry.js.map +1 -0
  523. package/dist/skills/types.d.ts +89 -0
  524. package/dist/skills/types.d.ts.map +1 -0
  525. package/dist/skills/types.js +24 -0
  526. package/dist/skills/types.js.map +1 -0
  527. package/dist/tools/bash_security.d.ts +64 -0
  528. package/dist/tools/bash_security.d.ts.map +1 -0
  529. package/dist/tools/bash_security.js +291 -0
  530. package/dist/tools/bash_security.js.map +1 -0
  531. package/dist/tools/index.d.ts +23 -0
  532. package/dist/tools/index.d.ts.map +1 -0
  533. package/dist/tools/index.js +965 -0
  534. package/dist/tools/index.js.map +1 -0
  535. package/dist/tools/mcp.d.ts +72 -0
  536. package/dist/tools/mcp.d.ts.map +1 -0
  537. package/dist/tools/mcp.js +422 -0
  538. package/dist/tools/mcp.js.map +1 -0
  539. package/dist/tools/plan.d.ts +18 -0
  540. package/dist/tools/plan.d.ts.map +1 -0
  541. package/dist/tools/plan.js +75 -0
  542. package/dist/tools/plan.js.map +1 -0
  543. package/dist/tools/todo.d.ts +18 -0
  544. package/dist/tools/todo.d.ts.map +1 -0
  545. package/dist/tools/todo.js +153 -0
  546. package/dist/tools/todo.js.map +1 -0
  547. package/dist/tools/web.d.ts +13 -0
  548. package/dist/tools/web.d.ts.map +1 -0
  549. package/dist/tools/web.js +377 -0
  550. package/dist/tools/web.js.map +1 -0
  551. package/dist/ui/box.d.ts +56 -0
  552. package/dist/ui/box.d.ts.map +1 -0
  553. package/dist/ui/box.js +241 -0
  554. package/dist/ui/box.js.map +1 -0
  555. package/dist/ui/command-panel.d.ts +55 -0
  556. package/dist/ui/command-panel.d.ts.map +1 -0
  557. package/dist/ui/command-panel.js +212 -0
  558. package/dist/ui/command-panel.js.map +1 -0
  559. package/dist/ui/file-completion.d.ts +62 -0
  560. package/dist/ui/file-completion.d.ts.map +1 -0
  561. package/dist/ui/file-completion.js +209 -0
  562. package/dist/ui/file-completion.js.map +1 -0
  563. package/dist/ui/markdown.d.ts +12 -0
  564. package/dist/ui/markdown.d.ts.map +1 -0
  565. package/dist/ui/markdown.js +215 -0
  566. package/dist/ui/markdown.js.map +1 -0
  567. package/dist/ui/multiline-input.d.ts +47 -0
  568. package/dist/ui/multiline-input.d.ts.map +1 -0
  569. package/dist/ui/multiline-input.js +94 -0
  570. package/dist/ui/multiline-input.js.map +1 -0
  571. package/dist/ui/status-bar.d.ts +33 -0
  572. package/dist/ui/status-bar.d.ts.map +1 -0
  573. package/dist/ui/status-bar.js +96 -0
  574. package/dist/ui/status-bar.js.map +1 -0
  575. package/dist/ui/stream-markdown.d.ts +35 -0
  576. package/dist/ui/stream-markdown.d.ts.map +1 -0
  577. package/dist/ui/stream-markdown.js +138 -0
  578. package/dist/ui/stream-markdown.js.map +1 -0
  579. package/dist/ui/suggestions.d.ts +35 -0
  580. package/dist/ui/suggestions.d.ts.map +1 -0
  581. package/dist/ui/suggestions.js +118 -0
  582. package/dist/ui/suggestions.js.map +1 -0
  583. package/dist/ui/tool-preview.d.ts +34 -0
  584. package/dist/ui/tool-preview.d.ts.map +1 -0
  585. package/dist/ui/tool-preview.js +128 -0
  586. package/dist/ui/tool-preview.js.map +1 -0
  587. package/package.json +93 -0
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = wrapText;
7
+ const sliceAnsi_js_1 = __importDefault(require("../utils/sliceAnsi.js"));
8
+ const stringWidth_js_1 = require("./stringWidth.js");
9
+ const wrapAnsi_js_1 = require("./wrapAnsi.js");
10
+ const ELLIPSIS = '…';
11
+ // sliceAnsi may include a boundary-spanning wide char (e.g. CJK at position
12
+ // end-1 with width 2 overshoots by 1). Retry with a tighter bound once.
13
+ function sliceFit(text, start, end) {
14
+ const s = (0, sliceAnsi_js_1.default)(text, start, end);
15
+ return (0, stringWidth_js_1.stringWidth)(s) > end - start ? (0, sliceAnsi_js_1.default)(text, start, end - 1) : s;
16
+ }
17
+ function truncate(text, columns, position) {
18
+ if (columns < 1)
19
+ return '';
20
+ if (columns === 1)
21
+ return ELLIPSIS;
22
+ const length = (0, stringWidth_js_1.stringWidth)(text);
23
+ if (length <= columns)
24
+ return text;
25
+ if (position === 'start') {
26
+ return ELLIPSIS + sliceFit(text, length - columns + 1, length);
27
+ }
28
+ if (position === 'middle') {
29
+ const half = Math.floor(columns / 2);
30
+ return (sliceFit(text, 0, half) +
31
+ ELLIPSIS +
32
+ sliceFit(text, length - (columns - half) + 1, length));
33
+ }
34
+ return sliceFit(text, 0, columns - 1) + ELLIPSIS;
35
+ }
36
+ function wrapText(text, maxWidth, wrapType) {
37
+ if (wrapType === 'wrap') {
38
+ return (0, wrapAnsi_js_1.wrapAnsi)(text, maxWidth, {
39
+ trim: false,
40
+ hard: true,
41
+ });
42
+ }
43
+ if (wrapType === 'wrap-trim') {
44
+ return (0, wrapAnsi_js_1.wrapAnsi)(text, maxWidth, {
45
+ trim: true,
46
+ hard: true,
47
+ });
48
+ }
49
+ if (wrapType.startsWith('truncate')) {
50
+ let position = 'end';
51
+ if (wrapType === 'truncate-middle') {
52
+ position = 'middle';
53
+ }
54
+ if (wrapType === 'truncate-start') {
55
+ position = 'start';
56
+ }
57
+ return truncate(text, maxWidth, position);
58
+ }
59
+ return text;
60
+ }
61
+ //# sourceMappingURL=wrap-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap-text.js","sourceRoot":"","sources":["../../src/ink/wrap-text.ts"],"names":[],"mappings":";;;;;AAuCA,2BAkCC;AAzED,yEAA6C;AAC7C,qDAA8C;AAE9C,+CAAwC;AAExC,MAAM,QAAQ,GAAG,GAAG,CAAA;AAEpB,4EAA4E;AAC5E,wEAAwE;AACxE,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IACxD,MAAM,CAAC,GAAG,IAAA,sBAAS,EAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;IACrC,OAAO,IAAA,4BAAW,EAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAA,sBAAS,EAAC,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3E,CAAC;AAED,SAAS,QAAQ,CACf,IAAY,EACZ,OAAe,EACf,QAAoC;IAEpC,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAC1B,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAA;IAElC,MAAM,MAAM,GAAG,IAAA,4BAAW,EAAC,IAAI,CAAC,CAAA;IAChC,IAAI,MAAM,IAAI,OAAO;QAAE,OAAO,IAAI,CAAA;IAElC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;IAChE,CAAC;IACD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;QACpC,OAAO,CACL,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;YACvB,QAAQ;YACR,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CACtD,CAAA;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAA;AAClD,CAAC;AAED,SAAwB,QAAQ,CAC9B,IAAY,EACZ,QAAgB,EAChB,QAA4B;IAE5B,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,IAAA,sBAAQ,EAAC,IAAI,EAAE,QAAQ,EAAE;YAC9B,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,IAAI;SACX,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,IAAA,sBAAQ,EAAC,IAAI,EAAE,QAAQ,EAAE;YAC9B,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;SACX,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,QAAS,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,IAAI,QAAQ,GAA+B,KAAK,CAAA;QAEhD,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YACnC,QAAQ,GAAG,QAAQ,CAAA;QACrB,CAAC;QAED,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAClC,QAAQ,GAAG,OAAO,CAAA;QACpB,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,8 @@
1
+ type WrapAnsiOptions = {
2
+ hard?: boolean;
3
+ wordWrap?: boolean;
4
+ trim?: boolean;
5
+ };
6
+ declare const wrapAnsi: (input: string, columns: number, options?: WrapAnsiOptions) => string;
7
+ export { wrapAnsi };
8
+ //# sourceMappingURL=wrapAnsi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapAnsi.d.ts","sourceRoot":"","sources":["../../src/ink/wrapAnsi.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,GAAG;IACrB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAOD,QAAA,MAAM,QAAQ,EAAE,CACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,KACtB,MAAmC,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.wrapAnsi = void 0;
7
+ const wrap_ansi_1 = __importDefault(require("wrap-ansi"));
8
+ const wrapAnsiBun = typeof Bun !== 'undefined' && typeof Bun.wrapAnsi === 'function'
9
+ ? Bun.wrapAnsi
10
+ : null;
11
+ const wrapAnsi = wrapAnsiBun ?? wrap_ansi_1.default;
12
+ exports.wrapAnsi = wrapAnsi;
13
+ //# sourceMappingURL=wrapAnsi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapAnsi.js","sourceRoot":"","sources":["../../src/ink/wrapAnsi.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAmC;AAQnC,MAAM,WAAW,GACf,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU;IAC9D,CAAC,CAAC,GAAG,CAAC,QAAQ;IACd,CAAC,CAAC,IAAI,CAAA;AAEV,MAAM,QAAQ,GAIA,WAAW,IAAI,mBAAW,CAAA;AAE/B,4BAAQ"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * openhorse - Embedding Service
3
+ *
4
+ * 支持 Ollama (nomic-embed-text) 和 OpenAI (text-embedding-3-small)
5
+ */
6
+ export interface EmbeddingConfig {
7
+ provider: 'ollama' | 'openai';
8
+ model?: string;
9
+ baseUrl?: string;
10
+ apiKey?: string;
11
+ }
12
+ export interface EmbeddingResult {
13
+ vector: number[];
14
+ dimension: number;
15
+ }
16
+ export declare class EmbeddingService {
17
+ private config;
18
+ private dimension;
19
+ constructor(config: EmbeddingConfig);
20
+ /** Get embedding dimension */
21
+ getDimension(): number;
22
+ /** Embed single text */
23
+ embed(text: string): Promise<number[]>;
24
+ /** Embed batch of texts */
25
+ embedBatch(texts: string[]): Promise<number[][]>;
26
+ /** Embed using Ollama */
27
+ private embedWithOllama;
28
+ /** Embed using OpenAI */
29
+ private embedWithOpenAI;
30
+ }
31
+ export declare function getEmbeddingService(config?: EmbeddingConfig): EmbeddingService;
32
+ export declare function resetEmbeddingService(): void;
33
+ //# sourceMappingURL=embeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/memory/embeddings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,eAAe;IAWnC,8BAA8B;IAC9B,YAAY,IAAI,MAAM;IAItB,wBAAwB;IAClB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ5C,2BAA2B;IACrB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IActD,yBAAyB;YACX,eAAe;IAoB7B,yBAAyB;YACX,eAAe;CA+B9B;AAQD,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,gBAAgB,CAgB9E;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - Embedding Service
4
+ *
5
+ * 支持 Ollama (nomic-embed-text) 和 OpenAI (text-embedding-3-small)
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.EmbeddingService = void 0;
12
+ exports.getEmbeddingService = getEmbeddingService;
13
+ exports.resetEmbeddingService = resetEmbeddingService;
14
+ const axios_1 = __importDefault(require("axios"));
15
+ // ============================================================================
16
+ // Embedding Service
17
+ // ============================================================================
18
+ class EmbeddingService {
19
+ constructor(config) {
20
+ this.config = config;
21
+ // Set dimension based on provider/model
22
+ if (config.provider === 'ollama') {
23
+ this.dimension = 768; // nomic-embed-text
24
+ }
25
+ else {
26
+ this.dimension = 1536; // text-embedding-3-small
27
+ }
28
+ }
29
+ /** Get embedding dimension */
30
+ getDimension() {
31
+ return this.dimension;
32
+ }
33
+ /** Embed single text */
34
+ async embed(text) {
35
+ if (this.config.provider === 'ollama') {
36
+ return this.embedWithOllama(text);
37
+ }
38
+ else {
39
+ return this.embedWithOpenAI(text);
40
+ }
41
+ }
42
+ /** Embed batch of texts */
43
+ async embedBatch(texts) {
44
+ // Process in parallel with rate limiting
45
+ const results = [];
46
+ const batchSize = 10;
47
+ for (let i = 0; i < texts.length; i += batchSize) {
48
+ const batch = texts.slice(i, i + batchSize);
49
+ const batchResults = await Promise.all(batch.map(t => this.embed(t)));
50
+ results.push(...batchResults);
51
+ }
52
+ return results;
53
+ }
54
+ /** Embed using Ollama */
55
+ async embedWithOllama(text) {
56
+ const baseUrl = this.config.baseUrl || process.env.OLLAMA_BASE_URL || 'http://localhost:11434';
57
+ const model = this.config.model || 'nomic-embed-text';
58
+ try {
59
+ const response = await axios_1.default.post(`${baseUrl}/api/embeddings`, {
60
+ model,
61
+ prompt: text,
62
+ }, {
63
+ timeout: 30000,
64
+ });
65
+ return response.data.embedding;
66
+ }
67
+ catch (err) {
68
+ // Fallback: return zero vector if Ollama unavailable
69
+ console.warn(`[Embedding] Ollama unavailable: ${err.message}`);
70
+ return new Array(this.dimension).fill(0);
71
+ }
72
+ }
73
+ /** Embed using OpenAI */
74
+ async embedWithOpenAI(text) {
75
+ const apiKey = this.config.apiKey || process.env.OPENAI_API_KEY || process.env.OPENHORSE_API_KEY;
76
+ const model = this.config.model || 'text-embedding-3-small';
77
+ if (!apiKey) {
78
+ console.warn('[Embedding] OpenAI API key not configured');
79
+ return new Array(this.dimension).fill(0);
80
+ }
81
+ try {
82
+ const response = await axios_1.default.post('https://api.openai.com/v1/embeddings', {
83
+ model,
84
+ input: text,
85
+ }, {
86
+ headers: {
87
+ 'Authorization': `Bearer ${apiKey}`,
88
+ 'Content-Type': 'application/json',
89
+ },
90
+ timeout: 30000,
91
+ });
92
+ return response.data.data[0].embedding;
93
+ }
94
+ catch (err) {
95
+ console.warn(`[Embedding] OpenAI unavailable: ${err.message}`);
96
+ return new Array(this.dimension).fill(0);
97
+ }
98
+ }
99
+ }
100
+ exports.EmbeddingService = EmbeddingService;
101
+ // ============================================================================
102
+ // Factory
103
+ // ============================================================================
104
+ let defaultService = null;
105
+ function getEmbeddingService(config) {
106
+ if (!defaultService) {
107
+ // Auto-detect provider from environment
108
+ const provider = process.env.OPENHORSE_EMBEDDING_PROVIDER ||
109
+ (process.env.OLLAMA_BASE_URL ? 'ollama' : 'openai');
110
+ defaultService = new EmbeddingService({
111
+ provider: provider,
112
+ model: process.env.OPENHORSE_EMBEDDING_MODEL,
113
+ baseUrl: process.env.OLLAMA_BASE_URL,
114
+ apiKey: process.env.OPENHORSE_API_KEY,
115
+ ...config,
116
+ });
117
+ }
118
+ return defaultService;
119
+ }
120
+ function resetEmbeddingService() {
121
+ defaultService = null;
122
+ }
123
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/memory/embeddings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * openhorse - Memory System
3
+ *
4
+ * Typed memory system for user preferences, feedback, project context,
5
+ * and external references. Includes semantic search with embeddings.
6
+ */
7
+ export * from './types';
8
+ export * from './storage';
9
+ export * from './prompts';
10
+ export * from './validation';
11
+ export * from './embeddings';
12
+ export * from './vector-store';
13
+ export * from './semantic-search';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAG7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - Memory System
4
+ *
5
+ * Typed memory system for user preferences, feedback, project context,
6
+ * and external references. Includes semantic search with embeddings.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ __exportStar(require("./types"), exports);
24
+ __exportStar(require("./storage"), exports);
25
+ __exportStar(require("./prompts"), exports);
26
+ __exportStar(require("./validation"), exports);
27
+ // New v0.1.5 exports
28
+ __exportStar(require("./embeddings"), exports);
29
+ __exportStar(require("./vector-store"), exports);
30
+ __exportStar(require("./semantic-search"), exports);
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,4CAA0B;AAC1B,4CAA0B;AAC1B,+CAA6B;AAE7B,qBAAqB;AACrB,+CAA6B;AAC7B,iDAA+B;AAC/B,oDAAkC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * openhorse - Memory Prompts
3
+ *
4
+ * Build system prompt sections for memory system.
5
+ */
6
+ /** Build full memory prompt for system message */
7
+ export declare function buildMemoryPrompt(): string;
8
+ /** Build short memory summary for compact prompt */
9
+ export declare function buildMemorySummary(): string;
10
+ /** Get memory injection for user context */
11
+ export declare function getMemoryUserContext(): Record<string, string>;
12
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/memory/prompts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,kDAAkD;AAClD,wBAAgB,iBAAiB,IAAI,MAAM,CA2D1C;AAED,oDAAoD;AACpD,wBAAgB,kBAAkB,IAAI,MAAM,CAa3C;AAED,4CAA4C;AAC5C,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgC7D"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - Memory Prompts
4
+ *
5
+ * Build system prompt sections for memory system.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.buildMemoryPrompt = buildMemoryPrompt;
9
+ exports.buildMemorySummary = buildMemorySummary;
10
+ exports.getMemoryUserContext = getMemoryUserContext;
11
+ const storage_1 = require("./storage");
12
+ const types_1 = require("./types");
13
+ // ============================================================================
14
+ // Memory Prompt Building
15
+ // ============================================================================
16
+ /** Build full memory prompt for system message */
17
+ function buildMemoryPrompt() {
18
+ const memories = (0, storage_1.loadAllMemories)();
19
+ const index = (0, storage_1.loadMemoryIndex)();
20
+ const lines = [
21
+ '# Memory System',
22
+ '',
23
+ `You have a persistent, file-based memory system at ~/.openhorse/memory/.`,
24
+ 'This directory already exists — write to it directly with the Write tool.',
25
+ '',
26
+ 'You should build up this memory system over time so that future conversations',
27
+ 'can have a complete picture of who the user is, how they\'d like to collaborate,',
28
+ 'what behaviors to avoid or repeat, and the context behind the work.',
29
+ '',
30
+ 'If the user explicitly asks you to remember something, save it immediately.',
31
+ 'If they ask you to forget something, find and remove the relevant entry.',
32
+ '',
33
+ types_1.MEMORY_TYPES_SECTION,
34
+ '',
35
+ '## How to save memories',
36
+ '',
37
+ 'Write each memory to its own file using this frontmatter format:',
38
+ '',
39
+ '```markdown',
40
+ types_1.MEMORY_FRONTMATTER_EXAMPLE,
41
+ '```',
42
+ '',
43
+ '- Keep the name, description, and type fields up-to-date with the content',
44
+ '- Organize memory semantically by topic, not chronologically',
45
+ '- Update or remove memories that turn out to be wrong or outdated',
46
+ '- Do not write duplicate memories. First check if there is an existing memory.',
47
+ '',
48
+ types_1.MEMORY_EXCLUSIONS_SECTION,
49
+ '',
50
+ '## When to access memories',
51
+ '',
52
+ '- When memories seem relevant, or the user references prior work',
53
+ '- You MUST access memory when the user explicitly asks you to remember',
54
+ '- Memory records can become stale. Verify against current state before acting',
55
+ '',
56
+ ];
57
+ // Add loaded memories if any
58
+ if (memories.length > 0) {
59
+ lines.push('## Loaded Memories');
60
+ lines.push('');
61
+ for (const mem of memories) {
62
+ lines.push(`### ${mem.name} (${mem.type})`);
63
+ lines.push('');
64
+ lines.push(mem.content);
65
+ lines.push('');
66
+ }
67
+ }
68
+ else if (index) {
69
+ lines.push('## Memory Index');
70
+ lines.push('');
71
+ lines.push(index);
72
+ }
73
+ return lines.join('\n');
74
+ }
75
+ /** Build short memory summary for compact prompt */
76
+ function buildMemorySummary() {
77
+ const memories = (0, storage_1.loadAllMemories)();
78
+ if (memories.length === 0) {
79
+ return 'No memories loaded. Use memory_save tool to save user preferences and feedback.';
80
+ }
81
+ const lines = ['Loaded memories:'];
82
+ for (const mem of memories) {
83
+ lines.push(`- ${mem.name} (${mem.type}): ${mem.description || mem.content.slice(0, 50)}`);
84
+ }
85
+ return lines.join('\n');
86
+ }
87
+ /** Get memory injection for user context */
88
+ function getMemoryUserContext() {
89
+ const memories = (0, storage_1.loadAllMemories)();
90
+ const context = {};
91
+ // Group by type
92
+ const byType = {
93
+ user: [],
94
+ feedback: [],
95
+ project: [],
96
+ reference: [],
97
+ };
98
+ for (const mem of memories) {
99
+ const summary = `${mem.name}: ${mem.description || mem.content.slice(0, 80)}`;
100
+ byType[mem.type]?.push(summary);
101
+ }
102
+ // Build context entries
103
+ if (byType.user.length > 0) {
104
+ context.user_memories = byType.user.join('\n');
105
+ }
106
+ if (byType.feedback.length > 0) {
107
+ context.feedback_memories = byType.feedback.join('\n');
108
+ }
109
+ if (byType.project.length > 0) {
110
+ context.project_memories = byType.project.join('\n');
111
+ }
112
+ if (byType.reference.length > 0) {
113
+ context.reference_memories = byType.reference.join('\n');
114
+ }
115
+ return context;
116
+ }
117
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/memory/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * openhorse - Semantic Search
3
+ *
4
+ * 高级语义搜索接口,整合向量存储和记忆系统
5
+ */
6
+ import { type SearchResult, type VectorStoreConfig } from './vector-store';
7
+ import { type MemoryEntry, type MemoryType } from './storage';
8
+ export interface SemanticSearchOptions {
9
+ query: string;
10
+ limit?: number;
11
+ projectPath?: string;
12
+ type?: MemoryType;
13
+ minScore?: number;
14
+ }
15
+ export interface SemanticSearchResult {
16
+ memories: SearchResult[];
17
+ query: string;
18
+ total: number;
19
+ searchType: 'semantic' | 'text';
20
+ }
21
+ export declare class SemanticSearchService {
22
+ private vectorStore;
23
+ constructor(config?: VectorStoreConfig);
24
+ /** Search memories semantically */
25
+ search(options: SemanticSearchOptions): Promise<SemanticSearchResult>;
26
+ /** Index all existing memories */
27
+ indexExistingMemories(projectPath?: string): Promise<number>;
28
+ /** Save and index new memory */
29
+ saveAndIndex(entry: MemoryEntry, projectPath?: string): Promise<void>;
30
+ /** Check if semantic search is available */
31
+ isSemanticSearchAvailable(): boolean;
32
+ /** Get search suggestions based on indexed content */
33
+ getSuggestions(projectPath?: string): string[];
34
+ }
35
+ /**
36
+ * Whether semantic search is explicitly enabled via OPENHORSE_EMBEDDING_PROVIDER.
37
+ * We require an explicit opt-in so the vector store + sqlite-vec are only
38
+ * initialised when the user wants embeddings.
39
+ */
40
+ export declare function isSemanticEnabled(): boolean;
41
+ export declare function getSemanticSearchService(config?: VectorStoreConfig): SemanticSearchService;
42
+ export declare function resetSemanticSearchService(): void;
43
+ /** Quick semantic search */
44
+ export declare function semanticSearch(query: string, projectPath?: string, limit?: number): Promise<SearchResult[]>;
45
+ //# sourceMappingURL=semantic-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-search.d.ts","sourceRoot":"","sources":["../../src/memory/semantic-search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAkB,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAA+B,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAO3F,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC;CACjC;AAMD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,WAAW,CAAoC;gBAE3C,MAAM,CAAC,EAAE,iBAAiB;IAItC,mCAAmC;IAC7B,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAyB3E,kCAAkC;IAC5B,qBAAqB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBlE,gCAAgC;IAC1B,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3E,4CAA4C;IAC5C,yBAAyB,IAAI,OAAO;IAIpC,sDAAsD;IACtD,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;CAS/C;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAG3C;AAQD,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,qBAAqB,CAK1F;AAED,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAMD,4BAA4B;AAC5B,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAIjH"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - Semantic Search
4
+ *
5
+ * 高级语义搜索接口,整合向量存储和记忆系统
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SemanticSearchService = void 0;
9
+ exports.isSemanticEnabled = isSemanticEnabled;
10
+ exports.getSemanticSearchService = getSemanticSearchService;
11
+ exports.resetSemanticSearchService = resetSemanticSearchService;
12
+ exports.semanticSearch = semanticSearch;
13
+ const vector_store_1 = require("./vector-store");
14
+ const storage_1 = require("./storage");
15
+ // ============================================================================
16
+ // Semantic Search Service
17
+ // ============================================================================
18
+ class SemanticSearchService {
19
+ constructor(config) {
20
+ this.vectorStore = (0, vector_store_1.getVectorStore)(config);
21
+ }
22
+ /** Search memories semantically */
23
+ async search(options) {
24
+ const { query, limit = 10, projectPath, type, minScore = 0.3 } = options;
25
+ // Get results from vector store
26
+ let results = await this.vectorStore.search(query, limit * 2, projectPath);
27
+ // Filter by type if specified
28
+ if (type) {
29
+ results = results.filter(r => r.type === type);
30
+ }
31
+ // Filter by minimum score
32
+ results = results.filter(r => r.score >= minScore);
33
+ // Limit results
34
+ results = results.slice(0, limit);
35
+ return {
36
+ memories: results,
37
+ query,
38
+ total: results.length,
39
+ searchType: this.vectorStore.isVectorSearchAvailable() ? 'semantic' : 'text',
40
+ };
41
+ }
42
+ /** Index all existing memories */
43
+ async indexExistingMemories(projectPath) {
44
+ const memories = (0, storage_1.loadAllMemories)(projectPath);
45
+ let indexed = 0;
46
+ for (const memory of memories) {
47
+ try {
48
+ await this.vectorStore.upsert(memory, projectPath);
49
+ indexed++;
50
+ }
51
+ catch (err) {
52
+ console.warn(`[SemanticSearch] Failed to index ${memory.name}: ${err.message}`);
53
+ }
54
+ }
55
+ return indexed;
56
+ }
57
+ /** Save and index new memory */
58
+ async saveAndIndex(entry, projectPath) {
59
+ // Save to file storage
60
+ (0, storage_1.saveMemory)(entry, projectPath);
61
+ // Index in vector store
62
+ await this.vectorStore.upsert(entry, projectPath);
63
+ }
64
+ /** Check if semantic search is available */
65
+ isSemanticSearchAvailable() {
66
+ return this.vectorStore.isVectorSearchAvailable();
67
+ }
68
+ /** Get search suggestions based on indexed content */
69
+ getSuggestions(projectPath) {
70
+ const allMemories = this.vectorStore.getAll(projectPath);
71
+ // Extract key terms from memory names
72
+ const terms = allMemories.map(m => m.name);
73
+ // Return unique suggestions
74
+ return [...new Set(terms)].slice(0, 10);
75
+ }
76
+ }
77
+ exports.SemanticSearchService = SemanticSearchService;
78
+ // ============================================================================
79
+ // Feature Detection
80
+ // ============================================================================
81
+ /**
82
+ * Whether semantic search is explicitly enabled via OPENHORSE_EMBEDDING_PROVIDER.
83
+ * We require an explicit opt-in so the vector store + sqlite-vec are only
84
+ * initialised when the user wants embeddings.
85
+ */
86
+ function isSemanticEnabled() {
87
+ const provider = process.env.OPENHORSE_EMBEDDING_PROVIDER;
88
+ return provider === 'ollama' || provider === 'openai';
89
+ }
90
+ // ============================================================================
91
+ // Factory
92
+ // ============================================================================
93
+ let defaultService = null;
94
+ function getSemanticSearchService(config) {
95
+ if (!defaultService) {
96
+ defaultService = new SemanticSearchService(config);
97
+ }
98
+ return defaultService;
99
+ }
100
+ function resetSemanticSearchService() {
101
+ defaultService = null;
102
+ }
103
+ // ============================================================================
104
+ // Convenience Functions
105
+ // ============================================================================
106
+ /** Quick semantic search */
107
+ async function semanticSearch(query, projectPath, limit) {
108
+ const service = getSemanticSearchService();
109
+ const result = await service.search({ query, projectPath, limit });
110
+ return result.memories;
111
+ }
112
+ //# sourceMappingURL=semantic-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-search.js","sourceRoot":"","sources":["../../src/memory/semantic-search.ts"],"names":[],"mappings":"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"}