@superblocksteam/sdk-api 2.0.103 → 2.0.104-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +58 -299
  2. package/dist/api/definition.js +1 -1
  3. package/dist/api/definition.js.map +1 -1
  4. package/dist/api/index.d.ts +0 -2
  5. package/dist/api/index.d.ts.map +1 -1
  6. package/dist/api/index.js +0 -2
  7. package/dist/api/index.js.map +1 -1
  8. package/dist/errors.d.ts +0 -44
  9. package/dist/errors.d.ts.map +1 -1
  10. package/dist/errors.js +0 -32
  11. package/dist/errors.js.map +1 -1
  12. package/dist/index.d.ts +5 -5
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +5 -9
  15. package/dist/index.js.map +1 -1
  16. package/dist/integrations/anthropic/types.d.ts +3 -22
  17. package/dist/integrations/anthropic/types.d.ts.map +1 -1
  18. package/dist/integrations/athena/types.d.ts +2 -2
  19. package/dist/integrations/base/index.d.ts +1 -1
  20. package/dist/integrations/base/index.d.ts.map +1 -1
  21. package/dist/integrations/base/rest-api-integration-client.d.ts +4 -48
  22. package/dist/integrations/base/rest-api-integration-client.d.ts.map +1 -1
  23. package/dist/integrations/base/rest-api-integration-client.js +2 -110
  24. package/dist/integrations/base/rest-api-integration-client.js.map +1 -1
  25. package/dist/integrations/base/types.d.ts +1 -67
  26. package/dist/integrations/base/types.d.ts.map +1 -1
  27. package/dist/integrations/bigquery/types.d.ts +3 -3
  28. package/dist/integrations/databricks/types.d.ts +3 -3
  29. package/dist/integrations/documentation.test.d.ts +2 -0
  30. package/dist/integrations/documentation.test.d.ts.map +1 -0
  31. package/dist/integrations/documentation.test.js +83 -0
  32. package/dist/integrations/documentation.test.js.map +1 -0
  33. package/dist/integrations/index.d.ts +1 -1
  34. package/dist/integrations/index.d.ts.map +1 -1
  35. package/dist/integrations/index.js.map +1 -1
  36. package/dist/integrations/lakebase/types.d.ts +4 -4
  37. package/dist/integrations/mariadb/types.d.ts +2 -2
  38. package/dist/integrations/mssql/types.d.ts +2 -2
  39. package/dist/integrations/mysql/types.d.ts +4 -4
  40. package/dist/integrations/openai_v2/types.d.ts +4 -22
  41. package/dist/integrations/openai_v2/types.d.ts.map +1 -1
  42. package/dist/integrations/oracledb/types.d.ts +2 -2
  43. package/dist/integrations/registry.d.ts +0 -16
  44. package/dist/integrations/registry.d.ts.map +1 -1
  45. package/dist/integrations/registry.js +38 -38
  46. package/dist/integrations/registry.js.map +1 -1
  47. package/dist/integrations/registry.test.js +1 -3
  48. package/dist/integrations/registry.test.js.map +1 -1
  49. package/dist/integrations/restapiintegration/types.d.ts +2 -2
  50. package/dist/integrations/restapiintegration/types.d.ts.map +1 -1
  51. package/dist/integrations/snowflakecortex/client.d.ts +1 -2
  52. package/dist/integrations/snowflakecortex/client.d.ts.map +1 -1
  53. package/dist/integrations/snowflakecortex/client.js +1 -2
  54. package/dist/integrations/snowflakecortex/client.js.map +1 -1
  55. package/dist/integrations/snowflakecortex/types.d.ts +3 -4
  56. package/dist/integrations/snowflakecortex/types.d.ts.map +1 -1
  57. package/dist/runtime/index.d.ts +0 -3
  58. package/dist/runtime/index.d.ts.map +1 -1
  59. package/dist/runtime/index.js +1 -6
  60. package/dist/runtime/index.js.map +1 -1
  61. package/package.json +1 -1
  62. package/src/api/definition.ts +1 -1
  63. package/src/api/index.ts +0 -4
  64. package/src/errors.ts +0 -48
  65. package/src/index.ts +2 -28
  66. package/src/integrations/anthropic/README.md +5 -101
  67. package/src/integrations/anthropic/types.ts +3 -29
  68. package/src/integrations/athena/README.md +4 -4
  69. package/src/integrations/athena/types.ts +2 -2
  70. package/src/integrations/base/index.ts +0 -2
  71. package/src/integrations/base/rest-api-integration-client.ts +4 -153
  72. package/src/integrations/base/types.ts +3 -74
  73. package/src/integrations/bigquery/README.md +28 -3
  74. package/src/integrations/bigquery/types.ts +3 -3
  75. package/src/integrations/cohere/README.md +11 -11
  76. package/src/integrations/databricks/README.md +29 -4
  77. package/src/integrations/databricks/types.ts +3 -3
  78. package/src/integrations/documentation.test.ts +122 -0
  79. package/src/integrations/fireworks/README.md +43 -17
  80. package/src/integrations/googleanalytics/README.md +2 -2
  81. package/src/integrations/googledrive/README.md +2 -2
  82. package/src/integrations/groq/README.md +41 -34
  83. package/src/integrations/gsheets/README.md +2 -2
  84. package/src/integrations/index.ts +0 -1
  85. package/src/integrations/lakebase/types.ts +4 -4
  86. package/src/integrations/launchdarkly/README.md +2 -2
  87. package/src/integrations/mariadb/README.md +3 -3
  88. package/src/integrations/mariadb/types.ts +2 -2
  89. package/src/integrations/mistral/README.md +39 -13
  90. package/src/integrations/mssql/README.md +3 -3
  91. package/src/integrations/mssql/types.ts +2 -2
  92. package/src/integrations/mysql/README.md +4 -4
  93. package/src/integrations/mysql/types.ts +4 -4
  94. package/src/integrations/openai_v2/README.md +44 -116
  95. package/src/integrations/openai_v2/types.ts +4 -29
  96. package/src/integrations/oracledb/README.md +3 -3
  97. package/src/integrations/oracledb/types.ts +2 -2
  98. package/src/integrations/pagerduty/README.md +2 -2
  99. package/src/integrations/perplexity/README.md +2 -1
  100. package/src/integrations/registry.test.ts +1 -3
  101. package/src/integrations/registry.ts +38 -127
  102. package/src/integrations/restapiintegration/README.md +4 -43
  103. package/src/integrations/restapiintegration/types.ts +2 -8
  104. package/src/integrations/sendgrid/README.md +2 -2
  105. package/src/integrations/snowflakecortex/README.md +4 -53
  106. package/src/integrations/snowflakecortex/client.ts +2 -3
  107. package/src/integrations/snowflakecortex/types.ts +3 -11
  108. package/src/integrations/stabilityai/README.md +2 -2
  109. package/src/runtime/index.ts +1 -23
  110. package/dist/api/streaming.d.ts +0 -229
  111. package/dist/api/streaming.d.ts.map +0 -1
  112. package/dist/api/streaming.js +0 -107
  113. package/dist/api/streaming.js.map +0 -1
  114. package/dist/api/streaming.test.d.ts +0 -5
  115. package/dist/api/streaming.test.d.ts.map +0 -1
  116. package/dist/api/streaming.test.js +0 -364
  117. package/dist/api/streaming.test.js.map +0 -1
  118. package/dist/runtime/execute.d.ts +0 -128
  119. package/dist/runtime/execute.d.ts.map +0 -1
  120. package/dist/runtime/execute.js +0 -84
  121. package/dist/runtime/execute.js.map +0 -1
  122. package/dist/runtime/streaming-context.d.ts +0 -49
  123. package/dist/runtime/streaming-context.d.ts.map +0 -1
  124. package/dist/runtime/streaming-context.js +0 -71
  125. package/dist/runtime/streaming-context.js.map +0 -1
  126. package/dist/runtime/streaming-executor.d.ts +0 -159
  127. package/dist/runtime/streaming-executor.d.ts.map +0 -1
  128. package/dist/runtime/streaming-executor.js +0 -229
  129. package/dist/runtime/streaming-executor.js.map +0 -1
  130. package/src/api/streaming.test.ts +0 -433
  131. package/src/api/streaming.ts +0 -303
  132. package/src/runtime/execute.ts +0 -221
  133. package/src/runtime/streaming-context.ts +0 -164
  134. package/src/runtime/streaming-executor.ts +0 -367
