@superblocksteam/sdk-api 2.0.175-next.0 → 2.0.176

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 (43) hide show
  1. package/dist/index.d.ts +1 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/integrations/declarations.d.ts +0 -10
  6. package/dist/integrations/declarations.d.ts.map +1 -1
  7. package/dist/integrations/declarations.js +0 -9
  8. package/dist/integrations/declarations.js.map +1 -1
  9. package/dist/integrations/index.d.ts +1 -3
  10. package/dist/integrations/index.d.ts.map +1 -1
  11. package/dist/integrations/index.js +1 -2
  12. package/dist/integrations/index.js.map +1 -1
  13. package/dist/integrations/registry.d.ts +0 -1
  14. package/dist/integrations/registry.d.ts.map +1 -1
  15. package/dist/integrations/registry.js +0 -4
  16. package/dist/integrations/registry.js.map +1 -1
  17. package/package.json +4 -4
  18. package/src/index.ts +0 -9
  19. package/src/integrations/declarations.ts +0 -16
  20. package/src/integrations/index.ts +0 -10
  21. package/src/integrations/registry.ts +0 -5
  22. package/dist/integrations/agentcore/client.d.ts +0 -21
  23. package/dist/integrations/agentcore/client.d.ts.map +0 -1
  24. package/dist/integrations/agentcore/client.js +0 -109
  25. package/dist/integrations/agentcore/client.js.map +0 -1
  26. package/dist/integrations/agentcore/client.test.d.ts +0 -2
  27. package/dist/integrations/agentcore/client.test.d.ts.map +0 -1
  28. package/dist/integrations/agentcore/client.test.js +0 -115
  29. package/dist/integrations/agentcore/client.test.js.map +0 -1
  30. package/dist/integrations/agentcore/index.d.ts +0 -3
  31. package/dist/integrations/agentcore/index.d.ts.map +0 -1
  32. package/dist/integrations/agentcore/index.js +0 -2
  33. package/dist/integrations/agentcore/index.js.map +0 -1
  34. package/dist/integrations/agentcore/types.d.ts +0 -43
  35. package/dist/integrations/agentcore/types.d.ts.map +0 -1
  36. package/dist/integrations/agentcore/types.js +0 -2
  37. package/dist/integrations/agentcore/types.js.map +0 -1
  38. package/src/integrations/agentcore/README.md +0 -49
  39. package/src/integrations/agentcore/client.test.ts +0 -166
  40. package/src/integrations/agentcore/client.ts +0 -168
  41. package/src/integrations/agentcore/docs.manifest.json +0 -5
  42. package/src/integrations/agentcore/index.ts +0 -8
  43. package/src/integrations/agentcore/types.ts +0 -56
