From c7861be520df8f06fe772553e7627f42d13d35a7 Mon Sep 17 00:00:00 2001 From: Chris Arderne Date: Thu, 2 Jul 2026 11:37:05 +0100 Subject: [PATCH 01/46] chore: activate no-unused-vars and import linters (#4096) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Once this is merged, oxlint is at a pretty sensible baseline. **Enable `no-unused-vars`, `typescript/consistent-type-imports`, and `import/no-duplicates` lint rules** Turns on three previously-disabled oxlint rules across the monorepo and fixes all violations: - **`no-unused-vars`** – enabled as an error with standard ignore patterns: unused function arguments are ignored by default (`args: "none"`), variables/caught errors/destructured array elements prefixed with `_` are allowed, and rest siblings are permitted. - **`typescript/consistent-type-imports`** – enforced as an error; all type-only imports now use the `import type` syntax. - **`import/no-duplicates`** – enforced as an error; duplicate import statements from the same module have been merged. The remaining commits clean up the violations found across the codebase: removing unused variables/imports/type aliases, adding `_` prefixes to intentionally unused bindings, fixing duplicate imports, and converting value imports to `import type` where appropriate. --- .oxlintrc.json | 17 +- apps/coordinator/src/checkpointer.ts | 4 +- apps/coordinator/src/exec.ts | 2 +- apps/coordinator/src/index.ts | 2 +- apps/coordinator/src/util.ts | 2 +- apps/docker-provider/src/index.ts | 10 +- apps/kubernetes-provider/src/index.ts | 7 +- apps/kubernetes-provider/src/taskMonitor.ts | 11 +- apps/supervisor/src/clients/kubernetes.ts | 6 +- .../src/services/failedPodHandler.test.ts | 2 +- .../src/services/failedPodHandler.ts | 9 +- .../src/services/podCleaner.test.ts | 4 +- apps/supervisor/src/services/podCleaner.ts | 7 +- .../supervisor/src/workloadManager/ecrAuth.ts | 2 +- apps/supervisor/src/workloadServer/index.ts | 19 +- .../components/BulkActionFilterSummary.tsx | 6 +- apps/webapp/app/components/admin/debugRun.tsx | 3 +- .../billing/BillingLimitConfigSection.tsx | 9 +- .../app/components/billing/FreePlanUsage.tsx | 3 +- .../components/billing/billingAlertsFormat.ts | 9 - .../app/components/code/ChartConfigPanel.tsx | 11 +- apps/webapp/app/components/code/CodeBlock.tsx | 3 +- .../webapp/app/components/code/TSQLEditor.tsx | 12 +- .../webapp/app/components/code/chartColors.ts | 34 ---- .../components/code/tsql/tsqlCompletion.ts | 2 +- .../errors/ConfigureErrorAlerts.tsx | 13 +- .../integrations/VercelOnboardingModal.tsx | 10 +- .../app/components/logs/LogDetailView.tsx | 5 +- apps/webapp/app/components/logs/LogsTable.tsx | 12 +- .../app/components/logs/LogsTaskFilter.tsx | 2 +- .../app/components/metrics/ModelsFilter.tsx | 2 +- .../components/metrics/OperationsFilter.tsx | 2 +- .../app/components/metrics/PromptsFilter.tsx | 2 +- .../components/metrics/ProvidersFilter.tsx | 2 +- .../app/components/metrics/QueuesFilter.tsx | 2 +- .../navigation/HelpAndFeedbackPopover.tsx | 25 +-- .../app/components/navigation/SideMenu.tsx | 30 ++-- .../app/components/primitives/Callout.tsx | 1 - .../app/components/primitives/DateField.tsx | 2 +- .../app/components/primitives/DetailCell.tsx | 3 +- .../app/components/primitives/Label.tsx | 2 +- .../components/primitives/LocaleProvider.tsx | 3 +- .../primitives/OperatingSystemProvider.tsx | 3 +- .../app/components/primitives/Popover.tsx | 6 +- .../components/primitives/PropertyTable.tsx | 3 +- .../primitives/SegmentedControl.tsx | 2 +- .../app/components/primitives/Slider.tsx | 5 +- .../app/components/primitives/Timeline.tsx | 19 +- .../components/primitives/TooltipPortal.tsx | 3 +- .../primitives/TreeView/TreeView.tsx | 17 +- .../components/primitives/TreeView/reducer.ts | 2 +- .../components/primitives/TreeView/utils.ts | 13 +- .../components/primitives/charts/ChartBar.tsx | 2 +- .../primitives/charts/ChartLine.tsx | 17 +- .../primitives/charts/ChartRoot.tsx | 2 +- .../primitives/charts/ChartZoom.tsx | 4 +- .../app/components/query/QueryEditor.tsx | 10 +- .../webapp/app/components/run/RunTimeline.tsx | 17 +- .../app/components/runs/v3/BatchFilters.tsx | 16 +- .../components/runs/v3/ReplayRunDialog.tsx | 15 +- .../app/components/runs/v3/RunFilters.tsx | 14 +- .../app/components/runs/v3/SharedFilters.tsx | 1 - .../app/components/runs/v3/SpanEvents.tsx | 2 +- .../app/components/runs/v3/SpanTitle.tsx | 2 +- .../app/components/runs/v3/TaskPath.tsx | 3 +- .../runs/v3/TaskRunAttemptStatus.tsx | 2 +- .../runs/v3/WaitpointTokenFilters.tsx | 6 +- .../runs/v3/ai/extractAISpanData.ts | 2 +- .../runs/v3/ai/extractAISummarySpanData.ts | 4 +- .../sessions/v1/CloseSessionDialog.tsx | 2 - apps/webapp/app/db.server.ts | 3 +- apps/webapp/app/entry.server.tsx | 6 +- apps/webapp/app/eventLoopMonitor.server.ts | 3 +- apps/webapp/app/hooks/useApiOrigin.ts | 2 +- apps/webapp/app/hooks/useAppOrigin.ts | 2 +- apps/webapp/app/hooks/useEnvironments.ts | 6 +- apps/webapp/app/hooks/useFaviconUrl.ts | 2 +- apps/webapp/app/hooks/useInitialDimensions.ts | 2 +- apps/webapp/app/hooks/useLazyRef.ts | 3 +- apps/webapp/app/hooks/useList.tsx | 5 +- apps/webapp/app/hooks/useOrganizations.ts | 4 +- apps/webapp/app/hooks/useTypedMatchData.ts | 6 +- apps/webapp/app/metrics.server.ts | 3 +- apps/webapp/app/models/admin.server.ts | 2 +- apps/webapp/app/models/message.server.ts | 2 +- .../app/models/orgIntegration.server.ts | 2 +- apps/webapp/app/models/organization.server.ts | 2 +- apps/webapp/app/models/project.server.ts | 7 +- apps/webapp/app/models/schedules.server.ts | 2 +- apps/webapp/app/models/task.server.ts | 3 +- apps/webapp/app/models/taskQueue.server.ts | 2 +- apps/webapp/app/models/user.server.ts | 6 +- .../app/models/vercelIntegration.server.ts | 24 +-- .../NewOrganizationPresenter.server.ts | 2 +- .../app/presenters/ProjectPresenter.server.ts | 7 +- .../app/presenters/SessionFilters.server.ts | 6 +- .../v3/AlertChannelListPresenter.server.ts | 2 +- .../v3/ApiBatchResultsPresenter.server.ts | 7 +- .../v3/ApiRetrieveRunPresenter.server.ts | 13 +- .../v3/ApiRunListPresenter.server.ts | 11 +- .../v3/ApiRunResultPresenter.server.ts | 4 +- .../v3/ApiWaitpointPresenter.server.ts | 4 +- .../presenters/v3/BranchesPresenter.server.ts | 2 +- .../presenters/v3/BuiltInDashboards.server.ts | 1 - .../v3/BulkActionPresenter.server.ts | 5 +- .../EnvironmentVariablesPresenter.server.ts | 5 +- .../v3/GitHubSettingsPresenter.server.ts | 2 +- .../presenters/v3/LimitsPresenter.server.ts | 2 +- .../presenters/v3/LogsListPresenter.server.ts | 15 +- .../v3/ModelRegistryPresenter.server.ts | 6 +- .../v3/NextRunListPresenter.server.ts | 2 +- .../presenters/v3/PromptPresenter.server.ts | 4 +- .../v3/QueueListPresenter.server.ts | 4 +- .../v3/QueueRetrievePresenter.server.ts | 14 +- .../app/presenters/v3/RunPresenter.server.ts | 2 +- .../v3/RunStreamPresenter.server.ts | 5 +- .../v3/RunTagListPresenter.server.ts | 5 +- .../app/presenters/v3/SpanPresenter.server.ts | 28 ++- .../presenters/v3/TaskListPresenter.server.ts | 1 - .../app/presenters/v3/TaskPresenter.server.ts | 9 +- .../v3/TasksStreamPresenter.server.ts | 9 - .../presenters/v3/TestTaskPresenter.server.ts | 4 +- .../presenters/v3/UsagePresenter.server.ts | 9 +- .../v3/VercelSettingsPresenter.server.ts | 10 +- .../v3/ViewSchedulePresenter.server.ts | 5 +- .../v3/WaitpointPresenter.server.ts | 4 +- .../app/presenters/v3/basePresenter.server.ts | 8 +- apps/webapp/app/redis.server.ts | 2 +- apps/webapp/app/root.tsx | 2 +- apps/webapp/app/routes/_app._index/route.tsx | 3 +- .../route.tsx | 2 +- .../route.tsx | 2 +- .../route.tsx | 2 +- .../route.tsx | 2 +- .../route.tsx | 4 +- .../route.tsx | 10 +- .../route.tsx | 5 +- .../route.tsx | 2 +- .../route.tsx | 2 +- .../route.tsx | 6 +- .../route.tsx | 7 +- .../route.tsx | 21 +-- .../route.tsx | 6 +- .../route.tsx | 18 +- .../route.tsx | 19 +- .../route.tsx | 13 +- .../route.tsx | 3 +- .../route.tsx | 28 ++- .../route.tsx | 52 +++--- .../route.tsx | 63 ++++--- .../route.tsx | 9 +- .../TableSchemaContent.tsx | 3 +- .../route.tsx | 13 +- .../route.tsx | 2 +- .../route.tsx | 6 +- .../route.tsx | 23 ++- .../route.tsx | 43 +++-- .../route.tsx | 2 +- .../route.tsx | 10 +- .../route.tsx | 4 +- .../billingLimitsRoute.server.ts | 6 +- .../route.tsx | 5 +- ...ationSlug.settings.integrations.vercel.tsx | 18 +- .../route.tsx | 34 ++-- .../route.tsx | 4 +- .../route.tsx | 5 +- .../route.tsx | 2 +- .../route.tsx | 2 +- .../route.tsx | 2 +- .../app/routes/account._index/route.tsx | 2 +- .../route.tsx | 4 +- .../app/routes/account.tokens/route.tsx | 4 +- ...nts.$environmentId.engine.repair-queues.ts | 3 +- ...vironments.$environmentId.engine.report.ts | 3 +- ...nments.$environmentId.schedules.recover.ts | 3 +- ...dmin.api.v1.environments.$environmentId.ts | 3 +- .../app/routes/admin.api.v1.feature-flags.ts | 3 +- apps/webapp/app/routes/admin.api.v1.gc.ts | 4 +- ...min.api.v1.migrate-legacy-master-queues.ts | 3 +- ...api.v1.orgs.$organizationId.concurrency.ts | 4 +- ...i.v1.orgs.$organizationId.feature-flags.ts | 3 +- ...api.v1.orgs.$organizationId.runs.enable.ts | 10 +- ...pi.v1.orgs.$organizationId.stream-basin.ts | 3 +- ...pi.v1.revoked-api-keys.$revokedApiKeyId.ts | 3 +- .../admin.api.v1.runs-replication.create.ts | 3 +- .../admin.api.v1.runs-replication.start.ts | 3 +- .../admin.api.v1.runs-replication.stop.ts | 3 +- .../admin.api.v1.runs-replication.teardown.ts | 3 +- .../app/routes/admin.llm-models.$modelId.tsx | 5 +- .../admin.llm-models.missing._index.tsx | 4 +- .../webapp/app/routes/admin.notifications.tsx | 2 +- .../app/routes/api.v1.authorization-code.ts | 2 +- .../api.v1.batches.$batchParam.results.ts | 1 - ...yments.$deploymentId.background-workers.ts | 3 +- .../api.v1.deployments.$deploymentId.fail.ts | 3 +- ...i.v1.deployments.$deploymentId.finalize.ts | 3 +- ....deployments.$deploymentVersion.promote.ts | 3 +- .../app/routes/api.v1.deployments.latest.ts | 3 +- apps/webapp/app/routes/api.v1.mock.ts | 2 +- .../routes/api.v1.orgs.$orgParam.projects.ts | 8 +- apps/webapp/app/routes/api.v1.orgs.ts | 2 +- ...jects.$projectRef.$env.workers.$tagName.ts | 10 +- ...ef.background-workers.$envSlug.$version.ts | 3 +- ...projects.$projectRef.background-workers.ts | 3 +- .../api.v1.projects.$projectRef.branches.ts | 3 +- ...rojects.$projectRef.envvars.$slug.$name.ts | 3 +- ...ojects.$projectRef.envvars.$slug.import.ts | 3 +- ...i.v1.projects.$projectRef.envvars.$slug.ts | 3 +- .../app/routes/api.v1.projects.$projectRef.ts | 2 +- apps/webapp/app/routes/api.v1.projects.ts | 4 +- apps/webapp/app/routes/api.v1.query.ts | 2 +- apps/webapp/app/routes/api.v1.runs.ts | 1 - .../routes/api.v1.schedules.$scheduleId.ts | 5 +- apps/webapp/app/routes/api.v1.schedules.ts | 5 +- .../app/routes/api.v1.tasks.$taskId.batch.ts | 3 +- .../routes/api.v1.tasks.$taskId.trigger.ts | 7 +- apps/webapp/app/routes/api.v1.tasks.batch.ts | 12 +- apps/webapp/app/routes/api.v1.token.ts | 6 +- apps/webapp/app/routes/api.v1.usage.ingest.ts | 2 +- ...ens.$waitpointFriendlyId.callback.$hash.ts | 3 +- ...ts.tokens.$waitpointFriendlyId.complete.ts | 2 +- ...i.v2.deployments.$deploymentId.finalize.ts | 3 +- apps/webapp/app/routes/api.v2.tasks.batch.ts | 12 +- .../routes/api.v3.batches.$batchId.items.ts | 1 - apps/webapp/app/routes/api.v3.batches.ts | 15 +- ...i.v3.deployments.$deploymentId.finalize.ts | 3 +- .../app/routes/confirm-basic-details.tsx | 5 +- ...s.$snapshotFriendlyId.attempts.complete.ts | 9 +- ...hots.$snapshotFriendlyId.attempts.start.ts | 21 +-- ...snapshots.$snapshotFriendlyId.heartbeat.ts | 5 +- ...ev.runs.$runFriendlyId.snapshots.latest.ts | 5 +- ...ne.v1.runs.$runFriendlyId.wait.duration.ts | 8 +- ...points.tokens.$waitpointFriendlyId.wait.ts | 2 +- .../engine.v1.worker-actions.connect.ts | 9 +- ...ployments.$deploymentFriendlyId.dequeue.ts | 5 +- .../engine.v1.worker-actions.dequeue.ts | 9 +- .../engine.v1.worker-actions.heartbeat.ts | 9 +- ...s.$snapshotFriendlyId.attempts.complete.ts | 9 +- ...hots.$snapshotFriendlyId.attempts.start.ts | 9 +- ....snapshots.$snapshotFriendlyId.continue.ts | 5 +- ...snapshots.$snapshotFriendlyId.heartbeat.ts | 5 +- ...d.snapshots.$snapshotFriendlyId.suspend.ts | 9 +- ...ns.runs.$runFriendlyId.snapshots.latest.ts | 5 +- ...nFriendlyId.snapshots.since.$snapshotId.ts | 5 +- .../internal.webhooks.slack.interactivity.ts | 2 +- .../app/routes/internal.webhooks.tester.ts | 6 +- apps/webapp/app/routes/invites.tsx | 14 +- apps/webapp/app/routes/login.mfa/route.tsx | 15 +- apps/webapp/app/routes/metrics.ts | 2 +- .../routes/orgs.$organizationSlug.billing.ts | 2 +- ...cts.$projectParam.environment-variables.ts | 2 +- .../app/routes/orgs.$organizationSlug.team.ts | 2 +- apps/webapp/app/routes/otel.v1.logs.ts | 3 +- apps/webapp/app/routes/otel.v1.metrics.ts | 3 +- apps/webapp/app/routes/otel.v1.traces.ts | 3 +- .../routes/projects.$projectRef.ai-help.ts | 3 +- apps/webapp/app/routes/projects.new.ts | 2 +- ...ts.v3.$projectRef.environment-variables.ts | 3 +- .../registerProjectMetrics.server.ts | 7 +- .../projects.v3.$projectRef.metrics/route.ts | 3 +- .../routes/projects.v3.$projectRef.test.ts | 3 +- .../app/routes/realtime.v1.runs.$runId.ts | 1 - .../realtime.v1.streams.$runId.$streamId.ts | 1 - ...rojectId.deployments.$deploymentId.logs.ts | 2 +- .../resources.account.mfa.setup/route.tsx | 9 +- .../useMfaSetup.ts | 2 +- ...urces.batches.$batchId.check-completion.ts | 3 +- .../app/routes/resources.branches.archive.tsx | 4 +- apps/webapp/app/routes/resources.feedback.ts | 2 +- apps/webapp/app/routes/resources.metric.tsx | 2 +- ...cts.$projectParam.env.$envParam.github.tsx | 40 ++--- ...ojects.$projectParam.env.$envParam.logs.ts | 10 +- ...am.runs.$runParam.idempotencyKey.reset.tsx | 4 +- .../route.tsx | 68 ++----- .../route.tsx | 25 ++- ...cts.$projectParam.env.$envParam.vercel.tsx | 53 +++--- .../route.tsx | 21 +-- ...ctParam.schedules.new.natural-language.tsx | 3 +- .../resources.packets.$environmentId.$.ts | 2 +- .../resources.runs.$runParam.logs.download.ts | 2 +- .../app/routes/resources.runs.$runParam.ts | 9 +- .../resources.taskruns.$runParam.replay.ts | 4 +- .../app/routes/storybook.charts/route.tsx | 2 +- .../app/routes/storybook.filter/route.tsx | 2 +- .../app/routes/storybook.info-panel/route.tsx | 3 +- .../routes/storybook.input-fields/route.tsx | 1 - .../storybook.run-and-span-timeline/route.tsx | 9 +- .../app/routes/storybook.select/route.tsx | 2 +- .../app/routes/storybook.table/route.tsx | 3 +- .../app/routes/storybook.timeline/route.tsx | 2 +- .../app/routes/storybook.tree-view/route.tsx | 7 +- apps/webapp/app/routes/storybook/route.tsx | 1 - apps/webapp/app/routes/tests.sse.stream.ts | 2 +- apps/webapp/app/routes/tests.sse.tsx | 2 +- .../app/routes/unsubscribe.$userId.$token.tsx | 2 +- .../runEngine/concerns/batchLimits.server.ts | 6 +- .../app/runEngine/concerns/payloads.server.ts | 5 +- .../app/runEngine/concerns/queues.server.ts | 6 +- .../runEngine/concerns/traceEvents.server.ts | 6 +- .../waitpointCompletionPacket.server.ts | 2 +- .../runEngine/services/batchTrigger.server.ts | 4 +- .../services/triggerFailedTask.server.ts | 11 +- .../runEngine/services/triggerTask.server.ts | 12 +- .../app/services/apiRateLimit.server.ts | 2 +- ...authorizationRateLimitMiddleware.server.ts | 10 +- .../services/autoIncrementCounter.server.ts | 6 +- .../app/services/billingLimit.schemas.ts | 2 +- .../db/graphileMigrationHelper.server.ts | 3 +- .../webapp/app/services/db/pgNotify.server.ts | 7 +- .../app/services/deleteOrganization.server.ts | 2 +- .../app/services/deleteProject.server.ts | 2 +- apps/webapp/app/services/email.server.ts | 4 +- .../app/services/engineRateLimit.server.ts | 2 +- .../metadata/updateMetadata.server.ts | 8 +- .../mfa/multiFactorAuthentication.server.ts | 2 +- .../app/services/onboardingSession.server.ts | 3 +- .../webapp/app/services/platform.v3.server.ts | 60 +++---- .../webapp/app/services/rateLimiter.server.ts | 5 +- .../app/services/realtime/jwtAuth.server.ts | 8 +- .../realtime/nativeRealtimeClient.server.ts | 3 +- .../realtimeConcurrencyLimiter.server.ts | 5 +- .../realtime/redisRealtimeStreams.server.ts | 10 +- .../realtime/runChangeNotifier.server.ts | 3 +- .../realtime/s2realtimeStreams.server.ts | 5 +- .../realtime/sessionRunManager.server.ts | 2 +- .../realtime/shadowRealtimeClient.server.ts | 2 +- .../realtime/v1StreamsGlobal.server.ts | 4 +- .../app/services/realtimeClient.server.ts | 11 +- .../app/services/requestIdempotency.server.ts | 8 +- .../routeBuilders/apiBuilder.server.ts | 22 ++- .../app/services/runsBackfiller.server.ts | 4 +- .../services/runsReplicationGlobal.server.ts | 2 +- .../runsRepository/runsRepository.server.ts | 2 +- .../services/secrets/secretStore.server.ts | 3 +- .../services/taskIdentifierRegistry.server.ts | 2 +- apps/webapp/app/services/telemetry.server.ts | 2 +- .../services/unkey/redisCacheStore.server.ts | 3 +- .../app/services/vercelIntegration.server.ts | 6 +- apps/webapp/app/utils/delays.ts | 2 +- apps/webapp/app/utils/handle.ts | 2 +- apps/webapp/app/utils/json.ts | 6 +- apps/webapp/app/utils/logUtils.ts | 2 +- apps/webapp/app/utils/packets.ts | 2 +- .../app/utils/parseRequestJson.server.ts | 2 +- apps/webapp/app/utils/plain.server.ts | 3 +- apps/webapp/app/utils/regex.ts | 2 +- apps/webapp/app/utils/searchParams.ts | 3 +- apps/webapp/app/utils/timelineSpanEvents.ts | 2 +- apps/webapp/app/v3/GCRARateLimiter.server.ts | 3 +- apps/webapp/app/v3/alertsWorker.server.ts | 2 +- .../authenticatedSocketConnection.server.ts | 2 +- .../environmentVariablesRepository.server.ts | 11 +- .../app/v3/environmentVariables/repository.ts | 2 +- .../clickhouseEventRepository.server.ts | 28 +-- .../app/v3/eventRepository/common.server.ts | 8 +- .../eventRepository/eventRepository.server.ts | 30 ++-- .../eventRepository/eventRepository.types.ts | 2 +- .../app/v3/eventRepository/index.server.ts | 21 --- apps/webapp/app/v3/failedTaskRun.server.ts | 5 +- apps/webapp/app/v3/featureFlags.server.ts | 2 +- apps/webapp/app/v3/handleSocketIo.server.ts | 5 +- apps/webapp/app/v3/handleWebsockets.server.ts | 2 +- apps/webapp/app/v3/machinePresets.server.ts | 3 +- .../app/v3/marqs/concurrencyMonitor.server.ts | 7 +- apps/webapp/app/v3/marqs/devPubSub.server.ts | 3 +- .../app/v3/marqs/devQueueConsumer.server.ts | 17 +- .../v3/marqs/fairDequeuingStrategy.server.ts | 9 +- apps/webapp/app/v3/marqs/index.server.ts | 18 +- apps/webapp/app/v3/marqs/marqsKeyProducer.ts | 2 +- .../v3/marqs/sharedQueueConsumer.server.ts | 30 ++-- .../v3/marqs/v3VisibilityTimeout.server.ts | 2 +- .../app/v3/models/workerDeployment.server.ts | 7 +- .../app/v3/mollifier/mollifierGate.server.ts | 1 - .../mollifier/mollifierStaleSweep.server.ts | 5 +- apps/webapp/app/v3/otlpExporter.server.ts | 33 ++-- apps/webapp/app/v3/queueSizeLimits.server.ts | 4 +- .../webapp/app/v3/runEngineHandlers.server.ts | 13 +- apps/webapp/app/v3/schedules.ts | 2 +- .../v3/services/alerts/deliverAlert.server.ts | 2 +- .../alerts/errorAlertEvaluator.server.ts | 2 +- .../alerts/performDeploymentAlerts.server.ts | 6 +- .../app/v3/services/baseService.server.ts | 11 +- .../app/v3/services/batchTriggerV3.server.ts | 13 +- .../BillingLimitBulkCancelService.server.ts | 2 +- .../billingLimitQueuedRuns.server.ts | 3 +- ...tialEnvPauseStateForBillingLimit.server.ts | 9 +- .../v3/services/bulk/BulkActionV2.server.ts | 6 +- .../services/bulk/createBulkAction.server.ts | 2 +- .../services/bulk/performBulkAction.server.ts | 2 +- .../cancelTaskAttemptDependencies.server.ts | 3 +- .../app/v3/services/cancelTaskRunV1.server.ts | 2 +- .../changeCurrentDeployment.server.ts | 2 +- .../app/v3/services/checkSchedule.server.ts | 2 +- .../clickhousePendingVersionLookup.server.ts | 2 +- .../app/v3/services/completeAttempt.server.ts | 17 +- .../computeTemplateCreation.server.ts | 2 +- .../v3/services/concurrencySystem.server.ts | 6 +- .../app/v3/services/crashTaskRun.server.ts | 7 +- .../services/createBackgroundWorker.server.ts | 15 +- .../v3/services/createCheckpoint.server.ts | 2 +- .../createCheckpointRestoreEvent.server.ts | 6 +- ...eateDeploymentBackgroundWorkerV3.server.ts | 5 +- ...eateDeploymentBackgroundWorkerV4.server.ts | 5 +- .../services/createOrgIntegration.server.ts | 2 +- .../services/createTaskRunAttempt.server.ts | 10 +- .../app/v3/services/enqueueRun.server.ts | 7 +- .../services/executeTasksWaitingForDeploy.ts | 3 +- .../v3/services/expireEnqueuedRun.server.ts | 2 +- .../app/v3/services/finalizeTaskRun.server.ts | 6 +- .../services/initializeDeployment.server.ts | 2 +- .../v3/services/pauseEnvironment.server.ts | 2 +- .../app/v3/services/pauseQueue.server.ts | 2 +- .../app/v3/services/projectPubSub.server.ts | 3 +- .../v3/services/rescheduleTaskRun.server.ts | 4 +- .../app/v3/services/resumeAttempt.server.ts | 6 +- .../app/v3/services/resumeBatchRun.server.ts | 4 +- .../services/resumeDependentParents.server.ts | 2 +- .../services/resumeTaskDependency.server.ts | 2 +- .../v3/services/setConcurrencyAddOn.server.ts | 2 +- ...ckgroundWorkerMetadataForStorage.server.ts | 4 +- .../app/v3/services/tracePubSub.server.ts | 3 +- .../app/v3/services/triggerTask.server.ts | 6 +- .../app/v3/services/triggerTaskV1.server.ts | 15 +- .../v3/services/updateFatalRunError.server.ts | 3 +- .../worker/workerGroupService.server.ts | 5 +- .../worker/workerGroupTokenService.server.ts | 31 ++-- apps/webapp/app/v3/sharedSocketConnection.ts | 8 +- apps/webapp/app/v3/taskEventStore.server.ts | 3 +- .../app/v3/taskRunHeartbeatFailed.server.ts | 2 +- apps/webapp/app/v3/tracing.server.ts | 8 +- .../webapp/app/v3/utils/queueLimits.server.ts | 2 +- apps/webapp/app/v3/utils/zodPubSub.server.ts | 10 +- apps/webapp/memory-leak-detector.js | 2 +- apps/webapp/prisma/populate.ts | 10 +- apps/webapp/seed.mts | 3 +- apps/webapp/server.ts | 9 +- apps/webapp/tailwind.config.js | 8 +- apps/webapp/test/auth-api.e2e.full.test.ts | 15 -- .../authorizationRateLimitMiddleware.test.ts | 3 +- apps/webapp/test/billingAlertsFormat.test.ts | 3 +- .../webapp/test/calculateNextSchedule.test.ts | 36 ++-- .../createDeploymentWithNextVersion.test.ts | 2 +- apps/webapp/test/detectbadJsonStrings.test.ts | 7 - apps/webapp/test/engine/batchPayloads.test.ts | 4 +- .../test/engine/streamBatchItems.test.ts | 2 +- apps/webapp/test/engine/triggerTask.test.ts | 6 +- .../webapp/test/fairDequeuingStrategy.test.ts | 10 +- .../test/findOrCreateBackgroundWorker.test.ts | 4 +- .../fixtures/environmentVariablesFixtures.ts | 2 +- apps/webapp/test/marqsKeyProducer.test.ts | 2 +- .../test/mollifierMutateWithFallback.test.ts | 73 ++++---- apps/webapp/test/otlpExporter.test.ts | 11 +- apps/webapp/test/realtimeClient.test.ts | 2 +- apps/webapp/test/redisRealtimeStreams.test.ts | 2 +- apps/webapp/test/runsBackfiller.test.ts | 2 +- .../test/runsReplicationBenchmark.test.ts | 8 +- .../test/runsReplicationService.part1.test.ts | 7 +- .../test/runsReplicationService.part2.test.ts | 4 +- .../test/runsReplicationService.part3.test.ts | 3 +- .../test/runsReplicationService.part4.test.ts | 3 +- .../test/runsReplicationService.part5.test.ts | 5 +- .../test/runsReplicationService.part6.test.ts | 5 +- .../test/runsReplicationService.part7.test.ts | 5 +- apps/webapp/test/runsRepository.part1.test.ts | 6 +- apps/webapp/test/runsRepository.part2.test.ts | 2 +- apps/webapp/test/runsRepository.part3.test.ts | 6 +- apps/webapp/test/slackErrorAlerts.test.ts | 6 +- apps/webapp/test/timelineSpanEvents.test.ts | 2 +- apps/webapp/test/utils/marqs.ts | 4 +- apps/webapp/test/utils/replicationUtils.ts | 4 +- .../cache/src/stores/lruMemory.test.ts | 4 +- internal-packages/cache/src/stores/redis.ts | 3 +- .../clickhouse/src/client/client.ts | 5 +- .../clickhouse/src/client/noop.ts | 8 +- .../clickhouse/src/client/queryBuilder.ts | 4 +- .../clickhouse/src/client/tsql.ts | 14 +- .../clickhouse/src/client/types.ts | 9 +- internal-packages/clickhouse/src/errors.ts | 4 +- internal-packages/clickhouse/src/index.ts | 2 +- .../clickhouse/src/llmMetrics.ts | 2 +- internal-packages/clickhouse/src/metrics.ts | 2 +- internal-packages/clickhouse/src/sessions.ts | 4 +- .../clickhouse/src/taskEvents.ts | 4 +- .../clickhouse/src/taskRuns.test.ts | 2 +- internal-packages/clickhouse/src/taskRuns.ts | 4 +- internal-packages/clickhouse/src/tsql.test.ts | 2 +- internal-packages/database/src/transaction.ts | 4 +- .../emails/emails/bulk-action-complete.tsx | 17 +- .../emails/emails/deployment-failure.tsx | 4 +- .../emails/emails/deployment-success.tsx | 4 +- internal-packages/emails/emails/welcome.tsx | 2 +- internal-packages/emails/src/index.tsx | 5 +- .../emails/src/transports/aws-ses.ts | 3 +- .../emails/src/transports/index.ts | 14 +- .../emails/src/transports/null.ts | 2 +- .../emails/src/transports/resend.ts | 3 +- .../emails/src/transports/smtp.ts | 3 +- .../llm-model-catalog/src/types.ts | 2 - .../otlp-importer/scripts/submodule.mjs | 6 +- internal-packages/replication/src/client.ts | 17 +- internal-packages/replication/src/pgoutput.ts | 1 - .../run-engine/src/batch-queue/types.ts | 8 +- .../run-engine/src/engine/errors.ts | 4 +- .../run-engine/src/engine/eventBus.ts | 12 +- .../run-engine/src/engine/index.ts | 62 ++++--- .../run-engine/src/engine/locking.ts | 18 +- .../run-engine/src/engine/machinePresets.ts | 3 +- .../run-engine/src/engine/retrying.ts | 7 +- .../run-engine/src/engine/statuses.ts | 2 +- .../src/engine/systems/batchSystem.ts | 4 +- .../src/engine/systems/checkpointSystem.ts | 14 +- .../src/engine/systems/debounceSystem.ts | 15 +- .../src/engine/systems/delayedRunSystem.ts | 6 +- .../src/engine/systems/dequeueSystem.ts | 24 ++- .../src/engine/systems/enqueueSystem.ts | 8 +- .../engine/systems/executionSnapshotSystem.ts | 8 +- .../engine/systems/pendingVersionSystem.ts | 4 +- .../src/engine/systems/runAttemptSystem.ts | 29 +-- .../run-engine/src/engine/systems/systems.ts | 20 +-- .../src/engine/systems/ttlSystem.ts | 8 +- .../src/engine/systems/waitpointSystem.ts | 12 +- .../src/engine/tests/attemptFailures.test.ts | 2 +- .../src/engine/tests/batchTrigger.test.ts | 10 +- .../engine/tests/batchTriggerAndWait.test.ts | 10 +- .../src/engine/tests/cancelling.test.ts | 6 +- .../src/engine/tests/checkpoints.test.ts | 22 +-- .../engine/tests/createFailedTaskRun.test.ts | 2 +- .../src/engine/tests/delays.test.ts | 8 +- .../src/engine/tests/dequeuing.test.ts | 6 +- .../engine/tests/getSnapshotsSince.test.ts | 24 +-- .../src/engine/tests/heartbeats.test.ts | 20 +-- .../tests/helpers/executionStateMachine.ts | 2 +- .../tests/helpers/replicaTestHelpers.ts | 3 +- .../tests/helpers/snapshotTestHelpers.ts | 2 +- .../src/engine/tests/pendingVersion.test.ts | 6 +- .../tests/postgresPendingVersionLookup.ts | 2 +- .../src/engine/tests/priority.test.ts | 10 +- .../run-engine/src/engine/tests/setup.ts | 8 +- .../src/engine/tests/trigger.test.ts | 6 +- .../src/engine/tests/triggerAndWait.test.ts | 8 +- .../run-engine/src/engine/tests/ttl.test.ts | 10 +- .../src/engine/tests/utils/engineTest.ts | 14 +- .../src/engine/tests/waitpoints.test.ts | 8 +- .../run-engine/src/engine/types.ts | 18 +- .../run-queue/fairQueueSelectionStrategy.ts | 4 +- .../run-engine/src/run-queue/index.test.ts | 10 +- .../run-engine/src/run-queue/index.ts | 31 ++-- .../run-engine/src/run-queue/keyProducer.ts | 8 +- .../src/run-queue/tests/ack.test.ts | 2 +- .../src/run-queue/tests/ckCounters.test.ts | 2 +- .../src/run-queue/tests/ckIndex.test.ts | 7 +- .../tests/concurrencySweeper.test.ts | 2 +- .../dequeueMessageFromWorkerQueue.test.ts | 2 +- .../run-queue/tests/enqueueMessage.test.ts | 2 +- .../tests/fairQueueSelectionStrategy.test.ts | 13 +- .../src/run-queue/tests/nack.test.ts | 4 +- .../tests/releaseConcurrency.test.ts | 2 +- .../tests/workerQueueResolver.test.ts | 6 +- .../src/run-queue/tests/nack.test.ts | 10 -- .../run-store/src/PostgresRunStore.test.ts | 6 +- .../schedule-engine/src/engine/index.ts | 15 +- .../schedule-engine/src/engine/types.ts | 8 +- .../test/scheduleEngine.test.ts | 2 +- .../test/scheduleEngine2.test.ts | 3 +- .../test/scheduleRecovery.test.ts | 2 +- .../src/fixtures/esm-import/test.mjs | 14 +- .../src/fixtures/typescript/test.ts | 22 +-- .../sdk-compat-tests/src/tests/import.test.ts | 6 +- internal-packages/sso/src/fallback.ts | 5 +- .../testcontainers/src/clickhouse.ts | 10 +- internal-packages/testcontainers/src/index.ts | 51 +++--- internal-packages/testcontainers/src/logs.ts | 7 +- internal-packages/testcontainers/src/minio.ts | 8 +- internal-packages/testcontainers/src/utils.ts | 9 +- internal-packages/tracing/src/index.ts | 60 ++++--- internal-packages/tsql/src/index.test.ts | 4 +- internal-packages/tsql/src/index.ts | 1 - internal-packages/tsql/src/query/ast.ts | 4 - internal-packages/tsql/src/query/database.ts | 4 +- internal-packages/tsql/src/query/parser.ts | 30 ++-- .../tsql/src/query/printer.test.ts | 32 ++-- internal-packages/tsql/src/query/printer.ts | 89 +++++----- .../tsql/src/query/printer_context.ts | 2 +- .../tsql/src/query/property_types.ts | 2 +- .../tsql/src/query/security.test.ts | 20 ++- internal-packages/zod-worker/src/index.ts | 4 +- .../zod-worker/src/pgListen.server.ts | 9 +- packages/cli-v3/e2e/e2e.test.ts | 26 ++- packages/cli-v3/e2e/fixtures.ts | 2 +- .../src/trigger/decorators.ts | 3 +- packages/cli-v3/e2e/utils.ts | 8 +- packages/cli-v3/src/apiClient.ts | 39 ++-- packages/cli-v3/src/cli/common.ts | 4 +- packages/cli-v3/src/commands/analyze.ts | 2 +- packages/cli-v3/src/commands/deploy.ts | 9 +- packages/cli-v3/src/commands/dev.ts | 41 ++--- packages/cli-v3/src/commands/env.ts | 22 +-- packages/cli-v3/src/commands/init.ts | 15 +- packages/cli-v3/src/commands/install-mcp.ts | 2 +- packages/cli-v3/src/commands/list-profiles.ts | 4 +- packages/cli-v3/src/commands/login.ts | 4 +- packages/cli-v3/src/commands/logout.ts | 4 +- packages/cli-v3/src/commands/mcp.ts | 4 +- packages/cli-v3/src/commands/mint-token.ts | 2 +- packages/cli-v3/src/commands/preview.ts | 6 +- packages/cli-v3/src/commands/promote.ts | 2 +- packages/cli-v3/src/commands/skills.ts | 8 +- packages/cli-v3/src/commands/switch.ts | 4 +- packages/cli-v3/src/commands/trigger.ts | 2 +- packages/cli-v3/src/commands/update.ts | 13 +- packages/cli-v3/src/commands/whoami.ts | 2 +- packages/cli-v3/src/commands/workers/build.ts | 15 +- .../cli-v3/src/commands/workers/create.ts | 2 +- packages/cli-v3/src/commands/workers/index.ts | 2 +- packages/cli-v3/src/commands/workers/list.ts | 2 +- packages/cli-v3/src/commands/workers/run.ts | 2 +- packages/cli-v3/src/config.ts | 7 +- packages/cli-v3/src/deploy/buildImage.ts | 8 +- packages/cli-v3/src/dev/backgroundWorker.ts | 2 +- packages/cli-v3/src/dev/devOutput.ts | 12 +- packages/cli-v3/src/dev/devSession.ts | 16 +- packages/cli-v3/src/dev/devSupervisor.ts | 60 +++---- packages/cli-v3/src/dev/lock.ts | 2 +- packages/cli-v3/src/dev/mcpServer.ts | 2 +- packages/cli-v3/src/dev/taskRunProcessPool.ts | 4 +- packages/cli-v3/src/dev/workerRuntime.ts | 8 +- .../src/entryPoints/dev-index-worker.ts | 4 +- .../src/entryPoints/dev-run-controller.ts | 18 +- .../cli-v3/src/entryPoints/dev-run-worker.ts | 52 +++--- .../entryPoints/managed-index-controller.ts | 13 +- .../src/entryPoints/managed-index-worker.ts | 4 +- .../src/entryPoints/managed-run-worker.ts | 52 +++--- .../src/entryPoints/managed/controller.ts | 7 +- .../cli-v3/src/entryPoints/managed/env.ts | 4 +- .../src/entryPoints/managed/execution.ts | 22 +-- .../cli-v3/src/entryPoints/managed/logger.ts | 4 +- .../cli-v3/src/entryPoints/managed/poller.ts | 2 +- .../src/entryPoints/managed/snapshot.test.ts | 4 +- .../src/entryPoints/managed/snapshot.ts | 9 +- .../managed/taskRunProcessProvider.ts | 7 +- .../src/executions/taskRunProcess.test.ts | 1 - .../cli-v3/src/executions/taskRunProcess.ts | 20 +-- .../src/indexing/indexWorkerManifest.ts | 7 +- .../cli-v3/src/indexing/registerResources.ts | 3 +- packages/cli-v3/src/mcp/auth.ts | 6 +- packages/cli-v3/src/mcp/capabilities.ts | 2 +- packages/cli-v3/src/mcp/context.ts | 4 +- packages/cli-v3/src/mcp/formatters.ts | 4 +- packages/cli-v3/src/mcp/logger.ts | 2 +- packages/cli-v3/src/mcp/tools.ts | 2 +- packages/cli-v3/src/mcp/tools/agentChat.ts | 8 +- packages/cli-v3/src/mcp/tools/deploys.ts | 15 +- packages/cli-v3/src/mcp/tools/orgs.ts | 6 +- .../cli-v3/src/mcp/tools/previewBranches.ts | 3 +- packages/cli-v3/src/mcp/tools/profiles.ts | 4 +- packages/cli-v3/src/mcp/tools/runs.ts | 2 +- packages/cli-v3/src/mcp/types.ts | 6 +- packages/cli-v3/src/mcp/utils.ts | 2 +- packages/cli-v3/src/runtimes/bun.ts | 2 +- packages/cli-v3/src/utilities/analyze.ts | 4 +- .../cli-v3/src/utilities/buildManifest.ts | 2 +- packages/cli-v3/src/utilities/cliOutput.ts | 3 +- packages/cli-v3/src/utilities/configFiles.ts | 6 - .../src/utilities/createFileFromTemplate.ts | 2 +- packages/cli-v3/src/utilities/eventBus.ts | 6 +- packages/cli-v3/src/utilities/fileSystem.ts | 12 +- packages/cli-v3/src/utilities/gitMeta.ts | 6 +- .../src/utilities/platformNotifications.ts | 2 +- packages/cli-v3/src/utilities/session.ts | 3 +- packages/cli-v3/src/utilities/sourceFiles.ts | 2 +- packages/cli-v3/src/utilities/taskFiles.ts | 4 +- .../cli-v3/src/utilities/tempDirectories.ts | 6 +- packages/core/src/eventFilterMatches.ts | 2 +- packages/core/src/logger.ts | 2 +- packages/core/src/v3/apiClient/core.ts | 20 +-- packages/core/src/v3/apiClient/getBranch.ts | 2 +- packages/core/src/v3/apiClient/index.ts | 144 ++++++++------- packages/core/src/v3/apiClient/runStream.ts | 29 ++- packages/core/src/v3/apiClient/stream.ts | 9 +- packages/core/src/v3/apiClient/types.ts | 4 +- .../core/src/v3/apiClientManager/index.ts | 2 +- packages/core/src/v3/apps/http.ts | 2 +- packages/core/src/v3/apps/provider.ts | 4 +- .../core/src/v3/clock/preciseWallClock.ts | 2 +- packages/core/src/v3/clock/simpleClock.ts | 2 +- packages/core/src/v3/config.ts | 2 +- packages/core/src/v3/consoleInterceptor.ts | 4 +- packages/core/src/v3/errors.ts | 19 +- packages/core/src/v3/heartbeats/api.ts | 2 +- packages/core/src/v3/heartbeats/manager.ts | 6 +- packages/core/src/v3/idempotencyKeys.ts | 2 +- packages/core/src/v3/inputStreams/index.ts | 4 +- packages/core/src/v3/inputStreams/manager.ts | 12 +- .../core/src/v3/inputStreams/noopManager.ts | 5 +- packages/core/src/v3/inputStreams/types.ts | 2 +- packages/core/src/v3/isomorphic/duration.ts | 4 +- packages/core/src/v3/lifecycleHooks/index.ts | 30 ++-- .../core/src/v3/lifecycleHooks/manager.ts | 2 +- packages/core/src/v3/lifecycleHooks/types.ts | 4 +- packages/core/src/v3/limits.ts | 2 +- packages/core/src/v3/locals/index.ts | 2 +- packages/core/src/v3/locals/manager.ts | 2 +- packages/core/src/v3/logger/index.ts | 5 +- packages/core/src/v3/logger/taskLogger.ts | 11 +- packages/core/src/v3/machines/index.ts | 2 +- .../src/v3/machines/max-old-space.test.ts | 2 +- packages/core/src/v3/otel/tracingSDK.ts | 34 ++-- packages/core/src/v3/realtimeStreams/index.ts | 2 +- .../core/src/v3/realtimeStreams/manager.ts | 50 +----- .../src/v3/realtimeStreams/noopManager.ts | 8 +- .../realtimeStreams/sessionStreamInstance.ts | 8 +- .../src/v3/realtimeStreams/streamInstance.ts | 27 +-- .../src/v3/realtimeStreams/streamsWriterV1.ts | 8 +- .../src/v3/realtimeStreams/streamsWriterV2.ts | 4 +- packages/core/src/v3/realtimeStreams/types.ts | 6 +- .../core/src/v3/resource-catalog/catalog.ts | 4 +- .../core/src/v3/resource-catalog/index.ts | 4 +- .../resource-catalog/noopResourceCatalog.ts | 4 +- .../standardResourceCatalog.ts | 6 +- .../supervisor/consumerPool.test.ts | 5 +- .../supervisor/consumerPool.ts | 14 +- .../v3/runEngineWorker/supervisor/events.ts | 4 +- .../src/v3/runEngineWorker/supervisor/http.ts | 20 ++- .../supervisor/queueConsumer.ts | 6 +- .../supervisor/scalingStrategies.test.ts | 2 +- .../supervisor/scalingStrategies.ts | 2 +- .../v3/runEngineWorker/supervisor/session.ts | 14 +- .../v3/runEngineWorker/supervisor/types.ts | 2 +- .../src/v3/runEngineWorker/supervisor/util.ts | 2 +- .../src/v3/runEngineWorker/workload/http.ts | 12 +- .../src/v3/runEngineWorker/workload/util.ts | 2 +- packages/core/src/v3/runMetadata/index.ts | 8 +- packages/core/src/v3/runMetadata/manager.ts | 13 +- .../core/src/v3/runMetadata/noopManager.ts | 10 +- .../core/src/v3/runMetadata/operations.ts | 2 +- packages/core/src/v3/runMetadata/types.ts | 6 +- .../core/src/v3/runTimelineMetrics/index.ts | 6 +- .../runTimelineMetricsManager.ts | 4 +- .../core/src/v3/runTimelineMetrics/types.ts | 2 +- packages/core/src/v3/runtime/index.ts | 2 +- packages/core/src/v3/runtime/manager.ts | 2 +- .../core/src/v3/runtime/noopRuntimeManager.ts | 6 +- .../src/v3/runtime/sharedRuntimeManager.ts | 8 +- packages/core/src/v3/schemas/api.ts | 2 +- packages/core/src/v3/schemas/checkpoints.ts | 2 +- packages/core/src/v3/schemas/fetch.ts | 2 +- packages/core/src/v3/schemas/query.ts | 5 +- packages/core/src/v3/schemas/runEngine.ts | 3 +- packages/core/src/v3/schemas/schemas.ts | 2 +- .../src/v3/serverOnly/checkpointClient.ts | 10 +- packages/core/src/v3/serverOnly/httpServer.ts | 3 +- .../core/src/v3/serverOnly/resourceMonitor.ts | 4 +- packages/core/src/v3/sessionStreams/index.ts | 4 +- .../core/src/v3/sessionStreams/manager.ts | 15 +- .../core/src/v3/sessionStreams/noopManager.ts | 4 +- packages/core/src/v3/sessionStreams/types.ts | 9 +- packages/core/src/v3/taskContext/index.ts | 6 +- .../core/src/v3/taskContext/otelProcessors.ts | 10 +- packages/core/src/v3/taskContext/types.ts | 2 +- .../v3/test/test-realtime-streams-manager.ts | 6 +- .../v3/test/test-session-stream-manager.ts | 7 +- packages/core/src/v3/timeout/api.ts | 2 +- .../src/v3/timeout/usageTimeoutManager.ts | 5 +- packages/core/src/v3/traceContext/api.ts | 5 +- packages/core/src/v3/traceContext/manager.ts | 5 +- packages/core/src/v3/traceContext/types.ts | 2 +- packages/core/src/v3/tracer.ts | 18 +- packages/core/src/v3/types/index.ts | 14 +- packages/core/src/v3/types/tasks.ts | 24 +-- packages/core/src/v3/types/tools.ts | 2 +- packages/core/src/v3/usage/devUsageManager.ts | 5 +- .../core/src/v3/usage/noopUsageManager.ts | 2 +- .../core/src/v3/usage/prodUsageManager.ts | 2 +- packages/core/src/v3/utils/durations.ts | 3 +- .../core/src/v3/utils/flattenAttributes.ts | 7 +- packages/core/src/v3/utils/globals.ts | 34 ++-- packages/core/src/v3/utils/ioSerialization.ts | 10 +- packages/core/src/v3/utils/retries.ts | 2 +- packages/core/src/v3/utils/styleAttributes.ts | 4 +- packages/core/src/v3/waitUntil/index.ts | 2 +- packages/core/src/v3/waitUntil/manager.ts | 2 +- packages/core/src/v3/workers/taskExecutor.ts | 28 +-- .../core/src/v3/workers/warmStartClient.ts | 3 +- packages/core/src/v3/zodIpc.ts | 15 +- packages/core/src/v3/zodMessageHandler.ts | 2 +- packages/core/src/v3/zodNamespace.ts | 9 +- packages/core/src/v3/zodSocket.ts | 7 +- packages/core/test/duration.test.ts | 4 +- packages/core/test/runStream.test.ts | 5 +- packages/core/test/streamsWriterV1.test.ts | 5 +- packages/core/test/taskExecutor.test.ts | 7 +- packages/python/src/extension.ts | 4 +- packages/python/src/index.ts | 5 +- .../react-hooks/src/hooks/useApiClient.ts | 3 +- .../src/hooks/useInputStreamSend.ts | 3 +- packages/react-hooks/src/hooks/useRealtime.ts | 10 +- packages/react-hooks/src/hooks/useRun.ts | 5 +- .../react-hooks/src/hooks/useTaskTrigger.ts | 10 +- .../react-hooks/src/hooks/useWaitToken.ts | 3 +- packages/react-hooks/src/utils/trigger-swr.ts | 2 +- packages/redis-worker/src/fair-queue/index.ts | 25 ++- .../redis-worker/src/fair-queue/scheduler.ts | 2 +- .../src/fair-queue/schedulers/drr.ts | 2 +- .../src/fair-queue/schedulers/weighted.ts | 2 +- .../src/fair-queue/tests/drr.test.ts | 2 +- .../src/fair-queue/tests/fairQueue.test.ts | 4 +- .../fair-queue/tests/raceConditions.test.ts | 13 +- .../fair-queue/tests/tenantDispatch.test.ts | 8 +- .../src/fair-queue/tests/visibility.test.ts | 8 +- .../redis-worker/src/fair-queue/visibility.ts | 2 +- packages/redis-worker/src/mollifier/buffer.ts | 3 +- .../redis-worker/src/mollifier/drainer.ts | 5 +- packages/redis-worker/src/queue.ts | 2 +- packages/redis-worker/src/worker.test.ts | 10 +- packages/redis-worker/src/worker.ts | 14 +- packages/rsc/src/build.ts | 2 +- packages/schema-to-json/src/index.ts | 2 +- packages/trigger-sdk/src/v3/ai.ts | 91 +++++----- packages/trigger-sdk/src/v3/auth.ts | 4 +- packages/trigger-sdk/src/v3/batch.ts | 11 +- packages/trigger-sdk/src/v3/chat-react.ts | 10 +- packages/trigger-sdk/src/v3/chat-server.ts | 2 +- packages/trigger-sdk/src/v3/chat.test.ts | 46 +---- packages/trigger-sdk/src/v3/deployments.ts | 12 +- packages/trigger-sdk/src/v3/envvars.ts | 2 - packages/trigger-sdk/src/v3/metadata.ts | 4 +- packages/trigger-sdk/src/v3/query.ts | 7 +- packages/trigger-sdk/src/v3/queues.ts | 12 +- packages/trigger-sdk/src/v3/retry.ts | 10 +- packages/trigger-sdk/src/v3/runs.ts | 6 +- .../trigger-sdk/src/v3/schedules/index.ts | 9 +- packages/trigger-sdk/src/v3/sessions.ts | 18 +- packages/trigger-sdk/src/v3/shared.ts | 168 ++++++++---------- packages/trigger-sdk/src/v3/streams.test.ts | 11 +- packages/trigger-sdk/src/v3/streams.ts | 27 ++- .../src/v3/test/test-session-handle.ts | 9 +- .../src/v3/triggerClient.types.test.ts | 7 +- packages/trigger-sdk/src/v3/wait.ts | 18 +- packages/trigger-sdk/src/v3/webhooks.ts | 2 +- .../trigger-sdk/test/mockChatAgent.test.ts | 4 +- .../trigger-sdk/test/promptCaching.test.ts | 4 +- .../trigger-sdk/test/recovery-boot.test.ts | 9 +- .../test/replay-session-out.test.ts | 15 -- scripts/analyze_marqs.mjs | 1 - scripts/recover-stuck-runs.ts | 3 +- scripts/updateVersion.ts | 2 +- 846 files changed, 3194 insertions(+), 3571 deletions(-) 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 7e030861794..616317c0094 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 81cf8badce4..c72a8e36cd1 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 9c53db31bef..a1f001897b4 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 00dcd4bfba4..5fb9c92bb9c 100644 --- a/internal-packages/clickhouse/src/taskRuns.test.ts +++ b/internal-packages/clickhouse/src/taskRuns.test.ts @@ -492,7 +492,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 cbcd6260b42..38ef07c032e 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 8e4f75b985c..300e794242e 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("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) => { From e49f74e0c672701c4c694235bef580f6041586c9 Mon Sep 17 00:00:00 2001 From: Chris Arderne Date: Thu, 2 Jul 2026 12:22:09 +0100 Subject: [PATCH 02/46] chore(webapp): enable dev branches for everyone (#4106) Remove the `devBranchesEnabled` feature flag and enable behaviour by default. --- .../app/components/navigation/EnvironmentSelector.tsx | 8 +------- apps/webapp/app/v3/featureFlags.ts | 3 --- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/apps/webapp/app/components/navigation/EnvironmentSelector.tsx b/apps/webapp/app/components/navigation/EnvironmentSelector.tsx index 40174acfe07..58c3aae5a0a 100644 --- a/apps/webapp/app/components/navigation/EnvironmentSelector.tsx +++ b/apps/webapp/app/components/navigation/EnvironmentSelector.tsx @@ -58,8 +58,6 @@ export function EnvironmentSelector({ }, [navigation.location?.pathname]); const hasStaging = project.environments.some((env) => env.type === "STAGING"); - const devBranchesEnabled = Boolean(organization.featureFlags?.devBranchesEnabled); - return ( setIsMenuOpen(open)} open={isMenuOpen}> env.parentEnvironmentId === null) .map((env) => { - // DEVELOPMENT is only branchable in the UI when the org has the - // multi-branch dev flag on. Without it, dev renders as a plain - // selector button (the original behavior). PREVIEW is unaffected. - const renderAsBranchable = - isBranchableEnvironment(env) && (env.type !== "DEVELOPMENT" || devBranchesEnabled); + const renderAsBranchable = isBranchableEnvironment(env); if (renderAsBranchable) { const branchEnvironments = project.environments.filter( diff --git a/apps/webapp/app/v3/featureFlags.ts b/apps/webapp/app/v3/featureFlags.ts index 31fe3792f3e..46434bebf30 100644 --- a/apps/webapp/app/v3/featureFlags.ts +++ b/apps/webapp/app/v3/featureFlags.ts @@ -17,7 +17,6 @@ export const FEATURE_FLAG = { computeMigrationFreePercentage: "computeMigrationFreePercentage", computeMigrationPaidPercentage: "computeMigrationPaidPercentage", computeMigrationRequireTemplate: "computeMigrationRequireTemplate", - devBranchesEnabled: "devBranchesEnabled", } as const; export const FeatureFlagCatalog = { @@ -48,8 +47,6 @@ export const FeatureFlagCatalog = { // When on, migrated orgs build their compute template in required mode at deploy // (fails the deploy on error) instead of shadow. Strict boolean (see above). [FEATURE_FLAG.computeMigrationRequireTemplate]: z.boolean(), - // Per-org access to development branches. Off unless enabled for the org. - [FEATURE_FLAG.devBranchesEnabled]: z.coerce.boolean(), }; export type FeatureFlagKey = keyof typeof FeatureFlagCatalog; From cbd1060aeb1a7b24d153b60f1d287218db613be5 Mon Sep 17 00:00:00 2001 From: Chris Arderne Date: Thu, 2 Jul 2026 14:10:53 +0100 Subject: [PATCH 03/46] chore: move remaining ci to blacksmith (#4108) --- .github/workflows/changesets-pr.yml | 2 +- .github/workflows/check-review-md.yml | 2 +- .github/workflows/claude-md-audit.yml | 2 +- .github/workflows/claude.yml | 2 +- .github/workflows/dependabot-critical-alerts.yml | 2 +- .github/workflows/dependabot-weekly-summary.yml | 2 +- .github/workflows/helm-prerelease.yml | 2 +- .github/workflows/pr_checks.yml | 4 ++-- .github/workflows/preview-dispatch.yml | 2 +- .github/workflows/preview-packages.yml | 2 +- .github/workflows/publish-docs.yml | 2 +- .github/workflows/publish-webapp.yml | 2 +- .github/workflows/publish-worker-v4.yml | 4 ++-- .github/workflows/publish.yml | 2 +- .github/workflows/release-helm.yml | 4 ++-- .github/workflows/release.yml | 10 +++++----- .github/workflows/vouch-check-pr.yml | 4 ++-- .github/workflows/vouch-manage-by-issue.yml | 2 +- 18 files changed, 26 insertions(+), 26 deletions(-) diff --git a/.github/workflows/changesets-pr.yml b/.github/workflows/changesets-pr.yml index 29dd93c88d5..efc1a0eaa26 100644 --- a/.github/workflows/changesets-pr.yml +++ b/.github/workflows/changesets-pr.yml @@ -18,7 +18,7 @@ concurrency: jobs: release-pr: name: Create Release PR - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: write pull-requests: write diff --git a/.github/workflows/check-review-md.yml b/.github/workflows/check-review-md.yml index fa69c55b3fc..5fe7d483c0a 100644 --- a/.github/workflows/check-review-md.yml +++ b/.github/workflows/check-review-md.yml @@ -20,7 +20,7 @@ jobs: vars.ENABLE_CLAUDE_CODE != 'false' && github.event.pull_request.draft == false && github.event.pull_request.head.repo.full_name == github.repository - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: read pull-requests: write diff --git a/.github/workflows/claude-md-audit.yml b/.github/workflows/claude-md-audit.yml index e3e081a3f2d..883da3ee1ef 100644 --- a/.github/workflows/claude-md-audit.yml +++ b/.github/workflows/claude-md-audit.yml @@ -21,7 +21,7 @@ jobs: vars.ENABLE_CLAUDE_CODE != 'false' && github.event.pull_request.draft == false && github.event.pull_request.head.repo.full_name == github.repository - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: read pull-requests: write diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml index 15a4ab7e6e1..5a2355980eb 100644 --- a/.github/workflows/claude.yml +++ b/.github/workflows/claude.yml @@ -22,7 +22,7 @@ jobs: (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude'))) ) - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: write pull-requests: write diff --git a/.github/workflows/dependabot-critical-alerts.yml b/.github/workflows/dependabot-critical-alerts.yml index 9a61387324d..825cece2cc1 100644 --- a/.github/workflows/dependabot-critical-alerts.yml +++ b/.github/workflows/dependabot-critical-alerts.yml @@ -29,7 +29,7 @@ jobs: # the Dependabot alert/summary notifiers — e.g. forks/mirrors that lack the # DEPENDABOT_ALERTS_TOKEN / SLACK_BOT_TOKEN secrets. Defaults to enabled. if: ${{ vars.ENABLE_DEPENDABOT_ALERTS != 'false' }} - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 environment: dependabot-summary env: SEVERITY: ${{ inputs.severity || 'critical' }} diff --git a/.github/workflows/dependabot-weekly-summary.yml b/.github/workflows/dependabot-weekly-summary.yml index d7b489d55da..a1b9e1a5eee 100644 --- a/.github/workflows/dependabot-weekly-summary.yml +++ b/.github/workflows/dependabot-weekly-summary.yml @@ -23,7 +23,7 @@ jobs: # the Dependabot alert/summary notifiers — e.g. forks/mirrors that lack the # DEPENDABOT_ALERTS_TOKEN / SLACK_BOT_TOKEN secrets. Defaults to enabled. if: ${{ vars.ENABLE_DEPENDABOT_ALERTS != 'false' }} - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 environment: dependabot-summary env: # Severities surface in the actions list when their remaining TTR drops diff --git a/.github/workflows/helm-prerelease.yml b/.github/workflows/helm-prerelease.yml index e841a8d081e..ba42949906e 100644 --- a/.github/workflows/helm-prerelease.yml +++ b/.github/workflows/helm-prerelease.yml @@ -77,7 +77,7 @@ jobs: ((github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || github.event_name == 'push' || github.event_name == 'workflow_dispatch') - runs-on: blacksmith-4vcpu-ubuntu-2404 + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: read packages: write diff --git a/.github/workflows/pr_checks.yml b/.github/workflows/pr_checks.yml index 4dce7311e9d..be0f0773d29 100644 --- a/.github/workflows/pr_checks.yml +++ b/.github/workflows/pr_checks.yml @@ -15,7 +15,7 @@ permissions: jobs: changes: name: Detect changes - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 outputs: code: ${{ steps.code_filter.outputs.code }} typecheck_self: ${{ steps.filter.outputs.typecheck_self }} @@ -168,7 +168,7 @@ jobs: - e2e - sdk-compat if: always() - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - name: Verify all checks run: | diff --git a/.github/workflows/preview-dispatch.yml b/.github/workflows/preview-dispatch.yml index 3f26c66cf33..bfd501e1eb1 100644 --- a/.github/workflows/preview-dispatch.yml +++ b/.github/workflows/preview-dispatch.yml @@ -20,7 +20,7 @@ permissions: {} jobs: dispatch: name: Dispatch preview-deploy to cloud - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 # label added -> create # new commit while labeled -> update # label removed / PR closed -> destroy diff --git a/.github/workflows/preview-packages.yml b/.github/workflows/preview-packages.yml index 202230eb1d9..694ce1bd4dd 100644 --- a/.github/workflows/preview-packages.yml +++ b/.github/workflows/preview-packages.yml @@ -42,7 +42,7 @@ permissions: jobs: publish: name: Build and publish previews - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-ubuntu-2404 if: github.repository == 'triggerdotdev/trigger.dev' steps: - name: ⬇️ Checkout repo diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index 8a457c77dc4..7d39e65def2 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -15,7 +15,7 @@ concurrency: jobs: publish: - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - name: 📥 Checkout tagged commit uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 diff --git a/.github/workflows/publish-webapp.yml b/.github/workflows/publish-webapp.yml index 268b6c988e4..3f8c03a4166 100644 --- a/.github/workflows/publish-webapp.yml +++ b/.github/workflows/publish-webapp.yml @@ -38,7 +38,7 @@ on: jobs: publish: - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: blacksmith-2vcpu-ubuntu-2404 env: PRISMA_ENGINES_CHECKSUM_IGNORE_MISSING: 1 outputs: diff --git a/.github/workflows/publish-worker-v4.yml b/.github/workflows/publish-worker-v4.yml index 1cf5fe9f89f..777919a67b7 100644 --- a/.github/workflows/publish-worker-v4.yml +++ b/.github/workflows/publish-worker-v4.yml @@ -25,7 +25,7 @@ permissions: jobs: # check-branch: - # runs-on: ubuntu-latest + # runs-on: blacksmith-2vcpu-ubuntu-2404 # steps: # - name: Fail if re2-prod-* is pushed from a non-main branch # if: startsWith(github.ref_name, 're2-prod-') && github.base_ref != 'main' @@ -37,7 +37,7 @@ jobs: strategy: matrix: package: [supervisor] - runs-on: blacksmith-8vcpu-ubuntu-2404 + runs-on: blacksmith-2vcpu-ubuntu-2404 env: DOCKER_BUILDKIT: "1" steps: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2f2744c7702..75e11d617cc 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -128,7 +128,7 @@ jobs: name: 📣 Dispatch main image needs: [publish-webapp] if: github.repository == (vars.MAIN_IMAGE_DISPATCH_REPO || 'triggerdotdev/trigger.dev') && github.event_name == 'push' && startsWith(github.ref_name, vars.MAIN_IMAGE_DISPATCH_REF_PREFIX || 'main') - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: {} steps: - name: Build dispatch payload diff --git a/.github/workflows/release-helm.yml b/.github/workflows/release-helm.yml index bddd69cfc56..9f6fe906645 100644 --- a/.github/workflows/release-helm.yml +++ b/.github/workflows/release-helm.yml @@ -23,7 +23,7 @@ env: jobs: lint-and-test: - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: read steps: @@ -68,7 +68,7 @@ jobs: # on the owner's charts namespace. Defaults to enabled; the lint-and-test # job above always runs regardless. if: ${{ vars.ENABLE_HELM_PRERELEASE != 'false' }} - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: write # for gh-release packages: write diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7c7e08ceb84..ab49a5d6353 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,7 +32,7 @@ concurrency: jobs: show-release-summary: name: 📋 Release Summary - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: {} if: | github.repository == 'triggerdotdev/trigger.dev' && @@ -48,7 +48,7 @@ jobs: release: name: 🚀 Release npm packages - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-ubuntu-2404 environment: npm-publish permissions: contents: write @@ -211,7 +211,7 @@ jobs: name: 🔗 Update release Docker link needs: [release, publish-docker] if: needs.release.outputs.published == 'true' - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: write packages: read @@ -253,7 +253,7 @@ jobs: name: 📝 Dispatch changelog PR needs: [release, update-release] if: needs.release.outputs.published == 'true' && needs.release.outputs.is_prerelease != 'true' - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: {} steps: - uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v4.0.1 @@ -266,7 +266,7 @@ jobs: # The prerelease job needs to be on the same workflow file due to a limitation related to how npm verifies OIDC claims. prerelease: name: 🧪 Prerelease - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-ubuntu-2404 environment: npm-publish permissions: contents: read diff --git a/.github/workflows/vouch-check-pr.yml b/.github/workflows/vouch-check-pr.yml index d854b1e0ce6..de7ba439154 100644 --- a/.github/workflows/vouch-check-pr.yml +++ b/.github/workflows/vouch-check-pr.yml @@ -8,7 +8,7 @@ permissions: {} jobs: check-vouch: - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: read pull-requests: write # auto-close unvouched PRs @@ -34,7 +34,7 @@ jobs: github.event.pull_request.user.login != 'devin-ai-integration[bot]' && github.event.pull_request.user.login != 'dependabot[bot]' && github.event.pull_request.user.login != 'github-actions[bot]' - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - name: Close non-draft PR env: diff --git a/.github/workflows/vouch-manage-by-issue.yml b/.github/workflows/vouch-manage-by-issue.yml index 51bce367b3e..c9d1218466d 100644 --- a/.github/workflows/vouch-manage-by-issue.yml +++ b/.github/workflows/vouch-manage-by-issue.yml @@ -10,7 +10,7 @@ permissions: jobs: manage: - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 if: >- contains(github.event.comment.body, 'vouch') || contains(github.event.comment.body, 'denounce') || From fd4f02b2f85cf68196476141d220277084c5c79b Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Thu, 2 Jul 2026 15:34:41 +0100 Subject: [PATCH 04/46] fix(webapp): onboard new cloud orgs via plan selection; allow Free plan without GitHub verification (#4109) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What & why Two related fixes to how new cloud organizations get onboarded onto the Free plan. ### 1. Route new cloud orgs through plan selection New cloud organizations were created already activated, so they skipped the plan-selection step and went straight to creating projects — which meant their plan and usage limits were never set up. They're now created deactivated and routed through plan selection, which activates them once a plan is chosen. Self-hosted installs have no plan-selection step, so they're activated immediately on creation and are unaffected. The `Organization.v3Enabled` field is renamed to `isActivated` to better describe what it now gates. It's mapped to the existing `v3Enabled` column, so there's no data migration — only a schema/code rename. ### 2. Allow selecting the Free plan without GitHub verification Choosing the Free plan no longer requires connecting and verifying a GitHub account. The plan is applied immediately when selected. This removes: - the "Connect to GitHub" dialog and the GitHub-verified badge from the plan picker - the account-rejected state - the now-unreachable GitHub-connect return routes ## Notes - These changes pair with the corresponding change in the billing service that applies the Free plan directly; they should be released together. ## Testing Verified locally end to end: a new cloud org is routed to plan selection, the Free plan applies in one click with no GitHub step, the org is activated, its usage allowance is provisioned, and it lands on the new-project page. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- .../fix-managed-cloud-org-activation.md | 6 + apps/webapp/app/models/admin.server.ts | 2 +- apps/webapp/app/models/organization.server.ts | 7 +- apps/webapp/app/models/project.server.ts | 4 +- .../route.tsx | 39 -- .../route.tsx | 44 -- .../route.tsx | 8 +- .../route.tsx | 3 +- ...ces.orgs.$organizationSlug.select-plan.tsx | 393 ++++++------------ .../webapp/app/services/platform.v3.server.ts | 21 +- .../test/helpers/seedTestEnvironment.ts | 2 +- .../test/helpers/seedTestUserProject.ts | 2 +- apps/webapp/test/member.server.test.ts | 2 +- .../database/prisma/schema.prisma | 2 +- 14 files changed, 162 insertions(+), 373 deletions(-) create mode 100644 .server-changes/fix-managed-cloud-org-activation.md delete mode 100644 apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_failed/route.tsx delete mode 100644 apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_success/route.tsx diff --git a/.server-changes/fix-managed-cloud-org-activation.md b/.server-changes/fix-managed-cloud-org-activation.md new file mode 100644 index 00000000000..e9f395ffc66 --- /dev/null +++ b/.server-changes/fix-managed-cloud-org-activation.md @@ -0,0 +1,6 @@ +--- +area: webapp +type: fix +--- + +Select plan flow when creating an org. Don't require GitHub verification to access the free plan. diff --git a/apps/webapp/app/models/admin.server.ts b/apps/webapp/app/models/admin.server.ts index 4963a0befc2..406845e5859 100644 --- a/apps/webapp/app/models/admin.server.ts +++ b/apps/webapp/app/models/admin.server.ts @@ -131,7 +131,7 @@ export async function adminGetOrganizations(userId: string, { page, search }: Se slug: true, title: true, v2Enabled: true, - v3Enabled: true, + isActivated: true, deletedAt: true, members: { select: { diff --git a/apps/webapp/app/models/organization.server.ts b/apps/webapp/app/models/organization.server.ts index 79c1ef1b261..a4b8a8ab5f5 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: { @@ -102,7 +102,10 @@ export async function createOrganization( role: "ADMIN", }, }, - v3Enabled: true, + // Managed-cloud orgs start deactivated so they're routed through + // select-plan, which provisions their billing entitlement and activates + // them. Self-hosters have no billing gate, so they're active immediately. + isActivated: !features.isManagedCloud, }, include: { members: true, diff --git a/apps/webapp/app/models/project.server.ts b/apps/webapp/app/models/project.server.ts index 5f07d4d28cf..a9feb394754 100644 --- a/apps/webapp/app/models/project.server.ts +++ b/apps/webapp/app/models/project.server.ts @@ -32,7 +32,7 @@ export async function createProject( select: { id: true, slug: true, - v3Enabled: true, + isActivated: true, maximumConcurrencyLimit: true, maximumProjectCount: true, }, @@ -49,7 +49,7 @@ export async function createProject( } if (version === "v3") { - if (!organization.v3Enabled) { + if (!organization.isActivated) { throw new Error(`Organization can't create v3 projects.`); } } 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 deleted file mode 100644 index 941f7e4d9c5..00000000000 --- a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_failed/route.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import type { LoaderFunctionArgs } from "@remix-run/server-runtime"; -import { z } from "zod"; -import { prisma } from "~/db.server"; -import { redirectWithErrorMessage } from "~/models/message.server"; -import { newProjectPath } from "~/utils/pathBuilder"; - -const ParamsSchema = z.object({ - organizationId: z.string(), -}); - -export const loader = async ({ request, params }: LoaderFunctionArgs) => { - const { organizationId } = ParamsSchema.parse(params); - - const org = await prisma.organization.findFirst({ - select: { - slug: true, - _count: { - select: { - projects: true, - }, - }, - }, - where: { - id: organizationId, - }, - }); - - if (!org) { - throw new Response(null, { status: 404 }); - } - - const url = new URL(request.url); - const searchParams = new URLSearchParams(url.search); - const reason = searchParams.get("reason"); - - let errorMessage = reason ? decodeURIComponent(reason) : "Failed to verify your GitHub account"; - - return redirectWithErrorMessage(newProjectPath({ slug: org.slug }), request, errorMessage); -}; 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 deleted file mode 100644 index fb7a005061a..00000000000 --- a/apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_success/route.tsx +++ /dev/null @@ -1,44 +0,0 @@ -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, v3BillingPath } from "~/utils/pathBuilder"; - -const ParamsSchema = z.object({ - organizationId: z.string(), -}); - -export const loader = async ({ request, params }: LoaderFunctionArgs) => { - const { organizationId } = ParamsSchema.parse(params); - - const org = await prisma.organization.findFirst({ - select: { - slug: true, - _count: { - select: { - projects: true, - }, - }, - }, - where: { - id: organizationId, - }, - }); - - if (!org) { - throw new Response(null, { status: 404 }); - } - - const hasProject = org._count.projects > 0; - - if (hasProject) { - return redirectWithSuccessMessage( - v3BillingPath({ slug: org.slug }), - request, - "Free tier unlocked successfully." - ); - } - - return redirect(newProjectPath({ slug: org.slug }, "You're on the Free plan.")); -}; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx index edc625f128e..b5b97a0bb69 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx @@ -118,7 +118,7 @@ export async function loader({ params, request }: LoaderFunctionArgs) { select: { id: true, title: true, - v3Enabled: true, + isActivated: true, v2Enabled: true, hasRequestedV3: true, _count: { @@ -138,7 +138,7 @@ export async function loader({ params, request }: LoaderFunctionArgs) { } const { isManagedCloud } = featuresForRequest(request); - if (isManagedCloud && !organization.v3Enabled) { + if (isManagedCloud && !organization.isActivated) { return redirect(selectPlanPath({ slug: organizationSlug })); } @@ -151,7 +151,7 @@ export async function loader({ params, request }: LoaderFunctionArgs) { title: organization.title, slug: organizationSlug, projectsCount: organization._count.projects, - v3Enabled: organization.v3Enabled, + isActivated: organization.isActivated, v2Enabled: organization.v2Enabled, hasRequestedV3: organization.hasRequestedV3, }, @@ -324,7 +324,7 @@ export default function Page() { const { organization, message } = useTypedLoaderData(); const lastSubmission = useActionData(); - const canCreateV3Projects = organization.v3Enabled; + const canCreateV3Projects = organization.isActivated; const [form, { projectName, projectVersion }] = useForm({ id: "create-project", 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 cc93b7bc2df..f5658bc4d8b 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 @@ -43,7 +43,7 @@ export const loader = dashboardLoader( throw new Response(null, { status: 404, statusText: "Organization not found" }); } - if (organization.v3Enabled) { + if (organization.isActivated) { return redirect(organizationPath({ slug: organizationSlug })); } @@ -73,7 +73,6 @@ export default function ChoosePlanPage() { subscription={v3Subscription} organizationSlug={organizationSlug} hasPromotedPlan - showGithubVerificationBadge periodEnd={periodEnd} /> diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx b/apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx index b87c1bfc4c1..02bd91cb9d5 100644 --- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx +++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx @@ -1,13 +1,7 @@ -import { - CheckIcon, - ExclamationTriangleIcon, - ShieldCheckIcon, - XMarkIcon, -} from "@heroicons/react/20/solid"; +import { CheckIcon, XMarkIcon } from "@heroicons/react/20/solid"; import { ArrowDownCircleIcon, ArrowUpCircleIcon } from "@heroicons/react/24/outline"; import { Form, useLocation, useNavigation } from "@remix-run/react"; import { uiComponent } from "@team-plain/typescript-sdk"; -import { GitHubLightIcon } from "@trigger.dev/companyicons"; import { type AddOnPricing, type FreePlanDefinition, @@ -36,7 +30,6 @@ import { Paragraph } from "~/components/primitives/Paragraph"; import { Spinner } from "~/components/primitives/Spinner"; import { TextArea } from "~/components/primitives/TextArea"; import { TextLink } from "~/components/primitives/TextLink"; -import { SimpleTooltip } from "~/components/primitives/Tooltip"; import { prisma } from "~/db.server"; import { redirectWithErrorMessage } from "~/models/message.server"; import { resolveOrgIdFromSlug } from "~/models/organization.server"; @@ -171,10 +164,6 @@ const pricingDefinitions = { title: "Usage", content: "The compute cost when tasks are executing.", }, - freeUsage: { - title: "Free usage", - content: "Requires a verified GitHub account.", - }, concurrentRuns: { title: "Concurrent runs", content: "The number of runs that can be executed at the same time.", @@ -255,7 +244,6 @@ type PricingPlansProps = { subscription?: SubscriptionResult; organizationSlug: string; hasPromotedPlan: boolean; - showGithubVerificationBadge?: boolean; periodEnd: Date; }; @@ -265,7 +253,6 @@ export function PricingPlans({ subscription, organizationSlug, hasPromotedPlan, - showGithubVerificationBadge, periodEnd, }: PricingPlansProps) { return ( @@ -275,7 +262,6 @@ export function PricingPlans({ plan={plans.free} subscription={subscription} organizationSlug={organizationSlug} - showGithubVerificationBadge={showGithubVerificationBadge} periodEnd={periodEnd} /> { setIsDialogOpen(false); @@ -325,253 +308,145 @@ export function TierFree({ return ( -
- - {showGithubVerificationBadge && status === "approved" && ( - - - GitHub verified -
- } - content={ -
-
- - - verified - -
- - You have connected a verified GitHub account. This is required for the Free plan - to prevent malicious use of our platform. + + {subscription?.plan !== undefined && + subscription.plan.type !== "free" && + subscription.canceledAt === undefined ? ( + + +
+ +
+
+ +
+ + + Downgrade plan? +
+ + + Are you sure you want to downgrade? You will lose access to your current plan's + features on{" "} + .
- } - /> - )} -
- {status === "rejected" ? ( -
-
- - - Your Trigger.dev account failed to be verified for the Free plan because your GitHub - account is too new. We require verification to prevent malicious use of our platform. - - - You can still select a paid plan to continue or if you think this is a mistake,{" "} - - get in touch - - } - /> - . - -
-
- ) : ( - <> - {status === "requires_connect" ? ( - - -
- +
+
+ Why are you thinking of downgrading? +
    + {[ + "The Free plan is all I need", + "Subscription or usage costs too expensive", + "Bugs or technical issues", + "No longer need the service", + "Found a better alternative", + "Lacking features I need", + ].map((label, index) => ( +
  • + { + if (label === "Lacking features I need") { + setIsLackingFeaturesChecked(isChecked); + } + }} + /> +
  • + ))} +
- - - - - - Unlock the Free plan -
- - - To unlock the Free plan, we need to verify that you have an active GitHub - account. - - - We do this to prevent malicious use of our platform. We only ask for the - minimum permissions to verify your account. - -
- - - - -
-
- ) : subscription?.plan !== undefined && - subscription.plan.type !== "free" && - subscription.canceledAt === undefined ? ( - - -
- +
+ + {isLackingFeaturesChecked + ? "What features do you need? Or how can we improve?" + : "What can we do to improve?"} + +