@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
@@ -1,340 +0,0 @@
1
- /**
2
- * Tests for Python client binding injection.
3
- */
4
-
5
- import { describe, it, expect, vi } from "vitest";
6
- import { z } from "zod";
7
- import { PythonClientImpl } from "./client.js";
8
- import type { IntegrationConfig } from "../types.js";
9
- import type { QueryExecutor } from "../registry.js";
10
-
11
- /** Helper to compute expected base64-encoded json.loads preamble. */
12
- function expectedBindingsLine(bindings: Record<string, unknown>): string {
13
- const b64 = Buffer.from(JSON.stringify(bindings)).toString("base64");
14
- return `_bindings = json.loads(base64.b64decode('${b64}').decode())`;
15
- }
16
-
17
- describe("PythonClientImpl", () => {
18
- const createMockConfig = (): IntegrationConfig => ({
19
- id: "test-python-id",
20
- name: "Test Python",
21
- pluginId: "python",
22
- configuration: {},
23
- });
24
-
25
- const createMockExecutor = (mockResult: unknown): QueryExecutor => {
26
- return vi.fn().mockResolvedValue(mockResult);
27
- };
28
-
29
- describe("binding injection", () => {
30
- it("generates code without bindings when none provided", async () => {
31
- const mockExecutor = vi.fn().mockResolvedValue({ result: 42 });
32
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
33
-
34
- await client.run(
35
- 'return {"result": 42}',
36
- z.object({ result: z.number() }),
37
- );
38
-
39
- expect(mockExecutor).toHaveBeenCalledWith(
40
- { body: 'return {"result": 42}' },
41
- undefined,
42
- undefined,
43
- );
44
- });
45
-
46
- it("injects string bindings as Python variables", async () => {
47
- const mockExecutor = vi
48
- .fn()
49
- .mockResolvedValue({ message: "Hello World" });
50
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
51
-
52
- const bindings = { greeting: "Hello World" };
53
- await client.run(
54
- 'return {"message": greeting}',
55
- z.object({ message: z.string() }),
56
- bindings,
57
- );
58
-
59
- const request = mockExecutor.mock.calls[0][0];
60
- expect(request.body).toContain("import json, base64");
61
- expect(request.body).toContain(expectedBindingsLine(bindings));
62
- expect(request.body).toContain("greeting = _bindings['greeting']");
63
- expect(request.body).toContain('return {"message": greeting}');
64
- });
65
-
66
- it("injects number bindings as Python variables", async () => {
67
- const mockExecutor = vi.fn().mockResolvedValue({ result: 14 });
68
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
69
-
70
- const bindings = { number: 10 };
71
- await client.run(
72
- 'return {"result": number + 4}',
73
- z.object({ result: z.number() }),
74
- bindings,
75
- );
76
-
77
- const request = mockExecutor.mock.calls[0][0];
78
- expect(request.body).toContain("import json, base64");
79
- expect(request.body).toContain(expectedBindingsLine(bindings));
80
- expect(request.body).toContain("number = _bindings['number']");
81
- expect(request.body).toContain('return {"result": number + 4}');
82
- });
83
-
84
- it("injects boolean bindings as Python variables", async () => {
85
- const mockExecutor = vi.fn().mockResolvedValue({ active: true });
86
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
87
-
88
- const bindings = { isActive: true };
89
- await client.run(
90
- 'return {"active": isActive}',
91
- z.object({ active: z.boolean() }),
92
- bindings,
93
- );
94
-
95
- const request = mockExecutor.mock.calls[0][0];
96
- expect(request.body).toContain("import json, base64");
97
- expect(request.body).toContain(expectedBindingsLine(bindings));
98
- expect(request.body).toContain("isActive = _bindings['isActive']");
99
- expect(request.body).toContain('return {"active": isActive}');
100
- });
101
-
102
- it("injects null bindings as Python variables", async () => {
103
- const mockExecutor = vi.fn().mockResolvedValue({ value: null });
104
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
105
-
106
- const bindings = { nullValue: null };
107
- await client.run(
108
- 'return {"value": nullValue}',
109
- z.object({ value: z.null() }),
110
- bindings,
111
- );
112
-
113
- const request = mockExecutor.mock.calls[0][0];
114
- expect(request.body).toContain("import json, base64");
115
- expect(request.body).toContain(expectedBindingsLine(bindings));
116
- expect(request.body).toContain("nullValue = _bindings['nullValue']");
117
- expect(request.body).toContain('return {"value": nullValue}');
118
- });
119
-
120
- it("injects array bindings as Python variables", async () => {
121
- const mockExecutor = vi.fn().mockResolvedValue({ count: 3 });
122
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
123
-
124
- const bindings = { items: [1, 2, 3] };
125
- await client.run(
126
- 'return {"count": len(items)}',
127
- z.object({ count: z.number() }),
128
- bindings,
129
- );
130
-
131
- const request = mockExecutor.mock.calls[0][0];
132
- expect(request.body).toContain("import json, base64");
133
- expect(request.body).toContain(expectedBindingsLine(bindings));
134
- expect(request.body).toContain("items = _bindings['items']");
135
- expect(request.body).toContain('return {"count": len(items)}');
136
- });
137
-
138
- it("injects object bindings as Python variables", async () => {
139
- const mockExecutor = vi.fn().mockResolvedValue({ name: "John" });
140
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
141
-
142
- const bindings = { user: { name: "John", age: 30 } };
143
- await client.run(
144
- 'return {"name": user["name"]}',
145
- z.object({ name: z.string() }),
146
- bindings,
147
- );
148
-
149
- const request = mockExecutor.mock.calls[0][0];
150
- expect(request.body).toContain("import json, base64");
151
- expect(request.body).toContain(expectedBindingsLine(bindings));
152
- expect(request.body).toContain("user = _bindings['user']");
153
- expect(request.body).toContain('return {"name": user["name"]}');
154
- });
155
-
156
- it("injects multiple bindings as Python variables", async () => {
157
- const mockExecutor = vi
158
- .fn()
159
- .mockResolvedValue({ message: "Alice is 25 years old" });
160
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
161
-
162
- const bindings = { userName: "Alice", userAge: 25 };
163
- await client.run(
164
- 'return {"message": f"{userName} is {userAge} years old"}',
165
- z.object({ message: z.string() }),
166
- bindings,
167
- );
168
-
169
- const request = mockExecutor.mock.calls[0][0];
170
- expect(request.body).toContain("import json, base64");
171
- expect(request.body).toContain(expectedBindingsLine(bindings));
172
- expect(request.body).toContain("userName = _bindings['userName']");
173
- expect(request.body).toContain("userAge = _bindings['userAge']");
174
- expect(request.body).toContain(
175
- 'return {"message": f"{userName} is {userAge} years old"}',
176
- );
177
- });
178
-
179
- it("handles strings with special characters", async () => {
180
- const mockExecutor = vi
181
- .fn()
182
- .mockResolvedValue({ text: 'It\'s a "test"' });
183
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
184
-
185
- const bindings = { text: 'It\'s a "test"' };
186
- await client.run(
187
- 'return {"text": text}',
188
- z.object({ text: z.string() }),
189
- bindings,
190
- );
191
-
192
- const request = mockExecutor.mock.calls[0][0];
193
- expect(request.body).toContain("import json, base64");
194
- // Base64 encoding avoids all string escaping issues
195
- expect(request.body).toContain(expectedBindingsLine(bindings));
196
- expect(request.body).toContain("text = _bindings['text']");
197
- expect(request.body).toContain('return {"text": text}');
198
- });
199
-
200
- it("handles strings with newlines and tabs", async () => {
201
- const mockExecutor = vi
202
- .fn()
203
- .mockResolvedValue({ text: "line1\nline2\ttab" });
204
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
205
-
206
- const bindings = { text: "line1\nline2\ttab" };
207
- await client.run(
208
- 'return {"text": text}',
209
- z.object({ text: z.string() }),
210
- bindings,
211
- );
212
-
213
- const request = mockExecutor.mock.calls[0][0];
214
- // Base64 encoding handles newlines/tabs safely
215
- expect(request.body).toContain(expectedBindingsLine(bindings));
216
- expect(request.body).toContain("text = _bindings['text']");
217
- });
218
-
219
- it("handles strings with backslashes", async () => {
220
- const mockExecutor = vi
221
- .fn()
222
- .mockResolvedValue({ path: "C:\\Users\\test" });
223
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
224
-
225
- const bindings = { path: "C:\\Users\\test" };
226
- await client.run(
227
- 'return {"path": path}',
228
- z.object({ path: z.string() }),
229
- bindings,
230
- );
231
-
232
- const request = mockExecutor.mock.calls[0][0];
233
- // Base64 encoding handles backslashes safely
234
- expect(request.body).toContain(expectedBindingsLine(bindings));
235
- expect(request.body).toContain("path = _bindings['path']");
236
- });
237
-
238
- it("preserves code structure with blank line between preamble and user code", async () => {
239
- const mockExecutor = vi.fn().mockResolvedValue({ result: 42 });
240
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
241
-
242
- const bindings = { number: 21 };
243
- await client.run(
244
- 'result = number * 2\nreturn {"result": result}',
245
- z.object({ result: z.number() }),
246
- bindings,
247
- );
248
-
249
- const request = mockExecutor.mock.calls[0][0];
250
- const lines = (request.body as string).split("\n");
251
-
252
- // Should have: import, _bindings assignment, variable extraction, blank line, then user code
253
- expect(lines[0]).toBe("import json, base64");
254
- expect(lines[1]).toBe(expectedBindingsLine(bindings));
255
- expect(lines[2]).toBe("number = _bindings['number']");
256
- expect(lines[3]).toBe("");
257
- expect(lines[4]).toBe("result = number * 2");
258
- });
259
- });
260
-
261
- describe("validation", () => {
262
- it("validates result against schema", async () => {
263
- const mockExecutor = createMockExecutor({ result: 42 });
264
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
265
-
266
- const result = await client.run(
267
- 'return {"result": 42}',
268
- z.object({ result: z.number() }),
269
- );
270
-
271
- expect(result).toEqual({ result: 42 });
272
- });
273
-
274
- it("throws CodeExecutionError when validation fails", async () => {
275
- const mockExecutor = createMockExecutor({ result: "not a number" });
276
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
277
-
278
- await expect(
279
- client.run(
280
- 'return {"result": "not a number"}',
281
- z.object({ result: z.number() }),
282
- ),
283
- ).rejects.toThrow("Python execution result validation failed");
284
- });
285
-
286
- it("throws CodeExecutionError when execution fails", async () => {
287
- const mockExecutor = vi
288
- .fn()
289
- .mockRejectedValue(new Error("Execution error"));
290
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
291
-
292
- await expect(
293
- client.run('return {"result": 42}', z.object({ result: z.number() })),
294
- ).rejects.toThrow("Python execution failed");
295
- });
296
- });
297
-
298
- describe("complex bindings", () => {
299
- it("handles nested objects", async () => {
300
- const mockExecutor = vi.fn().mockResolvedValue({ name: "John Doe" });
301
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
302
-
303
- const bindings = {
304
- person: { first: "John", last: "Doe", address: { city: "NYC" } },
305
- };
306
- await client.run(
307
- "return {\"name\": f\"{person['first']} {person['last']}\"}",
308
- z.object({ name: z.string() }),
309
- bindings,
310
- );
311
-
312
- const request = mockExecutor.mock.calls[0][0];
313
- expect(request.body).toContain("import json, base64");
314
- expect(request.body).toContain(expectedBindingsLine(bindings));
315
- expect(request.body).toContain("person = _bindings['person']");
316
- });
317
-
318
- it("handles arrays of objects", async () => {
319
- const mockExecutor = vi.fn().mockResolvedValue({ count: 2 });
320
- const client = new PythonClientImpl(createMockConfig(), mockExecutor);
321
-
322
- const bindings = {
323
- users: [
324
- { id: 1, name: "Alice" },
325
- { id: 2, name: "Bob" },
326
- ],
327
- };
328
- await client.run(
329
- 'return {"count": len(users)}',
330
- z.object({ count: z.number() }),
331
- bindings,
332
- );
333
-
334
- const request = mockExecutor.mock.calls[0][0];
335
- expect(request.body).toContain("import json, base64");
336
- expect(request.body).toContain(expectedBindingsLine(bindings));
337
- expect(request.body).toContain("users = _bindings['users']");
338
- });
339
- });
340
- });
@@ -1,134 +0,0 @@
1
- /**
2
- * Python client implementation.
3
- *
4
- * Executes Python code via the orchestrator with type-safe bindings.
5
- */
6
-
7
- import type { z } from "zod";
8
- import type { PartialMessage } from "@bufbuild/protobuf";
9
- import type { Plugin as PythonPlugin } from "@superblocksteam/types/dist/src/plugins/python/v1/plugin_pb";
10
- import type { IntegrationConfig, IntegrationClientImpl } from "../types.js";
11
- import type { QueryExecutor, TraceMetadata } from "../registry.js";
12
- import type { PythonClient } from "./types.js";
13
- import { CodeExecutionError } from "../../errors.js";
14
-
15
- /**
16
- * Python plugin request type derived from proto definition.
17
- * Using PartialMessage allows optional fields.
18
- */
19
- export type PythonRequest = PartialMessage<PythonPlugin>;
20
-
21
- /**
22
- * Internal implementation of PythonClient.
23
- *
24
- * This implementation communicates with the orchestrator to execute Python code.
25
- * The orchestrator handles {{}} binding resolution and script execution.
26
- */
27
- export class PythonClientImpl implements PythonClient, IntegrationClientImpl {
28
- readonly name: string;
29
- readonly pluginId: string;
30
- readonly config: IntegrationConfig;
31
-
32
- private readonly executeQuery: QueryExecutor;
33
-
34
- constructor(config: IntegrationConfig, executeQuery: QueryExecutor) {
35
- this.name = config.name;
36
- this.pluginId = config.pluginId;
37
- this.config = config;
38
- this.executeQuery = executeQuery;
39
- }
40
-
41
- /**
42
- * Build Python plugin request with injected bindings.
43
- *
44
- * Bindings are injected as Python variables in a preamble before the user code.
45
- * This allows the user code to reference binding keys directly as Python variables.
46
- *
47
- * @param code - User's Python code string
48
- * @param bindings - Bindings to inject as Python variables
49
- * @returns Request object matching the proto schema with bindings injected
50
- */
51
- private buildRequest(
52
- code: string,
53
- bindings?: Record<string, unknown>,
54
- ): PythonRequest {
55
- // If no bindings, just return the code as-is
56
- if (!bindings || Object.keys(bindings).length === 0) {
57
- return {
58
- body: code,
59
- };
60
- }
61
-
62
- // Inject bindings as Python variables using base64 to avoid string escaping issues.
63
- // Format: import json,base64\n_bindings = json.loads(base64.b64decode('...').decode())\nvar1 = _bindings['var1']\n...\n\n<user code>
64
- const bindingLines: string[] = ["import json, base64"];
65
-
66
- // Base64-encode the JSON to avoid issues with special characters (\n, \t, \\, quotes)
67
- // that JSON.stringify produces and Python's string parser would interpret
68
- const bindingsB64 = Buffer.from(JSON.stringify(bindings)).toString(
69
- "base64",
70
- );
71
- bindingLines.push(
72
- `_bindings = json.loads(base64.b64decode('${bindingsB64}').decode())`,
73
- );
74
-
75
- // Extract each binding as a local variable
76
- for (const key of Object.keys(bindings)) {
77
- bindingLines.push(`${key} = _bindings['${key}']`);
78
- }
79
-
80
- // Combine binding preamble with user code
81
- const fullCode = `${bindingLines.join("\n")}\n\n${code}`;
82
-
83
- return {
84
- body: fullCode,
85
- };
86
- }
87
-
88
- async run<T>(
89
- code: string,
90
- schema: z.ZodSchema<T>,
91
- bindings?: Record<string, unknown>,
92
- metadata?: TraceMetadata,
93
- ): Promise<T> {
94
- // Build request with bindings injected as Python variables
95
- const request = this.buildRequest(code, bindings);
96
-
97
- try {
98
- // Execute the Python code with injected bindings
99
- // No need to pass bindings as input since they're already in the code
100
- const result = await this.executeQuery(
101
- request as unknown as Record<string, unknown>,
102
- undefined,
103
- metadata,
104
- );
105
-
106
- // Validate result against schema
107
- const parseResult = schema.safeParse(result);
108
-
109
- if (!parseResult.success) {
110
- throw new CodeExecutionError(
111
- `Python execution result validation failed: ${parseResult.error.message}`,
112
- {
113
- code,
114
- bindings,
115
- result,
116
- zodError: parseResult.error,
117
- },
118
- );
119
- }
120
-
121
- return parseResult.data;
122
- } catch (error) {
123
- if (error instanceof CodeExecutionError) {
124
- throw error;
125
- }
126
-
127
- throw new CodeExecutionError("Python execution failed", {
128
- code,
129
- bindings,
130
- originalError: error,
131
- });
132
- }
133
- }
134
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Python code execution client.
3
- */
4
-
5
- export type { PythonClient } from "./types.js";
6
- export { PythonClientImpl } from "./client.js";
@@ -1,91 +0,0 @@
1
- /**
2
- * Python code execution client types.
3
- */
4
-
5
- import type { z } from "zod";
6
- import type { BaseIntegrationClient } from "../../types.js";
7
- import type { TraceMetadata } from "../registry.js";
8
-
9
- /**
10
- * Python code execution client.
11
- *
12
- * Executes Python scripts with type-safe inputs and outputs.
13
- * Bindings are passed as a map and referenced in code using {{key}} syntax.
14
- * The orchestrator resolves bindings before execution.
15
- *
16
- * @example
17
- * ```typescript
18
- * // Declare in api(): integrations: { runtime: python(INTEGRATION_ID) }
19
- * // In run(), access via: ctx.integrations.runtime
20
- * const result = await ctx.integrations.runtime.run(
21
- * `
22
- * import time
23
- *
24
- * user_id = {{userId}}
25
- * current_time = int(time.time())
26
- *
27
- * return {
28
- * "greeting": f"Hello user {user_id}!",
29
- * "timestamp": current_time
30
- * }
31
- * `,
32
- * z.object({
33
- * greeting: z.string(),
34
- * timestamp: z.number(),
35
- * }),
36
- * {
37
- * userId,
38
- * }
39
- * );
40
- * ```
41
- */
42
- export interface PythonClient extends BaseIntegrationClient {
43
- /**
44
- * Execute Python code with validated output.
45
- *
46
- * The Python code must return a value using a `return` statement.
47
- * Bindings are referenced using {{key}} syntax and resolved by the
48
- * orchestrator before execution.
49
- *
50
- * **Important:** The parameter order is `(code, schema, bindings?, metadata?)`.
51
- * Because `bindings` is `Record<string, unknown>`, it is structurally
52
- * compatible with `TraceMetadata`. Take care not to pass a metadata object
53
- * as the third argument -- if you only need metadata and no bindings, pass
54
- * `undefined` for `bindings` explicitly:
55
- *
56
- * ```typescript
57
- * // Correct: skip bindings, pass metadata
58
- * await python.run(code, schema, undefined, { label: "my label" });
59
- *
60
- * // Wrong: metadata is accidentally treated as bindings
61
- * await python.run(code, schema, { label: "my label" });
62
- * ```
63
- *
64
- * @param code - Python script to execute (use {{key}} for bindings)
65
- * @param schema - Zod schema for validating the return value
66
- * @param bindings - Optional key/value pairs accessible via {{key}} in code.
67
- * Do not pass `TraceMetadata` here; use the `metadata` parameter instead.
68
- * @param metadata - Optional trace metadata for diagnostics labeling
69
- * @returns Validated result matching the schema
70
- *
71
- * @throws {CodeExecutionError} If execution fails or validation fails
72
- *
73
- * @example
74
- * ```typescript
75
- * const result = await python.run(
76
- * `
77
- * user_id = {{userId}}
78
- * return {"message": f"Hello {user_id}"}
79
- * `,
80
- * z.object({ message: z.string() }),
81
- * { userId: "123" }
82
- * );
83
- * ```
84
- */
85
- run<T>(
86
- code: string,
87
- schema: z.ZodSchema<T>,
88
- bindings?: Record<string, unknown>,
89
- metadata?: TraceMetadata,
90
- ): Promise<T>;
91
- }