@@ -1,109 +0,0 @@
1
- /**
2
- * Amazon Bedrock AgentCore client.
3
- *
4
- * The step fields match the worker plugin. They are declared here because the
5
- * published types package does not include the plugin yet.
6
- */
7
- import { z } from "zod";
8
- import { RestApiValidationError, restApiValidationErrorFromZodError, } from "../../errors.js";
9
- import { IntegrationError } from "../../runtime/errors.js";
10
- const HarnessResultSchema = z.object({
11
- kind: z.literal("harness"),
12
- text: z.string(),
13
- toolCalls: z.array(z.object({
14
- name: z.string(),
15
- toolUseId: z.string().optional(),
16
- result: z.string(),
17
- failed: z.boolean(),
18
- })),
19
- stopReason: z.string(),
20
- });
21
- const RuntimeResultSchema = z.object({
22
- kind: z.literal("runtime"),
23
- response: z.unknown(),
24
- });
25
- function payloadText(payload) {
26
- if (typeof payload === "string") {
27
- return payload;
28
- }
29
- if (payload === undefined) {
30
- return "";
31
- }
32
- try {
33
- return JSON.stringify(payload) ?? "";
34
- }
35
- catch (error) {
36
- throw new RestApiValidationError(`Payload cannot be sent as JSON: ${error instanceof Error ? error.message : String(error)}`, { data: payload, zodError: new z.ZodError([]) });
37
- }
38
- }
39
- export class AgentCoreClientImpl {
40
- config;
41
- executeQuery;
42
- constructor(config, executeQuery) {
43
- this.config = config;
44
- this.executeQuery = executeQuery;
45
- }
46
- get name() {
47
- return this.config.name;
48
- }
49
- get pluginId() {
50
- return this.config.pluginId;
51
- }
52
- async invokeHarness(prompt, options) {
53
- if (prompt.trim() === "") {
54
- throw new RestApiValidationError("Prompt is required.", {
55
- data: prompt,
56
- zodError: new z.ZodError([]),
57
- });
58
- }
59
- const result = await this.run("invokeHarness", {
60
- prompt,
61
- ...(options?.sessionKey ? { sessionKey: options.sessionKey } : {}),
62
- }, options?.label);
63
- const parsed = HarnessResultSchema.safeParse(result);
64
- if (!parsed.success) {
65
- throw restApiValidationErrorFromZodError("AgentCore invokeHarness returned an unexpected result", parsed.error, result);
66
- }
67
- const { text, toolCalls, stopReason } = parsed.data;
68
- return { text, toolCalls, stopReason };
69
- }
70
- async invokeAgentRuntime(payload, schema, options) {
71
- const body = payloadText(payload);
72
- if (body.trim() === "") {
73
- throw new RestApiValidationError("Payload is required.", {
74
- data: payload,
75
- zodError: new z.ZodError([]),
76
- });
77
- }
78
- const result = await this.run("invokeAgentRuntime", {
79
- payload: body,
80
- ...(options?.contentType ? { contentType: options.contentType } : {}),
81
- ...(options?.accept ? { accept: options.accept } : {}),
82
- ...(options?.sessionKey ? { sessionKey: options.sessionKey } : {}),
83
- }, options?.label);
84
- const runtime = RuntimeResultSchema.safeParse(result);
85
- if (!runtime.success) {
86
- throw restApiValidationErrorFromZodError("AgentCore invokeAgentRuntime returned an unexpected result", runtime.error, result);
87
- }
88
- const parsed = schema.safeParse(runtime.data.response);
89
- if (!parsed.success) {
90
- throw restApiValidationErrorFromZodError("AgentCore runtime response failed validation", parsed.error, runtime.data.response);
91
- }
92
- return parsed.data;
93
- }
94
- async run(operation, request, label) {
95
- try {
96
- return await this.executeQuery(request, undefined, trace(label));
97
- }
98
- catch (error) {
99
- if (error instanceof IntegrationError) {
100
- throw error;
101
- }
102
- throw new IntegrationError(this.config.name, operation, error);
103
- }
104
- }
105
- }
106
- function trace(label) {
107
- return label ? { label } : undefined;
108
- }
109
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/integrations/agentcore/client.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=client.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../../src/integrations/agentcore/client.test.ts"],"names":[],"mappings":""}
@@ -1,115 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { z } from "zod";
3
- import { RestApiValidationError } from "../../errors.js";
4
- import { IntegrationError } from "../../runtime/errors.js";
5
- import { AgentCoreClientImpl } from "./client.js";
6
- const TEST_CONFIG = {
7
- id: "agentcore-test-id",
8
- name: "Triage",
9
- pluginId: "agentcore",
10
- configuration: {},
11
- };
12
- const harnessResult = {
13
- text: "done",
14
- toolCalls: [
15
- { name: "lookup", toolUseId: "tool-1", result: "ok", failed: false },
16
- ],
17
- stopReason: "end_turn",
18
- };
19
- const replySchema = z.object({ reply: z.string() });
20
- function createClient(result) {
21
- const executeQuery = vi.fn().mockResolvedValue(result);
22
- return {
23
- client: new AgentCoreClientImpl(TEST_CONFIG, executeQuery),
24
- executeQuery,
25
- };
26
- }
27
- describe("AgentCoreClientImpl", () => {
28
- it("sends a harness prompt and returns the result without its kind tag", async () => {
29
- const harness = createClient({ kind: "harness", ...harnessResult });
30
- const result = await harness.client.invokeHarness("the ticket", {
31
- sessionKey: "ticket-1",
32
- label: "Triage",
33
- });
34
- expect(result).toEqual(harnessResult);
35
- expect(harness.executeQuery).toHaveBeenCalledWith({ prompt: "the ticket", sessionKey: "ticket-1" }, undefined, { label: "Triage" });
36
- });
37
- it("rejects a harness result without the harness tag", async () => {
38
- await expect(createClient(harnessResult).client.invokeHarness("the ticket")).rejects.toBeInstanceOf(RestApiValidationError);
39
- });
40
- it("rejects a blank prompt without calling the worker", async () => {
41
- const harness = createClient({ kind: "harness", ...harnessResult });
42
- await expect(harness.client.invokeHarness(" ")).rejects.toBeInstanceOf(RestApiValidationError);
43
- expect(harness.executeQuery).not.toHaveBeenCalled();
44
- });
45
- it("sends a runtime JSON payload and returns the validated response", async () => {
46
- const runtime = createClient({
47
- kind: "runtime",
48
- response: { reply: "done" },
49
- });
50
- const reply = await runtime.client.invokeAgentRuntime({ ticket: "the ticket" }, replySchema, { contentType: "application/json", accept: "application/json" });
51
- expect(reply).toEqual({ reply: "done" });
52
- expect(runtime.executeQuery).toHaveBeenCalledWith({
53
- payload: '{"ticket":"the ticket"}',
54
- contentType: "application/json",
55
- accept: "application/json",
56
- }, undefined, undefined);
57
- });
58
- it("rejects a runtime response that misses the schema", async () => {
59
- await expect(createClient({
60
- kind: "runtime",
61
- response: { reply: 1 },
62
- }).client.invokeAgentRuntime({ ticket: "the ticket" }, replySchema)).rejects.toBeInstanceOf(RestApiValidationError);
63
- });
64
- it("rejects a runtime result without the runtime tag", async () => {
65
- await expect(createClient({ reply: "done" }).client.invokeAgentRuntime({ ticket: "the ticket" }, replySchema)).rejects.toBeInstanceOf(RestApiValidationError);
66
- });
67
- it("rejects a blank runtime payload without calling the worker", async () => {
68
- const runtime = createClient({ kind: "runtime", response: {} });
69
- await expect(runtime.client.invokeAgentRuntime(" ", replySchema)).rejects.toBeInstanceOf(RestApiValidationError);
70
- expect(runtime.executeQuery).not.toHaveBeenCalled();
71
- });
72
- it("rejects a payload JSON cannot encode without calling the worker", async () => {
73
- const runtime = createClient({ kind: "runtime", response: {} });
74
- await expect(runtime.client.invokeAgentRuntime(() => "reply", replySchema)).rejects.toBeInstanceOf(RestApiValidationError);
75
- expect(runtime.executeQuery).not.toHaveBeenCalled();
76
- });
77
- it.each([
78
- [
79
- "a circular object",
80
- (() => {
81
- const payload = {};
82
- payload.self = payload;
83
- return payload;
84
- })(),
85
- ],
86
- ["a BigInt", { count: BigInt(1) }],
87
- ])("rejects %s without calling the worker", async (_, payload) => {
88
- const runtime = createClient({ kind: "runtime", response: {} });
89
- await expect(runtime.client.invokeAgentRuntime(payload, replySchema)).rejects.toThrow(/Payload cannot be sent as JSON/);
90
- await expect(runtime.client.invokeAgentRuntime(payload, replySchema)).rejects.toBeInstanceOf(RestApiValidationError);
91
- expect(runtime.executeQuery).not.toHaveBeenCalled();
92
- });
93
- it("wraps worker failures with the integration name and operation", async () => {
94
- const cause = new Error("AccessDeniedException");
95
- const executeQuery = vi.fn().mockRejectedValue(cause);
96
- const client = new AgentCoreClientImpl(TEST_CONFIG, executeQuery);
97
- await expect(client.invokeHarness("the ticket")).rejects.toMatchObject({
98
- name: "IntegrationError",
99
- integrationName: "Triage",
100
- operation: "invokeHarness",
101
- });
102
- const error = await client
103
- .invokeAgentRuntime({ ticket: "1" }, replySchema)
104
- .catch((e) => e);
105
- expect(error).toBeInstanceOf(IntegrationError);
106
- expect(error).toMatchObject({ operation: "invokeAgentRuntime" });
107
- });
108
- it("rethrows an IntegrationError from the worker unchanged", async () => {
109
- const original = new IntegrationError("Triage", "execute");
110
- const executeQuery = vi.fn().mockRejectedValue(original);
111
- const client = new AgentCoreClientImpl(TEST_CONFIG, executeQuery);
112
- await expect(client.invokeHarness("the ticket")).rejects.toBe(original);
113
- });
114
- });
115
- //# sourceMappingURL=client.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../src/integrations/agentcore/client.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export type { AgentCoreClient, AgentCoreInvokeAgentRuntimeOptions, AgentCoreInvokeHarnessOptions, AgentCoreInvokeHarnessResult, AgentCoreToolCall, } from "./types.js";
2
- export { AgentCoreClientImpl } from "./client.js";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/agentcore/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,kCAAkC,EAClC,6BAA6B,EAC7B,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,2 +0,0 @@
1
- export { AgentCoreClientImpl } from "./client.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/agentcore/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,43 +0,0 @@
1
- import type { z } from "zod";
2
- import type { BaseIntegrationClient } from "../../types.js";
3
- /** One tool the harness ran while answering. */
4
- export interface AgentCoreToolCall {
5
- name: string;
6
- toolUseId?: string;
7
- result: string;
8
- failed: boolean;
9
- }
10
- /** What a harness call returns after the stream finishes. */
11
- export interface AgentCoreInvokeHarnessResult {
12
- text: string;
13
- toolCalls: AgentCoreToolCall[];
14
- stopReason: string;
15
- }
16
- export interface AgentCoreInvokeHarnessOptions {
17
- /** Stable key for this conversation. Omitted keys get a new session on each call. */
18
- sessionKey?: string;
19
- /** Shown in the Trace View. */
20
- label?: string;
21
- }
22
- export interface AgentCoreInvokeAgentRuntimeOptions {
23
- sessionKey?: string;
24
- /** Defaults to application/json on the worker when omitted. */
25
- contentType?: string;
26
- /** Response content type to request. Defaults to application/json on the worker. */
27
- accept?: string;
28
- label?: string;
29
- }
30
- export interface AgentCoreClient extends BaseIntegrationClient {
31
- /**
32
- * Call a harness agent with a prompt.
33
- * The integration's agent ARN must be a harness ARN.
34
- */
35
- invokeHarness(prompt: string, options?: AgentCoreInvokeHarnessOptions): Promise<AgentCoreInvokeHarnessResult>;
36
- /**
37
- * Call a runtime agent with a payload and validate the response.
38
- * Objects are sent as JSON. A string is sent unchanged.
39
- * The integration's agent ARN must be a runtime ARN.
40
- */
41
- invokeAgentRuntime<T>(payload: unknown, schema: z.ZodType<T>, options?: AgentCoreInvokeAgentRuntimeOptions): Promise<T>;
42
- }
43
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/integrations/agentcore/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,gDAAgD;AAChD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,6DAA6D;AAC7D,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B;IAC5C,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kCAAkC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAgB,SAAQ,qBAAqB;IAC5D;;;OAGG;IACH,aAAa,CACX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAEzC;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,kCAAkC,GAC3C,OAAO,CAAC,CAAC,CAAC,CAAC;CACf"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/integrations/agentcore/types.ts"],"names":[],"mappings":""}
@@ -1,49 +0,0 @@
1
- # Amazon Bedrock AgentCore Client
2
-
3
- Call a Bedrock AgentCore agent through an AgentCore integration. The method names match the AgentCore APIs they call. The agent ARN on the integration chooses the call: a harness ARN uses `invokeHarness`, a runtime ARN uses `invokeAgentRuntime`.
4
-
5
- ## Methods
6
-
7
- | Method | Description |
8
- | ----------------------------------------------- | ----------------------------------------------------------------------------------- |
9
- | `invokeHarness(prompt, options?)` | Send a prompt to a harness. Returns the finished text, tool calls, and stop reason. |
10
- | `invokeAgentRuntime(payload, schema, options?)` | Send a payload to a runtime and validate the response with `schema`. |
11
-
12
- `options.sessionKey` keeps one conversation together. Leave it out and each call starts a new session. `options.label` is shown in the Trace View.
13
-
14
- ## Usage
15
-
16
- ```typescript
17
- import { api, z, agentcore } from "@superblocksteam/sdk-api";
18
-
19
- const TRIAGE_AGENT = "a1b2c3d4-5678-90ab-cdef-111111111111";
20
-
21
- const ReplySchema = z.object({
22
- reply: z.string(),
23
- });
24
-
25
- export default api({
26
- name: "Triage",
27
- integrations: {
28
- triage: agentcore(TRIAGE_AGENT),
29
- },
30
- input: z.object({
31
- ticket: z.string(),
32
- }),
33
- output: ReplySchema,
34
- async run(ctx, { ticket }) {
35
- const result = await ctx.integrations.triage.invokeHarness(ticket);
36
- return { reply: result.text };
37
- },
38
- });
39
- ```
40
-
41
- A runtime integration takes a payload. An object is sent as JSON. A string is sent as-is.
42
-
43
- ```typescript
44
- const decision = await ctx.integrations.triage.invokeAgentRuntime(
45
- { ticket },
46
- ReplySchema,
47
- { sessionKey: ticketId },
48
- );
49
- ```
@@ -1,166 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { z } from "zod";
3
-
4
- import { RestApiValidationError } from "../../errors.js";
5
- import { IntegrationError } from "../../runtime/errors.js";
6
- import type { IntegrationConfig } from "../types.js";
7
- import { AgentCoreClientImpl } from "./client.js";
8
-
9
- const TEST_CONFIG: IntegrationConfig = {
10
- id: "agentcore-test-id",
11
- name: "Triage",
12
- pluginId: "agentcore",
13
- configuration: {},
14
- };
15
-
16
- const harnessResult = {
17
- text: "done",
18
- toolCalls: [
19
- { name: "lookup", toolUseId: "tool-1", result: "ok", failed: false },
20
- ],
21
- stopReason: "end_turn",
22
- };
23
-
24
- const replySchema = z.object({ reply: z.string() });
25
-
26
- function createClient(result: unknown) {
27
- const executeQuery = vi.fn().mockResolvedValue(result);
28
- return {
29
- client: new AgentCoreClientImpl(TEST_CONFIG, executeQuery),
30
- executeQuery,
31
- };
32
- }
33
-
34
- describe("AgentCoreClientImpl", () => {
35
- it("sends a harness prompt and returns the result without its kind tag", async () => {
36
- const harness = createClient({ kind: "harness", ...harnessResult });
37
- const result = await harness.client.invokeHarness("the ticket", {
38
- sessionKey: "ticket-1",
39
- label: "Triage",
40
- });
41
-
42
- expect(result).toEqual(harnessResult);
43
- expect(harness.executeQuery).toHaveBeenCalledWith(
44
- { prompt: "the ticket", sessionKey: "ticket-1" },
45
- undefined,
46
- { label: "Triage" },
47
- );
48
- });
49
-
50
- it("rejects a harness result without the harness tag", async () => {
51
- await expect(
52
- createClient(harnessResult).client.invokeHarness("the ticket"),
53
- ).rejects.toBeInstanceOf(RestApiValidationError);
54
- });
55
-
56
- it("rejects a blank prompt without calling the worker", async () => {
57
- const harness = createClient({ kind: "harness", ...harnessResult });
58
- await expect(harness.client.invokeHarness(" ")).rejects.toBeInstanceOf(
59
- RestApiValidationError,
60
- );
61
- expect(harness.executeQuery).not.toHaveBeenCalled();
62
- });
63
-
64
- it("sends a runtime JSON payload and returns the validated response", async () => {
65
- const runtime = createClient({
66
- kind: "runtime",
67
- response: { reply: "done" },
68
- });
69
- const reply = await runtime.client.invokeAgentRuntime(
70
- { ticket: "the ticket" },
71
- replySchema,
72
- { contentType: "application/json", accept: "application/json" },
73
- );
74
-
75
- expect(reply).toEqual({ reply: "done" });
76
- expect(runtime.executeQuery).toHaveBeenCalledWith(
77
- {
78
- payload: '{"ticket":"the ticket"}',
79
- contentType: "application/json",
80
- accept: "application/json",
81
- },
82
- undefined,
83
- undefined,
84
- );
85
- });
86
-
87
- it("rejects a runtime response that misses the schema", async () => {
88
- await expect(
89
- createClient({
90
- kind: "runtime",
91
- response: { reply: 1 },
92
- }).client.invokeAgentRuntime({ ticket: "the ticket" }, replySchema),
93
- ).rejects.toBeInstanceOf(RestApiValidationError);
94
- });
95
-
96
- it("rejects a runtime result without the runtime tag", async () => {
97
- await expect(
98
- createClient({ reply: "done" }).client.invokeAgentRuntime(
99
- { ticket: "the ticket" },
100
- replySchema,
101
- ),
102
- ).rejects.toBeInstanceOf(RestApiValidationError);
103
- });
104
-
105
- it("rejects a blank runtime payload without calling the worker", async () => {
106
- const runtime = createClient({ kind: "runtime", response: {} });
107
- await expect(
108
- runtime.client.invokeAgentRuntime(" ", replySchema),
109
- ).rejects.toBeInstanceOf(RestApiValidationError);
110
- expect(runtime.executeQuery).not.toHaveBeenCalled();
111
- });
112
-
113
- it("rejects a payload JSON cannot encode without calling the worker", async () => {
114
- const runtime = createClient({ kind: "runtime", response: {} });
115
- await expect(
116
- runtime.client.invokeAgentRuntime(() => "reply", replySchema),
117
- ).rejects.toBeInstanceOf(RestApiValidationError);
118
- expect(runtime.executeQuery).not.toHaveBeenCalled();
119
- });
120
-
121
- it.each([
122
- [
123
- "a circular object",
124
- (() => {
125
- const payload: Record<string, unknown> = {};
126
- payload.self = payload;
127
- return payload;
128
- })(),
129
- ],
130
- ["a BigInt", { count: BigInt(1) }],
131
- ])("rejects %s without calling the worker", async (_, payload) => {
132
- const runtime = createClient({ kind: "runtime", response: {} });
133
- await expect(
134
- runtime.client.invokeAgentRuntime(payload, replySchema),
135
- ).rejects.toThrow(/Payload cannot be sent as JSON/);
136
- await expect(
137
- runtime.client.invokeAgentRuntime(payload, replySchema),
138
- ).rejects.toBeInstanceOf(RestApiValidationError);
139
- expect(runtime.executeQuery).not.toHaveBeenCalled();
140
- });
141
-
142
- it("wraps worker failures with the integration name and operation", async () => {
143
- const cause = new Error("AccessDeniedException");
144
- const executeQuery = vi.fn().mockRejectedValue(cause);
145
- const client = new AgentCoreClientImpl(TEST_CONFIG, executeQuery);
146
-
147
- await expect(client.invokeHarness("the ticket")).rejects.toMatchObject({
148
- name: "IntegrationError",
149
- integrationName: "Triage",
150
- operation: "invokeHarness",
151
- });
152
- const error = await client
153
- .invokeAgentRuntime({ ticket: "1" }, replySchema)
154
- .catch((e: unknown) => e);
155
- expect(error).toBeInstanceOf(IntegrationError);
156
- expect(error).toMatchObject({ operation: "invokeAgentRuntime" });
157
- });
158
-
159
- it("rethrows an IntegrationError from the worker unchanged", async () => {
160
- const original = new IntegrationError("Triage", "execute");
161
- const executeQuery = vi.fn().mockRejectedValue(original);
162
- const client = new AgentCoreClientImpl(TEST_CONFIG, executeQuery);
163
-
164
- await expect(client.invokeHarness("the ticket")).rejects.toBe(original);
165
- });
166
- });