Merge branch 'main' into worker-upgrade

This commit is contained in:
nicktrn
2023-10-25 09:46:02 +00:00
74 changed files with 862 additions and 339 deletions
-6
View File
@@ -1,6 +0,0 @@
---
"@trigger.dev/sdk": patch
"@trigger.dev/core": patch
---
Auto-yield run execution to help prevent duplicate task executions
-5
View File
@@ -1,5 +0,0 @@
---
"@trigger.dev/cli": patch
---
Detects JSRuntime (Node/Deno at the moment). Adds basic Deno support
-5
View File
@@ -1,5 +0,0 @@
---
"@trigger.dev/cli": patch
---
Improve create-integration output. Use templates and shared configs.
-5
View File
@@ -1,5 +0,0 @@
---
"@trigger.dev/cli": patch
---
add ability to use custom tunnel in dev command
-5
View File
@@ -1,5 +0,0 @@
---
"@trigger.dev/openai": patch
---
Add ability to set baseURL to use different APIs (like Perplexity)
-5
View File
@@ -1,5 +0,0 @@
---
"@trigger.dev/core": patch
---
Updated icon documentation in runTasks
-5
View File
@@ -1,5 +0,0 @@
---
"@trigger.dev/cli": patch
---
Added Next.js `maxDuration` commented out to the api/trigger file using CLI init
-5
View File
@@ -1,5 +0,0 @@
---
"@trigger.dev/airtable": patch
---
Export Base and Table
+65 -68
View File
@@ -37,76 +37,73 @@ export default function AdminDashboardRoute() {
const { users } = useTypedLoaderData<typeof loader>();
return (
<main className="flex flex-1 overflow-hidden">
{/* Primary column */}
<section
aria-labelledby="primary-heading"
className="flex h-full min-w-0 flex-1 flex-col overflow-y-auto p-4 lg:order-last"
>
<h1 className="mb-2 text-2xl">Accounts ({users.length})</h1>
<main
aria-labelledby="primary-heading"
className="flex h-full min-w-0 flex-1 flex-col overflow-y-auto p-4 lg:order-last"
>
<h1 className="mb-2 text-2xl">Accounts ({users.length})</h1>
<table className="w-full divide-y divide-border">
<thead className="sticky top-0 text-left">
<tr>
<th scope="col" className={headerClassName}>
Email
</th>
<th scope="col" className={headerClassName}>
GitHub username
</th>
<th scope="col" className={headerClassName}>
id
</th>
<th scope="col" className={headerClassName}>
Created At
</th>
<th scope="col" className={headerClassName}>
Admin?
</th>
<th scope="col" className={headerClassName}>
Actions
</th>
</tr>
</thead>
<tbody className="divide-y divide-border">
{users.map((user) => {
return (
<tr key={user.id} className="w-full px-4 py-2 text-left hover:bg-slate-900">
<td className={cellClassName}>{user.email}</td>
<td className={cellClassName}>
<a
href={`https://github.com/${user.displayName}`}
target="_blank"
className="text-indigo-500 underline"
rel="noreferrer"
<table className="w-full divide-y divide-border">
<thead className="sticky -top-4 bg-midnight-800 text-left">
<tr>
<th scope="col" className={headerClassName}>
Email
</th>
<th scope="col" className={headerClassName}>
GitHub username
</th>
<th scope="col" className={headerClassName}>
id
</th>
<th scope="col" className={headerClassName}>
Created At
</th>
<th scope="col" className={headerClassName}>
Admin?
</th>
<th scope="col" className={headerClassName}>
Actions
</th>
</tr>
</thead>
<tbody className="divide-y divide-border">
{users.map((user) => {
return (
<tr key={user.id} className="w-full px-4 py-2 text-left hover:bg-slate-900">
<td className={cellClassName}>{user.email}</td>
<td className={cellClassName}>
<a
href={`https://github.com/${user.displayName}`}
target="_blank"
className="text-indigo-500 underline"
rel="noreferrer"
>
{user.displayName}
</a>
</td>
<td className={cellClassName}>{user.id}</td>
<td className={cellClassName}>{user.createdAt.toISOString()}</td>
<td className={cellClassName}>{user.admin ? "✅" : ""}</td>
<td className={cellClassName}>
<Form method="post" reloadDocument>
<input type="hidden" name="id" value={user.id} />
<Button
type="submit"
name="action"
value="impersonate"
className="mr-2"
variant="primary/small"
>
{user.displayName}
</a>
</td>
<td className={cellClassName}>{user.id}</td>
<td className={cellClassName}>{user.createdAt.toISOString()}</td>
<td className={cellClassName}>{user.admin ? "✅" : ""}</td>
<td className={cellClassName}>
<Form method="post" reloadDocument>
<input type="hidden" name="id" value={user.id} />
<Button
type="submit"
name="action"
value="impersonate"
className="mr-2"
variant="primary/small"
>
Impersonate
</Button>
</Form>
</td>
</tr>
);
})}
</tbody>
</table>
</section>
Impersonate
</Button>
</Form>
</td>
</tr>
);
})}
</tbody>
</table>
</main>
);
}
@@ -111,7 +111,7 @@ export class PerformEndpointIndexService {
return updateEndpointIndexWithError(this.#prismaClient, id, {
message: friendlyError,
raw: bodyResult.error.issues,
raw: fromZodError(bodyResult.error).message,
});
}
+22 -5
View File
@@ -23,7 +23,11 @@ await io.slack.postMessage("post message", {
});
```
## Example Usage
## Using the underlying client
If we don't have the task you need listed above, you can use `io.slack.runTask()` function, which lets you do anything thats possible with the official Slack Node SDK. More information [here](/documentation/concepts/tasks#using-io-integration-runtask).
Example usage:
```ts
client.defineJob({
@@ -32,15 +36,28 @@ client.defineJob({
version: "1.0.0",
trigger: eventTrigger({
name: "send.slack.message",
schema: z.object({}),
schema: z.object({
message: z.string,
}),
}),
integrations: {
slack,
},
run: async (payload, io, ctx) => {
const response = await io.slack.postMessage("post message", {
channel: "<your-channge-id>",
text: "<your-slack-message>",
// Use the Slack integration to create a task using the "post-message" cacheKey
const message = await io.slack.postMessage("post-message", {
channel: process.env.SLACK_CHANNEL_ID,
message: payload.message,
});
// Use the Slack integration's runTask method to add a reaction to the message
await io.slack.runTask("add-reaction", async (client) => {
// client here is an authenticated instance of the Slack SDK
await client.reactions.add({
channel: process.env.SLACK_CHANNEL_ID,
name: "thumbsup",
timestamp: message.ts,
});
});
},
});
+16
View File
@@ -1,5 +1,21 @@
# @trigger.dev/airtable
## 2.2.2
### Patch Changes
- @trigger.dev/integration-kit@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- b9eba680: Export Base and Table
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/integration-kit@2.2.1
## 2.2.0
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/airtable",
"version": "2.2.0",
"version": "2.2.2",
"description": "Trigger.dev integration for airtable",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/integration-kit": "workspace:^2.2.2",
"@trigger.dev/sdk": "workspace:^2.2.2",
"airtable": "^0.12.1",
"zod": "3.22.3"
},
+15
View File
@@ -1,5 +1,20 @@
# @trigger.dev/github
## 2.2.2
### Patch Changes
- @trigger.dev/integration-kit@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/integration-kit@2.2.1
## 2.2.0
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/github",
"version": "2.2.0",
"version": "2.2.2",
"description": "The official GitHub integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -29,8 +29,8 @@
"@octokit/request": "^6.2.5",
"@octokit/request-error": "^4.0.1",
"@octokit/webhooks": "^10.4.0",
"@trigger.dev/integration-kit": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/integration-kit": "workspace:^2.2.2",
"@trigger.dev/sdk": "workspace:^2.2.2",
"octokit": "^2.0.14",
"zod": "3.22.3"
},
+15
View File
@@ -1,5 +1,20 @@
# @trigger.dev/linear
## 2.2.2
### Patch Changes
- @trigger.dev/integration-kit@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/integration-kit@2.2.1
## 2.2.0
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/linear",
"version": "2.2.0",
"version": "2.2.2",
"description": "Trigger.dev integration for @linear/sdk",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -27,8 +27,8 @@
},
"dependencies": {
"@linear/sdk": "^8.0.0",
"@trigger.dev/integration-kit": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/integration-kit": "workspace:^2.2.2",
"@trigger.dev/sdk": "workspace:^2.2.2",
"zod": "3.22.3"
},
"engines": {
+17
View File
@@ -1,5 +1,22 @@
# @trigger.dev/slack
## 2.2.2
### Patch Changes
- 36a39044: Upgrade to openai-node SDK 4.13.0, add support for request options and defaultQuery/defaultHeaders
- @trigger.dev/integration-kit@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- 07d28ee4: Add ability to set baseURL to use different APIs (like Perplexity)
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/integration-kit@2.2.1
## 2.2.0
### Patch Changes
+9 -7
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/openai",
"version": "2.2.0",
"version": "2.2.2",
"description": "The official OpenAI integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -16,19 +16,21 @@
"@trigger.dev/tsconfig": "workspace:*",
"@types/node": "18",
"rimraf": "^3.0.2",
"tsup": "^6.5.0"
"tsup": "^6.5.0",
"typescript": "^4.9.4"
},
"scripts": {
"clean": "rimraf dist",
"build": "npm run clean && npm run build:tsup",
"build:tsup": "tsup"
"build:tsup": "tsup",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"openai": "^4.2.0",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/integration-kit": "workspace:^2.2.0"
"openai": "^4.13.0",
"@trigger.dev/sdk": "workspace:^2.2.2",
"@trigger.dev/integration-kit": "workspace:^2.2.2"
},
"engines": {
"node": ">=16.8.0"
"node": ">=18.0.0"
}
}
+32 -37
View File
@@ -1,21 +1,32 @@
import { IntegrationTaskKey, Prettify, redactString } from "@trigger.dev/sdk";
import { IntegrationTaskKey, Prettify } from "@trigger.dev/sdk";
import OpenAI from "openai";
import { OpenAIRunTask } from "./index";
import { createTaskUsageProperties } from "./taskUtils";
import {
backgroundTaskRetries,
createBackgroundFetchHeaders,
createBackgroundFetchUrl,
createTaskUsageProperties,
} from "./taskUtils";
import { OpenAIIntegrationOptions, OpenAIRequestOptions } from "./types";
export class Chat {
constructor(private runTask: OpenAIRunTask) {}
constructor(
private runTask: OpenAIRunTask,
private options: OpenAIIntegrationOptions
) {}
completions = {
create: (
key: IntegrationTaskKey,
params: Prettify<OpenAI.Chat.CompletionCreateParamsNonStreaming>
params: Prettify<OpenAI.Chat.ChatCompletionCreateParamsNonStreaming>,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Chat.ChatCompletion> => {
return this.runTask(
key,
async (client, task) => {
const response = await client.chat.completions.create(params, {
idempotencyKey: task.idempotencyKey,
...options,
});
task.outputProperties = createTaskUsageProperties(response.usage);
return response;
@@ -35,49 +46,33 @@ export class Chat {
backgroundCreate: (
key: IntegrationTaskKey,
params: Prettify<OpenAI.Chat.CompletionCreateParamsNonStreaming>
params: Prettify<OpenAI.Chat.ChatCompletionCreateParamsNonStreaming>,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Chat.ChatCompletion> => {
return this.runTask(
key,
async (client, task, io) => {
let baseURL = client.baseURL ?? "https://api.openai.com/v1";
if (baseURL.endsWith("/")) {
baseURL = baseURL.slice(0, -1);
}
const chatCompletionsURL = `${baseURL}/chat/completions`;
const url = createBackgroundFetchUrl(
client,
"/chat/completions",
this.options.defaultQuery,
options
);
const response = await io.backgroundFetch<OpenAI.Chat.ChatCompletion>(
"background",
chatCompletionsURL,
url,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: redactString`Bearer ${client.apiKey}`,
...(client.organization ? { "OpenAI-Organization": client.organization } : {}),
"Idempotency-Key": task.idempotencyKey,
},
method: options.method ?? "POST",
headers: createBackgroundFetchHeaders(
client,
task.idempotencyKey,
this.options.defaultHeaders,
options
),
body: JSON.stringify(params),
},
{
"500-599": {
strategy: "backoff",
limit: 5,
minTimeoutInMs: 1000,
maxTimeoutInMs: 30000,
factor: 1.8,
randomize: true,
},
"429": {
strategy: "backoff",
limit: 10,
minTimeoutInMs: 1000,
maxTimeoutInMs: 60000,
factor: 2,
randomize: true,
},
}
backgroundTaskRetries
);
task.outputProperties = createTaskUsageProperties(response.usage);
+30 -39
View File
@@ -1,24 +1,31 @@
import { IntegrationTaskKey, Prettify, redactString } from "@trigger.dev/sdk";
import OpenAI from "openai";
import { OpenAIRunTask } from "./index";
import { createTaskUsageProperties } from "./taskUtils";
import {
backgroundTaskRetries,
createBackgroundFetchHeaders,
createBackgroundFetchUrl,
createTaskUsageProperties,
} from "./taskUtils";
import { OpenAIIntegrationOptions, OpenAIRequestOptions } from "./types";
export class Completions {
runTask: OpenAIRunTask;
constructor(runTask: OpenAIRunTask) {
this.runTask = runTask;
}
constructor(
private runTask: OpenAIRunTask,
private options: OpenAIIntegrationOptions
) {}
create(
key: IntegrationTaskKey,
params: Prettify<OpenAI.CompletionCreateParamsNonStreaming>
params: Prettify<OpenAI.CompletionCreateParamsNonStreaming>,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Completion> {
return this.runTask(
key,
async (client, task) => {
const response = await client.completions.create(params, {
idempotencyKey: task.idempotencyKey,
...options,
});
task.outputProperties = createTaskUsageProperties(response.usage);
return response;
@@ -38,49 +45,33 @@ export class Completions {
backgroundCreate(
key: IntegrationTaskKey,
params: Prettify<OpenAI.CompletionCreateParamsNonStreaming>
params: Prettify<OpenAI.CompletionCreateParamsNonStreaming>,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Completion> {
return this.runTask(
key,
async (client, task, io) => {
let baseURL = client.baseURL ?? "https://api.openai.com/v1";
if (baseURL.endsWith("/")) {
baseURL = baseURL.slice(0, -1);
}
const chatCompletionsURL = `${baseURL}/chat/completions`;
const url = createBackgroundFetchUrl(
client,
"/completions",
this.options.defaultQuery,
options
);
const response = await io.backgroundFetch<OpenAI.Completion>(
"background",
chatCompletionsURL,
url,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: redactString`Bearer ${client.apiKey}`,
...(client.organization ? { "OpenAI-Organization": client.organization } : {}),
"Idempotency-Key": task.idempotencyKey,
},
headers: createBackgroundFetchHeaders(
client,
task.idempotencyKey,
this.options.defaultHeaders,
options
),
body: JSON.stringify(params),
},
{
"500-599": {
strategy: "backoff",
limit: 5,
minTimeoutInMs: 1000,
maxTimeoutInMs: 30000,
factor: 1.8,
randomize: true,
},
"429": {
strategy: "backoff",
limit: 10,
minTimeoutInMs: 1000,
maxTimeoutInMs: 60000,
factor: 2,
randomize: true,
},
}
backgroundTaskRetries
);
task.outputProperties = createTaskUsageProperties(response.usage);
+10 -2
View File
@@ -3,6 +3,7 @@ import { IntegrationTaskKey, Prettify } from "@trigger.dev/sdk";
import OpenAI from "openai";
import { OpenAIRunTask } from "./index";
import { createTaskUsageProperties } from "./taskUtils";
import { OpenAIRequestOptions } from "./types";
export class Edits {
runTask: OpenAIRunTask;
@@ -14,7 +15,11 @@ export class Edits {
/**
* @deprecated The Edits API is deprecated; please use Chat Completions instead.
*/
create(key: IntegrationTaskKey, params: Prettify<OpenAI.EditCreateParams>): Promise<OpenAI.Edit> {
create(
key: IntegrationTaskKey,
params: Prettify<OpenAI.EditCreateParams>,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Edit> {
let properties = [
{
label: "Model",
@@ -37,7 +42,10 @@ export class Edits {
return this.runTask(
key,
async (client, task) => {
const response = await client.edits.create(params, { idempotencyKey: task.idempotencyKey });
const response = await client.edits.create(params, {
idempotencyKey: task.idempotencyKey,
...options,
});
task.outputProperties = createTaskUsageProperties(response.usage);
return response;
},
+4 -1
View File
@@ -2,6 +2,7 @@ import { IntegrationTaskKey } from "@trigger.dev/sdk";
import OpenAI from "openai";
import { OpenAIRunTask } from "./index";
import { createTaskUsageProperties } from "./taskUtils";
import { OpenAIRequestOptions } from "./types";
export class Embeddings {
runTask: OpenAIRunTask;
@@ -12,13 +13,15 @@ export class Embeddings {
create(
key: IntegrationTaskKey,
params: OpenAI.EmbeddingCreateParams
params: OpenAI.EmbeddingCreateParams,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Embeddings.CreateEmbeddingResponse> {
return this.runTask(
key,
async (client, task) => {
const response = await client.embeddings.create(params, {
idempotencyKey: task.idempotencyKey,
...options,
});
task.outputProperties = createTaskUsageProperties(response.usage);
return response;
+15 -6
View File
@@ -2,6 +2,7 @@ import { fileFromString } from "@trigger.dev/integration-kit";
import { IntegrationTaskKey } from "@trigger.dev/sdk";
import OpenAI from "openai";
import { OpenAIRunTask } from "./index";
import { OpenAIRequestOptions } from "./types";
type CreateFileRequest = {
file: string | File;
@@ -24,7 +25,11 @@ export class Files {
this.runTask = runTask;
}
create(key: IntegrationTaskKey, params: CreateFileRequest): Promise<OpenAI.Files.FileObject> {
create(
key: IntegrationTaskKey,
params: CreateFileRequest,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Files.FileObject> {
return this.runTask(
key,
async (client, task) => {
@@ -38,7 +43,7 @@ export class Files {
return client.files.create(
{ file, purpose: params.purpose },
{ idempotencyKey: task.idempotencyKey }
{ idempotencyKey: task.idempotencyKey, ...options }
);
},
{
@@ -58,11 +63,14 @@ export class Files {
);
}
list(key: IntegrationTaskKey): Promise<OpenAI.Files.FileObject[]> {
list(
key: IntegrationTaskKey,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Files.FileObject[]> {
return this.runTask(
key,
async (client, task) => {
const response = await client.files.list();
const response = await client.files.list(options);
return response.data;
},
{
@@ -74,7 +82,8 @@ export class Files {
createFineTune(
key: IntegrationTaskKey,
params: CreateFineTuneFileRequest
params: CreateFineTuneFileRequest,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Files.FileObject> {
return this.runTask(
key,
@@ -86,7 +95,7 @@ export class Files {
return client.files.create(
{ file, purpose: "fine-tune" },
{ idempotencyKey: task.idempotencyKey }
{ idempotencyKey: task.idempotencyKey, ...options }
);
},
{
+42 -20
View File
@@ -1,6 +1,7 @@
import { IntegrationTaskKey } from "@trigger.dev/sdk";
import OpenAI from "openai";
import { OpenAIRunTask } from "./index";
import { OpenAIRequestOptions } from "./types";
type SpecificFineTuneRequest = {
fineTuneId: string;
@@ -15,7 +16,8 @@ export class FineTunes {
create(
key: IntegrationTaskKey,
params: OpenAI.FineTuneCreateParams
params: OpenAI.FineTuneCreateParams,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.FineTunes.FineTune> {
let properties = [
{
@@ -41,7 +43,7 @@ export class FineTunes {
return this.runTask(
key,
async (client, task) => {
return client.fineTunes.create(params, { idempotencyKey: task.idempotencyKey });
return client.fineTunes.create(params, { idempotencyKey: task.idempotencyKey, ...options });
},
{
name: "Create fine tune",
@@ -51,11 +53,14 @@ export class FineTunes {
);
}
list(key: IntegrationTaskKey): Promise<OpenAI.FineTunes.FineTune[]> {
list(
key: IntegrationTaskKey,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.FineTunes.FineTune[]> {
return this.runTask(
key,
async (client, task) => {
const response = await client.fineTunes.list();
const response = await client.fineTunes.list(options);
return response.data;
},
{
@@ -67,12 +72,13 @@ export class FineTunes {
retrieve(
key: IntegrationTaskKey,
params: SpecificFineTuneRequest
params: SpecificFineTuneRequest,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.FineTunes.FineTune> {
return this.runTask(
key,
async (client, task) => {
return client.fineTunes.retrieve(params.fineTuneId);
return client.fineTunes.retrieve(params.fineTuneId, options);
},
{
name: "Retrieve fine tune",
@@ -89,12 +95,16 @@ export class FineTunes {
cancel(
key: IntegrationTaskKey,
params: SpecificFineTuneRequest
params: SpecificFineTuneRequest,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.FineTunes.FineTune> {
return this.runTask(
key,
async (client, task) => {
return client.fineTunes.cancel(params.fineTuneId, { idempotencyKey: task.idempotencyKey });
return client.fineTunes.cancel(params.fineTuneId, {
idempotencyKey: task.idempotencyKey,
...options,
});
},
{
name: "Cancel fine tune",
@@ -111,12 +121,13 @@ export class FineTunes {
listEvents(
key: IntegrationTaskKey,
params: SpecificFineTuneRequest
params: SpecificFineTuneRequest,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.FineTuneEventsListResponse> {
return this.runTask(
key,
async (client, task) => {
return client.fineTunes.listEvents(params.fineTuneId, { stream: false });
return client.fineTunes.listEvents(params.fineTuneId, { stream: false, ...options });
},
{
name: "List fine tune events",
@@ -142,7 +153,8 @@ export class FineTunes {
*/
create: (
key: IntegrationTaskKey,
params: OpenAI.FineTuning.JobCreateParams
params: OpenAI.FineTuning.JobCreateParams,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.FineTuning.FineTuningJob> => {
let properties = [
{
@@ -168,7 +180,10 @@ export class FineTunes {
return this.runTask(
key,
async (client, task) => {
return client.fineTuning.jobs.create(params, { idempotencyKey: task.idempotencyKey });
return client.fineTuning.jobs.create(params, {
idempotencyKey: task.idempotencyKey,
...options,
});
},
{
name: "Create Fine Tuning Job",
@@ -180,12 +195,13 @@ export class FineTunes {
retrieve: (
key: IntegrationTaskKey,
params: { id: string }
params: { id: string },
options: OpenAIRequestOptions = {}
): Promise<OpenAI.FineTuning.FineTuningJob> => {
return this.runTask(
key,
async (client, task) => {
return client.fineTuning.jobs.retrieve(params.id);
return client.fineTuning.jobs.retrieve(params.id, options);
},
{
name: "Retrieve Fine Tuning Job",
@@ -202,12 +218,16 @@ export class FineTunes {
cancel: (
key: IntegrationTaskKey,
params: { id: string }
params: { id: string },
options: OpenAIRequestOptions = {}
): Promise<OpenAI.FineTuning.FineTuningJob> => {
return this.runTask(
key,
async (client, task) => {
return client.fineTuning.jobs.cancel(params.id, { idempotencyKey: task.idempotencyKey });
return client.fineTuning.jobs.cancel(params.id, {
idempotencyKey: task.idempotencyKey,
...options,
});
},
{
name: "Cancel Fine Tuning Job",
@@ -224,12 +244,13 @@ export class FineTunes {
listEvents: (
key: IntegrationTaskKey,
params: { id: string }
params: { id: string },
options: OpenAIRequestOptions = {}
): Promise<OpenAI.FineTuning.FineTuningJobEvent[]> => {
return this.runTask(
key,
async (client, task) => {
const response = await client.fineTuning.jobs.listEvents(params.id);
const response = await client.fineTuning.jobs.listEvents(params.id, options);
return response.data;
},
{
@@ -247,12 +268,13 @@ export class FineTunes {
list: (
key: IntegrationTaskKey,
params: OpenAI.FineTuning.JobListParams
params: OpenAI.FineTuning.JobListParams,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.FineTuning.FineTuningJob[]> => {
return this.runTask(
key,
async (client, task) => {
const response = await client.fineTuning.jobs.list(params);
const response = await client.fineTuning.jobs.list(params, options);
return response.data;
},
+11 -8
View File
@@ -1,8 +1,8 @@
import { fileFromUrl, truncate } from "@trigger.dev/integration-kit";
import { fileFromUrl } from "@trigger.dev/integration-kit";
import { IntegrationTaskKey, Prettify } from "@trigger.dev/sdk";
import OpenAI from "openai";
import { OpenAIRunTask } from "./index";
import { createTaskUsageProperties } from "./taskUtils";
import { OpenAIRequestOptions } from "./types";
export type CreateImageEditRequest = {
image: string | File;
@@ -31,7 +31,8 @@ export class Images {
generate(
key: IntegrationTaskKey,
params: Prettify<OpenAI.Images.ImageGenerateParams>
params: Prettify<OpenAI.Images.ImageGenerateParams>,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Images.ImagesResponse> {
let properties = [
{
@@ -64,7 +65,7 @@ export class Images {
return this.runTask(
key,
async (client, task) => {
return client.images.generate(params, { idempotencyKey: task.idempotencyKey });
return client.images.generate(params, { idempotencyKey: task.idempotencyKey, ...options });
},
{
name: "Create image",
@@ -76,7 +77,8 @@ export class Images {
edit(
key: IntegrationTaskKey,
params: CreateImageEditRequest
params: CreateImageEditRequest,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Images.ImagesResponse> {
let properties = [];
@@ -131,7 +133,7 @@ export class Images {
response_format: params.response_format,
user: params.user,
},
{ idempotencyKey: task.idempotencyKey }
{ idempotencyKey: task.idempotencyKey, ...options }
);
return response;
@@ -146,7 +148,8 @@ export class Images {
createVariation(
key: IntegrationTaskKey,
params: CreateImageVariationRequest
params: CreateImageVariationRequest,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Images.ImagesResponse> {
let properties = [];
@@ -193,7 +196,7 @@ export class Images {
response_format: params.response_format,
user: params.user,
},
{ idempotencyKey: task.idempotencyKey }
{ idempotencyKey: task.idempotencyKey, ...options }
);
return response;
+8 -2
View File
@@ -56,6 +56,9 @@ export class OpenAI implements TriggerIntegration {
apiKey: options.apiKey,
organization: options.organization,
baseURL: options.baseURL,
defaultHeaders: options.defaultHeaders,
defaultQuery: options.defaultQuery,
maxRetries: 0,
});
}
@@ -79,6 +82,9 @@ export class OpenAI implements TriggerIntegration {
apiKey,
organization: this._options.organization,
baseURL: this._options.baseURL ?? "https://api.openai.com/v1",
defaultHeaders: this._options.defaultHeaders,
defaultQuery: this._options.defaultQuery,
maxRetries: 0,
});
return openai;
}
@@ -120,11 +126,11 @@ export class OpenAI implements TriggerIntegration {
}
get completions() {
return new Completions(this.runTask.bind(this));
return new Completions(this.runTask.bind(this), this._options);
}
get chat() {
return new Chat(this.runTask.bind(this));
return new Chat(this.runTask.bind(this), this._options);
}
get edits() {
+12 -6
View File
@@ -2,6 +2,7 @@ import { IntegrationTaskKey } from "@trigger.dev/sdk";
import { Model } from "openai/resources";
import { OpenAIRunTask } from "./index";
import OpenAI from "openai";
import { OpenAIRequestOptions } from "./types";
type DeleteFineTunedModelRequest = {
fineTunedModelId: string;
@@ -13,11 +14,15 @@ export class Models {
this.runTask = runTask;
}
retrieve(key: IntegrationTaskKey, params: { model: string }): Promise<Model> {
retrieve(
key: IntegrationTaskKey,
params: { model: string },
options: OpenAIRequestOptions = {}
): Promise<Model> {
return this.runTask(
key,
async (client) => {
return client.models.retrieve(params.model);
return client.models.retrieve(params.model, options);
},
{
name: "Retrieve model",
@@ -32,11 +37,11 @@ export class Models {
);
}
list(key: IntegrationTaskKey): Promise<Model[]> {
list(key: IntegrationTaskKey, options: OpenAIRequestOptions = {}): Promise<Model[]> {
return this.runTask(
key,
async (client) => {
const result = await client.models.list();
const result = await client.models.list(options);
return result.data;
},
{
@@ -48,12 +53,13 @@ export class Models {
delete(
key: IntegrationTaskKey,
params: DeleteFineTunedModelRequest
params: DeleteFineTunedModelRequest,
options: OpenAIRequestOptions = {}
): Promise<OpenAI.Models.ModelDeleted> {
return this.runTask(
key,
async (client) => {
return client.models.del(params.fineTunedModelId);
return client.models.del(params.fineTunedModelId, options);
},
{
name: "Delete fine tune model",
+79
View File
@@ -1,4 +1,6 @@
import OpenAI from "openai";
import { OpenAIRequestOptions } from "./types";
import { redactString } from "@trigger.dev/sdk";
export function createTaskUsageProperties(
usage: OpenAI.Completions.CompletionUsage | OpenAI.CreateEmbeddingResponse.Usage | undefined
@@ -30,3 +32,80 @@ export function createTaskUsageProperties(
export function onTaskError(error: unknown) {
return;
}
export function createBackgroundFetchUrl(
client: OpenAI,
endpoint: string,
defaultQuery: OpenAIRequestOptions["query"] = {},
options: OpenAIRequestOptions = {}
) {
let baseURL = client.baseURL ?? "https://api.openai.com/v1";
if (baseURL.endsWith("/")) {
baseURL = baseURL.slice(0, -1);
}
const path = options.path ?? endpoint;
const url = new URL(`${baseURL}${path}`);
if (options.query) {
for (const [key, value] of Object.entries(options.query)) {
if (value !== undefined) {
url.searchParams.append(key, value);
}
}
}
for (const [key, value] of Object.entries(defaultQuery)) {
if (value !== undefined) {
url.searchParams.append(key, value);
} else {
url.searchParams.delete(key);
}
}
return url.href;
}
export function createBackgroundFetchHeaders(
client: OpenAI,
idempotencyKey: string,
defaultHeaders: OpenAIRequestOptions["headers"] = {},
options: OpenAIRequestOptions = {}
) {
return {
"Content-Type": "application/json",
Authorization: redactString`Bearer ${client.apiKey}`,
...(client.organization ? { "OpenAI-Organization": client.organization } : {}),
"Idempotency-Key": options.idempotencyKey ?? idempotencyKey,
...(options.headers ?? {}),
...defaultHeaders,
};
}
export const backgroundTaskRetries = {
"500-599": {
strategy: "backoff",
limit: 5,
minTimeoutInMs: 1000,
maxTimeoutInMs: 30000,
factor: 1.8,
randomize: true,
},
"429": {
strategy: "backoff",
limit: 10,
minTimeoutInMs: 1000,
maxTimeoutInMs: 60000,
factor: 2,
randomize: true,
},
"408-409": {
strategy: "backoff",
limit: 3,
minTimeoutInMs: 1000,
maxTimeoutInMs: 60000,
factor: 2,
randomize: true,
},
} as const;
+28
View File
@@ -1,9 +1,37 @@
type OpenAIHTTPMethod = "get" | "post" | "put" | "patch" | "delete";
type OpenAIHeaders = Record<string, string | null | undefined>;
type OpenAIQuery = Record<string, string | undefined>;
export type OpenAIIntegrationOptions = {
id: string;
apiKey?: string;
organization?: string;
baseURL?: string;
icon?: string;
/**
* Default headers to include with every request to the API.
*
* These can be removed in individual requests by explicitly setting the
* header to `undefined` or `null` in request options.
*/
defaultHeaders?: OpenAIHeaders;
/**
* Default query parameters to include with every request to the API.
*
* These can be removed in individual requests by explicitly setting the
* param to `undefined` in request options.
*/
defaultQuery?: OpenAIQuery;
};
export type OpenAIIntegrationAuth = Omit<OpenAIIntegrationOptions, "id">;
export type OpenAIRequestOptions = {
method?: OpenAIHTTPMethod;
query?: OpenAIQuery;
path?: string;
headers?: OpenAIHeaders;
idempotencyKey?: string;
};
+15
View File
@@ -1,5 +1,20 @@
# @trigger.dev/plain
## 2.2.2
### Patch Changes
- @trigger.dev/integration-kit@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/integration-kit@2.2.1
## 2.2.0
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/plain",
"version": "2.2.0",
"version": "2.2.2",
"description": "The official Plain.com integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -24,8 +24,8 @@
"build:tsup": "tsup"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/integration-kit": "workspace:^2.2.2",
"@trigger.dev/sdk": "workspace:^2.2.2",
"@team-plain/typescript-sdk": "^2.7.0"
},
"engines": {
+15
View File
@@ -1,5 +1,20 @@
# @trigger.dev/replicate
## 2.2.2
### Patch Changes
- @trigger.dev/integration-kit@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/integration-kit@2.2.1
## 2.2.0
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/replicate",
"version": "2.2.0",
"version": "2.2.2",
"description": "Trigger.dev integration for replicate",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/integration-kit": "workspace:^2.2.2",
"@trigger.dev/sdk": "workspace:^2.2.2",
"replicate": "^0.18.1",
"zod": "3.22.3"
},
+15
View File
@@ -1,5 +1,20 @@
# @trigger.dev/resend
## 2.2.2
### Patch Changes
- @trigger.dev/integration-kit@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/integration-kit@2.2.1
## 2.2.0
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/resend",
"version": "2.2.0",
"version": "2.2.2",
"description": "The official Resend.com integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -24,8 +24,8 @@
"build:tsup": "tsup"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/integration-kit": "workspace:^2.2.2",
"@trigger.dev/sdk": "workspace:^2.2.2",
"resend": "^1.0.0"
},
"engines": {
+15
View File
@@ -1,5 +1,20 @@
# @trigger.dev/sendgrid
## 2.2.2
### Patch Changes
- @trigger.dev/integration-kit@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/integration-kit@2.2.1
## 2.2.0
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sendgrid",
"version": "2.2.0",
"version": "2.2.2",
"description": "Trigger.dev integration for @sendgrid/mail",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -27,8 +27,8 @@
},
"dependencies": {
"@sendgrid/mail": "^7.7.0",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/integration-kit": "workspace:^2.2.0"
"@trigger.dev/sdk": "workspace:^2.2.2",
"@trigger.dev/integration-kit": "workspace:^2.2.2"
},
"engines": {
"node": ">=16.8.0"
+13
View File
@@ -1,5 +1,18 @@
# @trigger.dev/slack
## 2.2.2
### Patch Changes
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
## 2.2.0
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/slack",
"version": "2.2.0",
"version": "2.2.2",
"description": "The official Slack integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,7 +25,7 @@
},
"dependencies": {
"@slack/web-api": "^6.8.1",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.2",
"zod": "3.22.3"
},
"engines": {
+15
View File
@@ -1,5 +1,20 @@
# @trigger.dev/stripe
## 2.2.2
### Patch Changes
- @trigger.dev/integration-kit@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/integration-kit@2.2.1
## 2.2.0
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/stripe",
"version": "2.2.0",
"version": "2.2.2",
"description": "Trigger.dev integration for stripe",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/integration-kit": "workspace:^2.2.2",
"@trigger.dev/sdk": "workspace:^2.2.2",
"stripe": "^12.14.0",
"zod": "3.22.3"
},
+15
View File
@@ -1,5 +1,20 @@
# @trigger.dev/supabase
## 2.2.2
### Patch Changes
- @trigger.dev/integration-kit@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/integration-kit@2.2.1
## 2.2.0
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/supabase",
"version": "2.2.0",
"version": "2.2.2",
"description": "Trigger.dev integration for @supabase/supabase-js",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -27,8 +27,8 @@
},
"dependencies": {
"@supabase/supabase-js": "^2.26.0",
"@trigger.dev/integration-kit": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/integration-kit": "workspace:^2.2.2",
"@trigger.dev/sdk": "workspace:^2.2.2",
"supabase-management-js": "^0.1.4",
"zod": "3.22.3"
},
+15
View File
@@ -1,5 +1,20 @@
# @trigger.dev/typeform
## 2.2.2
### Patch Changes
- @trigger.dev/integration-kit@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/integration-kit@2.2.1
## 2.2.0
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/typeform",
"version": "2.2.0",
"version": "2.2.2",
"description": "The official Typeform integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,8 +25,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/integration-kit": "workspace:^2.2.2",
"@trigger.dev/sdk": "workspace:^2.2.2",
"@typeform/api-client": "^1.8.0",
"zod": "3.22.3"
},
+13
View File
@@ -1,5 +1,18 @@
# @trigger.dev/astro
## 2.2.2
### Patch Changes
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
## 2.2.0
### Minor Changes
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@trigger.dev/astro",
"description": "An Astro-native integration for Trigger.dev background jobs platform",
"version": "2.2.0",
"version": "2.2.2",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"files": [
@@ -20,7 +20,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^2.2.0"
"@trigger.dev/sdk": "workspace:^2.2.2"
},
"devDependencies": {
"astro": "^3.0.12",
+18
View File
@@ -1,5 +1,23 @@
# create-trigger
## 2.2.2
### Patch Changes
- @trigger.dev/core@2.2.2
## 2.2.1
### Patch Changes
- 6769d6b4: Detects JSRuntime (Node/Deno at the moment). Adds basic Deno support
- 9df93d07: Improve create-integration output. Use templates and shared configs.
- 50e31924: add ability to use custom tunnel in dev command
- 0adf41c7: Added Next.js `maxDuration` commented out to the api/trigger file using CLI init
- Updated dependencies [044d38e3]
- Updated dependencies [abc9737a]
- @trigger.dev/core@2.2.1
## 2.2.0
### Minor Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/cli",
"version": "2.2.0",
"version": "2.2.2",
"description": "The Trigger.dev CLI",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
+9
View File
@@ -1,5 +1,14 @@
# internal-platform
## 2.2.2
## 2.2.1
### Patch Changes
- 044d38e3: Auto-yield run execution to help prevent duplicate task executions
- abc9737a: Updated icon documentation in runTasks
## 2.2.0
### Minor Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/core",
"version": "2.2.0",
"version": "2.2.2",
"description": "Core code used across the Trigger.dev SDK and platform",
"license": "MIT",
"main": "./dist/index.js",
+4
View File
@@ -1,5 +1,9 @@
# @trigger.dev/eslint-plugin
## 2.2.2
## 2.2.1
## 2.2.0
### Minor Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/eslint-plugin",
"version": "2.2.0",
"version": "2.2.2",
"description": "ESLint plugin with trigger.dev best practices",
"keywords": [
"eslint",
+13
View File
@@ -1,5 +1,18 @@
# @trigger.dev/express
## 2.2.2
### Patch Changes
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
## 2.2.0
### Minor Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/express",
"version": "2.2.0",
"version": "2.2.2",
"description": "Official Express adapter for Trigger.dev",
"license": "MIT",
"main": "./dist/index.js",
@@ -19,7 +19,7 @@
"./package.json": "./package.json"
},
"devDependencies": {
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.2",
"@trigger.dev/tsconfig": "workspace:*",
"@types/debug": "^4.1.7",
"@types/express": "^4.17.13",
@@ -33,7 +33,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^2.2.0"
"@trigger.dev/sdk": "workspace:^2.2.2"
},
"dependencies": {
"@remix-run/web-fetch": "^4.3.5",
+4
View File
@@ -1,5 +1,9 @@
# @trigger.dev/integration-kit
## 2.2.2
## 2.2.1
## 2.2.0
### Minor Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/integration-kit",
"version": "2.2.0",
"version": "2.2.2",
"description": "Trigger.dev Integration Kit has helpers to make creating integrations easier",
"license": "MIT",
"main": "./dist/index.js",
+13
View File
@@ -1,5 +1,18 @@
# @trigger.dev/nestjs
## 2.2.2
### Patch Changes
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
## 2.2.0
### Minor Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/nestjs",
"version": "2.2.0",
"version": "2.2.2",
"description": "Official NestJS adapter for Trigger.dev",
"license": "MIT",
"main": "./dist/index.js",
@@ -19,7 +19,7 @@
"./package.json": "./package.json"
},
"devDependencies": {
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.2",
"@trigger.dev/tsconfig": "workspace:*",
"@types/debug": "^4.1.7",
"@types/express": "^4.17.13",
@@ -35,7 +35,7 @@
},
"peerDependencies": {
"@nestjs/common": ">=10.0.0",
"@trigger.dev/sdk": "workspace:^2.2.0"
"@trigger.dev/sdk": "workspace:^2.2.2"
},
"dependencies": {
"@nestjs/common": "^10.2.4",
+13
View File
@@ -1,5 +1,18 @@
# @trigger.dev/nextjs
## 2.2.2
### Patch Changes
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
## 2.2.0
### Minor Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/nextjs",
"version": "2.2.0",
"version": "2.2.2",
"description": "Trigger.dev Next.js integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -34,7 +34,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.2",
"next": ">=12.0.0 <14.0.0"
},
"dependencies": {
+14
View File
@@ -1,5 +1,19 @@
# @trigger.dev/react
## 2.2.2
### Patch Changes
- @trigger.dev/core@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- Updated dependencies [abc9737a]
- @trigger.dev/core@2.2.1
## 2.2.0
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/react",
"version": "2.2.0",
"version": "2.2.2",
"description": "Trigger.dev React SDK",
"license": "MIT",
"types": "dist/index.d.ts",
@@ -27,7 +27,7 @@
},
"dependencies": {
"@tanstack/react-query": "5.0.0-beta.2",
"@trigger.dev/core": "workspace:^2.2.0",
"@trigger.dev/core": "workspace:^2.2.2",
"debug": "^4.3.4",
"zod": "3.22.3"
},
+13
View File
@@ -1,5 +1,18 @@
# @trigger.dev/remix
## 2.2.2
### Patch Changes
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
## 2.2.0
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/remix",
"version": "2.2.0",
"version": "2.2.2",
"description": "Trigger.dev Remix integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -34,7 +34,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^2.2.0",
"@trigger.dev/sdk": "workspace:^2.2.2",
"@remix-run/server-runtime": ">1.19.0"
},
"dependencies": {
+13
View File
@@ -1,5 +1,18 @@
# @trigger.dev/sveltekit
## 2.2.2
### Patch Changes
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- @trigger.dev/sdk@2.2.1
## 2.2.0
### Minor Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sveltekit",
"version": "2.2.0",
"version": "2.2.2",
"description": "Trigger.dev svelteKit integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -33,7 +33,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^2.2.0"
"@trigger.dev/sdk": "workspace:^2.2.2"
},
"dependencies": {
"debug": "^4.3.4"
+16
View File
@@ -1,5 +1,21 @@
# @trigger.dev/testing
## 2.2.2
### Patch Changes
- @trigger.dev/core@2.2.2
- @trigger.dev/sdk@2.2.2
## 2.2.1
### Patch Changes
- Updated dependencies [044d38e3]
- Updated dependencies [abc9737a]
- @trigger.dev/sdk@2.2.1
- @trigger.dev/core@2.2.1
## 2.2.0
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@trigger.dev/testing",
"description": "A collection of useful tools to write tests for Trigger.dev.",
"version": "2.2.0",
"version": "2.2.2",
"license": "MIT",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
+15
View File
@@ -1,5 +1,20 @@
# @trigger.dev/sdk
## 2.2.2
### Patch Changes
- @trigger.dev/core@2.2.2
## 2.2.1
### Patch Changes
- 044d38e3: Auto-yield run execution to help prevent duplicate task executions
- Updated dependencies [044d38e3]
- Updated dependencies [abc9737a]
- @trigger.dev/core@2.2.1
## 2.2.0
### Minor Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sdk",
"version": "2.2.0",
"version": "2.2.2",
"description": "trigger.dev Node.JS SDK",
"license": "MIT",
"main": "./dist/index.js",
@@ -25,7 +25,7 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/core": "workspace:^2.2.0",
"@trigger.dev/core": "workspace:^2.2.2",
"chalk": "^5.2.0",
"cronstrue": "^2.21.0",
"debug": "^4.3.4",
+41 -38
View File
@@ -355,7 +355,7 @@ importers:
devDependencies:
eslint: 8.31.0
eslint-config-prettier: 8.6.0_eslint@8.31.0
eslint-config-turbo: 1.10.15_eslint@8.31.0
eslint-config-turbo: 1.10.16_eslint@8.31.0
eslint-plugin-react: 7.31.8_eslint@8.31.0
typescript: 4.9.4
@@ -376,8 +376,8 @@ importers:
integrations/airtable:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/integration-kit': workspace:^2.2.2
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/node': 16.x
airtable: ^0.12.1
@@ -404,8 +404,8 @@ importers:
'@octokit/types': ^9.2.3
'@octokit/webhooks': ^10.4.0
'@octokit/webhooks-types': ^6.10.0
'@trigger.dev/integration-kit': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/integration-kit': workspace:^2.2.2
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
octokit: ^2.0.14
@@ -431,8 +431,8 @@ importers:
integrations/linear:
specifiers:
'@linear/sdk': ^8.0.0
'@trigger.dev/integration-kit': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/integration-kit': workspace:^2.2.2
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/node': 16.x
rimraf: ^3.0.2
@@ -453,28 +453,30 @@ importers:
integrations/openai:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/integration-kit': workspace:^2.2.2
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
openai: ^4.2.0
openai: ^4.13.0
rimraf: ^3.0.2
tsup: ^6.5.0
typescript: ^4.9.4
dependencies:
'@trigger.dev/integration-kit': link:../../packages/integration-kit
'@trigger.dev/sdk': link:../../packages/trigger-sdk
openai: 4.2.0
openai: 4.13.0
devDependencies:
'@trigger.dev/tsconfig': link:../../config-packages/tsconfig
'@types/node': 18.15.13
rimraf: 3.0.2
tsup: 6.6.3
tsup: 6.6.3_typescript@4.9.5
typescript: 4.9.5
integrations/plain:
specifiers:
'@team-plain/typescript-sdk': ^2.7.0
'@trigger.dev/integration-kit': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/integration-kit': workspace:^2.2.2
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
rimraf: ^3.0.2
@@ -491,8 +493,8 @@ importers:
integrations/replicate:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/integration-kit': workspace:^2.2.2
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/node': 16.x
replicate: ^0.18.1
@@ -514,8 +516,8 @@ importers:
integrations/resend:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/integration-kit': workspace:^2.2.2
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
resend: ^1.0.0
@@ -534,8 +536,8 @@ importers:
integrations/sendgrid:
specifiers:
'@sendgrid/mail': ^7.7.0
'@trigger.dev/integration-kit': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/integration-kit': workspace:^2.2.2
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/node': 16.x
rimraf: ^3.0.2
@@ -555,7 +557,7 @@ importers:
integrations/slack:
specifiers:
'@slack/web-api': ^6.8.1
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
rimraf: ^3.0.2
@@ -573,8 +575,8 @@ importers:
integrations/stripe:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/integration-kit': workspace:^2.2.2
'@trigger.dev/sdk': workspace:^2.2.2
'@types/node': 16.x
rimraf: ^3.0.2
stripe: ^12.14.0
@@ -597,8 +599,8 @@ importers:
integrations/supabase:
specifiers:
'@supabase/supabase-js': ^2.26.0
'@trigger.dev/integration-kit': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/integration-kit': workspace:^2.2.2
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/node': 18.x
rimraf: ^3.0.2
@@ -621,8 +623,8 @@ importers:
integrations/typeform:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/integration-kit': workspace:^2.2.2
'@trigger.dev/sdk': workspace:^2.2.2
'@typeform/api-client': ^1.8.0
'@types/node': 16.x
rimraf: ^3.0.2
@@ -857,7 +859,7 @@ importers:
packages/express:
specifiers:
'@remix-run/web-fetch': ^4.3.5
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/debug': ^4.1.7
'@types/express': ^4.17.13
@@ -904,7 +906,7 @@ importers:
specifiers:
'@nestjs/common': ^10.2.4
'@remix-run/web-fetch': ^4.3.5
'@trigger.dev/sdk': workspace:^2.2.0
'@trigger.dev/sdk': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/debug': ^4.1.7
'@types/express': ^4.17.13
@@ -953,7 +955,7 @@ importers:
packages/react:
specifiers:
'@tanstack/react-query': 5.0.0-beta.2
'@trigger.dev/core': workspace:^2.2.0
'@trigger.dev/core': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/debug': ^4.1.7
'@types/react': 18.2.17
@@ -1048,7 +1050,7 @@ importers:
packages/trigger-sdk:
specifiers:
'@trigger.dev/core': workspace:^2.2.0
'@trigger.dev/core': workspace:^2.2.2
'@trigger.dev/tsconfig': workspace:*
'@types/debug': ^4.1.7
'@types/node': '18'
@@ -18593,13 +18595,13 @@ packages:
eslint: 8.45.0
dev: true
/eslint-config-turbo/1.10.15_eslint@8.31.0:
resolution: {integrity: sha512-76mpx2x818JZE26euen14utYcFDxOahZ9NaWA+6Xa4pY2ezVKVschuOxS96EQz3o3ZRSmcgBOapw/gHbN+EKxQ==}
/eslint-config-turbo/1.10.16_eslint@8.31.0:
resolution: {integrity: sha512-O3NQI72bQHV7FvSC6lWj66EGx8drJJjuT1kuInn6nbMLOHdMBhSUX/8uhTAlHRQdlxZk2j9HtgFCIzSc93w42g==}
peerDependencies:
eslint: '>6.6.0'
dependencies:
eslint: 8.31.0
eslint-plugin-turbo: 1.10.15_eslint@8.31.0
eslint-plugin-turbo: 1.10.16_eslint@8.31.0
dev: true
/eslint-doc-generator/1.4.3_eslint@8.45.0:
@@ -19302,8 +19304,8 @@ packages:
- typescript
dev: true
/eslint-plugin-turbo/1.10.15_eslint@8.31.0:
resolution: {integrity: sha512-Tv4QSKV/U56qGcTqS/UgOvb9HcKFmWOQcVh3HEaj7of94lfaENgfrtK48E2CckQf7amhKs1i+imhCsNCKjkQyA==}
/eslint-plugin-turbo/1.10.16_eslint@8.31.0:
resolution: {integrity: sha512-ZjrR88MTN64PNGufSEcM0tf+V1xFYVbeiMeuIqr0aiABGomxFLo4DBkQ7WI4WzkZtWQSIA2sP+yxqSboEfL9MQ==}
peerDependencies:
eslint: '>6.6.0'
dependencies:
@@ -25374,8 +25376,8 @@ packages:
is-docker: 2.2.1
is-wsl: 2.2.0
/openai/4.2.0:
resolution: {integrity: sha512-zfvpO2eITIxIjTG8T6Cek7NB2dMvP/LW0TRUJ4P9E8+qbBNKw00DrtfF64b+fAV2+wUYCVyynT6iSycJ//TtbA==}
/openai/4.13.0:
resolution: {integrity: sha512-EPqHcB0got9cXDZmQae1KytgA4YWtTnUc7tV8hlahZtcO70DMa4kiaXoxnutj9lwmeKQO7ntG+6pmXtrCMejuQ==}
hasBin: true
dependencies:
'@types/node': 18.17.1
@@ -25386,6 +25388,7 @@ packages:
form-data-encoder: 1.7.2
formdata-node: 4.4.1
node-fetch: 2.6.12
web-streams-polyfill: 3.2.1
transitivePeerDependencies:
- encoding
dev: false
+59 -3
View File
@@ -13,6 +13,7 @@ export const client = new TriggerClient({
const openai = new OpenAI({
id: "openai",
apiKey: process.env["OPENAI_API_KEY"]!,
defaultHeaders: { "user-agent": "trigger.dev job-catalog reference 1.0" },
});
client.defineJob({
@@ -34,7 +35,7 @@ client.defineJob({
});
}
await io.openai.backgroundCreateChatCompletion("background-chat-completion", {
await io.openai.chat.completions.backgroundCreate("background-chat-completion", {
model: "gpt-3.5-turbo",
messages: [
{
@@ -44,7 +45,7 @@ client.defineJob({
],
});
await io.openai.createChatCompletion("chat-completion", {
await io.openai.chat.completions.create("chat-completion", {
model: "gpt-3.5-turbo",
messages: [
{
@@ -54,7 +55,12 @@ client.defineJob({
],
});
await io.openai.createCompletion("completion", {
await io.openai.completions.backgroundCreate("background-completion", {
model: "text-davinci-003",
prompt: "Create a good programming joke about Tasks",
});
await io.openai.completions.create("completion", {
model: "text-davinci-003",
prompt: "Create a good programming joke about Tasks",
});
@@ -112,4 +118,54 @@ client.defineJob({
},
});
const azureOpenAI = new OpenAI({
id: "azure-openai",
apiKey: process.env["AZURE_API_KEY"]!,
icon: "brand-azure",
baseURL: "https://my-resource.openai.azure.com/openai/deployments/my-gpt35-16k-deployment",
defaultQuery: { "api-version": "2023-06-01-preview" },
defaultHeaders: { "api-key": process.env["AZURE_API_KEY"] },
});
client.defineJob({
id: "azure-tasks",
name: "azure Tasks",
version: "0.0.1",
trigger: eventTrigger({
name: "azure.tasks",
}),
integrations: {
azureOpenAI,
},
run: async (payload, io, ctx) => {
await io.azureOpenAI.chat.completions.create(
"chat-completion",
{
model: "my-gpt35-16k-deployment",
messages: [
{
role: "user",
content: "Create a good programming joke about background jobs",
},
],
},
{
headers: {
"User-Agent": "Trigger.dev",
},
}
);
await io.azureOpenAI.chat.completions.backgroundCreate("background-chat-completion", {
model: "my-gpt35-16k-deployment",
messages: [
{
role: "user",
content: "If you were a programming language, what would you be and why?",
},
],
});
},
});
createExpressServer(client);