@qodo/sdk 0.13.4 → 2.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (764) hide show
  1. package/LICENSE +31 -118
  2. package/README.md +133 -121
  3. package/bin/qodo-skills.mjs +13 -0
  4. package/bundled-skills/code-review/SKILL.md +41 -0
  5. package/bundled-skills/pr-summary/SKILL.md +59 -0
  6. package/bundled-skills/test-gen/SKILL.md +47 -0
  7. package/dist/auth/index.browser.d.ts +38 -0
  8. package/dist/auth/index.browser.d.ts.map +1 -0
  9. package/dist/auth/index.browser.js +62 -0
  10. package/dist/auth/index.browser.js.map +1 -0
  11. package/dist/auth/index.d.ts +44 -30
  12. package/dist/auth/index.d.ts.map +1 -1
  13. package/dist/auth/index.js +57 -110
  14. package/dist/auth/index.js.map +1 -1
  15. package/dist/client/AgentsClient.d.ts +33 -0
  16. package/dist/client/AgentsClient.d.ts.map +1 -0
  17. package/dist/client/AgentsClient.js +40 -0
  18. package/dist/client/AgentsClient.js.map +1 -0
  19. package/dist/client/ArtifactsClient.d.ts +43 -0
  20. package/dist/client/ArtifactsClient.d.ts.map +1 -0
  21. package/dist/client/ArtifactsClient.js +54 -0
  22. package/dist/client/ArtifactsClient.js.map +1 -0
  23. package/dist/client/BulletinClient.d.ts +45 -0
  24. package/dist/client/BulletinClient.d.ts.map +1 -0
  25. package/dist/client/BulletinClient.js +51 -0
  26. package/dist/client/BulletinClient.js.map +1 -0
  27. package/dist/client/InfoClient.d.ts +58 -0
  28. package/dist/client/InfoClient.d.ts.map +1 -0
  29. package/dist/client/InfoClient.js +135 -0
  30. package/dist/client/InfoClient.js.map +1 -0
  31. package/dist/client/PipelineClient.d.ts +162 -0
  32. package/dist/client/PipelineClient.d.ts.map +1 -0
  33. package/dist/client/PipelineClient.js +340 -0
  34. package/dist/client/PipelineClient.js.map +1 -0
  35. package/dist/client/QarRegistryClient.d.ts +396 -0
  36. package/dist/client/QarRegistryClient.d.ts.map +1 -0
  37. package/dist/client/QarRegistryClient.js +536 -0
  38. package/dist/client/QarRegistryClient.js.map +1 -0
  39. package/dist/client/QodoClient.d.ts +296 -0
  40. package/dist/client/QodoClient.d.ts.map +1 -0
  41. package/dist/client/QodoClient.js +803 -0
  42. package/dist/client/QodoClient.js.map +1 -0
  43. package/dist/client/SpecsClient.d.ts +121 -0
  44. package/dist/client/SpecsClient.d.ts.map +1 -0
  45. package/dist/client/SpecsClient.js +252 -0
  46. package/dist/client/SpecsClient.js.map +1 -0
  47. package/dist/client/StateClient.d.ts +35 -0
  48. package/dist/client/StateClient.d.ts.map +1 -0
  49. package/dist/client/StateClient.js +36 -0
  50. package/dist/client/StateClient.js.map +1 -0
  51. package/dist/client/TaskClient.d.ts +706 -0
  52. package/dist/client/TaskClient.d.ts.map +1 -0
  53. package/dist/client/TaskClient.js +2522 -0
  54. package/dist/client/TaskClient.js.map +1 -0
  55. package/dist/client/ToolClient.d.ts +278 -0
  56. package/dist/client/ToolClient.d.ts.map +1 -0
  57. package/dist/client/ToolClient.js +1139 -0
  58. package/dist/client/ToolClient.js.map +1 -0
  59. package/dist/client/a2a/index.d.ts +10 -0
  60. package/dist/client/a2a/index.d.ts.map +1 -0
  61. package/dist/client/a2a/index.js +9 -0
  62. package/dist/client/a2a/index.js.map +1 -0
  63. package/dist/client/a2a/registerA2A.d.ts +170 -0
  64. package/dist/client/a2a/registerA2A.d.ts.map +1 -0
  65. package/dist/client/a2a/registerA2A.js +85 -0
  66. package/dist/client/a2a/registerA2A.js.map +1 -0
  67. package/dist/client/connection.d.ts +893 -0
  68. package/dist/client/connection.d.ts.map +1 -0
  69. package/dist/client/connection.js +2189 -0
  70. package/dist/client/connection.js.map +1 -0
  71. package/dist/client/errors.d.ts +735 -0
  72. package/dist/client/errors.d.ts.map +1 -0
  73. package/dist/client/errors.js +921 -0
  74. package/dist/client/errors.js.map +1 -0
  75. package/dist/client/index.d.ts +26 -0
  76. package/dist/client/index.d.ts.map +1 -0
  77. package/dist/client/index.js +20 -0
  78. package/dist/client/index.js.map +1 -0
  79. package/dist/client/inlineGraph.d.ts +66 -0
  80. package/dist/client/inlineGraph.d.ts.map +1 -0
  81. package/dist/client/inlineGraph.js +500 -0
  82. package/dist/client/inlineGraph.js.map +1 -0
  83. package/dist/client/internal/thenable.d.ts +27 -0
  84. package/dist/client/internal/thenable.d.ts.map +1 -0
  85. package/dist/client/internal/thenable.js +31 -0
  86. package/dist/client/internal/thenable.js.map +1 -0
  87. package/dist/client/iterator.d.ts +32 -0
  88. package/dist/client/iterator.d.ts.map +1 -0
  89. package/dist/client/iterator.js +73 -0
  90. package/dist/client/iterator.js.map +1 -0
  91. package/dist/client/mcp/McpClientPool.browser.d.ts +76 -0
  92. package/dist/client/mcp/McpClientPool.browser.d.ts.map +1 -0
  93. package/dist/client/mcp/McpClientPool.browser.js +78 -0
  94. package/dist/client/mcp/McpClientPool.browser.js.map +1 -0
  95. package/dist/client/mcp/McpClientPool.d.ts +236 -0
  96. package/dist/client/mcp/McpClientPool.d.ts.map +1 -0
  97. package/dist/client/mcp/McpClientPool.js +585 -0
  98. package/dist/client/mcp/McpClientPool.js.map +1 -0
  99. package/dist/client/mcp/projection.d.ts +109 -0
  100. package/dist/client/mcp/projection.d.ts.map +1 -0
  101. package/dist/client/mcp/projection.js +446 -0
  102. package/dist/client/mcp/projection.js.map +1 -0
  103. package/dist/client/mcp/substituteEnv.browser.d.ts +18 -0
  104. package/dist/client/mcp/substituteEnv.browser.d.ts.map +1 -0
  105. package/dist/client/mcp/substituteEnv.browser.js +20 -0
  106. package/dist/client/mcp/substituteEnv.browser.js.map +1 -0
  107. package/dist/client/mcp/substituteEnv.d.ts +45 -0
  108. package/dist/client/mcp/substituteEnv.d.ts.map +1 -0
  109. package/dist/client/mcp/substituteEnv.js +63 -0
  110. package/dist/client/mcp/substituteEnv.js.map +1 -0
  111. package/dist/client/observers.d.ts +57 -0
  112. package/dist/client/observers.d.ts.map +1 -0
  113. package/dist/client/observers.js +203 -0
  114. package/dist/client/observers.js.map +1 -0
  115. package/dist/client/options.d.ts +269 -0
  116. package/dist/client/options.d.ts.map +1 -0
  117. package/dist/client/options.js +9 -0
  118. package/dist/client/options.js.map +1 -0
  119. package/dist/client/tools/_readlineApprovalPrompt.browser.d.ts +17 -0
  120. package/dist/client/tools/_readlineApprovalPrompt.browser.d.ts.map +1 -0
  121. package/dist/client/tools/_readlineApprovalPrompt.browser.js +24 -0
  122. package/dist/client/tools/_readlineApprovalPrompt.browser.js.map +1 -0
  123. package/dist/client/tools/_readlineApprovalPrompt.d.ts +33 -0
  124. package/dist/client/tools/_readlineApprovalPrompt.d.ts.map +1 -0
  125. package/dist/client/tools/_readlineApprovalPrompt.js +90 -0
  126. package/dist/client/tools/_readlineApprovalPrompt.js.map +1 -0
  127. package/dist/client/tools/approval.d.ts +280 -0
  128. package/dist/client/tools/approval.d.ts.map +1 -0
  129. package/dist/client/tools/approval.js +229 -0
  130. package/dist/client/tools/approval.js.map +1 -0
  131. package/dist/client/tools/bindFunctionToolDefs.d.ts +156 -0
  132. package/dist/client/tools/bindFunctionToolDefs.d.ts.map +1 -0
  133. package/dist/client/tools/bindFunctionToolDefs.js +360 -0
  134. package/dist/client/tools/bindFunctionToolDefs.js.map +1 -0
  135. package/dist/client/tools/defineFunctionTool.d.ts +277 -0
  136. package/dist/client/tools/defineFunctionTool.d.ts.map +1 -0
  137. package/dist/client/tools/defineFunctionTool.js +190 -0
  138. package/dist/client/tools/defineFunctionTool.js.map +1 -0
  139. package/dist/client/transport.browser.d.ts +20 -0
  140. package/dist/client/transport.browser.d.ts.map +1 -0
  141. package/dist/client/transport.browser.js +29 -0
  142. package/dist/client/transport.browser.js.map +1 -0
  143. package/dist/client/transport.d.ts +47 -0
  144. package/dist/client/transport.d.ts.map +1 -0
  145. package/dist/client/transport.js +102 -0
  146. package/dist/client/transport.js.map +1 -0
  147. package/dist/client/transport.shared.d.ts +30 -0
  148. package/dist/client/transport.shared.d.ts.map +1 -0
  149. package/dist/client/transport.shared.js +40 -0
  150. package/dist/client/transport.shared.js.map +1 -0
  151. package/dist/client/uuid.d.ts +32 -0
  152. package/dist/client/uuid.d.ts.map +1 -0
  153. package/dist/client/uuid.js +65 -0
  154. package/dist/client/uuid.js.map +1 -0
  155. package/dist/index.d.ts +88 -39
  156. package/dist/index.d.ts.map +1 -1
  157. package/dist/index.js +166 -43
  158. package/dist/index.js.map +1 -1
  159. package/dist/observability/attributes.d.ts +136 -0
  160. package/dist/observability/attributes.d.ts.map +1 -0
  161. package/dist/observability/attributes.js +184 -0
  162. package/dist/observability/attributes.js.map +1 -0
  163. package/dist/observability/index.d.ts +14 -0
  164. package/dist/observability/index.d.ts.map +1 -0
  165. package/dist/observability/index.js +11 -0
  166. package/dist/observability/index.js.map +1 -0
  167. package/dist/observability/resolveOTel.browser.d.ts +13 -0
  168. package/dist/observability/resolveOTel.browser.d.ts.map +1 -0
  169. package/dist/observability/resolveOTel.browser.js +14 -0
  170. package/dist/observability/resolveOTel.browser.js.map +1 -0
  171. package/dist/observability/resolveOTel.d.ts +28 -0
  172. package/dist/observability/resolveOTel.d.ts.map +1 -0
  173. package/dist/observability/resolveOTel.js +74 -0
  174. package/dist/observability/resolveOTel.js.map +1 -0
  175. package/dist/observability/spans.d.ts +198 -0
  176. package/dist/observability/spans.d.ts.map +1 -0
  177. package/dist/observability/spans.js +300 -0
  178. package/dist/observability/spans.js.map +1 -0
  179. package/dist/observability/traceContext.d.ts +51 -0
  180. package/dist/observability/traceContext.d.ts.map +1 -0
  181. package/dist/observability/traceContext.js +151 -0
  182. package/dist/observability/traceContext.js.map +1 -0
  183. package/dist/observability/transportMetrics.d.ts +58 -0
  184. package/dist/observability/transportMetrics.d.ts.map +1 -0
  185. package/dist/observability/transportMetrics.js +55 -0
  186. package/dist/observability/transportMetrics.js.map +1 -0
  187. package/dist/qar/agentSpec.d.ts +93 -0
  188. package/dist/qar/agentSpec.d.ts.map +1 -0
  189. package/dist/qar/agentSpec.js +184 -0
  190. package/dist/qar/agentSpec.js.map +1 -0
  191. package/dist/qar/clientEvents.d.ts +86 -0
  192. package/dist/qar/clientEvents.d.ts.map +1 -0
  193. package/dist/qar/clientEvents.js +36 -0
  194. package/dist/qar/clientEvents.js.map +1 -0
  195. package/dist/qar/envelopes.d.ts +227 -0
  196. package/dist/qar/envelopes.d.ts.map +1 -0
  197. package/dist/qar/envelopes.js +67 -0
  198. package/dist/qar/envelopes.js.map +1 -0
  199. package/dist/qar/generated/envelope.d.ts +332 -0
  200. package/dist/qar/generated/envelope.d.ts.map +1 -0
  201. package/dist/qar/generated/envelope.js +15 -0
  202. package/dist/qar/generated/envelope.js.map +1 -0
  203. package/dist/qar/generated/qar-info.d.ts +76 -0
  204. package/dist/qar/generated/qar-info.d.ts.map +1 -0
  205. package/dist/qar/generated/qar-info.js +15 -0
  206. package/dist/qar/generated/qar-info.js.map +1 -0
  207. package/dist/qar/generated/qodo-task-start-payload.d.ts +54 -0
  208. package/dist/qar/generated/qodo-task-start-payload.d.ts.map +1 -0
  209. package/dist/qar/generated/qodo-task-start-payload.js +15 -0
  210. package/dist/qar/generated/qodo-task-start-payload.js.map +1 -0
  211. package/dist/qar/ids.d.ts +19 -0
  212. package/dist/qar/ids.d.ts.map +1 -0
  213. package/dist/qar/ids.js +11 -0
  214. package/dist/qar/ids.js.map +1 -0
  215. package/dist/qar/index.d.ts +24 -0
  216. package/dist/qar/index.d.ts.map +1 -0
  217. package/dist/qar/index.js +16 -0
  218. package/dist/qar/index.js.map +1 -0
  219. package/dist/qar/info.d.ts +37 -0
  220. package/dist/qar/info.d.ts.map +1 -0
  221. package/dist/qar/info.js +17 -0
  222. package/dist/qar/info.js.map +1 -0
  223. package/dist/qar/json.d.ts +14 -0
  224. package/dist/qar/json.d.ts.map +1 -0
  225. package/dist/qar/json.js +9 -0
  226. package/dist/qar/json.js.map +1 -0
  227. package/dist/qar/payloads.d.ts +480 -0
  228. package/dist/qar/payloads.d.ts.map +1 -0
  229. package/dist/qar/payloads.js +37 -0
  230. package/dist/qar/payloads.js.map +1 -0
  231. package/dist/qar/specs.d.ts +604 -0
  232. package/dist/qar/specs.d.ts.map +1 -0
  233. package/dist/qar/specs.js +29 -0
  234. package/dist/qar/specs.js.map +1 -0
  235. package/dist/qar/taskEvents.d.ts +25 -0
  236. package/dist/qar/taskEvents.d.ts.map +1 -0
  237. package/dist/qar/taskEvents.js +22 -0
  238. package/dist/qar/taskEvents.js.map +1 -0
  239. package/dist/qar/trace.d.ts +12 -0
  240. package/dist/qar/trace.d.ts.map +1 -0
  241. package/dist/qar/trace.js +12 -0
  242. package/dist/qar/trace.js.map +1 -0
  243. package/dist/skills/activation.d.ts +177 -0
  244. package/dist/skills/activation.d.ts.map +1 -0
  245. package/dist/skills/activation.js +428 -0
  246. package/dist/skills/activation.js.map +1 -0
  247. package/dist/skills/cli/index.browser.d.ts +18 -0
  248. package/dist/skills/cli/index.browser.d.ts.map +1 -0
  249. package/dist/skills/cli/index.browser.js +27 -0
  250. package/dist/skills/cli/index.browser.js.map +1 -0
  251. package/dist/skills/cli/index.d.ts +37 -0
  252. package/dist/skills/cli/index.d.ts.map +1 -0
  253. package/dist/skills/cli/index.js +494 -0
  254. package/dist/skills/cli/index.js.map +1 -0
  255. package/dist/skills/events.d.ts +255 -0
  256. package/dist/skills/events.d.ts.map +1 -0
  257. package/dist/skills/events.js +224 -0
  258. package/dist/skills/events.js.map +1 -0
  259. package/dist/skills/index.d.ts +45 -0
  260. package/dist/skills/index.d.ts.map +1 -0
  261. package/dist/skills/index.js +34 -0
  262. package/dist/skills/index.js.map +1 -0
  263. package/dist/skills/inject.d.ts +57 -0
  264. package/dist/skills/inject.d.ts.map +1 -0
  265. package/dist/skills/inject.js +162 -0
  266. package/dist/skills/inject.js.map +1 -0
  267. package/dist/skills/lockfile.browser.d.ts +56 -0
  268. package/dist/skills/lockfile.browser.d.ts.map +1 -0
  269. package/dist/skills/lockfile.browser.js +55 -0
  270. package/dist/skills/lockfile.browser.js.map +1 -0
  271. package/dist/skills/lockfile.d.ts +137 -0
  272. package/dist/skills/lockfile.d.ts.map +1 -0
  273. package/dist/skills/lockfile.js +423 -0
  274. package/dist/skills/lockfile.js.map +1 -0
  275. package/dist/skills/manager.browser.d.ts +94 -0
  276. package/dist/skills/manager.browser.d.ts.map +1 -0
  277. package/dist/skills/manager.browser.js +159 -0
  278. package/dist/skills/manager.browser.js.map +1 -0
  279. package/dist/skills/manager.d.ts +362 -0
  280. package/dist/skills/manager.d.ts.map +1 -0
  281. package/dist/skills/manager.js +1386 -0
  282. package/dist/skills/manager.js.map +1 -0
  283. package/dist/skills/mcp/index.d.ts +15 -0
  284. package/dist/skills/mcp/index.d.ts.map +1 -0
  285. package/dist/skills/mcp/index.js +12 -0
  286. package/dist/skills/mcp/index.js.map +1 -0
  287. package/dist/skills/mcp/path.browser.d.ts +27 -0
  288. package/dist/skills/mcp/path.browser.d.ts.map +1 -0
  289. package/dist/skills/mcp/path.browser.js +33 -0
  290. package/dist/skills/mcp/path.browser.js.map +1 -0
  291. package/dist/skills/mcp/path.d.ts +57 -0
  292. package/dist/skills/mcp/path.d.ts.map +1 -0
  293. package/dist/skills/mcp/path.js +150 -0
  294. package/dist/skills/mcp/path.js.map +1 -0
  295. package/dist/skills/mcp/server.browser.d.ts +32 -0
  296. package/dist/skills/mcp/server.browser.d.ts.map +1 -0
  297. package/dist/skills/mcp/server.browser.js +53 -0
  298. package/dist/skills/mcp/server.browser.js.map +1 -0
  299. package/dist/skills/mcp/server.d.ts +144 -0
  300. package/dist/skills/mcp/server.d.ts.map +1 -0
  301. package/dist/skills/mcp/server.js +841 -0
  302. package/dist/skills/mcp/server.js.map +1 -0
  303. package/dist/skills/mcp/types.d.ts +72 -0
  304. package/dist/skills/mcp/types.d.ts.map +1 -0
  305. package/dist/skills/mcp/types.js +20 -0
  306. package/dist/skills/mcp/types.js.map +1 -0
  307. package/dist/skills/mcp/wireDefs.d.ts +58 -0
  308. package/dist/skills/mcp/wireDefs.d.ts.map +1 -0
  309. package/dist/skills/mcp/wireDefs.js +141 -0
  310. package/dist/skills/mcp/wireDefs.js.map +1 -0
  311. package/dist/skills/parser.d.ts +63 -0
  312. package/dist/skills/parser.d.ts.map +1 -0
  313. package/dist/skills/parser.js +755 -0
  314. package/dist/skills/parser.js.map +1 -0
  315. package/dist/skills/prefilter.d.ts +104 -0
  316. package/dist/skills/prefilter.d.ts.map +1 -0
  317. package/dist/skills/prefilter.js +398 -0
  318. package/dist/skills/prefilter.js.map +1 -0
  319. package/dist/skills/preprocess.d.ts +169 -0
  320. package/dist/skills/preprocess.d.ts.map +1 -0
  321. package/dist/skills/preprocess.js +535 -0
  322. package/dist/skills/preprocess.js.map +1 -0
  323. package/dist/skills/render.d.ts +83 -0
  324. package/dist/skills/render.d.ts.map +1 -0
  325. package/dist/skills/render.js +397 -0
  326. package/dist/skills/render.js.map +1 -0
  327. package/dist/skills/sources/index.browser.d.ts +29 -0
  328. package/dist/skills/sources/index.browser.d.ts.map +1 -0
  329. package/dist/skills/sources/index.browser.js +16 -0
  330. package/dist/skills/sources/index.browser.js.map +1 -0
  331. package/dist/skills/sources/index.d.ts +59 -0
  332. package/dist/skills/sources/index.d.ts.map +1 -0
  333. package/dist/skills/sources/index.js +471 -0
  334. package/dist/skills/sources/index.js.map +1 -0
  335. package/dist/skills/sources/walk.browser.d.ts +17 -0
  336. package/dist/skills/sources/walk.browser.d.ts.map +1 -0
  337. package/dist/skills/sources/walk.browser.js +19 -0
  338. package/dist/skills/sources/walk.browser.js.map +1 -0
  339. package/dist/skills/sources/walk.d.ts +68 -0
  340. package/dist/skills/sources/walk.d.ts.map +1 -0
  341. package/dist/skills/sources/walk.js +264 -0
  342. package/dist/skills/sources/walk.js.map +1 -0
  343. package/dist/skills/substitute.d.ts +87 -0
  344. package/dist/skills/substitute.d.ts.map +1 -0
  345. package/dist/skills/substitute.js +322 -0
  346. package/dist/skills/substitute.js.map +1 -0
  347. package/dist/skills/testing/SkillKit.browser.d.ts +62 -0
  348. package/dist/skills/testing/SkillKit.browser.d.ts.map +1 -0
  349. package/dist/skills/testing/SkillKit.browser.js +41 -0
  350. package/dist/skills/testing/SkillKit.browser.js.map +1 -0
  351. package/dist/skills/testing/SkillKit.d.ts +130 -0
  352. package/dist/skills/testing/SkillKit.d.ts.map +1 -0
  353. package/dist/skills/testing/SkillKit.js +316 -0
  354. package/dist/skills/testing/SkillKit.js.map +1 -0
  355. package/dist/skills/testing/index.d.ts +9 -0
  356. package/dist/skills/testing/index.d.ts.map +1 -0
  357. package/dist/skills/testing/index.js +8 -0
  358. package/dist/skills/testing/index.js.map +1 -0
  359. package/dist/skills/trust.d.ts +72 -0
  360. package/dist/skills/trust.d.ts.map +1 -0
  361. package/dist/skills/trust.js +183 -0
  362. package/dist/skills/trust.js.map +1 -0
  363. package/dist/skills/types.d.ts +627 -0
  364. package/dist/skills/types.d.ts.map +1 -0
  365. package/dist/skills/types.js +85 -0
  366. package/dist/skills/types.js.map +1 -0
  367. package/dist/skills/validator.d.ts +95 -0
  368. package/dist/skills/validator.d.ts.map +1 -0
  369. package/dist/skills/validator.js +486 -0
  370. package/dist/skills/validator.js.map +1 -0
  371. package/dist/tracing/PipelineTracer.d.ts +35 -22
  372. package/dist/tracing/PipelineTracer.d.ts.map +1 -1
  373. package/dist/tracing/PipelineTracer.js +106 -61
  374. package/dist/tracing/PipelineTracer.js.map +1 -1
  375. package/dist/tracing/SdkTracer.d.ts +63 -61
  376. package/dist/tracing/SdkTracer.d.ts.map +1 -1
  377. package/dist/tracing/SdkTracer.js +185 -177
  378. package/dist/tracing/SdkTracer.js.map +1 -1
  379. package/dist/tracing/index.d.ts +10 -1
  380. package/dist/tracing/index.d.ts.map +1 -1
  381. package/dist/tracing/index.js +9 -0
  382. package/dist/tracing/index.js.map +1 -1
  383. package/dist/tracing/types.d.ts +89 -16
  384. package/dist/tracing/types.d.ts.map +1 -1
  385. package/dist/tracing/types.js +17 -4
  386. package/dist/tracing/types.js.map +1 -1
  387. package/dist/types.d.ts +6 -1
  388. package/dist/types.d.ts.map +1 -1
  389. package/dist/types.js +4 -0
  390. package/dist/types.js.map +1 -1
  391. package/dist/version.d.ts.map +1 -1
  392. package/dist/version.js +10 -20
  393. package/dist/version.js.map +1 -1
  394. package/package.json +53 -39
  395. package/.claude/skills/qodo-agent/SKILL.md +0 -974
  396. package/.claude/skills/qodo-agent/assets/programmatic-agent.ts +0 -407
  397. package/.claude/skills/qodo-agent/references/builtin-tools.md +0 -342
  398. package/.claude/skills/qodo-agent/references/common-issues.md +0 -537
  399. package/bin/rg +0 -0
  400. package/dist/api/agent.d.ts +0 -105
  401. package/dist/api/agent.d.ts.map +0 -1
  402. package/dist/api/agent.js +0 -963
  403. package/dist/api/agent.js.map +0 -1
  404. package/dist/api/analytics.d.ts +0 -43
  405. package/dist/api/analytics.d.ts.map +0 -1
  406. package/dist/api/analytics.js +0 -163
  407. package/dist/api/analytics.js.map +0 -1
  408. package/dist/api/http.d.ts +0 -5
  409. package/dist/api/http.d.ts.map +0 -1
  410. package/dist/api/http.js +0 -62
  411. package/dist/api/http.js.map +0 -1
  412. package/dist/api/index.d.ts +0 -12
  413. package/dist/api/index.d.ts.map +0 -1
  414. package/dist/api/index.js +0 -17
  415. package/dist/api/index.js.map +0 -1
  416. package/dist/api/taskTracking.d.ts +0 -54
  417. package/dist/api/taskTracking.d.ts.map +0 -1
  418. package/dist/api/taskTracking.js +0 -208
  419. package/dist/api/taskTracking.js.map +0 -1
  420. package/dist/api/types.d.ts +0 -93
  421. package/dist/api/types.d.ts.map +0 -1
  422. package/dist/api/types.js +0 -2
  423. package/dist/api/types.js.map +0 -1
  424. package/dist/api/utils.d.ts +0 -8
  425. package/dist/api/utils.d.ts.map +0 -1
  426. package/dist/api/utils.js +0 -63
  427. package/dist/api/utils.js.map +0 -1
  428. package/dist/api/websocket.d.ts +0 -203
  429. package/dist/api/websocket.d.ts.map +0 -1
  430. package/dist/api/websocket.js +0 -1166
  431. package/dist/api/websocket.js.map +0 -1
  432. package/dist/bin/install-skill.d.ts +0 -14
  433. package/dist/bin/install-skill.d.ts.map +0 -1
  434. package/dist/bin/install-skill.js +0 -125
  435. package/dist/bin/install-skill.js.map +0 -1
  436. package/dist/bin/run-helpers.d.ts +0 -34
  437. package/dist/bin/run-helpers.d.ts.map +0 -1
  438. package/dist/bin/run-helpers.js +0 -186
  439. package/dist/bin/run-helpers.js.map +0 -1
  440. package/dist/bin/run.d.ts +0 -13
  441. package/dist/bin/run.d.ts.map +0 -1
  442. package/dist/bin/run.js +0 -57
  443. package/dist/bin/run.js.map +0 -1
  444. package/dist/clients/index.d.ts +0 -10
  445. package/dist/clients/index.d.ts.map +0 -1
  446. package/dist/clients/index.js +0 -8
  447. package/dist/clients/index.js.map +0 -1
  448. package/dist/clients/info/InfoClient.d.ts +0 -37
  449. package/dist/clients/info/InfoClient.d.ts.map +0 -1
  450. package/dist/clients/info/InfoClient.js +0 -69
  451. package/dist/clients/info/InfoClient.js.map +0 -1
  452. package/dist/clients/info/index.d.ts +0 -4
  453. package/dist/clients/info/index.d.ts.map +0 -1
  454. package/dist/clients/info/index.js +0 -2
  455. package/dist/clients/info/index.js.map +0 -1
  456. package/dist/clients/info/types.d.ts +0 -21
  457. package/dist/clients/info/types.d.ts.map +0 -1
  458. package/dist/clients/info/types.js +0 -2
  459. package/dist/clients/info/types.js.map +0 -1
  460. package/dist/clients/sessions/SessionsClient.d.ts +0 -34
  461. package/dist/clients/sessions/SessionsClient.d.ts.map +0 -1
  462. package/dist/clients/sessions/SessionsClient.js +0 -71
  463. package/dist/clients/sessions/SessionsClient.js.map +0 -1
  464. package/dist/clients/sessions/index.d.ts +0 -4
  465. package/dist/clients/sessions/index.d.ts.map +0 -1
  466. package/dist/clients/sessions/index.js +0 -2
  467. package/dist/clients/sessions/index.js.map +0 -1
  468. package/dist/clients/sessions/types.d.ts +0 -20
  469. package/dist/clients/sessions/types.d.ts.map +0 -1
  470. package/dist/clients/sessions/types.js +0 -2
  471. package/dist/clients/sessions/types.js.map +0 -1
  472. package/dist/clients/tools/ToolsClient.d.ts +0 -39
  473. package/dist/clients/tools/ToolsClient.d.ts.map +0 -1
  474. package/dist/clients/tools/ToolsClient.js +0 -95
  475. package/dist/clients/tools/ToolsClient.js.map +0 -1
  476. package/dist/clients/tools/index.d.ts +0 -4
  477. package/dist/clients/tools/index.d.ts.map +0 -1
  478. package/dist/clients/tools/index.js +0 -2
  479. package/dist/clients/tools/index.js.map +0 -1
  480. package/dist/clients/tools/types.d.ts +0 -14
  481. package/dist/clients/tools/types.d.ts.map +0 -1
  482. package/dist/clients/tools/types.js +0 -2
  483. package/dist/clients/tools/types.js.map +0 -1
  484. package/dist/config/ConfigManager.d.ts +0 -43
  485. package/dist/config/ConfigManager.d.ts.map +0 -1
  486. package/dist/config/ConfigManager.js +0 -472
  487. package/dist/config/ConfigManager.js.map +0 -1
  488. package/dist/config/index.d.ts +0 -6
  489. package/dist/config/index.d.ts.map +0 -1
  490. package/dist/config/index.js +0 -7
  491. package/dist/config/index.js.map +0 -1
  492. package/dist/config/urlConfig.d.ts +0 -15
  493. package/dist/config/urlConfig.d.ts.map +0 -1
  494. package/dist/config/urlConfig.js +0 -75
  495. package/dist/config/urlConfig.js.map +0 -1
  496. package/dist/constants/errors.d.ts +0 -2
  497. package/dist/constants/errors.d.ts.map +0 -1
  498. package/dist/constants/errors.js +0 -2
  499. package/dist/constants/errors.js.map +0 -1
  500. package/dist/constants/index.d.ts +0 -7
  501. package/dist/constants/index.d.ts.map +0 -1
  502. package/dist/constants/index.js +0 -11
  503. package/dist/constants/index.js.map +0 -1
  504. package/dist/constants/tools.d.ts +0 -4
  505. package/dist/constants/tools.d.ts.map +0 -1
  506. package/dist/constants/tools.js +0 -4
  507. package/dist/constants/tools.js.map +0 -1
  508. package/dist/constants/versions.d.ts +0 -2
  509. package/dist/constants/versions.d.ts.map +0 -1
  510. package/dist/constants/versions.js +0 -2
  511. package/dist/constants/versions.js.map +0 -1
  512. package/dist/context/buildUserContext.d.ts +0 -18
  513. package/dist/context/buildUserContext.d.ts.map +0 -1
  514. package/dist/context/buildUserContext.js +0 -34
  515. package/dist/context/buildUserContext.js.map +0 -1
  516. package/dist/context/index.d.ts +0 -9
  517. package/dist/context/index.d.ts.map +0 -1
  518. package/dist/context/index.js +0 -9
  519. package/dist/context/index.js.map +0 -1
  520. package/dist/context/messageManager.d.ts +0 -42
  521. package/dist/context/messageManager.d.ts.map +0 -1
  522. package/dist/context/messageManager.js +0 -322
  523. package/dist/context/messageManager.js.map +0 -1
  524. package/dist/context/taskFocus.d.ts +0 -2
  525. package/dist/context/taskFocus.d.ts.map +0 -1
  526. package/dist/context/taskFocus.js +0 -26
  527. package/dist/context/taskFocus.js.map +0 -1
  528. package/dist/context/userInput.d.ts +0 -3
  529. package/dist/context/userInput.d.ts.map +0 -1
  530. package/dist/context/userInput.js +0 -20
  531. package/dist/context/userInput.js.map +0 -1
  532. package/dist/mcp/MCPManager.d.ts +0 -109
  533. package/dist/mcp/MCPManager.d.ts.map +0 -1
  534. package/dist/mcp/MCPManager.js +0 -592
  535. package/dist/mcp/MCPManager.js.map +0 -1
  536. package/dist/mcp/approvedTools.d.ts +0 -4
  537. package/dist/mcp/approvedTools.d.ts.map +0 -1
  538. package/dist/mcp/approvedTools.js +0 -19
  539. package/dist/mcp/approvedTools.js.map +0 -1
  540. package/dist/mcp/baseServer.d.ts +0 -75
  541. package/dist/mcp/baseServer.d.ts.map +0 -1
  542. package/dist/mcp/baseServer.js +0 -107
  543. package/dist/mcp/baseServer.js.map +0 -1
  544. package/dist/mcp/builtinServers.d.ts +0 -15
  545. package/dist/mcp/builtinServers.d.ts.map +0 -1
  546. package/dist/mcp/builtinServers.js +0 -141
  547. package/dist/mcp/builtinServers.js.map +0 -1
  548. package/dist/mcp/dynamicBEServer.d.ts +0 -20
  549. package/dist/mcp/dynamicBEServer.d.ts.map +0 -1
  550. package/dist/mcp/dynamicBEServer.js +0 -52
  551. package/dist/mcp/dynamicBEServer.js.map +0 -1
  552. package/dist/mcp/index.d.ts +0 -18
  553. package/dist/mcp/index.d.ts.map +0 -1
  554. package/dist/mcp/index.js +0 -23
  555. package/dist/mcp/index.js.map +0 -1
  556. package/dist/mcp/mcpInitialization.d.ts +0 -2
  557. package/dist/mcp/mcpInitialization.d.ts.map +0 -1
  558. package/dist/mcp/mcpInitialization.js +0 -56
  559. package/dist/mcp/mcpInitialization.js.map +0 -1
  560. package/dist/mcp/servers/filesystem.d.ts +0 -44
  561. package/dist/mcp/servers/filesystem.d.ts.map +0 -1
  562. package/dist/mcp/servers/filesystem.js +0 -776
  563. package/dist/mcp/servers/filesystem.js.map +0 -1
  564. package/dist/mcp/servers/git.d.ts +0 -18
  565. package/dist/mcp/servers/git.d.ts.map +0 -1
  566. package/dist/mcp/servers/git.js +0 -441
  567. package/dist/mcp/servers/git.js.map +0 -1
  568. package/dist/mcp/servers/ripgrep.d.ts +0 -39
  569. package/dist/mcp/servers/ripgrep.d.ts.map +0 -1
  570. package/dist/mcp/servers/ripgrep.js +0 -550
  571. package/dist/mcp/servers/ripgrep.js.map +0 -1
  572. package/dist/mcp/servers/shell.d.ts +0 -20
  573. package/dist/mcp/servers/shell.d.ts.map +0 -1
  574. package/dist/mcp/servers/shell.js +0 -519
  575. package/dist/mcp/servers/shell.js.map +0 -1
  576. package/dist/mcp/serversRegistry.d.ts +0 -55
  577. package/dist/mcp/serversRegistry.d.ts.map +0 -1
  578. package/dist/mcp/serversRegistry.js +0 -416
  579. package/dist/mcp/serversRegistry.js.map +0 -1
  580. package/dist/mcp/toolProcessor.d.ts +0 -82
  581. package/dist/mcp/toolProcessor.d.ts.map +0 -1
  582. package/dist/mcp/toolProcessor.js +0 -392
  583. package/dist/mcp/toolProcessor.js.map +0 -1
  584. package/dist/mcp/types.d.ts +0 -29
  585. package/dist/mcp/types.d.ts.map +0 -1
  586. package/dist/mcp/types.js +0 -2
  587. package/dist/mcp/types.js.map +0 -1
  588. package/dist/messages/index.d.ts +0 -8
  589. package/dist/messages/index.d.ts.map +0 -1
  590. package/dist/messages/index.js +0 -7
  591. package/dist/messages/index.js.map +0 -1
  592. package/dist/messages/openai.d.ts +0 -26
  593. package/dist/messages/openai.d.ts.map +0 -1
  594. package/dist/messages/openai.js +0 -55
  595. package/dist/messages/openai.js.map +0 -1
  596. package/dist/messages/types.d.ts +0 -73
  597. package/dist/messages/types.d.ts.map +0 -1
  598. package/dist/messages/types.js +0 -78
  599. package/dist/messages/types.js.map +0 -1
  600. package/dist/parser/index.d.ts +0 -72
  601. package/dist/parser/index.d.ts.map +0 -1
  602. package/dist/parser/index.js +0 -967
  603. package/dist/parser/index.js.map +0 -1
  604. package/dist/parser/types.d.ts +0 -153
  605. package/dist/parser/types.d.ts.map +0 -1
  606. package/dist/parser/types.js +0 -6
  607. package/dist/parser/types.js.map +0 -1
  608. package/dist/parser/utils.d.ts +0 -18
  609. package/dist/parser/utils.d.ts.map +0 -1
  610. package/dist/parser/utils.js +0 -64
  611. package/dist/parser/utils.js.map +0 -1
  612. package/dist/sdk/QodoSDK.d.ts +0 -218
  613. package/dist/sdk/QodoSDK.d.ts.map +0 -1
  614. package/dist/sdk/QodoSDK.js +0 -1115
  615. package/dist/sdk/QodoSDK.js.map +0 -1
  616. package/dist/sdk/artifacts.d.ts +0 -156
  617. package/dist/sdk/artifacts.d.ts.map +0 -1
  618. package/dist/sdk/artifacts.js +0 -166
  619. package/dist/sdk/artifacts.js.map +0 -1
  620. package/dist/sdk/bootstrap.d.ts +0 -16
  621. package/dist/sdk/bootstrap.d.ts.map +0 -1
  622. package/dist/sdk/bootstrap.js +0 -28
  623. package/dist/sdk/bootstrap.js.map +0 -1
  624. package/dist/sdk/builders.d.ts +0 -54
  625. package/dist/sdk/builders.d.ts.map +0 -1
  626. package/dist/sdk/builders.js +0 -117
  627. package/dist/sdk/builders.js.map +0 -1
  628. package/dist/sdk/defaults.d.ts +0 -11
  629. package/dist/sdk/defaults.d.ts.map +0 -1
  630. package/dist/sdk/defaults.js +0 -39
  631. package/dist/sdk/defaults.js.map +0 -1
  632. package/dist/sdk/discovery.d.ts +0 -2
  633. package/dist/sdk/discovery.d.ts.map +0 -1
  634. package/dist/sdk/discovery.js +0 -25
  635. package/dist/sdk/discovery.js.map +0 -1
  636. package/dist/sdk/events.d.ts +0 -269
  637. package/dist/sdk/events.d.ts.map +0 -1
  638. package/dist/sdk/events.js +0 -69
  639. package/dist/sdk/events.js.map +0 -1
  640. package/dist/sdk/exit-expression.d.ts +0 -13
  641. package/dist/sdk/exit-expression.d.ts.map +0 -1
  642. package/dist/sdk/exit-expression.js +0 -35
  643. package/dist/sdk/exit-expression.js.map +0 -1
  644. package/dist/sdk/index.d.ts +0 -17
  645. package/dist/sdk/index.d.ts.map +0 -1
  646. package/dist/sdk/index.js +0 -17
  647. package/dist/sdk/index.js.map +0 -1
  648. package/dist/sdk/middleware.d.ts +0 -59
  649. package/dist/sdk/middleware.d.ts.map +0 -1
  650. package/dist/sdk/middleware.js +0 -69
  651. package/dist/sdk/middleware.js.map +0 -1
  652. package/dist/sdk/pipeline/PipelineBuilder.d.ts +0 -79
  653. package/dist/sdk/pipeline/PipelineBuilder.d.ts.map +0 -1
  654. package/dist/sdk/pipeline/PipelineBuilder.js +0 -129
  655. package/dist/sdk/pipeline/PipelineBuilder.js.map +0 -1
  656. package/dist/sdk/pipeline/PipelineRunner.d.ts +0 -28
  657. package/dist/sdk/pipeline/PipelineRunner.d.ts.map +0 -1
  658. package/dist/sdk/pipeline/PipelineRunner.js +0 -326
  659. package/dist/sdk/pipeline/PipelineRunner.js.map +0 -1
  660. package/dist/sdk/pipeline/compiler.d.ts +0 -24
  661. package/dist/sdk/pipeline/compiler.d.ts.map +0 -1
  662. package/dist/sdk/pipeline/compiler.js +0 -199
  663. package/dist/sdk/pipeline/compiler.js.map +0 -1
  664. package/dist/sdk/pipeline/declarative.d.ts +0 -34
  665. package/dist/sdk/pipeline/declarative.d.ts.map +0 -1
  666. package/dist/sdk/pipeline/declarative.js +0 -9
  667. package/dist/sdk/pipeline/declarative.js.map +0 -1
  668. package/dist/sdk/pipeline/index.d.ts +0 -20
  669. package/dist/sdk/pipeline/index.d.ts.map +0 -1
  670. package/dist/sdk/pipeline/index.js +0 -19
  671. package/dist/sdk/pipeline/index.js.map +0 -1
  672. package/dist/sdk/pipeline/types.d.ts +0 -93
  673. package/dist/sdk/pipeline/types.d.ts.map +0 -1
  674. package/dist/sdk/pipeline/types.js +0 -10
  675. package/dist/sdk/pipeline/types.js.map +0 -1
  676. package/dist/sdk/policies.d.ts +0 -163
  677. package/dist/sdk/policies.d.ts.map +0 -1
  678. package/dist/sdk/policies.js +0 -243
  679. package/dist/sdk/policies.js.map +0 -1
  680. package/dist/sdk/runner/AgentRunner.d.ts +0 -22
  681. package/dist/sdk/runner/AgentRunner.d.ts.map +0 -1
  682. package/dist/sdk/runner/AgentRunner.js +0 -222
  683. package/dist/sdk/runner/AgentRunner.js.map +0 -1
  684. package/dist/sdk/runner/finalize.d.ts +0 -56
  685. package/dist/sdk/runner/finalize.d.ts.map +0 -1
  686. package/dist/sdk/runner/finalize.js +0 -155
  687. package/dist/sdk/runner/finalize.js.map +0 -1
  688. package/dist/sdk/runner/formats.d.ts +0 -7
  689. package/dist/sdk/runner/formats.d.ts.map +0 -1
  690. package/dist/sdk/runner/formats.js +0 -76
  691. package/dist/sdk/runner/formats.js.map +0 -1
  692. package/dist/sdk/runner/index.d.ts +0 -9
  693. package/dist/sdk/runner/index.d.ts.map +0 -1
  694. package/dist/sdk/runner/index.js +0 -9
  695. package/dist/sdk/runner/index.js.map +0 -1
  696. package/dist/sdk/runner/progress.d.ts +0 -3
  697. package/dist/sdk/runner/progress.d.ts.map +0 -1
  698. package/dist/sdk/runner/progress.js +0 -16
  699. package/dist/sdk/runner/progress.js.map +0 -1
  700. package/dist/sdk/schemas.d.ts +0 -72
  701. package/dist/sdk/schemas.d.ts.map +0 -1
  702. package/dist/sdk/schemas.js +0 -282
  703. package/dist/sdk/schemas.js.map +0 -1
  704. package/dist/sdk/trigger-context.d.ts +0 -24
  705. package/dist/sdk/trigger-context.d.ts.map +0 -1
  706. package/dist/sdk/trigger-context.js +0 -136
  707. package/dist/sdk/trigger-context.js.map +0 -1
  708. package/dist/session/SessionContext.d.ts +0 -89
  709. package/dist/session/SessionContext.d.ts.map +0 -1
  710. package/dist/session/SessionContext.js +0 -410
  711. package/dist/session/SessionContext.js.map +0 -1
  712. package/dist/session/environment.d.ts +0 -52
  713. package/dist/session/environment.d.ts.map +0 -1
  714. package/dist/session/environment.js +0 -27
  715. package/dist/session/environment.js.map +0 -1
  716. package/dist/session/history.d.ts +0 -18
  717. package/dist/session/history.d.ts.map +0 -1
  718. package/dist/session/history.js +0 -68
  719. package/dist/session/history.js.map +0 -1
  720. package/dist/session/index.d.ts +0 -10
  721. package/dist/session/index.d.ts.map +0 -1
  722. package/dist/session/index.js +0 -9
  723. package/dist/session/index.js.map +0 -1
  724. package/dist/session/serverData.d.ts +0 -38
  725. package/dist/session/serverData.d.ts.map +0 -1
  726. package/dist/session/serverData.js +0 -261
  727. package/dist/session/serverData.js.map +0 -1
  728. package/dist/tracing/pipelineHelpers.d.ts +0 -29
  729. package/dist/tracing/pipelineHelpers.d.ts.map +0 -1
  730. package/dist/tracing/pipelineHelpers.js +0 -224
  731. package/dist/tracing/pipelineHelpers.js.map +0 -1
  732. package/dist/tracking/Tracker.d.ts +0 -55
  733. package/dist/tracking/Tracker.d.ts.map +0 -1
  734. package/dist/tracking/Tracker.js +0 -217
  735. package/dist/tracking/Tracker.js.map +0 -1
  736. package/dist/tracking/index.d.ts +0 -8
  737. package/dist/tracking/index.d.ts.map +0 -1
  738. package/dist/tracking/index.js +0 -8
  739. package/dist/tracking/index.js.map +0 -1
  740. package/dist/tracking/schemas.d.ts +0 -292
  741. package/dist/tracking/schemas.d.ts.map +0 -1
  742. package/dist/tracking/schemas.js +0 -91
  743. package/dist/tracking/schemas.js.map +0 -1
  744. package/dist/utils/extractSetFlags.d.ts +0 -6
  745. package/dist/utils/extractSetFlags.d.ts.map +0 -1
  746. package/dist/utils/extractSetFlags.js +0 -16
  747. package/dist/utils/extractSetFlags.js.map +0 -1
  748. package/dist/utils/formatTimeAgo.d.ts +0 -2
  749. package/dist/utils/formatTimeAgo.d.ts.map +0 -1
  750. package/dist/utils/formatTimeAgo.js +0 -20
  751. package/dist/utils/formatTimeAgo.js.map +0 -1
  752. package/dist/utils/index.d.ts +0 -12
  753. package/dist/utils/index.d.ts.map +0 -1
  754. package/dist/utils/index.js +0 -12
  755. package/dist/utils/index.js.map +0 -1
  756. package/dist/utils/machineId.d.ts +0 -14
  757. package/dist/utils/machineId.d.ts.map +0 -1
  758. package/dist/utils/machineId.js +0 -66
  759. package/dist/utils/machineId.js.map +0 -1
  760. package/dist/utils/pathUtils.d.ts +0 -22
  761. package/dist/utils/pathUtils.d.ts.map +0 -1
  762. package/dist/utils/pathUtils.js +0 -54
  763. package/dist/utils/pathUtils.js.map +0 -1
  764. package/scripts/download-ripgrep.js +0 -269
