@superblocksteam/sdk-api 0.0.6 → 0.0.8

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 (497) hide show
  1. package/README.md +351 -427
  2. package/dist/api/definition.d.ts +12 -7
  3. package/dist/api/definition.d.ts.map +1 -1
  4. package/dist/api/definition.js +19 -12
  5. package/dist/api/definition.js.map +1 -1
  6. package/dist/api/definition.test.js +39 -15
  7. package/dist/api/definition.test.js.map +1 -1
  8. package/dist/api/index.d.ts +0 -2
  9. package/dist/api/index.d.ts.map +1 -1
  10. package/dist/api/index.js +0 -2
  11. package/dist/api/index.js.map +1 -1
  12. package/dist/errors.d.ts +1 -45
  13. package/dist/errors.d.ts.map +1 -1
  14. package/dist/errors.js +1 -33
  15. package/dist/errors.js.map +1 -1
  16. package/dist/index.d.ts +16 -17
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +18 -15
  19. package/dist/index.js.map +1 -1
  20. package/dist/integrations/anthropic/types.d.ts +3 -22
  21. package/dist/integrations/anthropic/types.d.ts.map +1 -1
  22. package/dist/integrations/athena/client.d.ts +1 -1
  23. package/dist/integrations/athena/client.d.ts.map +1 -1
  24. package/dist/integrations/athena/client.js.map +1 -1
  25. package/dist/integrations/athena/types.d.ts +2 -2
  26. package/dist/integrations/athena/types.d.ts.map +1 -1
  27. package/dist/integrations/base/graphql-integration-client.d.ts +8 -4
  28. package/dist/integrations/base/graphql-integration-client.d.ts.map +1 -1
  29. package/dist/integrations/base/graphql-integration-client.js +18 -5
  30. package/dist/integrations/base/graphql-integration-client.js.map +1 -1
  31. package/dist/integrations/base/index.d.ts +3 -2
  32. package/dist/integrations/base/index.d.ts.map +1 -1
  33. package/dist/integrations/base/index.js +1 -0
  34. package/dist/integrations/base/index.js.map +1 -1
  35. package/dist/integrations/base/rest-api-client-base.d.ts +48 -0
  36. package/dist/integrations/base/rest-api-client-base.d.ts.map +1 -0
  37. package/dist/integrations/base/rest-api-client-base.js +118 -0
  38. package/dist/integrations/base/rest-api-client-base.js.map +1 -0
  39. package/dist/integrations/base/rest-api-integration-client.d.ts +18 -66
  40. package/dist/integrations/base/rest-api-integration-client.d.ts.map +1 -1
  41. package/dist/integrations/base/rest-api-integration-client.js +38 -173
  42. package/dist/integrations/base/rest-api-integration-client.js.map +1 -1
  43. package/dist/integrations/base/types.d.ts +59 -59
  44. package/dist/integrations/base/types.d.ts.map +1 -1
  45. package/dist/integrations/base/types.js +23 -1
  46. package/dist/integrations/base/types.js.map +1 -1
  47. package/dist/integrations/bigquery/client.d.ts +1 -1
  48. package/dist/integrations/bigquery/client.d.ts.map +1 -1
  49. package/dist/integrations/bigquery/client.js.map +1 -1
  50. package/dist/integrations/bigquery/types.d.ts +3 -3
  51. package/dist/integrations/bigquery/types.d.ts.map +1 -1
  52. package/dist/integrations/box/types.d.ts +1 -1
  53. package/dist/integrations/cockroachdb/client.d.ts +1 -1
  54. package/dist/integrations/cockroachdb/client.d.ts.map +1 -1
  55. package/dist/integrations/cockroachdb/client.js.map +1 -1
  56. package/dist/integrations/cockroachdb/types.d.ts.map +1 -1
  57. package/dist/integrations/cosmosdb/client.d.ts +1 -1
  58. package/dist/integrations/cosmosdb/client.d.ts.map +1 -1
  59. package/dist/integrations/cosmosdb/client.js.map +1 -1
  60. package/dist/integrations/cosmosdb/client.test.js.map +1 -1
  61. package/dist/integrations/cosmosdb/types.d.ts.map +1 -1
  62. package/dist/integrations/databricks/client.d.ts +1 -1
  63. package/dist/integrations/databricks/client.d.ts.map +1 -1
  64. package/dist/integrations/databricks/client.js.map +1 -1
  65. package/dist/integrations/databricks/types.d.ts +3 -3
  66. package/dist/integrations/databricks/types.d.ts.map +1 -1
  67. package/dist/integrations/declarations.d.ts +36 -104
  68. package/dist/integrations/declarations.d.ts.map +1 -1
  69. package/dist/integrations/declarations.js +5 -68
  70. package/dist/integrations/declarations.js.map +1 -1
  71. package/dist/integrations/declarations.test.js.map +1 -1
  72. package/dist/integrations/documentation-resolver.test.d.ts +2 -0
  73. package/dist/integrations/documentation-resolver.test.d.ts.map +1 -0
  74. package/dist/integrations/documentation-resolver.test.js +774 -0
  75. package/dist/integrations/documentation-resolver.test.js.map +1 -0
  76. package/dist/integrations/documentation.d.ts +9 -0
  77. package/dist/integrations/documentation.d.ts.map +1 -0
  78. package/dist/integrations/documentation.js +300 -0
  79. package/dist/integrations/documentation.js.map +1 -0
  80. package/dist/integrations/documentation.test.d.ts +2 -0
  81. package/dist/integrations/documentation.test.d.ts.map +1 -0
  82. package/dist/integrations/documentation.test.js +81 -0
  83. package/dist/integrations/documentation.test.js.map +1 -0
  84. package/dist/integrations/dynamodb/client.d.ts +1 -1
  85. package/dist/integrations/dynamodb/client.d.ts.map +1 -1
  86. package/dist/integrations/dynamodb/client.js.map +1 -1
  87. package/dist/integrations/dynamodb/types.d.ts.map +1 -1
  88. package/dist/integrations/gcs/client.d.ts +1 -1
  89. package/dist/integrations/gcs/client.d.ts.map +1 -1
  90. package/dist/integrations/gcs/client.js.map +1 -1
  91. package/dist/integrations/gcs/types.d.ts.map +1 -1
  92. package/dist/integrations/googledrive/types.d.ts +1 -1
  93. package/dist/integrations/graphql/client.test.d.ts +15 -0
  94. package/dist/integrations/graphql/client.test.d.ts.map +1 -0
  95. package/dist/integrations/graphql/client.test.js +148 -0
  96. package/dist/integrations/graphql/client.test.js.map +1 -0
  97. package/dist/integrations/graphql/types.d.ts +22 -3
  98. package/dist/integrations/graphql/types.d.ts.map +1 -1
  99. package/dist/integrations/gsheets/client.d.ts +1 -1
  100. package/dist/integrations/gsheets/client.d.ts.map +1 -1
  101. package/dist/integrations/gsheets/client.js.map +1 -1
  102. package/dist/integrations/gsheets/types.d.ts.map +1 -1
  103. package/dist/integrations/index.d.ts +2 -12
  104. package/dist/integrations/index.d.ts.map +1 -1
  105. package/dist/integrations/index.js +2 -8
  106. package/dist/integrations/index.js.map +1 -1
  107. package/dist/integrations/lakebase/client.d.ts +1 -1
  108. package/dist/integrations/lakebase/client.d.ts.map +1 -1
  109. package/dist/integrations/lakebase/client.js.map +1 -1
  110. package/dist/integrations/lakebase/types.d.ts +4 -4
  111. package/dist/integrations/lakebase/types.d.ts.map +1 -1
  112. package/dist/integrations/mariadb/client.d.ts +1 -1
  113. package/dist/integrations/mariadb/client.d.ts.map +1 -1
  114. package/dist/integrations/mariadb/client.js.map +1 -1
  115. package/dist/integrations/mariadb/types.d.ts +2 -2
  116. package/dist/integrations/mariadb/types.d.ts.map +1 -1
  117. package/dist/integrations/mongodb/client.d.ts +1 -1
  118. package/dist/integrations/mongodb/client.d.ts.map +1 -1
  119. package/dist/integrations/mongodb/client.js.map +1 -1
  120. package/dist/integrations/mongodb/types.d.ts.map +1 -1
  121. package/dist/integrations/mssql/client.d.ts +1 -1
  122. package/dist/integrations/mssql/client.d.ts.map +1 -1
  123. package/dist/integrations/mssql/client.js.map +1 -1
  124. package/dist/integrations/mssql/types.d.ts +2 -2
  125. package/dist/integrations/mssql/types.d.ts.map +1 -1
  126. package/dist/integrations/mysql/client.d.ts +1 -1
  127. package/dist/integrations/mysql/client.d.ts.map +1 -1
  128. package/dist/integrations/mysql/client.js.map +1 -1
  129. package/dist/integrations/mysql/types.d.ts +4 -4
  130. package/dist/integrations/mysql/types.d.ts.map +1 -1
  131. package/dist/integrations/openai_v2/types.d.ts +4 -22
  132. package/dist/integrations/openai_v2/types.d.ts.map +1 -1
  133. package/dist/integrations/oracledb/client.d.ts +1 -1
  134. package/dist/integrations/oracledb/client.d.ts.map +1 -1
  135. package/dist/integrations/oracledb/client.js.map +1 -1
  136. package/dist/integrations/oracledb/types.d.ts +2 -2
  137. package/dist/integrations/oracledb/types.d.ts.map +1 -1
  138. package/dist/integrations/postgres/client.d.ts +1 -8
  139. package/dist/integrations/postgres/client.d.ts.map +1 -1
  140. package/dist/integrations/postgres/client.js.map +1 -1
  141. package/dist/integrations/postgres/types.d.ts.map +1 -1
  142. package/dist/integrations/redshift/client.d.ts +1 -1
  143. package/dist/integrations/redshift/client.d.ts.map +1 -1
  144. package/dist/integrations/redshift/client.js.map +1 -1
  145. package/dist/integrations/redshift/types.d.ts.map +1 -1
  146. package/dist/integrations/registry.d.ts +6 -27
  147. package/dist/integrations/registry.d.ts.map +1 -1
  148. package/dist/integrations/registry.js +64 -88
  149. package/dist/integrations/registry.js.map +1 -1
  150. package/dist/integrations/registry.test.js +1 -3
  151. package/dist/integrations/registry.test.js.map +1 -1
  152. package/dist/integrations/restapiintegration/client.test.d.ts +12 -0
  153. package/dist/integrations/restapiintegration/client.test.d.ts.map +1 -0
  154. package/dist/integrations/restapiintegration/client.test.js +236 -0
  155. package/dist/integrations/restapiintegration/client.test.js.map +1 -0
  156. package/dist/integrations/restapiintegration/types.d.ts +2 -2
  157. package/dist/integrations/restapiintegration/types.d.ts.map +1 -1
  158. package/dist/integrations/s3/client.d.ts +1 -1
  159. package/dist/integrations/s3/client.d.ts.map +1 -1
  160. package/dist/integrations/s3/client.js.map +1 -1
  161. package/dist/integrations/s3/types.d.ts +3 -1
  162. package/dist/integrations/s3/types.d.ts.map +1 -1
  163. package/dist/integrations/salesforce/client.d.ts +1 -1
  164. package/dist/integrations/salesforce/client.d.ts.map +1 -1
  165. package/dist/integrations/salesforce/client.js.map +1 -1
  166. package/dist/integrations/salesforce/types.d.ts.map +1 -1
  167. package/dist/integrations/slack/client.d.ts +13 -9
  168. package/dist/integrations/slack/client.d.ts.map +1 -1
  169. package/dist/integrations/slack/client.js +60 -8
  170. package/dist/integrations/slack/client.js.map +1 -1
  171. package/dist/integrations/slack/client.test.d.ts +11 -0
  172. package/dist/integrations/slack/client.test.d.ts.map +1 -0
  173. package/dist/integrations/slack/client.test.js +368 -0
  174. package/dist/integrations/slack/client.test.js.map +1 -0
  175. package/dist/integrations/slack/index.d.ts +2 -1
  176. package/dist/integrations/slack/index.d.ts.map +1 -1
  177. package/dist/integrations/slack/index.js +1 -0
  178. package/dist/integrations/slack/index.js.map +1 -1
  179. package/dist/integrations/slack/types.d.ts +127 -28
  180. package/dist/integrations/slack/types.d.ts.map +1 -1
  181. package/dist/integrations/slack/types.js +27 -1
  182. package/dist/integrations/slack/types.js.map +1 -1
  183. package/dist/integrations/smtp/client.d.ts +1 -1
  184. package/dist/integrations/smtp/client.d.ts.map +1 -1
  185. package/dist/integrations/smtp/client.js.map +1 -1
  186. package/dist/integrations/snowflake/client.d.ts +3 -3
  187. package/dist/integrations/snowflake/client.d.ts.map +1 -1
  188. package/dist/integrations/snowflake/client.js +2 -2
  189. package/dist/integrations/snowflake/client.js.map +1 -1
  190. package/dist/integrations/snowflake/types.d.ts.map +1 -1
  191. package/dist/integrations/snowflakecortex/client.d.ts +1 -2
  192. package/dist/integrations/snowflakecortex/client.d.ts.map +1 -1
  193. package/dist/integrations/snowflakecortex/client.js +1 -2
  194. package/dist/integrations/snowflakecortex/client.js.map +1 -1
  195. package/dist/integrations/snowflakecortex/types.d.ts +3 -4
  196. package/dist/integrations/snowflakecortex/types.d.ts.map +1 -1
  197. package/dist/integrations/snowflakepostgres/client.d.ts +1 -1
  198. package/dist/integrations/snowflakepostgres/client.d.ts.map +1 -1
  199. package/dist/integrations/snowflakepostgres/client.js.map +1 -1
  200. package/dist/integrations/snowflakepostgres/types.d.ts.map +1 -1
  201. package/dist/runtime/context.d.ts +3 -3
  202. package/dist/runtime/context.d.ts.map +1 -1
  203. package/dist/runtime/context.js.map +1 -1
  204. package/dist/runtime/executor.d.ts +2 -2
  205. package/dist/runtime/index.d.ts +0 -3
  206. package/dist/runtime/index.d.ts.map +1 -1
  207. package/dist/runtime/index.js +1 -6
  208. package/dist/runtime/index.js.map +1 -1
  209. package/dist/types.d.ts +15 -6
  210. package/dist/types.d.ts.map +1 -1
  211. package/package.json +7 -7
  212. package/src/api/definition.test.ts +41 -15
  213. package/src/api/definition.ts +20 -13
  214. package/src/api/index.ts +0 -4
  215. package/src/errors.ts +1 -49
  216. package/src/index.ts +20 -61
  217. package/src/integrations/airtable/docs.manifest.json +5 -0
  218. package/src/integrations/anthropic/README.md +5 -101
  219. package/src/integrations/anthropic/docs.manifest.json +5 -0
  220. package/src/integrations/anthropic/types.ts +3 -29
  221. package/src/integrations/asana/README.md +12 -12
  222. package/src/integrations/asana/docs.manifest.json +5 -0
  223. package/src/integrations/athena/README.md +4 -4
  224. package/src/integrations/athena/client.ts +5 -3
  225. package/src/integrations/athena/docs.manifest.json +5 -0
  226. package/src/integrations/athena/types.ts +3 -2
  227. package/src/integrations/base/graphql-integration-client.ts +27 -5
  228. package/src/integrations/base/index.ts +3 -3
  229. package/src/integrations/base/rest-api-client-base.ts +158 -0
  230. package/src/integrations/base/rest-api-integration-client.ts +62 -237
  231. package/src/integrations/base/types.ts +68 -64
  232. package/src/integrations/bigquery/README.md +28 -3
  233. package/src/integrations/bigquery/client.ts +5 -3
  234. package/src/integrations/bigquery/docs.manifest.json +5 -0
  235. package/src/integrations/bigquery/types.ts +4 -3
  236. package/src/integrations/bitbucket/README.md +19 -19
  237. package/src/integrations/bitbucket/docs.manifest.json +5 -0
  238. package/src/integrations/box/README.md +24 -24
  239. package/src/integrations/box/docs.manifest.json +5 -0
  240. package/src/integrations/box/types.ts +1 -1
  241. package/src/integrations/circleci/README.md +18 -18
  242. package/src/integrations/circleci/docs.manifest.json +5 -0
  243. package/src/integrations/cockroachdb/client.ts +5 -3
  244. package/src/integrations/cockroachdb/docs.manifest.json +5 -0
  245. package/src/integrations/cockroachdb/types.ts +1 -0
  246. package/src/integrations/cohere/README.md +11 -11
  247. package/src/integrations/cohere/docs.manifest.json +5 -0
  248. package/src/integrations/confluence/docs.manifest.json +5 -0
  249. package/src/integrations/cosmosdb/client.test.ts +2 -1
  250. package/src/integrations/cosmosdb/client.ts +5 -3
  251. package/src/integrations/cosmosdb/docs.manifest.json +5 -0
  252. package/src/integrations/cosmosdb/types.ts +1 -0
  253. package/src/integrations/databricks/README.md +29 -4
  254. package/src/integrations/databricks/client.ts +5 -3
  255. package/src/integrations/databricks/docs.manifest.json +5 -0
  256. package/src/integrations/databricks/types.ts +4 -3
  257. package/src/integrations/datadog/docs.manifest.json +5 -0
  258. package/src/integrations/declarations.test.ts +1 -0
  259. package/src/integrations/declarations.ts +36 -136
  260. package/src/integrations/documentation-resolver.test.ts +893 -0
  261. package/src/integrations/documentation.test.ts +120 -0
  262. package/src/integrations/documentation.ts +473 -0
  263. package/src/integrations/dropbox/docs.manifest.json +5 -0
  264. package/src/integrations/dynamodb/client.ts +3 -2
  265. package/src/integrations/dynamodb/docs.manifest.json +5 -0
  266. package/src/integrations/dynamodb/types.ts +1 -0
  267. package/src/integrations/elasticsearch/docs.manifest.json +5 -0
  268. package/src/integrations/fireworks/README.md +43 -17
  269. package/src/integrations/fireworks/docs.manifest.json +5 -0
  270. package/src/integrations/front/docs.manifest.json +5 -0
  271. package/src/integrations/gcs/client.ts +5 -3
  272. package/src/integrations/gcs/docs.manifest.json +5 -0
  273. package/src/integrations/gcs/types.ts +1 -0
  274. package/src/integrations/gemini/docs.manifest.json +5 -0
  275. package/src/integrations/github/docs.manifest.json +5 -0
  276. package/src/integrations/googleanalytics/README.md +2 -2
  277. package/src/integrations/googleanalytics/docs.manifest.json +5 -0
  278. package/src/integrations/googledrive/README.md +27 -24
  279. package/src/integrations/googledrive/docs.manifest.json +5 -0
  280. package/src/integrations/googledrive/types.ts +1 -1
  281. package/src/integrations/graphql/README.md +2 -2
  282. package/src/integrations/graphql/client.test.ts +220 -0
  283. package/src/integrations/graphql/docs.manifest.json +10 -0
  284. package/src/integrations/graphql/overlays/dynamic-headers.md +34 -0
  285. package/src/integrations/graphql/types.ts +23 -1
  286. package/src/integrations/groq/README.md +49 -42
  287. package/src/integrations/groq/docs.manifest.json +5 -0
  288. package/src/integrations/gsheets/README.md +2 -2
  289. package/src/integrations/gsheets/client.ts +5 -3
  290. package/src/integrations/gsheets/docs.manifest.json +5 -0
  291. package/src/integrations/gsheets/types.ts +1 -0
  292. package/src/integrations/hubspot/docs.manifest.json +5 -0
  293. package/src/integrations/index.ts +1 -52
  294. package/src/integrations/intercom/docs.manifest.json +5 -0
  295. package/src/integrations/jira/docs.manifest.json +5 -0
  296. package/src/integrations/lakebase/README.md +242 -0
  297. package/src/integrations/lakebase/client.ts +6 -4
  298. package/src/integrations/lakebase/docs.manifest.json +5 -0
  299. package/src/integrations/lakebase/types.ts +5 -4
  300. package/src/integrations/launchdarkly/README.md +2 -2
  301. package/src/integrations/launchdarkly/docs.manifest.json +5 -0
  302. package/src/integrations/mariadb/README.md +3 -3
  303. package/src/integrations/mariadb/client.ts +5 -3
  304. package/src/integrations/mariadb/docs.manifest.json +5 -0
  305. package/src/integrations/mariadb/types.ts +3 -2
  306. package/src/integrations/mistral/README.md +39 -13
  307. package/src/integrations/mistral/docs.manifest.json +5 -0
  308. package/src/integrations/mongodb/README.md +65 -12
  309. package/src/integrations/mongodb/client.ts +5 -3
  310. package/src/integrations/mongodb/docs.manifest.json +5 -0
  311. package/src/integrations/mongodb/types.ts +1 -0
  312. package/src/integrations/mssql/README.md +3 -3
  313. package/src/integrations/mssql/client.ts +5 -3
  314. package/src/integrations/mssql/docs.manifest.json +5 -0
  315. package/src/integrations/mssql/types.ts +3 -2
  316. package/src/integrations/mysql/README.md +4 -4
  317. package/src/integrations/mysql/client.ts +5 -3
  318. package/src/integrations/mysql/docs.manifest.json +5 -0
  319. package/src/integrations/mysql/types.ts +5 -4
  320. package/src/integrations/notion/docs.manifest.json +5 -0
  321. package/src/integrations/openai_v2/README.md +44 -116
  322. package/src/integrations/openai_v2/docs.manifest.json +5 -0
  323. package/src/integrations/openai_v2/types.ts +4 -29
  324. package/src/integrations/oracledb/README.md +3 -3
  325. package/src/integrations/oracledb/client.ts +5 -3
  326. package/src/integrations/oracledb/docs.manifest.json +5 -0
  327. package/src/integrations/oracledb/types.ts +3 -2
  328. package/src/integrations/pagerduty/README.md +2 -2
  329. package/src/integrations/pagerduty/docs.manifest.json +5 -0
  330. package/src/integrations/perplexity/README.md +39 -47
  331. package/src/integrations/perplexity/docs.manifest.json +5 -0
  332. package/src/integrations/postgres/client.ts +7 -5
  333. package/src/integrations/postgres/docs.manifest.json +5 -0
  334. package/src/integrations/postgres/types.ts +1 -0
  335. package/src/integrations/redshift/client.ts +5 -3
  336. package/src/integrations/redshift/docs.manifest.json +5 -0
  337. package/src/integrations/redshift/types.ts +1 -0
  338. package/src/integrations/registry.test.ts +2 -3
  339. package/src/integrations/registry.ts +69 -188
  340. package/src/integrations/restapiintegration/README.md +320 -0
  341. package/src/integrations/restapiintegration/client.test.ts +359 -0
  342. package/src/integrations/restapiintegration/docs.manifest.json +14 -0
  343. package/src/integrations/restapiintegration/overlays/response-types-unsupported.md +5 -0
  344. package/src/integrations/restapiintegration/overlays/response-types.md +26 -0
  345. package/src/integrations/restapiintegration/types.ts +2 -8
  346. package/src/integrations/s3/client.ts +5 -3
  347. package/src/integrations/s3/docs.manifest.json +5 -0
  348. package/src/integrations/s3/types.ts +4 -1
  349. package/src/integrations/salesforce/README.md +11 -9
  350. package/src/integrations/salesforce/client.ts +3 -2
  351. package/src/integrations/salesforce/docs.manifest.json +5 -0
  352. package/src/integrations/salesforce/types.ts +1 -0
  353. package/src/integrations/segment/docs.manifest.json +5 -0
  354. package/src/integrations/sendgrid/README.md +2 -2
  355. package/src/integrations/sendgrid/docs.manifest.json +5 -0
  356. package/src/integrations/slack/README.md +62 -19
  357. package/src/integrations/slack/client.test.ts +553 -0
  358. package/src/integrations/slack/client.ts +92 -12
  359. package/src/integrations/slack/docs.manifest.json +5 -0
  360. package/src/integrations/slack/index.ts +6 -1
  361. package/src/integrations/slack/types.ts +142 -29
  362. package/src/integrations/smtp/README.md +220 -0
  363. package/src/integrations/smtp/client.ts +4 -2
  364. package/src/integrations/smtp/docs.manifest.json +5 -0
  365. package/src/integrations/snowflake/client.ts +7 -5
  366. package/src/integrations/snowflake/docs.manifest.json +5 -0
  367. package/src/integrations/snowflake/types.ts +1 -0
  368. package/src/integrations/snowflakecortex/README.md +167 -0
  369. package/src/integrations/snowflakecortex/client.ts +2 -3
  370. package/src/integrations/snowflakecortex/docs.manifest.json +5 -0
  371. package/src/integrations/snowflakecortex/types.ts +3 -11
  372. package/src/integrations/snowflakepostgres/README.md +233 -0
  373. package/src/integrations/snowflakepostgres/client.ts +1 -1
  374. package/src/integrations/snowflakepostgres/docs.manifest.json +5 -0
  375. package/src/integrations/snowflakepostgres/types.ts +1 -0
  376. package/src/integrations/stabilityai/README.md +2 -2
  377. package/src/integrations/stabilityai/docs.manifest.json +5 -0
  378. package/src/integrations/stripe/docs.manifest.json +5 -0
  379. package/src/integrations/superblocks-ocr/docs.manifest.json +5 -0
  380. package/src/integrations/twilio/docs.manifest.json +5 -0
  381. package/src/integrations/zendesk/docs.manifest.json +5 -0
  382. package/src/integrations/zoom/README.md +15 -15
  383. package/src/integrations/zoom/docs.manifest.json +5 -0
  384. package/src/runtime/context.ts +11 -11
  385. package/src/runtime/executor.ts +2 -2
  386. package/src/runtime/index.ts +1 -23
  387. package/src/types.ts +16 -6
  388. package/dist/api/streaming.d.ts +0 -229
  389. package/dist/api/streaming.d.ts.map +0 -1
  390. package/dist/api/streaming.js +0 -107
  391. package/dist/api/streaming.js.map +0 -1
  392. package/dist/api/streaming.test.d.ts +0 -5
  393. package/dist/api/streaming.test.d.ts.map +0 -1
  394. package/dist/api/streaming.test.js +0 -364
  395. package/dist/api/streaming.test.js.map +0 -1
  396. package/dist/integrations/couchbase/client.d.ts +0 -36
  397. package/dist/integrations/couchbase/client.d.ts.map +0 -1
  398. package/dist/integrations/couchbase/client.js +0 -148
  399. package/dist/integrations/couchbase/client.js.map +0 -1
  400. package/dist/integrations/couchbase/index.d.ts +0 -8
  401. package/dist/integrations/couchbase/index.d.ts.map +0 -1
  402. package/dist/integrations/couchbase/index.js +0 -7
  403. package/dist/integrations/couchbase/index.js.map +0 -1
  404. package/dist/integrations/couchbase/types.d.ts +0 -100
  405. package/dist/integrations/couchbase/types.d.ts.map +0 -1
  406. package/dist/integrations/couchbase/types.js +0 -5
  407. package/dist/integrations/couchbase/types.js.map +0 -1
  408. package/dist/integrations/kafka/client.d.ts +0 -25
  409. package/dist/integrations/kafka/client.d.ts.map +0 -1
  410. package/dist/integrations/kafka/client.js +0 -124
  411. package/dist/integrations/kafka/client.js.map +0 -1
  412. package/dist/integrations/kafka/index.d.ts +0 -8
  413. package/dist/integrations/kafka/index.d.ts.map +0 -1
  414. package/dist/integrations/kafka/index.js +0 -7
  415. package/dist/integrations/kafka/index.js.map +0 -1
  416. package/dist/integrations/kafka/types.d.ts +0 -113
  417. package/dist/integrations/kafka/types.d.ts.map +0 -1
  418. package/dist/integrations/kafka/types.js +0 -5
  419. package/dist/integrations/kafka/types.js.map +0 -1
  420. package/dist/integrations/kinesis/client.d.ts +0 -31
  421. package/dist/integrations/kinesis/client.d.ts.map +0 -1
  422. package/dist/integrations/kinesis/client.js +0 -101
  423. package/dist/integrations/kinesis/client.js.map +0 -1
  424. package/dist/integrations/kinesis/index.d.ts +0 -8
  425. package/dist/integrations/kinesis/index.d.ts.map +0 -1
  426. package/dist/integrations/kinesis/index.js +0 -7
  427. package/dist/integrations/kinesis/index.js.map +0 -1
  428. package/dist/integrations/kinesis/types.d.ts +0 -97
  429. package/dist/integrations/kinesis/types.d.ts.map +0 -1
  430. package/dist/integrations/kinesis/types.js +0 -7
  431. package/dist/integrations/kinesis/types.js.map +0 -1
  432. package/dist/integrations/python/client.d.ts +0 -42
  433. package/dist/integrations/python/client.d.ts.map +0 -1
  434. package/dist/integrations/python/client.js +0 -89
  435. package/dist/integrations/python/client.js.map +0 -1
  436. package/dist/integrations/python/client.test.d.ts +0 -5
  437. package/dist/integrations/python/client.test.d.ts.map +0 -1
  438. package/dist/integrations/python/client.test.js +0 -214
  439. package/dist/integrations/python/client.test.js.map +0 -1
  440. package/dist/integrations/python/index.d.ts +0 -6
  441. package/dist/integrations/python/index.d.ts.map +0 -1
  442. package/dist/integrations/python/index.js +0 -5
  443. package/dist/integrations/python/index.js.map +0 -1
  444. package/dist/integrations/python/types.d.ts +0 -85
  445. package/dist/integrations/python/types.d.ts.map +0 -1
  446. package/dist/integrations/python/types.js +0 -5
  447. package/dist/integrations/python/types.js.map +0 -1
  448. package/dist/integrations/redis/client.d.ts +0 -43
  449. package/dist/integrations/redis/client.d.ts.map +0 -1
  450. package/dist/integrations/redis/client.js +0 -142
  451. package/dist/integrations/redis/client.js.map +0 -1
  452. package/dist/integrations/redis/index.d.ts +0 -8
  453. package/dist/integrations/redis/index.d.ts.map +0 -1
  454. package/dist/integrations/redis/index.js +0 -7
  455. package/dist/integrations/redis/index.js.map +0 -1
  456. package/dist/integrations/redis/types.d.ts +0 -137
  457. package/dist/integrations/redis/types.d.ts.map +0 -1
  458. package/dist/integrations/redis/types.js +0 -5
  459. package/dist/integrations/redis/types.js.map +0 -1
  460. package/dist/runtime/execute.d.ts +0 -128
  461. package/dist/runtime/execute.d.ts.map +0 -1
  462. package/dist/runtime/execute.js +0 -84
  463. package/dist/runtime/execute.js.map +0 -1
  464. package/dist/runtime/streaming-context.d.ts +0 -49
  465. package/dist/runtime/streaming-context.d.ts.map +0 -1
  466. package/dist/runtime/streaming-context.js +0 -71
  467. package/dist/runtime/streaming-context.js.map +0 -1
  468. package/dist/runtime/streaming-executor.d.ts +0 -159
  469. package/dist/runtime/streaming-executor.d.ts.map +0 -1
  470. package/dist/runtime/streaming-executor.js +0 -229
  471. package/dist/runtime/streaming-executor.js.map +0 -1
  472. package/src/api/streaming.test.ts +0 -432
  473. package/src/api/streaming.ts +0 -302
  474. package/src/integrations/couchbase/README.md +0 -138
  475. package/src/integrations/couchbase/client.ts +0 -224
  476. package/src/integrations/couchbase/index.ts +0 -8
  477. package/src/integrations/couchbase/types.ts +0 -125
  478. package/src/integrations/kafka/README.md +0 -144
  479. package/src/integrations/kafka/client.ts +0 -215
  480. package/src/integrations/kafka/index.ts +0 -14
  481. package/src/integrations/kafka/types.ts +0 -127
  482. package/src/integrations/kinesis/README.md +0 -153
  483. package/src/integrations/kinesis/client.ts +0 -146
  484. package/src/integrations/kinesis/index.ts +0 -14
  485. package/src/integrations/kinesis/types.ts +0 -114
  486. package/src/integrations/python/README.md +0 -566
  487. package/src/integrations/python/client.test.ts +0 -340
  488. package/src/integrations/python/client.ts +0 -134
  489. package/src/integrations/python/index.ts +0 -6
  490. package/src/integrations/python/types.ts +0 -91
  491. package/src/integrations/redis/README.md +0 -200
  492. package/src/integrations/redis/client.ts +0 -207
  493. package/src/integrations/redis/index.ts +0 -8
  494. package/src/integrations/redis/types.ts +0 -166
  495. package/src/runtime/execute.ts +0 -221
  496. package/src/runtime/streaming-context.ts +0 -164
  497. package/src/runtime/streaming-executor.ts +0 -367
