@superblocksteam/sdk-api 2.0.156-next.3 → 2.0.156

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 (57) hide show
  1. package/dist/errors.d.ts +6 -6
  2. package/dist/errors.d.ts.map +1 -1
  3. package/dist/errors.js +2 -23
  4. package/dist/errors.js.map +1 -1
  5. package/dist/integrations/base/rest-api-client-base.d.ts +27 -0
  6. package/dist/integrations/base/rest-api-client-base.d.ts.map +1 -1
  7. package/dist/integrations/base/rest-api-client-base.js +46 -23
  8. package/dist/integrations/base/rest-api-client-base.js.map +1 -1
  9. package/dist/integrations/base/rest-api-integration-client.d.ts +19 -7
  10. package/dist/integrations/base/rest-api-integration-client.d.ts.map +1 -1
  11. package/dist/integrations/base/rest-api-integration-client.js +29 -2
  12. package/dist/integrations/base/rest-api-integration-client.js.map +1 -1
  13. package/dist/integrations/base/types.d.ts +43 -36
  14. package/dist/integrations/base/types.d.ts.map +1 -1
  15. package/dist/integrations/base/types.js +26 -1
  16. package/dist/integrations/base/types.js.map +1 -1
  17. package/dist/integrations/documentation-resolver.test.js +5 -11
  18. package/dist/integrations/documentation-resolver.test.js.map +1 -1
  19. package/dist/integrations/restapiintegration/client.test.d.ts +10 -0
  20. package/dist/integrations/restapiintegration/client.test.d.ts.map +1 -1
  21. package/dist/integrations/restapiintegration/client.test.js +69 -146
  22. package/dist/integrations/restapiintegration/client.test.js.map +1 -1
  23. package/dist/integrations/slack/client.test.js +1 -26
  24. package/dist/integrations/slack/client.test.js.map +1 -1
  25. package/package.json +2 -2
  26. package/src/errors.ts +5 -33
  27. package/src/integrations/anthropic/README.md +0 -7
  28. package/src/integrations/base/rest-api-client-base.ts +56 -28
  29. package/src/integrations/base/rest-api-integration-client.ts +33 -14
  30. package/src/integrations/base/types.ts +45 -41
  31. package/src/integrations/bigquery/README.md +0 -1
  32. package/src/integrations/box/README.md +0 -3
  33. package/src/integrations/cohere/README.md +0 -7
  34. package/src/integrations/documentation-resolver.test.ts +6 -13
  35. package/src/integrations/fireworks/README.md +0 -7
  36. package/src/integrations/gemini/README.md +0 -8
  37. package/src/integrations/groq/README.md +0 -7
  38. package/src/integrations/mistral/README.md +0 -7
  39. package/src/integrations/openai_v2/README.md +0 -7
  40. package/src/integrations/perplexity/README.md +0 -7
  41. package/src/integrations/restapiintegration/client.test.ts +86 -207
  42. package/src/integrations/restapiintegration/docs.manifest.json +1 -5
  43. package/src/integrations/s3/README.md +0 -1
  44. package/src/integrations/slack/client.test.ts +1 -36
  45. package/src/integrations/snowflakecortex/README.md +0 -8
  46. package/src/integrations/stabilityai/README.md +0 -7
  47. package/dist/integrations/base/decode-worker-binary-response.d.ts +0 -4
  48. package/dist/integrations/base/decode-worker-binary-response.d.ts.map +0 -1
  49. package/dist/integrations/base/decode-worker-binary-response.js +0 -49
  50. package/dist/integrations/base/decode-worker-binary-response.js.map +0 -1
  51. package/dist/integrations/base/decode-worker-binary-response.test.d.ts +0 -2
  52. package/dist/integrations/base/decode-worker-binary-response.test.d.ts.map +0 -1
  53. package/dist/integrations/base/decode-worker-binary-response.test.js +0 -81
  54. package/dist/integrations/base/decode-worker-binary-response.test.js.map +0 -1
  55. package/src/integrations/base/decode-worker-binary-response.test.ts +0 -107
  56. package/src/integrations/base/decode-worker-binary-response.ts +0 -62
  57. package/src/integrations/restapiintegration/overlays/response-types-binary.md +0 -51
package/dist/errors.d.ts CHANGED
@@ -2,10 +2,6 @@
2
2
  * Error classes for SDK runtime errors.
3
3
  */
4
4
  import type { z } from "zod";
5
- export declare const REDACTED_BINARY_RESPONSE_DATA: Readonly<{
6
- dataType: "binary";
7
- redacted: true;
8
- }>;
9
5
  /**
10
6
  * Error thrown when REST API response or request body validation fails.
11
7
  *
@@ -14,12 +10,16 @@ export declare const REDACTED_BINARY_RESPONSE_DATA: Readonly<{
14
10
  */
15
11
  export declare class RestApiValidationError extends Error {
16
12
  readonly details: {
17
- data: unknown;
13
+ /** The complete Zod error object with all validation information */
18
14
  zodError: z.ZodError;
15
+ /** The actual data that failed validation (request body or response) */
16
+ data: unknown;
19
17
  };
20
18
  constructor(message: string, details: {
21
- data: unknown;
19
+ /** The complete Zod error object with all validation information */
22
20
  zodError: z.ZodError;
21
+ /** The actual data that failed validation (request body or response) */
22
+ data: unknown;
23
23
  });
24
24
  }