@@ -0,0 +1,535 @@
1
+ /**
2
+ * `!command` body preprocessing.
3
+ *
4
+ * Skills may embed shell-command blocks that the SDK runs at body-load
5
+ * time and splices the output into the rendered body before the model
6
+ * sees it. The feature is **disabled by default** because the OSS skill
7
+ * survey (29 real skills, 0 used `!command`) suggests it's a rarely-
8
+ * needed compatibility shim, not a hot-path tool.
9
+ *
10
+ * Two block forms are recognised, mirroring Claude Code's surface:
11
+ *
12
+ * - Inline: a single-backticked command line whose body starts with
13
+ * `!`, e.g. `` `!git log --oneline -5` ``.
14
+ * - Fenced: a triple-backtick block tagged with `!`, e.g.
15
+ * ```` ```!\nbash -c 'pwd'\n``` ````.
16
+ *
17
+ * Three modes, gated through {@link SkillsPreprocessingConfig.mode}:
18
+ *
19
+ * - `'disabled'` (default) — every block is left literal. No execution,
20
+ * no telemetry. Cheapest path; ships zero attack surface.
21
+ * - `'allowlisted'` — every block's first shell-tokenised argv must
22
+ * match one of {@link SkillsPreprocessingConfig.allow}. Non-matches
23
+ * are replaced with a disable marker + `preprocess_blocked` event.
24
+ * Matches execute through the consumer's bash (or powershell, gated
25
+ * by env-var).
26
+ * - `'full'` — every block executes. Reserved for trusted environments;
27
+ * third-party skills always bypass this mode regardless of opt-in.
28
+ *
29
+ * Tier gate runs *before* the mode gate: third-party skills never
30
+ * execute, ever, regardless of `mode`. The trust derivation is the same
31
+ * value `SkillsManager.isTrusted` returns.
32
+ *
33
+ * Substitution order (per `skills-trust.md` §4):
34
+ *
35
+ * 1. `${QODO_SKILL_DIR}` substituted in the entire body text before
36
+ * block detection. Authors compose commands like
37
+ * `` `!cat ${QODO_SKILL_DIR}/references/style.md` `` so the
38
+ * command's `cwd` (and any path arguments) resolve correctly even
39
+ * when the skill is loaded from a non-default source.
40
+ * 2. `!command` blocks executed; output spliced in place.
41
+ * 3. `$ARGUMENTS` substitution (separate path) runs after
42
+ * preprocessing — output is treated as inert text, so a command
43
+ * whose stdout contains `$ARGUMENTS` will see it substituted on
44
+ * the final pass.
45
+ *
46
+ * Threat model:
47
+ *
48
+ * - Skill body content is untrusted even from a `trusted` tier — a
49
+ * skill author may have copied a recipe from the wider OSS
50
+ * ecosystem without realising it embeds a `!command`. The
51
+ * allowlist is the only mechanism that can be safely relied on for
52
+ * blast-radius control; `full` mode means "I trust every skill in
53
+ * this catalog".
54
+ * - `!command` blocks run through the consumer's shell, which gives
55
+ * them pipes / redirects / shell builtins. The allowlist gates the
56
+ * first command name only; downstream pipe tokens are not screened.
57
+ * Operators wiring `mode: 'full'` accept that trade-off. The right
58
+ * answer is to either disallow shell metacharacters in the command
59
+ * line entirely (rejected) or trust the operator's allowlist
60
+ * (accepted, with this caveat documented).
61
+ * - Hard kill via `setTimeout` + `SIGKILL`. Output capped during
62
+ * buffering — a multi-gigabyte stream is truncated as it arrives,
63
+ * not after the process completes.
64
+ * - `cwd` defaults to the skill's directory; we don't enforce
65
+ * containment because the shell can `cd` freely. Operators wiring
66
+ * `full` mode accept that.
67
+ *
68
+ * The module is async (subprocess spawn) but pure-ish: it takes a body,
69
+ * returns a transformed body + telemetry events. Caller (typically the
70
+ * MCP server's `get_skill` handler) forwards the events to the
71
+ * configured sink.
72
+ */
73
+ import { spawn } from 'node:child_process';
74
+ import * as os from 'node:os';
75
+ import * as path from 'node:path';
76
+ import { PREPROCESS_DEFAULT_MAX_OUTPUT_BYTES, PREPROCESS_DEFAULT_TIMEOUT_MS, } from './types.js';
77
+ /**
78
+ * Environment-variable gate matching Claude Code's
79
+ * `CLAUDE_CODE_USE_POWERSHELL_TOOL`. When unset, skills declaring
80
+ * `shell: powershell` get their `!command` blocks blocked with a
81
+ * `powershell_disabled` event regardless of mode.
82
+ */
83
+ export const POWERSHELL_GATE_ENV_VAR = 'QODO_SKILLS_ENABLE_POWERSHELL';
84
+ /** Placeholder substituted in place of a non-executing `!command` block. */
85
+ const DISABLE_MARKER = '[shell command execution disabled by policy]';
86
+ /**
87
+ * Preprocess a skill body. Returns the transformed body + telemetry.
88
+ *
89
+ * Calling with `mode: 'disabled'` is a no-op fast-path: the body is
90
+ * returned unchanged and no events are emitted. Operators who never
91
+ * configure preprocessing pay zero overhead.
92
+ */
93
+ export async function preprocessBody(rawBody, ctx, config) {
94
+ const mode = config?.mode ?? 'disabled';
95
+ if (mode === 'disabled') {
96
+ return { body: rawBody, events: [] };
97
+ }
98
+ const substituted = substituteQodoVars(rawBody, ctx.skill);
99
+ const blocks = findCommandBlocks(substituted);
100
+ if (blocks.length === 0) {
101
+ return { body: substituted, events: [] };
102
+ }
103
+ const events = [];
104
+ const replacements = [];
105
+ for (const block of blocks) {
106
+ if (!ctx.isTrusted) {
107
+ events.push({
108
+ kind: 'sdk.skill.preprocess_blocked',
109
+ skill: ctx.skill.fqn,
110
+ command: scrubCommandForTelemetry(block.command, ctx.skill.path),
111
+ reason: 'tier_third_party',
112
+ });
113
+ replacements.push({ block, output: DISABLE_MARKER });
114
+ continue;
115
+ }
116
+ if (ctx.skill.frontmatter.shell === 'powershell' && !powershellAllowed(ctx.env)) {
117
+ events.push({
118
+ kind: 'sdk.skill.preprocess_blocked',
119
+ skill: ctx.skill.fqn,
120
+ command: scrubCommandForTelemetry(block.command, ctx.skill.path),
121
+ reason: 'powershell_disabled',
122
+ });
123
+ replacements.push({ block, output: DISABLE_MARKER });
124
+ continue;
125
+ }
126
+ if (mode === 'allowlisted') {
127
+ const allowed = config?.allow ?? [];
128
+ // block.command may contain newlines (the fenced
129
+ // form joins every interior line into one shell-piped string).
130
+ // The first-token check would allow `git status` to slip
131
+ // `\nrm -rf /` past the gate. In allowlisted mode the only safe
132
+ // policy is to evaluate every non-blank line independently: each
133
+ // line's first token must match the allowlist, OR the whole
134
+ // command is blocked.
135
+ const linesAllowed = block.command.split('\n').every((line) => {
136
+ const trimmed = line.trim();
137
+ if (trimmed.length === 0 || trimmed.startsWith('#'))
138
+ return true;
139
+ const first = parseFirstToken(trimmed);
140
+ return first !== null && isAllowlisted(first, allowed);
141
+ });
142
+ if (!linesAllowed) {
143
+ events.push({
144
+ kind: 'sdk.skill.preprocess_blocked',
145
+ skill: ctx.skill.fqn,
146
+ command: scrubCommandForTelemetry(block.command, ctx.skill.path),
147
+ reason: 'not_allowlisted',
148
+ });
149
+ replacements.push({ block, output: DISABLE_MARKER });
150
+ continue;
151
+ }
152
+ }
153
+ const exec = await runCommand(ctx, config, block.command);
154
+ events.push({
155
+ kind: 'sdk.skill.preprocess_executed',
156
+ skill: ctx.skill.fqn,
157
+ command: scrubCommandForTelemetry(block.command, ctx.skill.path),
158
+ mode,
159
+ durationMs: exec.durationMs,
160
+ exitCode: exec.exitCode,
161
+ outputBytes: exec.outputBytes,
162
+ truncated: exec.truncated,
163
+ timedOut: exec.timedOut,
164
+ });
165
+ replacements.push({ block, output: exec.output });
166
+ }
167
+ return { body: applyReplacements(substituted, replacements), events };
168
+ }
169
+ /**
170
+ * Sanitise a command line before emitting it in telemetry. The
171
+ * substituted absolute `${QODO_SKILL_DIR}` value leaks the operator's
172
+ * filesystem layout when it lands in `sdk.skill.preprocess_*` events;
173
+ * `scrubEvent` on `SkillsManager` runs after the event is built, so we
174
+ * collapse the substituted path back to the literal `${QODO_SKILL_DIR}`
175
+ * token here.
176
+ */
177
+ function scrubCommandForTelemetry(command, skillPath) {
178
+ if (skillPath.length === 0)
179
+ return command;
180
+ return command.split(skillPath).join('${QODO_SKILL_DIR}');
181
+ }
182
+ /**
183
+ * Find all `!command` blocks in a body. The scanner walks the body once
184
+ * and emits matches in source order so the replacement step can stitch
185
+ * the output back together with a single pass.
186
+ *
187
+ * The scanner ignores `!`-prefixed commands inside non-`!` fenced
188
+ * blocks — those are narrative code samples, not commands. Conversely,
189
+ * a `!`-tagged fenced block hides any inner backticks from the inline
190
+ * regex.
191
+ */
192
+ export function findCommandBlocks(body) {
193
+ const out = [];
194
+ let i = 0;
195
+ while (i < body.length) {
196
+ if (body.startsWith('```!', i) &&
197
+ (i === 0 || body[i - 1] === '\n')) {
198
+ const blockStart = i;
199
+ let cursor = i + 4;
200
+ while (cursor < body.length && (body[cursor] === ' ' || body[cursor] === '\t'))
201
+ cursor += 1;
202
+ if (body[cursor] === '\n')
203
+ cursor += 1;
204
+ const contentStart = cursor;
205
+ const closeIdx = findFenceClose(body, cursor);
206
+ if (closeIdx === -1) {
207
+ i = blockStart + 4;
208
+ continue;
209
+ }
210
+ const command = body.slice(contentStart, closeIdx).trim();
211
+ let end = closeIdx + 3;
212
+ if (body[end] === '\n')
213
+ end += 1;
214
+ out.push({
215
+ raw: body.slice(blockStart, end),
216
+ command,
217
+ start: blockStart,
218
+ end,
219
+ });
220
+ i = end;
221
+ continue;
222
+ }
223
+ if (body.startsWith('```', i) &&
224
+ (i === 0 || body[i - 1] === '\n')) {
225
+ const close = findFenceClose(body, i + 3);
226
+ if (close === -1) {
227
+ i += 3;
228
+ continue;
229
+ }
230
+ i = close + 3;
231
+ continue;
232
+ }
233
+ if (body[i] === '`' && body[i + 1] === '!' && (i === 0 || body[i - 1] !== '\\')) {
234
+ const close = body.indexOf('`', i + 2);
235
+ if (close === -1 || body.slice(i + 2, close).includes('\n')) {
236
+ i += 1;
237
+ continue;
238
+ }
239
+ const command = body.slice(i + 2, close).trim();
240
+ if (command.length === 0) {
241
+ i = close + 1;
242
+ continue;
243
+ }
244
+ out.push({
245
+ raw: body.slice(i, close + 1),
246
+ command,
247
+ start: i,
248
+ end: close + 1,
249
+ });
250
+ i = close + 1;
251
+ continue;
252
+ }
253
+ i += 1;
254
+ }
255
+ return out;
256
+ }
257
+ function findFenceClose(body, from) {
258
+ let pos = from;
259
+ while (pos < body.length) {
260
+ const newline = body.indexOf('\n', pos);
261
+ if (newline === -1)
262
+ return -1;
263
+ pos = newline + 1;
264
+ if (body.startsWith('```', pos)) {
265
+ let tail = pos + 3;
266
+ while (tail < body.length && (body[tail] === ' ' || body[tail] === '\t'))
267
+ tail += 1;
268
+ if (tail === body.length || body[tail] === '\n')
269
+ return pos;
270
+ }
271
+ }
272
+ return -1;
273
+ }
274
+ // ---------------------------------------------------------------------------
275
+ // Substitution
276
+ // ---------------------------------------------------------------------------
277
+ /**
278
+ * Replace `${QODO_SKILL_DIR}` (and any future `${QODO_*}` vars) in the
279
+ * body. The substitution is global — every occurrence is replaced.
280
+ *
281
+ * Only `QODO_SKILL_DIR` is supported in this wave; unknown `${QODO_*}`
282
+ * references pass through literal so a typo doesn't disappear silently.
283
+ */
284
+ export function substituteQodoVars(body, skill) {
285
+ return body.replace(/\$\{QODO_([A-Z_]+)\}/g, (match, name) => {
286
+ if (name === 'SKILL_DIR')
287
+ return skill.path;
288
+ return match;
289
+ });
290
+ }
291
+ // ---------------------------------------------------------------------------
292
+ // Allowlist
293
+ // ---------------------------------------------------------------------------
294
+ /**
295
+ * Extract the first shell-tokenised argv from a command line. Matches
296
+ * `cmd args` and `cmd "with spaces"`; returns the bare command name
297
+ * with no quotes. `null` if the line is empty after tokenisation.
298
+ *
299
+ * Deliberately incomplete — we only need to know the first command
300
+ * name for allowlist gating. Pipes, env assignment, here-docs, and
301
+ * other shell features fall through to the shell itself (`bash -c`).
302
+ *
303
+ * `FOO=bar cmd` is peeled — env-assign prefixes don't change the
304
+ * command identity for allowlist purposes, and an attacker shouldn't
305
+ * be able to dodge an allowlist that whitelists `cmd` by prepending
306
+ * `PATH=/evil cmd`.
307
+ */
308
+ export function parseFirstToken(line) {
309
+ let i = 0;
310
+ while (i < line.length && (line[i] === ' ' || line[i] === '\t'))
311
+ i += 1;
312
+ while (true) {
313
+ const assignMatch = /^([A-Za-z_][A-Za-z0-9_]*)=([^\s'"`]*|'[^']*'|"[^"]*")\s+/.exec(line.slice(i));
314
+ if (assignMatch === null)
315
+ break;
316
+ i += assignMatch[0].length;
317
+ }
318
+ if (i >= line.length)
319
+ return null;
320
+ const ch = line[i];
321
+ if (ch === '"' || ch === "'") {
322
+ const close = line.indexOf(ch, i + 1);
323
+ if (close === -1)
324
+ return null;
325
+ return line.slice(i + 1, close);
326
+ }
327
+ let j = i;
328
+ while (j < line.length && !/[\s|;&<>(){}]/.test(line[j]))
329
+ j += 1;
330
+ if (j === i)
331
+ return null;
332
+ return line.slice(i, j);
333
+ }
334
+ /**
335
+ * Check whether `cmd` matches one of the allowlist entries. Match is
336
+ * left-anchored:
337
+ *
338
+ * - Bare names (`git`) match the basename of `cmd` (so `git` matches
339
+ * both `git` and `/usr/bin/git`).
340
+ * - Path-bearing entries (`/usr/bin/jq`, `./bin/foo`) must match
341
+ * verbatim.
342
+ */
343
+ export function isAllowlisted(cmd, allow) {
344
+ if (allow.length === 0)
345
+ return false;
346
+ const cmdBase = path.basename(cmd);
347
+ for (const entry of allow) {
348
+ if (entry.length === 0)
349
+ continue;
350
+ if (entry === cmd)
351
+ return true;
352
+ if (!entry.includes('/') && !entry.includes('\\') && entry === cmdBase)
353
+ return true;
354
+ }
355
+ return false;
356
+ }
357
+ function powershellAllowed(env) {
358
+ const flag = env[POWERSHELL_GATE_ENV_VAR];
359
+ if (flag === undefined)
360
+ return false;
361
+ return flag === '1' || flag.toLowerCase() === 'true' || flag.toLowerCase() === 'yes';
362
+ }
363
+ /**
364
+ * Run a single `!command` line. The command is passed verbatim to the
365
+ * consumer's shell (`/bin/bash -c '<cmd>'` on Unix, PowerShell when the
366
+ * env-var gate is on). Output (stdout + stderr) is buffered up to
367
+ * `maxOutputBytes` and the process is hard-killed after `timeoutMs`.
368
+ *
369
+ * Output framing:
370
+ *
371
+ * - Successful exit: stdout, trimmed of trailing newline.
372
+ * - Non-zero exit: `[error: <stderr or "exit N">]`. The skill loads
373
+ * anyway — preprocessing failures are not fatal to the skill body.
374
+ * - Timeout: `[error: timeout after Xms]`.
375
+ * - Truncation: appended `[truncated at <bytes>]` marker.
376
+ */
377
+ async function runCommand(ctx, config, command) {
378
+ const timeoutMs = config?.timeoutMs ?? PREPROCESS_DEFAULT_TIMEOUT_MS;
379
+ const maxOutputBytes = config?.maxOutputBytes ?? PREPROCESS_DEFAULT_MAX_OUTPUT_BYTES;
380
+ const cwd = config?.cwd ?? ctx.skill.path;
381
+ const useShell = ctx.skill.frontmatter.shell === 'powershell' ? 'powershell' : 'bash';
382
+ const now = ctx.now ?? Date.now;
383
+ const start = now();
384
+ return new Promise((resolve) => {
385
+ let bytes = 0;
386
+ let truncated = false;
387
+ const stdoutChunks = [];
388
+ const stderrChunks = [];
389
+ let timedOut = false;
390
+ const args = useShell === 'powershell'
391
+ ? ['-NoProfile', '-NonInteractive', '-Command', command]
392
+ : ['-c', command];
393
+ const cmdPath = useShell === 'powershell' ? resolvePowershellPath(ctx.env) : resolveBashPath(ctx.env);
394
+ const child = spawn(cmdPath, args, {
395
+ cwd,
396
+ env: {
397
+ ...ctx.env,
398
+ QODO_SKILL_DIR: ctx.skill.path,
399
+ },
400
+ stdio: ['ignore', 'pipe', 'pipe'],
401
+ });
402
+ const onData = (chunks, chunk) => {
403
+ if (truncated)
404
+ return;
405
+ const remaining = maxOutputBytes - bytes;
406
+ if (remaining <= 0) {
407
+ truncated = true;
408
+ child.kill('SIGKILL');
409
+ return;
410
+ }
411
+ if (chunk.length > remaining) {
412
+ chunks.push(chunk.subarray(0, remaining));
413
+ bytes += remaining;
414
+ truncated = true;
415
+ child.kill('SIGKILL');
416
+ return;
417
+ }
418
+ chunks.push(chunk);
419
+ bytes += chunk.length;
420
+ };
421
+ child.stdout.on('data', (chunk) => onData(stdoutChunks, chunk));
422
+ child.stderr.on('data', (chunk) => onData(stderrChunks, chunk));
423
+ const killTimer = setTimeout(() => {
424
+ timedOut = true;
425
+ child.kill('SIGKILL');
426
+ }, timeoutMs);
427
+ child.on('error', (err) => {
428
+ clearTimeout(killTimer);
429
+ resolve({
430
+ output: `[error: ${err.message}]`,
431
+ outputBytes: 0,
432
+ exitCode: null,
433
+ truncated: false,
434
+ timedOut: false,
435
+ durationMs: now() - start,
436
+ });
437
+ });
438
+ child.on('close', (code, signal) => {
439
+ clearTimeout(killTimer);
440
+ const stdout = Buffer.concat(stdoutChunks).toString('utf-8');
441
+ const stderr = Buffer.concat(stderrChunks).toString('utf-8');
442
+ const durationMs = now() - start;
443
+ if (timedOut) {
444
+ resolve({
445
+ output: `[error: timeout after ${timeoutMs}ms]`,
446
+ outputBytes: 0,
447
+ exitCode: null,
448
+ truncated: false,
449
+ timedOut: true,
450
+ durationMs,
451
+ });
452
+ return;
453
+ }
454
+ // When output exceeds `maxOutputBytes` we
455
+ // SIGKILL the child, which surfaces here as `signal !== null`
456
+ // even though there's useful buffered output. Treat the
457
+ // truncation kill as success-with-truncation rather than as a
458
+ // killed-by-signal error so the operator still gets the partial
459
+ // stdout. Errors from the regular non-zero-exit path are
460
+ // unchanged.
461
+ let output;
462
+ if (truncated) {
463
+ output = stripTrailingNewline(stdout);
464
+ output += `\n[truncated at ${bytes} bytes]`;
465
+ }
466
+ else if (code !== null && code !== 0) {
467
+ const reason = stderr.trim().length > 0 ? stderr.trim() : `exit ${code}`;
468
+ output = `[error: ${reason}]`;
469
+ }
470
+ else if (signal !== null) {
471
+ output = `[error: killed by ${signal}]`;
472
+ }
473
+ else {
474
+ output = stripTrailingNewline(stdout);
475
+ }
476
+ resolve({
477
+ output,
478
+ outputBytes: bytes,
479
+ exitCode: code,
480
+ truncated,
481
+ timedOut: false,
482
+ durationMs,
483
+ });
484
+ });
485
+ });
486
+ }
487
+ function resolvePowershellPath(env) {
488
+ const override = env['QODO_SKILLS_POWERSHELL_PATH'];
489
+ if (override !== undefined && override.length > 0)
490
+ return override;
491
+ if (os.platform() === 'win32')
492
+ return 'powershell.exe';
493
+ return 'pwsh';
494
+ }
495
+ /**
496
+ * Resolve the bash executable to invoke. A hardcoded `/bin/bash` would
497
+ * fail on Windows-host operators and on Nix / NixOS systems where bash
498
+ * lives under `/run/current-system/sw/bin/` instead of `/bin/`. Resolution
499
+ * order:
500
+ *
501
+ * 1. `QODO_SKILLS_BASH_PATH` env override — explicit operator
502
+ * control, takes precedence over everything.
503
+ * 2. `SHELL` env when it's a bash variant — covers the common Unix
504
+ * case where the operator's preferred shell is already on PATH.
505
+ * 3. `bash` (rely on PATH lookup) — works on macOS, most Linux
506
+ * distros, and Windows when bash is on PATH (e.g. Git Bash).
507
+ */
508
+ function resolveBashPath(env) {
509
+ const override = env['QODO_SKILLS_BASH_PATH'];
510
+ if (override !== undefined && override.length > 0)
511
+ return override;
512
+ const shell = env['SHELL'];
513
+ if (shell !== undefined && shell.length > 0 && /\bbash$/.test(shell))
514
+ return shell;
515
+ return 'bash';
516
+ }
517
+ function stripTrailingNewline(s) {
518
+ if (s.endsWith('\n'))
519
+ return s.slice(0, -1);
520
+ return s;
521
+ }
522
+ function applyReplacements(body, replacements) {
523
+ if (replacements.length === 0)
524
+ return body;
525
+ let out = '';
526
+ let cursor = 0;
527
+ for (const r of replacements) {
528
+ out += body.slice(cursor, r.block.start);
529
+ out += r.output;
530
+ cursor = r.block.end;
531
+ }
532
+ out += body.slice(cursor);
533
+ return out;
534
+ }
535
+ //# sourceMappingURL=preprocess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preprocess.js","sourceRoot":"","sources":["../../src/skills/preprocess.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Slim-index renderer.
3
+ *
4
+ * Renders the `<available_skills>` block injected into the SDK's wire
5
+ * `instructions` field. The renderer is pure: input = catalog +
6
+ * options, output = `{ text, included, truncated, telemetry }`.
7
+ *
8
+ * Per `skills.md` §5 and `skills-activation.md` §3:
9
+ *
10
+ * - Per-entry combined `description + when_to_use` capped at 1,536 chars.
11
+ * - Total block capped at `min(8000, ceil(0.01 * contextWindow))`,
12
+ * configurable via `SkillsConfig.indexCharBudget`.
13
+ * - When the catalog fits: include every latest-version skill that is
14
+ * not `disable-model-invocation: true` and matches the optional
15
+ * `paths:` filter context.
16
+ * - When the catalog exceeds budget AND no embedder is configured:
17
+ * truncate by `mtime` descending, then alphabetical; emit
18
+ * `sdk.skill.index_truncated`.
19
+ * - Caller-pinned skills are always included. If a pinned skill's
20
+ * entry doesn't fit, the budget is exceeded — emit
21
+ * `sdk.skill.index_overflow_pinned` and proceed.
22
+ * - `disable-model-invocation: true` skills are **filtered out** of
23
+ * the model-visible slim index unless caller-pinned. Pinning is the
24
+ * explicit human-in-the-loop waiver (`skills-activation.md` §2.85).
25
+ * Pinned user-only skills are still rendered with the `[loaded]`
26
+ * marker.
27
+ * - Caller-pinned + already-loaded entries marked `[loaded]`.
28
+ */
29
+ import type { ParsedSkill, SkillEvent } from './types.js';
30
+ /**
31
+ * Per-call rendering options. Each field has a sensible default — the
32
+ * minimum input is `{ skills }`.
33
+ */
34
+ export interface RenderOptions {
35
+ /** Total block char budget. Defaults to `DEFAULT_INDEX_CHAR_BUDGET` (8000). */
36
+ readonly charBudget?: number;
37
+ /**
38
+ * Caller-pinned skills (FQNs or bare names). The renderer includes
39
+ * these unconditionally and decorates them with the `[loaded]` marker
40
+ * since pinning means the body is already in conversation.
41
+ */
42
+ readonly pinned?: readonly string[];
43
+ /**
44
+ * "Current file" context for `paths:` filtering. Consumers without a
45
+ * current-file concept omit this; the renderer treats `paths:` as a
46
+ * no-op for those skills.
47
+ */
48
+ readonly currentFilePath?: string;
49
+ /**
50
+ * Whether the renderer is rendering in `paths`-aware mode. Defaults to
51
+ * `true` iff `currentFilePath` is set; consumers can force-disable
52
+ * by passing `false` so a skill carrying `paths:` is always shown
53
+ * regardless of context (useful for Slack-bot-style consumers).
54
+ */
55
+ readonly enablePathsFilter?: boolean;
56
+ }
57
+ export interface RenderResult {
58
+ /** The rendered `<available_skills>...</available_skills>` block. Empty string when no skills land. */
59
+ readonly text: string;
60
+ /** Skills that made it into the rendered block, in render order. */
61
+ readonly included: readonly ParsedSkill[];
62
+ /** `true` iff one or more skills were dropped by budget pressure. */
63
+ readonly truncated: boolean;
64
+ /** Total char count of `text`. */
65
+ readonly charsUsed: number;
66
+ /** Telemetry events the renderer would emit. Caller dispatches to the configured sink. */
67
+ readonly events: readonly SkillEvent[];
68
+ /**
69
+ * Pinned skills that were dropped because rendering them would have
70
+ * pushed the block past the renderer's hard cap (F5 — `2 ×
71
+ * charBudget`, floored at `charBudget + 4096`). Empty in the common
72
+ * case. `TaskClient` throws `SkillsBudgetExceededError` when this is
73
+ * non-empty so a buggy caller-pin list surfaces as a loud failure
74
+ * instead of a silently truncated wire payload.
75
+ */
76
+ readonly omittedPinned: readonly ParsedSkill[];
77
+ }
78
+ /**
79
+ * Render the slim index. Pure function — no IO, no state mutation; the
80
+ * caller routes the returned `events` to the configured telemetry sink.
81
+ */
82
+ export declare function renderSlimIndex(skills: readonly ParsedSkill[], opts?: RenderOptions): RenderResult;
83
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/skills/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG1D;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,uGAAuG;IACvG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kCAAkC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,WAAW,EAAE,CAAC;CAChD;AAsBD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,IAAI,GAAE,aAAkB,GACvB,YAAY,CAmJd"}