@qodo/sdk 0.13.4 → 2.0.0-next.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 (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 +1115 -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 +800 -0
  68. package/dist/client/connection.d.ts.map +1 -0
  69. package/dist/client/connection.js +2020 -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
@@ -0,0 +1,45 @@
1
+ /**
2
+ * `${ENV_VAR}` substitution for MCP header values.
3
+ *
4
+ * SDK1 ergonomic — header values like `"Bearer ${HANDBOOK_API_TOKEN}"` are
5
+ * resolved against `process.env` at connect time so consumers can author
6
+ * static `mcpServers` configs (typically loaded from disk or embedded in
7
+ * source) without committing secrets. Preserved verbatim to keep SDK1 →
8
+ * SDK2 migration ergonomically equivalent for typical MCP-header
9
+ * substitution use cases.
10
+ *
11
+ * Semantics:
12
+ * - `${VAR}` references `process.env.VAR`. Unset variables resolve to the
13
+ * empty string; this matches shell expansion (`echo "$UNSET"` → `""`)
14
+ * and SDK1's behavior.
15
+ * - `$VAR` (no braces) is NOT substituted — we keep substitution explicit
16
+ * so a literal `$200` in a header isn't accidentally interpreted as a
17
+ * reference to `process.env[200]`.
18
+ * - `\${VAR}` is an escape — emits the literal `${VAR}` without
19
+ * substitution. Useful for the rare case where the header value
20
+ * genuinely contains `${...}` literals.
21
+ *
22
+ * The implementation is platform-neutral: `process.env` is the only OS
23
+ * touchpoint. Browsers don't run the MCP bridge (subprocess + arbitrary
24
+ * fetch authority are server-side concerns), so a Node-only assumption is
25
+ * fine; the browser shim falls through to identity behavior.
26
+ */
27
+ /**
28
+ * Substitute `${VAR}` references in a single string against `process.env`.
29
+ * Returns the resolved string; unset references collapse to empty.
30
+ *
31
+ * `\${VAR}` is the escape form — it emits the literal `${VAR}` so callers
32
+ * can carry through a value that contains the syntax verbatim.
33
+ */
34
+ export declare function substituteEnvInString(value: string, env?: NodeJS.ProcessEnv): string;
35
+ /**
36
+ * Substitute `${VAR}` references across every value in a string-keyed map.
37
+ * Returns a fresh object; the input is not mutated. Keys are passed through
38
+ * unchanged (header names aren't subject to env substitution).
39
+ */
40
+ export declare function substituteEnvInHeaders(headers: {
41
+ readonly [key: string]: string;
42
+ } | undefined, env?: NodeJS.ProcessEnv): {
43
+ [key: string]: string;
44
+ } | undefined;
45
+ //# sourceMappingURL=substituteEnv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substituteEnv.d.ts","sourceRoot":"","sources":["../../../src/client/mcp/substituteEnv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAajG;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,SAAS,EACvD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,SAAS,CAOvC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * `${ENV_VAR}` substitution for MCP header values.
3
+ *
4
+ * SDK1 ergonomic — header values like `"Bearer ${HANDBOOK_API_TOKEN}"` are
5
+ * resolved against `process.env` at connect time so consumers can author
6
+ * static `mcpServers` configs (typically loaded from disk or embedded in
7
+ * source) without committing secrets. Preserved verbatim to keep SDK1 →
8
+ * SDK2 migration ergonomically equivalent for typical MCP-header
9
+ * substitution use cases.
10
+ *
11
+ * Semantics:
12
+ * - `${VAR}` references `process.env.VAR`. Unset variables resolve to the
13
+ * empty string; this matches shell expansion (`echo "$UNSET"` → `""`)
14
+ * and SDK1's behavior.
15
+ * - `$VAR` (no braces) is NOT substituted — we keep substitution explicit
16
+ * so a literal `$200` in a header isn't accidentally interpreted as a
17
+ * reference to `process.env[200]`.
18
+ * - `\${VAR}` is an escape — emits the literal `${VAR}` without
19
+ * substitution. Useful for the rare case where the header value
20
+ * genuinely contains `${...}` literals.
21
+ *
22
+ * The implementation is platform-neutral: `process.env` is the only OS
23
+ * touchpoint. Browsers don't run the MCP bridge (subprocess + arbitrary
24
+ * fetch authority are server-side concerns), so a Node-only assumption is
25
+ * fine; the browser shim falls through to identity behavior.
26
+ */
27
+ const ENV_PATTERN = /\\\$\{([A-Za-z_][A-Za-z0-9_]*)\}|\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
28
+ /**
29
+ * Substitute `${VAR}` references in a single string against `process.env`.
30
+ * Returns the resolved string; unset references collapse to empty.
31
+ *
32
+ * `\${VAR}` is the escape form — it emits the literal `${VAR}` so callers
33
+ * can carry through a value that contains the syntax verbatim.
34
+ */
35
+ export function substituteEnvInString(value, env = process.env) {
36
+ return value.replace(ENV_PATTERN, (_match, escaped, ref) => {
37
+ if (escaped !== undefined) {
38
+ // Escape sequence — emit literal `${VAR}` without substitution.
39
+ return `\${${escaped}}`;
40
+ }
41
+ if (ref === undefined) {
42
+ // Defensive — the regex always matches one of the two capture groups.
43
+ return _match;
44
+ }
45
+ const resolved = env[ref];
46
+ return resolved ?? '';
47
+ });
48
+ }
49
+ /**
50
+ * Substitute `${VAR}` references across every value in a string-keyed map.
51
+ * Returns a fresh object; the input is not mutated. Keys are passed through
52
+ * unchanged (header names aren't subject to env substitution).
53
+ */
54
+ export function substituteEnvInHeaders(headers, env = process.env) {
55
+ if (headers === undefined)
56
+ return undefined;
57
+ const out = {};
58
+ for (const [key, value] of Object.entries(headers)) {
59
+ out[key] = substituteEnvInString(value, env);
60
+ }
61
+ return out;
62
+ }
63
+ //# sourceMappingURL=substituteEnv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substituteEnv.js","sourceRoot":"","sources":["../../../src/client/mcp/substituteEnv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,WAAW,GAAG,kEAAkE,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,MAAyB,OAAO,CAAC,GAAG;IACvF,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,OAA2B,EAAE,GAAuB,EAAE,EAAE;QACjG,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,gEAAgE;YAChE,OAAO,MAAM,OAAO,GAAG,CAAC;QAC1B,CAAC;QACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,sEAAsE;YACtE,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,QAAQ,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAuD,EACvD,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,GAAG,GAA8B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Building blocks for the read-only sub-clients that surface QAR's
3
+ * `bulletin.post`, `artifact.add`, `state.update`, and `agent.spawn`
4
+ * envelopes to opt-in consumers.
5
+ *
6
+ * These sub-clients are observers — they tap inbound envelopes alongside the
7
+ * `TaskSubscription` chain (so the same envelope still drives the canonical
8
+ * `AsyncIterable<TaskEvent>` from `client.tasks.start()`). Multiple handlers
9
+ * per kind are allowed and run in registration order; throws are swallowed
10
+ * so a misbehaving consumer never crashes the WS loop.
11
+ */
12
+ import type { Envelope, EnvelopeKind } from '../qar/envelopes.js';
13
+ /**
14
+ * Token returned by the four `client.{bulletin,artifacts,state,agents}.on*`
15
+ * methods. `close()` deregisters the handler; subsequent envelopes do not
16
+ * invoke it. Idempotent.
17
+ *
18
+ * Distinct from `Subscription` (`unsubscribe()`) on `ToolClient` — the four
19
+ * read-only event surfaces use `close()` to mirror QAR's spawn-lifecycle
20
+ * vocabulary (see `docs/sdk2/event-surfaces.md`).
21
+ */
22
+ export interface EventSubscription {
23
+ close(): void;
24
+ }
25
+ /**
26
+ * Shared base for the four kind-filtered observer sub-clients. Holds the
27
+ * handler registry; `attach`/`detach` are called by `QodoClient` on
28
+ * `connect`/`disconnect`. Registrations made before `connect()` are honored
29
+ * once the WS opens — consumers can wire handlers eagerly during construction.
30
+ */
31
+ export declare abstract class KindObserverClient<K extends EnvelopeKind, E extends Envelope & {
32
+ readonly kind: K;
33
+ }> {
34
+ private readonly kind;
35
+ private port;
36
+ private connection;
37
+ private readonly registrations;
38
+ protected constructor(kind: K);
39
+ /**
40
+ * Called by the port from `close()` / `fail()`. The connection is already
41
+ * tearing itself down (it cleared its own subscription set), so do NOT
42
+ * call `unsubscribe` here — just clear the sub-client's pointers so a
43
+ * later `attach()` against a fresh connection starts cleanly. Guards on
44
+ * identity in case a stale port from a prior attach cycle fires after
45
+ * the sub-client already moved on.
46
+ */
47
+ private onPortUnbound;
48
+ /**
49
+ * Register a handler. The optional `matches` predicate runs per envelope —
50
+ * sub-classes pass their filter shape through it. Returns an
51
+ * `EventSubscription` whose `close()` is idempotent.
52
+ */
53
+ protected register(handler: (env: E) => void, matches?: (env: E) => boolean): EventSubscription;
54
+ private dispatch;
55
+ private logHandlerError;
56
+ }
57
+ //# sourceMappingURL=observers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observers.d.ts","sourceRoot":"","sources":["../../src/client/observers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKlE;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,IAAI,IAAI,CAAC;CACf;AA4ED;;;;;GAKG;AACH,8BAAsB,kBAAkB,CACtC,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,QAAQ,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE;IAMnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJ3C,OAAO,CAAC,IAAI,CAAuC;IACnD,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAE5D,SAAS,aAA8B,IAAI,EAAE,CAAC;IA4B9C;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAMrB;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAChB,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EACzB,OAAO,GAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAoB,GACxC,iBAAiB;IAcpB,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,eAAe;CAqBxB"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Building blocks for the read-only sub-clients that surface QAR's
3
+ * `bulletin.post`, `artifact.add`, `state.update`, and `agent.spawn`
4
+ * envelopes to opt-in consumers.
5
+ *
6
+ * These sub-clients are observers — they tap inbound envelopes alongside the
7
+ * `TaskSubscription` chain (so the same envelope still drives the canonical
8
+ * `AsyncIterable<TaskEvent>` from `client.tasks.start()`). Multiple handlers
9
+ * per kind are allowed and run in registration order; throws are swallowed
10
+ * so a misbehaving consumer never crashes the WS loop.
11
+ */
12
+ import { isThenable } from './internal/thenable.js';
13
+ /**
14
+ * Inbound subscription that filters by `kind` and fans out to a sub-client's
15
+ * handler list.
16
+ *
17
+ * `Connection.fanout` invokes `consider` on every registered subscription
18
+ * unconditionally — the boolean return is a leftover hook from an earlier
19
+ * design and is not used to short-circuit fan-out today. So observer ports
20
+ * coexist naturally with `TaskSubscription`: the same envelope flows down
21
+ * both paths without one preventing the other.
22
+ *
23
+ * `fail`/`close` notify the owning client through `onUnbound` so it can drop
24
+ * its `connection`/`port` pointers when the transport tears down without an
25
+ * explicit `disconnect()`.
26
+ */
27
+ class KindObserverPort {
28
+ kind;
29
+ dispatch;
30
+ onUnbound;
31
+ constructor(kind, dispatch, onUnbound) {
32
+ this.kind = kind;
33
+ this.dispatch = dispatch;
34
+ this.onUnbound = onUnbound;
35
+ }
36
+ consider(env) {
37
+ if (env.kind === this.kind) {
38
+ // Defense-in-depth: even though `dispatch` already routes handler
39
+ // throws through `logHandlerError`, an exception inside the logger
40
+ // itself would otherwise escape into `Connection.fanout` and break
41
+ // every other subscription on this socket. Any throw at this seam is
42
+ // dropped — there is no recovery surface.
43
+ try {
44
+ this.dispatch(env);
45
+ }
46
+ catch {
47
+ // Last-ditch: never let an observer crash the WS dispatch loop.
48
+ }
49
+ }
50
+ // Return value is informational; fan-out on `Connection` does not branch
51
+ // on it. Kept `false` for consistency with `RawSubscription`'s tap pattern.
52
+ return false;
53
+ }
54
+ // `qar.client.*` reconnect/replay events flow through `client.receive()`
55
+ // consumers and `TaskSubscription`s, not through observer surfaces
56
+ // (those are envelope-only — the four QAR envelope kinds the sub-clients
57
+ // care about). No-op so the interface contract is satisfied without
58
+ // expanding the public surface.
59
+ considerClient(_ev) { }
60
+ fail(_err) {
61
+ // The `error` envelope is the consumer-facing failure signal; observers
62
+ // don't surface transport-level failures separately. But we DO need to
63
+ // tell the owning sub-client that its port is now orphaned, so a future
64
+ // `attach()` doesn't try to `unsubscribe` from a torn-down connection.
65
+ this.onUnbound();
66
+ }
67
+ close() {
68
+ // Connection closed cleanly: drop the port reference on the owning
69
+ // sub-client. Handler registrations stay on the sub-client; the next
70
+ // `attach()` will create a fresh port.
71
+ this.onUnbound();
72
+ }
73
+ }
74
+ /**
75
+ * Shared base for the four kind-filtered observer sub-clients. Holds the
76
+ * handler registry; `attach`/`detach` are called by `QodoClient` on
77
+ * `connect`/`disconnect`. Registrations made before `connect()` are honored
78
+ * once the WS opens — consumers can wire handlers eagerly during construction.
79
+ */
80
+ export class KindObserverClient {
81
+ kind;
82
+ port = null;
83
+ connection = null;
84
+ registrations = [];
85
+ constructor(kind) {
86
+ this.kind = kind;
87
+ }
88
+ /** @internal — invoked by `QodoClient.connect()`. */
89
+ attach(connection) {
90
+ if (this.connection !== null) {
91
+ // Defensive: a second `attach()` without a `detach()` would leak the
92
+ // previous port. Drop it cleanly first.
93
+ this.detach();
94
+ }
95
+ const port = new KindObserverPort(this.kind, (env) => this.dispatch(env), () => this.onPortUnbound(port));
96
+ connection.subscribe(port);
97
+ this.connection = connection;
98
+ this.port = port;
99
+ }
100
+ /** @internal — invoked by `QodoClient.disconnect()`. */
101
+ detach() {
102
+ if (this.connection !== null && this.port !== null) {
103
+ this.connection.unsubscribe(this.port);
104
+ }
105
+ this.connection = null;
106
+ this.port = null;
107
+ }
108
+ /**
109
+ * Called by the port from `close()` / `fail()`. The connection is already
110
+ * tearing itself down (it cleared its own subscription set), so do NOT
111
+ * call `unsubscribe` here — just clear the sub-client's pointers so a
112
+ * later `attach()` against a fresh connection starts cleanly. Guards on
113
+ * identity in case a stale port from a prior attach cycle fires after
114
+ * the sub-client already moved on.
115
+ */
116
+ onPortUnbound(port) {
117
+ if (this.port !== port)
118
+ return;
119
+ this.connection = null;
120
+ this.port = null;
121
+ }
122
+ /**
123
+ * Register a handler. The optional `matches` predicate runs per envelope —
124
+ * sub-classes pass their filter shape through it. Returns an
125
+ * `EventSubscription` whose `close()` is idempotent.
126
+ */
127
+ register(handler, matches = () => true) {
128
+ const reg = { handler, matches };
129
+ this.registrations.push(reg);
130
+ let closed = false;
131
+ return {
132
+ close: () => {
133
+ if (closed)
134
+ return;
135
+ closed = true;
136
+ const idx = this.registrations.indexOf(reg);
137
+ if (idx !== -1)
138
+ this.registrations.splice(idx, 1);
139
+ },
140
+ };
141
+ }
142
+ dispatch(env) {
143
+ // Snapshot so a handler that closes its own subscription (or registers a
144
+ // sibling) doesn't disturb the in-flight iteration.
145
+ const snapshot = [...this.registrations];
146
+ for (const reg of snapshot) {
147
+ let isMatch;
148
+ try {
149
+ isMatch = reg.matches(env);
150
+ }
151
+ catch (err) {
152
+ // A throwing predicate is a consumer bug, not a transport bug. Treat
153
+ // it the same as a throwing handler: log + skip, keep the WS alive.
154
+ this.logHandlerError(err);
155
+ continue;
156
+ }
157
+ if (!isMatch)
158
+ continue;
159
+ // Both synchronous throws AND async (Promise) rejections must be
160
+ // routed through `logHandlerError` so the documented "handler failures
161
+ // are swallowed" guarantee holds for `async` consumers too. The
162
+ // try/catch covers sync; the `isThenable` branch covers async without
163
+ // allocating a Promise wrapper for every synchronous handler call —
164
+ // dispatch is on the WS hot path, so the per-call cost matters.
165
+ try {
166
+ const ret = reg.handler(env);
167
+ if (isThenable(ret)) {
168
+ ret.then(undefined, (err) => this.logHandlerError(err));
169
+ }
170
+ }
171
+ catch (err) {
172
+ this.logHandlerError(err);
173
+ }
174
+ }
175
+ }
176
+ logHandlerError(err) {
177
+ // The "handler failures are swallowed" guarantee extends to the logger
178
+ // itself. A hostile `Error` whose `stack`/`message` getters throw, or a
179
+ // user-overridden `console.error` that throws, would otherwise escape
180
+ // into `KindObserverPort.consider` and onward into `Connection.fanout`.
181
+ // Wrap the body so the library never crashes the WS loop just to print a
182
+ // diagnostic.
183
+ try {
184
+ const msg = err instanceof Error ? err.stack ?? err.message : String(err);
185
+ console.error(`[@qodo/sdk] ${this.kind} handler threw — swallowed: ${msg}`);
186
+ }
187
+ catch {
188
+ try {
189
+ // Fallback: print without `String(err)` / message extraction in case
190
+ // `err` itself is the throwing party.
191
+ console.error(`[@qodo/sdk] ${this.kind} handler threw — swallowed (logger error)`);
192
+ }
193
+ catch {
194
+ // Even the fallback failed (e.g. a fully wedged `console`). Drop
195
+ // silently — the priority is keeping dispatch alive.
196
+ }
197
+ }
198
+ }
199
+ }
200
+ // `isThenable` lives in `./internal/thenable.ts` so `ToolClient.ts` and
201
+ // this module share one canonical implementation — diverging copies were
202
+ // a maintenance trap.
203
+ //# sourceMappingURL=observers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observers.js","sourceRoot":"","sources":["../../src/client/observers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Construction options for `QodoClient` and friends.
3
+ *
4
+ * Strict — no `any` at the public surface. Optional fields that may grow over
5
+ * time (e.g. `headers`, `transport`) carry an index-signature-free interface so
6
+ * adding a key is a SemVer-additive change rather than a silent extension.
7
+ */
8
+ import type { OTelAPI } from '../tracing/types.js';
9
+ import type { MessageId, SessionId } from '../qar/ids.js';
10
+ import type { WSTransportFactory } from './transport.js';
11
+ import type { SkillsConfig, SkillSpecifier } from '../skills/types.js';
12
+ /**
13
+ * Auth strategy passed to the client.
14
+ *
15
+ * `'env'` reads `QODO_API_KEY` (and falls back to `~/.qodo/auth.key`) via the
16
+ * existing `AuthProvider`; explicit `{ apiKey }` uses the literal value.
17
+ *
18
+ * No environment selector beyond this — 2.0 talks to QAR only. The endpoint
19
+ * itself is `baseUrl`.
20
+ */
21
+ export type ClientAuth = 'env' | {
22
+ readonly apiKey: string;
23
+ };
24
+ /** Connection-level retry / backoff hints. */
25
+ export interface ClientReconnectOptions {
26
+ /** Hard cap on reconnect attempts before the iterator throws. */
27
+ readonly maxAttempts?: number;
28
+ /** Initial backoff delay in milliseconds. */
29
+ readonly initialBackoffMs?: number;
30
+ /** Backoff multiplier applied each attempt. */
31
+ readonly backoffMultiplier?: number;
32
+ }
33
+ /**
34
+ * App-level backpressure tuning. QAR emits `flow.pause` when its
35
+ * per-session in-flight envelope counter crosses the high watermark; the SDK
36
+ * queues subsequent `task.start` / `task.continue` until `flow.resume`
37
+ * arrives. `tool.response` and `task.cancel` ignore the pause — the server is
38
+ * either awaiting them (tool answer) or the user wants out (cancel).
39
+ */
40
+ export interface ClientBackpressureOptions {
41
+ /**
42
+ * Soft cap on the number of envelopes the SDK will hold in its paused queue.
43
+ * Past this, public-API calls reject with `QodoBackpressureError`. Default
44
+ * `100`. Healthy traffic typically queues 0–2 envelopes; reaching the cap
45
+ * means the consumer is driving far above QAR's in-flight ceiling.
46
+ */
47
+ readonly maxPausedQueueSize?: number;
48
+ }
49
+ /**
50
+ * Construction options for `QodoClient`.
51
+ *
52
+ * Required: `baseUrl` (the QAR deployment), `auth`. Everything else is optional.
53
+ */
54
+ export interface ClientOptions {
55
+ /**
56
+ * Base URL of the QAR deployment, e.g. `https://qar.qodo.ai`. The client
57
+ * derives the WS endpoint (`wss://<base>/v2/qar/ws/connect`) and HTTP routes
58
+ * (`<base>/v1/info`, `<base>/v1/auth/me`, …) from this.
59
+ */
60
+ readonly baseUrl: string;
61
+ /** How to obtain the bearer token. */
62
+ readonly auth: ClientAuth;
63
+ /**
64
+ * Optional OTel API surface (typically `import * as otel from '@opentelemetry/api'`).
65
+ *
66
+ * If provided, the client emits `qar.client.*` spans and propagates W3C
67
+ * Trace Context on every outbound envelope. If omitted, the client
68
+ * no-ops cleanly — no warnings, no bundled fallback TracerProvider.
69
+ */
70
+ readonly otel?: OTelAPI;
71
+ /** Reconnect / backoff hints. */
72
+ readonly reconnect?: ClientReconnectOptions;
73
+ /** App-level backpressure tuning. */
74
+ readonly backpressure?: ClientBackpressureOptions;
75
+ /**
76
+ * Extra HTTP headers attached to non-WS calls (`/v1/info`, `/v1/auth/me`, …).
77
+ * The bearer header is set automatically from `auth`.
78
+ */
79
+ readonly headers?: {
80
+ readonly [name: string]: string;
81
+ };
82
+ /**
83
+ * Override the WebSocket transport factory.
84
+ *
85
+ * Default: `defaultTransportFactory`, which opens a real WS connection via the
86
+ * `ws` package. Tests inject a fake factory to avoid the network. Useful for
87
+ * consumers running in environments where `ws` doesn't fit (e.g. browsers
88
+ * with the WHATWG WebSocket — they'd write a thin adapter here).
89
+ */
90
+ readonly transport?: WSTransportFactory;
91
+ /**
92
+ * Skills foundation config. When provided, the client builds a
93
+ * `SkillsManager` at construction; `tasks.startWithAgent` and
94
+ * `tasks.startWithGraph` auto-inject a slim `<available_skills>` block
95
+ * into inline-agent instructions before the envelope hits the wire.
96
+ *
97
+ * Omit to disable; pass `{ sources: [] }` to opt in to the manager
98
+ * surface but ship no skills. The block lands inside the consumer's
99
+ * existing instructions text — a first-class `available_skills` wire
100
+ * field is a follow-up.
101
+ */
102
+ readonly skills?: SkillsConfig;
103
+ /**
104
+ * Opt in to sending the bearer token over an insecure (`http://` / `ws://`)
105
+ * transport.
106
+ *
107
+ * `connect()` always emits the `Authorization: Bearer <token>` header on the
108
+ * upgrade. Over `ws://` that header is plaintext on the wire — a passive
109
+ * observer can capture the token. The default rejects insecure URLs in
110
+ * `connect()` (before the upgrade actually happens) so the failure surfaces
111
+ * with a typed `QodoClientOptionsError` and the bearer is never sent.
112
+ *
113
+ * Set to `true` for **local development only** (e.g. `ws://localhost:8000`
114
+ * against a dev QAR). Production consumers must use `wss://`.
115
+ *
116
+ * Default: `false`.
117
+ */
118
+ readonly allowInsecureTransport?: boolean;
119
+ }
120
+ /** Per-task options forwarded to `tasks.start` / `tasks.continue`. */
121
+ export interface TaskOptions {
122
+ /**
123
+ * Abort signal for cooperative cancellation. The iterator stops yielding and
124
+ * an in-flight task is cancelled via `task.cancel`.
125
+ */
126
+ readonly signal?: AbortSignal;
127
+ /**
128
+ * Caller-pinned skills for this run. Each entry is a bare name,
129
+ * vendor/name, or vendor/name@version specifier; the SkillsManager
130
+ * resolves and marks them `[loaded]` in the slim index. Unresolved
131
+ * names throw `SkillNotFoundError` synchronously. `undefined` falls
132
+ * back to `SkillsConfig.activate`; `[]` is "explicitly pinned nothing"
133
+ * (overrides constructor default).
134
+ *
135
+ * Records the pinned set in the slim index; runtime body injection
136
+ * (the L1 caller-pinned activation path) is provided by the
137
+ * `qodo-skills` MCP server.
138
+ */
139
+ readonly skills?: readonly SkillSpecifier[];
140
+ /**
141
+ * "Current file" context for the `paths:` filter. Consumers without a
142
+ * current-file concept omit this; the renderer treats `paths:` as
143
+ * no-op for those skills.
144
+ */
145
+ readonly skillsCurrentFile?: string;
146
+ /**
147
+ * Optional caller-supplied work-unit identity for cross-pod session
148
+ * serialization on the deterministic-key path.
149
+ *
150
+ * When OMITTED (default), QAR mints a fresh `uuidv7()` and derives
151
+ * `session_id` from that — every `task.start` call produces a unique
152
+ * session_id and no two pods coordinate. This is the **DX default** —
153
+ * the right shape for one-shot scripts, CLI tools, single-process
154
+ * consumers, and any caller that doesn't need cross-pod coordination.
155
+ *
156
+ * When PRESENT, QAR derives `session_id = uuidv5(QAR_NS_V1,
157
+ * tenant_id + ":" + idempotencyKey)`. Two pods receiving the same
158
+ * `(tenant_id, idempotencyKey)` derive the same `session_id` and
159
+ * serialize on the same lease key (`qar.session_runs`) — the basis
160
+ * for Slack-thread-per-pod, PR-per-pod, customer-issue-per-pod
161
+ * scale-out topologies. Encode your app-level fine scope INTO the
162
+ * string:
163
+ *
164
+ * - Slack threads: `${teamId}:${channelId}:${threadTs}` (or
165
+ * `${teamId}:dm:${userId}` for DM fallback)
166
+ * - GitHub PRs: `${owner}/${repo}:pr:${prNumber}`
167
+ * - Customer issues: `${customerId}:${issueId}`
168
+ *
169
+ * **Validation** (mirrors QAR's `Field(min_length=1, max_length=512,
170
+ * pattern=r"^[^\x00]+$")`): 1–512 **Unicode code points** (NOT bytes
171
+ * — counted with `[...str].length`), no NUL byte. Invalid values
172
+ * throw {@link QodoIdempotencyKeyValidationError} synchronously,
173
+ * before the wire write.
174
+ *
175
+ * **Anti-patterns**:
176
+ * - `idempotencyKey = Date.now()` — looks deterministic, collides
177
+ * on rapid-fire calls within clock resolution.
178
+ * - `idempotencyKey = randomUUID()` / fresh random per call — works
179
+ * correctly (every call gets a unique session_id) but defeats
180
+ * the purpose; omit the field and let the server mint instead.
181
+ *
182
+ * **Lost-ack retry contract** (mandatory): the omitted-key path is
183
+ * **non-idempotent** across `task.start` retries. If the client
184
+ * issues `task.start` without `idempotencyKey`, doesn't receive the
185
+ * `task.started` ack (transport drop, timeout), and naively retries,
186
+ * the server mints a NEW uuidv7 and a SECOND fresh session starts.
187
+ * The SDK MUST NOT silently retry an uncertain `task.start` without
188
+ * a sticky key. Consumers requiring lost-ack idempotent retry MUST
189
+ * pass a deterministic key (domain-derived or a sticky per-attempt
190
+ * UUIDv7). A Phase-2 `attemptKey()` helper that codifies the
191
+ * sticky-per-attempt pattern is tracked separately.
192
+ */
193
+ readonly idempotencyKey?: string;
194
+ /**
195
+ * Explicit cold-address `session_id`.
196
+ *
197
+ * Meaningful only for `tasks.continue` (and via {@link ResubscribeOptions}
198
+ * for `tasks.resubscribe`). On `tasks.start` this field is IGNORED at
199
+ * both the wire and span layers:
200
+ * - The wire envelope strips `session_id` (admission CREATES the
201
+ * session); a caller-supplied value cannot reach the server.
202
+ * - SDK-side span attribution (`subscribeAndSend`) explicitly gates
203
+ * this field on `outbound.kind !== 'task.start'` so a stale caller
204
+ * value can't pollute the `task.start` span's `qar.session_id`
205
+ * attribute before the server-derived id arrives via the
206
+ * `task.started` ack.
207
+ *
208
+ * Pass the value the SDK previously exposed on `await stream.sessionId`
209
+ * (or persisted alongside the `taskId` from a prior admission) when
210
+ * reusing the `taskId` across processes.
211
+ *
212
+ * When OMITTED on a continue call, the SDK looks up the per-Task
213
+ * session captured from the in-process `task.started` ack. If neither
214
+ * a captured session nor an explicit override is available, the SDK
215
+ * throws {@link QodoColdAddressError} synchronously BEFORE the wire
216
+ * write — the doctrinal correct shape for cross-process recovery,
217
+ * replacing a zero-UUID sentinel that would otherwise send a rejected
218
+ * frame to the wire.
219
+ */
220
+ readonly sessionId?: SessionId;
221
+ }
222
+ /**
223
+ * Options for `tasks.cancel`. The payload arg already carries the cancel
224
+ * reason; this options bag is for control fields (abort signal,
225
+ * cold-address `sessionId`).
226
+ */
227
+ export interface TaskCancelOptions {
228
+ /** Abort signal for cooperative cancellation of the cancel itself. */
229
+ readonly signal?: AbortSignal;
230
+ /**
231
+ * Explicit cold-address `session_id` for cancelling a task across
232
+ * processes. Same semantics as the `sessionId` field on {@link TaskOptions}:
233
+ * required when the `taskId` was hydrated from durable storage rather
234
+ * than observed from an in-process `task.started`.
235
+ */
236
+ readonly sessionId?: SessionId;
237
+ }
238
+ /**
239
+ * Options for `tools.respond`. Today carries only the cold-address
240
+ * `sessionId` override; an explicit options bag is the right shape for
241
+ * future control fields (e.g. per-call abort, span overrides) without
242
+ * breaking the existing overload signature.
243
+ */
244
+ export interface ToolRespondOptions {
245
+ /**
246
+ * Explicit cold-address `session_id` for responding to a `tool_call_id`
247
+ * whose originating `tool.request` was never observed in this process
248
+ * (cross-process HITL flow: a long-running approval lands on a
249
+ * different SDK instance than the one that emitted the request).
250
+ */
251
+ readonly sessionId?: SessionId;
252
+ }
253
+ /**
254
+ * Options for `tasks.resubscribe`. Mirrors `TaskResubscribePayload` so consumers
255
+ * can hand the same shape they'd hand the wire.
256
+ */
257
+ export interface ResubscribeOptions extends TaskOptions {
258
+ /**
259
+ * The most recent `message_id` the client has already observed. QAR replays
260
+ * from immediately after this point (server-side per-session ring buffer,
261
+ * cap 1000 envelopes per the design doc).
262
+ *
263
+ * Maps to `since_message_id` on the wire when the client encodes the
264
+ * envelope. Branded `MessageId` so consumers can't accidentally pass a
265
+ * `TaskId` / `SessionId` here.
266
+ */
267
+ readonly sinceMessageId?: MessageId;
268
+ }
269
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/client/options.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,8CAA8C;AAC9C,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAE1B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAExB,iCAAiC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,sBAAsB,CAAC;IAE5C,qCAAqC;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,yBAAyB,CAAC;IAElD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAEvD;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAExC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAE/B;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAED,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAE9B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAE5C;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8CG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAE9B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;CACrC"}