@qodo/sdk 0.13.3 → 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 -104
  401. package/dist/api/agent.d.ts.map +0 -1
  402. package/dist/api/agent.js +0 -939
  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,93 @@
1
+ /**
2
+ * Pre-wire validation helpers for `task.start { agent: InlineAgentSpec }`
3
+ * (Pattern B). The wire types themselves live in `./specs.ts`; this
4
+ * module carries the SDK-side intake guard plus a re-export of the
5
+ * `InlineAgentSpec` symbol under the `AgentSpec` alias.
6
+ *
7
+ * **Why an SDK-side intake guard?** QAR's `validate_spec_payload` is the
8
+ * single source of truth for spec rule_ids; the SDK never tries to
9
+ * reimplement the full ruleset. But two classes of failure are worth
10
+ * catching client-side without paying the round-trip:
11
+ *
12
+ * 1. **Forbidden keys.** `custom_code: { ... }` and unknown top-level
13
+ * fields (`hooks`, `lifecycle`, anything not in the safe subset)
14
+ * are deterministically rejected by `D10-R1` / `D10-R3` / `D10-R5`.
15
+ * Catching them in TypeScript at intake means the consumer's stack
16
+ * trace points at their call site; QAR's per-rule `path` is
17
+ * preserved so the error message is identical to the wire envelope.
18
+ * 2. **Discriminator + required-field hygiene.** Missing
19
+ * `apiVersion` / `instructions` / `model` (the only required
20
+ * fields) gets a typed reject before the wire write so consumers
21
+ * don't see a `task.done(failed)` 200ms later for a typo they
22
+ * could have caught at edit time.
23
+ *
24
+ * Per-rule semantic checks (catalog name resolution, skill compatibility,
25
+ * spawnable agent registry lookups, etc.) stay server-side — they need
26
+ * tenant context the SDK doesn't have.
27
+ */
28
+ import type { InlineAgentSpec } from './specs.js';
29
+ /**
30
+ * Pre-wire validation outcome — one entry per detected violation. Matches
31
+ * the per-rule shape QAR emits via `agent_spec_rejected` envelopes so
32
+ * consumers handling both paths can branch on the same `(rule_id, path,
33
+ * message)` triple.
34
+ */
35
+ export interface InlineAgentSpecValidationIssue {
36
+ readonly rule_id: string;
37
+ /** JSON Pointer (RFC 6901) into the spec — `""` for root. */
38
+ readonly path: string;
39
+ readonly message: string;
40
+ }
41
+ /**
42
+ * Walk an `unknown` value asserted to be an `InlineAgentSpec`, returning
43
+ * the list of detected pre-wire violations. Empty list = pre-wire-clean
44
+ * (still subject to the server's per-rule pass at `task.start` and the
45
+ * pre-flight endpoint).
46
+ *
47
+ * Field-shape validation is intentionally shallow: we check the rules a
48
+ * dumb JSON walker can verify (forbidden keys, missing required scalars,
49
+ * `custom_code !== null`). Deeper composition rules (skill version
50
+ * resolution, spawnable agent registry, tool-name collisions) need
51
+ * tenant context and stay server-side under `validate_spec_payload`.
52
+ */
53
+ export declare function collectInlineAgentSpecPreWireIssues(spec: unknown): readonly InlineAgentSpecValidationIssue[];
54
+ /**
55
+ * Type-guard form of `collectInlineAgentSpecPreWireIssues`. Throws
56
+ * `QodoInlineAgentValidationError` from `../client/errors.js` when any
57
+ * pre-wire issue is detected. Caller is `TaskClient.start` —
58
+ * `assertInlineAgentSpecPreWire(payload.agent)` runs before any wire
59
+ * write so the consumer's stack trace points at the call site, not at a
60
+ * `task.done(failed)` arriving over the wire.
61
+ *
62
+ * Lives in this module (not in the central `errors.ts`) because circular
63
+ * imports are easier to avoid when the assertion sits next to the rule
64
+ * walker that produces its message body.
65
+ */
66
+ export declare function assertInlineAgentSpecPreWire(spec: unknown): asserts spec is InlineAgentSpec;
67
+ /**
68
+ * Fill in the wire-canonical `kind: 'AgentSpec'` discriminator when the
69
+ * consumer's spec omits it. `InlineAgentSpec.kind` is optional in TypeScript
70
+ * — required server-side, but the SDK is permissive at the type level so
71
+ * consumers can write `{ apiVersion, instructions, model }` literally.
72
+ * Both `task.start` dispatch and `specs.validate` need the discriminator
73
+ * on the wire, so this normalizer runs at every wire boundary.
74
+ *
75
+ * Doesn't mutate the consumer's input object — returns the same reference if
76
+ * `kind` is already set so the spread cost is paid only when needed.
77
+ */
78
+ export declare function normalizeInlineAgentSpec(spec: InlineAgentSpec): InlineAgentSpec;
79
+ /**
80
+ * The inline `AgentSpec` symbol — exported here so consumers can
81
+ * `import { AgentSpec }` for the wire shape, even though
82
+ * `QarRegistryClient.AgentSpec` (the local-registry shape) owns the
83
+ * unqualified `AgentSpec` export at the package index. Two layers, two
84
+ * types — see `./specs.ts` header for the longer rationale.
85
+ *
86
+ * Marked deprecated only as a hint that direct use should prefer
87
+ * `InlineAgentSpec` to keep the wire-vs-local distinction visible at the
88
+ * call site; the alias itself isn't going anywhere.
89
+ *
90
+ * @see {@link InlineAgentSpec}
91
+ */
92
+ export type AgentSpec = InlineAgentSpec;
93
+ //# sourceMappingURL=agentSpec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentSpec.d.ts","sourceRoot":"","sources":["../../src/qar/agentSpec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmClD;;;;;GAKG;AACH,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,OAAO,GACZ,SAAS,8BAA8B,EAAE,CAsF3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,IAAI,eAAe,CAIjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAG/E;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,GAAG,eAAe,CAAC"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Pre-wire validation helpers for `task.start { agent: InlineAgentSpec }`
3
+ * (Pattern B). The wire types themselves live in `./specs.ts`; this
4
+ * module carries the SDK-side intake guard plus a re-export of the
5
+ * `InlineAgentSpec` symbol under the `AgentSpec` alias.
6
+ *
7
+ * **Why an SDK-side intake guard?** QAR's `validate_spec_payload` is the
8
+ * single source of truth for spec rule_ids; the SDK never tries to
9
+ * reimplement the full ruleset. But two classes of failure are worth
10
+ * catching client-side without paying the round-trip:
11
+ *
12
+ * 1. **Forbidden keys.** `custom_code: { ... }` and unknown top-level
13
+ * fields (`hooks`, `lifecycle`, anything not in the safe subset)
14
+ * are deterministically rejected by `D10-R1` / `D10-R3` / `D10-R5`.
15
+ * Catching them in TypeScript at intake means the consumer's stack
16
+ * trace points at their call site; QAR's per-rule `path` is
17
+ * preserved so the error message is identical to the wire envelope.
18
+ * 2. **Discriminator + required-field hygiene.** Missing
19
+ * `apiVersion` / `instructions` / `model` (the only required
20
+ * fields) gets a typed reject before the wire write so consumers
21
+ * don't see a `task.done(failed)` 200ms later for a typo they
22
+ * could have caught at edit time.
23
+ *
24
+ * Per-rule semantic checks (catalog name resolution, skill compatibility,
25
+ * spawnable agent registry lookups, etc.) stay server-side — they need
26
+ * tenant context the SDK doesn't have.
27
+ */
28
+ import { QodoInlineAgentValidationError } from '../client/errors.js';
29
+ /** Allowed top-level field set. Anything else triggers `D10-R5`. */
30
+ const ALLOWED_AGENT_SPEC_FIELDS = new Set([
31
+ 'apiVersion',
32
+ 'kind',
33
+ 'name',
34
+ 'instructions',
35
+ 'model',
36
+ 'tools',
37
+ 'use_managed_tools',
38
+ 'excluded_tools',
39
+ 'output_schema',
40
+ 'deps_schema',
41
+ 'skills',
42
+ 'spawnable_agents',
43
+ 'custom_code',
44
+ // Content-trust policy. Threads through to QAR's
45
+ // `AgentSpec.content_trust` field.
46
+ 'content_trust',
47
+ // Chat-mode primitive. Boolean, default `false`. Pre-wire validator
48
+ // accepts the field; QAR's `validate_spec_payload` is the canonical
49
+ // type check (rejects non-bool via Pydantic `value_error.bool_type`).
50
+ 'auto_pause_on_turn_end',
51
+ // MCP tool auto-discovery — SDK-only fields. The projection layer at
52
+ // `tasks.startWithAgent` / `tasks.startWithGraph` resolves `mcpTools`
53
+ // against the live `McpClientPool` catalog and strips both fields
54
+ // before the wire write so QAR never sees them. The pre-wire
55
+ // validator accepts them here so consumers writing the consumer-side
56
+ // ergonomic don't trip on the AgentSpec extra-field rule for an
57
+ // SDK-only surface.
58
+ 'mcpTools',
59
+ 'mcpToolOverrides',
60
+ ]);
61
+ /**
62
+ * Walk an `unknown` value asserted to be an `InlineAgentSpec`, returning
63
+ * the list of detected pre-wire violations. Empty list = pre-wire-clean
64
+ * (still subject to the server's per-rule pass at `task.start` and the
65
+ * pre-flight endpoint).
66
+ *
67
+ * Field-shape validation is intentionally shallow: we check the rules a
68
+ * dumb JSON walker can verify (forbidden keys, missing required scalars,
69
+ * `custom_code !== null`). Deeper composition rules (skill version
70
+ * resolution, spawnable agent registry, tool-name collisions) need
71
+ * tenant context and stay server-side under `validate_spec_payload`.
72
+ */
73
+ export function collectInlineAgentSpecPreWireIssues(spec) {
74
+ const issues = [];
75
+ if (typeof spec !== 'object' || spec === null || Array.isArray(spec)) {
76
+ issues.push({
77
+ rule_id: 'D10-R5',
78
+ path: '',
79
+ message: 'AgentSpec must be a JSON object',
80
+ });
81
+ return issues;
82
+ }
83
+ const obj = spec;
84
+ // D10-R1 — `custom_code` reserved; only `null` is acceptable. Any
85
+ // truthy value (string, object, boolean) is rejected.
86
+ if ('custom_code' in obj && obj.custom_code !== null && obj.custom_code !== undefined) {
87
+ issues.push({
88
+ rule_id: 'D10-R1',
89
+ path: '/custom_code',
90
+ message: 'custom_code is reserved-and-rejected until the sandboxed-execution ADR ships; set to null or omit',
91
+ });
92
+ }
93
+ // D10-R5 — unknown top-level fields. Catches `hooks` / `lifecycle`
94
+ // (D10-R3 in practice — both shapes are rejected as unknown
95
+ // top-level fields under QAR's `extra="forbid"` Pydantic config) and
96
+ // the legacy 1.x `customPythonAgentPath` shape.
97
+ for (const key of Object.keys(obj)) {
98
+ if (!ALLOWED_AGENT_SPEC_FIELDS.has(key)) {
99
+ issues.push({
100
+ rule_id: key === 'hooks' || key === 'lifecycle' ? 'D10-R3' : 'D10-R5',
101
+ path: `/${key}`,
102
+ message: `AgentSpec contains forbidden top-level field "${key}"`,
103
+ });
104
+ }
105
+ }
106
+ // Required-field hygiene. Pydantic on the server reports these as
107
+ // `value_error.missing`; the SDK's pre-wire form gives them a
108
+ // `D10-SHAPE` synthetic rule_id so consumers can branch on
109
+ // structural vs semantic failures uniformly. Distinct prefix
110
+ // (`D10-SHAPE-*`) keeps them out of the wire `D10-R*` namespace QAR
111
+ // owns — we don't want SDK pre-wire ids drifting into QAR's
112
+ // documented ruleset.
113
+ if (typeof obj.apiVersion !== 'string' || obj.apiVersion.length === 0) {
114
+ issues.push({
115
+ rule_id: 'D10-SHAPE-APIVERSION',
116
+ path: '/apiVersion',
117
+ message: 'AgentSpec.apiVersion is required; set to "qar/v1"',
118
+ });
119
+ }
120
+ else if (obj.apiVersion !== 'qar/v1') {
121
+ issues.push({
122
+ rule_id: 'D10-SHAPE-APIVERSION',
123
+ path: '/apiVersion',
124
+ message: `AgentSpec.apiVersion must be "qar/v1"; got ${JSON.stringify(obj.apiVersion)}`,
125
+ });
126
+ }
127
+ if ('kind' in obj && obj.kind !== 'AgentSpec' && obj.kind !== undefined) {
128
+ issues.push({
129
+ rule_id: 'D10-SHAPE-KIND',
130
+ path: '/kind',
131
+ message: `AgentSpec.kind must be "AgentSpec" or omitted; got ${JSON.stringify(obj.kind)}`,
132
+ });
133
+ }
134
+ if (obj.instructions === undefined || obj.instructions === null) {
135
+ issues.push({
136
+ rule_id: 'D10-SHAPE-INSTRUCTIONS',
137
+ path: '/instructions',
138
+ message: 'AgentSpec.instructions is required (string or { preset: "qodo-default", append? })',
139
+ });
140
+ }
141
+ if (typeof obj.model !== 'string' || obj.model.length === 0) {
142
+ issues.push({
143
+ rule_id: 'D10-SHAPE-MODEL',
144
+ path: '/model',
145
+ message: 'AgentSpec.model is required (non-empty litellm:<provider>:<model> slug)',
146
+ });
147
+ }
148
+ return issues;
149
+ }
150
+ /**
151
+ * Type-guard form of `collectInlineAgentSpecPreWireIssues`. Throws
152
+ * `QodoInlineAgentValidationError` from `../client/errors.js` when any
153
+ * pre-wire issue is detected. Caller is `TaskClient.start` —
154
+ * `assertInlineAgentSpecPreWire(payload.agent)` runs before any wire
155
+ * write so the consumer's stack trace points at the call site, not at a
156
+ * `task.done(failed)` arriving over the wire.
157
+ *
158
+ * Lives in this module (not in the central `errors.ts`) because circular
159
+ * imports are easier to avoid when the assertion sits next to the rule
160
+ * walker that produces its message body.
161
+ */
162
+ export function assertInlineAgentSpecPreWire(spec) {
163
+ const issues = collectInlineAgentSpecPreWireIssues(spec);
164
+ if (issues.length === 0)
165
+ return;
166
+ throw new QodoInlineAgentValidationError(issues);
167
+ }
168
+ /**
169
+ * Fill in the wire-canonical `kind: 'AgentSpec'` discriminator when the
170
+ * consumer's spec omits it. `InlineAgentSpec.kind` is optional in TypeScript
171
+ * — required server-side, but the SDK is permissive at the type level so
172
+ * consumers can write `{ apiVersion, instructions, model }` literally.
173
+ * Both `task.start` dispatch and `specs.validate` need the discriminator
174
+ * on the wire, so this normalizer runs at every wire boundary.
175
+ *
176
+ * Doesn't mutate the consumer's input object — returns the same reference if
177
+ * `kind` is already set so the spread cost is paid only when needed.
178
+ */
179
+ export function normalizeInlineAgentSpec(spec) {
180
+ if (spec.kind === 'AgentSpec')
181
+ return spec;
182
+ return { ...spec, kind: 'AgentSpec' };
183
+ }
184
+ //# sourceMappingURL=agentSpec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentSpec.js","sourceRoot":"","sources":["../../src/qar/agentSpec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * SDK-internal lifecycle events surfaced on the canonical `TaskEvent` iterator
3
+ * and on `client.receive()`.
4
+ *
5
+ * These are NOT QAR envelope kinds — the `qar.client.*` namespace makes them
6
+ * unambiguously SDK-side so a stray server-side discriminant can never collide
7
+ * with one. They have no `message_id`, no `session_id`, no `payload` shape.
8
+ *
9
+ * The current set: `qar.client.reconnecting` / `qar.client.reconnected`
10
+ * / `qar.client.reconnect_failed` for transport-loss recovery, plus
11
+ * `qar.client.cancel_acked` synthesized from inbound `task.canceling`
12
+ * envelopes so consumers can render the "cancel acknowledged, awaiting
13
+ * terminal" intermediate state without expanding the `TaskEvent`
14
+ * switch. `kind` is the stable forward-compatible discriminator.
15
+ */
16
+ import type { TaskId } from './ids.js';
17
+ /** A reconnect attempt is about to fire. Emitted before the backoff sleep. */
18
+ export interface ClientReconnectingEvent {
19
+ readonly kind: 'qar.client.reconnecting';
20
+ /** 1-based attempt counter — `1` is the first retry after the drop. */
21
+ readonly attempt: number;
22
+ /** Delay in milliseconds before this attempt fires. */
23
+ readonly delayMs: number;
24
+ /** Best-effort cause describing why we're reconnecting (close code, error message). */
25
+ readonly cause?: string;
26
+ }
27
+ /** A reconnect attempt succeeded. Emitted before any replayed envelopes flow. */
28
+ export interface ClientReconnectedEvent {
29
+ readonly kind: 'qar.client.reconnected';
30
+ /** 1-based attempt counter that succeeded. */
31
+ readonly attempt: number;
32
+ }
33
+ /** Reconnect attempts exhausted. Subscriptions error out after this. */
34
+ export interface ClientReconnectFailedEvent {
35
+ readonly kind: 'qar.client.reconnect_failed';
36
+ /** Total attempts made before giving up — same as `ClientReconnectOptions.maxAttempts`. */
37
+ readonly attempts: number;
38
+ /** Best-effort message from the last failed attempt. */
39
+ readonly lastError?: string;
40
+ }
41
+ /**
42
+ * Cancellation acknowledged by the SDK.
43
+ *
44
+ * Synthesized one-to-one from an inbound `task.canceling` envelope on the
45
+ * wire — the SDK converts the envelope's payload fields into this client
46
+ * event before broadcasting to subscriptions. Surfaces on the canonical
47
+ * `AsyncIterable<TaskEvent>` so a consumer waiting on the iterator can
48
+ * render the "cancel ack received, waiting for terminal `task.done`"
49
+ * intermediate state.
50
+ *
51
+ * Informational only — terminal status still arrives as `task.done
52
+ * { status: 'canceled' | 'failed' }`. Do not branch business logic on
53
+ * the pod identifiers; they're best-effort and may change between
54
+ * deployments.
55
+ *
56
+ * Surfaced as a synthetic client event rather than a first-class
57
+ * `TaskEvent` variant — keeps the consumer `switch (event.kind)`
58
+ * surface stable; consumers who don't care about cancel-ack just don't
59
+ * add the case.
60
+ */
61
+ export interface ClientCancelAckedEvent {
62
+ readonly kind: 'qar.client.cancel_acked';
63
+ /** Task whose cancellation was acknowledged (always populated). */
64
+ readonly task_id: TaskId;
65
+ /** Pod that initially received the `task.cancel`. Opaque; advisory. */
66
+ readonly receivedByPod?: string;
67
+ /** Pod that owns the task right now. Opaque; advisory. */
68
+ readonly owningPod?: string;
69
+ /** Echo of the original `TaskCancelPayload.reason`, if any. */
70
+ readonly cancelReason?: string;
71
+ /** Best-effort SLO hint for time until terminal `task.done` arrives. Advisory. */
72
+ readonly expectedTerminalWithinS?: number;
73
+ }
74
+ export type ClientEvent = ClientReconnectingEvent | ClientReconnectedEvent | ClientReconnectFailedEvent | ClientCancelAckedEvent;
75
+ /** Discriminator literal type covering every `ClientEvent` variant. */
76
+ export type ClientEventKind = ClientEvent['kind'];
77
+ /**
78
+ * Type guard: `true` for `qar.client.*` synthetic events.
79
+ *
80
+ * Accepts `unknown` so JS callers (or callers feeding raw deserialized JSON)
81
+ * can drop arbitrary values in without crashing on `null` / `undefined` /
82
+ * primitives. Only objects with a string `kind` matching one of the
83
+ * synthetic kinds return `true`.
84
+ */
85
+ export declare function isClientEvent(value: unknown): value is ClientEvent;
86
+ //# sourceMappingURL=clientEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientEvents.d.ts","sourceRoot":"","sources":["../../src/qar/clientEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uFAAuF;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,iFAAiF;AACjF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wEAAwE;AACxE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED,MAAM,MAAM,WAAW,GACnB,uBAAuB,GACvB,sBAAsB,GACtB,0BAA0B,GAC1B,sBAAsB,CAAC;AAE3B,uEAAuE;AACvE,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AASlD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAIlE"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * SDK-internal lifecycle events surfaced on the canonical `TaskEvent` iterator
3
+ * and on `client.receive()`.
4
+ *
5
+ * These are NOT QAR envelope kinds — the `qar.client.*` namespace makes them
6
+ * unambiguously SDK-side so a stray server-side discriminant can never collide
7
+ * with one. They have no `message_id`, no `session_id`, no `payload` shape.
8
+ *
9
+ * The current set: `qar.client.reconnecting` / `qar.client.reconnected`
10
+ * / `qar.client.reconnect_failed` for transport-loss recovery, plus
11
+ * `qar.client.cancel_acked` synthesized from inbound `task.canceling`
12
+ * envelopes so consumers can render the "cancel acknowledged, awaiting
13
+ * terminal" intermediate state without expanding the `TaskEvent`
14
+ * switch. `kind` is the stable forward-compatible discriminator.
15
+ */
16
+ const CLIENT_EVENT_KINDS = new Set([
17
+ 'qar.client.reconnecting',
18
+ 'qar.client.reconnected',
19
+ 'qar.client.reconnect_failed',
20
+ 'qar.client.cancel_acked',
21
+ ]);
22
+ /**
23
+ * Type guard: `true` for `qar.client.*` synthetic events.
24
+ *
25
+ * Accepts `unknown` so JS callers (or callers feeding raw deserialized JSON)
26
+ * can drop arbitrary values in without crashing on `null` / `undefined` /
27
+ * primitives. Only objects with a string `kind` matching one of the
28
+ * synthetic kinds return `true`.
29
+ */
30
+ export function isClientEvent(value) {
31
+ if (typeof value !== 'object' || value === null)
32
+ return false;
33
+ const kind = value.kind;
34
+ return typeof kind === 'string' && CLIENT_EVENT_KINDS.has(kind);
35
+ }
36
+ //# sourceMappingURL=clientEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientEvents.js","sourceRoot":"","sources":["../../src/qar/clientEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA0EH,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAkB;IACvE,yBAAyB;IACzB,wBAAwB;IACxB,6BAA6B;IAC7B,yBAAyB;CAC1B,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,IAAI,GAAI,KAAqC,CAAC,IAAI,CAAC;IACzD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,227 @@
1
+ /**
2
+ * QAR envelope discriminated union — public surface.
3
+ *
4
+ * Backed by the codegen output in `./generated/envelope.ts` (regenerated from
5
+ * `schemas/qar/envelope.json` via `npm run codegen:qar`). This file is the
6
+ * curated overlay: it re-exports the codegen variants under both their
7
+ * QAR-native names (`TaskStart`, `TaskContinue`, …) and the SDK-2.0
8
+ * `…Envelope` aliases, and it sharpens the codegen output where the wire
9
+ * is stricter than the schema can express:
10
+ *
11
+ * - `kind` is required (Pydantic exports it with a default, which makes
12
+ * json-schema-to-typescript emit it optional). On the wire it is always
13
+ * present and acts as the discriminator.
14
+ * - `envelope_version` is the literal `1` (same Pydantic-default reason).
15
+ * - `message_id` / `session_id` / `parent_message_id` are branded UUID
16
+ * strings (`MessageId` / `SessionId`) so callers cannot accidentally
17
+ * swap them at API boundaries — a property the JSON Schema can't
18
+ * express but the SDK relies on.
19
+ *
20
+ * The direction whitelists below stay hand-written: they're an SDK-side
21
+ * projection of QAR's `protocol/envelopes.py` taxonomy.
22
+ */
23
+ import type { TaskStart, TaskContinue, TaskCancel, TaskResubscribe, TaskDelta, TaskDone, ToolRequest, ToolResponse, StateUpdate, AgentSpawn, BulletinPost, ArtifactAdd, FlowPause, FlowResume, ErrorEnv } from './generated/envelope.js';
24
+ import type { MessageId, SessionId } from './ids.js';
25
+ import type { TaskCancelingPayload, TaskForceResumePayload, TaskForceResumedPayload, TaskStartedPayload, TaskStartPayload, ToolRequestPayload, ToolResponsePayload } from './payloads.js';
26
+ /** Envelope-version literal. QAR bumps this on any breaking schema change. */
27
+ export type EnvelopeVersion = 1;
28
+ /**
29
+ * Sharpens a codegen ONGOING envelope variant: marks `kind` +
30
+ * `envelope_version` required, brands the UUID id fields. Generic so we
31
+ * apply it once per variant without duplicating the field list.
32
+ *
33
+ * Corresponds to `_OngoingEnvelopeBase` — every kind EXCEPT
34
+ * `task.start` carries `session_id` on the wire. The companion
35
+ * {@link SharpenStart} is the `_StartEnvelopeBase` shape (no
36
+ * `session_id`); the SDK's start encoder strips the field at emit-time,
37
+ * but the public wire overlay must mirror the omission so raw senders
38
+ * via {@link QodoClient.send} can't compile an invalid `task.start`.
39
+ */
40
+ type Sharpen<T extends {
41
+ kind?: string;
42
+ }> = Omit<T, 'kind' | 'envelope_version' | 'message_id' | 'session_id' | 'parent_message_id'> & {
43
+ readonly kind: NonNullable<T['kind']>;
44
+ readonly envelope_version: EnvelopeVersion;
45
+ readonly message_id: MessageId;
46
+ readonly session_id: SessionId;
47
+ readonly parent_message_id?: MessageId | null;
48
+ };
49
+ /**
50
+ * Sharpens a `_StartEnvelopeBase` codegen variant — same as
51
+ * {@link Sharpen} but WITHOUT `session_id`. The `task.start` envelope
52
+ * does not carry `session_id` on the wire; the server derives it from
53
+ * `(tenant_id, payload.idempotency_key)` during the ingress
54
+ * bind-and-derive phase. QAR's Pydantic model has `extra="forbid"`, so
55
+ * any stray `session_id` on a `task.start` would fail server-side
56
+ * parsing.
57
+ */
58
+ type SharpenStart<T extends {
59
+ kind?: string;
60
+ }> = Omit<T, 'kind' | 'envelope_version' | 'message_id' | 'session_id' | 'parent_message_id'> & {
61
+ readonly kind: NonNullable<T['kind']>;
62
+ readonly envelope_version: EnvelopeVersion;
63
+ readonly message_id: MessageId;
64
+ readonly parent_message_id?: MessageId | null;
65
+ };
66
+ /**
67
+ * `task.start` envelope — `payload` is the discriminated union
68
+ * (`{ agent_id, ... } | { agent, ... } | { graph, ... }`) rather than
69
+ * the pre-amendment single-variant codegen shape. The generated
70
+ * `TaskStart.payload` still carries the original
71
+ * `{ agent_id, input, skill? }` shape; the `Omit<…, 'payload'> & { payload:
72
+ * TaskStartPayload }` swap masks it until QAR's schema export catches
73
+ * up.
74
+ *
75
+ * Built on {@link SharpenStart} (not {@link Sharpen}) so the type has
76
+ * NO `session_id` field — `task.start` is QAR's `_StartEnvelopeBase`,
77
+ * and the server-side `extra="forbid"` Pydantic config rejects a stray
78
+ * `session_id`. The SDK's encoder (`Connection.sendEnvelope` for
79
+ * `kind === 'task.start'`) strips the field at emit-time; the type
80
+ * narrowing here ensures raw senders via {@link QodoClient.send} can't
81
+ * compile an invalid envelope either.
82
+ */
83
+ export type TaskStartEnvelope = Omit<SharpenStart<TaskStart>, 'payload'> & {
84
+ readonly payload: TaskStartPayload;
85
+ };
86
+ /**
87
+ * `task.started` envelope — admission-commit ack.
88
+ *
89
+ * Hand-rolled `EnvelopeBase + { kind, payload }` shape because the
90
+ * variant is not yet in the vendored schema bundle. Same pattern the
91
+ * parallel-batched tool envelopes use while their schema bump is in
92
+ * flight; when the schema is bumped and `npm run codegen:qar`
93
+ * regenerates `./generated/envelope.ts`, fold this back into a
94
+ * `Sharpen<>` over the codegen variant.
95
+ *
96
+ * Per the QAR wire `_OngoingEnvelopeBase.parent_message_id` narrowing
97
+ * for this kind: the field is **required and non-nullable** — it equals
98
+ * the originating `task.start.message_id` and the SDK uses it for
99
+ * correlation. The SDK's `parseEnvelope` does NOT enforce the
100
+ * narrowing (the codegen base allows nullable), but the routing logic
101
+ * in `TaskSubscription.consider` matches on `parent_message_id` so a
102
+ * spec-violating server emit with `parent_message_id = null` would fail
103
+ * to route — surfaces as an absent ack from the consumer's POV (the
104
+ * `sessionId` promise never resolves), not a silent miss.
105
+ */
106
+ export interface TaskStartedEnvelope extends EnvelopeBase {
107
+ readonly kind: 'task.started';
108
+ readonly parent_message_id: MessageId;
109
+ readonly payload: TaskStartedPayload;
110
+ }
111
+ export type TaskContinueEnvelope = Sharpen<TaskContinue>;
112
+ export type TaskCancelEnvelope = Sharpen<TaskCancel>;
113
+ /**
114
+ * `task.canceling` envelope — cancel-ack surface.
115
+ *
116
+ * Carried as a hand-rolled `EnvelopeBase + { kind, payload }` shape
117
+ * because the variant is not yet in the vendored schema bundle. When
118
+ * the schema is bumped and `npm run codegen:qar` regenerates
119
+ * `./generated/envelope.ts`, fold this back into a `Sharpen<>` over the
120
+ * codegen variant.
121
+ */
122
+ export interface TaskCancelingEnvelope extends EnvelopeBase {
123
+ readonly kind: 'task.canceling';
124
+ readonly payload: TaskCancelingPayload;
125
+ }
126
+ export type TaskResubscribeEnvelope = Sharpen<TaskResubscribe>;
127
+ export type TaskDeltaEnvelope = Sharpen<TaskDelta>;
128
+ export type TaskDoneEnvelope = Sharpen<TaskDone>;
129
+ /**
130
+ * `task.forceResume` envelope — stuck-session recovery primitive (C→S).
131
+ * Hand-rolled because the variant is not yet in the vendored schema
132
+ * bundle; same pattern `task.started` uses.
133
+ *
134
+ * Built on {@link SharpenStart} (no `session_id` on the wire) because
135
+ * forceResume operates on the consumer's `idempotency_key` rather than
136
+ * an already-bound session UUID — the consumer is typically recovering
137
+ * a session whose UUID it has lost (process restart). QAR derives the
138
+ * session UUID server-side via the same `uuidv5(QAR_NS_V1, tenant_id +
139
+ * ":" + idempotency_key)` derivation as `task.start` admission.
140
+ */
141
+ export interface TaskForceResumeEnvelope extends Omit<EnvelopeBase, 'session_id'> {
142
+ readonly kind: 'task.forceResume';
143
+ readonly payload: TaskForceResumePayload;
144
+ }
145
+ /**
146
+ * `task.force_resumed` envelope — ack for `task.forceResume` (S→C).
147
+ *
148
+ * Carries the derived `session_id` (so the SDK can pin the session for
149
+ * subsequent `task.continue` calls) plus the payload's `task_id` +
150
+ * `state`. Hand-rolled mirror of `task.started`.
151
+ */
152
+ export interface TaskForceResumedEnvelope extends EnvelopeBase {
153
+ readonly kind: 'task.force_resumed';
154
+ readonly parent_message_id: MessageId;
155
+ readonly payload: TaskForceResumedPayload;
156
+ }
157
+ /**
158
+ * `tool.request` envelope — `payload` is the parallel-batched overlay
159
+ * (`calls: ToolCall[]`, required `node_name`) rather than the
160
+ * pre-amendment codegen shape. Until the schema is bumped, the
161
+ * generated `ToolRequest['payload']` is still the single-call form;
162
+ * the `Omit<…, 'payload'> & { payload: ToolRequestPayload }` swap masks
163
+ * it.
164
+ */
165
+ export type ToolRequestEnvelope = Omit<Sharpen<ToolRequest>, 'payload'> & {
166
+ readonly payload: ToolRequestPayload;
167
+ };
168
+ /** `tool.response` envelope — `payload` is the parallel-batched overlay. */
169
+ export type ToolResponseEnvelope = Omit<Sharpen<ToolResponse>, 'payload'> & {
170
+ readonly payload: ToolResponsePayload;
171
+ };
172
+ export type StateUpdateEnvelope = Sharpen<StateUpdate>;
173
+ export type AgentSpawnEnvelope = Sharpen<AgentSpawn>;
174
+ export type BulletinPostEnvelope = Sharpen<BulletinPost>;
175
+ export type ArtifactAddEnvelope = Sharpen<ArtifactAdd>;
176
+ export type FlowPauseEnvelope = Sharpen<FlowPause>;
177
+ export type FlowResumeEnvelope = Sharpen<FlowResume>;
178
+ export type ErrorEnvelope = Sharpen<ErrorEnv>;
179
+ /**
180
+ * Common fields on every envelope. Derived from the shape `Sharpen` produces
181
+ * (intersection of required base fields). Hand-written declaration so the
182
+ * exported interface is grokable in API docs without chasing the helper.
183
+ */
184
+ export interface EnvelopeBase {
185
+ readonly envelope_version: EnvelopeVersion;
186
+ readonly message_id: MessageId;
187
+ readonly parent_message_id?: MessageId | null;
188
+ readonly session_id: SessionId;
189
+ readonly trace_context: import('./generated/envelope.js').TraceContext;
190
+ readonly ts: string;
191
+ }
192
+ /**
193
+ * The 15-kind envelope discriminated union. Every QAR-side wire message lands here.
194
+ *
195
+ * Use `switch (env.kind)` to narrow; `kind` is the single source of truth (no
196
+ * payload-level discriminator, no two-level nesting).
197
+ */
198
+ export type Envelope = TaskStartEnvelope | TaskStartedEnvelope | TaskContinueEnvelope | TaskCancelEnvelope | TaskCancelingEnvelope | TaskResubscribeEnvelope | TaskDeltaEnvelope | TaskDoneEnvelope | TaskForceResumeEnvelope | TaskForceResumedEnvelope | ToolRequestEnvelope | ToolResponseEnvelope | StateUpdateEnvelope | AgentSpawnEnvelope | BulletinPostEnvelope | ArtifactAddEnvelope | FlowPauseEnvelope | FlowResumeEnvelope | ErrorEnvelope;
199
+ /** All envelope `kind` values, as a string-literal union. */
200
+ export type EnvelopeKind = Envelope['kind'];
201
+ /** Direction whitelists — kept in sync with QAR's `protocol/envelopes.py` taxonomy. */
202
+ export declare const CLIENT_TO_SERVER_KINDS: readonly ["task.start", "task.continue", "task.cancel", "task.resubscribe", "task.forceResume", "tool.response"];
203
+ export declare const SERVER_TO_CLIENT_KINDS: readonly ["task.started", "task.delta", "task.done", "task.canceling", "task.force_resumed", "tool.request", "agent.spawn", "bulletin.post", "flow.pause", "flow.resume", "error"];
204
+ /**
205
+ * Kinds the wire allows in both directions. Mirrors QAR's
206
+ * `protocol/envelopes.BIDIRECTIONAL_KINDS = {"state.update", "artifact.add"}`.
207
+ *
208
+ * **`artifact.add`** is on the QAR-side bidirectional whitelist so a future
209
+ * SDK client-emitted artifact path (a tool handler attaching a file, a skill
210
+ * pushing a structured record) can land without a wire-contract change. The
211
+ * SDK currently does not emit `artifact.add` — `ArtifactsClient` is
212
+ * observer-only and the outbound-payload union (`OutboundPayload` in
213
+ * `connection.ts`) does not include `artifact.add`. Aligning the taxonomy
214
+ * here matches the cross-repo wire contract (per the 2026-05-13 retro) so
215
+ * the SDK never rejects an inbound `artifact.add` for direction reasons.
216
+ * Same precedent as `state.update`: bidirectional on the wire, observer-only
217
+ * on the public surface today.
218
+ *
219
+ * If you're auditing where SDK-side emission lands: ArtifactsClient.onArtifact
220
+ * is the read path; emit lives in a future ticket.
221
+ */
222
+ export declare const BIDIRECTIONAL_KINDS: readonly ["state.update", "artifact.add"];
223
+ export type ClientToServerKind = (typeof CLIENT_TO_SERVER_KINDS)[number];
224
+ export type ServerToClientKind = (typeof SERVER_TO_CLIENT_KINDS)[number];
225
+ export type BidirectionalKind = (typeof BIDIRECTIONAL_KINDS)[number];
226
+ export {};
227
+ //# sourceMappingURL=envelopes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelopes.d.ts","sourceRoot":"","sources":["../../src/qar/envelopes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,eAAe,EACf,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,eAAe,CAAC;AAEvB,8EAA8E;AAC9E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC;AAEhC;;;;;;;;;;;GAWG;AACH,KAAK,OAAO,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,IAAI,IAAI,CAC9C,CAAC,EACD,MAAM,GAAG,kBAAkB,GAAG,YAAY,GAAG,YAAY,GAAG,mBAAmB,CAChF,GAAG;IACF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,eAAe,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAI/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC/C,CAAC;AAEF;;;;;;;;GAQG;AACH,KAAK,YAAY,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,IAAI,IAAI,CACnD,CAAC,EACD,MAAM,GAAG,kBAAkB,GAAG,YAAY,GAAG,YAAY,GAAG,mBAAmB,CAChF,GAAG;IACF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,eAAe,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC/C,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG;IACzE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC,CAAC;AACF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACtC;AACD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACzD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACrD;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;CACxC;AACD,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC/D,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACnD,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;IAC/E,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;CAC1C;AACD;;;;;;GAMG;AACH,MAAM,WAAW,wBAAyB,SAAQ,YAAY;IAC5D,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;CAC3C;AACD;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,GAAG;IACxE,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACtC,CAAC;AACF,4EAA4E;AAC5E,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,GAAG;IAC1E,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;CACvC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACvD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACrD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACzD,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACvD,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACnD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE9C;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,eAAe,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,OAAO,yBAAyB,EAAE,YAAY,CAAC;IACvE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAChB,iBAAiB,GACjB,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,qBAAqB,GACrB,uBAAuB,GACvB,iBAAiB,GACjB,gBAAgB,GAChB,uBAAuB,GACvB,wBAAwB,GACxB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,kBAAkB,GAClB,oBAAoB,GACpB,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,aAAa,CAAC;AAElB,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAE5C,uFAAuF;AACvF,eAAO,MAAM,sBAAsB,kHAOS,CAAC;AAE7C,eAAO,MAAM,sBAAsB,oLAYS,CAAC;AAE7C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,mBAAmB,2CAGY,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AACzE,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC"}