@@ -10,7 +10,9 @@ Interact with Groq's ultra-fast inference API for LLM chat completions with low
10
10
 
11
11
  ## Usage
12
12
 
13
- ### Chat Completion
13
+ ### Step 1: List Available Models
14
+
15
+ Model availability varies by account and changes over time. Before making requests, validate which models are available:
14
16
 
15
17
  ```typescript
16
18
  import { api, z, groq } from "@superblocksteam/sdk-api";
@@ -18,6 +20,30 @@ import { api, z, groq } from "@superblocksteam/sdk-api";
18
20
  // Integration ID from the integrations panel
19
21
  const PROD_GROQ = "a1b2c3d4-5678-90ab-cdef-groq00000001";
20
22
 
23
+ const ModelsResponseSchema = z.object({
24
+ data: z.array(
25
+ z.object({
26
+ id: z.string(),
27
+ object: z.string(),
28
+ }),
29
+ ),
30
+ });
31
+
32
+ const models = await ctx.integrations.groq.apiRequest(
33
+ {
34
+ method: "GET",
35
+ path: "/v1/models",
36
+ },
37
+ { response: ModelsResponseSchema },
38
+ );
39
+
40
+ // Use a model ID from the response in subsequent requests
41
+ const availableModelId = models.data[0]?.id;
42
+ ```
43
+
44
+ ### Chat Completion
45
+
46
+ ```typescript
21
47
  const ChatCompletionResponseSchema = z.object({
22
48
  id: z.string(),
23
49
  object: z.literal("chat.completion"),
@@ -59,7 +85,7 @@ export default api({
59
85
  const result = await ctx.integrations.groq.apiRequest(
60
86
  {
61
87
  method: "POST",
62
- path: "/openai/v1/chat/completions",
88
+ path: "/v1/chat/completions",
63
89
  body: {
64
90
  model: "llama-3.1-70b-versatile",
65
91
  messages: [
@@ -83,7 +109,7 @@ export default api({
83
109
  const llama70b = await ctx.integrations.groq.apiRequest(
84
110
  {
85
111
  method: "POST",
86
- path: "/openai/v1/chat/completions",
112
+ path: "/v1/chat/completions",
87
113
  body: {
88
114
  model: "llama-3.1-70b-versatile",
89
115
  messages: [{ role: "user", content: "Hello" }],
@@ -96,7 +122,7 @@ const llama70b = await ctx.integrations.groq.apiRequest(
96
122
  const llama8b = await ctx.integrations.groq.apiRequest(
97
123
  {
98
124
  method: "POST",
99
- path: "/openai/v1/chat/completions",
125
+ path: "/v1/chat/completions",
100
126
  body: {
101
127
  model: "llama-3.1-8b-instant",
102
128
  messages: [{ role: "user", content: "Hello" }],
@@ -109,7 +135,7 @@ const llama8b = await ctx.integrations.groq.apiRequest(
109
135
  const mixtral = await ctx.integrations.groq.apiRequest(
110
136
  {
111
137
  method: "POST",
112
- path: "/openai/v1/chat/completions",
138
+ path: "/v1/chat/completions",
113
139
  body: {
114
140
  model: "mixtral-8x7b-32768",
115
141
  messages: [{ role: "user", content: "Hello" }],
@@ -150,7 +176,7 @@ const ToolCallResponseSchema = z.object({
150
176
  const result = await ctx.integrations.groq.apiRequest(
151
177
  {
152
178
  method: "POST",
153
- path: "/openai/v1/chat/completions",
179
+ path: "/v1/chat/completions",
154
180
  body: {
155
181
  model: "llama-3.1-70b-versatile",
156
182
  messages: [{ role: "user", content: "What's the weather in Tokyo?" }],
@@ -200,7 +226,7 @@ const JSONResponseSchema = z.object({
200
226
  const result = await ctx.integrations.groq.apiRequest(
201
227
  {
202
228
  method: "POST",
203
- path: "/openai/v1/chat/completions",
229
+ path: "/v1/chat/completions",
204
230
  body: {
205
231
  model: "llama-3.1-70b-versatile",
206
232
  messages: [
@@ -234,55 +260,36 @@ await groq.createChatCompletion({ ... });
234
260
 
235
261
  // CORRECT - Use apiRequest
236
262
  await ctx.integrations.groq.apiRequest(
237
- { method: "POST", path: "/openai/v1/chat/completions", body: { ... } },
263
+ { method: "POST", path: "/v1/chat/completions", body: { ... } },
238
264
  { response: ChatCompletionResponseSchema }
239
265
  );
240
266
  ```
