Skip to content

Commit 63e98c2

Browse files
Add sdk parity test against @trigger.dev/ai helper
Co-authored-by: Eric Allam <eric@trigger.dev>
1 parent 889194a commit 63e98c2

File tree

3 files changed

+73
-8
lines changed

3 files changed

+73
-8
lines changed

packages/trigger-sdk/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
"ws": "^8.11.0"
6565
},
6666
"devDependencies": {
67+
"@trigger.dev/ai": "workspace:*",
6768
"@arethetypeswrong/cli": "^0.15.4",
6869
"@types/debug": "^4.1.7",
6970
"@types/slug": "^5.0.3",

packages/trigger-sdk/src/v3/ai.test.ts

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { describe, expect, it } from "vitest";
22
import { z } from "zod";
33
import { ai } from "./ai.js";
4+
import { ai as packageAi } from "@trigger.dev/ai";
45
import type { TaskWithSchema } from "@trigger.dev/core/v3";
56

67
describe("@trigger.dev/sdk/ai compatibility", function () {
@@ -78,4 +79,64 @@ describe("@trigger.dev/sdk/ai compatibility", function () {
7879
ai.currentToolOptions();
7980
}).toThrowError("Method not implemented.");
8081
});
82+
83+
it("matches behavior with @trigger.dev/ai tool helper", async function () {
84+
const fakeTask = createSchemaTask();
85+
86+
const sdkTool = ai.tool(fakeTask);
87+
const packageTool = packageAi.tool(fakeTask);
88+
89+
const sdkResult = await sdkTool.execute?.(
90+
{
91+
name: "Lin",
92+
},
93+
undefined as never
94+
);
95+
96+
const packageResult = await packageTool.execute?.(
97+
{
98+
name: "Lin",
99+
},
100+
undefined as never
101+
);
102+
103+
expect(sdkResult).toEqual(packageResult);
104+
expect(sdkResult).toEqual({
105+
greeting: "Hello Lin",
106+
});
107+
});
81108
});
109+
110+
function createSchemaTask() {
111+
const fakeTask = {
112+
id: "fake-task",
113+
description: "A fake task",
114+
schema: z.object({
115+
name: z.string(),
116+
}),
117+
triggerAndWait: function triggerAndWait(payload: { name: string }) {
118+
const resultPromise = Promise.resolve({
119+
ok: true,
120+
id: "run_123",
121+
taskIdentifier: "fake-task",
122+
output: {
123+
greeting: `Hello ${payload.name}`,
124+
},
125+
});
126+
127+
return Object.assign(resultPromise, {
128+
unwrap: async function unwrap() {
129+
return {
130+
greeting: `Hello ${payload.name}`,
131+
};
132+
},
133+
});
134+
},
135+
} as unknown as TaskWithSchema<
136+
"fake-task",
137+
z.ZodObject<{ name: z.ZodString }>,
138+
{ greeting: string }
139+
>;
140+
141+
return fakeTask;
142+
}

pnpm-lock.yaml

Lines changed: 11 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)