@qodo/sdk 0.13.4 → 2.0.0-next.1

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 (764) hide show
  1. package/LICENSE +31 -118
  2. package/README.md +133 -121
  3. package/bin/qodo-skills.mjs +13 -0
  4. package/bundled-skills/code-review/SKILL.md +41 -0
  5. package/bundled-skills/pr-summary/SKILL.md +59 -0
  6. package/bundled-skills/test-gen/SKILL.md +47 -0
  7. package/dist/auth/index.browser.d.ts +38 -0
  8. package/dist/auth/index.browser.d.ts.map +1 -0
  9. package/dist/auth/index.browser.js +62 -0
  10. package/dist/auth/index.browser.js.map +1 -0
  11. package/dist/auth/index.d.ts +44 -30
  12. package/dist/auth/index.d.ts.map +1 -1
  13. package/dist/auth/index.js +57 -110
  14. package/dist/auth/index.js.map +1 -1
  15. package/dist/client/AgentsClient.d.ts +33 -0
  16. package/dist/client/AgentsClient.d.ts.map +1 -0
  17. package/dist/client/AgentsClient.js +40 -0
  18. package/dist/client/AgentsClient.js.map +1 -0
  19. package/dist/client/ArtifactsClient.d.ts +43 -0
  20. package/dist/client/ArtifactsClient.d.ts.map +1 -0
  21. package/dist/client/ArtifactsClient.js +54 -0
  22. package/dist/client/ArtifactsClient.js.map +1 -0
  23. package/dist/client/BulletinClient.d.ts +45 -0
  24. package/dist/client/BulletinClient.d.ts.map +1 -0
  25. package/dist/client/BulletinClient.js +51 -0
  26. package/dist/client/BulletinClient.js.map +1 -0
  27. package/dist/client/InfoClient.d.ts +58 -0
  28. package/dist/client/InfoClient.d.ts.map +1 -0
  29. package/dist/client/InfoClient.js +135 -0
  30. package/dist/client/InfoClient.js.map +1 -0
  31. package/dist/client/PipelineClient.d.ts +162 -0
  32. package/dist/client/PipelineClient.d.ts.map +1 -0
  33. package/dist/client/PipelineClient.js +340 -0
  34. package/dist/client/PipelineClient.js.map +1 -0
  35. package/dist/client/QarRegistryClient.d.ts +396 -0
  36. package/dist/client/QarRegistryClient.d.ts.map +1 -0
  37. package/dist/client/QarRegistryClient.js +536 -0
  38. package/dist/client/QarRegistryClient.js.map +1 -0
  39. package/dist/client/QodoClient.d.ts +296 -0
  40. package/dist/client/QodoClient.d.ts.map +1 -0
  41. package/dist/client/QodoClient.js +803 -0
  42. package/dist/client/QodoClient.js.map +1 -0
  43. package/dist/client/SpecsClient.d.ts +121 -0
  44. package/dist/client/SpecsClient.d.ts.map +1 -0
  45. package/dist/client/SpecsClient.js +252 -0
  46. package/dist/client/SpecsClient.js.map +1 -0
  47. package/dist/client/StateClient.d.ts +35 -0
  48. package/dist/client/StateClient.d.ts.map +1 -0
  49. package/dist/client/StateClient.js +36 -0
  50. package/dist/client/StateClient.js.map +1 -0
  51. package/dist/client/TaskClient.d.ts +706 -0
  52. package/dist/client/TaskClient.d.ts.map +1 -0
  53. package/dist/client/TaskClient.js +2522 -0
  54. package/dist/client/TaskClient.js.map +1 -0
  55. package/dist/client/ToolClient.d.ts +278 -0
  56. package/dist/client/ToolClient.d.ts.map +1 -0
  57. package/dist/client/ToolClient.js +1139 -0
  58. package/dist/client/ToolClient.js.map +1 -0
  59. package/dist/client/a2a/index.d.ts +10 -0
  60. package/dist/client/a2a/index.d.ts.map +1 -0
  61. package/dist/client/a2a/index.js +9 -0
  62. package/dist/client/a2a/index.js.map +1 -0
  63. package/dist/client/a2a/registerA2A.d.ts +170 -0
  64. package/dist/client/a2a/registerA2A.d.ts.map +1 -0
  65. package/dist/client/a2a/registerA2A.js +85 -0
  66. package/dist/client/a2a/registerA2A.js.map +1 -0
  67. package/dist/client/connection.d.ts +893 -0
  68. package/dist/client/connection.d.ts.map +1 -0
  69. package/dist/client/connection.js +2189 -0
  70. package/dist/client/connection.js.map +1 -0
  71. package/dist/client/errors.d.ts +735 -0
  72. package/dist/client/errors.d.ts.map +1 -0
  73. package/dist/client/errors.js +921 -0
  74. package/dist/client/errors.js.map +1 -0
  75. package/dist/client/index.d.ts +26 -0
  76. package/dist/client/index.d.ts.map +1 -0
  77. package/dist/client/index.js +20 -0
  78. package/dist/client/index.js.map +1 -0
  79. package/dist/client/inlineGraph.d.ts +66 -0
  80. package/dist/client/inlineGraph.d.ts.map +1 -0
  81. package/dist/client/inlineGraph.js +500 -0
  82. package/dist/client/inlineGraph.js.map +1 -0
  83. package/dist/client/internal/thenable.d.ts +27 -0
  84. package/dist/client/internal/thenable.d.ts.map +1 -0
  85. package/dist/client/internal/thenable.js +31 -0
  86. package/dist/client/internal/thenable.js.map +1 -0
  87. package/dist/client/iterator.d.ts +32 -0
  88. package/dist/client/iterator.d.ts.map +1 -0
  89. package/dist/client/iterator.js +73 -0
  90. package/dist/client/iterator.js.map +1 -0
  91. package/dist/client/mcp/McpClientPool.browser.d.ts +76 -0
  92. package/dist/client/mcp/McpClientPool.browser.d.ts.map +1 -0
  93. package/dist/client/mcp/McpClientPool.browser.js +78 -0
  94. package/dist/client/mcp/McpClientPool.browser.js.map +1 -0
  95. package/dist/client/mcp/McpClientPool.d.ts +236 -0
  96. package/dist/client/mcp/McpClientPool.d.ts.map +1 -0
  97. package/dist/client/mcp/McpClientPool.js +585 -0
  98. package/dist/client/mcp/McpClientPool.js.map +1 -0
  99. package/dist/client/mcp/projection.d.ts +109 -0
  100. package/dist/client/mcp/projection.d.ts.map +1 -0
  101. package/dist/client/mcp/projection.js +446 -0
  102. package/dist/client/mcp/projection.js.map +1 -0
  103. package/dist/client/mcp/substituteEnv.browser.d.ts +18 -0
  104. package/dist/client/mcp/substituteEnv.browser.d.ts.map +1 -0
  105. package/dist/client/mcp/substituteEnv.browser.js +20 -0
  106. package/dist/client/mcp/substituteEnv.browser.js.map +1 -0
  107. package/dist/client/mcp/substituteEnv.d.ts +45 -0
  108. package/dist/client/mcp/substituteEnv.d.ts.map +1 -0
  109. package/dist/client/mcp/substituteEnv.js +63 -0
  110. package/dist/client/mcp/substituteEnv.js.map +1 -0
  111. package/dist/client/observers.d.ts +57 -0
  112. package/dist/client/observers.d.ts.map +1 -0
  113. package/dist/client/observers.js +203 -0
  114. package/dist/client/observers.js.map +1 -0
  115. package/dist/client/options.d.ts +269 -0
  116. package/dist/client/options.d.ts.map +1 -0
  117. package/dist/client/options.js +9 -0
  118. package/dist/client/options.js.map +1 -0
  119. package/dist/client/tools/_readlineApprovalPrompt.browser.d.ts +17 -0
  120. package/dist/client/tools/_readlineApprovalPrompt.browser.d.ts.map +1 -0
  121. package/dist/client/tools/_readlineApprovalPrompt.browser.js +24 -0
  122. package/dist/client/tools/_readlineApprovalPrompt.browser.js.map +1 -0
  123. package/dist/client/tools/_readlineApprovalPrompt.d.ts +33 -0
  124. package/dist/client/tools/_readlineApprovalPrompt.d.ts.map +1 -0
  125. package/dist/client/tools/_readlineApprovalPrompt.js +90 -0
  126. package/dist/client/tools/_readlineApprovalPrompt.js.map +1 -0
  127. package/dist/client/tools/approval.d.ts +280 -0
  128. package/dist/client/tools/approval.d.ts.map +1 -0
  129. package/dist/client/tools/approval.js +229 -0
  130. package/dist/client/tools/approval.js.map +1 -0
  131. package/dist/client/tools/bindFunctionToolDefs.d.ts +156 -0
  132. package/dist/client/tools/bindFunctionToolDefs.d.ts.map +1 -0
  133. package/dist/client/tools/bindFunctionToolDefs.js +360 -0
  134. package/dist/client/tools/bindFunctionToolDefs.js.map +1 -0
  135. package/dist/client/tools/defineFunctionTool.d.ts +277 -0
  136. package/dist/client/tools/defineFunctionTool.d.ts.map +1 -0
  137. package/dist/client/tools/defineFunctionTool.js +190 -0
  138. package/dist/client/tools/defineFunctionTool.js.map +1 -0
  139. package/dist/client/transport.browser.d.ts +20 -0
  140. package/dist/client/transport.browser.d.ts.map +1 -0
  141. package/dist/client/transport.browser.js +29 -0
  142. package/dist/client/transport.browser.js.map +1 -0
  143. package/dist/client/transport.d.ts +47 -0
  144. package/dist/client/transport.d.ts.map +1 -0
  145. package/dist/client/transport.js +102 -0
  146. package/dist/client/transport.js.map +1 -0
  147. package/dist/client/transport.shared.d.ts +30 -0
  148. package/dist/client/transport.shared.d.ts.map +1 -0
  149. package/dist/client/transport.shared.js +40 -0
  150. package/dist/client/transport.shared.js.map +1 -0
  151. package/dist/client/uuid.d.ts +32 -0
  152. package/dist/client/uuid.d.ts.map +1 -0
  153. package/dist/client/uuid.js +65 -0
  154. package/dist/client/uuid.js.map +1 -0
  155. package/dist/index.d.ts +88 -39
  156. package/dist/index.d.ts.map +1 -1
  157. package/dist/index.js +166 -43
  158. package/dist/index.js.map +1 -1
  159. package/dist/observability/attributes.d.ts +136 -0
  160. package/dist/observability/attributes.d.ts.map +1 -0
  161. package/dist/observability/attributes.js +184 -0
  162. package/dist/observability/attributes.js.map +1 -0
  163. package/dist/observability/index.d.ts +14 -0
  164. package/dist/observability/index.d.ts.map +1 -0
  165. package/dist/observability/index.js +11 -0
  166. package/dist/observability/index.js.map +1 -0
  167. package/dist/observability/resolveOTel.browser.d.ts +13 -0
  168. package/dist/observability/resolveOTel.browser.d.ts.map +1 -0
  169. package/dist/observability/resolveOTel.browser.js +14 -0
  170. package/dist/observability/resolveOTel.browser.js.map +1 -0
  171. package/dist/observability/resolveOTel.d.ts +28 -0
  172. package/dist/observability/resolveOTel.d.ts.map +1 -0
  173. package/dist/observability/resolveOTel.js +74 -0
  174. package/dist/observability/resolveOTel.js.map +1 -0
  175. package/dist/observability/spans.d.ts +198 -0
  176. package/dist/observability/spans.d.ts.map +1 -0
  177. package/dist/observability/spans.js +300 -0
  178. package/dist/observability/spans.js.map +1 -0
  179. package/dist/observability/traceContext.d.ts +51 -0
  180. package/dist/observability/traceContext.d.ts.map +1 -0
  181. package/dist/observability/traceContext.js +151 -0
  182. package/dist/observability/traceContext.js.map +1 -0
  183. package/dist/observability/transportMetrics.d.ts +58 -0
  184. package/dist/observability/transportMetrics.d.ts.map +1 -0
  185. package/dist/observability/transportMetrics.js +55 -0
  186. package/dist/observability/transportMetrics.js.map +1 -0
  187. package/dist/qar/agentSpec.d.ts +93 -0
  188. package/dist/qar/agentSpec.d.ts.map +1 -0
  189. package/dist/qar/agentSpec.js +184 -0
  190. package/dist/qar/agentSpec.js.map +1 -0
  191. package/dist/qar/clientEvents.d.ts +86 -0
  192. package/dist/qar/clientEvents.d.ts.map +1 -0
  193. package/dist/qar/clientEvents.js +36 -0
  194. package/dist/qar/clientEvents.js.map +1 -0
  195. package/dist/qar/envelopes.d.ts +227 -0
  196. package/dist/qar/envelopes.d.ts.map +1 -0
  197. package/dist/qar/envelopes.js +67 -0
  198. package/dist/qar/envelopes.js.map +1 -0
  199. package/dist/qar/generated/envelope.d.ts +332 -0
  200. package/dist/qar/generated/envelope.d.ts.map +1 -0
  201. package/dist/qar/generated/envelope.js +15 -0
  202. package/dist/qar/generated/envelope.js.map +1 -0
  203. package/dist/qar/generated/qar-info.d.ts +76 -0
  204. package/dist/qar/generated/qar-info.d.ts.map +1 -0
  205. package/dist/qar/generated/qar-info.js +15 -0
  206. package/dist/qar/generated/qar-info.js.map +1 -0
  207. package/dist/qar/generated/qodo-task-start-payload.d.ts +54 -0
  208. package/dist/qar/generated/qodo-task-start-payload.d.ts.map +1 -0
  209. package/dist/qar/generated/qodo-task-start-payload.js +15 -0
  210. package/dist/qar/generated/qodo-task-start-payload.js.map +1 -0
  211. package/dist/qar/ids.d.ts +19 -0
  212. package/dist/qar/ids.d.ts.map +1 -0
  213. package/dist/qar/ids.js +11 -0
  214. package/dist/qar/ids.js.map +1 -0
  215. package/dist/qar/index.d.ts +24 -0
  216. package/dist/qar/index.d.ts.map +1 -0
  217. package/dist/qar/index.js +16 -0
  218. package/dist/qar/index.js.map +1 -0
  219. package/dist/qar/info.d.ts +37 -0
  220. package/dist/qar/info.d.ts.map +1 -0
  221. package/dist/qar/info.js +17 -0
  222. package/dist/qar/info.js.map +1 -0
  223. package/dist/qar/json.d.ts +14 -0
  224. package/dist/qar/json.d.ts.map +1 -0
  225. package/dist/qar/json.js +9 -0
  226. package/dist/qar/json.js.map +1 -0
  227. package/dist/qar/payloads.d.ts +480 -0
  228. package/dist/qar/payloads.d.ts.map +1 -0
  229. package/dist/qar/payloads.js +37 -0
  230. package/dist/qar/payloads.js.map +1 -0
  231. package/dist/qar/specs.d.ts +604 -0
  232. package/dist/qar/specs.d.ts.map +1 -0
  233. package/dist/qar/specs.js +29 -0
  234. package/dist/qar/specs.js.map +1 -0
  235. package/dist/qar/taskEvents.d.ts +25 -0
  236. package/dist/qar/taskEvents.d.ts.map +1 -0
  237. package/dist/qar/taskEvents.js +22 -0
  238. package/dist/qar/taskEvents.js.map +1 -0
  239. package/dist/qar/trace.d.ts +12 -0
  240. package/dist/qar/trace.d.ts.map +1 -0
  241. package/dist/qar/trace.js +12 -0
  242. package/dist/qar/trace.js.map +1 -0
  243. package/dist/skills/activation.d.ts +177 -0
  244. package/dist/skills/activation.d.ts.map +1 -0
  245. package/dist/skills/activation.js +428 -0
  246. package/dist/skills/activation.js.map +1 -0
  247. package/dist/skills/cli/index.browser.d.ts +18 -0
  248. package/dist/skills/cli/index.browser.d.ts.map +1 -0
  249. package/dist/skills/cli/index.browser.js +27 -0
  250. package/dist/skills/cli/index.browser.js.map +1 -0
  251. package/dist/skills/cli/index.d.ts +37 -0
  252. package/dist/skills/cli/index.d.ts.map +1 -0
  253. package/dist/skills/cli/index.js +494 -0
  254. package/dist/skills/cli/index.js.map +1 -0
  255. package/dist/skills/events.d.ts +255 -0
  256. package/dist/skills/events.d.ts.map +1 -0
  257. package/dist/skills/events.js +224 -0
  258. package/dist/skills/events.js.map +1 -0
  259. package/dist/skills/index.d.ts +45 -0
  260. package/dist/skills/index.d.ts.map +1 -0
  261. package/dist/skills/index.js +34 -0
  262. package/dist/skills/index.js.map +1 -0
  263. package/dist/skills/inject.d.ts +57 -0
  264. package/dist/skills/inject.d.ts.map +1 -0
  265. package/dist/skills/inject.js +162 -0
  266. package/dist/skills/inject.js.map +1 -0
  267. package/dist/skills/lockfile.browser.d.ts +56 -0
  268. package/dist/skills/lockfile.browser.d.ts.map +1 -0
  269. package/dist/skills/lockfile.browser.js +55 -0
  270. package/dist/skills/lockfile.browser.js.map +1 -0
  271. package/dist/skills/lockfile.d.ts +137 -0
  272. package/dist/skills/lockfile.d.ts.map +1 -0
  273. package/dist/skills/lockfile.js +423 -0
  274. package/dist/skills/lockfile.js.map +1 -0
  275. package/dist/skills/manager.browser.d.ts +94 -0
  276. package/dist/skills/manager.browser.d.ts.map +1 -0
  277. package/dist/skills/manager.browser.js +159 -0
  278. package/dist/skills/manager.browser.js.map +1 -0
  279. package/dist/skills/manager.d.ts +362 -0
  280. package/dist/skills/manager.d.ts.map +1 -0
  281. package/dist/skills/manager.js +1386 -0
  282. package/dist/skills/manager.js.map +1 -0
  283. package/dist/skills/mcp/index.d.ts +15 -0
  284. package/dist/skills/mcp/index.d.ts.map +1 -0
  285. package/dist/skills/mcp/index.js +12 -0
  286. package/dist/skills/mcp/index.js.map +1 -0
  287. package/dist/skills/mcp/path.browser.d.ts +27 -0
  288. package/dist/skills/mcp/path.browser.d.ts.map +1 -0
  289. package/dist/skills/mcp/path.browser.js +33 -0
  290. package/dist/skills/mcp/path.browser.js.map +1 -0
  291. package/dist/skills/mcp/path.d.ts +57 -0
  292. package/dist/skills/mcp/path.d.ts.map +1 -0
  293. package/dist/skills/mcp/path.js +150 -0
  294. package/dist/skills/mcp/path.js.map +1 -0
  295. package/dist/skills/mcp/server.browser.d.ts +32 -0
  296. package/dist/skills/mcp/server.browser.d.ts.map +1 -0
  297. package/dist/skills/mcp/server.browser.js +53 -0
  298. package/dist/skills/mcp/server.browser.js.map +1 -0
  299. package/dist/skills/mcp/server.d.ts +144 -0
  300. package/dist/skills/mcp/server.d.ts.map +1 -0
  301. package/dist/skills/mcp/server.js +841 -0
  302. package/dist/skills/mcp/server.js.map +1 -0
  303. package/dist/skills/mcp/types.d.ts +72 -0
  304. package/dist/skills/mcp/types.d.ts.map +1 -0
  305. package/dist/skills/mcp/types.js +20 -0
  306. package/dist/skills/mcp/types.js.map +1 -0
  307. package/dist/skills/mcp/wireDefs.d.ts +58 -0
  308. package/dist/skills/mcp/wireDefs.d.ts.map +1 -0
  309. package/dist/skills/mcp/wireDefs.js +141 -0
  310. package/dist/skills/mcp/wireDefs.js.map +1 -0
  311. package/dist/skills/parser.d.ts +63 -0
  312. package/dist/skills/parser.d.ts.map +1 -0
  313. package/dist/skills/parser.js +755 -0
  314. package/dist/skills/parser.js.map +1 -0
  315. package/dist/skills/prefilter.d.ts +104 -0
  316. package/dist/skills/prefilter.d.ts.map +1 -0
  317. package/dist/skills/prefilter.js +398 -0
  318. package/dist/skills/prefilter.js.map +1 -0
  319. package/dist/skills/preprocess.d.ts +169 -0
  320. package/dist/skills/preprocess.d.ts.map +1 -0
  321. package/dist/skills/preprocess.js +535 -0
  322. package/dist/skills/preprocess.js.map +1 -0
  323. package/dist/skills/render.d.ts +83 -0
  324. package/dist/skills/render.d.ts.map +1 -0
  325. package/dist/skills/render.js +397 -0
  326. package/dist/skills/render.js.map +1 -0
  327. package/dist/skills/sources/index.browser.d.ts +29 -0
  328. package/dist/skills/sources/index.browser.d.ts.map +1 -0
  329. package/dist/skills/sources/index.browser.js +16 -0
  330. package/dist/skills/sources/index.browser.js.map +1 -0
  331. package/dist/skills/sources/index.d.ts +59 -0
  332. package/dist/skills/sources/index.d.ts.map +1 -0
  333. package/dist/skills/sources/index.js +471 -0
  334. package/dist/skills/sources/index.js.map +1 -0
  335. package/dist/skills/sources/walk.browser.d.ts +17 -0
  336. package/dist/skills/sources/walk.browser.d.ts.map +1 -0
  337. package/dist/skills/sources/walk.browser.js +19 -0
  338. package/dist/skills/sources/walk.browser.js.map +1 -0
  339. package/dist/skills/sources/walk.d.ts +68 -0
  340. package/dist/skills/sources/walk.d.ts.map +1 -0
  341. package/dist/skills/sources/walk.js +264 -0
  342. package/dist/skills/sources/walk.js.map +1 -0
  343. package/dist/skills/substitute.d.ts +87 -0
  344. package/dist/skills/substitute.d.ts.map +1 -0
  345. package/dist/skills/substitute.js +322 -0
  346. package/dist/skills/substitute.js.map +1 -0
  347. package/dist/skills/testing/SkillKit.browser.d.ts +62 -0
  348. package/dist/skills/testing/SkillKit.browser.d.ts.map +1 -0
  349. package/dist/skills/testing/SkillKit.browser.js +41 -0
  350. package/dist/skills/testing/SkillKit.browser.js.map +1 -0
  351. package/dist/skills/testing/SkillKit.d.ts +130 -0
  352. package/dist/skills/testing/SkillKit.d.ts.map +1 -0
  353. package/dist/skills/testing/SkillKit.js +316 -0
  354. package/dist/skills/testing/SkillKit.js.map +1 -0
  355. package/dist/skills/testing/index.d.ts +9 -0
  356. package/dist/skills/testing/index.d.ts.map +1 -0
  357. package/dist/skills/testing/index.js +8 -0
  358. package/dist/skills/testing/index.js.map +1 -0
  359. package/dist/skills/trust.d.ts +72 -0
  360. package/dist/skills/trust.d.ts.map +1 -0
  361. package/dist/skills/trust.js +183 -0
  362. package/dist/skills/trust.js.map +1 -0
  363. package/dist/skills/types.d.ts +627 -0
  364. package/dist/skills/types.d.ts.map +1 -0
  365. package/dist/skills/types.js +85 -0
  366. package/dist/skills/types.js.map +1 -0
  367. package/dist/skills/validator.d.ts +95 -0
  368. package/dist/skills/validator.d.ts.map +1 -0
  369. package/dist/skills/validator.js +486 -0
  370. package/dist/skills/validator.js.map +1 -0
  371. package/dist/tracing/PipelineTracer.d.ts +35 -22
  372. package/dist/tracing/PipelineTracer.d.ts.map +1 -1
  373. package/dist/tracing/PipelineTracer.js +106 -61
  374. package/dist/tracing/PipelineTracer.js.map +1 -1
  375. package/dist/tracing/SdkTracer.d.ts +63 -61
  376. package/dist/tracing/SdkTracer.d.ts.map +1 -1
  377. package/dist/tracing/SdkTracer.js +185 -177
  378. package/dist/tracing/SdkTracer.js.map +1 -1
  379. package/dist/tracing/index.d.ts +10 -1
  380. package/dist/tracing/index.d.ts.map +1 -1
  381. package/dist/tracing/index.js +9 -0
  382. package/dist/tracing/index.js.map +1 -1
  383. package/dist/tracing/types.d.ts +89 -16
  384. package/dist/tracing/types.d.ts.map +1 -1
  385. package/dist/tracing/types.js +17 -4
  386. package/dist/tracing/types.js.map +1 -1
  387. package/dist/types.d.ts +6 -1
  388. package/dist/types.d.ts.map +1 -1
  389. package/dist/types.js +4 -0
  390. package/dist/types.js.map +1 -1
  391. package/dist/version.d.ts.map +1 -1
  392. package/dist/version.js +10 -20
  393. package/dist/version.js.map +1 -1
  394. package/package.json +53 -39
  395. package/.claude/skills/qodo-agent/SKILL.md +0 -974
  396. package/.claude/skills/qodo-agent/assets/programmatic-agent.ts +0 -407
  397. package/.claude/skills/qodo-agent/references/builtin-tools.md +0 -342
  398. package/.claude/skills/qodo-agent/references/common-issues.md +0 -537
  399. package/bin/rg +0 -0
  400. package/dist/api/agent.d.ts +0 -105
  401. package/dist/api/agent.d.ts.map +0 -1
  402. package/dist/api/agent.js +0 -963
  403. package/dist/api/agent.js.map +0 -1
  404. package/dist/api/analytics.d.ts +0 -43
  405. package/dist/api/analytics.d.ts.map +0 -1
  406. package/dist/api/analytics.js +0 -163
  407. package/dist/api/analytics.js.map +0 -1
  408. package/dist/api/http.d.ts +0 -5
  409. package/dist/api/http.d.ts.map +0 -1
  410. package/dist/api/http.js +0 -62
  411. package/dist/api/http.js.map +0 -1
  412. package/dist/api/index.d.ts +0 -12
  413. package/dist/api/index.d.ts.map +0 -1
  414. package/dist/api/index.js +0 -17
  415. package/dist/api/index.js.map +0 -1
  416. package/dist/api/taskTracking.d.ts +0 -54
  417. package/dist/api/taskTracking.d.ts.map +0 -1
  418. package/dist/api/taskTracking.js +0 -208
  419. package/dist/api/taskTracking.js.map +0 -1
  420. package/dist/api/types.d.ts +0 -93
  421. package/dist/api/types.d.ts.map +0 -1
  422. package/dist/api/types.js +0 -2
  423. package/dist/api/types.js.map +0 -1
  424. package/dist/api/utils.d.ts +0 -8
  425. package/dist/api/utils.d.ts.map +0 -1
  426. package/dist/api/utils.js +0 -63
  427. package/dist/api/utils.js.map +0 -1
  428. package/dist/api/websocket.d.ts +0 -203
  429. package/dist/api/websocket.d.ts.map +0 -1
  430. package/dist/api/websocket.js +0 -1166
  431. package/dist/api/websocket.js.map +0 -1
  432. package/dist/bin/install-skill.d.ts +0 -14
  433. package/dist/bin/install-skill.d.ts.map +0 -1
  434. package/dist/bin/install-skill.js +0 -125
  435. package/dist/bin/install-skill.js.map +0 -1
  436. package/dist/bin/run-helpers.d.ts +0 -34
  437. package/dist/bin/run-helpers.d.ts.map +0 -1
  438. package/dist/bin/run-helpers.js +0 -186
  439. package/dist/bin/run-helpers.js.map +0 -1
  440. package/dist/bin/run.d.ts +0 -13
  441. package/dist/bin/run.d.ts.map +0 -1
  442. package/dist/bin/run.js +0 -57
  443. package/dist/bin/run.js.map +0 -1
  444. package/dist/clients/index.d.ts +0 -10
  445. package/dist/clients/index.d.ts.map +0 -1
  446. package/dist/clients/index.js +0 -8
  447. package/dist/clients/index.js.map +0 -1
  448. package/dist/clients/info/InfoClient.d.ts +0 -37
  449. package/dist/clients/info/InfoClient.d.ts.map +0 -1
  450. package/dist/clients/info/InfoClient.js +0 -69
  451. package/dist/clients/info/InfoClient.js.map +0 -1
  452. package/dist/clients/info/index.d.ts +0 -4
  453. package/dist/clients/info/index.d.ts.map +0 -1
  454. package/dist/clients/info/index.js +0 -2
  455. package/dist/clients/info/index.js.map +0 -1
  456. package/dist/clients/info/types.d.ts +0 -21
  457. package/dist/clients/info/types.d.ts.map +0 -1
  458. package/dist/clients/info/types.js +0 -2
  459. package/dist/clients/info/types.js.map +0 -1
  460. package/dist/clients/sessions/SessionsClient.d.ts +0 -34
  461. package/dist/clients/sessions/SessionsClient.d.ts.map +0 -1
  462. package/dist/clients/sessions/SessionsClient.js +0 -71
  463. package/dist/clients/sessions/SessionsClient.js.map +0 -1
  464. package/dist/clients/sessions/index.d.ts +0 -4
  465. package/dist/clients/sessions/index.d.ts.map +0 -1
  466. package/dist/clients/sessions/index.js +0 -2
  467. package/dist/clients/sessions/index.js.map +0 -1
  468. package/dist/clients/sessions/types.d.ts +0 -20
  469. package/dist/clients/sessions/types.d.ts.map +0 -1
  470. package/dist/clients/sessions/types.js +0 -2
  471. package/dist/clients/sessions/types.js.map +0 -1
  472. package/dist/clients/tools/ToolsClient.d.ts +0 -39
  473. package/dist/clients/tools/ToolsClient.d.ts.map +0 -1
  474. package/dist/clients/tools/ToolsClient.js +0 -95
  475. package/dist/clients/tools/ToolsClient.js.map +0 -1
  476. package/dist/clients/tools/index.d.ts +0 -4
  477. package/dist/clients/tools/index.d.ts.map +0 -1
  478. package/dist/clients/tools/index.js +0 -2
  479. package/dist/clients/tools/index.js.map +0 -1
  480. package/dist/clients/tools/types.d.ts +0 -14
  481. package/dist/clients/tools/types.d.ts.map +0 -1
  482. package/dist/clients/tools/types.js +0 -2
  483. package/dist/clients/tools/types.js.map +0 -1
  484. package/dist/config/ConfigManager.d.ts +0 -43
  485. package/dist/config/ConfigManager.d.ts.map +0 -1
  486. package/dist/config/ConfigManager.js +0 -472
  487. package/dist/config/ConfigManager.js.map +0 -1
  488. package/dist/config/index.d.ts +0 -6
  489. package/dist/config/index.d.ts.map +0 -1
  490. package/dist/config/index.js +0 -7
  491. package/dist/config/index.js.map +0 -1
  492. package/dist/config/urlConfig.d.ts +0 -15
  493. package/dist/config/urlConfig.d.ts.map +0 -1
  494. package/dist/config/urlConfig.js +0 -75
  495. package/dist/config/urlConfig.js.map +0 -1
  496. package/dist/constants/errors.d.ts +0 -2
  497. package/dist/constants/errors.d.ts.map +0 -1
  498. package/dist/constants/errors.js +0 -2
  499. package/dist/constants/errors.js.map +0 -1
  500. package/dist/constants/index.d.ts +0 -7
  501. package/dist/constants/index.d.ts.map +0 -1
  502. package/dist/constants/index.js +0 -11
  503. package/dist/constants/index.js.map +0 -1
  504. package/dist/constants/tools.d.ts +0 -4
  505. package/dist/constants/tools.d.ts.map +0 -1
  506. package/dist/constants/tools.js +0 -4
  507. package/dist/constants/tools.js.map +0 -1
  508. package/dist/constants/versions.d.ts +0 -2
  509. package/dist/constants/versions.d.ts.map +0 -1
  510. package/dist/constants/versions.js +0 -2
  511. package/dist/constants/versions.js.map +0 -1
  512. package/dist/context/buildUserContext.d.ts +0 -18
  513. package/dist/context/buildUserContext.d.ts.map +0 -1
  514. package/dist/context/buildUserContext.js +0 -34
  515. package/dist/context/buildUserContext.js.map +0 -1
  516. package/dist/context/index.d.ts +0 -9
  517. package/dist/context/index.d.ts.map +0 -1
  518. package/dist/context/index.js +0 -9
  519. package/dist/context/index.js.map +0 -1
  520. package/dist/context/messageManager.d.ts +0 -42
  521. package/dist/context/messageManager.d.ts.map +0 -1
  522. package/dist/context/messageManager.js +0 -322
  523. package/dist/context/messageManager.js.map +0 -1
  524. package/dist/context/taskFocus.d.ts +0 -2
  525. package/dist/context/taskFocus.d.ts.map +0 -1
  526. package/dist/context/taskFocus.js +0 -26
  527. package/dist/context/taskFocus.js.map +0 -1
  528. package/dist/context/userInput.d.ts +0 -3
  529. package/dist/context/userInput.d.ts.map +0 -1
  530. package/dist/context/userInput.js +0 -20
  531. package/dist/context/userInput.js.map +0 -1
  532. package/dist/mcp/MCPManager.d.ts +0 -109
  533. package/dist/mcp/MCPManager.d.ts.map +0 -1
  534. package/dist/mcp/MCPManager.js +0 -592
  535. package/dist/mcp/MCPManager.js.map +0 -1
  536. package/dist/mcp/approvedTools.d.ts +0 -4
  537. package/dist/mcp/approvedTools.d.ts.map +0 -1
  538. package/dist/mcp/approvedTools.js +0 -19
  539. package/dist/mcp/approvedTools.js.map +0 -1
  540. package/dist/mcp/baseServer.d.ts +0 -75
  541. package/dist/mcp/baseServer.d.ts.map +0 -1
  542. package/dist/mcp/baseServer.js +0 -107
  543. package/dist/mcp/baseServer.js.map +0 -1
  544. package/dist/mcp/builtinServers.d.ts +0 -15
  545. package/dist/mcp/builtinServers.d.ts.map +0 -1
  546. package/dist/mcp/builtinServers.js +0 -141
  547. package/dist/mcp/builtinServers.js.map +0 -1
  548. package/dist/mcp/dynamicBEServer.d.ts +0 -20
  549. package/dist/mcp/dynamicBEServer.d.ts.map +0 -1
  550. package/dist/mcp/dynamicBEServer.js +0 -52
  551. package/dist/mcp/dynamicBEServer.js.map +0 -1
  552. package/dist/mcp/index.d.ts +0 -18
  553. package/dist/mcp/index.d.ts.map +0 -1
  554. package/dist/mcp/index.js +0 -23
  555. package/dist/mcp/index.js.map +0 -1
  556. package/dist/mcp/mcpInitialization.d.ts +0 -2
  557. package/dist/mcp/mcpInitialization.d.ts.map +0 -1
  558. package/dist/mcp/mcpInitialization.js +0 -56
  559. package/dist/mcp/mcpInitialization.js.map +0 -1
  560. package/dist/mcp/servers/filesystem.d.ts +0 -44
  561. package/dist/mcp/servers/filesystem.d.ts.map +0 -1
  562. package/dist/mcp/servers/filesystem.js +0 -776
  563. package/dist/mcp/servers/filesystem.js.map +0 -1
  564. package/dist/mcp/servers/git.d.ts +0 -18
  565. package/dist/mcp/servers/git.d.ts.map +0 -1
  566. package/dist/mcp/servers/git.js +0 -441
  567. package/dist/mcp/servers/git.js.map +0 -1
  568. package/dist/mcp/servers/ripgrep.d.ts +0 -39
  569. package/dist/mcp/servers/ripgrep.d.ts.map +0 -1
  570. package/dist/mcp/servers/ripgrep.js +0 -550
  571. package/dist/mcp/servers/ripgrep.js.map +0 -1
  572. package/dist/mcp/servers/shell.d.ts +0 -20
  573. package/dist/mcp/servers/shell.d.ts.map +0 -1
  574. package/dist/mcp/servers/shell.js +0 -519
  575. package/dist/mcp/servers/shell.js.map +0 -1
  576. package/dist/mcp/serversRegistry.d.ts +0 -55
  577. package/dist/mcp/serversRegistry.d.ts.map +0 -1
  578. package/dist/mcp/serversRegistry.js +0 -416
  579. package/dist/mcp/serversRegistry.js.map +0 -1
  580. package/dist/mcp/toolProcessor.d.ts +0 -82
  581. package/dist/mcp/toolProcessor.d.ts.map +0 -1
  582. package/dist/mcp/toolProcessor.js +0 -392
  583. package/dist/mcp/toolProcessor.js.map +0 -1
  584. package/dist/mcp/types.d.ts +0 -29
  585. package/dist/mcp/types.d.ts.map +0 -1
  586. package/dist/mcp/types.js +0 -2
  587. package/dist/mcp/types.js.map +0 -1
  588. package/dist/messages/index.d.ts +0 -8
  589. package/dist/messages/index.d.ts.map +0 -1
  590. package/dist/messages/index.js +0 -7
  591. package/dist/messages/index.js.map +0 -1
  592. package/dist/messages/openai.d.ts +0 -26
  593. package/dist/messages/openai.d.ts.map +0 -1
  594. package/dist/messages/openai.js +0 -55
  595. package/dist/messages/openai.js.map +0 -1
  596. package/dist/messages/types.d.ts +0 -73
  597. package/dist/messages/types.d.ts.map +0 -1
  598. package/dist/messages/types.js +0 -78
  599. package/dist/messages/types.js.map +0 -1
  600. package/dist/parser/index.d.ts +0 -72
  601. package/dist/parser/index.d.ts.map +0 -1
  602. package/dist/parser/index.js +0 -967
  603. package/dist/parser/index.js.map +0 -1
  604. package/dist/parser/types.d.ts +0 -153
  605. package/dist/parser/types.d.ts.map +0 -1
  606. package/dist/parser/types.js +0 -6
  607. package/dist/parser/types.js.map +0 -1
  608. package/dist/parser/utils.d.ts +0 -18
  609. package/dist/parser/utils.d.ts.map +0 -1
  610. package/dist/parser/utils.js +0 -64
  611. package/dist/parser/utils.js.map +0 -1
  612. package/dist/sdk/QodoSDK.d.ts +0 -218
  613. package/dist/sdk/QodoSDK.d.ts.map +0 -1
  614. package/dist/sdk/QodoSDK.js +0 -1115
  615. package/dist/sdk/QodoSDK.js.map +0 -1
  616. package/dist/sdk/artifacts.d.ts +0 -156
  617. package/dist/sdk/artifacts.d.ts.map +0 -1
  618. package/dist/sdk/artifacts.js +0 -166
  619. package/dist/sdk/artifacts.js.map +0 -1
  620. package/dist/sdk/bootstrap.d.ts +0 -16
  621. package/dist/sdk/bootstrap.d.ts.map +0 -1
  622. package/dist/sdk/bootstrap.js +0 -28
  623. package/dist/sdk/bootstrap.js.map +0 -1
  624. package/dist/sdk/builders.d.ts +0 -54
  625. package/dist/sdk/builders.d.ts.map +0 -1
  626. package/dist/sdk/builders.js +0 -117
  627. package/dist/sdk/builders.js.map +0 -1
  628. package/dist/sdk/defaults.d.ts +0 -11
  629. package/dist/sdk/defaults.d.ts.map +0 -1
  630. package/dist/sdk/defaults.js +0 -39
  631. package/dist/sdk/defaults.js.map +0 -1
  632. package/dist/sdk/discovery.d.ts +0 -2
  633. package/dist/sdk/discovery.d.ts.map +0 -1
  634. package/dist/sdk/discovery.js +0 -25
  635. package/dist/sdk/discovery.js.map +0 -1
  636. package/dist/sdk/events.d.ts +0 -269
  637. package/dist/sdk/events.d.ts.map +0 -1
  638. package/dist/sdk/events.js +0 -69
  639. package/dist/sdk/events.js.map +0 -1
  640. package/dist/sdk/exit-expression.d.ts +0 -13
  641. package/dist/sdk/exit-expression.d.ts.map +0 -1
  642. package/dist/sdk/exit-expression.js +0 -35
  643. package/dist/sdk/exit-expression.js.map +0 -1
  644. package/dist/sdk/index.d.ts +0 -17
  645. package/dist/sdk/index.d.ts.map +0 -1
  646. package/dist/sdk/index.js +0 -17
  647. package/dist/sdk/index.js.map +0 -1
  648. package/dist/sdk/middleware.d.ts +0 -59
  649. package/dist/sdk/middleware.d.ts.map +0 -1
  650. package/dist/sdk/middleware.js +0 -69
  651. package/dist/sdk/middleware.js.map +0 -1
  652. package/dist/sdk/pipeline/PipelineBuilder.d.ts +0 -79
  653. package/dist/sdk/pipeline/PipelineBuilder.d.ts.map +0 -1
  654. package/dist/sdk/pipeline/PipelineBuilder.js +0 -129
  655. package/dist/sdk/pipeline/PipelineBuilder.js.map +0 -1
  656. package/dist/sdk/pipeline/PipelineRunner.d.ts +0 -28
  657. package/dist/sdk/pipeline/PipelineRunner.d.ts.map +0 -1
  658. package/dist/sdk/pipeline/PipelineRunner.js +0 -326
  659. package/dist/sdk/pipeline/PipelineRunner.js.map +0 -1
  660. package/dist/sdk/pipeline/compiler.d.ts +0 -24
  661. package/dist/sdk/pipeline/compiler.d.ts.map +0 -1
  662. package/dist/sdk/pipeline/compiler.js +0 -199
  663. package/dist/sdk/pipeline/compiler.js.map +0 -1
  664. package/dist/sdk/pipeline/declarative.d.ts +0 -34
  665. package/dist/sdk/pipeline/declarative.d.ts.map +0 -1
  666. package/dist/sdk/pipeline/declarative.js +0 -9
  667. package/dist/sdk/pipeline/declarative.js.map +0 -1
  668. package/dist/sdk/pipeline/index.d.ts +0 -20
  669. package/dist/sdk/pipeline/index.d.ts.map +0 -1
  670. package/dist/sdk/pipeline/index.js +0 -19
  671. package/dist/sdk/pipeline/index.js.map +0 -1
  672. package/dist/sdk/pipeline/types.d.ts +0 -93
  673. package/dist/sdk/pipeline/types.d.ts.map +0 -1
  674. package/dist/sdk/pipeline/types.js +0 -10
  675. package/dist/sdk/pipeline/types.js.map +0 -1
  676. package/dist/sdk/policies.d.ts +0 -163
  677. package/dist/sdk/policies.d.ts.map +0 -1
  678. package/dist/sdk/policies.js +0 -243
  679. package/dist/sdk/policies.js.map +0 -1
  680. package/dist/sdk/runner/AgentRunner.d.ts +0 -22
  681. package/dist/sdk/runner/AgentRunner.d.ts.map +0 -1
  682. package/dist/sdk/runner/AgentRunner.js +0 -222
  683. package/dist/sdk/runner/AgentRunner.js.map +0 -1
  684. package/dist/sdk/runner/finalize.d.ts +0 -56
  685. package/dist/sdk/runner/finalize.d.ts.map +0 -1
  686. package/dist/sdk/runner/finalize.js +0 -155
  687. package/dist/sdk/runner/finalize.js.map +0 -1
  688. package/dist/sdk/runner/formats.d.ts +0 -7
  689. package/dist/sdk/runner/formats.d.ts.map +0 -1
  690. package/dist/sdk/runner/formats.js +0 -76
  691. package/dist/sdk/runner/formats.js.map +0 -1
  692. package/dist/sdk/runner/index.d.ts +0 -9
  693. package/dist/sdk/runner/index.d.ts.map +0 -1
  694. package/dist/sdk/runner/index.js +0 -9
  695. package/dist/sdk/runner/index.js.map +0 -1
  696. package/dist/sdk/runner/progress.d.ts +0 -3
  697. package/dist/sdk/runner/progress.d.ts.map +0 -1
  698. package/dist/sdk/runner/progress.js +0 -16
  699. package/dist/sdk/runner/progress.js.map +0 -1
  700. package/dist/sdk/schemas.d.ts +0 -72
  701. package/dist/sdk/schemas.d.ts.map +0 -1
  702. package/dist/sdk/schemas.js +0 -282
  703. package/dist/sdk/schemas.js.map +0 -1
  704. package/dist/sdk/trigger-context.d.ts +0 -24
  705. package/dist/sdk/trigger-context.d.ts.map +0 -1
  706. package/dist/sdk/trigger-context.js +0 -136
  707. package/dist/sdk/trigger-context.js.map +0 -1
  708. package/dist/session/SessionContext.d.ts +0 -89
  709. package/dist/session/SessionContext.d.ts.map +0 -1
  710. package/dist/session/SessionContext.js +0 -410
  711. package/dist/session/SessionContext.js.map +0 -1
  712. package/dist/session/environment.d.ts +0 -52
  713. package/dist/session/environment.d.ts.map +0 -1
  714. package/dist/session/environment.js +0 -27
  715. package/dist/session/environment.js.map +0 -1
  716. package/dist/session/history.d.ts +0 -18
  717. package/dist/session/history.d.ts.map +0 -1
  718. package/dist/session/history.js +0 -68
  719. package/dist/session/history.js.map +0 -1
  720. package/dist/session/index.d.ts +0 -10
  721. package/dist/session/index.d.ts.map +0 -1
  722. package/dist/session/index.js +0 -9
  723. package/dist/session/index.js.map +0 -1
  724. package/dist/session/serverData.d.ts +0 -38
  725. package/dist/session/serverData.d.ts.map +0 -1
  726. package/dist/session/serverData.js +0 -261
  727. package/dist/session/serverData.js.map +0 -1
  728. package/dist/tracing/pipelineHelpers.d.ts +0 -29
  729. package/dist/tracing/pipelineHelpers.d.ts.map +0 -1
  730. package/dist/tracing/pipelineHelpers.js +0 -224
  731. package/dist/tracing/pipelineHelpers.js.map +0 -1
  732. package/dist/tracking/Tracker.d.ts +0 -55
  733. package/dist/tracking/Tracker.d.ts.map +0 -1
  734. package/dist/tracking/Tracker.js +0 -217
  735. package/dist/tracking/Tracker.js.map +0 -1
  736. package/dist/tracking/index.d.ts +0 -8
  737. package/dist/tracking/index.d.ts.map +0 -1
  738. package/dist/tracking/index.js +0 -8
  739. package/dist/tracking/index.js.map +0 -1
  740. package/dist/tracking/schemas.d.ts +0 -292
  741. package/dist/tracking/schemas.d.ts.map +0 -1
  742. package/dist/tracking/schemas.js +0 -91
  743. package/dist/tracking/schemas.js.map +0 -1
  744. package/dist/utils/extractSetFlags.d.ts +0 -6
  745. package/dist/utils/extractSetFlags.d.ts.map +0 -1
  746. package/dist/utils/extractSetFlags.js +0 -16
  747. package/dist/utils/extractSetFlags.js.map +0 -1
  748. package/dist/utils/formatTimeAgo.d.ts +0 -2
  749. package/dist/utils/formatTimeAgo.d.ts.map +0 -1
  750. package/dist/utils/formatTimeAgo.js +0 -20
  751. package/dist/utils/formatTimeAgo.js.map +0 -1
  752. package/dist/utils/index.d.ts +0 -12
  753. package/dist/utils/index.d.ts.map +0 -1
  754. package/dist/utils/index.js +0 -12
  755. package/dist/utils/index.js.map +0 -1
  756. package/dist/utils/machineId.d.ts +0 -14
  757. package/dist/utils/machineId.d.ts.map +0 -1
  758. package/dist/utils/machineId.js +0 -66
  759. package/dist/utils/machineId.js.map +0 -1
  760. package/dist/utils/pathUtils.d.ts +0 -22
  761. package/dist/utils/pathUtils.d.ts.map +0 -1
  762. package/dist/utils/pathUtils.js +0 -54
  763. package/dist/utils/pathUtils.js.map +0 -1
  764. package/scripts/download-ripgrep.js +0 -269