241
267
 
242
268
  ### OpenAI-Compatible Path
243
269
 
244
- Groq uses OpenAI-compatible endpoints with `/openai/v1/` prefix:
270
+ The integration's base URL already includes `https://api.groq.com/openai`, so paths should start with `/v1/`:
245
271
 
246
272
  ```typescript
247
- // WRONG - Missing /openai prefix
273
+ // WRONG - Duplicates the /openai prefix (base URL already includes it)
248
274
  await ctx.integrations.groq.apiRequest(
249
- { method: "POST", path: "/v1/chat/completions", body: { ... } },
275
+ { method: "POST", path: "/openai/v1/chat/completions", body: { ... } },
250
276
  { response: schema }
251
277
  );
252
278
 
253
- // CORRECT - Include /openai prefix
279
+ // CORRECT - Start with /v1/ (the integration prepends /openai automatically)
254
280
  await ctx.integrations.groq.apiRequest(
255
- { method: "POST", path: "/openai/v1/chat/completions", body: { ... } },
281
+ { method: "POST", path: "/v1/chat/completions", body: { ... } },
256
282
  { response: schema }
257
283
  );
258
284
  ```
259
285
 
260
- ### Model Availability
261
-
262
- Groq has specific models available. Check current availability:
263
-
264
- | Model | Context Window | Best For |
265
- | ----------------------- | -------------- | ------------------ |
266
- | llama-3.1-70b-versatile | 128K | General use |
267
- | llama-3.1-8b-instant | 128K | Fast, simple tasks |
268
- | mixtral-8x7b-32768 | 32K | Code, reasoning |
269
- | gemma2-9b-it | 8K | Lightweight tasks |
270
-
271
- ```typescript
272
- // Ensure model is available
273
- const body = {
274
- model: "llama-3.1-70b-versatile", // Verify model exists
275
- messages: [...],
276
- };
277
- ```
278
-
279
286
  ### Rate Limits