25
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,eAAO,MAAM,6BAA6B;;;EAGxC,CAAC;AAmBH;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,OAAO,EAAE;QAChB,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;KACtB,CAAC;gBAGA,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;KACtB;CAUJ;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAG3B,OAAO,EAAE;QACvB,wDAAwD;QACxD,QAAQ,EAAE,MAAM,CAAC;QACjB,sDAAsD;QACtD,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9D,8CAA8C;QAC9C,GAAG,EAAE,OAAO,CAAC;KACd;gBARD,OAAO,EAAE,MAAM,EACC,OAAO,EAAE;QACvB,wDAAwD;QACxD,QAAQ,EAAE,MAAM,CAAC;QACjB,sDAAsD;QACtD,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9D,8CAA8C;QAC9C,GAAG,EAAE,OAAO,CAAC;KACd;CAOJ;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,OAAO,CAAC,EAAE;QACxB,iCAAiC;QACjC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,4CAA4C;QAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,+CAA+C;QAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,gDAAgD;QAChD,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;QACtB,gDAAgD;QAChD,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB;gBAZD,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE;QACxB,iCAAiC;QACjC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,4CAA4C;QAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,+CAA+C;QAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,gDAAgD;QAChD,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;QACtB,gDAAgD;QAChD,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,YAAA;CAOJ"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;aAG7B,OAAO,EAAE;QACvB,oEAAoE;QACpE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;QACrB,wEAAwE;QACxE,IAAI,EAAE,OAAO,CAAC;KACf;gBAND,OAAO,EAAE,MAAM,EACC,OAAO,EAAE;QACvB,oEAAoE;QACpE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;QACrB,wEAAwE;QACxE,IAAI,EAAE,OAAO,CAAC;KACf;CAOJ;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAG3B,OAAO,EAAE;QACvB,wDAAwD;QACxD,QAAQ,EAAE,MAAM,CAAC;QACjB,sDAAsD;QACtD,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9D,8CAA8C;QAC9C,GAAG,EAAE,OAAO,CAAC;KACd;gBARD,OAAO,EAAE,MAAM,EACC,OAAO,EAAE;QACvB,wDAAwD;QACxD,QAAQ,EAAE,MAAM,CAAC;QACjB,sDAAsD;QACtD,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9D,8CAA8C;QAC9C,GAAG,EAAE,OAAO,CAAC;KACd;CAOJ;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,OAAO,CAAC,EAAE;QACxB,iCAAiC;QACjC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,4CAA4C;QAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,+CAA+C;QAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,gDAAgD;QAChD,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;QACtB,gDAAgD;QAChD,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB;gBAZD,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE;QACxB,iCAAiC;QACjC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,4CAA4C;QAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,+CAA+C;QAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,gDAAgD;QAChD,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;QACtB,gDAAgD;QAChD,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,YAAA;CAOJ"}
package/dist/errors.js CHANGED
@@ -1,25 +1,6 @@
1
1
  /**
2
2
  * Error classes for SDK runtime errors.
3
3
  */
4
- export const REDACTED_BINARY_RESPONSE_DATA = Object.freeze({
5
- dataType: "binary",
6
- redacted: true,
7
- });
8
- function isWorkerBufferJson(data) {
9
- if (typeof data !== "object" || data === null) {
10
- return false;
11
- }
12
- if (!("data" in data) || !("type" in data)) {
13
- return false;
14
- }
15
- return data.type === "Buffer" && Array.isArray(data.data);
16
- }
17
- function redactBinaryValidationData(data) {
18
- if (data instanceof Uint8Array || isWorkerBufferJson(data)) {
19
- return REDACTED_BINARY_RESPONSE_DATA;
20
- }
21
- return data;
22
- }
23
4
  /**
24
5
  * Error thrown when REST API response or request body validation fails.
25
6
  *
@@ -30,11 +11,9 @@ export class RestApiValidationError extends Error {
30
11
  details;
31
12
  constructor(message, details) {
32
13
  super(message);
14
+ this.details = details;
33
15
  this.name = "RestApiValidationError";
34
- this.details = {
35
- data: redactBinaryValidationData(details.data),
36
- zodError: details.zodError,
37
- };
16
+ // Ensure proper prototype chain for instanceof checks
38
17
  Object.setPrototypeOf(this, RestApiValidationError.prototype);
39
18
  }
40
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,CAAC;IACzD,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,SAAS,kBAAkB,CAAC,IAAa;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAa;IAC/C,IAAI,IAAI,YAAY,UAAU,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,OAAO,6BAA6B,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,OAAO,CAGd;IAEF,YACE,OAAe,EACf,OAGC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC;YAC9C,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAG3B;IAFlB,YACE,OAAe,EACC,OAOf;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QATC,YAAO,GAAP,OAAO,CAOtB;QAGD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,sDAAsD;QACtD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGzB;IAFlB,YACE,OAAe,EACC,OAWf;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QAbC,YAAO,GAAP,OAAO,CAWtB;QAGD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,sDAAsD;QACtD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAG7B;IAFlB,YACE,OAAe,EACC,OAKf;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QAPC,YAAO,GAAP,OAAO,CAKtB;QAGD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,sDAAsD;QACtD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAG3B;IAFlB,YACE,OAAe,EACC,OAOf;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QATC,YAAO,GAAP,OAAO,CAOtB;QAGD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,sDAAsD;QACtD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGzB;IAFlB,YACE,OAAe,EACC,OAWf;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QAbC,YAAO,GAAP,OAAO,CAWtB;QAGD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,sDAAsD;QACtD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;CACF"}
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Abstract base for REST API Integration clients.
3
+ *
4
+ * Owns the shared infrastructure that every REST-API-backed integration
5
+ * needs: config storage, parameter helpers, body validation, request
6
+ * construction, and query execution. Subclasses add their own
7
+ * `apiRequest` with whatever response-handling strategy they need
8
+ * (e.g. direct Zod validation, discriminated-union wrapping).
9
+ */
1
10
  import type { PartialMessage } from "@bufbuild/protobuf";
