Compare commits

...

7 Commits

Author SHA1 Message Date
Matt Aitken 702d198445 Latest lockfile 2024-04-09 09:25:28 +01:00
github-actions[bot] 803f3c15ab chore: Update version for release (beta) (#1010)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-04-09 09:24:46 +01:00
nicktrn 1c24348f7d v3: add openssl to prod image and fix deploy command auth via env var (#1011)
* add openssl to prod worker

* make deploy command accept auth token via env var
2024-04-08 19:28:35 +01:00
Matt Aitken f854cb90eb Replay\Cancel a run (v3) (#1006)
* WIP on replaying a task from the run page

* Don’t pass the existing runs idempotency key, it will cause the replay to always return the original run

* Replay from the run list

* Don’t use fetchers in the replay/cancel dialogs

* API endpoint for replaying a run

* REST API docs (mostly coming soon) but added replay run

* replayRun function added to the SDK

* Cancel run added to the SDK

* v3-catalog file to test canceling and replaying

* Changed the SDK to be runs.replay and runs.cancel

* Removed comment

* Latest lockfile
2024-04-08 19:08:44 +01:00
github-actions[bot] 7268f17b00 chore: Update version for release (beta) (#1009)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-04-08 14:11:17 +01:00
nicktrn 624ddce32f v3: fix prod worker node_modules permissions (#1008)
* set node user prior to npm install

* changeset

* add ffmpeg and ffprobe catalog entries
2024-04-08 14:05:05 +01:00
Matt Aitken 9be1557bb7 CLI v3 binary changed from trigger.dev to trigger.dev, to fix a Windows issues (#1007)
* Changed the v3 CLI binary name from trigger.dev to triggerdev to fix a Windows issue

* Changed the exec to triggerdev
2024-04-08 14:03:12 +01:00
98 changed files with 1491 additions and 166 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"trigger.dev": patch
---
Fix permissions inside node_modules
+6
View File
@@ -0,0 +1,6 @@
---
"@trigger.dev/sdk": patch
"@trigger.dev/core": patch
---
Added replayRun function to the SDK
+6 -1
View File
@@ -49,6 +49,7 @@
"clean-pianos-listen",
"cool-glasses-bake",
"eight-pumas-float",
"few-students-share",
"green-bags-wink",
"khaki-apricots-design",
"late-icons-lie",
@@ -58,8 +59,10 @@
"loud-actors-remember",
"many-ligers-pump",
"mighty-camels-joke",
"new-rivers-tell",
"odd-poets-own",
"polite-ducks-switch",
"rare-roses-float",
"real-planets-stare",
"sharp-zebras-serve",
"smart-olives-eat",
@@ -67,6 +70,8 @@
"strange-ghosts-matter",
"stupid-bulldogs-applaud",
"sweet-lizards-press",
"tall-bees-wave"
"tall-bees-wave",
"tame-guests-know",
"tiny-doors-type"
]
}
+5
View File
@@ -0,0 +1,5 @@
---
"trigger.dev": patch
---
Add openssl to prod worker image and allow passing auth token via env var for deploy
+5
View File
@@ -0,0 +1,5 @@
---
"trigger.dev": patch
---
Changed the binary name from trigger.dev to triggerdev to fix a Windows issue
+6
View File
@@ -0,0 +1,6 @@
---
"@trigger.dev/sdk": patch
"@trigger.dev/core": patch
---
Added cancelRun to the SDK
+2 -2
View File
@@ -33,7 +33,7 @@
"type": "node-terminal",
"request": "launch",
"name": "Debug V3 Dev CLI",
"command": "pnpm exec trigger.dev dev --log-level debug",
"command": "pnpm exec triggerdev dev --log-level debug",
"cwd": "${workspaceFolder}/references/v3-catalog",
"sourceMaps": true
},
@@ -41,7 +41,7 @@
"type": "node-terminal",
"request": "launch",
"name": "Debug V3 Deploy CLI",
"command": "pnpm exec trigger.dev deploy",
"command": "pnpm exec triggerdev deploy",
"cwd": "${workspaceFolder}/references/v3-catalog",
"sourceMaps": true
},
@@ -1,5 +1,5 @@
import { StopCircleIcon } from "@heroicons/react/20/solid";
import { useFetcher } from "@remix-run/react";
import { Form, useFetcher, useNavigation } from "@remix-run/react";
import { Button } from "~/components/primitives/Buttons";
import {
DialogContent,
@@ -14,29 +14,32 @@ type CancelRunDialogProps = {
};
export function CancelRunDialog({ runFriendlyId, redirectPath }: CancelRunDialogProps) {
const cancelFetcher = useFetcher();
const navigation = useNavigation();
const formAction = `/resources/taskruns/${runFriendlyId}/cancel`;
const isLoading = navigation.formAction === formAction;
return (
<DialogContent>
<DialogContent key="cancel">
<DialogHeader>Cancel this run?</DialogHeader>
<DialogDescription>
Canceling a run will stop execution. If you want to run this later you will have to replay
the entire run with the original payload.
</DialogDescription>
<DialogFooter>
<cancelFetcher.Form action={`/resources/taskruns/${runFriendlyId}/cancel`} method="post">
<Form action={`/resources/taskruns/${runFriendlyId}/cancel`} method="post">
<Button
type="submit"
name="redirectUrl"
value={redirectPath}
variant="danger/small"
LeadingIcon={cancelFetcher.state === "idle" ? StopCircleIcon : "spinner-white"}
disabled={cancelFetcher.state !== "idle"}
LeadingIcon={isLoading ? "spinner-white" : StopCircleIcon}
disabled={isLoading}
shortcut={{ modifiers: ["meta"], key: "enter" }}
>
{cancelFetcher.state === "idle" ? "Cancel run" : "Canceling..."}
{isLoading ? "Canceling..." : "Cancel run"}
</Button>
</cancelFetcher.Form>
</Form>
</DialogFooter>
</DialogContent>
);
@@ -0,0 +1,44 @@
import { ArrowPathIcon } from "@heroicons/react/20/solid";
import { Form, useFetcher, useNavigation } from "@remix-run/react";
import { Button } from "~/components/primitives/Buttons";
import {
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
} from "~/components/primitives/Dialog";
type ReplayRunDialogProps = {
runFriendlyId: string;
failedRedirect: string;
};
export function ReplayRunDialog({ runFriendlyId, failedRedirect }: ReplayRunDialogProps) {
const navigation = useNavigation();
const formAction = `/resources/taskruns/${runFriendlyId}/replay`;
const isLoading = navigation.formAction === formAction;
return (
<DialogContent key="replay">
<DialogHeader>Replay this run?</DialogHeader>
<DialogDescription>
Replaying a run will create a new run with the same payload and environment as the original.
</DialogDescription>
<DialogFooter>
<Form action={formAction} method="post">
<input type="hidden" name="failedRedirect" value={failedRedirect} />
<Button
type="submit"
variant="primary/small"
LeadingIcon={isLoading ? "spinner-white" : ArrowPathIcon}
disabled={isLoading}
shortcut={{ modifiers: ["meta"], key: "enter" }}
>
{isLoading ? "Replaying..." : "Replay run"}
</Button>
</Form>
</DialogFooter>
</DialogContent>
);
}
@@ -24,10 +24,11 @@ import { formatDuration } from "@trigger.dev/core/v3";
import { TaskRunStatusCombo } from "./TaskRunStatus";
import { useEnvironments } from "~/hooks/useEnvironments";
import { Button, LinkButton } from "~/components/primitives/Buttons";
import { StopCircleIcon } from "@heroicons/react/20/solid";
import { ArrowPathIcon, StopCircleIcon } from "@heroicons/react/20/solid";
import { Dialog, DialogTrigger } from "~/components/primitives/Dialog";
import { CancelRunDialog } from "./CancelRunDialog";
import { useLocation } from "@remix-run/react";
import { ReplayRunDialog } from "./ReplayRunDialog";
type RunsTableProps = {
total: number;
@@ -49,7 +50,6 @@ export function TaskRunsTable({
}: RunsTableProps) {
const organization = useOrganization();
const project = useProject();
const location = useLocation();
return (
<Table>
@@ -110,23 +110,7 @@ export function TaskRunsTable({
<TableCell to={path}>
{run.createdAt ? <DateTime date={run.createdAt} /> : ""}
</TableCell>
{run.isCancellable ? (
<TableCellMenu isSticky>
<Dialog>
<DialogTrigger asChild>
<Button variant="small-menu-item" LeadingIcon={StopCircleIcon}>
Cancel run
</Button>
</DialogTrigger>
<CancelRunDialog
runFriendlyId={run.friendlyId}
redirectPath={`${location.pathname}${location.search}`}
/>
</Dialog>
</TableCellMenu>
) : (
<TableCell to={path}>{""}</TableCell>
)}
<RunActionsCell run={run} path={path} />
</TableRow>
);
})
@@ -144,6 +128,43 @@ export function TaskRunsTable({
);
}
function RunActionsCell({ run, path }: { run: RunListItem; path: string }) {
const location = useLocation();
if (!run.isCancellable && !run.isReplayable) return <TableCell to={path}>{""}</TableCell>;
return (
<TableCellMenu isSticky>
{run.isCancellable && (
<Dialog>
<DialogTrigger asChild>
<Button variant="small-menu-item" LeadingIcon={StopCircleIcon}>
Cancel run
</Button>
</DialogTrigger>
<CancelRunDialog
runFriendlyId={run.friendlyId}
redirectPath={`${location.pathname}${location.search}`}
/>
</Dialog>
)}
{run.isReplayable && (
<Dialog>
<DialogTrigger asChild>
<Button variant="small-menu-item" LeadingIcon={ArrowPathIcon}>
Replay run
</Button>
</DialogTrigger>
<ReplayRunDialog
runFriendlyId={run.friendlyId}
failedRedirect={`${location.pathname}${location.search}`}
/>
</Dialog>
)}
</TableCellMenu>
);
}
function NoRuns({ title }: { title: string }) {
return (
<div className="flex items-center justify-center">
@@ -222,6 +222,7 @@ export class RunListPresenter {
version: run.version,
taskIdentifier: run.taskIdentifier,
attempts: Number(run.attempts),
isReplayable: true,
isCancellable: CANCELLABLE_STATUSES.includes(run.status),
environment: {
type: environment.type,
@@ -1,4 +1,9 @@
import { CloudArrowDownIcon, QueueListIcon, StopCircleIcon } from "@heroicons/react/20/solid";
import {
ArrowPathIcon,
CloudArrowDownIcon,
QueueListIcon,
StopCircleIcon,
} from "@heroicons/react/20/solid";
import { useParams } from "@remix-run/react";
import { LoaderFunctionArgs } from "@remix-run/server-runtime";
import { formatDurationNanoseconds, nanosecondsToMilliseconds } from "@trigger.dev/core/v3";
@@ -14,6 +19,7 @@ import { Paragraph } from "~/components/primitives/Paragraph";
import { Property, PropertyTable } from "~/components/primitives/PropertyTable";
import { CancelRunDialog } from "~/components/runs/v3/CancelRunDialog";
import { LiveTimer } from "~/components/runs/v3/LiveTimer";
import { ReplayRunDialog } from "~/components/runs/v3/ReplayRunDialog";
import { RunIcon } from "~/components/runs/v3/RunIcon";
import { SpanEvents } from "~/components/runs/v3/SpanEvents";
import { SpanTitle } from "~/components/runs/v3/SpanTitle";
@@ -22,7 +28,7 @@ import { TaskRunAttemptStatusCombo } from "~/components/runs/v3/TaskRunAttemptSt
import { useOrganization } from "~/hooks/useOrganizations";
import { useProject } from "~/hooks/useProject";
import { redirectWithErrorMessage } from "~/models/message.server";
import { SpanPresenter } from "~/presenters/v3/SpanPresenter.server";
import { Span, SpanPresenter } from "~/presenters/v3/SpanPresenter.server";
import { requireUserId } from "~/services/session.server";
import { cn } from "~/utils/cn";
import { v3RunPath, v3RunSpanPath, v3SpanParamsSchema, v3TraceSpanPath } from "~/utils/pathBuilder";
@@ -188,24 +194,7 @@ export default function Page() {
)}
</div>
<div className="flex items-center gap-4">
{event.isPartial && runParam && (
<Dialog>
<DialogTrigger asChild>
<Button variant="danger/small" LeadingIcon={StopCircleIcon}>
Cancel run
</Button>
</DialogTrigger>
<CancelRunDialog
runFriendlyId={event.runId}
redirectPath={v3RunSpanPath(
organization,
project,
{ friendlyId: runParam },
{ spanId: event.spanId }
)}
/>
</Dialog>
)}
<RunActionButtons span={event} />
</div>
</div>
) : null}
@@ -213,6 +202,54 @@ export default function Page() {
);
}
function RunActionButtons({ span }: { span: Span }) {
const organization = useOrganization();
const project = useProject();
const { runParam } = useParams();
if (!runParam) return null;
if (span.isPartial) {
return (
<Dialog>
<DialogTrigger asChild>
<Button variant="danger/small" LeadingIcon={StopCircleIcon}>
Cancel run
</Button>
</DialogTrigger>
<CancelRunDialog
runFriendlyId={span.runId}
redirectPath={v3RunSpanPath(
organization,
project,
{ friendlyId: runParam },
{ spanId: span.spanId }
)}
/>
</Dialog>
);
}
return (
<Dialog>
<DialogTrigger asChild>
<Button variant="tertiary/small" LeadingIcon={ArrowPathIcon}>
Replay run
</Button>
</DialogTrigger>
<ReplayRunDialog
runFriendlyId={span.runId}
failedRedirect={v3RunSpanPath(
organization,
project,
{ friendlyId: runParam },
{ spanId: span.spanId }
)}
/>
</Dialog>
);
}
function PacketDisplay({
data,
dataType,
@@ -0,0 +1,72 @@
import type { ActionFunctionArgs } from "@remix-run/server-runtime";
import { json } from "@remix-run/server-runtime";
import { PrismaErrorSchema, prisma } from "~/db.server";
import { z } from "zod";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { CancelRunService } from "~/services/runs/cancelRun.server";
import { ApiRunPresenter } from "~/presenters/ApiRunPresenter.server";
import { ReplayTaskRunService } from "~/v3/services/replayTaskRun.server";
import { logger } from "~/services/logger.server";
const ParamsSchema = z.object({
/* This is the run friendly ID */
runParam: z.string(),
});
export async function action({ request, params }: ActionFunctionArgs) {
// Ensure this is a POST request
if (request.method.toUpperCase() !== "POST") {
return { status: 405, body: "Method Not Allowed" };
}
// Authenticate the request
const authenticationResult = await authenticateApiRequest(request);
if (!authenticationResult) {
return json({ error: "Invalid or Missing API Key" }, { status: 401 });
}
const parsed = ParamsSchema.safeParse(params);
if (!parsed.success) {
return json({ error: "Invalid or missing run ID" }, { status: 400 });
}
const { runParam } = parsed.data;
try {
const taskRun = await prisma.taskRun.findUnique({
where: {
friendlyId: runParam,
},
});
if (!taskRun) {
return json({ error: "Run not found" }, { status: 404 });
}
const service = new ReplayTaskRunService();
const newRun = await service.call(taskRun);
if (!newRun) {
return json({ error: "Failed to create new run" }, { status: 400 });
}
return json({
id: newRun?.friendlyId,
});
} catch (error) {
if (error instanceof Error) {
logger.error("Failed to replay run", {
error: {
name: error.name,
message: error.message,
stack: error.stack,
},
run: runParam,
});
return json({ error: error.message }, { status: 400 });
} else {
logger.error("Failed to replay run", { error: JSON.stringify(error), run: runParam });
return json({ error: JSON.stringify(error) }, { status: 400 });
}
}
}
@@ -25,7 +25,7 @@ export async function action({ request, params }: ActionFunctionArgs) {
const parsed = ParamsSchema.safeParse(params);
if (!parsed.success) {
return json({ error: "Invalid or Missing runId" }, { status: 400 });
return json({ error: "Invalid or Missing run id" }, { status: 400 });
}
const { runParam } = parsed.data;
@@ -0,0 +1,85 @@
import { parse } from "@conform-to/zod";
import { ActionFunction, json } from "@remix-run/node";
import { z } from "zod";
import { prisma } from "~/db.server";
import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server";
import { logger } from "~/services/logger.server";
import { v3RunPath } from "~/utils/pathBuilder";
import { ReplayTaskRunService } from "~/v3/services/replayTaskRun.server";
const FormSchema = z.object({
failedRedirect: z.string(),
});
const ParamSchema = z.object({
runParam: z.string(),
});
export const action: ActionFunction = async ({ request, params }) => {
const { runParam } = ParamSchema.parse(params);
const formData = await request.formData();
const submission = parse(formData, { schema: FormSchema });
if (!submission.value) {
return json(submission);
}
try {
const taskRun = await prisma.taskRun.findUnique({
where: {
friendlyId: runParam,
},
include: {
project: {
include: {
organization: true,
},
},
},
});
if (!taskRun) {
return redirectWithErrorMessage(submission.value.failedRedirect, request, "Run not found");
}
const replayRunService = new ReplayTaskRunService();
const newRun = await replayRunService.call(taskRun);
if (!newRun) {
return redirectWithErrorMessage(
submission.value.failedRedirect,
request,
"Failed to replay run"
);
}
const runPath = v3RunPath(
{
slug: taskRun.project.organization.slug,
},
{ slug: taskRun.project.slug },
{ friendlyId: newRun.friendlyId }
);
return redirectWithSuccessMessage(runPath, request, `Replaying run`);
} catch (error) {
if (error instanceof Error) {
logger.error("Failed to replay run", {
error: {
name: error.name,
message: error.message,
stack: error.stack,
},
});
return redirectWithErrorMessage(submission.value.failedRedirect, request, error.message);
} else {
logger.error("Failed to replay run", { error });
return redirectWithErrorMessage(
submission.value.failedRedirect,
request,
JSON.stringify(error)
);
}
}
};
@@ -0,0 +1,53 @@
import { conditionallyImportPacket, parsePacket } from "@trigger.dev/core/v3";
import { Prisma, TaskRun } from "@trigger.dev/database";
import { findEnvironmentById } from "~/models/runtimeEnvironment.server";
import { logger } from "~/services/logger.server";
import { BaseService } from "./baseService.server";
import { TriggerTaskService } from "./triggerTask.server";
type ExtendedTaskRunAttempt = Prisma.TaskRunAttemptGetPayload<{
include: {
runtimeEnvironment: true;
backgroundWorker: true;
};
}>;
export class ReplayTaskRunService extends BaseService {
public async call(existingTaskRun: TaskRun) {
const authenticatedEnvironment = await findEnvironmentById(
existingTaskRun.runtimeEnvironmentId
);
if (!authenticatedEnvironment) {
return;
}
logger.info("Replaying task run", {
taskRunId: existingTaskRun.id,
taskRunFriendlyId: existingTaskRun.friendlyId,
});
const payloadPacket = await conditionallyImportPacket({
data: existingTaskRun.payload,
dataType: existingTaskRun.payloadType,
});
const parsedPayload = await parsePacket(payloadPacket);
logger.info("Replaying task run payload", {
taskRunId: existingTaskRun.id,
taskRunFriendlyId: existingTaskRun.friendlyId,
payloadPacketType: payloadPacket.dataType,
});
const triggerTaskService = new TriggerTaskService();
return await triggerTaskService.call(existingTaskRun.taskIdentifier, authenticatedEnvironment, {
payload: parsedPayload,
options: {
queue: {
name: existingTaskRun.queue,
},
concurrencyKey: existingTaskRun.concurrencyKey ?? undefined,
test: existingTaskRun.isTest,
},
});
}
}
+11 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://mintlify.com/schema.json",
"name": "Trigger.dev",
"openapi": ["/openapi.yml"],
"openapi": ["/openapi.yml", "/v3-openapi.json"],
"versions": ["v3 (Developer Preview)", "v2"],
"logo": {
"dark": "/logo/dark.png",
@@ -586,6 +586,16 @@
"v3/reference-cli-build",
"v3/reference-cli-who-am-i"
]
},
{
"group": "Management API",
"pages": [
"v3/management-start-run",
"v3/management-get-run",
"v3/management-get-runs",
"v3/management-replay-run",
"v3/management-cancel-run"
]
}
]
},
+216
View File
@@ -0,0 +1,216 @@
{
"openapi": "3.1.0",
"info": {
"title": "Trigger.dev v3 REST API",
"description": "The REST API lets you trigger and manage runs on Trigger.dev. You can trigger a run, get the status of a run, and get the results of a run. ",
"version": "2024-04"
},
"servers": [
{
"url": "https://api.trigger.dev",
"description": "Trigger.dev API"
}
],
"paths": {
"/api/v1/runs/{run_id}/replay": {
"post": {
"description": "Creates a new run with the same payload and options as the original run.",
"parameters": [
{
"in": "path",
"name": "run_id",
"required": true,
"schema": {
"type": "string"
},
"description": "The ID of an existing run. When you trigger a run you will get an id in the response."
}
],
"responses": {
"200": {
"description": "Successful request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the new run."
}
}
}
}
}
},
"400": {
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string",
"enum": ["Invalid or missing run ID", "Failed to create new run"]
}
}
}
}
}
},
"401": {
"description": "Unauthorized request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string",
"enum": ["Invalid or Missing API key"]
}
}
}
}
}
},
"404": {
"description": "Resource not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string",
"enum": ["Run not found"]
}
}
}
}
}
}
},
"tags": ["run"],
"security": [{ "bearerAuth": [] }],
"operationId": "replay_run_v1",
"x-codeSamples": [
{
"lang": "typescript",
"source": "const handle = await runs.replay(existingRun.id);"
},
{
"lang": "sh",
"source": "curl --request POST \\\n\t--url https://api.trigger.dev/api/v1/runs/{run_id}/replay \\\n\t--header 'Authorization: Bearer <token>'"
}
]
}
},
"/api/v1/runs/{run_id}/cancel": {
"post": {
"description": "Cancels a run.",
"parameters": [
{
"in": "path",
"name": "run_id",
"required": true,
"schema": {
"type": "string"
},
"description": "The ID of an existing run. When you trigger a run you will get an id in the response."
}
],
"responses": {
"200": {
"description": "Successful request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Confirmation message that the run was canceled."
}
}
}
}
}
},
"400": {
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string",
"enum": ["Invalid or missing run ID", "Failed to create new run"]
}
}
}
}
}
},
"401": {
"description": "Unauthorized request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string",
"enum": ["Invalid or Missing API key"]
}
}
}
}
}
},
"404": {
"description": "Resource not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string",
"enum": ["Run not found"]
}
}
}
}
}
}
},
"tags": ["run"],
"security": [{ "bearerAuth": [] }],
"operationId": "replay_run_v1",
"x-codeSamples": [
{
"lang": "typescript",
"source": "await runs.cancel(existingRun.id);"
},
{
"lang": "sh",
"source": "curl --request POST \\\n\t--url https://api.trigger.dev/api/v1/runs/{run_id}/cancel \\\n\t--header 'Authorization: Bearer <token>'"
}
]
}
}
},
"components": {
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"description": "Use your Secret API key in the form 'Bearer <SECRET KEY>' (without the quotation marks)"
}
}
},
"security": [{ "bearerAuth": [] }]
}
+4
View File
@@ -0,0 +1,4 @@
---
title: "Cancel run"
openapi: "v3-openapi POST /api/v1/runs/{run_id}/cancel"
---
+6
View File
@@ -0,0 +1,6 @@
---
title: "Get run"
description: "Get a run using the Task id."
---
<Snippet file="incomplete-docs.mdx" />
+6
View File
@@ -0,0 +1,6 @@
---
title: "Get runs"
description: "Get runs using a Task id."
---
<Snippet file="incomplete-docs.mdx" />
+4
View File
@@ -0,0 +1,4 @@
---
title: "Replay run"
openapi: "v3-openapi POST /api/v1/runs/{run_id}/replay"
---
+6
View File
@@ -0,0 +1,6 @@
---
title: "Start run"
description: "Start a run using the Task id, payload and options."
---
<Snippet file="incomplete-docs.mdx" />
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/airtable
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/airtable",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Trigger.dev integration for airtable",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,8 +25,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"airtable": "^0.12.1",
"zod": "3.22.3"
},
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/github
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/github",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "The official GitHub integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -30,8 +30,8 @@
"@octokit/request-error": "^5.0.1",
"@octokit/webhooks": "^12.0.10",
"octokit": "^3.1.2",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"zod": "3.22.3"
},
"engines": {
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/linear
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/linear",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Trigger.dev integration for @linear/sdk",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@linear/sdk": "^8.0.0",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"zod": "3.22.3"
},
"engines": {
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/slack
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/openai",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "The official OpenAI integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -42,8 +42,8 @@
},
"dependencies": {
"openai": "^4.16.1",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.6"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7"
},
"engines": {
"node": ">=18.0.0"
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/plain
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/plain",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"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:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"@team-plain/typescript-sdk": "^2.7.0"
},
"engines": {
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/replicate
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/replicate",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Trigger.dev integration for replicate",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,8 +25,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"replicate": "^0.18.1",
"zod": "3.22.3"
},
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/resend
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/resend",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"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:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"resend": "^2.1.0"
},
"engines": {
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/sendgrid
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sendgrid",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Trigger.dev integration for @sendgrid/mail",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@sendgrid/mail": "^7.7.0",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.6"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7"
},
"engines": {
"node": ">=16.8.0"
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/shopify
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/shopify",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Trigger.dev integration for @shopify/shopify-api",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@shopify/shopify-api": "^8.0.2",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7",
"zod": "3.22.3"
},
"engines": {
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/slack
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/slack",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"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:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"zod": "3.22.3"
},
"engines": {
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/stripe
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/stripe",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Trigger.dev integration for stripe",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,8 +25,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"stripe": "^12.14.0",
"zod": "3.22.3"
},
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/supabase
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/supabase",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Trigger.dev integration for @supabase/supabase-js",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@supabase/supabase-js": "^2.26.0",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"supabase-management-js": "^1.0.0",
"zod": "3.22.3"
},
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/typeform
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/integration-kit@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/typeform",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "The official Typeform integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -24,8 +24,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.7",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"@typeform/api-client": "^1.8.0",
"zod": "3.22.3"
},
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/astro
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
## 3.0.0-beta.6
### Patch 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": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"files": [
@@ -20,7 +20,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7"
},
"devDependencies": {
"astro": "^3.0.12",
+16
View File
@@ -1,5 +1,21 @@
# trigger.dev
## 3.0.0-beta.8
### Patch Changes
- 1c24348f7: Add openssl to prod worker image and allow passing auth token via env var for deploy
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/core@3.0.0-beta.7
## 3.0.0-beta.7
### Patch Changes
- 624ddce32: Fix permissions inside node_modules
- 9be1557bb: Changed the binary name from trigger.dev to triggerdev to fix a Windows issue
## 3.0.0-beta.6
### Patch Changes
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "trigger.dev",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.8",
"description": "A Command-Line Interface for Trigger.dev (v3) projects",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -32,7 +32,7 @@
"type": "module",
"exports": "./dist/index.js",
"bin": {
"trigger.dev": "./dist/index.js"
"triggerdev": "./dist/index.js"
},
"devDependencies": {
"@trigger.dev/core-apps": "workspace:*",
@@ -89,7 +89,7 @@
"@opentelemetry/sdk-trace-base": "^1.22.0",
"@opentelemetry/sdk-trace-node": "^1.22.0",
"@opentelemetry/semantic-conventions": "^1.22.0",
"@trigger.dev/core": "workspace:^3.0.0-beta.6",
"@trigger.dev/core": "workspace:^3.0.0-beta.7",
"@types/degit": "^2.8.3",
"chalk": "^5.2.0",
"chokidar": "^3.5.3",
@@ -135,4 +135,4 @@
"engines": {
"node": ">=18.0.0"
}
}
}
+3
View File
@@ -4,6 +4,7 @@ ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
busybox \
dumb-init \
openssl \
&& rm -rf /var/lib/apt/lists/*
# Create and set workdir with appropriate permissions
@@ -12,6 +13,8 @@ WORKDIR /app
# copy all the files just in case anything is needed in postinstall
COPY --chown=node:node . .
USER node
RUN npm ci --no-fund --no-audit && npm cache clean --force
# Development or production stage builds upon the base stage
+27
View File
@@ -72,6 +72,33 @@ export async function login(options?: LoginOptions): Promise<LoginResult> {
intro("Logging in to Trigger.dev");
}
const accessTokenFromEnv = process.env.TRIGGER_ACCESS_TOKEN;
if (accessTokenFromEnv) {
const auth = {
accessToken: accessTokenFromEnv,
apiUrl: process.env.TRIGGER_API_URL ?? "https://api.trigger.dev",
};
const apiClient = new CliApiClient(auth.apiUrl, auth.accessToken);
const userData = await apiClient.whoAmI();
if (!userData.success) {
throw new Error(userData.error);
}
return {
ok: true as const,
profile: options?.profile ?? "default",
userId: userData.data.userId,
email: userData.data.email,
dashboardUrl: userData.data.dashboardUrl,
auth: {
accessToken: auth.accessToken,
apiUrl: auth.apiUrl,
},
};
}
const authConfig = readAuthConfigProfile(options?.profile);
if (authConfig && authConfig.accessToken) {
+9
View File
@@ -1,5 +1,14 @@
# create-trigger
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/core@3.0.0-beta.7
- @trigger.dev/yalt@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/cli",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "The Trigger.dev CLI",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
+2
View File
@@ -1,5 +1,7 @@
# @trigger.dev/core-apps
## 3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@trigger.dev/core-apps",
"description": "Backend core code used across apps",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"private": true,
"license": "MIT",
"main": "./dist/index.js",
+2
View File
@@ -1,5 +1,7 @@
# @trigger.dev/core-backend
## 3.0.0-beta.7
## 3.0.0-beta.6
## 3.0.0-beta.5
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/core-backend",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Core code used across `@trigger.dev/sdk` and Trigger.dev server",
"license": "MIT",
"main": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# internal-platform
## 3.0.0-beta.7
### Patch Changes
- f854cb90e: Added replayRun function to the SDK
- f854cb90e: Added cancelRun to the SDK
## 3.0.0-beta.6
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/core",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Core code used across the Trigger.dev SDK and platform",
"license": "MIT",
"main": "./dist/index.js",
+27
View File
@@ -9,7 +9,10 @@ import {
BatchTriggerTaskRequestBody,
BatchTriggerTaskResponse,
CreateUploadPayloadUrlResponseBody,
ReplayRunResponse,
CanceledRunResponse,
} from "../schemas";
import { z } from "zod";
export type TriggerOptions = {
spanParentAsLink?: boolean;
@@ -88,6 +91,30 @@ export class ApiClient {
);
}
replayRun(runId: string) {
return zodfetch(
ReplayRunResponse,
`${this.baseUrl}/api/v1/runs/${runId}/replay`,
{
method: "POST",
headers: this.#getHeaders(false),
},
zodFetchOptions
);
}
cancelRun(runId: string) {
return zodfetch(
CanceledRunResponse,
`${this.baseUrl}/api/v2/runs/${runId}/cancel`,
{
method: "POST",
headers: this.#getHeaders(false),
},
zodFetchOptions
);
}
#getHeaders(spanParentAsLink: boolean) {
const headers: Record<string, string> = {
"Content-Type": "application/json",
+12
View File
@@ -198,3 +198,15 @@ export const CreateUploadPayloadUrlResponseBody = z.object({
});
export type CreateUploadPayloadUrlResponseBody = z.infer<typeof CreateUploadPayloadUrlResponseBody>;
export const ReplayRunResponse = z.object({
id: z.string(),
});
export type ReplayRunResponse = z.infer<typeof ReplayRunResponse>;
export const CanceledRunResponse = z.object({
message: z.string(),
});
export type CanceledRunResponse = z.infer<typeof CanceledRunResponse>;
+2
View File
@@ -1,5 +1,7 @@
# @trigger.dev/eslint-plugin
## 3.0.0-beta.7
## 3.0.0-beta.6
## 3.0.0-beta.5
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/eslint-plugin",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "ESLint plugin with trigger.dev best practices",
"keywords": [
"eslint",
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/express
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/express",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Official Express adapter for Trigger.dev",
"license": "MIT",
"main": "./dist/index.js",
@@ -23,7 +23,7 @@
"./package.json": "./package.json"
},
"devDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"@trigger.dev/tsconfig": "workspace:*",
"@types/debug": "^4.1.7",
"@types/express": "^4.17.13",
@@ -39,7 +39,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7"
},
"dependencies": {
"debug": "^4.3.4",
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/hono
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/hono",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "A Trigger.dev adapter for Hono.dev",
"license": "MIT",
"main": "./dist/index.js",
@@ -32,7 +32,7 @@
},
"peerDependencies": {
"hono": "3.x",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7"
},
"devDependencies": {
"@trigger.dev/tsconfig": "workspace:*",
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/integration-kit
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/core@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/integration-kit",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Trigger.dev Integration Kit has helpers to make creating integrations easier",
"license": "MIT",
"main": "./dist/index.js",
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/nestjs
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/nestjs",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Official NestJS adapter for Trigger.dev",
"license": "MIT",
"main": "./dist/index.js",
@@ -23,7 +23,7 @@
"./package.json": "./package.json"
},
"devDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"@trigger.dev/tsconfig": "workspace:*",
"@types/debug": "^4.1.7",
"@types/express": "^4.17.13",
@@ -41,7 +41,7 @@
},
"peerDependencies": {
"@nestjs/common": ">=10.0.0",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7"
},
"dependencies": {
"@nestjs/common": "^10.2.4",
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/nextjs
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/nextjs",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Trigger.dev Next.js integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -41,7 +41,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"next": ">=12.0.0"
},
"dependencies": {
+2
View File
@@ -1,5 +1,7 @@
# @trigger.dev/otlp-importer
## 3.0.0-beta.7
## 3.0.0-beta.6
## 3.0.0-beta.5
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/otlp-importer",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "OpenTelemetry OTLP Importer for Node.js written in TypeScript",
"license": "MIT",
"main": "./dist/index.js",
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/react
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/core@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/react",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"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:^3.0.0-beta.6",
"@trigger.dev/core": "workspace:^3.0.0-beta.7",
"debug": "^4.3.4",
"zod": "3.22.3"
},
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/remix
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/remix",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Trigger.dev Remix integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -39,7 +39,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7",
"@remix-run/server-runtime": ">1.19.0"
},
"dependencies": {
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/sveltekit
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sveltekit",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "Trigger.dev svelteKit integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -39,7 +39,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.6"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.7"
},
"dependencies": {
"debug": "^4.3.4"
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/testing
## 3.0.0-beta.7
### Patch Changes
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/sdk@3.0.0-beta.7
- @trigger.dev/core@3.0.0-beta.7
## 3.0.0-beta.6
### 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": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"license": "MIT",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
+11
View File
@@ -1,5 +1,16 @@
# @trigger.dev/sdk
## 3.0.0-beta.7
### Patch Changes
- f854cb90e: Added replayRun function to the SDK
- f854cb90e: Added cancelRun to the SDK
- Updated dependencies [f854cb90e]
- Updated dependencies [f854cb90e]
- @trigger.dev/core@3.0.0-beta.7
- @trigger.dev/core-backend@3.0.0-beta.7
## 3.0.0-beta.6
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sdk",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "trigger.dev Node.JS SDK",
"license": "MIT",
"main": "./dist/index.js",
@@ -48,8 +48,8 @@
"@opentelemetry/api": "^1.8.0",
"@opentelemetry/api-logs": "^0.48.0",
"@opentelemetry/semantic-conventions": "^1.22.0",
"@trigger.dev/core": "workspace:^3.0.0-beta.6",
"@trigger.dev/core-backend": "workspace:^3.0.0-beta.6",
"@trigger.dev/core": "workspace:^3.0.0-beta.7",
"@trigger.dev/core-backend": "workspace:^3.0.0-beta.7",
"chalk": "^5.2.0",
"cronstrue": "^2.21.0",
"debug": "^4.3.4",
+2
View File
@@ -8,3 +8,5 @@ import type { Context } from "./shared";
export type { Context };
export { logger, type LogLevel } from "@trigger.dev/core/v3";
export { runs } from "./management";
+39
View File
@@ -0,0 +1,39 @@
import { CanceledRunResponse, ReplayRunResponse, apiClientManager } from "@trigger.dev/core/v3";
import { apiClientMissingError } from "./shared";
export const runs = {
replay: replayRun,
cancel: cancelRun,
};
async function replayRun(runId: string): Promise<ReplayRunResponse> {
const apiClient = apiClientManager.client;
if (!apiClient) {
throw apiClientMissingError();
}
const response = await apiClient.replayRun(runId);
if (!response.ok) {
throw new Error(response.error);
}
return response.data;
}
async function cancelRun(runId: string): Promise<CanceledRunResponse> {
const apiClient = apiClientManager.client;
if (!apiClient) {
throw apiClientMissingError();
}
const response = await apiClient.cancelRun(runId);
if (!response.ok) {
throw new Error(response.error);
}
return response.data;
}
+1 -1
View File
@@ -562,7 +562,7 @@ async function handleTaskRunExecutionResult<TOutput>(
}
}
function apiClientMissingError() {
export function apiClientMissingError() {
const hasBaseUrl = !!apiClientManager.baseURL;
const hasAccessToken = !!apiClientManager.accessToken;
if (!hasBaseUrl && !hasAccessToken) {
+2
View File
@@ -1,5 +1,7 @@
# @trigger.dev/yalt
## 3.0.0-beta.7
## 3.0.0-beta.6
## 3.0.0-beta.5
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/yalt",
"version": "3.0.0-beta.6",
"version": "3.0.0-beta.7",
"description": "yalt.dev client library",
"license": "MIT",
"main": "./dist/index.js",
+244 -38
View File
@@ -821,10 +821,10 @@ importers:
integrations/airtable:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
airtable:
specifier: ^0.12.1
@@ -864,10 +864,10 @@ importers:
specifier: ^12.0.10
version: 12.0.10
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
octokit:
specifier: ^3.1.2
@@ -907,10 +907,10 @@ importers:
specifier: ^8.0.0
version: 8.0.0
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
zod:
specifier: 3.22.3
@@ -938,10 +938,10 @@ importers:
integrations/openai:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
openai:
specifier: ^4.16.1
@@ -981,10 +981,10 @@ importers:
specifier: ^2.7.0
version: 2.7.0
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
devDependencies:
'@trigger.dev/tsconfig':
@@ -1009,10 +1009,10 @@ importers:
integrations/replicate:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
replicate:
specifier: ^0.18.1
@@ -1043,10 +1043,10 @@ importers:
integrations/resend:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
resend:
specifier: ^2.1.0
@@ -1077,10 +1077,10 @@ importers:
specifier: ^7.7.0
version: 7.7.0
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
devDependencies:
'@trigger.dev/tsconfig':
@@ -1108,10 +1108,10 @@ importers:
specifier: ^8.0.2
version: 8.0.2
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
zod:
specifier: 3.22.3
@@ -1142,7 +1142,7 @@ importers:
specifier: ^6.8.1
version: 6.8.1
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
zod:
specifier: 3.22.3
@@ -1170,10 +1170,10 @@ importers:
integrations/stripe:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
stripe:
specifier: ^12.14.0
@@ -1207,10 +1207,10 @@ importers:
specifier: ^2.26.0
version: 2.31.0
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
supabase-management-js:
specifier: ^1.0.0
@@ -1241,10 +1241,10 @@ importers:
integrations/typeform:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../../packages/trigger-sdk
'@typeform/api-client':
specifier: ^1.8.0
@@ -1272,7 +1272,7 @@ importers:
packages/astro:
dependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../trigger-sdk
debug:
specifier: ^4.3.4
@@ -1487,7 +1487,7 @@ importers:
specifier: ^1.22.0
version: 1.22.0
'@trigger.dev/core':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../core
'@types/degit':
specifier: ^2.8.3
@@ -1932,7 +1932,7 @@ importers:
version: 4.18.2
devDependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../trigger-sdk
'@trigger.dev/tsconfig':
specifier: workspace:*
@@ -2027,7 +2027,7 @@ importers:
version: 4.3.4(supports-color@8.1.1)
devDependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../trigger-sdk
'@trigger.dev/tsconfig':
specifier: workspace:*
@@ -2060,7 +2060,7 @@ importers:
packages/nextjs:
dependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../trigger-sdk
debug:
specifier: ^4.3.4
@@ -2146,7 +2146,7 @@ importers:
specifier: 5.0.0-beta.2
version: 5.0.0-beta.2(react@18.2.0)
'@trigger.dev/core':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../core
debug:
specifier: ^4.3.4
@@ -2189,7 +2189,7 @@ importers:
packages/remix:
dependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../trigger-sdk
debug:
specifier: ^4.3.4
@@ -2226,7 +2226,7 @@ importers:
packages/sveltekit:
dependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../trigger-sdk
debug:
specifier: ^4.3.4
@@ -2300,10 +2300,10 @@ importers:
specifier: ^1.22.0
version: 1.22.0
'@trigger.dev/core':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../core
'@trigger.dev/core-backend':
specifier: workspace:^3.0.0-beta.6
specifier: workspace:^3.0.0-beta.7
version: link:../core-backend
chalk:
specifier: ^5.2.0
@@ -3050,6 +3050,12 @@ importers:
references/v3-catalog:
dependencies:
'@ffmpeg-installer/ffmpeg':
specifier: ^1.1.0
version: 1.1.0
'@ffprobe-installer/ffprobe':
specifier: ^2.1.2
version: 2.1.2
'@opentelemetry/api':
specifier: ^1.8.0
version: 1.8.0
@@ -3065,6 +3071,12 @@ importers:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.0
version: link:../../packages/trigger-sdk
dotenv:
specifier: ^16.4.5
version: 16.4.5
execa:
specifier: ^8.0.1
version: 8.0.1
msw:
specifier: ^2.2.1
version: 2.2.1(typescript@5.3.3)
@@ -3087,6 +3099,9 @@ importers:
trigger.dev:
specifier: workspace:*
version: link:../../packages/cli-v3
ts-node:
specifier: ^10.9.2
version: 10.9.2(@types/node@20.4.2)(typescript@5.3.3)
typescript:
specifier: ^5.3.0
version: 5.3.3
@@ -7297,6 +7312,161 @@ packages:
fast-json-stringify: 5.8.0
dev: true
/@ffmpeg-installer/darwin-arm64@4.1.5:
resolution: {integrity: sha512-hYqTiP63mXz7wSQfuqfFwfLOfwwFChUedeCVKkBtl/cliaTM7/ePI9bVzfZ2c+dWu3TqCwLDRWNSJ5pqZl8otA==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@ffmpeg-installer/darwin-x64@4.1.0:
resolution: {integrity: sha512-Z4EyG3cIFjdhlY8wI9aLUXuH8nVt7E9SlMVZtWvSPnm2sm37/yC2CwjUzyCQbJbySnef1tQwGG2Sx+uWhd9IAw==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@ffmpeg-installer/ffmpeg@1.1.0:
resolution: {integrity: sha512-Uq4rmwkdGxIa9A6Bd/VqqYbT7zqh1GrT5/rFwCwKM70b42W5gIjWeVETq6SdcL0zXqDtY081Ws/iJWhr1+xvQg==}
optionalDependencies:
'@ffmpeg-installer/darwin-arm64': 4.1.5
'@ffmpeg-installer/darwin-x64': 4.1.0
'@ffmpeg-installer/linux-arm': 4.1.3
'@ffmpeg-installer/linux-arm64': 4.1.4
'@ffmpeg-installer/linux-ia32': 4.1.0
'@ffmpeg-installer/linux-x64': 4.1.0
'@ffmpeg-installer/win32-ia32': 4.1.0
'@ffmpeg-installer/win32-x64': 4.1.0
dev: false
/@ffmpeg-installer/linux-arm64@4.1.4:
resolution: {integrity: sha512-dljEqAOD0oIM6O6DxBW9US/FkvqvQwgJ2lGHOwHDDwu/pX8+V0YsDL1xqHbj1DMX/+nP9rxw7G7gcUvGspSoKg==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@ffmpeg-installer/linux-arm@4.1.3:
resolution: {integrity: sha512-NDf5V6l8AfzZ8WzUGZ5mV8O/xMzRag2ETR6+TlGIsMHp81agx51cqpPItXPib/nAZYmo55Bl2L6/WOMI3A5YRg==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@ffmpeg-installer/linux-ia32@4.1.0:
resolution: {integrity: sha512-0LWyFQnPf+Ij9GQGD034hS6A90URNu9HCtQ5cTqo5MxOEc7Rd8gLXrJvn++UmxhU0J5RyRE9KRYstdCVUjkNOQ==}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@ffmpeg-installer/linux-x64@4.1.0:
resolution: {integrity: sha512-Y5BWhGLU/WpQjOArNIgXD3z5mxxdV8c41C+U15nsE5yF8tVcdCGet5zPs5Zy3Ta6bU7haGpIzryutqCGQA/W8A==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@ffmpeg-installer/win32-ia32@4.1.0:
resolution: {integrity: sha512-FV2D7RlaZv/lrtdhaQ4oETwoFUsUjlUiasiZLDxhEUPdNDWcH1OU9K1xTvqz+OXLdsmYelUDuBS/zkMOTtlUAw==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@ffmpeg-installer/win32-x64@4.1.0:
resolution: {integrity: sha512-Drt5u2vzDnIONf4ZEkKtFlbvwj6rI3kxw1Ck9fpudmtgaZIHD4ucsWB2lCZBXRxJgXR+2IMSti+4rtM4C4rXgg==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@ffprobe-installer/darwin-arm64@5.0.1:
resolution: {integrity: sha512-vwNCNjokH8hfkbl6m95zICHwkSzhEvDC3GVBcUp5HX8+4wsX10SP3B+bGur7XUzTIZ4cQpgJmEIAx6TUwRepMg==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@ffprobe-installer/darwin-x64@5.1.0:
resolution: {integrity: sha512-J+YGscZMpQclFg31O4cfVRGmDpkVsQ2fZujoUdMAAYcP0NtqpC49Hs3SWJpBdsGB4VeqOt5TTm1vSZQzs1NkhA==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@ffprobe-installer/ffprobe@2.1.2:
resolution: {integrity: sha512-ZNvwk4f2magF42Zji2Ese16SMj9BS7Fui4kRjg6gTYTxY3gWZNpg85n4MIfQyI9nimHg4x/gT6FVkp/bBDuBwg==}
engines: {node: '>=14.21.2'}
optionalDependencies:
'@ffprobe-installer/darwin-arm64': 5.0.1
'@ffprobe-installer/darwin-x64': 5.1.0
'@ffprobe-installer/linux-arm': 5.2.0
'@ffprobe-installer/linux-arm64': 5.2.0
'@ffprobe-installer/linux-ia32': 5.2.0
'@ffprobe-installer/linux-x64': 5.2.0
'@ffprobe-installer/win32-ia32': 5.1.0
'@ffprobe-installer/win32-x64': 5.1.0
dev: false
/@ffprobe-installer/linux-arm64@5.2.0:
resolution: {integrity: sha512-X1VvWtlLs6ScP73biVLuHD5ohKJKsMTa0vafCESOen4mOoNeLAYbxOVxDWAdFz9cpZgRiloFj5QD6nDj8E28yQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@ffprobe-installer/linux-arm@5.2.0:
resolution: {integrity: sha512-PF5HqEhCY7WTWHtLDYbA/+rLS+rhslWvyBlAG1Fk8VzVlnRdl93o6hy7DE2kJgxWQbFaR3ZktPQGEzfkrmQHvQ==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@ffprobe-installer/linux-ia32@5.2.0:
resolution: {integrity: sha512-TFVK5sasXyXhbIG7LtPRDmtkrkOsInwKcL43iEvEw+D9vCS2rc//mn9/0Q+BR0UoJEiMK4+ApYr/3LLVUBPOCQ==}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@ffprobe-installer/linux-x64@5.2.0:
resolution: {integrity: sha512-D3UeqTLYPNs7pBWPLUYGehPdRVqU8eACox4OZy3pZUZatxye2YKlvBwEfaLdL1v2Z4FOAlLUhms0kY8m8kqSRA==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@ffprobe-installer/win32-ia32@5.1.0:
resolution: {integrity: sha512-5O3vOoNRxmut0/Nu9vSazTdSHasrr+zPT2B3Hm7kjmO3QVFcIfVImS6ReQnZeSy8JPJOqXts5kX5x/3KOX54XQ==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@ffprobe-installer/win32-x64@5.1.0:
resolution: {integrity: sha512-jMGYeAgkrdn4e2vvYt/qakgHRE3CPju4bn5TmdPfoAm1BlX1mY9cyMd8gf5vSzI8gH8Zq5WQAyAkmekX/8TSTg==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@floating-ui/core@0.7.3:
resolution: {integrity: sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==}
dev: false
@@ -18127,6 +18297,11 @@ packages:
resolution: {integrity: sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==}
engines: {node: '>=12'}
/dotenv@16.4.5:
resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
engines: {node: '>=12'}
dev: false
/dotenv@8.6.0:
resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
engines: {node: '>=10'}
@@ -24816,7 +24991,7 @@ packages:
hasBin: true
dependencies:
acorn: 8.10.0
acorn-walk: 8.2.0
acorn-walk: 8.3.2
capnp-ts: 0.7.0
exit-hook: 2.2.1
glob-to-regexp: 0.4.1
@@ -24839,7 +25014,7 @@ packages:
hasBin: true
dependencies:
acorn: 8.10.0
acorn-walk: 8.2.0
acorn-walk: 8.3.2
capnp-ts: 0.7.0
exit-hook: 2.2.1
glob-to-regexp: 0.4.1
@@ -24862,7 +25037,7 @@ packages:
hasBin: true
dependencies:
acorn: 8.10.0
acorn-walk: 8.2.0
acorn-walk: 8.3.2
capnp-ts: 0.7.0
exit-hook: 2.2.1
glob-to-regexp: 0.4.1
@@ -31198,6 +31373,37 @@ packages:
yn: 3.1.1
dev: true
/ts-node@10.9.2(@types/node@20.4.2)(typescript@5.3.3):
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true
peerDependencies:
'@swc/core': '>=1.2.50'
'@swc/wasm': '>=1.2.50'
'@types/node': '*'
typescript: '>=2.7'
peerDependenciesMeta:
'@swc/core':
optional: true
'@swc/wasm':
optional: true
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.9
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.3
'@types/node': 20.4.2
acorn: 8.10.0
acorn-walk: 8.3.2
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
typescript: 5.3.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
dev: true
/ts-poet@6.6.0:
resolution: {integrity: sha512-4vEH/wkhcjRPFOdBwIh9ItO6jOoumVLRF4aABDX5JSNEubSqwOulihxQPqai+OkuygJm3WYMInxXQX4QwVNMuw==}
dependencies:
+8 -2
View File
@@ -3,14 +3,19 @@
"version": "0.1.0",
"private": true,
"scripts": {
"dev:trigger": "trigger.dev dev"
"dev:trigger": "triggerdev dev",
"management": "ts-node ./src/management.ts"
},
"dependencies": {
"@ffmpeg-installer/ffmpeg": "^1.1.0",
"@ffprobe-installer/ffprobe": "^2.1.2",
"@opentelemetry/api": "^1.8.0",
"@sindresorhus/slugify": "^2.2.1",
"@traceloop/instrumentation-openai": "^0.3.9",
"@trigger.dev/core": "workspace:^3.0.0-beta.0",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.0",
"dotenv": "^16.4.5",
"execa": "^8.0.1",
"msw": "^2.2.1",
"openai": "^4.28.0",
"stripe": "^12.14.0",
@@ -20,6 +25,7 @@
"@trigger.dev/tsconfig": "workspace:*",
"@types/node": "20.4.2",
"trigger.dev": "workspace:*",
"ts-node": "^10.9.2",
"typescript": "^5.3.0"
}
}
}
+16
View File
@@ -0,0 +1,16 @@
import { runs } from "@trigger.dev/sdk/v3";
import { simpleChildTask } from "./trigger/subtasks";
import dotenv from "dotenv";
dotenv.config();
export async function run() {
const run = await simpleChildTask.trigger({ payload: { message: "Hello, World!" } });
const canceled = await runs.cancel(run.id);
console.log("canceled run", canceled);
const replayed = await runs.replay(run.id);
console.log("replayed run", replayed);
}
run();
+138 -1
View File
@@ -1,6 +1,10 @@
import { logger, task } from "@trigger.dev/sdk/v3";
import { chmod } from "node:fs/promises";
import { chmod, writeFile } from "node:fs/promises";
import { Readable } from "node:stream";
import { ReadableStream } from "stream/web";
import { basename } from "node:path";
import YTDlpWrap from "yt-dlp-wrap";
import ffmpeg from "@ffmpeg-installer/ffmpeg";
export const ytDlp = task({
id: "yt-dlp",
@@ -20,3 +24,136 @@ export const ytDlp = task({
logger.log("version", { version });
},
});
async function getFfprobe() {
const ffprobe = await import("@ffprobe-installer/ffprobe");
logger.log("ffprobeInstaller", ffprobe);
return ffprobe;
}
async function ffprobeVersion() {
const ffprobe = await getFfprobe();
const childProcess = await execute(ffprobe.path, ["-version"]);
logger.log("ffprobe -version", {
output: childProcess.stdout.split("\n")[0],
});
}
async function ffmpegVersion() {
logger.log("ffmpegInstaller", ffmpeg);
const childProcess = await execute(ffmpeg.path, ["-version"]);
logger.log("ffmpeg -version", {
output: childProcess.stdout.split("\n")[0],
});
}
export const ffprobeInstaller = task({
id: "ffprobe-installer",
run: async () => {
await ffprobeVersion();
},
});
export const ffmpegInstaller = task({
id: "ffmpeg-installer",
run: async () => {
await ffmpegVersion();
},
});
const videoUrl =
"https://upload.wikimedia.org/wikipedia/commons/0/07/Fractal-zoom-1-03-Mandelbrot_Buzzsaw.ogv";
const videoPath = "./video.ogv";
async function downloadVideo() {
logger.log("downloading video", { url: videoUrl });
const response = await fetch(videoUrl);
if (!response.body) {
throw new Error("No readable stream");
}
const readStream = Readable.fromWeb(response.body as ReadableStream);
await writeFile(videoPath, readStream);
logger.log("finished downloading", { outputPath: videoPath });
}
async function execute(file: string, args?: readonly string[]) {
const { execa } = await import("execa");
logger.log(`execute: ${basename(file)}`, { args });
const childProcess = await execa(file, args);
if (childProcess.exitCode !== 0) {
logger.error("Non-zero exit code", {
stderr: childProcess.stderr,
stdout: childProcess.stdout,
});
throw new Error("Non-zero exit code");
}
return childProcess;
}
async function probeVideo() {
const ffprobe = await getFfprobe();
const args = ["-hide_banner", "-print_format", "json", "-show_format", videoPath];
logger.log("probing video", { videoPath });
const childProcess = await execute(ffprobe.path, args);
logger.log("video info", {
output: JSON.parse(childProcess.stdout),
});
}
export const ffprobeInfo = task({
id: "ffprobe-info",
run: async () => {
await ffprobeVersion();
await downloadVideo();
await probeVideo();
},
});
async function convertVideo() {
const outputPath = "./video.webm";
logger.log("converting video", { input: videoPath, output: outputPath });
const childProcess = await execute(ffmpeg.path, [
"-hide_banner",
"-y", // overwrite output, don't prompt
"-i",
videoPath,
// seek to 25s
"-ss",
"25",
// stop after 5s
"-t",
"5",
outputPath,
]);
logger.log("video converted", {
input: videoPath,
output: outputPath,
stderr: childProcess.stderr,
stdout: childProcess.stdout,
});
}
export const ffmpegConvert = task({
id: "ffmpeg-convert",
run: async () => {
await ffmpegVersion();
await downloadVideo();
await convertVideo();
},
});