280
287
 
281
288
  Groq has rate limits based on tokens per minute. Monitor usage:
282
289
 
283
290
  ```typescript
284
291
  const result = await ctx.integrations.groq.apiRequest(
285
- { method: "POST", path: "/openai/v1/chat/completions", body: { ... } },
292
+ { method: "POST", path: "/v1/chat/completions", body: { ... } },
286
293
  { response: ChatCompletionResponseSchema }
287
294
  );
288
295
 
@@ -297,7 +304,7 @@ import { RestApiValidationError } from "@superblocksteam/sdk-api";
297
304
 
298
305
  try {
299
306
  const result = await ctx.integrations.groq.apiRequest(
300
- { method: "POST", path: "/openai/v1/chat/completions", body: { ... } },
307
+ { method: "POST", path: "/v1/chat/completions", body: { ... } },
301
308
  { response: ChatCompletionResponseSchema }
302
309
  );
303
310
  } catch (error) {
@@ -24,7 +24,7 @@ Interact with Google Sheets with full type safety and runtime validation.
24
24
  ### Read Spreadsheet Data
25
25
 
26
26
  ```typescript
27
- import { api, z, gsheets } from "@superblocksteam/sdk-api";
27
+ import { api, z, googleSheets } from "@superblocksteam/sdk-api";
28
28
 
29
29
  // Integration ID from the integrations panel
30
30
  const PROD_GSHEETS = "a1b2c3d4-5678-90ab-cdef-gsheets00001";