2
11
  import { z } from "zod";
3
12
  import type { Property } from "@superblocksteam/types/dist/src/common/v1/plugin_pb";
@@ -6,6 +15,13 @@ import type { QueryExecutor, TraceMetadata } from "../registry.js";
6
15
  import type { IntegrationConfig, IntegrationClientImpl } from "../types.js";
7
16
  import type { ApiRequestOptions } from "./types.js";
8
17
  export type RestApiRequest = PartialMessage<RestApiIntegrationPlugin>;
18
+ /**
19
+ * Shared base for all REST API Integration clients.
20
+ *
21
+ * Provides config fields, parameter helpers, body validation, request
22
+ * building, and query execution. Does NOT define `apiRequest` — each
23
+ * concrete subclass supplies its own return-type contract.
24
+ */
9
25
  export declare abstract class RestApiClientBase implements IntegrationClientImpl {
10
26
  readonly name: string;
11
27
  readonly pluginId: string;
@@ -16,6 +32,17 @@ export declare abstract class RestApiClientBase implements IntegrationClientImpl
16
32
  * Create a Property object for query params / headers.
17
33
  */
18
34
  protected createParam(key: string, value: unknown): PartialMessage<Property>;
35
+ /**
36
+ * Validate the request body, build the proto request, and execute it.
37
+ *
38
+ * Returns the raw (unvalidated) response from the orchestrator.
39
+ * Subclasses call this, then apply their own response handling.
40
+ *
41
+ * @param options - Request configuration (see {@link ApiRequestOptions})
42
+ * @param bodySchema - Optional Zod schema for body validation
43
+ * @param metadata - Optional trace metadata for observability
44
+ * @returns Raw response from the orchestrator
45
+ */
19
46
  protected executeApiRequest<TBody>(options: ApiRequestOptions<TBody>, bodySchema?: z.ZodSchema<TBody>, metadata?: TraceMetadata): Promise<unknown>;
20
47
  }
21
48
  //# sourceMappingURL=rest-api-client-base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rest-api-client-base.d.ts","sourceRoot":"","sources":["../../../src/integrations/base/rest-api-client-base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qDAAqD,CAAC;AACpF,OAAO,KAAK,EAAE,MAAM,IAAI,wBAAwB,EAAE,MAAM,yEAAyE,CAAC;AAGlI,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAG5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,wBAAwB,CAAC,CAAC;AAEtE,8BAAsB,iBAAkB,YAAW,qBAAqB;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEnC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;gBAEnC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa;IAOlE;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC;cAO5D,iBAAiB,CAAC,KAAK,EACrC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,EACjC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAC/B,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,OAAO,CAAC;CAsFpB"}