@@ -1,974 +0,0 @@
1
- ---
2
- name: qodo-agent
3
- description: Development companion for building AI-powered agents with @qodo/sdk. Use when working with QodoSDK, sdkAgent(), sdkCommand(), agent.toml, or any Qodo agent development tasks.
4
- compatibility: Requires Node.js >= 18, npm, and zod package for schema definitions.
5
- metadata:
6
- author: qodo
7
- version: "1.0"
8
- ---
9
-
10
- # Qodo SDK Development Companion
11
-
12
- Use this skill when working with `@qodo/sdk` to build AI-powered agents. This skill helps you:
13
-
14
- - **Create** agent configurations (TypeScript and TOML)
15
- - **Scaffold** Zod schemas with proper patterns and descriptions
16
- - **Extend** existing agents with new commands, tools, and capabilities
17
- - **Debug** streaming events, schema validation, and tool execution issues
18
- - **Refactor** between config formats and improve type safety
19
-
20
- ## Quick Reference
21
-
22
- ### Core Exports
23
-
24
- | Export | Purpose |
25
- |--------|---------|
26
- | `QodoSDK` | Main SDK class - initialize and run agents |
27
- | `sdkAgent()` | Build agent config programmatically |
28
- | `sdkCommand()` | Build command config with Zod schemas |
29
- | `sdkArgs()` | Convenience wrapper for `z.object()` |
30
-
31
- ### Schema Helpers
32
-
33
- | Export | Purpose |
34
- |--------|---------|
35
- | `zodOutputSchema()` | Convert Zod to JSON Schema for output |
36
- | `zJsonValue()` | Flexible primitive type (string \| number \| boolean \| null) |
37
- | `zJsonAny()` | Flexible any type (primitives + arrays + objects) |
38
- | `zCoerce` | CLI-style input coercion (boolean, number, jsonArray, jsonObject) |
39
- | `parseArgsWithSchema()` | Validate args with Zod, get typed result |
40
- | `QodoSchemaError` | Schema validation error class |
41
-
42
- ### Pipeline DSL
43
-
44
- | Export | Purpose |
45
- |--------|---------|
46
- | `sdkPipeline()` | Build multi-step agent workflows |
47
- | `runPipeline()` | Execute a pipeline with an SDK instance |
48
- | `PipelineExecutionError` | Pipeline step failure error |
49
- | `.step()` | Add a sequential step with typed state threading |
50
- | `.parallel()` | Add a group of steps that execute concurrently |
51
- | `.gate()` | Pipeline-level barrier — halts subsequent entries when false |
52
- | `.branch()` | Pipeline-level if/else fork with sub-pipeline paths |
53
-
54
- ### Tool Middleware
55
-
56
- | Export | Purpose |
57
- |--------|---------|
58
- | `ToolMiddleware` (type) | Pre/post execution hook interface |
59
- | `ToolMiddlewareError` | Middleware failure error |
60
- | `MIDDLEWARE_TIMEOUT_MS` | Default hook timeout (10s) |
61
- | `PROTECTED_TOOL_FIELDS` | Fields middleware cannot overwrite |
62
-
63
- ### Tool Approval Policies
64
-
65
- | Export | Purpose |
66
- |--------|---------|
67
- | `sdkPolicy()` | Fluent builder for declarative tool approval rules |
68
- | `policyFromRules()` | Build a policy from a rule array |
69
- | `globMatch()` | Glob pattern matching utility |
70
-
71
- ### Artifacts
72
-
73
- | Export | Purpose |
74
- |--------|---------|
75
- | `ArtifactStore` | Store/persist intermediate pipeline results |
76
- | `withArtifacts()` | Wrap a pipeline step to auto-store output |
77
- | `jsonSerializer` | Default JSON serializer |
78
-
79
- ### OpenTelemetry Tracing
80
-
81
- | Export | Purpose |
82
- |--------|---------|
83
- | `createSdkTracer()` | Create event-to-span tracer (duck-typed OTel API) |
84
- | `tracePipeline()` | Trace pipeline execution with nested spans |
85
- | `SdkTracer` | Tracer class for manual usage |
86
-
87
- ### Event Handling
88
-
89
- | Export | Purpose |
90
- |--------|---------|
91
- | `SdkEventType` | Event type constants (Init, MessageDelta, Final, etc.) |
92
- | `matchSdkEvent()` | Type-safe event router |
93
-
94
- ### Clients
95
-
96
- | Export | Purpose |
97
- |--------|---------|
98
- | `QodoInfoClient` | Backend info (models, capabilities, rate limits) |
99
- | `QodoSessionsClient` | Session history management |
100
- | `QodoToolsClient` | Tool discovery (built-in + backend tools) |
101
-
102
- ### Errors
103
-
104
- | Export | Purpose |
105
- |--------|---------|
106
- | `QodoSchemaError` | Schema validation failures |
107
- | `QodoAuthError` | Authentication failures |
108
- | `QodoBackendBootstrapError` | Backend initialization failures |
109
- | `QodoOutputValidationError` | Structured output didn't match Zod schema |
110
- | `ToolMiddlewareError` | Tool middleware hook failure |
111
- | `PipelineExecutionError` | Pipeline step failure |
112
-
113
- ### Built-in Tools
114
-
115
- Use these in `available_tools` to give your agent capabilities:
116
-
117
- | Tool | Purpose | Common Use Cases |
118
- |------|---------|------------------|
119
- | `filesystem` | File operations | Read/write files, navigate directories, edit code |
120
- | `git` | Version control | Check status, view diffs, commit changes |
121
- | `ripgrep` | Code search | Find patterns, locate definitions, search codebase |
122
- | `shell` | Run commands | Build tools, scripts, system commands |
123
-
124
- **Example:**
125
- ```typescript
126
- sdkCommand({
127
- name: 'analyze',
128
- available_tools: ['filesystem', 'ripgrep'], // Read files + search
129
- // ...
130
- });
131
- ```
132
-
133
- **Common Combinations:**
134
- - **Code analysis**: `['filesystem', 'ripgrep']`
135
- - **Code review**: `['git', 'filesystem']`
136
- - **Full development**: `['filesystem', 'git', 'ripgrep', 'shell']`
137
-
138
- See [references/builtin-tools.md](references/builtin-tools.md) for detailed documentation on each tool.
139
-
140
- ---
141
-
142
- ## Critical Rules
143
-
144
- ### For SDK Users (Building Apps)
145
-
146
- 1. **Every output property needs `.describe()`**
147
- ```typescript
148
- // WRONG - will throw QodoSchemaError
149
- const output = z.object({
150
- summary: z.string(),
151
- score: z.number(),
152
- });
153
-
154
- // CORRECT
155
- const output = z.object({
156
- summary: z.string().describe('Brief summary of the analysis'),
157
- score: z.number().describe('Quality score from 0-100'),
158
- });
159
- ```
160
-
161
- 2. **Never use `z.any()` in output schemas**
162
- ```typescript
163
- // WRONG - produces invalid JSON Schema
164
- const output = z.object({
165
- data: z.any().describe('The data'),
166
- });
167
-
168
- // CORRECT - use zJsonValue() or zJsonAny()
169
- import { zJsonValue, zJsonAny } from '@qodo/sdk';
170
-
171
- const output = z.object({
172
- // For primitives only:
173
- value: zJsonValue().describe('A primitive value'),
174
- // For any JSON (including objects/arrays):
175
- data: zJsonAny().describe('Any JSON data'),
176
- });
177
- ```
178
-
179
- 3. **Always call `sdk.dispose()`**
180
- ```typescript
181
- const sdk = new QodoSDK({ ... });
182
- try {
183
- const result = await sdk.run('analyze', { args: { path: './src' } });
184
- console.log(result.structured_output);
185
- } finally {
186
- await sdk.dispose(); // Cleanup MCP servers and connections
187
- }
188
- ```
189
-
190
- 4. **Handle errors appropriately**
191
- ```typescript
192
- import { QodoSchemaError, QodoAuthError } from '@qodo/sdk';
193
-
194
- try {
195
- const result = await sdk.run('analyze');
196
- } catch (e) {
197
- if (e instanceof QodoSchemaError) {
198
- console.error('Schema validation failed:', e.message);
199
- } else if (e instanceof QodoAuthError) {
200
- console.error('Authentication failed:', e.message);
201
- } else {
202
- throw e;
203
- }
204
- }
205
- ```
206
-
207
- ### For SDK Contributors (Modifying @qodo/sdk)
208
-
209
- 1. **Never use `process.exit()`** - throw errors instead (library code)
210
- 2. **Use `.js` extensions** in imports - ESM requirement
211
- 3. **Export types separately** - TypeScript best practice
212
-
213
- ---
214
-
215
- ## Usage Patterns
216
-
217
- ### Pattern 1: Simple Prompt (No Config)
218
-
219
- ```typescript
220
- import { QodoSDK } from '@qodo/sdk';
221
-
222
- const sdk = new QodoSDK();
223
- try {
224
- const result = await sdk.prompt('Explain how async/await works in JavaScript');
225
- console.log(result.final_output);
226
- } finally {
227
- await sdk.dispose();
228
- }
229
- ```
230
-
231
- ### Pattern 2: Programmatic Agent with Zod
232
-
233
- ```typescript
234
- import { QodoSDK, sdkAgent, sdkCommand, sdkArgs, z } from '@qodo/sdk';
235
- // Note: Import `z` from '@qodo/sdk' for guaranteed compatibility with SDK schema functions
236
- // Alternatively, Zod 3 users can use: import { z } from 'zod';
237
- // Zod 4 users should use: import { z } from 'zod/v3';
238
-
239
- const agent = sdkAgent({
240
- instructions: 'You are a code analysis assistant.',
241
- commands: {
242
- analyze: sdkCommand({
243
- name: 'analyze',
244
- description: 'Analyze code quality',
245
- instructions: 'Analyze the code and provide a quality assessment.',
246
- available_tools: ['filesystem', 'ripgrep'],
247
- args: sdkArgs({
248
- path: z.string().describe('Path to analyze'),
249
- depth: z.number().optional().default(3).describe('Max directory depth'),
250
- }),
251
- output: z.object({
252
- summary: z.string().describe('Overall assessment'),
253
- issues: z.array(z.object({
254
- file: z.string().describe('File path'),
255
- line: z.number().describe('Line number'),
256
- severity: z.enum(['low', 'medium', 'high']).describe('Issue severity'),
257
- message: z.string().describe('Issue description'),
258
- })).describe('List of issues found'),
259
- score: z.number().describe('Quality score 0-100'),
260
- }),
261
- }),
262
- },
263
- });
264
-
265
- const sdk = QodoSDK.fromAgent(agent);
266
- try {
267
- const result = await sdk.run('analyze', {
268
- args: { path: './src', depth: 5 },
269
- });
270
- console.log('Score:', result.structured_output?.score);
271
- console.log('Issues:', result.structured_output?.issues);
272
- } finally {
273
- await sdk.dispose();
274
- }
275
- ```
276
-
277
- ### Pattern 3: TOML Configuration
278
-
279
- Create `agent.toml`:
280
- ```toml
281
- version = "1.0"
282
- instructions = "You are a helpful coding assistant."
283
-
284
- [commands.review]
285
- name = "review"
286
- description = "Review code changes"
287
- instructions = "Review the provided code changes and suggest improvements."
288
- available_tools = ["filesystem", "git", "ripgrep"]
289
-
290
- [commands.review.output_schema]
291
- type = "json_schema"
292
-
293
- [commands.review.output_schema.json_schema]
294
- name = "review_output"
295
- strict = true
296
-
297
- [commands.review.output_schema.json_schema.schema]
298
- type = "object"
299
- required = ["summary", "suggestions"]
300
-
301
- [commands.review.output_schema.json_schema.schema.properties.summary]
302
- type = "string"
303
- description = "Overall review summary"
304
-
305
- [commands.review.output_schema.json_schema.schema.properties.suggestions]
306
- type = "array"
307
- description = "List of improvement suggestions"
308
-
309
- [commands.review.output_schema.json_schema.schema.properties.suggestions.items]
310
- type = "object"
311
- required = ["file", "suggestion"]
312
-
313
- [commands.review.output_schema.json_schema.schema.properties.suggestions.items.properties.file]
314
- type = "string"
315
- description = "File path"
316
-
317
- [commands.review.output_schema.json_schema.schema.properties.suggestions.items.properties.suggestion]
318
- type = "string"
319
- description = "The suggestion"
320
- ```
321
-
322
- Then use it:
323
- ```typescript
324
- import { QodoSDK } from '@qodo/sdk';
325
-
326
- const sdk = new QodoSDK({
327
- agentFile: './agent.toml',
328
- });
329
- try {
330
- const result = await sdk.run('review');
331
- console.log(result.structured_output);
332
- } finally {
333
- await sdk.dispose();
334
- }
335
- ```
336
-
337
- ### Pattern 4: Streaming Events
338
-
339
- ```typescript
340
- import { QodoSDK, SdkEventType, matchSdkEvent } from '@qodo/sdk';
341
-
342
- const sdk = new QodoSDK();
343
- try {
344
- for await (const event of sdk.streamPrompt('Write a haiku about coding')) {
345
- matchSdkEvent(event, {
346
- [SdkEventType.MessageDelta]: (e) => {
347
- process.stdout.write(e.data.delta);
348
- },
349
- [SdkEventType.ToolRequested]: (e) => {
350
- console.log(`\nTool: ${e.data.server_name}.${e.data.tool_name}`);
351
- },
352
- [SdkEventType.ToolExecuted]: (e) => {
353
- console.log(`Tool result: ${e.data.result.isError ? 'error' : 'success'}`);
354
- },
355
- [SdkEventType.Error]: (e) => {
356
- console.error('Error:', e.data.message);
357
- },
358
- [SdkEventType.Final]: (e) => {
359
- console.log('\n\nDone! Success:', e.data.success);
360
- },
361
- default: () => {}, // Ignore other events
362
- });
363
- }
364
- } finally {
365
- await sdk.dispose();
366
- }
367
- ```
368
-
369
- ### Pattern 5: Custom Tool Approval
370
-
371
- ```typescript
372
- import { QodoSDK } from '@qodo/sdk';
373
- import * as readline from 'readline';
374
-
375
- const sdk = new QodoSDK({
376
- autoApproveTools: false,
377
- toolApproval: async ({ tool_name, server_name, tool_args }) => {
378
- const rl = readline.createInterface({
379
- input: process.stdin,
380
- output: process.stdout,
381
- });
382
-
383
- return new Promise((resolve) => {
384
- rl.question(
385
- `Allow ${server_name}.${tool_name}(${JSON.stringify(tool_args)})? [y/N] `,
386
- (answer) => {
387
- rl.close();
388
- resolve(answer.toLowerCase() === 'y');
389
- }
390
- );
391
- });
392
- },
393
- });
394
-
395
- try {
396
- const result = await sdk.prompt('List files in current directory');
397
- console.log(result.final_output);
398
- } finally {
399
- await sdk.dispose();
400
- }
401
- ```
402
-
403
- ### Pattern 6: Session Continuity
404
-
405
- ```typescript
406
- import { QodoSDK } from '@qodo/sdk';
407
-
408
- // First conversation
409
- const sdk1 = new QodoSDK();
410
- let sessionId: string;
411
-
412
- try {
413
- for await (const event of sdk1.streamPrompt('Remember: my favorite color is blue')) {
414
- if (event.type === 'sdk.run.started') {
415
- sessionId = event.data.session_id;
416
- }
417
- }
418
- } finally {
419
- await sdk1.dispose();
420
- }
421
-
422
- // Continue the conversation
423
- const sdk2 = new QodoSDK().withSession(sessionId!);
424
- try {
425
- const result = await sdk2.prompt('What is my favorite color?');
426
- console.log(result.final_output); // Should mention "blue"
427
- } finally {
428
- await sdk2.dispose();
429
- }
430
- ```
431
-
432
- ### Pattern 7: Multi-Agent Orchestration
433
-
434
- ```typescript
435
- import { QodoSDK, sdkAgent, sdkCommand, sdkArgs, z } from '@qodo/sdk';
436
-
437
- // Agent 1: Code analyzer
438
- const analyzerAgent = sdkAgent({
439
- instructions: 'You analyze code and identify issues.',
440
- commands: {
441
- analyze: sdkCommand({
442
- name: 'analyze',
443
- description: 'Analyze code',
444
- available_tools: ['filesystem', 'ripgrep'],
445
- output: z.object({
446
- issues: z.array(z.string().describe('Issue description')).describe('Issues found'),
447
- }),
448
- }),
449
- },
450
- });
451
-
452
- // Agent 2: Code fixer
453
- const fixerAgent = sdkAgent({
454
- instructions: 'You fix code issues.',
455
- commands: {
456
- fix: sdkCommand({
457
- name: 'fix',
458
- description: 'Fix code issues',
459
- available_tools: ['filesystem'],
460
- args: sdkArgs({
461
- issues: z.array(z.string()).describe('Issues to fix'),
462
- }),
463
- output: z.object({
464
- fixed: z.array(z.string().describe('Fixed issue')).describe('Issues that were fixed'),
465
- }),
466
- }),
467
- },
468
- });
469
-
470
- // Orchestrate
471
- const analyzer = QodoSDK.fromAgent(analyzerAgent);
472
- const fixer = QodoSDK.fromAgent(fixerAgent);
473
-
474
- try {
475
- // Step 1: Analyze
476
- const analysis = await analyzer.run('analyze');
477
- const issues = analysis.structured_output?.issues || [];
478
-
479
- // Step 2: Fix
480
- if (issues.length > 0) {
481
- const fixes = await fixer.run('fix', { args: { issues } });
482
- console.log('Fixed:', fixes.structured_output?.fixed);
483
- }
484
- } finally {
485
- await Promise.all([analyzer.dispose(), fixer.dispose()]);
486
- }
487
- ```
488
-
489
- ### Pattern 8: Pipeline DSL (Multi-Step Workflows)
490
-
491
- ```typescript
492
- import { QodoSDK, sdkPipeline, runPipeline } from '@qodo/sdk';
493
-
494
- const sdk = new QodoSDK({ autoApproveTools: true });
495
-
496
- const pipeline = sdkPipeline<{ repo: string }>()
497
- .step('lint', async ({ state, run }) => {
498
- const r = await run('lint', { args: { path: state.repo } });
499
- return { lintOutput: r.result.final_output };
500
- })
501
- // Gate: only continue review if lint produced output
502
- .gate((state) => !!state.lintOutput)
503
- .step('review', async ({ state, run }) => {
504
- const r = await run('review', {
505
- extraInstructions: `Lint results:\n${state.lintOutput}`,
506
- });
507
- return { reviewOutput: r.result.final_output };
508
- })
509
- .build();
510
-
511
- const result = await runPipeline(sdk, pipeline, { repo: './src' });
512
- console.log(result.state.reviewOutput);
513
- console.log(result.steps); // Step logs with timing
514
-
515
- await sdk.dispose();
516
- ```
517
-
518
- Features: typed state threading, `.parallel([...])`, `.gate()` (pipeline barriers), `.branch()` (if/else forks), error strategies (`'skip'`, `'throw'`, custom recovery).
519
-
520
- ### Pattern 8b: Pipeline Branches
521
-
522
- ```typescript
523
- import { QodoSDK, sdkPipeline, runPipeline } from '@qodo/sdk';
524
-
525
- const sdk = new QodoSDK({ autoApproveTools: true });
526
-
527
- const pipeline = sdkPipeline<{ fileCount: number }>()
528
- .branch(
529
- (state) => state.fileCount > 20,
530
- {
531
- true: (b) => b.step('deep', async ({ run }) => {
532
- const r = await run('analyze-deep');
533
- return { analysis: r.result.final_output };
534
- }),
535
- false: (b) => b.step('quick', async ({ run }) => {
536
- const r = await run('summarize');
537
- return { analysis: r.result.final_output };
538
- }),
539
- },
540
- { name: 'size-check' },
541
- )
542
- .step('report', async ({ state }) => ({
543
- report: `${state.fileCount} files: ${state.analysis}`,
544
- }))
545
- .build();
546
-
547
- await sdk.dispose();
548
- ```
549
-
550
- ### Pattern 9: Dry Run Mode
551
-
552
- ```typescript
553
- import { QodoSDK } from '@qodo/sdk';
554
-
555
- const sdk = new QodoSDK({ autoApproveTools: true });
556
-
557
- // Preview what the agent would do without executing tools
558
- const result = await sdk.run('review', {
559
- args: { path: './src' },
560
- dryRun: true,
561
- });
562
-
563
- console.log(result.result.final_output); // Agent describes planned actions
564
- console.log(result.meta.dry_run); // true
565
-
566
- await sdk.dispose();
567
- ```
568
-
569
- ### Pattern 10: Tool Middleware (Auditing & Control)
570
-
571
- ```typescript
572
- import { QodoSDK, type ToolMiddleware } from '@qodo/sdk';
573
-
574
- const auditLogger: ToolMiddleware = {
575
- name: 'audit-logger',
576
- preExecute(toolData) {
577
- console.log(`[AUDIT] ${toolData.server_name}.${toolData.tool_name}`);
578
- },
579
- postExecute(toolData, result) {
580
- console.log(`[AUDIT] Result: ${result.isError ? 'ERROR' : 'OK'}`);
581
- },
582
- };
583
-
584
- const readOnly: ToolMiddleware = {
585
- name: 'read-only',
586
- preExecute(toolData) {
587
- if (['write_file', 'edit_file', 'delete_files'].includes(toolData.tool_name)) {
588
- throw new Error(`Blocked: ${toolData.tool_name}`);
589
- }
590
- },
591
- };
592
-
593
- const sdk = new QodoSDK({
594
- autoApproveTools: true,
595
- toolMiddleware: [auditLogger, readOnly],
596
- });
597
- ```
598
-
599
- ### Pattern 11: Tool Approval Policy DSL
600
-
601
- ```typescript
602
- import { QodoSDK, sdkPolicy } from '@qodo/sdk';
603
-
604
- const policy = sdkPolicy()
605
- .approve({ tools: ['read_*', 'list_*', 'git_status', 'git_log'] }, 'allow-reads')
606
- .deny({ servers: ['shell'] }, 'block-shell')
607
- .deny({ tools: ['write_file', 'edit_file', 'delete_files'] }, 'block-writes')
608
- .requireHuman({ tools: ['git_commit'] }, 'review-commits')
609
- .default('deny')
610
- .build();
611
-
612
- const sdk = new QodoSDK({
613
- autoApproveTools: false,
614
- toolApproval: policy.evaluate,
615
- });
616
-
617
- // Inspect policy decisions:
618
- const result = policy.evaluateDetailed({
619
- tool_name: 'read_files', server_name: 'filesystem', tool_args: {},
620
- });
621
- console.log(result.decision, result.matchedRule?.name); // 'approve', 'allow-reads'
622
- ```
623
-
624
- ### Pattern 12: Execution Timeouts and Retries
625
-
626
- ```typescript
627
- import { QodoSDK } from '@qodo/sdk';
628
-
629
- const sdk = new QodoSDK({ autoApproveTools: true });
630
-
631
- const result = await sdk.run('review', {
632
- args: { path: './src' },
633
- timeout: 30000, // 30 second limit per attempt
634
- maxRetries: 2, // Retry up to 2 times on failure
635
- });
636
-
637
- if (result.meta.timed_out) {
638
- console.warn('Run timed out');
639
- }
640
-
641
- await sdk.dispose();
642
- ```
643
-
644
- ### Pattern 13: Artifacts (Pipeline Intermediate Results)
645
-
646
- ```typescript
647
- import { QodoSDK, sdkPipeline, runPipeline, ArtifactStore, withArtifacts } from '@qodo/sdk';
648
- import fs from 'fs/promises';
649
-
650
- const store = new ArtifactStore({
651
- onPersist: async (artifact) => {
652
- await fs.writeFile(`./out/${artifact.stepName}.json`, artifact.serialized);
653
- },
654
- });
655
-
656
- const pipeline = sdkPipeline<{ repo: string }>()
657
- .step('lint', withArtifacts(store, async ({ state, run }) => {
658
- const r = await run('lint', { args: { path: state.repo } });
659
- return { lintOutput: r.result.final_output };
660
- }))
661
- .build();
662
-
663
- const result = await runPipeline(sdk, pipeline, { repo: './src' });
664
- console.log(store.all()); // All artifacts
665
- console.log(store.getErrors()); // Persistence failures (non-fatal)
666
- ```
667
-
668
- ### Pattern 14: OpenTelemetry Tracing
669
-
670
- ```typescript
671
- import * as otel from '@opentelemetry/api';
672
- import { QodoSDK, createSdkTracer, SdkEventType, matchSdkEvent } from '@qodo/sdk';
673
-
674
- const sdk = new QodoSDK({ autoApproveTools: true });
675
- const tracer = createSdkTracer(otel, { tracerName: 'my-service' });
676
-
677
- // Events flow through unchanged, spans created automatically
678
- for await (const ev of tracer.wrapStream(sdk.stream('review'))) {
679
- matchSdkEvent(ev, {
680
- [SdkEventType.MessageDelta]: (e) => process.stdout.write(e.data.delta),
681
- [SdkEventType.Final]: (e) => console.log('Done:', e.data.success),
682
- default: () => {},
683
- });
684
- }
685
-
686
- tracer.flush();
687
- await sdk.dispose();
688
- ```
689
-
690
- No compile-time OTel dependency — install `@opentelemetry/api` as optional peer dep.
691
-
692
- ### Pattern 15: Backend Info Client (Standalone)
693
-
694
- ```typescript
695
- import { QodoInfoClient } from '@qodo/sdk';
696
-
697
- // Standalone — no run/stream needed
698
- const info = new QodoInfoClient();
699
- const things = await info.getThings();
700
- console.log(things.available_models); // ['gpt-4', 'gpt-4o', ...]
701
- console.log(things.default_model); // 'gpt-4o'
702
- console.log(things.session_id); // new backend session ID
703
- console.log(things.rate_limit); // { remaining, reset, limit }
704
-
705
- // Convenience
706
- const models = await info.getAvailableModels();
707
-
708
- // Via SDK instance
709
- const sdk = new QodoSDK();
710
- const defaultModel = await sdk.info.getDefaultModel();
711
- ```
712
-
713
- ### Pattern 16: Tool Discovery Client (Standalone)
714
-
715
- ```typescript
716
- import { QodoToolsClient } from '@qodo/sdk';
717
-
718
- // Standalone — no run/stream needed
719
- const client = new QodoToolsClient();
720
-
721
- // List all tools (built-in + backend)
722
- const tools = await client.getTools();
723
- for (const tool of tools) {
724
- console.log(`${tool.server}.${tool.name} (${tool.serverType})`);
725
- // e.g. "filesystem.read_files (builtin)"
726
- // e.g. "sequential_thinking.sequential_thinking (backend)"
727
- }
728
-
729
- // Group by server
730
- const byServer = await client.getToolsByServer();
731
- console.log(Object.keys(byServer));
732
- // ['filesystem', 'git', 'ripgrep', 'shell', 'sequential_thinking', ...]
733
-
734
- // Filter by type
735
- const backendOnly = tools.filter(t => t.serverType === 'backend');
736
- const builtinOnly = tools.filter(t => t.serverType === 'builtin');
737
-
738
- // Via SDK instance
739
- const sdk = new QodoSDK();
740
- const allTools = await sdk.tools.getTools();
741
- ```
742
-
743
- ---
744
-
745
- ## Zod Schema Patterns
746
-
747
- ### Basic Types with Descriptions
748
-
749
- ```typescript
750
- import { z } from '@qodo/sdk'; // Recommended for type compatibility
751
-
752
- const output = z.object({
753
- // Primitives
754
- name: z.string().describe('The name'),
755
- count: z.number().describe('Total count'),
756
- enabled: z.boolean().describe('Whether enabled'),
757
-
758
- // Optional fields
759
- notes: z.string().optional().describe('Optional notes'),
760
-
761
- // With defaults
762
- priority: z.number().default(5).describe('Priority level 1-10'),
763
-
764
- // Enums
765
- status: z.enum(['pending', 'done', 'failed']).describe('Current status'),
766
-
767
- // Arrays
768
- tags: z.array(z.string().describe('Tag name')).describe('List of tags'),
769
-
770
- // Nested objects
771
- metadata: z.object({
772
- created: z.string().describe('Creation date'),
773
- author: z.string().describe('Author name'),
774
- }).describe('Metadata information'),
775
- });
776
- ```
777
-
778
- ### Flexible Types with zJsonValue and zJsonAny
779
-
780
- ```typescript
781
- import { z, zJsonValue, zJsonAny } from '@qodo/sdk';
782
-
783
- const output = z.object({
784
- // When you need a primitive but don't know which type
785
- // Allows: string | number | boolean | null
786
- dynamicValue: zJsonValue().describe('A dynamic primitive value'),
787
-
788
- // When you need truly flexible data (including objects/arrays)
789
- // Allows: primitives + arrays of primitives + objects with primitive values
790
- rawData: zJsonAny().describe('Raw data in any JSON format'),
791
-
792
- // Array of mixed primitives
793
- mixedArray: z.array(zJsonValue()).describe('Array of mixed primitive values'),
794
- });
795
- ```
796
-
797
- ### Coerced Input Types
798
-
799
- ```typescript
800
- import { z, zCoerce } from '@qodo/sdk';
801
-
802
- // For CLI-style string inputs that need type conversion
803
- const args = z.object({
804
- // "true"/"false" strings -> boolean
805
- verbose: zCoerce.boolean().describe('Enable verbose output'),
806
-
807
- // "123" string -> number
808
- limit: zCoerce.number().describe('Result limit'),
809
-
810
- // '["a","b"]' string -> string[]
811
- files: zCoerce.jsonArray(z.string()).describe('Files to process'),
812
-
813
- // '{"key":"value"}' string -> object
814
- config: zCoerce.jsonObject({ key: z.string() }).describe('Configuration'),
815
- });
816
- ```
817
-
818
- ---
819
-
820
- ## Event Types Reference
821
-
822
- | Event Type | When Emitted | Key Data Fields |
823
- |------------|--------------|-----------------|
824
- | `sdk.init` | SDK initialized | `sdk_version`, `backend.base_url`, `model` |
825
- | `sdk.run.started` | Run begins | `session_id`, `command`, `prompt_mode`, `cwd`, `dry_run?` |
826
- | `sdk.message.delta` | Streaming text | `delta`, `message_id`, `role` |
827
- | `sdk.message.full` | Full message update | `messages.langchain`, `messages.openai` |
828
- | `sdk.progress` | Progress update | `title`, `status`, `percent` |
829
- | `sdk.tool.requested` | Tool call requested | `tool_call_id`, `server_name`, `tool_name`, `tool_args`, `pending_approval` |
830
- | `sdk.tool.approved` | Tool approved/denied | `tool_call_id`, `approved`, `reason` |
831
- | `sdk.tool.executed` | Tool finished | `tool_call_id`, `result.isError`, `result.content`, `dry_run?` |
832
- | `sdk.error` | Error occurred | `message`, `cause` |
833
- | `sdk.final` | Run completed | `success`, `result.structured_output`, `result.final_output`, `meta.dry_run?`, `meta.timed_out?` |
834
-
835
- ---
836
-
837
- ## QodoSDK Options Reference
838
-
839
- ```typescript
840
- interface QodoSDKOptions {
841
- // Agent configuration (mutually exclusive)
842
- agentFile?: string; // Path to agent.toml/yaml
843
- agentContent?: string; // Raw TOML/YAML content
844
- agentObject?: AIAssistantConfig; // Programmatic config
845
-
846
- // MCP servers
847
- mcpFile?: string; // Path to mcp.json
848
- mcpServers?: Record<string, MCPConfig>; // Inline server configs
849
-
850
- // Execution settings
851
- model?: string; // Model override
852
- projectPath?: string; // Working directory
853
- additionalPaths?: string[]; // Extra accessible paths
854
-
855
- // Tool handling
856
- autoApproveTools?: boolean; // Auto-approve tools (default: true)
857
- toolApproval?: (req) => Promise<boolean> | boolean; // Custom approval
858
- toolMiddleware?: ToolMiddleware[]; // Pre/post execution hooks
859
-
860
- // Session
861
- contextSessionIds?: string[]; // Previous sessions for context
862
-
863
- // Backend
864
- backend?: { baseUrl?: string }; // Backend URL override
865
-
866
- // Debugging
867
- debug?: boolean; // Enable debug logging
868
- logger?: QodoSDKLogger; // Custom logger
869
-
870
- // Mode
871
- interactiveMode?: boolean; // Enable interactive clarifications
872
- }
873
- ```
874
-
875
- ---
876
-
877
- ## Common Tasks
878
-
879
- ### Adding a New Command to an Existing Agent
880
-
881
- 1. Define the command with `sdkCommand()`:
882
- ```typescript
883
- const newCommand = sdkCommand({
884
- name: 'newCommand',
885
- description: 'What this command does',
886
- instructions: 'Detailed instructions for the AI',
887
- available_tools: ['filesystem', 'ripgrep'],
888
- args: sdkArgs({
889
- // Define your args
890
- }),
891
- output: z.object({
892
- // Define your output with .describe() on every field
893
- }),
894
- });
895
- ```
896
-
897
- 2. Add to agent's commands:
898
- ```typescript
899
- const agent = sdkAgent({
900
- commands: {
901
- existingCommand,
902
- newCommand, // Add here
903
- },
904
- });
905
- ```
906
-
907
- ### Converting TOML to Programmatic TypeScript
908
-
909
- Read the TOML and translate each section:
910
-
911
- ```typescript
912
- // From TOML:
913
- // [commands.analyze]
914
- // name = "analyze"
915
- // description = "Analyze code"
916
- // available_tools = ["filesystem"]
917
-
918
- // To TypeScript:
919
- import { sdkCommand, sdkArgs, z } from '@qodo/sdk';
920
-
921
- const analyze = sdkCommand({
922
- name: 'analyze',
923
- description: 'Analyze code',
924
- available_tools: ['filesystem'],
925
- args: sdkArgs({ /* from [commands.analyze.arguments] */ }),
926
- output: z.object({ /* from [commands.analyze.output_schema] */ }),
927
- });
928
- ```
929
-
930
- ### Debugging Schema Validation Errors
931
-
932
- When you see `QodoSchemaError: output schema is missing description for: fieldName`:
933
-
934
- 1. Find the field in your Zod schema
935
- 2. Add `.describe('...')` to it
936
- 3. Check nested objects - all properties need descriptions
937
-
938
- ```typescript
939
- // Before (error)
940
- z.object({
941
- items: z.array(z.object({
942
- name: z.string(), // Missing description!
943
- })),
944
- })
945
-
946
- // After (fixed)
947
- z.object({
948
- items: z.array(z.object({
949
- name: z.string().describe('Item name'),
950
- })).describe('List of items'),
951
- })
952
- ```
953
-
954
- ---
955
-
956
- ## Additional Resources
957
-
958
- - [assets/programmatic-agent.ts](assets/programmatic-agent.ts) - Complete working TypeScript agent template
959
- - [references/builtin-tools.md](references/builtin-tools.md) - Detailed guide to filesystem, git, ripgrep, and shell tools
960
- - [references/common-issues.md](references/common-issues.md) - Troubleshooting guide for common problems
961
-
962
- ### Documentation (in `docs/`)
963
-
964
- | Feature | Doc |
965
- |---------|-----|
966
- | API Reference (Clients, Options, Types) | [docs/api-reference.md](../../../docs/api-reference.md) |
967
- | Pipeline DSL | [docs/pipeline.md](../../../docs/pipeline.md) |
968
- | Dry Run Mode | [docs/dry-run.md](../../../docs/dry-run.md) |
969
- | Tool Middleware | [docs/tool-middleware.md](../../../docs/tool-middleware.md) |
970
- | Structured Output | [docs/structured-output.md](../../../docs/structured-output.md) |
971
- | Execution Timeouts | [docs/execution-timeouts.md](../../../docs/execution-timeouts.md) |
972
- | OpenTelemetry | [docs/opentelemetry.md](../../../docs/opentelemetry.md) |
973
- | Approval Policies | [docs/approval-policies.md](../../../docs/approval-policies.md) |
974
- | Artifacts | [docs/artifacts.md](../../../docs/artifacts.md) |