@jait/gateway 0.1.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 (474) hide show
  1. package/bin/jait.mjs +144 -0
  2. package/dist/config.d.ts +24 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +73 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/db/connection.d.ts +37 -0
  7. package/dist/db/connection.d.ts.map +1 -0
  8. package/dist/db/connection.js +85 -0
  9. package/dist/db/connection.js.map +1 -0
  10. package/dist/db/index.d.ts +4 -0
  11. package/dist/db/index.d.ts.map +1 -0
  12. package/dist/db/index.js +4 -0
  13. package/dist/db/index.js.map +1 -0
  14. package/dist/db/migrations.d.ts +24 -0
  15. package/dist/db/migrations.d.ts.map +1 -0
  16. package/dist/db/migrations.js +312 -0
  17. package/dist/db/migrations.js.map +1 -0
  18. package/dist/db/schema.d.ts +2253 -0
  19. package/dist/db/schema.d.ts.map +1 -0
  20. package/dist/db/schema.js +195 -0
  21. package/dist/db/schema.js.map +1 -0
  22. package/dist/foundation.d.ts +26 -0
  23. package/dist/foundation.d.ts.map +1 -0
  24. package/dist/foundation.js +15 -0
  25. package/dist/foundation.js.map +1 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +413 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/lib/uuidv7.d.ts +10 -0
  31. package/dist/lib/uuidv7.d.ts.map +1 -0
  32. package/dist/lib/uuidv7.js +33 -0
  33. package/dist/lib/uuidv7.js.map +1 -0
  34. package/dist/memory/contracts.d.ts +42 -0
  35. package/dist/memory/contracts.d.ts.map +1 -0
  36. package/dist/memory/contracts.js +2 -0
  37. package/dist/memory/contracts.js.map +1 -0
  38. package/dist/memory/embeddings.d.ts +4 -0
  39. package/dist/memory/embeddings.d.ts.map +1 -0
  40. package/dist/memory/embeddings.js +26 -0
  41. package/dist/memory/embeddings.js.map +1 -0
  42. package/dist/memory/service.d.ts +17 -0
  43. package/dist/memory/service.d.ts.map +1 -0
  44. package/dist/memory/service.js +82 -0
  45. package/dist/memory/service.js.map +1 -0
  46. package/dist/memory/sqlite-backend.d.ts +11 -0
  47. package/dist/memory/sqlite-backend.d.ts.map +1 -0
  48. package/dist/memory/sqlite-backend.js +68 -0
  49. package/dist/memory/sqlite-backend.js.map +1 -0
  50. package/dist/plugins/contracts.d.ts +11 -0
  51. package/dist/plugins/contracts.d.ts.map +1 -0
  52. package/dist/plugins/contracts.js +2 -0
  53. package/dist/plugins/contracts.js.map +1 -0
  54. package/dist/providers/claude-code-provider.d.ts +39 -0
  55. package/dist/providers/claude-code-provider.d.ts.map +1 -0
  56. package/dist/providers/claude-code-provider.js +322 -0
  57. package/dist/providers/claude-code-provider.js.map +1 -0
  58. package/dist/providers/codex-provider.d.ts +51 -0
  59. package/dist/providers/codex-provider.d.ts.map +1 -0
  60. package/dist/providers/codex-provider.js +826 -0
  61. package/dist/providers/codex-provider.js.map +1 -0
  62. package/dist/providers/contracts.d.ts +167 -0
  63. package/dist/providers/contracts.d.ts.map +1 -0
  64. package/dist/providers/contracts.js +13 -0
  65. package/dist/providers/contracts.js.map +1 -0
  66. package/dist/providers/index.d.ts +6 -0
  67. package/dist/providers/index.d.ts.map +1 -0
  68. package/dist/providers/index.js +5 -0
  69. package/dist/providers/index.js.map +1 -0
  70. package/dist/providers/jait-provider.d.ts +23 -0
  71. package/dist/providers/jait-provider.d.ts.map +1 -0
  72. package/dist/providers/jait-provider.js +67 -0
  73. package/dist/providers/jait-provider.js.map +1 -0
  74. package/dist/providers/registry.d.ts +39 -0
  75. package/dist/providers/registry.d.ts.map +1 -0
  76. package/dist/providers/registry.js +64 -0
  77. package/dist/providers/registry.js.map +1 -0
  78. package/dist/pty-broker-client.d.ts +46 -0
  79. package/dist/pty-broker-client.d.ts.map +1 -0
  80. package/dist/pty-broker-client.js +142 -0
  81. package/dist/pty-broker-client.js.map +1 -0
  82. package/dist/routes/auth.d.ts +6 -0
  83. package/dist/routes/auth.d.ts.map +1 -0
  84. package/dist/routes/auth.js +236 -0
  85. package/dist/routes/auth.js.map +1 -0
  86. package/dist/routes/chat.d.ts +32 -0
  87. package/dist/routes/chat.d.ts.map +1 -0
  88. package/dist/routes/chat.js +1503 -0
  89. package/dist/routes/chat.js.map +1 -0
  90. package/dist/routes/consent.d.ts +10 -0
  91. package/dist/routes/consent.d.ts.map +1 -0
  92. package/dist/routes/consent.js +127 -0
  93. package/dist/routes/consent.js.map +1 -0
  94. package/dist/routes/filesystem.d.ts +14 -0
  95. package/dist/routes/filesystem.d.ts.map +1 -0
  96. package/dist/routes/filesystem.js +152 -0
  97. package/dist/routes/filesystem.js.map +1 -0
  98. package/dist/routes/git.d.ts +17 -0
  99. package/dist/routes/git.d.ts.map +1 -0
  100. package/dist/routes/git.js +213 -0
  101. package/dist/routes/git.js.map +1 -0
  102. package/dist/routes/health.d.ts +7 -0
  103. package/dist/routes/health.d.ts.map +1 -0
  104. package/dist/routes/health.js +21 -0
  105. package/dist/routes/health.js.map +1 -0
  106. package/dist/routes/hooks.d.ts +9 -0
  107. package/dist/routes/hooks.d.ts.map +1 -0
  108. package/dist/routes/hooks.js +22 -0
  109. package/dist/routes/hooks.js.map +1 -0
  110. package/dist/routes/jobs.d.ts +5 -0
  111. package/dist/routes/jobs.d.ts.map +1 -0
  112. package/dist/routes/jobs.js +333 -0
  113. package/dist/routes/jobs.js.map +1 -0
  114. package/dist/routes/mcp-server.d.ts +23 -0
  115. package/dist/routes/mcp-server.d.ts.map +1 -0
  116. package/dist/routes/mcp-server.js +177 -0
  117. package/dist/routes/mcp-server.js.map +1 -0
  118. package/dist/routes/mobile.d.ts +12 -0
  119. package/dist/routes/mobile.d.ts.map +1 -0
  120. package/dist/routes/mobile.js +64 -0
  121. package/dist/routes/mobile.js.map +1 -0
  122. package/dist/routes/network.d.ts +3 -0
  123. package/dist/routes/network.d.ts.map +1 -0
  124. package/dist/routes/network.js +367 -0
  125. package/dist/routes/network.js.map +1 -0
  126. package/dist/routes/repositories.d.ts +18 -0
  127. package/dist/routes/repositories.d.ts.map +1 -0
  128. package/dist/routes/repositories.js +90 -0
  129. package/dist/routes/repositories.js.map +1 -0
  130. package/dist/routes/screen-share.d.ts +17 -0
  131. package/dist/routes/screen-share.d.ts.map +1 -0
  132. package/dist/routes/screen-share.js +92 -0
  133. package/dist/routes/screen-share.js.map +1 -0
  134. package/dist/routes/sessions.d.ts +18 -0
  135. package/dist/routes/sessions.d.ts.map +1 -0
  136. package/dist/routes/sessions.js +169 -0
  137. package/dist/routes/sessions.js.map +1 -0
  138. package/dist/routes/terminals.d.ts +15 -0
  139. package/dist/routes/terminals.d.ts.map +1 -0
  140. package/dist/routes/terminals.js +326 -0
  141. package/dist/routes/terminals.js.map +1 -0
  142. package/dist/routes/threads.d.ts +38 -0
  143. package/dist/routes/threads.d.ts.map +1 -0
  144. package/dist/routes/threads.js +488 -0
  145. package/dist/routes/threads.js.map +1 -0
  146. package/dist/routes/trust.d.ts +9 -0
  147. package/dist/routes/trust.d.ts.map +1 -0
  148. package/dist/routes/trust.js +25 -0
  149. package/dist/routes/trust.js.map +1 -0
  150. package/dist/routes/voice.d.ts +5 -0
  151. package/dist/routes/voice.d.ts.map +1 -0
  152. package/dist/routes/voice.js +37 -0
  153. package/dist/routes/voice.js.map +1 -0
  154. package/dist/routes/workspace.d.ts +13 -0
  155. package/dist/routes/workspace.d.ts.map +1 -0
  156. package/dist/routes/workspace.js +275 -0
  157. package/dist/routes/workspace.js.map +1 -0
  158. package/dist/scheduler/contracts.d.ts +15 -0
  159. package/dist/scheduler/contracts.d.ts.map +1 -0
  160. package/dist/scheduler/contracts.js +2 -0
  161. package/dist/scheduler/contracts.js.map +1 -0
  162. package/dist/scheduler/hooks.d.ts +20 -0
  163. package/dist/scheduler/hooks.d.ts.map +1 -0
  164. package/dist/scheduler/hooks.js +78 -0
  165. package/dist/scheduler/hooks.js.map +1 -0
  166. package/dist/scheduler/service.d.ts +65 -0
  167. package/dist/scheduler/service.d.ts.map +1 -0
  168. package/dist/scheduler/service.js +188 -0
  169. package/dist/scheduler/service.js.map +1 -0
  170. package/dist/security/consent-executor.d.ts +48 -0
  171. package/dist/security/consent-executor.d.ts.map +1 -0
  172. package/dist/security/consent-executor.js +158 -0
  173. package/dist/security/consent-executor.js.map +1 -0
  174. package/dist/security/consent-manager.d.ts +105 -0
  175. package/dist/security/consent-manager.d.ts.map +1 -0
  176. package/dist/security/consent-manager.js +227 -0
  177. package/dist/security/consent-manager.js.map +1 -0
  178. package/dist/security/contracts.d.ts +31 -0
  179. package/dist/security/contracts.d.ts.map +1 -0
  180. package/dist/security/contracts.js +2 -0
  181. package/dist/security/contracts.js.map +1 -0
  182. package/dist/security/http-auth.d.ts +10 -0
  183. package/dist/security/http-auth.d.ts.map +1 -0
  184. package/dist/security/http-auth.js +48 -0
  185. package/dist/security/http-auth.js.map +1 -0
  186. package/dist/security/index.d.ts +10 -0
  187. package/dist/security/index.d.ts.map +1 -0
  188. package/dist/security/index.js +9 -0
  189. package/dist/security/index.js.map +1 -0
  190. package/dist/security/path-guard.d.ts +40 -0
  191. package/dist/security/path-guard.d.ts.map +1 -0
  192. package/dist/security/path-guard.js +125 -0
  193. package/dist/security/path-guard.js.map +1 -0
  194. package/dist/security/sandbox-manager.d.ts +43 -0
  195. package/dist/security/sandbox-manager.d.ts.map +1 -0
  196. package/dist/security/sandbox-manager.js +110 -0
  197. package/dist/security/sandbox-manager.js.map +1 -0
  198. package/dist/security/ssrf-guard.d.ts +11 -0
  199. package/dist/security/ssrf-guard.d.ts.map +1 -0
  200. package/dist/security/ssrf-guard.js +59 -0
  201. package/dist/security/ssrf-guard.js.map +1 -0
  202. package/dist/security/tool-permissions.d.ts +61 -0
  203. package/dist/security/tool-permissions.d.ts.map +1 -0
  204. package/dist/security/tool-permissions.js +105 -0
  205. package/dist/security/tool-permissions.js.map +1 -0
  206. package/dist/security/tool-profiles.d.ts +23 -0
  207. package/dist/security/tool-profiles.d.ts.map +1 -0
  208. package/dist/security/tool-profiles.js +106 -0
  209. package/dist/security/tool-profiles.js.map +1 -0
  210. package/dist/security/trust-engine.d.ts +61 -0
  211. package/dist/security/trust-engine.d.ts.map +1 -0
  212. package/dist/security/trust-engine.js +192 -0
  213. package/dist/security/trust-engine.js.map +1 -0
  214. package/dist/server.d.ts +54 -0
  215. package/dist/server.d.ts.map +1 -0
  216. package/dist/server.js +188 -0
  217. package/dist/server.js.map +1 -0
  218. package/dist/services/audit.d.ts +60 -0
  219. package/dist/services/audit.d.ts.map +1 -0
  220. package/dist/services/audit.js +58 -0
  221. package/dist/services/audit.js.map +1 -0
  222. package/dist/services/device-registry.d.ts +15 -0
  223. package/dist/services/device-registry.d.ts.map +1 -0
  224. package/dist/services/device-registry.js +32 -0
  225. package/dist/services/device-registry.js.map +1 -0
  226. package/dist/services/git.d.ts +168 -0
  227. package/dist/services/git.d.ts.map +1 -0
  228. package/dist/services/git.js +957 -0
  229. package/dist/services/git.js.map +1 -0
  230. package/dist/services/repositories.d.ts +32 -0
  231. package/dist/services/repositories.d.ts.map +1 -0
  232. package/dist/services/repositories.js +70 -0
  233. package/dist/services/repositories.js.map +1 -0
  234. package/dist/services/session-state.d.ts +20 -0
  235. package/dist/services/session-state.d.ts.map +1 -0
  236. package/dist/services/session-state.js +89 -0
  237. package/dist/services/session-state.js.map +1 -0
  238. package/dist/services/sessions.d.ts +68 -0
  239. package/dist/services/sessions.d.ts.map +1 -0
  240. package/dist/services/sessions.js +136 -0
  241. package/dist/services/sessions.js.map +1 -0
  242. package/dist/services/thread-title.d.ts +23 -0
  243. package/dist/services/thread-title.d.ts.map +1 -0
  244. package/dist/services/thread-title.js +141 -0
  245. package/dist/services/thread-title.js.map +1 -0
  246. package/dist/services/threads.d.ts +64 -0
  247. package/dist/services/threads.d.ts.map +1 -0
  248. package/dist/services/threads.js +202 -0
  249. package/dist/services/threads.js.map +1 -0
  250. package/dist/services/users.d.ts +39 -0
  251. package/dist/services/users.d.ts.map +1 -0
  252. package/dist/services/users.js +203 -0
  253. package/dist/services/users.js.map +1 -0
  254. package/dist/sessions/contracts.d.ts +14 -0
  255. package/dist/sessions/contracts.d.ts.map +1 -0
  256. package/dist/sessions/contracts.js +2 -0
  257. package/dist/sessions/contracts.js.map +1 -0
  258. package/dist/surfaces/browser.d.ts +65 -0
  259. package/dist/surfaces/browser.d.ts.map +1 -0
  260. package/dist/surfaces/browser.js +615 -0
  261. package/dist/surfaces/browser.js.map +1 -0
  262. package/dist/surfaces/contracts.d.ts +34 -0
  263. package/dist/surfaces/contracts.d.ts.map +1 -0
  264. package/dist/surfaces/contracts.js +2 -0
  265. package/dist/surfaces/contracts.js.map +1 -0
  266. package/dist/surfaces/filesystem.d.ts +76 -0
  267. package/dist/surfaces/filesystem.d.ts.map +1 -0
  268. package/dist/surfaces/filesystem.js +245 -0
  269. package/dist/surfaces/filesystem.js.map +1 -0
  270. package/dist/surfaces/index.d.ts +6 -0
  271. package/dist/surfaces/index.d.ts.map +1 -0
  272. package/dist/surfaces/index.js +5 -0
  273. package/dist/surfaces/index.js.map +1 -0
  274. package/dist/surfaces/registry.d.ts +24 -0
  275. package/dist/surfaces/registry.d.ts.map +1 -0
  276. package/dist/surfaces/registry.js +59 -0
  277. package/dist/surfaces/registry.js.map +1 -0
  278. package/dist/surfaces/terminal.d.ts +76 -0
  279. package/dist/surfaces/terminal.d.ts.map +1 -0
  280. package/dist/surfaces/terminal.js +271 -0
  281. package/dist/surfaces/terminal.js.map +1 -0
  282. package/dist/tools/agent-loop.d.ts +302 -0
  283. package/dist/tools/agent-loop.d.ts.map +1 -0
  284. package/dist/tools/agent-loop.js +918 -0
  285. package/dist/tools/agent-loop.js.map +1 -0
  286. package/dist/tools/agent-tools.d.ts +39 -0
  287. package/dist/tools/agent-tools.d.ts.map +1 -0
  288. package/dist/tools/agent-tools.js +263 -0
  289. package/dist/tools/agent-tools.js.map +1 -0
  290. package/dist/tools/browser-tools.d.ts +38 -0
  291. package/dist/tools/browser-tools.d.ts.map +1 -0
  292. package/dist/tools/browser-tools.js +725 -0
  293. package/dist/tools/browser-tools.js.map +1 -0
  294. package/dist/tools/chat-modes.d.ts +75 -0
  295. package/dist/tools/chat-modes.d.ts.map +1 -0
  296. package/dist/tools/chat-modes.js +228 -0
  297. package/dist/tools/chat-modes.js.map +1 -0
  298. package/dist/tools/contracts.d.ts +69 -0
  299. package/dist/tools/contracts.d.ts.map +1 -0
  300. package/dist/tools/contracts.js +2 -0
  301. package/dist/tools/contracts.js.map +1 -0
  302. package/dist/tools/core/agent.d.ts +31 -0
  303. package/dist/tools/core/agent.d.ts.map +1 -0
  304. package/dist/tools/core/agent.js +65 -0
  305. package/dist/tools/core/agent.js.map +1 -0
  306. package/dist/tools/core/edit.d.ts +30 -0
  307. package/dist/tools/core/edit.d.ts.map +1 -0
  308. package/dist/tools/core/edit.js +109 -0
  309. package/dist/tools/core/edit.js.map +1 -0
  310. package/dist/tools/core/execute.d.ts +36 -0
  311. package/dist/tools/core/execute.d.ts.map +1 -0
  312. package/dist/tools/core/execute.js +81 -0
  313. package/dist/tools/core/execute.js.map +1 -0
  314. package/dist/tools/core/get-fs.d.ts +32 -0
  315. package/dist/tools/core/get-fs.d.ts.map +1 -0
  316. package/dist/tools/core/get-fs.js +143 -0
  317. package/dist/tools/core/get-fs.js.map +1 -0
  318. package/dist/tools/core/index.d.ts +26 -0
  319. package/dist/tools/core/index.d.ts.map +1 -0
  320. package/dist/tools/core/index.js +26 -0
  321. package/dist/tools/core/index.js.map +1 -0
  322. package/dist/tools/core/jait.d.ts +60 -0
  323. package/dist/tools/core/jait.d.ts.map +1 -0
  324. package/dist/tools/core/jait.js +256 -0
  325. package/dist/tools/core/jait.js.map +1 -0
  326. package/dist/tools/core/read.d.ts +26 -0
  327. package/dist/tools/core/read.d.ts.map +1 -0
  328. package/dist/tools/core/read.js +118 -0
  329. package/dist/tools/core/read.js.map +1 -0
  330. package/dist/tools/core/search.d.ts +34 -0
  331. package/dist/tools/core/search.d.ts.map +1 -0
  332. package/dist/tools/core/search.js +187 -0
  333. package/dist/tools/core/search.js.map +1 -0
  334. package/dist/tools/core/todo.d.ts +38 -0
  335. package/dist/tools/core/todo.d.ts.map +1 -0
  336. package/dist/tools/core/todo.js +116 -0
  337. package/dist/tools/core/todo.js.map +1 -0
  338. package/dist/tools/core/web.d.ts +34 -0
  339. package/dist/tools/core/web.d.ts.map +1 -0
  340. package/dist/tools/core/web.js +120 -0
  341. package/dist/tools/core/web.js.map +1 -0
  342. package/dist/tools/cron-tools.d.ts +7 -0
  343. package/dist/tools/cron-tools.d.ts.map +1 -0
  344. package/dist/tools/cron-tools.js +116 -0
  345. package/dist/tools/cron-tools.js.map +1 -0
  346. package/dist/tools/file-tools.d.ts +32 -0
  347. package/dist/tools/file-tools.d.ts.map +1 -0
  348. package/dist/tools/file-tools.js +178 -0
  349. package/dist/tools/file-tools.js.map +1 -0
  350. package/dist/tools/gateway-tools.d.ts +15 -0
  351. package/dist/tools/gateway-tools.d.ts.map +1 -0
  352. package/dist/tools/gateway-tools.js +39 -0
  353. package/dist/tools/gateway-tools.js.map +1 -0
  354. package/dist/tools/index.d.ts +57 -0
  355. package/dist/tools/index.d.ts.map +1 -0
  356. package/dist/tools/index.js +170 -0
  357. package/dist/tools/index.js.map +1 -0
  358. package/dist/tools/mcp-bridge.d.ts +111 -0
  359. package/dist/tools/mcp-bridge.d.ts.map +1 -0
  360. package/dist/tools/mcp-bridge.js +166 -0
  361. package/dist/tools/mcp-bridge.js.map +1 -0
  362. package/dist/tools/memory-tools.d.ts +19 -0
  363. package/dist/tools/memory-tools.d.ts.map +1 -0
  364. package/dist/tools/memory-tools.js +78 -0
  365. package/dist/tools/memory-tools.js.map +1 -0
  366. package/dist/tools/meta-tools.d.ts +25 -0
  367. package/dist/tools/meta-tools.d.ts.map +1 -0
  368. package/dist/tools/meta-tools.js +125 -0
  369. package/dist/tools/meta-tools.js.map +1 -0
  370. package/dist/tools/network-tools.d.ts +21 -0
  371. package/dist/tools/network-tools.d.ts.map +1 -0
  372. package/dist/tools/network-tools.js +189 -0
  373. package/dist/tools/network-tools.js.map +1 -0
  374. package/dist/tools/os-tools.d.ts +18 -0
  375. package/dist/tools/os-tools.d.ts.map +1 -0
  376. package/dist/tools/os-tools.js +210 -0
  377. package/dist/tools/os-tools.js.map +1 -0
  378. package/dist/tools/prompts/claude-prompt.d.ts +8 -0
  379. package/dist/tools/prompts/claude-prompt.d.ts.map +1 -0
  380. package/dist/tools/prompts/claude-prompt.js +228 -0
  381. package/dist/tools/prompts/claude-prompt.js.map +1 -0
  382. package/dist/tools/prompts/default-openai-prompt.d.ts +8 -0
  383. package/dist/tools/prompts/default-openai-prompt.d.ts.map +1 -0
  384. package/dist/tools/prompts/default-openai-prompt.js +67 -0
  385. package/dist/tools/prompts/default-openai-prompt.js.map +1 -0
  386. package/dist/tools/prompts/default-prompt.d.ts +7 -0
  387. package/dist/tools/prompts/default-prompt.d.ts.map +1 -0
  388. package/dist/tools/prompts/default-prompt.js +50 -0
  389. package/dist/tools/prompts/default-prompt.js.map +1 -0
  390. package/dist/tools/prompts/gemini-prompt.d.ts +8 -0
  391. package/dist/tools/prompts/gemini-prompt.d.ts.map +1 -0
  392. package/dist/tools/prompts/gemini-prompt.js +118 -0
  393. package/dist/tools/prompts/gemini-prompt.js.map +1 -0
  394. package/dist/tools/prompts/gpt5-codex-prompt.d.ts +8 -0
  395. package/dist/tools/prompts/gpt5-codex-prompt.d.ts.map +1 -0
  396. package/dist/tools/prompts/gpt5-codex-prompt.js +72 -0
  397. package/dist/tools/prompts/gpt5-codex-prompt.js.map +1 -0
  398. package/dist/tools/prompts/gpt5-prompt.d.ts +8 -0
  399. package/dist/tools/prompts/gpt5-prompt.d.ts.map +1 -0
  400. package/dist/tools/prompts/gpt5-prompt.js +177 -0
  401. package/dist/tools/prompts/gpt5-prompt.js.map +1 -0
  402. package/dist/tools/prompts/gpt51-prompt.d.ts +8 -0
  403. package/dist/tools/prompts/gpt51-prompt.d.ts.map +1 -0
  404. package/dist/tools/prompts/gpt51-prompt.js +178 -0
  405. package/dist/tools/prompts/gpt51-prompt.js.map +1 -0
  406. package/dist/tools/prompts/gpt52-prompt.d.ts +8 -0
  407. package/dist/tools/prompts/gpt52-prompt.d.ts.map +1 -0
  408. package/dist/tools/prompts/gpt52-prompt.js +198 -0
  409. package/dist/tools/prompts/gpt52-prompt.js.map +1 -0
  410. package/dist/tools/prompts/index.d.ts +22 -0
  411. package/dist/tools/prompts/index.d.ts.map +1 -0
  412. package/dist/tools/prompts/index.js +23 -0
  413. package/dist/tools/prompts/index.js.map +1 -0
  414. package/dist/tools/prompts/prompt-registry.d.ts +44 -0
  415. package/dist/tools/prompts/prompt-registry.d.ts.map +1 -0
  416. package/dist/tools/prompts/prompt-registry.js +60 -0
  417. package/dist/tools/prompts/prompt-registry.js.map +1 -0
  418. package/dist/tools/prompts/shared-sections.d.ts +28 -0
  419. package/dist/tools/prompts/shared-sections.d.ts.map +1 -0
  420. package/dist/tools/prompts/shared-sections.js +111 -0
  421. package/dist/tools/prompts/shared-sections.js.map +1 -0
  422. package/dist/tools/prompts/xai-prompt.d.ts +8 -0
  423. package/dist/tools/prompts/xai-prompt.d.ts.map +1 -0
  424. package/dist/tools/prompts/xai-prompt.js +68 -0
  425. package/dist/tools/prompts/xai-prompt.js.map +1 -0
  426. package/dist/tools/redeploy-tools.d.ts +30 -0
  427. package/dist/tools/redeploy-tools.d.ts.map +1 -0
  428. package/dist/tools/redeploy-tools.js +191 -0
  429. package/dist/tools/redeploy-tools.js.map +1 -0
  430. package/dist/tools/registry.d.ts +51 -0
  431. package/dist/tools/registry.d.ts.map +1 -0
  432. package/dist/tools/registry.js +148 -0
  433. package/dist/tools/registry.js.map +1 -0
  434. package/dist/tools/screen-share-tools.d.ts +31 -0
  435. package/dist/tools/screen-share-tools.d.ts.map +1 -0
  436. package/dist/tools/screen-share-tools.js +183 -0
  437. package/dist/tools/screen-share-tools.js.map +1 -0
  438. package/dist/tools/surface-tools.d.ts +23 -0
  439. package/dist/tools/surface-tools.d.ts.map +1 -0
  440. package/dist/tools/surface-tools.js +99 -0
  441. package/dist/tools/surface-tools.js.map +1 -0
  442. package/dist/tools/terminal-tools.d.ts +37 -0
  443. package/dist/tools/terminal-tools.d.ts.map +1 -0
  444. package/dist/tools/terminal-tools.js +448 -0
  445. package/dist/tools/terminal-tools.js.map +1 -0
  446. package/dist/tools/thread-tools.d.ts +61 -0
  447. package/dist/tools/thread-tools.d.ts.map +1 -0
  448. package/dist/tools/thread-tools.js +484 -0
  449. package/dist/tools/thread-tools.js.map +1 -0
  450. package/dist/tools/token-estimator.d.ts +55 -0
  451. package/dist/tools/token-estimator.d.ts.map +1 -0
  452. package/dist/tools/token-estimator.js +82 -0
  453. package/dist/tools/token-estimator.js.map +1 -0
  454. package/dist/tools/tool-names.d.ts +64 -0
  455. package/dist/tools/tool-names.d.ts.map +1 -0
  456. package/dist/tools/tool-names.js +76 -0
  457. package/dist/tools/tool-names.js.map +1 -0
  458. package/dist/tools/validate.d.ts +27 -0
  459. package/dist/tools/validate.d.ts.map +1 -0
  460. package/dist/tools/validate.js +99 -0
  461. package/dist/tools/validate.js.map +1 -0
  462. package/dist/tools/voice-tools.d.ts +8 -0
  463. package/dist/tools/voice-tools.d.ts.map +1 -0
  464. package/dist/tools/voice-tools.js +32 -0
  465. package/dist/tools/voice-tools.js.map +1 -0
  466. package/dist/voice/service.d.ts +42 -0
  467. package/dist/voice/service.d.ts.map +1 -0
  468. package/dist/voice/service.js +75 -0
  469. package/dist/voice/service.js.map +1 -0
  470. package/dist/ws.d.ts +90 -0
  471. package/dist/ws.d.ts.map +1 -0
  472. package/dist/ws.js +562 -0
  473. package/dist/ws.js.map +1 -0
  474. package/package.json +61 -0
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Terminal Surface — uses bun-pty directly.
3
+ *
4
+ * Each TerminalSurface owns a persistent interactive PTY shell process
5
+ * (viewable in the frontend via xterm.js + WebSocket).
6
+ *
7
+ * Shell integration:
8
+ * On start, sources an integration script that hooks into the shell's
9
+ * prompt lifecycle and emits OSC 633 escape sequences (same protocol as
10
+ * VS Code's terminal shell integration). This lets us detect command
11
+ * boundaries, exit codes, and CWD changes without wrapping commands.
12
+ */
13
+ import { platform } from "node:os";
14
+ import { join, dirname } from "node:path";
15
+ import { fileURLToPath } from "node:url";
16
+ import { execSync } from "node:child_process";
17
+ import { createRequire } from "node:module";
18
+ const __dirname = dirname(fileURLToPath(import.meta.url));
19
+ const require = createRequire(import.meta.url);
20
+ function spawnPty(shell, shellArgs, opts) {
21
+ // Bun runtime path
22
+ if (typeof Bun !== "undefined") {
23
+ const bunPty = require("bun-pty");
24
+ return bunPty.spawn(shell, shellArgs, opts);
25
+ }
26
+ // Node/Vitest fallback path
27
+ const nodePty = require("node-pty");
28
+ return nodePty.spawn(shell, shellArgs, opts);
29
+ }
30
+ /** Directory containing shell integration scripts */
31
+ const SHELL_INTEGRATION_DIR = join(__dirname, "shell-integration");
32
+ function defaultShell() {
33
+ if (platform() === "win32") {
34
+ // Prefer PowerShell 7 (pwsh) over Windows PowerShell 5.1 (powershell)
35
+ // pwsh supports modern escape sequences and PSReadLine features
36
+ try {
37
+ execSync("pwsh.exe -v", { stdio: "ignore", timeout: 3000 });
38
+ return "pwsh.exe";
39
+ }
40
+ catch {
41
+ return "powershell.exe";
42
+ }
43
+ }
44
+ return process.env["SHELL"] ?? "/bin/bash";
45
+ }
46
+ /** Detect which integration script to source based on the shell binary */
47
+ function shellIntegrationScript(shell) {
48
+ const name = shell.toLowerCase().replace(/\.exe$/, "");
49
+ if (name.includes("pwsh") || name.includes("powershell")) {
50
+ return { path: join(SHELL_INTEGRATION_DIR, "pwsh.ps1"), type: "pwsh" };
51
+ }
52
+ if (name.includes("zsh")) {
53
+ return { path: join(SHELL_INTEGRATION_DIR, "zsh.sh"), type: "zsh" };
54
+ }
55
+ if (name.includes("bash") || name.includes("sh")) {
56
+ return { path: join(SHELL_INTEGRATION_DIR, "bash.sh"), type: "bash" };
57
+ }
58
+ return null;
59
+ }
60
+ export class TerminalSurface {
61
+ id;
62
+ type = "terminal";
63
+ _state = "idle";
64
+ _sessionId = null;
65
+ _startedAt = null;
66
+ _cwd = null;
67
+ _pid = null;
68
+ _pty = null;
69
+ _outputBuffer = [];
70
+ _cols;
71
+ _rows;
72
+ shell;
73
+ extraEnv;
74
+ _outputListeners = [];
75
+ /** Whether the OSC 633 shell integration has emitted its first prompt (B marker) */
76
+ _shellIntegrationReady = false;
77
+ _shellIntegrationReadyResolve;
78
+ _shellIntegrationReadyPromise;
79
+ /** External callbacks (wired by index.ts / routes) */
80
+ onOutput;
81
+ onStateChange;
82
+ onExit;
83
+ constructor(id, opts = {}) {
84
+ this.id = id;
85
+ this.shell = opts.shell ?? defaultShell();
86
+ this._cols = opts.cols ?? 120;
87
+ this._rows = opts.rows ?? 30;
88
+ this.extraEnv = opts.env ?? {};
89
+ this._shellIntegrationReadyPromise = new Promise((resolve) => {
90
+ this._shellIntegrationReadyResolve = resolve;
91
+ });
92
+ }
93
+ get state() {
94
+ return this._state;
95
+ }
96
+ get sessionId() {
97
+ return this._sessionId;
98
+ }
99
+ get pid() {
100
+ return this._pid ?? undefined;
101
+ }
102
+ /** True once the shell has emitted at least one OSC 633;B prompt-end marker */
103
+ get shellIntegrationReady() {
104
+ return this._shellIntegrationReady;
105
+ }
106
+ /** Resolves when the shell integration prompt is first ready (or after a timeout fallback) */
107
+ waitForPrompt(timeoutMs = 5000) {
108
+ if (this._shellIntegrationReady)
109
+ return Promise.resolve();
110
+ return Promise.race([
111
+ this._shellIntegrationReadyPromise,
112
+ new Promise((r) => setTimeout(r, timeoutMs)),
113
+ ]);
114
+ }
115
+ async start(input) {
116
+ if (this._state === "running")
117
+ return;
118
+ this._setState("starting");
119
+ this._sessionId = input.sessionId;
120
+ this._cwd = input.workspaceRoot;
121
+ this._startedAt = new Date().toISOString();
122
+ try {
123
+ const integration = shellIntegrationScript(this.shell);
124
+ // Build shell args — inject our integration script
125
+ let shellArgs;
126
+ if (integration?.type === "pwsh") {
127
+ // PowerShell: -NoExit -File <script> runs the script then stays interactive
128
+ shellArgs = ["-NoExit", "-File", integration.path];
129
+ }
130
+ else if (integration?.type === "bash") {
131
+ shellArgs = ["--rcfile", integration.path];
132
+ }
133
+ else if (integration?.type === "zsh") {
134
+ // zsh: source our script via ZDOTDIR override is complex —
135
+ // instead we'll source it after spawn via write()
136
+ shellArgs = [];
137
+ }
138
+ else {
139
+ shellArgs = platform() === "win32" ? ["-NoProfile"] : [];
140
+ }
141
+ const pty = spawnPty(this.shell, shellArgs, {
142
+ name: "xterm-256color",
143
+ cols: this._cols,
144
+ rows: this._rows,
145
+ cwd: input.workspaceRoot,
146
+ env: { ...process.env, TERM: "xterm-256color", ...this.extraEnv },
147
+ });
148
+ this._pty = pty;
149
+ this._pid = pty.pid;
150
+ // Wire PTY output → surface listeners + buffer
151
+ // Also watch for OSC 633;B to know when prompt is ready
152
+ pty.onData((data) => {
153
+ this._outputBuffer.push(data);
154
+ if (this._outputBuffer.length > 10000) {
155
+ this._outputBuffer = this._outputBuffer.slice(-5000);
156
+ }
157
+ // Detect shell integration prompt-end marker
158
+ if (!this._shellIntegrationReady && data.includes("\x1b]633;B")) {
159
+ this._shellIntegrationReady = true;
160
+ this._shellIntegrationReadyResolve?.();
161
+ }
162
+ this.onOutput?.(data);
163
+ for (const listener of this._outputListeners) {
164
+ listener(data);
165
+ }
166
+ });
167
+ // Wire PTY exit
168
+ pty.onExit((event) => {
169
+ this._pid = null;
170
+ this._pty = null;
171
+ this._setState("stopped");
172
+ this.onExit?.(event.exitCode, event.signal);
173
+ });
174
+ this._setState("running");
175
+ // For zsh: source integration after the shell starts
176
+ if (integration?.type === "zsh") {
177
+ setTimeout(() => {
178
+ this.write(`source '${integration.path}'\n`);
179
+ }, 300);
180
+ }
181
+ }
182
+ catch (err) {
183
+ this._setState("error");
184
+ throw err;
185
+ }
186
+ }
187
+ async stop(_input) {
188
+ if (!this._pty) {
189
+ this._setState("stopped");
190
+ return;
191
+ }
192
+ this._setState("stopping");
193
+ try {
194
+ this._pty.kill();
195
+ }
196
+ catch {
197
+ // already dead
198
+ }
199
+ this._pty = null;
200
+ this._pid = null;
201
+ this._setState("stopped");
202
+ }
203
+ /** Write raw data to the PTY (user keyboard input from frontend) */
204
+ write(data) {
205
+ if (this._state !== "running" || !this._pty)
206
+ return;
207
+ try {
208
+ this._pty.write(data);
209
+ }
210
+ catch (err) {
211
+ console.error(`PTY write error (${this.id}):`, err);
212
+ }
213
+ }
214
+ /** Resize the PTY */
215
+ resize(cols, rows) {
216
+ if (!this._pty || this._state !== "running")
217
+ return;
218
+ this._cols = cols;
219
+ this._rows = rows;
220
+ try {
221
+ this._pty.resize(cols, rows);
222
+ }
223
+ catch (err) {
224
+ console.error(`PTY resize error (${this.id}):`, err);
225
+ }
226
+ }
227
+ /** Add an output listener (used by terminal.run to mirror output) */
228
+ addOutputListener(listener) {
229
+ this._outputListeners.push(listener);
230
+ }
231
+ /** Remove an output listener */
232
+ removeOutputListener(listener) {
233
+ const idx = this._outputListeners.indexOf(listener);
234
+ if (idx !== -1)
235
+ this._outputListeners.splice(idx, 1);
236
+ }
237
+ snapshot() {
238
+ return {
239
+ id: this.id,
240
+ type: this.type,
241
+ state: this._state,
242
+ sessionId: this._sessionId ?? "",
243
+ startedAt: this._startedAt ?? undefined,
244
+ metadata: {
245
+ shell: this.shell,
246
+ cols: this._cols,
247
+ rows: this._rows,
248
+ pid: this._pid ?? null,
249
+ cwd: this._cwd,
250
+ },
251
+ };
252
+ }
253
+ getRecentOutput(lines = 100) {
254
+ return this._outputBuffer.slice(-lines).join("");
255
+ }
256
+ _setState(s) {
257
+ this._state = s;
258
+ this.onStateChange?.(s);
259
+ }
260
+ }
261
+ export class TerminalSurfaceFactory {
262
+ type = "terminal";
263
+ opts;
264
+ constructor(opts = {}) {
265
+ this.opts = opts;
266
+ }
267
+ create(id) {
268
+ return new TerminalSurface(id, this.opts);
269
+ }
270
+ }
271
+ //# sourceMappingURL=terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/surfaces/terminal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Agent Loop — reusable, streamable tool-calling loop.
3
+ *
4
+ * Extracted from chat.ts and enhanced with:
5
+ * - Input validation (catches bad LLM args immediately)
6
+ * - Parallel tool execution (independent calls run concurrently)
7
+ * - Retry for individual failed tool calls
8
+ * - Steering (inject guidance mid-loop)
9
+ * - Tool call queueing with priority
10
+ *
11
+ * Both the main chat route and the agent.spawn sub-agent tool use this.
12
+ */
13
+ import type { ToolResult } from "./contracts.js";
14
+ import type { ToolRegistry } from "./registry.js";
15
+ import { type ChatMode, type PlannedAction } from "./chat-modes.js";
16
+ /** Wire format for a single OpenAI tool call */
17
+ export interface OpenAIToolCall {
18
+ id: string;
19
+ type: "function";
20
+ function: {
21
+ name: string;
22
+ arguments: string;
23
+ };
24
+ }
25
+ /** A chat message in the conversation history */
26
+ export interface AgentMessage {
27
+ role: "user" | "assistant" | "system" | "tool";
28
+ content: string;
29
+ tool_calls?: OpenAIToolCall[];
30
+ tool_call_id?: string;
31
+ name?: string;
32
+ }
33
+ /** Segment for interleaved rendering of text and tool calls */
34
+ export type MessageSegment = {
35
+ type: "text";
36
+ content: string;
37
+ } | {
38
+ type: "toolGroup";
39
+ callIds: string[];
40
+ };
41
+ /** OpenAI function-calling tool schema */
42
+ export interface OpenAIToolSchema {
43
+ type: "function";
44
+ function: {
45
+ name: string;
46
+ description: string;
47
+ parameters: unknown;
48
+ };
49
+ }
50
+ /** LLM connection config */
51
+ export interface LLMConfig {
52
+ openaiApiKey: string;
53
+ openaiBaseUrl: string;
54
+ openaiModel: string;
55
+ /** Max context window in tokens */
56
+ contextWindow: number;
57
+ }
58
+ /** Persisted record of a tool call execution */
59
+ export interface ExecutedToolCall {
60
+ callId: string;
61
+ tool: string;
62
+ args: unknown;
63
+ ok: boolean;
64
+ message: string;
65
+ data?: unknown;
66
+ startedAt: number;
67
+ completedAt: number;
68
+ /** Number of times this call was retried */
69
+ retryCount?: number;
70
+ }
71
+ /** Events emitted during the loop */
72
+ export type AgentLoopEvent = {
73
+ type: "token";
74
+ content: string;
75
+ } | {
76
+ type: "tool_call_delta";
77
+ call_id: string;
78
+ index: number;
79
+ name_delta?: string;
80
+ args_delta?: string;
81
+ } | {
82
+ type: "tool_start";
83
+ tool: string;
84
+ args: unknown;
85
+ call_id: string;
86
+ } | {
87
+ type: "tool_output";
88
+ call_id: string;
89
+ content: string;
90
+ } | {
91
+ type: "tool_result";
92
+ call_id: string;
93
+ tool: string;
94
+ ok: boolean;
95
+ message: string;
96
+ data?: unknown;
97
+ } | {
98
+ type: "tool_retry";
99
+ call_id: string;
100
+ attempt: number;
101
+ maxAttempts: number;
102
+ } | {
103
+ type: "tool_validation_error";
104
+ call_id: string;
105
+ tool: string;
106
+ errors: string[];
107
+ } | {
108
+ type: "steering";
109
+ message: string;
110
+ } | {
111
+ type: "plan_action";
112
+ action: PlannedAction;
113
+ } | {
114
+ type: "plan_complete";
115
+ planId: string;
116
+ summary: string;
117
+ actions: PlannedAction[];
118
+ } | {
119
+ type: "mode_notice";
120
+ mode: ChatMode;
121
+ message: string;
122
+ } | {
123
+ type: "todo_list";
124
+ items: {
125
+ id: number;
126
+ title: string;
127
+ status: "not-started" | "in-progress" | "completed";
128
+ }[];
129
+ } | {
130
+ type: "context_usage";
131
+ system: number;
132
+ history: number;
133
+ toolResults: number;
134
+ tools: number;
135
+ total: number;
136
+ limit: number;
137
+ ratio: number;
138
+ pruned?: boolean;
139
+ } | {
140
+ type: "error";
141
+ message: string;
142
+ };
143
+ /** Priority levels for queued tool calls */
144
+ export declare enum ToolCallPriority {
145
+ /** Run before anything else (e.g. abort-checks, validation) */
146
+ Critical = 0,
147
+ /** Normal tool calls from the LLM */
148
+ Normal = 1,
149
+ /** Deferred / low-priority background work */
150
+ Low = 2
151
+ }
152
+ /** A queued tool call entry */
153
+ export interface QueuedToolCall {
154
+ toolCall: OpenAIToolCall;
155
+ priority: ToolCallPriority;
156
+ /** If true, this call can run in parallel with other parallel-safe calls */
157
+ parallelSafe: boolean;
158
+ }
159
+ /** Options for the agent loop */
160
+ export interface AgentLoopOptions {
161
+ /** LLM connection settings */
162
+ llm: LLMConfig;
163
+ /** The conversation history (mutated in place) */
164
+ history: AgentMessage[];
165
+ /** OpenAI tool schemas to send to the model */
166
+ toolSchemas: OpenAIToolSchema[];
167
+ /** Whether tools are available */
168
+ hasTools: boolean;
169
+ /** Session identifier (for logging / events) */
170
+ sessionId: string;
171
+ /** Auth context for tool execution */
172
+ auth?: {
173
+ userId?: string;
174
+ apiKeys?: Record<string, string>;
175
+ };
176
+ /** Abort controller — abort to cancel the loop */
177
+ abort: AbortController;
178
+ /** Max tool-calling rounds before stopping */
179
+ maxRounds?: number;
180
+ /** Max retries per individual tool call failure (0 = no retry) */
181
+ maxRetries?: number;
182
+ /** Enable parallel execution of independent tool calls */
183
+ parallel?: boolean;
184
+ /** Tool registry for input validation (optional — skips validation if absent) */
185
+ toolRegistry?: ToolRegistry;
186
+ /** Optional filter: only allow these tool names (for sub-agents) */
187
+ allowedTools?: Set<string>;
188
+ /** User-disabled tools (never sent to LLM, never executed) */
189
+ disabledTools?: Set<string>;
190
+ /** Chat mode: ask (read-only), agent (full), or plan (propose then execute) */
191
+ mode?: ChatMode;
192
+ /** Logger (defaults to console) */
193
+ log?: Logger;
194
+ /** Event callback — called for every stream event */
195
+ onEvent?: (event: AgentLoopEvent) => void;
196
+ /** Persistence callback — called when a final assistant message should be saved */
197
+ onPersist?: (sessionId: string, role: string, content: string, toolCalls?: string, segments?: string) => void;
198
+ }
199
+ export interface AgentLoopResult {
200
+ content: string;
201
+ executedToolCalls: ExecutedToolCall[];
202
+ /** Interleaved text/toolGroup segments for rendering */
203
+ segments: MessageSegment[];
204
+ /** Total LLM rounds used */
205
+ rounds: number;
206
+ /** Whether the loop was stopped by abort */
207
+ aborted: boolean;
208
+ /** Whether the loop was stopped because it hit the max rounds limit */
209
+ hitMaxRounds: boolean;
210
+ /** Plan data — only populated in plan mode */
211
+ plan?: {
212
+ id: string;
213
+ summary: string;
214
+ actions: PlannedAction[];
215
+ };
216
+ }
217
+ export interface Logger {
218
+ info(msg: string, ...args: unknown[]): void;
219
+ warn(msg: string, ...args: unknown[]): void;
220
+ error(msg: string | unknown, ...args: unknown[]): void;
221
+ }
222
+ /**
223
+ * Steering lets the user (or system) inject guidance into the agent
224
+ * loop while it's running. The steered message gets appended to the
225
+ * conversation as a system message before the next LLM call.
226
+ */
227
+ export declare class SteeringController {
228
+ private queue;
229
+ /** Inject a steering message into the loop */
230
+ steer(message: string): void;
231
+ /** Drain all pending steering messages (called by the loop) */
232
+ drain(): string[];
233
+ get hasPending(): boolean;
234
+ }
235
+ /**
236
+ * Priority queue for tool calls. Sorts by priority (lower = first),
237
+ * then partitions into parallel-safe batches.
238
+ */
239
+ export declare class ToolCallQueue {
240
+ private items;
241
+ /** Enqueue a tool call with optional priority and parallelism hint */
242
+ enqueue(toolCall: OpenAIToolCall, priority?: ToolCallPriority, parallelSafe?: boolean): void;
243
+ /** Enqueue multiple tool calls at the same priority */
244
+ enqueueAll(toolCalls: OpenAIToolCall[], priority?: ToolCallPriority, parallelSafe?: boolean): void;
245
+ /**
246
+ * Dequeue the next batch. If parallel execution is enabled, returns
247
+ * all contiguous parallel-safe items at the same priority level.
248
+ * Otherwise returns one at a time.
249
+ */
250
+ dequeueBatch(allowParallel: boolean): QueuedToolCall[];
251
+ get length(): number;
252
+ get isEmpty(): boolean;
253
+ }
254
+ /** OpenAI requires function names to match ^[a-zA-Z0-9_-]+$ — no dots */
255
+ export declare function toOpenAIName(name: string): string;
256
+ export declare function fromOpenAIName(name: string): string;
257
+ export declare function serializeMessages(messages: AgentMessage[]): Record<string, unknown>[];
258
+ export declare function buildToolSchemas(registry: ToolRegistry, allowedTools?: Set<string>): OpenAIToolSchema[];
259
+ /**
260
+ * Build schemas respecting tiers and user disabled tools.
261
+ *
262
+ * Only "core" and "standard" (non-disabled) tools are included in the
263
+ * initial payload. External / MCP tools must be discovered via tools.search.
264
+ */
265
+ export declare function buildTieredToolSchemas(registry: ToolRegistry, disabledTools?: Set<string>): OpenAIToolSchema[];
266
+ /**
267
+ * Convert individual tool definitions into OpenAI schemas.
268
+ * Used to dynamically inject schemas discovered via tools.search.
269
+ */
270
+ export declare function toolDefsToSchemas(defs: Array<{
271
+ name: string;
272
+ description: string;
273
+ parameters: unknown;
274
+ }>): OpenAIToolSchema[];
275
+ interface ParsedStream {
276
+ contentText: string;
277
+ toolCalls: OpenAIToolCall[];
278
+ finishReason: string | null;
279
+ }
280
+ export declare function parseOpenAIStream(reader: ReadableStreamDefaultReader<Uint8Array>, onEvent?: (event: AgentLoopEvent) => void): Promise<ParsedStream>;
281
+ export type ToolExecutor = (name: string, args: unknown, sessionId: string, auth?: {
282
+ userId?: string;
283
+ apiKeys?: Record<string, string>;
284
+ }, onChunk?: (chunk: string) => void, signal?: AbortSignal) => Promise<ToolResult>;
285
+ export declare function runAgentLoop(options: AgentLoopOptions, executeTool: ToolExecutor, steering?: SteeringController): Promise<AgentLoopResult>;
286
+ /**
287
+ * Retry a specific failed tool call by its callId.
288
+ *
289
+ * This re-executes the tool with its original arguments, updates the
290
+ * conversation history in-place (replaces the old tool result message),
291
+ * and returns the new result.
292
+ *
293
+ * Designed to be called from a REST endpoint like:
294
+ * POST /api/sessions/:sessionId/retry-tool
295
+ * { callId: "call_abc123" }
296
+ */
297
+ export declare function retryToolCall(callId: string, history: AgentMessage[], executedToolCalls: ExecutedToolCall[], executeTool: ToolExecutor, sessionId: string, auth?: {
298
+ userId?: string;
299
+ apiKeys?: Record<string, string>;
300
+ }, onEvent?: (event: AgentLoopEvent) => void, signal?: AbortSignal): Promise<ToolResult>;
301
+ export {};
302
+ //# sourceMappingURL=agent-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/tools/agent-loop.ts"],"names":[],"mappings":"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"}