1
+ {"version":3,"file":"rest-api-client-base.d.ts","sourceRoot":"","sources":["../../../src/integrations/base/rest-api-client-base.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qDAAqD,CAAC;AACpF,OAAO,KAAK,EAAE,MAAM,IAAI,wBAAwB,EAAE,MAAM,yEAAyE,CAAC;AAGlI,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,wBAAwB,CAAC,CAAC;AAEtE;;;;;;GAMG;AACH,8BAAsB,iBAAkB,YAAW,qBAAqB;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEnC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;gBAEnC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa;IAOlE;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC;IAO5E;;;;;;;;;;OAUG;cACa,iBAAiB,CAAC,KAAK,EACrC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,EACjC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAC/B,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,OAAO,CAAC;CAuFpB"}
@@ -1,7 +1,22 @@
1
+ /**
2
+ * Abstract base for REST API Integration clients.
3
+ *
4
+ * Owns the shared infrastructure that every REST-API-backed integration
5
+ * needs: config storage, parameter helpers, body validation, request
6
+ * construction, and query execution. Subclasses add their own
7
+ * `apiRequest` with whatever response-handling strategy they need
8
+ * (e.g. direct Zod validation, discriminated-union wrapping).
9
+ */
1
10
  import { z } from "zod";
2
11
  import { RestApiValidationError } from "../../errors.js";
3
- import { decodeWorkerBinaryResponse } from "./decode-worker-binary-response.js";
4
12
  import { REST_API_RESPONSE_TYPES } from "./types.js";
13
+ /**
14
+ * Shared base for all REST API Integration clients.
15
+ *
16
+ * Provides config fields, parameter helpers, body validation, request
17
+ * building, and query execution. Does NOT define `apiRequest` — each
18
+ * concrete subclass supplies its own return-type contract.
19
+ */
5
20
  export class RestApiClientBase {
6
21
  name;
7
22
  pluginId;
@@ -22,7 +37,19 @@ export class RestApiClientBase {
22
37
  value: typeof value === "string" ? value : JSON.stringify(value),
23
38
  };
24
39
  }
40
+ /**
41
+ * Validate the request body, build the proto request, and execute it.
42
+ *
43
+ * Returns the raw (unvalidated) response from the orchestrator.
44
+ * Subclasses call this, then apply their own response handling.
45
+ *
46
+ * @param options - Request configuration (see {@link ApiRequestOptions})
47
+ * @param bodySchema - Optional Zod schema for body validation
48
+ * @param metadata - Optional trace metadata for observability
49
+ * @returns Raw response from the orchestrator
50
+ */
25
51
  async executeApiRequest(options, bodySchema, metadata) {
52
+ // Validate request body if both body and schema are present.
26
53
  if (options.body !== undefined && bodySchema) {
27
54
  const bodyParseResult = bodySchema.safeParse(options.body);
28
55
  if (!bodyParseResult.success) {
@@ -44,11 +71,15 @@ export class RestApiClientBase {
44
71
  params.push(this.createParam(key, value));
45
72
  }
46
73
  }
74
+ // The RestApiResponseType union is erased in the bundled JS user APIs
75
+ // run as, so values outside it (including wire values the orchestrator
76
+ // implements but the SDK deliberately does not expose, like "auto")
77
+ // must also be rejected at runtime, before the request is issued.
47
78
  const responseTypeResult = z
48
79
  .enum(REST_API_RESPONSE_TYPES)
49
80
  .safeParse(options.responseType ?? "json");
50
81
  if (!responseTypeResult.success) {
51
- throw new RestApiValidationError(`Unsupported responseType ${JSON.stringify(options.responseType)} - expected one of: ${REST_API_RESPONSE_TYPES.join(", ")}`, {
82
+ throw new RestApiValidationError(`Unsupported responseType ${JSON.stringify(options.responseType)} expected one of: ${REST_API_RESPONSE_TYPES.join(", ")}`, {
52
83
  zodError: responseTypeResult.error,
53
84
  data: options.responseType,
54
85
  });
@@ -66,30 +97,22 @@ export class RestApiClientBase {
66
97
  request.body = JSON.stringify(options.body);
67
98
  request.bodyType = "jsonBody";
68
99
  }
69
- const result = await this.executeQuery({ ...request }, undefined, metadata);
100
+ const result = await this.executeQuery(request, undefined, metadata);
101
+ // Neither `null` nor `undefined` is a legitimate decode result for the
102
+ // exposed response types: JSON parses to a value the schema sees, and
103
+ // an empty text body decodes to "". Either value only arises from a
104
+ // broken execution contract, so both throw. (If "auto" is ever exposed,
105
+ // `null` becomes legitimate — it parses a literal `null` JSON body.)
70
106
  if (result === null || result === undefined) {
71
- throw new RestApiValidationError(`Integration query returned ${String(result)} for responseType "${responseType}" - expected a response value`, {
72
- zodError: new z.ZodError([
73
- {
74
- code: z.ZodIssueCode.custom,
75
- message: "response value is required",
76
- path: [],
77
- },
78
- ]),
79
- data: result,
80
- });
81
- }
82
- switch (responseType) {
83
- case "binary":
84
- return decodeWorkerBinaryResponse(result);
85
- case "json":
86
- case "text":
87
- return result;
88
- default: {
89
- const _exhaustive = responseType;
90
- return _exhaustive;
107
+ const nonNullResult = z.object({}).safeParse(result);
108
+ if (!nonNullResult.success) {
109
+ throw new RestApiValidationError(`Integration query returned ${String(result)} for responseType "${responseType}" — expected a response value`, {
110
+ zodError: nonNullResult.error,
111
+ data: result,
112
+ });
91
113
  }
92
114
  }
115
+ return result;
93
116
  }
94
117
  }
95
118
  //# sourceMappingURL=rest-api-client-base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rest-api-client-base.js","sourceRoot":"","sources":["../../../src/integrations/base/rest-api-client-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rest-api-client-base.js","sourceRoot":"","sources":["../../../src/integrations/base/rest-api-client-base.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,30 @@
1
+ /**
2
+ * Generic REST API Integration client with Zod response validation.
3
+ *
4
+ * Extends RestApiClientBase with an apiRequest() that validates the
5
+ * full response against a caller-supplied Zod schema and throws
6
+ * RestApiValidationError on mismatch. When no response schema is
7
+ * provided, the raw result is returned without validation — useful for
8
+ * non-JSON responses (e.g. XML), which can alternatively be validated
9
+ * with a schema matching the decoded value (e.g. z.string()).
10
+ */
1
11
  import { z } from "zod";
2
12
  import type { TraceMetadata } from "../registry.js";
3
13
  import { RestApiClientBase } from "./rest-api-client-base.js";
4
14
  import type { ApiRequestOptions, ApiRequestSchema, RestApiResponseType, SupportsApiRequest } from "./types.js";
15
+ /**
16
+ * Base implementation for REST API Integration clients.
17
+ *
18
+ * All OpenAPI-based integration clients (except those with
19
+ * integration-specific response handling) extend this class to
20
+ * inherit the generic apiRequest() method with runtime Zod validation.
21
+ */
5
22
  export declare abstract class RestApiIntegrationClient extends RestApiClientBase implements SupportsApiRequest {
6
- apiRequest<TBody, TResponse>(options: ApiRequestOptions<TBody> & {
7
- responseType?: Exclude<RestApiResponseType, "binary">;
8
- }, schema: ApiRequestSchema<TBody, TResponse> & {
23
+ apiRequest<TBody, TResponse>(options: ApiRequestOptions<TBody>, schema: ApiRequestSchema<TBody, TResponse> & {
9
24
  response: z.ZodSchema<TResponse>;
10
25
  }, metadata?: TraceMetadata): Promise<TResponse>;
11
26
  apiRequest<TBody>(options: ApiRequestOptions<TBody> & {
12
- responseType: "binary";
13
- }, schema?: ApiRequestSchema<TBody, Uint8Array>, metadata?: TraceMetadata): Promise<Uint8Array>;
14
- apiRequest<TBody>(options: ApiRequestOptions<TBody> & {
15
- responseType: "text";
27
+ responseType: Exclude<RestApiResponseType, "json">;
16
28
  }, schema?: ApiRequestSchema<TBody, unknown>, metadata?: TraceMetadata): Promise<unknown>;
17
29
  }
18
30
  //# sourceMappingURL=rest-api-integration-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rest-api-integration-client.d.ts","sourceRoot":"","sources":["../../../src/integrations/base/rest-api-integration-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,8BAAsB,wBACpB,SAAQ,iBACR,YAAW,kBAAkB;IAEvB,UAAU,CAAC,KAAK,EAAE,SAAS,EAC/B,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG;QAClC,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;KACvD,EACD,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG;QAC3C,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KAClC,EACD,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,SAAS,CAAC;IACf,UAAU,CAAC,KAAK,EACpB,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG;QAClC,YAAY,EAAE,QAAQ,CAAC;KACxB,EACD,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,EAC5C,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,UAAU,CAAC;IAChB,UAAU,CAAC,KAAK,EACpB,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG;QAClC,YAAY,EAAE,MAAM,CAAC;KACtB,EACD,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EACzC,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,OAAO,CAAC;CA8CpB"}
1
+ {"version":3,"file":"rest-api-integration-client.d.ts","sourceRoot":"","sources":["../../../src/integrations/base/rest-api-integration-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,8BAAsB,wBACpB,SAAQ,iBACR,YAAW,kBAAkB;IAEvB,UAAU,CAAC,KAAK,EAAE,SAAS,EAC/B,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,EACjC,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG;QAC3C,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KAClC,EACD,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,SAAS,CAAC;IACf,UAAU,CAAC,KAAK,EACpB,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG;QAClC,YAAY,EAAE,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;KACpD,EACD,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EACzC,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,OAAO,CAAC;CAwDpB"}
@@ -1,10 +1,30 @@
1
+ /**
2
+ * Generic REST API Integration client with Zod response validation.
3
+ *
4
+ * Extends RestApiClientBase with an apiRequest() that validates the
5
+ * full response against a caller-supplied Zod schema and throws
6
+ * RestApiValidationError on mismatch. When no response schema is
7
+ * provided, the raw result is returned without validation — useful for
8
+ * non-JSON responses (e.g. XML), which can alternatively be validated
9
+ * with a schema matching the decoded value (e.g. z.string()).
10
+ */
1
11
  import { z } from "zod";
2
12
  import { RestApiValidationError } from "../../errors.js";
3
13
  import { RestApiClientBase } from "./rest-api-client-base.js";
14
+ /**
15
+ * Base implementation for REST API Integration clients.
16
+ *
17
+ * All OpenAPI-based integration clients (except those with
18
+ * integration-specific response handling) extend this class to
19
+ * inherit the generic apiRequest() method with runtime Zod validation.
20
+ */
4
21
  export class RestApiIntegrationClient extends RestApiClientBase {
5
22
  async apiRequest(options, schema, metadata) {
23
+ // The overloads make schema-less JSON unrepresentable in TypeScript,
24
+ // but user API code executes as bundled JS with no type enforcement —
25
+ // enforce the same contract at runtime, before issuing the request.
6
26
  if ((options.responseType ?? "json") === "json" && !schema?.response) {
7
- throw new RestApiValidationError('apiRequest() with responseType "json" requires a response schema. Provide one, or set responseType to "text" or "binary"', {
27
+ throw new RestApiValidationError('apiRequest() with responseType "json" requires a response schema provide one, or set responseType: "text" to receive a non-JSON payload unvalidated', {
8
28
  zodError: new z.ZodError([
9
29
  {
10
30
  code: z.ZodIssueCode.custom,
@@ -16,14 +36,21 @@ export class RestApiIntegrationClient extends RestApiClientBase {
16
36
  });
17
37
  }
18
38
  const result = await this.executeApiRequest(options, schema?.body, metadata);
39
+ // Without a response schema the raw result is returned as-is (typed
40
+ // unknown). Non-JSON responses (e.g. responseType "text" returning
41
+ // XML) can either omit the schema or pass one matching the decoded
42
+ // value, such as z.string(). Request-body validation is opt-in:
43
+ // executeApiRequest only validates options.body when schema.body is
44
+ // provided (unchanged from the previous contract, where schema.body
45
+ // was already optional).
19
46
  if (!schema?.response) {
20
47
  return result;
21
48
  }
22
49
  const responseParseResult = schema.response.safeParse(result);
23
50
  if (!responseParseResult.success) {
24
51
  throw new RestApiValidationError(`Response validation failed: ${responseParseResult.error.message}`, {
25
- data: result,
26
52
  zodError: responseParseResult.error,
53
+ data: result,
27
54
  });
28
55
  }
29
56
  return responseParseResult.data;
@@ -1 +1 @@
1
- {"version":3,"file":"rest-api-integration-client.js","sourceRoot":"","sources":["../../../src/integrations/base/rest-api-integration-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQ9D,MAAM,OAAgB,wBACpB,SAAQ,iBAAiB;IA0BzB,KAAK,CAAC,UAAU,CACd,OAAiC,EACjC,MAA2C,EAC3C,QAAwB;QAExB,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;YACrE,MAAM,IAAI,sBAAsB,CAC9B,0HAA0H,EAC1H;gBACE,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC;oBACvB;wBACE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;wBAC3B,OAAO,EAAE,gDAAgD;wBACzD,IAAI,EAAE,CAAC,UAAU,CAAC;qBACnB;iBACF,CAAC;gBACF,IAAI,EAAE,SAAS;aAChB,CACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CACzC,OAAO,EACP,MAAM,EAAE,IAAI,EACZ,QAAQ,CACT,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE9D,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,sBAAsB,CAC9B,+BAA+B,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,EAClE;gBACE,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,mBAAmB,CAAC,KAAK;aACpC,CACF,CAAC;QACJ,CAAC;QAED,OAAO,mBAAmB,CAAC,IAAI,CAAC;IAClC,CAAC;CACF"}
1
+ {"version":3,"file":"rest-api-integration-client.js","sourceRoot":"","sources":["../../../src/integrations/base/rest-api-integration-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQ9D;;;;;;GAMG;AACH,MAAM,OAAgB,wBACpB,SAAQ,iBAAiB;IAiBzB,KAAK,CAAC,UAAU,CACd,OAAiC,EACjC,MAA2C,EAC3C,QAAwB;QAExB,qEAAqE;QACrE,sEAAsE;QACtE,oEAAoE;QACpE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;YACrE,MAAM,IAAI,sBAAsB,CAC9B,uJAAuJ,EACvJ;gBACE,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC;oBACvB;wBACE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;wBAC3B,OAAO,EAAE,gDAAgD;wBACzD,IAAI,EAAE,CAAC,UAAU,CAAC;qBACnB;iBACF,CAAC;gBACF,IAAI,EAAE,SAAS;aAChB,CACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CACzC,OAAO,EACP,MAAM,EAAE,IAAI,EACZ,QAAQ,CACT,CAAC;QAEF,oEAAoE;QACpE,mEAAmE;QACnE,mEAAmE;QACnE,gEAAgE;QAChE,oEAAoE;QACpE,oEAAoE;QACpE,yBAAyB;QACzB,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE9D,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,sBAAsB,CAC9B,+BAA+B,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,EAClE;gBACE,QAAQ,EAAE,mBAAmB,CAAC,KAAK;gBACnC,IAAI,EAAE,MAAM;aACb,CACF,CAAC;QACJ,CAAC;QAED,OAAO,mBAAmB,CAAC,IAAI,CAAC;IAClC,CAAC;CACF"}
@@ -1,8 +1,36 @@
1
+ /**
2
+ * Shared types for REST API Integration (OpenAPI) based clients.
3
+ */
1
4
  import type { z } from "zod";
2
5
  import type { TraceMetadata } from "../registry.js";
3
6
  export type { TraceMetadata };
4
- export declare const REST_API_RESPONSE_TYPES: readonly ["binary", "json", "text"];
7
+ /**
8
+ * How the orchestrator should decode the HTTP response body.
9
+ *
10
+ * - `"json"` (default): parse the response as JSON; fails on non-JSON bodies
11
+ * - `"text"`: return the decoded response body as a string (XML, CSV, HTML, ...)
12
+ *
13
+ * The orchestrator also implements `"auto"`, `"binary"`, and `"raw"` wire
14
+ * values; they are deliberately not exposed here (widening this union later
15
+ * is backward-compatible, narrowing it is not):
16
+ *
17
+ * - `"auto"` returns parsed JSON whenever the body happens to parse, which
18
+ * would let JSON responses bypass schema validation via the schema-less
19
+ * overload
20
+ * - `"binary"` would freeze the worker's internal Buffer JSON encoding
21
+ * (`{ type: "Buffer", data: number[] }`, ~4x payload inflation) into the
22
+ * public SDK contract
23
+ * - `"raw"` is rejected by the orchestrator for non-streaming requests
24
+ *
25
+ * The runtime tuple backs the request-time guard in `executeApiRequest`:
26
+ * the type-level union is erased in the bundled JS user APIs run as, so
27
+ * values outside it must also be rejected at runtime.
28
+ */
29
+ export declare const REST_API_RESPONSE_TYPES: readonly ["json", "text"];
5
30
  export type RestApiResponseType = (typeof REST_API_RESPONSE_TYPES)[number];
31
+ /**
32
+ * Options for making a generic REST API request.
33
+ */
6
34
  export interface ApiRequestOptions<TBody = unknown> {
7
35
  /**
8
36
  * HTTP method for the request.
@@ -29,13 +57,14 @@ export interface ApiRequestOptions<TBody = unknown> {
29
57
  * How the response body should be decoded. Defaults to `"json"`.
30
58
  *
31
59
  * Use `"text"` for endpoints that return non-JSON payloads such as
32
- * XML. Use `"binary"` for PDFs and other byte payloads. When
33
- * requesting a text or binary response, omit the response schema (or
34
- * use one matching the decoded value, e.g. `z.string()` or
35
- * `z.instanceof(Uint8Array)`).
60
+ * XML. When requesting a text response, omit the response schema (or
61
+ * use one matching the decoded string, e.g. `z.string()`).
36
62
  */
37
63
  responseType?: RestApiResponseType;
38
64
  }
65
+ /**
66
+ * Schema configuration for API request validation.
67
+ */
39
68
  export interface ApiRequestSchema<TBody = unknown, TResponse = unknown> {
40
69
  /**
41
70
  * Optional Zod schema for request body validation.
@@ -52,9 +81,10 @@ export interface ApiRequestSchema<TBody = unknown, TResponse = unknown> {
52
81
  * Interface for integration clients that support generic API requests.
53
82
  *
54
83
  * Providing a response schema gives type-safe, validated results. Omitting
55
- * it returns the decoded response: `Uint8Array` for `responseType: "binary"`,
56
- * or `unknown` for `responseType: "text"`. JSON still requires a schema.
57
- * Object schemas only make sense for JSON-shaped results.
84
+ * it returns the raw response as `unknown`. For non-JSON payloads (e.g.
85
+ * `responseType: "text"` for XML), either omit the schema or supply one
86
+ * matching the decoded value (e.g. `z.string()` for text) — object schemas
87
+ * only make sense for JSON-shaped results.
58
88
  */
59
89
  export interface SupportsApiRequest {
60
90
  /**
@@ -90,41 +120,18 @@ export interface SupportsApiRequest {
90
120
  * // result is typed as { ts: string; channel: string }
91
121
  * ```
92
122
  */
93
- apiRequest<TBody, TResponse>(options: ApiRequestOptions<TBody> & {
94
- responseType?: Exclude<RestApiResponseType, "binary">;
95
- }, schema: ApiRequestSchema<TBody, TResponse> & {
123
+ apiRequest<TBody, TResponse>(options: ApiRequestOptions<TBody>, schema: ApiRequestSchema<TBody, TResponse> & {
96
124
  response: z.ZodSchema<TResponse>;
97
125
  }, metadata?: TraceMetadata): Promise<TResponse>;
98
- /**
99
- * Execute a generic API request that returns binary data.
100
- *
101
- * @param options - Request configuration; `responseType` must be "binary"
102
- * @param schema - Optional Zod schemas for request body and decoded response validation
103
- * @param metadata - Optional trace metadata for observability (label, description)
104
- * @returns The decoded body as a `Uint8Array`
105
- *
106
- * @example
107
- * ```typescript
108
- * const pdf = await ctx.integrations.legacyApi.apiRequest({
109
- * method: 'GET',
110
- * path: '/file.pdf',
111
- * responseType: 'binary',
112
- * });
113
- * // pdf is a Uint8Array
114
- * ```
115
- */
116
- apiRequest<TBody>(options: ApiRequestOptions<TBody> & {
117
- responseType: "binary";
118
- }, schema?: ApiRequestSchema<TBody, Uint8Array>, metadata?: TraceMetadata): Promise<Uint8Array>;
119
126
  /**
120
127
  * Execute a generic API request without response validation.
121
128
  *
122
- * This overload requires an explicit `responseType: "text"` - JSON
129
+ * This overload requires an explicit non-JSON `responseType` JSON
123
130
  * responses must always be consumed through the schema overload above,
124
- * so "unvalidated JSON" is unrepresentable. The decoded text
131
+ * so "unvalidated JSON" is unrepresentable. The decoded non-JSON
125
132
  * response is returned as-is, typed `unknown`.
126
133
  *
127
- * Note: request-body validation is opt-in - it runs only when
134
+ * Note: request-body validation is opt-in it runs only when
128
135
  * `schema.body` is provided. Omitting `schema` sends `options.body`
129
136
  * without validation.
130
137
  *
@@ -144,7 +151,7 @@ export interface SupportsApiRequest {
144
151
  * ```
145
152
  */
146
153
  apiRequest<TBody>(options: ApiRequestOptions<TBody> & {
147
- responseType: "text";
154
+ responseType: Exclude<RestApiResponseType, "json">;
148
155
  }, schema?: ApiRequestSchema<TBody, unknown>, metadata?: TraceMetadata): Promise<unknown>;
149
156
  }
150
157
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/integrations/base/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,eAAO,MAAM,uBAAuB,qCAAsC,CAAC;AAE3E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E,MAAM,WAAW,iBAAiB,CAAC,KAAK,GAAG,OAAO;IAChD;;OAEG;IACH,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IAEzE;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAAE,SAAS,GAAG,OAAO;IACpE;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,EACzB,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG;QAClC,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;KACvD,EACD,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG;QAC3C,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KAClC,EACD,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtB;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,CAAC,KAAK,EACd,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG;QAClC,YAAY,EAAE,QAAQ,CAAC;KACxB,EACD,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,EAC5C,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,UAAU,CAAC,KAAK,EACd,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG;QAClC,YAAY,EAAE,MAAM,CAAC;KACtB,EACD,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EACzC,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/integrations/base/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,uBAAuB,2BAA4B,CAAC;AAEjE,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,KAAK,GAAG,OAAO;IAChD;;OAEG;IACH,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IAEzE;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAAE,SAAS,GAAG,OAAO;IACpE;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,EACzB,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,EACjC,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG;QAC3C,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KAClC,EACD,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,UAAU,CAAC,KAAK,EACd,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG;QAClC,YAAY,EAAE,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;KACpD,EACD,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EACzC,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB"}
@@ -1,2 +1,27 @@
1
- export const REST_API_RESPONSE_TYPES = ["binary", "json", "text"];
1
+ /**
2
+ * Shared types for REST API Integration (OpenAPI) based clients.
3
+ */
4
+ /**
5
+ * How the orchestrator should decode the HTTP response body.
6
+ *
7
+ * - `"json"` (default): parse the response as JSON; fails on non-JSON bodies
8
+ * - `"text"`: return the decoded response body as a string (XML, CSV, HTML, ...)
9
+ *
10
+ * The orchestrator also implements `"auto"`, `"binary"`, and `"raw"` wire
11
+ * values; they are deliberately not exposed here (widening this union later
12
+ * is backward-compatible, narrowing it is not):
13
+ *
14
+ * - `"auto"` returns parsed JSON whenever the body happens to parse, which
15
+ * would let JSON responses bypass schema validation via the schema-less
16
+ * overload
17
+ * - `"binary"` would freeze the worker's internal Buffer JSON encoding
18
+ * (`{ type: "Buffer", data: number[] }`, ~4x payload inflation) into the
19
+ * public SDK contract
20
+ * - `"raw"` is rejected by the orchestrator for non-streaming requests
21
+ *
22
+ * The runtime tuple backs the request-time guard in `executeApiRequest`:
23
+ * the type-level union is erased in the bundled JS user APIs run as, so
24
+ * values outside it must also be rejected at runtime.
25
+ */
26
+ export const REST_API_RESPONSE_TYPES = ["json", "text"];
2
27
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/integrations/base/types.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/integrations/base/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC"}
@@ -728,20 +728,15 @@ describe("resolveIntegrationDocumentation", () => {
728
728
  });
729
729
  });
730
730
  describe("restapiintegration responseType gating (real docs)", () => {
731
- it("documents text responseType for agents whose sdk-api supports text only", async () => {
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 () => {
732
736
  const docs = await resolveIntegrationDocumentation("restapiintegration", {
733
737
  sdkVersion: "0.0.3",
734
738
  });
735
739
  expect(docs).toContain('responseType: "text"');
736
- expect(docs).not.toContain('responseType: "binary"');
737
- expect(docs).not.toContain("does not support the `responseType`");
738
- });
739
- it("documents binary responseType only for agents whose sdk-api supports it", async () => {
740
- const docs = await resolveIntegrationDocumentation("restapiintegration", {
741
- sdkVersion: "0.0.4",
742
- });
743
- expect(docs).toContain('responseType: "text"');
744
- expect(docs).toContain('responseType: "binary"');
745
740
  expect(docs).not.toContain("does not support the `responseType`");
746
741
  });
747
742
  it("notes non-support instead of documenting responseType on older agents", async () => {
@@ -750,7 +745,6 @@ describe("resolveIntegrationDocumentation", () => {
750
745
  });
751
746
  expect(docs).toContain("does not support the `responseType`");
752
747
  expect(docs).not.toContain('responseType: "text"');
753
- expect(docs).not.toContain('responseType: "binary"');
754
748
  });
755
749
  it("stays silent about responseType when the agent reports no sdk-api version", async () => {
756
750
  const docs = await resolveIntegrationDocumentation("restapiintegration");