diff --git a/.oxlintrc.json b/.oxlintrc.json index 6992bd7b8e5..7eed6b1b82e 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -11,13 +11,24 @@ "internal-packages/tsql/src/grammar/" ], "rules": { - "no-unused-vars": "off", + "no-unused-vars": [ + "error", + { + "args": "none", + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_", + "caughtErrors": "all", + "caughtErrorsIgnorePattern": "^_", + "destructuredArrayIgnorePattern": "^_", + "ignoreRestSiblings": true + } + ], "no-empty-pattern": "off", "no-control-regex": "off", "typescript/no-non-null-asserted-optional-chain": "off", "no-unused-expressions": ["warn", { "allowShortCircuit": true, "allowTernary": true }], - "typescript/consistent-type-imports": "off", - "import/no-duplicates": "off", + "typescript/consistent-type-imports": "error", + "import/no-duplicates": "error", "import/namespace": "off", "react-hooks/exhaustive-deps": "off", "react-hooks/rules-of-hooks": "off" diff --git a/apps/coordinator/src/checkpointer.ts b/apps/coordinator/src/checkpointer.ts index 11b961c37f1..b864d78095d 100644 --- a/apps/coordinator/src/checkpointer.ts +++ b/apps/coordinator/src/checkpointer.ts @@ -334,7 +334,7 @@ export class Checkpointer { try { await setTimeout(delayMs, undefined, { signal }); - } catch (error) { + } catch (_error) { this.#logger.log("Checkpoint canceled during initial delay", { runId }); return { success: false, reason: "CANCELED" }; } @@ -364,7 +364,7 @@ export class Checkpointer { try { await setTimeout(delay.milliseconds, undefined, { signal }); - } catch (error) { + } catch (_error) { this.#logger.log("Checkpoint canceled during retry delay", { runId }); return { success: false, reason: "CANCELED" }; } diff --git a/apps/coordinator/src/exec.ts b/apps/coordinator/src/exec.ts index b905723c0f8..ca6d3dcd101 100644 --- a/apps/coordinator/src/exec.ts +++ b/apps/coordinator/src/exec.ts @@ -208,7 +208,7 @@ export class Buildah { try { await x("buildah", ["login", "--get-login", registryHost], { throwOnError: true }); return true; - } catch (error) { + } catch (_error) { return false; } } diff --git a/apps/coordinator/src/index.ts b/apps/coordinator/src/index.ts index 815012fe048..fb72d5ddf12 100644 --- a/apps/coordinator/src/index.ts +++ b/apps/coordinator/src/index.ts @@ -1,5 +1,6 @@ import { createServer } from "node:http"; import { Server } from "socket.io"; +import type { WaitReason } from "@trigger.dev/core/v3"; import { CoordinatorToPlatformMessages, CoordinatorToProdWorkerMessages, @@ -7,7 +8,6 @@ import { PlatformToCoordinatorMessages, ProdWorkerSocketData, ProdWorkerToCoordinatorMessages, - WaitReason, } from "@trigger.dev/core/v3"; import { ZodNamespace } from "@trigger.dev/core/v3/zodNamespace"; import { ZodSocketConnection } from "@trigger.dev/core/v3/zodSocket"; diff --git a/apps/coordinator/src/util.ts b/apps/coordinator/src/util.ts index 18464f230b6..649eb3000af 100644 --- a/apps/coordinator/src/util.ts +++ b/apps/coordinator/src/util.ts @@ -25,7 +25,7 @@ export function safeJsonParse(json?: string): unknown { try { return JSON.parse(json); - } catch (e) { + } catch (_e) { return null; } } diff --git a/apps/docker-provider/src/index.ts b/apps/docker-provider/src/index.ts index a0b0554fb23..8572b90145a 100644 --- a/apps/docker-provider/src/index.ts +++ b/apps/docker-provider/src/index.ts @@ -1,16 +1,14 @@ -import { $, type ExecaChildProcess, execa } from "execa"; -import { - ProviderShell, +import type { PostStartCauses, PreStopCauses } from "@trigger.dev/core/v3"; +import type { TaskOperations, TaskOperationsCreateOptions, TaskOperationsIndexOptions, TaskOperationsRestoreOptions, } from "@trigger.dev/core/v3/apps"; -import { SimpleLogger } from "@trigger.dev/core/v3/apps"; -import { isExecaChildProcess } from "@trigger.dev/core/v3/apps"; +import { ProviderShell, SimpleLogger, isExecaChildProcess } from "@trigger.dev/core/v3/apps"; import { testDockerCheckpoint } from "@trigger.dev/core/v3/serverOnly"; +import { $, type ExecaChildProcess, execa } from "execa"; import { setTimeout } from "node:timers/promises"; -import { PostStartCauses, PreStopCauses } from "@trigger.dev/core/v3"; const MACHINE_NAME = process.env.MACHINE_NAME || "local"; const COORDINATOR_PORT = process.env.COORDINATOR_PORT || 8020; diff --git a/apps/kubernetes-provider/src/index.ts b/apps/kubernetes-provider/src/index.ts index 23a6ad56ce3..82c1b026282 100644 --- a/apps/kubernetes-provider/src/index.ts +++ b/apps/kubernetes-provider/src/index.ts @@ -1,19 +1,18 @@ import * as k8s from "@kubernetes/client-node"; -import { +import type { EnvironmentType, MachinePreset, PostStartCauses, PreStopCauses, } from "@trigger.dev/core/v3"; -import { - ProviderShell, - SimpleLogger, +import type { TaskOperations, TaskOperationsCreateOptions, TaskOperationsIndexOptions, TaskOperationsPrePullDeploymentOptions, TaskOperationsRestoreOptions, } from "@trigger.dev/core/v3/apps"; +import { ProviderShell, SimpleLogger } from "@trigger.dev/core/v3/apps"; import { PodCleaner } from "./podCleaner"; import { TaskMonitor } from "./taskMonitor"; import { UptimeHeartbeat } from "./uptimeHeartbeat"; diff --git a/apps/kubernetes-provider/src/taskMonitor.ts b/apps/kubernetes-provider/src/taskMonitor.ts index 3fefc04a2ed..156052e37fb 100644 --- a/apps/kubernetes-provider/src/taskMonitor.ts +++ b/apps/kubernetes-provider/src/taskMonitor.ts @@ -1,9 +1,12 @@ import * as k8s from "@kubernetes/client-node"; -import { SimpleLogger } from "@trigger.dev/core/v3/apps"; -import { EXIT_CODE_ALREADY_HANDLED, EXIT_CODE_CHILD_NONZERO } from "@trigger.dev/core/v3/apps"; -import { setTimeout } from "timers/promises"; -import PQueue from "p-queue"; import { TaskRunErrorCodes, type Prettify, type TaskRunInternalError } from "@trigger.dev/core/v3"; +import { + EXIT_CODE_ALREADY_HANDLED, + EXIT_CODE_CHILD_NONZERO, + SimpleLogger, +} from "@trigger.dev/core/v3/apps"; +import PQueue from "p-queue"; +import { setTimeout } from "timers/promises"; type FailureDetails = Prettify<{ exitCode: number; diff --git a/apps/supervisor/src/clients/kubernetes.ts b/apps/supervisor/src/clients/kubernetes.ts index 129ff32b6ec..9ab8e5bb3c1 100644 --- a/apps/supervisor/src/clients/kubernetes.ts +++ b/apps/supervisor/src/clients/kubernetes.ts @@ -1,10 +1,8 @@ -import * as https from "node:https"; import * as k8s from "@kubernetes/client-node"; -import { Informer } from "@kubernetes/client-node"; -import { ListPromise } from "@kubernetes/client-node"; -import { KubernetesObject } from "@kubernetes/client-node"; +import type { Informer, KubernetesObject, ListPromise } from "@kubernetes/client-node"; import { assertExhaustive } from "@trigger.dev/core/utils"; import { SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger"; +import * as https from "node:https"; export const RUNTIME_ENV = process.env.KUBERNETES_PORT ? "kubernetes" : "local"; diff --git a/apps/supervisor/src/services/failedPodHandler.test.ts b/apps/supervisor/src/services/failedPodHandler.test.ts index 4dbfda16f43..110e5806442 100644 --- a/apps/supervisor/src/services/failedPodHandler.test.ts +++ b/apps/supervisor/src/services/failedPodHandler.test.ts @@ -14,7 +14,7 @@ describe.skipIf(!process.env.K8S_INTEGRATION_TESTS)("FailedPodHandler Integratio // Create the test namespace if it doesn't exist try { await k8s.core.readNamespace({ name: namespace }); - } catch (error) { + } catch (_error) { await k8s.core.createNamespace({ body: { metadata: { diff --git a/apps/supervisor/src/services/failedPodHandler.ts b/apps/supervisor/src/services/failedPodHandler.ts index 3d56c92b213..ca458e0ba47 100644 --- a/apps/supervisor/src/services/failedPodHandler.ts +++ b/apps/supervisor/src/services/failedPodHandler.ts @@ -1,10 +1,11 @@ +import type { Informer, V1Pod } from "@kubernetes/client-node"; import { LogLevel, SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger"; -import { K8sApi } from "../clients/kubernetes.js"; +import type { Registry } from "prom-client"; +import { Counter, Histogram } from "prom-client"; +import { setTimeout } from "timers/promises"; +import type { K8sApi } from "../clients/kubernetes.js"; import { createK8sApi } from "../clients/kubernetes.js"; -import { Informer, V1Pod } from "@kubernetes/client-node"; -import { Counter, Registry, Histogram } from "prom-client"; import { register } from "../metrics.js"; -import { setTimeout } from "timers/promises"; type PodStatus = "Pending" | "Running" | "Succeeded" | "Failed" | "Unknown" | "GracefulShutdown"; diff --git a/apps/supervisor/src/services/podCleaner.test.ts b/apps/supervisor/src/services/podCleaner.test.ts index d6ed2bb737f..827f12600e6 100644 --- a/apps/supervisor/src/services/podCleaner.test.ts +++ b/apps/supervisor/src/services/podCleaner.test.ts @@ -14,7 +14,7 @@ describe.skipIf(!process.env.K8S_INTEGRATION_TESTS)("PodCleaner Integration Test // Create the test namespace, only if it doesn't exist try { await k8s.core.readNamespace({ name: namespace }); - } catch (error) { + } catch (_error) { await k8s.core.createNamespace({ body: { metadata: { @@ -325,7 +325,7 @@ async function waitForPodDeletion({ name: podName, }); await setTimeout(waitMs); - } catch (error) { + } catch (_error) { // Pod was deleted return; } diff --git a/apps/supervisor/src/services/podCleaner.ts b/apps/supervisor/src/services/podCleaner.ts index 3ac5da293df..1ee1f240bd0 100644 --- a/apps/supervisor/src/services/podCleaner.ts +++ b/apps/supervisor/src/services/podCleaner.ts @@ -1,8 +1,9 @@ +import { IntervalService } from "@trigger.dev/core/v3"; import { SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger"; -import { K8sApi } from "../clients/kubernetes.js"; +import type { Registry } from "prom-client"; +import { Counter, Gauge } from "prom-client"; +import type { K8sApi } from "../clients/kubernetes.js"; import { createK8sApi } from "../clients/kubernetes.js"; -import { IntervalService } from "@trigger.dev/core/v3"; -import { Counter, Gauge, Registry } from "prom-client"; import { register } from "../metrics.js"; export type PodCleanerOptions = { diff --git a/apps/supervisor/src/workloadManager/ecrAuth.ts b/apps/supervisor/src/workloadManager/ecrAuth.ts index 33e98f63195..851249898b4 100644 --- a/apps/supervisor/src/workloadManager/ecrAuth.ts +++ b/apps/supervisor/src/workloadManager/ecrAuth.ts @@ -1,7 +1,7 @@ import { ECRClient, GetAuthorizationTokenCommand } from "@aws-sdk/client-ecr"; import { SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger"; import { tryCatch } from "@trigger.dev/core"; -import Docker from "dockerode"; +import type Docker from "dockerode"; interface ECRTokenCache { token: string; diff --git a/apps/supervisor/src/workloadServer/index.ts b/apps/supervisor/src/workloadServer/index.ts index 7397313080a..bacdbbe06d9 100644 --- a/apps/supervisor/src/workloadServer/index.ts +++ b/apps/supervisor/src/workloadServer/index.ts @@ -1,8 +1,8 @@ -import { type Namespace, Server, type Socket } from "socket.io"; +import { SnapshotCallbackPayloadSchema } from "@internal/compute"; +import { type CheckpointClient, HttpServer } from "@trigger.dev/core/v3/serverOnly"; import { SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger"; -import EventEmitter from "node:events"; -import { z } from "zod"; import { + type WorkloadRunSnapshotsSinceResponseBody, type SupervisorHttpClient, WORKLOAD_HEADERS, type WorkloadClientSocketData, @@ -16,22 +16,20 @@ import { type WorkloadRunAttemptCompleteResponseBody, WorkloadRunAttemptStartRequestBody, type WorkloadRunAttemptStartResponseBody, - WorkloadRunSnapshotsSinceResponseBody, type WorkloadServerToClientEvents, type WorkloadSuspendRunResponseBody, } from "@trigger.dev/core/v3/workers"; -import { HttpServer, type CheckpointClient } from "@trigger.dev/core/v3/serverOnly"; -import { type IncomingMessage } from "node:http"; -import { register } from "../metrics.js"; +import EventEmitter from "node:events"; +import type { IncomingMessage, ServerResponse } from "node:http"; +import { type Namespace, Server, type Socket } from "socket.io"; +import { z } from "zod"; import { env } from "../env.js"; -import { SnapshotCallbackPayloadSchema } from "@internal/compute"; +import { register } from "../metrics.js"; import { ComputeSnapshotService, type RunTraceContext, } from "../services/computeSnapshotService.js"; -import type { ComputeWorkloadManager } from "../workloadManager/compute.js"; import type { OtlpTraceService } from "../services/otlpTraceService.js"; -import type { ServerResponse } from "node:http"; import { emitOneShot, runWideEvent, @@ -39,6 +37,7 @@ import { type State, type WideEventOptions, } from "../wideEvents/index.js"; +import type { ComputeWorkloadManager } from "../workloadManager/compute.js"; // Use the official export when upgrading to socket.io@4.8.0 interface DefaultEventsMap { diff --git a/apps/webapp/app/components/BulkActionFilterSummary.tsx b/apps/webapp/app/components/BulkActionFilterSummary.tsx index a2eabc879de..3c6871a23cd 100644 --- a/apps/webapp/app/components/BulkActionFilterSummary.tsx +++ b/apps/webapp/app/components/BulkActionFilterSummary.tsx @@ -44,7 +44,11 @@ export function BulkActionFilterSummary({ ); case "filter": { - const { label, valueLabel, rangeType } = timeFilterRenderValues({ + const { + label, + valueLabel, + rangeType: _rangeType, + } = timeFilterRenderValues({ from: filters.from ? dateFromString(`${filters.from}`) : undefined, to: filters.to ? dateFromString(`${filters.to}`) : undefined, period: filters.period, diff --git a/apps/webapp/app/components/admin/debugRun.tsx b/apps/webapp/app/components/admin/debugRun.tsx index c0d0dc03dc7..8fde0dd28d0 100644 --- a/apps/webapp/app/components/admin/debugRun.tsx +++ b/apps/webapp/app/components/admin/debugRun.tsx @@ -4,7 +4,8 @@ import { Button } from "../primitives/Buttons"; import { Dialog, DialogContent, DialogHeader, DialogTrigger } from "../primitives/Dialog"; import { Cog6ToothIcon } from "@heroicons/react/20/solid"; import { type loader } from "~/routes/resources.taskruns.$runParam.debug"; -import { UseDataFunctionReturn, useTypedFetcher } from "remix-typedjson"; +import type { UseDataFunctionReturn } from "remix-typedjson"; +import { useTypedFetcher } from "remix-typedjson"; import { useEffect } from "react"; import { Spinner } from "../primitives/Spinner"; import * as Property from "~/components/primitives/PropertyTable"; diff --git a/apps/webapp/app/components/billing/BillingLimitConfigSection.tsx b/apps/webapp/app/components/billing/BillingLimitConfigSection.tsx index 23fd3f731b1..c69d6f0c175 100644 --- a/apps/webapp/app/components/billing/BillingLimitConfigSection.tsx +++ b/apps/webapp/app/components/billing/BillingLimitConfigSection.tsx @@ -4,9 +4,9 @@ import { parseWithZod } from "@conform-to/zod"; import { Form, useActionData } from "@remix-run/react"; import { useEffect, useMemo, useRef, useState } from "react"; import { z } from "zod"; -import { AnimatedCallout } from "~/components/primitives/AnimatedCallout"; import { getBillingLimitMode } from "~/components/billing/billingAlertsFormat"; import { formatGracePeriodMs } from "~/components/billing/billingLimitFormat"; +import { AnimatedCallout } from "~/components/primitives/AnimatedCallout"; import { Button } from "~/components/primitives/Buttons"; import { CheckboxWithLabel } from "~/components/primitives/Checkbox"; import { Fieldset } from "~/components/primitives/Fieldset"; @@ -18,7 +18,6 @@ import { InputGroup } from "~/components/primitives/InputGroup"; import { Paragraph } from "~/components/primitives/Paragraph"; import { RadioGroup, RadioGroupItem } from "~/components/primitives/RadioButton"; import type { BillingLimitResult } from "~/services/billingLimit.schemas"; -import { cn } from "~/utils/cn"; import { formatCurrency } from "~/utils/numberFormatter"; export const billingLimitFormSchema = z.discriminatedUnion("mode", [ @@ -45,8 +44,6 @@ export const billingLimitFormSchema = z.discriminatedUnion("mode", [ }), ]); -type BillingLimitFormValue = z.infer; - type BillingLimitActionData = { formIntent: "billing-limit"; submission: SubmissionResult; @@ -141,8 +138,8 @@ export function BillingLimitConfigSection({ const limitSubmission = actionData?.formIntent === "billing-limit" ? actionData.submission : undefined; - const needsInitialSave = !billingLimit.isConfigured; - const isLimitDirty = + const _needsInitialSave = !billingLimit.isConfigured; + const _isLimitDirty = mode !== savedMode || (mode === "custom" && customAmount !== savedCustomAmount); const isDirty = isBillingLimitFormDirty({ billingLimit, diff --git a/apps/webapp/app/components/billing/FreePlanUsage.tsx b/apps/webapp/app/components/billing/FreePlanUsage.tsx index 3aa3378d0e8..9f51754a11c 100644 --- a/apps/webapp/app/components/billing/FreePlanUsage.tsx +++ b/apps/webapp/app/components/billing/FreePlanUsage.tsx @@ -1,7 +1,6 @@ import { ArrowUpCircleIcon } from "@heroicons/react/24/outline"; -import { motion, useMotionValue, useTransform } from "framer-motion"; -import { Paragraph } from "../primitives/Paragraph"; import { Link } from "@remix-run/react"; +import { motion, useMotionValue, useTransform } from "framer-motion"; import { cn } from "~/utils/cn"; export function FreePlanUsage({ to, percentage }: { to: string; percentage: number }) { diff --git a/apps/webapp/app/components/billing/billingAlertsFormat.ts b/apps/webapp/app/components/billing/billingAlertsFormat.ts index ee0fd9d64b0..dc99c49ff1d 100644 --- a/apps/webapp/app/components/billing/billingAlertsFormat.ts +++ b/apps/webapp/app/components/billing/billingAlertsFormat.ts @@ -230,15 +230,6 @@ export function isLegacyDollarAmountField( return rawAmount === planDollars || rawAmount === effectiveDollars; } - -function isAbsoluteDollarAlertLevels(levels: number[]): boolean { - if (levels.length === 0) { - return false; - } - - return !usesFractionAlertLevelFormat(levels); -} - export function isAbsoluteSavedAlerts(alerts: BillingAlertsFormData): boolean { return getSavedAlertAmountCents(alerts) === ABSOLUTE_ALERT_BASE_CENTS; } diff --git a/apps/webapp/app/components/code/ChartConfigPanel.tsx b/apps/webapp/app/components/code/ChartConfigPanel.tsx index 3032795c1bf..1b61e46a752 100644 --- a/apps/webapp/app/components/code/ChartConfigPanel.tsx +++ b/apps/webapp/app/components/code/ChartConfigPanel.tsx @@ -3,17 +3,16 @@ import { IconSortAscending, IconSortDescending } from "@tabler/icons-react"; import { BarChart, CheckIcon, LineChart, Plus, XIcon } from "lucide-react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { cn } from "~/utils/cn"; -import { Paragraph } from "../primitives/Paragraph"; -import { Popover, PopoverContent, PopoverTrigger } from "../primitives/Popover"; -import { Select, SelectItem } from "../primitives/Select"; -import { Switch } from "../primitives/Switch"; -import SegmentedControl from "../primitives/SegmentedControl"; -import { Button } from "../primitives/Buttons"; import { type AggregationType, type ChartConfiguration, type SortDirection, } from "../metrics/QueryWidget"; +import { Paragraph } from "../primitives/Paragraph"; +import { Popover, PopoverContent, PopoverTrigger } from "../primitives/Popover"; +import SegmentedControl from "../primitives/SegmentedControl"; +import { Select, SelectItem } from "../primitives/Select"; +import { Switch } from "../primitives/Switch"; import { CHART_COLORS_BY_HUE, getSeriesColor } from "./chartColors"; export const defaultChartConfig: ChartConfiguration = { diff --git a/apps/webapp/app/components/code/CodeBlock.tsx b/apps/webapp/app/components/code/CodeBlock.tsx index cc28c8142d3..4cab68edce6 100644 --- a/apps/webapp/app/components/code/CodeBlock.tsx +++ b/apps/webapp/app/components/code/CodeBlock.tsx @@ -2,7 +2,8 @@ import { ArrowsPointingOutIcon } from "@heroicons/react/20/solid"; import { Clipboard, ClipboardCheck } from "lucide-react"; import type { Language, PrismTheme } from "prism-react-renderer"; import { Highlight, Prism } from "prism-react-renderer"; -import { forwardRef, ReactNode, useCallback, useEffect, useState } from "react"; +import type { ReactNode } from "react"; +import { forwardRef, useCallback, useEffect, useState } from "react"; import { TextWrapIcon } from "~/assets/icons/TextWrapIcon"; import { cn } from "~/utils/cn"; import { highlightSearchText } from "~/utils/logUtils"; diff --git a/apps/webapp/app/components/code/TSQLEditor.tsx b/apps/webapp/app/components/code/TSQLEditor.tsx index 1fa56a2cea8..f59c2a74673 100644 --- a/apps/webapp/app/components/code/TSQLEditor.tsx +++ b/apps/webapp/app/components/code/TSQLEditor.tsx @@ -1,23 +1,23 @@ -import { sql, StandardSQL } from "@codemirror/lang-sql"; import { autocompletion, startCompletion } from "@codemirror/autocomplete"; +import { sql, StandardSQL } from "@codemirror/lang-sql"; import { linter, lintGutter } from "@codemirror/lint"; -import { EditorView, keymap } from "@codemirror/view"; import type { ViewUpdate } from "@codemirror/view"; -import { CheckIcon, ClipboardIcon, SparklesIcon, TrashIcon } from "@heroicons/react/20/solid"; +import { EditorView, keymap } from "@codemirror/view"; +import { CheckIcon, ClipboardIcon, TrashIcon } from "@heroicons/react/20/solid"; +import type { TableSchema } from "@internal/tsql"; import { type ReactCodeMirrorProps, type UseCodeMirror, useCodeMirror, } from "@uiw/react-codemirror"; -import { useCallback, useEffect, useRef, useState, useMemo } from "react"; +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { format as formatSQL } from "sql-formatter"; import { cn } from "~/utils/cn"; import { Button } from "../primitives/Buttons"; import { getEditorSetup } from "./codeMirrorSetup"; import { darkTheme } from "./codeMirrorTheme"; import { createTSQLCompletion } from "./tsql/tsqlCompletion"; import { createTSQLLinter } from "./tsql/tsqlLinter"; -import type { TableSchema } from "@internal/tsql"; -import { format as formatSQL } from "sql-formatter"; export interface TSQLEditorProps extends Omit { /** Initial value for the editor */ diff --git a/apps/webapp/app/components/code/chartColors.ts b/apps/webapp/app/components/code/chartColors.ts index 26bcc487a2e..05e53f9a194 100644 --- a/apps/webapp/app/components/code/chartColors.ts +++ b/apps/webapp/app/components/code/chartColors.ts @@ -106,40 +106,6 @@ function hslToHex({ h, s, l }: HSLColor): string { return `#${toHex(r1)}${toHex(g1)}${toHex(b1)}`; } - -/** Convert a hex string to HSL (h: 0–360, s: 0–100, l: 0–100) */ -function hexToHsl(hex: string): HSLColor { - const r = parseInt(hex.slice(1, 3), 16) / 255; - const g = parseInt(hex.slice(3, 5), 16) / 255; - const b = parseInt(hex.slice(5, 7), 16) / 255; - - const max = Math.max(r, g, b); - const min = Math.min(r, g, b); - const delta = max - min; - const l = (max + min) / 2; - - if (delta === 0) { - return { h: 0, s: 0, l: Math.round(l * 100) }; - } - - const s = delta / (1 - Math.abs(2 * l - 1)); - - let h: number; - if (max === r) { - h = 60 * (((g - b) / delta + 6) % 6); - } else if (max === g) { - h = 60 * ((b - r) / delta + 2); - } else { - h = 60 * ((r - g) / delta + 4); - } - - return { - h: Math.round(h), - s: Math.round(s * 100), - l: Math.round(l * 100), - }; -} - // --------------------------------------------------------------------------- // Derived hex palette (for consumers that need plain hex strings) // --------------------------------------------------------------------------- diff --git a/apps/webapp/app/components/code/tsql/tsqlCompletion.ts b/apps/webapp/app/components/code/tsql/tsqlCompletion.ts index 03d75f179d3..9c4d4d0c4cd 100644 --- a/apps/webapp/app/components/code/tsql/tsqlCompletion.ts +++ b/apps/webapp/app/components/code/tsql/tsqlCompletion.ts @@ -172,7 +172,7 @@ function createColumnCompletions(table: TableSchema, prefix?: string): Completio */ function extractTablesFromQuery(doc: string, schema: TableSchema[]): Map { const tableMap = new Map(); - const tableNames = schema.map((t) => t.name); + const _tableNames = schema.map((t) => t.name); // Simple regex to find table references in FROM and JOIN clauses // Handles: FROM table_name, FROM table_name AS alias, FROM table_name alias diff --git a/apps/webapp/app/components/errors/ConfigureErrorAlerts.tsx b/apps/webapp/app/components/errors/ConfigureErrorAlerts.tsx index 56a2c212c74..587dffb299d 100644 --- a/apps/webapp/app/components/errors/ConfigureErrorAlerts.tsx +++ b/apps/webapp/app/components/errors/ConfigureErrorAlerts.tsx @@ -7,31 +7,30 @@ import { LockClosedIcon, XMarkIcon, } from "@heroicons/react/20/solid"; +import { BellAlertIcon } from "@heroicons/react/24/solid"; import { useFetcher, useNavigate } from "@remix-run/react"; import { SlackIcon } from "@trigger.dev/companyicons"; import { Fragment, useEffect, useRef, useState } from "react"; import { z } from "zod"; +import { ExitIcon } from "~/assets/icons/ExitIcon"; +import { InlineCode } from "~/components/code/InlineCode"; import { Button, LinkButton } from "~/components/primitives/Buttons"; import { Callout, variantClasses } from "~/components/primitives/Callout"; -import { useToast } from "~/components/primitives/Toast"; import { Fieldset } from "~/components/primitives/Fieldset"; import { FormError } from "~/components/primitives/FormError"; import { Header2, Header3 } from "~/components/primitives/Headers"; import { Hint } from "~/components/primitives/Hint"; -import { InlineCode } from "~/components/code/InlineCode"; import { Input } from "~/components/primitives/Input"; import { InputGroup } from "~/components/primitives/InputGroup"; -import { Paragraph } from "~/components/primitives/Paragraph"; import { Select, SelectItem } from "~/components/primitives/Select"; +import { TextLink } from "~/components/primitives/TextLink"; +import { useToast } from "~/components/primitives/Toast"; import { UnorderedList } from "~/components/primitives/UnorderedList"; -import type { ErrorAlertChannelData } from "~/presenters/v3/ErrorAlertChannelPresenter.server"; import { useOptimisticLocation } from "~/hooks/useOptimisticLocation"; import { useOrganization } from "~/hooks/useOrganizations"; +import type { ErrorAlertChannelData } from "~/presenters/v3/ErrorAlertChannelPresenter.server"; import { cn } from "~/utils/cn"; import { organizationSlackIntegrationPath } from "~/utils/pathBuilder"; -import { ExitIcon } from "~/assets/icons/ExitIcon"; -import { TextLink } from "~/components/primitives/TextLink"; -import { BellAlertIcon } from "@heroicons/react/24/solid"; export const ErrorAlertsFormSchema = z.object({ emails: z.preprocess((i) => { diff --git a/apps/webapp/app/components/integrations/VercelOnboardingModal.tsx b/apps/webapp/app/components/integrations/VercelOnboardingModal.tsx index 7ae12b20d45..ec608d71037 100644 --- a/apps/webapp/app/components/integrations/VercelOnboardingModal.tsx +++ b/apps/webapp/app/components/integrations/VercelOnboardingModal.tsx @@ -120,13 +120,13 @@ export function VercelOnboardingModal({ const fetcher = useTypedFetcher(); const envMappingFetcher = useFetcher(); const completeOnboardingFetcher = useFetcher(); - const { Form: CompleteOnboardingForm } = completeOnboardingFetcher; + const { Form: _CompleteOnboardingForm } = completeOnboardingFetcher; const [searchParams] = useSearchParams(); const origin = searchParams.get("origin"); const fromMarketplaceContext = origin === "marketplace"; const availableProjects = onboardingData?.availableProjects || []; - const hasProjectSelected = onboardingData?.hasProjectSelected ?? false; + const _hasProjectSelected = onboardingData?.hasProjectSelected ?? false; const customEnvironments = onboardingData?.customEnvironments || []; const envVars = onboardingData?.environmentVariables || []; const existingVars = onboardingData?.existingVariables || {}; @@ -216,7 +216,7 @@ export function VercelOnboardingModal({ environmentId: string; displayName: string; } | null>(null); - const availableEnvSlugsForOnboarding = getAvailableEnvSlugs( + const _availableEnvSlugsForOnboarding = getAvailableEnvSlugs( hasStagingEnvironment, hasPreviewEnvironment ); @@ -445,7 +445,7 @@ export function VercelOnboardingModal({ const overlappingEnvVarsCount = enabledEnvVars.filter((v) => existingVars[v.key]).length; - const isSubmitting = navigation.state === "submitting" || navigation.state === "loading"; + const _isSubmitting = navigation.state === "submitting" || navigation.state === "loading"; const actionUrl = vercelResourcePath(organizationSlug, projectSlug, environmentSlug); @@ -620,7 +620,7 @@ export function VercelOnboardingModal({ gitHubAppInstallations.length, ]); - const handleFinishOnboarding = useCallback( + const _handleFinishOnboarding = useCallback( (e: React.FormEvent) => { e.preventDefault(); const form = e.currentTarget; diff --git a/apps/webapp/app/components/logs/LogDetailView.tsx b/apps/webapp/app/components/logs/LogDetailView.tsx index a44d833054f..01db46483d2 100644 --- a/apps/webapp/app/components/logs/LogDetailView.tsx +++ b/apps/webapp/app/components/logs/LogDetailView.tsx @@ -1,7 +1,7 @@ -import { XMarkIcon } from "@heroicons/react/20/solid"; import type { TaskRunStatus } from "@trigger.dev/database"; import { useEffect, useState } from "react"; import { useTypedFetcher } from "remix-typedjson"; +import { ExitIcon } from "~/assets/icons/ExitIcon"; import { Button, LinkButton } from "~/components/primitives/Buttons"; import { CopyableText } from "~/components/primitives/CopyableText"; import { DateTimeAccurate } from "~/components/primitives/DateTime"; @@ -20,11 +20,8 @@ import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import type { LogEntry } from "~/presenters/v3/LogsListPresenter.server"; import type { loader as logDetailLoader } from "~/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs.$logId"; -import { cn } from "~/utils/cn"; -import { getLevelColor } from "~/utils/logUtils"; import { v3RunSpanPath } from "~/utils/pathBuilder"; import { LogLevel } from "./LogLevel"; -import { ExitIcon } from "~/assets/icons/ExitIcon"; type LogDetailViewProps = { logId: string; // If we have the log entry from the list, we can display it immediately diff --git a/apps/webapp/app/components/logs/LogsTable.tsx b/apps/webapp/app/components/logs/LogsTable.tsx index ed8e6793e5f..8593670f8e5 100644 --- a/apps/webapp/app/components/logs/LogsTable.tsx +++ b/apps/webapp/app/components/logs/LogsTable.tsx @@ -1,20 +1,18 @@ -import { ArrowPathIcon, ArrowTopRightOnSquareIcon } from "@heroicons/react/20/solid"; -import { Link } from "@remix-run/react"; +import { ArrowPathIcon } from "@heroicons/react/20/solid"; import { useEffect, useRef, useState } from "react"; -import { cn } from "~/utils/cn"; +import { RunsIcon } from "~/assets/icons/RunsIcon"; +import { LogLevelTooltipInfo } from "~/components/LogLevelTooltipInfo"; import { Button, LinkButton } from "~/components/primitives/Buttons"; import { useEnvironment } from "~/hooks/useEnvironment"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import type { LogEntry } from "~/presenters/v3/LogsListPresenter.server"; +import { cn } from "~/utils/cn"; import { highlightSearchText } from "~/utils/logUtils"; import { v3RunSpanPath } from "~/utils/pathBuilder"; import { DateTimeAccurate } from "../primitives/DateTime"; import { Paragraph } from "../primitives/Paragraph"; import { Spinner } from "../primitives/Spinner"; -import { LogLevel } from "./LogLevel"; -import { TruncatedCopyableValue } from "../primitives/TruncatedCopyableValue"; -import { LogLevelTooltipInfo } from "~/components/LogLevelTooltipInfo"; import { Table, TableBlankRow, @@ -26,7 +24,7 @@ import { TableRow, type TableVariant, } from "../primitives/Table"; -import { RunsIcon } from "~/assets/icons/RunsIcon"; +import { LogLevel } from "./LogLevel"; type LogsTableProps = { logs: LogEntry[]; diff --git a/apps/webapp/app/components/logs/LogsTaskFilter.tsx b/apps/webapp/app/components/logs/LogsTaskFilter.tsx index 584ad943f6f..a2173c7560c 100644 --- a/apps/webapp/app/components/logs/LogsTaskFilter.tsx +++ b/apps/webapp/app/components/logs/LogsTaskFilter.tsx @@ -31,7 +31,7 @@ interface LogsTaskFilterProps { } export function LogsTaskFilter({ possibleTasks }: LogsTaskFilterProps) { - const { values, replace, del } = useSearchParams(); + const { values, replace: _replace, del } = useSearchParams(); const selectedTasks = values("tasks"); if (selectedTasks.length === 0 || selectedTasks.every((v) => v === "")) { diff --git a/apps/webapp/app/components/metrics/ModelsFilter.tsx b/apps/webapp/app/components/metrics/ModelsFilter.tsx index 3660f66494c..7803c5a8fdf 100644 --- a/apps/webapp/app/components/metrics/ModelsFilter.tsx +++ b/apps/webapp/app/components/metrics/ModelsFilter.tsx @@ -54,7 +54,7 @@ function modelIcon(system: string, model: string): ReactNode { } export function ModelsFilter({ possibleModels }: ModelsFilterProps) { - const { values, replace, del } = useSearchParams(); + const { values, replace: _replace, del } = useSearchParams(); const selectedModels = values("models"); if (selectedModels.length === 0 || selectedModels.every((v) => v === "")) { diff --git a/apps/webapp/app/components/metrics/OperationsFilter.tsx b/apps/webapp/app/components/metrics/OperationsFilter.tsx index 5546aa49e5a..0b46c0497fc 100644 --- a/apps/webapp/app/components/metrics/OperationsFilter.tsx +++ b/apps/webapp/app/components/metrics/OperationsFilter.tsx @@ -31,7 +31,7 @@ function formatOperation(op: string): string { } export function OperationsFilter({ possibleOperations }: OperationsFilterProps) { - const { values, replace, del } = useSearchParams(); + const { values, replace: _replace, del } = useSearchParams(); const selectedOperations = values("operations"); if (selectedOperations.length === 0 || selectedOperations.every((v) => v === "")) { diff --git a/apps/webapp/app/components/metrics/PromptsFilter.tsx b/apps/webapp/app/components/metrics/PromptsFilter.tsx index dca158ce60e..a6f4ee19bd9 100644 --- a/apps/webapp/app/components/metrics/PromptsFilter.tsx +++ b/apps/webapp/app/components/metrics/PromptsFilter.tsx @@ -20,7 +20,7 @@ interface PromptsFilterProps { } export function PromptsFilter({ possiblePrompts }: PromptsFilterProps) { - const { values, replace, del } = useSearchParams(); + const { values, replace: _replace, del } = useSearchParams(); const selectedPrompts = values("prompts"); if (selectedPrompts.length === 0 || selectedPrompts.every((v) => v === "")) { diff --git a/apps/webapp/app/components/metrics/ProvidersFilter.tsx b/apps/webapp/app/components/metrics/ProvidersFilter.tsx index 6cfe28dc228..cded069b5ab 100644 --- a/apps/webapp/app/components/metrics/ProvidersFilter.tsx +++ b/apps/webapp/app/components/metrics/ProvidersFilter.tsx @@ -20,7 +20,7 @@ interface ProvidersFilterProps { } export function ProvidersFilter({ possibleProviders }: ProvidersFilterProps) { - const { values, replace, del } = useSearchParams(); + const { values, replace: _replace, del } = useSearchParams(); const selectedProviders = values("providers"); if (selectedProviders.length === 0 || selectedProviders.every((v) => v === "")) { diff --git a/apps/webapp/app/components/metrics/QueuesFilter.tsx b/apps/webapp/app/components/metrics/QueuesFilter.tsx index f3aac782bf0..06165b6f4f8 100644 --- a/apps/webapp/app/components/metrics/QueuesFilter.tsx +++ b/apps/webapp/app/components/metrics/QueuesFilter.tsx @@ -25,7 +25,7 @@ import { appliedSummary, FilterMenuProvider } from "~/components/runs/v3/SharedF const shortcut = { key: "q" }; export function QueuesFilter() { - const { values, replace, del } = useSearchParams(); + const { values, replace: _replace, del } = useSearchParams(); const selectedQueues = values("queues"); if (selectedQueues.length === 0 || selectedQueues.every((v) => v === "")) { diff --git a/apps/webapp/app/components/navigation/HelpAndFeedbackPopover.tsx b/apps/webapp/app/components/navigation/HelpAndFeedbackPopover.tsx index 2eaa85dd81b..4264906d22d 100644 --- a/apps/webapp/app/components/navigation/HelpAndFeedbackPopover.tsx +++ b/apps/webapp/app/components/navigation/HelpAndFeedbackPopover.tsx @@ -1,31 +1,24 @@ -import { ArrowUpRightIcon, CalendarDaysIcon } from "@heroicons/react/20/solid"; +import { ArrowUpRightIcon } from "@heroicons/react/20/solid"; +import { motion } from "framer-motion"; +import { Fragment, useState } from "react"; import { BookIcon } from "~/assets/icons/BookIcon"; import { BulbIcon } from "~/assets/icons/BulbIcon"; import { EnvelopeIcon } from "~/assets/icons/EnvelopeIcon"; +import { QuestionMarkIcon } from "~/assets/icons/QuestionMarkIcon"; import { RadarPulseIcon } from "~/assets/icons/RadarPulseIcon"; import { StarIcon } from "~/assets/icons/StarIcon"; -import { QuestionMarkIcon } from "~/assets/icons/QuestionMarkIcon"; -import { cn } from "~/utils/cn"; -import { DiscordIcon, SlackIcon } from "@trigger.dev/companyicons"; -import { Fragment, useState } from "react"; -import { useRecentChangelogs } from "~/routes/resources.platform-changelogs"; -import { motion } from "framer-motion"; -import { useCurrentPlan } from "~/routes/_app.orgs.$organizationSlug/route"; import { useShortcutKeys } from "~/hooks/useShortcutKeys"; +import { useCurrentPlan } from "~/routes/_app.orgs.$organizationSlug/route"; +import { useRecentChangelogs } from "~/routes/resources.platform-changelogs"; +import { cn } from "~/utils/cn"; import { Feedback } from "../Feedback"; import { Shortcuts } from "../Shortcuts"; -import { StepContentContainer } from "../StepContentContainer"; import { Button } from "../primitives/Buttons"; -import { ClipboardField } from "../primitives/ClipboardField"; -import { Dialog, DialogContent, DialogHeader, DialogTrigger } from "../primitives/Dialog"; -import { Icon } from "../primitives/Icon"; import { Paragraph } from "../primitives/Paragraph"; import { Popover, PopoverContent, PopoverTrigger } from "../primitives/Popover"; -import { SimpleTooltip } from "../primitives/Tooltip"; import { ShortcutKey } from "../primitives/ShortcutKey"; -import { StepNumber } from "../primitives/StepNumber"; +import { SimpleTooltip } from "../primitives/Tooltip"; import { SideMenuItem } from "./SideMenuItem"; -import { Badge } from "../primitives/Badge"; export function HelpAndFeedback({ disableShortcut = false, @@ -39,7 +32,7 @@ export function HelpAndFeedback({ projectId?: string; }) { const [isHelpMenuOpen, setHelpMenuOpen] = useState(false); - const currentPlan = useCurrentPlan(); + const _currentPlan = useCurrentPlan(); const { changelogs } = useRecentChangelogs(organizationId, projectId); useShortcutKeys({ diff --git a/apps/webapp/app/components/navigation/SideMenu.tsx b/apps/webapp/app/components/navigation/SideMenu.tsx index 619d2477a4a..395932f39e2 100644 --- a/apps/webapp/app/components/navigation/SideMenu.tsx +++ b/apps/webapp/app/components/navigation/SideMenu.tsx @@ -5,7 +5,6 @@ import { PencilSquareIcon, } from "@heroicons/react/24/outline"; import { Link, useFetcher, useNavigation } from "@remix-run/react"; -import { BugIcon } from "~/assets/icons/BugIcon"; import { LayoutGroup, motion } from "framer-motion"; import { type ReactNode, useCallback, useEffect, useRef, useState } from "react"; import simplur from "simplur"; @@ -14,31 +13,31 @@ import { AIPenIcon } from "~/assets/icons/AIPenIcon"; import { ArrowLeftRightIcon } from "~/assets/icons/ArrowLeftRightIcon"; import { ArrowRightSquareIcon } from "~/assets/icons/ArrowRightSquareIcon"; import { AvatarCircleIcon } from "~/assets/icons/AvatarCircleIcon"; -import { HomeIcon } from "~/assets/icons/HomeIcon"; -import { ConcurrencyIcon } from "~/assets/icons/ConcurrencyIcon"; import { BatchesIcon } from "~/assets/icons/BatchesIcon"; +import { BellIcon } from "~/assets/icons/BellIcon"; import { Box3DIcon } from "~/assets/icons/Box3DIcon"; +import { BugIcon } from "~/assets/icons/BugIcon"; import { ChartBarIcon } from "~/assets/icons/ChartBarIcon"; +import { CodeSquareIcon } from "~/assets/icons/CodeSquareIcon"; +import { ConcurrencyIcon } from "~/assets/icons/ConcurrencyIcon"; import { DeploymentsIcon } from "~/assets/icons/DeploymentsIcon"; +import { DialIcon } from "~/assets/icons/DialIcon"; +import { DropdownIcon } from "~/assets/icons/DropdownIcon"; +import { BranchEnvironmentIconSmall } from "~/assets/icons/EnvironmentIcons"; import { FolderClosedIcon } from "~/assets/icons/FolderClosedIcon"; import { FolderOpenIcon } from "~/assets/icons/FolderOpenIcon"; -import { IDIcon } from "~/assets/icons/IDIcon"; -import { DialIcon } from "~/assets/icons/DialIcon"; import { GlobeLinesIcon } from "~/assets/icons/GlobeLinesIcon"; +import { HomeIcon } from "~/assets/icons/HomeIcon"; +import { IDIcon } from "~/assets/icons/IDIcon"; import { IntegrationsIcon } from "~/assets/icons/IntegrationsIcon"; import { KeyIcon } from "~/assets/icons/KeyIcon"; -import { DropdownIcon } from "~/assets/icons/DropdownIcon"; -import { BranchEnvironmentIconSmall } from "~/assets/icons/EnvironmentIcons"; import { ListCheckedIcon } from "~/assets/icons/ListCheckedIcon"; import { LogsIcon } from "~/assets/icons/LogsIcon"; import { PlusIcon } from "~/assets/icons/PlusIcon"; -import { CodeSquareIcon } from "~/assets/icons/CodeSquareIcon"; import { QueuesIcon } from "~/assets/icons/QueuesIcon"; -import { SlidersIcon } from "~/assets/icons/SlidersIcon"; import { RunsIcon } from "~/assets/icons/RunsIcon"; -import { TaskIcon } from "~/assets/icons/TaskIcon"; +import { SlidersIcon } from "~/assets/icons/SlidersIcon"; import { TasksIcon } from "~/assets/icons/TasksIcon"; -import { BellIcon } from "~/assets/icons/BellIcon"; import { UsageIcon } from "~/assets/icons/UsageIcon"; import { WaitpointTokenIcon } from "~/assets/icons/WaitpointTokenIcon"; import { Avatar } from "~/components/primitives/Avatar"; @@ -53,7 +52,6 @@ import { type UserWithDashboardPreferences } from "~/models/user.server"; import { useCurrentPlan } from "~/routes/_app.orgs.$organizationSlug/route"; import { type FeedbackType } from "~/routes/resources.feedback"; import { IncidentStatusPanel, useIncidentStatus } from "~/routes/resources.incidents"; -import { NotificationPanel } from "./NotificationPanel"; import { cn } from "~/utils/cn"; import { accountPath, @@ -72,29 +70,29 @@ import { v3ApiKeysPath, v3BatchesPath, v3BillingPath, - v3DashboardsLandingPath, v3BulkActionsPath, + v3DashboardsLandingPath, v3DeploymentsPath, v3EnvironmentPath, v3EnvironmentVariablesPath, v3ErrorsPath, v3LogsPath, - v3PromptsPath, v3ModelsPath, v3ProjectAlertsPath, v3ProjectPath, v3ProjectSettingsGeneralPath, v3ProjectSettingsIntegrationsPath, + v3PromptsPath, v3QueuesPath, v3RunsPath, v3SessionsPath, v3UsagePath, v3WaitpointTokensPath, } from "~/utils/pathBuilder"; -import { AlphaBadge, NewBadge } from "../FeatureBadges"; import { AskAI } from "../AskAI"; import { FreePlanUsage } from "../billing/FreePlanUsage"; import { ConnectionIcon, DevPresencePanel, useDevPresence } from "../DevPresence"; +import { AlphaBadge, NewBadge } from "../FeatureBadges"; import { ImpersonationBanner } from "../ImpersonationBanner"; import { Button, ButtonContent, LinkButton } from "../primitives/Buttons"; import { Dialog, DialogTrigger } from "../primitives/Dialog"; @@ -114,10 +112,10 @@ import { CreateDashboardButton } from "./DashboardDialogs"; import { DashboardList } from "./DashboardList"; import { EnvironmentSelector } from "./EnvironmentSelector"; import { HelpAndFeedback } from "./HelpAndFeedbackPopover"; +import { NotificationPanel } from "./NotificationPanel"; import { SideMenuHeader } from "./SideMenuHeader"; import { SideMenuItem } from "./SideMenuItem"; import { SideMenuSection } from "./SideMenuSection"; -import { TreeConnectorBranch, TreeConnectorEnd } from "./TreeConnectors"; import { type SideMenuSectionId } from "./sideMenuTypes"; /** Get the collapsed state for a specific side menu section from user preferences */ diff --git a/apps/webapp/app/components/primitives/Callout.tsx b/apps/webapp/app/components/primitives/Callout.tsx index da2d2ea760e..d3b7a0892b8 100644 --- a/apps/webapp/app/components/primitives/Callout.tsx +++ b/apps/webapp/app/components/primitives/Callout.tsx @@ -8,7 +8,6 @@ import { import { ArrowTopRightOnSquareIcon, BookOpenIcon, - ChartBarIcon, CheckCircleIcon, ChevronRightIcon, } from "@heroicons/react/24/solid"; diff --git a/apps/webapp/app/components/primitives/DateField.tsx b/apps/webapp/app/components/primitives/DateField.tsx index 1fd6040f86a..a30ce91b6b1 100644 --- a/apps/webapp/app/components/primitives/DateField.tsx +++ b/apps/webapp/app/components/primitives/DateField.tsx @@ -96,7 +96,7 @@ export function DateField({ }, [defaultValue]); const ref = useRef(null); - const { labelProps, fieldProps } = useDateField( + const { labelProps: _labelProps, fieldProps } = useDateField( { label, }, diff --git a/apps/webapp/app/components/primitives/DetailCell.tsx b/apps/webapp/app/components/primitives/DetailCell.tsx index 2ff4040b546..59b9bb8fae5 100644 --- a/apps/webapp/app/components/primitives/DetailCell.tsx +++ b/apps/webapp/app/components/primitives/DetailCell.tsx @@ -1,5 +1,6 @@ import { cn } from "~/utils/cn"; -import { Icon, IconInBox, RenderIcon } from "./Icon"; +import type { RenderIcon } from "./Icon"; +import { Icon, IconInBox } from "./Icon"; import { Paragraph } from "./Paragraph"; const variations = { diff --git a/apps/webapp/app/components/primitives/Label.tsx b/apps/webapp/app/components/primitives/Label.tsx index a9f15f68e34..7213d52205c 100644 --- a/apps/webapp/app/components/primitives/Label.tsx +++ b/apps/webapp/app/components/primitives/Label.tsx @@ -1,6 +1,6 @@ import * as React from "react"; import { cn } from "~/utils/cn"; -import { InfoIconTooltip, SimpleTooltip } from "./Tooltip"; +import { InfoIconTooltip } from "./Tooltip"; const variants = { small: { diff --git a/apps/webapp/app/components/primitives/LocaleProvider.tsx b/apps/webapp/app/components/primitives/LocaleProvider.tsx index b48ee62269c..cb27a03a9f8 100644 --- a/apps/webapp/app/components/primitives/LocaleProvider.tsx +++ b/apps/webapp/app/components/primitives/LocaleProvider.tsx @@ -1,6 +1,5 @@ import type { ReactNode } from "react"; -import { useContext } from "react"; -import { createContext } from "react"; +import { createContext, useContext } from "react"; type LocaleContext = { locales: string[]; diff --git a/apps/webapp/app/components/primitives/OperatingSystemProvider.tsx b/apps/webapp/app/components/primitives/OperatingSystemProvider.tsx index c59be8b160b..7f7f8fc57b6 100644 --- a/apps/webapp/app/components/primitives/OperatingSystemProvider.tsx +++ b/apps/webapp/app/components/primitives/OperatingSystemProvider.tsx @@ -1,6 +1,5 @@ import type { ReactNode } from "react"; -import { useContext } from "react"; -import { createContext } from "react"; +import { createContext, useContext } from "react"; export type OperatingSystemPlatform = "mac" | "windows"; diff --git a/apps/webapp/app/components/primitives/Popover.tsx b/apps/webapp/app/components/primitives/Popover.tsx index 623adbc4bb9..0d88ad968c1 100644 --- a/apps/webapp/app/components/primitives/Popover.tsx +++ b/apps/webapp/app/components/primitives/Popover.tsx @@ -3,15 +3,15 @@ import { CheckIcon } from "@heroicons/react/20/solid"; import { EllipsisVerticalIcon } from "@heroicons/react/24/solid"; import * as PopoverPrimitive from "@radix-ui/react-popover"; +import { Link } from "@remix-run/react"; import * as React from "react"; import { DropdownIcon } from "~/assets/icons/DropdownIcon"; -import { Link } from "@remix-run/react"; import * as useShortcutKeys from "~/hooks/useShortcutKeys"; import { cn } from "~/utils/cn"; -import { type ButtonContentPropsType, Button, ButtonContent } from "./Buttons"; +import { ButtonContent, type ButtonContentPropsType } from "./Buttons"; +import { type RenderIcon } from "./Icon"; import { Paragraph, type ParagraphVariant } from "./Paragraph"; import { ShortcutKey } from "./ShortcutKey"; -import { type RenderIcon } from "./Icon"; const Popover = PopoverPrimitive.Root; const PopoverTrigger = PopoverPrimitive.Trigger; diff --git a/apps/webapp/app/components/primitives/PropertyTable.tsx b/apps/webapp/app/components/primitives/PropertyTable.tsx index 4f1de5ad7ab..6f3e203ade2 100644 --- a/apps/webapp/app/components/primitives/PropertyTable.tsx +++ b/apps/webapp/app/components/primitives/PropertyTable.tsx @@ -1,5 +1,4 @@ import { type ReactNode } from "react"; -import { Paragraph } from "./Paragraph"; import { cn } from "~/utils/cn"; type ChildrenClassName = { @@ -24,8 +23,8 @@ function PropertyValue({ children, className }: ChildrenClassName) { } export { - PropertyTable as Table, PropertyItem as Item, PropertyLabel as Label, + PropertyTable as Table, PropertyValue as Value, }; diff --git a/apps/webapp/app/components/primitives/SegmentedControl.tsx b/apps/webapp/app/components/primitives/SegmentedControl.tsx index 98561e41222..4001ec6d3b8 100644 --- a/apps/webapp/app/components/primitives/SegmentedControl.tsx +++ b/apps/webapp/app/components/primitives/SegmentedControl.tsx @@ -88,7 +88,7 @@ export default function SegmentedControl({ onChange, }: SegmentedControlProps) { const variantStyle = variants[variant]; - const isPrimary = variant.startsWith("primary"); + const _isPrimary = variant.startsWith("primary"); return (
(undefined); -function useTimelineMousePosition() { - return useContext(TimelineMousePositionContext); -} - +const _TimelineMousePositionContext = createContext(undefined); export type RootProps = { /** If the timeline doesn't start at zero. Doesn't impact layout but gives you the times back */ startMs?: number; diff --git a/apps/webapp/app/components/primitives/TooltipPortal.tsx b/apps/webapp/app/components/primitives/TooltipPortal.tsx index a17247bd938..e389a9e5e72 100644 --- a/apps/webapp/app/components/primitives/TooltipPortal.tsx +++ b/apps/webapp/app/components/primitives/TooltipPortal.tsx @@ -1,5 +1,6 @@ import type { VirtualElement as IVirtualElement } from "@popperjs/core"; -import { ReactNode, useEffect, useState } from "react"; +import type { ReactNode } from "react"; +import { useEffect, useState } from "react"; import { createPortal } from "react-dom"; import { usePopper } from "react-popper"; import { useEvent } from "react-use"; diff --git a/apps/webapp/app/components/primitives/TreeView/TreeView.tsx b/apps/webapp/app/components/primitives/TreeView/TreeView.tsx index 55de3e4f55e..f6b5ad85d70 100644 --- a/apps/webapp/app/components/primitives/TreeView/TreeView.tsx +++ b/apps/webapp/app/components/primitives/TreeView/TreeView.tsx @@ -1,16 +1,11 @@ -import { VirtualItem, Virtualizer, useVirtualizer } from "@tanstack/react-virtual"; +import type { VirtualItem, Virtualizer } from "@tanstack/react-virtual"; +import { useVirtualizer } from "@tanstack/react-virtual"; import { motion } from "framer-motion"; -import { - MutableRefObject, - RefObject, - useCallback, - useEffect, - useMemo, - useReducer, - useRef, -} from "react"; +import type { MutableRefObject, RefObject } from "react"; +import { useCallback, useEffect, useMemo, useReducer, useRef } from "react"; import { cn } from "~/utils/cn"; -import { NodeState, NodesState, reducer } from "./reducer"; +import type { NodeState, NodesState } from "./reducer"; +import { reducer } from "./reducer"; import { concreteStateFromInput, selectedIdFromState } from "./utils"; export type TreeViewProps = { diff --git a/apps/webapp/app/components/primitives/TreeView/reducer.ts b/apps/webapp/app/components/primitives/TreeView/reducer.ts index bcfe643f3d3..2c3bbf134e7 100644 --- a/apps/webapp/app/components/primitives/TreeView/reducer.ts +++ b/apps/webapp/app/components/primitives/TreeView/reducer.ts @@ -1,5 +1,5 @@ import assertNever from "assert-never"; -import { Filter, FlatTree } from "./TreeView"; +import type { Filter, FlatTree } from "./TreeView"; import { applyFilterToState, applyVisibility, diff --git a/apps/webapp/app/components/primitives/TreeView/utils.ts b/apps/webapp/app/components/primitives/TreeView/utils.ts index 7176df480e5..95fc1b75614 100644 --- a/apps/webapp/app/components/primitives/TreeView/utils.ts +++ b/apps/webapp/app/components/primitives/TreeView/utils.ts @@ -1,5 +1,5 @@ -import { Filter, FlatTree, FlatTreeItem } from "./TreeView"; -import { Changes, NodeState, NodesState, TreeState } from "./reducer"; +import type { Filter, FlatTree } from "./TreeView"; +import type { Changes, NodeState, NodesState, TreeState } from "./reducer"; type PartialNodeState = Record>; @@ -92,7 +92,7 @@ export function selectedIdFromState(state: NodesState): string | undefined { return selected?.[0]; } -export function applyFilterToState({ +export function applyFilterToState<_TData>({ tree, nodes, filter, @@ -223,11 +223,6 @@ export function lastVisibleNode(tree: FlatTree, nodes: NodesState) { .reverse() .find((node) => nodes[node.id].visible === true); } - -function areSetsEqual(a: Set, b: Set): boolean { - return a.size === b.size && [...a].every((value) => b.has(value)); -} - function difference(a: Set, b: Set): Set { return new Set([...a].filter((x) => !b.has(x))); } @@ -248,7 +243,7 @@ export function generateChanges(a: NodesState, b: NodesState): Changes { const collapsedIdsA = new Set(collapsedIdsFromState(a)); const collapsedIdsB = new Set(collapsedIdsFromState(b)); - const collapsedChanges = [...difference(collapsedIdsA, collapsedIdsB)]; + const _collapsedChanges = [...difference(collapsedIdsA, collapsedIdsB)]; return { selectedId: selectedIdA !== selectedIdB ? selectedIdB : undefined, diff --git a/apps/webapp/app/components/primitives/charts/ChartBar.tsx b/apps/webapp/app/components/primitives/charts/ChartBar.tsx index 53c20fbfde9..ef9daeb532c 100644 --- a/apps/webapp/app/components/primitives/charts/ChartBar.tsx +++ b/apps/webapp/app/components/primitives/charts/ChartBar.tsx @@ -101,7 +101,7 @@ export function ChartBarRenderer({ config, data, dataKey, - dataKeys, + dataKeys: _dataKeys, visibleSeries, state, highlight, diff --git a/apps/webapp/app/components/primitives/charts/ChartLine.tsx b/apps/webapp/app/components/primitives/charts/ChartLine.tsx index e93a1bf35a9..1edd5a2357e 100644 --- a/apps/webapp/app/components/primitives/charts/ChartLine.tsx +++ b/apps/webapp/app/components/primitives/charts/ChartLine.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { Area, AreaChart, @@ -10,19 +9,13 @@ import { type XAxisProps, type YAxisProps, } from "recharts"; -import { - type ChartConfig, - ChartTooltip, - ChartTooltipContent, - type ChartState, -} from "~/components/primitives/charts/Chart"; -import { ChartLineLoading, ChartLineNoData, ChartLineInvalid } from "./ChartLoading"; +import { ChartTooltip, ChartTooltipContent } from "~/components/primitives/charts/Chart"; +import { CHART_MARGIN } from "./ChartBar"; import { useChartContext } from "./ChartContext"; -import { ChartRoot, useHasNoData } from "./ChartRoot"; +import { ChartLineInvalid, ChartLineLoading, ChartLineNoData } from "./ChartLoading"; +import { useHasNoData } from "./ChartRoot"; import { defaultYAxisTickFormatter, useYAxisWidth } from "./useYAxisWidth"; -import { CHART_MARGIN } from "./ChartBar"; // Legend is now rendered by ChartRoot outside the chart container -import type { ZoomRange } from "./hooks/useZoomSelection"; type CurveType = | "basis" @@ -87,7 +80,7 @@ export function ChartLineRenderer({ config, data, dataKey, - dataKeys, + dataKeys: _dataKeys, visibleSeries, state, highlight, diff --git a/apps/webapp/app/components/primitives/charts/ChartRoot.tsx b/apps/webapp/app/components/primitives/charts/ChartRoot.tsx index c3616e5de62..5b2b1b6cefa 100644 --- a/apps/webapp/app/components/primitives/charts/ChartRoot.tsx +++ b/apps/webapp/app/components/primitives/charts/ChartRoot.tsx @@ -206,7 +206,7 @@ function ChartRootInner({ * Useful for rendering "no data" states. */ export function useHasNoData(): boolean { - const { data, dataKey, dataKeys } = useChartContext(); + const { data, dataKey: _dataKey, dataKeys } = useChartContext(); return useMemo(() => { if (data.length === 0) return true; diff --git a/apps/webapp/app/components/primitives/charts/ChartZoom.tsx b/apps/webapp/app/components/primitives/charts/ChartZoom.tsx index 4b2e921630b..3f797fc872d 100644 --- a/apps/webapp/app/components/primitives/charts/ChartZoom.tsx +++ b/apps/webapp/app/components/primitives/charts/ChartZoom.tsx @@ -36,8 +36,8 @@ export type ChartZoomProps = { * ``` */ export function ChartZoom({ syncWithDateRange = false, minDataPoints = 3 }: ChartZoomProps) { - const { zoom, data, dataKey, onZoomChange } = useChartContext(); - const globalDateRange = useDateRange(); + const { zoom, data: _data, dataKey: _dataKey, onZoomChange: _onZoomChange } = useChartContext(); + const _globalDateRange = useDateRange(); if (!zoom) { console.warn("ChartZoom: zoom is not enabled. Add enableZoom to Chart.Root."); diff --git a/apps/webapp/app/components/query/QueryEditor.tsx b/apps/webapp/app/components/query/QueryEditor.tsx index 5365b1d6ab4..8520d2a7a0b 100644 --- a/apps/webapp/app/components/query/QueryEditor.tsx +++ b/apps/webapp/app/components/query/QueryEditor.tsx @@ -1,11 +1,4 @@ -import { - ArrowDownTrayIcon, - BookmarkIcon, - CalendarIcon, - ClipboardIcon, - PencilIcon, - PencilSquareIcon, -} from "@heroicons/react/20/solid"; +import { ArrowDownTrayIcon, CalendarIcon, PencilSquareIcon } from "@heroicons/react/20/solid"; import type { OutputColumnMetadata } from "@internal/clickhouse"; import { DialogClose } from "@radix-ui/react-dialog"; import { useFetcher } from "@remix-run/react"; @@ -27,7 +20,6 @@ import simplur from "simplur"; import { AISparkleIcon } from "~/assets/icons/AISparkleIcon"; import { ChartConfigPanel, defaultChartConfig } from "~/components/code/ChartConfigPanel"; import { autoFormatSQL, TSQLEditor } from "~/components/code/TSQLEditor"; -import { EnvironmentLabel } from "~/components/environments/EnvironmentLabel"; import { PageBody, PageContainer } from "~/components/layout/AppLayout"; import { QueryWidget, diff --git a/apps/webapp/app/components/run/RunTimeline.tsx b/apps/webapp/app/components/run/RunTimeline.tsx index 37186e0f31e..839d94417c6 100644 --- a/apps/webapp/app/components/run/RunTimeline.tsx +++ b/apps/webapp/app/components/run/RunTimeline.tsx @@ -1,17 +1,14 @@ import { ClockIcon } from "@heroicons/react/20/solid"; -import type { SpanEvent } from "@trigger.dev/core/v3"; -import { - formatDuration, - millisecondsToNanoseconds, - nanosecondsToMilliseconds, -} from "@trigger.dev/core/v3/utils/durations"; -import { Fragment, ReactNode, useState } from "react"; +import { formatDuration, nanosecondsToMilliseconds } from "@trigger.dev/core/v3/utils/durations"; +import type { ReactNode } from "react"; +import { Fragment } from "react"; +import tileBgPath from "~/assets/images/error-banner-tile@2x.png"; import { cn } from "~/utils/cn"; +import type { TimelineSpanEvent } from "~/utils/timelineSpanEvents"; +import { getHelpTextForEvent } from "~/utils/timelineSpanEvents"; import { DateTime, DateTimeAccurate } from "../primitives/DateTime"; -import { LiveTimer } from "../runs/v3/LiveTimer"; -import tileBgPath from "~/assets/images/error-banner-tile@2x.png"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../primitives/Tooltip"; -import { getHelpTextForEvent, TimelineSpanEvent } from "~/utils/timelineSpanEvents"; +import { LiveTimer } from "../runs/v3/LiveTimer"; // Types for the RunTimeline component export type TimelineEventState = "complete" | "error" | "inprogress" | "delayed"; diff --git a/apps/webapp/app/components/runs/v3/BatchFilters.tsx b/apps/webapp/app/components/runs/v3/BatchFilters.tsx index 2c2f15b4584..cb7e7c13ad0 100644 --- a/apps/webapp/app/components/runs/v3/BatchFilters.tsx +++ b/apps/webapp/app/components/runs/v3/BatchFilters.tsx @@ -1,15 +1,10 @@ import * as Ariakit from "@ariakit/react"; -import { - CalendarIcon, - CpuChipIcon, - Squares2X2Icon, - TrashIcon, - XMarkIcon, -} from "@heroicons/react/20/solid"; +import { Squares2X2Icon, XMarkIcon } from "@heroicons/react/20/solid"; import { Form } from "@remix-run/react"; -import type { BatchTaskRunStatus, RuntimeEnvironment } from "@trigger.dev/database"; -import { type ReactNode, useCallback, useRef, useState } from "react"; +import type { BatchTaskRunStatus } from "@trigger.dev/database"; +import { type ReactNode, useRef } from "react"; import { z } from "zod"; +import { StatusIcon } from "~/assets/icons/StatusIcon"; import { AppliedFilter } from "~/components/primitives/AppliedFilter"; import { Paragraph } from "~/components/primitives/Paragraph"; import { @@ -37,13 +32,12 @@ import { descriptionForBatchStatus, } from "./BatchStatus"; import { - TimeFilter, appliedSummary, FilterMenuProvider, IdFilterDropdown, type IdFilterDropdownProps, + TimeFilter, } from "./SharedFilters"; -import { StatusIcon } from "~/assets/icons/StatusIcon"; export const BatchStatus = z.enum(allBatchStatuses); diff --git a/apps/webapp/app/components/runs/v3/ReplayRunDialog.tsx b/apps/webapp/app/components/runs/v3/ReplayRunDialog.tsx index 827452e4d04..d165afcb0a7 100644 --- a/apps/webapp/app/components/runs/v3/ReplayRunDialog.tsx +++ b/apps/webapp/app/components/runs/v3/ReplayRunDialog.tsx @@ -1,12 +1,15 @@ import { getFormProps, getInputProps, getSelectProps, useForm } from "@conform-to/react"; import { parseWithZod } from "@conform-to/zod"; +import { RectangleStackIcon } from "@heroicons/react/20/solid"; import { DialogClose } from "@radix-ui/react-dialog"; import { Form, useActionData, useNavigation, useParams, useSubmit } from "@remix-run/react"; +import { MachinePresetName } from "@trigger.dev/core/v3"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { type UseDataFunctionReturn, useTypedFetcher } from "remix-typedjson"; import { TaskIcon } from "~/assets/icons/TaskIcon"; import { JSONEditor } from "~/components/code/JSONEditor"; import { EnvironmentCombo } from "~/components/environments/EnvironmentLabel"; +import { Badge } from "~/components/primitives/Badge"; import { Button } from "~/components/primitives/Buttons"; import { DialogContent, DialogHeader } from "~/components/primitives/Dialog"; import { DurationPicker } from "~/components/primitives/DurationPicker"; @@ -17,7 +20,6 @@ import { Input } from "~/components/primitives/Input"; import { InputGroup } from "~/components/primitives/InputGroup"; import { Label } from "~/components/primitives/Label"; import { Paragraph } from "~/components/primitives/Paragraph"; -import { type loader as queuesLoader } from "~/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues"; import { ResizableHandle, ResizablePanel, @@ -27,15 +29,12 @@ import { Select, SelectItem } from "~/components/primitives/Select"; import { Spinner, SpinnerWhite } from "~/components/primitives/Spinner"; import { TabButton, TabContainer } from "~/components/primitives/Tabs"; import { TextLink } from "~/components/primitives/TextLink"; +import { InfoIconTooltip } from "~/components/primitives/Tooltip"; +import { type loader as queuesLoader } from "~/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues"; import { type loader } from "~/routes/resources.taskruns.$runParam.replay"; import { docsPath } from "~/utils/pathBuilder"; import { ReplayRunData } from "~/v3/replayTask"; -import { RectangleStackIcon } from "@heroicons/react/20/solid"; -import { Badge } from "~/components/primitives/Badge"; import { RunTagInput } from "./RunTagInput"; -import { MachinePresetName } from "@trigger.dev/core/v3"; -import { InfoIconTooltip } from "~/components/primitives/Tooltip"; -import { divide } from "effect/Duration"; type ReplayRunDialogProps = { runFriendlyId: string; @@ -202,8 +201,8 @@ function ReplayForm({ }); const { environment, - payload, - metadata, + payload: _payload, + metadata: _metadata, delaySeconds, ttlSeconds, idempotencyKey, diff --git a/apps/webapp/app/components/runs/v3/RunFilters.tsx b/apps/webapp/app/components/runs/v3/RunFilters.tsx index 6f504af5347..6917f07b104 100644 --- a/apps/webapp/app/components/runs/v3/RunFilters.tsx +++ b/apps/webapp/app/components/runs/v3/RunFilters.tsx @@ -15,7 +15,7 @@ import { IconRotateClockwise2, IconToggleLeft } from "@tabler/icons-react"; import { MachinePresetName } from "@trigger.dev/core/v3"; import type { BulkActionType, TaskRunStatus, TaskTriggerSource } from "@trigger.dev/database"; import { matchSorter } from "match-sorter"; -import { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { type ReactNode, useEffect, useMemo, useRef, useState } from "react"; import { z } from "zod"; import { BugIcon } from "~/assets/icons/BugIcon"; import { ClockIcon } from "~/assets/icons/ClockIcon"; @@ -45,6 +45,7 @@ import { SelectTrigger, shortcutFromIndex, } from "~/components/primitives/Select"; +import { ShortcutKey } from "~/components/primitives/ShortcutKey"; import { Spinner } from "~/components/primitives/Spinner"; import { Switch } from "~/components/primitives/Switch"; import { @@ -58,22 +59,21 @@ import { useEnvironment } from "~/hooks/useEnvironment"; import { useOptimisticLocation } from "~/hooks/useOptimisticLocation"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; +import { useRegions } from "~/hooks/useRegions"; import { useSearchParams } from "~/hooks/useSearchParam"; import { useShortcutKeys } from "~/hooks/useShortcutKeys"; -import { ShortcutKey } from "~/components/primitives/ShortcutKey"; import { type loader as tagsLoader } from "~/routes/resources.environments.$envId.runs.tags"; import { type loader as queuesLoader } from "~/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues"; -import { useRegions } from "~/hooks/useRegions"; -import { RegionLabel } from "./RegionLabel"; import { type loader as versionsLoader } from "~/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.versions"; import { Button } from "../../primitives/Buttons"; import { AIFilterInput } from "./AIFilterInput"; import { BulkActionTypeCombo } from "./BulkAction"; +import { RegionLabel } from "./RegionLabel"; import { - IdFilterDropdown, - type IdFilterDropdownProps, appliedSummary, FilterMenuProvider, + IdFilterDropdown, + type IdFilterDropdownProps, TimeFilter, timeFilters, } from "./SharedFilters"; @@ -956,7 +956,7 @@ function AppliedBulkActionsFilter({ bulkActions }: Pick action.id === bulkId); + const _action = bulkActions.find((action) => action.id === bulkId); return ( diff --git a/apps/webapp/app/components/runs/v3/SharedFilters.tsx b/apps/webapp/app/components/runs/v3/SharedFilters.tsx index b219ef7e9b7..17a84f711ae 100644 --- a/apps/webapp/app/components/runs/v3/SharedFilters.tsx +++ b/apps/webapp/app/components/runs/v3/SharedFilters.tsx @@ -17,7 +17,6 @@ import { Callout } from "~/components/primitives/Callout"; import { DateTime } from "~/components/primitives/DateTime"; import { DateTimePicker } from "~/components/primitives/DateTimePicker"; import { FormError } from "~/components/primitives/FormError"; -import { Header3 } from "~/components/primitives/Headers"; import { Input } from "~/components/primitives/Input"; import { Label } from "~/components/primitives/Label"; import { Paragraph } from "~/components/primitives/Paragraph"; diff --git a/apps/webapp/app/components/runs/v3/SpanEvents.tsx b/apps/webapp/app/components/runs/v3/SpanEvents.tsx index df99dc0ec1b..c79a147b86f 100644 --- a/apps/webapp/app/components/runs/v3/SpanEvents.tsx +++ b/apps/webapp/app/components/runs/v3/SpanEvents.tsx @@ -10,7 +10,7 @@ import { Feedback } from "~/components/Feedback"; import { Button } from "~/components/primitives/Buttons"; import { Callout } from "~/components/primitives/Callout"; import { DateTimeAccurate } from "~/components/primitives/DateTime"; -import { Header2, Header3 } from "~/components/primitives/Headers"; +import { Header3 } from "~/components/primitives/Headers"; import { Paragraph } from "~/components/primitives/Paragraph"; type SpanEventsProps = { diff --git a/apps/webapp/app/components/runs/v3/SpanTitle.tsx b/apps/webapp/app/components/runs/v3/SpanTitle.tsx index 074f20b22a9..2e0167cc832 100644 --- a/apps/webapp/app/components/runs/v3/SpanTitle.tsx +++ b/apps/webapp/app/components/runs/v3/SpanTitle.tsx @@ -1,5 +1,5 @@ import { ChevronRightIcon } from "@heroicons/react/20/solid"; -import { TaskEventStyle } from "@trigger.dev/core/v3"; +import type { TaskEventStyle } from "@trigger.dev/core/v3"; import type { TaskEventLevel } from "@trigger.dev/database"; import { Fragment } from "react"; import { cn } from "~/utils/cn"; diff --git a/apps/webapp/app/components/runs/v3/TaskPath.tsx b/apps/webapp/app/components/runs/v3/TaskPath.tsx index d8ae0168556..2ccb01c3688 100644 --- a/apps/webapp/app/components/runs/v3/TaskPath.tsx +++ b/apps/webapp/app/components/runs/v3/TaskPath.tsx @@ -1,4 +1,5 @@ -import { InlineCode, InlineCodeVariant } from "~/components/code/InlineCode"; +import type { InlineCodeVariant } from "~/components/code/InlineCode"; +import { InlineCode } from "~/components/code/InlineCode"; import { SpanCodePathAccessory } from "./SpanTitle"; import { cn } from "~/utils/cn"; diff --git a/apps/webapp/app/components/runs/v3/TaskRunAttemptStatus.tsx b/apps/webapp/app/components/runs/v3/TaskRunAttemptStatus.tsx index 8a1fd8687fc..e88eec52811 100644 --- a/apps/webapp/app/components/runs/v3/TaskRunAttemptStatus.tsx +++ b/apps/webapp/app/components/runs/v3/TaskRunAttemptStatus.tsx @@ -7,7 +7,7 @@ import { } from "@heroicons/react/20/solid"; import type { TaskRunAttemptStatus as TaskRunAttemptStatusType } from "@trigger.dev/database"; import assertNever from "assert-never"; -import { HourglassIcon, SnowflakeIcon } from "lucide-react"; +import { HourglassIcon } from "lucide-react"; import { Spinner } from "~/components/primitives/Spinner"; import { TaskRunAttemptStatus } from "~/database-types"; import { cn } from "~/utils/cn"; diff --git a/apps/webapp/app/components/runs/v3/WaitpointTokenFilters.tsx b/apps/webapp/app/components/runs/v3/WaitpointTokenFilters.tsx index 3868a496d79..5a8c7a82176 100644 --- a/apps/webapp/app/components/runs/v3/WaitpointTokenFilters.tsx +++ b/apps/webapp/app/components/runs/v3/WaitpointTokenFilters.tsx @@ -4,7 +4,7 @@ import { Form, useFetcher } from "@remix-run/react"; import { WaitpointTokenStatus, waitpointTokenStatuses } from "@trigger.dev/core/v3"; import { ListChecks } from "lucide-react"; import { matchSorter } from "match-sorter"; -import { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { type ReactNode, useEffect, useMemo, useRef } from "react"; import { z } from "zod"; import { StatusIcon } from "~/assets/icons/StatusIcon"; import { AppliedFilter } from "~/components/primitives/AppliedFilter"; @@ -34,10 +34,10 @@ import { useSearchParams } from "~/hooks/useSearchParam"; import { useShortcutKeys } from "~/hooks/useShortcutKeys"; import { type loader as tagsLoader } from "~/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.tags"; import { - IdFilterDropdown, - type IdFilterDropdownProps, appliedSummary, FilterMenuProvider, + IdFilterDropdown, + type IdFilterDropdownProps, TimeFilter, } from "./SharedFilters"; import { WaitpointStatusCombo, waitpointStatusTitle } from "./WaitpointStatus"; diff --git a/apps/webapp/app/components/runs/v3/ai/extractAISpanData.ts b/apps/webapp/app/components/runs/v3/ai/extractAISpanData.ts index f813b1d1e5f..dcb9b4e2a36 100644 --- a/apps/webapp/app/components/runs/v3/ai/extractAISpanData.ts +++ b/apps/webapp/app/components/runs/v3/ai/extractAISpanData.ts @@ -217,7 +217,7 @@ function parseMessagesToDisplayItems(raw: unknown): DisplayItem[] | undefined { if (toolCalls.length > 0) { // Collect subsequent tool result messages that match these tool calls - const toolCallIds = new Set(toolCalls.map((tc) => tc.toolCallId)); + const _toolCallIds = new Set(toolCalls.map((tc) => tc.toolCallId)); let j = i + 1; while (j < messages.length && messages[j].role === "tool") { j++; diff --git a/apps/webapp/app/components/runs/v3/ai/extractAISummarySpanData.ts b/apps/webapp/app/components/runs/v3/ai/extractAISummarySpanData.ts index feaab811791..aa5f7c6a489 100644 --- a/apps/webapp/app/components/runs/v3/ai/extractAISummarySpanData.ts +++ b/apps/webapp/app/components/runs/v3/ai/extractAISummarySpanData.ts @@ -21,8 +21,8 @@ export function extractAISummarySpanData( const aiModel = rec(ai.model); const aiResponse = rec(ai.response); const aiUsage = rec(ai.usage); - const aiSettings = rec(ai.settings); - const aiRequest = rec(ai.request); + const _aiSettings = rec(ai.settings); + const _aiRequest = rec(ai.request); const aiTelemetry = rec(ai.telemetry); const trigger = rec(properties.trigger); const triggerLlm = rec(trigger.llm); diff --git a/apps/webapp/app/components/sessions/v1/CloseSessionDialog.tsx b/apps/webapp/app/components/sessions/v1/CloseSessionDialog.tsx index d76fa0629d5..4f65fd223af 100644 --- a/apps/webapp/app/components/sessions/v1/CloseSessionDialog.tsx +++ b/apps/webapp/app/components/sessions/v1/CloseSessionDialog.tsx @@ -1,4 +1,3 @@ -import { XCircleIcon } from "@heroicons/react/24/solid"; import { DialogClose } from "@radix-ui/react-dialog"; import { Form, useNavigation } from "@remix-run/react"; import { Button } from "~/components/primitives/Buttons"; @@ -7,7 +6,6 @@ import { FormButtons } from "~/components/primitives/FormButtons"; import { Input } from "~/components/primitives/Input"; import { Label } from "~/components/primitives/Label"; import { Paragraph } from "~/components/primitives/Paragraph"; -import { SpinnerWhite } from "~/components/primitives/Spinner"; type CloseSessionDialogProps = { sessionParam: string; diff --git a/apps/webapp/app/db.server.ts b/apps/webapp/app/db.server.ts index 7bd7ad103bc..09c30b92568 100644 --- a/apps/webapp/app/db.server.ts +++ b/apps/webapp/app/db.server.ts @@ -19,7 +19,8 @@ import { } from "./utils/prismaErrors"; import { singleton } from "./utils/singleton"; import { DATASOURCE_CONTEXT_KEY, startActiveSpan } from "./v3/tracer.server"; -import { context, Span, trace } from "@opentelemetry/api"; +import type { Span } from "@opentelemetry/api"; +import { context, trace } from "@opentelemetry/api"; import { queryPerformanceMonitor } from "./utils/queryPerformanceMonitor.server"; export type { diff --git a/apps/webapp/app/entry.server.tsx b/apps/webapp/app/entry.server.tsx index 51b18f83fa6..ab1941ef0bb 100644 --- a/apps/webapp/app/entry.server.tsx +++ b/apps/webapp/app/entry.server.tsx @@ -13,10 +13,8 @@ import { initMollifierStaleSweepWorker } from "~/v3/mollifierStaleSweepWorker.se import { initBillingLimitWorker } from "~/v3/billingLimitWorker.server"; import { bootstrap } from "./bootstrap"; import { LocaleContextProvider } from "./components/primitives/LocaleProvider"; -import { - OperatingSystemContextProvider, - OperatingSystemPlatform, -} from "./components/primitives/OperatingSystemProvider"; +import type { OperatingSystemPlatform } from "./components/primitives/OperatingSystemProvider"; +import { OperatingSystemContextProvider } from "./components/primitives/OperatingSystemProvider"; import { Prisma } from "./db.server"; import { env } from "./env.server"; import { eventLoopMonitor } from "./eventLoopMonitor.server"; diff --git a/apps/webapp/app/eventLoopMonitor.server.ts b/apps/webapp/app/eventLoopMonitor.server.ts index 2c536e7bb35..2e45676e38b 100644 --- a/apps/webapp/app/eventLoopMonitor.server.ts +++ b/apps/webapp/app/eventLoopMonitor.server.ts @@ -2,7 +2,8 @@ import { createHook } from "node:async_hooks"; import { singleton } from "./utils/singleton"; import { tracer } from "./v3/tracer.server"; import { env } from "./env.server"; -import { context, Context } from "@opentelemetry/api"; +import type { Context } from "@opentelemetry/api"; +import { context } from "@opentelemetry/api"; import { performance } from "node:perf_hooks"; import { logger } from "./services/logger.server"; import { signalsEmitter } from "./services/signals.server"; diff --git a/apps/webapp/app/hooks/useApiOrigin.ts b/apps/webapp/app/hooks/useApiOrigin.ts index b616aee1dda..b26d0caff01 100644 --- a/apps/webapp/app/hooks/useApiOrigin.ts +++ b/apps/webapp/app/hooks/useApiOrigin.ts @@ -1,5 +1,5 @@ import { useTypedRouteLoaderData } from "remix-typedjson"; -import { loader } from "../root"; +import type { loader } from "../root"; export function useApiOrigin() { const routeMatch = useTypedRouteLoaderData("root"); diff --git a/apps/webapp/app/hooks/useAppOrigin.ts b/apps/webapp/app/hooks/useAppOrigin.ts index 251e91275b4..fe0cea53035 100644 --- a/apps/webapp/app/hooks/useAppOrigin.ts +++ b/apps/webapp/app/hooks/useAppOrigin.ts @@ -1,5 +1,5 @@ import { useTypedRouteLoaderData } from "remix-typedjson"; -import { loader } from "../root"; +import type { loader } from "../root"; export function useAppOrigin() { const routeMatch = useTypedRouteLoaderData("root"); diff --git a/apps/webapp/app/hooks/useEnvironments.ts b/apps/webapp/app/hooks/useEnvironments.ts index ccec438cce6..43fe8a7b8bc 100644 --- a/apps/webapp/app/hooks/useEnvironments.ts +++ b/apps/webapp/app/hooks/useEnvironments.ts @@ -1,6 +1,6 @@ -import { UIMatch } from "@remix-run/react"; -import { MatchedProject, useOptionalProject } from "./useProject"; -import { useUser } from "./useUser"; +import type { UIMatch } from "@remix-run/react"; +import type { MatchedProject } from "./useProject"; +import { useOptionalProject } from "./useProject"; export type ProjectJobEnvironment = MatchedProject["environments"][number]; diff --git a/apps/webapp/app/hooks/useFaviconUrl.ts b/apps/webapp/app/hooks/useFaviconUrl.ts index fadf6b18228..d52ed0fc5a5 100644 --- a/apps/webapp/app/hooks/useFaviconUrl.ts +++ b/apps/webapp/app/hooks/useFaviconUrl.ts @@ -1,4 +1,4 @@ -import { useCallback, useEffect, useRef, useState } from "react"; +import { useEffect, useRef, useState } from "react"; import { extractDomain, faviconUrl } from "~/utils/favicon"; function resolve(input: string, size: number): string | null { diff --git a/apps/webapp/app/hooks/useInitialDimensions.ts b/apps/webapp/app/hooks/useInitialDimensions.ts index 4e230f87f02..ff007743a05 100644 --- a/apps/webapp/app/hooks/useInitialDimensions.ts +++ b/apps/webapp/app/hooks/useInitialDimensions.ts @@ -1,4 +1,4 @@ -import { useEffect, useLayoutEffect, useState } from "react"; +import { useEffect, useState } from "react"; export function useInitialDimensions(ref: React.RefObject) { const [dimensions, setDimensions] = useState(null); diff --git a/apps/webapp/app/hooks/useLazyRef.ts b/apps/webapp/app/hooks/useLazyRef.ts index 31a8f3650a5..c2fc66273bb 100644 --- a/apps/webapp/app/hooks/useLazyRef.ts +++ b/apps/webapp/app/hooks/useLazyRef.ts @@ -1,4 +1,5 @@ -import { useRef, MutableRefObject } from "react"; +import type { MutableRefObject } from "react"; +import { useRef } from "react"; const useLazyRef = (initialValFunc: () => T) => { const ref: MutableRefObject = useRef(null); diff --git a/apps/webapp/app/hooks/useList.tsx b/apps/webapp/app/hooks/useList.tsx index 6350a627247..1d0c9dcfde8 100644 --- a/apps/webapp/app/hooks/useList.tsx +++ b/apps/webapp/app/hooks/useList.tsx @@ -1,4 +1,5 @@ -import { Reducer, useReducer } from "react"; +import type { Reducer } from "react"; +import { useReducer } from "react"; export type ListState = { items: T[]; @@ -15,7 +16,7 @@ type UpdateAction = { item: T; }; -type DeleteAction = { +type DeleteAction<_T> = { type: "delete"; index: number; }; diff --git a/apps/webapp/app/hooks/useOrganizations.ts b/apps/webapp/app/hooks/useOrganizations.ts index ea40cf5e655..df3ec699633 100644 --- a/apps/webapp/app/hooks/useOrganizations.ts +++ b/apps/webapp/app/hooks/useOrganizations.ts @@ -1,5 +1,5 @@ -import { UIMatch } from "@remix-run/react"; -import { UseDataFunctionReturn } from "remix-typedjson"; +import type { UIMatch } from "@remix-run/react"; +import type { UseDataFunctionReturn } from "remix-typedjson"; import invariant from "tiny-invariant"; import type { loader as orgLoader } from "~/routes/_app.orgs.$organizationSlug/route"; import { useChanged } from "./useChanged"; diff --git a/apps/webapp/app/hooks/useTypedMatchData.ts b/apps/webapp/app/hooks/useTypedMatchData.ts index fe5077717ec..d2a1514c59a 100644 --- a/apps/webapp/app/hooks/useTypedMatchData.ts +++ b/apps/webapp/app/hooks/useTypedMatchData.ts @@ -1,5 +1,7 @@ -import { UIMatch, useMatches } from "@remix-run/react"; -import { RemixSerializedType, UseDataFunctionReturn, deserializeRemix } from "remix-typedjson"; +import type { UIMatch } from "@remix-run/react"; +import { useMatches } from "@remix-run/react"; +import type { RemixSerializedType, UseDataFunctionReturn } from "remix-typedjson"; +import { deserializeRemix } from "remix-typedjson"; type AppData = any; diff --git a/apps/webapp/app/metrics.server.ts b/apps/webapp/app/metrics.server.ts index 1fe43687dba..13fd1c3f285 100644 --- a/apps/webapp/app/metrics.server.ts +++ b/apps/webapp/app/metrics.server.ts @@ -1,4 +1,5 @@ -import { OpenMetricsContentType, Registry, collectDefaultMetrics, register } from "prom-client"; +import type { OpenMetricsContentType } from "prom-client"; +import { Registry, collectDefaultMetrics, register } from "prom-client"; import { singleton } from "./utils/singleton"; import { env } from "./env.server"; diff --git a/apps/webapp/app/models/admin.server.ts b/apps/webapp/app/models/admin.server.ts index 8620ea6a244..4963a0befc2 100644 --- a/apps/webapp/app/models/admin.server.ts +++ b/apps/webapp/app/models/admin.server.ts @@ -1,7 +1,7 @@ import { redirect } from "@remix-run/server-runtime"; import { prisma } from "~/db.server"; import { logger } from "~/services/logger.server"; -import { SearchParams } from "~/routes/admin._index"; +import type { SearchParams } from "~/routes/admin._index"; import { clearImpersonationId, commitImpersonationSession, diff --git a/apps/webapp/app/models/message.server.ts b/apps/webapp/app/models/message.server.ts index 7768eee2bd2..eec7316e095 100644 --- a/apps/webapp/app/models/message.server.ts +++ b/apps/webapp/app/models/message.server.ts @@ -1,6 +1,6 @@ import { json, createCookieSessionStorage, type Session } from "@remix-run/node"; import { redirect, typedjson } from "remix-typedjson"; -import { ButtonVariant } from "~/components/primitives/Buttons"; +import type { ButtonVariant } from "~/components/primitives/Buttons"; import { env } from "~/env.server"; import { type FeedbackType } from "~/routes/resources.feedback"; diff --git a/apps/webapp/app/models/orgIntegration.server.ts b/apps/webapp/app/models/orgIntegration.server.ts index 1d04084692c..a362e61acef 100644 --- a/apps/webapp/app/models/orgIntegration.server.ts +++ b/apps/webapp/app/models/orgIntegration.server.ts @@ -1,5 +1,5 @@ import { WebClient } from "@slack/web-api"; -import { +import type { IntegrationService, Organization, OrganizationIntegration, diff --git a/apps/webapp/app/models/organization.server.ts b/apps/webapp/app/models/organization.server.ts index c2b4ea5abdd..79c1ef1b261 100644 --- a/apps/webapp/app/models/organization.server.ts +++ b/apps/webapp/app/models/organization.server.ts @@ -86,7 +86,7 @@ export async function createOrganization( ); } - const features = featuresForUrl(new URL(env.APP_ORIGIN)); + const _features = featuresForUrl(new URL(env.APP_ORIGIN)); const organization = await prisma.organization.create({ data: { diff --git a/apps/webapp/app/models/project.server.ts b/apps/webapp/app/models/project.server.ts index f520e58e8cd..5f07d4d28cf 100644 --- a/apps/webapp/app/models/project.server.ts +++ b/apps/webapp/app/models/project.server.ts @@ -1,10 +1,9 @@ -import { nanoid, customAlphabet } from "nanoid"; +import type { Prisma, Project } from "@trigger.dev/database"; +import { customAlphabet, nanoid } from "nanoid"; import slug from "slug"; import { $replica, prisma } from "~/db.server"; -import type { Prisma, Project } from "@trigger.dev/database"; -import { type Organization, createEnvironment } from "./organization.server"; -import { env } from "~/env.server"; import { projectCreated } from "~/services/projectCreated.server"; +import { type Organization, createEnvironment } from "./organization.server"; export type { Project } from "@trigger.dev/database"; const externalRefGenerator = customAlphabet("abcdefghijklmnopqrstuvwxyz", 20); diff --git a/apps/webapp/app/models/schedules.server.ts b/apps/webapp/app/models/schedules.server.ts index 58e4d9a870c..72d08c4fb9f 100644 --- a/apps/webapp/app/models/schedules.server.ts +++ b/apps/webapp/app/models/schedules.server.ts @@ -1,4 +1,4 @@ -import { Prisma } from "~/db.server"; +import type { Prisma } from "~/db.server"; export function scheduleUniqWhereClause( projectId: string, diff --git a/apps/webapp/app/models/task.server.ts b/apps/webapp/app/models/task.server.ts index aab3b3bcfc1..54dca73a01b 100644 --- a/apps/webapp/app/models/task.server.ts +++ b/apps/webapp/app/models/task.server.ts @@ -1,5 +1,6 @@ import type { TaskTriggerSource } from "@trigger.dev/database"; -import { PrismaClientOrTransaction, sqlDatabaseSchema } from "~/db.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; +import { sqlDatabaseSchema } from "~/db.server"; export { getTaskIdentifiers } from "~/services/taskIdentifierRegistry.server"; export type { TaskIdentifierEntry } from "~/services/taskIdentifierCache.server"; diff --git a/apps/webapp/app/models/taskQueue.server.ts b/apps/webapp/app/models/taskQueue.server.ts index 3657d82d3ad..0e9f26450ef 100644 --- a/apps/webapp/app/models/taskQueue.server.ts +++ b/apps/webapp/app/models/taskQueue.server.ts @@ -1,5 +1,5 @@ import { QueueManifest } from "@trigger.dev/core/v3/schemas"; -import { TaskQueue } from "@trigger.dev/database"; +import type { TaskQueue } from "@trigger.dev/database"; import { prisma } from "~/db.server"; export async function findQueueInEnvironment( diff --git a/apps/webapp/app/models/user.server.ts b/apps/webapp/app/models/user.server.ts index edf0ebd2e5e..443340d9646 100644 --- a/apps/webapp/app/models/user.server.ts +++ b/apps/webapp/app/models/user.server.ts @@ -3,10 +3,8 @@ import type { GitHubProfile } from "remix-auth-github"; import type { GoogleProfile } from "remix-auth-google"; import { prisma } from "~/db.server"; import { env } from "~/env.server"; -import { - DashboardPreferences, - getDashboardPreferences, -} from "~/services/dashboardPreferences.server"; +import type { DashboardPreferences } from "~/services/dashboardPreferences.server"; +import { getDashboardPreferences } from "~/services/dashboardPreferences.server"; export type { User } from "@trigger.dev/database"; import { assertEmailAllowed } from "~/utils/email"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/models/vercelIntegration.server.ts b/apps/webapp/app/models/vercelIntegration.server.ts index b9c3f22da28..3a1aaf4b8ea 100644 --- a/apps/webapp/app/models/vercelIntegration.server.ts +++ b/apps/webapp/app/models/vercelIntegration.server.ts @@ -6,7 +6,7 @@ import type { } from "@vercel/sdk/models/filterprojectenvsop"; import type { GetV9ProjectsIdOrNameCustomEnvironmentsEnvironments } from "@vercel/sdk/models/getv9projectsidornamecustomenvironmentsop"; import type { ResponseBodyProjects } from "@vercel/sdk/models/getprojectsop"; -import { Organization, OrganizationIntegration, SecretReference } from "@trigger.dev/database"; +import type { Organization, OrganizationIntegration, SecretReference } from "@trigger.dev/database"; import { z } from "zod"; import { ResultAsync, errAsync, okAsync } from "neverthrow"; import { $transaction, prisma } from "~/db.server"; @@ -14,10 +14,12 @@ import { env } from "~/env.server"; import { logger } from "~/services/logger.server"; import { getSecretStore } from "~/services/secrets/secretStore.server"; import { generateFriendlyId } from "~/v3/friendlyIdentifiers"; -import { +import type { SyncEnvVarsMapping, - shouldSyncEnvVar, TriggerEnvironmentType, +} from "~/v3/vercel/vercelProjectIntegrationSchema"; +import { + shouldSyncEnvVar, envTypeToVercelTarget, } from "~/v3/vercel/vercelProjectIntegrationSchema"; import { EnvironmentVariablesRepository } from "~/v3/environmentVariables/environmentVariablesRepository.server"; @@ -117,22 +119,6 @@ function isVercelApiErrorShape(error: unknown): error is VercelApiError { typeof (error as VercelApiError).authInvalid === "boolean" ); } - -/** - * Wrap a Vercel SDK call in ResultAsync with structured error logging. - */ -function wrapVercelCall( - promise: Promise, - message: string, - context: Record -): ResultAsync { - return ResultAsync.fromPromise(promise, (error) => { - const apiError = toVercelApiError(error); - logger.error(message, { ...context, error, authInvalid: apiError.authInvalid }); - return apiError; - }); -} - // --------------------------------------------------------------------------- // Schemas & token types // --------------------------------------------------------------------------- diff --git a/apps/webapp/app/presenters/NewOrganizationPresenter.server.ts b/apps/webapp/app/presenters/NewOrganizationPresenter.server.ts index c81fda8a008..fdac56f2dd2 100644 --- a/apps/webapp/app/presenters/NewOrganizationPresenter.server.ts +++ b/apps/webapp/app/presenters/NewOrganizationPresenter.server.ts @@ -1,4 +1,4 @@ -import { PrismaClient, User } from "@trigger.dev/database"; +import type { PrismaClient, User } from "@trigger.dev/database"; import { prisma } from "~/db.server"; export class NewOrganizationPresenter { diff --git a/apps/webapp/app/presenters/ProjectPresenter.server.ts b/apps/webapp/app/presenters/ProjectPresenter.server.ts index bae1b79789d..66b51a33b5a 100644 --- a/apps/webapp/app/presenters/ProjectPresenter.server.ts +++ b/apps/webapp/app/presenters/ProjectPresenter.server.ts @@ -1,7 +1,8 @@ -import { PrismaClient, prisma } from "~/db.server"; -import { Project } from "~/models/project.server"; +import type { PrismaClient } from "~/db.server"; +import { prisma } from "~/db.server"; +import type { Project } from "~/models/project.server"; import { displayableEnvironment } from "~/models/runtimeEnvironment.server"; -import { User } from "~/models/user.server"; +import type { User } from "~/models/user.server"; import { sortEnvironments } from "~/utils/environmentSort"; export class ProjectPresenter { diff --git a/apps/webapp/app/presenters/SessionFilters.server.ts b/apps/webapp/app/presenters/SessionFilters.server.ts index 81e12af67e3..bbbb314eb8d 100644 --- a/apps/webapp/app/presenters/SessionFilters.server.ts +++ b/apps/webapp/app/presenters/SessionFilters.server.ts @@ -1,7 +1,5 @@ -import { - getSessionFiltersFromSearchParams, - SessionListSearchFilters, -} from "~/components/sessions/v1/SessionFilters"; +import type { SessionListSearchFilters } from "~/components/sessions/v1/SessionFilters"; +import { getSessionFiltersFromSearchParams } from "~/components/sessions/v1/SessionFilters"; import { type SessionStatus } from "~/services/sessionsRepository/sessionsRepository.server"; export type SessionFiltersFromRequest = SessionListSearchFilters & { diff --git a/apps/webapp/app/presenters/v3/AlertChannelListPresenter.server.ts b/apps/webapp/app/presenters/v3/AlertChannelListPresenter.server.ts index 5b8fef540f2..0b1f6eb14e9 100644 --- a/apps/webapp/app/presenters/v3/AlertChannelListPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/AlertChannelListPresenter.server.ts @@ -1,6 +1,6 @@ import { logger } from "~/services/logger.server"; import { BasePresenter } from "./basePresenter.server"; -import { RuntimeEnvironmentType, type ProjectAlertChannel } from "@trigger.dev/database"; +import { type RuntimeEnvironmentType, type ProjectAlertChannel } from "@trigger.dev/database"; import { decryptSecret } from "~/services/secrets/secretStore.server"; import { env } from "~/env.server"; import { diff --git a/apps/webapp/app/presenters/v3/ApiBatchResultsPresenter.server.ts b/apps/webapp/app/presenters/v3/ApiBatchResultsPresenter.server.ts index b3dd39637da..0330fa7bd36 100644 --- a/apps/webapp/app/presenters/v3/ApiBatchResultsPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/ApiBatchResultsPresenter.server.ts @@ -1,6 +1,7 @@ -import { BatchTaskRunExecutionResult } from "@trigger.dev/core/v3"; -import { executionResultForTaskRun, TaskRunWithAttempts } from "~/models/taskRun.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { BatchTaskRunExecutionResult } from "@trigger.dev/core/v3"; +import type { TaskRunWithAttempts } from "~/models/taskRun.server"; +import { executionResultForTaskRun } from "~/models/taskRun.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { runStore } from "~/v3/runStore.server"; import { BasePresenter } from "./basePresenter.server"; diff --git a/apps/webapp/app/presenters/v3/ApiRetrieveRunPresenter.server.ts b/apps/webapp/app/presenters/v3/ApiRetrieveRunPresenter.server.ts index 5601fb19371..f5a22b7bd67 100644 --- a/apps/webapp/app/presenters/v3/ApiRetrieveRunPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/ApiRetrieveRunPresenter.server.ts @@ -1,9 +1,11 @@ -import { +import type { AttemptStatus, RunStatus, SerializedError, - TaskRunError, TriggerFunction, +} from "@trigger.dev/core/v3"; +import { + TaskRunError, conditionallyImportPacket, createJsonErrorObject, logger, @@ -11,12 +13,13 @@ import { import { parsePacketAsJson } from "@trigger.dev/core/v3/utils/ioSerialization"; import { BatchId } from "@trigger.dev/core/v3/isomorphic"; import { getUserProvidedIdempotencyKey } from "@trigger.dev/core/v3/serverOnly"; -import { Prisma, TaskRunAttemptStatus, TaskRunStatus } from "@trigger.dev/database"; +import type { Prisma, TaskRunAttemptStatus, TaskRunStatus } from "@trigger.dev/database"; import assertNever from "assert-never"; -import { API_VERSIONS, CURRENT_API_VERSION, RunStatusUnspecifiedApiVersion } from "~/api/versions"; +import type { API_VERSIONS, RunStatusUnspecifiedApiVersion } from "~/api/versions"; +import { CURRENT_API_VERSION } from "~/api/versions"; import { $replica, prisma } from "~/db.server"; import { regionForDisplay } from "~/runEngine/concerns/workerQueueSplit.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { findRunByIdWithMollifierFallback, type SyntheticRun, diff --git a/apps/webapp/app/presenters/v3/ApiRunListPresenter.server.ts b/apps/webapp/app/presenters/v3/ApiRunListPresenter.server.ts index 42cd4a59059..b49f239fea7 100644 --- a/apps/webapp/app/presenters/v3/ApiRunListPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/ApiRunListPresenter.server.ts @@ -1,14 +1,9 @@ -import { - type ListRunResponse, - type ListRunResponseItem, - MachinePresetName, - parsePacket, - RunStatus, -} from "@trigger.dev/core/v3"; +import { MachinePresetName, parsePacket, RunStatus } from "@trigger.dev/core/v3"; import { type Project, type RuntimeEnvironment, type TaskRunStatus } from "@trigger.dev/database"; import assertNever from "assert-never"; import { z } from "zod"; -import { API_VERSIONS, RunStatusUnspecifiedApiVersion } from "~/api/versions"; +import type { API_VERSIONS } from "~/api/versions"; +import { RunStatusUnspecifiedApiVersion } from "~/api/versions"; import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; import { logger } from "~/services/logger.server"; import { CoercedDate } from "~/utils/zod"; diff --git a/apps/webapp/app/presenters/v3/ApiRunResultPresenter.server.ts b/apps/webapp/app/presenters/v3/ApiRunResultPresenter.server.ts index 7e0540674e8..bfa76c5fc4f 100644 --- a/apps/webapp/app/presenters/v3/ApiRunResultPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/ApiRunResultPresenter.server.ts @@ -1,6 +1,6 @@ -import { TaskRunExecutionResult } from "@trigger.dev/core/v3"; +import type { TaskRunExecutionResult } from "@trigger.dev/core/v3"; import { executionResultForTaskRun } from "~/models/taskRun.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { runStore } from "~/v3/runStore.server"; import { BasePresenter } from "./basePresenter.server"; diff --git a/apps/webapp/app/presenters/v3/ApiWaitpointPresenter.server.ts b/apps/webapp/app/presenters/v3/ApiWaitpointPresenter.server.ts index 1cec530cf08..7d97f6f6813 100644 --- a/apps/webapp/app/presenters/v3/ApiWaitpointPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/ApiWaitpointPresenter.server.ts @@ -56,9 +56,9 @@ export class ApiWaitpointPresenter extends BasePresenter { throw new ServiceValidationError("Waitpoint not found"); } - let isTimeout = false; + let _isTimeout = false; if (waitpoint.outputIsError && waitpoint.output) { - isTimeout = true; + _isTimeout = true; } return { diff --git a/apps/webapp/app/presenters/v3/BranchesPresenter.server.ts b/apps/webapp/app/presenters/v3/BranchesPresenter.server.ts index 0930c3538d1..8cdd50ada8c 100644 --- a/apps/webapp/app/presenters/v3/BranchesPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/BranchesPresenter.server.ts @@ -319,7 +319,7 @@ export function processGitMetadata(data: Prisma.JsonValue): GitMetaLinks | null url.protocol = "https:"; // Remove any trailing .git return url.toString().replace(/\.git$/, ""); - } catch (e) { + } catch (_e) { // If URL parsing fails, try to clean it manually return parsed.data.remoteUrl .replace(/^git@github\.com:/, "https://github.com/") diff --git a/apps/webapp/app/presenters/v3/BuiltInDashboards.server.ts b/apps/webapp/app/presenters/v3/BuiltInDashboards.server.ts index 4f62fc00b86..971fc9a3033 100644 --- a/apps/webapp/app/presenters/v3/BuiltInDashboards.server.ts +++ b/apps/webapp/app/presenters/v3/BuiltInDashboards.server.ts @@ -1,5 +1,4 @@ import { type BuiltInDashboard } from "./MetricDashboardPresenter.server"; -import { z } from "zod"; const overviewDashboard: BuiltInDashboard = { key: "overview", diff --git a/apps/webapp/app/presenters/v3/BulkActionPresenter.server.ts b/apps/webapp/app/presenters/v3/BulkActionPresenter.server.ts index f98d0819cba..2648ea9f946 100644 --- a/apps/webapp/app/presenters/v3/BulkActionPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/BulkActionPresenter.server.ts @@ -1,8 +1,7 @@ -import { getUsername } from "~/utils/username"; -import { BasePresenter } from "./basePresenter.server"; import { type BulkActionMode } from "~/components/BulkActionFilterSummary"; -import { parseRunListInputOptions } from "~/services/runsRepository/runsRepository.server"; import { TaskRunListSearchFilters } from "~/components/runs/v3/RunFilters"; +import { getUsername } from "~/utils/username"; +import { BasePresenter } from "./basePresenter.server"; type BulkActionOptions = { environmentId: string; diff --git a/apps/webapp/app/presenters/v3/EnvironmentVariablesPresenter.server.ts b/apps/webapp/app/presenters/v3/EnvironmentVariablesPresenter.server.ts index 3563bacf428..91966941fca 100644 --- a/apps/webapp/app/presenters/v3/EnvironmentVariablesPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/EnvironmentVariablesPresenter.server.ts @@ -1,9 +1,10 @@ -import { $replica, PrismaClient, PrismaReplicaClient, prisma } from "~/db.server"; +import type { PrismaClient, PrismaReplicaClient } from "~/db.server"; +import { $replica, prisma } from "~/db.server"; import type { Project } from "~/models/project.server"; import type { User } from "~/models/user.server"; import { EnvironmentVariablesRepository } from "~/v3/environmentVariables/environmentVariablesRepository.server"; import type { EnvironmentVariableUpdater } from "~/v3/environmentVariables/repository"; -import { SyncEnvVarsMapping, EnvSlug } from "~/v3/vercel/vercelProjectIntegrationSchema"; +import type { SyncEnvVarsMapping, EnvSlug } from "~/v3/vercel/vercelProjectIntegrationSchema"; import { VercelIntegrationService } from "~/services/vercelIntegration.server"; import { loadEnvironmentVariablesEnvironments } from "./environmentVariablesEnvironments.server"; diff --git a/apps/webapp/app/presenters/v3/GitHubSettingsPresenter.server.ts b/apps/webapp/app/presenters/v3/GitHubSettingsPresenter.server.ts index c3f715deff2..53bd034f249 100644 --- a/apps/webapp/app/presenters/v3/GitHubSettingsPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/GitHubSettingsPresenter.server.ts @@ -1,5 +1,5 @@ import { type PrismaClient } from "@trigger.dev/database"; -import { err, fromPromise, ok, ResultAsync } from "neverthrow"; +import { fromPromise, ok, ResultAsync } from "neverthrow"; import { env } from "~/env.server"; import { BranchTrackingConfigSchema } from "~/v3/github"; import { BasePresenter } from "./basePresenter.server"; diff --git a/apps/webapp/app/presenters/v3/LimitsPresenter.server.ts b/apps/webapp/app/presenters/v3/LimitsPresenter.server.ts index 748435ad831..cbf3abc5ce3 100644 --- a/apps/webapp/app/presenters/v3/LimitsPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/LimitsPresenter.server.ts @@ -1,5 +1,5 @@ import { Ratelimit } from "@upstash/ratelimit"; -import { RuntimeEnvironmentType } from "@trigger.dev/database"; +import type { RuntimeEnvironmentType } from "@trigger.dev/database"; import { createHash } from "node:crypto"; import { env } from "~/env.server"; import { getCurrentPlan } from "~/services/platform.v3.server"; diff --git a/apps/webapp/app/presenters/v3/LogsListPresenter.server.ts b/apps/webapp/app/presenters/v3/LogsListPresenter.server.ts index 4bc3e3ba965..9c19cb75715 100644 --- a/apps/webapp/app/presenters/v3/LogsListPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/LogsListPresenter.server.ts @@ -1,25 +1,24 @@ -import { z } from "zod"; import { type ClickHouse, - type WhereCondition, type LogsSearchListResult, + type WhereCondition, } from "@internal/clickhouse"; import { type PrismaClientOrTransaction } from "@trigger.dev/database"; +import { z } from "zod"; import { EVENT_STORE_TYPES, getConfiguredEventRepository } from "~/v3/eventRepository/index.server"; -import parseDuration from "parse-duration"; import { type Direction } from "~/components/ListPagination"; -import { timeFilterFromTo, timeFilters } from "~/components/runs/v3/SharedFilters"; +import { timeFilterFromTo } from "~/components/runs/v3/SharedFilters"; +import { env } from "~/env.server"; import { findDisplayableEnvironment } from "~/models/runtimeEnvironment.server"; import { getTaskIdentifiers } from "~/models/task.server"; -import { ServiceValidationError } from "~/v3/services/baseService.server"; -import { kindToLevel, type LogLevel, LogLevelSchema } from "~/utils/logUtils"; import { BasePresenter } from "~/presenters/v3/basePresenter.server"; -import { env } from "~/env.server"; +import { kindToLevel, type LogLevel, LogLevelSchema } from "~/utils/logUtils"; import { - convertDateToClickhouseDateTime, convertClickhouseDateTime64ToJsDate, + convertDateToClickhouseDateTime, } from "~/v3/eventRepository/clickhouseEventRepository.server"; +import { ServiceValidationError } from "~/v3/services/baseService.server"; export type { LogLevel }; diff --git a/apps/webapp/app/presenters/v3/ModelRegistryPresenter.server.ts b/apps/webapp/app/presenters/v3/ModelRegistryPresenter.server.ts index 20fefa400e6..90cab7cb914 100644 --- a/apps/webapp/app/presenters/v3/ModelRegistryPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/ModelRegistryPresenter.server.ts @@ -1,6 +1,6 @@ -import { ClickHouse } from "@internal/clickhouse"; +import type { ClickHouse } from "@internal/clickhouse"; import { modelCatalog } from "@internal/llm-model-catalog"; -import { PrismaClientOrTransaction } from "~/db.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; import { BasePresenter } from "./basePresenter.server"; import { z } from "zod"; @@ -355,7 +355,7 @@ export class ModelRegistryPresenter extends BasePresenter { // and nest the rest as variants const baseModels: ModelCatalogItem[] = []; - for (const [groupKey, group] of variantGroups) { + for (const [_groupKey, group] of variantGroups) { if (group.length === 1) { // Standalone model, no variants baseModels.push(group[0]); diff --git a/apps/webapp/app/presenters/v3/NextRunListPresenter.server.ts b/apps/webapp/app/presenters/v3/NextRunListPresenter.server.ts index 24ae2c45bdc..bfd94b1ac9a 100644 --- a/apps/webapp/app/presenters/v3/NextRunListPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/NextRunListPresenter.server.ts @@ -1,5 +1,5 @@ import { type ClickHouse } from "@internal/clickhouse"; -import { MachinePresetName } from "@trigger.dev/core/v3"; +import type { MachinePresetName } from "@trigger.dev/core/v3"; import { RunAnnotations } from "@trigger.dev/core/v3/schemas"; import { type PrismaClient, diff --git a/apps/webapp/app/presenters/v3/PromptPresenter.server.ts b/apps/webapp/app/presenters/v3/PromptPresenter.server.ts index fb430cf8764..bada2f49345 100644 --- a/apps/webapp/app/presenters/v3/PromptPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/PromptPresenter.server.ts @@ -1,5 +1,5 @@ -import { ClickHouse } from "@internal/clickhouse"; -import { PrismaClientOrTransaction } from "~/db.server"; +import type { ClickHouse } from "@internal/clickhouse"; +import type { PrismaClientOrTransaction } from "~/db.server"; import { BasePresenter } from "./basePresenter.server"; import { z } from "zod"; diff --git a/apps/webapp/app/presenters/v3/QueueListPresenter.server.ts b/apps/webapp/app/presenters/v3/QueueListPresenter.server.ts index 5b848ff51b9..024a1342b0a 100644 --- a/apps/webapp/app/presenters/v3/QueueListPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/QueueListPresenter.server.ts @@ -1,12 +1,12 @@ import type { RunEngine } from "@internal/run-engine"; -import { Prisma, TaskQueueType } from "@trigger.dev/database"; +import type { Prisma } from "@trigger.dev/database"; +import { TaskQueueType } from "@trigger.dev/database"; import { type PrismaClientOrTransaction } from "~/db.server"; import { type AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { determineEngineVersion } from "~/v3/engineVersion.server"; import { engine } from "~/v3/runEngine.server"; import { BasePresenter } from "./basePresenter.server"; import { toQueueItem } from "./QueueRetrievePresenter.server"; -import type { QueueListPagination } from "./queueListPagination.server"; type QueueListEngine = Pick; diff --git a/apps/webapp/app/presenters/v3/QueueRetrievePresenter.server.ts b/apps/webapp/app/presenters/v3/QueueRetrievePresenter.server.ts index bd885ea738b..b446dfaf626 100644 --- a/apps/webapp/app/presenters/v3/QueueRetrievePresenter.server.ts +++ b/apps/webapp/app/presenters/v3/QueueRetrievePresenter.server.ts @@ -1,11 +1,15 @@ +import { assertExhaustive } from "@trigger.dev/core"; +import { type Prettify, type QueueItem, type RetrieveQueueParam } from "@trigger.dev/core/v3"; +import { + type PrismaClientOrTransaction, + type TaskQueue, + type User, + type TaskQueueType, +} from "@trigger.dev/database"; import { type AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import { determineEngineVersion } from "~/v3/engineVersion.server"; import { engine } from "~/v3/runEngine.server"; import { BasePresenter } from "./basePresenter.server"; -import { TaskQueue, User, type TaskQueueType } from "@trigger.dev/database"; -import { assertExhaustive } from "@trigger.dev/core"; -import { determineEngineVersion } from "~/v3/engineVersion.server"; -import { type Prettify, type QueueItem, type RetrieveQueueParam } from "@trigger.dev/core/v3"; -import { PrismaClientOrTransaction } from "@trigger.dev/database"; export type FoundQueue = Prettify< Omit & { diff --git a/apps/webapp/app/presenters/v3/RunPresenter.server.ts b/apps/webapp/app/presenters/v3/RunPresenter.server.ts index 6eac6ca35bc..87619a1e7c8 100644 --- a/apps/webapp/app/presenters/v3/RunPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/RunPresenter.server.ts @@ -4,7 +4,7 @@ import { prisma, type PrismaClient } from "~/db.server"; import { logger } from "~/services/logger.server"; import { createTimelineSpanEventsFromSpanEvents } from "~/utils/timelineSpanEvents"; import { getUsername } from "~/utils/username"; -import { SpanSummary } from "~/v3/eventRepository/eventRepository.types"; +import type { SpanSummary } from "~/v3/eventRepository/eventRepository.types"; import { getTaskEventStoreTableForRun } from "~/v3/taskEventStore.server"; import { isFinalRunStatus } from "~/v3/taskStatus"; import { env } from "~/env.server"; diff --git a/apps/webapp/app/presenters/v3/RunStreamPresenter.server.ts b/apps/webapp/app/presenters/v3/RunStreamPresenter.server.ts index 5cac948207d..f9b1317334e 100644 --- a/apps/webapp/app/presenters/v3/RunStreamPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/RunStreamPresenter.server.ts @@ -2,7 +2,8 @@ import { type PrismaClient, prisma } from "~/db.server"; import { logger } from "~/services/logger.server"; import { requireUserId } from "~/services/session.server"; import { singleton } from "~/utils/singleton"; -import { ABORT_REASON_SEND_ERROR, createSSELoader, SendFunction } from "~/utils/sse"; +import type { SendFunction } from "~/utils/sse"; +import { ABORT_REASON_SEND_ERROR, createSSELoader } from "~/utils/sse"; import { throttle } from "~/utils/throttle"; import { getMollifierBuffer } from "~/v3/mollifier/mollifierBuffer.server"; import { deserialiseMollifierSnapshot } from "~/v3/mollifier/mollifierSnapshot.server"; @@ -158,7 +159,7 @@ export class RunStreamPresenter { try { // Send an actual message so the client refreshes throttledSend({ send, event: "message", data: new Date().toISOString() }); - } catch (error) { + } catch (_error) { // If we can't send a ping, the connection is likely dead return false; } diff --git a/apps/webapp/app/presenters/v3/RunTagListPresenter.server.ts b/apps/webapp/app/presenters/v3/RunTagListPresenter.server.ts index 164a5491d2e..59f4e1047ef 100644 --- a/apps/webapp/app/presenters/v3/RunTagListPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/RunTagListPresenter.server.ts @@ -1,8 +1,7 @@ +import { type PrismaClient } from "@trigger.dev/database"; +import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; import { RunsRepository } from "~/services/runsRepository/runsRepository.server"; import { BasePresenter } from "./basePresenter.server"; -import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; -import { type PrismaClient } from "@trigger.dev/database"; -import { timeFilters } from "~/components/runs/v3/SharedFilters"; export type TagListOptions = { organizationId: string; diff --git a/apps/webapp/app/presenters/v3/SpanPresenter.server.ts b/apps/webapp/app/presenters/v3/SpanPresenter.server.ts index 5e8a6db9ed3..348b2bb33c9 100644 --- a/apps/webapp/app/presenters/v3/SpanPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/SpanPresenter.server.ts @@ -14,28 +14,28 @@ import { extractIdempotencyKeyScope, getUserProvidedIdempotencyKey, } from "@trigger.dev/core/v3/serverOnly"; -import { RUNNING_STATUSES } from "~/components/runs/v3/TaskRunStatus"; -import { baseWorkerQueue } from "~/runEngine/concerns/workerQueueSplit.server"; -import { logger } from "~/services/logger.server"; -import { rehydrateAttribute } from "~/v3/eventRepository/eventRepository.server"; -import { machinePresetFromRun } from "~/v3/machinePresets.server"; -import { getTaskEventStoreTableForRun, type TaskEventStoreTable } from "~/v3/taskEventStore.server"; -import { isFailedRunStatus, isFinalRunStatus } from "~/v3/taskStatus"; -import { BasePresenter } from "./basePresenter.server"; -import { WaitpointPresenter } from "./WaitpointPresenter.server"; -import { engine } from "~/v3/runEngine.server"; -import { IEventRepository, SpanDetail } from "~/v3/eventRepository/eventRepository.types"; -import { safeJsonParse } from "~/utils/json"; import { + extractAIEmbedData, extractAISpanData, extractAISummarySpanData, extractAIToolCallData, - extractAIEmbedData, } from "~/components/runs/v3/ai"; +import { RUNNING_STATUSES } from "~/components/runs/v3/TaskRunStatus"; +import { baseWorkerQueue } from "~/runEngine/concerns/workerQueueSplit.server"; +import { logger } from "~/services/logger.server"; +import { safeJsonParse } from "~/utils/json"; +import { rehydrateAttribute } from "~/v3/eventRepository/eventRepository.server"; +import type { IEventRepository } from "~/v3/eventRepository/eventRepository.types"; import { getEventRepositoryForStore } from "~/v3/eventRepository/index.server"; +import { machinePresetFromRun } from "~/v3/machinePresets.server"; import { findRunByIdWithMollifierFallback } from "~/v3/mollifier/readFallback.server"; import { buildSyntheticSpanRun } from "~/v3/mollifier/syntheticSpanRun.server"; +import { engine } from "~/v3/runEngine.server"; import { runStore } from "~/v3/runStore.server"; +import { getTaskEventStoreTableForRun, type TaskEventStoreTable } from "~/v3/taskEventStore.server"; +import { isFailedRunStatus, isFinalRunStatus } from "~/v3/taskStatus"; +import { BasePresenter } from "./basePresenter.server"; +import { WaitpointPresenter } from "./WaitpointPresenter.server"; export type PromptSpanData = { slug: string; @@ -94,8 +94,6 @@ export type Span = NonNullable["span"]>; type FindRunResult = NonNullable< Awaited["findRun"]>> >; -type GetSpanResult = SpanDetail; - export class SpanPresenter extends BasePresenter { public async call({ userId, diff --git a/apps/webapp/app/presenters/v3/TaskListPresenter.server.ts b/apps/webapp/app/presenters/v3/TaskListPresenter.server.ts index d8f48b27f8e..f62cfef5c76 100644 --- a/apps/webapp/app/presenters/v3/TaskListPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/TaskListPresenter.server.ts @@ -10,7 +10,6 @@ import { ClickHouseEnvironmentMetricsRepository, type CurrentRunningStats, type DailyTaskActivity, - type EnvironmentMetricsRepository, } from "~/services/environmentMetricsRepository.server"; import { singleton } from "~/utils/singleton"; import { findCurrentWorkerFromEnvironment } from "~/v3/models/workerDeployment.server"; diff --git a/apps/webapp/app/presenters/v3/TaskPresenter.server.ts b/apps/webapp/app/presenters/v3/TaskPresenter.server.ts index 671e92a445d..e000c8dc41c 100644 --- a/apps/webapp/app/presenters/v3/TaskPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/TaskPresenter.server.ts @@ -1,7 +1,8 @@ -import { BackgroundWorkerTask } from "@trigger.dev/database"; -import { PrismaClient, prisma } from "~/db.server"; -import { Project } from "~/models/project.server"; -import { User } from "~/models/user.server"; +import type { BackgroundWorkerTask } from "@trigger.dev/database"; +import type { PrismaClient } from "~/db.server"; +import { prisma } from "~/db.server"; +import type { Project } from "~/models/project.server"; +import type { User } from "~/models/user.server"; export class TaskPresenter { #prismaClient: PrismaClient; diff --git a/apps/webapp/app/presenters/v3/TasksStreamPresenter.server.ts b/apps/webapp/app/presenters/v3/TasksStreamPresenter.server.ts index 17a5bda620a..d6436560b10 100644 --- a/apps/webapp/app/presenters/v3/TasksStreamPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/TasksStreamPresenter.server.ts @@ -1,18 +1,9 @@ -import { type TaskRunAttempt } from "@trigger.dev/database"; import { eventStream } from "remix-utils/sse/server"; import { type PrismaClient, prisma } from "~/db.server"; import { getRequestAbortSignal } from "~/services/httpAsyncStorage.server"; import { logger } from "~/services/logger.server"; import { projectPubSub } from "~/v3/services/projectPubSub.server"; -type RunWithAttempts = { - updatedAt: Date; - attempts: { - status: TaskRunAttempt["status"]; - updatedAt: Date; - }[]; -}; - const pingInterval = 1000; export class TasksStreamPresenter { diff --git a/apps/webapp/app/presenters/v3/TestTaskPresenter.server.ts b/apps/webapp/app/presenters/v3/TestTaskPresenter.server.ts index 2d194184a6d..2532f466e53 100644 --- a/apps/webapp/app/presenters/v3/TestTaskPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/TestTaskPresenter.server.ts @@ -1,10 +1,10 @@ -import { ClickHouse } from "@internal/clickhouse"; +import type { ClickHouse } from "@internal/clickhouse"; import { ScheduledTaskPayload, parsePacket, prettyPrintPacket } from "@trigger.dev/core/v3"; import { + type PrismaClientOrTransaction, type RuntimeEnvironmentType, type TaskRunStatus, type TaskRunTemplate, - PrismaClientOrTransaction, } from "@trigger.dev/database"; import { inferSchema } from "@jsonhero/schema-infer"; import parse from "parse-duration"; diff --git a/apps/webapp/app/presenters/v3/UsagePresenter.server.ts b/apps/webapp/app/presenters/v3/UsagePresenter.server.ts index b5417cb9a7b..fe5ab1ec3ce 100644 --- a/apps/webapp/app/presenters/v3/UsagePresenter.server.ts +++ b/apps/webapp/app/presenters/v3/UsagePresenter.server.ts @@ -1,10 +1,11 @@ -import { PrismaClientOrTransaction, sqlDatabaseSchema } from "~/db.server"; +import type { DataPoint } from "regression"; +import { linear } from "regression"; +import type { PrismaClientOrTransaction } from "~/db.server"; import { env } from "~/env.server"; -import { getUsage, getUsageSeries } from "~/services/platform.v3.server"; +import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; +import { getUsageSeries } from "~/services/platform.v3.server"; import { createTimeSeriesData } from "~/utils/graphs"; import { BasePresenter } from "./basePresenter.server"; -import { DataPoint, linear } from "regression"; -import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; type Options = { organizationId: string; diff --git a/apps/webapp/app/presenters/v3/VercelSettingsPresenter.server.ts b/apps/webapp/app/presenters/v3/VercelSettingsPresenter.server.ts index 9fb5af935f2..4b684949952 100644 --- a/apps/webapp/app/presenters/v3/VercelSettingsPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/VercelSettingsPresenter.server.ts @@ -3,18 +3,16 @@ import { type Result, fromPromise, ok, okAsync, ResultAsync } from "neverthrow"; import { env } from "~/env.server"; import { logger } from "~/services/logger.server"; import { OrgIntegrationRepository } from "~/models/orgIntegration.server"; -import { - VercelIntegrationRepository, +import type { VercelCustomEnvironment, VercelEnvironmentVariable, } from "~/models/vercelIntegration.server"; +import { VercelIntegrationRepository } from "~/models/vercelIntegration.server"; import { type GitHubAppInstallation } from "~/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github"; import { EnvironmentVariablesRepository } from "~/v3/environmentVariables/environmentVariablesRepository.server"; import { isReservedForExternalSync } from "~/v3/environmentVariableRules.server"; -import { - VercelProjectIntegrationDataSchema, - VercelProjectIntegrationData, -} from "~/v3/vercel/vercelProjectIntegrationSchema"; +import type { VercelProjectIntegrationData } from "~/v3/vercel/vercelProjectIntegrationSchema"; +import { VercelProjectIntegrationDataSchema } from "~/v3/vercel/vercelProjectIntegrationSchema"; import { BasePresenter } from "./basePresenter.server"; type VercelSettingsOptions = { diff --git a/apps/webapp/app/presenters/v3/ViewSchedulePresenter.server.ts b/apps/webapp/app/presenters/v3/ViewSchedulePresenter.server.ts index 7cbee89cd8f..318b6da4921 100644 --- a/apps/webapp/app/presenters/v3/ViewSchedulePresenter.server.ts +++ b/apps/webapp/app/presenters/v3/ViewSchedulePresenter.server.ts @@ -1,5 +1,6 @@ -import { ScheduleObject } from "@trigger.dev/core/v3"; -import { PrismaClient, prisma } from "~/db.server"; +import type { ScheduleObject } from "@trigger.dev/core/v3"; +import type { PrismaClient } from "~/db.server"; +import { prisma } from "~/db.server"; import { displayableEnvironment } from "~/models/runtimeEnvironment.server"; import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; import { nextScheduledTimestamps } from "~/v3/utils/calculateNextSchedule.server"; diff --git a/apps/webapp/app/presenters/v3/WaitpointPresenter.server.ts b/apps/webapp/app/presenters/v3/WaitpointPresenter.server.ts index e94b566fcc9..cecba25c169 100644 --- a/apps/webapp/app/presenters/v3/WaitpointPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/WaitpointPresenter.server.ts @@ -68,10 +68,10 @@ export class WaitpointPresenter extends BasePresenter { ? await prettyPrintPacket(waitpoint.output, waitpoint.outputType ?? undefined) : undefined; - let isTimeout = false; + let _isTimeout = false; if (waitpoint.outputIsError && output) { if (isWaitpointOutputTimeout(output)) { - isTimeout = true; + _isTimeout = true; } } diff --git a/apps/webapp/app/presenters/v3/basePresenter.server.ts b/apps/webapp/app/presenters/v3/basePresenter.server.ts index 562582ebf30..86d3e12a2d6 100644 --- a/apps/webapp/app/presenters/v3/basePresenter.server.ts +++ b/apps/webapp/app/presenters/v3/basePresenter.server.ts @@ -1,6 +1,8 @@ -import { Span, SpanKind } from "@opentelemetry/api"; -import { $replica, PrismaClientOrTransaction, prisma } from "~/db.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { Span } from "@opentelemetry/api"; +import { SpanKind } from "@opentelemetry/api"; +import type { PrismaClientOrTransaction } from "~/db.server"; +import { $replica, prisma } from "~/db.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { attributesFromAuthenticatedEnv, tracer } from "../../v3/tracer.server"; export abstract class BasePresenter { diff --git a/apps/webapp/app/redis.server.ts b/apps/webapp/app/redis.server.ts index 211c9782947..c1b7378709b 100644 --- a/apps/webapp/app/redis.server.ts +++ b/apps/webapp/app/redis.server.ts @@ -1,4 +1,4 @@ -import { Cluster, Redis, type ClusterNode, type ClusterOptions } from "ioredis"; +import { type Cluster, Redis, type ClusterNode, type ClusterOptions } from "ioredis"; import { defaultReconnectOnError } from "@internal/redis"; import { logger } from "./services/logger.server"; diff --git a/apps/webapp/app/root.tsx b/apps/webapp/app/root.tsx index 05cb8f50648..66a33b5ce13 100644 --- a/apps/webapp/app/root.tsx +++ b/apps/webapp/app/root.tsx @@ -116,7 +116,7 @@ export function ErrorBoundary() { } export default function App() { - const { posthogProjectKey, kapa } = useTypedLoaderData(); + const { posthogProjectKey, kapa: _kapa } = useTypedLoaderData(); usePostHog(posthogProjectKey); return ( diff --git a/apps/webapp/app/routes/_app._index/route.tsx b/apps/webapp/app/routes/_app._index/route.tsx index cc4fbea8be1..607e84f0e95 100644 --- a/apps/webapp/app/routes/_app._index/route.tsx +++ b/apps/webapp/app/routes/_app._index/route.tsx @@ -8,7 +8,6 @@ import { newOrganizationPath, newProjectPath, v3EnvironmentPath, - v3ProjectPath, } from "~/utils/pathBuilder"; //this loader chooses the best project to redirect you to, ideally based on the cookie @@ -28,7 +27,7 @@ export const loader = async ({ request }: LoaderFunctionArgs) => { }); //redirect them to the most appropriate project return redirect(v3EnvironmentPath(organization, project, environment)); - } catch (e) { + } catch (_e) { const organization = await prisma.organization.findFirst({ where: { members: { diff --git a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.canceled/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.canceled/route.tsx index 0e15c707e0c..0715f92ff8f 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.canceled/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.canceled/route.tsx @@ -1,4 +1,4 @@ -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { redirectWithErrorMessage } from "~/models/message.server"; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.complete/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.complete/route.tsx index bb49957f5f1..4dfd3363b37 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.complete/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.complete/route.tsx @@ -1,4 +1,4 @@ -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { redirect } from "remix-typedjson"; import { z } from "zod"; import { prisma } from "~/db.server"; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.failed/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.failed/route.tsx index bdfa0fe7598..77869dc2926 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.failed/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.failed/route.tsx @@ -1,4 +1,4 @@ -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { redirectWithErrorMessage } from "~/models/message.server"; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_failed/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_failed/route.tsx index 9ae5beec499..941f7e4d9c5 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_failed/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_failed/route.tsx @@ -1,4 +1,4 @@ -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { redirectWithErrorMessage } from "~/models/message.server"; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_success/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_success/route.tsx index e7f02164a0d..fb7a005061a 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_success/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_success/route.tsx @@ -1,9 +1,9 @@ -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { redirect } from "remix-typedjson"; import { z } from "zod"; import { prisma } from "~/db.server"; import { redirectWithSuccessMessage } from "~/models/message.server"; -import { newProjectPath, selectPlanPath, v3BillingPath } from "~/utils/pathBuilder"; +import { newProjectPath, v3BillingPath } from "~/utils/pathBuilder"; const ParamsSchema = z.object({ organizationId: z.string(), diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.agents.$agentParam/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.agents.$agentParam/route.tsx index 75e2de21a96..560012b34ba 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.agents.$agentParam/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.agents.$agentParam/route.tsx @@ -9,15 +9,13 @@ import { CubeSparkleIcon } from "~/assets/icons/CubeSparkleIcon"; import { PageBody } from "~/components/layout/AppLayout"; import { DirectionSchema, ListPagination } from "~/components/ListPagination"; import { LinkButton } from "~/components/primitives/Buttons"; +import { buildActivityTimeAxis } from "~/components/primitives/charts/activityTimeAxis"; import { ChartCard } from "~/components/primitives/charts/ChartCard"; -import { ChartSyncProvider } from "~/components/primitives/charts/ChartSyncContext"; -import { useZoomToTimeFilter } from "~/hooks/useZoomToTimeFilter"; import { Chart, type ChartConfig } from "~/components/primitives/charts/ChartCompound"; -import { buildActivityTimeAxis } from "~/components/primitives/charts/activityTimeAxis"; +import { ChartSyncProvider } from "~/components/primitives/charts/ChartSyncContext"; import { statusColor } from "~/components/primitives/charts/statusColors"; -import { TabButton, TabContainer } from "~/components/primitives/Tabs"; import { CopyableText } from "~/components/primitives/CopyableText"; -import { DateTime, RelativeDateTime } from "~/components/primitives/DateTime"; +import { DateTime } from "~/components/primitives/DateTime"; import { Header2 } from "~/components/primitives/Headers"; import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; import { Paragraph } from "~/components/primitives/Paragraph"; @@ -28,6 +26,7 @@ import { ResizablePanelGroup, } from "~/components/primitives/Resizable"; import { Spinner } from "~/components/primitives/Spinner"; +import { TabButton, TabContainer } from "~/components/primitives/Tabs"; import { TimeFilter, timeFilterFromTo } from "~/components/runs/v3/SharedFilters"; import { TaskRunsTable } from "~/components/runs/v3/TaskRunsTable"; import { SessionsTable } from "~/components/sessions/v1/SessionsTable"; @@ -35,6 +34,7 @@ import { $replica } from "~/db.server"; import { useEnvironment } from "~/hooks/useEnvironment"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; +import { useZoomToTimeFilter } from "~/hooks/useZoomToTimeFilter"; import { findProjectBySlug } from "~/models/project.server"; import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; import { diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.alerts.new/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.alerts.new/route.tsx index c3fbd269fad..597abb3b170 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.alerts.new/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.alerts.new/route.tsx @@ -230,7 +230,10 @@ export default function Page() { navigation.formMethod === "post" && navigation.formData?.get("action") === "create"; - const [form, { channelValue, alertTypes, environmentTypes, type, integrationId }] = useForm({ + const [ + form, + { channelValue, alertTypes, environmentTypes, type, integrationId: _integrationId }, + ] = useForm({ id: "create-alert", // TODO: type this lastResult: lastSubmission as any, diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx index bfeb6ea9fee..839b66f70b3 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx @@ -90,7 +90,7 @@ export const loader = dashboardLoader( export default function Page() { const { environment, hasVercelIntegration, canReadApiKeys } = useTypedLoaderData(); - const organization = useOrganization(); + const _organization = useOrganization(); if (!environment) { throw new Response(undefined, { diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx index 9cb0e9a8591..cd9810ae3dc 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx @@ -191,7 +191,7 @@ export default function Page() { const { branchableEnvironment, branches, - hasFilters, + hasFilters: _hasFilters, limits, currentPage, totalPages, diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions.$bulkActionParam/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions.$bulkActionParam/route.tsx index f05ec143817..0b6ffb50ede 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions.$bulkActionParam/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions.$bulkActionParam/route.tsx @@ -8,12 +8,12 @@ import { z } from "zod"; import { ExitIcon } from "~/assets/icons/ExitIcon"; import { RunsIcon } from "~/assets/icons/RunsIcon"; import { BulkActionFilterSummary } from "~/components/BulkActionFilterSummary"; -import { Button, LinkButton } from "~/components/primitives/Buttons"; -import { PermissionButton } from "~/components/primitives/PermissionButton"; +import { LinkButton } from "~/components/primitives/Buttons"; import { CopyableText } from "~/components/primitives/CopyableText"; import { DateTime } from "~/components/primitives/DateTime"; import { Header2 } from "~/components/primitives/Headers"; import { Paragraph } from "~/components/primitives/Paragraph"; +import { PermissionButton } from "~/components/primitives/PermissionButton"; import * as Property from "~/components/primitives/PropertyTable"; import { BulkActionStatusCombo, BulkActionTypeCombo } from "~/components/runs/v3/BulkAction"; import { UserAvatar } from "~/components/UserProfilePhoto"; @@ -121,7 +121,7 @@ export const action = dashboardAction( } const service = new BulkActionService(); - const [error, result] = await tryCatch(service.abort(bulkActionParam, environment.id)); + const [error, _result] = await tryCatch(service.abort(bulkActionParam, environment.id)); if (error) { logger.error("Failed to abort bulk action", { diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions/route.tsx index a17f3e7d99e..ff209f417bf 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.bulk-actions/route.tsx @@ -103,7 +103,12 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => { }; export default function Page() { - const { bulkActions, currentPage, totalPages, totalCount } = useTypedLoaderData(); + const { + bulkActions, + currentPage, + totalPages, + totalCount: _totalCount, + } = useTypedLoaderData(); const organization = useOrganization(); const project = useProject(); const environment = useEnvironment(); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency/route.tsx index 9957aad21ce..edd8cce1737 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency/route.tsx @@ -5,13 +5,11 @@ import { EnvelopeIcon, ExclamationTriangleIcon, InformationCircleIcon, - PlusIcon, } from "@heroicons/react/20/solid"; import { DialogClose } from "@radix-ui/react-dialog"; import { Form, useActionData, - useNavigate, useNavigation, useSearchParams, type MetaFunction, @@ -19,12 +17,12 @@ import { import { json, type ActionFunctionArgs, type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { tryCatch } from "@trigger.dev/core"; import { useEffect, useState } from "react"; -import simplur from "simplur"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; +import simplur from "simplur"; import { z } from "zod"; import { AdminDebugTooltip } from "~/components/admin/debugTooltip"; -import { Feedback } from "~/components/Feedback"; import { EnvironmentCombo } from "~/components/environments/EnvironmentLabel"; +import { Feedback } from "~/components/Feedback"; import { MainHorizontallyCenteredContainer, PageBody, @@ -43,6 +41,7 @@ import { Label } from "~/components/primitives/Label"; import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; import { Paragraph } from "~/components/primitives/Paragraph"; import * as Property from "~/components/primitives/PropertyTable"; +import { SpinnerWhite } from "~/components/primitives/Spinner"; import { Table, TableBody, @@ -53,8 +52,8 @@ import { } from "~/components/primitives/Table"; import { InfoIconTooltip } from "~/components/primitives/Tooltip"; import { useFeatures } from "~/hooks/useFeatures"; -import { useShowSelfServe } from "~/hooks/useShowSelfServe"; import { useOrganization } from "~/hooks/useOrganizations"; +import { useShowSelfServe } from "~/hooks/useShowSelfServe"; import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; import { findProjectBySlug } from "~/models/project.server"; import { @@ -68,14 +67,12 @@ import { getSelfServePurchaseBlockReason, } from "~/services/platform.v3.server"; import { requireUserId } from "~/services/session.server"; +import { cn } from "~/utils/cn"; import { formatCurrency, formatNumber } from "~/utils/numberFormatter"; import { concurrencyPath, EnvironmentParamSchema, v3BillingPath } from "~/utils/pathBuilder"; +import { AllocateConcurrencyService } from "~/v3/services/allocateConcurrency.server"; import { SetConcurrencyAddOnService } from "~/v3/services/setConcurrencyAddOn.server"; import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route"; -import { SpinnerWhite } from "~/components/primitives/Spinner"; -import { cn } from "~/utils/cn"; -import { logger } from "~/services/logger.server"; -import { AllocateConcurrencyService } from "~/v3/services/allocateConcurrency.server"; export const meta: MetaFunction = () => { return [ @@ -87,7 +84,11 @@ export const meta: MetaFunction = () => { export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); - const { organizationSlug, projectParam, envParam } = EnvironmentParamSchema.parse(params); + const { + organizationSlug, + projectParam, + envParam: _envParam, + } = EnvironmentParamSchema.parse(params); const project = await findProjectBySlug(organizationSlug, projectParam, userId); if (!project) { diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId/route.tsx index ee31b2e6a8a..edf91e8ffbc 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId/route.tsx @@ -2,7 +2,8 @@ import { ArrowUpCircleIcon, PlusIcon, TrashIcon } from "@heroicons/react/20/soli import { DialogClose } from "@radix-ui/react-dialog"; import { type ActionFunctionArgs, type LoaderFunctionArgs } from "@remix-run/node"; import { Form, useNavigation } from "@remix-run/react"; -import { IconChartHistogram, IconEdit, IconTypography } from "@tabler/icons-react"; +import { IconChartHistogram, IconEdit } from "@tabler/icons-react"; +import { Type } from "lucide-react"; import { useCallback, useEffect, useState } from "react"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; @@ -56,7 +57,6 @@ import { } from "~/utils/pathBuilder"; import { MetricDashboard } from "../_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.$dashboardKey/route"; import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route"; -import { Type } from "lucide-react"; const ParamSchema = EnvironmentParamSchema.extend({ dashboardId: z.string(), @@ -185,7 +185,7 @@ export default function Page() { isAdmin, maxRows, possibleTasks, - widgetCount: initialWidgetCount, + widgetCount: _initialWidgetCount, } = useTypedLoaderData(); const organization = useOrganization(); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables.new/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables.new/route.tsx index adfa701ff0b..12d360a4188 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables.new/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables.new/route.tsx @@ -1,10 +1,4 @@ -import { - type FieldMetadata, - type FormMetadata, - getFormProps, - getInputProps, - useForm, -} from "@conform-to/react"; +import { getFormProps, useForm, type FieldMetadata, type FormMetadata } from "@conform-to/react"; import { parseWithZod } from "@conform-to/zod"; import { LockClosedIcon, @@ -32,6 +26,7 @@ import { Input } from "~/components/primitives/Input"; import { InputGroup } from "~/components/primitives/InputGroup"; import { Label } from "~/components/primitives/Label"; import { Paragraph } from "~/components/primitives/Paragraph"; +import { Select, SelectItem } from "~/components/primitives/Select"; import { Switch } from "~/components/primitives/Switch"; import { TextLink } from "~/components/primitives/TextLink"; import { @@ -47,12 +42,12 @@ import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { useTypedMatchesData } from "~/hooks/useTypedMatchData"; import { resolveOrgIdFromSlug } from "~/models/organization.server"; -import { dashboardAction } from "~/services/routeBuilders/dashboardBuilder"; -import { cn } from "~/utils/cn"; import { environmentVariablesRouteId, type loader as environmentVariablesLoader, } from "~/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route"; +import { dashboardAction } from "~/services/routeBuilders/dashboardBuilder"; +import { cn } from "~/utils/cn"; import { EnvironmentParamSchema, v3BillingPath, @@ -60,7 +55,6 @@ import { } from "~/utils/pathBuilder"; import { EnvironmentVariablesRepository } from "~/v3/environmentVariables/environmentVariablesRepository.server"; import { EnvironmentVariableKey } from "~/v3/environmentVariables/repository"; -import { Select, SelectItem } from "~/components/primitives/Select"; const Variable = z.object({ key: EnvironmentVariableKey, @@ -207,7 +201,7 @@ export const action = dashboardAction( ); export default function Page() { - const [isOpen, setIsOpen] = useState(true); + const [isOpen, _setIsOpen] = useState(true); const parentData = useTypedMatchesData({ id: environmentVariablesRouteId, }); @@ -566,7 +560,7 @@ function VariableFields({ const [firstPair, ...rest] = keyValuePairs; update(index, firstPair); - for (const pair of rest) { + for (const _pair of rest) { form.insert({ name: variablesFields.name }); } insertAfter(index, rest); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route.tsx index afea881feb1..d2b2a733c40 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route.tsx @@ -11,18 +11,20 @@ import { } from "@heroicons/react/20/solid"; import { Form, - type MetaFunction, Outlet, useActionData, useFetcher, useNavigation, useRevalidator, + type MetaFunction, } from "@remix-run/react"; import { json } from "@remix-run/server-runtime"; import { useVirtualizer } from "@tanstack/react-virtual"; +import { fromPromise } from "neverthrow"; import { useEffect, useLayoutEffect, useMemo, useRef, useState, type RefObject } from "react"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; +import { UserAvatar } from "~/components/UserProfilePhoto"; import { EnvironmentCombo } from "~/components/environments/EnvironmentLabel"; import { VercelLogo } from "~/components/integrations/VercelLogo"; import { PageBody, PageContainer } from "~/components/layout/AppLayout"; @@ -37,10 +39,10 @@ import { FormError } from "~/components/primitives/FormError"; import { Header2 } from "~/components/primitives/Headers"; import { Input } from "~/components/primitives/Input"; import { InputGroup } from "~/components/primitives/InputGroup"; -import { SearchInput } from "~/components/primitives/SearchInput"; import { Label } from "~/components/primitives/Label"; import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; import { Paragraph } from "~/components/primitives/Paragraph"; +import { SearchInput } from "~/components/primitives/SearchInput"; import { Switch } from "~/components/primitives/Switch"; import { Table, @@ -55,17 +57,19 @@ import { SimpleTooltip } from "~/components/primitives/Tooltip"; import { prisma } from "~/db.server"; import { useEnvironment } from "~/hooks/useEnvironment"; import { useFuzzyFilter } from "~/hooks/useFuzzyFilter"; -import { useSearchParams } from "~/hooks/useSearchParam"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; +import { useSearchParams } from "~/hooks/useSearchParam"; import { redirectWithSuccessMessage } from "~/models/message.server"; import { resolveOrgIdFromSlug } from "~/models/organization.server"; import { - type EnvironmentVariableWithSetValues, EnvironmentVariablesPresenter, + type EnvironmentVariableWithSetValues, } from "~/presenters/v3/EnvironmentVariablesPresenter.server"; import { type EnvironmentVariablesEnvironment } from "~/presenters/v3/environmentVariablesEnvironments.server"; +import { logger } from "~/services/logger.server"; import { dashboardAction, dashboardLoader } from "~/services/routeBuilders/dashboardBuilder"; +import { VercelIntegrationService } from "~/services/vercelIntegration.server"; import { cn } from "~/utils/cn"; import { EnvironmentParamSchema, @@ -77,15 +81,10 @@ import { EnvironmentVariablesRepository } from "~/v3/environmentVariables/enviro import { DeleteEnvironmentVariableValue, EditEnvironmentVariableValue, - EnvironmentVariable, } from "~/v3/environmentVariables/repository"; -import { UserAvatar } from "~/components/UserProfilePhoto"; -import { VercelIntegrationService } from "~/services/vercelIntegration.server"; -import { fromPromise } from "neverthrow"; -import { logger } from "~/services/logger.server"; import { - shouldSyncEnvVar, isPullEnvVarsEnabledForEnvironment, + shouldSyncEnvVar, type TriggerEnvironmentType, } from "~/v3/vercel/vercelProjectIntegrationSchema"; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.errors._index/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.errors._index/route.tsx index b86882e7d62..4c6a4ee692f 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.errors._index/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.errors._index/route.tsx @@ -17,6 +17,11 @@ import { import { TypedAwait, typeddefer, useTypedLoaderData } from "remix-typedjson"; import { BugIcon } from "~/assets/icons/BugIcon"; import { ErrorStatusBadge } from "~/components/errors/ErrorStatusBadge"; +import { + CustomIgnoreDialog, + ErrorStatusMenuItems, + statusActionToastMessage, +} from "~/components/errors/ErrorStatusMenu"; import { PageBody } from "~/components/layout/AppLayout"; import { ListPagination } from "~/components/ListPagination"; import { LogsTaskFilter } from "~/components/logs/LogsTaskFilter"; @@ -28,9 +33,9 @@ import { formatDateTime, RelativeDateTime } from "~/components/primitives/DateTi import { Header3 } from "~/components/primitives/Headers"; import { NavBar, PageTitle } from "~/components/primitives/PageHeader"; import { Paragraph } from "~/components/primitives/Paragraph"; +import { PopoverSectionHeader } from "~/components/primitives/Popover"; import { SearchInput } from "~/components/primitives/SearchInput"; import { - ComboBox, SelectItem, SelectList, SelectPopover, @@ -48,12 +53,6 @@ import { TableHeaderCell, TableRow, } from "~/components/primitives/Table"; -import { PopoverSectionHeader } from "~/components/primitives/Popover"; -import { - ErrorStatusMenuItems, - CustomIgnoreDialog, - statusActionToastMessage, -} from "~/components/errors/ErrorStatusMenu"; import { useToast } from "~/components/primitives/Toast"; import { SimpleTooltip } from "~/components/primitives/Tooltip"; import TooltipPortal from "~/components/primitives/TooltipPortal"; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx index f0ecd687a46..a963fc02100 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx @@ -13,7 +13,8 @@ import { getCurrentPlan } from "~/services/platform.v3.server"; import { EnvironmentParamSchema } from "~/utils/pathBuilder"; import { findProjectBySlug } from "~/models/project.server"; import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; -import { LogsListPresenter, LogEntry } from "~/presenters/v3/LogsListPresenter.server"; +import type { LogEntry } from "~/presenters/v3/LogsListPresenter.server"; +import { LogsListPresenter } from "~/presenters/v3/LogsListPresenter.server"; import type { LogLevel } from "~/utils/logUtils"; import { $replica, prisma } from "~/db.server"; import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models.$modelId/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models.$modelId/route.tsx index 94b4bfc3144..e27f63a7e29 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models.$modelId/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models.$modelId/route.tsx @@ -4,7 +4,9 @@ import { type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { useState } from "react"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; +import { InlineCode } from "~/components/code/InlineCode"; import { PageBody, PageContainer } from "~/components/layout/AppLayout"; +import type { QueryWidgetConfig } from "~/components/metrics/QueryWidget"; import { Badge } from "~/components/primitives/Badge"; import { LinkButton } from "~/components/primitives/Buttons"; import { Callout } from "~/components/primitives/Callout"; @@ -13,34 +15,24 @@ import { Input } from "~/components/primitives/Input"; import { Label } from "~/components/primitives/Label"; import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; import * as Property from "~/components/primitives/PropertyTable"; -import { - Table, - TableBody, - TableCell, - TableHeader, - TableHeaderCell, - TableRow, -} from "~/components/primitives/Table"; import { TabButton, TabContainer } from "~/components/primitives/Tabs"; -import { InlineCode } from "~/components/code/InlineCode"; -import { MetricWidget } from "~/routes/resources.metric"; -import type { QueryWidgetConfig } from "~/components/metrics/QueryWidget"; +import { useEnvironment } from "~/hooks/useEnvironment"; +import { useOrganization } from "~/hooks/useOrganizations"; +import { useProject } from "~/hooks/useProject"; import { findProjectBySlug } from "~/models/project.server"; import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; import { ModelRegistryPresenter } from "~/presenters/v3/ModelRegistryPresenter.server"; +import { MetricWidget } from "~/routes/resources.metric"; import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; import { requireUserId } from "~/services/session.server"; -import { useOrganization } from "~/hooks/useOrganizations"; -import { useProject } from "~/hooks/useProject"; -import { useEnvironment } from "~/hooks/useEnvironment"; -import { EnvironmentParamSchema, v3ModelComparePath, v3ModelsPath } from "~/utils/pathBuilder"; import { - formatModelPrice, - formatTokenCount, - formatModelCost, formatFeature, + formatModelCost, + formatModelPrice, formatProviderName, + formatTokenCount, } from "~/utils/modelFormatters"; +import { EnvironmentParamSchema, v3ModelComparePath, v3ModelsPath } from "~/utils/pathBuilder"; const ParamSchema = EnvironmentParamSchema.extend({ modelId: z.string(), diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models._index/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models._index/route.tsx index 56fc2591d0a..b797e6434f0 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models._index/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models._index/route.tsx @@ -1,3 +1,4 @@ +import * as Ariakit from "@ariakit/react"; import { AdjustmentsHorizontalIcon, ArrowTopRightOnSquareIcon, @@ -5,7 +6,6 @@ import { CubeIcon, XMarkIcon, } from "@heroicons/react/20/solid"; -import * as Ariakit from "@ariakit/react"; import { Form, type MetaFunction, @@ -31,10 +31,10 @@ import { import { ExitIcon } from "~/assets/icons/ExitIcon"; import { InlineCode } from "~/components/code/InlineCode"; import { PageBody, PageContainer } from "~/components/layout/AppLayout"; +import type { QueryWidgetConfig } from "~/components/metrics/QueryWidget"; import { AppliedFilter } from "~/components/primitives/AppliedFilter"; import { Badge } from "~/components/primitives/Badge"; import { Button, LinkButton } from "~/components/primitives/Buttons"; -import { Callout } from "~/components/primitives/Callout"; import { Checkbox } from "~/components/primitives/Checkbox"; import { DateTime } from "~/components/primitives/DateTime"; import { Dialog, DialogContent, DialogHeader, DialogTitle } from "~/components/primitives/Dialog"; @@ -42,22 +42,22 @@ import { Header2 } from "~/components/primitives/Headers"; import { NavBar, PageTitle } from "~/components/primitives/PageHeader"; import * as Property from "~/components/primitives/PropertyTable"; import { + collapsibleHandleClassName, RESIZABLE_PANEL_ANIMATION, ResizableHandle, ResizablePanel, ResizablePanelGroup, - collapsibleHandleClassName, useFrozenValue, } from "~/components/primitives/Resizable"; import { SearchInput } from "~/components/primitives/SearchInput"; -import { ShortcutKey } from "~/components/primitives/ShortcutKey"; -import { Switch } from "~/components/primitives/Switch"; import { - SelectProvider, - SelectPopover, - SelectList, SelectItem, + SelectList, + SelectPopover, + SelectProvider, } from "~/components/primitives/Select"; +import { ShortcutKey } from "~/components/primitives/ShortcutKey"; +import { Switch } from "~/components/primitives/Switch"; import { Table, TableBody, @@ -67,50 +67,48 @@ import { TableRow, } from "~/components/primitives/Table"; import { TabButton, TabContainer } from "~/components/primitives/Tabs"; +import { UsageSparkline } from "~/components/primitives/UsageSparkline"; import { appliedSummary, TimeFilter, type TimeFilterApplyValues, timeFilterFromTo, } from "~/components/runs/v3/SharedFilters"; -import { parseFiniteInt } from "~/utils/searchParams"; +import { useEnvironment } from "~/hooks/useEnvironment"; +import { useOptimisticLocation } from "~/hooks/useOptimisticLocation"; +import { useOrganization } from "~/hooks/useOrganizations"; +import { useProject } from "~/hooks/useProject"; import { useSearchParams } from "~/hooks/useSearchParam"; import { useShortcutKeys } from "~/hooks/useShortcutKeys"; -import { useOptimisticLocation } from "~/hooks/useOptimisticLocation"; import { findProjectBySlug } from "~/models/project.server"; import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; import { type ModelCatalogItem, type ModelComparisonItem, + ModelRegistryPresenter, type PopularModel, type ProjectModelUsageItem, - ModelRegistryPresenter, } from "~/presenters/v3/ModelRegistryPresenter.server"; +import { MetricWidget } from "~/routes/resources.metric"; import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; import { requireUserId } from "~/services/session.server"; -import { useEnvironment } from "~/hooks/useEnvironment"; -import { useOrganization } from "~/hooks/useOrganizations"; -import { useProject } from "~/hooks/useProject"; import { - EnvironmentParamSchema, - v3BuiltInDashboardPath, - v3ModelComparePath, -} from "~/utils/pathBuilder"; -import { - formatModelPrice, - formatTokenCount, formatFeature, - formatProviderName, formatModelCost, + formatModelPrice, + formatProviderName, + formatTokenCount, } from "~/utils/modelFormatters"; import { formatNumberCompact } from "~/utils/numberFormatter"; -import { Spinner } from "~/components/primitives/Spinner"; -import { UsageSparkline } from "~/components/primitives/UsageSparkline"; -import { MetricWidget } from "~/routes/resources.metric"; -import type { QueryWidgetConfig } from "~/components/metrics/QueryWidget"; +import { + EnvironmentParamSchema, + v3BuiltInDashboardPath, + v3ModelComparePath, +} from "~/utils/pathBuilder"; +import { parseFiniteInt } from "~/utils/searchParams"; -import { type loader as compareLoader } from "~/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models.compare/route"; import { IconColumns3 } from "@tabler/icons-react"; +import { type loader as compareLoader } from "~/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models.compare/route"; export const meta: MetaFunction = () => { return [{ title: "Models | Trigger.dev" }]; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam/route.tsx index 1dc762825bb..9b394570912 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam/route.tsx @@ -1,23 +1,26 @@ +import type { UIMessage } from "@ai-sdk/react"; +import { useChat } from "@ai-sdk/react"; import { BoltIcon, CheckIcon, StopIcon } from "@heroicons/react/20/solid"; import { ClipboardIcon, TrashIcon } from "@heroicons/react/24/outline"; import { type MetaFunction } from "@remix-run/node"; import { Link, useFetcher, useNavigate, useRouteLoaderData } from "@remix-run/react"; -import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { type LoaderFunctionArgs } from "@remix-run/server-runtime"; -import { useCallback, useEffect, useRef, useState } from "react"; -import { useChat } from "@ai-sdk/react"; +import { generateJWT as internal_generateJWT, MachinePresetName } from "@trigger.dev/core/v3"; import { TriggerChatTransport } from "@trigger.dev/sdk/chat"; +import { useCallback, useEffect, useRef, useState } from "react"; +import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { CubeSparkleIcon } from "~/assets/icons/CubeSparkleIcon"; import { PlusIcon } from "~/assets/icons/PlusIcon"; import { RunsIcon } from "~/assets/icons/RunsIcon"; +import { JSONEditor } from "~/components/code/JSONEditor"; import { Button } from "~/components/primitives/Buttons"; -import { SimpleTooltip } from "~/components/primitives/Tooltip"; import { - Popover, - PopoverContent, - PopoverMenuItem, - PopoverVerticalEllipseTrigger, -} from "~/components/primitives/Popover"; + ClientTabs, + ClientTabsContent, + ClientTabsList, + ClientTabsTrigger, +} from "~/components/primitives/ClientTabs"; +import { DateTime } from "~/components/primitives/DateTime"; import { DurationPicker } from "~/components/primitives/DurationPicker"; import { Header3 } from "~/components/primitives/Headers"; import { Hint } from "~/components/primitives/Hint"; @@ -25,41 +28,37 @@ import { Input } from "~/components/primitives/Input"; import { InputGroup } from "~/components/primitives/InputGroup"; import { Label } from "~/components/primitives/Label"; import { Paragraph } from "~/components/primitives/Paragraph"; -import { Spinner } from "~/components/primitives/Spinner"; -import type { PlaygroundConversation } from "~/presenters/v3/PlaygroundPresenter.server"; -import { DateTime } from "~/components/primitives/DateTime"; -import { cn } from "~/utils/cn"; -import { JSONEditor } from "~/components/code/JSONEditor"; -import { ToolUseRow, AssistantResponse, ChatBubble } from "~/components/runs/v3/ai/AIChatMessages"; -import { MessageBubble } from "~/components/runs/v3/agent/AgentMessageView"; -import { useAutoScrollToBottom } from "~/hooks/useAutoScrollToBottom"; +import { + Popover, + PopoverContent, + PopoverMenuItem, + PopoverVerticalEllipseTrigger, +} from "~/components/primitives/Popover"; import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "~/components/primitives/Resizable"; -import { - ClientTabs, - ClientTabsContent, - ClientTabsList, - ClientTabsTrigger, -} from "~/components/primitives/ClientTabs"; +import { Select, SelectItem } from "~/components/primitives/Select"; +import { Spinner } from "~/components/primitives/Spinner"; +import { SimpleTooltip } from "~/components/primitives/Tooltip"; +import { MessageBubble } from "~/components/runs/v3/agent/AgentMessageView"; +import { RunTagInput } from "~/components/runs/v3/RunTagInput"; +import { env as serverEnv } from "~/env.server"; +import { useAutoScrollToBottom } from "~/hooks/useAutoScrollToBottom"; import { useEnvironment } from "~/hooks/useEnvironment"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { findProjectBySlug } from "~/models/project.server"; import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; +import type { PlaygroundConversation } from "~/presenters/v3/PlaygroundPresenter.server"; import { playgroundPresenter } from "~/presenters/v3/PlaygroundPresenter.server"; +import { AIPayloadTabContent } from "~/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/AIPayloadTabContent"; +import { SchemaTabContent } from "~/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/SchemaTabContent"; +import { extractJwtSigningSecretKey } from "~/services/realtime/jwtAuth.server"; import { requireUserId } from "~/services/session.server"; -import { RunTagInput } from "~/components/runs/v3/RunTagInput"; -import { Select, SelectItem } from "~/components/primitives/Select"; +import { cn } from "~/utils/cn"; import { EnvironmentParamSchema } from "~/utils/pathBuilder"; -import { env as serverEnv } from "~/env.server"; -import { generateJWT as internal_generateJWT, MachinePresetName } from "@trigger.dev/core/v3"; -import { extractJwtSigningSecretKey } from "~/services/realtime/jwtAuth.server"; -import { SchemaTabContent } from "~/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/SchemaTabContent"; -import { AIPayloadTabContent } from "~/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/AIPayloadTabContent"; -import type { UIMessage } from "@ai-sdk/react"; export const meta: MetaFunction = () => { return [{ title: "Playground | Trigger.dev" }]; @@ -199,7 +198,7 @@ function PlaygroundChat() { ? (recentConversations.find((c) => c.chatId === activeConversation.chatId)?.id ?? null) : null ); - const [chatId, setChatId] = useState(() => activeConversation?.chatId ?? crypto.randomUUID()); + const [chatId, _setChatId] = useState(() => activeConversation?.chatId ?? crypto.randomUUID()); const [clientDataJson, setClientDataJson] = useState(() => activeConversation?.clientData ? JSON.stringify(activeConversation.clientData, null, 2) : "{}" ); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground/route.tsx index 879124c4041..da486898d4f 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground/route.tsx @@ -1,6 +1,6 @@ import { BookOpenIcon, ChevronUpDownIcon, CpuChipIcon } from "@heroicons/react/20/solid"; import { json, type MetaFunction } from "@remix-run/node"; -import { Outlet, useNavigate, useParams, useLoaderData } from "@remix-run/react"; +import { Outlet, useLoaderData, useNavigate, useParams } from "@remix-run/react"; import { type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { CubeSparkleIcon } from "~/assets/icons/CubeSparkleIcon"; import { CodeBlock } from "~/components/code/CodeBlock"; @@ -23,12 +23,7 @@ import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; import { playgroundPresenter } from "~/presenters/v3/PlaygroundPresenter.server"; import { RegionsPresenter } from "~/presenters/v3/RegionsPresenter.server"; import { requireUser } from "~/services/session.server"; -import { - docsPath, - EnvironmentParamSchema, - v3PlaygroundAgentPath, - v3PlaygroundPath, -} from "~/utils/pathBuilder"; +import { docsPath, EnvironmentParamSchema, v3PlaygroundAgentPath } from "~/utils/pathBuilder"; export const meta: MetaFunction = () => { return [{ title: "Playground | Trigger.dev" }]; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.query/TableSchemaContent.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.query/TableSchemaContent.tsx index e8ce98f1d49..285a1f68731 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.query/TableSchemaContent.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.query/TableSchemaContent.tsx @@ -1,8 +1,7 @@ -import { useState } from "react"; import type { ColumnSchema } from "@internal/tsql"; +import { useState } from "react"; import { Badge } from "~/components/primitives/Badge"; import { CopyableText } from "~/components/primitives/CopyableText"; -import { Header3 } from "~/components/primitives/Headers"; import { Paragraph } from "~/components/primitives/Paragraph"; import SegmentedControl from "~/components/primitives/SegmentedControl"; import { querySchemas } from "~/v3/querySchemas"; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx index 176dfc1d9e9..877b1235a97 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx @@ -2,26 +2,24 @@ import { AdjustmentsHorizontalIcon, ArrowUpCircleIcon, BookOpenIcon, - ChatBubbleLeftEllipsisIcon, PauseIcon, PlayIcon, RectangleStackIcon, } from "@heroicons/react/20/solid"; import { DialogClose } from "@radix-ui/react-dialog"; -import { Form, useNavigation, useSearchParams, type MetaFunction } from "@remix-run/react"; +import { Form, useNavigation, type MetaFunction } from "@remix-run/react"; import { type ActionFunctionArgs, type LoaderFunctionArgs } from "@remix-run/server-runtime"; -import type { RuntimeEnvironmentType } from "@trigger.dev/database"; import type { QueueItem } from "@trigger.dev/core/v3/schemas"; +import type { RuntimeEnvironmentType } from "@trigger.dev/database"; import { useEffect, useState } from "react"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; +import { ConcurrencyIcon } from "~/assets/icons/ConcurrencyIcon"; import { RunsIcon } from "~/assets/icons/RunsIcon"; -import { TaskIconSmall } from "~/assets/icons/TaskIcon"; import upgradeForQueuesPath from "~/assets/images/queues-dashboard.png"; import { AdminDebugTooltip } from "~/components/admin/debugTooltip"; import { QueuesHasNoTasks } from "~/components/BlankStatePanels"; import { environmentFullTitle } from "~/components/environments/EnvironmentLabel"; -import { Feedback } from "~/components/Feedback"; import { PageBody, PageContainer } from "~/components/layout/AppLayout"; import { BigNumber } from "~/components/metrics/BigNumber"; import { Badge } from "~/components/primitives/Badge"; @@ -31,11 +29,11 @@ import { Dialog, DialogContent, DialogHeader, DialogTrigger } from "~/components import { FormButtons } from "~/components/primitives/FormButtons"; import { Header3 } from "~/components/primitives/Headers"; import { Input } from "~/components/primitives/Input"; -import { SearchInput } from "~/components/primitives/SearchInput"; import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; import { PaginationControls } from "~/components/primitives/Pagination"; import { Paragraph } from "~/components/primitives/Paragraph"; import { PopoverMenuItem } from "~/components/primitives/Popover"; +import { SearchInput } from "~/components/primitives/SearchInput"; import { Spinner } from "~/components/primitives/Spinner"; import { Table, @@ -54,6 +52,7 @@ import { TooltipProvider, TooltipTrigger, } from "~/components/primitives/Tooltip"; +import { QueueName } from "~/components/runs/v3/QueueName"; import { env } from "~/env.server"; import { useAutoRevalidate } from "~/hooks/useAutoRevalidate"; import { useEnvironment } from "~/hooks/useEnvironment"; @@ -79,8 +78,6 @@ import { concurrencySystem } from "~/v3/services/concurrencySystemInstance.serve import { PauseEnvironmentService } from "~/v3/services/pauseEnvironment.server"; import { PauseQueueService } from "~/v3/services/pauseQueue.server"; import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route"; -import { ConcurrencyIcon } from "~/assets/icons/ConcurrencyIcon"; -import { QueueName } from "~/components/runs/v3/QueueName"; const SearchParamsSchema = z.object({ query: z.string().optional(), diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.regions/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.regions/route.tsx index d006a853e5e..f6b3f9e4d7f 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.regions/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.regions/route.tsx @@ -130,7 +130,7 @@ export const action = async ({ request, params }: ActionFunctionArgs) => { }; export default function Page() { - const { regions, isPaying } = useTypedLoaderData(); + const { regions, isPaying: _isPaying } = useTypedLoaderData(); const organization = useOrganization(); const isAdmin = useHasAdminAccess(); const { isManagedCloud } = useFeatures(); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route.tsx index ef69033e7bf..b254988e7d9 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route.tsx @@ -8,7 +8,11 @@ import { UpsertScheduleForm } from "../resources.orgs.$organizationSlug.projects export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); - const { projectParam, envParam, organizationSlug } = EnvironmentParamSchema.parse(params); + const { + projectParam, + envParam, + organizationSlug: _organizationSlug, + } = EnvironmentParamSchema.parse(params); const presenter = new EditSchedulePresenter(); const result = await presenter.call({ diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings.integrations/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings.integrations/route.tsx index ffe79fab6ba..947efe3546a 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings.integrations/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings.integrations/route.tsx @@ -1,12 +1,11 @@ import { getFormProps, getInputProps, useForm } from "@conform-to/react"; import { parseWithZod } from "@conform-to/zod"; -import { Form, useActionData, useNavigation } from "@remix-run/react"; +import { Form, useActionData, useNavigation, useSearchParams } from "@remix-run/react"; import { json } from "@remix-run/server-runtime"; -import { typedjson, useTypedLoaderData, useTypedFetcher } from "remix-typedjson"; +import React, { useCallback, useEffect, useRef, useState } from "react"; +import { typedjson, useTypedFetcher, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; import { MainHorizontallyCenteredContainer } from "~/components/layout/AppLayout"; -import { throwPermissionDenied } from "~/utils/permissionDenied"; -import { dashboardAction, dashboardLoader } from "~/services/routeBuilders/dashboardBuilder"; import { Button } from "~/components/primitives/Buttons"; import { CheckboxWithLabel } from "~/components/primitives/Checkbox"; import { Fieldset } from "~/components/primitives/Fieldset"; @@ -18,28 +17,28 @@ import { Input } from "~/components/primitives/Input"; import { InputGroup } from "~/components/primitives/InputGroup"; import { Label } from "~/components/primitives/Label"; import { SpinnerWhite } from "~/components/primitives/Spinner"; +import { useEnvironment } from "~/hooks/useEnvironment"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; -import { useEnvironment } from "~/hooks/useEnvironment"; import { redirectBackWithErrorMessage, redirectBackWithSuccessMessage, } from "~/models/message.server"; +import { resolveOrgIdFromSlug } from "~/models/organization.server"; +import { OrgIntegrationRepository } from "~/models/orgIntegration.server"; +import { logger } from "~/services/logger.server"; import { ProjectSettingsService } from "~/services/projectSettings.server"; import { ProjectSettingsPresenter } from "~/services/projectSettingsPresenter.server"; -import { logger } from "~/services/logger.server"; +import { dashboardAction, dashboardLoader } from "~/services/routeBuilders/dashboardBuilder"; import { EnvironmentParamSchema, v3BillingPath, vercelResourcePath } from "~/utils/pathBuilder"; -import React, { useEffect, useState, useCallback, useRef } from "react"; -import { useSearchParams } from "@remix-run/react"; +import { throwPermissionDenied } from "~/utils/permissionDenied"; import { type BuildSettings } from "~/v3/buildSettings"; import { GitHubSettingsPanel } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github"; +import type { loader as vercelLoader } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel"; import { - VercelSettingsPanel, VercelOnboardingModal, + VercelSettingsPanel, } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel"; -import type { loader as vercelLoader } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel"; -import { resolveOrgIdFromSlug } from "~/models/organization.server"; -import { OrgIntegrationRepository } from "~/models/orgIntegration.server"; export const loader = dashboardLoader( { diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam/route.tsx index 823d2a96e65..614d7ce4bfd 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam/route.tsx @@ -1,22 +1,24 @@ -import { type MetaFunction, useFetcher, useRevalidator } from "@remix-run/react"; +import { BookOpenIcon, PlusIcon } from "@heroicons/react/20/solid"; +import { useFetcher, useRevalidator, type MetaFunction } from "@remix-run/react"; import { type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react"; import { TypedAwait, typeddefer, useTypedFetcher, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; -import { BookOpenIcon, PlusIcon } from "@heroicons/react/20/solid"; import { BeakerIcon } from "~/assets/icons/BeakerIcon"; import { ClockIcon } from "~/assets/icons/ClockIcon"; import { ListCheckedIcon } from "~/assets/icons/ListCheckedIcon"; import { RunsIcon } from "~/assets/icons/RunsIcon"; +import { InlineCode } from "~/components/code/InlineCode"; import { PageBody, PageContainer } from "~/components/layout/AppLayout"; import { DirectionSchema, ListPagination } from "~/components/ListPagination"; import { Button, LinkButton } from "~/components/primitives/Buttons"; +import { buildActivityTimeAxis } from "~/components/primitives/charts/activityTimeAxis"; import { ChartCard } from "~/components/primitives/charts/ChartCard"; -import { ChartSyncProvider } from "~/components/primitives/charts/ChartSyncContext"; -import { useZoomToTimeFilter } from "~/hooks/useZoomToTimeFilter"; import { Chart, type ChartConfig } from "~/components/primitives/charts/ChartCompound"; -import { buildActivityTimeAxis } from "~/components/primitives/charts/activityTimeAxis"; +import { ChartSyncProvider } from "~/components/primitives/charts/ChartSyncContext"; import { statusColor } from "~/components/primitives/charts/statusColors"; +import { CopyableText } from "~/components/primitives/CopyableText"; +import { DateTime, RelativeDateTime } from "~/components/primitives/DateTime"; import { Dialog, DialogContent, @@ -25,27 +27,18 @@ import { DialogHeader, DialogTrigger, } from "~/components/primitives/Dialog"; -import { ScheduleLimitActions } from "~/components/schedules/ScheduleLimitActions"; -import { SchedulesUsageBar } from "~/components/schedules/SchedulesUsageBar"; -import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route"; -import { InlineCode } from "~/components/code/InlineCode"; -import { CopyableText } from "~/components/primitives/CopyableText"; -import { PaginationControls } from "~/components/primitives/Pagination"; -import { TabButton, TabContainer } from "~/components/primitives/Tabs"; -import { useToast } from "~/components/primitives/Toast"; -import { DateTime, RelativeDateTime } from "~/components/primitives/DateTime"; import { Header2 } from "~/components/primitives/Headers"; +import { InfoPanel } from "~/components/primitives/InfoPanel"; import { NavBar, PageTitle } from "~/components/primitives/PageHeader"; +import { PaginationControls } from "~/components/primitives/Pagination"; import { Paragraph } from "~/components/primitives/Paragraph"; -import { InfoPanel } from "~/components/primitives/InfoPanel"; import * as Property from "~/components/primitives/PropertyTable"; -import { Sheet, SheetContent } from "~/components/primitives/SheetV3"; -import { ScheduleInspector } from "~/components/schedules/ScheduleInspector"; import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "~/components/primitives/Resizable"; +import { Sheet, SheetContent } from "~/components/primitives/SheetV3"; import { Spinner } from "~/components/primitives/Spinner"; import { Table, @@ -57,24 +50,26 @@ import { TableRow, type TableVariant, } from "~/components/primitives/Table"; +import { TabButton, TabContainer } from "~/components/primitives/Tabs"; +import { useToast } from "~/components/primitives/Toast"; import { EnabledStatus } from "~/components/runs/v3/EnabledStatus"; import type { TaskRunListSearchFilters } from "~/components/runs/v3/RunFilters"; import { ScheduleTypeIcon, scheduleTypeName } from "~/components/runs/v3/ScheduleType"; import { TimeFilter, timeFilterFromTo } from "~/components/runs/v3/SharedFilters"; import { TaskRunsTable } from "~/components/runs/v3/TaskRunsTable"; +import { ScheduleInspector } from "~/components/schedules/ScheduleInspector"; +import { ScheduleLimitActions } from "~/components/schedules/ScheduleLimitActions"; +import { SchedulesUsageBar } from "~/components/schedules/SchedulesUsageBar"; import { $replica } from "~/db.server"; import { useEnvironment } from "~/hooks/useEnvironment"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { useSearchParams } from "~/hooks/useSearchParam"; +import { useZoomToTimeFilter } from "~/hooks/useZoomToTimeFilter"; import { findProjectBySlug } from "~/models/project.server"; import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; import { NextRunListPresenter } from "~/presenters/v3/NextRunListPresenter.server"; import { ScheduleListPresenter } from "~/presenters/v3/ScheduleListPresenter.server"; -import type { loader as scheduleDetailLoader } from "../_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.$scheduleParam/route"; -import type { loader as scheduleEditLoader } from "../_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.edit.$scheduleParam/route"; -import type { loader as scheduleNewLoader } from "../_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route"; -import { UpsertScheduleForm } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route"; import { TaskDetailPresenter, type TaskActivity, @@ -85,7 +80,6 @@ import { requireUser } from "~/services/session.server"; import { docsPath, EnvironmentParamSchema, - v3BillingPath, v3CreateBulkActionPath, v3EditSchedulePath, v3EnvironmentPath, @@ -96,6 +90,11 @@ import { v3TestTaskPath, } from "~/utils/pathBuilder"; import { parseFiniteInt } from "~/utils/searchParams"; +import type { loader as scheduleDetailLoader } from "../_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.$scheduleParam/route"; +import type { loader as scheduleEditLoader } from "../_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.edit.$scheduleParam/route"; +import type { loader as scheduleNewLoader } from "../_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route"; +import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route"; +import { UpsertScheduleForm } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route"; export const meta: MetaFunction = ({ data }) => { const slug = (data as { task?: TaskDetail | null } | undefined)?.task?.slug; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test/route.tsx index 5a671a864b3..2c29521fef8 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test/route.tsx @@ -1,5 +1,5 @@ import { BookOpenIcon, MagnifyingGlassIcon } from "@heroicons/react/20/solid"; -import { type MetaFunction, Outlet, useNavigation, useParams } from "@remix-run/react"; +import { type MetaFunction, Outlet, useParams } from "@remix-run/react"; import { type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { TestHasNoTasks } from "~/components/BlankStatePanels"; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.tokens/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.tokens/route.tsx index 7f762fd0303..9d4d7d67433 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.tokens/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.tokens/route.tsx @@ -105,8 +105,14 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => { }; export default function Page() { - const { success, tokens, pagination, hasFilters, hasAnyTokens, filters } = - useTypedLoaderData(); + const { + success: _success, + tokens, + pagination, + hasFilters, + hasAnyTokens, + filters, + } = useTypedLoaderData(); const organization = useOrganization(); const project = useProject(); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam/route.tsx index f700c9f903e..d22883caa12 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam/route.tsx @@ -3,14 +3,12 @@ import { redirect, type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { RouteErrorDisplay } from "~/components/ErrorDisplay"; import { DashboardAgent } from "~/components/dashboard-agent/DashboardAgent"; import { prisma } from "~/db.server"; -import { env } from "~/env.server"; -import { canAccessDashboardAgent } from "~/v3/canAccessDashboardAgent.server"; -import { redirectWithErrorMessage } from "~/models/message.server"; import { updateCurrentProjectEnvironmentId } from "~/services/dashboardPreferences.server"; import { logger } from "~/services/logger.server"; import { requireUser } from "~/services/session.server"; import { tenantContext } from "~/services/tenantContext.server"; import { EnvironmentParamSchema, v3ProjectPath } from "~/utils/pathBuilder"; +import { canAccessDashboardAgent } from "~/v3/canAccessDashboardAgent.server"; export const loader = async ({ request, params }: LoaderFunctionArgs) => { const user = await requireUser(request); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.billing-limits/billingLimitsRoute.server.ts b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.billing-limits/billingLimitsRoute.server.ts index 3bc06571067..16feb6984eb 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.billing-limits/billingLimitsRoute.server.ts +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.billing-limits/billingLimitsRoute.server.ts @@ -1,5 +1,7 @@ -import type { BillingLimitResult } from "~/services/billingLimit.schemas"; -import type { ResolveBillingLimitRequest } from "~/services/billingLimit.schemas"; +import type { + BillingLimitResult, + ResolveBillingLimitRequest, +} from "~/services/billingLimit.schemas"; export function isEnforcementActive(billingLimit: BillingLimitResult): boolean { return ( diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.billing/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.billing/route.tsx index f7f3b2744d3..28737236bc5 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.billing/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.billing/route.tsx @@ -1,9 +1,11 @@ import { CalendarDaysIcon, CreditCardIcon, StarIcon } from "@heroicons/react/20/solid"; +import { type MetaFunction } from "@remix-run/react"; import { type PlanDefinition } from "@trigger.dev/platform"; import { redirect, typedjson, useTypedLoaderData } from "remix-typedjson"; import { Feedback } from "~/components/Feedback"; import { MainCenteredContainer, PageBody, PageContainer } from "~/components/layout/AppLayout"; import { Button, LinkButton } from "~/components/primitives/Buttons"; +import { Callout } from "~/components/primitives/Callout"; import { DateTime } from "~/components/primitives/DateTime"; import { InfoPanel } from "~/components/primitives/InfoPanel"; import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; @@ -17,11 +19,8 @@ import { OrganizationParamsSchema, organizationPath, v3StripePortalPath, - v3UsagePath, } from "~/utils/pathBuilder"; import { PricingPlans } from "../resources.orgs.$organizationSlug.select-plan"; -import { type MetaFunction } from "@remix-run/react"; -import { Callout } from "~/components/primitives/Callout"; export const meta: MetaFunction = () => { return [ diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.integrations.vercel.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.integrations.vercel.tsx index 307bc794c72..a8412a0765b 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.integrations.vercel.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.integrations.vercel.tsx @@ -1,11 +1,13 @@ +import { TrashIcon } from "@heroicons/react/20/solid"; +import { DialogClose } from "@radix-ui/react-dialog"; import type { LoaderFunctionArgs } from "@remix-run/node"; import { json, redirect } from "@remix-run/node"; -import { fromPromise } from "neverthrow"; import { Form, useActionData, useNavigation } from "@remix-run/react"; +import { fromPromise } from "neverthrow"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; -import { DialogClose } from "@radix-ui/react-dialog"; -import { Button } from "~/components/primitives/Buttons"; +import { PageBody, PageContainer } from "~/components/layout/AppLayout"; +import { Button, LinkButton } from "~/components/primitives/Buttons"; import { Dialog, DialogContent, @@ -16,7 +18,6 @@ import { } from "~/components/primitives/Dialog"; import { FormButtons } from "~/components/primitives/FormButtons"; import { Header1 } from "~/components/primitives/Headers"; -import { PageBody, PageContainer } from "~/components/layout/AppLayout"; import { Paragraph } from "~/components/primitives/Paragraph"; import { Table, @@ -26,17 +27,14 @@ import { TableHeaderCell, TableRow, } from "~/components/primitives/Table"; +import { $transaction, prisma } from "~/db.server"; import { resolveOrgIdFromSlug } from "~/models/organization.server"; import { VercelIntegrationRepository } from "~/models/vercelIntegration.server"; -import { $transaction, prisma } from "~/db.server"; +import { logger } from "~/services/logger.server"; import { requireOrganization } from "~/services/org.server"; import { rbac } from "~/services/rbac.server"; import { dashboardAction } from "~/services/routeBuilders/dashboardBuilder"; -import { OrganizationParamsSchema } from "~/utils/pathBuilder"; -import { logger } from "~/services/logger.server"; -import { TrashIcon } from "@heroicons/react/20/solid"; -import { v3ProjectSettingsIntegrationsPath } from "~/utils/pathBuilder"; -import { LinkButton } from "~/components/primitives/Buttons"; +import { OrganizationParamsSchema, v3ProjectSettingsIntegrationsPath } from "~/utils/pathBuilder"; function formatDate(date: Date): string { return new Intl.DateTimeFormat("en-US", { diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx index 7cd85425003..62ad810e6df 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx @@ -1,21 +1,29 @@ -import { LinkButton } from "~/components/primitives/Buttons"; -import { Form, useFetcher, useRevalidator, type MetaFunction } from "@remix-run/react"; -import { type LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { + BookOpenIcon, + ClipboardDocumentIcon, + PlusIcon, + TrashIcon, +} from "@heroicons/react/20/solid"; +import { Form, useRevalidator, type MetaFunction } from "@remix-run/react"; +import { json, type ActionFunctionArgs, type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { tryCatch } from "@trigger.dev/core/utils"; +import type { PrivateLinkConnectionStatus } from "@trigger.dev/platform"; +import { useMemo, useState } from "react"; import { redirect, typedjson, useTypedLoaderData } from "remix-typedjson"; import { MainHorizontallyCenteredContainer, PageBody, PageContainer, } from "~/components/layout/AppLayout"; -import { Badge } from "~/components/primitives/Badge"; +import { LinkButton } from "~/components/primitives/Buttons"; import { Header2 } from "~/components/primitives/Headers"; import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; import { Paragraph } from "~/components/primitives/Paragraph"; import { prisma } from "~/db.server"; -import { canAccessPrivateConnections } from "~/v3/canAccessPrivateConnections.server"; +import { useInterval } from "~/hooks/useInterval"; +import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; import { logger } from "~/services/logger.server"; -import { getPrivateLinks } from "~/services/platform.v3.server"; +import { deletePrivateLink, getPrivateLinks } from "~/services/platform.v3.server"; import { requireUserId } from "~/services/session.server"; import { docsPath, @@ -23,20 +31,8 @@ import { organizationPath, v3PrivateConnectionsPath, } from "~/utils/pathBuilder"; +import { canAccessPrivateConnections } from "~/v3/canAccessPrivateConnections.server"; import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route"; -import type { PrivateLinkConnectionStatus } from "@trigger.dev/platform"; -import { Button } from "~/components/primitives/Buttons"; -import { type ActionFunctionArgs, json } from "@remix-run/server-runtime"; -import { deletePrivateLink } from "~/services/platform.v3.server"; -import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; -import { - BookOpenIcon, - ClipboardDocumentIcon, - PlusIcon, - TrashIcon, -} from "@heroicons/react/20/solid"; -import { useMemo, useState } from "react"; -import { useInterval } from "~/hooks/useInterval"; export const meta: MetaFunction = () => { return [{ title: `Private Connections | Trigger.dev` }]; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx index b3af74e56f7..11c1afdc9da 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx @@ -67,7 +67,7 @@ export async function loader({ params, request }: LoaderFunctionArgs) { throw new Response(null, { status: 404, statusText: "Organization not found" }); } - const [error, regions] = await tryCatch(getPrivateLinkRegions(organization.id)); + const [_error, regions] = await tryCatch(getPrivateLinkRegions(organization.id)); const awsAccountIds = env.PRIVATE_CONNECTIONS_AWS_ACCOUNT_IDS?.split(",").filter(Boolean) ?? []; @@ -395,7 +395,7 @@ function AIPromptWizard({ awsAccountIds }: { awsAccountIds: string[] }) { const validPorts = ports.filter((p) => p.port !== ""); const regionLabel = AWS_REGIONS.find((r) => r.value === region)?.label ?? region; - const portsDescription = + const _portsDescription = validPorts.length > 0 ? validPorts.map((p) => `${p.port} (${p.protocol})`).join(", ") : "5432 (TCP)"; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.roles/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.roles/route.tsx index 5d215fb5475..41faef9b0d5 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.roles/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.roles/route.tsx @@ -21,13 +21,12 @@ import { TableHeaderCell, TableRow, } from "~/components/primitives/Table"; -import { cn } from "~/utils/cn"; +import { TextLink } from "~/components/primitives/TextLink"; import { useOrganization } from "~/hooks/useOrganizations"; +import { useShowSelfServe } from "~/hooks/useShowSelfServe"; import { resolveOrgIdFromSlug } from "~/models/organization.server"; import { rbac } from "~/services/rbac.server"; import { dashboardLoader } from "~/services/routeBuilders/dashboardBuilder"; -import { useShowSelfServe } from "~/hooks/useShowSelfServe"; -import { TextLink } from "~/components/primitives/TextLink"; export const meta: MetaFunction = () => { return [ diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx index cc6021261a3..9e9d40704e6 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx @@ -6,7 +6,7 @@ import { LockClosedIcon, } from "@heroicons/react/20/solid"; import { type MetaFunction } from "@remix-run/react"; -import { redirect, type ActionFunctionArgs } from "@remix-run/server-runtime"; +import { redirect } from "@remix-run/server-runtime"; import { useEffect, useState } from "react"; import { useFetcher, useRevalidator } from "@remix-run/react"; import { z } from "zod"; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.team/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.team/route.tsx index d4d29f8f37a..3d63a0507a6 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.team/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.team/route.tsx @@ -730,7 +730,7 @@ function LeaveTeamModal({ const [open, setOpen] = useState(false); const lastSubmission = useActionData(); - const [form, fields] = useForm({ + const [form, _fields] = useForm({ id: "remove-member", // TODO: type this lastResult: lastSubmission as any, diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug_.select-plan/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug_.select-plan/route.tsx index f267b8bf715..cc93b7bc2df 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug_.select-plan/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug_.select-plan/route.tsx @@ -1,6 +1,6 @@ import { redirect, typedjson, useTypedLoaderData } from "remix-typedjson"; import { BackgroundWrapper } from "~/components/BackgroundWrapper"; -import { AppContainer, MainBody, PageBody } from "~/components/layout/AppLayout"; +import { AppContainer, PageBody } from "~/components/layout/AppLayout"; import { Header1 } from "~/components/primitives/Headers"; import { prisma } from "~/db.server"; import { featuresForRequest } from "~/features.server"; diff --git a/apps/webapp/app/routes/account._index/route.tsx b/apps/webapp/app/routes/account._index/route.tsx index 78e8d4e572b..b4b92c8a133 100644 --- a/apps/webapp/app/routes/account._index/route.tsx +++ b/apps/webapp/app/routes/account._index/route.tsx @@ -107,7 +107,7 @@ export const action: ActionFunction = async ({ request }) => { } try { - const user = await updateUser({ + const _user = await updateUser({ id: userId, name: submission.value.name, email: submission.value.email, diff --git a/apps/webapp/app/routes/account.authorization-code.$authorizationCode/route.tsx b/apps/webapp/app/routes/account.authorization-code.$authorizationCode/route.tsx index df75c25ff7f..18035a0230e 100644 --- a/apps/webapp/app/routes/account.authorization-code.$authorizationCode/route.tsx +++ b/apps/webapp/app/routes/account.authorization-code.$authorizationCode/route.tsx @@ -1,5 +1,5 @@ import { CheckCircleIcon } from "@heroicons/react/24/solid"; -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; import { AppContainer, MainCenteredContainer } from "~/components/layout/AppLayout"; @@ -42,7 +42,7 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => { const clientName = (searchParams.success ? searchParams.data.clientName : undefined) ?? "unknown"; try { - const personalAccessToken = await createPersonalAccessTokenFromAuthorizationCode( + const _personalAccessToken = await createPersonalAccessTokenFromAuthorizationCode( parsedParams.data.authorizationCode, userId ); diff --git a/apps/webapp/app/routes/account.tokens/route.tsx b/apps/webapp/app/routes/account.tokens/route.tsx index 6b03dd28b16..ad77d16d1ea 100644 --- a/apps/webapp/app/routes/account.tokens/route.tsx +++ b/apps/webapp/app/routes/account.tokens/route.tsx @@ -109,7 +109,7 @@ export const loader = async ({ request }: LoaderFunctionArgs) => { const userId = await requireUserId(request); try { - const [personalAccessTokens, { roles, userRoleId, orgId }] = await Promise.all([ + const [personalAccessTokens, { roles, userRoleId, orgId: _orgId }] = await Promise.all([ getValidPersonalAccessTokens(userId), loadSystemRolesForUser(userId), ]); @@ -449,7 +449,7 @@ function CreatePersonalAccessToken({ function RevokePersonalAccessToken({ token }: { token: ObfuscatedPersonalAccessToken }) { const lastSubmission = useActionData(); - const [form, fields] = useForm({ + const [form, _fields] = useForm({ id: "revoke-personal-access-token", // TODO: type this lastResult: lastSubmission as any, diff --git a/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.engine.repair-queues.ts b/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.engine.repair-queues.ts index a3fd61546e0..6748655c025 100644 --- a/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.engine.repair-queues.ts +++ b/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.engine.repair-queues.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import pMap from "p-map"; import { z } from "zod"; import { $replica, prisma } from "~/db.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.engine.report.ts b/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.engine.report.ts index e37553ea230..7179680d39a 100644 --- a/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.engine.report.ts +++ b/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.engine.report.ts @@ -1,4 +1,5 @@ -import { json, LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { z } from "zod"; import { $replica, prisma } from "~/db.server"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.schedules.recover.ts b/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.schedules.recover.ts index 33c1581a940..1c598aec659 100644 --- a/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.schedules.recover.ts +++ b/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.schedules.recover.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json, LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.ts b/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.ts index 34ea14f9da5..ae8deb32dfa 100644 --- a/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.ts +++ b/apps/webapp/app/routes/admin.api.v1.environments.$environmentId.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json, LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.feature-flags.ts b/apps/webapp/app/routes/admin.api.v1.feature-flags.ts index 92debd43a62..0c668c848cd 100644 --- a/apps/webapp/app/routes/admin.api.v1.feature-flags.ts +++ b/apps/webapp/app/routes/admin.api.v1.feature-flags.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { prisma } from "~/db.server"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; import { makeSetMultipleFlags } from "~/v3/featureFlags.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.gc.ts b/apps/webapp/app/routes/admin.api.v1.gc.ts index fbb5f4c9000..7df456298b7 100644 --- a/apps/webapp/app/routes/admin.api.v1.gc.ts +++ b/apps/webapp/app/routes/admin.api.v1.gc.ts @@ -6,11 +6,11 @@ import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; async function waitTillGcFinishes() { let resolver: (value: PerformanceEntry) => void; - let rejector: (reason?: any) => void; + let _rejector: (reason?: any) => void; const promise = new Promise((resolve, reject) => { resolver = resolve; - rejector = reject; + _rejector = reject; }); const obs = new PerformanceObserver((list) => { diff --git a/apps/webapp/app/routes/admin.api.v1.migrate-legacy-master-queues.ts b/apps/webapp/app/routes/admin.api.v1.migrate-legacy-master-queues.ts index ad3575fa390..12c40319493 100644 --- a/apps/webapp/app/routes/admin.api.v1.migrate-legacy-master-queues.ts +++ b/apps/webapp/app/routes/admin.api.v1.migrate-legacy-master-queues.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; import { engine } from "~/v3/runEngine.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.concurrency.ts b/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.concurrency.ts index f5346a69075..97c5e74583f 100644 --- a/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.concurrency.ts +++ b/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.concurrency.ts @@ -1,8 +1,8 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; -import { marqs } from "~/v3/marqs/index.server"; import { updateEnvConcurrencyLimits } from "~/v3/runQueue.server"; const ParamsSchema = z.object({ diff --git a/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.feature-flags.ts b/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.feature-flags.ts index 513616470a0..779847d250f 100644 --- a/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.feature-flags.ts +++ b/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.feature-flags.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, LoaderFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.runs.enable.ts b/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.runs.enable.ts index e5bb1b411cd..cb888b5b094 100644 --- a/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.runs.enable.ts +++ b/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.runs.enable.ts @@ -1,16 +1,8 @@ import { type ActionFunctionArgs, json } from "@remix-run/server-runtime"; -import { - EnvironmentPauseSource, - type RuntimeEnvironment, - type Organization, - type Project, - type RuntimeEnvironmentType, -} from "@trigger.dev/database"; +import { EnvironmentPauseSource } from "@trigger.dev/database"; import { z } from "zod"; import { prisma } from "~/db.server"; -import { createEnvironment } from "~/models/organization.server"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; -import { updateEnvConcurrencyLimits } from "~/v3/runQueue.server"; import { PauseEnvironmentService } from "~/v3/services/pauseEnvironment.server"; const ParamsSchema = z.object({ diff --git a/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.stream-basin.ts b/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.stream-basin.ts index 67fd457c6b3..20305e393e6 100644 --- a/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.stream-basin.ts +++ b/apps/webapp/app/routes/admin.api.v1.orgs.$organizationId.stream-basin.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { z } from "zod"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; import { isValidDuration } from "~/services/realtime/duration.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.revoked-api-keys.$revokedApiKeyId.ts b/apps/webapp/app/routes/admin.api.v1.revoked-api-keys.$revokedApiKeyId.ts index 61eb5a69bee..7f91606ea0b 100644 --- a/apps/webapp/app/routes/admin.api.v1.revoked-api-keys.$revokedApiKeyId.ts +++ b/apps/webapp/app/routes/admin.api.v1.revoked-api-keys.$revokedApiKeyId.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.runs-replication.create.ts b/apps/webapp/app/routes/admin.api.v1.runs-replication.create.ts index 0026c66bfda..ff600dead70 100644 --- a/apps/webapp/app/routes/admin.api.v1.runs-replication.create.ts +++ b/apps/webapp/app/routes/admin.api.v1.runs-replication.create.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; import { z } from "zod"; import { env } from "~/env.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.runs-replication.start.ts b/apps/webapp/app/routes/admin.api.v1.runs-replication.start.ts index d67ca3a1ae3..606a30e78b3 100644 --- a/apps/webapp/app/routes/admin.api.v1.runs-replication.start.ts +++ b/apps/webapp/app/routes/admin.api.v1.runs-replication.start.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; import { getRunsReplicationGlobal } from "~/services/runsReplicationGlobal.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.runs-replication.stop.ts b/apps/webapp/app/routes/admin.api.v1.runs-replication.stop.ts index 410a9aeaaba..7b9b0af0e10 100644 --- a/apps/webapp/app/routes/admin.api.v1.runs-replication.stop.ts +++ b/apps/webapp/app/routes/admin.api.v1.runs-replication.stop.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; import { getRunsReplicationGlobal } from "~/services/runsReplicationGlobal.server"; import { runsReplicationInstance } from "~/services/runsReplicationInstance.server"; diff --git a/apps/webapp/app/routes/admin.api.v1.runs-replication.teardown.ts b/apps/webapp/app/routes/admin.api.v1.runs-replication.teardown.ts index 8bcf760e72f..f848c93d2ef 100644 --- a/apps/webapp/app/routes/admin.api.v1.runs-replication.teardown.ts +++ b/apps/webapp/app/routes/admin.api.v1.runs-replication.teardown.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { requireAdminApiRequest } from "~/services/personalAccessToken.server"; import { getRunsReplicationGlobal, diff --git a/apps/webapp/app/routes/admin.llm-models.$modelId.tsx b/apps/webapp/app/routes/admin.llm-models.$modelId.tsx index df4d863ad11..2d0e99ff707 100644 --- a/apps/webapp/app/routes/admin.llm-models.$modelId.tsx +++ b/apps/webapp/app/routes/admin.llm-models.$modelId.tsx @@ -1,11 +1,10 @@ import { Form, useActionData, useNavigate } from "@remix-run/react"; import { redirect } from "@remix-run/server-runtime"; +import { useState } from "react"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; -import { useState } from "react"; import { Button, LinkButton } from "~/components/primitives/Buttons"; import { Input } from "~/components/primitives/Input"; -import { Paragraph } from "~/components/primitives/Paragraph"; import { prisma } from "~/db.server"; import { dashboardAction, dashboardLoader } from "~/services/routeBuilders/dashboardBuilder"; import { llmPricingRegistry } from "~/v3/llmPricingRegistry.server"; @@ -166,7 +165,7 @@ export const action = dashboardAction( export default function AdminLlmModelDetailRoute() { const { model } = useTypedLoaderData(); const actionData = useActionData<{ success?: boolean; error?: string; details?: unknown[] }>(); - const navigate = useNavigate(); + const _navigate = useNavigate(); const [modelName, setModelName] = useState(model.modelName); const [matchPattern, setMatchPattern] = useState(model.matchPattern); diff --git a/apps/webapp/app/routes/admin.llm-models.missing._index.tsx b/apps/webapp/app/routes/admin.llm-models.missing._index.tsx index 669e392c9af..de372daab3b 100644 --- a/apps/webapp/app/routes/admin.llm-models.missing._index.tsx +++ b/apps/webapp/app/routes/admin.llm-models.missing._index.tsx @@ -23,7 +23,7 @@ const LOOKBACK_OPTIONS = [ { label: "30 days", value: 720 }, ]; -const SearchParams = z.object({ +const _SearchParams = z.object({ lookbackHours: z.coerce.number().optional(), }); @@ -48,7 +48,7 @@ export const loader = dashboardLoader( export default function AdminLlmModelsMissingRoute() { const { models, lookbackHours, error } = useTypedLoaderData(); - const [searchParams, setSearchParams] = useSearchParams(); + const [_searchParams, _setSearchParams] = useSearchParams(); return (
diff --git a/apps/webapp/app/routes/admin.notifications.tsx b/apps/webapp/app/routes/admin.notifications.tsx index d9bab14809b..b8b7793790b 100644 --- a/apps/webapp/app/routes/admin.notifications.tsx +++ b/apps/webapp/app/routes/admin.notifications.tsx @@ -458,7 +458,7 @@ export default function AdminNotificationsRoute() { ) : ( notifications.map((n) => { const status = getNotificationStatus(n); - const isActive = status === "active"; + const _isActive = status === "active"; return ( diff --git a/apps/webapp/app/routes/api.v1.authorization-code.ts b/apps/webapp/app/routes/api.v1.authorization-code.ts index 2e5c1aadf25..1a56ef04096 100644 --- a/apps/webapp/app/routes/api.v1.authorization-code.ts +++ b/apps/webapp/app/routes/api.v1.authorization-code.ts @@ -1,6 +1,6 @@ import type { ActionFunctionArgs } from "@remix-run/server-runtime"; import { json } from "@remix-run/server-runtime"; -import { CreateAuthorizationCodeResponse } from "@trigger.dev/core/v3"; +import type { CreateAuthorizationCodeResponse } from "@trigger.dev/core/v3"; import { env } from "~/env.server"; import { logger } from "~/services/logger.server"; import { createAuthorizationCode } from "~/services/personalAccessToken.server"; diff --git a/apps/webapp/app/routes/api.v1.batches.$batchParam.results.ts b/apps/webapp/app/routes/api.v1.batches.$batchParam.results.ts index edb19736691..818241317ee 100644 --- a/apps/webapp/app/routes/api.v1.batches.$batchParam.results.ts +++ b/apps/webapp/app/routes/api.v1.batches.$batchParam.results.ts @@ -2,7 +2,6 @@ import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { json } from "@remix-run/server-runtime"; import { z } from "zod"; import { ApiBatchResultsPresenter } from "~/presenters/v3/ApiBatchResultsPresenter.server"; -import { ApiRunResultPresenter } from "~/presenters/v3/ApiRunResultPresenter.server"; import { authenticateApiRequest } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/routes/api.v1.deployments.$deploymentId.background-workers.ts b/apps/webapp/app/routes/api.v1.deployments.$deploymentId.background-workers.ts index 26503c14f9d..9e7052b7275 100644 --- a/apps/webapp/app/routes/api.v1.deployments.$deploymentId.background-workers.ts +++ b/apps/webapp/app/routes/api.v1.deployments.$deploymentId.background-workers.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { CreateBackgroundWorkerRequestBody } from "@trigger.dev/core/v3"; import { z } from "zod"; import { authenticateApiRequest } from "~/services/apiAuth.server"; diff --git a/apps/webapp/app/routes/api.v1.deployments.$deploymentId.fail.ts b/apps/webapp/app/routes/api.v1.deployments.$deploymentId.fail.ts index 43eb45c5364..7ba5dd3700d 100644 --- a/apps/webapp/app/routes/api.v1.deployments.$deploymentId.fail.ts +++ b/apps/webapp/app/routes/api.v1.deployments.$deploymentId.fail.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { FailDeploymentRequestBody } from "@trigger.dev/core/v3"; import { z } from "zod"; import { authenticateApiRequest } from "~/services/apiAuth.server"; diff --git a/apps/webapp/app/routes/api.v1.deployments.$deploymentId.finalize.ts b/apps/webapp/app/routes/api.v1.deployments.$deploymentId.finalize.ts index c1ce30bbe79..f576f6eef38 100644 --- a/apps/webapp/app/routes/api.v1.deployments.$deploymentId.finalize.ts +++ b/apps/webapp/app/routes/api.v1.deployments.$deploymentId.finalize.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { FinalizeDeploymentRequestBody } from "@trigger.dev/core/v3"; import { z } from "zod"; import { authenticateApiRequest } from "~/services/apiAuth.server"; diff --git a/apps/webapp/app/routes/api.v1.deployments.$deploymentVersion.promote.ts b/apps/webapp/app/routes/api.v1.deployments.$deploymentVersion.promote.ts index 9f3b4cad185..f2c69078b9e 100644 --- a/apps/webapp/app/routes/api.v1.deployments.$deploymentVersion.promote.ts +++ b/apps/webapp/app/routes/api.v1.deployments.$deploymentVersion.promote.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { authenticateApiRequest } from "~/services/apiAuth.server"; diff --git a/apps/webapp/app/routes/api.v1.deployments.latest.ts b/apps/webapp/app/routes/api.v1.deployments.latest.ts index b8dcb667856..7609f874255 100644 --- a/apps/webapp/app/routes/api.v1.deployments.latest.ts +++ b/apps/webapp/app/routes/api.v1.deployments.latest.ts @@ -1,4 +1,5 @@ -import { LoaderFunctionArgs, json } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { WorkerInstanceGroupType } from "@trigger.dev/database"; import { prisma } from "~/db.server"; import { authenticateApiRequest } from "~/services/apiAuth.server"; diff --git a/apps/webapp/app/routes/api.v1.mock.ts b/apps/webapp/app/routes/api.v1.mock.ts index 1ec47cb3b7e..7327eb15aa0 100644 --- a/apps/webapp/app/routes/api.v1.mock.ts +++ b/apps/webapp/app/routes/api.v1.mock.ts @@ -1,4 +1,4 @@ -import { ActionFunctionArgs } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; export async function action({ request }: ActionFunctionArgs) { if (process.env.NODE_ENV === "production") { diff --git a/apps/webapp/app/routes/api.v1.orgs.$orgParam.projects.ts b/apps/webapp/app/routes/api.v1.orgs.$orgParam.projects.ts index 47eb82c6930..33b68ad244a 100644 --- a/apps/webapp/app/routes/api.v1.orgs.$orgParam.projects.ts +++ b/apps/webapp/app/routes/api.v1.orgs.$orgParam.projects.ts @@ -1,11 +1,7 @@ import type { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime"; import { json } from "@remix-run/server-runtime"; -import { - CreateProjectRequestBody, - GetProjectResponseBody, - GetProjectsResponseBody, - tryCatch, -} from "@trigger.dev/core/v3"; +import type { GetProjectResponseBody, GetProjectsResponseBody } from "@trigger.dev/core/v3"; +import { CreateProjectRequestBody, tryCatch } from "@trigger.dev/core/v3"; import { z } from "zod"; import { prisma } from "~/db.server"; import { createProject } from "~/models/project.server"; diff --git a/apps/webapp/app/routes/api.v1.orgs.ts b/apps/webapp/app/routes/api.v1.orgs.ts index 31ef3783f3e..4e3ad9aa98a 100644 --- a/apps/webapp/app/routes/api.v1.orgs.ts +++ b/apps/webapp/app/routes/api.v1.orgs.ts @@ -1,6 +1,6 @@ import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { json } from "@remix-run/server-runtime"; -import { GetOrgsResponseBody } from "@trigger.dev/core/v3"; +import type { GetOrgsResponseBody } from "@trigger.dev/core/v3"; import { prisma } from "~/db.server"; import { logger } from "~/services/logger.server"; import { authenticateApiRequestWithPersonalAccessToken } from "~/services/personalAccessToken.server"; diff --git a/apps/webapp/app/routes/api.v1.projects.$projectRef.$env.workers.$tagName.ts b/apps/webapp/app/routes/api.v1.projects.$projectRef.$env.workers.$tagName.ts index d99e43c239f..823b9f87053 100644 --- a/apps/webapp/app/routes/api.v1.projects.$projectRef.$env.workers.$tagName.ts +++ b/apps/webapp/app/routes/api.v1.projects.$projectRef.$env.workers.$tagName.ts @@ -1,18 +1,18 @@ import { json, type LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { type GetWorkerByTagResponse } from "@trigger.dev/core/v3/schemas"; import { isUserActorToken, verifyUserActorToken } from "@trigger.dev/rbac"; import { z } from "zod"; -import { $replica, prisma } from "~/db.server"; -import { findCurrentWorkerFromEnvironment } from "~/v3/models/workerDeployment.server"; -import { type GetWorkerByTagResponse } from "@trigger.dev/core/v3/schemas"; +import { $replica } from "~/db.server"; import { env as $env } from "~/env.server"; -import { v3RunsPath } from "~/utils/pathBuilder"; import { - type AuthenticationResult, authenticatedEnvironmentForAuthentication, authenticateRequest, branchNameFromRequest, + type AuthenticationResult, } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; +import { v3RunsPath } from "~/utils/pathBuilder"; +import { findCurrentWorkerFromEnvironment } from "~/v3/models/workerDeployment.server"; const ParamsSchema = z.object({ projectRef: z.string(), diff --git a/apps/webapp/app/routes/api.v1.projects.$projectRef.background-workers.$envSlug.$version.ts b/apps/webapp/app/routes/api.v1.projects.$projectRef.background-workers.$envSlug.$version.ts index 7a2bb5b7e68..72c45492794 100644 --- a/apps/webapp/app/routes/api.v1.projects.$projectRef.background-workers.$envSlug.$version.ts +++ b/apps/webapp/app/routes/api.v1.projects.$projectRef.background-workers.$envSlug.$version.ts @@ -1,4 +1,5 @@ -import { LoaderFunctionArgs, json } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { diff --git a/apps/webapp/app/routes/api.v1.projects.$projectRef.background-workers.ts b/apps/webapp/app/routes/api.v1.projects.$projectRef.background-workers.ts index 12e5eb24dde..61d1de646ff 100644 --- a/apps/webapp/app/routes/api.v1.projects.$projectRef.background-workers.ts +++ b/apps/webapp/app/routes/api.v1.projects.$projectRef.background-workers.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { CreateBackgroundWorkerRequestBody } from "@trigger.dev/core/v3"; import { z } from "zod"; import { authenticateApiRequest } from "~/services/apiAuth.server"; diff --git a/apps/webapp/app/routes/api.v1.projects.$projectRef.branches.ts b/apps/webapp/app/routes/api.v1.projects.$projectRef.branches.ts index cbeb5428c1b..8ab57c63431 100644 --- a/apps/webapp/app/routes/api.v1.projects.$projectRef.branches.ts +++ b/apps/webapp/app/routes/api.v1.projects.$projectRef.branches.ts @@ -1,7 +1,6 @@ -import { json, type LoaderFunctionArgs, type ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json, type ActionFunctionArgs, type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { tryCatch, UpsertBranchRequestBody } from "@trigger.dev/core/v3"; import { DEFAULT_DEV_BRANCH, isDefaultDevBranch } from "@trigger.dev/core/v3/utils/gitBranch"; -import invariant from "tiny-invariant"; import { z } from "zod"; import { prisma } from "~/db.server"; import { authenticateRequest } from "~/services/apiAuth.server"; diff --git a/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.$name.ts b/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.$name.ts index 4c0fa99185a..4e0fca9a480 100644 --- a/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.$name.ts +++ b/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.$name.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, LoaderFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { UpdateEnvironmentVariableRequestBody } from "@trigger.dev/core/v3"; import { z } from "zod"; import { prisma } from "~/db.server"; diff --git a/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.import.ts b/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.import.ts index 177fbd6848f..42b225f4e17 100644 --- a/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.import.ts +++ b/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.import.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { ImportEnvironmentVariablesRequestBody } from "@trigger.dev/core/v3"; import { parse } from "dotenv"; import { z } from "zod"; diff --git a/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.ts b/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.ts index 95e1d480fb8..d0a36f3a6de 100644 --- a/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.ts +++ b/apps/webapp/app/routes/api.v1.projects.$projectRef.envvars.$slug.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, LoaderFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { CreateEnvironmentVariableRequestBody } from "@trigger.dev/core/v3"; import { z } from "zod"; import { diff --git a/apps/webapp/app/routes/api.v1.projects.$projectRef.ts b/apps/webapp/app/routes/api.v1.projects.$projectRef.ts index cd82393de97..55cae92e793 100644 --- a/apps/webapp/app/routes/api.v1.projects.$projectRef.ts +++ b/apps/webapp/app/routes/api.v1.projects.$projectRef.ts @@ -1,6 +1,6 @@ import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { json } from "@remix-run/server-runtime"; -import { GetProjectResponseBody, GetProjectsResponseBody } from "@trigger.dev/core/v3"; +import type { GetProjectResponseBody } from "@trigger.dev/core/v3"; import { z } from "zod"; import { prisma } from "~/db.server"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/routes/api.v1.projects.ts b/apps/webapp/app/routes/api.v1.projects.ts index 372a8108f41..625df7bb9eb 100644 --- a/apps/webapp/app/routes/api.v1.projects.ts +++ b/apps/webapp/app/routes/api.v1.projects.ts @@ -1,6 +1,6 @@ -import type { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { json } from "@remix-run/server-runtime"; -import { GetProjectsResponseBody } from "@trigger.dev/core/v3"; +import type { GetProjectsResponseBody } from "@trigger.dev/core/v3"; import { prisma } from "~/db.server"; import { logger } from "~/services/logger.server"; import { authenticateApiRequestWithPersonalAccessToken } from "~/services/personalAccessToken.server"; diff --git a/apps/webapp/app/routes/api.v1.query.ts b/apps/webapp/app/routes/api.v1.query.ts index d729e9e9e23..e62d9b9366a 100644 --- a/apps/webapp/app/routes/api.v1.query.ts +++ b/apps/webapp/app/routes/api.v1.query.ts @@ -88,7 +88,7 @@ const { action, loader } = createActionApiRoute( ); } - const { result, periodClipped, maxQueryPeriod } = queryResult; + const { result, periodClipped: _periodClipped, maxQueryPeriod: _maxQueryPeriod } = queryResult; if (format === "csv") { const csv = rowsToCSV(result.rows, result.columns); diff --git a/apps/webapp/app/routes/api.v1.runs.ts b/apps/webapp/app/routes/api.v1.runs.ts index 21b7b57857b..a4f543e68f5 100644 --- a/apps/webapp/app/routes/api.v1.runs.ts +++ b/apps/webapp/app/routes/api.v1.runs.ts @@ -3,7 +3,6 @@ import { ApiRunListPresenter, ApiRunListSearchParams, } from "~/presenters/v3/ApiRunListPresenter.server"; -import { logger } from "~/services/logger.server"; import { anyResource, createLoaderApiRoute } from "~/services/routeBuilders/apiBuilder.server"; export const loader = createLoaderApiRoute( diff --git a/apps/webapp/app/routes/api.v1.schedules.$scheduleId.ts b/apps/webapp/app/routes/api.v1.schedules.$scheduleId.ts index 79ad6091cda..9da9ffcb121 100644 --- a/apps/webapp/app/routes/api.v1.schedules.$scheduleId.ts +++ b/apps/webapp/app/routes/api.v1.schedules.$scheduleId.ts @@ -1,6 +1,7 @@ import type { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime"; import { json } from "@remix-run/server-runtime"; -import { ScheduleObject, UpdateScheduleOptions } from "@trigger.dev/core/v3"; +import type { ScheduleObject } from "@trigger.dev/core/v3"; +import { UpdateScheduleOptions } from "@trigger.dev/core/v3"; import { z } from "zod"; import { Prisma, prisma } from "~/db.server"; import { clientSafeErrorMessage } from "~/utils/prismaErrors"; @@ -8,7 +9,7 @@ import { scheduleUniqWhereClause } from "~/models/schedules.server"; import { ViewSchedulePresenter } from "~/presenters/v3/ViewSchedulePresenter.server"; import { authenticateApiRequest } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; -import { UpsertSchedule } from "~/v3/schedules"; +import type { UpsertSchedule } from "~/v3/schedules"; import { ServiceValidationError } from "~/v3/services/baseService.server"; import { UpsertTaskScheduleService } from "~/v3/services/upsertTaskSchedule.server"; diff --git a/apps/webapp/app/routes/api.v1.schedules.ts b/apps/webapp/app/routes/api.v1.schedules.ts index 56250eaac55..510cf45eacf 100644 --- a/apps/webapp/app/routes/api.v1.schedules.ts +++ b/apps/webapp/app/routes/api.v1.schedules.ts @@ -1,11 +1,12 @@ import type { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime"; import { json } from "@remix-run/server-runtime"; -import { CreateScheduleOptions, ScheduleObject } from "@trigger.dev/core/v3"; +import type { ScheduleObject } from "@trigger.dev/core/v3"; +import { CreateScheduleOptions } from "@trigger.dev/core/v3"; import { z } from "zod"; import { ScheduleListPresenter } from "~/presenters/v3/ScheduleListPresenter.server"; import { authenticateApiRequest } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; -import { UpsertSchedule } from "~/v3/schedules"; +import type { UpsertSchedule } from "~/v3/schedules"; import { ServiceValidationError } from "~/v3/services/baseService.server"; import { UpsertTaskScheduleService } from "~/v3/services/upsertTaskSchedule.server"; diff --git a/apps/webapp/app/routes/api.v1.tasks.$taskId.batch.ts b/apps/webapp/app/routes/api.v1.tasks.$taskId.batch.ts index 2ecf29f7c85..e57092bc66b 100644 --- a/apps/webapp/app/routes/api.v1.tasks.$taskId.batch.ts +++ b/apps/webapp/app/routes/api.v1.tasks.$taskId.batch.ts @@ -1,6 +1,7 @@ import type { ActionFunctionArgs } from "@remix-run/server-runtime"; import { json } from "@remix-run/server-runtime"; -import { BatchTriggerTaskRequestBody, BatchTriggerTaskV2RequestBody } from "@trigger.dev/core/v3"; +import type { BatchTriggerTaskV2RequestBody } from "@trigger.dev/core/v3"; +import { BatchTriggerTaskRequestBody } from "@trigger.dev/core/v3"; import { z } from "zod"; import { fromZodError } from "zod-validation-error"; import { MAX_BATCH_TRIGGER_ITEMS } from "~/consts"; diff --git a/apps/webapp/app/routes/api.v1.tasks.$taskId.trigger.ts b/apps/webapp/app/routes/api.v1.tasks.$taskId.trigger.ts index 2b3f308dfa2..9d1e4c5b8dd 100644 --- a/apps/webapp/app/routes/api.v1.tasks.$taskId.trigger.ts +++ b/apps/webapp/app/routes/api.v1.tasks.$taskId.trigger.ts @@ -5,11 +5,12 @@ import { RunEngineVersionSchema, TriggerTaskRequestBody, } from "@trigger.dev/core/v3"; -import { TaskRun } from "@trigger.dev/database"; +import type { TaskRun } from "@trigger.dev/database"; import { z } from "zod"; import { prisma } from "~/db.server"; import { env } from "~/env.server"; -import { ApiAuthenticationResultSuccess, getOneTimeUseToken } from "~/services/apiAuth.server"; +import type { ApiAuthenticationResultSuccess } from "~/services/apiAuth.server"; +import { getOneTimeUseToken } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { extractJwtSigningSecretKey } from "~/services/realtime/jwtAuth.server"; import { determineRealtimeStreamsVersion } from "~/services/realtime/v1StreamsGlobal.server"; @@ -68,7 +69,7 @@ const { action, loader } = createActionApiRoute( traceparent, tracestate, "x-trigger-worker": isFromWorker, - "x-trigger-client": triggerClient, + "x-trigger-client": _triggerClient, "x-trigger-engine-version": engineVersion, "x-trigger-request-idempotency-key": requestIdempotencyKey, "x-trigger-realtime-streams-version": realtimeStreamsVersion, diff --git a/apps/webapp/app/routes/api.v1.tasks.batch.ts b/apps/webapp/app/routes/api.v1.tasks.batch.ts index 2c33e1b4a05..a43e0d3af53 100644 --- a/apps/webapp/app/routes/api.v1.tasks.batch.ts +++ b/apps/webapp/app/routes/api.v1.tasks.batch.ts @@ -1,11 +1,9 @@ import { json } from "@remix-run/server-runtime"; -import { - BatchTriggerTaskV2RequestBody, - BatchTriggerTaskV2Response, - generateJWT, -} from "@trigger.dev/core/v3"; +import type { BatchTriggerTaskV2Response } from "@trigger.dev/core/v3"; +import { BatchTriggerTaskV2RequestBody, generateJWT } from "@trigger.dev/core/v3"; import { env } from "~/env.server"; -import { AuthenticatedEnvironment, getOneTimeUseToken } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import { getOneTimeUseToken } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { createActionApiRoute, everyResource } from "~/services/routeBuilders/apiBuilder.server"; import { resolveIdempotencyKeyTTL } from "~/utils/idempotencyKeys.server"; @@ -77,7 +75,7 @@ const { action, loader } = createActionApiRoute( "x-trigger-span-parent-as-link": spanParentAsLink, "x-trigger-worker": isFromWorker, "x-trigger-client": triggerClient, - "x-trigger-engine-version": engineVersion, + "x-trigger-engine-version": _engineVersion, "batch-processing-strategy": batchProcessingStrategy, "x-trigger-realtime-streams-version": realtimeStreamsVersion, "x-trigger-source": triggerSourceHeader, diff --git a/apps/webapp/app/routes/api.v1.token.ts b/apps/webapp/app/routes/api.v1.token.ts index a210b52bfc8..7763f9bb56e 100644 --- a/apps/webapp/app/routes/api.v1.token.ts +++ b/apps/webapp/app/routes/api.v1.token.ts @@ -1,9 +1,7 @@ import type { ActionFunctionArgs } from "@remix-run/server-runtime"; import { json } from "@remix-run/server-runtime"; -import { - GetPersonalAccessTokenRequestSchema, - GetPersonalAccessTokenResponse, -} from "@trigger.dev/core/v3"; +import type { GetPersonalAccessTokenResponse } from "@trigger.dev/core/v3"; +import { GetPersonalAccessTokenRequestSchema } from "@trigger.dev/core/v3"; import { generateErrorMessage } from "zod-error"; import { logger } from "~/services/logger.server"; import { getPersonalAccessTokenFromAuthorizationCode } from "~/services/personalAccessToken.server"; diff --git a/apps/webapp/app/routes/api.v1.usage.ingest.ts b/apps/webapp/app/routes/api.v1.usage.ingest.ts index c9ad84ae260..fb241a4f3f3 100644 --- a/apps/webapp/app/routes/api.v1.usage.ingest.ts +++ b/apps/webapp/app/routes/api.v1.usage.ingest.ts @@ -1,4 +1,4 @@ -import { ActionFunctionArgs } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; import { logger } from "~/services/logger.server"; import { reportComputeUsage } from "~/services/platform.v3.server"; diff --git a/apps/webapp/app/routes/api.v1.waitpoints.tokens.$waitpointFriendlyId.callback.$hash.ts b/apps/webapp/app/routes/api.v1.waitpoints.tokens.$waitpointFriendlyId.callback.$hash.ts index d86feff7b91..5583b2e63c6 100644 --- a/apps/webapp/app/routes/api.v1.waitpoints.tokens.$waitpointFriendlyId.callback.$hash.ts +++ b/apps/webapp/app/routes/api.v1.waitpoints.tokens.$waitpointFriendlyId.callback.$hash.ts @@ -5,7 +5,6 @@ import { z } from "zod"; import { $replica } from "~/db.server"; import { env } from "~/env.server"; import { processWaitpointCompletionPacket } from "~/runEngine/concerns/waitpointCompletionPacket.server"; -import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { verifyHttpCallbackHash } from "~/services/httpCallback.server"; import { logger } from "~/services/logger.server"; import { engine } from "~/v3/runEngine.server"; @@ -84,7 +83,7 @@ export async function action({ request, params }: ActionFunctionArgs) { `${WaitpointId.toFriendlyId(waitpointId)}/http-callback` ); - const result = await engine.completeWaitpoint({ + const _result = await engine.completeWaitpoint({ id: waitpointId, output: finalData.data ? { type: finalData.dataType, value: finalData.data, isError: false } diff --git a/apps/webapp/app/routes/api.v1.waitpoints.tokens.$waitpointFriendlyId.complete.ts b/apps/webapp/app/routes/api.v1.waitpoints.tokens.$waitpointFriendlyId.complete.ts index 4a3e5f960c6..d268629c7d1 100644 --- a/apps/webapp/app/routes/api.v1.waitpoints.tokens.$waitpointFriendlyId.complete.ts +++ b/apps/webapp/app/routes/api.v1.waitpoints.tokens.$waitpointFriendlyId.complete.ts @@ -57,7 +57,7 @@ const { action, loader } = createActionApiRoute( `${WaitpointId.toFriendlyId(waitpointId)}/token` ); - const result = await engine.completeWaitpoint({ + const _result = await engine.completeWaitpoint({ id: waitpointId, output: finalData.data ? { type: finalData.dataType, value: finalData.data, isError: false } diff --git a/apps/webapp/app/routes/api.v2.deployments.$deploymentId.finalize.ts b/apps/webapp/app/routes/api.v2.deployments.$deploymentId.finalize.ts index 380f2c2e600..0fece044fb6 100644 --- a/apps/webapp/app/routes/api.v2.deployments.$deploymentId.finalize.ts +++ b/apps/webapp/app/routes/api.v2.deployments.$deploymentId.finalize.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { FinalizeDeploymentRequestBody } from "@trigger.dev/core/v3"; import { z } from "zod"; import { authenticateApiRequest } from "~/services/apiAuth.server"; diff --git a/apps/webapp/app/routes/api.v2.tasks.batch.ts b/apps/webapp/app/routes/api.v2.tasks.batch.ts index 4845bcf473a..856e6f1b874 100644 --- a/apps/webapp/app/routes/api.v2.tasks.batch.ts +++ b/apps/webapp/app/routes/api.v2.tasks.batch.ts @@ -1,13 +1,11 @@ import { json } from "@remix-run/server-runtime"; -import { - BatchTriggerTaskV3RequestBody, - BatchTriggerTaskV3Response, - generateJWT, -} from "@trigger.dev/core/v3"; +import type { BatchTriggerTaskV3Response } from "@trigger.dev/core/v3"; +import { BatchTriggerTaskV3RequestBody, generateJWT } from "@trigger.dev/core/v3"; import { prisma } from "~/db.server"; import { env } from "~/env.server"; import { RunEngineBatchTriggerService } from "~/runEngine/services/batchTrigger.server"; -import { AuthenticatedEnvironment, getOneTimeUseToken } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import { getOneTimeUseToken } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { createActionApiRoute, everyResource } from "~/services/routeBuilders/apiBuilder.server"; import { @@ -67,7 +65,7 @@ const { action, loader } = createActionApiRoute( "x-trigger-span-parent-as-link": spanParentAsLink, "x-trigger-worker": isFromWorker, "x-trigger-client": triggerClient, - "x-trigger-engine-version": engineVersion, + "x-trigger-engine-version": _engineVersion, "batch-processing-strategy": batchProcessingStrategy, "x-trigger-request-idempotency-key": requestIdempotencyKey, "x-trigger-realtime-streams-version": realtimeStreamsVersion, diff --git a/apps/webapp/app/routes/api.v3.batches.$batchId.items.ts b/apps/webapp/app/routes/api.v3.batches.$batchId.items.ts index 128a00ca310..c34dbc178c4 100644 --- a/apps/webapp/app/routes/api.v3.batches.$batchId.items.ts +++ b/apps/webapp/app/routes/api.v3.batches.$batchId.items.ts @@ -9,7 +9,6 @@ import { import { authenticateApiRequestWithFailure } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { ServiceValidationError } from "~/v3/services/baseService.server"; -import { engine } from "~/v3/runEngine.server"; const ParamsSchema = z.object({ batchId: z.string(), diff --git a/apps/webapp/app/routes/api.v3.batches.ts b/apps/webapp/app/routes/api.v3.batches.ts index a42706432dd..033dda719b3 100644 --- a/apps/webapp/app/routes/api.v3.batches.ts +++ b/apps/webapp/app/routes/api.v3.batches.ts @@ -1,24 +1,25 @@ import { json } from "@remix-run/server-runtime"; -import { CreateBatchRequestBody, CreateBatchResponse, generateJWT } from "@trigger.dev/core/v3"; +import type { CreateBatchResponse } from "@trigger.dev/core/v3"; +import { CreateBatchRequestBody, generateJWT } from "@trigger.dev/core/v3"; import { prisma } from "~/db.server"; import { env } from "~/env.server"; import { BatchRateLimitExceededError } from "~/runEngine/concerns/batchLimits.server"; import { CreateBatchService } from "~/runEngine/services/createBatch.server"; -import { AuthenticatedEnvironment, getOneTimeUseToken } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import { getOneTimeUseToken } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; +import { extractJwtSigningSecretKey } from "~/services/realtime/jwtAuth.server"; +import { determineRealtimeStreamsVersion } from "~/services/realtime/v1StreamsGlobal.server"; import { createActionApiRoute } from "~/services/routeBuilders/apiBuilder.server"; +import { clientSafeErrorMessage } from "~/utils/prismaErrors"; import { handleRequestIdempotency, saveRequestIdempotency, } from "~/utils/requestIdempotency.server"; +import { sanitizeTriggerSource } from "~/utils/triggerSource"; import { ServiceValidationError } from "~/v3/services/baseService.server"; import { OutOfEntitlementError } from "~/v3/services/triggerTask.server"; -import { sanitizeTriggerSource } from "~/utils/triggerSource"; -import { clientSafeErrorMessage } from "~/utils/prismaErrors"; import { HeadersSchema } from "./api.v1.tasks.$taskId.trigger"; -import { determineRealtimeStreamsVersion } from "~/services/realtime/v1StreamsGlobal.server"; -import { extractJwtSigningSecretKey } from "~/services/realtime/jwtAuth.server"; -import { engine } from "~/v3/runEngine.server"; /** * Phase 1 of 2-phase batch API: Create a batch. diff --git a/apps/webapp/app/routes/api.v3.deployments.$deploymentId.finalize.ts b/apps/webapp/app/routes/api.v3.deployments.$deploymentId.finalize.ts index f08b3ed0525..87fff8bbf76 100644 --- a/apps/webapp/app/routes/api.v3.deployments.$deploymentId.finalize.ts +++ b/apps/webapp/app/routes/api.v3.deployments.$deploymentId.finalize.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { FinalizeDeploymentRequestBody } from "@trigger.dev/core/v3"; import { z } from "zod"; import { authenticateApiRequest } from "~/services/apiAuth.server"; diff --git a/apps/webapp/app/routes/confirm-basic-details.tsx b/apps/webapp/app/routes/confirm-basic-details.tsx index c4101d40044..ae7a5cbce16 100644 --- a/apps/webapp/app/routes/confirm-basic-details.tsx +++ b/apps/webapp/app/routes/confirm-basic-details.tsx @@ -1,7 +1,6 @@ import { getFormProps, getInputProps, useForm } from "@conform-to/react"; import { conformZodMessage, parseWithZod } from "@conform-to/zod"; import { ArrowRightIcon, EnvelopeIcon, UserIcon } from "@heroicons/react/20/solid"; -import { UserGroupIcon } from "~/assets/icons/UserGroupIcon"; import { HandRaisedIcon } from "@heroicons/react/24/solid"; import { RadioGroup } from "@radix-ui/react-radio-group"; import { json, type ActionFunction } from "@remix-run/node"; @@ -9,14 +8,14 @@ import { Form, useActionData, useNavigation } from "@remix-run/react"; import { motion } from "framer-motion"; import { forwardRef, useEffect, useState } from "react"; import { z } from "zod"; -import { AppContainer, MainCenteredContainer } from "~/components/layout/AppLayout"; +import { UserGroupIcon } from "~/assets/icons/UserGroupIcon"; import { BackgroundWrapper } from "~/components/BackgroundWrapper"; +import { AppContainer, MainCenteredContainer } from "~/components/layout/AppLayout"; import { Button } from "~/components/primitives/Buttons"; import { Fieldset } from "~/components/primitives/Fieldset"; import { FormButtons } from "~/components/primitives/FormButtons"; import { FormError } from "~/components/primitives/FormError"; import { FormTitle } from "~/components/primitives/FormTitle"; -import { Hint } from "~/components/primitives/Hint"; import { Input } from "~/components/primitives/Input"; import { InputGroup } from "~/components/primitives/InputGroup"; import { Label } from "~/components/primitives/Label"; diff --git a/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.complete.ts b/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.complete.ts index afc481a571a..b1b7123cc5a 100644 --- a/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.complete.ts +++ b/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.complete.ts @@ -1,9 +1,8 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { RunId, SnapshotId } from "@trigger.dev/core/v3/isomorphic"; -import { - WorkerApiRunAttemptCompleteRequestBody, - WorkerApiRunAttemptCompleteResponseBody, -} from "@trigger.dev/core/v3/workers"; +import type { WorkerApiRunAttemptCompleteResponseBody } from "@trigger.dev/core/v3/workers"; +import { WorkerApiRunAttemptCompleteRequestBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { prisma } from "~/db.server"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.start.ts b/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.start.ts index 4c057046479..e09ab063969 100644 --- a/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.start.ts +++ b/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.start.ts @@ -1,20 +1,17 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { MachinePreset, SemanticInternalAttributes } from "@trigger.dev/core/v3"; -import { RunId, SnapshotId } from "@trigger.dev/core/v3/isomorphic"; -import { - WorkerApiRunAttemptStartRequestBody, - WorkerApiRunAttemptStartResponseBody, -} from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { MachinePreset } from "@trigger.dev/core/v3"; +import { SemanticInternalAttributes } from "@trigger.dev/core/v3"; import type { AuthenticatedEnvironment } from "@trigger.dev/core/v3/auth/environment"; -import { defaultMachine } from "~/services/platform.v3.server"; +import { RunId, SnapshotId } from "@trigger.dev/core/v3/isomorphic"; +import type { WorkerApiRunAttemptStartResponseBody } from "@trigger.dev/core/v3/workers"; +import { WorkerApiRunAttemptStartRequestBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { prisma } from "~/db.server"; import { generateJWTTokenForEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; -import { - createActionApiRoute, - createActionWorkerApiRoute, -} from "~/services/routeBuilders/apiBuilder.server"; +import { defaultMachine } from "~/services/platform.v3.server"; +import { createActionApiRoute } from "~/services/routeBuilders/apiBuilder.server"; import { resolveVariablesForEnvironment } from "~/v3/environmentVariables/environmentVariablesRepository.server"; import { machinePresetFromName } from "~/v3/machinePresets.server"; import { engine } from "~/v3/runEngine.server"; diff --git a/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.heartbeat.ts b/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.heartbeat.ts index d9f6ca9a6d0..39be365e925 100644 --- a/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.heartbeat.ts +++ b/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.heartbeat.ts @@ -1,6 +1,7 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { RunId, SnapshotId } from "@trigger.dev/core/v3/isomorphic"; -import { WorkloadHeartbeatResponseBody } from "@trigger.dev/core/v3/workers"; +import type { WorkloadHeartbeatResponseBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { prisma } from "~/db.server"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.latest.ts b/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.latest.ts index 9254a74e834..714eba46fc7 100644 --- a/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.latest.ts +++ b/apps/webapp/app/routes/engine.v1.dev.runs.$runFriendlyId.snapshots.latest.ts @@ -1,6 +1,7 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { RunId } from "@trigger.dev/core/v3/isomorphic"; -import { WorkerApiRunLatestSnapshotResponseBody } from "@trigger.dev/core/v3/workers"; +import type { WorkerApiRunLatestSnapshotResponseBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { prisma } from "~/db.server"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/routes/engine.v1.runs.$runFriendlyId.wait.duration.ts b/apps/webapp/app/routes/engine.v1.runs.$runFriendlyId.wait.duration.ts index 8d7f6b84345..b2f6c67949e 100644 --- a/apps/webapp/app/routes/engine.v1.runs.$runFriendlyId.wait.duration.ts +++ b/apps/webapp/app/routes/engine.v1.runs.$runFriendlyId.wait.duration.ts @@ -1,5 +1,7 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { WaitForDurationRequestBody, WaitForDurationResponseBody } from "@trigger.dev/core/v3"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WaitForDurationResponseBody } from "@trigger.dev/core/v3"; +import { WaitForDurationRequestBody } from "@trigger.dev/core/v3"; import { RunId } from "@trigger.dev/core/v3/isomorphic"; import { z } from "zod"; @@ -47,7 +49,7 @@ const { action } = createActionApiRoute( idempotencyKeyExpiresAt: idempotencyKeyExpiresAt, }); - const waitResult = await engine.blockRunWithWaitpoint({ + const _waitResult = await engine.blockRunWithWaitpoint({ runId: run.id, waitpoints: waitpoint.id, projectId: authentication.environment.project.id, diff --git a/apps/webapp/app/routes/engine.v1.runs.$runFriendlyId.waitpoints.tokens.$waitpointFriendlyId.wait.ts b/apps/webapp/app/routes/engine.v1.runs.$runFriendlyId.waitpoints.tokens.$waitpointFriendlyId.wait.ts index b190f3de95a..ea17c339787 100644 --- a/apps/webapp/app/routes/engine.v1.runs.$runFriendlyId.waitpoints.tokens.$waitpointFriendlyId.wait.ts +++ b/apps/webapp/app/routes/engine.v1.runs.$runFriendlyId.waitpoints.tokens.$waitpointFriendlyId.wait.ts @@ -34,7 +34,7 @@ const { action } = createActionApiRoute( throw json({ error: "Waitpoint not found" }, { status: 404 }); } - const result = await engine.blockRunWithWaitpoint({ + const _result = await engine.blockRunWithWaitpoint({ runId, waitpoints: [waitpointId], projectId: authentication.environment.project.id, diff --git a/apps/webapp/app/routes/engine.v1.worker-actions.connect.ts b/apps/webapp/app/routes/engine.v1.worker-actions.connect.ts index 713a344d05b..c0e8202f3c8 100644 --- a/apps/webapp/app/routes/engine.v1.worker-actions.connect.ts +++ b/apps/webapp/app/routes/engine.v1.worker-actions.connect.ts @@ -1,8 +1,7 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { - WorkerApiConnectRequestBody, - WorkerApiConnectResponseBody, -} from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WorkerApiConnectResponseBody } from "@trigger.dev/core/v3/workers"; +import { WorkerApiConnectRequestBody } from "@trigger.dev/core/v3/workers"; import { createActionWorkerApiRoute } from "~/services/routeBuilders/apiBuilder.server"; export const action = createActionWorkerApiRoute( diff --git a/apps/webapp/app/routes/engine.v1.worker-actions.deployments.$deploymentFriendlyId.dequeue.ts b/apps/webapp/app/routes/engine.v1.worker-actions.deployments.$deploymentFriendlyId.dequeue.ts index b3495b13712..d7713ed48fe 100644 --- a/apps/webapp/app/routes/engine.v1.worker-actions.deployments.$deploymentFriendlyId.dequeue.ts +++ b/apps/webapp/app/routes/engine.v1.worker-actions.deployments.$deploymentFriendlyId.dequeue.ts @@ -1,5 +1,6 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { WorkerApiDequeueResponseBody } from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WorkerApiDequeueResponseBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { createLoaderWorkerApiRoute } from "~/services/routeBuilders/apiBuilder.server"; diff --git a/apps/webapp/app/routes/engine.v1.worker-actions.dequeue.ts b/apps/webapp/app/routes/engine.v1.worker-actions.dequeue.ts index f1a96335779..e200966a972 100644 --- a/apps/webapp/app/routes/engine.v1.worker-actions.dequeue.ts +++ b/apps/webapp/app/routes/engine.v1.worker-actions.dequeue.ts @@ -1,8 +1,7 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { - WorkerApiDequeueRequestBody, - WorkerApiDequeueResponseBody, -} from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WorkerApiDequeueResponseBody } from "@trigger.dev/core/v3/workers"; +import { WorkerApiDequeueRequestBody } from "@trigger.dev/core/v3/workers"; import { createActionWorkerApiRoute } from "~/services/routeBuilders/apiBuilder.server"; export const action = createActionWorkerApiRoute( diff --git a/apps/webapp/app/routes/engine.v1.worker-actions.heartbeat.ts b/apps/webapp/app/routes/engine.v1.worker-actions.heartbeat.ts index 92a6645a718..7d603b10bff 100644 --- a/apps/webapp/app/routes/engine.v1.worker-actions.heartbeat.ts +++ b/apps/webapp/app/routes/engine.v1.worker-actions.heartbeat.ts @@ -1,8 +1,7 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { - WorkerApiHeartbeatResponseBody, - WorkerApiHeartbeatRequestBody, -} from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WorkerApiHeartbeatResponseBody } from "@trigger.dev/core/v3/workers"; +import { WorkerApiHeartbeatRequestBody } from "@trigger.dev/core/v3/workers"; import { createActionWorkerApiRoute } from "~/services/routeBuilders/apiBuilder.server"; export const action = createActionWorkerApiRoute( diff --git a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.complete.ts b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.complete.ts index 0ea7c8f3c77..051b6d4d04f 100644 --- a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.complete.ts +++ b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.complete.ts @@ -1,8 +1,7 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { - WorkerApiRunAttemptCompleteRequestBody, - WorkerApiRunAttemptCompleteResponseBody, -} from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WorkerApiRunAttemptCompleteResponseBody } from "@trigger.dev/core/v3/workers"; +import { WorkerApiRunAttemptCompleteRequestBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { createActionWorkerApiRoute } from "~/services/routeBuilders/apiBuilder.server"; diff --git a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.start.ts b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.start.ts index de0290f2bb5..a28a362ed93 100644 --- a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.start.ts +++ b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.attempts.start.ts @@ -1,8 +1,7 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { - WorkerApiRunAttemptStartRequestBody, - WorkerApiRunAttemptStartResponseBody, -} from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WorkerApiRunAttemptStartResponseBody } from "@trigger.dev/core/v3/workers"; +import { WorkerApiRunAttemptStartRequestBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { createActionWorkerApiRoute } from "~/services/routeBuilders/apiBuilder.server"; diff --git a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.continue.ts b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.continue.ts index 2feb5bf2638..85b3233989d 100644 --- a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.continue.ts +++ b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.continue.ts @@ -1,5 +1,6 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { WorkerApiContinueRunExecutionRequestBody } from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WorkerApiContinueRunExecutionRequestBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { logger } from "~/services/logger.server"; import { createLoaderWorkerApiRoute } from "~/services/routeBuilders/apiBuilder.server"; diff --git a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.heartbeat.ts b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.heartbeat.ts index cd2f63bd1e3..f7069efdc14 100644 --- a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.heartbeat.ts +++ b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.heartbeat.ts @@ -1,5 +1,6 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { WorkloadHeartbeatResponseBody } from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WorkloadHeartbeatResponseBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { createActionWorkerApiRoute } from "~/services/routeBuilders/apiBuilder.server"; diff --git a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.suspend.ts b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.suspend.ts index ee1b30863f4..42a311ca18d 100644 --- a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.suspend.ts +++ b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.$snapshotFriendlyId.suspend.ts @@ -1,8 +1,7 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { - WorkerApiSuspendRunRequestBody, - WorkerApiSuspendRunResponseBody, -} from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WorkerApiSuspendRunResponseBody } from "@trigger.dev/core/v3/workers"; +import { WorkerApiSuspendRunRequestBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { logger } from "~/services/logger.server"; import { createActionWorkerApiRoute } from "~/services/routeBuilders/apiBuilder.server"; diff --git a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.latest.ts b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.latest.ts index d480acf01eb..73df07748b9 100644 --- a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.latest.ts +++ b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.latest.ts @@ -1,5 +1,6 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { WorkerApiRunLatestSnapshotResponseBody } from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WorkerApiRunLatestSnapshotResponseBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { createLoaderWorkerApiRoute } from "~/services/routeBuilders/apiBuilder.server"; diff --git a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.since.$snapshotId.ts b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.since.$snapshotId.ts index a79de5869ad..87e1ed5eedf 100644 --- a/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.since.$snapshotId.ts +++ b/apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.since.$snapshotId.ts @@ -1,5 +1,6 @@ -import { json, TypedResponse } from "@remix-run/server-runtime"; -import { WorkerApiRunSnapshotsSinceResponseBody } from "@trigger.dev/core/v3/workers"; +import type { TypedResponse } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import type { WorkerApiRunSnapshotsSinceResponseBody } from "@trigger.dev/core/v3/workers"; import { z } from "zod"; import { createLoaderWorkerApiRoute } from "~/services/routeBuilders/apiBuilder.server"; diff --git a/apps/webapp/app/routes/internal.webhooks.slack.interactivity.ts b/apps/webapp/app/routes/internal.webhooks.slack.interactivity.ts index e0706a20fc7..9cf2fa96c0f 100644 --- a/apps/webapp/app/routes/internal.webhooks.slack.interactivity.ts +++ b/apps/webapp/app/routes/internal.webhooks.slack.interactivity.ts @@ -1,4 +1,4 @@ -import { ActionFunctionArgs } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; export function action({ request }: ActionFunctionArgs) { return new Response(null, { status: 200 }); diff --git a/apps/webapp/app/routes/internal.webhooks.tester.ts b/apps/webapp/app/routes/internal.webhooks.tester.ts index f49d12e600a..0d30ae377cb 100644 --- a/apps/webapp/app/routes/internal.webhooks.tester.ts +++ b/apps/webapp/app/routes/internal.webhooks.tester.ts @@ -1,6 +1,6 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; -import { webhooks } from "@trigger.dev/sdk/v3"; -import { WebhookError } from "@trigger.dev/sdk/v3"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; +import { WebhookError, webhooks } from "@trigger.dev/sdk/v3"; import { logger } from "~/services/logger.server"; /* diff --git a/apps/webapp/app/routes/invites.tsx b/apps/webapp/app/routes/invites.tsx index 2d7e4b1c04d..917813e581e 100644 --- a/apps/webapp/app/routes/invites.tsx +++ b/apps/webapp/app/routes/invites.tsx @@ -1,17 +1,19 @@ import { getFormProps, useForm } from "@conform-to/react"; import { parseWithZod } from "@conform-to/zod"; +import { EnvelopeIcon } from "@heroicons/react/20/solid"; import { type ActionFunction, type LoaderFunctionArgs, json, redirect } from "@remix-run/node"; import { Form, useActionData } from "@remix-run/react"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; -import { z } from "zod"; import simplur from "simplur"; +import { z } from "zod"; +import { BackgroundWrapper } from "~/components/BackgroundWrapper"; import { AppContainer, MainCenteredContainer } from "~/components/layout/AppLayout"; import { Button } from "~/components/primitives/Buttons"; import { Fieldset } from "~/components/primitives/Fieldset"; +import { FormError } from "~/components/primitives/FormError"; import { FormTitle } from "~/components/primitives/FormTitle"; -import { Header2, Header3 } from "~/components/primitives/Headers"; +import { Header2 } from "~/components/primitives/Headers"; import { InputGroup } from "~/components/primitives/InputGroup"; -import { FormError } from "~/components/primitives/FormError"; import { Paragraph } from "~/components/primitives/Paragraph"; import { acceptInvite, @@ -21,10 +23,8 @@ import { isAcceptInviteFormError, } from "~/models/member.server"; import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; -import { requireUser, requireUserId } from "~/services/session.server"; +import { requireUser } from "~/services/session.server"; import { invitesPath, rootPath } from "~/utils/pathBuilder"; -import { EnvelopeIcon } from "@heroicons/react/20/solid"; -import { BackgroundWrapper } from "~/components/BackgroundWrapper"; export const loader = async ({ request }: LoaderFunctionArgs) => { const user = await requireUser(request); @@ -122,7 +122,7 @@ export default function Page() { const { invites } = useTypedLoaderData(); const lastSubmission = useActionData(); - const [form, fields] = useForm({ + const [form, _fields] = useForm({ id: "accept-invite", // TODO: type this lastResult: lastSubmission as any, diff --git a/apps/webapp/app/routes/login.mfa/route.tsx b/apps/webapp/app/routes/login.mfa/route.tsx index c75bee54970..fb1612823d1 100644 --- a/apps/webapp/app/routes/login.mfa/route.tsx +++ b/apps/webapp/app/routes/login.mfa/route.tsx @@ -19,15 +19,18 @@ import { InputGroup } from "~/components/primitives/InputGroup"; import { InputOTP, InputOTPGroup, InputOTPSlot } from "~/components/primitives/InputOTP"; import { Paragraph } from "~/components/primitives/Paragraph"; import { Spinner } from "~/components/primitives/Spinner"; +import { + getSession as getMessageSession, + redirectBackWithErrorMessage, + redirectWithErrorMessage, +} from "~/models/message.server"; import { authenticator } from "~/services/auth.server"; -import { commitSession, getUserSession } from "~/services/sessionStorage.server"; -import { commitAuthenticatedSession } from "~/services/sessionDuration.server"; -import { getSession as getMessageSession } from "~/models/message.server"; -import { MultiFactorAuthenticationService } from "~/services/mfa/multiFactorAuthentication.server"; -import { redirectWithErrorMessage, redirectBackWithErrorMessage } from "~/models/message.server"; -import { ServiceValidationError } from "~/v3/services/baseService.server"; import { checkMfaRateLimit, MfaRateLimitError } from "~/services/mfa/mfaRateLimiter.server"; +import { MultiFactorAuthenticationService } from "~/services/mfa/multiFactorAuthentication.server"; import { trackAndClearReferralSource } from "~/services/referralSource.server"; +import { commitAuthenticatedSession } from "~/services/sessionDuration.server"; +import { commitSession, getUserSession } from "~/services/sessionStorage.server"; +import { ServiceValidationError } from "~/v3/services/baseService.server"; export const meta: MetaFunction = ({ matches }) => { const parentMeta = matches diff --git a/apps/webapp/app/routes/metrics.ts b/apps/webapp/app/routes/metrics.ts index f5e9931e662..62d8befe5f6 100644 --- a/apps/webapp/app/routes/metrics.ts +++ b/apps/webapp/app/routes/metrics.ts @@ -1,4 +1,4 @@ -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { prisma } from "~/db.server"; import { metricsRegister } from "~/metrics.server"; diff --git a/apps/webapp/app/routes/orgs.$organizationSlug.billing.ts b/apps/webapp/app/routes/orgs.$organizationSlug.billing.ts index 6aeec6dd17f..1299038fa85 100644 --- a/apps/webapp/app/routes/orgs.$organizationSlug.billing.ts +++ b/apps/webapp/app/routes/orgs.$organizationSlug.billing.ts @@ -1,5 +1,5 @@ import { redirect, type LoaderFunctionArgs } from "@remix-run/server-runtime"; -import { OrganizationParamsSchema, v3BillingPath, v3UsagePath } from "~/utils/pathBuilder"; +import { OrganizationParamsSchema, v3BillingPath } from "~/utils/pathBuilder"; export const loader = async ({ params }: LoaderFunctionArgs) => { const { organizationSlug } = OrganizationParamsSchema.parse(params); diff --git a/apps/webapp/app/routes/orgs.$organizationSlug.projects.$projectParam.environment-variables.ts b/apps/webapp/app/routes/orgs.$organizationSlug.projects.$projectParam.environment-variables.ts index 08e7836a35b..13a79aaad33 100644 --- a/apps/webapp/app/routes/orgs.$organizationSlug.projects.$projectParam.environment-variables.ts +++ b/apps/webapp/app/routes/orgs.$organizationSlug.projects.$projectParam.environment-variables.ts @@ -2,7 +2,7 @@ import { redirect, type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { prisma } from "~/db.server"; import { SelectBestEnvironmentPresenter } from "~/presenters/SelectBestEnvironmentPresenter.server"; import { requireUser } from "~/services/session.server"; -import { ProjectParamSchema, v3ApiKeysPath, v3EnvironmentVariablesPath } from "~/utils/pathBuilder"; +import { ProjectParamSchema, v3EnvironmentVariablesPath } from "~/utils/pathBuilder"; export const loader = async ({ request, params }: LoaderFunctionArgs) => { const user = await requireUser(request); diff --git a/apps/webapp/app/routes/orgs.$organizationSlug.team.ts b/apps/webapp/app/routes/orgs.$organizationSlug.team.ts index 38833438dca..70a89de191d 100644 --- a/apps/webapp/app/routes/orgs.$organizationSlug.team.ts +++ b/apps/webapp/app/routes/orgs.$organizationSlug.team.ts @@ -1,5 +1,5 @@ import { redirect, type LoaderFunctionArgs } from "@remix-run/server-runtime"; -import { OrganizationParamsSchema, organizationTeamPath, v3UsagePath } from "~/utils/pathBuilder"; +import { OrganizationParamsSchema, organizationTeamPath } from "~/utils/pathBuilder"; export const loader = async ({ params }: LoaderFunctionArgs) => { const { organizationSlug } = OrganizationParamsSchema.parse(params); diff --git a/apps/webapp/app/routes/otel.v1.logs.ts b/apps/webapp/app/routes/otel.v1.logs.ts index 1dc7c07c16c..6e75de0a5c4 100644 --- a/apps/webapp/app/routes/otel.v1.logs.ts +++ b/apps/webapp/app/routes/otel.v1.logs.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { ExportLogsServiceRequest, ExportLogsServiceResponse } from "@trigger.dev/otlp-importer"; import { otlpExporter } from "~/v3/otlpExporter.server"; diff --git a/apps/webapp/app/routes/otel.v1.metrics.ts b/apps/webapp/app/routes/otel.v1.metrics.ts index a73442ff513..78c067348f3 100644 --- a/apps/webapp/app/routes/otel.v1.metrics.ts +++ b/apps/webapp/app/routes/otel.v1.metrics.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { ExportMetricsServiceRequest, ExportMetricsServiceResponse, diff --git a/apps/webapp/app/routes/otel.v1.traces.ts b/apps/webapp/app/routes/otel.v1.traces.ts index 8e974c7b1dd..daf106f7f38 100644 --- a/apps/webapp/app/routes/otel.v1.traces.ts +++ b/apps/webapp/app/routes/otel.v1.traces.ts @@ -1,4 +1,5 @@ -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { ExportTraceServiceRequest, ExportTraceServiceResponse } from "@trigger.dev/otlp-importer"; import { otlpExporter } from "~/v3/otlpExporter.server"; diff --git a/apps/webapp/app/routes/projects.$projectRef.ai-help.ts b/apps/webapp/app/routes/projects.$projectRef.ai-help.ts index bb905a97a11..7ad26b28f6d 100644 --- a/apps/webapp/app/routes/projects.$projectRef.ai-help.ts +++ b/apps/webapp/app/routes/projects.$projectRef.ai-help.ts @@ -2,9 +2,8 @@ import { type LoaderFunctionArgs, redirect } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { env } from "~/env.server"; -import { logger } from "~/services/logger.server"; import { requireUserId } from "~/services/session.server"; -import { v3EnvironmentPath, v3ProjectPath, v3TestPath } from "~/utils/pathBuilder"; +import { v3EnvironmentPath } from "~/utils/pathBuilder"; const ParamsSchema = z.object({ projectRef: z.string(), diff --git a/apps/webapp/app/routes/projects.new.ts b/apps/webapp/app/routes/projects.new.ts index 604bcc0fa95..0e347e4a0cb 100644 --- a/apps/webapp/app/routes/projects.new.ts +++ b/apps/webapp/app/routes/projects.new.ts @@ -16,7 +16,7 @@ export const loader = async ({ request }: LoaderFunctionArgs) => { const { organization } = await presenter.call({ user: user }); //redirect them to the most appropriate project return redirect(`${newProjectPath(organization)}${url.search}`); - } catch (e) { + } catch (_e) { const invites = await getUsersInvites({ email: user.email }); if (invites.length > 0) { diff --git a/apps/webapp/app/routes/projects.v3.$projectRef.environment-variables.ts b/apps/webapp/app/routes/projects.v3.$projectRef.environment-variables.ts index 320fd230563..417e79733d8 100644 --- a/apps/webapp/app/routes/projects.v3.$projectRef.environment-variables.ts +++ b/apps/webapp/app/routes/projects.v3.$projectRef.environment-variables.ts @@ -1,4 +1,5 @@ -import { LoaderFunctionArgs, redirect } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { redirect } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { requireUserId } from "~/services/session.server"; diff --git a/apps/webapp/app/routes/projects.v3.$projectRef.metrics/registerProjectMetrics.server.ts b/apps/webapp/app/routes/projects.v3.$projectRef.metrics/registerProjectMetrics.server.ts index 636968e9fc4..ad5d7cfc917 100644 --- a/apps/webapp/app/routes/projects.v3.$projectRef.metrics/registerProjectMetrics.server.ts +++ b/apps/webapp/app/routes/projects.v3.$projectRef.metrics/registerProjectMetrics.server.ts @@ -1,7 +1,8 @@ -import { TaskQueue } from "@trigger.dev/database"; -import { Gauge, Registry } from "prom-client"; +import type { TaskQueue } from "@trigger.dev/database"; +import type { Registry } from "prom-client"; +import { Gauge } from "prom-client"; import { prisma } from "~/db.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { marqs } from "~/v3/marqs/index.server"; export async function registerProjectMetrics( diff --git a/apps/webapp/app/routes/projects.v3.$projectRef.metrics/route.ts b/apps/webapp/app/routes/projects.v3.$projectRef.metrics/route.ts index ca09b3232ae..626d1aa9b2f 100644 --- a/apps/webapp/app/routes/projects.v3.$projectRef.metrics/route.ts +++ b/apps/webapp/app/routes/projects.v3.$projectRef.metrics/route.ts @@ -1,4 +1,5 @@ -import { LoaderFunctionArgs, json } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { Registry } from "prom-client"; import { z } from "zod"; import { prisma } from "~/db.server"; diff --git a/apps/webapp/app/routes/projects.v3.$projectRef.test.ts b/apps/webapp/app/routes/projects.v3.$projectRef.test.ts index a853a29f5e4..3d399eda029 100644 --- a/apps/webapp/app/routes/projects.v3.$projectRef.test.ts +++ b/apps/webapp/app/routes/projects.v3.$projectRef.test.ts @@ -1,4 +1,5 @@ -import { LoaderFunctionArgs, redirect } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { redirect } from "@remix-run/server-runtime"; import { z } from "zod"; import { prisma } from "~/db.server"; import { requireUserId } from "~/services/session.server"; diff --git a/apps/webapp/app/routes/realtime.v1.runs.$runId.ts b/apps/webapp/app/routes/realtime.v1.runs.$runId.ts index 297190bc443..2f4ad427d0a 100644 --- a/apps/webapp/app/routes/realtime.v1.runs.$runId.ts +++ b/apps/webapp/app/routes/realtime.v1.runs.$runId.ts @@ -1,4 +1,3 @@ -import { json } from "@remix-run/server-runtime"; import { z } from "zod"; import { $replica } from "~/db.server"; import { getRequestAbortSignal } from "~/services/httpAsyncStorage.server"; diff --git a/apps/webapp/app/routes/realtime.v1.streams.$runId.$streamId.ts b/apps/webapp/app/routes/realtime.v1.streams.$runId.$streamId.ts index 19e56e5e0aa..aaba0c33a35 100644 --- a/apps/webapp/app/routes/realtime.v1.streams.$runId.$streamId.ts +++ b/apps/webapp/app/routes/realtime.v1.streams.$runId.$streamId.ts @@ -4,7 +4,6 @@ import { $replica } from "~/db.server"; import { getRequestAbortSignal } from "~/services/httpAsyncStorage.server"; import { getRealtimeStreamInstance } from "~/services/realtime/v1StreamsGlobal.server"; import { anyResource, createLoaderApiRoute } from "~/services/routeBuilders/apiBuilder.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { runStore } from "~/v3/runStore.server"; const ParamsSchema = z.object({ diff --git a/apps/webapp/app/routes/resources.$projectId.deployments.$deploymentId.logs.ts b/apps/webapp/app/routes/resources.$projectId.deployments.$deploymentId.logs.ts index e23f8521fe7..f149a5d2638 100644 --- a/apps/webapp/app/routes/resources.$projectId.deployments.$deploymentId.logs.ts +++ b/apps/webapp/app/routes/resources.$projectId.deployments.$deploymentId.logs.ts @@ -1,4 +1,4 @@ -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { ExternalBuildData } from "@trigger.dev/core/v3"; import { z } from "zod"; import { prisma } from "~/db.server"; diff --git a/apps/webapp/app/routes/resources.account.mfa.setup/route.tsx b/apps/webapp/app/routes/resources.account.mfa.setup/route.tsx index 04f5c8f74e0..983e81cc8ab 100644 --- a/apps/webapp/app/routes/resources.account.mfa.setup/route.tsx +++ b/apps/webapp/app/routes/resources.account.mfa.setup/route.tsx @@ -143,8 +143,13 @@ export async function action({ request }: ActionFunctionArgs) { } export function MfaSetup({ isEnabled }: { isEnabled: boolean }) { - const { state, actions, isQrDialogOpen, isRecoveryDialogOpen, isDisableDialogOpen } = - useMfaSetup(isEnabled); + const { + state, + actions, + isQrDialogOpen, + isRecoveryDialogOpen: _isRecoveryDialogOpen, + isDisableDialogOpen, + } = useMfaSetup(isEnabled); const handleToggle = (enabled: boolean) => { if (enabled && !state.isEnabled) { diff --git a/apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts b/apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts index 8e1aad9ae1e..1c7d7b028ba 100644 --- a/apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts +++ b/apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts @@ -1,6 +1,6 @@ import { useReducer, useEffect } from "react"; import { useTypedFetcher } from "remix-typedjson"; -import { action } from "./route"; +import type { action } from "./route"; export type MfaPhase = "idle" | "enabling" | "validating" | "showing-recovery" | "disabling"; diff --git a/apps/webapp/app/routes/resources.batches.$batchId.check-completion.ts b/apps/webapp/app/routes/resources.batches.$batchId.check-completion.ts index 40c4565a93a..150af0237a3 100644 --- a/apps/webapp/app/routes/resources.batches.$batchId.check-completion.ts +++ b/apps/webapp/app/routes/resources.batches.$batchId.check-completion.ts @@ -1,5 +1,6 @@ import { parseWithZod } from "@conform-to/zod"; -import { ActionFunction, json } from "@remix-run/node"; +import type { ActionFunction } from "@remix-run/node"; +import { json } from "@remix-run/node"; import { assertExhaustive } from "@trigger.dev/core/utils"; import { z } from "zod"; import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; diff --git a/apps/webapp/app/routes/resources.branches.archive.tsx b/apps/webapp/app/routes/resources.branches.archive.tsx index 252fe696a41..bf9e05a0d64 100644 --- a/apps/webapp/app/routes/resources.branches.archive.tsx +++ b/apps/webapp/app/routes/resources.branches.archive.tsx @@ -1,8 +1,8 @@ import { getFormProps, getInputProps, useForm } from "@conform-to/react"; import { parseWithZod } from "@conform-to/zod"; import { DialogClose } from "@radix-ui/react-dialog"; -import { Form, useActionData, useFetcher, useLocation } from "@remix-run/react"; -import { json, type ActionFunctionArgs } from "@remix-run/server-runtime"; +import { Form, useActionData, useLocation } from "@remix-run/react"; +import { type ActionFunctionArgs } from "@remix-run/server-runtime"; import { z } from "zod"; import { ArchiveIcon } from "~/assets/icons/ArchiveIcon"; import { Button } from "~/components/primitives/Buttons"; diff --git a/apps/webapp/app/routes/resources.feedback.ts b/apps/webapp/app/routes/resources.feedback.ts index edcd68ef5eb..bdb16ab7991 100644 --- a/apps/webapp/app/routes/resources.feedback.ts +++ b/apps/webapp/app/routes/resources.feedback.ts @@ -6,7 +6,7 @@ import { redirectWithSuccessMessage } from "~/models/message.server"; import { requireUser } from "~/services/session.server"; import { sendToPlain } from "~/utils/plain.server"; -let client: PlainClient | undefined; +let _client: PlainClient | undefined; export const feedbackTypes = { bug: { diff --git a/apps/webapp/app/routes/resources.metric.tsx b/apps/webapp/app/routes/resources.metric.tsx index bc6e46318e1..d456ba1ce1b 100644 --- a/apps/webapp/app/routes/resources.metric.tsx +++ b/apps/webapp/app/routes/resources.metric.tsx @@ -84,7 +84,7 @@ export const action = async ({ request }: ActionFunctionArgs) => { promptVersions, operations, providers, - tags, + tags: _tags, } = submission.data; // Check they should be able to access it diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx index 38fed23c753..1842edf347c 100644 --- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx +++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx @@ -1,22 +1,29 @@ import { getFormProps, getInputProps, useForm } from "@conform-to/react"; import { parseWithZod } from "@conform-to/zod"; import { CheckCircleIcon, LockClosedIcon, PlusIcon } from "@heroicons/react/20/solid"; +import { DialogClose } from "@radix-ui/react-dialog"; import { Form, useActionData, - useNavigation, + useLocation, useNavigate, + useNavigation, useSearchParams, - useLocation, } from "@remix-run/react"; import { type LoaderFunctionArgs, json } from "@remix-run/server-runtime"; -import { redirect, typedjson, useTypedFetcher } from "remix-typedjson"; +import { GitBranchIcon } from "lucide-react"; +import { useEffect, useState } from "react"; +import { typedjson, useTypedFetcher } from "remix-typedjson"; import { z } from "zod"; +import { + EnvironmentIcon, + environmentFullTitle, + environmentTextClassName, +} from "~/components/environments/EnvironmentLabel"; import { OctoKitty } from "~/components/GitHubLoginButton"; +import { Button } from "~/components/primitives/Buttons"; +import { DateTime } from "~/components/primitives/DateTime"; import { Dialog, DialogContent, DialogHeader, DialogTrigger } from "~/components/primitives/Dialog"; -import { DialogClose } from "@radix-ui/react-dialog"; -import { Button, LinkButton } from "~/components/primitives/Buttons"; -import { PermissionLink } from "~/components/primitives/PermissionLink"; import { Fieldset } from "~/components/primitives/Fieldset"; import { FormButtons } from "~/components/primitives/FormButtons"; import { FormError } from "~/components/primitives/FormError"; @@ -25,18 +32,12 @@ import { Input } from "~/components/primitives/Input"; import { InputGroup } from "~/components/primitives/InputGroup"; import { Label } from "~/components/primitives/Label"; import { Paragraph } from "~/components/primitives/Paragraph"; +import { PermissionLink } from "~/components/primitives/PermissionLink"; import { Select, SelectItem } from "~/components/primitives/Select"; import { SpinnerWhite } from "~/components/primitives/Spinner"; import { Switch } from "~/components/primitives/Switch"; import { TextLink } from "~/components/primitives/TextLink"; -import { DateTime } from "~/components/primitives/DateTime"; import { InfoIconTooltip } from "~/components/primitives/Tooltip"; -import { - EnvironmentIcon, - environmentFullTitle, - environmentTextClassName, -} from "~/components/environments/EnvironmentLabel"; -import { GitBranchIcon } from "lucide-react"; import { redirectBackWithErrorMessage, redirectBackWithSuccessMessage, @@ -46,22 +47,21 @@ import { import { resolveOrgIdFromSlug } from "~/models/organization.server"; import { findProjectBySlug } from "~/models/project.server"; import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; -import { ProjectSettingsService } from "~/services/projectSettings.server"; +import { GitHubSettingsPresenter } from "~/presenters/v3/GitHubSettingsPresenter.server"; import { logger } from "~/services/logger.server"; import { triggerInitialDeployment } from "~/services/platform.v3.server"; -import { VercelIntegrationService } from "~/services/vercelIntegration.server"; -import { requireUserId } from "~/services/session.server"; +import { ProjectSettingsService } from "~/services/projectSettings.server"; import { rbac } from "~/services/rbac.server"; import { dashboardAction } from "~/services/routeBuilders/dashboardBuilder"; +import { requireUserId } from "~/services/session.server"; +import { VercelIntegrationService } from "~/services/vercelIntegration.server"; +import { cn } from "~/utils/cn"; import { - githubAppInstallPath, EnvironmentParamSchema, + githubAppInstallPath, v3ProjectSettingsIntegrationsPath, } from "~/utils/pathBuilder"; -import { cn } from "~/utils/cn"; import { type BranchTrackingConfig } from "~/v3/github"; -import { GitHubSettingsPresenter } from "~/presenters/v3/GitHubSettingsPresenter.server"; -import { useEffect, useState } from "react"; // ============================================================================ // Types diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs.ts b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs.ts index 8e918ec5f2f..a3425bd2dab 100644 --- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs.ts +++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs.ts @@ -1,17 +1,17 @@ -import { type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { json } from "@remix-run/node"; -import { requireUser, requireUserId } from "~/services/session.server"; -import { EnvironmentParamSchema } from "~/utils/pathBuilder"; +import { type LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { $replica } from "~/db.server"; import { findProjectBySlug } from "~/models/project.server"; import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; import { + LogsListOptionsSchema, LogsListPresenter, type LogLevel, - LogsListOptionsSchema, } from "~/presenters/v3/LogsListPresenter.server"; -import { $replica } from "~/db.server"; import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; import { getCurrentPlan } from "~/services/platform.v3.server"; +import { requireUser } from "~/services/session.server"; +import { EnvironmentParamSchema } from "~/utils/pathBuilder"; // Valid log levels for filtering const validLevels: LogLevel[] = ["TRACE", "DEBUG", "INFO", "WARN", "ERROR"]; diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.idempotencyKey.reset.tsx b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.idempotencyKey.reset.tsx index 06233f88c70..f774db50b11 100644 --- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.idempotencyKey.reset.tsx +++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.idempotencyKey.reset.tsx @@ -1,11 +1,11 @@ -import { type ActionFunction, json } from "@remix-run/node"; +import { type ActionFunction } from "@remix-run/node"; import { prisma } from "~/db.server"; import { jsonWithErrorMessage, jsonWithSuccessMessage } from "~/models/message.server"; import { logger } from "~/services/logger.server"; import { requireUserId } from "~/services/session.server"; +import { v3RunParamsSchema } from "~/utils/pathBuilder"; import { runStore } from "~/v3/runStore.server"; import { ResetIdempotencyKeyService } from "~/v3/services/resetIdempotencyKey.server"; -import { v3RunParamsSchema } from "~/utils/pathBuilder"; export const action: ActionFunction = async ({ request, params }) => { const userId = await requireUserId(request); diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx index 6f5b615d6bd..72b4d614ad2 100644 --- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx +++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx @@ -19,10 +19,10 @@ import { taskRunErrorEnhancer, } from "@trigger.dev/core/v3"; import { assertNever } from "assert-never"; -import { useEffect, useState } from "react"; +import { useEffect } from "react"; import { typedjson, useTypedFetcher } from "remix-typedjson"; +import { toast } from "sonner"; import { ExitIcon } from "~/assets/icons/ExitIcon"; -import { RegionLabel } from "~/components/runs/v3/RegionLabel"; import { AdminDebugRun } from "~/components/admin/debugRun"; import { CodeBlock } from "~/components/code/CodeBlock"; import { EnvironmentCombo } from "~/components/environments/EnvironmentLabel"; @@ -42,8 +42,6 @@ import { PopoverMenuItem, PopoverTrigger, } from "~/components/primitives/Popover"; -import { ToastUI } from "~/components/primitives/Toast"; -import { toast } from "sonner"; import * as Property from "~/components/primitives/PropertyTable"; import { Spinner } from "~/components/primitives/Spinner"; import { @@ -55,18 +53,19 @@ import { TableRow, } from "~/components/primitives/Table"; import { TabButton, TabContainer } from "~/components/primitives/Tabs"; -import { SessionStatusCombo } from "~/components/sessions/v1/SessionStatus"; import { TextLink } from "~/components/primitives/TextLink"; +import { ToastUI } from "~/components/primitives/Toast"; import { InfoIconTooltip, SimpleTooltip } from "~/components/primitives/Tooltip"; +import { TruncatedCopyableValue } from "~/components/primitives/TruncatedCopyableValue"; import { RunTimeline, RunTimelineEvent, SpanTimeline } from "~/components/run/RunTimeline"; -import { SpanHorizontalTimeline } from "~/components/runs/v3/SpanHorizontalTimeline"; +import { AIEmbedSpanDetails, AISpanDetails, AIToolCallSpanDetails } from "~/components/runs/v3/ai"; import { PacketDisplay } from "~/components/runs/v3/PacketDisplay"; +import { PromptSpanDetails } from "~/components/runs/v3/PromptSpanDetails"; +import { RegionLabel } from "~/components/runs/v3/RegionLabel"; import { RunIcon } from "~/components/runs/v3/RunIcon"; import { RunTag } from "~/components/runs/v3/RunTag"; -import { TruncatedCopyableValue } from "~/components/primitives/TruncatedCopyableValue"; import { SpanEvents } from "~/components/runs/v3/SpanEvents"; -import { AISpanDetails, AIToolCallSpanDetails, AIEmbedSpanDetails } from "~/components/runs/v3/ai"; -import { PromptSpanDetails } from "~/components/runs/v3/PromptSpanDetails"; +import { SpanHorizontalTimeline } from "~/components/runs/v3/SpanHorizontalTimeline"; import { SpanTitle } from "~/components/runs/v3/SpanTitle"; import { TaskRunAttemptStatusCombo } from "~/components/runs/v3/TaskRunAttemptStatus"; import { @@ -75,6 +74,7 @@ import { } from "~/components/runs/v3/TaskRunStatus"; import { WaitpointDetailTable } from "~/components/runs/v3/WaitpointDetails"; import { RuntimeIcon } from "~/components/RuntimeIcon"; +import { SessionStatusCombo } from "~/components/sessions/v1/SessionStatus"; import { WarmStartCombo } from "~/components/WarmStarts"; import { useEnvironment } from "~/hooks/useEnvironment"; import { useOrganization } from "~/hooks/useOrganizations"; @@ -90,7 +90,6 @@ import { formatCurrencyAccurate } from "~/utils/numberFormatter"; import { docsPath, v3BatchPath, - v3SessionPath, v3DeploymentVersionPath, v3RunDownloadLogsPath, v3RunIdempotencyKeyResetPath, @@ -99,6 +98,7 @@ import { v3RunSpanPath, v3RunsPath, v3SchedulePath, + v3SessionPath, v3SpanParamsSchema, } from "~/utils/pathBuilder"; import { createTimelineSpanEventsFromSpanEvents } from "~/utils/timelineSpanEvents"; @@ -266,10 +266,10 @@ function SpanBody({ runParam?: string; closePanel?: () => void; }) { - const organization = useOrganization(); - const project = useProject(); - const environment = useEnvironment(); - const { value, replace } = useSearchParams(); + const _organization = useOrganization(); + const _project = useProject(); + const _environment = useEnvironment(); + const { value, replace: _replace } = useSearchParams(); let tab = value("tab"); if (tab === "context") { @@ -326,16 +326,6 @@ function SpanBody({
); } - -function formatSpanDuration(nanoseconds: number): string { - const ms = nanoseconds / 1_000_000; - if (ms < 1000) return `${Math.round(ms)}ms`; - if (ms < 60_000) return `${(ms / 1000).toFixed(1)}s`; - const mins = Math.floor(ms / 60_000); - const secs = ((ms % 60_000) / 1000).toFixed(0); - return `${mins}m ${secs}s`; -} - function applySpanOverrides(span: Span, spanOverrides?: SpanOverride): Span { if (!spanOverrides) { return span; @@ -1274,36 +1264,6 @@ function RunError({ error }: { error: TaskRunError }) { } } } - -function CollapsibleProperties({ code }: { code: string }) { - const [open, setOpen] = useState(false); - return ( -
- - {open && ( -
- -
- )} -
- ); -} - function SpanEntity({ span }: { span: Span }) { const isAdmin = useHasAdminAccess(); diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route.tsx b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route.tsx index 39a103d8f10..65c6c20d6a2 100644 --- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route.tsx +++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.schedules.new/route.tsx @@ -8,15 +8,15 @@ import { useLocation, useNavigation, } from "@remix-run/react"; -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; -import { useVirtualizer } from "@tanstack/react-virtual"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { parseExpression } from "cron-parser"; import cronstrue from "cronstrue"; -import { useRef, useState } from "react"; +import { useState } from "react"; import { + EnvironmentCombo, environmentTextClassName, environmentTitle, - EnvironmentCombo, } from "~/components/environments/EnvironmentLabel"; import { Button, LinkButton } from "~/components/primitives/Buttons"; import { CheckboxWithLabel } from "~/components/primitives/Checkbox"; @@ -30,6 +30,7 @@ import { InputGroup } from "~/components/primitives/InputGroup"; import { Label } from "~/components/primitives/Label"; import { Paragraph } from "~/components/primitives/Paragraph"; import { Select, SelectItem } from "~/components/primitives/Select"; +import { Spinner } from "~/components/primitives/Spinner"; import { Table, TableBody, @@ -39,26 +40,20 @@ import { TableRow, } from "~/components/primitives/Table"; import { TextLink } from "~/components/primitives/TextLink"; +import { TimezoneList } from "~/components/scheduled/timezones"; import { prisma } from "~/db.server"; +import { useEnvironment } from "~/hooks/useEnvironment"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; -import { EditableScheduleElements } from "~/presenters/v3/EditSchedulePresenter.server"; +import type { EditableScheduleElements } from "~/presenters/v3/EditSchedulePresenter.server"; +import { logger } from "~/services/logger.server"; import { requireUserId } from "~/services/session.server"; import { cn } from "~/utils/cn"; -import { - EnvironmentParamSchema, - ProjectParamSchema, - docsPath, - v3EnvironmentPath, -} from "~/utils/pathBuilder"; +import { EnvironmentParamSchema, docsPath, v3EnvironmentPath } from "~/utils/pathBuilder"; import { CronPattern, UpsertSchedule } from "~/v3/schedules"; import { UpsertTaskScheduleService } from "~/v3/services/upsertTaskSchedule.server"; import { AIGeneratedCronField } from "../resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language"; -import { TimezoneList } from "~/components/scheduled/timezones"; -import { logger } from "~/services/logger.server"; -import { Spinner } from "~/components/primitives/Spinner"; -import { useEnvironment } from "~/hooks/useEnvironment"; const cronFormat = `* * * * * ┬ ┬ ┬ ┬ ┬ diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx index e55baa8dc9f..7e8648b3fa2 100644 --- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx +++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx @@ -1,15 +1,19 @@ import { getFormProps, useForm } from "@conform-to/react"; import { parseWithZod } from "@conform-to/zod"; import { CheckCircleIcon, ExclamationTriangleIcon } from "@heroicons/react/20/solid"; -import { Form, useActionData, useFetcher, useNavigation, useLocation } from "@remix-run/react"; +import { DialogClose } from "@radix-ui/react-dialog"; +import { Form, useActionData, useLocation, useNavigation } from "@remix-run/react"; import { type LoaderFunctionArgs, json } from "@remix-run/server-runtime"; +import { Result, fromPromise } from "neverthrow"; +import { useEffect, useRef, useState } from "react"; import { typedjson, useTypedFetcher } from "remix-typedjson"; import { z } from "zod"; -import { Dialog, DialogContent, DialogHeader, DialogTrigger } from "~/components/primitives/Dialog"; -import { DialogClose } from "@radix-ui/react-dialog"; -import { Button, LinkButton } from "~/components/primitives/Buttons"; -import { PermissionLink } from "~/components/primitives/PermissionLink"; +import { BuildSettingsFields } from "~/components/integrations/VercelBuildSettings"; +import { VercelLogo } from "~/components/integrations/VercelLogo"; +import { Button } from "~/components/primitives/Buttons"; import { Callout } from "~/components/primitives/Callout"; +import { DateTime } from "~/components/primitives/DateTime"; +import { Dialog, DialogContent, DialogHeader, DialogTrigger } from "~/components/primitives/Dialog"; import { Fieldset } from "~/components/primitives/Fieldset"; import { FormButtons } from "~/components/primitives/FormButtons"; import { FormError } from "~/components/primitives/FormError"; @@ -17,24 +21,27 @@ import { Hint } from "~/components/primitives/Hint"; import { InputGroup } from "~/components/primitives/InputGroup"; import { Label } from "~/components/primitives/Label"; import { Paragraph } from "~/components/primitives/Paragraph"; +import { PermissionLink } from "~/components/primitives/PermissionLink"; import { Select, SelectItem } from "~/components/primitives/Select"; import { SpinnerWhite } from "~/components/primitives/Spinner"; -import { DateTime } from "~/components/primitives/DateTime"; -import { VercelLogo } from "~/components/integrations/VercelLogo"; -import { BuildSettingsFields } from "~/components/integrations/VercelBuildSettings"; import { redirectBackWithErrorMessage, - redirectWithSuccessMessage, redirectWithErrorMessage, + redirectWithSuccessMessage, } from "~/models/message.server"; import { resolveOrgIdFromSlug } from "~/models/organization.server"; import { findProjectBySlug } from "~/models/project.server"; import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; +import { VercelIntegrationRepository } from "~/models/vercelIntegration.server"; +import { + type VercelOnboardingData, + VercelSettingsPresenter, +} from "~/presenters/v3/VercelSettingsPresenter.server"; import { logger } from "~/services/logger.server"; -import { requireUserId } from "~/services/session.server"; import { rbac } from "~/services/rbac.server"; import { dashboardAction } from "~/services/routeBuilders/dashboardBuilder"; -import { sanitizeVercelNextUrl } from "~/v3/vercel/vercelUrls.server"; +import { requireUserId } from "~/services/session.server"; +import { VercelIntegrationService } from "~/services/vercelIntegration.server"; import { EnvironmentParamSchema, v3ProjectSettingsIntegrationsPath, @@ -42,22 +49,14 @@ import { vercelResourcePath, } from "~/utils/pathBuilder"; import { - VercelSettingsPresenter, - type VercelOnboardingData, -} from "~/presenters/v3/VercelSettingsPresenter.server"; -import { VercelIntegrationService } from "~/services/vercelIntegration.server"; -import { VercelIntegrationRepository } from "~/models/vercelIntegration.server"; -import { - type VercelProjectIntegrationData, - type SyncEnvVarsMapping, type EnvSlug, + type SyncEnvVarsMapping, + type VercelProjectIntegrationData, envSlugArrayField, - envTypeToSlug, getAvailableEnvSlugs, getAvailableEnvSlugsForBuildSettings, } from "~/v3/vercel/vercelProjectIntegrationSchema"; -import { Result, fromPromise } from "neverthrow"; -import { useEffect, useRef, useState } from "react"; +import { sanitizeVercelNextUrl } from "~/v3/vercel/vercelUrls.server"; export type ConnectedVercelProject = { id: string; @@ -734,7 +733,7 @@ function ConnectedVercelProjectForm({ originalAutoPromote, ]); - const [configForm, fields] = useForm({ + const [configForm, _fields] = useForm({ id: "update-vercel-config", lastResult: lastSubmission, shouldRevalidate: "onSubmit", @@ -790,7 +789,7 @@ function ConnectedVercelProjectForm({ ? { stg: "Map a custom Vercel environment to Staging to enable this" } : undefined; - const formatSelectedEnvs = ( + const _formatSelectedEnvs = ( selected: EnvSlug[], availableSlugs: EnvSlug[] = availableEnvSlugs ): string => { @@ -1099,9 +1098,9 @@ function VercelSettingsPanel({ isLoadingVercelData?: boolean; }) { const fetcher = useTypedFetcher(); - const location = useLocation(); + const _location = useLocation(); const data = fetcher.data; - const [hasError, setHasError] = useState(false); + const [hasError, _setHasError] = useState(false); const [hasFetched, setHasFetched] = useState(false); useEffect(() => { @@ -1218,4 +1217,4 @@ function VercelSettingsPanel({ import { VercelOnboardingModal } from "~/components/integrations/VercelOnboardingModal"; -export { VercelSettingsPanel, VercelOnboardingModal }; +export { VercelOnboardingModal, VercelSettingsPanel }; diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route.tsx b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route.tsx index 7343aa411fb..fa065428471 100644 --- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route.tsx +++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route.tsx @@ -1,8 +1,8 @@ -import { env } from "~/env.server"; import { parseWithZod } from "@conform-to/zod"; import { Form, useLocation, useNavigation, useSubmit } from "@remix-run/react"; import { type ActionFunctionArgs, json } from "@remix-run/server-runtime"; -import { stringifyIO, timeoutError, WaitpointTokenStatus } from "@trigger.dev/core/v3"; +import type { WaitpointTokenStatus } from "@trigger.dev/core/v3"; +import { stringifyIO, timeoutError } from "@trigger.dev/core/v3"; import { WaitpointId } from "@trigger.dev/core/v3/isomorphic"; import type { Waitpoint } from "@trigger.dev/database"; import { useCallback, useRef } from "react"; @@ -12,9 +12,12 @@ import { JSONEditor } from "~/components/code/JSONEditor"; import { Button } from "~/components/primitives/Buttons"; import { DateTime } from "~/components/primitives/DateTime"; import { Paragraph } from "~/components/primitives/Paragraph"; +import { SpinnerWhite } from "~/components/primitives/Spinner"; import { InfoIconTooltip } from "~/components/primitives/Tooltip"; import { LiveCountdown } from "~/components/runs/v3/LiveTimer"; import { $replica } from "~/db.server"; +import { env } from "~/env.server"; +import { useEnvironment } from "~/hooks/useEnvironment"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; @@ -22,10 +25,8 @@ import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server"; import { processWaitpointCompletionPacket } from "~/runEngine/concerns/waitpointCompletionPacket.server"; import { logger } from "~/services/logger.server"; import { requireUserId } from "~/services/session.server"; -import { EnvironmentParamSchema, ProjectParamSchema, v3RunsPath } from "~/utils/pathBuilder"; +import { EnvironmentParamSchema, v3RunsPath } from "~/utils/pathBuilder"; import { engine } from "~/v3/runEngine.server"; -import { SpinnerWhite } from "~/components/primitives/Spinner"; -import { useEnvironment } from "~/hooks/useEnvironment"; const CompleteWaitpointFormData = z.discriminatedUnion("type", [ z.object({ @@ -99,7 +100,7 @@ export const action = async ({ request, params }: ActionFunctionArgs) => { switch (submission.value.type) { case "DATETIME": { - const result = await engine.completeWaitpoint({ + const _result = await engine.completeWaitpoint({ id: waitpointId, }); @@ -112,7 +113,7 @@ export const action = async ({ request, params }: ActionFunctionArgs) => { case "MANUAL": { if (submission.value.isTimeout) { try { - const result = await engine.completeWaitpoint({ + const _result = await engine.completeWaitpoint({ id: waitpointId, output: { type: "application/json", @@ -126,7 +127,7 @@ export const action = async ({ request, params }: ActionFunctionArgs) => { request, "Waitpoint timed out" ); - } catch (e) { + } catch (_e) { return redirectWithErrorMessage( submission.value.failureRedirect, request, @@ -172,7 +173,7 @@ export const action = async ({ request, params }: ActionFunctionArgs) => { `${WaitpointId.toFriendlyId(waitpointId)}/token` ); - const result = await engine.completeWaitpoint({ + const _result = await engine.completeWaitpoint({ id: waitpointId, output: finalData.data ? { type: finalData.dataType, value: finalData.data, isError: false } @@ -184,7 +185,7 @@ export const action = async ({ request, params }: ActionFunctionArgs) => { request, "Waitpoint completed" ); - } catch (e) { + } catch (_e) { return redirectWithErrorMessage( submission.value.failureRedirect, request, diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language.tsx b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language.tsx index 3f119b8ae71..99c16f2b52c 100644 --- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language.tsx +++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language.tsx @@ -1,5 +1,6 @@ import { useFetcher } from "@remix-run/react"; -import { ActionFunctionArgs, json } from "@remix-run/server-runtime"; +import type { ActionFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { useCallback, useEffect, useState } from "react"; import { z } from "zod"; import { AISparkleIcon } from "~/assets/icons/AISparkleIcon"; diff --git a/apps/webapp/app/routes/resources.packets.$environmentId.$.ts b/apps/webapp/app/routes/resources.packets.$environmentId.$.ts index 4269e13d63a..77c6d08ec17 100644 --- a/apps/webapp/app/routes/resources.packets.$environmentId.$.ts +++ b/apps/webapp/app/routes/resources.packets.$environmentId.$.ts @@ -1,4 +1,4 @@ -import { LoaderFunctionArgs } from "@remix-run/node"; +import type { LoaderFunctionArgs } from "@remix-run/node"; import { basename } from "node:path"; import { z } from "zod"; import { prisma } from "~/db.server"; diff --git a/apps/webapp/app/routes/resources.runs.$runParam.logs.download.ts b/apps/webapp/app/routes/resources.runs.$runParam.logs.download.ts index 6b514034294..99797e79b66 100644 --- a/apps/webapp/app/routes/resources.runs.$runParam.logs.download.ts +++ b/apps/webapp/app/routes/resources.runs.$runParam.logs.download.ts @@ -1,4 +1,4 @@ -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { prisma } from "~/db.server"; import { env } from "~/env.server"; import { runStore } from "~/v3/runStore.server"; diff --git a/apps/webapp/app/routes/resources.runs.$runParam.ts b/apps/webapp/app/routes/resources.runs.$runParam.ts index e85da45bbde..ecd2e96a8f2 100644 --- a/apps/webapp/app/routes/resources.runs.$runParam.ts +++ b/apps/webapp/app/routes/resources.runs.$runParam.ts @@ -1,11 +1,12 @@ -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; -import { MachinePresetName, prettyPrintPacket, TaskRunError } from "@trigger.dev/core/v3"; -import { typedjson, UseDataFunctionReturn } from "remix-typedjson"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { prettyPrintPacket, TaskRunError } from "@trigger.dev/core/v3"; +import type { UseDataFunctionReturn } from "remix-typedjson"; +import { typedjson } from "remix-typedjson"; import { RUNNING_STATUSES } from "~/components/runs/v3/TaskRunStatus"; import { $replica } from "~/db.server"; import { requireUserId } from "~/services/session.server"; import { v3RunParamsSchema } from "~/utils/pathBuilder"; -import { machinePresetFromName, machinePresetFromRun } from "~/v3/machinePresets.server"; +import { machinePresetFromRun } from "~/v3/machinePresets.server"; import { runStore } from "~/v3/runStore.server"; import { FINAL_ATTEMPT_STATUSES, isFinalRunStatus } from "~/v3/taskStatus"; diff --git a/apps/webapp/app/routes/resources.taskruns.$runParam.replay.ts b/apps/webapp/app/routes/resources.taskruns.$runParam.replay.ts index 58a993295c5..a231ef4dee8 100644 --- a/apps/webapp/app/routes/resources.taskruns.$runParam.replay.ts +++ b/apps/webapp/app/routes/resources.taskruns.$runParam.replay.ts @@ -102,7 +102,7 @@ export async function loader({ request, params }: LoaderFunctionArgs) { $replica ); - let synthetic: + let _synthetic: | (Awaited> & { __synth: true }) | undefined; if (!run) { @@ -124,7 +124,7 @@ export async function loader({ request, params }: LoaderFunctionArgs) { organizationId: entry.orgId, }); if (!buffered) throw new Response("Not Found", { status: 404 }); - synthetic = Object.assign(buffered, { __synth: true as const }); + _synthetic = Object.assign(buffered, { __synth: true as const }); // Scope the project lookup to the buffer entry's org as well as the // env id. The prior `orgMember.findFirst` above confirms the user // belongs to `entry.orgId`; pinning `organizationId` here means a diff --git a/apps/webapp/app/routes/storybook.charts/route.tsx b/apps/webapp/app/routes/storybook.charts/route.tsx index cd2208787fe..c75b945fcae 100644 --- a/apps/webapp/app/routes/storybook.charts/route.tsx +++ b/apps/webapp/app/routes/storybook.charts/route.tsx @@ -68,7 +68,7 @@ function ChartsDashboard() { [dateRange?.startDate, dateRange?.endDate] ); - const filteredBarData2 = useMemo( + const _filteredBarData2 = useMemo( () => filterDataByDateRange(API_DATA.barChartData, "day", dateRange?.startDate, dateRange?.endDate), [dateRange?.startDate, dateRange?.endDate] diff --git a/apps/webapp/app/routes/storybook.filter/route.tsx b/apps/webapp/app/routes/storybook.filter/route.tsx index 78323201b70..5f63275de90 100644 --- a/apps/webapp/app/routes/storybook.filter/route.tsx +++ b/apps/webapp/app/routes/storybook.filter/route.tsx @@ -20,7 +20,7 @@ import { runStatusTitle, } from "~/components/runs/v3/TaskRunStatus"; import { useSearchParams } from "~/hooks/useSearchParam"; -import { ShortcutDefinition } from "~/hooks/useShortcutKeys"; +import type { ShortcutDefinition } from "~/hooks/useShortcutKeys"; export default function Story() { return ( diff --git a/apps/webapp/app/routes/storybook.info-panel/route.tsx b/apps/webapp/app/routes/storybook.info-panel/route.tsx index 1184a876226..2a2f8b67021 100644 --- a/apps/webapp/app/routes/storybook.info-panel/route.tsx +++ b/apps/webapp/app/routes/storybook.info-panel/route.tsx @@ -1,5 +1,4 @@ import { - BeakerIcon, BellAlertIcon, BookOpenIcon, ClockIcon, @@ -9,9 +8,9 @@ import { ServerStackIcon, Squares2X2Icon, } from "@heroicons/react/20/solid"; -import { InfoPanel } from "~/components/primitives/InfoPanel"; import { TaskIcon } from "~/assets/icons/TaskIcon"; import { LinkButton } from "~/components/primitives/Buttons"; +import { InfoPanel } from "~/components/primitives/InfoPanel"; export default function Story() { return ( diff --git a/apps/webapp/app/routes/storybook.input-fields/route.tsx b/apps/webapp/app/routes/storybook.input-fields/route.tsx index e6402d732c2..29fca12a092 100644 --- a/apps/webapp/app/routes/storybook.input-fields/route.tsx +++ b/apps/webapp/app/routes/storybook.input-fields/route.tsx @@ -1,5 +1,4 @@ import { MagnifyingGlassIcon } from "@heroicons/react/20/solid"; -import { EnvironmentLabel } from "~/components/environments/EnvironmentLabel"; import { Input } from "~/components/primitives/Input"; import { ShortcutKey } from "~/components/primitives/ShortcutKey"; diff --git a/apps/webapp/app/routes/storybook.run-and-span-timeline/route.tsx b/apps/webapp/app/routes/storybook.run-and-span-timeline/route.tsx index 7fe7273808d..8dba96d449b 100644 --- a/apps/webapp/app/routes/storybook.run-and-span-timeline/route.tsx +++ b/apps/webapp/app/routes/storybook.run-and-span-timeline/route.tsx @@ -1,11 +1,6 @@ -import { - RunTimeline, - RunTimelineEvent, - SpanTimeline, - SpanTimelineProps, - TimelineSpanRun, -} from "~/components/run/RunTimeline"; import { Header2 } from "~/components/primitives/Headers"; +import type { SpanTimelineProps, TimelineSpanRun } from "~/components/run/RunTimeline"; +import { RunTimeline, SpanTimeline } from "~/components/run/RunTimeline"; const spanTimelines = [ { diff --git a/apps/webapp/app/routes/storybook.select/route.tsx b/apps/webapp/app/routes/storybook.select/route.tsx index b91704c143f..27a442af2d6 100644 --- a/apps/webapp/app/routes/storybook.select/route.tsx +++ b/apps/webapp/app/routes/storybook.select/route.tsx @@ -1,6 +1,6 @@ import { CircleStackIcon } from "@heroicons/react/20/solid"; import { Form, useNavigate } from "@remix-run/react"; -import { useCallback, useState } from "react"; +import { useCallback } from "react"; import { LogoIcon } from "~/components/LogoIcon"; import { Button } from "~/components/primitives/Buttons"; import { diff --git a/apps/webapp/app/routes/storybook.table/route.tsx b/apps/webapp/app/routes/storybook.table/route.tsx index afe48a2a71e..f7ea4fef4ed 100644 --- a/apps/webapp/app/routes/storybook.table/route.tsx +++ b/apps/webapp/app/routes/storybook.table/route.tsx @@ -1,5 +1,4 @@ -import React from "react"; -import { Header1, Header2 } from "~/components/primitives/Headers"; +import { Header1 } from "~/components/primitives/Headers"; import { Paragraph } from "~/components/primitives/Paragraph"; import { CopyableTableCell, diff --git a/apps/webapp/app/routes/storybook.timeline/route.tsx b/apps/webapp/app/routes/storybook.timeline/route.tsx index e5606c15946..6aa28301ae1 100644 --- a/apps/webapp/app/routes/storybook.timeline/route.tsx +++ b/apps/webapp/app/routes/storybook.timeline/route.tsx @@ -4,7 +4,7 @@ import { useState } from "react"; import { Paragraph } from "~/components/primitives/Paragraph"; import { Switch } from "~/components/primitives/Switch"; import * as Timeline from "~/components/primitives/Timeline"; -import { SpanProps } from "~/components/primitives/Timeline"; +import type { SpanProps } from "~/components/primitives/Timeline"; import { cn } from "~/utils/cn"; const maxDuration = 10_000; diff --git a/apps/webapp/app/routes/storybook.tree-view/route.tsx b/apps/webapp/app/routes/storybook.tree-view/route.tsx index ee3cda09774..019cd8893ee 100644 --- a/apps/webapp/app/routes/storybook.tree-view/route.tsx +++ b/apps/webapp/app/routes/storybook.tree-view/route.tsx @@ -7,7 +7,8 @@ import { import { useRef, useState } from "react"; import { Button } from "~/components/primitives/Buttons"; import { Input } from "~/components/primitives/Input"; -import { Tree, TreeView, flattenTree, useTree } from "~/components/primitives/TreeView/TreeView"; +import type { Tree } from "~/components/primitives/TreeView/TreeView"; +import { TreeView, flattenTree, useTree } from "~/components/primitives/TreeView/TreeView"; import { cn } from "~/utils/cn"; const words = [ @@ -145,7 +146,7 @@ function TreeViewParent({ const { nodes, - selected, + selected: _selected, getTreeProps, getNodeProps, toggleNodeSelection, @@ -153,7 +154,7 @@ function TreeViewParent({ selectNode, selectFirstVisibleNode, selectLastVisibleNode, - scrollToNode, + scrollToNode: _scrollToNode, virtualizer, } = useTree({ tree, diff --git a/apps/webapp/app/routes/storybook/route.tsx b/apps/webapp/app/routes/storybook/route.tsx index a4cd592839b..1b4a1522da8 100644 --- a/apps/webapp/app/routes/storybook/route.tsx +++ b/apps/webapp/app/routes/storybook/route.tsx @@ -3,7 +3,6 @@ import { type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { Fragment } from "react"; import { redirect, typedjson, useTypedLoaderData } from "remix-typedjson"; import { AppContainer } from "~/components/layout/AppLayout"; -import { env } from "~/env.server"; import { requireUser } from "~/services/session.server"; import { cn } from "~/utils/cn"; diff --git a/apps/webapp/app/routes/tests.sse.stream.ts b/apps/webapp/app/routes/tests.sse.stream.ts index 8e417bffc19..c4fc62c89ab 100644 --- a/apps/webapp/app/routes/tests.sse.stream.ts +++ b/apps/webapp/app/routes/tests.sse.stream.ts @@ -1,4 +1,4 @@ -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { z } from "zod"; import { logger } from "~/services/logger.server"; import { sse } from "~/utils/sse.server"; diff --git a/apps/webapp/app/routes/tests.sse.tsx b/apps/webapp/app/routes/tests.sse.tsx index bd014844148..65dafd3b7ae 100644 --- a/apps/webapp/app/routes/tests.sse.tsx +++ b/apps/webapp/app/routes/tests.sse.tsx @@ -1,5 +1,5 @@ import { useLoaderData } from "@remix-run/react"; -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { useEventSource } from "~/hooks/useEventSource"; import { z } from "zod"; diff --git a/apps/webapp/app/routes/unsubscribe.$userId.$token.tsx b/apps/webapp/app/routes/unsubscribe.$userId.$token.tsx index ab238c659f5..cca9c4c9f31 100644 --- a/apps/webapp/app/routes/unsubscribe.$userId.$token.tsx +++ b/apps/webapp/app/routes/unsubscribe.$userId.$token.tsx @@ -1,5 +1,5 @@ import { EnvelopeIcon } from "@heroicons/react/24/solid"; -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; import crypto from "node:crypto"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; diff --git a/apps/webapp/app/runEngine/concerns/batchLimits.server.ts b/apps/webapp/app/runEngine/concerns/batchLimits.server.ts index 8cd7bf72c6a..63f61d87bf7 100644 --- a/apps/webapp/app/runEngine/concerns/batchLimits.server.ts +++ b/apps/webapp/app/runEngine/concerns/batchLimits.server.ts @@ -1,11 +1,11 @@ -import { Organization } from "@trigger.dev/database"; import { z } from "zod"; import { env } from "~/env.server"; import { - RateLimiterConfig, createLimiterFromConfig, + RateLimiterConfig, } from "~/services/authorizationRateLimitMiddleware.server"; -import { createRedisRateLimitClient, Duration, RateLimiter } from "~/services/rateLimiter.server"; +import type { Duration } from "~/services/rateLimiter.server"; +import { createRedisRateLimitClient, RateLimiter } from "~/services/rateLimiter.server"; import { singleton } from "~/utils/singleton"; const BatchLimitsConfig = z.object({ diff --git a/apps/webapp/app/runEngine/concerns/payloads.server.ts b/apps/webapp/app/runEngine/concerns/payloads.server.ts index 17e52109da7..77176ed038f 100644 --- a/apps/webapp/app/runEngine/concerns/payloads.server.ts +++ b/apps/webapp/app/runEngine/concerns/payloads.server.ts @@ -1,5 +1,6 @@ -import { IOPacket, packetRequiresOffloading, tryCatch } from "@trigger.dev/core/v3"; -import { PayloadProcessor, TriggerTaskRequest } from "../types"; +import type { IOPacket } from "@trigger.dev/core/v3"; +import { packetRequiresOffloading, tryCatch } from "@trigger.dev/core/v3"; +import type { PayloadProcessor, TriggerTaskRequest } from "../types"; import { env } from "~/env.server"; import { startActiveSpan } from "~/v3/tracer.server"; import { uploadPacketToObjectStore } from "~/v3/objectStore.server"; diff --git a/apps/webapp/app/runEngine/concerns/queues.server.ts b/apps/webapp/app/runEngine/concerns/queues.server.ts index 5a4f18d1d6b..85052ad60ae 100644 --- a/apps/webapp/app/runEngine/concerns/queues.server.ts +++ b/apps/webapp/app/runEngine/concerns/queues.server.ts @@ -1,9 +1,9 @@ import { sanitizeQueueName } from "@trigger.dev/core/v3/isomorphic"; -import { PrismaClientOrTransaction } from "@trigger.dev/database"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { PrismaClientOrTransaction } from "@trigger.dev/database"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { findCurrentWorkerFromEnvironment } from "~/v3/models/workerDeployment.server"; -import { +import type { LockedBackgroundWorker, QueueManager, QueueProperties, diff --git a/apps/webapp/app/runEngine/concerns/traceEvents.server.ts b/apps/webapp/app/runEngine/concerns/traceEvents.server.ts index 8c9029e2d60..a0efcd1ac08 100644 --- a/apps/webapp/app/runEngine/concerns/traceEvents.server.ts +++ b/apps/webapp/app/runEngine/concerns/traceEvents.server.ts @@ -1,8 +1,8 @@ import { SemanticInternalAttributes } from "@trigger.dev/core/v3/semanticInternalAttributes"; -import { TaskRun } from "@trigger.dev/database"; -import { IEventRepository } from "~/v3/eventRepository/eventRepository.types"; +import type { TaskRun } from "@trigger.dev/database"; +import type { IEventRepository } from "~/v3/eventRepository/eventRepository.types"; import { getEventRepository } from "~/v3/eventRepository/index.server"; -import { TracedEventSpan, TraceEventConcern, TriggerTaskRequest } from "../types"; +import type { TracedEventSpan, TraceEventConcern, TriggerTaskRequest } from "../types"; export class DefaultTraceEventsConcern implements TraceEventConcern { async #getEventRepository( diff --git a/apps/webapp/app/runEngine/concerns/waitpointCompletionPacket.server.ts b/apps/webapp/app/runEngine/concerns/waitpointCompletionPacket.server.ts index e59ede59f18..50f975564cd 100644 --- a/apps/webapp/app/runEngine/concerns/waitpointCompletionPacket.server.ts +++ b/apps/webapp/app/runEngine/concerns/waitpointCompletionPacket.server.ts @@ -32,7 +32,7 @@ export async function processWaitpointCompletionPacket( return packet; } - const { needsOffloading, size } = packetRequiresOffloading( + const { needsOffloading, size: _size } = packetRequiresOffloading( packet, env.TASK_PAYLOAD_OFFLOAD_THRESHOLD ); diff --git a/apps/webapp/app/runEngine/services/batchTrigger.server.ts b/apps/webapp/app/runEngine/services/batchTrigger.server.ts index e4500577990..54a819770ef 100644 --- a/apps/webapp/app/runEngine/services/batchTrigger.server.ts +++ b/apps/webapp/app/runEngine/services/batchTrigger.server.ts @@ -84,7 +84,7 @@ export class RunEngineBatchTriggerService extends WithRunEngine { "call()", environment, async (span) => { - const { id, friendlyId } = BatchId.generate(); + const { id: _id, friendlyId } = BatchId.generate(); span.setAttribute("batchId", friendlyId); @@ -554,7 +554,7 @@ export class RunEngineBatchTriggerService extends WithRunEngine { if (run) { runFriendlyId = run.friendlyId; } - } catch (error) { + } catch (_error) { // Trigger failed - will try to create pre-failed run below runFriendlyId = null; } diff --git a/apps/webapp/app/runEngine/services/triggerFailedTask.server.ts b/apps/webapp/app/runEngine/services/triggerFailedTask.server.ts index 6e3b73220f9..2fc0fb750b9 100644 --- a/apps/webapp/app/runEngine/services/triggerFailedTask.server.ts +++ b/apps/webapp/app/runEngine/services/triggerFailedTask.server.ts @@ -1,15 +1,18 @@ -import { RunEngine } from "@internal/run-engine"; +import type { RunEngine } from "@internal/run-engine"; import { TaskRunErrorCodes, type TaskRunError } from "@trigger.dev/core/v3"; import { RunId } from "@trigger.dev/core/v3/isomorphic"; -import type { RuntimeEnvironmentType, TaskRun } from "@trigger.dev/database"; -import type { PrismaClientOrTransaction } from "@trigger.dev/database"; +import type { + PrismaClientOrTransaction, + RuntimeEnvironmentType, + TaskRun, +} from "@trigger.dev/database"; import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { getEventRepository } from "~/v3/eventRepository/index.server"; +import { runStore } from "~/v3/runStore.server"; import { PerformTaskRunAlertsService } from "~/v3/services/alerts/performTaskRunAlerts.server"; import { DefaultQueueManager } from "../concerns/queues.server"; import type { TriggerTaskRequest } from "../types"; -import { runStore } from "~/v3/runStore.server"; export type TriggerFailedTaskRequest = { /** The task identifier (e.g. "my-task") */ diff --git a/apps/webapp/app/runEngine/services/triggerTask.server.ts b/apps/webapp/app/runEngine/services/triggerTask.server.ts index cee833e96e0..e8eb9945f38 100644 --- a/apps/webapp/app/runEngine/services/triggerTask.server.ts +++ b/apps/webapp/app/runEngine/services/triggerTask.server.ts @@ -1,16 +1,16 @@ import { + type RunEngine, RunDuplicateIdempotencyKeyError, - RunEngine, RunOneTimeUseTokenError, } from "@internal/run-engine"; -import { Tracer } from "@opentelemetry/api"; +import type { Tracer } from "@opentelemetry/api"; import { tryCatch } from "@trigger.dev/core/utils"; import { + type TriggerTaskRequestBody, RunAnnotations, TaskRunError, taskRunErrorEnhancer, taskRunErrorToString, - TriggerTaskRequestBody, TriggerTraceContext, } from "@trigger.dev/core/v3"; import { @@ -30,7 +30,10 @@ import type { TriggerTaskServiceResult, } from "../../v3/services/triggerTask.server"; import { clampMaxDuration } from "../../v3/utils/maxDuration"; -import { IdempotencyKeyConcern, type ClaimedIdempotency } from "../concerns/idempotencyKeys.server"; +import { + type IdempotencyKeyConcern, + type ClaimedIdempotency, +} from "../concerns/idempotencyKeys.server"; import { resolveScheduledQueueSplitEnabled, workerQueueForRun, @@ -62,7 +65,6 @@ import { type MollifierGetBuffer, } from "~/v3/mollifier/mollifierBuffer.server"; import { mollifyTrigger } from "~/v3/mollifier/mollifierMollify.server"; -import { type MollifierBuffer } from "@trigger.dev/redis-worker"; import { QueueSizeLimitExceededError, ServiceValidationError } from "~/v3/services/common.server"; import { runStore } from "~/v3/runStore.server"; diff --git a/apps/webapp/app/services/apiRateLimit.server.ts b/apps/webapp/app/services/apiRateLimit.server.ts index 488fb47513c..fbd59cc74cd 100644 --- a/apps/webapp/app/services/apiRateLimit.server.ts +++ b/apps/webapp/app/services/apiRateLimit.server.ts @@ -1,7 +1,7 @@ import { env } from "~/env.server"; import { authenticateAuthorizationHeader } from "./apiAuth.server"; import { authorizationRateLimitMiddleware } from "./authorizationRateLimitMiddleware.server"; -import { Duration } from "./rateLimiter.server"; +import type { Duration } from "./rateLimiter.server"; export const apiRateLimiter = authorizationRateLimitMiddleware({ redis: { diff --git a/apps/webapp/app/services/authorizationRateLimitMiddleware.server.ts b/apps/webapp/app/services/authorizationRateLimitMiddleware.server.ts index 6eb3bb08bac..e6d4d3b1f5e 100644 --- a/apps/webapp/app/services/authorizationRateLimitMiddleware.server.ts +++ b/apps/webapp/app/services/authorizationRateLimitMiddleware.server.ts @@ -1,13 +1,15 @@ -import { createCache, DefaultStatefulContext, Namespace, Cache as UnkeyCache } from "@unkey/cache"; +import type { Cache as UnkeyCache } from "@unkey/cache"; +import { createCache, DefaultStatefulContext, Namespace } from "@unkey/cache"; import { createLRUMemoryStore } from "@internal/cache"; import { Ratelimit } from "@upstash/ratelimit"; -import { Request as ExpressRequest, Response as ExpressResponse, NextFunction } from "express"; +import type { Request as ExpressRequest, Response as ExpressResponse, NextFunction } from "express"; import { createHash } from "node:crypto"; import { z } from "zod"; import { env } from "~/env.server"; -import { RedisWithClusterOptions } from "~/redis.server"; +import type { RedisWithClusterOptions } from "~/redis.server"; import { logger } from "./logger.server"; -import { createRedisRateLimitClient, Duration, Limiter, RateLimiter } from "./rateLimiter.server"; +import type { Duration, Limiter } from "./rateLimiter.server"; +import { createRedisRateLimitClient, RateLimiter } from "./rateLimiter.server"; import { RedisCacheStore } from "./unkey/redisCacheStore.server"; const DurationSchema = z.custom((value) => { diff --git a/apps/webapp/app/services/autoIncrementCounter.server.ts b/apps/webapp/app/services/autoIncrementCounter.server.ts index b11a3f4e11d..bb9bc339d68 100644 --- a/apps/webapp/app/services/autoIncrementCounter.server.ts +++ b/apps/webapp/app/services/autoIncrementCounter.server.ts @@ -1,6 +1,8 @@ -import Redis, { RedisOptions } from "ioredis"; +import type { RedisOptions } from "ioredis"; +import Redis from "ioredis"; import { defaultReconnectOnError } from "@internal/redis"; -import { Prisma, PrismaClientOrTransaction, PrismaTransactionOptions, prisma } from "~/db.server"; +import type { PrismaClientOrTransaction, PrismaTransactionOptions } from "~/db.server"; +import { Prisma, prisma } from "~/db.server"; import { env } from "~/env.server"; import { singleton } from "~/utils/singleton"; diff --git a/apps/webapp/app/services/billingLimit.schemas.ts b/apps/webapp/app/services/billingLimit.schemas.ts index 471d3c0553b..6628e5cb22c 100644 --- a/apps/webapp/app/services/billingLimit.schemas.ts +++ b/apps/webapp/app/services/billingLimit.schemas.ts @@ -1,4 +1,4 @@ -import { BillingClient } from "@trigger.dev/platform"; +import type { BillingClient } from "@trigger.dev/platform"; import { z } from "zod"; /** diff --git a/apps/webapp/app/services/db/graphileMigrationHelper.server.ts b/apps/webapp/app/services/db/graphileMigrationHelper.server.ts index 0fe54df864f..817ac38915c 100644 --- a/apps/webapp/app/services/db/graphileMigrationHelper.server.ts +++ b/apps/webapp/app/services/db/graphileMigrationHelper.server.ts @@ -1,5 +1,6 @@ import { runMigrations } from "graphile-worker"; -import { PrismaClient, prisma } from "~/db.server"; +import type { PrismaClient } from "~/db.server"; +import { prisma } from "~/db.server"; import { env } from "~/env.server"; import { logger } from "~/services/logger.server"; import { PgNotifyService } from "./pgNotify.server"; diff --git a/apps/webapp/app/services/db/pgNotify.server.ts b/apps/webapp/app/services/db/pgNotify.server.ts index 2a80294ebd9..fe155dbbd99 100644 --- a/apps/webapp/app/services/db/pgNotify.server.ts +++ b/apps/webapp/app/services/db/pgNotify.server.ts @@ -1,7 +1,8 @@ -import { z } from "zod"; -import { PrismaClient, prisma } from "~/db.server"; +import type { z } from "zod"; +import type { PrismaClient } from "~/db.server"; +import { prisma } from "~/db.server"; import { logger } from "~/services/logger.server"; -import { NotificationCatalog, NotificationChannel } from "./types"; +import type { NotificationCatalog, NotificationChannel } from "./types"; export class PgNotifyService { #prismaClient: PrismaClient; diff --git a/apps/webapp/app/services/deleteOrganization.server.ts b/apps/webapp/app/services/deleteOrganization.server.ts index 2eef188d5fb..6c490b276df 100644 --- a/apps/webapp/app/services/deleteOrganization.server.ts +++ b/apps/webapp/app/services/deleteOrganization.server.ts @@ -1,5 +1,5 @@ import { DateFormatter } from "@internationalized/date"; -import { PrismaClient } from "@trigger.dev/database"; +import type { PrismaClient } from "@trigger.dev/database"; import { prisma } from "~/db.server"; import { featuresForRequest } from "~/features.server"; import { DeleteProjectService } from "./deleteProject.server"; diff --git a/apps/webapp/app/services/deleteProject.server.ts b/apps/webapp/app/services/deleteProject.server.ts index 8f069aaf14e..f6bc23d56a6 100644 --- a/apps/webapp/app/services/deleteProject.server.ts +++ b/apps/webapp/app/services/deleteProject.server.ts @@ -1,4 +1,4 @@ -import { PrismaClient } from "@trigger.dev/database"; +import type { PrismaClient } from "@trigger.dev/database"; import { prisma } from "~/db.server"; import { marqs } from "~/v3/marqs/index.server"; import { engine } from "~/v3/runEngine.server"; diff --git a/apps/webapp/app/services/email.server.ts b/apps/webapp/app/services/email.server.ts index 17fba0c52e1..e4db6668a63 100644 --- a/apps/webapp/app/services/email.server.ts +++ b/apps/webapp/app/services/email.server.ts @@ -1,5 +1,5 @@ -import type { DeliverEmail, SendPlainTextOptions } from "emails"; -import { EmailClient, MailTransportOptions } from "emails"; +import type { DeliverEmail, SendPlainTextOptions, MailTransportOptions } from "emails"; +import { EmailClient } from "emails"; import type { SendEmailOptions } from "remix-auth-email-link"; import { redirect } from "remix-typedjson"; import { env } from "~/env.server"; diff --git a/apps/webapp/app/services/engineRateLimit.server.ts b/apps/webapp/app/services/engineRateLimit.server.ts index ba043c7fa3c..316b6c66c2a 100644 --- a/apps/webapp/app/services/engineRateLimit.server.ts +++ b/apps/webapp/app/services/engineRateLimit.server.ts @@ -1,6 +1,6 @@ import { env } from "~/env.server"; import { authorizationRateLimitMiddleware } from "./authorizationRateLimitMiddleware.server"; -import { Duration } from "./rateLimiter.server"; +import type { Duration } from "./rateLimiter.server"; export const engineRateLimiter = authorizationRateLimitMiddleware({ redis: { diff --git a/apps/webapp/app/services/metadata/updateMetadata.server.ts b/apps/webapp/app/services/metadata/updateMetadata.server.ts index 2af44d747bd..c44dacf65c5 100644 --- a/apps/webapp/app/services/metadata/updateMetadata.server.ts +++ b/apps/webapp/app/services/metadata/updateMetadata.server.ts @@ -1,10 +1,9 @@ -import { - applyMetadataOperations, +import type { IOPacket, - parsePacket, RunMetadataChangeOperation, UpdateMetadataRequestBody, } from "@trigger.dev/core/v3"; +import { applyMetadataOperations, parsePacket } from "@trigger.dev/core/v3"; import type { PrismaClientOrTransaction } from "~/db.server"; import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { handleMetadataPacket, MetadataTooLargeError } from "~/utils/packets"; @@ -12,7 +11,8 @@ import { ServiceValidationError } from "~/v3/services/common.server"; import { Effect, Schedule, Duration, Fiber } from "effect"; import { type RuntimeFiber } from "effect/Fiber"; import { setTimeout } from "timers/promises"; -import { Logger, LogLevel } from "@trigger.dev/core/logger"; +import type { LogLevel } from "@trigger.dev/core/logger"; +import { Logger } from "@trigger.dev/core/logger"; import type { RunStore } from "@internal/run-store"; const RUN_UPDATABLE_WINDOW_MS = 60 * 60 * 1000; // 1 hour diff --git a/apps/webapp/app/services/mfa/multiFactorAuthentication.server.ts b/apps/webapp/app/services/mfa/multiFactorAuthentication.server.ts index 3774a84ef32..53304105333 100644 --- a/apps/webapp/app/services/mfa/multiFactorAuthentication.server.ts +++ b/apps/webapp/app/services/mfa/multiFactorAuthentication.server.ts @@ -1,4 +1,4 @@ -import { SecretReference, User, type PrismaClient } from "@trigger.dev/database"; +import { type SecretReference, type User, type PrismaClient } from "@trigger.dev/database"; import { prisma } from "~/db.server"; import { ServiceValidationError } from "~/v3/services/baseService.server"; import { createRandomStringGenerator } from "@better-auth/utils/random"; diff --git a/apps/webapp/app/services/onboardingSession.server.ts b/apps/webapp/app/services/onboardingSession.server.ts index f5a47c27a49..0e166d05487 100644 --- a/apps/webapp/app/services/onboardingSession.server.ts +++ b/apps/webapp/app/services/onboardingSession.server.ts @@ -1,4 +1,5 @@ -import { createCookieSessionStorage, Session } from "@remix-run/node"; +import type { Session } from "@remix-run/node"; +import { createCookieSessionStorage } from "@remix-run/node"; import { env } from "~/env.server"; export const onboardingSessionStorage = createCookieSessionStorage({ diff --git a/apps/webapp/app/services/platform.v3.server.ts b/apps/webapp/app/services/platform.v3.server.ts index ebc9c5d393b..d956b7cc2b9 100644 --- a/apps/webapp/app/services/platform.v3.server.ts +++ b/apps/webapp/app/services/platform.v3.server.ts @@ -1,3 +1,5 @@ +import { createLRUMemoryStore } from "@internal/cache"; +import { metrics } from "@opentelemetry/api"; import { MachinePresetName, tryCatch } from "@trigger.dev/core/v3"; import type { RuntimeEnvironmentType } from "@trigger.dev/database"; import { @@ -6,6 +8,7 @@ import { machines as machinesFromPlatform, type BillingAlertsResult, type CreatePrivateLinkConnectionBody, + type CurrentPlan, type Limits, type MachineCode, type PrivateLinkConnection, @@ -15,16 +18,20 @@ import { type UpdateBillingAlertsRequest, type UsageResult, type UsageSeriesParams, - type CurrentPlan, } from "@trigger.dev/platform"; +import { createCache, DefaultStatefulContext, Namespace } from "@unkey/cache"; +import { existsSync, readFileSync } from "node:fs"; +import { redirect } from "remix-typedjson"; +import { z } from "zod"; +import { $replica } from "~/db.server"; +import { env } from "~/env.server"; +import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; import { + asPlatformSchema, BillingLimitResultSchema, BillingLimitsActiveResultSchema, BillingLimitsPendingResolvesResultSchema, EntitlementResultSchema, - ResolveBillingLimitRequestSchema, - UpdateBillingLimitRequestSchema, - asPlatformSchema, type BillingLimitResult, type BillingLimitsActiveResult, type BillingLimitsPendingResolvesResult, @@ -32,19 +39,10 @@ import { type ResolveBillingLimitRequest, type UpdateBillingLimitRequest, } from "~/services/billingLimit.schemas"; -import { createCache, DefaultStatefulContext, Namespace } from "@unkey/cache"; -import { createLRUMemoryStore } from "@internal/cache"; -import { existsSync, readFileSync } from "node:fs"; -import { redirect } from "remix-typedjson"; -import { z } from "zod"; -import { env } from "~/env.server"; -import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; import { logger } from "~/services/logger.server"; import { newProjectPath, organizationBillingPath } from "~/utils/pathBuilder"; import { singleton } from "~/utils/singleton"; import { RedisCacheStore } from "./unkey/redisCacheStore.server"; -import { $replica } from "~/db.server"; -import { metrics } from "@opentelemetry/api"; function initializeClient() { if (isCloud() && process.env.BILLING_API_URL && process.env.BILLING_API_KEY) { @@ -275,7 +273,7 @@ export async function getCurrentPlan(orgId: string) { }; return { ...result, usage }; - } catch (e) { + } catch (_e) { recordPlatformFailure("getCurrentPlan", "caught"); return undefined; } @@ -316,7 +314,7 @@ export async function getLimits(orgId: string) { } return result.v3Subscription?.plan?.limits; - } catch (e) { + } catch (_e) { recordPlatformFailure("getLimits", "caught"); return undefined; } @@ -392,7 +390,7 @@ export async function customerPortalUrl(orgId: string, orgSlug: string) { return client.createPortalSession(orgId, { returnUrl: `${env.APP_ORIGIN}${organizationBillingPath({ slug: orgSlug })}`, }); - } catch (e) { + } catch (_e) { recordPlatformFailure("customerPortalUrl", "caught"); return undefined; } @@ -408,7 +406,7 @@ export async function getPlans() { return undefined; } return result; - } catch (e) { + } catch (_e) { recordPlatformFailure("getPlans", "caught"); return undefined; } @@ -490,7 +488,7 @@ export async function setConcurrencyAddOn(organizationId: string, amount: number return undefined; } return result; - } catch (e) { + } catch (_e) { recordPlatformFailure("setConcurrencyAddOn", "caught"); return undefined; } @@ -506,7 +504,7 @@ export async function setSeatsAddOn(organizationId: string, amount: number) { return undefined; } return result; - } catch (e) { + } catch (_e) { recordPlatformFailure("setSeatsAddOn", "caught"); return undefined; } @@ -522,7 +520,7 @@ export async function setBranchesAddOn(organizationId: string, amount: number) { return undefined; } return result; - } catch (e) { + } catch (_e) { recordPlatformFailure("setBranchesAddOn", "caught"); return undefined; } @@ -538,7 +536,7 @@ export async function setSchedulesAddOn(organizationId: string, amount: number) return undefined; } return result; - } catch (e) { + } catch (_e) { recordPlatformFailure("setSchedulesAddOn", "caught"); return undefined; } @@ -554,7 +552,7 @@ export async function getUsage(organizationId: string, { from, to }: { from: Dat return undefined; } return result; - } catch (e) { + } catch (_e) { recordPlatformFailure("getUsage", "caught"); return undefined; } @@ -577,7 +575,7 @@ export async function getCachedUsage( ); return result.val; - } catch (e) { + } catch (_e) { recordPlatformFailure("getCachedUsage", "caught"); return undefined; } @@ -593,7 +591,7 @@ export async function getUsageSeries(organizationId: string, params: UsageSeries return undefined; } return result; - } catch (e) { + } catch (_e) { recordPlatformFailure("getUsageSeries", "caught"); return undefined; } @@ -617,7 +615,7 @@ export async function reportInvocationUsage( return undefined; } return result; - } catch (e) { + } catch (_e) { recordPlatformFailure("reportInvocationUsage", "caught"); return undefined; } @@ -656,7 +654,7 @@ export async function getEntitlement( return undefined; } return response; - } catch (e) { + } catch (_e) { recordPlatformFailure("getEntitlement", "caught"); return undefined; } @@ -690,7 +688,7 @@ export async function getBillingLimit( return undefined; } return response; - } catch (e) { + } catch (_e) { recordPlatformFailure("getBillingLimit", "caught"); return undefined; } @@ -701,7 +699,7 @@ export async function getBillingLimit( } return result.val; - } catch (e) { + } catch (_e) { recordPlatformFailure("getBillingLimit", "caught"); return undefined; } @@ -775,7 +773,7 @@ export async function getActiveBillingLimits(): Promise Promise; diff --git a/apps/webapp/app/services/requestIdempotency.server.ts b/apps/webapp/app/services/requestIdempotency.server.ts index 85767ed8951..ae6a7b9255c 100644 --- a/apps/webapp/app/services/requestIdempotency.server.ts +++ b/apps/webapp/app/services/requestIdempotency.server.ts @@ -1,8 +1,10 @@ -import { Logger, LogLevel } from "@trigger.dev/core/logger"; -import { createCache, DefaultStatefulContext, Namespace, Cache as UnkeyCache } from "@unkey/cache"; +import type { LogLevel } from "@trigger.dev/core/logger"; +import { Logger } from "@trigger.dev/core/logger"; +import type { Cache as UnkeyCache } from "@unkey/cache"; +import { createCache, DefaultStatefulContext, Namespace } from "@unkey/cache"; import { createLRUMemoryStore } from "@internal/cache"; import { RedisCacheStore } from "./unkey/redisCacheStore.server"; -import { RedisWithClusterOptions } from "~/redis.server"; +import type { RedisWithClusterOptions } from "~/redis.server"; import { validate as uuidValidate, version as uuidVersion } from "uuid"; import { startActiveSpan } from "~/v3/tracer.server"; diff --git a/apps/webapp/app/services/routeBuilders/apiBuilder.server.ts b/apps/webapp/app/services/routeBuilders/apiBuilder.server.ts index 49c909f7f7b..e5842bb8615 100644 --- a/apps/webapp/app/services/routeBuilders/apiBuilder.server.ts +++ b/apps/webapp/app/services/routeBuilders/apiBuilder.server.ts @@ -1,22 +1,20 @@ -import { z } from "zod"; -import { ApiAuthenticationResultSuccess } from "../apiAuth.server"; -import { ActionFunctionArgs, json, LoaderFunctionArgs } from "@remix-run/server-runtime"; +import type { z } from "zod"; +import type { ApiAuthenticationResultSuccess } from "../apiAuth.server"; +import type { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { json } from "@remix-run/server-runtime"; import { fromZodError } from "zod-validation-error"; import { apiCors } from "~/utils/apiCors"; import { logger } from "../logger.server"; import { rbac } from "../rbac.server"; import type { RbacAbility, RbacResource } from "@trigger.dev/rbac"; import { isUserActorToken } from "@trigger.dev/rbac"; -import { - PersonalAccessTokenAuthenticationResult, - updateLastAccessedAtIfStale, -} from "../personalAccessToken.server"; +import type { PersonalAccessTokenAuthenticationResult } from "../personalAccessToken.server"; +import { updateLastAccessedAtIfStale } from "../personalAccessToken.server"; import { safeJsonParse } from "~/utils/json"; -import { - AuthenticatedWorkerInstance, - WorkerGroupTokenService, -} from "~/v3/services/worker/workerGroupTokenService.server"; -import { API_VERSIONS, getApiVersion } from "~/api/versions"; +import type { AuthenticatedWorkerInstance } from "~/v3/services/worker/workerGroupTokenService.server"; +import { WorkerGroupTokenService } from "~/v3/services/worker/workerGroupTokenService.server"; +import type { API_VERSIONS } from "~/api/versions"; +import { getApiVersion } from "~/api/versions"; import { WORKER_HEADERS } from "@trigger.dev/core/v3/runEngineWorker"; import { ServiceValidationError } from "~/v3/services/common.server"; import { EngineServiceValidationError } from "@internal/run-engine"; diff --git a/apps/webapp/app/services/runsBackfiller.server.ts b/apps/webapp/app/services/runsBackfiller.server.ts index 50e041ee64b..3912a611368 100644 --- a/apps/webapp/app/services/runsBackfiller.server.ts +++ b/apps/webapp/app/services/runsBackfiller.server.ts @@ -1,6 +1,6 @@ -import { Tracer } from "@opentelemetry/api"; +import type { Tracer } from "@opentelemetry/api"; import type { PrismaClientOrTransaction } from "@trigger.dev/database"; -import { RunsReplicationService } from "~/services/runsReplicationService.server"; +import type { RunsReplicationService } from "~/services/runsReplicationService.server"; import { runStore } from "~/v3/runStore.server"; import { startSpan } from "~/v3/tracing.server"; import { FINAL_RUN_STATUSES } from "../v3/taskStatus"; diff --git a/apps/webapp/app/services/runsReplicationGlobal.server.ts b/apps/webapp/app/services/runsReplicationGlobal.server.ts index c65a819da22..fef22f02261 100644 --- a/apps/webapp/app/services/runsReplicationGlobal.server.ts +++ b/apps/webapp/app/services/runsReplicationGlobal.server.ts @@ -1,4 +1,4 @@ -import { RunsReplicationService } from "./runsReplicationService.server"; +import type { RunsReplicationService } from "./runsReplicationService.server"; const GLOBAL_RUNS_REPLICATION_KEY = Symbol.for("dev.trigger.ts.runs-replication"); const GLOBAL_TCP_MONITOR_KEY = Symbol.for("dev.trigger.ts.tcp-monitor"); diff --git a/apps/webapp/app/services/runsRepository/runsRepository.server.ts b/apps/webapp/app/services/runsRepository/runsRepository.server.ts index a4543a26dfb..b256738c465 100644 --- a/apps/webapp/app/services/runsRepository/runsRepository.server.ts +++ b/apps/webapp/app/services/runsRepository/runsRepository.server.ts @@ -7,7 +7,7 @@ import { type Prisma, TaskRunStatus } from "@trigger.dev/database"; import parseDuration from "parse-duration"; import { z } from "zod"; import { timeFilters } from "~/components/runs/v3/SharedFilters"; -import { type PrismaClient, type PrismaClientOrTransaction } from "~/db.server"; +import { type PrismaClientOrTransaction } from "~/db.server"; import { startActiveSpan } from "~/v3/tracer.server"; import { ClickHouseRunsRepository } from "./clickhouseRunsRepository.server"; diff --git a/apps/webapp/app/services/secrets/secretStore.server.ts b/apps/webapp/app/services/secrets/secretStore.server.ts index 10405f975ab..f4d5aac5ef8 100644 --- a/apps/webapp/app/services/secrets/secretStore.server.ts +++ b/apps/webapp/app/services/secrets/secretStore.server.ts @@ -1,4 +1,5 @@ -import { PrismaClientOrTransaction, prisma } from "~/db.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; +import { prisma } from "~/db.server"; import { z } from "zod"; import { env } from "~/env.server"; import nodeCrypto from "node:crypto"; diff --git a/apps/webapp/app/services/taskIdentifierRegistry.server.ts b/apps/webapp/app/services/taskIdentifierRegistry.server.ts index 6a1842b5232..d7dc93ba31e 100644 --- a/apps/webapp/app/services/taskIdentifierRegistry.server.ts +++ b/apps/webapp/app/services/taskIdentifierRegistry.server.ts @@ -1,7 +1,7 @@ import { + type TaskTriggerSource, type PrismaClient, type PrismaClientOrTransaction, - TaskTriggerSource, } from "@trigger.dev/database"; import { $replica, prisma } from "~/db.server"; import { getAllTaskIdentifiers } from "~/models/task.server"; diff --git a/apps/webapp/app/services/telemetry.server.ts b/apps/webapp/app/services/telemetry.server.ts index 71ca0a0e66e..eb12172816b 100644 --- a/apps/webapp/app/services/telemetry.server.ts +++ b/apps/webapp/app/services/telemetry.server.ts @@ -1,6 +1,6 @@ import { PostHog } from "posthog-node"; import { env } from "~/env.server"; -import { MatchedOrganization } from "~/hooks/useOrganizations"; +import type { MatchedOrganization } from "~/hooks/useOrganizations"; import type { Organization } from "~/models/organization.server"; import type { Project } from "~/models/project.server"; import type { User } from "~/models/user.server"; diff --git a/apps/webapp/app/services/unkey/redisCacheStore.server.ts b/apps/webapp/app/services/unkey/redisCacheStore.server.ts index 0bc88a9af9c..4c826cb3987 100644 --- a/apps/webapp/app/services/unkey/redisCacheStore.server.ts +++ b/apps/webapp/app/services/unkey/redisCacheStore.server.ts @@ -1,7 +1,8 @@ import { CacheError } from "@unkey/cache"; import type { Entry, Store } from "@unkey/cache/stores"; import { Err, Ok, type Result } from "@unkey/error"; -import { createRedisClient, RedisClient, RedisWithClusterOptions } from "~/redis.server"; +import type { RedisClient, RedisWithClusterOptions } from "~/redis.server"; +import { createRedisClient } from "~/redis.server"; export type RedisCacheStoreConfig = { connection: RedisWithClusterOptions; diff --git a/apps/webapp/app/services/vercelIntegration.server.ts b/apps/webapp/app/services/vercelIntegration.server.ts index 326d43e5839..6a8fb26273b 100644 --- a/apps/webapp/app/services/vercelIntegration.server.ts +++ b/apps/webapp/app/services/vercelIntegration.server.ts @@ -9,13 +9,15 @@ import { prisma, $transaction } from "~/db.server"; import { logger } from "~/services/logger.server"; import { VercelIntegrationRepository } from "~/models/vercelIntegration.server"; import { findCurrentWorkerDeployment } from "~/v3/models/workerDeployment.server"; -import { - VercelProjectIntegrationDataSchema, +import type { VercelProjectIntegrationData, VercelIntegrationConfig, SyncEnvVarsMapping, TriggerEnvironmentType, EnvSlug, +} from "~/v3/vercel/vercelProjectIntegrationSchema"; +import { + VercelProjectIntegrationDataSchema, envTypeToSlug, createDefaultVercelIntegrationData, } from "~/v3/vercel/vercelProjectIntegrationSchema"; diff --git a/apps/webapp/app/utils/delays.ts b/apps/webapp/app/utils/delays.ts index 31bdd7518f5..1c498d6d4f8 100644 --- a/apps/webapp/app/utils/delays.ts +++ b/apps/webapp/app/utils/delays.ts @@ -36,7 +36,7 @@ export async function parseDelay(value?: string | Date): Promise( const parsedJson = schema.safeParse(unknownJson); return parsedJson; - } catch (error) {} + } catch (_error) {} } diff --git a/apps/webapp/app/utils/logUtils.ts b/apps/webapp/app/utils/logUtils.ts index b6f3681d0d4..b5028387b4b 100644 --- a/apps/webapp/app/utils/logUtils.ts +++ b/apps/webapp/app/utils/logUtils.ts @@ -1,4 +1,4 @@ -import { createElement, Fragment, type ReactNode } from "react"; +import { createElement, type ReactNode } from "react"; import { z } from "zod"; export const LogLevelSchema = z.enum(["TRACE", "DEBUG", "INFO", "WARN", "ERROR"]); diff --git a/apps/webapp/app/utils/packets.ts b/apps/webapp/app/utils/packets.ts index 9c32ac90336..7a522d6f7af 100644 --- a/apps/webapp/app/utils/packets.ts +++ b/apps/webapp/app/utils/packets.ts @@ -1,4 +1,4 @@ -import { IOPacket } from "@trigger.dev/core/v3/utils/ioSerialization"; +import type { IOPacket } from "@trigger.dev/core/v3/utils/ioSerialization"; import { ServiceValidationError } from "~/v3/services/common.server"; export class MetadataTooLargeError extends ServiceValidationError { diff --git a/apps/webapp/app/utils/parseRequestJson.server.ts b/apps/webapp/app/utils/parseRequestJson.server.ts index c872b13fa5c..461de5e2b78 100644 --- a/apps/webapp/app/utils/parseRequestJson.server.ts +++ b/apps/webapp/app/utils/parseRequestJson.server.ts @@ -1,4 +1,4 @@ -import { Attributes } from "@opentelemetry/api"; +import type { Attributes } from "@opentelemetry/api"; import { startActiveSpan } from "~/v3/tracer.server"; export async function parseRequestJsonAsync( diff --git a/apps/webapp/app/utils/plain.server.ts b/apps/webapp/app/utils/plain.server.ts index 72b20588432..c17b2f3f006 100644 --- a/apps/webapp/app/utils/plain.server.ts +++ b/apps/webapp/app/utils/plain.server.ts @@ -1,4 +1,5 @@ -import { PlainClient, uiComponent } from "@team-plain/typescript-sdk"; +import type { uiComponent } from "@team-plain/typescript-sdk"; +import { PlainClient } from "@team-plain/typescript-sdk"; import { env } from "~/env.server"; type Input = { diff --git a/apps/webapp/app/utils/regex.ts b/apps/webapp/app/utils/regex.ts index f4ba98e7e15..c6e7825e151 100644 --- a/apps/webapp/app/utils/regex.ts +++ b/apps/webapp/app/utils/regex.ts @@ -2,7 +2,7 @@ export function isValidRegex(regex: string) { try { new RegExp(regex); return true; - } catch (err) { + } catch (_err) { return false; } } diff --git a/apps/webapp/app/utils/searchParams.ts b/apps/webapp/app/utils/searchParams.ts index 739b284c2a1..39f9697176a 100644 --- a/apps/webapp/app/utils/searchParams.ts +++ b/apps/webapp/app/utils/searchParams.ts @@ -1,4 +1,5 @@ -import { z, ZodType } from "zod"; +import type { ZodType } from "zod"; +import { z } from "zod"; import { fromZodError } from "zod-validation-error"; /** diff --git a/apps/webapp/app/utils/timelineSpanEvents.ts b/apps/webapp/app/utils/timelineSpanEvents.ts index 596f0399a6f..1b956da3769 100644 --- a/apps/webapp/app/utils/timelineSpanEvents.ts +++ b/apps/webapp/app/utils/timelineSpanEvents.ts @@ -1,4 +1,4 @@ -import { SpanEvent } from "@trigger.dev/core/v3"; +import type { SpanEvent } from "@trigger.dev/core/v3"; import { millisecondsToNanoseconds } from "@trigger.dev/core/v3/utils/durations"; export type TimelineEventState = "complete" | "error" | "inprogress" | "delayed"; diff --git a/apps/webapp/app/v3/GCRARateLimiter.server.ts b/apps/webapp/app/v3/GCRARateLimiter.server.ts index 49d9eabea4d..fbe344fcf5f 100644 --- a/apps/webapp/app/v3/GCRARateLimiter.server.ts +++ b/apps/webapp/app/v3/GCRARateLimiter.server.ts @@ -1,4 +1,5 @@ -import Redis, { Cluster } from "ioredis"; +import type { Cluster } from "ioredis"; +import type Redis from "ioredis"; /** * Options for configuring the RateLimiter. diff --git a/apps/webapp/app/v3/alertsWorker.server.ts b/apps/webapp/app/v3/alertsWorker.server.ts index 693b16b738a..88637d1c361 100644 --- a/apps/webapp/app/v3/alertsWorker.server.ts +++ b/apps/webapp/app/v3/alertsWorker.server.ts @@ -1,5 +1,5 @@ import { Logger } from "@trigger.dev/core/logger"; -import { CronSchema, Worker as RedisWorker } from "@trigger.dev/redis-worker"; +import { Worker as RedisWorker } from "@trigger.dev/redis-worker"; import { z } from "zod"; import { env } from "~/env.server"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/v3/authenticatedSocketConnection.server.ts b/apps/webapp/app/v3/authenticatedSocketConnection.server.ts index cd255c800bb..a4f42bb142c 100644 --- a/apps/webapp/app/v3/authenticatedSocketConnection.server.ts +++ b/apps/webapp/app/v3/authenticatedSocketConnection.server.ts @@ -8,7 +8,7 @@ import { Evt } from "evt"; import { randomUUID } from "node:crypto"; import type { CloseEvent, ErrorEvent, MessageEvent } from "ws"; import { WebSocket } from "ws"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { DevQueueConsumer } from "./marqs/devQueueConsumer.server"; diff --git a/apps/webapp/app/v3/environmentVariables/environmentVariablesRepository.server.ts b/apps/webapp/app/v3/environmentVariables/environmentVariablesRepository.server.ts index 39a8025213f..a8f2ce701ec 100644 --- a/apps/webapp/app/v3/environmentVariables/environmentVariablesRepository.server.ts +++ b/apps/webapp/app/v3/environmentVariables/environmentVariablesRepository.server.ts @@ -1,10 +1,12 @@ -import { Prisma, type PrismaClient, type RuntimeEnvironmentType } from "@trigger.dev/database"; import type { AuthenticatedEnvironment } from "@trigger.dev/core/v3/auth/environment"; +import { Prisma, type PrismaClient, type RuntimeEnvironmentType } from "@trigger.dev/database"; import { z } from "zod"; import { environmentFullTitle } from "~/components/environments/EnvironmentLabel"; import { $replica, $transaction, prisma, type PrismaReplicaClient } from "~/db.server"; import { env } from "~/env.server"; import { getSecretStore } from "~/services/secrets/secretStore.server"; +import { deduplicateVariableArray } from "../deduplicateVariableArray.server"; +import { removeBlacklistedVariables } from "../environmentVariableRules.server"; import { generateFriendlyId } from "../friendlyIdentifiers"; import { type CreateEnvironmentVariables, @@ -19,9 +21,6 @@ import { type Repository, type Result, } from "./repository"; -import { removeBlacklistedVariables } from "../environmentVariableRules.server"; -import { deduplicateVariableArray } from "../deduplicateVariableArray.server"; -import { logger } from "~/services/logger.server"; function secretKeyProjectPrefix(projectId: string) { return `environmentvariable:${projectId}:`; @@ -136,7 +135,7 @@ export class EnvironmentVariablesRepository implements Repository { try { for (const variable of values) { - const result = await $transaction(this.prismaClient, "create env var", async (tx) => { + const _result = await $transaction(this.prismaClient, "create env var", async (tx) => { const environmentVariable = await tx.environmentVariable.upsert({ where: { projectId_key: { @@ -389,7 +388,7 @@ export class EnvironmentVariablesRepository implements Repository { }, }); - const variableValue = await tx.environmentVariableValue.create({ + const _variableValue = await tx.environmentVariableValue.create({ data: { variableId: environmentVariable.id, environmentId: value.environmentId, diff --git a/apps/webapp/app/v3/environmentVariables/repository.ts b/apps/webapp/app/v3/environmentVariables/repository.ts index 84dee8beaf3..d0186c9ac56 100644 --- a/apps/webapp/app/v3/environmentVariables/repository.ts +++ b/apps/webapp/app/v3/environmentVariables/repository.ts @@ -1,4 +1,4 @@ -import { RuntimeEnvironmentType } from "@trigger.dev/database"; +import type { RuntimeEnvironmentType } from "@trigger.dev/database"; import { z } from "zod"; export const EnvironmentVariableKey = z diff --git a/apps/webapp/app/v3/eventRepository/clickhouseEventRepository.server.ts b/apps/webapp/app/v3/eventRepository/clickhouseEventRepository.server.ts index a8ab7c80f56..25f2bac3473 100644 --- a/apps/webapp/app/v3/eventRepository/clickhouseEventRepository.server.ts +++ b/apps/webapp/app/v3/eventRepository/clickhouseEventRepository.server.ts @@ -8,26 +8,29 @@ import type { TaskEventV1Input, TaskEventV2Input, } from "@internal/clickhouse"; -import { Attributes, startSpan, trace, Tracer } from "@internal/tracing"; +import type { Attributes, Tracer } from "@internal/tracing"; +import { startSpan, trace } from "@internal/tracing"; import { createJsonErrorObject } from "@trigger.dev/core/v3/errors"; import { serializeTraceparent } from "@trigger.dev/core/v3/isomorphic"; -import { +import type { AttemptFailedSpanEvent, CancellationSpanEvent, ExceptionSpanEvent, - isAttemptFailedSpanEvent, - isCancellationSpanEvent, - isExceptionSpanEvent, OtherSpanEvent, - PRIMARY_VARIANT, SpanEvents, TaskEventStyle, TaskRunError, } from "@trigger.dev/core/v3/schemas"; +import { + isAttemptFailedSpanEvent, + isCancellationSpanEvent, + isExceptionSpanEvent, + PRIMARY_VARIANT, +} from "@trigger.dev/core/v3/schemas"; import { SemanticInternalAttributes } from "@trigger.dev/core/v3/semanticInternalAttributes"; import { unflattenAttributes } from "@trigger.dev/core/v3/utils/flattenAttributes"; -import { TaskEventLevel } from "@trigger.dev/database"; +import type { TaskEventLevel } from "@trigger.dev/database"; import { logger } from "~/services/logger.server"; import { DynamicFlushScheduler } from "../dynamicFlushScheduler.server"; import { tracePubSub } from "../services/tracePubSub.server"; @@ -44,13 +47,7 @@ import { getNowInNanoseconds, parseEventsField, removePrivateProperties, - isEmptyObject, } from "./common.server"; -import { - isClickHouseJsonParseError, - parseRowNumberFromError, - sanitizeRows, -} from "./sanitizeRowsOnParseError.server"; import type { CompleteableTaskRun, CreateEventInput, @@ -68,6 +65,11 @@ import type { TraceEventOptions, TraceSummary, } from "./eventRepository.types"; +import { + isClickHouseJsonParseError, + parseRowNumberFromError, + sanitizeRows, +} from "./sanitizeRowsOnParseError.server"; export type ClickhouseEventRepositoryConfig = { clickhouse: ClickHouse; diff --git a/apps/webapp/app/v3/eventRepository/common.server.ts b/apps/webapp/app/v3/eventRepository/common.server.ts index 3ba8a50c7f7..eb8bf7f23ec 100644 --- a/apps/webapp/app/v3/eventRepository/common.server.ts +++ b/apps/webapp/app/v3/eventRepository/common.server.ts @@ -1,7 +1,11 @@ -import { Attributes } from "@opentelemetry/api"; +import type { Attributes } from "@opentelemetry/api"; import { RandomIdGenerator } from "@opentelemetry/sdk-trace-base"; import { parseTraceparent } from "@trigger.dev/core/v3/isomorphic"; -import { ExceptionEventProperties, SpanEvents, TaskRunError } from "@trigger.dev/core/v3/schemas"; +import type { + ExceptionEventProperties, + SpanEvents, + TaskRunError, +} from "@trigger.dev/core/v3/schemas"; import { unflattenAttributes } from "@trigger.dev/core/v3/utils/flattenAttributes"; import { createHash } from "node:crypto"; diff --git a/apps/webapp/app/v3/eventRepository/eventRepository.server.ts b/apps/webapp/app/v3/eventRepository/eventRepository.server.ts index 3c46995e280..1d1f5350b62 100644 --- a/apps/webapp/app/v3/eventRepository/eventRepository.server.ts +++ b/apps/webapp/app/v3/eventRepository/eventRepository.server.ts @@ -1,35 +1,41 @@ -import { Attributes, AttributeValue, trace, Tracer } from "@opentelemetry/api"; +import type { Attributes, AttributeValue, Tracer } from "@opentelemetry/api"; +import { trace } from "@opentelemetry/api"; import { RandomIdGenerator } from "@opentelemetry/sdk-trace-base"; import { SemanticResourceAttributes } from "@opentelemetry/semantic-conventions"; -import { +import type { AttemptFailedSpanEvent, - correctErrorStackTrace, ExceptionEventProperties, ExceptionSpanEvent, + SpanEvent, + SpanEvents, + TaskEventStyle, + TaskRunError, +} from "@trigger.dev/core/v3"; +import { + correctErrorStackTrace, flattenAttributes, isExceptionSpanEvent, nanosecondsToMilliseconds, PRIMARY_VARIANT, SemanticInternalAttributes, - SpanEvent, - SpanEvents, - TaskEventStyle, - TaskRunError, unflattenAttributes, } from "@trigger.dev/core/v3"; import { serializeTraceparent } from "@trigger.dev/core/v3/isomorphic"; import type { MetricsV1Input } from "@internal/clickhouse"; -import { Prisma, TaskEvent, TaskEventKind } from "@trigger.dev/database"; +import type { TaskEvent } from "@trigger.dev/database"; +import { Prisma, TaskEventKind } from "@trigger.dev/database"; import { nanoid } from "nanoid"; import { Gauge } from "prom-client"; -import { $replica, prisma, PrismaClient, PrismaReplicaClient } from "~/db.server"; +import type { PrismaClient, PrismaReplicaClient } from "~/db.server"; +import { $replica, prisma } from "~/db.server"; import { env } from "~/env.server"; import { metricsRegister } from "~/metrics.server"; import { logger } from "~/services/logger.server"; import { singleton } from "~/utils/singleton"; import { DynamicFlushScheduler } from "../dynamicFlushScheduler.server"; import { tracePubSub } from "../services/tracePubSub.server"; -import { DetailedTraceEvent, TaskEventStore, TaskEventStoreTable } from "../taskEventStore.server"; +import type { DetailedTraceEvent, TaskEventStoreTable } from "../taskEventStore.server"; +import { TaskEventStore } from "../taskEventStore.server"; import { startActiveSpan } from "../tracer.server"; import { startSpan } from "../tracing.server"; import { @@ -953,7 +959,7 @@ export class EventRepository implements IEventRepository { const traceId = propagatedContext?.traceparent?.traceId ?? generateTraceId(); const parentId = options.parentId ?? propagatedContext?.traceparent?.spanId; - const tracestate = propagatedContext?.tracestate; + const _tracestate = propagatedContext?.tracestate; const spanId = options.spanIdSeed ? generateDeterministicSpanId(traceId, options.spanIdSeed) : generateSpanId(); @@ -1033,7 +1039,7 @@ export class EventRepository implements IEventRepository { ? generateTraceId() : (propagatedContext?.traceparent?.traceId ?? generateTraceId()); const parentId = options.spanParentAsLink ? undefined : propagatedContext?.traceparent?.spanId; - const tracestate = options.spanParentAsLink ? undefined : propagatedContext?.tracestate; + const _tracestate = options.spanParentAsLink ? undefined : propagatedContext?.tracestate; const spanId = options.spanIdSeed ? generateDeterministicSpanId(traceId, options.spanIdSeed) : generateSpanId(); diff --git a/apps/webapp/app/v3/eventRepository/eventRepository.types.ts b/apps/webapp/app/v3/eventRepository/eventRepository.types.ts index 4b7db3f870a..d65999a8c27 100644 --- a/apps/webapp/app/v3/eventRepository/eventRepository.types.ts +++ b/apps/webapp/app/v3/eventRepository/eventRepository.types.ts @@ -1,4 +1,4 @@ -import { Attributes, Tracer } from "@opentelemetry/api"; +import type { Attributes, Tracer } from "@opentelemetry/api"; import type { ExceptionEventProperties, SpanEvents, diff --git a/apps/webapp/app/v3/eventRepository/index.server.ts b/apps/webapp/app/v3/eventRepository/index.server.ts index ca0fb85f00b..614424a1993 100644 --- a/apps/webapp/app/v3/eventRepository/index.server.ts +++ b/apps/webapp/app/v3/eventRepository/index.server.ts @@ -16,27 +16,6 @@ export const EVENT_STORE_TYPES = { } as const; export type EventStoreType = (typeof EVENT_STORE_TYPES)[keyof typeof EVENT_STORE_TYPES]; - -/** - * Resolve the event repository for a run's persisted `taskEventStore` value and org. - * Postgres-backed runs use the Prisma `eventRepository`; ClickHouse-backed runs use - * `clickhouseFactory.getEventRepositoryForOrganizationSync`. - * - * Intentionally NOT exported. Sync resolution can race the org data-stores - * registry load and silently route writes to the default ClickHouse instead of - * the org's configured override. Hot paths that genuinely cannot afford to await - * (OTEL exporter, replication services) call `clickhouseFactory.getEvent…Sync` - * directly and gate startup on `clickhouseFactory.isReady()`. Everything else - * should use {@link getEventRepositoryForStore}, the async variant below. - */ -function resolveEventRepositoryForStore(store: string, organizationId: string): IEventRepository { - if (store === EVENT_STORE_TYPES.CLICKHOUSE || store === EVENT_STORE_TYPES.CLICKHOUSE_V2) { - return clickhouseFactory.getEventRepositoryForOrganizationSync(store, organizationId) - .repository; - } - return eventRepository; -} - /** * Async variant of {@link resolveEventRepositoryForStore}. Awaits the factory's * registry readiness before returning the ClickHouse event repository; for diff --git a/apps/webapp/app/v3/failedTaskRun.server.ts b/apps/webapp/app/v3/failedTaskRun.server.ts index c2f58662491..aac6aff7ca5 100644 --- a/apps/webapp/app/v3/failedTaskRun.server.ts +++ b/apps/webapp/app/v3/failedTaskRun.server.ts @@ -1,11 +1,10 @@ -import { - calculateNextRetryDelay, - RetryOptions, +import type { TaskRunExecution, TaskRunExecutionRetry, TaskRunFailedExecutionResult, V3TaskRunExecution, } from "@trigger.dev/core/v3"; +import { calculateNextRetryDelay, RetryOptions } from "@trigger.dev/core/v3"; import type { Prisma, TaskRun } from "@trigger.dev/database"; import * as semver from "semver"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/v3/featureFlags.server.ts b/apps/webapp/app/v3/featureFlags.server.ts index 03353c914e6..991a2dfe4c8 100644 --- a/apps/webapp/app/v3/featureFlags.server.ts +++ b/apps/webapp/app/v3/featureFlags.server.ts @@ -1,9 +1,9 @@ import { type z } from "zod"; import { prisma, type PrismaClientOrTransaction } from "~/db.server"; import { + type FeatureFlagCatalogSchema, type FeatureFlagKey, FeatureFlagCatalog, - FeatureFlagCatalogSchema, } from "~/v3/featureFlags"; export type FlagsOptions = { diff --git a/apps/webapp/app/v3/handleSocketIo.server.ts b/apps/webapp/app/v3/handleSocketIo.server.ts index 2e7fd211bbf..d34e4c0f1bb 100644 --- a/apps/webapp/app/v3/handleSocketIo.server.ts +++ b/apps/webapp/app/v3/handleSocketIo.server.ts @@ -1,4 +1,4 @@ -import { EventBusEventArgs } from "@internal/run-engine"; +import type { EventBusEventArgs } from "@internal/run-engine"; import { createAdapter } from "@socket.io/redis-adapter"; import { ClientToSharedQueueMessages, @@ -17,7 +17,8 @@ import type { import { ZodNamespace } from "@trigger.dev/core/v3/zodNamespace"; import { defaultReconnectOnError } from "@internal/redis"; import { Redis } from "ioredis"; -import { Namespace, Server, Socket } from "socket.io"; +import type { Namespace, Socket } from "socket.io"; +import { Server } from "socket.io"; import { env } from "~/env.server"; import { findEnvironmentById } from "~/models/runtimeEnvironment.server"; import { authenticateApiRequestWithFailure } from "~/services/apiAuth.server"; diff --git a/apps/webapp/app/v3/handleWebsockets.server.ts b/apps/webapp/app/v3/handleWebsockets.server.ts index ee7c97d079e..bb1350a52ee 100644 --- a/apps/webapp/app/v3/handleWebsockets.server.ts +++ b/apps/webapp/app/v3/handleWebsockets.server.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "node:http"; +import type { IncomingMessage } from "node:http"; import { WebSocketServer, type WebSocket } from "ws"; import { authenticateApiKey } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/v3/machinePresets.server.ts b/apps/webapp/app/v3/machinePresets.server.ts index ee01aace828..1663e87bb23 100644 --- a/apps/webapp/app/v3/machinePresets.server.ts +++ b/apps/webapp/app/v3/machinePresets.server.ts @@ -1,4 +1,5 @@ -import { MachineConfig, MachinePreset, MachinePresetName } from "@trigger.dev/core/v3"; +import type { MachinePreset } from "@trigger.dev/core/v3"; +import { MachineConfig, MachinePresetName } from "@trigger.dev/core/v3"; import { defaultMachine, machines } from "~/services/platform.v3.server"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/v3/marqs/concurrencyMonitor.server.ts b/apps/webapp/app/v3/marqs/concurrencyMonitor.server.ts index 8e0dfa6d20d..3f974b9aeb4 100644 --- a/apps/webapp/app/v3/marqs/concurrencyMonitor.server.ts +++ b/apps/webapp/app/v3/marqs/concurrencyMonitor.server.ts @@ -1,8 +1,9 @@ -import { Logger } from "@trigger.dev/core/logger"; -import { Redis } from "ioredis"; +import type { Logger } from "@trigger.dev/core/logger"; +import type { Redis } from "ioredis"; import { prisma } from "~/db.server"; import { logger } from "~/services/logger.server"; -import { MarQS, marqs as marqsv3 } from "./index.server"; +import type { MarQS } from "./index.server"; +import { marqs as marqsv3 } from "./index.server"; import { env } from "~/env.server"; export type MarqsConcurrencyMonitorOptions = { diff --git a/apps/webapp/app/v3/marqs/devPubSub.server.ts b/apps/webapp/app/v3/marqs/devPubSub.server.ts index 7673768cb8a..9e33ee95f0d 100644 --- a/apps/webapp/app/v3/marqs/devPubSub.server.ts +++ b/apps/webapp/app/v3/marqs/devPubSub.server.ts @@ -1,6 +1,7 @@ import { z } from "zod"; import { singleton } from "~/utils/singleton"; -import { ZodPubSub, ZodSubscriber } from "../utils/zodPubSub.server"; +import type { ZodSubscriber } from "../utils/zodPubSub.server"; +import { ZodPubSub } from "../utils/zodPubSub.server"; import { env } from "~/env.server"; import { Gauge } from "prom-client"; import { metricsRegister } from "~/metrics.server"; diff --git a/apps/webapp/app/v3/marqs/devQueueConsumer.server.ts b/apps/webapp/app/v3/marqs/devQueueConsumer.server.ts index 3b6c1f4448e..78c5950141d 100644 --- a/apps/webapp/app/v3/marqs/devQueueConsumer.server.ts +++ b/apps/webapp/app/v3/marqs/devQueueConsumer.server.ts @@ -1,5 +1,6 @@ -import { Context, ROOT_CONTEXT, Span, SpanKind, context, trace } from "@opentelemetry/api"; -import { +import type { Context, Span } from "@opentelemetry/api"; +import { ROOT_CONTEXT, SpanKind, context, trace } from "@opentelemetry/api"; +import type { V3TaskRunExecution, TaskRunExecutionLazyAttemptPayload, TaskRunExecutionResult, @@ -7,14 +8,15 @@ import { serverWebsocketMessages, } from "@trigger.dev/core/v3"; import { getMaxDuration } from "@trigger.dev/core/v3/isomorphic"; -import { ZodMessageSender } from "@trigger.dev/core/v3/zodMessageHandler"; -import { BackgroundWorker, BackgroundWorkerTask } from "@trigger.dev/database"; +import type { ZodMessageSender } from "@trigger.dev/core/v3/zodMessageHandler"; +import type { BackgroundWorker, BackgroundWorkerTask } from "@trigger.dev/database"; import { z } from "zod"; import { prisma } from "~/db.server"; import { createNewSession, disconnectSession } from "~/models/runtimeEnvironment.server"; import { findQueueInEnvironment, sanitizeQueueName } from "~/models/taskQueue.server"; -import { RedisClient, createRedisClient } from "~/redis.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { RedisClient } from "~/redis.server"; +import { createRedisClient } from "~/redis.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { marqs } from "~/v3/marqs/index.server"; import { resolveVariablesForEnvironment } from "../environmentVariables/environmentVariablesRepository.server"; @@ -22,7 +24,8 @@ import { FailedTaskRunService } from "../failedTaskRun.server"; import { CancelDevSessionRunsService } from "../services/cancelDevSessionRuns.server"; import { CompleteAttemptService } from "../services/completeAttempt.server"; import { attributesFromAuthenticatedEnv, tracer } from "../tracer.server"; -import { DevSubscriber, devPubSub } from "./devPubSub.server"; +import type { DevSubscriber } from "./devPubSub.server"; +import { devPubSub } from "./devPubSub.server"; const MessageBody = z.discriminatedUnion("type", [ z.object({ diff --git a/apps/webapp/app/v3/marqs/fairDequeuingStrategy.server.ts b/apps/webapp/app/v3/marqs/fairDequeuingStrategy.server.ts index 1e88a5348bc..cbc1ececad7 100644 --- a/apps/webapp/app/v3/marqs/fairDequeuingStrategy.server.ts +++ b/apps/webapp/app/v3/marqs/fairDequeuingStrategy.server.ts @@ -1,10 +1,11 @@ -import { createCache, DefaultStatefulContext, Namespace, Cache as UnkeyCache } from "@unkey/cache"; +import type { Cache as UnkeyCache } from "@unkey/cache"; +import { createCache, DefaultStatefulContext, Namespace } from "@unkey/cache"; import { createLRUMemoryStore } from "@internal/cache"; import { randomUUID } from "crypto"; -import { Redis } from "ioredis"; -import { EnvQueues, MarQSFairDequeueStrategy, MarQSKeyProducer } from "./types"; +import type { Redis } from "ioredis"; +import type { EnvQueues, MarQSFairDequeueStrategy, MarQSKeyProducer } from "./types"; import seedrandom from "seedrandom"; -import { Tracer } from "@opentelemetry/api"; +import type { Tracer } from "@opentelemetry/api"; import { startSpan } from "../tracing.server"; export type FairDequeuingStrategyBiases = { diff --git a/apps/webapp/app/v3/marqs/index.server.ts b/apps/webapp/app/v3/marqs/index.server.ts index 3dae3aa1f1c..0f4cb2832fe 100644 --- a/apps/webapp/app/v3/marqs/index.server.ts +++ b/apps/webapp/app/v3/marqs/index.server.ts @@ -1,14 +1,6 @@ import { type RedisOptions } from "@internal/redis"; -import { - context, - propagation, - Span, - SpanKind, - SpanOptions, - SpanStatusCode, - trace, - Tracer, -} from "@opentelemetry/api"; +import type { Span, SpanOptions, Tracer } from "@opentelemetry/api"; +import { context, propagation, SpanKind, SpanStatusCode, trace } from "@opentelemetry/api"; import { SEMATTRS_MESSAGE_ID, SEMATTRS_MESSAGING_OPERATION, @@ -22,7 +14,7 @@ import Redis, { type Callback, type Result } from "ioredis"; import { setInterval as setIntervalAsync } from "node:timers/promises"; import z from "zod"; import { env } from "~/env.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { signalsEmitter } from "~/services/signals.server"; import { singleton } from "~/utils/singleton"; @@ -38,16 +30,16 @@ import { } from "./constants.server"; import { FairDequeuingStrategy } from "./fairDequeuingStrategy.server"; import { MarQSShortKeyProducer } from "./marqsKeyProducer"; -import { +import type { EnqueueMessageReserveConcurrencyOptions, MarQSFairDequeueStrategy, MarQSKeyProducer, MarQSKeyProducerEnv, MarQSPriorityLevel, - MessagePayload, MessageQueueSubscriber, VisibilityTimeoutStrategy, } from "./types"; +import { MessagePayload } from "./types"; import { V3LegacyRunEngineWorkerVisibilityTimeout } from "./v3VisibilityTimeout.server"; const KEY_PREFIX = "marqs:"; diff --git a/apps/webapp/app/v3/marqs/marqsKeyProducer.ts b/apps/webapp/app/v3/marqs/marqsKeyProducer.ts index 5c9c7238adc..867eebb81d1 100644 --- a/apps/webapp/app/v3/marqs/marqsKeyProducer.ts +++ b/apps/webapp/app/v3/marqs/marqsKeyProducer.ts @@ -1,4 +1,4 @@ -import { MarQSKeyProducer, MarQSKeyProducerEnv, QueueDescriptor } from "./types"; +import type { MarQSKeyProducer, MarQSKeyProducerEnv, QueueDescriptor } from "./types"; const constants = { SHARED_QUEUE: "sharedQueue", diff --git a/apps/webapp/app/v3/marqs/sharedQueueConsumer.server.ts b/apps/webapp/app/v3/marqs/sharedQueueConsumer.server.ts index 19d50faac3e..4ed307126e3 100644 --- a/apps/webapp/app/v3/marqs/sharedQueueConsumer.server.ts +++ b/apps/webapp/app/v3/marqs/sharedQueueConsumer.server.ts @@ -1,31 +1,21 @@ -import { - Context, - ROOT_CONTEXT, - Span, - SpanKind, - SpanOptions, - SpanStatusCode, - context, - trace, -} from "@opentelemetry/api"; -import { +import type { Context, Span, SpanOptions } from "@opentelemetry/api"; +import { ROOT_CONTEXT, SpanKind, SpanStatusCode, context, trace } from "@opentelemetry/api"; +import type { AckCallbackResult, MachinePreset, V3ProdTaskRunExecution, V3ProdTaskRunExecutionPayload, TaskRunError, - TaskRunErrorCodes, TaskRunExecution, TaskRunExecutionLazyAttemptPayload, TaskRunExecutionResult, TaskRunFailedExecutionResult, TaskRunSuccessfulExecutionResult, - parsePacket, serverWebsocketMessages, - SemanticInternalAttributes, } from "@trigger.dev/core/v3"; -import { ZodMessageSender } from "@trigger.dev/core/v3/zodMessageHandler"; -import { +import { TaskRunErrorCodes, parsePacket, SemanticInternalAttributes } from "@trigger.dev/core/v3"; +import type { ZodMessageSender } from "@trigger.dev/core/v3/zodMessageHandler"; +import type { BackgroundWorker, BackgroundWorkerTask, Prisma, @@ -40,12 +30,12 @@ import { generateJWTTokenForEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { singleton } from "~/utils/singleton"; import { marqs } from "~/v3/marqs/index.server"; +import type { RuntimeEnvironmentForEnvRepo } from "../environmentVariables/environmentVariablesRepository.server"; import { - RuntimeEnvironmentForEnvRepo, RuntimeEnvironmentForEnvRepoPayload, resolveVariablesForEnvironment, } from "../environmentVariables/environmentVariablesRepository.server"; -import { EnvironmentVariable } from "../environmentVariables/repository"; +import type { EnvironmentVariable } from "../environmentVariables/repository"; import { FailedTaskRunService } from "../failedTaskRun.server"; import { generateFriendlyId } from "../friendlyIdentifiers"; import { socketIo } from "../handleSocketIo.server"; @@ -66,7 +56,7 @@ import { } from "../taskStatus"; import { tracer } from "../tracer.server"; import { getMaxDuration } from "../utils/maxDuration"; -import { MessagePayload } from "./types"; +import type { MessagePayload } from "./types"; const WithTraceContext = z.object({ traceparent: z.string().optional(), @@ -1445,7 +1435,7 @@ export class SharedQueueConsumer { async #markRunAsWaitingForDeploy(runId: string) { logger.debug("Marking run as waiting for deploy", { runId }); - const run = await prisma.taskRun.update({ + const _run = await prisma.taskRun.update({ where: { id: runId, }, diff --git a/apps/webapp/app/v3/marqs/v3VisibilityTimeout.server.ts b/apps/webapp/app/v3/marqs/v3VisibilityTimeout.server.ts index 82ebe90b5f4..ed10bf207fb 100644 --- a/apps/webapp/app/v3/marqs/v3VisibilityTimeout.server.ts +++ b/apps/webapp/app/v3/marqs/v3VisibilityTimeout.server.ts @@ -1,6 +1,6 @@ import { legacyRunEngineWorker } from "../legacyRunEngineWorker.server"; import { TaskRunHeartbeatFailedService } from "../taskRunHeartbeatFailed.server"; -import { VisibilityTimeoutStrategy } from "./types"; +import type { VisibilityTimeoutStrategy } from "./types"; export class V3GraphileVisibilityTimeout implements VisibilityTimeoutStrategy { async startHeartbeat(messageId: string, timeoutInMs: number): Promise { diff --git a/apps/webapp/app/v3/models/workerDeployment.server.ts b/apps/webapp/app/v3/models/workerDeployment.server.ts index 4af4bdd2157..5934cd07620 100644 --- a/apps/webapp/app/v3/models/workerDeployment.server.ts +++ b/apps/webapp/app/v3/models/workerDeployment.server.ts @@ -1,5 +1,5 @@ import type { Prettify } from "@trigger.dev/core"; -import { +import type { BackgroundWorker, PrismaClientOrTransaction, RunEngineVersion, @@ -9,8 +9,9 @@ import { CURRENT_DEPLOYMENT_LABEL, CURRENT_UNMANAGED_DEPLOYMENT_LABEL, } from "@trigger.dev/core/v3/isomorphic"; -import { Prisma, prisma } from "~/db.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { Prisma } from "~/db.server"; +import { prisma } from "~/db.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; export type CurrentWorkerDeployment = Prettify< NonNullable>> diff --git a/apps/webapp/app/v3/mollifier/mollifierGate.server.ts b/apps/webapp/app/v3/mollifier/mollifierGate.server.ts index 8e237b8e76e..08790123887 100644 --- a/apps/webapp/app/v3/mollifier/mollifierGate.server.ts +++ b/apps/webapp/app/v3/mollifier/mollifierGate.server.ts @@ -6,7 +6,6 @@ import { createRealTripEvaluator } from "./mollifierTripEvaluator.server"; import { recordDecision, type DecisionOutcome, - type DecisionReason, type RecordDecisionOptions, } from "./mollifierTelemetry.server"; diff --git a/apps/webapp/app/v3/mollifier/mollifierStaleSweep.server.ts b/apps/webapp/app/v3/mollifier/mollifierStaleSweep.server.ts index c2c2a2d03db..0a5edcb6cd3 100644 --- a/apps/webapp/app/v3/mollifier/mollifierStaleSweep.server.ts +++ b/apps/webapp/app/v3/mollifier/mollifierStaleSweep.server.ts @@ -1,10 +1,7 @@ import type { MollifierBuffer } from "@trigger.dev/redis-worker"; import { logger as defaultLogger } from "~/services/logger.server"; import { getMollifierBuffer } from "./mollifierBuffer.server"; -import { - MollifierStaleSweepState, - type StaleSweepStateStore, -} from "./mollifierStaleSweepState.server"; +import { type StaleSweepStateStore } from "./mollifierStaleSweepState.server"; import { recordStaleEntry as defaultRecordStaleEntry, reportStaleEntrySnapshot as defaultReportStaleEntrySnapshot, diff --git a/apps/webapp/app/v3/otlpExporter.server.ts b/apps/webapp/app/v3/otlpExporter.server.ts index 148109a0340..65680bbd2a8 100644 --- a/apps/webapp/app/v3/otlpExporter.server.ts +++ b/apps/webapp/app/v3/otlpExporter.server.ts @@ -1,20 +1,23 @@ -import { trace, Tracer } from "@opentelemetry/api"; +import type { Tracer } from "@opentelemetry/api"; +import { trace } from "@opentelemetry/api"; import { SemanticInternalAttributes } from "@trigger.dev/core/v3"; -import { +import type { AnyValue, ExportLogsServiceRequest, - ExportLogsServiceResponse, ExportMetricsServiceRequest, - ExportMetricsServiceResponse, ExportTraceServiceRequest, - ExportTraceServiceResponse, KeyValue, ResourceLogs, ResourceMetrics, ResourceSpans, - SeverityNumber, Span, Span_Event, +} from "@trigger.dev/otlp-importer"; +import { + ExportLogsServiceResponse, + ExportMetricsServiceResponse, + ExportTraceServiceResponse, + SeverityNumber, Span_SpanKind, Status_StatusCode, } from "@trigger.dev/otlp-importer"; @@ -801,20 +804,6 @@ function convertSelectedKeyValueItemsToMap( return result; } - -function detectPrimitiveValue( - attributes: Record | undefined, - sentinel: string -): Record | string | number | boolean | undefined { - if (!attributes) return undefined; - - if (typeof attributes[sentinel] !== "undefined") { - return attributes[sentinel]; - } - - return attributes; -} - function spanEventsToEventEvents(events: Span_Event[]): CreateEventInput["events"] { return events.map((event) => { return { @@ -1002,10 +991,12 @@ function extractNumberAttribute( return isIntValue(attribute?.value) ? Number(attribute.value.intValue) : fallback; } +// eslint-disable-next-line no-unused-vars function extractDoubleAttribute( attributes: KeyValue[], name: string | Array ): number | undefined; +// eslint-disable-next-line no-unused-vars function extractDoubleAttribute( attributes: KeyValue[], name: string | Array, @@ -1025,10 +1016,12 @@ function extractDoubleAttribute( return isDoubleValue(attribute?.value) ? Number(attribute.value.doubleValue) : fallback; } +// eslint-disable-next-line no-unused-vars function extractBooleanAttribute( attributes: KeyValue[], name: string | Array ): boolean | undefined; +// eslint-disable-next-line no-unused-vars function extractBooleanAttribute( attributes: KeyValue[], name: string | Array, diff --git a/apps/webapp/app/v3/queueSizeLimits.server.ts b/apps/webapp/app/v3/queueSizeLimits.server.ts index 75f6b15d47c..61058d48b31 100644 --- a/apps/webapp/app/v3/queueSizeLimits.server.ts +++ b/apps/webapp/app/v3/queueSizeLimits.server.ts @@ -1,6 +1,6 @@ -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { env } from "~/env.server"; -import { MarQS } from "./marqs/index.server"; +import type { MarQS } from "./marqs/index.server"; export type QueueSizeGuardResult = { isWithinLimits: boolean; diff --git a/apps/webapp/app/v3/runEngineHandlers.server.ts b/apps/webapp/app/v3/runEngineHandlers.server.ts index a9c9df58373..6e99898cdfe 100644 --- a/apps/webapp/app/v3/runEngineHandlers.server.ts +++ b/apps/webapp/app/v3/runEngineHandlers.server.ts @@ -1,17 +1,18 @@ -import { CompleteBatchResult } from "@internal/run-engine"; +import type { CompleteBatchResult } from "@internal/run-engine"; import { SpanKind } from "@internal/tracing"; import { tryCatch } from "@trigger.dev/core/utils"; -import { createJsonErrorObject, sanitizeError } from "@trigger.dev/core/v3"; +import { createJsonErrorObject, sanitizeError, TaskRunErrorCodes } from "@trigger.dev/core/v3"; import { RunId } from "@trigger.dev/core/v3/isomorphic"; -import { BatchTaskRunStatus, Prisma, RuntimeEnvironmentType } from "@trigger.dev/database"; -import { TriggerFailedTaskService } from "~/runEngine/services/triggerFailedTask.server"; +import type { BatchTaskRunStatus, Prisma } from "@trigger.dev/database"; import { $replica, prisma } from "~/db.server"; import { env } from "~/env.server"; import { findEnvironmentById, findEnvironmentFromRun } from "~/models/runtimeEnvironment.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import { TriggerFailedTaskService } from "~/runEngine/services/triggerFailedTask.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { updateMetadataService } from "~/services/metadata/updateMetadataInstance.server"; import { reportInvocationUsage } from "~/services/platform.v3.server"; +import { publishChangeRecord } from "~/services/realtime/runChangeNotifierInstance.server"; import { MetadataTooLargeError } from "~/utils/packets"; import { QueueSizeLimitExceededError } from "~/v3/services/common.server"; import { TriggerTaskService } from "~/v3/services/triggerTask.server"; @@ -21,9 +22,7 @@ import { getEventRepositoryForStore, recordRunDebugLog } from "./eventRepository import { roomFromFriendlyRunId, socketIo } from "./handleSocketIo.server"; import { engine } from "./runEngine.server"; import { runStore } from "./runStore.server"; -import { publishChangeRecord } from "~/services/realtime/runChangeNotifierInstance.server"; import { PerformTaskRunAlertsService } from "./services/alerts/performTaskRunAlerts.server"; -import { TaskRunErrorCodes } from "@trigger.dev/core/v3"; export function registerRunEngineEventBusHandlers() { engine.eventBus.on("runSucceeded", async ({ time, run, organization, environment }) => { diff --git a/apps/webapp/app/v3/schedules.ts b/apps/webapp/app/v3/schedules.ts index e1a27355801..1653e053544 100644 --- a/apps/webapp/app/v3/schedules.ts +++ b/apps/webapp/app/v3/schedules.ts @@ -16,7 +16,7 @@ export const CronPattern = z.string().refine( try { parseExpression(val); return true; - } catch (e) { + } catch (_e) { return false; } }, diff --git a/apps/webapp/app/v3/services/alerts/deliverAlert.server.ts b/apps/webapp/app/v3/services/alerts/deliverAlert.server.ts index 247efb5d48f..5982fd4460c 100644 --- a/apps/webapp/app/v3/services/alerts/deliverAlert.server.ts +++ b/apps/webapp/app/v3/services/alerts/deliverAlert.server.ts @@ -7,12 +7,12 @@ import { type WebAPIRequestError, } from "@slack/web-api"; import { + type RunStatus, createJsonErrorObject, type DeploymentFailedWebhook, type DeploymentSuccessWebhook, isOOMRunError, type RunFailedWebhook, - RunStatus, TaskRunError, } from "@trigger.dev/core/v3"; import { type ProjectAlertChannelType, type ProjectAlertType } from "@trigger.dev/database"; diff --git a/apps/webapp/app/v3/services/alerts/errorAlertEvaluator.server.ts b/apps/webapp/app/v3/services/alerts/errorAlertEvaluator.server.ts index cd68258c015..94bb10c7b8e 100644 --- a/apps/webapp/app/v3/services/alerts/errorAlertEvaluator.server.ts +++ b/apps/webapp/app/v3/services/alerts/errorAlertEvaluator.server.ts @@ -1,4 +1,4 @@ -import { type ActiveErrorsSinceQueryResult, type ClickHouse } from "@internal/clickhouse"; +import { type ActiveErrorsSinceQueryResult } from "@internal/clickhouse"; import { type ErrorGroupState, type PrismaClientOrTransaction, diff --git a/apps/webapp/app/v3/services/alerts/performDeploymentAlerts.server.ts b/apps/webapp/app/v3/services/alerts/performDeploymentAlerts.server.ts index 537871c920a..ff161ab11ee 100644 --- a/apps/webapp/app/v3/services/alerts/performDeploymentAlerts.server.ts +++ b/apps/webapp/app/v3/services/alerts/performDeploymentAlerts.server.ts @@ -1,4 +1,8 @@ -import { ProjectAlertChannel, ProjectAlertType, WorkerDeployment } from "@trigger.dev/database"; +import type { + ProjectAlertChannel, + ProjectAlertType, + WorkerDeployment, +} from "@trigger.dev/database"; import { alertsWorker } from "~/v3/alertsWorker.server"; import { BaseService } from "../baseService.server"; import { DeliverAlertService } from "./deliverAlert.server"; diff --git a/apps/webapp/app/v3/services/baseService.server.ts b/apps/webapp/app/v3/services/baseService.server.ts index 9dc3a33d084..d8f3f7ff8fe 100644 --- a/apps/webapp/app/v3/services/baseService.server.ts +++ b/apps/webapp/app/v3/services/baseService.server.ts @@ -1,9 +1,12 @@ -import { Span, SpanKind } from "@opentelemetry/api"; +import type { Span } from "@opentelemetry/api"; +import { SpanKind } from "@opentelemetry/api"; import type { RunStore } from "@internal/run-store"; -import { $replica, PrismaClientOrTransaction, prisma } from "~/db.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; +import { $replica, prisma } from "~/db.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { attributesFromAuthenticatedEnv, tracer } from "../tracer.server"; -import { engine, RunEngine } from "../runEngine.server"; +import type { RunEngine } from "../runEngine.server"; +import { engine } from "../runEngine.server"; import { runStore as defaultRunStore } from "../runStore.server"; import { ServiceValidationError } from "./common.server"; diff --git a/apps/webapp/app/v3/services/batchTriggerV3.server.ts b/apps/webapp/app/v3/services/batchTriggerV3.server.ts index a9d3a8f2f2f..ae7fcd83d44 100644 --- a/apps/webapp/app/v3/services/batchTriggerV3.server.ts +++ b/apps/webapp/app/v3/services/batchTriggerV3.server.ts @@ -1,23 +1,22 @@ -import { +import type { BatchTriggerTaskV2RequestBody, BatchTriggerTaskV2Response, IOPacket, - packetRequiresOffloading, - parsePacket, } from "@trigger.dev/core/v3"; +import { packetRequiresOffloading, parsePacket } from "@trigger.dev/core/v3"; +import type { BatchTaskRun, TaskRunAttempt } from "@trigger.dev/database"; import { - BatchTaskRun, isPrismaRaceConditionError, isPrismaRetriableError, isUniqueConstraintError, Prisma, - TaskRunAttempt, } from "@trigger.dev/database"; import { z } from "zod"; -import { prisma, PrismaClientOrTransaction } from "~/db.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; +import { prisma } from "~/db.server"; import { env } from "~/env.server"; import { batchTaskRunItemStatusForRunStatus } from "~/models/taskRun.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { getEntitlement } from "~/services/platform.v3.server"; import { batchTriggerWorker } from "../batchTriggerWorker.server"; diff --git a/apps/webapp/app/v3/services/billingLimit/BillingLimitBulkCancelService.server.ts b/apps/webapp/app/v3/services/billingLimit/BillingLimitBulkCancelService.server.ts index 4c9dc403fa8..697fd72f54b 100644 --- a/apps/webapp/app/v3/services/billingLimit/BillingLimitBulkCancelService.server.ts +++ b/apps/webapp/app/v3/services/billingLimit/BillingLimitBulkCancelService.server.ts @@ -1,9 +1,9 @@ import { BulkActionId } from "@trigger.dev/core/v3/isomorphic"; import { + type Prisma, BulkActionNotificationType, BulkActionStatus, BulkActionType, - Prisma, type PrismaClient, type TaskRunStatus, } from "@trigger.dev/database"; diff --git a/apps/webapp/app/v3/services/billingLimit/billingLimitQueuedRuns.server.ts b/apps/webapp/app/v3/services/billingLimit/billingLimitQueuedRuns.server.ts index f0992ed2b2c..60abe490f81 100644 --- a/apps/webapp/app/v3/services/billingLimit/billingLimitQueuedRuns.server.ts +++ b/apps/webapp/app/v3/services/billingLimit/billingLimitQueuedRuns.server.ts @@ -1,5 +1,4 @@ -import type { PrismaClient } from "@trigger.dev/database"; -import type { TaskRunStatus } from "@trigger.dev/database"; +import type { PrismaClient, TaskRunStatus } from "@trigger.dev/database"; import { QUEUED_STATUSES, RUNNING_STATUSES } from "~/components/runs/v3/TaskRunStatus"; import { prisma } from "~/db.server"; import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server"; diff --git a/apps/webapp/app/v3/services/billingLimit/getInitialEnvPauseStateForBillingLimit.server.ts b/apps/webapp/app/v3/services/billingLimit/getInitialEnvPauseStateForBillingLimit.server.ts index 22e44abd8a3..75044222a7f 100644 --- a/apps/webapp/app/v3/services/billingLimit/getInitialEnvPauseStateForBillingLimit.server.ts +++ b/apps/webapp/app/v3/services/billingLimit/getInitialEnvPauseStateForBillingLimit.server.ts @@ -1,5 +1,10 @@ -import { EnvironmentPauseSource, type RuntimeEnvironmentType } from "@trigger.dev/database"; -import type { Organization, Project, RuntimeEnvironment } from "@trigger.dev/database"; +import { + EnvironmentPauseSource, + type Organization, + type Project, + type RuntimeEnvironment, + type RuntimeEnvironmentType, +} from "@trigger.dev/database"; import type { BillingLimitResult } from "~/services/billingLimit.schemas"; import { logger } from "~/services/logger.server"; import { isBillableEnvironmentType } from "./billingLimitConstants"; diff --git a/apps/webapp/app/v3/services/bulk/BulkActionV2.server.ts b/apps/webapp/app/v3/services/bulk/BulkActionV2.server.ts index c9a1bd9df17..d03ab71796f 100644 --- a/apps/webapp/app/v3/services/bulk/BulkActionV2.server.ts +++ b/apps/webapp/app/v3/services/bulk/BulkActionV2.server.ts @@ -493,7 +493,11 @@ async function getFilters( filters.cursor = undefined; filters.direction = undefined; - const { period, from, to } = timeFilters({ + const { + period, + from: _from, + to: _to, + } = timeFilters({ period: filters.period, from: filters.from, to: filters.to, diff --git a/apps/webapp/app/v3/services/bulk/createBulkAction.server.ts b/apps/webapp/app/v3/services/bulk/createBulkAction.server.ts index 0b7f8860e7e..9acd936db9b 100644 --- a/apps/webapp/app/v3/services/bulk/createBulkAction.server.ts +++ b/apps/webapp/app/v3/services/bulk/createBulkAction.server.ts @@ -26,7 +26,7 @@ export class CreateBulkActionService extends BaseService { const passedTooManyRuns = runIds.length > BULK_ACTION_RUN_LIMIT; runIds = runIds.slice(0, BULK_ACTION_RUN_LIMIT); - const items = await this._prisma.bulkActionItem.createMany({ + const _items = await this._prisma.bulkActionItem.createMany({ data: runIds.map((runId) => ({ friendlyId: generateFriendlyId("bulkitem"), type: action, diff --git a/apps/webapp/app/v3/services/bulk/performBulkAction.server.ts b/apps/webapp/app/v3/services/bulk/performBulkAction.server.ts index e535fd7db32..a982ccad2e0 100644 --- a/apps/webapp/app/v3/services/bulk/performBulkAction.server.ts +++ b/apps/webapp/app/v3/services/bulk/performBulkAction.server.ts @@ -1,5 +1,5 @@ import assertNever from "assert-never"; -import { PrismaClientOrTransaction } from "~/db.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; import { workerQueue } from "~/services/worker.server"; import { BaseService } from "../baseService.server"; import { CancelTaskRunService } from "../cancelTaskRun.server"; diff --git a/apps/webapp/app/v3/services/cancelTaskAttemptDependencies.server.ts b/apps/webapp/app/v3/services/cancelTaskAttemptDependencies.server.ts index 82b22d5935d..9f76a3281cc 100644 --- a/apps/webapp/app/v3/services/cancelTaskAttemptDependencies.server.ts +++ b/apps/webapp/app/v3/services/cancelTaskAttemptDependencies.server.ts @@ -1,7 +1,6 @@ -import { PrismaClientOrTransaction } from "~/db.server"; +import { logger } from "~/services/logger.server"; import { commonWorker } from "../commonWorker.server"; import { BaseService } from "./baseService.server"; -import { logger } from "~/services/logger.server"; import { CancelTaskRunService } from "./cancelTaskRun.server"; export class CancelTaskAttemptDependenciesService extends BaseService { diff --git a/apps/webapp/app/v3/services/cancelTaskRunV1.server.ts b/apps/webapp/app/v3/services/cancelTaskRunV1.server.ts index eb366834c01..819b447c90c 100644 --- a/apps/webapp/app/v3/services/cancelTaskRunV1.server.ts +++ b/apps/webapp/app/v3/services/cancelTaskRunV1.server.ts @@ -7,7 +7,7 @@ import { CANCELLABLE_ATTEMPT_STATUSES, isCancellableRunStatus } from "../taskSta import { BaseService } from "./baseService.server"; import { CancelAttemptService } from "./cancelAttempt.server"; import { CancelTaskAttemptDependenciesService } from "./cancelTaskAttemptDependencies.server"; -import { CancelableTaskRun } from "./cancelTaskRun.server"; +import type { CancelableTaskRun } from "./cancelTaskRun.server"; import { FinalizeTaskRunService } from "./finalizeTaskRun.server"; import { tryCatch } from "@trigger.dev/core/utils"; import { getEventRepositoryForStore } from "../eventRepository/index.server"; diff --git a/apps/webapp/app/v3/services/changeCurrentDeployment.server.ts b/apps/webapp/app/v3/services/changeCurrentDeployment.server.ts index 693e893e854..636a86c450f 100644 --- a/apps/webapp/app/v3/services/changeCurrentDeployment.server.ts +++ b/apps/webapp/app/v3/services/changeCurrentDeployment.server.ts @@ -1,6 +1,6 @@ import { BackgroundWorkerMetadata, tryCatch } from "@trigger.dev/core/v3"; import { CURRENT_DEPLOYMENT_LABEL } from "@trigger.dev/core/v3/isomorphic"; -import { PrismaClientOrTransaction, WorkerDeployment } from "@trigger.dev/database"; +import type { PrismaClientOrTransaction, WorkerDeployment } from "@trigger.dev/database"; import { logger } from "~/services/logger.server"; import { syncTaskIdentifiers } from "~/services/taskIdentifierRegistry.server"; import { diff --git a/apps/webapp/app/v3/services/checkSchedule.server.ts b/apps/webapp/app/v3/services/checkSchedule.server.ts index 7c85641c404..e6429a2adc1 100644 --- a/apps/webapp/app/v3/services/checkSchedule.server.ts +++ b/apps/webapp/app/v3/services/checkSchedule.server.ts @@ -4,7 +4,7 @@ import { BaseService, ServiceValidationError } from "./baseService.server"; import { getLimit } from "~/services/platform.v3.server"; import { getTimezones } from "~/utils/timezones.server"; import { env } from "~/env.server"; -import { type PrismaClientOrTransaction, type RuntimeEnvironmentType } from "@trigger.dev/database"; +import { type PrismaClientOrTransaction } from "@trigger.dev/database"; type Schedule = { cron: string; diff --git a/apps/webapp/app/v3/services/clickhousePendingVersionLookup.server.ts b/apps/webapp/app/v3/services/clickhousePendingVersionLookup.server.ts index 2cdde550e9c..fde0e9bcaab 100644 --- a/apps/webapp/app/v3/services/clickhousePendingVersionLookup.server.ts +++ b/apps/webapp/app/v3/services/clickhousePendingVersionLookup.server.ts @@ -3,7 +3,7 @@ import { type PendingVersionRunIdLookupOptions, type PendingVersionRunIdLookupResult, } from "@internal/run-engine"; -import { Logger } from "@trigger.dev/core/logger"; +import type { Logger } from "@trigger.dev/core/logger"; import type { ClickhouseFactory } from "~/services/clickhouse/clickhouseFactory.server"; export type ClickhousePendingVersionLookupOptions = { diff --git a/apps/webapp/app/v3/services/completeAttempt.server.ts b/apps/webapp/app/v3/services/completeAttempt.server.ts index dc51150a8e1..96b6cabc629 100644 --- a/apps/webapp/app/v3/services/completeAttempt.server.ts +++ b/apps/webapp/app/v3/services/completeAttempt.server.ts @@ -1,31 +1,34 @@ import { tryCatch } from "@trigger.dev/core/utils"; -import { +import type { MachinePresetName, - TaskRunContext, - TaskRunErrorCodes, TaskRunExecution, TaskRunExecutionResult, TaskRunExecutionRetry, TaskRunFailedExecutionResult, TaskRunSuccessfulExecutionResult, V3TaskRunExecution, +} from "@trigger.dev/core/v3"; +import { + TaskRunContext, + TaskRunErrorCodes, flattenAttributes, isOOMRunError, sanitizeError, shouldRetryError, taskRunErrorEnhancer, } from "@trigger.dev/core/v3"; -import { TaskRun } from "@trigger.dev/database"; +import type { TaskRun } from "@trigger.dev/database"; import { MAX_TASK_RUN_ATTEMPTS } from "~/consts"; -import { PrismaClientOrTransaction } from "~/db.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; import { env } from "~/env.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { marqs } from "~/v3/marqs/index.server"; import { FailedTaskRunRetryHelper } from "../failedTaskRun.server"; import { socketIo } from "../handleSocketIo.server"; import { createExceptionPropertiesFromError } from "../eventRepository/common.server"; -import { FAILED_RUN_STATUSES, isFinalAttemptStatus, isFinalRunStatus } from "../taskStatus"; +import type { FAILED_RUN_STATUSES } from "../taskStatus"; +import { isFinalAttemptStatus, isFinalRunStatus } from "../taskStatus"; import { BaseService } from "./baseService.server"; import { CancelAttemptService } from "./cancelAttempt.server"; import { CreateCheckpointService } from "./createCheckpoint.server"; diff --git a/apps/webapp/app/v3/services/computeTemplateCreation.server.ts b/apps/webapp/app/v3/services/computeTemplateCreation.server.ts index 7bc03e9d508..5f561c33632 100644 --- a/apps/webapp/app/v3/services/computeTemplateCreation.server.ts +++ b/apps/webapp/app/v3/services/computeTemplateCreation.server.ts @@ -1,6 +1,6 @@ import { ComputeClient, stripImageDigest } from "@internal/compute"; import type { TemplateCreateResultEntry } from "@internal/compute"; -import { MachinePresetName } from "@trigger.dev/core/v3"; +import type { MachinePresetName } from "@trigger.dev/core/v3"; import { machinePresetFromName } from "~/v3/machinePresets.server"; import { env } from "~/env.server"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/v3/services/concurrencySystem.server.ts b/apps/webapp/app/v3/services/concurrencySystem.server.ts index 1a34fd61f28..488f38ce279 100644 --- a/apps/webapp/app/v3/services/concurrencySystem.server.ts +++ b/apps/webapp/app/v3/services/concurrencySystem.server.ts @@ -1,7 +1,7 @@ -import { TaskQueue, User } from "@trigger.dev/database"; +import type { TaskQueue, User } from "@trigger.dev/database"; import { errAsync, fromPromise, okAsync } from "neverthrow"; -import { PrismaClientOrTransaction } from "~/db.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { removeQueueConcurrencyLimits, updateQueueConcurrencyLimits } from "../runQueue.server"; import { engine } from "../runEngine.server"; diff --git a/apps/webapp/app/v3/services/crashTaskRun.server.ts b/apps/webapp/app/v3/services/crashTaskRun.server.ts index bff4b8d65b1..94f38e534b3 100644 --- a/apps/webapp/app/v3/services/crashTaskRun.server.ts +++ b/apps/webapp/app/v3/services/crashTaskRun.server.ts @@ -1,7 +1,8 @@ import { tryCatch } from "@trigger.dev/core/utils"; -import { sanitizeError, TaskRunErrorCodes, TaskRunInternalError } from "@trigger.dev/core/v3"; -import { TaskRun, TaskRunAttempt } from "@trigger.dev/database"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { TaskRunInternalError } from "@trigger.dev/core/v3"; +import { sanitizeError, TaskRunErrorCodes } from "@trigger.dev/core/v3"; +import type { TaskRun, TaskRunAttempt } from "@trigger.dev/database"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { FailedTaskRunRetryHelper } from "../failedTaskRun.server"; import { CRASHABLE_ATTEMPT_STATUSES, isCrashableRunStatus } from "../taskStatus"; diff --git a/apps/webapp/app/v3/services/createBackgroundWorker.server.ts b/apps/webapp/app/v3/services/createBackgroundWorker.server.ts index b5b6207a74c..43551e849f0 100644 --- a/apps/webapp/app/v3/services/createBackgroundWorker.server.ts +++ b/apps/webapp/app/v3/services/createBackgroundWorker.server.ts @@ -1,4 +1,4 @@ -import { +import type { BackgroundWorkerMetadata, BackgroundWorkerSourceFileMetadata, CreateBackgroundWorkerRequestBody, @@ -6,12 +6,14 @@ import { QueueManifest, TaskResource, } from "@trigger.dev/core/v3"; +import { tryCatch } from "@trigger.dev/core/v3"; import { BackgroundWorkerId, stringifyDuration } from "@trigger.dev/core/v3/isomorphic"; import type { BackgroundWorker, TaskQueue, TaskQueueType } from "@trigger.dev/database"; import cronstrue from "cronstrue"; -import { $transaction, Prisma, PrismaClientOrTransaction } from "~/db.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; +import { $transaction, Prisma } from "~/db.server"; import { sanitizeQueueName } from "~/models/taskQueue.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { syncTaskIdentifiers } from "~/services/taskIdentifierRegistry.server"; import { @@ -20,22 +22,21 @@ import { } from "~/services/taskMetadataCache.server"; import { taskMetadataCacheInstance } from "~/services/taskMetadataCacheInstance.server"; import { generateFriendlyId } from "../friendlyIdentifiers"; +import { engine } from "../runEngine.server"; import { removeQueueConcurrencyLimits, updateEnvConcurrencyLimits, updateQueueConcurrencyLimits, } from "../runQueue.server"; +import { scheduleEngine } from "../scheduleEngine.server"; import { calculateNextBuildVersion } from "../utils/calculateNextBuildVersion"; import { clampMaxDuration } from "../utils/maxDuration"; import { BaseService, ServiceValidationError } from "./baseService.server"; import { CheckScheduleService } from "./checkSchedule.server"; import { projectPubSub } from "./projectPubSub.server"; -import { tryCatch } from "@trigger.dev/core/v3"; -import { engine } from "../runEngine.server"; -import { scheduleEngine } from "../scheduleEngine.server"; -import { stripBackgroundWorkerMetadataForStorage } from "./stripBackgroundWorkerMetadataForStorage.server"; import { assertNoDuplicateTaskIds } from "./duplicateTaskIds.server"; +import { stripBackgroundWorkerMetadataForStorage } from "./stripBackgroundWorkerMetadataForStorage.server"; export { stripBackgroundWorkerMetadataForStorage }; export class CreateBackgroundWorkerService extends BaseService { diff --git a/apps/webapp/app/v3/services/createCheckpoint.server.ts b/apps/webapp/app/v3/services/createCheckpoint.server.ts index 761f3a5185a..e9e4e3d5560 100644 --- a/apps/webapp/app/v3/services/createCheckpoint.server.ts +++ b/apps/webapp/app/v3/services/createCheckpoint.server.ts @@ -1,4 +1,4 @@ -import { CoordinatorToPlatformMessages, ManualCheckpointMetadata } from "@trigger.dev/core/v3"; +import type { CoordinatorToPlatformMessages, ManualCheckpointMetadata } from "@trigger.dev/core/v3"; import type { InferSocketMessageSchema } from "@trigger.dev/core/v3/zodSocket"; import type { Checkpoint, CheckpointRestoreEvent } from "@trigger.dev/database"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/v3/services/createCheckpointRestoreEvent.server.ts b/apps/webapp/app/v3/services/createCheckpointRestoreEvent.server.ts index 59c37947178..70cce53dbca 100644 --- a/apps/webapp/app/v3/services/createCheckpointRestoreEvent.server.ts +++ b/apps/webapp/app/v3/services/createCheckpointRestoreEvent.server.ts @@ -1,13 +1,13 @@ +import { ManualCheckpointMetadata } from "@trigger.dev/core/v3"; import type { Checkpoint, CheckpointRestoreEvent, CheckpointRestoreEventType, } from "@trigger.dev/database"; +import { isTaskRunAttemptStatus, isTaskRunStatus } from "~/database-types"; import { logger } from "~/services/logger.server"; -import { BaseService } from "./baseService.server"; -import { ManualCheckpointMetadata } from "@trigger.dev/core/v3"; -import { isTaskRunAttemptStatus, isTaskRunStatus, TaskRunAttemptStatus } from "~/database-types"; import { safeJsonParse } from "~/utils/json"; +import { BaseService } from "./baseService.server"; interface CheckpointRestoreEventCallParams { checkpointId: string; diff --git a/apps/webapp/app/v3/services/createDeploymentBackgroundWorkerV3.server.ts b/apps/webapp/app/v3/services/createDeploymentBackgroundWorkerV3.server.ts index d8f13227d78..17b65efd2f3 100644 --- a/apps/webapp/app/v3/services/createDeploymentBackgroundWorkerV3.server.ts +++ b/apps/webapp/app/v3/services/createDeploymentBackgroundWorkerV3.server.ts @@ -1,6 +1,7 @@ -import { CreateBackgroundWorkerRequestBody, tryCatch } from "@trigger.dev/core/v3"; +import type { CreateBackgroundWorkerRequestBody } from "@trigger.dev/core/v3"; +import { tryCatch } from "@trigger.dev/core/v3"; import type { BackgroundWorker, PrismaClientOrTransaction } from "@trigger.dev/database"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { syncTaskIdentifiers } from "~/services/taskIdentifierRegistry.server"; import { type TaskMetadataCache } from "~/services/taskMetadataCache.server"; diff --git a/apps/webapp/app/v3/services/createDeploymentBackgroundWorkerV4.server.ts b/apps/webapp/app/v3/services/createDeploymentBackgroundWorkerV4.server.ts index 9ed6c3518a8..a53dee42353 100644 --- a/apps/webapp/app/v3/services/createDeploymentBackgroundWorkerV4.server.ts +++ b/apps/webapp/app/v3/services/createDeploymentBackgroundWorkerV4.server.ts @@ -1,10 +1,11 @@ -import { CreateBackgroundWorkerRequestBody, logger, tryCatch } from "@trigger.dev/core/v3"; +import type { CreateBackgroundWorkerRequestBody } from "@trigger.dev/core/v3"; +import { logger, tryCatch } from "@trigger.dev/core/v3"; import type { BackgroundWorker, PrismaClientOrTransaction, WorkerDeployment, } from "@trigger.dev/database"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { type TaskMetadataCache } from "~/services/taskMetadataCache.server"; import { taskMetadataCacheInstance } from "~/services/taskMetadataCacheInstance.server"; import { BaseService, ServiceValidationError } from "./baseService.server"; diff --git a/apps/webapp/app/v3/services/createOrgIntegration.server.ts b/apps/webapp/app/v3/services/createOrgIntegration.server.ts index 4f33a58fe83..e6f0ded6b14 100644 --- a/apps/webapp/app/v3/services/createOrgIntegration.server.ts +++ b/apps/webapp/app/v3/services/createOrgIntegration.server.ts @@ -1,4 +1,4 @@ -import { OrganizationIntegration } from "@trigger.dev/database"; +import type { OrganizationIntegration } from "@trigger.dev/database"; import { BaseService } from "./baseService.server"; import { OrgIntegrationRepository } from "~/models/orgIntegration.server"; diff --git a/apps/webapp/app/v3/services/createTaskRunAttempt.server.ts b/apps/webapp/app/v3/services/createTaskRunAttempt.server.ts index 0c0503b35e0..cb66166d104 100644 --- a/apps/webapp/app/v3/services/createTaskRunAttempt.server.ts +++ b/apps/webapp/app/v3/services/createTaskRunAttempt.server.ts @@ -1,9 +1,11 @@ -import { parsePacket, V3TaskRunExecution } from "@trigger.dev/core/v3"; -import { TaskRun, TaskRunAttempt } from "@trigger.dev/database"; +import type { V3TaskRunExecution } from "@trigger.dev/core/v3"; +import { parsePacket } from "@trigger.dev/core/v3"; +import type { TaskRun, TaskRunAttempt } from "@trigger.dev/database"; import { MAX_TASK_RUN_ATTEMPTS } from "~/consts"; -import { $transaction, prisma, PrismaClientOrTransaction } from "~/db.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; +import { $transaction, prisma } from "~/db.server"; import { findQueueInEnvironment } from "~/models/taskQueue.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { reportInvocationUsage } from "~/services/platform.v3.server"; import { generateFriendlyId } from "../friendlyIdentifiers"; diff --git a/apps/webapp/app/v3/services/enqueueRun.server.ts b/apps/webapp/app/v3/services/enqueueRun.server.ts index cb091d70d9f..0cea6638e12 100644 --- a/apps/webapp/app/v3/services/enqueueRun.server.ts +++ b/apps/webapp/app/v3/services/enqueueRun.server.ts @@ -1,6 +1,7 @@ -import { TaskRunError, TaskRunErrorCodes } from "@trigger.dev/core/v3/schemas"; -import { TaskRun } from "@trigger.dev/database"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { TaskRunError } from "@trigger.dev/core/v3/schemas"; +import { TaskRunErrorCodes } from "@trigger.dev/core/v3/schemas"; +import type { TaskRun } from "@trigger.dev/database"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { marqs } from "../marqs/index.server"; export type EnqueueRunOptions = { diff --git a/apps/webapp/app/v3/services/executeTasksWaitingForDeploy.ts b/apps/webapp/app/v3/services/executeTasksWaitingForDeploy.ts index a77727c9242..b6c25db43ed 100644 --- a/apps/webapp/app/v3/services/executeTasksWaitingForDeploy.ts +++ b/apps/webapp/app/v3/services/executeTasksWaitingForDeploy.ts @@ -1,8 +1,7 @@ -import { PrismaClientOrTransaction } from "~/db.server"; import { env } from "~/env.server"; import { logger } from "~/services/logger.server"; -import { commonWorker } from "../commonWorker.server"; import { marqs } from "~/v3/marqs/index.server"; +import { commonWorker } from "../commonWorker.server"; import { BaseService } from "./baseService.server"; export class ExecuteTasksWaitingForDeployService extends BaseService { diff --git a/apps/webapp/app/v3/services/expireEnqueuedRun.server.ts b/apps/webapp/app/v3/services/expireEnqueuedRun.server.ts index 27a8e1e8b09..809c1bb49e3 100644 --- a/apps/webapp/app/v3/services/expireEnqueuedRun.server.ts +++ b/apps/webapp/app/v3/services/expireEnqueuedRun.server.ts @@ -1,4 +1,4 @@ -import { PrismaClientOrTransaction } from "~/db.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; import { logger } from "~/services/logger.server"; import { commonWorker } from "../commonWorker.server"; import { BaseService } from "./baseService.server"; diff --git a/apps/webapp/app/v3/services/finalizeTaskRun.server.ts b/apps/webapp/app/v3/services/finalizeTaskRun.server.ts index b770ceef177..d6d35d0e4ca 100644 --- a/apps/webapp/app/v3/services/finalizeTaskRun.server.ts +++ b/apps/webapp/app/v3/services/finalizeTaskRun.server.ts @@ -1,14 +1,14 @@ -import { FlushedRunMetadata, sanitizeError, TaskRunError } from "@trigger.dev/core/v3"; +import { type FlushedRunMetadata, type TaskRunError, sanitizeError } from "@trigger.dev/core/v3"; import { type Prisma, type TaskRun } from "@trigger.dev/database"; import { findQueueInEnvironment } from "~/models/taskQueue.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { updateMetadataService } from "~/services/metadata/updateMetadataInstance.server"; import { marqs } from "~/v3/marqs/index.server"; import { generateFriendlyId } from "../friendlyIdentifiers"; import { socketIo } from "../handleSocketIo.server"; import { - FINAL_ATTEMPT_STATUSES, + type FINAL_ATTEMPT_STATUSES, isFailedRunStatus, isFatalRunStatus, type FINAL_RUN_STATUSES, diff --git a/apps/webapp/app/v3/services/initializeDeployment.server.ts b/apps/webapp/app/v3/services/initializeDeployment.server.ts index 2f51fe79c73..1eef2e12bcd 100644 --- a/apps/webapp/app/v3/services/initializeDeployment.server.ts +++ b/apps/webapp/app/v3/services/initializeDeployment.server.ts @@ -1,5 +1,5 @@ import { - BuildServerMetadata, + type BuildServerMetadata, type InitializeDeploymentRequestBody, type ExternalBuildData, } from "@trigger.dev/core/v3"; diff --git a/apps/webapp/app/v3/services/pauseEnvironment.server.ts b/apps/webapp/app/v3/services/pauseEnvironment.server.ts index 6bcaffb23e1..4311edbee31 100644 --- a/apps/webapp/app/v3/services/pauseEnvironment.server.ts +++ b/apps/webapp/app/v3/services/pauseEnvironment.server.ts @@ -4,7 +4,7 @@ import { logger } from "~/services/logger.server"; import { getManualPauseEnvironmentResult } from "~/v3/services/billingLimit/manualPauseEnvironmentGuard.server"; import { updateEnvConcurrencyLimits } from "../runQueue.server"; import { WithRunEngine } from "./baseService.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; export type PauseStatus = "paused" | "resumed"; diff --git a/apps/webapp/app/v3/services/pauseQueue.server.ts b/apps/webapp/app/v3/services/pauseQueue.server.ts index b5ba5f399ad..aa3e21f9727 100644 --- a/apps/webapp/app/v3/services/pauseQueue.server.ts +++ b/apps/webapp/app/v3/services/pauseQueue.server.ts @@ -1,4 +1,4 @@ -import { QueueItem, type RetrieveQueueParam } from "@trigger.dev/core/v3"; +import { type QueueItem, type RetrieveQueueParam } from "@trigger.dev/core/v3"; import { getQueue, toQueueItem } from "~/presenters/v3/QueueRetrievePresenter.server"; import { type AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; diff --git a/apps/webapp/app/v3/services/projectPubSub.server.ts b/apps/webapp/app/v3/services/projectPubSub.server.ts index b39b70e5775..b3c7a6b769c 100644 --- a/apps/webapp/app/v3/services/projectPubSub.server.ts +++ b/apps/webapp/app/v3/services/projectPubSub.server.ts @@ -1,6 +1,7 @@ import { z } from "zod"; import { singleton } from "~/utils/singleton"; -import { ZodPubSub, ZodSubscriber } from "../utils/zodPubSub.server"; +import type { ZodSubscriber } from "../utils/zodPubSub.server"; +import { ZodPubSub } from "../utils/zodPubSub.server"; import { env } from "~/env.server"; import { Gauge } from "prom-client"; import { metricsRegister } from "~/metrics.server"; diff --git a/apps/webapp/app/v3/services/rescheduleTaskRun.server.ts b/apps/webapp/app/v3/services/rescheduleTaskRun.server.ts index 707473167ea..6f8e6d895fa 100644 --- a/apps/webapp/app/v3/services/rescheduleTaskRun.server.ts +++ b/apps/webapp/app/v3/services/rescheduleTaskRun.server.ts @@ -1,5 +1,5 @@ -import { RescheduleRunRequestBody } from "@trigger.dev/core/v3"; -import { TaskRun } from "@trigger.dev/database"; +import type { RescheduleRunRequestBody } from "@trigger.dev/core/v3"; +import type { TaskRun } from "@trigger.dev/database"; import { parseDelay } from "~/utils/delays"; import { BaseService, ServiceValidationError } from "./baseService.server"; import { EnqueueDelayedRunService } from "./enqueueDelayedRun.server"; diff --git a/apps/webapp/app/v3/services/resumeAttempt.server.ts b/apps/webapp/app/v3/services/resumeAttempt.server.ts index 3dcc1cf6e4c..0390839986b 100644 --- a/apps/webapp/app/v3/services/resumeAttempt.server.ts +++ b/apps/webapp/app/v3/services/resumeAttempt.server.ts @@ -1,16 +1,16 @@ -import { +import type { CoordinatorToPlatformMessages, TaskRunExecution, TaskRunExecutionResult, } from "@trigger.dev/core/v3"; import type { InferSocketMessageSchema } from "@trigger.dev/core/v3/zodSocket"; +import type { Prisma, TaskRunAttempt } from "@trigger.dev/database"; import { logger } from "~/services/logger.server"; import { marqs } from "~/v3/marqs/index.server"; import { socketIo } from "../handleSocketIo.server"; import { sharedQueueTasks } from "../marqs/sharedQueueConsumer.server"; +import { FINAL_ATTEMPT_STATUSES, isFinalRunStatus } from "../taskStatus"; import { BaseService } from "./baseService.server"; -import { Prisma, TaskRunAttempt } from "@trigger.dev/database"; -import { FINAL_ATTEMPT_STATUSES, FINAL_RUN_STATUSES, isFinalRunStatus } from "../taskStatus"; export class ResumeAttemptService extends BaseService { private _logger = logger; diff --git a/apps/webapp/app/v3/services/resumeBatchRun.server.ts b/apps/webapp/app/v3/services/resumeBatchRun.server.ts index a886d12d607..fb3e24d1340 100644 --- a/apps/webapp/app/v3/services/resumeBatchRun.server.ts +++ b/apps/webapp/app/v3/services/resumeBatchRun.server.ts @@ -1,9 +1,9 @@ -import { PrismaClientOrTransaction } from "~/db.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; import { commonWorker } from "../commonWorker.server"; import { marqs } from "~/v3/marqs/index.server"; import { BaseService } from "./baseService.server"; import { logger } from "~/services/logger.server"; -import { BatchTaskRun } from "@trigger.dev/database"; +import type { BatchTaskRun } from "@trigger.dev/database"; import { workerQueue } from "~/services/worker.server"; import { isV3Disabled } from "../engineDeprecation.server"; diff --git a/apps/webapp/app/v3/services/resumeDependentParents.server.ts b/apps/webapp/app/v3/services/resumeDependentParents.server.ts index 0de5baa451a..e476d18d6b2 100644 --- a/apps/webapp/app/v3/services/resumeDependentParents.server.ts +++ b/apps/webapp/app/v3/services/resumeDependentParents.server.ts @@ -1,4 +1,4 @@ -import { Prisma } from "@trigger.dev/database"; +import type { Prisma } from "@trigger.dev/database"; import { logger } from "~/services/logger.server"; import { isFinalAttemptStatus, isFinalRunStatus } from "../taskStatus"; import { BaseService } from "./baseService.server"; diff --git a/apps/webapp/app/v3/services/resumeTaskDependency.server.ts b/apps/webapp/app/v3/services/resumeTaskDependency.server.ts index 70f6e1e3cd2..83c2bb9a5d5 100644 --- a/apps/webapp/app/v3/services/resumeTaskDependency.server.ts +++ b/apps/webapp/app/v3/services/resumeTaskDependency.server.ts @@ -1,4 +1,4 @@ -import { TaskRunDependency } from "@trigger.dev/database"; +import type { TaskRunDependency } from "@trigger.dev/database"; import { logger } from "~/services/logger.server"; import { marqs } from "~/v3/marqs/index.server"; import { commonWorker } from "../commonWorker.server"; diff --git a/apps/webapp/app/v3/services/setConcurrencyAddOn.server.ts b/apps/webapp/app/v3/services/setConcurrencyAddOn.server.ts index 66ac7cdf19c..6daf970bbd6 100644 --- a/apps/webapp/app/v3/services/setConcurrencyAddOn.server.ts +++ b/apps/webapp/app/v3/services/setConcurrencyAddOn.server.ts @@ -100,7 +100,7 @@ export class SetConcurrencyAddOnService extends BaseService { where: { id: organizationId }, }); - const [error, result] = await tryCatch( + const [error, _result] = await tryCatch( sendToPlain({ userId, email: user.email, diff --git a/apps/webapp/app/v3/services/stripBackgroundWorkerMetadataForStorage.server.ts b/apps/webapp/app/v3/services/stripBackgroundWorkerMetadataForStorage.server.ts index a740bd2c1d6..e6386b9da54 100644 --- a/apps/webapp/app/v3/services/stripBackgroundWorkerMetadataForStorage.server.ts +++ b/apps/webapp/app/v3/services/stripBackgroundWorkerMetadataForStorage.server.ts @@ -1,5 +1,5 @@ -import { BackgroundWorkerMetadata } from "@trigger.dev/core/v3"; -import { Prisma } from "@trigger.dev/database"; +import type { BackgroundWorkerMetadata } from "@trigger.dev/core/v3"; +import type { Prisma } from "@trigger.dev/database"; /** * Strip BackgroundWorkerMetadata down to the slice that's actually read after diff --git a/apps/webapp/app/v3/services/tracePubSub.server.ts b/apps/webapp/app/v3/services/tracePubSub.server.ts index 2b6082f86f9..21871918e05 100644 --- a/apps/webapp/app/v3/services/tracePubSub.server.ts +++ b/apps/webapp/app/v3/services/tracePubSub.server.ts @@ -1,4 +1,5 @@ -import { createRedisClient, RedisClient, RedisWithClusterOptions } from "~/redis.server"; +import type { RedisClient, RedisWithClusterOptions } from "~/redis.server"; +import { createRedisClient } from "~/redis.server"; import { EventEmitter } from "node:events"; import { env } from "~/env.server"; import { singleton } from "~/utils/singleton"; diff --git a/apps/webapp/app/v3/services/triggerTask.server.ts b/apps/webapp/app/v3/services/triggerTask.server.ts index c60fb0559dc..354745d40b8 100644 --- a/apps/webapp/app/v3/services/triggerTask.server.ts +++ b/apps/webapp/app/v3/services/triggerTask.server.ts @@ -1,5 +1,5 @@ -import { TriggerTaskRequestBody } from "@trigger.dev/core/v3"; -import { RunEngineVersion, TaskRun } from "@trigger.dev/database"; +import type { TriggerTaskRequestBody } from "@trigger.dev/core/v3"; +import type { RunEngineVersion, TaskRun } from "@trigger.dev/database"; import { env } from "~/env.server"; import { IdempotencyKeyConcern } from "~/runEngine/concerns/idempotencyKeys.server"; import { DefaultPayloadProcessor } from "~/runEngine/concerns/payloads.server"; @@ -7,7 +7,7 @@ import { DefaultQueueManager } from "~/runEngine/concerns/queues.server"; import { DefaultTraceEventsConcern } from "~/runEngine/concerns/traceEvents.server"; import { RunEngineTriggerTaskService } from "~/runEngine/services/triggerTask.server"; import { DefaultTriggerTaskValidator } from "~/runEngine/validators/triggerTaskValidator"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { determineEngineVersion } from "../engineVersion.server"; import { tracer } from "../tracer.server"; import { isV3Disabled, V3_TRIGGER_DEPRECATION_MESSAGE } from "../engineDeprecation.server"; diff --git a/apps/webapp/app/v3/services/triggerTaskV1.server.ts b/apps/webapp/app/v3/services/triggerTaskV1.server.ts index 5ccee9e5c5c..927ddeee6f9 100644 --- a/apps/webapp/app/v3/services/triggerTaskV1.server.ts +++ b/apps/webapp/app/v3/services/triggerTaskV1.server.ts @@ -1,9 +1,8 @@ +import type { IOPacket, TriggerTaskRequestBody } from "@trigger.dev/core/v3"; import { - IOPacket, packetRequiresOffloading, taskRunErrorEnhancer, taskRunErrorToString, - TriggerTaskRequestBody, } from "@trigger.dev/core/v3"; import { parseNaturalLanguageDuration, @@ -14,7 +13,7 @@ import { Prisma } from "@trigger.dev/database"; import { z } from "zod"; import { env } from "~/env.server"; import { MAX_TAGS_PER_RUN } from "~/models/taskRunTag.server"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { autoIncrementCounter } from "~/services/autoIncrementCounter.server"; import { logger } from "~/services/logger.server"; import { getEntitlement } from "~/services/platform.v3.server"; @@ -35,12 +34,8 @@ import { BaseService, ServiceValidationError } from "./baseService.server"; import { EnqueueDelayedRunService } from "./enqueueDelayedRun.server"; import { enqueueRun } from "./enqueueRun.server"; import { ExpireEnqueuedRunService } from "./expireEnqueuedRun.server"; -import { - MAX_ATTEMPTS, - OutOfEntitlementError, - TriggerTaskServiceOptions, - TriggerTaskServiceResult, -} from "./triggerTask.server"; +import type { TriggerTaskServiceOptions, TriggerTaskServiceResult } from "./triggerTask.server"; +import { MAX_ATTEMPTS, OutOfEntitlementError } from "./triggerTask.server"; // This is here for backwords compatibility for v3 users const QueueOptions = z.object({ @@ -727,7 +722,7 @@ export class TriggerTaskServiceV1 extends BaseService { return packet; } - const { needsOffloading, size } = packetRequiresOffloading( + const { needsOffloading, size: _size } = packetRequiresOffloading( packet, env.TASK_PAYLOAD_OFFLOAD_THRESHOLD ); diff --git a/apps/webapp/app/v3/services/updateFatalRunError.server.ts b/apps/webapp/app/v3/services/updateFatalRunError.server.ts index dcf2488f273..ffb816dd762 100644 --- a/apps/webapp/app/v3/services/updateFatalRunError.server.ts +++ b/apps/webapp/app/v3/services/updateFatalRunError.server.ts @@ -1,7 +1,8 @@ import { BaseService } from "./baseService.server"; import { logger } from "~/services/logger.server"; import { isFatalRunStatus } from "../taskStatus"; -import { TaskRunErrorCodes, TaskRunInternalError } from "@trigger.dev/core/v3"; +import type { TaskRunInternalError } from "@trigger.dev/core/v3"; +import { TaskRunErrorCodes } from "@trigger.dev/core/v3"; import { FinalizeTaskRunService } from "./finalizeTaskRun.server"; export type UpdateFatalRunErrorServiceOptions = { diff --git a/apps/webapp/app/v3/services/worker/workerGroupService.server.ts b/apps/webapp/app/v3/services/worker/workerGroupService.server.ts index fc280e81652..32c3e3bb1b7 100644 --- a/apps/webapp/app/v3/services/worker/workerGroupService.server.ts +++ b/apps/webapp/app/v3/services/worker/workerGroupService.server.ts @@ -1,4 +1,5 @@ -import { WorkerInstanceGroup, WorkerInstanceGroupType, WorkloadType } from "@trigger.dev/database"; +import type { WorkerInstanceGroup, WorkloadType } from "@trigger.dev/database"; +import { WorkerInstanceGroupType } from "@trigger.dev/database"; import { WithRunEngine } from "../baseService.server"; import { WorkerGroupTokenService } from "./workerGroupTokenService.server"; import { logger } from "~/services/logger.server"; @@ -66,7 +67,7 @@ export class WorkerGroupService extends WithRunEngine { }); if (workerGroup.type === WorkerInstanceGroupType.MANAGED) { - const managedCount = await this._prisma.workerInstanceGroup.count({ + const _managedCount = await this._prisma.workerInstanceGroup.count({ where: { type: WorkerInstanceGroupType.MANAGED, }, diff --git a/apps/webapp/app/v3/services/worker/workerGroupTokenService.server.ts b/apps/webapp/app/v3/services/worker/workerGroupTokenService.server.ts index da1caa866e3..7749ed266e0 100644 --- a/apps/webapp/app/v3/services/worker/workerGroupTokenService.server.ts +++ b/apps/webapp/app/v3/services/worker/workerGroupTokenService.server.ts @@ -4,40 +4,37 @@ import { DefaultStatefulContext, Namespace, } from "@internal/cache"; -import { +import type { CheckpointInput, CompleteRunAttemptResult, DequeuedMessage, ExecutionResult, MachinePreset, - SemanticInternalAttributes, StartRunAttemptResult, TaskRunExecutionResult, } from "@trigger.dev/core/v3"; +import { SemanticInternalAttributes } from "@trigger.dev/core/v3"; import { fromFriendlyId } from "@trigger.dev/core/v3/isomorphic"; import { WORKER_HEADERS, type WorkerQueueClass } from "@trigger.dev/core/v3/workers"; -import { - Prisma, - RuntimeEnvironment, - WorkerInstanceGroup, - WorkerInstanceGroupType, -} from "@trigger.dev/database"; +import type { RuntimeEnvironment, WorkerInstanceGroup } from "@trigger.dev/database"; +import { Prisma, WorkerInstanceGroupType } from "@trigger.dev/database"; import { createHash, timingSafeEqual } from "crypto"; import { customAlphabet } from "nanoid"; import { z } from "zod"; import { env } from "~/env.server"; +import { + isWorkerQueueDequeueDisabled, + recordBlockedDequeue, +} from "~/runEngine/concerns/dequeueGate.server"; +import { workerQueueForClass } from "~/runEngine/concerns/workerQueueSplit.server"; import { generateJWTTokenForEnvironment } from "~/services/apiAuth.server"; import { logger } from "~/services/logger.server"; import { defaultMachine } from "~/services/platform.v3.server"; import { singleton } from "~/utils/singleton"; import { resolveVariablesForEnvironment } from "~/v3/environmentVariables/environmentVariablesRepository.server"; import { machinePresetFromName } from "~/v3/machinePresets.server"; -import { workerQueueForClass } from "~/runEngine/concerns/workerQueueSplit.server"; -import { - isWorkerQueueDequeueDisabled, - recordBlockedDequeue, -} from "~/runEngine/concerns/dequeueGate.server"; -import { WithRunEngine, WithRunEngineOptions } from "../baseService.server"; +import type { WithRunEngineOptions } from "../baseService.server"; +import { WithRunEngine } from "../baseService.server"; const authenticatedWorkerInstanceCache = singleton( "authenticatedWorkerInstanceCache", @@ -308,7 +305,7 @@ export class WorkerGroupTokenService extends WithRunEngine { }); return existingWorkerInstance; - } catch (error) { + } catch (_error) { logger.error("[WorkerGroupTokenService] Failed to find worker instance", { workerGroup, workerInstance, @@ -336,10 +333,6 @@ export class WorkerGroupTokenService extends WithRunEngine { export const WorkerInstanceEnv = z.enum(["dev", "staging", "prod"]).default("prod"); export type WorkerInstanceEnv = z.infer; -type EnvironmentWithParent = RuntimeEnvironment & { - parentEnvironment?: RuntimeEnvironment | null; -}; - export type AuthenticatedWorkerInstanceOptions = WithRunEngineOptions<{ type: WorkerInstanceGroupType; name: string; diff --git a/apps/webapp/app/v3/sharedSocketConnection.ts b/apps/webapp/app/v3/sharedSocketConnection.ts index 2e644b7f277..445f0900bb6 100644 --- a/apps/webapp/app/v3/sharedSocketConnection.ts +++ b/apps/webapp/app/v3/sharedSocketConnection.ts @@ -1,11 +1,7 @@ -import { trace } from "@opentelemetry/api"; import { clientWebsocketMessages, serverWebsocketMessages } from "@trigger.dev/core/v3"; import type { StructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger"; -import { - MessageCatalogToSocketIoEvents, - ZodMessageHandler, - ZodMessageSender, -} from "@trigger.dev/core/v3/zodMessageHandler"; +import type { MessageCatalogToSocketIoEvents } from "@trigger.dev/core/v3/zodMessageHandler"; +import { ZodMessageHandler, ZodMessageSender } from "@trigger.dev/core/v3/zodMessageHandler"; import { Evt } from "evt"; import { randomUUID } from "node:crypto"; import type { DisconnectReason, Namespace, Socket } from "socket.io"; diff --git a/apps/webapp/app/v3/taskEventStore.server.ts b/apps/webapp/app/v3/taskEventStore.server.ts index 093f127132f..a92db8d4284 100644 --- a/apps/webapp/app/v3/taskEventStore.server.ts +++ b/apps/webapp/app/v3/taskEventStore.server.ts @@ -1,5 +1,6 @@ // TaskEventStore.ts -import { Prisma, TaskEvent } from "@trigger.dev/database"; +import type { TaskEvent } from "@trigger.dev/database"; +import { Prisma } from "@trigger.dev/database"; import type { PrismaClient, PrismaReplicaClient } from "~/db.server"; import { env } from "~/env.server"; import { clampToEmergencySpanCap } from "~/v3/eventRepository/emergencySpanCap.server"; diff --git a/apps/webapp/app/v3/taskRunHeartbeatFailed.server.ts b/apps/webapp/app/v3/taskRunHeartbeatFailed.server.ts index c211b191ea6..f18d2e5aa67 100644 --- a/apps/webapp/app/v3/taskRunHeartbeatFailed.server.ts +++ b/apps/webapp/app/v3/taskRunHeartbeatFailed.server.ts @@ -4,7 +4,7 @@ import { marqs } from "~/v3/marqs/index.server"; import assertNever from "assert-never"; import { FailedTaskRunService } from "./failedTaskRun.server"; import { BaseService } from "./services/baseService.server"; -import { PrismaClientOrTransaction } from "~/db.server"; +import type { PrismaClientOrTransaction } from "~/db.server"; import { workerQueue } from "~/services/worker.server"; import { socketIo } from "./handleSocketIo.server"; import { TaskRunErrorCodes } from "@trigger.dev/core/v3"; diff --git a/apps/webapp/app/v3/tracing.server.ts b/apps/webapp/app/v3/tracing.server.ts index b02fc5ec696..1074b3d9380 100644 --- a/apps/webapp/app/v3/tracing.server.ts +++ b/apps/webapp/app/v3/tracing.server.ts @@ -1,7 +1,9 @@ -import { Span, SpanKind, SpanOptions, SpanStatusCode, Tracer } from "@opentelemetry/api"; -import { Logger, SeverityNumber } from "@opentelemetry/api-logs"; +import type { Span, SpanOptions, Tracer } from "@opentelemetry/api"; +import { SpanKind, SpanStatusCode } from "@opentelemetry/api"; +import type { Logger } from "@opentelemetry/api-logs"; +import { SeverityNumber } from "@opentelemetry/api-logs"; import { flattenAttributes } from "@trigger.dev/core/v3/utils/flattenAttributes"; -import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; +import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { attributesFromAuthenticatedEnv } from "./tracer.server"; export async function startSpan( diff --git a/apps/webapp/app/v3/utils/queueLimits.server.ts b/apps/webapp/app/v3/utils/queueLimits.server.ts index 5cefc7e0a65..bcca277e739 100644 --- a/apps/webapp/app/v3/utils/queueLimits.server.ts +++ b/apps/webapp/app/v3/utils/queueLimits.server.ts @@ -1,4 +1,4 @@ -import { RuntimeEnvironmentType } from "@trigger.dev/database"; +import type { RuntimeEnvironmentType } from "@trigger.dev/database"; import { env } from "~/env.server"; /** diff --git a/apps/webapp/app/v3/utils/zodPubSub.server.ts b/apps/webapp/app/v3/utils/zodPubSub.server.ts index 264be04894d..c473443d169 100644 --- a/apps/webapp/app/v3/utils/zodPubSub.server.ts +++ b/apps/webapp/app/v3/utils/zodPubSub.server.ts @@ -1,8 +1,10 @@ -import { Logger } from "@trigger.dev/core/logger"; -import { ZodMessageCatalogSchema, ZodMessageHandler } from "@trigger.dev/core/v3/zodMessageHandler"; +import type { Logger } from "@trigger.dev/core/logger"; +import type { ZodMessageCatalogSchema } from "@trigger.dev/core/v3/zodMessageHandler"; +import { ZodMessageHandler } from "@trigger.dev/core/v3/zodMessageHandler"; import { Evt } from "evt"; -import { z } from "zod"; -import { createRedisClient, RedisClient, RedisWithClusterOptions } from "~/redis.server"; +import type { z } from "zod"; +import type { RedisClient, RedisWithClusterOptions } from "~/redis.server"; +import { createRedisClient } from "~/redis.server"; import { logger } from "~/services/logger.server"; import { safeJsonParse } from "~/utils/json"; diff --git a/apps/webapp/memory-leak-detector.js b/apps/webapp/memory-leak-detector.js index 3b8695465ec..fafa55c84b3 100644 --- a/apps/webapp/memory-leak-detector.js +++ b/apps/webapp/memory-leak-detector.js @@ -9,7 +9,7 @@ * Usage: node memory-leak-detector.js [options] */ -const { spawn, exec } = require("child_process"); +const { spawn, exec: _exec } = require("child_process"); const fs = require("fs"); const path = require("path"); const http = require("http"); diff --git a/apps/webapp/prisma/populate.ts b/apps/webapp/prisma/populate.ts index fb31a1e978e..a611bd344ee 100644 --- a/apps/webapp/prisma/populate.ts +++ b/apps/webapp/prisma/populate.ts @@ -5,12 +5,8 @@ import { generateFriendlyId } from "~/v3/friendlyIdentifiers"; import { prisma } from "../app/db.server"; import { createHash } from "crypto"; -import { - BackgroundWorker, - BackgroundWorkerTask, - RuntimeEnvironmentType, - WorkerInstanceGroupType, -} from "@trigger.dev/database"; +import type { BackgroundWorker, BackgroundWorkerTask } from "@trigger.dev/database"; +import { RuntimeEnvironmentType, WorkerInstanceGroupType } from "@trigger.dev/database"; import { nanoid } from "nanoid"; async function populate() { @@ -22,7 +18,7 @@ async function populate() { await generateRuns(project); await createWorkerGroup(project); - const { worker, tasks } = await createBackgroundWorker(project, getEnvTypeFromArg()); + const { worker, tasks: _tasks } = await createBackgroundWorker(project, getEnvTypeFromArg()); await createWorkerDeployment(project, worker, getEnvTypeFromArg()); } diff --git a/apps/webapp/seed.mts b/apps/webapp/seed.mts index 7e67e616e94..47a3202e499 100644 --- a/apps/webapp/seed.mts +++ b/apps/webapp/seed.mts @@ -1,7 +1,8 @@ import { prisma } from "./app/db.server"; import { createOrganization } from "./app/models/organization.server"; import { createProject } from "./app/models/project.server"; -import { AuthenticationMethod, Organization, Prisma, User } from "@trigger.dev/database"; +import type { Organization, Prisma, User } from "@trigger.dev/database"; +import { AuthenticationMethod } from "@trigger.dev/database"; async function seed() { console.log("🌱 Starting seed..."); diff --git a/apps/webapp/server.ts b/apps/webapp/server.ts index 7ef83bc5c3c..d81cc05b5a7 100644 --- a/apps/webapp/server.ts +++ b/apps/webapp/server.ts @@ -4,13 +4,13 @@ import { createRequestHandler } from "@remix-run/express"; import { broadcastDevReady, logDevReady } from "@remix-run/server-runtime"; import compression from "compression"; import type { Server as EngineServer } from "engine.io"; -import express from "express"; +import express, { type RequestHandler } from "express"; import morgan from "morgan"; import { nanoid } from "nanoid"; import path from "path"; import type { Server as IoServer } from "socket.io"; -import { WebSocketServer } from "ws"; -import { RateLimitMiddleware } from "~/services/apiRateLimit.server"; +import type { WebSocketServer } from "ws"; +import type { RateLimitMiddleware } from "~/services/apiRateLimit.server"; import { type RunWithHttpContextFunction } from "~/services/httpAsyncStorage.server"; import cluster from "node:cluster"; import os from "node:os"; @@ -139,8 +139,7 @@ if (ENABLE_CLUSTER && cluster.isPrimary) { const apiRateLimiter: RateLimitMiddleware = build.entry.module.apiRateLimiter; const engineRateLimiter: RateLimitMiddleware = build.entry.module.engineRateLimiter; const runWithHttpContext: RunWithHttpContextFunction = build.entry.module.runWithHttpContext; - const tenantContextMiddleware: import("express").RequestHandler = - build.entry.module.tenantContextMiddleware; + const tenantContextMiddleware: RequestHandler = build.entry.module.tenantContextMiddleware; app.use((req, res, next) => { // helpful headers: diff --git a/apps/webapp/tailwind.config.js b/apps/webapp/tailwind.config.js index 9dc62873939..b74ff5bdb5e 100644 --- a/apps/webapp/tailwind.config.js +++ b/apps/webapp/tailwind.config.js @@ -2,7 +2,7 @@ const colors = require("tailwindcss/colors"); // V2 -const slate = { +const _slate = { 450: "#7E8FA6", 500: "#6B7C95", 550: "#586981", @@ -15,7 +15,7 @@ const slate = { 1000: "#0B1018", }; -const toxic = { +const _toxic = { 50: "#E3FFE6", 100: "#C8FFCD", 200: "#A9FFAB", @@ -28,7 +28,7 @@ const toxic = { 900: "#16CC28", }; -const acid = { +const _acid = { 50: "#F9FFD1", 100: "#F6FFB6", 200: "#F3FF99", @@ -41,7 +41,7 @@ const acid = { 900: "#9FB802", }; -const midnight = { +const _midnight = { ...colors.slate, 450: colors.slate[850], 500: colors.slate[650], diff --git a/apps/webapp/test/auth-api.e2e.full.test.ts b/apps/webapp/test/auth-api.e2e.full.test.ts index 279cbeb98fc..2d25dca6f52 100644 --- a/apps/webapp/test/auth-api.e2e.full.test.ts +++ b/apps/webapp/test/auth-api.e2e.full.test.ts @@ -401,21 +401,6 @@ describe("API", () => { describe("Trigger task — single (api.v1.tasks.$taskId.trigger)", () => { const TASK_ID = "test-task"; const path = `/api/v1/tasks/${TASK_ID}/trigger`; - - async function seedAndRequest( - headers: Record, - body: unknown = { payload: {} } - ) { - const server = getTestServer(); - const seed = await seedTestEnvironment(server.prisma); - const res = await server.webapp.fetch(path, { - method: "POST", - headers: { "Content-Type": "application/json", ...headers }, - body: JSON.stringify(body), - }); - return { res, seed }; - } - it("missing auth: 401", async () => { const server = getTestServer(); const res = await server.webapp.fetch(path, { diff --git a/apps/webapp/test/authorizationRateLimitMiddleware.test.ts b/apps/webapp/test/authorizationRateLimitMiddleware.test.ts index 5c02abfbab4..847327b4b7a 100644 --- a/apps/webapp/test/authorizationRateLimitMiddleware.test.ts +++ b/apps/webapp/test/authorizationRateLimitMiddleware.test.ts @@ -11,7 +11,8 @@ vi.mock("./logger.server", () => ({ }, })); -import express, { Express } from "express"; +import type { Express } from "express"; +import express from "express"; import request from "supertest"; import { authorizationRateLimitMiddleware } from "../app/services/authorizationRateLimitMiddleware.server.js"; diff --git a/apps/webapp/test/billingAlertsFormat.test.ts b/apps/webapp/test/billingAlertsFormat.test.ts index 5f853e76d80..7ef84770d7b 100644 --- a/apps/webapp/test/billingAlertsFormat.test.ts +++ b/apps/webapp/test/billingAlertsFormat.test.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from "vitest"; import { + ABSOLUTE_ALERT_BASE_CENTS, clearedAlertsPayload, emailsMatchSaved, getAlertPreviewLimitCents, @@ -13,14 +14,12 @@ import { normalizeBillingAlertsFromApi, percentageAlertLevelsToUiThresholds, previewDollarAmountForPercent, - resetAlertsPayloadForLimitMode, shouldClearAlertsOnLimitChange, shouldResetAlertsOnLimitChange, storedAlertsToThresholds, thresholdsMatchSaved, thresholdsToAlertPayload, thresholdValuesAreUnique, - ABSOLUTE_ALERT_BASE_CENTS, } from "~/components/billing/billingAlertsFormat"; const legacyDefaultLevels = [0.75, 0.9, 1.0, 2.0, 5.0, 10.0, 20.0, 50.0, 100.0]; diff --git a/apps/webapp/test/calculateNextSchedule.test.ts b/apps/webapp/test/calculateNextSchedule.test.ts index 816c0784c0d..3be35fddb8d 100644 --- a/apps/webapp/test/calculateNextSchedule.test.ts +++ b/apps/webapp/test/calculateNextSchedule.test.ts @@ -14,7 +14,7 @@ describe("calculateNextScheduledTimestampFromNow", () => { test("should calculate next run time for a recent timestamp", () => { const schedule = "0 * * * *"; // Every hour - const lastRun = new Date("2024-01-01T11:00:00.000Z"); // 1.5 hours ago + const _lastRun = new Date("2024-01-01T11:00:00.000Z"); // 1.5 hours ago const nextRun = calculateNextScheduledTimestampFromNow(schedule, null); @@ -24,7 +24,7 @@ describe("calculateNextScheduledTimestampFromNow", () => { test("should handle timezone correctly", () => { const schedule = "0 * * * *"; // Every hour - const lastRun = new Date("2024-01-01T11:00:00.000Z"); + const _lastRun = new Date("2024-01-01T11:00:00.000Z"); const nextRun = calculateNextScheduledTimestampFromNow(schedule, "America/New_York"); @@ -35,7 +35,7 @@ describe("calculateNextScheduledTimestampFromNow", () => { test("should efficiently handle very old timestamps (performance fix)", () => { const schedule = "*/1 * * * *"; // Every minute - const veryOldTimestamp = new Date("2020-01-01T00:00:00.000Z"); // 4 years ago + const _veryOldTimestamp = new Date("2020-01-01T00:00:00.000Z"); // 4 years ago const startTime = performance.now(); const nextRun = calculateNextScheduledTimestampFromNow(schedule, null); @@ -53,7 +53,7 @@ describe("calculateNextScheduledTimestampFromNow", () => { test("should still work correctly when timestamp is within threshold", () => { const schedule = "0 */2 * * *"; // Every 2 hours - const recentTimestamp = new Date("2024-01-01T10:00:00.000Z"); // 2.5 hours ago + const _recentTimestamp = new Date("2024-01-01T10:00:00.000Z"); // 2.5 hours ago const nextRun = calculateNextScheduledTimestampFromNow(schedule, null); @@ -63,7 +63,7 @@ describe("calculateNextScheduledTimestampFromNow", () => { test("should handle frequent schedules with old timestamps efficiently", () => { const schedule = "*/5 * * * *"; // Every 5 minutes - const oldTimestamp = new Date("2023-12-01T00:00:00.000Z"); // Over a month ago + const _oldTimestamp = new Date("2023-12-01T00:00:00.000Z"); // Over a month ago const startTime = performance.now(); const nextRun = calculateNextScheduledTimestampFromNow(schedule, null); @@ -78,7 +78,7 @@ describe("calculateNextScheduledTimestampFromNow", () => { test("should work with complex cron expressions", () => { const schedule = "0 9 * * MON"; // Every Monday at 9 AM - const oldTimestamp = new Date("2022-01-01T00:00:00.000Z"); // Very old (beyond 1hr threshold) + const _oldTimestamp = new Date("2022-01-01T00:00:00.000Z"); // Very old (beyond 1hr threshold) const nextRun = calculateNextScheduledTimestampFromNow(schedule, null); @@ -92,7 +92,7 @@ describe("calculateNextScheduledTimestampFromNow", () => { test("performance: dynamic optimization for extreme scenarios", () => { // This test simulates the exact scenario that was causing event loop lag const schedule = "* * * * *"; // Every minute (very frequent) - const extremelyOldTimestamp = new Date("2000-01-01T00:00:00.000Z"); // 24 years ago + const _extremelyOldTimestamp = new Date("2000-01-01T00:00:00.000Z"); // 24 years ago const startTime = performance.now(); const nextRun = calculateNextScheduledTimestampFromNow(schedule, null); @@ -108,7 +108,7 @@ describe("calculateNextScheduledTimestampFromNow", () => { test("dynamic optimization: 23h59m old now handled efficiently", () => { // This should now be handled efficiently regardless of being "just under" a threshold const schedule = "* * * * *"; // Every minute - const oldTimestamp = new Date("2023-12-31T12:31:00.000Z"); // 23h59m ago + const _oldTimestamp = new Date("2023-12-31T12:31:00.000Z"); // 23h59m ago const startTime = performance.now(); const nextRun = calculateNextScheduledTimestampFromNow(schedule, null); @@ -124,7 +124,7 @@ describe("calculateNextScheduledTimestampFromNow", () => { test("small intervals still use normal iteration", () => { // This should use normal iteration since it's only a few steps const schedule = "*/5 * * * *"; // Every 5 minutes - const recentTimestamp = new Date("2024-01-01T12:00:00.000Z"); // 30 minutes ago (6 steps) + const _recentTimestamp = new Date("2024-01-01T12:00:00.000Z"); // 30 minutes ago (6 steps) const startTime = performance.now(); const nextRun = calculateNextScheduledTimestampFromNow(schedule, null); @@ -139,7 +139,7 @@ describe("calculateNextScheduledTimestampFromNow", () => { test("should work with weekly schedules and old timestamps", () => { const schedule = "0 9 * * MON"; // Every Monday at 9 AM - const oldTimestamp = new Date("2023-12-25T09:00:00.000Z"); // Old Monday + const _oldTimestamp = new Date("2023-12-25T09:00:00.000Z"); // Old Monday const startTime = performance.now(); const nextRun = calculateNextScheduledTimestampFromNow(schedule, null); @@ -158,7 +158,7 @@ describe("calculateNextScheduledTimestampFromNow", () => { test("weekly schedule with 2-hour old timestamp should calculate properly", () => { // This tests your specific concern about weekly schedules const schedule = "0 14 * * SUN"; // Every Sunday at 2 PM - const twoHoursAgo = new Date("2024-01-01T10:30:00.000Z"); // 2 hours before current time (12:30) + const _twoHoursAgo = new Date("2024-01-01T10:30:00.000Z"); // 2 hours before current time (12:30) const nextRun = calculateNextScheduledTimestampFromNow(schedule, null); @@ -289,7 +289,9 @@ describe("calculateNextScheduledTimestampFromNow - Fuzzy Testing", () => { const schedule = frequentSchedules[Math.floor(Math.random() * frequentSchedules.length)]; // Generate very old timestamps that would cause many iterations without optimization - const veryOldTimestamp = new Date(Date.now() - Math.random() * 5 * 365 * 24 * 60 * 60 * 1000); + const _veryOldTimestamp = new Date( + Date.now() - Math.random() * 5 * 365 * 24 * 60 * 60 * 1000 + ); const startTime = performance.now(); const nextRun = calculateNextScheduledTimestampFromNow(schedule, null); @@ -319,7 +321,7 @@ describe("calculateNextScheduledTimestampFromNow - Fuzzy Testing", () => { vi.setSystemTime(new Date(testDate)); - const lastTimestamp = new Date(Date.now() - Math.random() * 7 * 24 * 60 * 60 * 1000); + const _lastTimestamp = new Date(Date.now() - Math.random() * 7 * 24 * 60 * 60 * 1000); const nextRun = calculateNextScheduledTimestampFromNow(schedule, timezone); @@ -351,8 +353,8 @@ describe("calculateNextScheduledTimestampFromNow - Fuzzy Testing", () => { vi.setSystemTime(new Date(test.time)); // Test with timestamps both before and after the boundary - const beforeBoundary = new Date(Date.now() - 1000); - const afterBoundary = new Date(Date.now() + 1000); + const _beforeBoundary = new Date(Date.now() - 1000); + const _afterBoundary = new Date(Date.now() + 1000); const nextRun1 = calculateNextScheduledTimestampFromNow(test.schedule, null); const nextRun2 = calculateNextScheduledTimestampFromNow(test.schedule, null); @@ -404,7 +406,7 @@ describe("calculateNextScheduledTimestampFromNow - Fuzzy Testing", () => { // Test that the function is consistent when called multiple times with same inputs for (let i = 0; i < 20; i++) { const schedule = generateRandomCronExpression(); - const lastTimestamp = generateRandomTimestamp(); + const _lastTimestamp = generateRandomTimestamp(); const timezone = Math.random() > 0.5 ? "UTC" : "America/New_York"; const results: Date[] = []; @@ -433,7 +435,7 @@ describe("calculateNextScheduledTimestampFromNow - Fuzzy Testing", () => { ]; for (const testCase of testCases) { - const lastTimestamp = new Date(Date.now() - testCase.minutesAgo * 60 * 1000); + const _lastTimestamp = new Date(Date.now() - testCase.minutesAgo * 60 * 1000); const startTime = performance.now(); const nextRun = calculateNextScheduledTimestampFromNow(testCase.schedule, null); diff --git a/apps/webapp/test/createDeploymentWithNextVersion.test.ts b/apps/webapp/test/createDeploymentWithNextVersion.test.ts index 7b4fda2b82b..feb8d1c4006 100644 --- a/apps/webapp/test/createDeploymentWithNextVersion.test.ts +++ b/apps/webapp/test/createDeploymentWithNextVersion.test.ts @@ -1,5 +1,5 @@ import { containerTest } from "@internal/testcontainers"; -import { PrismaClient } from "@trigger.dev/database"; +import type { PrismaClient } from "@trigger.dev/database"; import { describe, expect, vi } from "vitest"; import { createDeploymentWithNextVersion, diff --git a/apps/webapp/test/detectbadJsonStrings.test.ts b/apps/webapp/test/detectbadJsonStrings.test.ts index f3d10037c47..74942fb09ec 100644 --- a/apps/webapp/test/detectbadJsonStrings.test.ts +++ b/apps/webapp/test/detectbadJsonStrings.test.ts @@ -247,10 +247,3 @@ describe("detectBadJsonStrings", () => { }); }); }); - -function processPacket(data: string): { data?: string; dataType?: string } { - if (detectBadJsonStrings(data)) { - return { data: undefined }; - } - return { data, dataType: "application/json" }; -} diff --git a/apps/webapp/test/engine/batchPayloads.test.ts b/apps/webapp/test/engine/batchPayloads.test.ts index 69ef6224e74..8f41837e23a 100644 --- a/apps/webapp/test/engine/batchPayloads.test.ts +++ b/apps/webapp/test/engine/batchPayloads.test.ts @@ -1,4 +1,4 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { beforeEach, describe, expect, it, vi } from "vitest"; // --- Module mocks (must come before imports) --- @@ -23,8 +23,8 @@ vi.mock("~/v3/tracer.server", () => ({ ), })); -import { BatchPayloadProcessor } from "../../app/runEngine/concerns/batchPayloads.server"; import * as objectStore from "~/v3/objectStore.server"; +import { BatchPayloadProcessor } from "../../app/runEngine/concerns/batchPayloads.server"; vi.setConfig({ testTimeout: 30_000 }); diff --git a/apps/webapp/test/engine/streamBatchItems.test.ts b/apps/webapp/test/engine/streamBatchItems.test.ts index 70dba77661e..48b0c3ccca1 100644 --- a/apps/webapp/test/engine/streamBatchItems.test.ts +++ b/apps/webapp/test/engine/streamBatchItems.test.ts @@ -20,7 +20,7 @@ import { setupAuthenticatedEnvironment } from "@internal/run-engine/tests"; // body. NoClickhouse because this suite never touches ClickHouse - skips the worker-scoped boot+migrate. import { containerTestWithIsolatedRedisNoClickhouse as containerTest } from "@internal/testcontainers"; import { trace } from "@opentelemetry/api"; -import { PrismaClient } from "@trigger.dev/database"; +import type { PrismaClient } from "@trigger.dev/database"; import { BatchId } from "@trigger.dev/core/v3/isomorphic"; import { StreamBatchItemsService, diff --git a/apps/webapp/test/engine/triggerTask.test.ts b/apps/webapp/test/engine/triggerTask.test.ts index ecd4db5e2b9..235c67637b3 100644 --- a/apps/webapp/test/engine/triggerTask.test.ts +++ b/apps/webapp/test/engine/triggerTask.test.ts @@ -18,13 +18,13 @@ import { RunEngine } from "@internal/run-engine"; import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "@internal/run-engine/tests"; import { assertNonNullable, containerTest } from "@internal/testcontainers"; import { trace } from "@opentelemetry/api"; -import { IOPacket } from "@trigger.dev/core/v3"; -import { TaskRun } from "@trigger.dev/database"; +import type { IOPacket } from "@trigger.dev/core/v3"; +import type { TaskRun } from "@trigger.dev/database"; import { Redis } from "ioredis"; import { IdempotencyKeyConcern } from "~/runEngine/concerns/idempotencyKeys.server"; import { DefaultQueueManager } from "~/runEngine/concerns/queues.server"; import { NoopTaskMetadataCache, RedisTaskMetadataCache } from "~/services/taskMetadataCache.server"; -import { +import type { EntitlementValidationParams, MaxAttemptsValidationParams, ParentRunValidationParams, diff --git a/apps/webapp/test/fairDequeuingStrategy.test.ts b/apps/webapp/test/fairDequeuingStrategy.test.ts index f5b96cf5e88..c51edb733d8 100644 --- a/apps/webapp/test/fairDequeuingStrategy.test.ts +++ b/apps/webapp/test/fairDequeuingStrategy.test.ts @@ -15,7 +15,7 @@ import { setupQueue, } from "./utils/marqs.js"; import { trace } from "@opentelemetry/api"; -import { EnvQueues } from "~/v3/marqs/types.js"; +import type { EnvQueues } from "~/v3/marqs/types.js"; import { MARQS_RESUME_PRIORITY_TIMESTAMP_OFFSET } from "~/v3/marqs/constants.server.js"; import { createRedisClient } from "@internal/redis"; @@ -258,7 +258,7 @@ describe("FairDequeuingStrategy", () => { const startDistribute2 = performance.now(); - const result2 = await strategy.distributeFairQueuesFromParentQueue( + const _result2 = await strategy.distributeFairQueuesFromParentQueue( "parent-queue", "consumer-1" ); @@ -275,7 +275,7 @@ describe("FairDequeuingStrategy", () => { const startDistribute3 = performance.now(); - const result3 = await strategy.distributeFairQueuesFromParentQueue( + const _result3 = await strategy.distributeFairQueuesFromParentQueue( "parent-queue", "consumer-1" ); @@ -420,13 +420,13 @@ describe("FairDequeuingStrategy", () => { expect(firstPositionStdDevEnvs).toBeLessThan(5); // Allow 5% standard deviation for envs // Verify that each org and env gets a fair chance at first position - for (const [orgId, stats] of Object.entries(orgStats)) { + for (const [_orgId, stats] of Object.entries(orgStats)) { const firstPositionPercentage = (stats.firstPosition / iterations) * 100; expect(firstPositionPercentage).toBeGreaterThan(expectedFirstPositionPercentage * 0.7); // Within 30% of expected expect(firstPositionPercentage).toBeLessThan(expectedFirstPositionPercentage * 1.3); } - for (const [envId, stats] of Object.entries(envStats)) { + for (const [_envId, stats] of Object.entries(envStats)) { const firstPositionPercentage = (stats.firstPosition / iterations) * 100; expect(firstPositionPercentage).toBeGreaterThan(expectedEnvFirstPositionPercentage * 0.7); // Within 30% of expected expect(firstPositionPercentage).toBeLessThan(expectedEnvFirstPositionPercentage * 1.3); diff --git a/apps/webapp/test/findOrCreateBackgroundWorker.test.ts b/apps/webapp/test/findOrCreateBackgroundWorker.test.ts index 8b047001b87..78b4f56dd31 100644 --- a/apps/webapp/test/findOrCreateBackgroundWorker.test.ts +++ b/apps/webapp/test/findOrCreateBackgroundWorker.test.ts @@ -1,6 +1,6 @@ import { containerTest } from "@internal/testcontainers"; -import { CreateBackgroundWorkerRequestBody } from "@trigger.dev/core/v3"; -import { PrismaClient } from "@trigger.dev/database"; +import type { CreateBackgroundWorkerRequestBody } from "@trigger.dev/core/v3"; +import type { PrismaClient } from "@trigger.dev/database"; import { describe, expect, vi } from "vitest"; import type { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { ServiceValidationError } from "~/v3/services/common.server"; diff --git a/apps/webapp/test/fixtures/environmentVariablesFixtures.ts b/apps/webapp/test/fixtures/environmentVariablesFixtures.ts index 8e358e1295b..b756a6db723 100644 --- a/apps/webapp/test/fixtures/environmentVariablesFixtures.ts +++ b/apps/webapp/test/fixtures/environmentVariablesFixtures.ts @@ -1,5 +1,5 @@ import type { PrismaClient, RuntimeEnvironmentType } from "@trigger.dev/database"; -import { EnvironmentVariablesRepository } from "~/v3/environmentVariables/environmentVariablesRepository.server"; +import type { EnvironmentVariablesRepository } from "~/v3/environmentVariables/environmentVariablesRepository.server"; let idCounter = 0; diff --git a/apps/webapp/test/marqsKeyProducer.test.ts b/apps/webapp/test/marqsKeyProducer.test.ts index 59930701f3d..3cc798c7f86 100644 --- a/apps/webapp/test/marqsKeyProducer.test.ts +++ b/apps/webapp/test/marqsKeyProducer.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from "vitest"; import { MarQSShortKeyProducer } from "../app/v3/marqs/marqsKeyProducer.js"; -import { MarQSKeyProducerEnv } from "~/v3/marqs/types.js"; +import type { MarQSKeyProducerEnv } from "~/v3/marqs/types.js"; describe("MarQSShortKeyProducer", () => { const prefix = "test:"; diff --git a/apps/webapp/test/mollifierMutateWithFallback.test.ts b/apps/webapp/test/mollifierMutateWithFallback.test.ts index 1414772a1a8..1ccef0e2ad7 100644 --- a/apps/webapp/test/mollifierMutateWithFallback.test.ts +++ b/apps/webapp/test/mollifierMutateWithFallback.test.ts @@ -6,6 +6,7 @@ vi.mock("~/db.server", () => ({ })); import { mutateWithFallback } from "~/v3/mollifier/mutateWithFallback.server"; +import type * as DbServer from "~/db.server"; import type { BufferEntry, MollifierBuffer, MutateSnapshotResult } from "@trigger.dev/redis-worker"; import type { TaskRun } from "@trigger.dev/database"; @@ -105,8 +106,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation, synthesisedResponse, - prismaReplica: fakePrisma([row]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([row]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([]) as unknown as typeof DbServer.prisma, getBuffer: () => bufferReturning("applied_to_snapshot"), }); @@ -121,8 +122,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation, synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([]) as unknown as typeof DbServer.prisma, getBuffer: () => bufferReturning("applied_to_snapshot"), }); expect(result).toEqual({ kind: "snapshot", response: "snap" }); @@ -141,8 +142,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation: async () => "pg", synthesisedResponse: synthesised, - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([]) as unknown as typeof DbServer.prisma, getBuffer: () => bufferReturning("applied_to_snapshot"), }); expect(result).toEqual({ kind: "snapshot", response: "snap-with-entry" }); @@ -169,8 +170,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation, synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([row]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([row]) as unknown as typeof DbServer.prisma, getBuffer: () => null, }); expect(result).toEqual({ kind: "pg", response: "pg-recovered-no-buffer" }); @@ -182,8 +183,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation: async () => "pg", synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([null]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([null]) as unknown as typeof DbServer.prisma, getBuffer: () => null, }); expect(result).toEqual({ kind: "not_found" }); @@ -194,8 +195,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation: async () => "pg", synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([null]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([null]) as unknown as typeof DbServer.prisma, getBuffer: () => bufferReturning("not_found"), }); expect(result).toEqual({ kind: "not_found" }); @@ -208,8 +209,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation, synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([row]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([row]) as unknown as typeof DbServer.prisma, getBuffer: () => bufferReturning("not_found"), }); expect(result).toEqual({ kind: "pg", response: "pg-recovered" }); @@ -227,8 +228,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation, synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: writer as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: writer as unknown as typeof DbServer.prisma, getBuffer: () => buffer, sleep: async (ms) => { nowValue += ms; @@ -256,8 +257,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation, synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: writer as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: writer as unknown as typeof DbServer.prisma, getBuffer: () => buffer, sleep: async (ms) => { nowValue += ms; @@ -279,8 +280,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation: async () => "pg", synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: writer as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: writer as unknown as typeof DbServer.prisma, getBuffer: () => buffer, sleep: async (ms) => { nowValue += ms; @@ -306,8 +307,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation, synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: writer as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: writer as unknown as typeof DbServer.prisma, getBuffer: () => buffer, sleep: async (ms) => { nowValue += ms; @@ -331,8 +332,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation: async () => "pg", synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: writer as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: writer as unknown as typeof DbServer.prisma, getBuffer: () => buffer, sleep: async (ms) => { nowValue += ms; @@ -356,8 +357,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation: async () => "pg", synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: writer as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: writer as unknown as typeof DbServer.prisma, getBuffer: () => buffer, sleep: async (ms) => { nowValue += ms; @@ -383,8 +384,8 @@ describe("mutateWithFallback", () => { pgMutation, synthesisedResponse, rejectedResponse: () => "too-many-tags", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([]) as unknown as typeof DbServer.prisma, getBuffer: () => bufferReturning("limit_exceeded"), }); expect(result).toEqual({ kind: "rejected", response: "too-many-tags" }); @@ -398,8 +399,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation: async () => "pg", synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([]) as unknown as typeof DbServer.prisma, getBuffer: () => bufferReturning("limit_exceeded"), }) ).rejects.toThrow(/limit_exceeded/); @@ -428,8 +429,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation, synthesisedResponse, - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([]) as unknown as typeof DbServer.prisma, getBuffer: () => buffer, }); expect(result).toEqual({ kind: "not_found" }); @@ -455,8 +456,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation: async () => "pg", synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([]) as unknown as typeof DbServer.prisma, getBuffer: () => buffer, }); expect(result).toEqual({ kind: "not_found" }); @@ -468,8 +469,8 @@ describe("mutateWithFallback", () => { ...baseInput, pgMutation: async () => "pg", synthesisedResponse: () => "snap", - prismaReplica: fakePrisma([null]) as unknown as typeof import("~/db.server").$replica, - prismaWriter: fakePrisma([]) as unknown as typeof import("~/db.server").prisma, + prismaReplica: fakePrisma([null]) as unknown as typeof DbServer.$replica, + prismaWriter: fakePrisma([]) as unknown as typeof DbServer.prisma, getBuffer: () => null, }); expect(result).toEqual({ kind: "not_found" }); diff --git a/apps/webapp/test/otlpExporter.test.ts b/apps/webapp/test/otlpExporter.test.ts index f07019b4a25..883885e9359 100644 --- a/apps/webapp/test/otlpExporter.test.ts +++ b/apps/webapp/test/otlpExporter.test.ts @@ -1,15 +1,14 @@ -import { describe, it, expect, beforeEach, afterEach } from "vitest"; -import { - enrichCreatableEvents, - setLlmPricingRegistry, -} from "../app/v3/utils/enrichCreatableEvents.server.js"; import { RuntimeEnvironmentType, TaskEventKind, TaskEventLevel, TaskEventStatus, } from "@trigger.dev/database"; -import { SemanticInternalAttributes } from "@trigger.dev/core/v3"; +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { + enrichCreatableEvents, + setLlmPricingRegistry, +} from "../app/v3/utils/enrichCreatableEvents.server.js"; describe("OTLPExporter", () => { describe("enrichCreatableEvents", () => { diff --git a/apps/webapp/test/realtimeClient.test.ts b/apps/webapp/test/realtimeClient.test.ts index d98213e5b17..621e55c5a7d 100644 --- a/apps/webapp/test/realtimeClient.test.ts +++ b/apps/webapp/test/realtimeClient.test.ts @@ -205,7 +205,7 @@ describe.skipIf(process.env.GITHUB_ACTIONS)("RealtimeClient", () => { }, }); - const run = await prisma.taskRun.create({ + const _run = await prisma.taskRun.create({ data: { taskIdentifier: "test-task", friendlyId: "run_1234", diff --git a/apps/webapp/test/redisRealtimeStreams.test.ts b/apps/webapp/test/redisRealtimeStreams.test.ts index 05117543930..306e6303bb8 100644 --- a/apps/webapp/test/redisRealtimeStreams.test.ts +++ b/apps/webapp/test/redisRealtimeStreams.test.ts @@ -1124,7 +1124,7 @@ describe("RedisRealtimeStreams", () => { } } } - } catch (error) { + } catch (_error) { // Expected to eventually close } finally { reader.releaseLock(); diff --git a/apps/webapp/test/runsBackfiller.test.ts b/apps/webapp/test/runsBackfiller.test.ts index fbdb16a4a7b..a8a312adbab 100644 --- a/apps/webapp/test/runsBackfiller.test.ts +++ b/apps/webapp/test/runsBackfiller.test.ts @@ -28,7 +28,7 @@ describe("RunsBackfillerService", () => { }, }); - const { tracer, exporter } = createInMemoryTracing(); + const { tracer, exporter: _exporter } = createInMemoryTracing(); const runsReplicationService = new RunsReplicationService({ clickhouseFactory: new TestReplicationClickhouseFactory(clickhouse), diff --git a/apps/webapp/test/runsReplicationBenchmark.test.ts b/apps/webapp/test/runsReplicationBenchmark.test.ts index d1b80d06af0..2a12dcbed4b 100644 --- a/apps/webapp/test/runsReplicationBenchmark.test.ts +++ b/apps/webapp/test/runsReplicationBenchmark.test.ts @@ -1,13 +1,13 @@ import { ClickHouse } from "@internal/clickhouse"; import { replicationContainerTest } from "@internal/testcontainers"; -import { fork, type ChildProcess } from "node:child_process"; -import { performance, PerformanceObserver } from "node:perf_hooks"; -import { setTimeout } from "node:timers/promises"; +import { fork } from "node:child_process"; import path from "node:path"; +import { performance } from "node:perf_hooks"; +import { setTimeout } from "node:timers/promises"; import { z } from "zod"; import { RunsReplicationService } from "~/services/runsReplicationService.server"; -import { createInMemoryTracing, createInMemoryMetrics } from "./utils/tracing"; import { TestReplicationClickhouseFactory } from "./utils/testReplicationClickhouseFactory"; +import { createInMemoryMetrics, createInMemoryTracing } from "./utils/tracing"; // Extend test timeout for benchmarks vi.setConfig({ testTimeout: 300_000 }); // 5 minutes diff --git a/apps/webapp/test/runsReplicationService.part1.test.ts b/apps/webapp/test/runsReplicationService.part1.test.ts index c30eef1c60b..a09ca74f43d 100644 --- a/apps/webapp/test/runsReplicationService.part1.test.ts +++ b/apps/webapp/test/runsReplicationService.part1.test.ts @@ -1,12 +1,11 @@ import { ClickHouse } from "@internal/clickhouse"; import { replicationContainerTest } from "@internal/testcontainers"; import { setTimeout } from "node:timers/promises"; +import superjson from "superjson"; import { z } from "zod"; -import { TaskRunStatus } from "~/database-types"; import { RunsReplicationService } from "~/services/runsReplicationService.server"; -import { createInMemoryTracing, createInMemoryMetrics } from "./utils/tracing"; import { TestReplicationClickhouseFactory } from "./utils/testReplicationClickhouseFactory"; -import superjson from "superjson"; +import { createInMemoryTracing } from "./utils/tracing"; vi.setConfig({ testTimeout: 60_000 }); @@ -156,7 +155,7 @@ describe("RunsReplicationService (part 1/7)", () => { logLevel: "warn", }); - const { tracer, exporter } = createInMemoryTracing(); + const { tracer, exporter: _exporter } = createInMemoryTracing(); const runsReplicationService = new RunsReplicationService({ clickhouseFactory: new TestReplicationClickhouseFactory(clickhouse), diff --git a/apps/webapp/test/runsReplicationService.part2.test.ts b/apps/webapp/test/runsReplicationService.part2.test.ts index 90be5b18322..dda3fe8e8dc 100644 --- a/apps/webapp/test/runsReplicationService.part2.test.ts +++ b/apps/webapp/test/runsReplicationService.part2.test.ts @@ -1,11 +1,9 @@ -import { ClickHouse, getTaskRunField, getPayloadField } from "@internal/clickhouse"; +import { ClickHouse } from "@internal/clickhouse"; import { replicationContainerTest } from "@internal/testcontainers"; import { Logger } from "@trigger.dev/core/logger"; -import { readFile } from "node:fs/promises"; import { setTimeout } from "node:timers/promises"; import { z } from "zod"; import { RunsReplicationService } from "~/services/runsReplicationService.server"; -import { detectBadJsonStrings } from "~/utils/detectBadJsonStrings"; import { TestReplicationClickhouseFactory } from "./utils/testReplicationClickhouseFactory"; vi.setConfig({ testTimeout: 60_000 }); diff --git a/apps/webapp/test/runsReplicationService.part3.test.ts b/apps/webapp/test/runsReplicationService.part3.test.ts index 51e2b02b750..938a7cd1516 100644 --- a/apps/webapp/test/runsReplicationService.part3.test.ts +++ b/apps/webapp/test/runsReplicationService.part3.test.ts @@ -1,6 +1,5 @@ -import { ClickHouse, getTaskRunField, getPayloadField } from "@internal/clickhouse"; +import { ClickHouse, getTaskRunField } from "@internal/clickhouse"; import { replicationContainerTest } from "@internal/testcontainers"; -import { Logger } from "@trigger.dev/core/logger"; import { readFile } from "node:fs/promises"; import { setTimeout } from "node:timers/promises"; import { z } from "zod"; diff --git a/apps/webapp/test/runsReplicationService.part4.test.ts b/apps/webapp/test/runsReplicationService.part4.test.ts index 835192ad0fb..ce68cc4ac17 100644 --- a/apps/webapp/test/runsReplicationService.part4.test.ts +++ b/apps/webapp/test/runsReplicationService.part4.test.ts @@ -4,9 +4,8 @@ import { setTimeout } from "node:timers/promises"; import { z } from "zod"; import { TaskRunStatus } from "~/database-types"; import { RunsReplicationService } from "~/services/runsReplicationService.server"; -import { createInMemoryTracing, createInMemoryMetrics } from "./utils/tracing"; import { TestReplicationClickhouseFactory } from "./utils/testReplicationClickhouseFactory"; -import superjson from "superjson"; +import { createInMemoryMetrics, createInMemoryTracing } from "./utils/tracing"; vi.setConfig({ testTimeout: 60_000 }); diff --git a/apps/webapp/test/runsReplicationService.part5.test.ts b/apps/webapp/test/runsReplicationService.part5.test.ts index 3263efae7b8..839bc69d49a 100644 --- a/apps/webapp/test/runsReplicationService.part5.test.ts +++ b/apps/webapp/test/runsReplicationService.part5.test.ts @@ -1,11 +1,8 @@ -import { ClickHouse, getTaskRunField, getPayloadField } from "@internal/clickhouse"; +import { ClickHouse } from "@internal/clickhouse"; import { replicationContainerTest } from "@internal/testcontainers"; -import { Logger } from "@trigger.dev/core/logger"; -import { readFile } from "node:fs/promises"; import { setTimeout } from "node:timers/promises"; import { z } from "zod"; import { RunsReplicationService } from "~/services/runsReplicationService.server"; -import { detectBadJsonStrings } from "~/utils/detectBadJsonStrings"; import { TestReplicationClickhouseFactory } from "./utils/testReplicationClickhouseFactory"; vi.setConfig({ testTimeout: 60_000 }); diff --git a/apps/webapp/test/runsReplicationService.part6.test.ts b/apps/webapp/test/runsReplicationService.part6.test.ts index 890c90bbb5b..90004c11267 100644 --- a/apps/webapp/test/runsReplicationService.part6.test.ts +++ b/apps/webapp/test/runsReplicationService.part6.test.ts @@ -1,11 +1,8 @@ -import { ClickHouse, getTaskRunField, getPayloadField } from "@internal/clickhouse"; +import { ClickHouse, getPayloadField, getTaskRunField } from "@internal/clickhouse"; import { replicationContainerTest } from "@internal/testcontainers"; -import { Logger } from "@trigger.dev/core/logger"; -import { readFile } from "node:fs/promises"; import { setTimeout } from "node:timers/promises"; import { z } from "zod"; import { RunsReplicationService } from "~/services/runsReplicationService.server"; -import { detectBadJsonStrings } from "~/utils/detectBadJsonStrings"; import { TestReplicationClickhouseFactory } from "./utils/testReplicationClickhouseFactory"; vi.setConfig({ testTimeout: 60_000 }); diff --git a/apps/webapp/test/runsReplicationService.part7.test.ts b/apps/webapp/test/runsReplicationService.part7.test.ts index 4f091d8eb4c..77ca3bcc0f6 100644 --- a/apps/webapp/test/runsReplicationService.part7.test.ts +++ b/apps/webapp/test/runsReplicationService.part7.test.ts @@ -1,11 +1,8 @@ -import { ClickHouse, getTaskRunField, getPayloadField } from "@internal/clickhouse"; +import { ClickHouse } from "@internal/clickhouse"; import { replicationContainerTest } from "@internal/testcontainers"; -import { Logger } from "@trigger.dev/core/logger"; -import { readFile } from "node:fs/promises"; import { setTimeout } from "node:timers/promises"; import { z } from "zod"; import { RunsReplicationService } from "~/services/runsReplicationService.server"; -import { detectBadJsonStrings } from "~/utils/detectBadJsonStrings"; import { TestReplicationClickhouseFactory } from "./utils/testReplicationClickhouseFactory"; vi.setConfig({ testTimeout: 60_000 }); diff --git a/apps/webapp/test/runsRepository.part1.test.ts b/apps/webapp/test/runsRepository.part1.test.ts index e33f4464db3..59003795037 100644 --- a/apps/webapp/test/runsRepository.part1.test.ts +++ b/apps/webapp/test/runsRepository.part1.test.ts @@ -129,7 +129,7 @@ describe("RunsRepository (part 1/4)", () => { }); // Create runs with different task identifiers - const taskRun1 = await prisma.taskRun.create({ + const _taskRun1 = await prisma.taskRun.create({ data: { friendlyId: "run_task1", taskIdentifier: "task-1", @@ -145,7 +145,7 @@ describe("RunsRepository (part 1/4)", () => { }, }); - const taskRun2 = await prisma.taskRun.create({ + const _taskRun2 = await prisma.taskRun.create({ data: { friendlyId: "run_task2", taskIdentifier: "task-2", @@ -161,7 +161,7 @@ describe("RunsRepository (part 1/4)", () => { }, }); - const taskRun3 = await prisma.taskRun.create({ + const _taskRun3 = await prisma.taskRun.create({ data: { friendlyId: "run_task3", taskIdentifier: "task-3", diff --git a/apps/webapp/test/runsRepository.part2.test.ts b/apps/webapp/test/runsRepository.part2.test.ts index 55cba6854f6..eca1ae619e2 100644 --- a/apps/webapp/test/runsRepository.part2.test.ts +++ b/apps/webapp/test/runsRepository.part2.test.ts @@ -401,7 +401,7 @@ describe("RunsRepository (part 2/4)", () => { }, }); - const run2 = await prisma.taskRun.create({ + const _run2 = await prisma.taskRun.create({ data: { friendlyId: "run_2", taskIdentifier: "my-task", diff --git a/apps/webapp/test/runsRepository.part3.test.ts b/apps/webapp/test/runsRepository.part3.test.ts index 543ce47a018..fafe12361a5 100644 --- a/apps/webapp/test/runsRepository.part3.test.ts +++ b/apps/webapp/test/runsRepository.part3.test.ts @@ -53,7 +53,7 @@ describe("RunsRepository (part 3/4)", () => { }); // Create runs with different tags - const taskRun1 = await prisma.taskRun.create({ + const _taskRun1 = await prisma.taskRun.create({ data: { friendlyId: "run_urgent", taskIdentifier: "my-task", @@ -70,7 +70,7 @@ describe("RunsRepository (part 3/4)", () => { }, }); - const taskRun2 = await prisma.taskRun.create({ + const _taskRun2 = await prisma.taskRun.create({ data: { friendlyId: "run_regular", taskIdentifier: "my-task", @@ -87,7 +87,7 @@ describe("RunsRepository (part 3/4)", () => { }, }); - const taskRun3 = await prisma.taskRun.create({ + const _taskRun3 = await prisma.taskRun.create({ data: { friendlyId: "run_urgent_dev", taskIdentifier: "my-task", diff --git a/apps/webapp/test/slackErrorAlerts.test.ts b/apps/webapp/test/slackErrorAlerts.test.ts index 3a326b21ac2..c4322dbc9da 100644 --- a/apps/webapp/test/slackErrorAlerts.test.ts +++ b/apps/webapp/test/slackErrorAlerts.test.ts @@ -1,9 +1,11 @@ import { describe, test, expect, beforeAll, afterAll } from "vitest"; import type { PrismaClient } from "@trigger.dev/database"; +import type * as DeliverErrorGroupAlertModule from "../app/v3/services/alerts/deliverErrorGroupAlert.server.js"; +import type * as SecretStoreModule from "../app/services/secrets/secretStore.server.js"; -let DeliverErrorGroupAlertService: typeof import("../app/v3/services/alerts/deliverErrorGroupAlert.server.js").DeliverErrorGroupAlertService; +let DeliverErrorGroupAlertService: typeof DeliverErrorGroupAlertModule.DeliverErrorGroupAlertService; let prisma: PrismaClient; -let getSecretStore: typeof import("../app/services/secrets/secretStore.server.js").getSecretStore; +let getSecretStore: typeof SecretStoreModule.getSecretStore; type ErrorAlertPayload = { channelId: string; diff --git a/apps/webapp/test/timelineSpanEvents.test.ts b/apps/webapp/test/timelineSpanEvents.test.ts index 4118be07557..7199f01a499 100644 --- a/apps/webapp/test/timelineSpanEvents.test.ts +++ b/apps/webapp/test/timelineSpanEvents.test.ts @@ -1,5 +1,5 @@ import { describe, test, expect } from "vitest"; -import { SpanEvent } from "@trigger.dev/core/v3"; +import type { SpanEvent } from "@trigger.dev/core/v3"; import { createTimelineSpanEventsFromSpanEvents } from "../app/utils/timelineSpanEvents"; import { millisecondsToNanoseconds } from "@trigger.dev/core/v3/utils/durations"; diff --git a/apps/webapp/test/utils/marqs.ts b/apps/webapp/test/utils/marqs.ts index 4fc38849265..e724c2457cf 100644 --- a/apps/webapp/test/utils/marqs.ts +++ b/apps/webapp/test/utils/marqs.ts @@ -1,6 +1,6 @@ -import { MarQSKeyProducer } from "~/v3/marqs/types"; +import type { MarQSKeyProducer } from "~/v3/marqs/types"; import { MarQSShortKeyProducer } from "~/v3/marqs/marqsKeyProducer.js"; -import Redis from "ioredis"; +import type Redis from "ioredis"; export function createKeyProducer(prefix: string): MarQSKeyProducer { return new MarQSShortKeyProducer(prefix); diff --git a/apps/webapp/test/utils/replicationUtils.ts b/apps/webapp/test/utils/replicationUtils.ts index 358da0c2cf6..8da32e04485 100644 --- a/apps/webapp/test/utils/replicationUtils.ts +++ b/apps/webapp/test/utils/replicationUtils.ts @@ -1,6 +1,6 @@ import { ClickHouse } from "@internal/clickhouse"; -import { RedisOptions } from "@internal/redis"; -import { PrismaClient } from "~/db.server"; +import type { RedisOptions } from "@internal/redis"; +import type { PrismaClient } from "~/db.server"; import { RunsReplicationService } from "~/services/runsReplicationService.server"; import { TestReplicationClickhouseFactory } from "./testReplicationClickhouseFactory"; import { afterEach } from "vitest"; diff --git a/internal-packages/cache/src/stores/lruMemory.test.ts b/internal-packages/cache/src/stores/lruMemory.test.ts index 7b9580a19ff..099460c2be1 100644 --- a/internal-packages/cache/src/stores/lruMemory.test.ts +++ b/internal-packages/cache/src/stores/lruMemory.test.ts @@ -1,6 +1,6 @@ -import { describe, it, expect, beforeEach, vi } from "vitest"; -import { LRUMemoryStore, createLRUMemoryStore } from "./lruMemory.js"; import type { Entry } from "@unkey/cache/stores"; +import { beforeEach, describe, expect, it } from "vitest"; +import { LRUMemoryStore, createLRUMemoryStore } from "./lruMemory.js"; function createEntry(value: T, freshUntil: number, staleUntil: number): Entry { return { value, freshUntil, staleUntil }; diff --git a/internal-packages/cache/src/stores/redis.ts b/internal-packages/cache/src/stores/redis.ts index 456b5813cb7..b3a6d555520 100644 --- a/internal-packages/cache/src/stores/redis.ts +++ b/internal-packages/cache/src/stores/redis.ts @@ -1,7 +1,8 @@ import { CacheError } from "@unkey/cache"; import type { Entry, Store } from "@unkey/cache/stores"; import { Err, Ok, type Result } from "@unkey/error"; -import { createRedisClient, Redis, RedisOptions } from "@internal/redis"; +import type { Redis, RedisOptions } from "@internal/redis"; +import { createRedisClient } from "@internal/redis"; export type RedisCacheStoreConfig = { connection: RedisOptions; diff --git a/internal-packages/clickhouse/src/client/client.ts b/internal-packages/clickhouse/src/client/client.ts index 4ead99bf775..96937b03a13 100644 --- a/internal-packages/clickhouse/src/client/client.ts +++ b/internal-packages/clickhouse/src/client/client.ts @@ -4,12 +4,11 @@ import { ClickHouseLogLevel, type ClickHouseSettings, createClient, - type ResultSet, - type Row, type BaseQueryParams, type InsertResult, } from "@clickhouse/client"; -import { recordSpanError, Span, startSpan, trace, Tracer } from "@internal/tracing"; +import type { Span, Tracer } from "@internal/tracing"; +import { recordSpanError, startSpan, trace } from "@internal/tracing"; import { flattenAttributes, tryCatch, type Result } from "@trigger.dev/core/v3"; import { z } from "zod"; import { InsertError, QueryError } from "./errors.js"; diff --git a/internal-packages/clickhouse/src/client/noop.ts b/internal-packages/clickhouse/src/client/noop.ts index 0e7f2416c1a..00adef82c8a 100644 --- a/internal-packages/clickhouse/src/client/noop.ts +++ b/internal-packages/clickhouse/src/client/noop.ts @@ -1,14 +1,14 @@ -import { Result } from "@trigger.dev/core/v3"; +import type { Result } from "@trigger.dev/core/v3"; import { InsertError, QueryError } from "./errors.js"; -import { +import type { ClickhouseQueryBuilderFastFunction, ClickhouseQueryBuilderFunction, ClickhouseReader, ClickhouseWriter, QueryResultWithStats, } from "./types.js"; -import { z } from "zod"; -import { ClickHouseSettings, InsertResult } from "@clickhouse/client"; +import type { z } from "zod"; +import type { ClickHouseSettings, InsertResult } from "@clickhouse/client"; import { ClickhouseQueryBuilder, ClickhouseQueryFastBuilder } from "./queryBuilder.js"; export class NoopClient implements ClickhouseReader, ClickhouseWriter { diff --git a/internal-packages/clickhouse/src/client/queryBuilder.ts b/internal-packages/clickhouse/src/client/queryBuilder.ts index ec7f73415b5..bcdc68089c9 100644 --- a/internal-packages/clickhouse/src/client/queryBuilder.ts +++ b/internal-packages/clickhouse/src/client/queryBuilder.ts @@ -1,6 +1,6 @@ import { z } from "zod"; -import { ClickhouseQueryFunction, ClickhouseReader, ColumnExpression } from "./types.js"; -import { ClickHouseSettings } from "@clickhouse/client"; +import type { ClickhouseQueryFunction, ClickhouseReader, ColumnExpression } from "./types.js"; +import type { ClickHouseSettings } from "@clickhouse/client"; export type QueryParamValue = string | number | boolean | Array | null; export type QueryParams = Record; diff --git a/internal-packages/clickhouse/src/client/tsql.ts b/internal-packages/clickhouse/src/client/tsql.ts index f3cf9067bef..c712820812f 100644 --- a/internal-packages/clickhouse/src/client/tsql.ts +++ b/internal-packages/clickhouse/src/client/tsql.ts @@ -6,27 +6,27 @@ */ import type { ClickHouseSettings } from "@clickhouse/client"; -import { z } from "zod"; import { compileTSQL, + type OutputColumnMetadata, sanitizeErrorMessage, transformResults, - type TableSchema, - type QuerySettings, type FieldMappings, + type QuerySettings, + type TableSchema, type TimeRange, type WhereClauseCondition, } from "@internal/tsql"; -import type { ClickhouseReader, QueryStats } from "./types.js"; -import { QueryError } from "./errors.js"; -import type { OutputColumnMetadata } from "@internal/tsql"; import { Logger } from "@trigger.dev/core/logger"; +import { z } from "zod"; +import { QueryError } from "./errors.js"; +import type { ClickhouseReader, QueryStats } from "./types.js"; const logger = new Logger("tsql", "info"); export type { QueryStats }; -export type { TableSchema, QuerySettings, FieldMappings, TimeRange, WhereClauseCondition }; +export type { FieldMappings, QuerySettings, TableSchema, TimeRange, WhereClauseCondition }; /** * Options for executing a TSQL query diff --git a/internal-packages/clickhouse/src/client/types.ts b/internal-packages/clickhouse/src/client/types.ts index dde2bfce530..d785ab34ebb 100644 --- a/internal-packages/clickhouse/src/client/types.ts +++ b/internal-packages/clickhouse/src/client/types.ts @@ -1,9 +1,12 @@ import type { Result } from "@trigger.dev/core/v3"; import type { z } from "zod"; import type { InsertError, QueryError } from "./errors.js"; -import { ClickHouseSettings } from "@clickhouse/client"; -import type { BaseQueryParams, InsertResult } from "@clickhouse/client"; -import { ClickhouseQueryBuilder, ClickhouseQueryFastBuilder } from "./queryBuilder.js"; +import { + type ClickHouseSettings, + type BaseQueryParams, + type InsertResult, +} from "@clickhouse/client"; +import type { ClickhouseQueryBuilder, ClickhouseQueryFastBuilder } from "./queryBuilder.js"; export type ClickhouseQueryFunction = ( params: TInput, diff --git a/internal-packages/clickhouse/src/errors.ts b/internal-packages/clickhouse/src/errors.ts index 4b13ce18c80..b54852dbf6e 100644 --- a/internal-packages/clickhouse/src/errors.ts +++ b/internal-packages/clickhouse/src/errors.ts @@ -1,6 +1,6 @@ -import { ClickHouseSettings } from "@clickhouse/client"; +import type { ClickHouseSettings } from "@clickhouse/client"; import { z } from "zod"; -import { ClickhouseReader } from "./client/types.js"; +import type { ClickhouseReader } from "./client/types.js"; import { ClickhouseQueryBuilder } from "./client/queryBuilder.js"; export const ErrorGroupsListQueryResult = z.object({ diff --git a/internal-packages/clickhouse/src/index.ts b/internal-packages/clickhouse/src/index.ts index 9ee659958aa..aa8c1b52317 100644 --- a/internal-packages/clickhouse/src/index.ts +++ b/internal-packages/clickhouse/src/index.ts @@ -1,7 +1,7 @@ import type { ClickHouseSettings } from "@clickhouse/client"; export type { ClickHouseSettings }; import { ClickhouseClient } from "./client/client.js"; -import { ClickhouseReader, ClickhouseWriter } from "./client/types.js"; +import type { ClickhouseReader, ClickhouseWriter } from "./client/types.js"; import { NoopClient } from "./client/noop.js"; import { insertTaskRunsCompactArrays, diff --git a/internal-packages/clickhouse/src/llmMetrics.ts b/internal-packages/clickhouse/src/llmMetrics.ts index ba064df125f..e6e30148658 100644 --- a/internal-packages/clickhouse/src/llmMetrics.ts +++ b/internal-packages/clickhouse/src/llmMetrics.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { ClickhouseWriter } from "./client/types.js"; +import type { ClickhouseWriter } from "./client/types.js"; export const LlmMetricsV1Input = z.object({ organization_id: z.string(), diff --git a/internal-packages/clickhouse/src/metrics.ts b/internal-packages/clickhouse/src/metrics.ts index 0367280f8d6..ab8a8540054 100644 --- a/internal-packages/clickhouse/src/metrics.ts +++ b/internal-packages/clickhouse/src/metrics.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { ClickhouseWriter } from "./client/types.js"; +import type { ClickhouseWriter } from "./client/types.js"; export const MetricsV1Input = z.object({ organization_id: z.string(), diff --git a/internal-packages/clickhouse/src/sessions.ts b/internal-packages/clickhouse/src/sessions.ts index bebb8b15492..be423d4cdd7 100644 --- a/internal-packages/clickhouse/src/sessions.ts +++ b/internal-packages/clickhouse/src/sessions.ts @@ -1,6 +1,6 @@ -import { ClickHouseSettings } from "@clickhouse/client"; +import type { ClickHouseSettings } from "@clickhouse/client"; import { z } from "zod"; -import { ClickhouseReader, ClickhouseWriter } from "./client/types.js"; +import type { ClickhouseReader, ClickhouseWriter } from "./client/types.js"; export const SessionV1 = z.object({ environment_id: z.string(), diff --git a/internal-packages/clickhouse/src/taskEvents.ts b/internal-packages/clickhouse/src/taskEvents.ts index 4c17d5068d0..841ea9c6b64 100644 --- a/internal-packages/clickhouse/src/taskEvents.ts +++ b/internal-packages/clickhouse/src/taskEvents.ts @@ -1,6 +1,6 @@ -import { ClickHouseSettings } from "@clickhouse/client"; +import type { ClickHouseSettings } from "@clickhouse/client"; import { z } from "zod"; -import { ClickhouseReader, ClickhouseWriter } from "./client/types.js"; +import type { ClickhouseReader, ClickhouseWriter } from "./client/types.js"; export const TaskEventV1Input = z.object({ environment_id: z.string(), diff --git a/internal-packages/clickhouse/src/taskRuns.test.ts b/internal-packages/clickhouse/src/taskRuns.test.ts index 0d4ec995c24..8497d8966a1 100644 --- a/internal-packages/clickhouse/src/taskRuns.test.ts +++ b/internal-packages/clickhouse/src/taskRuns.test.ts @@ -387,7 +387,7 @@ describe("Task Runs V2", () => { null, // is_warm_start ]; - const [insertError, insertResult] = await insert([taskRun]); + const [_insertError, _insertResult] = await insert([taskRun]); const queryBuilder = getTaskRunsQueryBuilder(client)(); queryBuilder.where("environment_id = {environmentId: String}", { diff --git a/internal-packages/clickhouse/src/taskRuns.ts b/internal-packages/clickhouse/src/taskRuns.ts index 67dd0371f14..c72043c7887 100644 --- a/internal-packages/clickhouse/src/taskRuns.ts +++ b/internal-packages/clickhouse/src/taskRuns.ts @@ -1,6 +1,6 @@ -import { ClickHouseSettings } from "@clickhouse/client"; +import type { ClickHouseSettings } from "@clickhouse/client"; import { z } from "zod"; -import { ClickhouseReader, ClickhouseWriter } from "./client/types.js"; +import type { ClickhouseReader, ClickhouseWriter } from "./client/types.js"; export const TaskRunV2 = z.object({ environment_id: z.string(), diff --git a/internal-packages/clickhouse/src/tsql.test.ts b/internal-packages/clickhouse/src/tsql.test.ts index cb30d5e85c1..b0a93bfe704 100644 --- a/internal-packages/clickhouse/src/tsql.test.ts +++ b/internal-packages/clickhouse/src/tsql.test.ts @@ -949,7 +949,7 @@ describe("TSQL Virtual Column Tests", () => { const insert = insertTaskRuns(client, { async_insert: 0 }); - const now = Date.now(); + const _now = Date.now(); await insert([ createTaskRun({ diff --git a/internal-packages/database/src/transaction.ts b/internal-packages/database/src/transaction.ts index 5d0cdb85f0e..fad07d1102b 100644 --- a/internal-packages/database/src/transaction.ts +++ b/internal-packages/database/src/transaction.ts @@ -1,6 +1,6 @@ -import { PrismaClient } from "../generated/prisma"; +import type { PrismaClient } from "../generated/prisma"; import { Decimal } from "decimal.js"; -import { PrismaClientKnownRequestError } from "@prisma/client/runtime/library"; +import type { PrismaClientKnownRequestError } from "@prisma/client/runtime/library"; // Define the isolation levels manually type TransactionIsolationLevel = diff --git a/internal-packages/emails/emails/bulk-action-complete.tsx b/internal-packages/emails/emails/bulk-action-complete.tsx index 45f316e52dd..15d91c3cfdd 100644 --- a/internal-packages/emails/emails/bulk-action-complete.tsx +++ b/internal-packages/emails/emails/bulk-action-complete.tsx @@ -1,29 +1,18 @@ import { Body, + Button, Column, Container, Head, Html, - Link, Preview, Row, - Section, Text, } from "@react-email/components"; +import { z } from "zod"; import { Footer } from "./components/Footer"; import { Image } from "./components/Image"; -import { - anchor, - bullets, - container, - grey, - h1, - main, - paragraphLight, - sans, -} from "./components/styles"; -import { z } from "zod"; -import { Button } from "@react-email/components"; +import { bullets, container, grey, h1, main, paragraphLight, sans } from "./components/styles"; export const BulkActionCompletedEmailSchema = z.object({ email: z.literal("bulk-action-completed"), diff --git a/internal-packages/emails/emails/deployment-failure.tsx b/internal-packages/emails/emails/deployment-failure.tsx index c4cf363c2e7..dc121f3f7dd 100644 --- a/internal-packages/emails/emails/deployment-failure.tsx +++ b/internal-packages/emails/emails/deployment-failure.tsx @@ -73,8 +73,8 @@ export default function Email(props: z.infer { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier diff --git a/internal-packages/run-engine/src/engine/tests/batchTrigger.test.ts b/internal-packages/run-engine/src/engine/tests/batchTrigger.test.ts index 24dd062985d..943584625be 100644 --- a/internal-packages/run-engine/src/engine/tests/batchTrigger.test.ts +++ b/internal-packages/run-engine/src/engine/tests/batchTrigger.test.ts @@ -1,12 +1,12 @@ import { containerTest } from "@internal/testcontainers"; import { trace } from "@internal/tracing"; +import type { DequeuedMessage } from "@trigger.dev/core/v3"; import { TaskRunErrorCodes } from "@trigger.dev/core/v3"; import { generateFriendlyId } from "@trigger.dev/core/v3/isomorphic"; +import { setTimeout } from "node:timers/promises"; import { expect } from "vitest"; import { RunEngine } from "../index.js"; -import { setTimeout } from "node:timers/promises"; import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "./setup.js"; -import { DequeuedMessage } from "@trigger.dev/core/v3"; vi.setConfig({ testTimeout: 60_000 }); @@ -50,7 +50,7 @@ describe("RunEngine batchTrigger", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -141,7 +141,7 @@ describe("RunEngine batchTrigger", () => { }); //complete the runs - const result1 = await engine.completeRunAttempt({ + const _result1 = await engine.completeRunAttempt({ runId: attempt1.run.id, snapshotId: attempt1.snapshot.id, completion: { @@ -151,7 +151,7 @@ describe("RunEngine batchTrigger", () => { outputType: "application/json", }, }); - const result2 = await engine.completeRunAttempt({ + const _result2 = await engine.completeRunAttempt({ runId: attempt2.run.id, snapshotId: attempt2.snapshot.id, completion: { diff --git a/internal-packages/run-engine/src/engine/tests/batchTriggerAndWait.test.ts b/internal-packages/run-engine/src/engine/tests/batchTriggerAndWait.test.ts index 26ec7b4f0dd..c965fe85246 100644 --- a/internal-packages/run-engine/src/engine/tests/batchTriggerAndWait.test.ts +++ b/internal-packages/run-engine/src/engine/tests/batchTriggerAndWait.test.ts @@ -86,7 +86,7 @@ describe("RunEngine batchTriggerAndWait", () => { //dequeue parent await setTimeout(500); - const dequeued = await engine.dequeueFromWorkerQueue({ + const _dequeued = await engine.dequeueFromWorkerQueue({ consumerId: "test_12345", workerQueue: "main", }); @@ -94,7 +94,7 @@ describe("RunEngine batchTriggerAndWait", () => { //create an attempt const initialExecutionData = await engine.getRunExecutionData({ runId: parentRun.id }); assertNonNullable(initialExecutionData); - const attemptResult = await engine.startRunAttempt({ + const _attemptResult = await engine.startRunAttempt({ runId: parentRun.id, snapshotId: initialExecutionData.snapshot.id, }); @@ -440,7 +440,7 @@ describe("RunEngine batchTriggerAndWait", () => { //dequeue parent await setTimeout(500); - const dequeued = await engine.dequeueFromWorkerQueue({ + const _dequeued = await engine.dequeueFromWorkerQueue({ consumerId: "test_12345", workerQueue: "main", }); @@ -448,7 +448,7 @@ describe("RunEngine batchTriggerAndWait", () => { //create an attempt const initialExecutionData = await engine.getRunExecutionData({ runId: parentRun.id }); assertNonNullable(initialExecutionData); - const attemptResult = await engine.startRunAttempt({ + const _attemptResult = await engine.startRunAttempt({ runId: parentRun.id, snapshotId: initialExecutionData.snapshot.id, }); @@ -546,7 +546,7 @@ describe("RunEngine batchTriggerAndWait", () => { expect(parentExecutionDataAfterBatchChildComplete.completedWaitpoints.length).toBe(2); //now triggerAndWait - const triggerAndWaitChildRun = await engine.trigger( + const _triggerAndWaitChildRun = await engine.trigger( { number: 1, friendlyId: "run_c123456", diff --git a/internal-packages/run-engine/src/engine/tests/cancelling.test.ts b/internal-packages/run-engine/src/engine/tests/cancelling.test.ts index 55f52aed172..a1d281e4b12 100644 --- a/internal-packages/run-engine/src/engine/tests/cancelling.test.ts +++ b/internal-packages/run-engine/src/engine/tests/cancelling.test.ts @@ -3,7 +3,7 @@ import { trace } from "@internal/tracing"; import { expect } from "vitest"; import { RunEngine } from "../index.js"; import { setTimeout } from "timers/promises"; -import { EventBusEventArgs } from "../eventBus.js"; +import type { EventBusEventArgs } from "../eventBus.js"; import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "./setup.js"; vi.setConfig({ testTimeout: 60_000 }); @@ -119,7 +119,7 @@ describe("RunEngine cancelling", () => { }); //start the child run - const childAttempt = await engine.startRunAttempt({ + const _childAttempt = await engine.startRunAttempt({ runId: childRun.id, snapshotId: dequeuedChild[0].snapshot.id, }); @@ -151,7 +151,7 @@ describe("RunEngine cancelling", () => { }); // call completeAttempt manually (this will happen from the worker) - const completeResult = await engine.completeRunAttempt({ + const _completeResult = await engine.completeRunAttempt({ runId: parentRun.id, snapshotId: executionData!.snapshot.id, completion: { diff --git a/internal-packages/run-engine/src/engine/tests/checkpoints.test.ts b/internal-packages/run-engine/src/engine/tests/checkpoints.test.ts index ed6e1699b35..1eb5433ed48 100644 --- a/internal-packages/run-engine/src/engine/tests/checkpoints.test.ts +++ b/internal-packages/run-engine/src/engine/tests/checkpoints.test.ts @@ -3,7 +3,7 @@ import { trace } from "@internal/tracing"; import { expect } from "vitest"; import { RunEngine } from "../index.js"; import { setTimeout } from "node:timers/promises"; -import { EventBusEventArgs } from "../eventBus.js"; +import type { EventBusEventArgs } from "../eventBus.js"; import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "./setup.js"; import { generateFriendlyId } from "@trigger.dev/core/v3/isomorphic"; @@ -49,7 +49,7 @@ describe("RunEngine checkpoints", () => { const taskIdentifier = "test-task"; // Create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -86,7 +86,7 @@ describe("RunEngine checkpoints", () => { assertNonNullable(dequeued[0]); // Create an attempt - const attemptResult = await engine.startRunAttempt({ + const _attemptResult = await engine.startRunAttempt({ runId: dequeued[0].run.id, snapshotId: dequeued[0].snapshot.id, }); @@ -225,7 +225,7 @@ describe("RunEngine checkpoints", () => { const taskIdentifier = "test-task"; // Create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -313,7 +313,7 @@ describe("RunEngine checkpoints", () => { try { const taskIdentifier = "test-task"; - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -350,7 +350,7 @@ describe("RunEngine checkpoints", () => { expect(dequeued1.length).toBe(1); assertNonNullable(dequeued1[0]); - const attemptResult1 = await engine.startRunAttempt({ + const _attemptResult1 = await engine.startRunAttempt({ runId: dequeued1[0].run.id, snapshotId: dequeued1[0].snapshot.id, }); @@ -400,7 +400,7 @@ describe("RunEngine checkpoints", () => { assertNonNullable(dequeued2[0]); // Continue execution from first checkpoint - const continueResult1 = await engine.continueRunExecution({ + const _continueResult1 = await engine.continueRunExecution({ runId: run.id, snapshotId: dequeued2[0].snapshot.id, }); @@ -518,7 +518,7 @@ describe("RunEngine checkpoints", () => { const taskIdentifier = "test-task"; // Create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -556,7 +556,7 @@ describe("RunEngine checkpoints", () => { assertNonNullable(dequeued[0]); // Create an attempt - const attemptResult = await engine.startRunAttempt({ + const _attemptResult = await engine.startRunAttempt({ runId: dequeued[0].run.id, snapshotId: dequeued[0].snapshot.id, }); @@ -668,7 +668,7 @@ describe("RunEngine checkpoints", () => { const taskIdentifier = "test-task"; // Create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -859,7 +859,7 @@ describe("RunEngine checkpoints", () => { //create an attempt const initialExecutionData = await engine.getRunExecutionData({ runId: parentRun.id }); assertNonNullable(initialExecutionData); - const attemptResult = await engine.startRunAttempt({ + const _attemptResult = await engine.startRunAttempt({ runId: parentRun.id, snapshotId: initialExecutionData.snapshot.id, }); diff --git a/internal-packages/run-engine/src/engine/tests/createFailedTaskRun.test.ts b/internal-packages/run-engine/src/engine/tests/createFailedTaskRun.test.ts index a6d2eba2a76..2ab6361d657 100644 --- a/internal-packages/run-engine/src/engine/tests/createFailedTaskRun.test.ts +++ b/internal-packages/run-engine/src/engine/tests/createFailedTaskRun.test.ts @@ -3,7 +3,7 @@ import { trace } from "@internal/tracing"; import { generateFriendlyId } from "@trigger.dev/core/v3/isomorphic"; import { expect } from "vitest"; import { RunEngine } from "../index.js"; -import { EventBusEventArgs } from "../eventBus.js"; +import type { EventBusEventArgs } from "../eventBus.js"; import { setupAuthenticatedEnvironment } from "./setup.js"; vi.setConfig({ testTimeout: 60_000 }); diff --git a/internal-packages/run-engine/src/engine/tests/delays.test.ts b/internal-packages/run-engine/src/engine/tests/delays.test.ts index 81e3641cd74..58612ba9144 100644 --- a/internal-packages/run-engine/src/engine/tests/delays.test.ts +++ b/internal-packages/run-engine/src/engine/tests/delays.test.ts @@ -45,7 +45,7 @@ describe("RunEngine delays", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -127,7 +127,7 @@ describe("RunEngine delays", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -229,7 +229,7 @@ describe("RunEngine delays", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -357,7 +357,7 @@ describe("RunEngine delays", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier diff --git a/internal-packages/run-engine/src/engine/tests/dequeuing.test.ts b/internal-packages/run-engine/src/engine/tests/dequeuing.test.ts index fd67ff2cf35..31f953dcf74 100644 --- a/internal-packages/run-engine/src/engine/tests/dequeuing.test.ts +++ b/internal-packages/run-engine/src/engine/tests/dequeuing.test.ts @@ -1,11 +1,11 @@ import { assertNonNullable, containerTest } from "@internal/testcontainers"; import { trace } from "@internal/tracing"; -import { DequeuedMessage } from "@trigger.dev/core/v3"; +import type { DequeuedMessage } from "@trigger.dev/core/v3"; import { generateFriendlyId } from "@trigger.dev/core/v3/isomorphic"; -import { PrismaClientOrTransaction } from "@trigger.dev/database"; +import type { PrismaClientOrTransaction } from "@trigger.dev/database"; import { expect } from "vitest"; import { setTimeout } from "node:timers/promises"; -import { MinimalAuthenticatedEnvironment } from "../../shared/index.js"; +import type { MinimalAuthenticatedEnvironment } from "../../shared/index.js"; import { RunEngine } from "../index.js"; import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "./setup.js"; diff --git a/internal-packages/run-engine/src/engine/tests/getSnapshotsSince.test.ts b/internal-packages/run-engine/src/engine/tests/getSnapshotsSince.test.ts index f48c7c37c91..5a21bd784a4 100644 --- a/internal-packages/run-engine/src/engine/tests/getSnapshotsSince.test.ts +++ b/internal-packages/run-engine/src/engine/tests/getSnapshotsSince.test.ts @@ -1,20 +1,12 @@ import { containerTest } from "@internal/testcontainers"; import { trace } from "@internal/tracing"; -import { expect, describe } from "vitest"; -import { RunEngine } from "../index.js"; -import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "./setup.js"; +import { generateFriendlyId } from "@trigger.dev/core/v3/isomorphic"; import { setTimeout } from "node:timers/promises"; -import { - generateTestScenarios, - type SnapshotTestScenario, -} from "./helpers/executionStateMachine.js"; -import { - createWaitpointsWithOutput, - setupTestScenario, - generateLargeOutput, -} from "./helpers/snapshotTestHelpers.js"; +import { describe, expect } from "vitest"; +import { RunEngine } from "../index.js"; import { copySnapshotsToReplica, createTestMetricsMeter } from "./helpers/replicaTestHelpers.js"; -import { generateFriendlyId } from "@trigger.dev/core/v3/isomorphic"; +import { setupTestScenario } from "./helpers/snapshotTestHelpers.js"; +import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "./setup.js"; vi.setConfig({ testTimeout: 120_000 }); @@ -79,7 +71,7 @@ describe("RunEngine getSnapshotsSince", () => { ); await setTimeout(500); - const dequeued = await engine.dequeueFromWorkerQueue({ + const _dequeued = await engine.dequeueFromWorkerQueue({ consumerId: "test_empty", workerQueue: "main", }); @@ -224,7 +216,7 @@ describe("RunEngine getSnapshotsSince", () => { // The latest snapshot should have completedWaitpoints if the waitpoint was completed. // Note: This depends on timing - the finishWaitpoint job needs to have processed. - const latest = result![result!.length - 1]; + const _latest = result![result!.length - 1]; // completedWaitpoints may be empty if the waitpoint hasn't been processed yet // This is acceptable as the test is primarily about snapshot ordering @@ -351,7 +343,7 @@ describe("RunEngine getSnapshotsSince", () => { expect(result!.length).toBeGreaterThan(0); // Only the latest should have waitpoints - const latest = result![result!.length - 1]; + const _latest = result![result!.length - 1]; // Earlier snapshots must have empty completedWaitpoints for (let i = 0; i < result!.length - 1; i++) { diff --git a/internal-packages/run-engine/src/engine/tests/heartbeats.test.ts b/internal-packages/run-engine/src/engine/tests/heartbeats.test.ts index 3fe05289c49..c0123da89c5 100644 --- a/internal-packages/run-engine/src/engine/tests/heartbeats.test.ts +++ b/internal-packages/run-engine/src/engine/tests/heartbeats.test.ts @@ -54,7 +54,7 @@ describe("RunEngine heartbeats", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -84,7 +84,7 @@ describe("RunEngine heartbeats", () => { await setTimeout(500); //dequeue the run - const dequeued = await engine.dequeueFromWorkerQueue({ + const _dequeued = await engine.dequeueFromWorkerQueue({ consumerId: "test_12345", workerQueue: "main", }); @@ -173,7 +173,7 @@ describe("RunEngine heartbeats", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -203,7 +203,7 @@ describe("RunEngine heartbeats", () => { await setTimeout(500); //dequeue the run - const dequeued = await engine.dequeueFromWorkerQueue({ + const _dequeued = await engine.dequeueFromWorkerQueue({ consumerId: "test_12345", workerQueue: "main", }); @@ -295,7 +295,7 @@ describe("RunEngine heartbeats", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -428,7 +428,7 @@ describe("RunEngine heartbeats", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -541,7 +541,7 @@ describe("RunEngine heartbeats", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -694,7 +694,7 @@ describe("RunEngine heartbeats", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker(engine, authenticatedEnvironment, [ + const _backgroundWorker = await setupBackgroundWorker(engine, authenticatedEnvironment, [ taskIdentifier, "child-task", ]); @@ -734,7 +734,7 @@ describe("RunEngine heartbeats", () => { snapshotId: dequeued[0].snapshot.id, }); - const childRun = await engine.trigger( + const _childRun = await engine.trigger( { number: 1, friendlyId: "run_c1234", @@ -845,7 +845,7 @@ describe("RunEngine heartbeats", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier diff --git a/internal-packages/run-engine/src/engine/tests/helpers/executionStateMachine.ts b/internal-packages/run-engine/src/engine/tests/helpers/executionStateMachine.ts index 4dd92cdbd41..6e18e254cab 100644 --- a/internal-packages/run-engine/src/engine/tests/helpers/executionStateMachine.ts +++ b/internal-packages/run-engine/src/engine/tests/helpers/executionStateMachine.ts @@ -1,4 +1,4 @@ -import { TaskRunExecutionStatus } from "@trigger.dev/database"; +import type { TaskRunExecutionStatus } from "@trigger.dev/database"; /** * Defines valid execution status transitions for the Run Engine 2.0. diff --git a/internal-packages/run-engine/src/engine/tests/helpers/replicaTestHelpers.ts b/internal-packages/run-engine/src/engine/tests/helpers/replicaTestHelpers.ts index 3b94bae8887..85c1dc8ac78 100644 --- a/internal-packages/run-engine/src/engine/tests/helpers/replicaTestHelpers.ts +++ b/internal-packages/run-engine/src/engine/tests/helpers/replicaTestHelpers.ts @@ -4,7 +4,8 @@ import { MeterProvider, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics"; -import { Prisma, PrismaClient } from "@trigger.dev/database"; +import type { PrismaClient } from "@trigger.dev/database"; +import { Prisma } from "@trigger.dev/database"; /** * Copies a run's TaskRunExecutionSnapshot rows from the primary database into the diff --git a/internal-packages/run-engine/src/engine/tests/helpers/snapshotTestHelpers.ts b/internal-packages/run-engine/src/engine/tests/helpers/snapshotTestHelpers.ts index a4084a8c199..099d6b5bb39 100644 --- a/internal-packages/run-engine/src/engine/tests/helpers/snapshotTestHelpers.ts +++ b/internal-packages/run-engine/src/engine/tests/helpers/snapshotTestHelpers.ts @@ -1,5 +1,5 @@ import { generateFriendlyId, WaitpointId } from "@trigger.dev/core/v3/isomorphic"; -import { +import type { PrismaClient, TaskRunExecutionSnapshot, TaskRunExecutionStatus, diff --git a/internal-packages/run-engine/src/engine/tests/pendingVersion.test.ts b/internal-packages/run-engine/src/engine/tests/pendingVersion.test.ts index cd56f10c84c..b13438aa26c 100644 --- a/internal-packages/run-engine/src/engine/tests/pendingVersion.test.ts +++ b/internal-packages/run-engine/src/engine/tests/pendingVersion.test.ts @@ -3,7 +3,7 @@ import { trace } from "@internal/tracing"; import { RunEngine } from "../index.js"; import { setTimeout } from "timers/promises"; import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "./setup.js"; -import { DequeuedMessage } from "@trigger.dev/core/v3"; +import type { DequeuedMessage } from "@trigger.dev/core/v3"; import { PostgresPendingVersionRunIdLookup } from "./postgresPendingVersionLookup.js"; vi.setConfig({ testTimeout: 60_000 }); @@ -133,7 +133,7 @@ describe("RunEngine pending version", () => { expect(executionData2R2.run.status).toBe("PENDING_VERSION"); //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -284,7 +284,7 @@ describe("RunEngine pending version", () => { expect(executionData2R2.run.status).toBe("PENDING_VERSION"); //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier, diff --git a/internal-packages/run-engine/src/engine/tests/postgresPendingVersionLookup.ts b/internal-packages/run-engine/src/engine/tests/postgresPendingVersionLookup.ts index 33239ea8176..e15afdb00ac 100644 --- a/internal-packages/run-engine/src/engine/tests/postgresPendingVersionLookup.ts +++ b/internal-packages/run-engine/src/engine/tests/postgresPendingVersionLookup.ts @@ -1,4 +1,4 @@ -import { PrismaClient } from "@trigger.dev/database"; +import type { PrismaClient } from "@trigger.dev/database"; import type { PendingVersionRunIdLookup, PendingVersionRunIdLookupOptions, diff --git a/internal-packages/run-engine/src/engine/tests/priority.test.ts b/internal-packages/run-engine/src/engine/tests/priority.test.ts index 13e25186c28..f45a5d5e7ee 100644 --- a/internal-packages/run-engine/src/engine/tests/priority.test.ts +++ b/internal-packages/run-engine/src/engine/tests/priority.test.ts @@ -2,11 +2,11 @@ import { containerTest } from "@internal/testcontainers"; import { trace } from "@internal/tracing"; import { generateFriendlyId } from "@trigger.dev/core/v3/isomorphic"; import { RunEngine } from "../index.js"; -import { PrismaClientOrTransaction } from "@trigger.dev/database"; -import { MinimalAuthenticatedEnvironment } from "../../shared/index.js"; +import type { PrismaClientOrTransaction } from "@trigger.dev/database"; +import type { MinimalAuthenticatedEnvironment } from "../../shared/index.js"; import { setTimeout } from "timers/promises"; import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "./setup.js"; -import { DequeuedMessage } from "@trigger.dev/core/v3"; +import type { DequeuedMessage } from "@trigger.dev/core/v3"; vi.setConfig({ testTimeout: 60_000 }); @@ -53,7 +53,7 @@ describe("RunEngine priority", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -161,7 +161,7 @@ describe("RunEngine priority", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier diff --git a/internal-packages/run-engine/src/engine/tests/setup.ts b/internal-packages/run-engine/src/engine/tests/setup.ts index 85c11a2218e..b0b550d686b 100644 --- a/internal-packages/run-engine/src/engine/tests/setup.ts +++ b/internal-packages/run-engine/src/engine/tests/setup.ts @@ -3,15 +3,15 @@ import { generateFriendlyId, sanitizeQueueName, } from "@trigger.dev/core/v3/isomorphic"; -import { MachineConfig, RetryOptions } from "@trigger.dev/core/v3/schemas"; -import { +import type { MachineConfig, RetryOptions } from "@trigger.dev/core/v3/schemas"; +import type { BackgroundWorkerTask, - Decimal, Prisma, PrismaClient, RunEngineVersion, RuntimeEnvironmentType, } from "@trigger.dev/database"; +import { Decimal } from "@trigger.dev/database"; import type { RunEngine } from "../index.js"; export type AuthenticatedEnvironment = Prisma.RuntimeEnvironmentGetPayload<{ @@ -205,7 +205,7 @@ export async function setupBackgroundWorker( } for (const queueName of queueOptions?.customQueues ?? []) { - const taskQueue = await engine.prisma.taskQueue.upsert({ + const _taskQueue = await engine.prisma.taskQueue.upsert({ where: { runtimeEnvironmentId_name: { name: queueName, diff --git a/internal-packages/run-engine/src/engine/tests/trigger.test.ts b/internal-packages/run-engine/src/engine/tests/trigger.test.ts index 3bd0c833d1b..9005c120581 100644 --- a/internal-packages/run-engine/src/engine/tests/trigger.test.ts +++ b/internal-packages/run-engine/src/engine/tests/trigger.test.ts @@ -1,7 +1,7 @@ import { assertNonNullable, containerTest } from "@internal/testcontainers"; import { trace } from "@internal/tracing"; import { expect } from "vitest"; -import { EventBusEventArgs } from "../eventBus.js"; +import type { EventBusEventArgs } from "../eventBus.js"; import { RunEngine } from "../index.js"; import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "./setup.js"; import { setTimeout } from "node:timers/promises"; @@ -48,7 +48,7 @@ describe("RunEngine trigger()", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -239,7 +239,7 @@ describe("RunEngine trigger()", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier diff --git a/internal-packages/run-engine/src/engine/tests/triggerAndWait.test.ts b/internal-packages/run-engine/src/engine/tests/triggerAndWait.test.ts index b874d3f4cac..ad4c32c7ba7 100644 --- a/internal-packages/run-engine/src/engine/tests/triggerAndWait.test.ts +++ b/internal-packages/run-engine/src/engine/tests/triggerAndWait.test.ts @@ -74,7 +74,7 @@ describe("RunEngine triggerAndWait", () => { //dequeue parent await setTimeout(500); - const dequeued = await engine.dequeueFromWorkerQueue({ + const _dequeued = await engine.dequeueFromWorkerQueue({ consumerId: "test_12345", workerQueue: "main", }); @@ -82,7 +82,7 @@ describe("RunEngine triggerAndWait", () => { //create an attempt const initialExecutionData = await engine.getRunExecutionData({ runId: parentRun.id }); assertNonNullable(initialExecutionData); - const attemptResult = await engine.startRunAttempt({ + const _attemptResult = await engine.startRunAttempt({ runId: parentRun.id, snapshotId: initialExecutionData.snapshot.id, }); @@ -268,7 +268,7 @@ describe("RunEngine triggerAndWait", () => { consumerId: "test_12345", workerQueue: "main", }); - const attemptResult = await engine.startRunAttempt({ + const _attemptResult = await engine.startRunAttempt({ runId: parentRun1.id, snapshotId: dequeued[0].snapshot.id, }); @@ -358,7 +358,7 @@ describe("RunEngine triggerAndWait", () => { }); //create the 2nd parent attempt - const attemptResultParent2 = await engine.startRunAttempt({ + const _attemptResultParent2 = await engine.startRunAttempt({ runId: parentRun2.id, snapshotId: dequeued2[0].snapshot.id, }); diff --git a/internal-packages/run-engine/src/engine/tests/ttl.test.ts b/internal-packages/run-engine/src/engine/tests/ttl.test.ts index 52b26452070..0ee62b5bf10 100644 --- a/internal-packages/run-engine/src/engine/tests/ttl.test.ts +++ b/internal-packages/run-engine/src/engine/tests/ttl.test.ts @@ -4,7 +4,7 @@ import { expect } from "vitest"; import { Decimal } from "@trigger.dev/database"; import { RunEngine } from "../index.js"; import { setTimeout } from "timers/promises"; -import { EventBusEventArgs } from "../eventBus.js"; +import type { EventBusEventArgs } from "../eventBus.js"; import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "./setup.js"; vi.setConfig({ testTimeout: 60_000 }); @@ -54,7 +54,7 @@ describe("RunEngine ttl", () => { const taskIdentifier = "test-task"; //create background worker - const backgroundWorker = await setupBackgroundWorker( + const _backgroundWorker = await setupBackgroundWorker( engine, authenticatedEnvironment, taskIdentifier @@ -1392,7 +1392,7 @@ describe("RunEngine ttl", () => { ); containerTest("expireRunsBatch handles non-existent runs", async ({ prisma, redisOptions }) => { - const authenticatedEnvironment = await setupAuthenticatedEnvironment(prisma, "PRODUCTION"); + const _authenticatedEnvironment = await setupAuthenticatedEnvironment(prisma, "PRODUCTION"); const engine = new RunEngine({ prisma, @@ -1521,7 +1521,7 @@ describe("RunEngine ttl", () => { // Dequeue and start parent await setTimeout(500); - const dequeued = await engine.dequeueFromWorkerQueue({ + const _dequeued = await engine.dequeueFromWorkerQueue({ consumerId: "test_12345", workerQueue: "main", }); @@ -1611,7 +1611,7 @@ describe("RunEngine ttl", () => { ); containerTest("expireRunsBatch handles empty array", async ({ prisma, redisOptions }) => { - const authenticatedEnvironment = await setupAuthenticatedEnvironment(prisma, "PRODUCTION"); + const _authenticatedEnvironment = await setupAuthenticatedEnvironment(prisma, "PRODUCTION"); const engine = new RunEngine({ prisma, diff --git a/internal-packages/run-engine/src/engine/tests/utils/engineTest.ts b/internal-packages/run-engine/src/engine/tests/utils/engineTest.ts index 431a2a22c97..fee29415b91 100644 --- a/internal-packages/run-engine/src/engine/tests/utils/engineTest.ts +++ b/internal-packages/run-engine/src/engine/tests/utils/engineTest.ts @@ -1,21 +1,21 @@ -import { TestContext, test, TestAPI } from "vitest"; +import { type TestContext, type TestAPI, test } from "vitest"; import { + type StartedNetwork, + type StartedPostgreSqlContainer, + type StartedRedisContainer, logCleanup, network, postgresContainer, prisma, redisContainer, redisOptions, - StartedNetwork, - StartedPostgreSqlContainer, - StartedRedisContainer, type PostgresAndRedisContext, } from "@internal/testcontainers"; import { RunEngine } from "../../index.js"; -import { PrismaClient } from "@trigger.dev/database"; -import { RedisOptions } from "@internal/redis"; +import type { PrismaClient } from "@trigger.dev/database"; +import type { RedisOptions } from "@internal/redis"; import { trace } from "@internal/tracing"; -import { RunEngineOptions } from "../../types.js"; +import type { RunEngineOptions } from "../../types.js"; type Use = (value: T) => Promise; diff --git a/internal-packages/run-engine/src/engine/tests/waitpoints.test.ts b/internal-packages/run-engine/src/engine/tests/waitpoints.test.ts index 55e1b0d0836..39cd9ba990a 100644 --- a/internal-packages/run-engine/src/engine/tests/waitpoints.test.ts +++ b/internal-packages/run-engine/src/engine/tests/waitpoints.test.ts @@ -3,7 +3,7 @@ import { trace } from "@internal/tracing"; import { expect } from "vitest"; import { RunEngine } from "../index.js"; import { setTimeout } from "node:timers/promises"; -import { EventBusEventArgs } from "../eventBus.js"; +import type { EventBusEventArgs } from "../eventBus.js"; import { isWaitpointOutputTimeout } from "@trigger.dev/core/v3"; import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "./setup.js"; @@ -216,7 +216,7 @@ describe("RunEngine Waitpoints", () => { }); expect(waitpoint.completedAfter!.toISOString()).toBe(date.toISOString()); - const result = await engine.blockRunWithWaitpoint({ + const _result = await engine.blockRunWithWaitpoint({ runId: run.id, waitpoints: [waitpoint.id], projectId: authenticatedEnvironment.project.id, @@ -1218,7 +1218,7 @@ describe("RunEngine Waitpoints", () => { consumerId: "test_snapshotsince", workerQueue: "main", }); - const attemptResult = await engine.startRunAttempt({ + const _attemptResult = await engine.startRunAttempt({ runId: dequeued[0].run.id, snapshotId: dequeued[0].snapshot.id, }); @@ -1286,7 +1286,7 @@ describe("RunEngine Waitpoints", () => { snapshotId: "invalid-id", }); expect(sinceInvalid).toBeNull(); - } catch (e) { + } catch (_e) { threw = true; } // should never throw diff --git a/internal-packages/run-engine/src/engine/types.ts b/internal-packages/run-engine/src/engine/types.ts index a65eca347c6..dd6e51d9ad1 100644 --- a/internal-packages/run-engine/src/engine/types.ts +++ b/internal-packages/run-engine/src/engine/types.ts @@ -1,22 +1,22 @@ import { type RedisOptions } from "@internal/redis"; -import { Meter, Tracer } from "@internal/tracing"; -import { Logger, LogLevel } from "@trigger.dev/core/logger"; -import { +import type { Meter, Tracer } from "@internal/tracing"; +import type { Logger, LogLevel } from "@trigger.dev/core/logger"; +import type { MachinePreset, MachinePresetName, RetryOptions, TriggerTraceContext, } from "@trigger.dev/core/v3"; -import { PrismaClient, PrismaReplicaClient, TaskRun, Waitpoint } from "@trigger.dev/database"; +import type { PrismaClient, PrismaReplicaClient, TaskRun, Waitpoint } from "@trigger.dev/database"; import { - Worker, + type Worker, type WorkerConcurrencyOptions, type GlobalRateLimiter, } from "@trigger.dev/redis-worker"; -import { FairQueueSelectionStrategyOptions } from "../run-queue/fairQueueSelectionStrategy.js"; -import { MinimalAuthenticatedEnvironment } from "../shared/index.js"; -import { LockRetryConfig } from "./locking.js"; -import { workerCatalog } from "./workerCatalog.js"; +import type { FairQueueSelectionStrategyOptions } from "../run-queue/fairQueueSelectionStrategy.js"; +import type { MinimalAuthenticatedEnvironment } from "../shared/index.js"; +import type { LockRetryConfig } from "./locking.js"; +import type { workerCatalog } from "./workerCatalog.js"; import { type BillingPlan } from "./billingCache.js"; import type { DRRConfig } from "../batch-queue/types.js"; import type { PendingVersionRunIdLookup } from "./services/pendingVersionLookup.js"; diff --git a/internal-packages/run-engine/src/run-queue/fairQueueSelectionStrategy.ts b/internal-packages/run-engine/src/run-queue/fairQueueSelectionStrategy.ts index 87a2a2becf5..a9f21d2340d 100644 --- a/internal-packages/run-engine/src/run-queue/fairQueueSelectionStrategy.ts +++ b/internal-packages/run-engine/src/run-queue/fairQueueSelectionStrategy.ts @@ -1,4 +1,4 @@ -import { createRedisClient, Redis, type RedisOptions } from "@internal/redis"; +import { type Redis, createRedisClient, type RedisOptions } from "@internal/redis"; import { startSpan, type Tracer } from "@internal/tracing"; import { createCache, @@ -9,7 +9,7 @@ import { } from "@internal/cache"; import { randomUUID } from "crypto"; import seedrandom from "seedrandom"; -import { +import type { EnvDescriptor, EnvQueues, RunQueueKeyProducer, diff --git a/internal-packages/run-engine/src/run-queue/index.test.ts b/internal-packages/run-engine/src/run-queue/index.test.ts index 81aa60b6872..ec731b30686 100644 --- a/internal-packages/run-engine/src/run-queue/index.test.ts +++ b/internal-packages/run-engine/src/run-queue/index.test.ts @@ -4,7 +4,7 @@ import { Logger } from "@trigger.dev/core/logger"; import { describe } from "node:test"; import { setTimeout } from "node:timers/promises"; import { RunQueue } from "./index.js"; -import { InputPayload } from "./types.js"; +import type { InputPayload } from "./types.js"; import { createRedisClient } from "@internal/redis"; import { FairQueueSelectionStrategy } from "./fairQueueSelectionStrategy.js"; import { RunQueueFullKeyProducer } from "./keyProducer.js"; @@ -658,7 +658,7 @@ describe("RunQueue", () => { try { await queue.quit(); await redis.quit(); - } catch (e) {} + } catch (_e) {} } }); @@ -895,7 +895,7 @@ describe("RunQueue", () => { try { await queue.quit(); await redis.quit(); - } catch (e) {} + } catch (_e) {} } }); @@ -956,7 +956,7 @@ describe("RunQueue", () => { try { await queue.quit(); await redis.quit(); - } catch (e) {} + } catch (_e) {} } }); @@ -1056,7 +1056,7 @@ describe("RunQueue", () => { try { await queue.quit(); await redis.quit(); - } catch (e) {} + } catch (_e) {} } }); }); diff --git a/internal-packages/run-engine/src/run-queue/index.ts b/internal-packages/run-engine/src/run-queue/index.ts index c1003357579..a0571206538 100644 --- a/internal-packages/run-engine/src/run-queue/index.ts +++ b/internal-packages/run-engine/src/run-queue/index.ts @@ -5,44 +5,45 @@ import { type RedisOptions, type Result, } from "@internal/redis"; -import { +import type { Attributes, - context, - getMeter, Meter, ObservableResult, + Span, + SpanOptions, + Tracer, +} from "@internal/tracing"; +import { + context, + getMeter, propagation, SEMATTRS_MESSAGE_ID, SEMATTRS_MESSAGING_OPERATION, SEMATTRS_MESSAGING_SYSTEM, - Span, SpanKind, - SpanOptions, - Tracer, ValueType, } from "@internal/tracing"; import { promiseWithResolvers, tryCatch } from "@trigger.dev/core"; -import { Logger, LogLevel } from "@trigger.dev/core/logger"; +import type { LogLevel } from "@trigger.dev/core/logger"; +import { Logger } from "@trigger.dev/core/logger"; import { calculateNextRetryDelay, flattenAttributes } from "@trigger.dev/core/v3"; import { type RetryOptions } from "@trigger.dev/core/v3/schemas"; import { Decimal } from "@trigger.dev/database"; import { CronSchema, Worker, type WorkerConcurrencyOptions } from "@trigger.dev/redis-worker"; import { nanoid } from "nanoid"; -import { Readable } from "node:stream"; +import type { Readable } from "node:stream"; import { setInterval, setTimeout } from "node:timers/promises"; import { z } from "zod"; -import { - attributesFromAuthenticatedEnv, - MinimalAuthenticatedEnvironment, -} from "../shared/index.js"; -import { +import type { MinimalAuthenticatedEnvironment } from "../shared/index.js"; +import { attributesFromAuthenticatedEnv } from "../shared/index.js"; +import type { InputPayload, - OutputPayload, OutputPayloadV2, RunQueueKeyProducer, RunQueueKeyProducerEnvironment, RunQueueSelectionStrategy, } from "./types.js"; +import { OutputPayload } from "./types.js"; import { WorkerQueueResolver } from "./workerQueueResolver.js"; const SemanticAttributes = { @@ -5167,7 +5168,7 @@ end function safeJsonParse(rawMessage: string): unknown { try { return JSON.parse(rawMessage); - } catch (e) { + } catch (_e) { return undefined; } } diff --git a/internal-packages/run-engine/src/run-queue/keyProducer.ts b/internal-packages/run-engine/src/run-queue/keyProducer.ts index dc6c9e7b77a..b185435f6f6 100644 --- a/internal-packages/run-engine/src/run-queue/keyProducer.ts +++ b/internal-packages/run-engine/src/run-queue/keyProducer.ts @@ -1,5 +1,9 @@ -import type { RunQueueKeyProducerEnvironment } from "./types.js"; -import { EnvDescriptor, QueueDescriptor, RunQueueKeyProducer } from "./types.js"; +import { + type RunQueueKeyProducerEnvironment, + type EnvDescriptor, + type QueueDescriptor, + type RunQueueKeyProducer, +} from "./types.js"; import { jumpHash } from "@trigger.dev/core/v3/serverOnly"; const constants = { diff --git a/internal-packages/run-engine/src/run-queue/tests/ack.test.ts b/internal-packages/run-engine/src/run-queue/tests/ack.test.ts index 354e7ded948..b782aab3b93 100644 --- a/internal-packages/run-engine/src/run-queue/tests/ack.test.ts +++ b/internal-packages/run-engine/src/run-queue/tests/ack.test.ts @@ -6,7 +6,7 @@ import { setTimeout } from "node:timers/promises"; import { FairQueueSelectionStrategy } from "../fairQueueSelectionStrategy.js"; import { RunQueue } from "../index.js"; import { RunQueueFullKeyProducer } from "../keyProducer.js"; -import { InputPayload } from "../types.js"; +import type { InputPayload } from "../types.js"; import { Decimal } from "@trigger.dev/database"; const testOptions = { diff --git a/internal-packages/run-engine/src/run-queue/tests/ckCounters.test.ts b/internal-packages/run-engine/src/run-queue/tests/ckCounters.test.ts index c08b3a515e7..06d193ced8b 100644 --- a/internal-packages/run-engine/src/run-queue/tests/ckCounters.test.ts +++ b/internal-packages/run-engine/src/run-queue/tests/ckCounters.test.ts @@ -5,7 +5,7 @@ import { describe } from "vitest"; import { FairQueueSelectionStrategy } from "../fairQueueSelectionStrategy.js"; import { RunQueue } from "../index.js"; import { RunQueueFullKeyProducer } from "../keyProducer.js"; -import { InputPayload } from "../types.js"; +import type { InputPayload } from "../types.js"; import { Decimal } from "@trigger.dev/database"; // String form of the default counterTtlSeconds (86400). Tracked Lua scripts diff --git a/internal-packages/run-engine/src/run-queue/tests/ckIndex.test.ts b/internal-packages/run-engine/src/run-queue/tests/ckIndex.test.ts index 5d468bf0eb1..224540f4efb 100644 --- a/internal-packages/run-engine/src/run-queue/tests/ckIndex.test.ts +++ b/internal-packages/run-engine/src/run-queue/tests/ckIndex.test.ts @@ -1,13 +1,12 @@ -import { assertNonNullable, redisTest } from "@internal/testcontainers"; +import { redisTest } from "@internal/testcontainers"; import { trace } from "@internal/tracing"; import { Logger } from "@trigger.dev/core/logger"; +import { Decimal } from "@trigger.dev/database"; import { describe } from "node:test"; -import { setTimeout } from "node:timers/promises"; import { FairQueueSelectionStrategy } from "../fairQueueSelectionStrategy.js"; import { RunQueue } from "../index.js"; import { RunQueueFullKeyProducer } from "../keyProducer.js"; -import { InputPayload } from "../types.js"; -import { Decimal } from "@trigger.dev/database"; +import type { InputPayload } from "../types.js"; const testOptions = { name: "rq", diff --git a/internal-packages/run-engine/src/run-queue/tests/concurrencySweeper.test.ts b/internal-packages/run-engine/src/run-queue/tests/concurrencySweeper.test.ts index 739a6bb190b..67033aafdef 100644 --- a/internal-packages/run-engine/src/run-queue/tests/concurrencySweeper.test.ts +++ b/internal-packages/run-engine/src/run-queue/tests/concurrencySweeper.test.ts @@ -6,7 +6,7 @@ import { setTimeout } from "node:timers/promises"; import { FairQueueSelectionStrategy } from "../fairQueueSelectionStrategy.js"; import { RunQueue } from "../index.js"; import { RunQueueFullKeyProducer } from "../keyProducer.js"; -import { InputPayload } from "../types.js"; +import type { InputPayload } from "../types.js"; import { Decimal } from "@trigger.dev/database"; const testOptions = { diff --git a/internal-packages/run-engine/src/run-queue/tests/dequeueMessageFromWorkerQueue.test.ts b/internal-packages/run-engine/src/run-queue/tests/dequeueMessageFromWorkerQueue.test.ts index 9138215bbe9..83d8c7a723f 100644 --- a/internal-packages/run-engine/src/run-queue/tests/dequeueMessageFromWorkerQueue.test.ts +++ b/internal-packages/run-engine/src/run-queue/tests/dequeueMessageFromWorkerQueue.test.ts @@ -4,7 +4,7 @@ import { describe } from "node:test"; import { FairQueueSelectionStrategy } from "../fairQueueSelectionStrategy.js"; import { RunQueue } from "../index.js"; import { RunQueueFullKeyProducer } from "../keyProducer.js"; -import { InputPayload } from "../types.js"; +import type { InputPayload } from "../types.js"; import { setTimeout } from "node:timers/promises"; import { Decimal } from "@trigger.dev/database"; diff --git a/internal-packages/run-engine/src/run-queue/tests/enqueueMessage.test.ts b/internal-packages/run-engine/src/run-queue/tests/enqueueMessage.test.ts index e45c99b25c6..a12755b5fec 100644 --- a/internal-packages/run-engine/src/run-queue/tests/enqueueMessage.test.ts +++ b/internal-packages/run-engine/src/run-queue/tests/enqueueMessage.test.ts @@ -6,7 +6,7 @@ import { setTimeout } from "node:timers/promises"; import { FairQueueSelectionStrategy } from "../fairQueueSelectionStrategy.js"; import { RunQueue } from "../index.js"; import { RunQueueFullKeyProducer } from "../keyProducer.js"; -import { InputPayload } from "../types.js"; +import type { InputPayload } from "../types.js"; import { Decimal } from "@trigger.dev/database"; const testOptions = { diff --git a/internal-packages/run-engine/src/run-queue/tests/fairQueueSelectionStrategy.test.ts b/internal-packages/run-engine/src/run-queue/tests/fairQueueSelectionStrategy.test.ts index bbaa62016fd..5b2bdd8bf64 100644 --- a/internal-packages/run-engine/src/run-queue/tests/fairQueueSelectionStrategy.test.ts +++ b/internal-packages/run-engine/src/run-queue/tests/fairQueueSelectionStrategy.test.ts @@ -3,8 +3,9 @@ import { describe, expect, vi } from "vitest"; import { RUN_QUEUE_RESUME_PRIORITY_TIMESTAMP_OFFSET } from "../constants.js"; import { FairQueueSelectionStrategy } from "../fairQueueSelectionStrategy.js"; import { RunQueueFullKeyProducer } from "../keyProducer.js"; -import { EnvQueues, RunQueueKeyProducer } from "../types.js"; -import { createRedisClient, RedisOptions } from "@internal/redis"; +import type { EnvQueues, RunQueueKeyProducer } from "../types.js"; +import type { RedisOptions } from "@internal/redis"; +import { createRedisClient } from "@internal/redis"; vi.setConfig({ testTimeout: 60_000 }); // 30 seconds timeout @@ -250,7 +251,7 @@ describe("FairDequeuingStrategy", () => { const startDistribute2 = performance.now(); - const result2 = await strategy.distributeFairQueuesFromParentQueue( + const _result2 = await strategy.distributeFairQueuesFromParentQueue( "parent-queue", "consumer-1" ); @@ -264,7 +265,7 @@ describe("FairDequeuingStrategy", () => { const startDistribute3 = performance.now(); - const result3 = await strategy.distributeFairQueuesFromParentQueue( + const _result3 = await strategy.distributeFairQueuesFromParentQueue( "parent-queue", "consumer-1" ); @@ -408,13 +409,13 @@ describe("FairDequeuingStrategy", () => { expect(firstPositionStdDevEnvs).toBeLessThan(5); // Allow 5% standard deviation for envs // Verify that each org and env gets a fair chance at first position - for (const [orgId, stats] of Object.entries(orgStats)) { + for (const [_orgId, stats] of Object.entries(orgStats)) { const firstPositionPercentage = (stats.firstPosition / iterations) * 100; expect(firstPositionPercentage).toBeGreaterThan(expectedFirstPositionPercentage * 0.7); // Within 30% of expected expect(firstPositionPercentage).toBeLessThan(expectedFirstPositionPercentage * 1.3); } - for (const [envId, stats] of Object.entries(envStats)) { + for (const [_envId, stats] of Object.entries(envStats)) { const firstPositionPercentage = (stats.firstPosition / iterations) * 100; expect(firstPositionPercentage).toBeGreaterThan(expectedEnvFirstPositionPercentage * 0.7); // Within 30% of expected expect(firstPositionPercentage).toBeLessThan(expectedEnvFirstPositionPercentage * 1.3); diff --git a/internal-packages/run-engine/src/run-queue/tests/nack.test.ts b/internal-packages/run-engine/src/run-queue/tests/nack.test.ts index a1cf2740176..8711c816b1b 100644 --- a/internal-packages/run-engine/src/run-queue/tests/nack.test.ts +++ b/internal-packages/run-engine/src/run-queue/tests/nack.test.ts @@ -4,7 +4,7 @@ import { describe } from "node:test"; import { FairQueueSelectionStrategy } from "../fairQueueSelectionStrategy.js"; import { RunQueue } from "../index.js"; import { RunQueueFullKeyProducer } from "../keyProducer.js"; -import { InputPayload } from "../types.js"; +import type { InputPayload } from "../types.js"; import { setTimeout } from "node:timers/promises"; import { Decimal } from "@trigger.dev/database"; @@ -261,7 +261,7 @@ describe("RunQueue.nackMessage", () => { }); // Check the score of the message in the queue - const queueKey = queue.keys.queueKey(authenticatedEnvDev, messageDev.queue); + const _queueKey = queue.keys.queueKey(authenticatedEnvDev, messageDev.queue); const score = await queue.oldestMessageInQueue(authenticatedEnvDev, messageDev.queue); expect(typeof score).toBe("number"); if (typeof score !== "number") { diff --git a/internal-packages/run-engine/src/run-queue/tests/releaseConcurrency.test.ts b/internal-packages/run-engine/src/run-queue/tests/releaseConcurrency.test.ts index 45708213170..3085064e73c 100644 --- a/internal-packages/run-engine/src/run-queue/tests/releaseConcurrency.test.ts +++ b/internal-packages/run-engine/src/run-queue/tests/releaseConcurrency.test.ts @@ -4,7 +4,7 @@ import { Logger } from "@trigger.dev/core/logger"; import { FairQueueSelectionStrategy } from "../fairQueueSelectionStrategy.js"; import { RunQueue } from "../index.js"; import { RunQueueFullKeyProducer } from "../keyProducer.js"; -import { InputPayload } from "../types.js"; +import type { InputPayload } from "../types.js"; import { setTimeout } from "node:timers/promises"; import { Decimal } from "@trigger.dev/database"; diff --git a/internal-packages/run-engine/src/run-queue/tests/workerQueueResolver.test.ts b/internal-packages/run-engine/src/run-queue/tests/workerQueueResolver.test.ts index 3ea8f0ce714..77b66bb1eec 100644 --- a/internal-packages/run-engine/src/run-queue/tests/workerQueueResolver.test.ts +++ b/internal-packages/run-engine/src/run-queue/tests/workerQueueResolver.test.ts @@ -1,8 +1,8 @@ -import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; import { Logger } from "@trigger.dev/core/logger"; -import { WorkerQueueResolver, type WorkerQueueOverrides } from "../workerQueueResolver.js"; -import { OutputPayload, OutputPayloadV1, OutputPayloadV2 } from "../types.js"; import { RuntimeEnvironmentType } from "@trigger.dev/core/v3"; +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import type { OutputPayloadV1, OutputPayloadV2 } from "../types.js"; +import { WorkerQueueResolver, type WorkerQueueOverrides } from "../workerQueueResolver.js"; vi.setConfig({ testTimeout: 5_000 }); diff --git a/internal-packages/run-queue/src/run-queue/tests/nack.test.ts b/internal-packages/run-queue/src/run-queue/tests/nack.test.ts index c553fce4129..b91c31a8ae9 100644 --- a/internal-packages/run-queue/src/run-queue/tests/nack.test.ts +++ b/internal-packages/run-queue/src/run-queue/tests/nack.test.ts @@ -1,11 +1 @@ -import { redisTest } from "@internal/testcontainers"; -import { trace } from "@internal/tracing"; -import { Logger } from "@trigger.dev/core/logger"; -import { describe } from "node:test"; -import { FairQueueSelectionStrategy } from "../fairQueueSelectionStrategy.js"; -import { RunQueue } from "../index.js"; -import { RunQueueFullKeyProducer } from "../keyProducer.js"; -import { InputPayload } from "../types.js"; -import { createRedisClient } from "@internal/redis"; - // ... existing code ... diff --git a/internal-packages/run-store/src/PostgresRunStore.test.ts b/internal-packages/run-store/src/PostgresRunStore.test.ts index 49fcbfe4503..a0fc1760bc8 100644 --- a/internal-packages/run-store/src/PostgresRunStore.test.ts +++ b/internal-packages/run-store/src/PostgresRunStore.test.ts @@ -1,5 +1,5 @@ import { postgresTest } from "@internal/testcontainers"; -import type { PrismaClient } from "@trigger.dev/database"; +import type { Prisma, PrismaClient } from "@trigger.dev/database"; import { describe, expect } from "vitest"; import { PostgresRunStore } from "./PostgresRunStore.js"; import type { CreateCancelledRunInput, CreateFailedRunInput, CreateRunInput } from "./types.js"; @@ -147,7 +147,7 @@ describe("PostgresRunStore", () => { isTest: false, taskEventStore: "taskEvent", depth: 0, - error: error as unknown as import("@trigger.dev/database").Prisma.InputJsonValue, + error: error as unknown as Prisma.InputJsonValue, completedAt: cancelledAt, updatedAt: cancelledAt, attemptNumber: 0, @@ -215,7 +215,7 @@ describe("PostgresRunStore", () => { queue: "task/my-task", isTest: false, completedAt, - error: error as unknown as import("@trigger.dev/database").Prisma.InputJsonObject, + error: error as unknown as Prisma.InputJsonObject, depth: 0, taskEventStore: "taskEvent", }, diff --git a/internal-packages/schedule-engine/src/engine/index.ts b/internal-packages/schedule-engine/src/engine/index.ts index f891c3e6c57..277f4c3d87e 100644 --- a/internal-packages/schedule-engine/src/engine/index.ts +++ b/internal-packages/schedule-engine/src/engine/index.ts @@ -1,14 +1,7 @@ -import { - Counter, - getMeter, - getTracer, - Histogram, - Meter, - startSpan, - Tracer, -} from "@internal/tracing"; +import type { Counter, Histogram, Meter, Tracer } from "@internal/tracing"; +import { getMeter, getTracer, startSpan } from "@internal/tracing"; import { Logger } from "@trigger.dev/core/logger"; -import { PrismaClient } from "@trigger.dev/database"; +import type { PrismaClient } from "@trigger.dev/database"; import { Worker, type JobHandlerParams } from "@trigger.dev/redis-worker"; import { calculateDistributedExecutionTime } from "./distributedScheduling.js"; import { @@ -16,7 +9,7 @@ import { nextScheduledTimestamps, previousScheduledTimestamp, } from "./scheduleCalculation.js"; -import { +import type { RegisterScheduleInstanceParams, ScheduleEngineOptions, TriggerScheduledTaskCallback, diff --git a/internal-packages/schedule-engine/src/engine/types.ts b/internal-packages/schedule-engine/src/engine/types.ts index ba99b9f3633..bf0aeab4d76 100644 --- a/internal-packages/schedule-engine/src/engine/types.ts +++ b/internal-packages/schedule-engine/src/engine/types.ts @@ -1,7 +1,7 @@ -import { Logger } from "@trigger.dev/core/logger"; -import { Meter, Tracer } from "@internal/tracing"; -import { Prisma, PrismaClient } from "@trigger.dev/database"; -import { RedisOptions } from "@internal/redis"; +import type { Logger } from "@trigger.dev/core/logger"; +import type { Meter, Tracer } from "@internal/tracing"; +import type { Prisma, PrismaClient } from "@trigger.dev/database"; +import type { RedisOptions } from "@internal/redis"; export type SchedulingEnvironment = Prisma.RuntimeEnvironmentGetPayload<{ include: { project: true; organization: true; orgMember: true }; diff --git a/internal-packages/schedule-engine/test/scheduleEngine.test.ts b/internal-packages/schedule-engine/test/scheduleEngine.test.ts index c261697dacc..59598988338 100644 --- a/internal-packages/schedule-engine/test/scheduleEngine.test.ts +++ b/internal-packages/schedule-engine/test/scheduleEngine.test.ts @@ -2,7 +2,7 @@ import { containerTest } from "@internal/testcontainers"; import { trace } from "@internal/tracing"; import { setTimeout } from "timers/promises"; import { describe, expect, vi } from "vitest"; -import { TriggerScheduledTaskParams } from "../src/engine/types.js"; +import type { TriggerScheduledTaskParams } from "../src/engine/types.js"; import { ScheduleEngine } from "../src/index.js"; describe("ScheduleEngine Integration", () => { diff --git a/internal-packages/schedule-engine/test/scheduleEngine2.test.ts b/internal-packages/schedule-engine/test/scheduleEngine2.test.ts index 64936a89152..94274673b04 100644 --- a/internal-packages/schedule-engine/test/scheduleEngine2.test.ts +++ b/internal-packages/schedule-engine/test/scheduleEngine2.test.ts @@ -1,8 +1,7 @@ import { containerTest } from "@internal/testcontainers"; import { trace } from "@internal/tracing"; -import { setTimeout } from "timers/promises"; import { describe, expect, vi } from "vitest"; -import { TriggerScheduledTaskParams } from "../src/engine/types.js"; +import type { TriggerScheduledTaskParams } from "../src/engine/types.js"; import { ScheduleEngine } from "../src/index.js"; describe("ScheduleEngine Integration (part 2)", () => { diff --git a/internal-packages/schedule-engine/test/scheduleRecovery.test.ts b/internal-packages/schedule-engine/test/scheduleRecovery.test.ts index f70a0bafb9b..518e0ff3eba 100644 --- a/internal-packages/schedule-engine/test/scheduleRecovery.test.ts +++ b/internal-packages/schedule-engine/test/scheduleRecovery.test.ts @@ -1,7 +1,7 @@ import { containerTest } from "@internal/testcontainers"; import { trace } from "@internal/tracing"; import { describe, expect, vi } from "vitest"; -import { TriggerScheduledTaskParams } from "../src/engine/types.js"; +import type { TriggerScheduledTaskParams } from "../src/engine/types.js"; import { ScheduleEngine } from "../src/index.js"; describe("Schedule Recovery", () => { diff --git a/internal-packages/sdk-compat-tests/src/fixtures/esm-import/test.mjs b/internal-packages/sdk-compat-tests/src/fixtures/esm-import/test.mjs index a90aaaa1d88..815c9a8dcec 100644 --- a/internal-packages/sdk-compat-tests/src/fixtures/esm-import/test.mjs +++ b/internal-packages/sdk-compat-tests/src/fixtures/esm-import/test.mjs @@ -1,3 +1,4 @@ +// oxlint-disable import/no-duplicates /** * ESM Import Test Fixture * @@ -7,19 +8,20 @@ // Test main export import { - task, - logger, - schedules, - runs, configure, + logger, + metadata, queue, retry, - wait, - metadata, + runs, + schedules, tags, + task, + wait, } from "@trigger.dev/sdk"; // Test /v3 subpath (legacy, but should still work) +// oxlint-disable-next-line import/no-duplicates import { task as taskV3 } from "@trigger.dev/sdk/v3"; // Validate exports are functions/objects diff --git a/internal-packages/sdk-compat-tests/src/fixtures/typescript/test.ts b/internal-packages/sdk-compat-tests/src/fixtures/typescript/test.ts index bfcb4892abe..f920f51c1f0 100644 --- a/internal-packages/sdk-compat-tests/src/fixtures/typescript/test.ts +++ b/internal-packages/sdk-compat-tests/src/fixtures/typescript/test.ts @@ -5,23 +5,9 @@ * It tests type inference, generics, and type-only imports. */ -import { - task, - logger, - schedules, - runs, - configure, - queue, - retry, - wait, - metadata, - tags, - type Context, - type RetryOptions, -} from "@trigger.dev/sdk"; +import { queue, task, type RetryOptions } from "@trigger.dev/sdk"; // Type-only import test -import type { ApiClientConfiguration } from "@trigger.dev/sdk"; // Test typed task with payload interface MyPayload { @@ -38,7 +24,7 @@ const typedTask = task({ id: "typescript-test-task", run: async (payload: MyPayload, { ctx }): Promise => { // Verify context type - const runId: string = ctx.run.id; + const _runId: string = ctx.run.id; return { processed: true, @@ -52,13 +38,13 @@ type TaskPayload = Parameters[0]; type _PayloadCheck = TaskPayload extends MyPayload ? true : never; // Test queue definition -const myQueue = queue({ +const _myQueue = queue({ name: "test-queue", concurrencyLimit: 10, }); // Test retry options type -const retryOpts: RetryOptions = { +const _retryOpts: RetryOptions = { maxAttempts: 3, factor: 2, minTimeoutInMs: 1000, diff --git a/internal-packages/sdk-compat-tests/src/tests/import.test.ts b/internal-packages/sdk-compat-tests/src/tests/import.test.ts index 7d81ccce259..8248c73e926 100644 --- a/internal-packages/sdk-compat-tests/src/tests/import.test.ts +++ b/internal-packages/sdk-compat-tests/src/tests/import.test.ts @@ -5,16 +5,16 @@ * different module systems (ESM and CJS). */ -import { describe, it, expect, beforeAll } from "vitest"; import { execa, type Options as ExecaOptions } from "execa"; -import { resolve, dirname } from "path"; +import { dirname, resolve } from "path"; import { fileURLToPath } from "url"; +import { describe, expect, it } from "vitest"; const __dirname = dirname(fileURLToPath(import.meta.url)); const fixturesDir = resolve(__dirname, "../fixtures"); // Find the SDK package in the monorepo -const sdkDir = resolve(__dirname, "../../../../packages/trigger-sdk"); +const _sdkDir = resolve(__dirname, "../../../../packages/trigger-sdk"); // Common execa options const execaOpts: ExecaOptions = { diff --git a/internal-packages/sso/src/fallback.ts b/internal-packages/sso/src/fallback.ts index 6d98e7c6573..96eab9563c4 100644 --- a/internal-packages/sso/src/fallback.ts +++ b/internal-packages/sso/src/fallback.ts @@ -4,6 +4,7 @@ import type { SsoCompleteError, SsoController, SsoDecisionError, + SsoFlow, SsoMutationError, SsoPortalError, SsoProfile, @@ -97,7 +98,7 @@ class SsoFallbackController implements SsoController { beginAuthorization(_params: { email: string; redirectTo: string; - flow: import("@trigger.dev/plugins").SsoFlow; + flow: SsoFlow; }): ResultAsync<{ url: string }, SsoBeginError> { return errAsync("feature_disabled" as const); } @@ -106,7 +107,7 @@ class SsoFallbackController implements SsoController { { profile: SsoProfile; redirectTo: string; - flow: import("@trigger.dev/plugins").SsoFlow; + flow: SsoFlow; }, SsoCompleteError > { diff --git a/internal-packages/testcontainers/src/clickhouse.ts b/internal-packages/testcontainers/src/clickhouse.ts index 29453b68acc..1a28f76913d 100644 --- a/internal-packages/testcontainers/src/clickhouse.ts +++ b/internal-packages/testcontainers/src/clickhouse.ts @@ -1,12 +1,8 @@ -import { ClickHouseClient } from "@clickhouse/client"; +import type { ClickHouseClient } from "@clickhouse/client"; import { readdir, readFile } from "node:fs/promises"; import { resolve } from "node:path"; -import { - AbstractStartedContainer, - GenericContainer, - StartedTestContainer, - Wait, -} from "testcontainers"; +import type { StartedTestContainer } from "testcontainers"; +import { AbstractStartedContainer, GenericContainer, Wait } from "testcontainers"; const CLICKHOUSE_PORT = 9000; const CLICKHOUSE_HTTP_PORT = 8123; diff --git a/internal-packages/testcontainers/src/index.ts b/internal-packages/testcontainers/src/index.ts index 4927c162fe0..b8071261afe 100644 --- a/internal-packages/testcontainers/src/index.ts +++ b/internal-packages/testcontainers/src/index.ts @@ -1,9 +1,19 @@ -import { PostgreSqlContainer, StartedPostgreSqlContainer } from "@testcontainers/postgresql"; -import { StartedRedisContainer } from "@testcontainers/redis"; +import { type ClickHouseClient, createClient } from "@clickhouse/client"; +import { type StartedPostgreSqlContainer, PostgreSqlContainer } from "@testcontainers/postgresql"; +import type { StartedRedisContainer } from "@testcontainers/redis"; import { PrismaClient } from "@trigger.dev/database"; -import Redis, { RedisOptions } from "ioredis"; -import { Network, type StartedNetwork } from "testcontainers"; -import { TestContext, test } from "vitest"; +import Redis, { type RedisOptions } from "ioredis"; +import path from "path"; +import { type StartedNetwork, Network } from "testcontainers"; +import { type TestContext, test } from "vitest"; +import { + type StartedClickHouseContainer, + ClickHouseContainer, + runClickhouseMigrations, + truncateClickhouseTables, +} from "./clickhouse"; +import { getTaskMetadata, logCleanup, logSetup } from "./logs"; +import { type MinIOConnectionConfig, type StartedMinIOContainer, MinIOContainer } from "./minio"; import { createClickHouseContainer, createElectricContainer, @@ -15,16 +25,6 @@ import { withCiResourceLimits, withContainerSetup, } from "./utils"; -import { getTaskMetadata, logCleanup, logSetup } from "./logs"; -import path from "path"; -import { - ClickHouseContainer, - StartedClickHouseContainer, - runClickhouseMigrations, - truncateClickhouseTables, -} from "./clickhouse"; -import { MinIOContainer, StartedMinIOContainer, type MinIOConnectionConfig } from "./minio"; -import { ClickHouseClient, createClient } from "@clickhouse/client"; export { assertNonNullable, createPostgresContainer } from "./utils"; export { logCleanup }; @@ -51,17 +51,12 @@ export type PostgresAndRedisContext = NetworkContext & PostgresContext & RedisCo export type ContainerWithElectricAndRedisContext = ContainerContext & ElectricContext; export type ContainerWithElectricContext = NetworkContext & PostgresContext & ElectricContext; -type MinIOContext = NetworkContext & { - minioContainer: StartedMinIOContainer; - minioConfig: MinIOConnectionConfig; -}; - export type { + StartedClickHouseContainer, + StartedMinIOContainer, StartedNetwork, StartedPostgreSqlContainer, StartedRedisContainer, - StartedClickHouseContainer, - StartedMinIOContainer, }; type Use = (value: T) => Promise; @@ -96,7 +91,7 @@ export const postgresContainer = async ( { network, task }: { network: StartedNetwork } & TestContext, use: Use ) => { - const { container, metadata } = await withContainerSetup({ + const { container, metadata: _metadata } = await withContainerSetup({ name: "postgresContainer", task, setup: createPostgresContainer(network), @@ -273,7 +268,7 @@ export const redisContainer = async ( { network, task }: { network: StartedNetwork } & TestContext, use: Use ) => { - const { container, metadata } = await withContainerSetup({ + const { container, metadata: _metadata } = await withContainerSetup({ name: "redisContainer", task, setup: createRedisContainer({ @@ -381,7 +376,11 @@ const electricOrigin = async ( }: { postgresContainer: StartedPostgreSqlContainer; network: StartedNetwork } & TestContext, use: Use ) => { - const { origin, container, metadata } = await withContainerSetup({ + const { + origin, + container, + metadata: _metadata, + } = await withContainerSetup({ name: "electricContainer", task, setup: createElectricContainer(postgresContainer, network), @@ -394,7 +393,7 @@ const clickhouseContainer = async ( { network, task }: { network: StartedNetwork } & TestContext, use: Use ) => { - const { container, metadata } = await withContainerSetup({ + const { container, metadata: _metadata } = await withContainerSetup({ name: "clickhouseContainer", task, setup: createClickHouseContainer(network), diff --git a/internal-packages/testcontainers/src/logs.ts b/internal-packages/testcontainers/src/logs.ts index 3ea3e5fe8a6..7a15c892791 100644 --- a/internal-packages/testcontainers/src/logs.ts +++ b/internal-packages/testcontainers/src/logs.ts @@ -1,7 +1,8 @@ import { env, isCI } from "std-env"; -import { TestContext } from "vitest"; -import { DockerDiagnostics, getDockerDiagnostics } from "./docker"; -import { StartedTestContainer } from "testcontainers"; +import type { TestContext } from "vitest"; +import type { DockerDiagnostics } from "./docker"; +import { getDockerDiagnostics } from "./docker"; +import type { StartedTestContainer } from "testcontainers"; let setupOrder = 0; diff --git a/internal-packages/testcontainers/src/minio.ts b/internal-packages/testcontainers/src/minio.ts index f7ef2d1275e..a7546852563 100644 --- a/internal-packages/testcontainers/src/minio.ts +++ b/internal-packages/testcontainers/src/minio.ts @@ -1,9 +1,5 @@ -import { - AbstractStartedContainer, - GenericContainer, - StartedTestContainer, - Wait, -} from "testcontainers"; +import type { StartedTestContainer } from "testcontainers"; +import { AbstractStartedContainer, GenericContainer, Wait } from "testcontainers"; import { x } from "tinyexec"; const MINIO_PORT = 9000; diff --git a/internal-packages/testcontainers/src/utils.ts b/internal-packages/testcontainers/src/utils.ts index 4183e85b40b..21509208a62 100644 --- a/internal-packages/testcontainers/src/utils.ts +++ b/internal-packages/testcontainers/src/utils.ts @@ -1,11 +1,14 @@ import { createClient } from "@clickhouse/client"; -import { PostgreSqlContainer, StartedPostgreSqlContainer } from "@testcontainers/postgresql"; -import { RedisContainer, StartedRedisContainer } from "@testcontainers/redis"; +import type { StartedPostgreSqlContainer } from "@testcontainers/postgresql"; +import { PostgreSqlContainer } from "@testcontainers/postgresql"; +import type { StartedRedisContainer } from "@testcontainers/redis"; +import { RedisContainer } from "@testcontainers/redis"; import { tryCatch } from "@trigger.dev/core"; import Redis from "ioredis"; import path from "path"; import { isDebug } from "std-env"; -import { GenericContainer, StartedNetwork, StartedTestContainer, Wait } from "testcontainers"; +import type { StartedNetwork, StartedTestContainer } from "testcontainers"; +import { GenericContainer, Wait } from "testcontainers"; import { x } from "tinyexec"; import type { TestContext } from "vitest"; import { ClickHouseContainer, runClickhouseMigrations } from "./clickhouse"; diff --git a/internal-packages/tracing/src/index.ts b/internal-packages/tracing/src/index.ts index d6795091886..d0c0637bf61 100644 --- a/internal-packages/tracing/src/index.ts +++ b/internal-packages/tracing/src/index.ts @@ -1,9 +1,28 @@ import { - Meter, + type Meter, + context, + metrics, + propagation, + ROOT_CONTEXT, + SpanKind, + SpanStatusCode, + trace, + ValueType, + type Attributes, + type Context, + type Counter, + type Gauge, + type Histogram, + type Meter as MeterType, + type MetricOptions, + type ObservableCounter, + type ObservableGauge, + type ObservableResult, + type ObservableUpDownCounter, type Span, type SpanOptions, - SpanStatusCode, type Tracer, + type UpDownCounter, } from "@opentelemetry/api"; import { type Logger, SeverityNumber } from "@opentelemetry/api-logs"; import { flattenAttributes } from "@trigger.dev/core/v3/utils/flattenAttributes"; @@ -11,41 +30,30 @@ import { flattenAttributes } from "@trigger.dev/core/v3/utils/flattenAttributes" export * from "@opentelemetry/semantic-conventions"; export type { - Tracer, Attributes, - Meter, Counter, - UpDownCounter, - ObservableGauge, - ObservableCounter, - ObservableUpDownCounter, - MetricOptions, Gauge, Histogram, + MeterType as Meter, + MetricOptions, + ObservableCounter, + ObservableGauge, ObservableResult, -} from "@opentelemetry/api"; - -import { - trace, - context, - propagation, - SpanKind, - metrics, - ValueType, - ROOT_CONTEXT, -} from "@opentelemetry/api"; -import type { Context } from "@opentelemetry/api"; + ObservableUpDownCounter, + Span, + SpanOptions, + Tracer, + UpDownCounter, +}; export { - trace, context, + metrics, propagation, - type Span, + ROOT_CONTEXT, SpanKind, - type SpanOptions, SpanStatusCode, - metrics, + trace, ValueType, - ROOT_CONTEXT, type Context, }; diff --git a/internal-packages/tsql/src/index.test.ts b/internal-packages/tsql/src/index.test.ts index 3c958635e8d..f9aca2f236d 100644 --- a/internal-packages/tsql/src/index.test.ts +++ b/internal-packages/tsql/src/index.test.ts @@ -36,7 +36,7 @@ const taskRunsSchema: TableSchema = { /** * Test table schema with tenant columns (lookup table with tenant isolation) */ -const lookupTableSchema: TableSchema = { +const _lookupTableSchema: TableSchema = { name: "lookup_table", clickhouseName: "trigger_dev.lookup_table", tenantColumns: { @@ -641,7 +641,7 @@ describe("compileTSQL with enforcedWhereClause", () => { it("should handle Date values in enforced conditions", () => { const sevenDaysAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000); - const { sql, params } = compileTSQL("SELECT id FROM task_runs", { + const { sql, params: _params } = compileTSQL("SELECT id FROM task_runs", { tableSchema: [taskRunsSchema], enforcedWhereClause: { organization_id: { op: "eq", value: "org_123" }, diff --git a/internal-packages/tsql/src/index.ts b/internal-packages/tsql/src/index.ts index 923d8b8829f..1d8759c108c 100644 --- a/internal-packages/tsql/src/index.ts +++ b/internal-packages/tsql/src/index.ts @@ -26,7 +26,6 @@ import { TSQLParseTreeConverter } from "./query/parser.js"; import { printToClickHouse, type PrintResult } from "./query/printer.js"; import { createPrinterContext, - type BetweenCondition, type QuerySettings, type SimpleComparisonCondition, type TimeRange, diff --git a/internal-packages/tsql/src/query/ast.ts b/internal-packages/tsql/src/query/ast.ts index 4ef1e7e2d8c..2c055a4c977 100644 --- a/internal-packages/tsql/src/query/ast.ts +++ b/internal-packages/tsql/src/query/ast.ts @@ -3,13 +3,9 @@ import type { TSQLContext } from "./context"; import type { DatabaseField, - ExpressionField, FieldOrTable, - FieldTraverser, LazyJoin, LazyTable, - StringArrayDatabaseField, - StringJSONDatabaseField, Table, UnknownDatabaseField, VirtualTable, diff --git a/internal-packages/tsql/src/query/database.ts b/internal-packages/tsql/src/query/database.ts index 7961ed4d6b5..1e4ed5d8b43 100644 --- a/internal-packages/tsql/src/query/database.ts +++ b/internal-packages/tsql/src/query/database.ts @@ -374,7 +374,7 @@ export class Database { // This is a skeleton structure - adapt to your setup const timings = options?.timings || new TSQLTimingsClass(); - const { team, modifiers } = options || {}; + const { team, modifiers: _modifiers } = options || {}; // Validate team/teamId if (!teamId && !team) { @@ -525,7 +525,7 @@ export function serializeFields( }); } else if ("expr" in field) { // ExpressionField - const exprField = field as ExpressionField; + const _exprField = field as ExpressionField; // NOTE: Requires resolve_types_from_table // const resolvedExpr = resolveTypesFromTable(exprField.expr, tableChain, context, 'tsql'); // const constantType = resolvedExpr.type?.resolve_constant_type(context); diff --git a/internal-packages/tsql/src/query/parser.ts b/internal-packages/tsql/src/query/parser.ts index a4be2fbb657..38e2689e915 100644 --- a/internal-packages/tsql/src/query/parser.ts +++ b/internal-packages/tsql/src/query/parser.ts @@ -1,10 +1,9 @@ -import { ParserRuleContext } from "antlr4ts/ParserRuleContext"; -import { Token } from "antlr4ts/Token"; -import { ErrorNode } from "antlr4ts/tree/ErrorNode"; -import { ParseTree } from "antlr4ts/tree/ParseTree"; -import { TerminalNode } from "antlr4ts/tree/TerminalNode"; -import { - AliasContext, +import type { ParserRuleContext } from "antlr4ts/ParserRuleContext"; +import type { Token } from "antlr4ts/Token"; +import type { ErrorNode } from "antlr4ts/tree/ErrorNode"; +import type { ParseTree } from "antlr4ts/tree/ParseTree"; +import type { TerminalNode } from "antlr4ts/tree/TerminalNode"; +import type { BlockContext, CatchBlockContext, ColumnExprAliasContext, @@ -122,20 +121,18 @@ import { WithExprListContext, WithExprSubqueryContext, } from "../grammar/TSQLParser.js"; -import { TSQLParserVisitor } from "../grammar/TSQLParserVisitor.js"; -import { +import { AliasContext } from "../grammar/TSQLParser.js"; +import type { TSQLParserVisitor } from "../grammar/TSQLParserVisitor.js"; +import type { Alias, And, ArithmeticOperation, - ArithmeticOperationOp, ArrayAccess, Array as ArrayExpression, - AST, BetweenExpr, Block, Call, CompareOperation, - CompareOperationOp, Constant, CTE, Declaration, @@ -148,8 +145,6 @@ import { ForInStatement, ForStatement, Function, - TSQLXAttribute, - TSQLXTag, IfStatement, JoinConstraint, JoinExpr, @@ -171,6 +166,8 @@ import { Statement, ThrowStatement, TryCatchStatement, + TSQLXAttribute, + TSQLXTag, Tuple, TupleAccess, VariableAssignment, @@ -180,6 +177,7 @@ import { WindowFrameExpr, WindowFunction, } from "./ast"; +import { ArithmeticOperationOp, CompareOperationOp } from "./ast"; import { RESERVED_KEYWORDS } from "./constants"; import { BaseTSQLError, NotImplementedError, SyntaxError } from "./errors"; import { parseStringLiteralText } from "./parse_string"; @@ -399,7 +397,7 @@ export class TSQLParseTreeConverter implements TSQLParserVisitor { // Program and declarations visitProgram(ctx: ProgramContext): Program { - const declarations: Declaration[] = []; + const _declarations: Declaration[] = []; // Implement based on your parser context structure throw new NotImplementedError("visitProgram not implemented"); } @@ -564,7 +562,7 @@ export class TSQLParseTreeConverter implements TSQLParserVisitor { } visitBlock(ctx: BlockContext): Block { - const declarations: Declaration[] = []; + const _declarations: Declaration[] = []; // Implement based on your parser structure throw new NotImplementedError("visitBlock not implemented"); } diff --git a/internal-packages/tsql/src/query/printer.test.ts b/internal-packages/tsql/src/query/printer.test.ts index 0aa5b816064..0efa0d34fc4 100644 --- a/internal-packages/tsql/src/query/printer.test.ts +++ b/internal-packages/tsql/src/query/printer.test.ts @@ -1,10 +1,10 @@ -import { describe, it, expect, beforeEach } from "vitest"; -import { parseTSQLSelect, parseTSQLExpr, compileTSQL } from "../index.js"; +import { describe, expect, it } from "vitest"; +import { compileTSQL, parseTSQLSelect } from "../index.js"; +import { QueryError } from "./errors.js"; import { ClickHousePrinter, printToClickHouse, type PrintResult } from "./printer.js"; import { createPrinterContext, PrinterContext } from "./printer_context.js"; -import { createSchemaRegistry, column, type TableSchema, type SchemaRegistry } from "./schema.js"; +import { column, createSchemaRegistry, type TableSchema } from "./schema.js"; import type { BucketThreshold } from "./time_buckets.js"; -import { QueryError, SyntaxError } from "./errors.js"; /** * Test table schemas @@ -108,7 +108,7 @@ function printQuery(query: string, context?: PrinterContext) { describe("ClickHousePrinter", () => { describe("Basic SELECT statements", () => { it("should expand SELECT * to individual columns", () => { - const { sql, params, columns } = printQuery("SELECT * FROM task_runs"); + const { sql, params: _params, columns } = printQuery("SELECT * FROM task_runs"); // SELECT * should be expanded to individual columns expect(sql).toContain("SELECT "); @@ -134,7 +134,7 @@ describe("ClickHousePrinter", () => { }); it("should print SELECT with specific columns", () => { - const { sql, params } = printQuery("SELECT id, status, created_at FROM task_runs"); + const { sql, params: _params } = printQuery("SELECT id, status, created_at FROM task_runs"); expect(sql).toContain("SELECT id, status, created_at"); expect(sql).toContain("FROM trigger_dev.task_runs_v2"); @@ -1381,7 +1381,9 @@ describe("ClickHousePrinter", () => { }); it("should parameterize numeric values inline", () => { - const { sql, params } = printQuery("SELECT * FROM task_runs WHERE duration_ms > 1000"); + const { sql, params: _params } = printQuery( + "SELECT * FROM task_runs WHERE duration_ms > 1000" + ); // Numbers can be inlined safely expect(sql).toContain("1000"); @@ -1596,7 +1598,7 @@ describe("ClickHousePrinter", () => { }); it("should include correct types in placeholders", () => { - const { sql, params } = printQuery("SELECT * FROM task_runs WHERE status = 'test'"); + const { sql, params: _params } = printQuery("SELECT * FROM task_runs WHERE status = 'test'"); // Should have String type in placeholder expect(sql).toMatch(/\{tsql_val_\d+: String\}/); @@ -1650,7 +1652,7 @@ describe("Value mapping (valueMap)", () => { it("should transform user-friendly value to internal value in equality comparison", () => { const ctx = createValueMapContext(); - const { sql, params } = printQuery("SELECT * FROM runs WHERE status = 'Completed'", ctx); + const { sql: _sql, params } = printQuery("SELECT * FROM runs WHERE status = 'Completed'", ctx); // The user-friendly value "Completed" should be transformed to "COMPLETED_SUCCESSFULLY" expect(Object.values(params)).toContain("COMPLETED_SUCCESSFULLY"); @@ -1659,7 +1661,7 @@ describe("Value mapping (valueMap)", () => { it("should transform user-friendly values in IN clause", () => { const ctx = createValueMapContext(); - const { sql, params } = printQuery( + const { sql: _sql, params } = printQuery( "SELECT * FROM runs WHERE status IN ('Completed', 'Failed', 'Running')", ctx ); @@ -1695,7 +1697,7 @@ describe("Value mapping (valueMap)", () => { it("should transform values in NOT IN clause", () => { const ctx = createValueMapContext(); - const { sql, params } = printQuery( + const { sql: _sql, params } = printQuery( "SELECT * FROM runs WHERE status NOT IN ('Pending', 'System failure')", ctx ); @@ -1887,7 +1889,7 @@ describe("WHERE transform (whereTransform)", () => { it("should work with GROUP BY and WHERE together", () => { const ctx = createPrefixedContext(); - const { sql, params } = printQuery( + const { sql, params: _params } = printQuery( "SELECT batch_id, COUNT() as count FROM runs WHERE batch_id != NULL GROUP BY batch_id", ctx ); @@ -1903,13 +1905,15 @@ describe("WHERE transform (whereTransform)", () => { describe("Edge cases", () => { it("should handle empty string values", () => { - const { sql, params } = printQuery("SELECT * FROM task_runs WHERE status = ''"); + const { sql: _sql, params } = printQuery("SELECT * FROM task_runs WHERE status = ''"); expect(Object.values(params)).toContain(""); }); it("should handle special characters in strings", () => { - const { sql, params } = printQuery("SELECT * FROM task_runs WHERE status = 'test\nvalue'"); + const { sql: _sql, params } = printQuery( + "SELECT * FROM task_runs WHERE status = 'test\nvalue'" + ); // The string value should be parameterized expect(Object.keys(params).length).toBeGreaterThan(0); diff --git a/internal-packages/tsql/src/query/printer.ts b/internal-packages/tsql/src/query/printer.ts index a4b50ca8540..82d97f5491b 100644 --- a/internal-packages/tsql/src/query/printer.ts +++ b/internal-packages/tsql/src/query/printer.ts @@ -2,65 +2,62 @@ // ClickHouse SQL printer with tenant isolation and schema validation import { - And, - Alias, - ArithmeticOperation, + type Alias, + type And, + type ArithmeticOperation, + type ArrayAccess, + type AST, + type Array as ASTArray, + type BetweenExpr, + type Call, + type CompareOperation, + type Constant, + type CTE, + type Dict, + type Expression, + type Field, + type JoinConstraint, + type JoinExpr, + type Lambda, + type LimitByExpr, + type Not, + type Or, + type OrderExpr, + type Placeholder, + type RatioExpr, + type SampleExpr, + type SelectQuery, + type SelectSetQuery, + type Tuple, + type TupleAccess, + type WindowExpr, + type WindowFrameExpr, + type WindowFunction, ArithmeticOperationOp, - Array as ASTArray, - ArrayAccess, - AST, - BetweenExpr, - Call, - CompareOperation, CompareOperationOp, - Constant, - CTE, - Dict, - Expression, - Field, - JoinConstraint, - JoinExpr, - Lambda, - LimitByExpr, - Not, - Or, - OrderExpr, - Placeholder, - RatioExpr, - SampleExpr, - SelectQuery, - SelectSetQuery, - Tuple, - TupleAccess, - WindowExpr, - WindowFrameExpr, - WindowFunction, } from "./ast"; -import { escapeClickHouseIdentifier, escapeTSQLIdentifier, escapeClickHouseString } from "./escape"; import { ImpossibleASTError, NotImplementedError, QueryError } from "./errors"; +import { escapeClickHouseIdentifier } from "./escape"; import { - TSQL_CLICKHOUSE_FUNCTIONS, - TSQL_AGGREGATIONS, - TSQL_COMPARISON_MAPPING, findTSQLAggregation, findTSQLFunction, + TSQL_COMPARISON_MAPPING, validateFunctionArgs, } from "./functions"; -import { PrinterContext, WhereClauseCondition } from "./printer_context"; -import { calculateTimeBucketInterval } from "./time_buckets"; +import type { PrinterContext, WhereClauseCondition } from "./printer_context"; import { - findTable, - validateTable, - TableSchema, - ColumnSchema, + type ClickHouseType, + type ColumnFormatType, + type ColumnSchema, + type OutputColumnMetadata, + type TableSchema, getInternalValue, - isVirtualColumn, - OutputColumnMetadata, - ClickHouseType, - hasFieldMapping, getInternalValueFromMappingCaseInsensitive, - type ColumnFormatType, + hasFieldMapping, + isVirtualColumn, + validateTable, } from "./schema"; +import { calculateTimeBucketInterval } from "./time_buckets"; /** * Result of printing an AST to ClickHouse SQL diff --git a/internal-packages/tsql/src/query/printer_context.ts b/internal-packages/tsql/src/query/printer_context.ts index 6f7d8e1f07d..d0fb41b5327 100644 --- a/internal-packages/tsql/src/query/printer_context.ts +++ b/internal-packages/tsql/src/query/printer_context.ts @@ -2,7 +2,7 @@ // Adapted for ClickHouse client's {param: Type} syntax import { getClickHouseType } from "./escape"; -import { SchemaRegistry, FieldMappings } from "./schema"; +import type { SchemaRegistry, FieldMappings } from "./schema"; /** * Settings that control query execution behavior diff --git a/internal-packages/tsql/src/query/property_types.ts b/internal-packages/tsql/src/query/property_types.ts index ff2d74c8ef6..8063dbd5ae2 100644 --- a/internal-packages/tsql/src/query/property_types.ts +++ b/internal-packages/tsql/src/query/property_types.ts @@ -16,7 +16,7 @@ import type { DateTimeType, } from "./ast"; import type { TSQLContext } from "./context"; -import type { BooleanDatabaseField, DateTimeDatabaseField, Table } from "./models"; +import type { BooleanDatabaseField, DateTimeDatabaseField } from "./models"; // Helper function to escape TSQL identifiers function escapeTSQLIdentifier(identifier: string | number): string { diff --git a/internal-packages/tsql/src/query/security.test.ts b/internal-packages/tsql/src/query/security.test.ts index 8c18981ee4c..68853ec23fe 100644 --- a/internal-packages/tsql/src/query/security.test.ts +++ b/internal-packages/tsql/src/query/security.test.ts @@ -154,7 +154,7 @@ describe("Cross-Tenant Security", () => { }); it("should not allow accessing other tenant's data via explicit condition", () => { - const { sql, params } = compile( + const { sql: _sql, params } = compile( "SELECT * FROM task_runs WHERE organization_id = 'org_other_tenant'" ); @@ -230,28 +230,36 @@ describe("SQL Injection Prevention", () => { }); it("should handle quote escape attempts", () => { - const { sql, params } = compile("SELECT * FROM task_runs WHERE status = 'test''injection'"); + const { sql: _sql, params } = compile( + "SELECT * FROM task_runs WHERE status = 'test''injection'" + ); // Should be safely parameterized expect(Object.values(params).some((v) => typeof v === "string")).toBe(true); }); it("should handle backslash escape attempts", () => { - const { sql, params } = compile("SELECT * FROM task_runs WHERE status = 'test\\'injection'"); + const { sql, params: _params } = compile( + "SELECT * FROM task_runs WHERE status = 'test\\'injection'" + ); // Should be safely parameterized expect(sql).not.toContain("injection'"); }); it("should handle unicode characters in strings", () => { - const { sql, params } = compile("SELECT * FROM task_runs WHERE status = 'test™injection'"); + const { sql: _sql, params } = compile( + "SELECT * FROM task_runs WHERE status = 'test™injection'" + ); // Should be safely parameterized expect(Object.values(params).some((v) => typeof v === "string")).toBe(true); }); it("should handle null byte injection", () => { - const { sql, params } = compile("SELECT * FROM task_runs WHERE status = 'test\\0injection'"); + const { sql: _sql, params } = compile( + "SELECT * FROM task_runs WHERE status = 'test\\0injection'" + ); expect(Object.values(params).some((v) => typeof v === "string")).toBe(true); }); @@ -510,7 +518,7 @@ describe("Optional Tenant Filters", () => { describe("Cross-tenant security with optional filters", () => { it("should still prevent cross-org access with org-only filter", () => { - const { sql, params } = compile( + const { sql: _sql, params } = compile( "SELECT * FROM task_runs WHERE organization_id = 'org_other'", { enforcedWhereClause: { diff --git a/internal-packages/zod-worker/src/index.ts b/internal-packages/zod-worker/src/index.ts index 2428a103fa5..9597f3abdb0 100644 --- a/internal-packages/zod-worker/src/index.ts +++ b/internal-packages/zod-worker/src/index.ts @@ -20,8 +20,8 @@ import { } from "graphile-worker"; import omit from "lodash.omit"; import { z } from "zod"; -import { Logger } from "@trigger.dev/core/logger"; -import { +import type { Logger } from "@trigger.dev/core/logger"; +import type { PrismaClient, PrismaClientOrTransaction, PrismaReplicaClient, diff --git a/internal-packages/zod-worker/src/pgListen.server.ts b/internal-packages/zod-worker/src/pgListen.server.ts index 5dd61551cf5..1a33035198c 100644 --- a/internal-packages/zod-worker/src/pgListen.server.ts +++ b/internal-packages/zod-worker/src/pgListen.server.ts @@ -1,7 +1,8 @@ -import { Logger } from "@trigger.dev/core/logger"; +import type { Logger } from "@trigger.dev/core/logger"; import type { PoolClient } from "pg"; -import { z } from "zod"; -import { NotificationCatalog, NotificationChannel, notificationCatalog } from "./types"; +import type { z } from "zod"; +import type { NotificationCatalog, NotificationChannel } from "./types"; +import { notificationCatalog } from "./types"; export class PgListenService { #poolClient: PoolClient; @@ -70,7 +71,7 @@ export function safeJsonParse(json?: string): unknown { try { return JSON.parse(json); - } catch (e) { + } catch (_e) { return null; } } diff --git a/packages/cli-v3/e2e/e2e.test.ts b/packages/cli-v3/e2e/e2e.test.ts index 1d1849f5fcd..4935b7cd29a 100644 --- a/packages/cli-v3/e2e/e2e.test.ts +++ b/packages/cli-v3/e2e/e2e.test.ts @@ -1,4 +1,5 @@ -import { BuildManifest, WorkerManifest } from "@trigger.dev/core/v3/schemas"; +import { alwaysExternal } from "@trigger.dev/core/v3/build"; +import type { BuildManifest, WorkerManifest } from "@trigger.dev/core/v3/schemas"; import * as fs from "node:fs"; import { mkdir, rename, rm } from "node:fs/promises"; import * as path from "node:path"; @@ -8,13 +9,20 @@ import { loadConfig } from "../src/config.js"; import { indexWorkerManifest } from "../src/indexing/indexWorkerManifest.js"; import { writeJSONFile } from "../src/utilities/fileSystem.js"; import { logger } from "../src/utilities/logger.js"; -import { getTmpDir } from "../src/utilities/tempDirectories.js"; -import { fixturesConfig, TestCase } from "./fixtures.js"; -import { E2EOptions, E2EOptionsSchema } from "./schemas.js"; -import { executeTestCaseRun, runTsc } from "./utils.js"; import { normalizeImportPath } from "../src/utilities/normalizeImportPath.js"; -import { installFixtureDeps, LOCKFILES, PackageManager, parsePackageManager } from "./utils.js"; -import { alwaysExternal } from "@trigger.dev/core/v3/build"; +import { getTmpDir } from "../src/utilities/tempDirectories.js"; +import type { TestCase } from "./fixtures.js"; +import { fixturesConfig } from "./fixtures.js"; +import type { E2EOptions } from "./schemas.js"; +import { E2EOptionsSchema } from "./schemas.js"; +import type { PackageManager } from "./utils.js"; +import { + executeTestCaseRun, + installFixtureDeps, + LOCKFILES, + parsePackageManager, + runTsc, +} from "./utils.js"; const TIMEOUT = 120_000; @@ -36,7 +44,7 @@ try { logLevel: process.env.LOG, packageManager: process.env.PM, }); -} catch (e) { +} catch (_e) { options = { logLevel: "log", }; @@ -71,7 +79,7 @@ describe.concurrent("buildWorker", async () => { path.resolve(path.join(workspaceDir, "yarn.lock")), path.resolve(path.join(workspaceDir, "yarn.lock.copy")) ); - } catch (e) { + } catch (_e) { await rename( path.resolve(path.join(workspaceDir, "yarn.lock.copy")), path.resolve(path.join(workspaceDir, "yarn.lock")) diff --git a/packages/cli-v3/e2e/fixtures.ts b/packages/cli-v3/e2e/fixtures.ts index bdc5dd6bad9..504c05ba8c9 100644 --- a/packages/cli-v3/e2e/fixtures.ts +++ b/packages/cli-v3/e2e/fixtures.ts @@ -1,4 +1,4 @@ -import { BuildManifest, WorkerManifest } from "@trigger.dev/core/v3/schemas"; +import type { BuildManifest, WorkerManifest } from "@trigger.dev/core/v3/schemas"; type DeepPartial = T extends object ? { diff --git a/packages/cli-v3/e2e/fixtures/emit-decorator-metadata/src/trigger/decorators.ts b/packages/cli-v3/e2e/fixtures/emit-decorator-metadata/src/trigger/decorators.ts index 6cb035c74b4..6ee655036d8 100644 --- a/packages/cli-v3/e2e/fixtures/emit-decorator-metadata/src/trigger/decorators.ts +++ b/packages/cli-v3/e2e/fixtures/emit-decorator-metadata/src/trigger/decorators.ts @@ -1,6 +1,5 @@ -import "reflect-metadata"; import { task } from "@trigger.dev/sdk/v3"; -import { setTimeout } from "node:timers/promises"; +import "reflect-metadata"; class Point { constructor( diff --git a/packages/cli-v3/e2e/utils.ts b/packages/cli-v3/e2e/utils.ts index 077ac3cb77f..719799dbb23 100644 --- a/packages/cli-v3/e2e/utils.ts +++ b/packages/cli-v3/e2e/utils.ts @@ -3,12 +3,12 @@ import * as nodePath from "node:path"; import * as fs from "node:fs"; import { logger } from "../src/utilities/logger.js"; import { findUpMultiple, findUp } from "find-up"; -import { TaskRunExecutionResult, WorkerManifest } from "@trigger.dev/core/v3/schemas"; +import type { TaskRunExecutionResult, WorkerManifest } from "@trigger.dev/core/v3/schemas"; import { TaskRunProcess } from "../src/executions/taskRunProcess.js"; import { createTestHttpServer } from "@epic-web/test-server/http"; -import { TestCase, TestCaseRun } from "./fixtures.js"; +import type { TestCase, TestCaseRun } from "./fixtures.js"; import { access } from "node:fs/promises"; -import { MachinePreset } from "@trigger.dev/core/v3"; +import type { MachinePreset } from "@trigger.dev/core/v3"; export type PackageManager = "npm" | "pnpm" | "yarn"; @@ -160,7 +160,7 @@ export async function runTsc( // Ensure the tsconfig file exists try { await access(tsconfigPath); - } catch (error) { + } catch (_error) { throw new Error(`TSConfig file not found: ${tsconfigPath}`); } diff --git a/packages/cli-v3/src/apiClient.ts b/packages/cli-v3/src/apiClient.ts index ddd96a7f193..682e3cd6d24 100644 --- a/packages/cli-v3/src/apiClient.ts +++ b/packages/cli-v3/src/apiClient.ts @@ -1,18 +1,28 @@ +import type { + CreateArtifactRequestBody, + CreateBackgroundWorkerRequestBody, + DevDequeueRequestBody, + DevDisconnectRequestBody, + FailDeploymentRequestBody, + FinalizeDeploymentRequestBody, + ImportEnvironmentVariablesRequestBody, + InitializeDeploymentRequestBody, + StartDeploymentIndexingRequestBody, + TriggerTaskRequestBody, + UpsertBranchRequestBody, + WorkersCreateRequestBody, + CreateProjectRequestBody, + GetJWTRequestBody, +} from "@trigger.dev/core/v3"; import { CreateAuthorizationCodeResponseSchema, - CreateArtifactRequestBody, CreateArtifactResponseBody, - CreateBackgroundWorkerRequestBody, CreateBackgroundWorkerResponse, DevConfigResponseBody, - DevDequeueRequestBody, DevDequeueResponseBody, - DevDisconnectRequestBody, DevDisconnectResponseBody, EnvironmentVariableResponseBody, - FailDeploymentRequestBody, FailDeploymentResponseBody, - FinalizeDeploymentRequestBody, GetDeploymentResponseBody, GetEnvironmentVariablesResponseBody, GetLatestDeploymentResponseBody, @@ -20,39 +30,34 @@ import { GetProjectEnvResponse, GetProjectResponseBody, GetProjectsResponseBody, - ImportEnvironmentVariablesRequestBody, - InitializeDeploymentRequestBody, InitializeDeploymentResponseBody, PromoteDeploymentResponseBody, - StartDeploymentIndexingRequestBody, StartDeploymentIndexingResponseBody, - TriggerTaskRequestBody, TriggerTaskResponse, - UpsertBranchRequestBody, UpsertBranchResponseBody, WhoAmIResponseSchema, - WorkersCreateRequestBody, WorkersCreateResponseBody, WorkersListResponseBody, - CreateProjectRequestBody, GetOrgsResponseBody, GetWorkerByTagResponse, - GetJWTRequestBody, GetJWTResponse, ApiBranchListResponseBody, GenerateRegistryCredentialsResponseBody, RemoteBuildProviderStatusResponseBody, } from "@trigger.dev/core/v3"; -import { +import type { WorkloadDebugLogRequestBody, WorkloadHeartbeatRequestBody, - WorkloadHeartbeatResponseBody, WorkloadRunAttemptCompleteRequestBody, +} from "@trigger.dev/core/v3/workers"; +import { + WorkloadHeartbeatResponseBody, WorkloadRunAttemptCompleteResponseBody, WorkloadRunAttemptStartResponseBody, WorkloadRunLatestSnapshotResponseBody, } from "@trigger.dev/core/v3/workers"; -import { ApiResult, wrapZodFetch, zodfetchSSE } from "@trigger.dev/core/v3/zodfetch"; +import type { ApiResult } from "@trigger.dev/core/v3/zodfetch"; +import { wrapZodFetch, zodfetchSSE } from "@trigger.dev/core/v3/zodfetch"; import { EventSource } from "eventsource"; import { z } from "zod"; import { logger } from "./utilities/logger.js"; diff --git a/packages/cli-v3/src/cli/common.ts b/packages/cli-v3/src/cli/common.ts index f251e4e5ef4..18d61a05803 100644 --- a/packages/cli-v3/src/cli/common.ts +++ b/packages/cli-v3/src/cli/common.ts @@ -1,5 +1,5 @@ import { outro } from "@clack/prompts"; -import { Command } from "commander"; +import type { Command } from "commander"; import { z } from "zod"; import { fromZodError } from "zod-validation-error"; import { BundleError } from "../build/bundle.js"; @@ -37,7 +37,7 @@ export class OutroCommandError extends SkipCommandError {} export async function handleTelemetry(action: () => Promise) { try { await action(); - } catch (e) { + } catch (_e) { process.exitCode = 1; } } diff --git a/packages/cli-v3/src/commands/analyze.ts b/packages/cli-v3/src/commands/analyze.ts index e8264f9336f..dc03d36e2e5 100644 --- a/packages/cli-v3/src/commands/analyze.ts +++ b/packages/cli-v3/src/commands/analyze.ts @@ -1,4 +1,4 @@ -import { Command } from "commander"; +import type { Command } from "commander"; import { z } from "zod"; import { CommonCommandOptions, handleTelemetry, wrapCommandAction } from "../cli/common.js"; import { printInitialBanner } from "../utilities/initialBanner.js"; diff --git a/packages/cli-v3/src/commands/deploy.ts b/packages/cli-v3/src/commands/deploy.ts index c0d5d4627dc..ad0faa8b31c 100644 --- a/packages/cli-v3/src/commands/deploy.ts +++ b/packages/cli-v3/src/commands/deploy.ts @@ -1,20 +1,21 @@ import { intro, log, outro } from "@clack/prompts"; import { getBranch, prepareDeploymentError, tryCatch } from "@trigger.dev/core/v3"; -import { +import type { InitializeDeploymentRequestBody, InitializeDeploymentResponseBody, GitMeta, DeploymentFinalizedEvent, - DeploymentEventFromString, DeploymentTriggeredVia, } from "@trigger.dev/core/v3/schemas"; -import { Command, Option as CommandOption } from "commander"; +import { DeploymentEventFromString } from "@trigger.dev/core/v3/schemas"; +import type { Command } from "commander"; +import { Option as CommandOption } from "commander"; import { join, relative, resolve } from "node:path"; import { isCI } from "std-env"; import { x } from "tinyexec"; import { z } from "zod"; import chalk from "chalk"; -import { CliApiClient } from "../apiClient.js"; +import type { CliApiClient } from "../apiClient.js"; import { buildWorker } from "../build/buildWorker.js"; import { resolveAlwaysExternal } from "../build/externals.js"; import { createContextArchive, getArchiveSize } from "../deploy/archiveContext.js"; diff --git a/packages/cli-v3/src/commands/dev.ts b/packages/cli-v3/src/commands/dev.ts index 3915cadc209..86973d628ae 100644 --- a/packages/cli-v3/src/commands/dev.ts +++ b/packages/cli-v3/src/commands/dev.ts @@ -1,10 +1,11 @@ -import { intro } from "@clack/prompts"; +import { confirm, intro, isCancel, log } from "@clack/prompts"; +import { VERSION } from "@trigger.dev/core"; +import { tryCatch } from "@trigger.dev/core/utils"; +import { getDevBranch } from "@trigger.dev/core/v3"; +import type { ResolvedConfig } from "@trigger.dev/core/v3/build"; +import type { Command } from "commander"; +import { Option as CommandOption } from "commander"; import { resolve } from "node:path"; -import { spinner } from "../utilities/windows.js"; -import { loadConfig } from "../config.js"; -import { verifyDirectory } from "./deploy.js"; -import { ResolvedConfig } from "@trigger.dev/core/v3/build"; -import { Command, Option as CommandOption } from "commander"; import { z } from "zod"; import { CliApiClient } from "../apiClient.js"; import { @@ -13,31 +14,31 @@ import { handleTelemetry, wrapCommandAction, } from "../cli/common.js"; -import { watchConfig } from "../config.js"; -import { DevSessionInstance, startDevSession } from "../dev/devSession.js"; +import { loadConfig, watchConfig } from "../config.js"; +import type { DevSessionInstance } from "../dev/devSession.js"; +import { startDevSession } from "../dev/devSession.js"; import { createLockFile } from "../dev/lock.js"; import { chalkError } from "../utilities/cliOutput.js"; -import { resolveLocalEnvVars } from "../utilities/localEnvVars.js"; +import { + readConfigHasSeenMCPInstallPrompt, + writeConfigHasSeenMCPInstallPrompt, +} from "../utilities/configFiles.js"; import { printDevBanner, printStandloneInitialBanner } from "../utilities/initialBanner.js"; +import { resolveLocalEnvVars } from "../utilities/localEnvVars.js"; import { logger } from "../utilities/logger.js"; import { awaitAndDisplayPlatformNotification, fetchPlatformNotification, } from "../utilities/platformNotifications.js"; import { runtimeChecks } from "../utilities/runtimeCheck.js"; -import { getProjectClient, LoginResultOk } from "../utilities/session.js"; -import { login } from "./login.js"; -import { updateTriggerPackages } from "./update.js"; -import { - readConfigHasSeenMCPInstallPrompt, - writeConfigHasSeenMCPInstallPrompt, -} from "../utilities/configFiles.js"; -import { confirm, isCancel, log } from "@clack/prompts"; +import type { LoginResultOk } from "../utilities/session.js"; +import { getProjectClient } from "../utilities/session.js"; +import { spinner } from "../utilities/windows.js"; +import { verifyDirectory } from "./deploy.js"; import { installMcpServer } from "./install-mcp.js"; -import { tryCatch } from "@trigger.dev/core/utils"; -import { VERSION } from "@trigger.dev/core"; +import { login } from "./login.js"; import { initiateSkillsInstallWizard } from "./skills.js"; -import { getDevBranch } from "@trigger.dev/core/v3"; +import { updateTriggerPackages } from "./update.js"; const DevArchiveCommandOptions = CommonCommandOptions.extend({ branch: z.string().optional(), diff --git a/packages/cli-v3/src/commands/env.ts b/packages/cli-v3/src/commands/env.ts index ac9b5f774c9..be5cb228c14 100644 --- a/packages/cli-v3/src/commands/env.ts +++ b/packages/cli-v3/src/commands/env.ts @@ -1,23 +1,23 @@ -import { Command } from "commander"; +import { confirm, intro, isCancel, log, outro } from "@clack/prompts"; +import { tryCatch } from "@trigger.dev/core"; +import chalk from "chalk"; +import Table from "cli-table3"; +import type { Command } from "commander"; +import { writeFile } from "node:fs/promises"; +import { resolve } from "node:path"; import { z } from "zod"; -import { printInitialBanner } from "../utilities/initialBanner.js"; import { CommonCommandOptions, commonOptions, handleTelemetry, wrapCommandAction, } from "../cli/common.js"; -import { intro, outro, log, confirm, isCancel } from "@clack/prompts"; -import chalk from "chalk"; -import Table from "cli-table3"; -import { logger } from "../utilities/logger.js"; -import { login } from "./login.js"; -import { getProjectClient, upsertBranch } from "../utilities/session.js"; import { loadConfig } from "../config.js"; +import { printInitialBanner } from "../utilities/initialBanner.js"; +import { logger } from "../utilities/logger.js"; +import { getProjectClient } from "../utilities/session.js"; import { spinner } from "../utilities/windows.js"; -import { writeFile } from "node:fs/promises"; -import { resolve } from "node:path"; -import { tryCatch } from "@trigger.dev/core"; +import { login } from "./login.js"; const EnvListOptions = CommonCommandOptions.extend({ config: z.string().optional(), diff --git a/packages/cli-v3/src/commands/init.ts b/packages/cli-v3/src/commands/init.ts index f13f88d23ab..34b941b0556 100644 --- a/packages/cli-v3/src/commands/init.ts +++ b/packages/cli-v3/src/commands/init.ts @@ -1,14 +1,11 @@ import { intro, isCancel, log, multiselect, outro, select, text } from "@clack/prompts"; import { context, trace } from "@opentelemetry/api"; -import { - GetProjectResponseBody, - LogLevel, - flattenAttributes, - tryCatch, -} from "@trigger.dev/core/v3"; +import type { GetProjectResponseBody, LogLevel } from "@trigger.dev/core/v3"; +import { flattenAttributes, tryCatch } from "@trigger.dev/core/v3"; import { recordSpanException } from "@trigger.dev/core/v3/workers"; import chalk from "chalk"; -import { Command, Option as CommandOption } from "commander"; +import type { Command } from "commander"; +import { Option as CommandOption } from "commander"; import { applyEdits, findNodeAtLocation, getNodeValue, modify, parseTree } from "jsonc-parser"; import { writeFile } from "node:fs/promises"; import { join, relative, resolve } from "node:path"; @@ -294,7 +291,7 @@ async function _initCommand(dir: string, options: InitCommandOptions) { return; } - } catch (e) { + } catch (_e) { // continue } } @@ -822,7 +819,7 @@ async function tryResolveTsConfig(cwd: string) { try { const tsconfigPath = await resolveTSConfig(cwd); return tsconfigPath; - } catch (e) { + } catch (_e) { return; } } diff --git a/packages/cli-v3/src/commands/install-mcp.ts b/packages/cli-v3/src/commands/install-mcp.ts index e1c9519e381..d2e19380dea 100644 --- a/packages/cli-v3/src/commands/install-mcp.ts +++ b/packages/cli-v3/src/commands/install-mcp.ts @@ -1,6 +1,6 @@ import { confirm, intro, isCancel, log, multiselect, select } from "@clack/prompts"; import chalk from "chalk"; -import { Command } from "commander"; +import type { Command } from "commander"; import { extname } from "node:path"; import { z } from "zod"; import { OutroCommandError, wrapCommandAction } from "../cli/common.js"; diff --git a/packages/cli-v3/src/commands/list-profiles.ts b/packages/cli-v3/src/commands/list-profiles.ts index ac0c7e12fdc..c4490b5d10b 100644 --- a/packages/cli-v3/src/commands/list-profiles.ts +++ b/packages/cli-v3/src/commands/list-profiles.ts @@ -1,6 +1,6 @@ import { log, outro } from "@clack/prompts"; -import { Command } from "commander"; -import { z } from "zod"; +import type { Command } from "commander"; +import type { z } from "zod"; import { CommonCommandOptions, handleTelemetry, wrapCommandAction } from "../cli/common.js"; import { chalkGrey } from "../utilities/cliOutput.js"; import { readAuthConfigFile } from "../utilities/configFiles.js"; diff --git a/packages/cli-v3/src/commands/login.ts b/packages/cli-v3/src/commands/login.ts index 3561183b36a..0171286d416 100644 --- a/packages/cli-v3/src/commands/login.ts +++ b/packages/cli-v3/src/commands/login.ts @@ -1,6 +1,6 @@ import { intro, log, outro, select } from "@clack/prompts"; import { recordSpanException } from "@trigger.dev/core/v3/workers"; -import { Command } from "commander"; +import type { Command } from "commander"; import open from "open"; import pRetry, { AbortError } from "p-retry"; import { z } from "zod"; @@ -24,7 +24,7 @@ import { awaitAndDisplayPlatformNotification, fetchPlatformNotification, } from "../utilities/platformNotifications.js"; -import { LoginResult } from "../utilities/session.js"; +import type { LoginResult } from "../utilities/session.js"; import { whoAmI } from "./whoami.js"; import { logger } from "../utilities/logger.js"; import { spinner } from "../utilities/windows.js"; diff --git a/packages/cli-v3/src/commands/logout.ts b/packages/cli-v3/src/commands/logout.ts index 26cc677500c..6250d98d516 100644 --- a/packages/cli-v3/src/commands/logout.ts +++ b/packages/cli-v3/src/commands/logout.ts @@ -1,5 +1,5 @@ -import { Command } from "commander"; -import { z } from "zod"; +import type { Command } from "commander"; +import type { z } from "zod"; import { CommonCommandOptions, commonOptions, diff --git a/packages/cli-v3/src/commands/mcp.ts b/packages/cli-v3/src/commands/mcp.ts index 392f1fb72ee..d391762a3d0 100644 --- a/packages/cli-v3/src/commands/mcp.ts +++ b/packages/cli-v3/src/commands/mcp.ts @@ -3,17 +3,17 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { VERSION } from "@trigger.dev/core"; import { tryCatch } from "@trigger.dev/core/utils"; -import { Command, Option as CommandOption } from "commander"; +import type { Command } from "commander"; import { z } from "zod"; import { CommonCommandOptions, commonOptions, wrapCommandAction } from "../cli/common.js"; import { CLOUD_API_URL } from "../consts.js"; +import { serverMetadata } from "../mcp/config.js"; import { McpContext } from "../mcp/context.js"; import { FileLogger } from "../mcp/logger.js"; import { registerTools } from "../mcp/tools.js"; import { printStandloneInitialBanner } from "../utilities/initialBanner.js"; import { logger } from "../utilities/logger.js"; import { installMcpServer } from "./install-mcp.js"; -import { serverMetadata } from "../mcp/config.js"; import { initiateSkillsInstallWizard } from "./skills.js"; const McpCommandOptions = CommonCommandOptions.extend({ diff --git a/packages/cli-v3/src/commands/mint-token.ts b/packages/cli-v3/src/commands/mint-token.ts index 5fe50ae8fbc..3ac4b0eaeea 100644 --- a/packages/cli-v3/src/commands/mint-token.ts +++ b/packages/cli-v3/src/commands/mint-token.ts @@ -1,4 +1,4 @@ -import { Command } from "commander"; +import type { Command } from "commander"; import { z } from "zod"; import { CliApiClient } from "../apiClient.js"; import { diff --git a/packages/cli-v3/src/commands/preview.ts b/packages/cli-v3/src/commands/preview.ts index ecaf9ea1b90..314c586e1f1 100644 --- a/packages/cli-v3/src/commands/preview.ts +++ b/packages/cli-v3/src/commands/preview.ts @@ -1,8 +1,9 @@ import { intro } from "@clack/prompts"; import { getBranch } from "@trigger.dev/core/v3"; -import { Command } from "commander"; +import type { Command } from "commander"; import { resolve } from "node:path"; import { z } from "zod"; +import { CliApiClient } from "../apiClient.js"; import { CommonCommandOptions, commonOptions, @@ -13,12 +14,11 @@ import { loadConfig } from "../config.js"; import { createGitMeta } from "../utilities/gitMeta.js"; import { printStandloneInitialBanner } from "../utilities/initialBanner.js"; import { logger } from "../utilities/logger.js"; -import { getProjectClient, LoginResultOk } from "../utilities/session.js"; +import type { LoginResultOk } from "../utilities/session.js"; import { spinner } from "../utilities/windows.js"; import { verifyDirectory } from "./deploy.js"; import { login } from "./login.js"; import { updateTriggerPackages } from "./update.js"; -import { CliApiClient } from "../apiClient.js"; const PreviewCommandOptions = CommonCommandOptions.extend({ branch: z.string().optional(), diff --git a/packages/cli-v3/src/commands/promote.ts b/packages/cli-v3/src/commands/promote.ts index 38958919227..b7a9e7a0824 100644 --- a/packages/cli-v3/src/commands/promote.ts +++ b/packages/cli-v3/src/commands/promote.ts @@ -1,5 +1,5 @@ import { intro, outro } from "@clack/prompts"; -import { Command } from "commander"; +import type { Command } from "commander"; import { z } from "zod"; import { CommonCommandOptions, diff --git a/packages/cli-v3/src/commands/skills.ts b/packages/cli-v3/src/commands/skills.ts index f2290f3f057..2865865f0c7 100644 --- a/packages/cli-v3/src/commands/skills.ts +++ b/packages/cli-v3/src/commands/skills.ts @@ -1,18 +1,18 @@ import { confirm, intro, isCancel, log, multiselect, outro } from "@clack/prompts"; import chalk from "chalk"; -import { Command, Option as CommandOption } from "commander"; +import type { Command } from "commander"; +import { Option as CommandOption } from "commander"; import { dirname, join } from "node:path"; import { readPackageJSON, resolvePackageJSON } from "pkg-types"; import * as semver from "semver"; import { z } from "zod"; import { OutroCommandError, wrapCommandAction } from "../cli/common.js"; -import { - BundledSkillsLoader, - loadRulesManifest, +import type { ManifestVersion, RulesManifest, RulesManifestVersionOption, } from "../rules/manifest.js"; +import { BundledSkillsLoader, loadRulesManifest } from "../rules/manifest.js"; import { sourceDir } from "../sourceDir.js"; import { cliLink } from "../utilities/cliOutput.js"; import { diff --git a/packages/cli-v3/src/commands/switch.ts b/packages/cli-v3/src/commands/switch.ts index 5464458b076..62703079566 100644 --- a/packages/cli-v3/src/commands/switch.ts +++ b/packages/cli-v3/src/commands/switch.ts @@ -1,6 +1,6 @@ import { intro, isCancel, log, outro, select } from "@clack/prompts"; -import { Command } from "commander"; -import { z } from "zod"; +import type { Command } from "commander"; +import type { z } from "zod"; import { CommonCommandOptions, handleTelemetry, diff --git a/packages/cli-v3/src/commands/trigger.ts b/packages/cli-v3/src/commands/trigger.ts index c030def80f7..7ab615dc383 100644 --- a/packages/cli-v3/src/commands/trigger.ts +++ b/packages/cli-v3/src/commands/trigger.ts @@ -1,5 +1,5 @@ import { intro, outro } from "@clack/prompts"; -import { Command } from "commander"; +import type { Command } from "commander"; import { z } from "zod"; import { CommonCommandOptions, handleTelemetry, wrapCommandAction } from "../cli/common.js"; import { printInitialBanner } from "../utilities/initialBanner.js"; diff --git a/packages/cli-v3/src/commands/update.ts b/packages/cli-v3/src/commands/update.ts index b7df5837f2e..4c8d628b12e 100644 --- a/packages/cli-v3/src/commands/update.ts +++ b/packages/cli-v3/src/commands/update.ts @@ -1,9 +1,14 @@ import { confirm, intro, isCancel, log, outro } from "@clack/prompts"; -import { Command } from "commander"; +import type { Command } from "commander"; import { detectPackageManager, installDependencies } from "nypm"; import { dirname, join, resolve } from "path"; -import { PackageJson, readPackageJSON, type ResolveOptions, resolvePackageJSON } from "pkg-types"; -import { z } from "zod"; +import { + type PackageJson, + readPackageJSON, + type ResolveOptions, + resolvePackageJSON, +} from "pkg-types"; +import type { z } from "zod"; import { CommonCommandOptions, OutroCommandError, wrapCommandAction } from "../cli/common.js"; import { chalkError, prettyError, prettyWarning } from "../utilities/cliOutput.js"; import { removeFile, writeJSONFilePreserveOrder } from "../utilities/fileSystem.js"; @@ -393,7 +398,7 @@ function mutatePackageJsonWithUpdatedPackages( depsToUpdate: Dependency[], targetVersion: string ) { - for (const { type, name, version } of depsToUpdate) { + for (const { type, name, version: _version } of depsToUpdate) { if (!packageJson[type]) { throw new Error( `No ${type} entry found in package.json. Please try to upgrade manually instead.` diff --git a/packages/cli-v3/src/commands/whoami.ts b/packages/cli-v3/src/commands/whoami.ts index 5f04eb67fb9..406b18f83ee 100644 --- a/packages/cli-v3/src/commands/whoami.ts +++ b/packages/cli-v3/src/commands/whoami.ts @@ -2,7 +2,7 @@ import { intro, note, outro } from "@clack/prompts"; import { chalkLink } from "../utilities/cliOutput.js"; import { logger } from "../utilities/logger.js"; import { isLoggedIn } from "../utilities/session.js"; -import { Command } from "commander"; +import type { Command } from "commander"; import { printInitialBanner } from "../utilities/initialBanner.js"; import { CommonCommandOptions, diff --git a/packages/cli-v3/src/commands/workers/build.ts b/packages/cli-v3/src/commands/workers/build.ts index 59aa8e020a7..9148d7ee51a 100644 --- a/packages/cli-v3/src/commands/workers/build.ts +++ b/packages/cli-v3/src/commands/workers/build.ts @@ -1,11 +1,13 @@ -import { intro, outro, log } from "@clack/prompts"; -import { getBranch, parseDockerImageReference, prepareDeploymentError } from "@trigger.dev/core/v3"; -import { InitializeDeploymentResponseBody } from "@trigger.dev/core/v3/schemas"; -import { Command, Option as CommandOption } from "commander"; +import { intro, log, outro } from "@clack/prompts"; +import { getBranch, prepareDeploymentError } from "@trigger.dev/core/v3"; +import type { InitializeDeploymentResponseBody } from "@trigger.dev/core/v3/schemas"; +import type { Command } from "commander"; +import { Option as CommandOption } from "commander"; import { resolve } from "node:path"; import { z } from "zod"; -import { CliApiClient } from "../../apiClient.js"; +import type { CliApiClient } from "../../apiClient.js"; import { buildWorker } from "../../build/buildWorker.js"; +import { resolveAlwaysExternal } from "../../build/externals.js"; import { CommonCommandOptions, commonOptions, @@ -24,6 +26,7 @@ import { } from "../../deploy/logs.js"; import { chalkError, cliLink, isLinksSupported, prettyError } from "../../utilities/cliOutput.js"; import { loadDotEnvVars } from "../../utilities/dotEnv.js"; +import { createGitMeta } from "../../utilities/gitMeta.js"; import { printStandloneInitialBanner } from "../../utilities/initialBanner.js"; import { logger } from "../../utilities/logger.js"; import { getProjectClient } from "../../utilities/session.js"; @@ -31,8 +34,6 @@ import { getTmpDir } from "../../utilities/tempDirectories.js"; import { spinner } from "../../utilities/windows.js"; import { login } from "../login.js"; import { updateTriggerPackages } from "../update.js"; -import { resolveAlwaysExternal } from "../../build/externals.js"; -import { createGitMeta } from "../../utilities/gitMeta.js"; const WorkersBuildCommandOptions = CommonCommandOptions.extend({ // docker build options diff --git a/packages/cli-v3/src/commands/workers/create.ts b/packages/cli-v3/src/commands/workers/create.ts index dd314439e60..683798a9cc0 100644 --- a/packages/cli-v3/src/commands/workers/create.ts +++ b/packages/cli-v3/src/commands/workers/create.ts @@ -1,4 +1,4 @@ -import { Command } from "commander"; +import type { Command } from "commander"; import { printStandloneInitialBanner } from "../../utilities/initialBanner.js"; import { CommonCommandOptions, diff --git a/packages/cli-v3/src/commands/workers/index.ts b/packages/cli-v3/src/commands/workers/index.ts index 84ef7ba2efb..881a5ff899c 100644 --- a/packages/cli-v3/src/commands/workers/index.ts +++ b/packages/cli-v3/src/commands/workers/index.ts @@ -1,4 +1,4 @@ -import { Command } from "commander"; +import type { Command } from "commander"; import { configureWorkersBuildCommand } from "./build.js"; import { configureWorkersListCommand } from "./list.js"; import { configureWorkersCreateCommand } from "./create.js"; diff --git a/packages/cli-v3/src/commands/workers/list.ts b/packages/cli-v3/src/commands/workers/list.ts index e2f89aef5a9..10691c5c6da 100644 --- a/packages/cli-v3/src/commands/workers/list.ts +++ b/packages/cli-v3/src/commands/workers/list.ts @@ -1,4 +1,4 @@ -import { Command } from "commander"; +import type { Command } from "commander"; import { printStandloneInitialBanner } from "../../utilities/initialBanner.js"; import { CommonCommandOptions, diff --git a/packages/cli-v3/src/commands/workers/run.ts b/packages/cli-v3/src/commands/workers/run.ts index 87b7703c454..14427960921 100644 --- a/packages/cli-v3/src/commands/workers/run.ts +++ b/packages/cli-v3/src/commands/workers/run.ts @@ -1,4 +1,4 @@ -import { Command } from "commander"; +import type { Command } from "commander"; import { printStandloneInitialBanner } from "../../utilities/initialBanner.js"; import { CommonCommandOptions, diff --git a/packages/cli-v3/src/config.ts b/packages/cli-v3/src/config.ts index 5b5dbfdfad7..9751c4bdcba 100644 --- a/packages/cli-v3/src/config.ts +++ b/packages/cli-v3/src/config.ts @@ -1,14 +1,15 @@ -import { +import type { BuildRuntime, CompatibilityFlag, CompatibilityFlagFeatures, ResolveEnvironmentVariablesFunction, TriggerConfig, } from "@trigger.dev/core/v3"; -import { DEFAULT_RUNTIME, ResolvedConfig } from "@trigger.dev/core/v3/build"; +import type { ResolvedConfig } from "@trigger.dev/core/v3/build"; +import { DEFAULT_RUNTIME } from "@trigger.dev/core/v3/build"; import * as c12 from "c12"; import { defu } from "defu"; -import * as esbuild from "esbuild"; +import type * as esbuild from "esbuild"; import { readdir } from "node:fs/promises"; import { basename, dirname, isAbsolute, join, relative } from "node:path"; import { findWorkspaceDir, resolveLockfile, resolvePackageJSON, resolveTSConfig } from "pkg-types"; diff --git a/packages/cli-v3/src/deploy/buildImage.ts b/packages/cli-v3/src/deploy/buildImage.ts index aa8285a7c3e..abd0391fe98 100644 --- a/packages/cli-v3/src/deploy/buildImage.ts +++ b/packages/cli-v3/src/deploy/buildImage.ts @@ -1,7 +1,7 @@ import { logger } from "../utilities/logger.js"; import { depot } from "@depot/cli"; import { x } from "tinyexec"; -import { BuildManifest, BuildRuntime } from "@trigger.dev/core/v3/schemas"; +import type { BuildManifest, BuildRuntime } from "@trigger.dev/core/v3/schemas"; import { networkInterfaces } from "os"; import { join } from "path"; import { safeReadJSONFile } from "../utilities/fileSystem.js"; @@ -11,7 +11,7 @@ import { isLinux } from "std-env"; import { z } from "zod"; import { assertExhaustive } from "../utilities/assertExhaustive.js"; import { tryCatch } from "@trigger.dev/core"; -import { CliApiClient } from "../apiClient.js"; +import type { CliApiClient } from "../apiClient.js"; export interface BuildImageOptions { // Common options @@ -955,7 +955,7 @@ function normalizeApiUrlForBuild(apiUrl: string): string { function getHostIP() { const interfaces = networkInterfaces(); - for (const [name, iface] of Object.entries(interfaces)) { + for (const [_name, iface] of Object.entries(interfaces)) { if (!iface) { continue; } @@ -1026,7 +1026,7 @@ function isQemuRegistered() { // Check a single QEMU handler const binfmt = readFileSync("/proc/sys/fs/binfmt_misc/qemu-aarch64", "utf8"); return binfmt.includes("enabled"); - } catch (e) { + } catch (_e) { return false; } } diff --git a/packages/cli-v3/src/dev/backgroundWorker.ts b/packages/cli-v3/src/dev/backgroundWorker.ts index c84254eb434..7e7a3a4b674 100644 --- a/packages/cli-v3/src/dev/backgroundWorker.ts +++ b/packages/cli-v3/src/dev/backgroundWorker.ts @@ -1,4 +1,4 @@ -import { BuildManifest, ServerBackgroundWorker, WorkerManifest } from "@trigger.dev/core/v3"; +import type { BuildManifest, ServerBackgroundWorker, WorkerManifest } from "@trigger.dev/core/v3"; import { execOptionsForRuntime } from "@trigger.dev/core/v3/build"; import { join } from "node:path"; import { indexWorkerManifest } from "../indexing/indexWorkerManifest.js"; diff --git a/packages/cli-v3/src/dev/devOutput.ts b/packages/cli-v3/src/dev/devOutput.ts index 93c6beed5c7..612c6772f51 100644 --- a/packages/cli-v3/src/dev/devOutput.ts +++ b/packages/cli-v3/src/dev/devOutput.ts @@ -1,14 +1,15 @@ import { formatDurationMilliseconds } from "@trigger.dev/core/v3"; import { DEFAULT_DEV_BRANCH } from "@trigger.dev/core/v3/utils/gitBranch"; -import { ResolvedConfig } from "@trigger.dev/core/v3/build"; +import type { ResolvedConfig } from "@trigger.dev/core/v3/build"; import { createTaskMetadataFailedErrorStack, DuplicateTaskIdsError, TaskIndexingImportError, TaskMetadataParseError, } from "@trigger.dev/core/v3/errors"; -import { TaskRunError, TaskRunErrorCodes } from "@trigger.dev/core/v3/schemas"; -import { DevCommandOptions } from "../commands/dev.js"; +import type { TaskRunError } from "@trigger.dev/core/v3/schemas"; +import { TaskRunErrorCodes } from "@trigger.dev/core/v3/schemas"; +import type { DevCommandOptions } from "../commands/dev.js"; import { aiHelpLink, chalkError, @@ -24,9 +25,10 @@ import { prettyError, prettyPrintDate, } from "../utilities/cliOutput.js"; -import { eventBus, EventBusEventArgs } from "../utilities/eventBus.js"; +import type { EventBusEventArgs } from "../utilities/eventBus.js"; +import { eventBus } from "../utilities/eventBus.js"; import { logger } from "../utilities/logger.js"; -import { Socket } from "socket.io-client"; +import type { Socket } from "socket.io-client"; import { BundleError } from "../build/bundle.js"; import { analyzeWorker } from "../utilities/analyze.js"; diff --git a/packages/cli-v3/src/dev/devSession.ts b/packages/cli-v3/src/dev/devSession.ts index 13aeae52b8d..c285624823e 100644 --- a/packages/cli-v3/src/dev/devSession.ts +++ b/packages/cli-v3/src/dev/devSession.ts @@ -1,8 +1,8 @@ -import { ResolvedConfig } from "@trigger.dev/core/v3/build"; -import * as esbuild from "esbuild"; -import { CliApiClient } from "../apiClient.js"; +import type { ResolvedConfig } from "@trigger.dev/core/v3/build"; +import type * as esbuild from "esbuild"; +import type { CliApiClient } from "../apiClient.js"; +import type { BundleResult } from "../build/bundle.js"; import { - BundleResult, bundleWorker, createBuildManifestFromBundle, getBundleResultFromBuild, @@ -19,12 +19,8 @@ import { createExternalsBuildExtension, resolveAlwaysExternal } from "../build/e import { type DevCommandOptions } from "../commands/dev.js"; import { eventBus } from "../utilities/eventBus.js"; import { logger } from "../utilities/logger.js"; -import { - clearTmpDirs, - EphemeralDirectory, - getStoreDir, - getTmpDir, -} from "../utilities/tempDirectories.js"; +import type { EphemeralDirectory } from "../utilities/tempDirectories.js"; +import { clearTmpDirs, getStoreDir, getTmpDir } from "../utilities/tempDirectories.js"; import { startDevOutput } from "./devOutput.js"; import { startWorkerRuntime } from "./devSupervisor.js"; import { startMcpServer, stopMcpServer } from "./mcpServer.js"; diff --git a/packages/cli-v3/src/dev/devSupervisor.ts b/packages/cli-v3/src/dev/devSupervisor.ts index acd10750df8..7335f947a5a 100644 --- a/packages/cli-v3/src/dev/devSupervisor.ts +++ b/packages/cli-v3/src/dev/devSupervisor.ts @@ -1,45 +1,45 @@ +import { tryCatch } from "@trigger.dev/core/utils"; +import type { + BuildManifest, + CreateBackgroundWorkerRequestBody, + DevConfigResponseBody, + WorkerManifest, +} from "@trigger.dev/core/v3"; +import type { ResolvedConfig } from "@trigger.dev/core/v3/build"; +import type { + WorkerClientToServerEvents, + WorkerServerToClientEvents, +} from "@trigger.dev/core/v3/workers"; +import type { Metafile } from "esbuild"; import { spawn, type ChildProcess } from "node:child_process"; import { + existsSync, + mkdirSync, readFileSync, - writeFileSync, renameSync, unlinkSync, - existsSync, - mkdirSync, + writeFileSync, } from "node:fs"; import { join } from "node:path"; -import { fileURLToPath } from "node:url"; import { setTimeout as awaitTimeout } from "node:timers/promises"; -import { - BuildManifest, - CreateBackgroundWorkerRequestBody, - DevConfigResponseBody, - SemanticInternalAttributes, - WorkerManifest, -} from "@trigger.dev/core/v3"; -import { ResolvedConfig } from "@trigger.dev/core/v3/build"; -import { CliApiClient } from "../apiClient.js"; -import { DevCommandOptions } from "../commands/dev.js"; +import { fileURLToPath } from "node:url"; +import pLimit from "p-limit"; +import type { Socket } from "socket.io-client"; +import { io } from "socket.io-client"; +import type { CliApiClient } from "../apiClient.js"; +import { copySkillFolders } from "../build/bundleSkills.js"; +import type { DevCommandOptions } from "../commands/dev.js"; +import { DevRunController } from "../entryPoints/dev-run-controller.js"; +import { cliLink, prettyError } from "../utilities/cliOutput.js"; +import { devBranchPathSegment } from "../utilities/devBranch.js"; import { eventBus } from "../utilities/eventBus.js"; +import { resolveLocalEnvVars } from "../utilities/localEnvVars.js"; import { logger } from "../utilities/logger.js"; import { resolveSourceFiles } from "../utilities/sourceFiles.js"; +import { getTmpRoot } from "../utilities/tempDirectories.js"; import { BackgroundWorker } from "./backgroundWorker.js"; -import { copySkillFolders } from "../build/bundleSkills.js"; -import { WorkerRuntime } from "./workerRuntime.js"; -import { cliLink, prettyError } from "../utilities/cliOutput.js"; -import { DevRunController } from "../entryPoints/dev-run-controller.js"; -import { io, Socket } from "socket.io-client"; -import { - WorkerClientToServerEvents, - WorkerServerToClientEvents, -} from "@trigger.dev/core/v3/workers"; -import pLimit from "p-limit"; -import { resolveLocalEnvVars } from "../utilities/localEnvVars.js"; -import type { Metafile } from "esbuild"; import { TaskRunProcessPool } from "./taskRunProcessPool.js"; -import { tryCatch } from "@trigger.dev/core/utils"; -import { devBranchPathSegment } from "../utilities/devBranch.js"; -import { getTmpRoot } from "../utilities/tempDirectories.js"; +import type { WorkerRuntime } from "./workerRuntime.js"; export type WorkerRuntimeOptions = { name: string | undefined; @@ -726,7 +726,7 @@ class DevSupervisor implements WorkerRuntime { } }); - const interval = setInterval(() => { + const _interval = setInterval(() => { logger.debug("[DevSupervisor] Socket connections", { connections: Array.from(this.socketConnections), }); diff --git a/packages/cli-v3/src/dev/lock.ts b/packages/cli-v3/src/dev/lock.ts index e8b6c05dae2..5d002d56a57 100644 --- a/packages/cli-v3/src/dev/lock.ts +++ b/packages/cli-v3/src/dev/lock.ts @@ -29,7 +29,7 @@ export async function createLockFile(cwd: string, branch?: string) { try { logger.debug("Removing lockfile", { lockFilePath }); return unlinkSync(lockFilePath); - } catch (e) { + } catch (_e) { // This sometimes fails on Windows with EBUSY } }; diff --git a/packages/cli-v3/src/dev/mcpServer.ts b/packages/cli-v3/src/dev/mcpServer.ts index 8c4e57da341..8d0d49efeca 100644 --- a/packages/cli-v3/src/dev/mcpServer.ts +++ b/packages/cli-v3/src/dev/mcpServer.ts @@ -3,7 +3,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js"; import { z } from "zod"; import { logger } from "../utilities/logger.js"; -import { CliApiClient } from "../apiClient.js"; +import type { CliApiClient } from "../apiClient.js"; import { ApiClient, RunStatus } from "@trigger.dev/core/v3"; import { eventBus } from "../utilities/eventBus.js"; diff --git a/packages/cli-v3/src/dev/taskRunProcessPool.ts b/packages/cli-v3/src/dev/taskRunProcessPool.ts index 414626e64cc..dad222c3ae7 100644 --- a/packages/cli-v3/src/dev/taskRunProcessPool.ts +++ b/packages/cli-v3/src/dev/taskRunProcessPool.ts @@ -1,9 +1,9 @@ -import { +import type { MachinePresetResources, ServerBackgroundWorker, WorkerManifest, - generateFriendlyId, } from "@trigger.dev/core/v3"; +import { generateFriendlyId } from "@trigger.dev/core/v3"; import { TaskRunProcess } from "../executions/taskRunProcess.js"; import { logger } from "../utilities/logger.js"; diff --git a/packages/cli-v3/src/dev/workerRuntime.ts b/packages/cli-v3/src/dev/workerRuntime.ts index 54905e8f37e..661833996bd 100644 --- a/packages/cli-v3/src/dev/workerRuntime.ts +++ b/packages/cli-v3/src/dev/workerRuntime.ts @@ -1,7 +1,7 @@ -import { BuildManifest } from "@trigger.dev/core/v3"; -import { ResolvedConfig } from "@trigger.dev/core/v3/build"; -import { CliApiClient } from "../apiClient.js"; -import { DevCommandOptions } from "../commands/dev.js"; +import type { BuildManifest } from "@trigger.dev/core/v3"; +import type { ResolvedConfig } from "@trigger.dev/core/v3/build"; +import type { CliApiClient } from "../apiClient.js"; +import type { DevCommandOptions } from "../commands/dev.js"; import type { Metafile } from "esbuild"; export interface WorkerRuntime { diff --git a/packages/cli-v3/src/entryPoints/dev-index-worker.ts b/packages/cli-v3/src/entryPoints/dev-index-worker.ts index a5ff5cb5597..59228f0971d 100644 --- a/packages/cli-v3/src/entryPoints/dev-index-worker.ts +++ b/packages/cli-v3/src/entryPoints/dev-index-worker.ts @@ -1,15 +1,15 @@ import { + type TriggerConfig, BuildManifest, type HandleErrorFunction, indexerToWorkerMessages, resourceCatalog, type PromptManifest, type TaskManifest, - TriggerConfig, } from "@trigger.dev/core/v3"; import { + type TracingDiagnosticLogLevel, StandardResourceCatalog, - TracingDiagnosticLogLevel, TracingSDK, } from "@trigger.dev/core/v3/workers"; import { sendMessageInCatalog, ZodSchemaParsedError } from "@trigger.dev/core/v3/zodMessageHandler"; diff --git a/packages/cli-v3/src/entryPoints/dev-run-controller.ts b/packages/cli-v3/src/entryPoints/dev-run-controller.ts index cf4038c1265..9ef8f2007c9 100644 --- a/packages/cli-v3/src/entryPoints/dev-run-controller.ts +++ b/packages/cli-v3/src/entryPoints/dev-run-controller.ts @@ -1,28 +1,30 @@ -import { +import type { CompleteRunAttemptResult, DequeuedMessage, - IntervalService, - isManualOutOfMemoryError, - isOOMRunError, LogLevel, RunExecutionData, - SuspendedProcessError, TaskRunExecution, TaskRunExecutionMetrics, TaskRunExecutionResult, TaskRunFailedExecutionResult, } from "@trigger.dev/core/v3"; +import { + IntervalService, + isManualOutOfMemoryError, + isOOMRunError, + SuspendedProcessError, +} from "@trigger.dev/core/v3"; import { type WorkloadRunAttemptStartResponseBody } from "@trigger.dev/core/v3/workers"; import { setTimeout as sleep } from "timers/promises"; -import { CliApiClient } from "../apiClient.js"; +import type { CliApiClient } from "../apiClient.js"; import { TaskRunProcess } from "../executions/taskRunProcess.js"; import { assertExhaustive } from "../utilities/assertExhaustive.js"; import { logger } from "../utilities/logger.js"; import { sanitizeEnvVars } from "../utilities/sanitizeEnvVars.js"; import { join } from "node:path"; -import { BackgroundWorker } from "../dev/backgroundWorker.js"; +import type { BackgroundWorker } from "../dev/backgroundWorker.js"; import { eventBus } from "../utilities/eventBus.js"; -import { TaskRunProcessPool } from "../dev/taskRunProcessPool.js"; +import type { TaskRunProcessPool } from "../dev/taskRunProcessPool.js"; type DevRunControllerOptions = { runFriendlyId: string; diff --git a/packages/cli-v3/src/entryPoints/dev-run-worker.ts b/packages/cli-v3/src/entryPoints/dev-run-worker.ts index 9953e07c831..3f26a974b1d 100644 --- a/packages/cli-v3/src/entryPoints/dev-run-worker.ts +++ b/packages/cli-v3/src/entryPoints/dev-run-worker.ts @@ -1,79 +1,79 @@ import type { Tracer } from "@opentelemetry/api"; import type { Logger } from "@opentelemetry/api-logs"; +import { promiseWithResolvers } from "@trigger.dev/core/utils"; import { - AnyOnCatchErrorHookFunction, - AnyOnFailureHookFunction, - AnyOnInitHookFunction, - AnyOnStartHookFunction, - AnyOnSuccessHookFunction, + type AnyOnCatchErrorHookFunction, + type AnyOnFailureHookFunction, + type AnyOnInitHookFunction, + type AnyOnStartHookFunction, + type AnyOnSuccessHookFunction, + type HandleErrorFunction, + type LogLevel, + type TaskRunExecution, + type TriggerConfig, + type UsageMeasurement, apiClientManager, attemptKey, clock, ExecutorToWorkerMessageCatalog, - type HandleErrorFunction, + heartbeats, + inputStreams, lifecycleHooks, localsAPI, logger, - LogLevel, OTEL_LOG_ATTRIBUTE_COUNT_LIMIT, + realtimeStreams, + resetIdempotencyKeyCatalog, resourceCatalog, runMetadata, runtime, runTimelineMetrics, + sessionStreams, taskContext, TaskRunContext, TaskRunErrorCodes, - TaskRunExecution, timeout, - TriggerConfig, - UsageMeasurement, + traceContext, waitUntil, WorkerManifest, WorkerToExecutorMessageCatalog, - traceContext, - heartbeats, - realtimeStreams, - inputStreams, - sessionStreams, - resetIdempotencyKeyCatalog, } from "@trigger.dev/core/v3"; import { TriggerTracer } from "@trigger.dev/core/v3/tracer"; import { + type TracingDiagnosticLogLevel, ConsoleInterceptor, DevUsageManager, DurableClock, getEnvVar, getNumberEnvVar, logLevels, - SharedRuntimeManager, + NO_FILE_CONTEXT, OtelTaskLogger, populateEnv, - NO_FILE_CONTEXT, + SharedRuntimeManager, + StandardHeartbeatsManager, + StandardInputStreamManager, StandardLifecycleHooksManager, StandardLocalsManager, StandardMetadataManager, + StandardRealtimeStreamsManager, StandardResourceCatalog, StandardRunTimelineMetricsManager, + StandardSessionStreamManager, + StandardTraceContextManager, StandardWaitUntilManager, TaskExecutor, - TracingDiagnosticLogLevel, TracingSDK, usage, UsageTimeoutManager, - StandardTraceContextManager, - StandardHeartbeatsManager, - StandardRealtimeStreamsManager, - StandardInputStreamManager, - StandardSessionStreamManager, } from "@trigger.dev/core/v3/workers"; import { ZodIpcConnection } from "@trigger.dev/core/v3/zodIpc"; import { readFile } from "node:fs/promises"; -import { setInterval, setTimeout } from "node:timers/promises"; +import { setTimeout } from "node:timers/promises"; import sourceMapSupport from "source-map-support"; import { env } from "std-env"; import { normalizeImportPath } from "../utilities/normalizeImportPath.js"; import { VERSION } from "../version.js"; -import { promiseWithResolvers } from "@trigger.dev/core/utils"; sourceMapSupport.install({ handleUncaughtExceptions: false, diff --git a/packages/cli-v3/src/entryPoints/managed-index-controller.ts b/packages/cli-v3/src/entryPoints/managed-index-controller.ts index 21aa3d829d2..248785782a1 100644 --- a/packages/cli-v3/src/entryPoints/managed-index-controller.ts +++ b/packages/cli-v3/src/entryPoints/managed-index-controller.ts @@ -1,16 +1,13 @@ -import { - BuildManifest, - CreateBackgroundWorkerRequestBody, - serializeIndexingError, -} from "@trigger.dev/core/v3"; -import { readFile, writeFile } from "node:fs/promises"; +import type { CreateBackgroundWorkerRequestBody } from "@trigger.dev/core/v3"; +import { BuildManifest, serializeIndexingError } from "@trigger.dev/core/v3"; +import { execOptionsForRuntime } from "@trigger.dev/core/v3/build"; +import { readFile } from "node:fs/promises"; import { join } from "node:path"; import { env } from "std-env"; import { CliApiClient } from "../apiClient.js"; import { indexWorkerManifest } from "../indexing/indexWorkerManifest.js"; -import { resolveSourceFiles } from "../utilities/sourceFiles.js"; -import { execOptionsForRuntime } from "@trigger.dev/core/v3/build"; import { writeJSONFile } from "../utilities/fileSystem.js"; +import { resolveSourceFiles } from "../utilities/sourceFiles.js"; async function loadBuildManifest() { const manifestContents = await readFile("./build.json", "utf-8"); diff --git a/packages/cli-v3/src/entryPoints/managed-index-worker.ts b/packages/cli-v3/src/entryPoints/managed-index-worker.ts index 52e24cdd876..f463c4156e5 100644 --- a/packages/cli-v3/src/entryPoints/managed-index-worker.ts +++ b/packages/cli-v3/src/entryPoints/managed-index-worker.ts @@ -1,15 +1,15 @@ import { + type TriggerConfig, BuildManifest, type HandleErrorFunction, indexerToWorkerMessages, resourceCatalog, type PromptManifest, type TaskManifest, - TriggerConfig, } from "@trigger.dev/core/v3"; import { + type TracingDiagnosticLogLevel, StandardResourceCatalog, - TracingDiagnosticLogLevel, TracingSDK, } from "@trigger.dev/core/v3/workers"; import { sendMessageInCatalog, ZodSchemaParsedError } from "@trigger.dev/core/v3/zodMessageHandler"; diff --git a/packages/cli-v3/src/entryPoints/managed-run-worker.ts b/packages/cli-v3/src/entryPoints/managed-run-worker.ts index 88b1b3e6c2f..5608ee057b8 100644 --- a/packages/cli-v3/src/entryPoints/managed-run-worker.ts +++ b/packages/cli-v3/src/entryPoints/managed-run-worker.ts @@ -1,79 +1,79 @@ import type { Tracer } from "@opentelemetry/api"; import type { Logger } from "@opentelemetry/api-logs"; +import { promiseWithResolvers } from "@trigger.dev/core/utils"; import { - AnyOnCatchErrorHookFunction, - AnyOnFailureHookFunction, - AnyOnInitHookFunction, - AnyOnStartHookFunction, - AnyOnSuccessHookFunction, + type AnyOnCatchErrorHookFunction, + type AnyOnFailureHookFunction, + type AnyOnInitHookFunction, + type AnyOnStartHookFunction, + type AnyOnSuccessHookFunction, + type HandleErrorFunction, + type LogLevel, + type TaskRunExecution, + type TriggerConfig, + type UsageMeasurement, apiClientManager, clock, ExecutorToWorkerMessageCatalog, - type HandleErrorFunction, + heartbeats, + inputStreams, lifecycleHooks, localsAPI, logger, - LogLevel, OTEL_LOG_ATTRIBUTE_COUNT_LIMIT, + realtimeStreams, + resetIdempotencyKeyCatalog, resourceCatalog, runMetadata, runtime, runTimelineMetrics, + sessionStreams, taskContext, TaskRunContext, TaskRunErrorCodes, - TaskRunExecution, timeout, - TriggerConfig, - UsageMeasurement, + traceContext, waitUntil, WorkerManifest, WorkerToExecutorMessageCatalog, - traceContext, - heartbeats, - realtimeStreams, - inputStreams, - sessionStreams, - resetIdempotencyKeyCatalog, } from "@trigger.dev/core/v3"; import { TriggerTracer } from "@trigger.dev/core/v3/tracer"; import { + type TracingDiagnosticLogLevel, ConsoleInterceptor, DevUsageManager, DurableClock, getEnvVar, getNumberEnvVar, logLevels, - SharedRuntimeManager, + NO_FILE_CONTEXT, OtelTaskLogger, populateEnv, ProdUsageManager, - NO_FILE_CONTEXT, + SharedRuntimeManager, + StandardHeartbeatsManager, + StandardInputStreamManager, StandardLifecycleHooksManager, StandardLocalsManager, StandardMetadataManager, + StandardRealtimeStreamsManager, StandardResourceCatalog, StandardRunTimelineMetricsManager, + StandardSessionStreamManager, + StandardTraceContextManager, StandardWaitUntilManager, TaskExecutor, - TracingDiagnosticLogLevel, TracingSDK, usage, UsageTimeoutManager, - StandardTraceContextManager, - StandardHeartbeatsManager, - StandardRealtimeStreamsManager, - StandardInputStreamManager, - StandardSessionStreamManager, } from "@trigger.dev/core/v3/workers"; import { ZodIpcConnection } from "@trigger.dev/core/v3/zodIpc"; import { readFile } from "node:fs/promises"; -import { setInterval, setTimeout } from "node:timers/promises"; +import { setTimeout } from "node:timers/promises"; import sourceMapSupport from "source-map-support"; import { env } from "std-env"; import { normalizeImportPath } from "../utilities/normalizeImportPath.js"; import { VERSION } from "../version.js"; -import { promiseWithResolvers } from "@trigger.dev/core/utils"; sourceMapSupport.install({ handleUncaughtExceptions: false, diff --git a/packages/cli-v3/src/entryPoints/managed/controller.ts b/packages/cli-v3/src/entryPoints/managed/controller.ts index 54f0dba8471..5c63a4082d7 100644 --- a/packages/cli-v3/src/entryPoints/managed/controller.ts +++ b/packages/cli-v3/src/entryPoints/managed/controller.ts @@ -1,4 +1,4 @@ -import { WorkerManifest } from "@trigger.dev/core/v3"; +import type { WorkerManifest } from "@trigger.dev/core/v3"; import { WarmStartClient, WORKLOAD_HEADERS, @@ -8,8 +8,9 @@ import { } from "@trigger.dev/core/v3/workers"; import { io, type Socket } from "socket.io-client"; import { RunnerEnv } from "./env.js"; -import { ManagedRunLogger, RunLogger, SendDebugLogOptions } from "./logger.js"; -import { EnvObject } from "std-env"; +import type { RunLogger, SendDebugLogOptions } from "./logger.js"; +import { ManagedRunLogger } from "./logger.js"; +import type { EnvObject } from "std-env"; import { RunExecution } from "./execution.js"; import { TaskRunProcessProvider } from "./taskRunProcessProvider.js"; import { tryCatch } from "@trigger.dev/core/utils"; diff --git a/packages/cli-v3/src/entryPoints/managed/env.ts b/packages/cli-v3/src/entryPoints/managed/env.ts index 901a23d6122..4da8361e863 100644 --- a/packages/cli-v3/src/entryPoints/managed/env.ts +++ b/packages/cli-v3/src/entryPoints/managed/env.ts @@ -1,7 +1,7 @@ import { randomUUID } from "node:crypto"; -import { Metadata } from "./overrides.js"; +import type { Metadata } from "./overrides.js"; import { z } from "zod"; -import { EnvObject } from "std-env"; +import type { EnvObject } from "std-env"; const DateEnv = z .string() diff --git a/packages/cli-v3/src/entryPoints/managed/execution.ts b/packages/cli-v3/src/entryPoints/managed/execution.ts index ec927627f36..8dca48fe279 100644 --- a/packages/cli-v3/src/entryPoints/managed/execution.ts +++ b/packages/cli-v3/src/entryPoints/managed/execution.ts @@ -1,28 +1,30 @@ import { + type TaskRunExecutionRetry, + type TaskRunExecutionStatus, + type WorkerManifest, type CompleteRunAttemptResult, type RunExecutionData, SuspendedProcessError, type TaskRunExecutionMetrics, type TaskRunExecutionResult, - TaskRunExecutionRetry, - TaskRunExecutionStatus, type TaskRunFailedExecutionResult, - WorkerManifest, } from "@trigger.dev/core/v3"; -import { type WorkloadRunAttemptStartResponseBody } from "@trigger.dev/core/v3/workers"; +import { + type WorkloadRunAttemptStartResponseBody, + type WorkloadHttpClient, +} from "@trigger.dev/core/v3/workers"; import { TaskRunProcess } from "../../executions/taskRunProcess.js"; -import { RunLogger, SendDebugLogOptions } from "./logger.js"; -import { RunnerEnv } from "./env.js"; -import { WorkloadHttpClient } from "@trigger.dev/core/v3/workers"; +import type { RunLogger, SendDebugLogOptions } from "./logger.js"; +import type { RunnerEnv } from "./env.js"; import { setTimeout as sleep } from "timers/promises"; import { RunExecutionSnapshotPoller } from "./poller.js"; import { assertExhaustive, tryCatch } from "@trigger.dev/core/utils"; -import { Metadata, MetadataClient } from "./overrides.js"; +import { type Metadata, MetadataClient } from "./overrides.js"; import { randomBytes } from "node:crypto"; -import { SnapshotManager, SnapshotState } from "./snapshot.js"; +import { type SnapshotState, SnapshotManager } from "./snapshot.js"; import type { SupervisorSocket } from "./controller.js"; import { RunNotifier } from "./notifier.js"; -import { TaskRunProcessProvider } from "./taskRunProcessProvider.js"; +import type { TaskRunProcessProvider } from "./taskRunProcessProvider.js"; class ExecutionAbortError extends Error { constructor(message: string) { diff --git a/packages/cli-v3/src/entryPoints/managed/logger.ts b/packages/cli-v3/src/entryPoints/managed/logger.ts index ef3bd097651..85c0758ae53 100644 --- a/packages/cli-v3/src/entryPoints/managed/logger.ts +++ b/packages/cli-v3/src/entryPoints/managed/logger.ts @@ -1,9 +1,9 @@ -import { +import type { DebugLogPropertiesInput, WorkloadDebugLogRequestBody, WorkloadHttpClient, } from "@trigger.dev/core/v3/runEngineWorker"; -import { RunnerEnv } from "./env.js"; +import type { RunnerEnv } from "./env.js"; import { flattenAttributes } from "@trigger.dev/core/v3"; import { SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger"; diff --git a/packages/cli-v3/src/entryPoints/managed/poller.ts b/packages/cli-v3/src/entryPoints/managed/poller.ts index b26aa5ab21d..0daf3669fde 100644 --- a/packages/cli-v3/src/entryPoints/managed/poller.ts +++ b/packages/cli-v3/src/entryPoints/managed/poller.ts @@ -1,4 +1,4 @@ -import { RunLogger, SendDebugLogOptions } from "./logger.js"; +import type { RunLogger, SendDebugLogOptions } from "./logger.js"; import { IntervalService } from "@trigger.dev/core/v3"; type OnPoll = (source: string) => Promise; diff --git a/packages/cli-v3/src/entryPoints/managed/snapshot.test.ts b/packages/cli-v3/src/entryPoints/managed/snapshot.test.ts index a3dbab3883b..0290cd0502a 100644 --- a/packages/cli-v3/src/entryPoints/managed/snapshot.test.ts +++ b/packages/cli-v3/src/entryPoints/managed/snapshot.test.ts @@ -1,6 +1,6 @@ import { SnapshotManager } from "./snapshot.js"; import { ConsoleRunLogger } from "./logger.js"; -import { RunExecutionData, TaskRunExecutionStatus } from "@trigger.dev/core/v3"; +import type { RunExecutionData, TaskRunExecutionStatus } from "@trigger.dev/core/v3"; import { setTimeout } from "timers/promises"; import { isCI } from "std-env"; @@ -368,7 +368,7 @@ describe("SnapshotManager", () => { const executionOrder: string[] = []; const executionTimes: { start: number; end: number; type: string }[] = []; let currentlyExecuting = false; - let handlerExecutionCount = 0; + let _handlerExecutionCount = 0; const manager = new SnapshotManager({ runnerId: "test-runner-1", diff --git a/packages/cli-v3/src/entryPoints/managed/snapshot.ts b/packages/cli-v3/src/entryPoints/managed/snapshot.ts index 9703ea8f871..0196a64a699 100644 --- a/packages/cli-v3/src/entryPoints/managed/snapshot.ts +++ b/packages/cli-v3/src/entryPoints/managed/snapshot.ts @@ -1,8 +1,7 @@ -import { tryCatch } from "@trigger.dev/core/utils"; -import { RunLogger, SendDebugLogOptions } from "./logger.js"; -import { TaskRunExecutionStatus, type RunExecutionData } from "@trigger.dev/core/v3"; -import { assertExhaustive } from "@trigger.dev/core/utils"; -import { MetadataClient } from "./overrides.js"; +import { assertExhaustive, tryCatch } from "@trigger.dev/core/utils"; +import { type TaskRunExecutionStatus, type RunExecutionData } from "@trigger.dev/core/v3"; +import type { RunLogger, SendDebugLogOptions } from "./logger.js"; +import type { MetadataClient } from "./overrides.js"; export type SnapshotState = { id: string; diff --git a/packages/cli-v3/src/entryPoints/managed/taskRunProcessProvider.ts b/packages/cli-v3/src/entryPoints/managed/taskRunProcessProvider.ts index f1bf0d6d621..4e0a561220b 100644 --- a/packages/cli-v3/src/entryPoints/managed/taskRunProcessProvider.ts +++ b/packages/cli-v3/src/entryPoints/managed/taskRunProcessProvider.ts @@ -1,7 +1,8 @@ -import { WorkerManifest, generateFriendlyId } from "@trigger.dev/core/v3"; +import type { WorkerManifest } from "@trigger.dev/core/v3"; +import { generateFriendlyId } from "@trigger.dev/core/v3"; import { TaskRunProcess } from "../../executions/taskRunProcess.js"; -import { RunnerEnv } from "./env.js"; -import { RunLogger, SendDebugLogOptions } from "./logger.js"; +import type { RunnerEnv } from "./env.js"; +import type { RunLogger, SendDebugLogOptions } from "./logger.js"; export interface TaskRunProcessProviderOptions { workerManifest: WorkerManifest; diff --git a/packages/cli-v3/src/executions/taskRunProcess.test.ts b/packages/cli-v3/src/executions/taskRunProcess.test.ts index 9f36ac13b34..ae5cbb15bb2 100644 --- a/packages/cli-v3/src/executions/taskRunProcess.test.ts +++ b/packages/cli-v3/src/executions/taskRunProcess.test.ts @@ -3,7 +3,6 @@ import { describe, it, expect, vi } from "vitest"; import { UncaughtExceptionError, UnexpectedExitError } from "@trigger.dev/core/v3/errors"; import type { TaskRunExecution, - TaskRunExecutionPayload, WorkerManifest, ServerBackgroundWorker, MachinePresetResources, diff --git a/packages/cli-v3/src/executions/taskRunProcess.ts b/packages/cli-v3/src/executions/taskRunProcess.ts index 5db616ba859..66b30269ada 100644 --- a/packages/cli-v3/src/executions/taskRunProcess.ts +++ b/packages/cli-v3/src/executions/taskRunProcess.ts @@ -1,16 +1,16 @@ import { + type CompletedWaitpoint, + type MachinePresetResources, + type ServerBackgroundWorker, + type TaskRunExecution, + type TaskRunExecutionPayload, + type TaskRunExecutionResult, + type WorkerManifest, attemptKey, - CompletedWaitpoint, ExecutorToWorkerMessageCatalog, - MachinePresetResources, - ServerBackgroundWorker, TaskRunErrorCodes, - TaskRunExecution, - TaskRunExecutionPayload, - TaskRunExecutionResult, type TaskRunInternalError, tryCatch, - WorkerManifest, WorkerToExecutorMessageCatalog, } from "@trigger.dev/core/v3"; import { @@ -18,12 +18,12 @@ import { ZodIpcConnection, } from "@trigger.dev/core/v3/zodIpc"; import { Evt } from "evt"; -import { ChildProcess, fork } from "node:child_process"; +import { type ChildProcess, fork } from "node:child_process"; import { chalkError, chalkGrey, chalkRun, prettyPrintDate } from "../utilities/cliOutput.js"; import { execOptionsForRuntime, execPathForRuntime } from "@trigger.dev/core/v3/build"; import { nodeOptionsWithMaxOldSpaceSize } from "@trigger.dev/core/v3/machines"; -import { InferSocketMessageSchema } from "@trigger.dev/core/v3/zodSocket"; +import type { InferSocketMessageSchema } from "@trigger.dev/core/v3/zodSocket"; import { logger } from "../utilities/logger.js"; import { CancelledProcessError, @@ -115,7 +115,7 @@ export class TaskRunProcess { try { await this.#cancel(); - } catch (err) {} + } catch (_err) {} await this.#gracefullyTerminate(this.options.gracefulTerminationTimeoutInMs); } diff --git a/packages/cli-v3/src/indexing/indexWorkerManifest.ts b/packages/cli-v3/src/indexing/indexWorkerManifest.ts index ed7e810460a..7e8f7b1e002 100644 --- a/packages/cli-v3/src/indexing/indexWorkerManifest.ts +++ b/packages/cli-v3/src/indexing/indexWorkerManifest.ts @@ -5,11 +5,8 @@ import { TaskMetadataParseError, UncaughtExceptionError, } from "@trigger.dev/core/v3/errors"; -import { - BuildRuntime, - indexerToWorkerMessages, - WorkerManifest, -} from "@trigger.dev/core/v3/schemas"; +import type { BuildRuntime, WorkerManifest } from "@trigger.dev/core/v3/schemas"; +import { indexerToWorkerMessages } from "@trigger.dev/core/v3/schemas"; import { parseMessageFromCatalog } from "@trigger.dev/core/v3/zodMessageHandler"; import { fork } from "node:child_process"; diff --git a/packages/cli-v3/src/indexing/registerResources.ts b/packages/cli-v3/src/indexing/registerResources.ts index 75dd4151d41..0fc0c9501e5 100644 --- a/packages/cli-v3/src/indexing/registerResources.ts +++ b/packages/cli-v3/src/indexing/registerResources.ts @@ -1,4 +1,5 @@ -import { BuildManifest, ImportTaskFileErrors, resourceCatalog } from "@trigger.dev/core/v3"; +import type { BuildManifest, ImportTaskFileErrors } from "@trigger.dev/core/v3"; +import { resourceCatalog } from "@trigger.dev/core/v3"; import { normalizeImportPath } from "../utilities/normalizeImportPath.js"; export async function registerResources( diff --git a/packages/cli-v3/src/mcp/auth.ts b/packages/cli-v3/src/mcp/auth.ts index a09543874d7..b948f2cb889 100644 --- a/packages/cli-v3/src/mcp/auth.ts +++ b/packages/cli-v3/src/mcp/auth.ts @@ -1,14 +1,14 @@ -import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { env } from "std-env"; import { CliApiClient } from "../apiClient.js"; import { CLOUD_API_URL } from "../consts.js"; import { readAuthConfigProfile, writeAuthConfigProfile } from "../utilities/configFiles.js"; import { NotAccessTokenError, validateAccessToken } from "../utilities/accessTokens.js"; -import { LoginResult, LoginResultOk } from "../utilities/session.js"; +import type { LoginResult, LoginResultOk } from "../utilities/session.js"; import { getPersonalAccessToken } from "../commands/login.js"; import open from "open"; import pRetry from "p-retry"; -import { McpContext } from "./context.js"; +import type { McpContext } from "./context.js"; import { ApiClient } from "@trigger.dev/core/v3"; export type McpAuthOptions = { diff --git a/packages/cli-v3/src/mcp/capabilities.ts b/packages/cli-v3/src/mcp/capabilities.ts index 8c4e42581c9..875f4f23496 100644 --- a/packages/cli-v3/src/mcp/capabilities.ts +++ b/packages/cli-v3/src/mcp/capabilities.ts @@ -1,4 +1,4 @@ -import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; export function hasRootsCapability(server: McpServer) { const capabilities = server.server.getClientCapabilities(); diff --git a/packages/cli-v3/src/mcp/context.ts b/packages/cli-v3/src/mcp/context.ts index 30a28857b89..b18cb9d5947 100644 --- a/packages/cli-v3/src/mcp/context.ts +++ b/packages/cli-v3/src/mcp/context.ts @@ -1,4 +1,4 @@ -import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { tryCatch } from "@trigger.dev/core/utils"; import { ApiClient } from "@trigger.dev/core/v3"; import fs from "node:fs"; @@ -11,7 +11,7 @@ import { hasRootsCapability, hasSamplingCapability, } from "./capabilities.js"; -import { FileLogger } from "./logger.js"; +import type { FileLogger } from "./logger.js"; import { fileURLToPath } from "node:url"; const MCP_CONFIG_DIR = ".trigger"; diff --git a/packages/cli-v3/src/mcp/formatters.ts b/packages/cli-v3/src/mcp/formatters.ts index 539762257d2..da07de4bfb5 100644 --- a/packages/cli-v3/src/mcp/formatters.ts +++ b/packages/cli-v3/src/mcp/formatters.ts @@ -1,5 +1,5 @@ -import { AnyRunShape } from "@trigger.dev/core/v3"; -import { +import type { AnyRunShape } from "@trigger.dev/core/v3"; +import type { ListRunResponseItem, RetrieveRunResponse, RetrieveRunTraceResponseBody, diff --git a/packages/cli-v3/src/mcp/logger.ts b/packages/cli-v3/src/mcp/logger.ts index b30576a3316..a5dbfcb6bb6 100644 --- a/packages/cli-v3/src/mcp/logger.ts +++ b/packages/cli-v3/src/mcp/logger.ts @@ -1,4 +1,4 @@ -import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { appendFileSync } from "node:fs"; import util from "node:util"; diff --git a/packages/cli-v3/src/mcp/tools.ts b/packages/cli-v3/src/mcp/tools.ts index a440750eca5..1fe7be6256a 100644 --- a/packages/cli-v3/src/mcp/tools.ts +++ b/packages/cli-v3/src/mcp/tools.ts @@ -1,4 +1,4 @@ -import { McpContext } from "./context.js"; +import type { McpContext } from "./context.js"; import { deployTool, listDeploysTool } from "./tools/deploys.js"; import { searchDocsTool } from "./tools/docs.js"; import { diff --git a/packages/cli-v3/src/mcp/tools/agentChat.ts b/packages/cli-v3/src/mcp/tools/agentChat.ts index f718722dd29..992e3d436a1 100644 --- a/packages/cli-v3/src/mcp/tools/agentChat.ts +++ b/packages/cli-v3/src/mcp/tools/agentChat.ts @@ -1,6 +1,6 @@ import { z } from "zod"; +import type { ApiClient } from "@trigger.dev/core/v3"; import { - ApiClient, controlSubtype, SSEStreamSubscription, TRIGGER_CONTROL_SUBTYPE, @@ -274,7 +274,11 @@ export const sendAgentMessageTool = { } // Subscribe to the response stream and collect the full text - const { text, toolCalls, assistantMessage } = await collectAgentResponse(session); + const { + text: _text, + toolCalls: _toolCalls, + assistantMessage, + } = await collectAgentResponse(session); // Track the assistant response for continuation payloads session.messages.push(assistantMessage); diff --git a/packages/cli-v3/src/mcp/tools/deploys.ts b/packages/cli-v3/src/mcp/tools/deploys.ts index 9caba1114cc..2732e4179f6 100644 --- a/packages/cli-v3/src/mcp/tools/deploys.ts +++ b/packages/cli-v3/src/mcp/tools/deploys.ts @@ -1,14 +1,13 @@ -import { DeployInput, ListDeploysInput } from "../schemas.js"; -import { toolsMetadata } from "../config.js"; -import { ToolMeta } from "../types.js"; -import { respondWithError, toolHandler } from "../utils.js"; -import { McpContext } from "../context.js"; -import { x } from "tinyexec"; -import { getPackageJson, tryResolveTriggerPackageVersion } from "../../commands/update.js"; -import { VERSION } from "../../version.js"; import { resolveSync as esmResolve } from "mlly"; import { fileURLToPath } from "node:url"; import stripAnsi from "strip-ansi"; +import { x } from "tinyexec"; +import { getPackageJson, tryResolveTriggerPackageVersion } from "../../commands/update.js"; +import { VERSION } from "../../version.js"; +import { toolsMetadata } from "../config.js"; +import type { McpContext } from "../context.js"; +import { DeployInput, ListDeploysInput } from "../schemas.js"; +import { respondWithError, toolHandler } from "../utils.js"; export const deployTool = { name: toolsMetadata.deploy.name, diff --git a/packages/cli-v3/src/mcp/tools/orgs.ts b/packages/cli-v3/src/mcp/tools/orgs.ts index 9f8244b586f..7771c0e0c8d 100644 --- a/packages/cli-v3/src/mcp/tools/orgs.ts +++ b/packages/cli-v3/src/mcp/tools/orgs.ts @@ -1,8 +1,8 @@ -import { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; -import { GetProjectsResponseBody } from "@trigger.dev/core/v3"; +import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; +import type { GetProjectsResponseBody } from "@trigger.dev/core/v3"; import { toolsMetadata } from "../config.js"; import { CreateProjectInOrgInput, InitializeProjectInput } from "../schemas.js"; -import { ToolMeta } from "../types.js"; +import type { ToolMeta } from "../types.js"; import { respondWithError, toolHandler } from "../utils.js"; import { loadConfig } from "../../config.js"; import { tryCatch } from "@trigger.dev/core/utils"; diff --git a/packages/cli-v3/src/mcp/tools/previewBranches.ts b/packages/cli-v3/src/mcp/tools/previewBranches.ts index 90cfcc3cc13..281d031310c 100644 --- a/packages/cli-v3/src/mcp/tools/previewBranches.ts +++ b/packages/cli-v3/src/mcp/tools/previewBranches.ts @@ -1,6 +1,5 @@ -import { ListPreviewBranchesInput } from "../schemas.js"; import { toolsMetadata } from "../config.js"; -import { ToolMeta } from "../types.js"; +import { ListPreviewBranchesInput } from "../schemas.js"; import { respondWithError, toolHandler } from "../utils.js"; export const listPreviewBranchesTool = { diff --git a/packages/cli-v3/src/mcp/tools/profiles.ts b/packages/cli-v3/src/mcp/tools/profiles.ts index 0b02099cf2a..ad55e19702d 100644 --- a/packages/cli-v3/src/mcp/tools/profiles.ts +++ b/packages/cli-v3/src/mcp/tools/profiles.ts @@ -31,7 +31,7 @@ export const whoamiTool = { return { content: [{ type: "text" as const, text: content.join("\n") }], }; - } catch (error) { + } catch (_error) { return respondWithError("Not authenticated. Use an authenticated tool to trigger login."); } }), @@ -129,7 +129,7 @@ export const switchProfileTool = { return { content: [{ type: "text" as const, text: content.join("\n") }], }; - } catch (error) { + } catch (_error) { // Revert in-memory only (nothing was persisted) ctx.switchProfile(previousProfile); return respondWithError( diff --git a/packages/cli-v3/src/mcp/tools/runs.ts b/packages/cli-v3/src/mcp/tools/runs.ts index b4311bee4c5..d93ee0b47f9 100644 --- a/packages/cli-v3/src/mcp/tools/runs.ts +++ b/packages/cli-v3/src/mcp/tools/runs.ts @@ -1,4 +1,4 @@ -import { AnyRunShape } from "@trigger.dev/core/v3"; +import type { AnyRunShape } from "@trigger.dev/core/v3"; import fs from "node:fs"; import os from "node:os"; import path from "node:path"; diff --git a/packages/cli-v3/src/mcp/types.ts b/packages/cli-v3/src/mcp/types.ts index 697a2d0dfcb..3322a46c1a3 100644 --- a/packages/cli-v3/src/mcp/types.ts +++ b/packages/cli-v3/src/mcp/types.ts @@ -1,6 +1,6 @@ -import { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js"; -import { ServerNotification, ServerRequest } from "@modelcontextprotocol/sdk/types.js"; -import { McpContext } from "./context.js"; +import type { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js"; +import type { ServerNotification, ServerRequest } from "@modelcontextprotocol/sdk/types.js"; +import type { McpContext } from "./context.js"; export type ToolMeta = RequestHandlerExtra & { ctx: McpContext; diff --git a/packages/cli-v3/src/mcp/utils.ts b/packages/cli-v3/src/mcp/utils.ts index b783365e67e..4ea897becbf 100644 --- a/packages/cli-v3/src/mcp/utils.ts +++ b/packages/cli-v3/src/mcp/utils.ts @@ -1,6 +1,6 @@ import type { CallToolResult, ServerNotification } from "@modelcontextprotocol/sdk/types.js"; import { z } from "zod"; -import { ToolMeta } from "./types.js"; +import type { ToolMeta } from "./types.js"; export function respondWithError(error: unknown): CallToolResult { return { diff --git a/packages/cli-v3/src/runtimes/bun.ts b/packages/cli-v3/src/runtimes/bun.ts index 79cdb2ab448..80e2fb06344 100644 --- a/packages/cli-v3/src/runtimes/bun.ts +++ b/packages/cli-v3/src/runtimes/bun.ts @@ -1,4 +1,4 @@ -import * as esbuild from "esbuild"; +import type * as esbuild from "esbuild"; export function bunPlugin(): esbuild.Plugin { return { diff --git a/packages/cli-v3/src/utilities/analyze.ts b/packages/cli-v3/src/utilities/analyze.ts index b300f074bf2..c551d625ee7 100644 --- a/packages/cli-v3/src/utilities/analyze.ts +++ b/packages/cli-v3/src/utilities/analyze.ts @@ -3,7 +3,7 @@ import { chalkGreen, chalkError, chalkWarning, chalkTask, chalkPurple } from "./ import chalk from "chalk"; import type { Metafile } from "esbuild"; import CLITable from "cli-table3"; -import { BackgroundWorker } from "../dev/backgroundWorker.js"; +import type { BackgroundWorker } from "../dev/backgroundWorker.js"; export function analyzeWorker( worker: BackgroundWorker, @@ -51,7 +51,7 @@ export function printBundleTree( const outputDefinesTaskIds = buildOutputDefinesTaskIdsMap(workerManifest, metafile); for (const item of data) { - const { filePath, taskIds, bundleSize, bundleChildren, timing } = item; + const { filePath, taskIds, bundleSize: _bundleSize, bundleChildren, timing } = item; // Print the root const displayPath = getDisplayPath(filePath, preservePath); diff --git a/packages/cli-v3/src/utilities/buildManifest.ts b/packages/cli-v3/src/utilities/buildManifest.ts index 5cddbac71e7..6794966d76a 100644 --- a/packages/cli-v3/src/utilities/buildManifest.ts +++ b/packages/cli-v3/src/utilities/buildManifest.ts @@ -1,4 +1,4 @@ -import { BuildManifest } from "@trigger.dev/core/v3/schemas"; +import type { BuildManifest } from "@trigger.dev/core/v3/schemas"; export function buildManifestToJSON(manifest: BuildManifest): BuildManifest { const { deploy, build, externals, ...rest } = manifest; diff --git a/packages/cli-v3/src/utilities/cliOutput.ts b/packages/cli-v3/src/utilities/cliOutput.ts index 7d950c40a51..f798d36d666 100644 --- a/packages/cli-v3/src/utilities/cliOutput.ts +++ b/packages/cli-v3/src/utilities/cliOutput.ts @@ -1,6 +1,7 @@ import { log } from "@clack/prompts"; import chalk from "chalk"; -import { terminalLink, TerminalLinkOptions } from "./terminalLink.js"; +import type { TerminalLinkOptions } from "./terminalLink.js"; +import { terminalLink } from "./terminalLink.js"; import { hasTTY } from "std-env"; export const isInteractive = hasTTY; diff --git a/packages/cli-v3/src/utilities/configFiles.ts b/packages/cli-v3/src/utilities/configFiles.ts index 2e6455c68d1..4fee41d9cc4 100644 --- a/packages/cli-v3/src/utilities/configFiles.ts +++ b/packages/cli-v3/src/utilities/configFiles.ts @@ -46,12 +46,6 @@ function getOldAuthConfigFilePath() { function getAuthConfigFilePath() { return path.join(getGlobalConfigFolderPath(), CONFIG_FILE); } - -function getAuthConfigFileBackupPath() { - // Multiple calls won't overwrite old backups - return path.join(getGlobalConfigFolderPath(), `${CONFIG_FILE}.bak-${Date.now()}`); -} - function getBlankConfig(): CliConfigFile { return { version: 2, diff --git a/packages/cli-v3/src/utilities/createFileFromTemplate.ts b/packages/cli-v3/src/utilities/createFileFromTemplate.ts index aa1c5ca302b..9abf291bb93 100644 --- a/packages/cli-v3/src/utilities/createFileFromTemplate.ts +++ b/packages/cli-v3/src/utilities/createFileFromTemplate.ts @@ -1,6 +1,6 @@ import fs from "fs/promises"; -import { pathExists, readFile } from "./fileSystem.js"; import path from "path"; +import { pathExists } from "./fileSystem.js"; type Result = | { diff --git a/packages/cli-v3/src/utilities/eventBus.ts b/packages/cli-v3/src/utilities/eventBus.ts index aaa4215e1a3..f782bd0275f 100644 --- a/packages/cli-v3/src/utilities/eventBus.ts +++ b/packages/cli-v3/src/utilities/eventBus.ts @@ -1,12 +1,12 @@ -import { +import type { BuildManifest, BuildTarget, TaskRunExecution, TaskRunExecutionResult, } from "@trigger.dev/core/v3"; import { EventEmitter } from "node:events"; -import { BackgroundWorker } from "../dev/backgroundWorker.js"; -import { Socket } from "socket.io-client"; +import type { BackgroundWorker } from "../dev/backgroundWorker.js"; +import type { Socket } from "socket.io-client"; export type EventBusEvents = { rebuildStarted: [BuildTarget]; diff --git a/packages/cli-v3/src/utilities/fileSystem.ts b/packages/cli-v3/src/utilities/fileSystem.ts index e74a1184c1a..d8632d96a75 100644 --- a/packages/cli-v3/src/utilities/fileSystem.ts +++ b/packages/cli-v3/src/utilities/fileSystem.ts @@ -1,10 +1,10 @@ +import { parseJSONC, parseTOML, stringifyJSONC, stringifyTOML } from "confbox"; import fsSync from "fs"; +import fsModule from "fs/promises"; import stringify from "json-stable-stringify"; -import fsModule, { writeFile } from "fs/promises"; import fs from "node:fs"; import { homedir, tmpdir } from "node:os"; import pathModule from "node:path"; -import { parseJSONC, stringifyJSONC, parseTOML, stringifyTOML } from "confbox"; // Creates a file at the given path, if the directory doesn't exist it will be created export async function createFile( @@ -64,7 +64,7 @@ export async function createFileWithStore( } catch (linkError) { try { await fsModule.copyFile(storePath, filePath); - } catch (copyError) { + } catch (_copyError) { throw linkError; // Rethrow original error if copy also fails } } @@ -80,7 +80,7 @@ export async function createFileWithStore( } catch (linkError) { try { await fsModule.copyFile(storePath, filePath); - } catch (copyError) { + } catch (_copyError) { throw linkError; // Rethrow original error if copy also fails } } @@ -91,7 +91,7 @@ export async function createFileWithStore( export function isDirectory(configPath: string) { try { return fs.statSync(configPath).isDirectory(); - } catch (error) { + } catch (_error) { // ignore error return false; } @@ -194,7 +194,7 @@ export function readJSONFileSync(path: string) { export function safeDeleteFileSync(path: string) { try { fs.unlinkSync(path); - } catch (error) { + } catch (_error) { // ignore error } } diff --git a/packages/cli-v3/src/utilities/gitMeta.ts b/packages/cli-v3/src/utilities/gitMeta.ts index 8c9b9de82ff..737c146f6b9 100644 --- a/packages/cli-v3/src/utilities/gitMeta.ts +++ b/packages/cli-v3/src/utilities/gitMeta.ts @@ -3,7 +3,7 @@ import { join } from "path"; import ini from "ini"; import git from "git-last-commit"; import { x } from "tinyexec"; -import { GitMeta } from "@trigger.dev/core/v3"; +import type { GitMeta } from "@trigger.dev/core/v3"; export async function createGitMeta(directory: string): Promise { if (isGitHubApp()) { @@ -79,7 +79,7 @@ async function isDirty(directory: string): Promise { async function parseGitConfig(configPath: string) { try { return ini.parse(await fs.readFile(configPath, "utf8")); - } catch (err: unknown) { + } catch (_err: unknown) { return; } } @@ -242,7 +242,7 @@ async function getCommitMessage( if (!message && prNumber) { // If that didn't work, try fetching the PR branch - const branchResult = await x( + const _branchResult = await x( "git", ["fetch", "origin", `pull/${prNumber}/head:pr-${prNumber}`], { diff --git a/packages/cli-v3/src/utilities/platformNotifications.ts b/packages/cli-v3/src/utilities/platformNotifications.ts index 8b04a66e272..538edde148a 100644 --- a/packages/cli-v3/src/utilities/platformNotifications.ts +++ b/packages/cli-v3/src/utilities/platformNotifications.ts @@ -1,7 +1,7 @@ import { log } from "@clack/prompts"; import chalk from "chalk"; import { tryCatch } from "@trigger.dev/core/utils"; -import { CliApiClient } from "../apiClient.js"; +import type { CliApiClient } from "../apiClient.js"; import { chalkGrey } from "./cliOutput.js"; import { applyColorMarkup } from "./colorMarkup.js"; import { evaluateDiscovery } from "./discoveryCheck.js"; diff --git a/packages/cli-v3/src/utilities/session.ts b/packages/cli-v3/src/utilities/session.ts index 13e10549c22..b7583f83c9f 100644 --- a/packages/cli-v3/src/utilities/session.ts +++ b/packages/cli-v3/src/utilities/session.ts @@ -1,8 +1,7 @@ -import { recordSpanException } from "@trigger.dev/core/v3/workers"; +import type { GitMeta } from "@trigger.dev/core/v3"; import { CliApiClient } from "../apiClient.js"; import { readAuthConfigProfile } from "./configFiles.js"; import { logger } from "./logger.js"; -import { GitMeta } from "@trigger.dev/core/v3"; export type LoginResultOk = { ok: true; diff --git a/packages/cli-v3/src/utilities/sourceFiles.ts b/packages/cli-v3/src/utilities/sourceFiles.ts index b0b976ff8ff..73eecf07432 100644 --- a/packages/cli-v3/src/utilities/sourceFiles.ts +++ b/packages/cli-v3/src/utilities/sourceFiles.ts @@ -1,4 +1,4 @@ -import { ResolvedConfig } from "@trigger.dev/core/v3/build"; +import type { ResolvedConfig } from "@trigger.dev/core/v3/build"; import type { BackgroundWorkerSourceFileMetadata, TaskFile, diff --git a/packages/cli-v3/src/utilities/taskFiles.ts b/packages/cli-v3/src/utilities/taskFiles.ts index af409866d48..728a6b4af86 100644 --- a/packages/cli-v3/src/utilities/taskFiles.ts +++ b/packages/cli-v3/src/utilities/taskFiles.ts @@ -1,7 +1,7 @@ -import { ResolvedConfig } from "@trigger.dev/core/v3"; +import type { ResolvedConfig } from "@trigger.dev/core/v3"; import fs from "node:fs"; import { join, relative, resolve } from "node:path"; -import { TaskFile } from "../types.js"; +import type { TaskFile } from "../types.js"; export function createTaskFileImports(taskFiles: TaskFile[]) { return taskFiles diff --git a/packages/cli-v3/src/utilities/tempDirectories.ts b/packages/cli-v3/src/utilities/tempDirectories.ts index 68942b745eb..2a96278be5a 100644 --- a/packages/cli-v3/src/utilities/tempDirectories.ts +++ b/packages/cli-v3/src/utilities/tempDirectories.ts @@ -48,7 +48,7 @@ export function getTmpDir( const removeDir = () => { try { return fs.rmSync(tmpDir, { recursive: true, force: true }); - } catch (e) { + } catch (_e) { // This sometimes fails on Windows with EBUSY } }; @@ -68,7 +68,7 @@ export function clearTmpDirs(projectRoot: string | undefined, branch?: string) { try { fs.rmSync(tmpRoot, { recursive: true, force: true }); - } catch (e) { + } catch (_e) { // This sometimes fails on Windows with EBUSY } } @@ -92,7 +92,7 @@ export function getStoreDir( onExit(() => { try { fs.rmSync(storeDir, { recursive: true, force: true }); - } catch (e) { + } catch (_e) { // This sometimes fails on Windows with EBUSY } }); diff --git a/packages/core/src/eventFilterMatches.ts b/packages/core/src/eventFilterMatches.ts index 599f2418091..86a78aef750 100644 --- a/packages/core/src/eventFilterMatches.ts +++ b/packages/core/src/eventFilterMatches.ts @@ -1,4 +1,4 @@ -import { EventFilter } from "./schemas/eventFilter.js"; +import type { EventFilter } from "./schemas/eventFilter.js"; // EventFilter is a recursive type, where the keys are strings and the values are an array of strings, numbers, booleans, or objects. // If the values of the array are strings, numbers, or booleans, than we are matching against the value of the payload. diff --git a/packages/core/src/logger.ts b/packages/core/src/logger.ts index 3d5620a9d23..f9a1de15300 100644 --- a/packages/core/src/logger.ts +++ b/packages/core/src/logger.ts @@ -204,7 +204,7 @@ function bigIntReplacer(_key: string, value: unknown) { function safeJsonClone(obj: unknown) { try { return JSON.parse(JSON.stringify(obj, bigIntReplacer)); - } catch (e) { + } catch (_e) { return; } } diff --git a/packages/core/src/v3/apiClient/core.ts b/packages/core/src/v3/apiClient/core.ts index 5128aa50d47..3c9ae47cfb1 100644 --- a/packages/core/src/v3/apiClient/core.ts +++ b/packages/core/src/v3/apiClient/core.ts @@ -1,24 +1,24 @@ import { z } from "zod"; import { fromZodError, ValidationError } from "zod-validation-error"; -import { RetryOptions } from "../schemas/index.js"; +import type { RetryOptions } from "../schemas/index.js"; import { calculateNextRetryDelay } from "../utils/retries.js"; import { ApiConnectionError, ApiError, ApiSchemaValidationError } from "./errors.js"; -import { Attributes, context, propagation, Span, trace } from "@opentelemetry/api"; +import type { Attributes, Span } from "@opentelemetry/api"; +import { context, propagation } from "@opentelemetry/api"; import { suppressTracing } from "@opentelemetry/core"; +import { EventSource, type ErrorEvent } from "eventsource"; import { SemanticInternalAttributes } from "../semanticInternalAttributes.js"; import type { TriggerTracer } from "../tracer.js"; +import { randomUUID } from "../utils/crypto.js"; import { accessoryAttributes } from "../utils/styleAttributes.js"; -import { - CursorPage, +import type { CursorPageParams, CursorPageResponse, - OffsetLimitPage, OffsetLimitPageParams, OffsetLimitPageResponse, } from "./pagination.js"; -import { EventSource, type ErrorEvent } from "eventsource"; -import { randomUUID } from "../utils/crypto.js"; +import { CursorPage, OffsetLimitPage } from "./pagination.js"; export const defaultRetryOptions = { maxAttempts: 3, @@ -296,7 +296,7 @@ async function _doZodFetchWithRetries( async function safeJsonFromResponse(response: Response): Promise { try { return await response.clone().json(); - } catch (error) { + } catch (_error) { return; } } @@ -377,7 +377,7 @@ function shouldRetry( function safeJsonParse(text: string): any { try { return JSON.parse(text); - } catch (e) { + } catch (_e) { return undefined; } } @@ -407,7 +407,7 @@ function requestInitWithCache(requestInit?: RequestInit): RequestInit { const _ = new Request("http://localhost", withCache); return withCache; - } catch (error) { + } catch (_error) { return requestInit ?? {}; } } diff --git a/packages/core/src/v3/apiClient/getBranch.ts b/packages/core/src/v3/apiClient/getBranch.ts index 51ac8b1bc75..dd22ff3af8f 100644 --- a/packages/core/src/v3/apiClient/getBranch.ts +++ b/packages/core/src/v3/apiClient/getBranch.ts @@ -1,4 +1,4 @@ -import { GitMeta } from "../schemas/index.js"; +import type { GitMeta } from "../schemas/index.js"; import { getEnvVar } from "../utils/getEnv.js"; import { isDefaultDevBranch } from "../utils/gitBranch.js"; diff --git a/packages/core/src/v3/apiClient/index.ts b/packages/core/src/v3/apiClient/index.ts index 410bac0f172..3cdc78e1b31 100644 --- a/packages/core/src/v3/apiClient/index.ts +++ b/packages/core/src/v3/apiClient/index.ts @@ -1,125 +1,123 @@ import { nanoid } from "nanoid"; import { z } from "zod"; import { VERSION } from "../../version.js"; +import type { ApiClientConfiguration } from "../apiClientManager-api.js"; import { generateJWT } from "../jwt.js"; import { - AddTagsRequestBody, - ApiDeploymentListOptions, + type AddTagsRequestBody, + type ApiDeploymentListOptions, + type BatchItemNDJSON, + type BatchTriggerTaskV3RequestBody, + type CloseSessionRequestBody, + type CompleteWaitpointTokenRequestBody, + type CreateBatchRequestBody, + type CreateEnvironmentVariableRequestBody, + type CreateInputStreamWaitpointRequestBody, + type CreatePromptOverrideRequestBody, + type CreateScheduleOptions, + type CreateSessionRequestBody, + type CreateSessionStreamWaitpointRequestBody, + type CreateWaitpointTokenRequestBody, + type EndAndContinueSessionRequestBody, + type ListQueueOptions, + type ListScheduleOptions, + type ListSessionsOptions, + type PromotePromptVersionRequestBody, + type QueueTypeName, + type ReactivatePromptOverrideRequestBody, + type RescheduleRunRequestBody, + type ResolvePromptRequestBody, + type RetrieveQueueParam, + type RetryOptions, + type TriggerTaskRequestBody, + type UpdateEnvironmentVariableRequestBody, + type UpdateMetadataRequestBody, + type UpdatePromptOverrideRequestBody, + type UpdateScheduleOptions, + type UpdateSessionRequestBody, + type WaitForDurationRequestBody, ApiDeploymentListResponseItem, - ApiDeploymentListSearchParams, - RetrieveCurrentDeploymentResponseBody, AppendToStreamResponseBody, - BatchItemNDJSON, BatchTaskRunExecutionResult, - BatchTriggerTaskV3RequestBody, BatchTriggerTaskV3Response, CanceledRunResponse, - CloseSessionRequestBody, - CompleteWaitpointTokenRequestBody, CompleteWaitpointTokenResponseBody, - CreatedSessionResponseBody, - CreateSessionRequestBody, - EndAndContinueSessionRequestBody, - EndAndContinueSessionResponseBody, - ListSessionsOptions, - ListSessionsResponseBody, - ListedSessionItem, - RetrieveSessionResponseBody, - UpdateSessionRequestBody, - CreateBatchRequestBody, CreateBatchResponse, - CreateEnvironmentVariableRequestBody, - CreateInputStreamWaitpointRequestBody, CreateInputStreamWaitpointResponseBody, - CreateSessionStreamWaitpointRequestBody, CreateSessionStreamWaitpointResponseBody, - CreateScheduleOptions, CreateStreamResponseBody, CreateUploadPayloadUrlResponseBody, - CreateWaitpointTokenRequestBody, CreateWaitpointTokenResponseBody, + CreatedSessionResponseBody, DeletedScheduleObject, + EndAndContinueSessionResponseBody, EnvironmentVariableResponseBody, EnvironmentVariableWithSecret, - ListQueueOptions, + ListDashboardsResponseBody, + ListPromptVersionsResponseBody, + ListPromptsResponseBody, ListRunResponseItem, - ListScheduleOptions, - QueueItem, - QueueTypeName, - QueryExecuteRequestBody, + ListedSessionItem, + PromptOkResponseBody, + PromptOverrideCreatedResponseBody, QueryExecuteResponseBody, - QueryExecuteCSVResponseBody, QuerySchemaResponseBody, - ListDashboardsResponseBody, + QueueItem, + ReadSessionStreamRecordsResponseBody, ReplayRunResponse, - RescheduleRunRequestBody, ResetIdempotencyKeyResponse, - RetrieveBatchV2Response, - RetrieveQueueParam, - ResolvePromptRequestBody, ResolvePromptResponseBody, - ListPromptsResponseBody, - ListPromptVersionsResponseBody, - PromotePromptVersionRequestBody, - CreatePromptOverrideRequestBody, - UpdatePromptOverrideRequestBody, - ReactivatePromptOverrideRequestBody, - PromptOkResponseBody, - PromptOverrideCreatedResponseBody, + RetrieveBatchV2Response, + RetrieveCurrentDeploymentResponseBody, RetrieveRunResponse, RetrieveRunTraceResponseBody, + RetrieveSessionResponseBody, RetrieveSpanDetailResponseBody, ScheduleObject, SendInputStreamResponseBody, StreamBatchItemsResponse, TaskRunExecutionResult, - ReadSessionStreamRecordsResponseBody, - TriggerTaskRequestBody, TriggerTaskResponse, - UpdateEnvironmentVariableRequestBody, - UpdateMetadataRequestBody, UpdateMetadataResponseBody, - UpdateScheduleOptions, - WaitForDurationRequestBody, WaitForDurationResponseBody, WaitForWaitpointTokenResponseBody, WaitpointRetrieveTokenResponse, WaitpointTokenItem, } from "../schemas/index.js"; -import { AsyncIterableStream } from "../streams/asyncIterableStream.js"; +import { controlSubtype, type ControlEvent } from "../sessionStreams/wireProtocol.js"; +import type { AsyncIterableStream } from "../streams/asyncIterableStream.js"; import { taskContext } from "../task-context-api.js"; -import { AnyRunTypes, TriggerJwtOptions } from "../types/tasks.js"; -import { Prettify } from "../types/utils.js"; +import type { AnyRunTypes, TriggerJwtOptions } from "../types/tasks.js"; +import type { Prettify } from "../types/utils.js"; +import { getEnvVar } from "../utils/getEnv.js"; +import { calculateNextRetryDelay } from "../utils/retries.js"; import { - AnyZodFetchOptions, - ApiPromise, - ApiRequestOptions, - CursorPagePromise, - ZodFetchOptions, + type AnyZodFetchOptions, + type ApiPromise, + type ApiRequestOptions, + type CursorPagePromise, + type ZodFetchOptions, isRequestOptions, zodfetch, zodfetchCursorPage, zodfetchOffsetLimitPage, } from "./core.js"; import { ApiConnectionError, ApiError, BatchNotSealedError } from "./errors.js"; -import { calculateNextRetryDelay } from "../utils/retries.js"; -import { RetryOptions } from "../schemas/index.js"; import { - AnyRealtimeRun, - AnyRunShape, - RealtimeRun, - RunShape, - RunStreamCallback, - RunSubscription, - SSEStreamSubscriptionFactory, + type AnyRealtimeRun, + type AnyRunShape, + type RealtimeRun, + type RealtimeRunSkipColumns, + type RunShape, + type RunStreamCallback, + type RunSubscription, + type TaskRunShape, SSEStreamSubscription, - TaskRunShape, + SSEStreamSubscriptionFactory, runShapeStream, - RealtimeRunSkipColumns, type SSEStreamPart, } from "./runStream.js"; -import { controlSubtype, type ControlEvent } from "../sessionStreams/wireProtocol.js"; -import { +import type { CreateEnvironmentVariableParams, ImportEnvironmentVariablesParams, ListProjectRunsQueryParams, @@ -129,8 +127,6 @@ import { UpdateEnvironmentVariableParams, } from "./types.js"; import { API_VERSION, API_VERSION_HEADER_NAME } from "./version.js"; -import { ApiClientConfiguration } from "../apiClientManager-api.js"; -import { getEnvVar } from "../utils/getEnv.js"; export type CreateWaitpointTokenResponse = Prettify< CreateWaitpointTokenResponseBody & { @@ -147,9 +143,9 @@ export type CreateBatchApiResponse = Prettify< export type { CreateEnvironmentVariableParams, ImportEnvironmentVariablesParams, + RealtimeRunSkipColumns, SubscribeToRunsQueryParams, UpdateEnvironmentVariableParams, - RealtimeRunSkipColumns, }; export type ClientTriggerOptions = { @@ -183,7 +179,7 @@ export type ApiClientFutureFlags = { v2RealtimeStreams?: boolean; }; -export { isRequestOptions, SSEStreamSubscription }; +export { SSEStreamSubscription, isRequestOptions }; export type { AnyRealtimeRun, AnyRunShape, @@ -192,8 +188,8 @@ export type { RunShape, RunStreamCallback, RunSubscription, - TaskRunShape, SSEStreamPart, + TaskRunShape, }; export * from "./getBranch.js"; diff --git a/packages/core/src/v3/apiClient/runStream.ts b/packages/core/src/v3/apiClient/runStream.ts index 52b84ad9f1d..5bd7986c86a 100644 --- a/packages/core/src/v3/apiClient/runStream.ts +++ b/packages/core/src/v3/apiClient/runStream.ts @@ -1,21 +1,18 @@ -import { EventSourceMessage, EventSourceParserStream } from "eventsource-parser/stream"; -import { DeserializedJson } from "../../schemas/json.js"; +import type { EventSourceMessage } from "eventsource-parser/stream"; +import { EventSourceParserStream } from "eventsource-parser/stream"; +import type { DeserializedJson } from "../../schemas/json.js"; import { createJsonErrorObject } from "../errors.js"; -import { RunStatus, SubscribeRunRawShape } from "../schemas/api.js"; -import { SerializedError } from "../schemas/common.js"; -import { - AsyncIterableStream, - createAsyncIterableReadable, -} from "../streams/asyncIterableStream.js"; -import { AnyRunTypes, AnyTask, InferRunTypes } from "../types/tasks.js"; +import type { RunStatus } from "../schemas/api.js"; +import { SubscribeRunRawShape } from "../schemas/api.js"; +import type { SerializedError } from "../schemas/common.js"; +import type { AsyncIterableStream } from "../streams/asyncIterableStream.js"; +import { createAsyncIterableReadable } from "../streams/asyncIterableStream.js"; +import type { AnyRunTypes, AnyTask, InferRunTypes } from "../types/tasks.js"; import { getEnvVar } from "../utils/getEnv.js"; -import { - conditionallyImportAndParsePacket, - IOPacket, - parsePacket, -} from "../utils/ioSerialization.js"; +import type { IOPacket } from "../utils/ioSerialization.js"; +import { conditionallyImportAndParsePacket, parsePacket } from "../utils/ioSerialization.js"; import { ApiError, isTriggerRealtimeAuthError } from "./errors.js"; -import { ApiClient } from "./index.js"; +import type { ApiClient } from "./index.js"; import { zodShapeStream } from "./stream.js"; export type RunShape = TRunTypes extends AnyRunTypes @@ -867,7 +864,7 @@ function apiStatusFromRunStatus(status: string): RunStatus { function safeParseJSON(data: string): unknown { try { return JSON.parse(data); - } catch (error) { + } catch (_error) { return data; } } diff --git a/packages/core/src/v3/apiClient/stream.ts b/packages/core/src/v3/apiClient/stream.ts index fc7bcf3db13..ec35f1deb63 100644 --- a/packages/core/src/v3/apiClient/stream.ts +++ b/packages/core/src/v3/apiClient/stream.ts @@ -1,15 +1,18 @@ -import { z } from "zod"; +import type { z } from "zod"; import { + type Offset, FetchError, isChangeMessage, isControlMessage, - Offset, ShapeStream, type Message, type Row, type ShapeStreamInterface, } from "@electric-sql/client"; -import { AsyncIterableStream, createAsyncIterableStream } from "../streams/asyncIterableStream.js"; +import { + type AsyncIterableStream, + createAsyncIterableStream, +} from "../streams/asyncIterableStream.js"; import { API_VERSION_HEADER_NAME, API_VERSION } from "./version.js"; export type ZodShapeStreamOptions = { diff --git a/packages/core/src/v3/apiClient/types.ts b/packages/core/src/v3/apiClient/types.ts index 445d6bbda24..d3ee6427032 100644 --- a/packages/core/src/v3/apiClient/types.ts +++ b/packages/core/src/v3/apiClient/types.ts @@ -1,10 +1,10 @@ -import { +import type { MachinePresetName, QueueTypeName, RunStatus, WaitpointTokenStatus, } from "../schemas/index.js"; -import { CursorPageParams } from "./pagination.js"; +import type { CursorPageParams } from "./pagination.js"; export interface ImportEnvironmentVariablesParams { /** diff --git a/packages/core/src/v3/apiClientManager/index.ts b/packages/core/src/v3/apiClientManager/index.ts index 74ff7ed15a3..cd52af6abc1 100644 --- a/packages/core/src/v3/apiClientManager/index.ts +++ b/packages/core/src/v3/apiClientManager/index.ts @@ -3,7 +3,7 @@ import { getGlobal, registerGlobal, unregisterGlobal } from "../utils/globals.js import { getEnvVar } from "../utils/getEnv.js"; import { isDefaultDevBranch } from "../utils/gitBranch.js"; import { sdkScope } from "../sdkScope/index.js"; -import { ApiClientConfiguration } from "./types.js"; +import type { ApiClientConfiguration } from "./types.js"; const API_NAME = "api-client"; diff --git a/packages/core/src/v3/apps/http.ts b/packages/core/src/v3/apps/http.ts index 7e41f35f4aa..720dccbf1b0 100644 --- a/packages/core/src/v3/apps/http.ts +++ b/packages/core/src/v3/apps/http.ts @@ -1,4 +1,4 @@ -import { IncomingMessage, RequestListener } from "node:http"; +import type { IncomingMessage, RequestListener } from "node:http"; export const getTextBody = (req: IncomingMessage) => new Promise((resolve) => { diff --git a/packages/core/src/v3/apps/provider.ts b/packages/core/src/v3/apps/provider.ts index 8cfeb81aee8..8705f63941e 100644 --- a/packages/core/src/v3/apps/provider.ts +++ b/packages/core/src/v3/apps/provider.ts @@ -4,8 +4,8 @@ import { SimpleLogger } from "./logger.js"; import { isExecaChildProcess } from "./isExecaChildProcess.js"; import { setTimeout } from "node:timers/promises"; import { EXIT_CODE_ALREADY_HANDLED } from "./process.js"; -import { EnvironmentType } from "../schemas/schemas.js"; -import { MachinePreset } from "../schemas/common.js"; +import type { EnvironmentType } from "../schemas/schemas.js"; +import type { MachinePreset } from "../schemas/common.js"; import { ProviderToPlatformMessages, PlatformToProviderMessages, diff --git a/packages/core/src/v3/clock/preciseWallClock.ts b/packages/core/src/v3/clock/preciseWallClock.ts index 2d516bb9e1b..94dc4ce5c60 100644 --- a/packages/core/src/v3/clock/preciseWallClock.ts +++ b/packages/core/src/v3/clock/preciseWallClock.ts @@ -1,5 +1,5 @@ import { PreciseDate } from "@google-cloud/precise-date"; -import { Clock, ClockTime } from "./clock.js"; +import type { Clock, ClockTime } from "./clock.js"; export type PreciseWallClockOptions = { origin?: ClockTime; diff --git a/packages/core/src/v3/clock/simpleClock.ts b/packages/core/src/v3/clock/simpleClock.ts index 9798f238e40..93518806e2d 100644 --- a/packages/core/src/v3/clock/simpleClock.ts +++ b/packages/core/src/v3/clock/simpleClock.ts @@ -1,5 +1,5 @@ import { PreciseDate } from "@google-cloud/precise-date"; -import { Clock } from "./clock.js"; +import type { Clock } from "./clock.js"; export class SimpleClock implements Clock { preciseNow(): [number, number] { diff --git a/packages/core/src/v3/config.ts b/packages/core/src/v3/config.ts index 40334f04280..7c15eb40cb0 100644 --- a/packages/core/src/v3/config.ts +++ b/packages/core/src/v3/config.ts @@ -12,7 +12,7 @@ import type { } from "./index.js"; import type { LogLevel } from "./logger/taskLogger.js"; import type { MachinePresetName } from "./schemas/common.js"; -import { LogRecordExporter } from "@opentelemetry/sdk-logs"; +import type { LogRecordExporter } from "@opentelemetry/sdk-logs"; import type { Resource } from "@opentelemetry/resources"; export type CompatibilityFlag = "run_engine_v2"; diff --git a/packages/core/src/v3/consoleInterceptor.ts b/packages/core/src/v3/consoleInterceptor.ts index c24b827e205..9c7118291c6 100644 --- a/packages/core/src/v3/consoleInterceptor.ts +++ b/packages/core/src/v3/consoleInterceptor.ts @@ -4,7 +4,7 @@ import util from "node:util"; import { iconStringForSeverity } from "./icons.js"; import { SemanticInternalAttributes } from "./semanticInternalAttributes.js"; import { flattenAttributes } from "./utils/flattenAttributes.js"; -import { ClockTime } from "./clock/clock.js"; +import type { ClockTime } from "./clock/clock.js"; import { clock } from "./clock-api.js"; export class ConsoleInterceptor { @@ -159,7 +159,7 @@ function tryParseJSON( } return { ok: false, value }; - } catch (e) { + } catch (_e) { return { ok: false, value }; } } diff --git a/packages/core/src/v3/errors.ts b/packages/core/src/v3/errors.ts index 7b396c0b90f..1fc7c5bce6c 100644 --- a/packages/core/src/v3/errors.ts +++ b/packages/core/src/v3/errors.ts @@ -1,15 +1,12 @@ -import { z } from "zod"; -import { DeploymentErrorData } from "./schemas/api.js"; -import { ImportTaskFileErrors, WorkerManifest } from "./schemas/build.js"; -import { - SerializedError, - TaskRunError, - TaskRunErrorCodes, - TaskRunInternalError, -} from "./schemas/common.js"; +import type { z } from "zod"; +import type { DeploymentErrorData } from "./schemas/api.js"; +import type { WorkerManifest } from "./schemas/build.js"; +import { ImportTaskFileErrors } from "./schemas/build.js"; +import type { SerializedError, TaskRunError, TaskRunInternalError } from "./schemas/common.js"; +import { TaskRunErrorCodes } from "./schemas/common.js"; import { TaskMetadataFailedToParseData } from "./schemas/messages.js"; import { links } from "./links.js"; -import { ExceptionEventProperties } from "./schemas/openTelemetry.js"; +import type { ExceptionEventProperties } from "./schemas/openTelemetry.js"; import { assertExhaustive } from "../utils.js"; /** @@ -237,7 +234,7 @@ export function parseError(error: unknown): TaskRunError { type: "CUSTOM_ERROR", raw: JSON.stringify(error), }; - } catch (e) { + } catch (_e) { return { type: "CUSTOM_ERROR", raw: String(error), diff --git a/packages/core/src/v3/heartbeats/api.ts b/packages/core/src/v3/heartbeats/api.ts index 27dfeac213a..02abe2e82a1 100644 --- a/packages/core/src/v3/heartbeats/api.ts +++ b/packages/core/src/v3/heartbeats/api.ts @@ -1,5 +1,5 @@ import { getGlobal, registerGlobal, unregisterGlobal } from "../utils/globals.js"; -import { HeartbeatsManager } from "./types.js"; +import type { HeartbeatsManager } from "./types.js"; const API_NAME = "heartbeats"; diff --git a/packages/core/src/v3/heartbeats/manager.ts b/packages/core/src/v3/heartbeats/manager.ts index 2648d492565..2809e5b069b 100644 --- a/packages/core/src/v3/heartbeats/manager.ts +++ b/packages/core/src/v3/heartbeats/manager.ts @@ -1,6 +1,6 @@ +import { setInterval, setTimeout } from "node:timers/promises"; import { tryCatch } from "../tryCatch.js"; -import { HeartbeatsManager } from "./types.js"; -import { setInterval, setImmediate, setTimeout } from "node:timers/promises"; +import type { HeartbeatsManager } from "./types.js"; export class StandardHeartbeatsManager implements HeartbeatsManager { private listener: ((id: string) => Promise) | undefined = undefined; @@ -51,7 +51,7 @@ export class StandardHeartbeatsManager implements HeartbeatsManager { } } } - } catch (error) { + } catch (_error) { // Ignore errors as we expect them to be thrown when the heartbeat is stopped // And since we tryCatch inside the loop, we don't need to handle any other errors here } diff --git a/packages/core/src/v3/idempotencyKeys.ts b/packages/core/src/v3/idempotencyKeys.ts index 8e3d6e9da14..585f38c1c30 100644 --- a/packages/core/src/v3/idempotencyKeys.ts +++ b/packages/core/src/v3/idempotencyKeys.ts @@ -5,7 +5,7 @@ import type { IdempotencyKeyScope, } from "./idempotency-key-catalog/catalog.js"; import { taskContext } from "./task-context-api.js"; -import { IdempotencyKey } from "./types/idempotencyKeys.js"; +import type { IdempotencyKey } from "./types/idempotencyKeys.js"; import { digestSHA256 } from "./utils/crypto.js"; import type { ZodFetchOptions } from "./apiClient/core.js"; diff --git a/packages/core/src/v3/inputStreams/index.ts b/packages/core/src/v3/inputStreams/index.ts index 0b3c7af063f..043e8b44bc5 100644 --- a/packages/core/src/v3/inputStreams/index.ts +++ b/packages/core/src/v3/inputStreams/index.ts @@ -1,7 +1,7 @@ import { getGlobal, registerGlobal } from "../utils/globals.js"; import { NoopInputStreamManager } from "./noopManager.js"; -import { InputStreamManager, InputStreamOncePromise } from "./types.js"; -import { InputStreamOnceOptions } from "../realtimeStreams/types.js"; +import type { InputStreamManager, InputStreamOncePromise } from "./types.js"; +import type { InputStreamOnceOptions } from "../realtimeStreams/types.js"; const API_NAME = "input-streams"; diff --git a/packages/core/src/v3/inputStreams/manager.ts b/packages/core/src/v3/inputStreams/manager.ts index 11f9f497b21..2a17d3f6e41 100644 --- a/packages/core/src/v3/inputStreams/manager.ts +++ b/packages/core/src/v3/inputStreams/manager.ts @@ -1,11 +1,7 @@ -import { ApiClient } from "../apiClient/index.js"; -import { - InputStreamManager, - InputStreamOncePromise, - InputStreamOnceResult, - InputStreamTimeoutError, -} from "./types.js"; -import { InputStreamOnceOptions } from "../realtimeStreams/types.js"; +import type { ApiClient } from "../apiClient/index.js"; +import type { InputStreamManager, InputStreamOnceResult } from "./types.js"; +import { InputStreamOncePromise, InputStreamTimeoutError } from "./types.js"; +import type { InputStreamOnceOptions } from "../realtimeStreams/types.js"; import { computeReconnectDelayMs } from "../utils/reconnectBackoff.js"; type InputStreamHandler = (data: unknown) => void | Promise; diff --git a/packages/core/src/v3/inputStreams/noopManager.ts b/packages/core/src/v3/inputStreams/noopManager.ts index 5aca9c8ed9d..9639217a074 100644 --- a/packages/core/src/v3/inputStreams/noopManager.ts +++ b/packages/core/src/v3/inputStreams/noopManager.ts @@ -1,5 +1,6 @@ -import { InputStreamManager, InputStreamOncePromise } from "./types.js"; -import { InputStreamOnceOptions } from "../realtimeStreams/types.js"; +import type { InputStreamManager } from "./types.js"; +import { InputStreamOncePromise } from "./types.js"; +import type { InputStreamOnceOptions } from "../realtimeStreams/types.js"; export class NoopInputStreamManager implements InputStreamManager { setRunId(_runId: string, _streamsVersion?: string): void {} diff --git a/packages/core/src/v3/inputStreams/types.ts b/packages/core/src/v3/inputStreams/types.ts index c456bb61216..6bfd9d32994 100644 --- a/packages/core/src/v3/inputStreams/types.ts +++ b/packages/core/src/v3/inputStreams/types.ts @@ -1,4 +1,4 @@ -import { InputStreamOnceOptions } from "../realtimeStreams/types.js"; +import type { InputStreamOnceOptions } from "../realtimeStreams/types.js"; export class InputStreamTimeoutError extends Error { constructor( diff --git a/packages/core/src/v3/isomorphic/duration.ts b/packages/core/src/v3/isomorphic/duration.ts index 9315f79683d..6d8dcf63430 100644 --- a/packages/core/src/v3/isomorphic/duration.ts +++ b/packages/core/src/v3/isomorphic/duration.ts @@ -81,7 +81,7 @@ export function parseNaturalLanguageDuration(duration: string): Date | undefined export function safeParseNaturalLanguageDuration(duration: string): Date | undefined { try { return parseNaturalLanguageDuration(duration); - } catch (error) { + } catch (_error) { return undefined; } } @@ -160,7 +160,7 @@ export function parseNaturalLanguageDurationAgo(duration: string): Date | undefi export function safeParseNaturalLanguageDurationAgo(duration: string): Date | undefined { try { return parseNaturalLanguageDurationAgo(duration); - } catch (error) { + } catch (_error) { return undefined; } } diff --git a/packages/core/src/v3/lifecycleHooks/index.ts b/packages/core/src/v3/lifecycleHooks/index.ts index 0011bd5d5a7..79e3bb64c12 100644 --- a/packages/core/src/v3/lifecycleHooks/index.ts +++ b/packages/core/src/v3/lifecycleHooks/index.ts @@ -3,22 +3,22 @@ const API_NAME = "lifecycle-hooks"; import { getGlobal, registerGlobal, unregisterGlobal } from "../utils/globals.js"; import { NoopLifecycleHooksManager } from "./manager.js"; import { - AnyOnCatchErrorHookFunction, - AnyOnCleanupHookFunction, - AnyOnCompleteHookFunction, - AnyOnFailureHookFunction, - AnyOnInitHookFunction, - AnyOnMiddlewareHookFunction, - AnyOnResumeHookFunction, - AnyOnStartHookFunction, - AnyOnSuccessHookFunction, - AnyOnWaitHookFunction, - AnyOnCancelHookFunction, - RegisteredHookFunction, - RegisterHookFunctionParams, - TaskWait, + type AnyOnCatchErrorHookFunction, + type AnyOnCleanupHookFunction, + type AnyOnCompleteHookFunction, + type AnyOnFailureHookFunction, + type AnyOnInitHookFunction, + type AnyOnMiddlewareHookFunction, + type AnyOnResumeHookFunction, + type AnyOnStartHookFunction, + type AnyOnSuccessHookFunction, + type AnyOnWaitHookFunction, + type AnyOnCancelHookFunction, + type RegisteredHookFunction, + type RegisterHookFunctionParams, + type TaskWait, + type AnyOnStartAttemptHookFunction, type LifecycleHooksManager, - AnyOnStartAttemptHookFunction, } from "./types.js"; const NOOP_LIFECYCLE_HOOKS_MANAGER = new NoopLifecycleHooksManager(); diff --git a/packages/core/src/v3/lifecycleHooks/manager.ts b/packages/core/src/v3/lifecycleHooks/manager.ts index e755e66d3f9..f1965809b15 100644 --- a/packages/core/src/v3/lifecycleHooks/manager.ts +++ b/packages/core/src/v3/lifecycleHooks/manager.ts @@ -1,4 +1,4 @@ -import { +import type { AnyOnInitHookFunction, AnyOnStartHookFunction, LifecycleHooksManager, diff --git a/packages/core/src/v3/lifecycleHooks/types.ts b/packages/core/src/v3/lifecycleHooks/types.ts index 51518a165a9..9672b6fec62 100644 --- a/packages/core/src/v3/lifecycleHooks/types.ts +++ b/packages/core/src/v3/lifecycleHooks/types.ts @@ -1,5 +1,5 @@ -import { RetryOptions, TaskRunContext } from "../schemas/index.js"; -import { HandleErrorResult } from "../types/index.js"; +import type { RetryOptions, TaskRunContext } from "../schemas/index.js"; +import type { HandleErrorResult } from "../types/index.js"; export type TaskInitOutput = Record | void | undefined; diff --git a/packages/core/src/v3/limits.ts b/packages/core/src/v3/limits.ts index 61313c7c586..929997ac240 100644 --- a/packages/core/src/v3/limits.ts +++ b/packages/core/src/v3/limits.ts @@ -1,4 +1,4 @@ -import { AttributeValue, Attributes } from "@opentelemetry/api"; +import type { AttributeValue, Attributes } from "@opentelemetry/api"; import { getEnvVar } from "./utils/getEnv.js"; function getOtelEnvVarLimit(key: string, defaultValue: number) { diff --git a/packages/core/src/v3/locals/index.ts b/packages/core/src/v3/locals/index.ts index def86023843..0f5dd334149 100644 --- a/packages/core/src/v3/locals/index.ts +++ b/packages/core/src/v3/locals/index.ts @@ -2,7 +2,7 @@ const API_NAME = "locals"; import { getGlobal, registerGlobal, unregisterGlobal } from "../utils/globals.js"; import { NoopLocalsManager } from "./manager.js"; -import { LocalsKey, type LocalsManager } from "./types.js"; +import { type LocalsKey, type LocalsManager } from "./types.js"; const NOOP_LOCALS_MANAGER = new NoopLocalsManager(); diff --git a/packages/core/src/v3/locals/manager.ts b/packages/core/src/v3/locals/manager.ts index 3cd0f80d84a..6f2157c98ff 100644 --- a/packages/core/src/v3/locals/manager.ts +++ b/packages/core/src/v3/locals/manager.ts @@ -1,4 +1,4 @@ -import { LocalsKey, LocalsManager } from "./types.js"; +import type { LocalsKey, LocalsManager } from "./types.js"; export class NoopLocalsManager implements LocalsManager { createLocal(id: string): LocalsKey { diff --git a/packages/core/src/v3/logger/index.ts b/packages/core/src/v3/logger/index.ts index 22027d5736e..9bac8b85a8d 100644 --- a/packages/core/src/v3/logger/index.ts +++ b/packages/core/src/v3/logger/index.ts @@ -1,6 +1,7 @@ -import { NoopTaskLogger, TaskLogger, TraceOptions } from "./taskLogger.js"; +import type { TaskLogger, TraceOptions } from "./taskLogger.js"; +import { NoopTaskLogger } from "./taskLogger.js"; import { getGlobal, registerGlobal, unregisterGlobal } from "../utils/globals.js"; -import { Span } from "@opentelemetry/api"; +import type { Span } from "@opentelemetry/api"; const API_NAME = "logger"; diff --git a/packages/core/src/v3/logger/taskLogger.ts b/packages/core/src/v3/logger/taskLogger.ts index 59ba2602e73..363717defd4 100644 --- a/packages/core/src/v3/logger/taskLogger.ts +++ b/packages/core/src/v3/logger/taskLogger.ts @@ -1,12 +1,13 @@ -import { Attributes, Span, SpanOptions } from "@opentelemetry/api"; -import { Logger, SeverityNumber } from "@opentelemetry/api-logs"; +import type { Attributes, Span, SpanOptions } from "@opentelemetry/api"; +import type { Logger } from "@opentelemetry/api-logs"; +import { SeverityNumber } from "@opentelemetry/api-logs"; import { iconStringForSeverity } from "../icons.js"; import { SemanticInternalAttributes } from "../semanticInternalAttributes.js"; -import { TriggerTracer } from "../tracer.js"; +import type { TriggerTracer } from "../tracer.js"; import { flattenAttributes } from "../utils/flattenAttributes.js"; -import { ClockTime } from "../clock/clock.js"; +import type { ClockTime } from "../clock/clock.js"; import { clock } from "../clock-api.js"; -import { Prettify } from "../types/utils.js"; +import type { Prettify } from "../types/utils.js"; export type LogLevel = "none" | "error" | "warn" | "info" | "debug" | "log"; diff --git a/packages/core/src/v3/machines/index.ts b/packages/core/src/v3/machines/index.ts index e5dcb097dc5..9b8398f87f6 100644 --- a/packages/core/src/v3/machines/index.ts +++ b/packages/core/src/v3/machines/index.ts @@ -1,4 +1,4 @@ -import { MachinePresetResources } from "../schemas/common.js"; +import type { MachinePresetResources } from "../schemas/common.js"; /** * Returns a value to be used for `--max-old-space-size`. It is in MiB. diff --git a/packages/core/src/v3/machines/max-old-space.test.ts b/packages/core/src/v3/machines/max-old-space.test.ts index 425b8197624..aa9826e01b7 100644 --- a/packages/core/src/v3/machines/max-old-space.test.ts +++ b/packages/core/src/v3/machines/max-old-space.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from "vitest"; import { nodeOptionsWithMaxOldSpaceSize } from "./index.js"; -import { MachinePreset } from "../schemas/common.js"; +import type { MachinePreset } from "../schemas/common.js"; describe("nodeOptionsWithMaxOldSpaceSize", () => { const testMachine: MachinePreset = { diff --git a/packages/core/src/v3/otel/tracingSDK.ts b/packages/core/src/v3/otel/tracingSDK.ts index 0dd56f5a6f7..0b3a66a87b4 100644 --- a/packages/core/src/v3/otel/tracingSDK.ts +++ b/packages/core/src/v3/otel/tracingSDK.ts @@ -1,11 +1,5 @@ -import { - DiagConsoleLogger, - DiagLogLevel, - TraceFlags, - TracerProvider, - diag, - metrics, -} from "@opentelemetry/api"; +import type { TracerProvider } from "@opentelemetry/api"; +import { DiagConsoleLogger, DiagLogLevel, TraceFlags, diag, metrics } from "@opentelemetry/api"; import { logs } from "@opentelemetry/api-logs"; import { TraceState } from "@opentelemetry/core"; import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http"; @@ -13,18 +7,16 @@ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"; import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http"; import { HostMetrics } from "@opentelemetry/host-metrics"; import { registerInstrumentations, type Instrumentation } from "@opentelemetry/instrumentation"; -import { - detectResources, - processDetector, - Resource, - resourceFromAttributes, -} from "@opentelemetry/resources"; -import { - BatchLogRecordProcessor, +import type { Resource } from "@opentelemetry/resources"; +import { detectResources, processDetector, resourceFromAttributes } from "@opentelemetry/resources"; +import type { LogRecordExporter, LogRecordProcessor, - LoggerProvider, ReadableLogRecord, +} from "@opentelemetry/sdk-logs"; +import { + BatchLogRecordProcessor, + LoggerProvider, SimpleLogRecordProcessor, } from "@opentelemetry/sdk-logs"; import { @@ -34,13 +26,13 @@ import { type MetricReader, type PushMetricExporter, } from "@opentelemetry/sdk-metrics"; -import { RandomIdGenerator, SpanProcessor } from "@opentelemetry/sdk-trace-base"; +import type { SpanProcessor } from "@opentelemetry/sdk-trace-base"; +import { RandomIdGenerator } from "@opentelemetry/sdk-trace-base"; +import type { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-node"; import { BatchSpanProcessor, NodeTracerProvider, - ReadableSpan, SimpleSpanProcessor, - SpanExporter, } from "@opentelemetry/sdk-trace-node"; import { VERSION } from "../../version.js"; import { @@ -601,7 +593,7 @@ function safeParseUrl(url: unknown): URL | undefined { try { return new URL(url); - } catch (e) { + } catch (_e) { return undefined; } } diff --git a/packages/core/src/v3/realtimeStreams/index.ts b/packages/core/src/v3/realtimeStreams/index.ts index 71854888ee5..e9d80ef51a7 100644 --- a/packages/core/src/v3/realtimeStreams/index.ts +++ b/packages/core/src/v3/realtimeStreams/index.ts @@ -1,6 +1,6 @@ import { getGlobal, registerGlobal } from "../utils/globals.js"; import { NoopRealtimeStreamsManager } from "./noopManager.js"; -import { +import type { RealtimeStreamOperationOptions, RealtimeStreamInstance, RealtimeStreamsManager, diff --git a/packages/core/src/v3/realtimeStreams/manager.ts b/packages/core/src/v3/realtimeStreams/manager.ts index b72ce8af022..5b85ef11b61 100644 --- a/packages/core/src/v3/realtimeStreams/manager.ts +++ b/packages/core/src/v3/realtimeStreams/manager.ts @@ -1,9 +1,10 @@ -import { ApiClient } from "../apiClient/index.js"; -import { ensureAsyncIterable, ensureReadableStream } from "../streams/asyncIterableStream.js"; -import { AnyZodFetchOptions } from "../zodfetch.js"; +import type { ApiClient } from "../apiClient/index.js"; +import { ensureReadableStream } from "../streams/asyncIterableStream.js"; import { taskContext } from "../task-context-api.js"; -import { CreateStreamResponseLike, StreamInstance } from "./streamInstance.js"; -import { +import type { AnyZodFetchOptions } from "../zodfetch.js"; +import type { CreateStreamResponseLike } from "./streamInstance.js"; +import { StreamInstance } from "./streamInstance.js"; +import type { RealtimeStreamInstance, RealtimeStreamOperationOptions, RealtimeStreamsManager, @@ -231,42 +232,3 @@ function getRunIdForOptions(options?: RealtimeStreamOperationOptions): string | return taskContext.ctx?.run?.id; } - -type ParsedStreamResponse = - | { - version: "v1"; - } - | { - version: "v2"; - accessToken: string; - basin: string; - flushIntervalMs?: number; - maxRetries?: number; - }; - -function parseCreateStreamResponse( - version: string, - headers: Record | undefined -): ParsedStreamResponse { - if (version === "v1") { - return { version: "v1" }; - } - - const accessToken = headers?.["x-s2-access-token"]; - const basin = headers?.["x-s2-basin"]; - - if (!accessToken || !basin) { - return { version: "v1" }; - } - - const flushIntervalMs = headers?.["x-s2-flush-interval-ms"]; - const maxRetries = headers?.["x-s2-max-retries"]; - - return { - version: "v2", - accessToken, - basin, - flushIntervalMs: flushIntervalMs ? parseInt(flushIntervalMs) : undefined, - maxRetries: maxRetries ? parseInt(maxRetries) : undefined, - }; -} diff --git a/packages/core/src/v3/realtimeStreams/noopManager.ts b/packages/core/src/v3/realtimeStreams/noopManager.ts index 881a82294e2..2cba740641f 100644 --- a/packages/core/src/v3/realtimeStreams/noopManager.ts +++ b/packages/core/src/v3/realtimeStreams/noopManager.ts @@ -1,8 +1,6 @@ -import { - AsyncIterableStream, - createAsyncIterableStreamFromAsyncIterable, -} from "../streams/asyncIterableStream.js"; -import { +import type { AsyncIterableStream } from "../streams/asyncIterableStream.js"; +import { createAsyncIterableStreamFromAsyncIterable } from "../streams/asyncIterableStream.js"; +import type { RealtimeStreamOperationOptions, RealtimeStreamInstance, RealtimeStreamsManager, diff --git a/packages/core/src/v3/realtimeStreams/sessionStreamInstance.ts b/packages/core/src/v3/realtimeStreams/sessionStreamInstance.ts index c048e2e2b5d..ed2fe752400 100644 --- a/packages/core/src/v3/realtimeStreams/sessionStreamInstance.ts +++ b/packages/core/src/v3/realtimeStreams/sessionStreamInstance.ts @@ -1,8 +1,8 @@ -import { ApiClient } from "../apiClient/index.js"; -import { AsyncIterableStream } from "../streams/asyncIterableStream.js"; -import { AnyZodFetchOptions } from "../zodfetch.js"; +import type { ApiClient } from "../apiClient/index.js"; +import type { AsyncIterableStream } from "../streams/asyncIterableStream.js"; +import type { AnyZodFetchOptions } from "../zodfetch.js"; import { StreamsWriterV2 } from "./streamsWriterV2.js"; -import { StreamsWriter, StreamWriteResult } from "./types.js"; +import type { StreamsWriter, StreamWriteResult } from "./types.js"; export type InitializeSessionStreamResponseLike = { headers?: Record; diff --git a/packages/core/src/v3/realtimeStreams/streamInstance.ts b/packages/core/src/v3/realtimeStreams/streamInstance.ts index 0e20e2dad7a..1f846cfe23c 100644 --- a/packages/core/src/v3/realtimeStreams/streamInstance.ts +++ b/packages/core/src/v3/realtimeStreams/streamInstance.ts @@ -1,9 +1,9 @@ -import { ApiClient } from "../apiClient/index.js"; -import { AsyncIterableStream } from "../streams/asyncIterableStream.js"; -import { AnyZodFetchOptions } from "../zodfetch.js"; +import type { ApiClient } from "../apiClient/index.js"; +import type { AsyncIterableStream } from "../streams/asyncIterableStream.js"; +import type { AnyZodFetchOptions } from "../zodfetch.js"; import { StreamsWriterV1 } from "./streamsWriterV1.js"; import { StreamsWriterV2 } from "./streamsWriterV2.js"; -import { StreamsWriter, StreamWriteResult } from "./types.js"; +import type { StreamsWriter, StreamWriteResult } from "./types.js"; export type CreateStreamResponseLike = { version: string; @@ -160,22 +160,3 @@ function parseCreateStreamResponse( streamName, }; } - -async function* streamToAsyncIterator(stream: ReadableStream): AsyncIterableIterator { - const reader = stream.getReader(); - try { - while (true) { - const { done, value } = await reader.read(); - if (done) return; - yield value; - } - } finally { - safeReleaseLock(reader); - } -} - -function safeReleaseLock(reader: ReadableStreamDefaultReader) { - try { - reader.releaseLock(); - } catch (error) {} -} diff --git a/packages/core/src/v3/realtimeStreams/streamsWriterV1.ts b/packages/core/src/v3/realtimeStreams/streamsWriterV1.ts index f7b430bbf9b..ac40f8a70ad 100644 --- a/packages/core/src/v3/realtimeStreams/streamsWriterV1.ts +++ b/packages/core/src/v3/realtimeStreams/streamsWriterV1.ts @@ -2,7 +2,7 @@ import { request as httpsRequest } from "node:https"; import { request as httpRequest } from "node:http"; import { URL } from "node:url"; import { randomBytes } from "node:crypto"; -import { StreamsWriter, StreamWriteResult } from "./types.js"; +import type { StreamsWriter, StreamWriteResult } from "./types.js"; export type StreamsWriterV1Options = { baseUrl: string; @@ -108,8 +108,8 @@ export class StreamsWriterV1 implements StreamsWriter { }); req.on("error", async (error) => { - const errorCode = "code" in error ? error.code : undefined; - const errorMsg = error instanceof Error ? error.message : String(error); + const _errorCode = "code" in error ? error.code : undefined; + const _errorMsg = error instanceof Error ? error.message : String(error); // Check if this is a retryable connection error if (this.isRetryableError(error)) { @@ -466,5 +466,5 @@ async function* streamToAsyncIterator(stream: ReadableStream): AsyncIterab function safeReleaseLock(reader: ReadableStreamDefaultReader) { try { reader.releaseLock(); - } catch (error) {} + } catch (_error) {} } diff --git a/packages/core/src/v3/realtimeStreams/streamsWriterV2.ts b/packages/core/src/v3/realtimeStreams/streamsWriterV2.ts index 223fd8d894e..c8fcb249e18 100644 --- a/packages/core/src/v3/realtimeStreams/streamsWriterV2.ts +++ b/packages/core/src/v3/realtimeStreams/streamsWriterV2.ts @@ -1,6 +1,6 @@ import { S2, AppendRecord, BatchTransform } from "@s2-dev/streamstore"; import { ChatChunkTooLargeError } from "../errors.js"; -import { StreamsWriter, StreamWriteResult } from "./types.js"; +import type { StreamsWriter, StreamWriteResult } from "./types.js"; import { nanoid } from "nanoid"; // S2 caps a single record at 1 MiB of metered bytes (body + headers + 8 byte @@ -238,7 +238,7 @@ async function* streamToAsyncIterator(stream: ReadableStream): AsyncIterab function safeReleaseLock(reader: ReadableStreamDefaultReader) { try { reader.releaseLock(); - } catch (error) {} + } catch (_error) {} } // chat.agent emits two chunk shapes through this writer: diff --git a/packages/core/src/v3/realtimeStreams/types.ts b/packages/core/src/v3/realtimeStreams/types.ts index 87614ff0625..06c397e45c2 100644 --- a/packages/core/src/v3/realtimeStreams/types.ts +++ b/packages/core/src/v3/realtimeStreams/types.ts @@ -1,9 +1,9 @@ -import { AnyZodFetchOptions, ApiRequestOptions } from "../apiClient/core.js"; +import type { AnyZodFetchOptions, ApiRequestOptions } from "../apiClient/core.js"; import type { InputStreamOncePromise } from "../inputStreams/types.js"; export { InputStreamOncePromise, InputStreamTimeoutError } from "../inputStreams/types.js"; export type { InputStreamOnceResult } from "../inputStreams/types.js"; -import { AsyncIterableStream } from "../streams/asyncIterableStream.js"; -import { Prettify } from "../types/utils.js"; +import type { AsyncIterableStream } from "../streams/asyncIterableStream.js"; +import type { Prettify } from "../types/utils.js"; import type { ManualWaitpointPromise } from "../waitpoints/index.js"; export type RealtimeStreamOperationOptions = { diff --git a/packages/core/src/v3/resource-catalog/catalog.ts b/packages/core/src/v3/resource-catalog/catalog.ts index 3c128716966..33f66e237bb 100644 --- a/packages/core/src/v3/resource-catalog/catalog.ts +++ b/packages/core/src/v3/resource-catalog/catalog.ts @@ -1,4 +1,4 @@ -import { +import type { PromptManifest, QueueManifest, SkillManifest, @@ -6,7 +6,7 @@ import { TaskManifest, WorkerManifest, } from "../schemas/index.js"; -import { +import type { PromptMetadataWithFunctions, TaskMetadataWithFunctions, TaskSchema, diff --git a/packages/core/src/v3/resource-catalog/index.ts b/packages/core/src/v3/resource-catalog/index.ts index 8ef04516f80..cd5446b1fba 100644 --- a/packages/core/src/v3/resource-catalog/index.ts +++ b/packages/core/src/v3/resource-catalog/index.ts @@ -1,6 +1,6 @@ const API_NAME = "resource-catalog"; -import { +import type { PromptManifest, QueueManifest, SkillManifest, @@ -8,7 +8,7 @@ import { TaskManifest, WorkerManifest, } from "../schemas/index.js"; -import { +import type { PromptMetadataWithFunctions, TaskMetadataWithFunctions, TaskSchema, diff --git a/packages/core/src/v3/resource-catalog/noopResourceCatalog.ts b/packages/core/src/v3/resource-catalog/noopResourceCatalog.ts index 4697dc8c250..a78ccf4539e 100644 --- a/packages/core/src/v3/resource-catalog/noopResourceCatalog.ts +++ b/packages/core/src/v3/resource-catalog/noopResourceCatalog.ts @@ -1,4 +1,4 @@ -import { +import type { PromptManifest, QueueManifest, SkillManifest, @@ -11,7 +11,7 @@ import { type TaskMetadataWithFunctions, type TaskSchema, } from "../types/index.js"; -import { ResourceCatalog } from "./catalog.js"; +import type { ResourceCatalog } from "./catalog.js"; export class NoopResourceCatalog implements ResourceCatalog { registerTaskMetadata(task: TaskMetadataWithFunctions): void { diff --git a/packages/core/src/v3/resource-catalog/standardResourceCatalog.ts b/packages/core/src/v3/resource-catalog/standardResourceCatalog.ts index 8446144af94..b5cf70bb0d0 100644 --- a/packages/core/src/v3/resource-catalog/standardResourceCatalog.ts +++ b/packages/core/src/v3/resource-catalog/standardResourceCatalog.ts @@ -1,4 +1,4 @@ -import { +import type { PromptManifest, PromptMetadata, SkillManifest, @@ -9,12 +9,12 @@ import { WorkerManifest, QueueManifest, } from "../schemas/index.js"; -import { +import type { PromptMetadataWithFunctions, TaskMetadataWithFunctions, TaskSchema, } from "../types/index.js"; -import { ResourceCatalog } from "./catalog.js"; +import type { ResourceCatalog } from "./catalog.js"; /** * Sentinel file-context value the runtime workers set around task execution diff --git a/packages/core/src/v3/runEngineWorker/supervisor/consumerPool.test.ts b/packages/core/src/v3/runEngineWorker/supervisor/consumerPool.test.ts index fe27508fe37..bbf0e226150 100644 --- a/packages/core/src/v3/runEngineWorker/supervisor/consumerPool.test.ts +++ b/packages/core/src/v3/runEngineWorker/supervisor/consumerPool.test.ts @@ -1,10 +1,11 @@ -import { describe, it, expect, beforeEach, afterEach, vi, Mock } from "vitest"; +import type { Mock } from "vitest"; +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { RunQueueConsumerPool, type ConsumerPoolOptions, type QueueConsumerFactory, } from "./consumerPool.js"; -import { SupervisorHttpClient } from "./http.js"; +import type { SupervisorHttpClient } from "./http.js"; import type { WorkerApiDequeueResponseBody } from "./schemas.js"; import type { QueueConsumer } from "./queueConsumer.js"; import { ConsumerPoolMetrics } from "./consumerPoolMetrics.js"; diff --git a/packages/core/src/v3/runEngineWorker/supervisor/consumerPool.ts b/packages/core/src/v3/runEngineWorker/supervisor/consumerPool.ts index 0f4bcacdf03..bd73527cc5c 100644 --- a/packages/core/src/v3/runEngineWorker/supervisor/consumerPool.ts +++ b/packages/core/src/v3/runEngineWorker/supervisor/consumerPool.ts @@ -1,13 +1,11 @@ +import type { Registry } from "prom-client"; import { SimpleStructuredLogger } from "../../utils/structuredLogger.js"; -import { QueueConsumer, RunQueueConsumer, RunQueueConsumerOptions } from "./queueConsumer.js"; -import { QueueMetricsProcessor } from "./queueMetricsProcessor.js"; -import { - ScalingStrategy, - ScalingStrategyKind, - ScalingStrategyOptions, -} from "./scalingStrategies.js"; import { ConsumerPoolMetrics } from "./consumerPoolMetrics.js"; -import type { Registry } from "prom-client"; +import type { QueueConsumer, RunQueueConsumerOptions } from "./queueConsumer.js"; +import { RunQueueConsumer } from "./queueConsumer.js"; +import { QueueMetricsProcessor } from "./queueMetricsProcessor.js"; +import type { ScalingStrategyKind } from "./scalingStrategies.js"; +import { ScalingStrategy } from "./scalingStrategies.js"; export type QueueConsumerFactory = (opts: RunQueueConsumerOptions) => QueueConsumer; diff --git a/packages/core/src/v3/runEngineWorker/supervisor/events.ts b/packages/core/src/v3/runEngineWorker/supervisor/events.ts index df4a93686a9..a537ed137a1 100644 --- a/packages/core/src/v3/runEngineWorker/supervisor/events.ts +++ b/packages/core/src/v3/runEngineWorker/supervisor/events.ts @@ -1,5 +1,5 @@ -import { TaskRunExecutionResult } from "../../schemas/common.js"; -import { DequeuedMessage, StartRunAttemptResult } from "../../schemas/runEngine.js"; +import type { TaskRunExecutionResult } from "../../schemas/common.js"; +import type { DequeuedMessage, StartRunAttemptResult } from "../../schemas/runEngine.js"; export type WorkerEvents = { runQueueMessage: [ diff --git a/packages/core/src/v3/runEngineWorker/supervisor/http.ts b/packages/core/src/v3/runEngineWorker/supervisor/http.ts index aee6c6bf652..7b605373d07 100644 --- a/packages/core/src/v3/runEngineWorker/supervisor/http.ts +++ b/packages/core/src/v3/runEngineWorker/supervisor/http.ts @@ -1,25 +1,27 @@ import { z } from "zod"; -import { +import type { WorkerApiConnectRequestBody, + WorkerApiDequeueRequestBody, + WorkerApiHeartbeatRequestBody, + WorkerApiRunAttemptCompleteRequestBody, + WorkerApiRunAttemptStartRequestBody, + WorkerApiRunHeartbeatRequestBody, + WorkerApiDebugLogBody, + WorkerApiSuspendRunRequestBody, +} from "./schemas.js"; +import { WorkerApiConnectResponseBody, WorkerApiContinueRunExecutionRequestBody, - WorkerApiDequeueRequestBody, WorkerApiDequeueResponseBody, - WorkerApiHeartbeatRequestBody, WorkerApiHeartbeatResponseBody, - WorkerApiRunAttemptCompleteRequestBody, WorkerApiRunAttemptCompleteResponseBody, - WorkerApiRunAttemptStartRequestBody, WorkerApiRunAttemptStartResponseBody, - WorkerApiRunHeartbeatRequestBody, WorkerApiRunHeartbeatResponseBody, WorkerApiRunLatestSnapshotResponseBody, - WorkerApiDebugLogBody, - WorkerApiSuspendRunRequestBody, WorkerApiSuspendRunResponseBody, WorkerApiRunSnapshotsSinceResponseBody, } from "./schemas.js"; -import { SupervisorClientCommonOptions } from "./types.js"; +import type { SupervisorClientCommonOptions } from "./types.js"; import { getDefaultWorkerHeaders } from "./util.js"; import { wrapZodFetch } from "../../zodfetch.js"; import { createHeaders } from "../util.js"; diff --git a/packages/core/src/v3/runEngineWorker/supervisor/queueConsumer.ts b/packages/core/src/v3/runEngineWorker/supervisor/queueConsumer.ts index 91e05a1654b..98903fc6863 100644 --- a/packages/core/src/v3/runEngineWorker/supervisor/queueConsumer.ts +++ b/packages/core/src/v3/runEngineWorker/supervisor/queueConsumer.ts @@ -1,7 +1,7 @@ import { SimpleStructuredLogger } from "../../utils/structuredLogger.js"; -import { SupervisorHttpClient } from "./http.js"; -import { WorkerApiDequeueResponseBody, WorkerQueueClass } from "./schemas.js"; -import { PreDequeueFn, PreSkipFn } from "./types.js"; +import type { SupervisorHttpClient } from "./http.js"; +import type { WorkerApiDequeueResponseBody, WorkerQueueClass } from "./schemas.js"; +import type { PreDequeueFn, PreSkipFn } from "./types.js"; import type { ConsumerPoolMetrics } from "./consumerPoolMetrics.js"; export interface QueueConsumer { diff --git a/packages/core/src/v3/runEngineWorker/supervisor/scalingStrategies.test.ts b/packages/core/src/v3/runEngineWorker/supervisor/scalingStrategies.test.ts index 3d6f4062e54..9c54bb2112d 100644 --- a/packages/core/src/v3/runEngineWorker/supervisor/scalingStrategies.test.ts +++ b/packages/core/src/v3/runEngineWorker/supervisor/scalingStrategies.test.ts @@ -1,9 +1,9 @@ import { describe, it, expect } from "vitest"; +import type { ScalingStrategyOptions } from "./scalingStrategies.js"; import { NoneScalingStrategy, SmoothScalingStrategy, AggressiveScalingStrategy, - ScalingStrategyOptions, } from "./scalingStrategies.js"; import { QueueMetricsProcessor } from "./queueMetricsProcessor.js"; diff --git a/packages/core/src/v3/runEngineWorker/supervisor/scalingStrategies.ts b/packages/core/src/v3/runEngineWorker/supervisor/scalingStrategies.ts index 665c689d649..08d7497a13a 100644 --- a/packages/core/src/v3/runEngineWorker/supervisor/scalingStrategies.ts +++ b/packages/core/src/v3/runEngineWorker/supervisor/scalingStrategies.ts @@ -1,4 +1,4 @@ -import { QueueMetricsProcessor } from "./queueMetricsProcessor.js"; +import type { QueueMetricsProcessor } from "./queueMetricsProcessor.js"; export type ScalingStrategyKind = "none" | "smooth" | "aggressive"; diff --git a/packages/core/src/v3/runEngineWorker/supervisor/session.ts b/packages/core/src/v3/runEngineWorker/supervisor/session.ts index 10e70994a0c..fcc00015631 100644 --- a/packages/core/src/v3/runEngineWorker/supervisor/session.ts +++ b/packages/core/src/v3/runEngineWorker/supervisor/session.ts @@ -1,16 +1,18 @@ import { SupervisorHttpClient } from "./http.js"; -import { PreDequeueFn, PreSkipFn, SupervisorClientCommonOptions } from "./types.js"; -import { +import type { PreDequeueFn, PreSkipFn, SupervisorClientCommonOptions } from "./types.js"; +import type { WorkerApiDequeueResponseBody, WorkerApiHeartbeatRequestBody, WorkerQueueClass, } from "./schemas.js"; -import { RunQueueConsumerPool, ScalingOptions } from "./consumerPool.js"; -import { WorkerEvents } from "./events.js"; +import type { ScalingOptions } from "./consumerPool.js"; +import { RunQueueConsumerPool } from "./consumerPool.js"; +import type { WorkerEvents } from "./events.js"; import EventEmitter from "events"; import { VERSION } from "../../../version.js"; -import { io, Socket } from "socket.io-client"; -import { WorkerClientToServerEvents, WorkerServerToClientEvents } from "../types.js"; +import type { Socket } from "socket.io-client"; +import { io } from "socket.io-client"; +import type { WorkerClientToServerEvents, WorkerServerToClientEvents } from "../types.js"; import { getDefaultWorkerHeaders } from "./util.js"; import { IntervalService } from "../../utils/interval.js"; import { SimpleStructuredLogger } from "../../utils/structuredLogger.js"; diff --git a/packages/core/src/v3/runEngineWorker/supervisor/types.ts b/packages/core/src/v3/runEngineWorker/supervisor/types.ts index a61e89e46d3..4d0479cbcac 100644 --- a/packages/core/src/v3/runEngineWorker/supervisor/types.ts +++ b/packages/core/src/v3/runEngineWorker/supervisor/types.ts @@ -1,4 +1,4 @@ -import { MachineResources } from "../../schemas/runEngine.js"; +import type { MachineResources } from "../../schemas/runEngine.js"; export type SupervisorClientCommonOptions = { apiUrl: string; diff --git a/packages/core/src/v3/runEngineWorker/supervisor/util.ts b/packages/core/src/v3/runEngineWorker/supervisor/util.ts index 07b662b0d91..94386016ffb 100644 --- a/packages/core/src/v3/runEngineWorker/supervisor/util.ts +++ b/packages/core/src/v3/runEngineWorker/supervisor/util.ts @@ -1,6 +1,6 @@ import { WORKER_HEADERS } from "../consts.js"; import { createHeaders } from "../util.js"; -import { SupervisorClientCommonOptions } from "./types.js"; +import type { SupervisorClientCommonOptions } from "./types.js"; export function getDefaultWorkerHeaders( options: SupervisorClientCommonOptions diff --git a/packages/core/src/v3/runEngineWorker/workload/http.ts b/packages/core/src/v3/runEngineWorker/workload/http.ts index 93fa7bf03c0..8f4703a9e62 100644 --- a/packages/core/src/v3/runEngineWorker/workload/http.ts +++ b/packages/core/src/v3/runEngineWorker/workload/http.ts @@ -1,18 +1,20 @@ import { z } from "zod"; -import { +import type { WorkloadHeartbeatRequestBody, - WorkloadHeartbeatResponseBody, WorkloadRunAttemptCompleteRequestBody, + WorkloadRunAttemptStartRequestBody, + WorkloadDebugLogRequestBody, +} from "./schemas.js"; +import { + WorkloadHeartbeatResponseBody, WorkloadRunAttemptCompleteResponseBody, WorkloadRunAttemptStartResponseBody, WorkloadDequeueFromVersionResponseBody, - WorkloadRunAttemptStartRequestBody, WorkloadSuspendRunResponseBody, WorkloadContinueRunExecutionResponseBody, - WorkloadDebugLogRequestBody, WorkloadRunSnapshotsSinceResponseBody, } from "./schemas.js"; -import { WorkloadClientCommonOptions } from "./types.js"; +import type { WorkloadClientCommonOptions } from "./types.js"; import { getDefaultWorkloadHeaders } from "./util.js"; import { wrapZodFetch } from "../../zodfetch.js"; diff --git a/packages/core/src/v3/runEngineWorker/workload/util.ts b/packages/core/src/v3/runEngineWorker/workload/util.ts index 74f58d9bb82..2ea0cf7df04 100644 --- a/packages/core/src/v3/runEngineWorker/workload/util.ts +++ b/packages/core/src/v3/runEngineWorker/workload/util.ts @@ -1,6 +1,6 @@ import { WORKLOAD_HEADERS } from "../consts.js"; import { createHeaders } from "../util.js"; -import { WorkloadClientCommonOptions } from "./types.js"; +import type { WorkloadClientCommonOptions } from "./types.js"; export function getDefaultWorkloadHeaders( options: WorkloadClientCommonOptions diff --git a/packages/core/src/v3/runMetadata/index.ts b/packages/core/src/v3/runMetadata/index.ts index edc8475fb86..c760eff50a8 100644 --- a/packages/core/src/v3/runMetadata/index.ts +++ b/packages/core/src/v3/runMetadata/index.ts @@ -1,9 +1,9 @@ -import { DeserializedJson } from "../../schemas/json.js"; -import { AsyncIterableStream } from "../streams/asyncIterableStream.js"; +import type { DeserializedJson } from "../../schemas/json.js"; +import type { AsyncIterableStream } from "../streams/asyncIterableStream.js"; import { getGlobal, registerGlobal } from "../utils/globals.js"; -import { ApiRequestOptions } from "../zodfetch.js"; +import type { ApiRequestOptions } from "../zodfetch.js"; import { NoopRunMetadataManager } from "./noopManager.js"; -import { RunMetadataManager, RunMetadataUpdater } from "./types.js"; +import type { RunMetadataManager, RunMetadataUpdater } from "./types.js"; const API_NAME = "run-metadata"; diff --git a/packages/core/src/v3/runMetadata/manager.ts b/packages/core/src/v3/runMetadata/manager.ts index 12baa8cfbb3..ded5a3b69af 100644 --- a/packages/core/src/v3/runMetadata/manager.ts +++ b/packages/core/src/v3/runMetadata/manager.ts @@ -1,11 +1,12 @@ import { dequal } from "dequal/lite"; -import { DeserializedJson } from "../../schemas/json.js"; -import { ApiClient } from "../apiClient/index.js"; +import type { DeserializedJson } from "../../schemas/json.js"; +import type { ApiClient } from "../apiClient/index.js"; import { realtimeStreams } from "../realtime-streams-api.js"; -import { RunMetadataChangeOperation } from "../schemas/common.js"; -import { AsyncIterableStream } from "../streams/asyncIterableStream.js"; -import { IOPacket, stringifyIO } from "../utils/ioSerialization.js"; -import { ApiRequestOptions } from "../zodfetch.js"; +import type { RunMetadataChangeOperation } from "../schemas/common.js"; +import type { AsyncIterableStream } from "../streams/asyncIterableStream.js"; +import type { IOPacket } from "../utils/ioSerialization.js"; +import { stringifyIO } from "../utils/ioSerialization.js"; +import type { ApiRequestOptions } from "../zodfetch.js"; import { applyMetadataOperations, collapseOperations } from "./operations.js"; import type { RunMetadataManager, RunMetadataUpdater } from "./types.js"; diff --git a/packages/core/src/v3/runMetadata/noopManager.ts b/packages/core/src/v3/runMetadata/noopManager.ts index 88751d8f2e7..244876d5b22 100644 --- a/packages/core/src/v3/runMetadata/noopManager.ts +++ b/packages/core/src/v3/runMetadata/noopManager.ts @@ -1,6 +1,6 @@ -import { DeserializedJson } from "../../schemas/json.js"; -import { AsyncIterableStream } from "../streams/asyncIterableStream.js"; -import { ApiRequestOptions } from "../zodfetch.js"; +import type { DeserializedJson } from "../../schemas/json.js"; +import type { AsyncIterableStream } from "../streams/asyncIterableStream.js"; +import type { ApiRequestOptions } from "../zodfetch.js"; import type { RunMetadataManager, RunMetadataUpdater } from "./types.js"; export class NoopRunMetadataManager implements RunMetadataManager { @@ -48,7 +48,7 @@ export class NoopRunMetadataManager implements RunMetadataManager { get parent(): RunMetadataUpdater { // Store a reference to this object // eslint-disable-next-line no-this-alias - const self = this; + const _self = this; // Create a local reference to ensure proper context const parentUpdater: RunMetadataUpdater = { @@ -73,7 +73,7 @@ export class NoopRunMetadataManager implements RunMetadataManager { get root(): RunMetadataUpdater { // Store a reference to this object // eslint-disable-next-line no-this-alias - const self = this; + const _self = this; // Create a local reference to ensure proper context const rootUpdater: RunMetadataUpdater = { diff --git a/packages/core/src/v3/runMetadata/operations.ts b/packages/core/src/v3/runMetadata/operations.ts index 6a644432607..b1cc68672c2 100644 --- a/packages/core/src/v3/runMetadata/operations.ts +++ b/packages/core/src/v3/runMetadata/operations.ts @@ -1,5 +1,5 @@ import { JSONHeroPath } from "@jsonhero/path"; -import { RunMetadataChangeOperation } from "../schemas/common.js"; +import type { RunMetadataChangeOperation } from "../schemas/common.js"; import { dequal } from "dequal"; export type ApplyOperationResult = { diff --git a/packages/core/src/v3/runMetadata/types.ts b/packages/core/src/v3/runMetadata/types.ts index 53a3a211332..da74c5b0165 100644 --- a/packages/core/src/v3/runMetadata/types.ts +++ b/packages/core/src/v3/runMetadata/types.ts @@ -1,6 +1,6 @@ -import { DeserializedJson } from "../../schemas/json.js"; -import { AsyncIterableStream } from "../streams/asyncIterableStream.js"; -import { ApiRequestOptions } from "../zodfetch.js"; +import type { DeserializedJson } from "../../schemas/json.js"; +import type { AsyncIterableStream } from "../streams/asyncIterableStream.js"; +import type { ApiRequestOptions } from "../zodfetch.js"; export interface RunMetadataUpdater { set(key: string, value: DeserializedJson): this; diff --git a/packages/core/src/v3/runTimelineMetrics/index.ts b/packages/core/src/v3/runTimelineMetrics/index.ts index 7ce1133c619..a811deb4505 100644 --- a/packages/core/src/v3/runTimelineMetrics/index.ts +++ b/packages/core/src/v3/runTimelineMetrics/index.ts @@ -1,8 +1,8 @@ -import { Attributes } from "@opentelemetry/api"; -import { TriggerTracerSpanEvent } from "../tracer.js"; +import type { Attributes } from "@opentelemetry/api"; +import type { TriggerTracerSpanEvent } from "../tracer.js"; import { getGlobal, registerGlobal } from "../utils/globals.js"; import { NoopRunTimelineMetricsManager } from "./runTimelineMetricsManager.js"; -import { RunTimelineMetric, RunTimelineMetricsManager } from "./types.js"; +import type { RunTimelineMetric, RunTimelineMetricsManager } from "./types.js"; import { flattenAttributes } from "../utils/flattenAttributes.js"; import { SemanticInternalAttributes } from "../semanticInternalAttributes.js"; diff --git a/packages/core/src/v3/runTimelineMetrics/runTimelineMetricsManager.ts b/packages/core/src/v3/runTimelineMetrics/runTimelineMetricsManager.ts index 3261e475247..23c769bebf9 100644 --- a/packages/core/src/v3/runTimelineMetrics/runTimelineMetricsManager.ts +++ b/packages/core/src/v3/runTimelineMetrics/runTimelineMetricsManager.ts @@ -1,6 +1,6 @@ -import { TaskRunExecutionMetrics } from "../schemas/schemas.js"; +import type { TaskRunExecutionMetrics } from "../schemas/schemas.js"; import { getEnvVar } from "../utils/getEnv.js"; -import { RunTimelineMetric, RunTimelineMetricsManager } from "./types.js"; +import type { RunTimelineMetric, RunTimelineMetricsManager } from "./types.js"; export class StandardRunTimelineMetricsManager implements RunTimelineMetricsManager { private _metrics: RunTimelineMetric[] = []; diff --git a/packages/core/src/v3/runTimelineMetrics/types.ts b/packages/core/src/v3/runTimelineMetrics/types.ts index 043bfcaac0b..314087b8903 100644 --- a/packages/core/src/v3/runTimelineMetrics/types.ts +++ b/packages/core/src/v3/runTimelineMetrics/types.ts @@ -1,4 +1,4 @@ -import { Attributes } from "@opentelemetry/api"; +import type { Attributes } from "@opentelemetry/api"; export type RunTimelineMetric = { name: string; diff --git a/packages/core/src/v3/runtime/index.ts b/packages/core/src/v3/runtime/index.ts index 39e874f986f..a73a2416d21 100644 --- a/packages/core/src/v3/runtime/index.ts +++ b/packages/core/src/v3/runtime/index.ts @@ -1,6 +1,6 @@ const API_NAME = "runtime"; -import { +import type { BatchTaskRunExecutionResult, TaskRunContext, TaskRunExecutionResult, diff --git a/packages/core/src/v3/runtime/manager.ts b/packages/core/src/v3/runtime/manager.ts index ec7b5f1c182..f1502bb45d0 100644 --- a/packages/core/src/v3/runtime/manager.ts +++ b/packages/core/src/v3/runtime/manager.ts @@ -1,4 +1,4 @@ -import { +import type { BatchTaskRunExecutionResult, TaskRunContext, TaskRunExecutionResult, diff --git a/packages/core/src/v3/runtime/noopRuntimeManager.ts b/packages/core/src/v3/runtime/noopRuntimeManager.ts index 0650cf4e0d2..6729a44c488 100644 --- a/packages/core/src/v3/runtime/noopRuntimeManager.ts +++ b/packages/core/src/v3/runtime/noopRuntimeManager.ts @@ -1,11 +1,11 @@ -import { +import type { BatchTaskRunExecutionResult, TaskRunContext, - TaskRunErrorCodes, TaskRunExecutionResult, WaitpointTokenResult, } from "../schemas/index.js"; -import { RuntimeManager } from "./manager.js"; +import { TaskRunErrorCodes } from "../schemas/index.js"; +import type { RuntimeManager } from "./manager.js"; export class NoopRuntimeManager implements RuntimeManager { disable(): void { diff --git a/packages/core/src/v3/runtime/sharedRuntimeManager.ts b/packages/core/src/v3/runtime/sharedRuntimeManager.ts index d70ffe616f5..c5ed5547bbf 100644 --- a/packages/core/src/v3/runtime/sharedRuntimeManager.ts +++ b/packages/core/src/v3/runtime/sharedRuntimeManager.ts @@ -1,8 +1,8 @@ import { assertExhaustive } from "../../utils.js"; import { clock } from "../clock-api.js"; import { lifecycleHooks } from "../lifecycle-hooks-api.js"; -import { DebugLogPropertiesInput } from "../runEngineWorker/index.js"; -import { +import type { DebugLogPropertiesInput } from "../runEngineWorker/index.js"; +import type { BatchTaskRunExecutionResult, CompletedWaitpoint, TaskRunContext, @@ -12,8 +12,8 @@ import { WaitpointTokenResult, } from "../schemas/index.js"; import { tryCatch } from "../tryCatch.js"; -import { ExecutorToWorkerProcessConnection } from "../zodIpc.js"; -import { RuntimeManager } from "./manager.js"; +import type { ExecutorToWorkerProcessConnection } from "../zodIpc.js"; +import type { RuntimeManager } from "./manager.js"; import { preventMultipleWaits } from "./preventMultipleWaits.js"; /** A function that resolves a waitpoint */ diff --git a/packages/core/src/v3/schemas/api.ts b/packages/core/src/v3/schemas/api.ts index 610fa98711a..e9b5b03cc64 100644 --- a/packages/core/src/v3/schemas/api.ts +++ b/packages/core/src/v3/schemas/api.ts @@ -1832,7 +1832,7 @@ export function isWaitpointOutputTimeout(output: string): boolean { try { const json = JSON.parse(output); return json.code === WAITPOINT_TIMEOUT_ERROR_CODE; - } catch (e) { + } catch (_e) { return false; } } diff --git a/packages/core/src/v3/schemas/checkpoints.ts b/packages/core/src/v3/schemas/checkpoints.ts index d255c035cf8..f11698f2df7 100644 --- a/packages/core/src/v3/schemas/checkpoints.ts +++ b/packages/core/src/v3/schemas/checkpoints.ts @@ -1,7 +1,7 @@ import { CheckpointType, DequeuedMessage } from "./runEngine.js"; import z from "zod"; -const CallbackUrl = z +const _CallbackUrl = z .string() .url() .transform((url) => new URL(url)); diff --git a/packages/core/src/v3/schemas/fetch.ts b/packages/core/src/v3/schemas/fetch.ts index eace74628e5..88ccad4e357 100644 --- a/packages/core/src/v3/schemas/fetch.ts +++ b/packages/core/src/v3/schemas/fetch.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { RetryOptions } from "./schemas.js"; import { EventFilter } from "./eventFilter.js"; -import { Prettify } from "../types/index.js"; +import type { Prettify } from "../types/index.js"; export const FetchRetryHeadersStrategy = z.object({ /** The `headers` strategy retries the request using info from the response headers. */ diff --git a/packages/core/src/v3/schemas/query.ts b/packages/core/src/v3/schemas/query.ts index 3910ab4f5d7..027259e8b74 100644 --- a/packages/core/src/v3/schemas/query.ts +++ b/packages/core/src/v3/schemas/query.ts @@ -1,7 +1,6 @@ -import { TypeOf, z } from "zod"; -import type { MachinePresetName } from "./common.js"; -import type { RuntimeEnvironmentType } from "./common.js"; +import { z } from "zod"; import type { IdempotencyKeyScope } from "../idempotency-key-catalog/catalog.js"; +import type { MachinePresetName, RuntimeEnvironmentType } from "./common.js"; /** * Request body schema for executing a query diff --git a/packages/core/src/v3/schemas/runEngine.ts b/packages/core/src/v3/schemas/runEngine.ts index 5ea22960bf2..f4342ec2600 100644 --- a/packages/core/src/v3/schemas/runEngine.ts +++ b/packages/core/src/v3/schemas/runEngine.ts @@ -1,5 +1,6 @@ import { z } from "zod"; -import { Enum, MachinePreset, RuntimeEnvironmentType, TaskRunExecution } from "./common.js"; +import type { Enum, RuntimeEnvironmentType } from "./common.js"; +import { MachinePreset, TaskRunExecution } from "./common.js"; import { EnvironmentType } from "./schemas.js"; import type * as DB_TYPES from "@trigger.dev/database"; diff --git a/packages/core/src/v3/schemas/schemas.ts b/packages/core/src/v3/schemas/schemas.ts index 95564cb1efc..0b12e7ae3db 100644 --- a/packages/core/src/v3/schemas/schemas.ts +++ b/packages/core/src/v3/schemas/schemas.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { RequireKeys } from "../types/index.js"; +import type { RequireKeys } from "../types/index.js"; import { MachineConfig, MachinePreset, diff --git a/packages/core/src/v3/serverOnly/checkpointClient.ts b/packages/core/src/v3/serverOnly/checkpointClient.ts index 57bdb09ab36..0250b441912 100644 --- a/packages/core/src/v3/serverOnly/checkpointClient.ts +++ b/packages/core/src/v3/serverOnly/checkpointClient.ts @@ -1,10 +1,10 @@ -import { SupervisorHttpClient } from "../runEngineWorker/index.js"; -import { - CheckpointServiceSuspendRequestBodyInput, - CheckpointServiceSuspendResponseBody, +import type { SupervisorHttpClient } from "../runEngineWorker/index.js"; +import type { CheckpointServiceRestoreRequestBodyInput, + CheckpointServiceSuspendRequestBodyInput, } from "../schemas/checkpoints.js"; -import { CheckpointType, DequeuedMessage } from "../schemas/runEngine.js"; +import { CheckpointServiceSuspendResponseBody } from "../schemas/checkpoints.js"; +import type { CheckpointType } from "../schemas/runEngine.js"; import { SimpleStructuredLogger } from "../utils/structuredLogger.js"; export type CheckpointClientOptions = { diff --git a/packages/core/src/v3/serverOnly/httpServer.ts b/packages/core/src/v3/serverOnly/httpServer.ts index d0cd9275f8a..8360067d583 100644 --- a/packages/core/src/v3/serverOnly/httpServer.ts +++ b/packages/core/src/v3/serverOnly/httpServer.ts @@ -2,7 +2,8 @@ import { createServer, type IncomingMessage, type ServerResponse } from "node:ht import { z } from "zod"; import { SimpleStructuredLogger } from "../utils/structuredLogger.js"; import { HttpReply, getJsonBody } from "../apps/http.js"; -import { Registry, Histogram, Counter } from "prom-client"; +import type { Registry } from "prom-client"; +import { Histogram, Counter } from "prom-client"; import { tryCatch } from "../../utils.js"; const logger = new SimpleStructuredLogger("http-server"); diff --git a/packages/core/src/v3/serverOnly/resourceMonitor.ts b/packages/core/src/v3/serverOnly/resourceMonitor.ts index 2d91d2e23d5..e4d856b1c0d 100644 --- a/packages/core/src/v3/serverOnly/resourceMonitor.ts +++ b/packages/core/src/v3/serverOnly/resourceMonitor.ts @@ -277,7 +277,7 @@ export class ResourceMonitor { rss, command: cmdline.replace(/\0/g, " ").trim(), }; - } catch (error) { + } catch (_error) { return null; } }) @@ -457,7 +457,7 @@ export class ResourceMonitor { } : null, }; - } catch (error) { + } catch (_error) { return { node: nodeMetrics, targetProcess: this.processName diff --git a/packages/core/src/v3/sessionStreams/index.ts b/packages/core/src/v3/sessionStreams/index.ts index b4e2e2eb291..21e2e8d2450 100644 --- a/packages/core/src/v3/sessionStreams/index.ts +++ b/packages/core/src/v3/sessionStreams/index.ts @@ -1,7 +1,7 @@ import { getGlobal, registerGlobal } from "../utils/globals.js"; import { NoopSessionStreamManager } from "./noopManager.js"; -import { InputStreamOncePromise, SessionChannelIO, SessionStreamManager } from "./types.js"; -import { InputStreamOnceOptions } from "../realtimeStreams/types.js"; +import type { InputStreamOncePromise, SessionChannelIO, SessionStreamManager } from "./types.js"; +import type { InputStreamOnceOptions } from "../realtimeStreams/types.js"; const API_NAME = "session-streams"; diff --git a/packages/core/src/v3/sessionStreams/manager.ts b/packages/core/src/v3/sessionStreams/manager.ts index 1c9af1c7d6b..fb87b211643 100644 --- a/packages/core/src/v3/sessionStreams/manager.ts +++ b/packages/core/src/v3/sessionStreams/manager.ts @@ -1,12 +1,9 @@ -import { ApiClient } from "../apiClient/index.js"; -import { - InputStreamOncePromise, - InputStreamOnceResult, - InputStreamTimeoutError, -} from "../inputStreams/types.js"; -import { InputStreamOnceOptions } from "../realtimeStreams/types.js"; +import type { ApiClient } from "../apiClient/index.js"; +import type { InputStreamOnceResult } from "../inputStreams/types.js"; +import { InputStreamOncePromise, InputStreamTimeoutError } from "../inputStreams/types.js"; +import type { InputStreamOnceOptions } from "../realtimeStreams/types.js"; import { computeReconnectDelayMs } from "../utils/reconnectBackoff.js"; -import { SessionChannelIO, SessionStreamManager } from "./types.js"; +import type { SessionChannelIO, SessionStreamManager } from "./types.js"; import { controlSubtype } from "./wireProtocol.js"; // A handler that synchronously returns `true` CONSUMES the record: it is @@ -288,7 +285,7 @@ export class StandardSessionStreamManager implements SessionStreamManager { disconnectStream(sessionId: string, io: SessionChannelIO): void { const key = keyFor(sessionId, io); const tail = this.tails.get(key); - const bufferedSize = this.buffer.get(key)?.length ?? 0; + const _bufferedSize = this.buffer.get(key)?.length ?? 0; // Mark as explicitly disconnected BEFORE we abort, so the tail's // `.finally` reconnect path sees the flag when it runs (which can be // synchronous in the AbortError catch). Cleared on the next explicit diff --git a/packages/core/src/v3/sessionStreams/noopManager.ts b/packages/core/src/v3/sessionStreams/noopManager.ts index 5284c9a9fed..f2d355d24ef 100644 --- a/packages/core/src/v3/sessionStreams/noopManager.ts +++ b/packages/core/src/v3/sessionStreams/noopManager.ts @@ -1,6 +1,6 @@ -import { InputStreamOnceOptions } from "../realtimeStreams/types.js"; +import type { InputStreamOnceOptions } from "../realtimeStreams/types.js"; import { InputStreamOncePromise } from "../inputStreams/types.js"; -import { SessionChannelIO, SessionStreamManager } from "./types.js"; +import type { SessionChannelIO, SessionStreamManager } from "./types.js"; export class NoopSessionStreamManager implements SessionStreamManager { on( diff --git a/packages/core/src/v3/sessionStreams/types.ts b/packages/core/src/v3/sessionStreams/types.ts index bd98fa04385..ae24259b3fc 100644 --- a/packages/core/src/v3/sessionStreams/types.ts +++ b/packages/core/src/v3/sessionStreams/types.ts @@ -1,9 +1,6 @@ -import { InputStreamOnceOptions } from "../realtimeStreams/types.js"; -import { - InputStreamOncePromise, - InputStreamOnceResult, - InputStreamTimeoutError, -} from "../inputStreams/types.js"; +import type { InputStreamOnceOptions } from "../realtimeStreams/types.js"; +import type { InputStreamOnceResult } from "../inputStreams/types.js"; +import { InputStreamOncePromise, InputStreamTimeoutError } from "../inputStreams/types.js"; /** * Re-export the run-scoped input stream once-promise machinery so callers diff --git a/packages/core/src/v3/taskContext/index.ts b/packages/core/src/v3/taskContext/index.ts index c4bbf25c972..bfc85c2bf70 100644 --- a/packages/core/src/v3/taskContext/index.ts +++ b/packages/core/src/v3/taskContext/index.ts @@ -1,9 +1,9 @@ -import { Attributes } from "@opentelemetry/api"; -import { ServerBackgroundWorker, TaskRunContext } from "../schemas/index.js"; +import type { Attributes } from "@opentelemetry/api"; +import type { ServerBackgroundWorker, TaskRunContext } from "../schemas/index.js"; import { SemanticInternalAttributes } from "../semanticInternalAttributes.js"; import { sdkScope } from "../sdkScope/index.js"; import { getGlobal, registerGlobal } from "../utils/globals.js"; -import { TaskContext } from "./types.js"; +import type { TaskContext } from "./types.js"; const API_NAME = "task-context"; diff --git a/packages/core/src/v3/taskContext/otelProcessors.ts b/packages/core/src/v3/taskContext/otelProcessors.ts index 452ecf391a0..2a22a279db8 100644 --- a/packages/core/src/v3/taskContext/otelProcessors.ts +++ b/packages/core/src/v3/taskContext/otelProcessors.ts @@ -1,6 +1,8 @@ -import { Attributes, Context, trace, Tracer } from "@opentelemetry/api"; -import { ExportResult, ExportResultCode } from "@opentelemetry/core"; -import { LogRecordProcessor, SdkLogRecord } from "@opentelemetry/sdk-logs"; +import type { Attributes, Context, Tracer } from "@opentelemetry/api"; +import { trace } from "@opentelemetry/api"; +import type { ExportResult } from "@opentelemetry/core"; +import { ExportResultCode } from "@opentelemetry/core"; +import type { LogRecordProcessor, SdkLogRecord } from "@opentelemetry/sdk-logs"; import type { AggregationOption, AggregationTemporality, @@ -10,7 +12,7 @@ import type { ResourceMetrics, ScopeMetrics, } from "@opentelemetry/sdk-metrics"; -import { Span, SpanProcessor } from "@opentelemetry/sdk-trace-base"; +import type { Span, SpanProcessor } from "@opentelemetry/sdk-trace-base"; import { SemanticInternalAttributes } from "../semanticInternalAttributes.js"; import { taskContext } from "../task-context-api.js"; import { flattenAttributes } from "../utils/flattenAttributes.js"; diff --git a/packages/core/src/v3/taskContext/types.ts b/packages/core/src/v3/taskContext/types.ts index e60b54ad2be..2522b74b5dc 100644 --- a/packages/core/src/v3/taskContext/types.ts +++ b/packages/core/src/v3/taskContext/types.ts @@ -1,4 +1,4 @@ -import { ServerBackgroundWorker, TaskRunContext } from "../schemas/index.js"; +import type { ServerBackgroundWorker, TaskRunContext } from "../schemas/index.js"; export type TaskContext = { ctx: TaskRunContext; diff --git a/packages/core/src/v3/test/test-realtime-streams-manager.ts b/packages/core/src/v3/test/test-realtime-streams-manager.ts index 2a97d845edc..de15a77cf3d 100644 --- a/packages/core/src/v3/test/test-realtime-streams-manager.ts +++ b/packages/core/src/v3/test/test-realtime-streams-manager.ts @@ -1,7 +1,5 @@ -import { - AsyncIterableStream, - createAsyncIterableStreamFromAsyncIterable, -} from "../streams/asyncIterableStream.js"; +import type { AsyncIterableStream } from "../streams/asyncIterableStream.js"; +import { createAsyncIterableStreamFromAsyncIterable } from "../streams/asyncIterableStream.js"; import type { RealtimeStreamInstance, RealtimeStreamOperationOptions, diff --git a/packages/core/src/v3/test/test-session-stream-manager.ts b/packages/core/src/v3/test/test-session-stream-manager.ts index 388c6dca877..9339f9be708 100644 --- a/packages/core/src/v3/test/test-session-stream-manager.ts +++ b/packages/core/src/v3/test/test-session-stream-manager.ts @@ -1,8 +1,5 @@ -import { - InputStreamOncePromise, - InputStreamOnceResult, - InputStreamTimeoutError, -} from "../inputStreams/types.js"; +import type { InputStreamOnceResult } from "../inputStreams/types.js"; +import { InputStreamOncePromise, InputStreamTimeoutError } from "../inputStreams/types.js"; import type { InputStreamOnceOptions } from "../realtimeStreams/types.js"; import type { SessionChannelIO, SessionStreamManager } from "../sessionStreams/types.js"; diff --git a/packages/core/src/v3/timeout/api.ts b/packages/core/src/v3/timeout/api.ts index 864a46bbfe7..17de449ab17 100644 --- a/packages/core/src/v3/timeout/api.ts +++ b/packages/core/src/v3/timeout/api.ts @@ -1,5 +1,5 @@ import { getGlobal, registerGlobal, unregisterGlobal } from "../utils/globals.js"; -import { TimeoutManager } from "./types.js"; +import type { TimeoutManager } from "./types.js"; const API_NAME = "timeout"; diff --git a/packages/core/src/v3/timeout/usageTimeoutManager.ts b/packages/core/src/v3/timeout/usageTimeoutManager.ts index 3a6a196dcee..4a93f374921 100644 --- a/packages/core/src/v3/timeout/usageTimeoutManager.ts +++ b/packages/core/src/v3/timeout/usageTimeoutManager.ts @@ -1,5 +1,6 @@ -import { UsageManager } from "../usage/types.js"; -import { TaskRunExceededMaxDuration, TimeoutManager } from "./types.js"; +import type { UsageManager } from "../usage/types.js"; +import type { TimeoutManager } from "./types.js"; +import { TaskRunExceededMaxDuration } from "./types.js"; export class UsageTimeoutManager implements TimeoutManager { private _abortController: AbortController; diff --git a/packages/core/src/v3/traceContext/api.ts b/packages/core/src/v3/traceContext/api.ts index 3b21e0668a1..b4d0074314b 100644 --- a/packages/core/src/v3/traceContext/api.ts +++ b/packages/core/src/v3/traceContext/api.ts @@ -1,6 +1,7 @@ -import { context, Context } from "@opentelemetry/api"; +import type { Context } from "@opentelemetry/api"; +import { context } from "@opentelemetry/api"; import { getGlobal, registerGlobal, unregisterGlobal } from "../utils/globals.js"; -import { TraceContextManager } from "./types.js"; +import type { TraceContextManager } from "./types.js"; const API_NAME = "trace-context"; diff --git a/packages/core/src/v3/traceContext/manager.ts b/packages/core/src/v3/traceContext/manager.ts index f61b7c7af71..ebf8f9b53ec 100644 --- a/packages/core/src/v3/traceContext/manager.ts +++ b/packages/core/src/v3/traceContext/manager.ts @@ -1,6 +1,7 @@ -import { Context, context, propagation, trace, TraceFlags } from "@opentelemetry/api"; -import { TraceContextManager } from "./types.js"; +import type { Context } from "@opentelemetry/api"; +import { context, propagation, trace } from "@opentelemetry/api"; import { parseTraceParent } from "@opentelemetry/core"; +import type { TraceContextManager } from "./types.js"; export class StandardTraceContextManager implements TraceContextManager { public traceContext: Record = {}; diff --git a/packages/core/src/v3/traceContext/types.ts b/packages/core/src/v3/traceContext/types.ts index dc30cf6f479..065cf73a2af 100644 --- a/packages/core/src/v3/traceContext/types.ts +++ b/packages/core/src/v3/traceContext/types.ts @@ -1,4 +1,4 @@ -import { Context } from "@opentelemetry/api"; +import type { Context } from "@opentelemetry/api"; export interface TraceContextManager { getTraceContext(): Record; diff --git a/packages/core/src/v3/tracer.ts b/packages/core/src/v3/tracer.ts index c14e1e07bff..af091b4b663 100644 --- a/packages/core/src/v3/tracer.ts +++ b/packages/core/src/v3/tracer.ts @@ -1,16 +1,14 @@ import { - Attributes, - Context, - SpanOptions, - SpanStatusCode, - TimeInput, - context, - propagation, - trace, + type Attributes, + type Context, type Span, + type SpanOptions, + type TimeInput, type Tracer, + context, + trace, } from "@opentelemetry/api"; -import { Logger, logs } from "@opentelemetry/api-logs"; +import { type Logger, logs } from "@opentelemetry/api-logs"; import { clock } from "./clock-api.js"; import { isCompleteTaskWithOutput } from "./errors.js"; import { recordSpanException } from "./otel/utils.js"; @@ -175,7 +173,7 @@ export class TriggerTracer { startSpan(name: string, options?: SpanOptions, ctx?: Context) { const parentContext = ctx ?? context.active(); - const attributes = options?.attributes ?? {}; + const _attributes = options?.attributes ?? {}; const span = this.tracer.startSpan(name, options, parentContext); diff --git a/packages/core/src/v3/types/index.ts b/packages/core/src/v3/types/index.ts index ea2bc8d5580..05f9473a82f 100644 --- a/packages/core/src/v3/types/index.ts +++ b/packages/core/src/v3/types/index.ts @@ -1,13 +1,13 @@ -import { RetrieveRunResponse } from "../schemas/api.js"; -import { AnyRunTypes, InferRunTypes } from "./tasks.js"; -import { Prettify } from "./utils.js"; +import type { RetrieveRunResponse } from "../schemas/api.js"; +import type { InferRunTypes } from "./tasks.js"; +import type { Prettify } from "./utils.js"; -export * from "./utils.js"; -export * from "./tasks.js"; export * from "./idempotencyKeys.js"; -export * from "./tools.js"; -export * from "./queues.js"; export * from "./jsonSchema.js"; +export * from "./queues.js"; +export * from "./tasks.js"; +export * from "./tools.js"; +export * from "./utils.js"; type ResolveEnvironmentVariablesOptions = { variables: Record | Array<{ name: string; value: string }>; diff --git a/packages/core/src/v3/types/tasks.ts b/packages/core/src/v3/types/tasks.ts index f0c86de627d..0e1ab20daf6 100644 --- a/packages/core/src/v3/types/tasks.ts +++ b/packages/core/src/v3/types/tasks.ts @@ -1,6 +1,6 @@ -import { SerializableJson } from "../../schemas/json.js"; -import { TriggerApiRequestOptions } from "../apiClient/index.js"; -import { +import type { SerializableJson } from "../../schemas/json.js"; +import type { TriggerApiRequestOptions } from "../apiClient/index.js"; +import type { AnyOnCatchErrorHookFunction, OnCatchErrorHookFunction, OnCleanupHookFunction, @@ -15,8 +15,8 @@ import { OnCancelHookFunction, OnStartAttemptHookFunction, } from "../lifecycleHooks/types.js"; -import { RunTags } from "../schemas/api.js"; -import { +import type { RunTags } from "../schemas/api.js"; +import type { MachineCpu, MachineMemory, MachinePresetName, @@ -25,12 +25,12 @@ import { TaskMetadata, TaskRunContext, } from "../schemas/index.js"; -import { IdempotencyKey } from "./idempotencyKeys.js"; -import { QueueOptions } from "./queues.js"; -import { AnySchemaParseFn, inferSchemaIn, inferSchemaOut, Schema } from "./schemas.js"; -import { inferToolParameters, ToolTaskParameters } from "./tools.js"; -import { Prettify } from "./utils.js"; -import { JSONSchema } from "./jsonSchema.js"; +import type { IdempotencyKey } from "./idempotencyKeys.js"; +import type { QueueOptions } from "./queues.js"; +import type { AnySchemaParseFn, inferSchemaIn, inferSchemaOut, Schema } from "./schemas.js"; +import type { inferToolParameters, ToolTaskParameters } from "./tools.js"; +import type { Prettify } from "./utils.js"; +import type { JSONSchema } from "./jsonSchema.js"; export type Queue = QueueOptions; export type TaskSchema = Schema; @@ -465,7 +465,7 @@ export type AnyBatchedRunHandle = BatchedRunHandle; /** * A BatchRunHandle can be used to retrieve the runs of a batch trigger in a typesafe manner. */ -export type BatchRunHandle = BrandedRun< +export type BatchRunHandle<_TTaskIdentifier extends string, TPayload, TOutput> = BrandedRun< { batchId: string; runCount: number; diff --git a/packages/core/src/v3/types/tools.ts b/packages/core/src/v3/types/tools.ts index b77ef8ffd4f..9df741dc0ad 100644 --- a/packages/core/src/v3/types/tools.ts +++ b/packages/core/src/v3/types/tools.ts @@ -1,6 +1,6 @@ import { z } from "zod"; import type { Schema as AISchema } from "ai"; -import { Schema } from "./schemas.js"; +import type { Schema } from "./schemas.js"; export type ToolTaskParameters = z.ZodTypeAny | AISchema; diff --git a/packages/core/src/v3/usage/devUsageManager.ts b/packages/core/src/v3/usage/devUsageManager.ts index 510213b2602..aad1eb84adb 100644 --- a/packages/core/src/v3/usage/devUsageManager.ts +++ b/packages/core/src/v3/usage/devUsageManager.ts @@ -1,6 +1,7 @@ -import { InitialUsageState, UsageManager, UsageMeasurement, UsageSample } from "./types.js"; +import type { InitialUsageState, UsageManager, UsageMeasurement, UsageSample } from "./types.js"; import { clock } from "../clock-api.js"; -import { ClockTime, calculateDurationInMs } from "../clock/clock.js"; +import type { ClockTime } from "../clock/clock.js"; +import { calculateDurationInMs } from "../clock/clock.js"; class DevUsageMeasurement implements UsageMeasurement { private _pauses: Map = new Map(); diff --git a/packages/core/src/v3/usage/noopUsageManager.ts b/packages/core/src/v3/usage/noopUsageManager.ts index d044f1738d8..de7582a3e09 100644 --- a/packages/core/src/v3/usage/noopUsageManager.ts +++ b/packages/core/src/v3/usage/noopUsageManager.ts @@ -1,4 +1,4 @@ -import { InitialUsageState, UsageManager, UsageMeasurement, UsageSample } from "./types.js"; +import type { InitialUsageState, UsageManager, UsageMeasurement, UsageSample } from "./types.js"; export class NoopUsageManager implements UsageManager { disable(): void { diff --git a/packages/core/src/v3/usage/prodUsageManager.ts b/packages/core/src/v3/usage/prodUsageManager.ts index 7cfd038d019..3b35c578c2b 100644 --- a/packages/core/src/v3/usage/prodUsageManager.ts +++ b/packages/core/src/v3/usage/prodUsageManager.ts @@ -1,5 +1,5 @@ import { setInterval } from "node:timers/promises"; -import { InitialUsageState, UsageManager, UsageMeasurement, UsageSample } from "./types.js"; +import type { InitialUsageState, UsageManager, UsageMeasurement, UsageSample } from "./types.js"; import { UsageClient } from "./usageClient.js"; export type ProdUsageManagerOptions = { diff --git a/packages/core/src/v3/utils/durations.ts b/packages/core/src/v3/utils/durations.ts index f588fcb8f05..d1290d93044 100644 --- a/packages/core/src/v3/utils/durations.ts +++ b/packages/core/src/v3/utils/durations.ts @@ -1,4 +1,5 @@ -import humanizeDuration, { Unit } from "humanize-duration"; +import type { Unit } from "humanize-duration"; +import humanizeDuration from "humanize-duration"; function dateDifference(date1: Date, date2: Date) { return Math.abs(date1.getTime() - date2.getTime()); diff --git a/packages/core/src/v3/utils/flattenAttributes.ts b/packages/core/src/v3/utils/flattenAttributes.ts index 1a4486a4e5d..082e4712c05 100644 --- a/packages/core/src/v3/utils/flattenAttributes.ts +++ b/packages/core/src/v3/utils/flattenAttributes.ts @@ -1,4 +1,4 @@ -import { Attributes } from "@opentelemetry/api"; +import type { Attributes } from "@opentelemetry/api"; export const NULL_SENTINEL = "$@null(("; export const CIRCULAR_REFERENCE_SENTINEL = "$@circular(("; @@ -244,11 +244,6 @@ class AttributeFlattener { } } } - -function isRecord(value: unknown): value is Record { - return value !== null && typeof value === "object" && !Array.isArray(value); -} - export function unflattenAttributes( obj: Attributes, filteredKeys?: string[], diff --git a/packages/core/src/v3/utils/globals.ts b/packages/core/src/v3/utils/globals.ts index fa5b8176f6e..bbc64f42895 100644 --- a/packages/core/src/v3/utils/globals.ts +++ b/packages/core/src/v3/utils/globals.ts @@ -1,21 +1,21 @@ -import { ApiClientConfiguration } from "../apiClientManager/types.js"; -import { Clock } from "../clock/clock.js"; -import { HeartbeatsManager } from "../heartbeats/types.js"; +import type { ApiClientConfiguration } from "../apiClientManager/types.js"; +import type { Clock } from "../clock/clock.js"; +import type { HeartbeatsManager } from "../heartbeats/types.js"; import type { IdempotencyKeyCatalog } from "../idempotency-key-catalog/catalog.js"; -import { InputStreamManager } from "../inputStreams/types.js"; -import { SessionStreamManager } from "../sessionStreams/types.js"; -import { LifecycleHooksManager } from "../lifecycleHooks/types.js"; -import { LocalsManager } from "../locals/types.js"; -import { RealtimeStreamsManager } from "../realtimeStreams/types.js"; -import { ResourceCatalog } from "../resource-catalog/catalog.js"; -import { RunMetadataManager } from "../runMetadata/types.js"; +import type { InputStreamManager } from "../inputStreams/types.js"; +import type { SessionStreamManager } from "../sessionStreams/types.js"; +import type { LifecycleHooksManager } from "../lifecycleHooks/types.js"; +import type { LocalsManager } from "../locals/types.js"; +import type { RealtimeStreamsManager } from "../realtimeStreams/types.js"; +import type { ResourceCatalog } from "../resource-catalog/catalog.js"; +import type { RunMetadataManager } from "../runMetadata/types.js"; import type { RuntimeManager } from "../runtime/manager.js"; -import { RunTimelineMetricsManager } from "../runTimelineMetrics/types.js"; -import { TaskContext } from "../taskContext/types.js"; -import { TimeoutManager } from "../timeout/types.js"; -import { TraceContextManager } from "../traceContext/types.js"; -import { UsageManager } from "../usage/types.js"; -import { WaitUntilManager } from "../waitUntil/types.js"; +import type { RunTimelineMetricsManager } from "../runTimelineMetrics/types.js"; +import type { TaskContext } from "../taskContext/types.js"; +import type { TimeoutManager } from "../timeout/types.js"; +import type { TraceContextManager } from "../traceContext/types.js"; +import type { UsageManager } from "../usage/types.js"; +import type { WaitUntilManager } from "../waitUntil/types.js"; import { _globalThis } from "./platform.js"; const GLOBAL_TRIGGER_DOT_DEV_KEY = Symbol.for(`dev.trigger.ts.api`); @@ -31,7 +31,7 @@ export function registerGlobal( if (!allowOverride && api[type]) { // already registered an API of this type - const err = new Error(`trigger.dev: Attempted duplicate registration of API: ${type}`); + const _err = new Error(`trigger.dev: Attempted duplicate registration of API: ${type}`); return false; } diff --git a/packages/core/src/v3/utils/ioSerialization.ts b/packages/core/src/v3/utils/ioSerialization.ts index 1386ed04b43..5502afb0981 100644 --- a/packages/core/src/v3/utils/ioSerialization.ts +++ b/packages/core/src/v3/utils/ioSerialization.ts @@ -1,7 +1,7 @@ import { JSONHeroPath } from "@jsonhero/path"; -import { Attributes, Span } from "@opentelemetry/api"; +import type { Attributes, Span } from "@opentelemetry/api"; import { z } from "zod"; -import { ApiClient } from "../apiClient/index.js"; +import type { ApiClient } from "../apiClient/index.js"; import { apiClientManager } from "../apiClientManager-api.js"; import { OFFLOAD_IO_PACKET_LENGTH_LIMIT, @@ -10,7 +10,7 @@ import { } from "../limits.js"; import type { RetryOptions } from "../schemas/index.js"; import { SemanticInternalAttributes } from "../semanticInternalAttributes.js"; -import { TriggerTracer } from "../tracer.js"; +import type { TriggerTracer } from "../tracer.js"; import { zodfetch } from "../zodfetch.js"; import { flattenAttributes } from "./flattenAttributes.js"; import superjson from "../imports/superjson.js"; @@ -265,7 +265,7 @@ export async function resolvePresignedPacketUrl( }; return await parsePacket(packet); - } catch (error) { + } catch (_error) { return; } } @@ -333,7 +333,7 @@ export async function createPacketAttributes( }; return result; - } catch (e) { + } catch (_e) { return; } diff --git a/packages/core/src/v3/utils/retries.ts b/packages/core/src/v3/utils/retries.ts index ac750fb605a..71efb169f3c 100644 --- a/packages/core/src/v3/utils/retries.ts +++ b/packages/core/src/v3/utils/retries.ts @@ -1,5 +1,5 @@ import { calculateResetAt as calculateResetAtInternal } from "../../retry.js"; -import { FetchRetryOptions, type RetryOptions } from "../schemas/index.js"; +import { type FetchRetryOptions, type RetryOptions } from "../schemas/index.js"; export const defaultRetryOptions = { maxAttempts: 3, diff --git a/packages/core/src/v3/utils/styleAttributes.ts b/packages/core/src/v3/utils/styleAttributes.ts index 681cad6d6d2..63bcdbfd7eb 100644 --- a/packages/core/src/v3/utils/styleAttributes.ts +++ b/packages/core/src/v3/utils/styleAttributes.ts @@ -1,5 +1,5 @@ -import { Attributes } from "@opentelemetry/api"; -import { Accessory } from "../schemas/index.js"; +import type { Attributes } from "@opentelemetry/api"; +import type { Accessory } from "../schemas/index.js"; import { flattenAttributes } from "./flattenAttributes.js"; import { SemanticInternalAttributes } from "../semanticInternalAttributes.js"; diff --git a/packages/core/src/v3/waitUntil/index.ts b/packages/core/src/v3/waitUntil/index.ts index b1632af0ee2..34b47fb0924 100644 --- a/packages/core/src/v3/waitUntil/index.ts +++ b/packages/core/src/v3/waitUntil/index.ts @@ -1,5 +1,5 @@ import { getGlobal, registerGlobal } from "../utils/globals.js"; -import { MaybeDeferredPromise, WaitUntilManager } from "./types.js"; +import type { MaybeDeferredPromise, WaitUntilManager } from "./types.js"; const API_NAME = "wait-until"; diff --git a/packages/core/src/v3/waitUntil/manager.ts b/packages/core/src/v3/waitUntil/manager.ts index 24789270e42..a14c16c18ba 100644 --- a/packages/core/src/v3/waitUntil/manager.ts +++ b/packages/core/src/v3/waitUntil/manager.ts @@ -1,4 +1,4 @@ -import { MaybeDeferredPromise, WaitUntilManager } from "./types.js"; +import type { MaybeDeferredPromise, WaitUntilManager } from "./types.js"; export class StandardWaitUntilManager implements WaitUntilManager { private maybeDeferredPromises: Set = new Set(); diff --git a/packages/core/src/v3/workers/taskExecutor.ts b/packages/core/src/v3/workers/taskExecutor.ts index 40a5932e963..95fb9dc4da4 100644 --- a/packages/core/src/v3/workers/taskExecutor.ts +++ b/packages/core/src/v3/workers/taskExecutor.ts @@ -1,7 +1,8 @@ -import { Context, context, SpanKind } from "@opentelemetry/api"; +import type { Context } from "@opentelemetry/api"; +import { context, SpanKind } from "@opentelemetry/api"; import { promiseWithResolvers } from "../../utils.js"; -import { ApiError, RateLimitError } from "../apiClient/errors.js"; -import { ConsoleInterceptor } from "../consoleInterceptor.js"; +import type { ApiError, RateLimitError } from "../apiClient/errors.js"; +import type { ConsoleInterceptor } from "../consoleInterceptor.js"; import { isCompleteTaskWithOutput, isInternalError, @@ -21,29 +22,28 @@ import { traceContext, waitUntil, } from "../index.js"; -import { +import type { AnyOnMiddlewareHookFunction, RegisteredHookFunction, TaskCompleteResult, TaskInitOutput, TaskWait, } from "../lifecycleHooks/types.js"; -import { recordSpanException, TracingSDK } from "../otel/index.js"; +import type { TracingSDK } from "../otel/index.js"; +import { recordSpanException } from "../otel/index.js"; import { runTimelineMetrics } from "../run-timeline-metrics-api.js"; -import { - COLD_VARIANT, +import type { RetryOptions, TaskRunContext, - TaskRunErrorCodes, TaskRunExecution, TaskRunExecutionResult, TaskRunExecutionRetry, - WARM_VARIANT, } from "../schemas/index.js"; +import { COLD_VARIANT, TaskRunErrorCodes, WARM_VARIANT } from "../schemas/index.js"; import { SemanticInternalAttributes } from "../semanticInternalAttributes.js"; -import { TriggerTracer } from "../tracer.js"; +import type { TriggerTracer } from "../tracer.js"; import { tryCatch } from "../tryCatch.js"; -import { HandleErrorModificationOptions, TaskMetadataWithFunctions } from "../types/index.js"; +import type { HandleErrorModificationOptions, TaskMetadataWithFunctions } from "../types/index.js"; import { conditionallyExportPacket, conditionallyImportPacket, @@ -451,7 +451,7 @@ export class TaskExecutor { return; } - const result = await runTimelineMetrics.measureMetric( + const _result = await runTimelineMetrics.measureMetric( "trigger.dev/execution", "onWait", async () => { @@ -524,7 +524,7 @@ export class TaskExecutor { return; } - const result = await runTimelineMetrics.measureMetric( + const _result = await runTimelineMetrics.measureMetric( "trigger.dev/execution", "onCancel", async () => { @@ -605,7 +605,7 @@ export class TaskExecutor { return; } - const result = await runTimelineMetrics.measureMetric( + const _result = await runTimelineMetrics.measureMetric( "trigger.dev/execution", "onResume", async () => { diff --git a/packages/core/src/v3/workers/warmStartClient.ts b/packages/core/src/v3/workers/warmStartClient.ts index d087d18cb96..e8854ece608 100644 --- a/packages/core/src/v3/workers/warmStartClient.ts +++ b/packages/core/src/v3/workers/warmStartClient.ts @@ -1,7 +1,8 @@ import { DequeuedMessage } from "../schemas/runEngine.js"; import { SimpleStructuredLogger } from "../utils/structuredLogger.js"; import { WarmStartConnectResponse } from "../schemas/warmStart.js"; -import { ApiResult, wrapZodFetch } from "../zodfetch.js"; +import type { ApiResult } from "../zodfetch.js"; +import { wrapZodFetch } from "../zodfetch.js"; import { ExponentialBackoff } from "../apps/backoff.js"; export type WarmStartClientOptions = { diff --git a/packages/core/src/v3/zodIpc.ts b/packages/core/src/v3/zodIpc.ts index 93ce50c1b36..d810d255d7f 100644 --- a/packages/core/src/v3/zodIpc.ts +++ b/packages/core/src/v3/zodIpc.ts @@ -1,5 +1,11 @@ import { randomUUID } from "crypto"; -import { +import { z } from "zod"; +import type { + ExecutorToWorkerMessageCatalog, + WorkerToExecutorMessageCatalog, +} from "./schemas/messages.js"; +import { ZodSchemaParsedError } from "./zodMessageHandler.js"; +import type { GetSocketCallbackSchema, GetSocketMessageSchema, GetSocketMessagesWithCallback, @@ -8,13 +14,6 @@ import { SocketMessageHasCallback, ZodSocketMessageCatalogSchema, } from "./zodSocket.js"; -import { z } from "zod"; -import { ZodSchemaParsedError } from "./zodMessageHandler.js"; -import { inspect } from "node:util"; -import { - ExecutorToWorkerMessageCatalog, - WorkerToExecutorMessageCatalog, -} from "./schemas/messages.js"; interface ZodIpcMessageSender { send>( diff --git a/packages/core/src/v3/zodMessageHandler.ts b/packages/core/src/v3/zodMessageHandler.ts index 7e1f71fd55c..2836822faf5 100644 --- a/packages/core/src/v3/zodMessageHandler.ts +++ b/packages/core/src/v3/zodMessageHandler.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { StructuredLogger } from "./utils/structuredLogger.js"; +import type { StructuredLogger } from "./utils/structuredLogger.js"; export class ZodSchemaParsedError extends Error { constructor( diff --git a/packages/core/src/v3/zodNamespace.ts b/packages/core/src/v3/zodNamespace.ts index 38316d66184..91833307566 100644 --- a/packages/core/src/v3/zodNamespace.ts +++ b/packages/core/src/v3/zodNamespace.ts @@ -1,15 +1,16 @@ import type { DisconnectReason, Namespace, Server, Socket } from "socket.io"; import { ZodMessageSender } from "./zodMessageHandler.js"; -import { +import type { ZodMessageCatalogToSocketIoEvents, ZodSocketMessageCatalogSchema, - ZodSocketMessageHandler, ZodSocketMessageHandlers, } from "./zodSocket.js"; +import { ZodSocketMessageHandler } from "./zodSocket.js"; // @ts-ignore import type { DefaultEventsMap, EventsMap } from "socket.io/dist/typed-events"; -import { z } from "zod"; -import { SimpleStructuredLogger, StructuredLogger } from "./utils/structuredLogger.js"; +import type { z } from "zod"; +import type { StructuredLogger } from "./utils/structuredLogger.js"; +import { SimpleStructuredLogger } from "./utils/structuredLogger.js"; interface ExtendedError extends Error { data?: any; diff --git a/packages/core/src/v3/zodSocket.ts b/packages/core/src/v3/zodSocket.ts index 5ec1f179a4f..32488dd3551 100644 --- a/packages/core/src/v3/zodSocket.ts +++ b/packages/core/src/v3/zodSocket.ts @@ -1,9 +1,10 @@ import type { ManagerOptions, Socket, SocketOptions } from "socket.io-client"; import { io } from "socket.io-client"; -import { ZodError, z } from "zod"; -import { EventEmitterLike, ZodMessageValueSchema } from "./zodMessageHandler.js"; -import { LogLevel, SimpleStructuredLogger, StructuredLogger } from "./utils/structuredLogger.js"; +import { z } from "zod"; import { fromZodError } from "zod-validation-error"; +import type { StructuredLogger } from "./utils/structuredLogger.js"; +import { LogLevel, SimpleStructuredLogger } from "./utils/structuredLogger.js"; +import type { EventEmitterLike, ZodMessageValueSchema } from "./zodMessageHandler.js"; export interface ZodSocketMessageCatalogSchema { [key: string]: diff --git a/packages/core/test/duration.test.ts b/packages/core/test/duration.test.ts index bb128396241..0b51615f18e 100644 --- a/packages/core/test/duration.test.ts +++ b/packages/core/test/duration.test.ts @@ -150,8 +150,8 @@ describe("safeParseNaturalLanguageDuration", () => { it("handles exceptions gracefully", () => { // Mock parseNaturalLanguageDuration to throw an error - const originalParse = parseNaturalLanguageDuration; - const mockParse = vi.fn().mockImplementation(() => { + const _originalParse = parseNaturalLanguageDuration; + const _mockParse = vi.fn().mockImplementation(() => { throw new Error("Test error"); }); diff --git a/packages/core/test/runStream.test.ts b/packages/core/test/runStream.test.ts index a953b7b694b..81023f29541 100644 --- a/packages/core/test/runStream.test.ts +++ b/packages/core/test/runStream.test.ts @@ -1,11 +1,10 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { - RunSubscription, +import type { SSEStreamPart, - SSEStreamSubscription, StreamSubscription, StreamSubscriptionFactory, } from "../src/v3/apiClient/runStream.js"; +import { RunSubscription, SSEStreamSubscription } from "../src/v3/apiClient/runStream.js"; import type { SubscribeRunRawShape } from "../src/v3/schemas/api.js"; // Test implementations diff --git a/packages/core/test/streamsWriterV1.test.ts b/packages/core/test/streamsWriterV1.test.ts index bb3b67e094e..ab91d1be4a1 100644 --- a/packages/core/test/streamsWriterV1.test.ts +++ b/packages/core/test/streamsWriterV1.test.ts @@ -1,6 +1,7 @@ import { describe, it, expect, beforeEach, afterEach } from "vitest"; -import { createServer, Server, IncomingMessage, ServerResponse } from "node:http"; -import { AddressInfo } from "node:net"; +import type { Server, IncomingMessage, ServerResponse } from "node:http"; +import { createServer } from "node:http"; +import type { AddressInfo } from "node:net"; import { StreamsWriterV1 } from "../src/v3/realtimeStreams/streamsWriterV1.js"; import { ensureReadableStream } from "../src/v3/streams/asyncIterableStream.js"; diff --git a/packages/core/test/taskExecutor.test.ts b/packages/core/test/taskExecutor.test.ts index 88204b4df7b..9bbda935f6d 100644 --- a/packages/core/test/taskExecutor.test.ts +++ b/packages/core/test/taskExecutor.test.ts @@ -1,15 +1,14 @@ import { describe, expect, test } from "vitest"; import { ApiError } from "../src/v3/apiClient/errors.js"; import { ConsoleInterceptor } from "../src/v3/consoleInterceptor.js"; -import { - lifecycleHooks, +import type { RetryOptions, RunFnParams, ServerBackgroundWorker, TaskMetadataWithFunctions, - TaskRunErrorCodes, TaskRunExecution, } from "../src/v3/index.js"; +import { lifecycleHooks, TaskRunErrorCodes } from "../src/v3/index.js"; import { StandardLifecycleHooksManager } from "../src/v3/lifecycleHooks/manager.js"; import { TracingSDK } from "../src/v3/otel/tracingSDK.js"; import { TriggerTracer } from "../src/v3/tracer.js"; @@ -1975,7 +1974,7 @@ function executeTask( }, }; - const worker: ServerBackgroundWorker = { + const _worker: ServerBackgroundWorker = { id: "test-background-worker-id", version: "1.0.0", contentHash: "test-content-hash", diff --git a/packages/python/src/extension.ts b/packages/python/src/extension.ts index 53b5c2c8cf3..d2b29a0ad8e 100644 --- a/packages/python/src/extension.ts +++ b/packages/python/src/extension.ts @@ -1,8 +1,8 @@ import fs from "node:fs"; import assert from "node:assert"; import { addAdditionalFilesToBuild } from "@trigger.dev/build/internal"; -import { BuildManifest } from "@trigger.dev/core/v3"; -import { BuildContext, BuildExtension } from "@trigger.dev/core/v3/build"; +import type { BuildManifest } from "@trigger.dev/core/v3"; +import type { BuildContext, BuildExtension } from "@trigger.dev/core/v3/build"; export type PythonOptions = { requirements?: string[]; diff --git a/packages/python/src/index.ts b/packages/python/src/index.ts index 6924802fd88..0c35fab75f4 100644 --- a/packages/python/src/index.ts +++ b/packages/python/src/index.ts @@ -1,5 +1,5 @@ +import type { AsyncIterableStream } from "@trigger.dev/core/v3"; import { - AsyncIterableStream, createAsyncIterableStreamFromAsyncIterable, SemanticInternalAttributes, taskContext, @@ -8,7 +8,8 @@ import { logger } from "@trigger.dev/sdk/v3"; import { carrierFromContext } from "@trigger.dev/core/v3/otel"; import assert from "node:assert"; import fs from "node:fs"; -import { Result, x, Options as XOptions } from "tinyexec"; +import type { Result, Options as XOptions } from "tinyexec"; +import { x } from "tinyexec"; import { createTempFileSync, withTempFile } from "./utils/tempFiles.js"; export type PythonExecOptions = Partial & { diff --git a/packages/react-hooks/src/hooks/useApiClient.ts b/packages/react-hooks/src/hooks/useApiClient.ts index 21f0aa53ded..02206f4a2f8 100644 --- a/packages/react-hooks/src/hooks/useApiClient.ts +++ b/packages/react-hooks/src/hooks/useApiClient.ts @@ -1,6 +1,7 @@ "use client"; -import { ApiClient, ApiRequestOptions } from "@trigger.dev/core/v3"; +import type { ApiRequestOptions } from "@trigger.dev/core/v3"; +import { ApiClient } from "@trigger.dev/core/v3"; import { useTriggerAuthContextOptional } from "../contexts.js"; /** diff --git a/packages/react-hooks/src/hooks/useInputStreamSend.ts b/packages/react-hooks/src/hooks/useInputStreamSend.ts index d3f816f30e8..6b3d898329a 100644 --- a/packages/react-hooks/src/hooks/useInputStreamSend.ts +++ b/packages/react-hooks/src/hooks/useInputStreamSend.ts @@ -1,7 +1,8 @@ "use client"; import useSWRMutation from "swr/mutation"; -import { useApiClient, UseApiClientOptions } from "./useApiClient.js"; +import type { UseApiClientOptions } from "./useApiClient.js"; +import { useApiClient } from "./useApiClient.js"; export interface InputStreamSendInstance { /** Send data to the input stream */ diff --git a/packages/react-hooks/src/hooks/useRealtime.ts b/packages/react-hooks/src/hooks/useRealtime.ts index 6aabac358a0..04b5328f37d 100644 --- a/packages/react-hooks/src/hooks/useRealtime.ts +++ b/packages/react-hooks/src/hooks/useRealtime.ts @@ -1,6 +1,6 @@ "use client"; -import { +import type { AnyTask, ApiClient, InferRunTypes, @@ -10,8 +10,10 @@ import { RealtimeRunSkipColumns, } from "@trigger.dev/core/v3"; import { useCallback, useEffect, useId, useRef, useState } from "react"; -import { KeyedMutator, useSWR } from "../utils/trigger-swr.js"; -import { useApiClient, UseApiClientOptions } from "./useApiClient.js"; +import type { KeyedMutator } from "../utils/trigger-swr.js"; +import { useSWR } from "../utils/trigger-swr.js"; +import type { UseApiClientOptions } from "./useApiClient.js"; +import { useApiClient } from "./useApiClient.js"; import { createThrottledQueue } from "../utils/throttle.js"; export type UseRealtimeRunOptions = UseApiClientOptions & { @@ -803,7 +805,7 @@ function useRealtimeStreamImplementation( }, [parts]); // Add state to track when the subscription is complete - const { data: isComplete = false, mutate: setIsComplete } = useSWR( + const { data: _isComplete = false, mutate: setIsComplete } = useSWR( [idKey, runId, streamKey, "complete"], null ); diff --git a/packages/react-hooks/src/hooks/useRun.ts b/packages/react-hooks/src/hooks/useRun.ts index 9c248c7167a..6008b15216f 100644 --- a/packages/react-hooks/src/hooks/useRun.ts +++ b/packages/react-hooks/src/hooks/useRun.ts @@ -1,7 +1,8 @@ "use client"; -import { AnyTask, RetrieveRunResult } from "@trigger.dev/core/v3"; -import { CommonTriggerHookOptions, useSWR } from "../utils/trigger-swr.js"; +import type { AnyTask, RetrieveRunResult } from "@trigger.dev/core/v3"; +import type { CommonTriggerHookOptions } from "../utils/trigger-swr.js"; +import { useSWR } from "../utils/trigger-swr.js"; import { useApiClient } from "./useApiClient.js"; /** diff --git a/packages/react-hooks/src/hooks/useTaskTrigger.ts b/packages/react-hooks/src/hooks/useTaskTrigger.ts index 6872950f5d7..a26fc84c9c4 100644 --- a/packages/react-hooks/src/hooks/useTaskTrigger.ts +++ b/packages/react-hooks/src/hooks/useTaskTrigger.ts @@ -1,23 +1,23 @@ "use client"; import { + type InferRunTypes, + type RunHandleFromTypes, type AnyTask, type TaskIdentifier, type TaskPayload, - InferRunTypes, makeIdempotencyKey, - RunHandleFromTypes, stringifyIO, type TriggerOptions, type RealtimeRunSkipColumns, } from "@trigger.dev/core/v3"; import useSWRMutation from "swr/mutation"; -import { useApiClient, UseApiClientOptions } from "./useApiClient.js"; +import { type UseApiClientOptions, useApiClient } from "./useApiClient.js"; import { + type UseRealtimeRunInstance, + type UseRealtimeRunWithStreamsInstance, useRealtimeRun, - UseRealtimeRunInstance, useRealtimeRunWithStreams, - UseRealtimeRunWithStreamsInstance, } from "./useRealtime.js"; /** diff --git a/packages/react-hooks/src/hooks/useWaitToken.ts b/packages/react-hooks/src/hooks/useWaitToken.ts index b79c2f7b649..33c1c0f2c3d 100644 --- a/packages/react-hooks/src/hooks/useWaitToken.ts +++ b/packages/react-hooks/src/hooks/useWaitToken.ts @@ -1,7 +1,8 @@ "use client"; import useSWRMutation from "swr/mutation"; -import { useApiClient, UseApiClientOptions } from "./useApiClient.js"; +import type { UseApiClientOptions } from "./useApiClient.js"; +import { useApiClient } from "./useApiClient.js"; /** * Base interface for task trigger instances. diff --git a/packages/react-hooks/src/utils/trigger-swr.ts b/packages/react-hooks/src/utils/trigger-swr.ts index a5455e8a29f..77fa8b83573 100644 --- a/packages/react-hooks/src/utils/trigger-swr.ts +++ b/packages/react-hooks/src/utils/trigger-swr.ts @@ -1,6 +1,6 @@ "use client"; -import { ApiRequestOptions } from "@trigger.dev/core/v3"; +import type { ApiRequestOptions } from "@trigger.dev/core/v3"; // eslint-disable-next-line import/export export * from "swr"; diff --git a/packages/redis-worker/src/fair-queue/index.ts b/packages/redis-worker/src/fair-queue/index.ts index 4c0b506b318..e24de876d85 100644 --- a/packages/redis-worker/src/fair-queue/index.ts +++ b/packages/redis-worker/src/fair-queue/index.ts @@ -1,22 +1,21 @@ -import { createRedisClient, type Redis, type RedisOptions } from "@internal/redis"; +import { createRedisClient, type Redis } from "@internal/redis"; import { SpanKind, type Span } from "@internal/tracing"; import { Logger } from "@trigger.dev/core/logger"; import { nanoid } from "nanoid"; import { setInterval } from "node:timers/promises"; import { type z } from "zod"; +import { isAbortError } from "../utils.js"; import { ConcurrencyManager } from "./concurrency.js"; import { MasterQueue } from "./masterQueue.js"; -import { TenantDispatch } from "./tenantDispatch.js"; -import { type RetryStrategy, ExponentialBackoffRetry } from "./retry.js"; -import { isAbortError } from "../utils.js"; +import { type RetryStrategy } from "./retry.js"; import { - FairQueueTelemetry, + BatchedSpanManager, FairQueueAttributes, + FairQueueTelemetry, MessagingAttributes, - BatchedSpanManager, } from "./telemetry.js"; +import { TenantDispatch } from "./tenantDispatch.js"; import type { - ConcurrencyGroupConfig, DeadLetterMessage, DispatchSchedulerContext, EnqueueBatchOptions, @@ -34,17 +33,17 @@ import { VisibilityManager } from "./visibility.js"; import { WorkerQueueManager } from "./workerQueue.js"; // Re-export all types and components -export * from "./types.js"; +export * from "./concurrency.js"; export * from "./keyProducer.js"; export * from "./masterQueue.js"; -export * from "./concurrency.js"; -export * from "./visibility.js"; -export * from "./workerQueue.js"; +export * from "./retry.js"; export * from "./scheduler.js"; export * from "./schedulers/index.js"; -export * from "./retry.js"; export * from "./telemetry.js"; export * from "./tenantDispatch.js"; +export * from "./types.js"; +export * from "./visibility.js"; +export * from "./workerQueue.js"; /** * FairQueue is the main orchestrator for fair queue message routing. @@ -1467,7 +1466,7 @@ export class FairQueue { const dlqKey = this.keys.deadLetterQueueKey(storedMessage.tenantId); const dlqDataKey = this.keys.deadLetterQueueDataKey(storedMessage.tenantId); - const shardId = this.masterQueue.getShardForQueue(storedMessage.queueId); + const _shardId = this.masterQueue.getShardForQueue(storedMessage.queueId); const dlqMessage: DeadLetterMessage> = { id: storedMessage.id, diff --git a/packages/redis-worker/src/fair-queue/scheduler.ts b/packages/redis-worker/src/fair-queue/scheduler.ts index 318424b7cd0..301345f7729 100644 --- a/packages/redis-worker/src/fair-queue/scheduler.ts +++ b/packages/redis-worker/src/fair-queue/scheduler.ts @@ -1,4 +1,4 @@ -import type { FairScheduler, SchedulerContext, TenantQueues, QueueDescriptor } from "./types.js"; +import type { FairScheduler, SchedulerContext, TenantQueues } from "./types.js"; /** * Re-export scheduler types for convenience. diff --git a/packages/redis-worker/src/fair-queue/schedulers/drr.ts b/packages/redis-worker/src/fair-queue/schedulers/drr.ts index 43d0c01dbb9..6fca9f06409 100644 --- a/packages/redis-worker/src/fair-queue/schedulers/drr.ts +++ b/packages/redis-worker/src/fair-queue/schedulers/drr.ts @@ -1,4 +1,4 @@ -import { createRedisClient, type Redis, type RedisOptions } from "@internal/redis"; +import { createRedisClient, type Redis } from "@internal/redis"; import { BaseScheduler } from "../scheduler.js"; import type { DRRSchedulerConfig, diff --git a/packages/redis-worker/src/fair-queue/schedulers/weighted.ts b/packages/redis-worker/src/fair-queue/schedulers/weighted.ts index 7b44a7df177..f7b602fa64f 100644 --- a/packages/redis-worker/src/fair-queue/schedulers/weighted.ts +++ b/packages/redis-worker/src/fair-queue/schedulers/weighted.ts @@ -1,4 +1,4 @@ -import { createRedisClient, type Redis, type RedisOptions } from "@internal/redis"; +import { createRedisClient, type Redis } from "@internal/redis"; import seedrandom from "seedrandom"; import { BaseScheduler } from "../scheduler.js"; import type { diff --git a/packages/redis-worker/src/fair-queue/tests/drr.test.ts b/packages/redis-worker/src/fair-queue/tests/drr.test.ts index e0f1dc78758..f2f11f43ab8 100644 --- a/packages/redis-worker/src/fair-queue/tests/drr.test.ts +++ b/packages/redis-worker/src/fair-queue/tests/drr.test.ts @@ -1,6 +1,6 @@ import { describe, expect } from "vitest"; import { redisTest } from "@internal/testcontainers"; -import { createRedisClient, type Redis } from "@internal/redis"; +import { createRedisClient } from "@internal/redis"; import { DRRScheduler } from "../schedulers/drr.js"; import { DefaultFairQueueKeyProducer } from "../keyProducer.js"; import type { FairQueueKeyProducer, SchedulerContext } from "../types.js"; diff --git a/packages/redis-worker/src/fair-queue/tests/fairQueue.test.ts b/packages/redis-worker/src/fair-queue/tests/fairQueue.test.ts index 7a6d7c6a576..5ae1f390f9f 100644 --- a/packages/redis-worker/src/fair-queue/tests/fairQueue.test.ts +++ b/packages/redis-worker/src/fair-queue/tests/fairQueue.test.ts @@ -9,7 +9,7 @@ import { NoRetry, WorkerQueueManager, } from "../index.js"; -import type { FairQueueKeyProducer, FairQueueOptions, StoredMessage } from "../types.js"; +import type { FairQueueKeyProducer, FairQueueOptions } from "../types.js"; import type { RedisOptions } from "@internal/redis"; // Define a common payload schema for tests @@ -198,7 +198,7 @@ class TestFairQueueHelper { }; await this.messageHandler(ctx); - } catch (error) { + } catch (_error) { if (this.abortController.signal.aborted) break; } } diff --git a/packages/redis-worker/src/fair-queue/tests/raceConditions.test.ts b/packages/redis-worker/src/fair-queue/tests/raceConditions.test.ts index 955cc494576..a497e2d738d 100644 --- a/packages/redis-worker/src/fair-queue/tests/raceConditions.test.ts +++ b/packages/redis-worker/src/fair-queue/tests/raceConditions.test.ts @@ -11,12 +11,7 @@ import { WorkerQueueManager, FixedDelayRetry, } from "../index.js"; -import type { - FairQueueKeyProducer, - FairQueueOptions, - QueueDescriptor, - StoredMessage, -} from "../types.js"; +import type { FairQueueKeyProducer, FairQueueOptions, QueueDescriptor } from "../types.js"; import { createRedisClient, type RedisOptions } from "@internal/redis"; const TestPayloadSchema = z.object({ id: z.number(), value: z.string() }); @@ -189,7 +184,7 @@ class TestFairQueueHelper { }; await this.messageHandler(ctx); - } catch (error) { + } catch (_error) { if (this.abortController.signal.aborted) break; } } @@ -390,7 +385,7 @@ describe("Race Condition Tests", () => { // Verify no duplicates expect(duplicateDetected).toBe(false); - for (const [msgId, count] of processedMessages) { + for (const [_msgId, count] of processedMessages) { expect(count).toBe(1); } @@ -868,7 +863,7 @@ describe("Race Condition Tests", () => { await queue.stop(); // Verify retry sequence for each message - for (const [msgId, attempts] of processedAttempts) { + for (const [_msgId, attempts] of processedAttempts) { expect(attempts).toContain(1); expect(attempts).toContain(2); expect(attempts).toContain(3); diff --git a/packages/redis-worker/src/fair-queue/tests/tenantDispatch.test.ts b/packages/redis-worker/src/fair-queue/tests/tenantDispatch.test.ts index 695d5e462a5..5f02ac331f5 100644 --- a/packages/redis-worker/src/fair-queue/tests/tenantDispatch.test.ts +++ b/packages/redis-worker/src/fair-queue/tests/tenantDispatch.test.ts @@ -375,7 +375,7 @@ describe("Two-Level Tenant Dispatch", () => { await waitFor(() => processed.length >= 1, 5000); // Tenant should still be in dispatch (has remaining queue) - const dispatchMembers = await redis.zrange(keys.dispatchKey(0), 0, -1); + const _dispatchMembers = await redis.zrange(keys.dispatchKey(0), 0, -1); // After first complete, tenant may still be in dispatch due to second queue // (exact timing depends on consumer loop) @@ -715,7 +715,7 @@ describe("Two-Level Tenant Dispatch", () => { async ({ redisOptions }) => { const keys = new DefaultFairQueueKeyProducer({ prefix: "test" }); const processed: Array<{ tenantId: string; value: string }> = []; - let blockT1 = true; + let _blockT1 = true; const scheduler = new DRRScheduler({ redis: redisOptions, @@ -970,8 +970,8 @@ describe("Two-Level Tenant Dispatch", () => { expect(processed[0]).toBe("legacy-reclaim"); // After completion, both old and new indexes should be clean - const masterAfter = await redis.zcard(masterQueueKey); - const dispatchAfter = await redis.zcard(keys.dispatchKey(0)); + const _masterAfter = await redis.zcard(masterQueueKey); + const _dispatchAfter = await redis.zcard(keys.dispatchKey(0)); const tenantQueuesAfter = await redis.zcard(keys.tenantQueueIndexKey("t1")); // Old master queue should still be empty (drain removed it) diff --git a/packages/redis-worker/src/fair-queue/tests/visibility.test.ts b/packages/redis-worker/src/fair-queue/tests/visibility.test.ts index 0a0f7c7f443..e20b6671075 100644 --- a/packages/redis-worker/src/fair-queue/tests/visibility.test.ts +++ b/packages/redis-worker/src/fair-queue/tests/visibility.test.ts @@ -659,7 +659,7 @@ describe("VisibilityManager", () => { const queueId = "tenant:t1:queue:reclaim-test"; const queueKey = keys.queueKey(queueId); const queueItemsKey = keys.queueItemsKey(queueId); - const tenantQueueIndexKey = keys.tenantQueueIndexKey("t1"); + const _tenantQueueIndexKey = keys.tenantQueueIndexKey("t1"); const dispatchKey = keys.dispatchKey(0); // Add and claim a message @@ -742,7 +742,7 @@ describe("VisibilityManager", () => { const queueId = "tenant:t1:queue:no-timeout"; const queueKey = keys.queueKey(queueId); const queueItemsKey = keys.queueItemsKey(queueId); - const tenantQueueIndexKey = keys.tenantQueueIndexKey("t1"); + const _tenantQueueIndexKey = keys.tenantQueueIndexKey("t1"); const dispatchKey = keys.dispatchKey(0); // Add and claim a message with long timeout @@ -791,7 +791,7 @@ describe("VisibilityManager", () => { }); const redis = createRedisClient(redisOptions); - const tenantQueueIndexKey = keys.tenantQueueIndexKey("t1"); + const _tenantQueueIndexKey = keys.tenantQueueIndexKey("t1"); const dispatchKey = keys.dispatchKey(0); // Add and claim messages for two different tenants @@ -856,7 +856,7 @@ describe("VisibilityManager", () => { const queueId = "tenant:t1:queue:fallback-test"; const queueKey = keys.queueKey(queueId); const queueItemsKey = keys.queueItemsKey(queueId); - const tenantQueueIndexKey = keys.tenantQueueIndexKey("t1"); + const _tenantQueueIndexKey = keys.tenantQueueIndexKey("t1"); const dispatchKey = keys.dispatchKey(0); const inflightDataKey = keys.inflightDataKey(0); diff --git a/packages/redis-worker/src/fair-queue/visibility.ts b/packages/redis-worker/src/fair-queue/visibility.ts index 40c7ce59190..8ecc3d9927a 100644 --- a/packages/redis-worker/src/fair-queue/visibility.ts +++ b/packages/redis-worker/src/fair-queue/visibility.ts @@ -280,7 +280,7 @@ export class VisibilityManager { * @param tenantId - The tenant ID * @param score - Optional score for the message (defaults to now) */ - async release( + async release<_TPayload = unknown>( messageId: string, queueId: string, queueKey: string, diff --git a/packages/redis-worker/src/mollifier/buffer.ts b/packages/redis-worker/src/mollifier/buffer.ts index c61d681043c..d2281cd4332 100644 --- a/packages/redis-worker/src/mollifier/buffer.ts +++ b/packages/redis-worker/src/mollifier/buffer.ts @@ -6,7 +6,8 @@ import { type Result, } from "@internal/redis"; import { Logger } from "@trigger.dev/core/logger"; -import { BufferEntry, BufferEntrySchema } from "./schemas.js"; +import type { BufferEntry } from "./schemas.js"; +import { BufferEntrySchema } from "./schemas.js"; export type MollifierBufferOptions = { redisOptions: RedisOptions; diff --git a/packages/redis-worker/src/mollifier/drainer.ts b/packages/redis-worker/src/mollifier/drainer.ts index fc264d2421d..7ae3745ea0a 100644 --- a/packages/redis-worker/src/mollifier/drainer.ts +++ b/packages/redis-worker/src/mollifier/drainer.ts @@ -1,6 +1,7 @@ import { Logger } from "@trigger.dev/core/logger"; -import { MollifierBuffer } from "./buffer.js"; -import { BufferEntry, deserialiseSnapshot } from "./schemas.js"; +import type { MollifierBuffer } from "./buffer.js"; +import type { BufferEntry } from "./schemas.js"; +import { deserialiseSnapshot } from "./schemas.js"; export type MollifierDrainerHandler = (input: { runId: string; diff --git a/packages/redis-worker/src/queue.ts b/packages/redis-worker/src/queue.ts index b60c0437dbc..becfb3813ea 100644 --- a/packages/redis-worker/src/queue.ts +++ b/packages/redis-worker/src/queue.ts @@ -7,7 +7,7 @@ import { } from "@internal/redis"; import { Logger } from "@trigger.dev/core/logger"; import { nanoid } from "nanoid"; -import { z } from "zod"; +import type { z } from "zod"; export interface MessageCatalogSchema { [key: string]: z.ZodFirstPartySchemaTypes | z.ZodDiscriminatedUnion; diff --git a/packages/redis-worker/src/worker.test.ts b/packages/redis-worker/src/worker.test.ts index bd6c70b9676..f5659f3795b 100644 --- a/packages/redis-worker/src/worker.test.ts +++ b/packages/redis-worker/src/worker.test.ts @@ -391,7 +391,7 @@ describe("Worker", () => { // Verify queue size after second enqueue const size2 = await worker.queue.size({ includeFuture: true }); - const size2Present = await worker.queue.size({ includeFuture: false }); + const _size2Present = await worker.queue.size({ includeFuture: false }); expect(size2).toBe(1); // Should still be 1 as it's the same ID // Wait for the first job to complete @@ -400,15 +400,15 @@ describe("Worker", () => { } // Check queue size right after first job completes - const size3 = await worker.queue.size({ includeFuture: true }); - const size3Present = await worker.queue.size({ includeFuture: false }); + const _size3 = await worker.queue.size({ includeFuture: true }); + const _size3Present = await worker.queue.size({ includeFuture: false }); // Wait long enough for the second job to become available and potentially run await new Promise((resolve) => setTimeout(resolve, 2000)); // Final queue size - const size4 = await worker.queue.size({ includeFuture: true }); - const size4Present = await worker.queue.size({ includeFuture: false }); + const _size4 = await worker.queue.size({ includeFuture: true }); + const _size4Present = await worker.queue.size({ includeFuture: false }); // First job should have run expect(processedPayloads).toContain("first-attempt"); diff --git a/packages/redis-worker/src/worker.ts b/packages/redis-worker/src/worker.ts index 8e0f6528d06..58988b81896 100644 --- a/packages/redis-worker/src/worker.ts +++ b/packages/redis-worker/src/worker.ts @@ -1,14 +1,14 @@ -import { createRedisClient, Redis, type RedisOptions } from "@internal/redis"; +import { type Redis, createRedisClient, type RedisOptions } from "@internal/redis"; import { - Attributes, - Histogram, - Meter, + type Attributes, + type Histogram, + type Meter, + type ObservableResult, + type Tracer, metrics, - ObservableResult, SpanKind, startSpan, trace, - Tracer, ValueType, } from "@internal/tracing"; import { Logger } from "@trigger.dev/core/logger"; @@ -18,7 +18,7 @@ import { shutdownManager } from "@trigger.dev/core/v3/serverOnly"; import { nanoid } from "nanoid"; import pLimit from "p-limit"; import { z } from "zod"; -import { AnyQueueItem, SimpleQueue } from "./queue.js"; +import { type AnyQueueItem, SimpleQueue } from "./queue.js"; import { parseExpression } from "cron-parser"; export const CronSchema = z.object({ diff --git a/packages/rsc/src/build.ts b/packages/rsc/src/build.ts index 2b87216042f..96ccb9710b9 100644 --- a/packages/rsc/src/build.ts +++ b/packages/rsc/src/build.ts @@ -1,4 +1,4 @@ -import { BuildExtension } from "@trigger.dev/core/v3/build"; +import type { BuildExtension } from "@trigger.dev/core/v3/build"; import { sourceDir } from "./sourceDir.js"; export type RSCExtensionOptions = { diff --git a/packages/schema-to-json/src/index.ts b/packages/schema-to-json/src/index.ts index 8631060db34..a02eef07aa3 100644 --- a/packages/schema-to-json/src/index.ts +++ b/packages/schema-to-json/src/index.ts @@ -51,7 +51,7 @@ export function schemaToJsonSchema( return { jsonSchema, }; - } catch (error) { + } catch (_error) { // If toJsonSchema fails, continue to other checks } } diff --git a/packages/trigger-sdk/src/v3/ai.ts b/packages/trigger-sdk/src/v3/ai.ts index d1286315b1d..e13f7a74f39 100644 --- a/packages/trigger-sdk/src/v3/ai.ts +++ b/packages/trigger-sdk/src/v3/ai.ts @@ -1,43 +1,40 @@ import { + type AnyTask, + type Task, accessoryAttributes, - AnyTask, + type ChatSnapshotV1, + type ApiClientConfiguration, apiClientManager, + type AppendStreamOptions, controlSubtype, + generateJWT, getSchemaParseFn, headerValue, + type inferSchemaIn, + type inferSchemaOut, InputStreamOncePromise, - type InputStreamOnceOptions, - type InputStreamWaitOptions, - type InputStreamWaitWithIdleTimeoutOptions, + type InputStreamOnceResult, isSchemaZodEsque, logger, type MachinePresetName, ManualWaitpointPromise, OutOfMemoryError, - sessionStreams, - type PipeStreamResult, + type PipeStreamOptions, type RealtimeDefinedInputStream, type RealtimeDefinedStream, - type ApiClientConfiguration, - type ReadStreamOptions, + resourceCatalog, + type SessionTriggerConfig, SemanticInternalAttributes, - type SendInputStreamOptions, - Task, + SESSION_IN_EVENT_ID_HEADER, + sessionStreams, taskContext, - type AppendStreamOptions, - type InputStreamOnceResult, - type inferSchemaIn, - type inferSchemaOut, - type PipeStreamOptions, type TaskIdentifier, type TaskOptions, - type TaskSchema, type TaskRunContext, + type TaskSchema, type TaskWithSchema, - SESSION_IN_EVENT_ID_HEADER, TRIGGER_CONTROL_SUBTYPE, - generateJWT, - type WriterStreamOptions, + type StreamWriteResult, } from "@trigger.dev/core/v3"; import type { FinishReason, @@ -49,11 +46,14 @@ import type { UIMessage, UIMessageChunk, UIMessageStreamOptions, + JSONSchema7, + Schema, } from "ai"; -import type { ChatSnapshotV1, StreamWriteResult } from "@trigger.dev/core/v3"; // Runtime VALUES go through the ESM/CJS shim so the CJS build can `require` // ESM-only `ai@7` (see ../imports/ai-runtime.ts). +import { type Attributes, trace } from "@opentelemetry/api"; import { + tool as aiTool, convertToModelMessages, dynamicTool, generateId as generateMessageId, @@ -61,10 +61,22 @@ import { isToolUIPart, jsonSchema, readUIMessageStream, - tool as aiTool, zodSchema, } from "../imports/ai-runtime.js"; -import type { JSONSchema7, Schema } from "ai"; +import { + type ChatInputChunk, + type ChatTaskWirePayload, + type InferChatClientData, + type InferChatUIMessage, + type InferChatUIMessageFromTools, + PENDING_MESSAGE_INJECTED_TYPE, + upsertIncomingMessage, +} from "./ai-shared.js"; +import { auth } from "./auth.js"; +import { locals } from "./locals.js"; +import { metadata } from "./metadata.js"; +import type { ResolvedPrompt } from "./prompt.js"; +import type { ResolvedSkill } from "./skill.js"; // `ToolCallOptions` is defined locally rather than imported from `ai`: v7 // renamed/removed that export (it's `ToolExecutionOptions` now), so a @@ -78,12 +90,6 @@ type ToolCallOptions = { experimental_context?: unknown; context?: unknown; }; -import { type Attributes, trace } from "@opentelemetry/api"; -import { auth } from "./auth.js"; -import { locals } from "./locals.js"; -import { metadata } from "./metadata.js"; -import type { ResolvedPrompt } from "./prompt.js"; -import type { ResolvedSkill } from "./skill.js"; // Bash-skill runtime lives in `./agentSkillsRuntime.ts` (exposed as // the `@trigger.dev/sdk/ai/skills-runtime` subpath). It's a normal // static import — `ai.ts` is server-only by reachability now that @@ -92,19 +98,16 @@ import type { ResolvedSkill } from "./skill.js"; // that wants those primitives imports `./ai-shared.js` directly and // never touches `ai.ts`'s module graph, so the `node:*` builtins // pulled in transitively here never reach a client chunk. -import { runBashInSkill, readFileInSkill } from "./agentSkillsRuntime.js"; -import { streams, markChatAgentRunForStreamsWarning } from "./streams.js"; +import { readFileInSkill, runBashInSkill } from "./agentSkillsRuntime.js"; +import { ensureAiSdkTelemetry } from "./aiAutoTelemetry.js"; import { - sessions, type SessionHandle, - type SessionInputChannel, - type SessionOutputChannel, type SessionPipeStreamOptions, + sessions, type SessionSubscribeOptions, } from "./sessions.js"; import { createTask } from "./shared.js"; -import { ensureAiSdkTelemetry } from "./aiAutoTelemetry.js"; -import { resourceCatalog, type SessionTriggerConfig } from "@trigger.dev/core/v3"; +import { markChatAgentRunForStreamsWarning } from "./streams.js"; import { tracer } from "./tracer.js"; /** Re-export for typing `ctx` in `chat.agent` hooks without importing `@trigger.dev/core`. */ @@ -279,7 +282,7 @@ async function seedSessionInResumeCursorForCustomLoop( * * @internal */ -export type { ChatSnapshotV1 } from "@trigger.dev/core/v3"; +export type { ChatSnapshotV1, ChatInputChunk, ChatTaskWirePayload }; /** * Test-only override hook — `mockChatAgent` installs a fake to return @@ -1431,8 +1434,6 @@ async function withChatWriter(fn: (writer: ChatWriter) => Promise | T): Pr // browser bundles (which import them via `chat-client.ts` / `chat.ts`) // can pull the types without dragging `ai.ts` into the client graph. // Re-exported here so `@trigger.dev/sdk/ai` consumers see them. -import type { ChatTaskWirePayload, ChatInputChunk } from "./ai-shared.js"; -export type { ChatTaskWirePayload, ChatInputChunk } from "./ai-shared.js"; /** * The payload shape passed to the `chatAgent` run function. @@ -2759,8 +2760,8 @@ export type PendingMessagesOptions = { // React hooks (`@trigger.dev/sdk/chat/react`) can import it without // dragging `ai.ts` into the browser graph. Re-exported here so // `@trigger.dev/sdk/ai` consumers still see it. -export { PENDING_MESSAGE_INJECTED_TYPE, upsertIncomingMessage } from "./ai-shared.js"; -import { PENDING_MESSAGE_INJECTED_TYPE } from "./ai-shared.js"; +export { PENDING_MESSAGE_INJECTED_TYPE, upsertIncomingMessage }; +export type { InferChatClientData, InferChatUIMessage, InferChatUIMessageFromTools }; /** @internal */ type SteeringQueueEntry = { uiMessage: UIMessage; modelMessages: ModelMessage[] }; @@ -3395,7 +3396,7 @@ async function drainSteeringQueue( .map((p: any) => p.text) .join("") || "" ); - const previewText = + const _previewText = messageTexts.length === 1 ? messageTexts[0]!.slice(0, 80) : `${queue.length} messages`; return tracer.startActiveSpan( @@ -9461,7 +9462,7 @@ function createChatSession( const incomingForAccumulator: UIMessage[] = currentPayload.message ? [currentPayload.message] : []; - const messages = await accumulator.addIncoming( + const _messages = await accumulator.addIncoming( incomingForAccumulator, currentPayload.trigger, turn @@ -9968,12 +9969,6 @@ function chatLocal>(options: { id: string }): // so the chat React hooks can import them without dragging `ai.ts` into // the browser graph. Re-exported here so `@trigger.dev/sdk/ai` consumers // still see them. -import type { InferChatClientData, InferChatUIMessage } from "./ai-shared.js"; -export type { - InferChatClientData, - InferChatUIMessage, - InferChatUIMessageFromTools, -} from "./ai-shared.js"; /** * Options for {@link createChatStartSessionAction}. diff --git a/packages/trigger-sdk/src/v3/auth.ts b/packages/trigger-sdk/src/v3/auth.ts index d8d3a397878..5e76765956b 100644 --- a/packages/trigger-sdk/src/v3/auth.ts +++ b/packages/trigger-sdk/src/v3/auth.ts @@ -1,9 +1,9 @@ import { + type RealtimeRunSkipColumns, type ApiClientConfiguration, apiClientManager, - RealtimeRunSkipColumns, + generateJWT as internal_generateJWT, } from "@trigger.dev/core/v3"; -import { generateJWT as internal_generateJWT } from "@trigger.dev/core/v3"; import "@trigger.dev/core/v3/sdk-scope-storage"; /** diff --git a/packages/trigger-sdk/src/v3/batch.ts b/packages/trigger-sdk/src/v3/batch.ts index 0c31621ce6d..7130b0c0b01 100644 --- a/packages/trigger-sdk/src/v3/batch.ts +++ b/packages/trigger-sdk/src/v3/batch.ts @@ -1,12 +1,5 @@ -import { - accessoryAttributes, - apiClientManager, - ApiPromise, - ApiRequestOptions, - mergeRequestOptions, - RetrieveBatchResponse, - RetrieveBatchV2Response, -} from "@trigger.dev/core/v3"; +import type { ApiPromise, ApiRequestOptions, RetrieveBatchV2Response } from "@trigger.dev/core/v3"; +import { accessoryAttributes, apiClientManager, mergeRequestOptions } from "@trigger.dev/core/v3"; import { batchTriggerAndWaitTasks, batchTriggerById, diff --git a/packages/trigger-sdk/src/v3/chat-react.ts b/packages/trigger-sdk/src/v3/chat-react.ts index 5995667730d..fb81a46d8b7 100644 --- a/packages/trigger-sdk/src/v3/chat-react.ts +++ b/packages/trigger-sdk/src/v3/chat-react.ts @@ -291,7 +291,15 @@ export type UsePendingMessagesReturn = { export function usePendingMessages( options: UsePendingMessagesOptions ): UsePendingMessagesReturn { - const { transport, chatId, status, messages, setMessages, sendMessage, metadata } = options; + const { + transport, + chatId, + status, + messages, + setMessages: _setMessages, + sendMessage, + metadata, + } = options; // Internal state: track messages with their mode type InternalMessage = TUIMessage & { _mode: "steering" | "queued" }; diff --git a/packages/trigger-sdk/src/v3/chat-server.ts b/packages/trigger-sdk/src/v3/chat-server.ts index f0585933933..5e48e3b24b6 100644 --- a/packages/trigger-sdk/src/v3/chat-server.ts +++ b/packages/trigger-sdk/src/v3/chat-server.ts @@ -55,7 +55,7 @@ */ import { - ApiClient, + type ApiClient, SessionStreamInstance, TRIGGER_CONTROL_SUBTYPE, apiClientManager, diff --git a/packages/trigger-sdk/src/v3/chat.test.ts b/packages/trigger-sdk/src/v3/chat.test.ts index 50bfb5e4095..3419b3975db 100644 --- a/packages/trigger-sdk/src/v3/chat.test.ts +++ b/packages/trigger-sdk/src/v3/chat.test.ts @@ -107,49 +107,9 @@ function chatIdFromUrl(urlStr: string): string | undefined { return m?.[1]; } -const DEFAULT_RUN_ID = "run_default"; -const DEFAULT_SESSION_ID = "session_default"; -const DEFAULT_SESSION_PAT = "pat_session_default"; - -function createSessionResponseBody(options?: { - sessionId?: string; - externalId?: string; - publicAccessToken?: string; - runId?: string; -}): string { - const externalId = options?.externalId ?? null; - return JSON.stringify({ - id: options?.sessionId ?? DEFAULT_SESSION_ID, - externalId, - type: "chat.agent", - taskIdentifier: "my-chat-task", - triggerConfig: { basePayload: { chatId: externalId ?? "" } }, - currentRunId: options?.runId ?? DEFAULT_RUN_ID, - runId: options?.runId ?? DEFAULT_RUN_ID, - publicAccessToken: options?.publicAccessToken ?? DEFAULT_SESSION_PAT, - tags: [], - metadata: null, - closedAt: null, - closedReason: null, - expiresAt: null, - createdAt: new Date(0).toISOString(), - updatedAt: new Date(0).toISOString(), - isCached: false, - }); -} - -function defaultSessionCreateResponse(options?: { - sessionId?: string; - externalId?: string; - publicAccessToken?: string; - runId?: string; -}): Response { - return new Response(createSessionResponseBody(options), { - status: 200, - headers: { "content-type": "application/json" }, - }); -} - +const _DEFAULT_RUN_ID = "run_default"; +const _DEFAULT_SESSION_ID = "session_default"; +const _DEFAULT_SESSION_PAT = "pat_session_default"; function defaultAppendResponse(): Response { return new Response(JSON.stringify({ ok: true }), { status: 200, diff --git a/packages/trigger-sdk/src/v3/deployments.ts b/packages/trigger-sdk/src/v3/deployments.ts index b6a334b203e..c31aebe2339 100644 --- a/packages/trigger-sdk/src/v3/deployments.ts +++ b/packages/trigger-sdk/src/v3/deployments.ts @@ -1,17 +1,13 @@ import type { - ApiRequestOptions, - RetrieveCurrentDeploymentResponseBody, ApiDeploymentListOptions, ApiDeploymentListResponseItem, -} from "@trigger.dev/core/v3"; -import { - apiClientManager, + ApiRequestOptions, CursorPagePromise, - isRequestOptions, - mergeRequestOptions, + RetrieveCurrentDeploymentResponseBody, } from "@trigger.dev/core/v3"; +import { apiClientManager, isRequestOptions } from "@trigger.dev/core/v3"; -export type { RetrieveCurrentDeploymentResponseBody, ApiDeploymentListResponseItem }; +export type { ApiDeploymentListResponseItem, RetrieveCurrentDeploymentResponseBody }; export const deployments = { retrieveCurrent: retrieveCurrentDeployment, diff --git a/packages/trigger-sdk/src/v3/envvars.ts b/packages/trigger-sdk/src/v3/envvars.ts index 9f0c64d180e..153be22a3d3 100644 --- a/packages/trigger-sdk/src/v3/envvars.ts +++ b/packages/trigger-sdk/src/v3/envvars.ts @@ -3,9 +3,7 @@ import type { ApiRequestOptions, CreateEnvironmentVariableParams, EnvironmentVariableResponseBody, - EnvironmentVariableValue, EnvironmentVariableWithSecret, - EnvironmentVariables, ImportEnvironmentVariablesParams, UpdateEnvironmentVariableParams, } from "@trigger.dev/core/v3"; diff --git a/packages/trigger-sdk/src/v3/metadata.ts b/packages/trigger-sdk/src/v3/metadata.ts index cc303a46ed7..fc02662d0d0 100644 --- a/packages/trigger-sdk/src/v3/metadata.ts +++ b/packages/trigger-sdk/src/v3/metadata.ts @@ -1,6 +1,6 @@ -import { DeserializedJson } from "@trigger.dev/core"; +import type { DeserializedJson } from "@trigger.dev/core"; import { - ApiRequestOptions, + type ApiRequestOptions, mergeRequestOptions, runMetadata, type RunMetadataUpdater, diff --git a/packages/trigger-sdk/src/v3/query.ts b/packages/trigger-sdk/src/v3/query.ts index 8d86416b271..79b412799b4 100644 --- a/packages/trigger-sdk/src/v3/query.ts +++ b/packages/trigger-sdk/src/v3/query.ts @@ -1,9 +1,4 @@ -import type { - ApiRequestOptions, - Prettify, - QueryExecuteResponseBody, - QueryExecuteCSVResponseBody, -} from "@trigger.dev/core/v3"; +import type { ApiRequestOptions, Prettify } from "@trigger.dev/core/v3"; import { apiClientManager, mergeRequestOptions } from "@trigger.dev/core/v3"; import { tracer } from "./tracer.js"; diff --git a/packages/trigger-sdk/src/v3/queues.ts b/packages/trigger-sdk/src/v3/queues.ts index f05a81ab68d..7e76c5f940b 100644 --- a/packages/trigger-sdk/src/v3/queues.ts +++ b/packages/trigger-sdk/src/v3/queues.ts @@ -1,15 +1,17 @@ -import { - accessoryAttributes, - apiClientManager, +import type { ApiPromise, ApiRequestOptions, - flattenAttributes, ListQueueOptions, - mergeRequestOptions, OffsetLimitPagePromise, QueueItem, RetrieveQueueParam, } from "@trigger.dev/core/v3"; +import { + accessoryAttributes, + apiClientManager, + flattenAttributes, + mergeRequestOptions, +} from "@trigger.dev/core/v3"; import { tracer } from "./tracer.js"; /** diff --git a/packages/trigger-sdk/src/v3/retry.ts b/packages/trigger-sdk/src/v3/retry.ts index c70794c21f7..1da657b61e7 100644 --- a/packages/trigger-sdk/src/v3/retry.ts +++ b/packages/trigger-sdk/src/v3/retry.ts @@ -1,4 +1,5 @@ -import { Attributes, Span, SpanStatusCode, context, trace } from "@opentelemetry/api"; +import type { Attributes, Span } from "@opentelemetry/api"; +import { SpanStatusCode, context, trace } from "@opentelemetry/api"; import { SEMATTRS_HTTP_HOST, SEMATTRS_HTTP_METHOD, @@ -7,11 +8,13 @@ import { SEMATTRS_HTTP_STATUS_CODE, SEMATTRS_HTTP_URL, } from "@opentelemetry/semantic-conventions"; -import { +import type { FetchRetryByStatusOptions, FetchRetryOptions, FetchRetryStrategy, RetryOptions, +} from "@trigger.dev/core/v3"; +import { SemanticInternalAttributes, accessoryAttributes, calculateNextRetryDelay, @@ -20,7 +23,6 @@ import { defaultRetryOptions, eventFilterMatches, flattenAttributes, - runtime, } from "@trigger.dev/core/v3"; import { tracer } from "./tracer.js"; import { wait } from "./wait.js"; @@ -529,7 +531,7 @@ const createAttributesFromHeaders = (headers: Headers): Attributes => { const safeJsonParse = (json: string): unknown => { try { return JSON.parse(json); - } catch (e) { + } catch (_e) { return null; } }; diff --git a/packages/trigger-sdk/src/v3/runs.ts b/packages/trigger-sdk/src/v3/runs.ts index db949c876bb..1ac9582df20 100644 --- a/packages/trigger-sdk/src/v3/runs.ts +++ b/packages/trigger-sdk/src/v3/runs.ts @@ -16,13 +16,13 @@ import type { AsyncIterableStream, ApiPromise, RealtimeRunSkipColumns, -} from "@trigger.dev/core/v3"; -import { CanceledRunResponse, CursorPagePromise, ListRunResponseItem, ReplayRunResponse, RetrieveRunResponse, +} from "@trigger.dev/core/v3"; +import { accessoryAttributes, apiClientManager, flattenAttributes, @@ -30,7 +30,7 @@ import { mergeRequestOptions, } from "@trigger.dev/core/v3"; import { resolvePresignedPacketUrl } from "@trigger.dev/core/v3/utils/ioSerialization"; -import { AnyRunHandle, AnyTask } from "./shared.js"; +import type { AnyRunHandle, AnyTask } from "./shared.js"; import { tracer } from "./tracer.js"; export type { diff --git a/packages/trigger-sdk/src/v3/schedules/index.ts b/packages/trigger-sdk/src/v3/schedules/index.ts index cd7bd691417..7ab27e00e4f 100644 --- a/packages/trigger-sdk/src/v3/schedules/index.ts +++ b/packages/trigger-sdk/src/v3/schedules/index.ts @@ -1,10 +1,12 @@ -import { +import type { ApiPromise, ApiRequestOptions, DeletedScheduleObject, InitOutput, OffsetLimitPagePromise, ScheduleObject, +} from "@trigger.dev/core/v3"; +import { TimezonesResult, accessoryAttributes, apiClientManager, @@ -12,8 +14,9 @@ import { resourceCatalog, } from "@trigger.dev/core/v3"; import { zodfetch } from "@trigger.dev/core/v3/zodfetch"; -import { Task, TaskOptions, createTask } from "../shared.js"; -import * as SchedulesAPI from "./api.js"; +import type { Task, TaskOptions } from "../shared.js"; +import { createTask } from "../shared.js"; +import type * as SchedulesAPI from "./api.js"; import { tracer } from "../tracer.js"; export type ScheduleOptions< diff --git a/packages/trigger-sdk/src/v3/sessions.ts b/packages/trigger-sdk/src/v3/sessions.ts index 755aa032559..aad2900f27e 100644 --- a/packages/trigger-sdk/src/v3/sessions.ts +++ b/packages/trigger-sdk/src/v3/sessions.ts @@ -1,10 +1,13 @@ +import { SpanStatusCode } from "@opentelemetry/api"; import type { ApiPromise, ApiRequestOptions, AsyncIterableStream, CloseSessionRequestBody, - CreatedSessionResponseBody, + ControlEvent, CreateSessionRequestBody, + CreatedSessionResponseBody, + InitializeSessionStreamResponseLike, InputStreamOnceOptions, InputStreamOnceResult, InputStreamWaitOptions, @@ -14,11 +17,12 @@ import type { PipeStreamOptions, PipeStreamResult, RetrieveSessionResponseBody, + StreamWriteResult, UpdateSessionRequestBody, WriterStreamOptions, + CursorPagePromise, } from "@trigger.dev/core/v3"; import { - CursorPagePromise, InputStreamOncePromise, ManualWaitpointPromise, SemanticInternalAttributes, @@ -34,19 +38,13 @@ import { trimSessionStream, writeSessionControlRecord, } from "@trigger.dev/core/v3"; -import type { - ControlEvent, - InitializeSessionStreamResponseLike, - StreamWriteResult, -} from "@trigger.dev/core/v3"; import { conditionallyImportAndParsePacket } from "@trigger.dev/core/v3/utils/ioSerialization"; -import { SpanStatusCode } from "@opentelemetry/api"; import { tracer } from "./tracer.js"; export type { - CreatedSessionResponseBody, - CreateSessionRequestBody, CloseSessionRequestBody, + CreateSessionRequestBody, + CreatedSessionResponseBody, ListSessionsOptions, ListedSessionItem, RetrieveSessionResponseBody, diff --git a/packages/trigger-sdk/src/v3/shared.ts b/packages/trigger-sdk/src/v3/shared.ts index 592a4b62dfe..203f83bc77b 100644 --- a/packages/trigger-sdk/src/v3/shared.ts +++ b/packages/trigger-sdk/src/v3/shared.ts @@ -1,11 +1,17 @@ import { SpanKind } from "@opentelemetry/api"; -import { SerializableJson } from "@trigger.dev/core"; +import type { SerializableJson } from "@trigger.dev/core"; import { + type ApiClient, + type ApiRequestOptions, + type InitOutput, + type Queue, + type QueueOptions, + type TaskFromIdentifier, + type TaskRunContext, + type TaskRunExecutionResult, accessoryAttributes, - ApiClient, - ApiError, apiClientManager, - ApiRequestOptions, + ApiError, conditionallyExportPacket, conditionallyImportPacket, convertToolParametersToSchema, @@ -15,92 +21,81 @@ import { getEnvVar, getIdempotencyKeyOptions, getSchemaParseFn, - InitOutput, lifecycleHooks, makeIdempotencyKey, parsePacket, - Queue, - QueueOptions, RateLimitError, resourceCatalog, runtime, sdkScope, SemanticInternalAttributes, stringifyIO, - type IOPacket, SubtaskUnwrapError, taskContext, - TaskFromIdentifier, - TaskRunContext, - TaskRunExecutionResult, TaskRunPromise, + type IOPacket, + type AnyOnCancelHookFunction, + type AnyOnCatchErrorHookFunction, + type AnyOnCleanupHookFunction, + type AnyOnCompleteHookFunction, + type AnyOnFailureHookFunction, + type AnyOnInitHookFunction, + type AnyOnMiddlewareHookFunction, + type AnyOnResumeHookFunction, + type AnyOnStartAttemptHookFunction, + type AnyOnStartHookFunction, + type AnyOnSuccessHookFunction, + type AnyOnWaitHookFunction, + type AnyRunHandle, + type AnyRunTypes, + type AnyTask, + type AnyTaskRunResult, + type BatchByIdAndWaitItem, + type BatchByIdItem, + type BatchByIdResult, + type BatchByTaskAndWaitItem, + type BatchByTaskItem, + type BatchByTaskResult, + type BatchItem, + type BatchItemNDJSON, + type BatchResult, + type BatchRunHandle, + type BatchRunHandleFromTypes, + type BatchTasksRunHandleFromTypes, + type BatchTriggerAndWaitItem, + type BatchTriggerAndWaitOptions, + type BatchTriggerOptions, + type InferRunTypes, + type inferSchemaIn, + type inferToolParameters, + type RunHandle, + type RunHandleFromTypes, + type RunHandleOutput, + type RunHandlePayload, + type RunTypes, + type SchemaParseFn, + type Task, + type TaskBatchOutputHandle, + type TaskIdentifier, + type TaskOptions, + type TaskOptionsWithSchema, + type TaskOutput, + type TaskOutputHandle, + type TaskPayload, + type TaskRunResult, + type TaskSchema, + type TaskWithSchema, + type TaskWithSchemaOptions, + type TaskWithToolOptions, + type ToolTask, + type ToolTaskParameters, + type TriggerAndSubscribeOptions, + type TriggerAndWaitOptions, + type TriggerApiRequestOptions, + type TriggerOptions, } from "@trigger.dev/core/v3"; import { tracer } from "./tracer.js"; -import type { - AnyOnCatchErrorHookFunction, - AnyOnCleanupHookFunction, - AnyOnCompleteHookFunction, - AnyOnFailureHookFunction, - AnyOnInitHookFunction, - AnyOnMiddlewareHookFunction, - AnyOnResumeHookFunction, - AnyOnStartHookFunction, - AnyOnSuccessHookFunction, - AnyOnWaitHookFunction, - AnyOnCancelHookFunction, - AnyRunHandle, - AnyRunTypes, - AnyTask, - AnyTaskRunResult, - BatchByIdAndWaitItem, - BatchByIdItem, - BatchByIdResult, - BatchByTaskAndWaitItem, - BatchByTaskItem, - BatchByTaskResult, - BatchItem, - BatchItemNDJSON, - BatchResult, - BatchRunHandle, - BatchRunHandleFromTypes, - BatchTasksRunHandleFromTypes, - BatchTriggerAndWaitItem, - BatchTriggerAndWaitOptions, - BatchTriggerOptions, - BatchTriggerTaskV2RequestBody, - InferRunTypes, - inferSchemaIn, - inferToolParameters, - RetrieveRunResult, - RunHandle, - RunHandleFromTypes, - RunHandleOutput, - RunHandlePayload, - RunTypes, - SchemaParseFn, - Task, - TaskBatchOutputHandle, - TaskIdentifier, - TaskOptions, - TaskOptionsWithSchema, - TaskOutput, - TaskOutputHandle, - TaskPayload, - TaskRunResult, - TaskSchema, - TaskWithSchema, - TaskWithSchemaOptions, - TaskWithToolOptions, - ToolTask, - ToolTaskParameters, - TriggerAndSubscribeOptions, - TriggerAndWaitOptions, - TriggerApiRequestOptions, - TriggerOptions, - AnyOnStartAttemptHookFunction, -} from "@trigger.dev/core/v3"; - export type { AnyRunHandle, AnyTask, @@ -118,15 +113,15 @@ export type { TaskFromIdentifier, TaskIdentifier, TaskOptions, + TaskOptionsWithSchema, TaskOutput, TaskOutputHandle, TaskPayload, TaskRunResult, - TriggerOptions, + TaskSchema, TaskWithSchema, TaskWithSchemaOptions, - TaskSchema, - TaskOptionsWithSchema, + TriggerOptions, }; export { SubtaskUnwrapError, TaskRunPromise }; @@ -1830,23 +1825,6 @@ async function executeBatchTwoPhaseStreaming( // Now we can use the regular 2-phase approach return executeBatchTwoPhase(apiClient, itemsArray, options, requestOptions); } - -// ============================================================================ -// Streaming Helpers -// ============================================================================ - -/** - * Type guard to check if a value is an AsyncIterable - */ -function isAsyncIterable(value: unknown): value is AsyncIterable { - return ( - value != null && - typeof value === "object" && - Symbol.asyncIterator in value && - typeof (value as AsyncIterable)[Symbol.asyncIterator] === "function" - ); -} - /** * Type guard to check if a value is a ReadableStream */ diff --git a/packages/trigger-sdk/src/v3/streams.test.ts b/packages/trigger-sdk/src/v3/streams.test.ts index 5c22330f24d..43ebc5450ff 100644 --- a/packages/trigger-sdk/src/v3/streams.test.ts +++ b/packages/trigger-sdk/src/v3/streams.test.ts @@ -1,9 +1,10 @@ -import { describe, it, expect, vi, beforeEach } from "vitest"; +import type * as Core from "@trigger.dev/core/v3"; +import { realtimeStreams } from "@trigger.dev/core/v3"; +import { beforeEach, describe, expect, it, vi } from "vitest"; import { streams } from "./streams.js"; -import { taskContext, realtimeStreams } from "@trigger.dev/core/v3"; vi.mock("@trigger.dev/core/v3", async (importOriginal) => { - const original = await importOriginal(); + const original = await importOriginal(); return { ...original, taskContext: { @@ -32,7 +33,7 @@ describe("streams.pipe consistency", () => { const mockStream = new ReadableStream(); // This should not throw anymore - const { waitUntilComplete } = streams.pipe("test-key", mockStream, { + const { waitUntilComplete: _waitUntilComplete } = streams.pipe("test-key", mockStream, { target: "root", }); @@ -49,7 +50,7 @@ describe("streams.pipe consistency", () => { const mockStream = new ReadableStream(); // This should not throw anymore - const { waitUntilComplete } = streams.pipe("test-key", mockStream, { + const { waitUntilComplete: _waitUntilComplete } = streams.pipe("test-key", mockStream, { target: "parent", }); diff --git a/packages/trigger-sdk/src/v3/streams.ts b/packages/trigger-sdk/src/v3/streams.ts index 7a63a71a7c6..81d19e128e7 100644 --- a/packages/trigger-sdk/src/v3/streams.ts +++ b/packages/trigger-sdk/src/v3/streams.ts @@ -1,5 +1,12 @@ import { - type ApiRequestOptions, + type AsyncIterableStream, + type WriterStreamOptions, + type PipeStreamOptions, + type PipeStreamResult, + type ReadStreamOptions, + type AppendStreamOptions, + type RealtimeDefinedStream, + type InferStreamType, realtimeStreams, inputStreams, taskContext, @@ -8,28 +15,14 @@ import { accessoryAttributes, SemanticInternalAttributes, apiClientManager, - AsyncIterableStream, - WriterStreamOptions, - PipeStreamOptions, - PipeStreamResult, - ReadStreamOptions, - AppendStreamOptions, - RealtimeDefinedStream, - InferStreamType, ManualWaitpointPromise, WaitpointTimeoutError, runtime, logger, type RealtimeDefinedInputStream, - type InputStreamSubscription, - type InputStreamOnceOptions, InputStreamOncePromise, type InputStreamOnceResult, - type InputStreamWaitOptions, - type InputStreamWaitWithIdleTimeoutOptions, - type SendInputStreamOptions, type InferInputStreamType, - type StreamWriteResult, } from "@trigger.dev/core/v3"; import { conditionallyImportAndParsePacket } from "@trigger.dev/core/v3/utils/ioSerialization"; import { tracer } from "./tracer.js"; @@ -628,7 +621,7 @@ function writerInternal(key: string, options: WriterStreamOptions) function safeEnqueue(data: TPart) { try { controller.enqueue(data); - } catch (error) { + } catch (_error) { // suppress errors when the stream has been closed } } @@ -677,7 +670,7 @@ function writerInternal(key: string, options: WriterStreamOptions) waitForStreams.finally(() => { try { controller.close(); - } catch (error) { + } catch (_error) { // suppress errors when the stream has been closed } }); diff --git a/packages/trigger-sdk/src/v3/test/test-session-handle.ts b/packages/trigger-sdk/src/v3/test/test-session-handle.ts index 3e36f402a8c..f97cdbcc061 100644 --- a/packages/trigger-sdk/src/v3/test/test-session-handle.ts +++ b/packages/trigger-sdk/src/v3/test/test-session-handle.ts @@ -5,13 +5,8 @@ import type { WriterStreamOptions, } from "@trigger.dev/core/v3"; import { ensureReadableStream, ManualWaitpointPromise } from "@trigger.dev/core/v3"; -import { - SessionHandle, - SessionInputChannel, - SessionOutputChannel, - SessionPipeStreamOptions, - SessionSubscribeOptions, -} from "../sessions.js"; +import type { SessionPipeStreamOptions, SessionSubscribeOptions } from "../sessions.js"; +import { SessionHandle, SessionInputChannel, SessionOutputChannel } from "../sessions.js"; /** * Stub for `SessionInputChannel.wait` that skips the apiClient round-trip diff --git a/packages/trigger-sdk/src/v3/triggerClient.types.test.ts b/packages/trigger-sdk/src/v3/triggerClient.types.test.ts index a5c6c745f9f..1a04e46e1e7 100644 --- a/packages/trigger-sdk/src/v3/triggerClient.types.test.ts +++ b/packages/trigger-sdk/src/v3/triggerClient.types.test.ts @@ -1,12 +1,11 @@ import { describe, expectTypeOf, it } from "vitest"; -import type { ApiPromise } from "@trigger.dev/core/v3"; import { batch } from "./batch.js"; -import { runs } from "./runs.js"; -import * as envvars from "./envvars.js"; +import type { runs } from "./runs.js"; +import type * as envvars from "./envvars.js"; import * as schedules from "./schedules/index.js"; import * as prompts from "./prompts.js"; import { auth } from "./auth.js"; -import type { Task, AnyTask } from "./shared.js"; +import type { Task } from "./shared.js"; import { TriggerClient } from "./triggerClient.js"; // Stand-in task type used to verify generic inference flows through the proxy. diff --git a/packages/trigger-sdk/src/v3/wait.ts b/packages/trigger-sdk/src/v3/wait.ts index aab0797f4f3..934870b277e 100644 --- a/packages/trigger-sdk/src/v3/wait.ts +++ b/packages/trigger-sdk/src/v3/wait.ts @@ -1,7 +1,5 @@ import { SpanStatusCode } from "@opentelemetry/api"; -import { - accessoryAttributes, - apiClientManager, +import type { ApiPromise, ApiRequestOptions, CompleteWaitpointTokenResponseBody, @@ -9,17 +7,21 @@ import { CreateWaitpointTokenResponse, CreateWaitpointTokenResponseBody, CursorPagePromise, - flattenAttributes, ListWaitpointTokensQueryParams, + WaitpointListTokenItem, + WaitpointRetrieveTokenResponse, + WaitpointTokenStatus, + WaitpointTokenTypedResult, +} from "@trigger.dev/core/v3"; +import { + accessoryAttributes, + apiClientManager, + flattenAttributes, ManualWaitpointPromise, mergeRequestOptions, runtime, SemanticInternalAttributes, taskContext, - WaitpointListTokenItem, - WaitpointRetrieveTokenResponse, - WaitpointTokenStatus, - WaitpointTokenTypedResult, WaitpointTimeoutError, } from "@trigger.dev/core/v3"; import { conditionallyImportAndParsePacket } from "@trigger.dev/core/v3/utils/ioSerialization"; diff --git a/packages/trigger-sdk/src/v3/webhooks.ts b/packages/trigger-sdk/src/v3/webhooks.ts index 049cb1f5c3c..040b7ee6638 100644 --- a/packages/trigger-sdk/src/v3/webhooks.ts +++ b/packages/trigger-sdk/src/v3/webhooks.ts @@ -152,7 +152,7 @@ async function verifySignature( // Compare signatures using timing-safe comparison return timingSafeEqual(signature, actualSignatureHex); - } catch (error) { + } catch (_error) { throw new WebhookError("Signature verification failed"); } } diff --git a/packages/trigger-sdk/test/mockChatAgent.test.ts b/packages/trigger-sdk/test/mockChatAgent.test.ts index 222d5d2ba09..202c3923732 100644 --- a/packages/trigger-sdk/test/mockChatAgent.test.ts +++ b/packages/trigger-sdk/test/mockChatAgent.test.ts @@ -1974,11 +1974,11 @@ describe("mockChatAgent", () => { const model = new MockLanguageModelV3({ doStream: async () => ({ stream: textStream("post-handover") }), }); - let messagesAtChatStart: any[] = []; + let _messagesAtChatStart: any[] = []; const agent = chat.agent({ id: "mockChatAgent.headstart.slim", onChatStart: async ({ messages }) => { - messagesAtChatStart = messages; + _messagesAtChatStart = messages; }, run: async ({ messages, signal }) => streamText({ model, messages, abortSignal: signal }), }); diff --git a/packages/trigger-sdk/test/promptCaching.test.ts b/packages/trigger-sdk/test/promptCaching.test.ts index 6834596b7c5..505fa8668cc 100644 --- a/packages/trigger-sdk/test/promptCaching.test.ts +++ b/packages/trigger-sdk/test/promptCaching.test.ts @@ -1,10 +1,10 @@ // Import the test harness FIRST so the resource catalog is installed import { mockChatAgent } from "../src/v3/test/index.js"; -import { afterEach, beforeEach, describe, expect, it } from "vitest"; import type { LanguageModelV3StreamPart } from "@ai-sdk/provider"; -import { MockLanguageModelV3 } from "ai/test"; import { simulateReadableStream, streamText } from "ai"; +import { MockLanguageModelV3 } from "ai/test"; +import { describe, expect, it } from "vitest"; import { chat } from "../src/v3/ai.js"; function userMessage(text: string, id?: string) { diff --git a/packages/trigger-sdk/test/recovery-boot.test.ts b/packages/trigger-sdk/test/recovery-boot.test.ts index 0b11567fb9d..d299e67d598 100644 --- a/packages/trigger-sdk/test/recovery-boot.test.ts +++ b/packages/trigger-sdk/test/recovery-boot.test.ts @@ -2,13 +2,12 @@ // `chat.agent()` calls register their task functions correctly. import { mockChatAgent } from "../src/v3/test/index.js"; -import { describe, expect, it, vi } from "vitest"; -import { chat } from "../src/v3/ai.js"; -import type { RecoveryBootEvent, RecoveryBootResult } from "../src/v3/ai.js"; -import { __setReplaySessionOutTailImplForTests } from "../src/v3/ai.js"; +import type { LanguageModelV3StreamPart } from "@ai-sdk/provider"; import { simulateReadableStream, streamText } from "ai"; import { MockLanguageModelV3 } from "ai/test"; -import type { LanguageModelV3StreamPart } from "@ai-sdk/provider"; +import { describe, expect, it, vi } from "vitest"; +import type { RecoveryBootEvent, RecoveryBootResult } from "../src/v3/ai.js"; +import { __setReplaySessionOutTailImplForTests, chat } from "../src/v3/ai.js"; // ── Helpers ──────────────────────────────────────────────────────────── diff --git a/packages/trigger-sdk/test/replay-session-out.test.ts b/packages/trigger-sdk/test/replay-session-out.test.ts index 0111ec200b3..737de545706 100644 --- a/packages/trigger-sdk/test/replay-session-out.test.ts +++ b/packages/trigger-sdk/test/replay-session-out.test.ts @@ -22,21 +22,6 @@ function textTurn(id: string, text: string, role: "assistant" = "assistant"): UI { type: "finish" } as UIMessageChunk, ]; } - -/** - * Same as `textTurn` but omits the trailing `finish` chunk — simulates a - * crashed turn whose stream ended mid-message. The runtime's reducer - * should run `cleanupAbortedParts` on the resulting trailing message. - */ -function partialTurn(id: string, text: string): UIMessageChunk[] { - return [ - { type: "start", messageId: id, messageMetadata: { role: "assistant" } } as UIMessageChunk, - { type: "text-start", id: `${id}.t1` } as UIMessageChunk, - { type: "text-delta", id: `${id}.t1`, delta: text } as UIMessageChunk, - // No text-end, no finish. - ]; -} - /** * Stub `apiClientManager.clientOrThrow().readSessionStreamRecords` so the * helper sees a `{ records: StreamRecord[] }` response. Each StreamRecord diff --git a/scripts/analyze_marqs.mjs b/scripts/analyze_marqs.mjs index 38a2bebac1a..e210a507572 100755 --- a/scripts/analyze_marqs.mjs +++ b/scripts/analyze_marqs.mjs @@ -8,7 +8,6 @@ if (!filename) { } import fs from "fs/promises"; -import util from "util"; (async () => { try { diff --git a/scripts/recover-stuck-runs.ts b/scripts/recover-stuck-runs.ts index e107cc38540..423e17bc07b 100755 --- a/scripts/recover-stuck-runs.ts +++ b/scripts/recover-stuck-runs.ts @@ -45,7 +45,8 @@ * "redis://writeonly.example.com:6379" */ -import { PrismaClient, TaskRunExecutionStatus } from "@trigger.dev/database"; +import type { TaskRunExecutionStatus } from "@trigger.dev/database"; +import { PrismaClient } from "@trigger.dev/database"; import { createRedisClient } from "@internal/redis"; interface StuckRun { diff --git a/scripts/updateVersion.ts b/scripts/updateVersion.ts index 2e040577e78..3cd101fd358 100644 --- a/scripts/updateVersion.ts +++ b/scripts/updateVersion.ts @@ -30,7 +30,7 @@ async function updatePlaceholderInFile(filePath: string, version: string) { const fileContents = await fs.readFile(filePath, "utf-8"); const updatedContents = fileContents.replace("0.0.0", version); await fs.writeFile(filePath, updatedContents); - } catch (e) {} + } catch (_e) {} } updateVersion().catch((e) => {