@@ -0,0 +1,774 @@
1
+ import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { describe, expect, it } from "vitest";
5
+ import { resolveIntegrationDocumentation } from "./documentation.js";
6
+ function createPluginDocsFixture(pluginId, files) {
7
+ const rootDirectory = mkdtempSync(join(tmpdir(), "sdk-docs-"));
8
+ const pluginDirectory = join(rootDirectory, pluginId);
9
+ mkdirSync(pluginDirectory, { recursive: true });
10
+ for (const [relativePath, content] of Object.entries(files)) {
11
+ const absolutePath = join(pluginDirectory, relativePath);
12
+ mkdirSync(join(absolutePath, ".."), { recursive: true });
13
+ writeFileSync(absolutePath, content);
14
+ }
15
+ return rootDirectory;
16
+ }
17
+ describe("resolveIntegrationDocumentation", () => {
18
+ it("returns base README when no manifest exists", async () => {
19
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
20
+ "README.md": "base-docs",
21
+ });
22
+ try {
23
+ const docs = await resolveIntegrationDocumentation("dropbox", {
24
+ pluginVersion: "0.4.0",
25
+ integrationsDirectory,
26
+ });
27
+ expect(docs).toBe("base-docs");
28
+ }
29
+ finally {
30
+ rmSync(integrationsDirectory, { recursive: true, force: true });
31
+ }
32
+ });
33
+ it("applies matching overlays in manifest order", async () => {
34
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
35
+ "README.md": "base-docs",
36
+ "docs.manifest.json": JSON.stringify({
37
+ overlays: [
38
+ { file: "overlays/01.md", versionRange: ">=0.4.0" },
39
+ { file: "overlays/02.md", versionRange: ">=0.5.0" },
40
+ { file: "overlays/03.md", versionRange: ">=0.5.0" },
41
+ ],
42
+ }),
43
+ "overlays/01.md": "overlay-one",
44
+ "overlays/02.md": "overlay-two",
45
+ "overlays/03.md": "overlay-three",
46
+ });
47
+ try {
48
+ const docs = await resolveIntegrationDocumentation("dropbox", {
49
+ pluginVersion: "0.5.0",
50
+ integrationsDirectory,
51
+ });
52
+ expect(docs).toBe(["base-docs", "overlay-one", "overlay-two", "overlay-three"].join("\n\n"));
53
+ }
54
+ finally {
55
+ rmSync(integrationsDirectory, { recursive: true, force: true });
56
+ }
57
+ });
58
+ it("skips overlays whose version range does not match", async () => {
59
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
60
+ "README.md": "base-docs",
61
+ "docs.manifest.json": JSON.stringify({
62
+ overlays: [
63
+ { file: "overlays/match.md", versionRange: ">=0.4.0 <0.6.0" },
64
+ { file: "overlays/skip.md", versionRange: ">=0.6.0" },
65
+ ],
66
+ }),
67
+ "overlays/match.md": "overlay-match",
68
+ "overlays/skip.md": "overlay-skip",
69
+ });
70
+ try {
71
+ const docs = await resolveIntegrationDocumentation("dropbox", {
72
+ pluginVersion: "0.5.1",
73
+ integrationsDirectory,
74
+ });
75
+ expect(docs).toBe(["base-docs", "overlay-match"].join("\n\n"));
76
+ }
77
+ finally {
78
+ rmSync(integrationsDirectory, { recursive: true, force: true });
79
+ }
80
+ });
81
+ it("returns base docs when pluginVersion is missing", async () => {
82
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
83
+ "README.md": "base-docs",
84
+ "docs.manifest.json": JSON.stringify({
85
+ overlays: [{ file: "overlays/01.md", versionRange: ">=0.4.0" }],
86
+ }),
87
+ "overlays/01.md": "overlay-one",
88
+ });
89
+ try {
90
+ const docs = await resolveIntegrationDocumentation("dropbox", {
91
+ integrationsDirectory,
92
+ });
93
+ expect(docs).toBe("base-docs");
94
+ }
95
+ finally {
96
+ rmSync(integrationsDirectory, { recursive: true, force: true });
97
+ }
98
+ });
99
+ it("throws on invalid manifest shape", async () => {
100
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
101
+ "README.md": "base-docs",
102
+ "docs.manifest.json": JSON.stringify({
103
+ overlays: [{ versionRange: ">=0.4.0" }],
104
+ }),
105
+ });
106
+ try {
107
+ await expect(resolveIntegrationDocumentation("dropbox", {
108
+ pluginVersion: "0.5.0",
109
+ integrationsDirectory,
110
+ })).rejects.toThrowError(/Invalid overlay entry/);
111
+ }
112
+ finally {
113
+ rmSync(integrationsDirectory, { recursive: true, force: true });
114
+ }
115
+ });
116
+ it("replaces markdown sections via overlay directives", async () => {
117
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
118
+ "README.md": [
119
+ "# Dropbox",
120
+ "",
121
+ "## Authentication",
122
+ "Old auth docs",
123
+ "",
124
+ "## Limits",
125
+ "Old limits docs",
126
+ ].join("\n"),
127
+ "docs.manifest.json": JSON.stringify({
128
+ overlays: [
129
+ { file: "overlays/replace-auth.md", versionRange: ">=0.4.0" },
130
+ ],
131
+ }),
132
+ "overlays/replace-auth.md": [
133
+ "## @replace: Authentication",
134
+ "New auth docs",
135
+ "With multiple lines",
136
+ ].join("\n"),
137
+ });
138
+ try {
139
+ const docs = await resolveIntegrationDocumentation("dropbox", {
140
+ pluginVersion: "0.4.1",
141
+ integrationsDirectory,
142
+ });
143
+ expect(docs).toContain("## Authentication\nNew auth docs\nWith multiple lines");
144
+ expect(docs).toContain("## Limits\nOld limits docs");
145
+ expect(docs).not.toContain("Old auth docs");
146
+ }
147
+ finally {
148
+ rmSync(integrationsDirectory, { recursive: true, force: true });
149
+ }
150
+ });
151
+ it("applies replace overlays in manifest order", async () => {
152
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
153
+ "README.md": ["# Dropbox", "", "## Authentication", "v1 auth"].join("\n"),
154
+ "docs.manifest.json": JSON.stringify({
155
+ overlays: [
156
+ { file: "overlays/replace-auth-v2.md", versionRange: ">=0.4.0" },
157
+ { file: "overlays/replace-auth-v3.md", versionRange: ">=0.4.0" },
158
+ ],
159
+ }),
160
+ "overlays/replace-auth-v2.md": [
161
+ "## @replace: Authentication",
162
+ "v2 auth",
163
+ ].join("\n"),
164
+ "overlays/replace-auth-v3.md": [
165
+ "## @replace: Authentication",
166
+ "v3 auth",
167
+ ].join("\n"),
168
+ });
169
+ try {
170
+ const docs = await resolveIntegrationDocumentation("dropbox", {
171
+ pluginVersion: "0.4.1",
172
+ integrationsDirectory,
173
+ });
174
+ expect(docs).toContain("## Authentication\nv3 auth");
175
+ expect(docs).not.toContain("v1 auth");
176
+ expect(docs).not.toContain("v2 auth");
177
+ }
178
+ finally {
179
+ rmSync(integrationsDirectory, { recursive: true, force: true });
180
+ }
181
+ });
182
+ it("throws when replace target section does not exist", async () => {
183
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
184
+ "README.md": ["# Dropbox", "", "## Authentication", "auth docs"].join("\n"),
185
+ "docs.manifest.json": JSON.stringify({
186
+ overlays: [
187
+ { file: "overlays/missing-target.md", versionRange: ">=0.4.0" },
188
+ ],
189
+ }),
190
+ "overlays/missing-target.md": [
191
+ "## @replace: Limits",
192
+ "new limits docs",
193
+ ].join("\n"),
194
+ });
195
+ try {
196
+ await expect(resolveIntegrationDocumentation("dropbox", {
197
+ pluginVersion: "0.4.1",
198
+ integrationsDirectory,
199
+ })).rejects.toThrowError(/could not find section/i);
200
+ }
201
+ finally {
202
+ rmSync(integrationsDirectory, { recursive: true, force: true });
203
+ }
204
+ });
205
+ it("handles mixed append and replace in a single overlay", async () => {
206
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
207
+ "README.md": [
208
+ "# Dropbox",
209
+ "",
210
+ "## Setup",
211
+ "Old setup content",
212
+ "",
213
+ "## Usage",
214
+ "Usage content",
215
+ ].join("\n"),
216
+ "docs.manifest.json": JSON.stringify({
217
+ overlays: [{ file: "overlays/mixed.md", versionRange: ">=0.4.0" }],
218
+ }),
219
+ "overlays/mixed.md": [
220
+ "Appended intro paragraph",
221
+ "",
222
+ "## @replace: Setup",
223
+ "New setup content",
224
+ ].join("\n"),
225
+ });
226
+ try {
227
+ const docs = await resolveIntegrationDocumentation("dropbox", {
228
+ pluginVersion: "0.5.0",
229
+ integrationsDirectory,
230
+ });
231
+ expect(docs).toContain("Appended intro paragraph");
232
+ expect(docs).toContain("## Setup\nNew setup content");
233
+ expect(docs).not.toContain("Old setup content");
234
+ expect(docs).toContain("## Usage\nUsage content");
235
+ }
236
+ finally {
237
+ rmSync(integrationsDirectory, { recursive: true, force: true });
238
+ }
239
+ });
240
+ it("handles multiple @replace directives in a single overlay", async () => {
241
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
242
+ "README.md": [
243
+ "# Dropbox",
244
+ "",
245
+ "## Auth",
246
+ "Old auth",
247
+ "",
248
+ "## Limits",
249
+ "Old limits",
250
+ "",
251
+ "## Usage",
252
+ "Usage content",
253
+ ].join("\n"),
254
+ "docs.manifest.json": JSON.stringify({
255
+ overlays: [
256
+ { file: "overlays/multi-replace.md", versionRange: ">=0.4.0" },
257
+ ],
258
+ }),
259
+ "overlays/multi-replace.md": [
260
+ "## @replace: Auth",
261
+ "New auth",
262
+ "",
263
+ "## @replace: Limits",
264
+ "New limits",
265
+ ].join("\n"),
266
+ });
267
+ try {
268
+ const docs = await resolveIntegrationDocumentation("dropbox", {
269
+ pluginVersion: "0.4.0",
270
+ integrationsDirectory,
271
+ });
272
+ expect(docs).toContain("## Auth\nNew auth");
273
+ expect(docs).toContain("## Limits\nNew limits");
274
+ expect(docs).toContain("## Usage\nUsage content");
275
+ expect(docs).not.toContain("Old auth");
276
+ expect(docs).not.toContain("Old limits");
277
+ }
278
+ finally {
279
+ rmSync(integrationsDirectory, { recursive: true, force: true });
280
+ }
281
+ });
282
+ it("replaces the last section in the document", async () => {
283
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
284
+ "README.md": [
285
+ "# Dropbox",
286
+ "",
287
+ "## First",
288
+ "First content",
289
+ "",
290
+ "## Last",
291
+ "Old last content",
292
+ "More old last content",
293
+ ].join("\n"),
294
+ "docs.manifest.json": JSON.stringify({
295
+ overlays: [
296
+ { file: "overlays/replace-last.md", versionRange: ">=0.4.0" },
297
+ ],
298
+ }),
299
+ "overlays/replace-last.md": [
300
+ "## @replace: Last",
301
+ "New last content",
302
+ ].join("\n"),
303
+ });
304
+ try {
305
+ const docs = await resolveIntegrationDocumentation("dropbox", {
306
+ pluginVersion: "0.4.0",
307
+ integrationsDirectory,
308
+ });
309
+ expect(docs).toContain("## Last\nNew last content");
310
+ expect(docs).toContain("## First\nFirst content");
311
+ expect(docs).not.toContain("Old last content");
312
+ }
313
+ finally {
314
+ rmSync(integrationsDirectory, { recursive: true, force: true });
315
+ }
316
+ });
317
+ it("respects heading hierarchy when replacing nested sections", async () => {
318
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
319
+ "README.md": [
320
+ "# Dropbox",
321
+ "",
322
+ "## Auth",
323
+ "Auth intro",
324
+ "",
325
+ "### OAuth",
326
+ "OAuth details",
327
+ "",
328
+ "### API Key",
329
+ "API key details",
330
+ "",
331
+ "## Usage",
332
+ "Usage content",
333
+ ].join("\n"),
334
+ "docs.manifest.json": JSON.stringify({
335
+ overlays: [
336
+ { file: "overlays/replace-oauth.md", versionRange: ">=0.4.0" },
337
+ ],
338
+ }),
339
+ "overlays/replace-oauth.md": [
340
+ "### @replace: OAuth",
341
+ "New OAuth flow",
342
+ ].join("\n"),
343
+ });
344
+ try {
345
+ const docs = await resolveIntegrationDocumentation("dropbox", {
346
+ pluginVersion: "0.4.0",
347
+ integrationsDirectory,
348
+ });
349
+ expect(docs).toContain("### OAuth\nNew OAuth flow");
350
+ expect(docs).toContain("### API Key\nAPI key details");
351
+ expect(docs).toContain("## Usage\nUsage content");
352
+ expect(docs).not.toContain("OAuth details");
353
+ }
354
+ finally {
355
+ rmSync(integrationsDirectory, { recursive: true, force: true });
356
+ }
357
+ });
358
+ it("ignores empty overlay content (whitespace only)", async () => {
359
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
360
+ "README.md": "base-docs",
361
+ "docs.manifest.json": JSON.stringify({
362
+ overlays: [{ file: "overlays/empty.md", versionRange: ">=0.4.0" }],
363
+ }),
364
+ "overlays/empty.md": " \n \n ",
365
+ });
366
+ try {
367
+ const docs = await resolveIntegrationDocumentation("dropbox", {
368
+ pluginVersion: "0.5.0",
369
+ integrationsDirectory,
370
+ });
371
+ expect(docs).toBe("base-docs");
372
+ }
373
+ finally {
374
+ rmSync(integrationsDirectory, { recursive: true, force: true });
375
+ }
376
+ });
377
+ it("resolves documentation for aliased plugin IDs", async () => {
378
+ const integrationsDirectory = createPluginDocsFixture("graphql", {
379
+ "README.md": "graphql-docs",
380
+ });
381
+ try {
382
+ const docs = await resolveIntegrationDocumentation("graphqlintegration", {
383
+ integrationsDirectory,
384
+ });
385
+ expect(docs).toBe("graphql-docs");
386
+ }
387
+ finally {
388
+ rmSync(integrationsDirectory, { recursive: true, force: true });
389
+ }
390
+ });
391
+ describe("semver matching", () => {
392
+ it("matches exact version with = operator", async () => {
393
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
394
+ "README.md": "base",
395
+ "docs.manifest.json": JSON.stringify({
396
+ overlays: [{ file: "overlays/exact.md", versionRange: "=0.4.0" }],
397
+ }),
398
+ "overlays/exact.md": "exact-match",
399
+ });
400
+ try {
401
+ expect(await resolveIntegrationDocumentation("dropbox", {
402
+ pluginVersion: "0.4.0",
403
+ integrationsDirectory,
404
+ })).toBe("base\n\nexact-match");
405
+ expect(await resolveIntegrationDocumentation("dropbox", {
406
+ pluginVersion: "0.4.1",
407
+ integrationsDirectory,
408
+ })).toBe("base");
409
+ }
410
+ finally {
411
+ rmSync(integrationsDirectory, { recursive: true, force: true });
412
+ }
413
+ });
414
+ it("matches strict less-than with < operator", async () => {
415
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
416
+ "README.md": "base",
417
+ "docs.manifest.json": JSON.stringify({
418
+ overlays: [{ file: "overlays/legacy.md", versionRange: "<1.0.0" }],
419
+ }),
420
+ "overlays/legacy.md": "legacy-overlay",
421
+ });
422
+ try {
423
+ expect(await resolveIntegrationDocumentation("dropbox", {
424
+ pluginVersion: "0.9.9",
425
+ integrationsDirectory,
426
+ })).toBe("base\n\nlegacy-overlay");
427
+ expect(await resolveIntegrationDocumentation("dropbox", {
428
+ pluginVersion: "1.0.0",
429
+ integrationsDirectory,
430
+ })).toBe("base");
431
+ }
432
+ finally {
433
+ rmSync(integrationsDirectory, { recursive: true, force: true });
434
+ }
435
+ });
436
+ it("matches <= operator at boundary", async () => {
437
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
438
+ "README.md": "base",
439
+ "docs.manifest.json": JSON.stringify({
440
+ overlays: [{ file: "overlays/lte.md", versionRange: "<=1.0.0" }],
441
+ }),
442
+ "overlays/lte.md": "lte-overlay",
443
+ });
444
+ try {
445
+ expect(await resolveIntegrationDocumentation("dropbox", {
446
+ pluginVersion: "1.0.0",
447
+ integrationsDirectory,
448
+ })).toBe("base\n\nlte-overlay");
449
+ expect(await resolveIntegrationDocumentation("dropbox", {
450
+ pluginVersion: "1.0.1",
451
+ integrationsDirectory,
452
+ })).toBe("base");
453
+ }
454
+ finally {
455
+ rmSync(integrationsDirectory, { recursive: true, force: true });
456
+ }
457
+ });
458
+ it("matches > operator", async () => {
459
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
460
+ "README.md": "base",
461
+ "docs.manifest.json": JSON.stringify({
462
+ overlays: [{ file: "overlays/gt.md", versionRange: ">1.0.0" }],
463
+ }),
464
+ "overlays/gt.md": "gt-overlay",
465
+ });
466
+ try {
467
+ expect(await resolveIntegrationDocumentation("dropbox", {
468
+ pluginVersion: "1.0.0",
469
+ integrationsDirectory,
470
+ })).toBe("base");
471
+ expect(await resolveIntegrationDocumentation("dropbox", {
472
+ pluginVersion: "1.0.1",
473
+ integrationsDirectory,
474
+ })).toBe("base\n\ngt-overlay");
475
+ }
476
+ finally {
477
+ rmSync(integrationsDirectory, { recursive: true, force: true });
478
+ }
479
+ });
480
+ it("matches compound range with multiple comparators", async () => {
481
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
482
+ "README.md": "base",
483
+ "docs.manifest.json": JSON.stringify({
484
+ overlays: [
485
+ { file: "overlays/range.md", versionRange: ">=1.0.0 <2.0.0" },
486
+ ],
487
+ }),
488
+ "overlays/range.md": "range-overlay",
489
+ });
490
+ try {
491
+ expect(await resolveIntegrationDocumentation("dropbox", {
492
+ pluginVersion: "0.9.9",
493
+ integrationsDirectory,
494
+ })).toBe("base");
495
+ expect(await resolveIntegrationDocumentation("dropbox", {
496
+ pluginVersion: "1.5.0",
497
+ integrationsDirectory,
498
+ })).toBe("base\n\nrange-overlay");
499
+ expect(await resolveIntegrationDocumentation("dropbox", {
500
+ pluginVersion: "2.0.0",
501
+ integrationsDirectory,
502
+ })).toBe("base");
503
+ }
504
+ finally {
505
+ rmSync(integrationsDirectory, { recursive: true, force: true });
506
+ }
507
+ });
508
+ it("handles spaced operators in version ranges", async () => {
509
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
510
+ "README.md": "base",
511
+ "docs.manifest.json": JSON.stringify({
512
+ overlays: [
513
+ { file: "overlays/spaced.md", versionRange: ">= 0.4.0 < 1.0.0" },
514
+ ],
515
+ }),
516
+ "overlays/spaced.md": "spaced-overlay",
517
+ });
518
+ try {
519
+ expect(await resolveIntegrationDocumentation("dropbox", {
520
+ pluginVersion: "0.3.9",
521
+ integrationsDirectory,
522
+ })).toBe("base");
523
+ expect(await resolveIntegrationDocumentation("dropbox", {
524
+ pluginVersion: "0.5.0",
525
+ integrationsDirectory,
526
+ })).toBe("base\n\nspaced-overlay");
527
+ expect(await resolveIntegrationDocumentation("dropbox", {
528
+ pluginVersion: "1.0.0",
529
+ integrationsDirectory,
530
+ })).toBe("base");
531
+ }
532
+ finally {
533
+ rmSync(integrationsDirectory, { recursive: true, force: true });
534
+ }
535
+ });
536
+ });
537
+ describe("manifest validation", () => {
538
+ it("throws when overlays key is not an array", async () => {
539
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
540
+ "README.md": "base",
541
+ "docs.manifest.json": JSON.stringify({ overlays: "not-an-array" }),
542
+ });
543
+ try {
544
+ await expect(resolveIntegrationDocumentation("dropbox", {
545
+ pluginVersion: "0.4.0",
546
+ integrationsDirectory,
547
+ })).rejects.toThrowError(/overlays.*must be an array/i);
548
+ }
549
+ finally {
550
+ rmSync(integrationsDirectory, { recursive: true, force: true });
551
+ }
552
+ });
553
+ it("throws when overlay entry has empty file", async () => {
554
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
555
+ "README.md": "base",
556
+ "docs.manifest.json": JSON.stringify({
557
+ overlays: [{ file: " ", versionRange: ">=0.4.0" }],
558
+ }),
559
+ });
560
+ try {
561
+ await expect(resolveIntegrationDocumentation("dropbox", {
562
+ pluginVersion: "0.4.0",
563
+ integrationsDirectory,
564
+ })).rejects.toThrowError(/Invalid "file"/);
565
+ }
566
+ finally {
567
+ rmSync(integrationsDirectory, { recursive: true, force: true });
568
+ }
569
+ });
570
+ it("throws when overlay entry has neither versionRange nor sdkVersionRange", async () => {
571
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
572
+ "README.md": "base",
573
+ "docs.manifest.json": JSON.stringify({
574
+ overlays: [{ file: "overlays/01.md" }],
575
+ }),
576
+ });
577
+ try {
578
+ await expect(resolveIntegrationDocumentation("dropbox", {
579
+ pluginVersion: "0.4.0",
580
+ integrationsDirectory,
581
+ })).rejects.toThrowError(/Invalid overlay entry/);
582
+ }
583
+ finally {
584
+ rmSync(integrationsDirectory, { recursive: true, force: true });
585
+ }
586
+ });
587
+ it("throws when overlay entry has empty versionRange and no sdkVersionRange", async () => {
588
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
589
+ "README.md": "base",
590
+ "docs.manifest.json": JSON.stringify({
591
+ overlays: [{ file: "overlays/01.md", versionRange: " " }],
592
+ }),
593
+ });
594
+ try {
595
+ await expect(resolveIntegrationDocumentation("dropbox", {
596
+ pluginVersion: "0.4.0",
597
+ integrationsDirectory,
598
+ })).rejects.toThrowError(/Invalid "versionRange"/);
599
+ }
600
+ finally {
601
+ rmSync(integrationsDirectory, { recursive: true, force: true });
602
+ }
603
+ });
604
+ });
605
+ describe("sdkVersionRange", () => {
606
+ it("applies overlay when sdkVersion matches sdkVersionRange", async () => {
607
+ const integrationsDirectory = createPluginDocsFixture("graphql", {
608
+ "README.md": "base-graphql-docs",
609
+ "docs.manifest.json": JSON.stringify({
610
+ overlays: [
611
+ { file: "overlays/headers.md", sdkVersionRange: ">=0.0.2" },
612
+ ],
613
+ }),
614
+ "overlays/headers.md": "dynamic-headers-docs",
615
+ });
616
+ try {
617
+ const docs = await resolveIntegrationDocumentation("graphql", {
618
+ sdkVersion: "0.0.2",
619
+ integrationsDirectory,
620
+ });
621
+ expect(docs).toBe("base-graphql-docs\n\ndynamic-headers-docs");
622
+ }
623
+ finally {
624
+ rmSync(integrationsDirectory, { recursive: true, force: true });
625
+ }
626
+ });
627
+ it("skips overlay when sdkVersion does not match sdkVersionRange", async () => {
628
+ const integrationsDirectory = createPluginDocsFixture("graphql", {
629
+ "README.md": "base-graphql-docs",
630
+ "docs.manifest.json": JSON.stringify({
631
+ overlays: [
632
+ { file: "overlays/headers.md", sdkVersionRange: ">=0.0.2" },
633
+ ],
634
+ }),
635
+ "overlays/headers.md": "dynamic-headers-docs",
636
+ });
637
+ try {
638
+ const docs = await resolveIntegrationDocumentation("graphql", {
639
+ sdkVersion: "0.0.1",
640
+ integrationsDirectory,
641
+ });
642
+ expect(docs).toBe("base-graphql-docs");
643
+ }
644
+ finally {
645
+ rmSync(integrationsDirectory, { recursive: true, force: true });
646
+ }
647
+ });
648
+ it("skips overlay when sdkVersion is not provided", async () => {
649
+ const integrationsDirectory = createPluginDocsFixture("graphql", {
650
+ "README.md": "base-graphql-docs",
651
+ "docs.manifest.json": JSON.stringify({
652
+ overlays: [
653
+ { file: "overlays/headers.md", sdkVersionRange: ">=0.0.2" },
654
+ ],
655
+ }),
656
+ "overlays/headers.md": "dynamic-headers-docs",
657
+ });
658
+ try {
659
+ const docs = await resolveIntegrationDocumentation("graphql", {
660
+ pluginVersion: "0.0.10",
661
+ integrationsDirectory,
662
+ });
663
+ expect(docs).toBe("base-graphql-docs");
664
+ }
665
+ finally {
666
+ rmSync(integrationsDirectory, { recursive: true, force: true });
667
+ }
668
+ });
669
+ it("requires both versionRange and sdkVersionRange to match when both are specified", async () => {
670
+ const integrationsDirectory = createPluginDocsFixture("graphql", {
671
+ "README.md": "base",
672
+ "docs.manifest.json": JSON.stringify({
673
+ overlays: [
674
+ {
675
+ file: "overlays/both.md",
676
+ versionRange: ">=0.0.10",
677
+ sdkVersionRange: ">=0.0.2",
678
+ },
679
+ ],
680
+ }),
681
+ "overlays/both.md": "both-match-overlay",
682
+ });
683
+ try {
684
+ // Both match
685
+ expect(await resolveIntegrationDocumentation("graphql", {
686
+ pluginVersion: "0.0.10",
687
+ sdkVersion: "0.0.2",
688
+ integrationsDirectory,
689
+ })).toBe("base\n\nboth-match-overlay");
690
+ // Only plugin matches
691
+ expect(await resolveIntegrationDocumentation("graphql", {
692
+ pluginVersion: "0.0.10",
693
+ sdkVersion: "0.0.1",
694
+ integrationsDirectory,
695
+ })).toBe("base");
696
+ // Only sdk matches
697
+ expect(await resolveIntegrationDocumentation("graphql", {
698
+ pluginVersion: "0.0.9",
699
+ sdkVersion: "0.0.2",
700
+ integrationsDirectory,
701
+ })).toBe("base");
702
+ }
703
+ finally {
704
+ rmSync(integrationsDirectory, { recursive: true, force: true });
705
+ }
706
+ });
707
+ it("allows overlay with only sdkVersionRange (no versionRange)", async () => {
708
+ const integrationsDirectory = createPluginDocsFixture("graphql", {
709
+ "README.md": "base",
710
+ "docs.manifest.json": JSON.stringify({
711
+ overlays: [
712
+ { file: "overlays/sdk-only.md", sdkVersionRange: ">=0.0.2" },
713
+ ],
714
+ }),
715
+ "overlays/sdk-only.md": "sdk-gated-overlay",
716
+ });
717
+ try {
718
+ // No pluginVersion needed — only sdkVersion matters
719
+ const docs = await resolveIntegrationDocumentation("graphql", {
720
+ sdkVersion: "0.0.3",
721
+ integrationsDirectory,
722
+ });
723
+ expect(docs).toBe("base\n\nsdk-gated-overlay");
724
+ }
725
+ finally {
726
+ rmSync(integrationsDirectory, { recursive: true, force: true });
727
+ }
728
+ });
729
+ });
730
+ describe("restapiintegration responseType gating (real docs)", () => {
731
+ // These resolve the actual shipped docs, not a fixture: the overlay
732
+ // gating is the discoverability guard for the responseType feature
733
+ // (agents whose worker sdk-api predates it must never be told the
734
+ // option exists), so the real manifest content is the contract.
735
+ it("documents responseType for agents whose sdk-api supports it", async () => {
736
+ const docs = await resolveIntegrationDocumentation("restapiintegration", {
737
+ sdkVersion: "0.0.3",
738
+ });
739
+ expect(docs).toContain('responseType: "text"');
740
+ expect(docs).not.toContain("does not support the `responseType`");
741
+ });
742
+ it("notes non-support instead of documenting responseType on older agents", async () => {
743
+ const docs = await resolveIntegrationDocumentation("restapiintegration", {
744
+ sdkVersion: "0.0.2",
745
+ });
746
+ expect(docs).toContain("does not support the `responseType`");
747
+ expect(docs).not.toContain('responseType: "text"');
748
+ });
749
+ it("stays silent about responseType when the agent reports no sdk-api version", async () => {
750
+ const docs = await resolveIntegrationDocumentation("restapiintegration");
751
+ expect(docs).not.toContain("responseType");
752
+ });
753
+ });
754
+ it("blocks overlay paths outside the plugin directory", async () => {
755
+ const integrationsDirectory = createPluginDocsFixture("dropbox", {
756
+ "README.md": "base",
757
+ "docs.manifest.json": JSON.stringify({
758
+ overlays: [
759
+ { file: "../other-plugin/secret.md", versionRange: ">=0.4.0" },
760
+ ],
761
+ }),
762
+ });
763
+ try {
764
+ await expect(resolveIntegrationDocumentation("dropbox", {
765
+ pluginVersion: "0.4.0",
766
+ integrationsDirectory,
767
+ })).rejects.toThrowError(/must be inside plugin directory/i);
768
+ }
769
+ finally {
770
+ rmSync(integrationsDirectory, { recursive: true, force: true });
771
+ }
772
+ });
773
+ });
774
+ //# sourceMappingURL=documentation-resolver.test.js.map