@@ -39,7 +39,7 @@ const RowSchema = z.array(
39
39
 
40
40
  export default api({
41
41
  integrations: {
42
- sheets: gsheets(PROD_GSHEETS),
42
+ sheets: googleSheets(PROD_GSHEETS),
43
43
  },
44
44
  name: "GoogleSheetsExample",
45
45
  input: z.object({
@@ -168,7 +168,6 @@ export {
168
168
  SUPPORTED_PLUGINS,
169
169
  type SupportedPluginId,
170
170
  type QueryExecutor,
171
- type StreamingQueryExecutor,
172
171
  type TraceMetadata,
173
172
  type CreateClientOptions,
174
173
  } from "./registry.js";
@@ -19,14 +19,14 @@ import type { TraceMetadata } from "../registry.js";
19
19
  *
20
20
  * // Parameterized query
21
21
  * const users = await lb.query(
22
- * 'SELECT * FROM users WHERE status = ?',
22
+ * 'SELECT * FROM users WHERE status = $1',
23
23
  * UserSchema,
24
24
  * ['active'],
25
25
  * );
26
26
  *
27
27
  * // Execute a mutation
28
28
  * const result = await lb.execute(
29
- * 'INSERT INTO users (name, email) VALUES (?, ?)',
29
+ * 'INSERT INTO users (name, email) VALUES ($1, $2)',
30
30
  * ['Alice', 'alice@example.com'],
31
31
  * );
32
32
  * ```
@@ -35,7 +35,7 @@ export interface LakebaseClient extends BaseIntegrationClient {
35
35
  /**
36
36
  * Execute a SQL query and return validated rows.
37
37
  *
38
- * @param sql - SQL query string with `?` placeholders for parameters
38
+ * @param sql - SQL query string with `$1`, `$2` placeholders for parameters
39
39
  * @param schema - Zod schema for validating each result row
40
40
  * @param params - Optional query parameters for server-side binding
41
41
  * @returns Array of validated rows
@@ -50,7 +50,7 @@ export interface LakebaseClient extends BaseIntegrationClient {
50
50
  /**
51
51
  * Execute a SQL statement (INSERT, UPDATE, DELETE).
52
52
  *
53
- * @param sql - SQL statement with `?` placeholders for parameters
53
+ * @param sql - SQL statement with `$1`, `$2` placeholders for parameters
54
54
  * @param params - Optional query parameters for server-side binding
55
55
  * @returns The affected row count
56
56
  */
@@ -13,7 +13,7 @@ Manage feature flags, get flag evaluations, and interact with LaunchDarkly's fea
13
13
  ### Get Feature Flag
14
14
 
15
15
  ```typescript
16
- import { api, z, launchdarkly } from "@superblocksteam/sdk-api";
16
+ import { api, z, launchDarkly } from "@superblocksteam/sdk-api";
17
17
 
18
18
  // Integration ID from the integrations panel
19
19
  const PROD_LAUNCHDARKLY = "a1b2c3d4-5678-90ab-cdef-launchda0001";
@@ -44,7 +44,7 @@ const FlagSchema = z.object({
44
44
 
45
45
  export default api({
46
46
  integrations: {
47
- launchdarkly: launchdarkly(PROD_LAUNCHDARKLY),
47
+ launchdarkly: launchDarkly(PROD_LAUNCHDARKLY),
48
48
  },
49
49
  name: "LaunchDarklyExample",
50
50
  input: z.object({
@@ -39,7 +39,7 @@ export default api({
39
39
  }),
40
40
  async run(ctx, { status }) {
41
41
  const users = await ctx.integrations.mariadb.query(
42
- "SELECT id, name, email, created_at FROM users WHERE status = $1",
42
+ "SELECT id, name, email, created_at FROM users WHERE status = ?",
43
43
  UserSchema,
44
44
  [status],
45
45
  );
@@ -54,13 +54,13 @@ export default api({
54
54
  ```typescript
55
55
  // INSERT
56
56
  await ctx.integrations.mariadb.execute(
57
- "INSERT INTO users (name, email) VALUES ($1, $2)",
57
+ "INSERT INTO users (name, email) VALUES (?, ?)",
58
58
  ["John Doe", "john@example.com"],
59
59
  );
60
60
 
61
61
  // UPDATE
62
62
  const updateResult = await ctx.integrations.mariadb.execute(
63
- "UPDATE users SET last_login = NOW() WHERE id = $1",
63
+ "UPDATE users SET last_login = NOW() WHERE id = ?",
64
64
  [userId],
65
65
  );
66
66
  console.log(`Updated ${updateResult.rowCount} rows`);
@@ -25,7 +25,7 @@ import type { TraceMetadata } from "../registry.js";
25
25
  * });
26
26
  *
27
27
  * const users = await mariadb.query(
28
- * 'SELECT * FROM users WHERE status = $1',
28
+ * 'SELECT * FROM users WHERE status = ?',
29
29
  * UserSchema,
30
30
  * ['active']
31
31
  * );
@@ -35,7 +35,7 @@ export interface MariaDBClient extends BaseIntegrationClient {
35
35
  /**
36
36
  * Execute a SQL query and validate results against a Zod schema.
37
37
  *
38
- * @param sql - SQL query string (use $1, $2, etc. for parameters)
38
+ * @param sql - SQL query string (use ? placeholders for parameters)
39
39
  * @param schema - Zod schema to validate the query results
40
40
  * @param params - Optional query parameters
41
41
  * @returns Promise resolving to validated query results
@@ -10,7 +10,9 @@ Interact with Mistral AI's APIs for chat completions, embeddings, and code gener
10
10
 
11
11
  ## Usage
12
12
 
13
- ### Chat Completion
13
+ ### Step 1: List Available Models
14
+
15
+ Model availability varies by account and API plan. Before making requests, validate which models you can access:
14
16
 
15
17
  ```typescript
16
18
  import { api, z, mistral } from "@superblocksteam/sdk-api";
@@ -18,6 +20,30 @@ import { api, z, mistral } from "@superblocksteam/sdk-api";
18
20
  // Integration ID from the integrations panel
19
21
  const PROD_MISTRAL = "a1b2c3d4-5678-90ab-cdef-mistral00001";
20
22
 
23
+ const ModelsResponseSchema = z.object({
24
+ data: z.array(
25
+ z.object({
26
+ id: z.string(),
27
+ object: z.string(),
28
+ }),
29
+ ),
30
+ });
31
+
32
+ const models = await ctx.integrations.mistral.apiRequest(
33
+ {
34
+ method: "GET",
35
+ path: "/models",
36
+ },
37
+ { response: ModelsResponseSchema },
38
+ );
39
+
40
+ // Use a model ID from the response in subsequent requests
41
+ const availableModelId = models.data[0]?.id;
42
+ ```
43
+
44
+ ### Chat Completion
45
+
46
+ ```typescript
21
47
  const ChatCompletionResponseSchema = z.object({
22
48
  id: z.string(),
23
49
  object: z.string(),
@@ -55,7 +81,7 @@ export default api({
55
81
  const result = await ctx.integrations.mistral.apiRequest(
56
82
  {
57
83
  method: "POST",
58
- path: "/v1/chat/completions",
84
+ path: "/chat/completions",
59
85
  body: {
60
86
  model: "mistral-large-latest",
61
87
  messages: [{ role: "user", content: prompt }],
@@ -76,7 +102,7 @@ export default api({
76
102
  const large = await ctx.integrations.mistral.apiRequest(
77
103
  {
78
104
  method: "POST",
79
- path: "/v1/chat/completions",
105
+ path: "/chat/completions",
80
106
  body: {
81
107
  model: "mistral-large-latest",
82
108
  messages: [{ role: "user", content: "Complex analysis..." }],
@@ -89,7 +115,7 @@ const large = await ctx.integrations.mistral.apiRequest(
89
115
  const medium = await ctx.integrations.mistral.apiRequest(
90
116
  {
91
117
  method: "POST",
92
- path: "/v1/chat/completions",
118
+ path: "/chat/completions",
93
119
  body: {
94
120
  model: "mistral-medium-latest",
95
121
  messages: [{ role: "user", content: "General task..." }],
@@ -102,7 +128,7 @@ const medium = await ctx.integrations.mistral.apiRequest(
102
128
  const small = await ctx.integrations.mistral.apiRequest(
103
129
  {
104
130
  method: "POST",
105
- path: "/v1/chat/completions",
131
+ path: "/chat/completions",
106
132
  body: {
107
133
  model: "mistral-small-latest",
108
134
  messages: [{ role: "user", content: "Simple task..." }],
@@ -115,7 +141,7 @@ const small = await ctx.integrations.mistral.apiRequest(
115
141
  const codestral = await ctx.integrations.mistral.apiRequest(
116
142
  {
117
143
  method: "POST",
118
- path: "/v1/chat/completions",
144
+ path: "/chat/completions",
119
145
  body: {
120
146
  model: "codestral-latest",
121
147
  messages: [{ role: "user", content: "Write a function to..." }],
@@ -148,7 +174,7 @@ const EmbeddingsResponseSchema = z.object({
148
174
  const result = await ctx.integrations.mistral.apiRequest(
149
175
  {
150
176
  method: "POST",
151
- path: "/v1/embeddings",
177
+ path: "/embeddings",
152
178
  body: {
153
179
  model: "mistral-embed",
154
180
  input: ["Hello world", "Bonjour le monde"],
@@ -193,7 +219,7 @@ const FunctionCallResponseSchema = z.object({
193
219
  const result = await ctx.integrations.mistral.apiRequest(
194
220
  {
195
221
  method: "POST",
196
- path: "/v1/chat/completions",
222
+ path: "/chat/completions",
197
223
  body: {
198
224
  model: "mistral-large-latest",
199
225
  messages: [{ role: "user", content: "What's the weather in London?" }],
@@ -227,7 +253,7 @@ const result = await ctx.integrations.mistral.apiRequest(
227
253
  const result = await ctx.integrations.mistral.apiRequest(
228
254
  {
229
255
  method: "POST",
230
- path: "/v1/chat/completions",
256
+ path: "/chat/completions",
231
257
  body: {
232
258
  model: "mistral-large-latest",
233
259
  messages: [
@@ -260,7 +286,7 @@ await mistral.embed({ ... });
260
286
 
261
287
  // CORRECT - Use apiRequest
262
288
  await ctx.integrations.mistral.apiRequest(
263
- { method: "POST", path: "/v1/chat/completions", body: { ... } },
289
+ { method: "POST", path: "/chat/completions", body: { ... } },
264
290
  { response: ChatCompletionResponseSchema }
265
291
  );
266
292
  ```
@@ -288,7 +314,7 @@ Mistral has a safe mode for content moderation:
288
314
  const result = await ctx.integrations.mistral.apiRequest(
289
315
  {
290
316
  method: "POST",
291
- path: "/v1/chat/completions",
317
+ path: "/chat/completions",
292
318
  body: {
293
319
  model: "mistral-large-latest",
294
320
  messages: [{ role: "user", content: "..." }],
@@ -307,7 +333,7 @@ Mistral supports system messages:
307
333
  const result = await ctx.integrations.mistral.apiRequest(
308
334
  {
309
335
  method: "POST",
310
- path: "/v1/chat/completions",
336
+ path: "/chat/completions",
311
337
  body: {
312
338
  model: "mistral-large-latest",
313
339
  messages: [
@@ -327,7 +353,7 @@ import { RestApiValidationError } from "@superblocksteam/sdk-api";
327
353
 
328
354
  try {
329
355
  const result = await ctx.integrations.mistral.apiRequest(
330
- { method: "POST", path: "/v1/chat/completions", body: { ... } },
356
+ { method: "POST", path: "/chat/completions", body: { ... } },
331
357
  { response: ChatCompletionResponseSchema }
332
358
  );
333
359
  } catch (error) {
@@ -39,7 +39,7 @@ export default api({
39
39
  }),
40
40
  async run(ctx, { status }) {
41
41
  const users = await ctx.integrations.mssql.query(
42
- "SELECT id, name, email, created_at FROM users WHERE status = $1",
42
+ "SELECT id, name, email, created_at FROM users WHERE status = @PARAM_1",
43
43
  UserSchema,
44
44
  [status],
45
45
  );
@@ -54,13 +54,13 @@ export default api({
54
54
  ```typescript
55
55
  // INSERT
56
56
  await ctx.integrations.mssql.execute(
57
- "INSERT INTO users (name, email) VALUES ($1, $2)",
57
+ "INSERT INTO users (name, email) VALUES (@PARAM_1, @PARAM_2)",
58
58
  ["John Doe", "john@example.com"],
59
59
  );
60
60
 
61
61
  // UPDATE
62
62
  const updateResult = await ctx.integrations.mssql.execute(
63
- "UPDATE users SET last_login = GETDATE() WHERE id = $1",
63
+ "UPDATE users SET last_login = GETDATE() WHERE id = @PARAM_1",
64
64
  [userId],
65
65
  );
66
66
  console.log(`Updated ${updateResult.rowCount} rows`);
@@ -25,7 +25,7 @@ import type { TraceMetadata } from "../registry.js";
25
25
  * });
26
26
  *
27
27
  * const users = await mssql.query(
28
- * 'SELECT * FROM users WHERE status = $1',
28
+ * 'SELECT * FROM users WHERE status = @PARAM_1',
29
29
  * UserSchema,
30
30
  * ['active']
31
31
  * );
@@ -35,7 +35,7 @@ export interface MSSQLClient extends BaseIntegrationClient {
35
35
  /**
36
36
  * Execute a SQL query and validate results against a Zod schema.
37
37
  *
38
- * @param sql - SQL query string (use $1, $2, etc. for parameters)
38
+ * @param sql - SQL query string (use @PARAM_1, @PARAM_2, etc. for parameters)
39
39
  * @param schema - Zod schema to validate the query results
40
40
  * @param params - Optional query parameters
41
41
  * @returns Promise resolving to validated query results
@@ -39,7 +39,7 @@ export default api({
39
39
  }),
40
40
  async run(ctx, { status }) {
41
41
  const users = await ctx.integrations.mysql.query(
42
- "SELECT id, name, email, created_at FROM users WHERE status = $1",
42
+ "SELECT id, name, email, created_at FROM users WHERE status = ?",
43
43
  UserSchema,
44
44
  [status],
45
45
  );
@@ -54,13 +54,13 @@ export default api({
54
54
  ```typescript
55
55
  // INSERT
56
56
  await ctx.integrations.mysql.execute(
57
- "INSERT INTO users (name, email) VALUES ($1, $2)",
57
+ "INSERT INTO users (name, email) VALUES (?, ?)",
58
58
  ["John Doe", "john@example.com"],
59
59
  );
60
60
 
61
61
  // UPDATE
62
62
  const updateResult = await ctx.integrations.mysql.execute(
63
- "UPDATE users SET last_login = NOW() WHERE id = $1",
63
+ "UPDATE users SET last_login = NOW() WHERE id = ?",
64
64
  [userId],
65
65
  );
66
66
  console.log(`Updated ${updateResult.rowCount} rows`);
@@ -90,7 +90,7 @@ const orders = await ctx.integrations.mysql.query(
90
90
  c.email as customer_email
91
91
  FROM orders o
92
92
  JOIN customers c ON o.customer_id = c.id
93
- WHERE o.status = $1`,
93
+ WHERE o.status = ?`,
94
94
  OrderWithCustomerSchema,
95
95
  ["pending"],
96
96
  );
@@ -25,7 +25,7 @@ import type { TraceMetadata } from "../registry.js";
25
25
  * });
26
26
  *
27
27
  * const users = await mysql.query(
28
- * 'SELECT * FROM users WHERE status = $1',
28
+ * 'SELECT * FROM users WHERE status = ?',
29
29
  * UserSchema,
30
30
  * ['active']
31
31
  * );
@@ -35,7 +35,7 @@ export interface MySQLClient extends BaseIntegrationClient {
35
35
  /**
36
36
  * Execute a SQL query and validate results against a Zod schema.
37
37
  *
38
- * @param sql - SQL query string (use $1, $2, etc. for parameters)
38
+ * @param sql - SQL query string (use ? placeholders for parameters)
39
39
  * @param schema - Zod schema to validate the query results
40
40
  * @param params - Optional query parameters
41
41
  * @returns Promise resolving to validated query results
@@ -52,7 +52,7 @@ export interface MySQLClient extends BaseIntegrationClient {
52
52
  * });
53
53
  *
54
54
  * const users = await mysql.query(
55
- * 'SELECT * FROM users WHERE status = $1',
55
+ * 'SELECT * FROM users WHERE status = ?',
56
56
  * UserSchema,
57
57
  * ['active']
58
58
  * );
@@ -75,7 +75,7 @@ export interface MySQLClient extends BaseIntegrationClient {
75
75
  * @example
76
76
  * ```typescript
77
77
  * const result = await mysql.execute(
78
- * 'UPDATE users SET last_login = NOW() WHERE id = $1',
78
+ * 'UPDATE users SET last_login = NOW() WHERE id = ?',
79
79
  * [userId]
80
80
  * );
81
81
  * console.log(`Updated ${result.rowCount} rows`);