From b344176c505650de8698caaa435291d52ec3c965 Mon Sep 17 00:00:00 2001 From: Chris Arderne Date: Wed, 1 Jul 2026 08:46:38 +0100 Subject: [PATCH] chore: enable more lints --- .changeset/redis-worker-oldest-message-age.md | 5 - .changeset/tidy-exec-arg-logging.md | 5 - .github/workflows/code-quality.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/e2e-webapp-auth-full.yml | 2 +- .github/workflows/e2e-webapp.yml | 2 +- .github/workflows/e2e.yml | 2 +- .github/workflows/helm-prerelease.yml | 4 +- .github/workflows/publish-webapp.yml | 2 +- .github/workflows/publish-worker-v4.yml | 2 +- .github/workflows/publish-worker.yml | 2 +- .github/workflows/sdk-compat.yml | 8 +- .github/workflows/trivy-image-webapp.yml | 2 +- .github/workflows/typecheck.yml | 2 +- .github/workflows/unit-tests-internal.yml | 4 +- .github/workflows/unit-tests-packages.yml | 4 +- .github/workflows/unit-tests-webapp.yml | 4 +- .github/workflows/workflow-checks.yml | 4 +- .oxlintrc.json | 16 +- .server-changes/conform-v1.md | 6 - apps/coordinator/src/checkpointer.ts | 4 +- apps/coordinator/src/exec.ts | 2 +- apps/coordinator/src/index.ts | 10 +- apps/coordinator/src/util.ts | 2 +- apps/docker-provider/src/index.ts | 10 +- apps/kubernetes-provider/src/index.ts | 7 +- apps/kubernetes-provider/src/labelHelper.ts | 2 +- apps/kubernetes-provider/src/taskMonitor.ts | 7 +- apps/supervisor/src/clients/kubernetes.ts | 4 +- apps/supervisor/src/index.ts | 10 +- .../src/services/failedPodHandler.test.ts | 2 +- .../src/services/failedPodHandler.ts | 7 +- .../src/services/podCleaner.test.ts | 4 +- apps/supervisor/src/services/podCleaner.ts | 5 +- .../supervisor/src/workloadManager/ecrAuth.ts | 2 +- apps/supervisor/src/workloadServer/index.ts | 15 +- .../app/components/BlankStatePanels.tsx | 6 +- .../components/BulkActionFilterSummary.tsx | 6 +- apps/webapp/app/components/Feedback.tsx | 43 ++-- apps/webapp/app/components/admin/debugRun.tsx | 3 +- .../billing/BillingAlertsSection.tsx | 24 +- .../billing/BillingLimitConfigSection.tsx | 25 +-- .../billing/BillingLimitRecoveryPanel.tsx | 21 +- .../app/components/billing/FreePlanUsage.tsx | 2 +- .../components/billing/billingAlertsFormat.ts | 10 +- .../app/components/code/ChartConfigPanel.tsx | 2 +- apps/webapp/app/components/code/CodeBlock.tsx | 3 +- .../webapp/app/components/code/TSQLEditor.tsx | 2 +- .../app/components/code/TSQLResultsTable.tsx | 2 +- .../webapp/app/components/code/chartColors.ts | 2 +- .../components/code/tsql/tsqlCompletion.ts | 2 +- .../errors/ConfigureErrorAlerts.tsx | 31 ++- .../integrations/VercelOnboardingModal.tsx | 10 +- .../app/components/logs/LogDetailView.tsx | 4 +- .../app/components/logs/LogsRunIdFilter.tsx | 4 +- apps/webapp/app/components/logs/LogsTable.tsx | 8 +- .../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 +- .../app/components/metrics/TitleWidget.tsx | 2 +- .../components/navigation/AccountSideMenu.tsx | 2 +- .../navigation/HelpAndFeedbackPopover.tsx | 15 +- .../OrganizationSettingsSideMenu.tsx | 2 +- .../app/components/navigation/SideMenu.tsx | 6 +- .../app/components/primitives/Alert.tsx | 2 +- .../app/components/primitives/Callout.tsx | 1 - .../app/components/primitives/Checkbox.tsx | 8 +- .../app/components/primitives/DateField.tsx | 2 +- .../app/components/primitives/DetailCell.tsx | 3 +- .../primitives/InputNumberStepper.tsx | 2 +- .../app/components/primitives/Label.tsx | 2 +- .../components/primitives/LocaleProvider.tsx | 3 +- .../primitives/OperatingSystemProvider.tsx | 3 +- .../app/components/primitives/Popover.tsx | 10 +- .../components/primitives/PropertyTable.tsx | 2 +- .../app/components/primitives/RadioButton.tsx | 11 +- .../primitives/SegmentedControl.tsx | 2 +- .../app/components/primitives/Select.tsx | 6 +- .../app/components/primitives/Sheet.tsx | 2 +- .../components/primitives/SimpleSelect.tsx | 2 +- .../app/components/primitives/Slider.tsx | 5 +- .../app/components/primitives/Table.tsx | 2 +- .../app/components/primitives/Timeline.tsx | 15 +- .../app/components/primitives/Tooltip.tsx | 4 +- .../components/primitives/TooltipPortal.tsx | 3 +- .../primitives/TreeView/TreeView.tsx | 17 +- .../components/primitives/TreeView/reducer.ts | 2 +- .../components/primitives/TreeView/utils.ts | 15 +- .../components/primitives/charts/ChartBar.tsx | 4 +- .../primitives/charts/ChartLine.tsx | 12 +- .../primitives/charts/ChartRoot.tsx | 2 +- .../primitives/charts/ChartZoom.tsx | 9 +- .../app/components/query/QueryEditor.tsx | 11 +- .../webapp/app/components/run/RunTimeline.tsx | 14 +- .../app/components/runs/v3/BatchFilters.tsx | 16 +- .../app/components/runs/v3/LiveTimer.tsx | 2 +- .../components/runs/v3/ReplayRunDialog.tsx | 99 ++++---- .../app/components/runs/v3/RunFilters.tsx | 6 +- .../app/components/runs/v3/RunTagInput.tsx | 2 +- .../app/components/runs/v3/SharedFilters.tsx | 2 +- .../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 +- .../app/components/runs/v3/TaskRunsTable.tsx | 2 +- .../runs/v3/WaitpointTokenFilters.tsx | 4 +- .../runs/v3/ai/extractAISpanData.ts | 2 +- .../runs/v3/ai/extractAISummarySpanData.ts | 4 +- .../schedules/PurchaseSchedulesModal.tsx | 18 +- .../sessions/v1/CloseSessionDialog.tsx | 2 - .../components/sessions/v1/SessionFilters.tsx | 4 +- apps/webapp/app/db.server.ts | 3 +- apps/webapp/app/entry.server.tsx | 8 +- apps/webapp/app/eventLoopMonitor.server.ts | 5 +- 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/member.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 | 2 +- .../app/models/runtimeEnvironment.server.ts | 2 +- 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 | 10 +- .../NewOrganizationPresenter.server.ts | 2 +- .../app/presenters/ProjectPresenter.server.ts | 7 +- .../app/presenters/SessionFilters.server.ts | 6 +- .../v3/AgentListPresenter.server.ts | 2 +- .../v3/AlertChannelListPresenter.server.ts | 2 +- .../v3/ApiBatchResultsPresenter.server.ts | 9 +- .../v3/ApiRetrieveRunPresenter.server.ts | 13 +- .../v3/ApiRunListPresenter.server.ts | 13 +- .../v3/ApiRunResultPresenter.server.ts | 6 +- .../v3/ApiWaitpointListPresenter.server.ts | 2 +- .../v3/ApiWaitpointPresenter.server.ts | 6 +- .../presenters/v3/BranchesPresenter.server.ts | 2 +- .../presenters/v3/BuiltInDashboards.server.ts | 1 - .../v3/BulkActionPresenter.server.ts | 2 +- .../EnvironmentVariablesPresenter.server.ts | 5 +- .../v3/GitHubSettingsPresenter.server.ts | 2 +- .../presenters/v3/LimitsPresenter.server.ts | 2 +- .../presenters/v3/LogsListPresenter.server.ts | 3 +- .../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 | 8 +- .../app/presenters/v3/RunPresenter.server.ts | 2 +- .../v3/RunStreamPresenter.server.ts | 5 +- .../v3/RunTagListPresenter.server.ts | 1 - .../app/presenters/v3/SpanPresenter.server.ts | 14 +- .../presenters/v3/TaskListPresenter.server.ts | 1 - .../app/presenters/v3/TaskPresenter.server.ts | 9 +- .../v3/TasksStreamPresenter.server.ts | 6 +- .../app/presenters/v3/TestPresenter.server.ts | 7 +- .../presenters/v3/TestTaskPresenter.server.ts | 6 +- .../presenters/v3/UsagePresenter.server.ts | 10 +- .../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/@.ts | 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 | 27 ++- .../route.tsx | 2 +- .../route.tsx | 52 +++-- .../route.tsx | 37 +-- .../route.tsx | 2 +- .../route.tsx | 2 +- .../route.tsx | 38 ++-- .../route.tsx | 4 +- .../route.tsx | 7 +- .../route.tsx | 86 ++++--- .../route.tsx | 6 +- .../route.tsx | 91 ++++---- .../route.tsx | 66 +++--- .../route.tsx | 24 +- .../route.tsx | 1 - .../route.tsx | 8 +- .../route.tsx | 3 +- .../route.tsx | 9 +- .../route.tsx | 4 +- .../route.tsx | 4 +- .../route.tsx | 7 +- .../TableSchemaContent.tsx | 2 +- .../route.tsx | 7 +- .../route.tsx | 2 +- .../route.tsx | 32 ++- .../route.tsx | 4 +- .../route.tsx | 8 +- .../route.tsx | 6 +- .../route.tsx | 34 +-- .../route.tsx | 42 ++-- .../route.tsx | 2 +- .../route.tsx | 1 - .../route.tsx | 212 +++++++++--------- .../route.tsx | 2 +- .../route.tsx | 10 +- .../route.tsx | 4 +- .../route.tsx | 34 +-- .../billingLimitsRoute.server.ts | 6 +- .../route.tsx | 20 +- .../route.tsx | 1 - ...ationSlug.settings.integrations.vercel.tsx | 6 +- .../route.tsx | 12 +- .../route.tsx | 34 +-- .../route.tsx | 2 +- .../route.tsx | 178 ++++++--------- .../route.tsx | 65 +++--- .../route.tsx | 2 +- .../route.tsx | 30 +-- .../route.tsx | 2 +- .../webapp/app/routes/_app.orgs.new/route.tsx | 20 +- .../app/routes/_app.timezones/route.tsx | 2 +- .../app/routes/account._index/route.tsx | 33 +-- .../route.tsx | 4 +- .../app/routes/account.tokens/route.tsx | 32 +-- ...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 | 5 +- ...i.v1.orgs.$organizationId.feature-flags.ts | 3 +- ...api.v1.orgs.$organizationId.runs.enable.ts | 12 +- ...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 | 4 +- .../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 | 2 +- ...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.deployments.ts | 2 +- apps/webapp/app/routes/api.v1.mock.ts | 4 +- .../routes/api.v1.orgs.$orgParam.projects.ts | 8 +- apps/webapp/app/routes/api.v1.orgs.ts | 2 +- ...jects.$projectRef.$env.workers.$tagName.ts | 2 +- ...ef.background-workers.$envSlug.$version.ts | 3 +- ...projects.$projectRef.background-workers.ts | 3 +- .../api.v1.projects.$projectRef.branches.ts | 2 +- ...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 | 3 +- 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 | 2 +- .../routes/api.v1.schedules.$scheduleId.ts | 5 +- apps/webapp/app/routes/api.v1.schedules.ts | 5 +- ...i.v1.sessions.$session.end-and-continue.ts | 2 +- .../app/routes/api.v1.tasks.$taskId.batch.ts | 3 +- .../routes/api.v1.tasks.$taskId.trigger.ts | 9 +- apps/webapp/app/routes/api.v1.tasks.batch.ts | 14 +- apps/webapp/app/routes/api.v1.token.ts | 6 +- apps/webapp/app/routes/api.v1.usage.ingest.ts | 2 +- ...ens.$waitpointFriendlyId.callback.$hash.ts | 4 +- ...ts.tokens.$waitpointFriendlyId.complete.ts | 2 +- ...i.v2.deployments.$deploymentId.finalize.ts | 3 +- apps/webapp/app/routes/api.v2.tasks.batch.ts | 16 +- .../routes/api.v3.batches.$batchId.items.ts | 3 +- apps/webapp/app/routes/api.v3.batches.ts | 7 +- ...i.v3.deployments.$deploymentId.finalize.ts | 3 +- .../app/routes/confirm-basic-details.tsx | 34 +-- .../app/routes/engine.v1.dev.presence.ts | 4 +- ...s.$snapshotFriendlyId.attempts.complete.ts | 9 +- ...hots.$snapshotFriendlyId.attempts.start.ts | 19 +- ...snapshots.$snapshotFriendlyId.heartbeat.ts | 7 +- ...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 +- apps/webapp/app/routes/healthcheck.tsx | 2 +- .../internal.webhooks.slack.interactivity.ts | 4 +- .../app/routes/internal.webhooks.tester.ts | 6 +- apps/webapp/app/routes/invite-resend.tsx | 8 +- apps/webapp/app/routes/invite-revoke.tsx | 8 +- apps/webapp/app/routes/invites.tsx | 41 ++-- apps/webapp/app/routes/login.mfa/route.tsx | 7 +- 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 | 4 +- 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/projects.v3.$projectRef.ts | 2 +- .../app/routes/realtime.v1.runs.$runId.ts | 1 - .../realtime.v1.streams.$runId.$streamId.ts | 2 +- ...rojectId.deployments.$deploymentId.logs.ts | 2 +- ...deployments.$deploymentShortCode.cancel.ts | 8 +- ...eployments.$deploymentShortCode.promote.ts | 14 +- ...ployments.$deploymentShortCode.rollback.ts | 14 +- .../resources.account.mfa.setup/route.tsx | 9 +- .../useMfaSetup.ts | 2 +- ...urces.batches.$batchId.check-completion.ts | 11 +- .../app/routes/resources.branches.archive.tsx | 24 +- .../app/routes/resources.branches.create.tsx | 44 ++-- apps/webapp/app/routes/resources.feedback.ts | 17 +- apps/webapp/app/routes/resources.metric.tsx | 4 +- ...cts.$projectParam.env.$envParam.github.tsx | 44 ++-- ...ojects.$projectParam.env.$envParam.logs.ts | 2 +- ...s.$projectParam.env.$envParam.presence.tsx | 4 +- ...am.runs.$runParam.idempotencyKey.reset.tsx | 2 +- .../route.tsx | 14 +- ...ectParam.env.$envParam.runs.bulkaction.tsx | 6 +- .../route.tsx | 62 +++-- ...cts.$projectParam.env.$envParam.vercel.tsx | 35 ++- .../route.tsx | 23 +- ...ctParam.schedules.new.natural-language.tsx | 3 +- ....orgs.$organizationSlug.schedules-addon.ts | 18 +- .../resources.packets.$environmentId.$.ts | 2 +- .../resources.runs.$runParam.logs.download.ts | 2 +- .../app/routes/resources.runs.$runParam.ts | 9 +- .../resources.sessions.$sessionParam.close.ts | 14 +- .../resources.taskruns.$runParam.cancel.ts | 14 +- .../resources.taskruns.$runParam.replay.ts | 12 +- .../app/routes/storybook.charts/route.tsx | 2 +- .../app/routes/storybook.filter/route.tsx | 2 +- .../app/routes/storybook.info-panel/route.tsx | 1 - .../routes/storybook.input-fields/route.tsx | 2 +- .../storybook.run-and-span-timeline/route.tsx | 9 +- .../app/routes/storybook.select/route.tsx | 2 +- .../app/routes/storybook.table/route.tsx | 2 +- .../app/routes/storybook.timeline/route.tsx | 2 +- .../app/routes/storybook.tree-view/route.tsx | 17 +- apps/webapp/app/routes/storybook/route.tsx | 4 +- apps/webapp/app/routes/tests.sse.stream.ts | 2 +- apps/webapp/app/routes/tests.sse.tsx | 2 +- .../app/routes/unsubscribe.$userId.$token.tsx | 4 +- .../runEngine/concerns/batchLimits.server.ts | 4 +- .../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 | 8 +- .../services/triggerFailedTask.server.ts | 9 +- .../runEngine/services/triggerTask.server.ts | 20 +- .../app/services/apiRateLimit.server.ts | 2 +- ...authorizationRateLimitMiddleware.server.ts | 12 +- .../services/autoIncrementCounter.server.ts | 8 +- .../betterstack/betterstack.server.ts | 2 +- .../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 +- apps/webapp/app/services/emailAuth.server.tsx | 2 +- .../app/services/engineRateLimit.server.ts | 2 +- .../metadata/updateMetadata.server.ts | 8 +- .../mfa/multiFactorAuthentication.server.ts | 4 +- .../app/services/onboardingSession.server.ts | 3 +- .../webapp/app/services/platform.v3.server.ts | 36 ++- apps/webapp/app/services/postAuth.server.ts | 2 +- .../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 | 18 +- .../realtime/runChangeNotifier.server.ts | 3 +- .../realtime/s2realtimeStreams.server.ts | 21 +- .../realtime/sessionRunManager.server.ts | 4 +- .../realtime/shadowRealtimeClient.server.ts | 2 +- .../realtime/v1StreamsGlobal.server.ts | 4 +- .../app/services/realtimeClient.server.ts | 13 +- .../app/services/requestIdempotency.server.ts | 8 +- .../routeBuilders/apiBuilder.server.ts | 24 +- .../app/services/runsBackfiller.server.ts | 4 +- .../services/runsReplicationGlobal.server.ts | 2 +- .../runsRepository/runsRepository.server.ts | 2 +- .../services/secrets/secretStore.server.ts | 3 +- .../app/services/sensitiveDataReplacer.ts | 2 +- apps/webapp/app/services/session.server.ts | 2 +- .../services/taskIdentifierRegistry.server.ts | 2 +- apps/webapp/app/services/telemetry.server.ts | 2 +- .../services/tenantContextResolver.server.ts | 2 +- .../services/unkey/redisCacheStore.server.ts | 3 +- .../app/services/vercelIntegration.server.ts | 6 +- apps/webapp/app/services/worker.server.ts | 38 ++-- 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/pathBuilder.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/sse.server.ts | 7 +- apps/webapp/app/utils/timelineSpanEvents.ts | 4 +- apps/webapp/app/v3/GCRARateLimiter.server.ts | 3 +- apps/webapp/app/v3/alertsWorker.server.ts | 2 +- .../authenticatedSocketConnection.server.ts | 4 +- .../environmentVariablesRepository.server.ts | 9 +- .../app/v3/environmentVariables/repository.ts | 2 +- .../clickhouseEventRepository.server.ts | 34 +-- .../app/v3/eventRepository/common.server.ts | 8 +- .../eventRepository/eventRepository.server.ts | 58 ++--- .../eventRepository/eventRepository.types.ts | 2 +- .../app/v3/eventRepository/index.server.ts | 2 +- apps/webapp/app/v3/failedTaskRun.server.ts | 5 +- apps/webapp/app/v3/featureFlags.server.ts | 4 +- apps/webapp/app/v3/handleSocketIo.server.ts | 9 +- 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 | 25 ++- .../v3/marqs/fairDequeuingStrategy.server.ts | 13 +- apps/webapp/app/v3/marqs/index.server.ts | 20 +- apps/webapp/app/v3/marqs/marqsKeyProducer.ts | 2 +- .../v3/marqs/sharedQueueConsumer.server.ts | 42 ++-- .../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 | 65 +----- apps/webapp/app/v3/queueSizeLimits.server.ts | 4 +- .../webapp/app/v3/runEngineHandlers.server.ts | 16 +- apps/webapp/app/v3/schedules.ts | 2 +- .../v3/services/alerts/deliverAlert.server.ts | 6 +- .../alerts/errorAlertEvaluator.server.ts | 2 +- .../alerts/performDeploymentAlerts.server.ts | 6 +- .../app/v3/services/artifacts.server.ts | 2 +- .../app/v3/services/baseService.server.ts | 11 +- .../app/v3/services/batchTriggerV3.server.ts | 15 +- .../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 | 4 +- .../cancelTaskAttemptDependencies.server.ts | 1 - .../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 | 9 +- .../v3/services/createCheckpoint.server.ts | 2 +- .../createCheckpointRestoreEvent.server.ts | 2 +- ...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 | 1 - .../v3/services/expireEnqueuedRun.server.ts | 4 +- .../app/v3/services/finalizeTaskRun.server.ts | 7 +- .../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 +- .../taskRunConcurrencyTracker.server.ts | 2 +- .../app/v3/services/tracePubSub.server.ts | 3 +- .../app/v3/services/triggerTask.server.ts | 6 +- .../app/v3/services/triggerTaskV1.server.ts | 17 +- .../v3/services/updateFatalRunError.server.ts | 3 +- .../worker/workerGroupService.server.ts | 5 +- .../worker/workerGroupTokenService.server.ts | 19 +- apps/webapp/app/v3/sharedSocketConnection.ts | 12 +- apps/webapp/app/v3/taskEventStore.server.ts | 3 +- .../app/v3/taskRunHeartbeatFailed.server.ts | 4 +- apps/webapp/app/v3/tracing.server.ts | 8 +- .../webapp/app/v3/utils/queueLimits.server.ts | 2 +- apps/webapp/app/v3/utils/zodPubSub.server.ts | 12 +- apps/webapp/evals/aiQuery.eval.ts | 2 +- apps/webapp/evals/aiRunFilter.eval.ts | 6 +- apps/webapp/memory-leak-detector.js | 4 +- apps/webapp/package.json | 4 +- apps/webapp/prisma/populate.ts | 10 +- apps/webapp/seed.mts | 3 +- apps/webapp/server.ts | 7 +- apps/webapp/tailwind.config.js | 8 +- apps/webapp/test/auth-api.e2e.full.test.ts | 2 +- .../authorizationRateLimitMiddleware.test.ts | 23 +- apps/webapp/test/billingAlertsFormat.test.ts | 1 - apps/webapp/test/billingLimitsRoute.test.ts | 26 +-- .../webapp/test/calculateNextSchedule.test.ts | 36 +-- .../createDeploymentWithNextVersion.test.ts | 2 +- apps/webapp/test/detectbadJsonStrings.test.ts | 2 +- apps/webapp/test/engine/batchPayloads.test.ts | 2 +- .../test/engine/streamBatchItems.test.ts | 2 +- apps/webapp/test/engine/triggerTask.test.ts | 32 +-- .../webapp/test/fairDequeuingStrategy.test.ts | 10 +- .../test/findOrCreateBackgroundWorker.test.ts | 4 +- .../fixtures/environmentVariablesFixtures.ts | 2 +- apps/webapp/test/marqsKeyProducer.test.ts | 2 +- .../mollifierApplyMetadataMutation.test.ts | 2 +- .../test/mollifierMutateWithFallback.test.ts | 36 +++ apps/webapp/test/mollifierStaleSweep.test.ts | 2 +- apps/webapp/test/otlpExporter.test.ts | 1 - 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 | 4 +- .../test/runsReplicationService.part1.test.ts | 6 +- .../test/runsReplicationService.part2.test.ts | 6 +- .../test/runsReplicationService.part3.test.ts | 4 +- .../test/runsReplicationService.part4.test.ts | 1 - .../test/runsReplicationService.part5.test.ts | 7 +- .../test/runsReplicationService.part6.test.ts | 5 +- .../test/runsReplicationService.part7.test.ts | 7 +- 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 | 2 + apps/webapp/test/timelineSpanEvents.test.ts | 2 +- apps/webapp/test/updateMetadata.test.ts | 24 +- apps/webapp/test/utils/marqs.ts | 4 +- apps/webapp/test/utils/replicationUtils.ts | 4 +- .../cache/src/stores/lruMemory.test.ts | 2 +- internal-packages/cache/src/stores/redis.ts | 3 +- .../clickhouse/src/client/client.ts | 5 +- .../clickhouse/src/client/noop.ts | 26 +-- .../clickhouse/src/client/queryBuilder.ts | 4 +- .../clickhouse/src/client/tsql.ts | 2 +- .../clickhouse/src/client/types.ts | 5 +- 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 | 15 +- .../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 | 5 +- .../emails/src/transports/index.ts | 14 +- .../emails/src/transports/null.ts | 4 +- .../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/redis/src/index.ts | 2 +- internal-packages/replication/src/client.ts | 14 +- internal-packages/replication/src/pgoutput.ts | 2 +- .../run-engine/src/batch-queue/types.ts | 8 +- .../run-engine/src/engine/errors.ts | 4 +- .../run-engine/src/engine/eventBus.ts | 13 +- .../run-engine/src/engine/index.ts | 38 ++-- .../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 | 6 +- .../src/engine/systems/checkpointSystem.ts | 14 +- .../src/engine/systems/debounceSystem.ts | 13 +- .../src/engine/systems/delayedRunSystem.ts | 6 +- .../src/engine/systems/dequeueSystem.ts | 20 +- .../src/engine/systems/enqueueSystem.ts | 8 +- .../engine/systems/executionSnapshotSystem.ts | 8 +- .../engine/systems/pendingVersionSystem.ts | 4 +- .../src/engine/systems/runAttemptSystem.ts | 35 +-- .../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 | 8 +- .../engine/tests/batchTriggerAndWait.test.ts | 10 +- .../src/engine/tests/batchTwoPhase.test.ts | 12 +- .../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 | 17 +- .../src/engine/tests/heartbeats.test.ts | 20 +- .../tests/helpers/executionStateMachine.ts | 2 +- .../tests/helpers/replicaTestHelpers.ts | 3 +- .../tests/helpers/snapshotTestHelpers.ts | 4 +- .../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 | 15 +- .../src/engine/tests/waitpoints.test.ts | 8 +- .../run-engine/src/engine/types.ts | 18 +- .../run-queue/fairQueueSelectionStrategy.ts | 8 +- .../run-engine/src/run-queue/index.test.ts | 10 +- .../run-engine/src/run-queue/index.ts | 35 +-- .../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 | 6 +- .../tests/concurrencySweeper.test.ts | 4 +- .../dequeueMessageFromWorkerQueue.test.ts | 2 +- .../run-queue/tests/enqueueMessage.test.ts | 2 +- .../tests/fairQueueSelectionStrategy.test.ts | 13 +- .../tests/migrateLegacyMasterQueue.test.ts | 2 +- .../src/run-queue/tests/nack.test.ts | 4 +- .../tests/releaseConcurrency.test.ts | 2 +- .../tests/workerQueueResolver.test.ts | 3 +- .../src/run-queue/tests/nack.test.ts | 10 - .../run-store/src/PostgresRunStore.test.ts | 2 + .../schedule-engine/src/engine/index.ts | 15 +- .../schedule-engine/src/engine/types.ts | 8 +- .../test/scheduleEngine.test.ts | 2 +- .../test/scheduleEngine2.test.ts | 4 +- .../test/scheduleRecovery.test.ts | 2 +- .../fixtures/cloudflare-worker/src/index.ts | 2 +- .../src/fixtures/esm-import/test.mjs | 2 + .../src/fixtures/typescript/test.ts | 22 +- .../sdk-compat-tests/src/tests/import.test.ts | 4 +- internal-packages/sso/src/fallback.ts | 2 + .../testcontainers/src/clickhouse.ts | 10 +- internal-packages/testcontainers/src/index.ts | 32 ++- 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 | 22 +- 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 | 6 +- internal-packages/tsql/src/query/parser.ts | 34 ++- .../tsql/src/query/printer.test.ts | 32 +-- internal-packages/tsql/src/query/printer.ts | 22 +- .../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 | 12 +- .../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 | 1 - .../packages/email/src/emails.tsx | 2 +- packages/cli-v3/e2e/utils.ts | 12 +- 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 | 17 +- packages/cli-v3/src/commands/env.ts | 4 +- packages/cli-v3/src/commands/init.ts | 19 +- packages/cli-v3/src/commands/install-mcp.ts | 2 +- packages/cli-v3/src/commands/list-profiles.ts | 6 +- packages/cli-v3/src/commands/login.ts | 4 +- packages/cli-v3/src/commands/logout.ts | 4 +- packages/cli-v3/src/commands/mcp.ts | 3 +- packages/cli-v3/src/commands/mint-token.ts | 2 +- packages/cli-v3/src/commands/preview.ts | 5 +- packages/cli-v3/src/commands/promote.ts | 2 +- packages/cli-v3/src/commands/skills.ts | 8 +- packages/cli-v3/src/commands/switch.ts | 6 +- packages/cli-v3/src/commands/trigger.ts | 2 +- packages/cli-v3/src/commands/update.ts | 17 +- packages/cli-v3/src/commands/whoami.ts | 2 +- packages/cli-v3/src/commands/workers/build.ts | 9 +- .../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 | 12 +- packages/cli-v3/src/dev/backgroundWorker.ts | 2 +- packages/cli-v3/src/dev/devOutput.ts | 22 +- packages/cli-v3/src/dev/devSession.ts | 20 +- packages/cli-v3/src/dev/devSupervisor.ts | 31 +-- 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 | 11 +- .../src/entryPoints/dev-run-controller.ts | 24 +- .../cli-v3/src/entryPoints/dev-run-worker.ts | 24 +- .../entryPoints/managed-index-controller.ts | 11 +- .../src/entryPoints/managed-index-worker.ts | 11 +- .../src/entryPoints/managed-run-worker.ts | 24 +- .../src/entryPoints/managed/controller.ts | 7 +- .../cli-v3/src/entryPoints/managed/env.ts | 6 +- .../src/entryPoints/managed/execution.ts | 28 ++- .../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 | 25 ++- .../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 | 4 +- packages/cli-v3/src/mcp/tools/orgs.ts | 6 +- .../cli-v3/src/mcp/tools/previewBranches.ts | 2 +- 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 | 4 +- packages/cli-v3/src/rules/manifest.ts | 2 +- packages/cli-v3/src/runtimes/bun.ts | 2 +- packages/cli-v3/src/utilities/analyze.ts | 6 +- .../cli-v3/src/utilities/buildManifest.ts | 4 +- packages/cli-v3/src/utilities/cliOutput.ts | 3 +- packages/cli-v3/src/utilities/configFiles.ts | 2 +- .../src/utilities/createFileFromTemplate.ts | 2 +- packages/cli-v3/src/utilities/eventBus.ts | 6 +- packages/cli-v3/src/utilities/fileSystem.ts | 10 +- packages/cli-v3/src/utilities/gitMeta.ts | 6 +- packages/cli-v3/src/utilities/localEnvVars.ts | 2 +- packages/cli-v3/src/utilities/logger.ts | 2 +- .../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/cli-v3/src/utilities/windows.ts | 4 +- packages/core/src/eventFilterMatches.ts | 2 +- packages/core/src/logger.ts | 2 +- packages/core/src/retry.ts | 6 +- packages/core/src/v3/apiClient/core.ts | 22 +- packages/core/src/v3/apiClient/getBranch.ts | 2 +- packages/core/src/v3/apiClient/index.ts | 101 ++++----- packages/core/src/v3/apiClient/runStream.ts | 29 ++- packages/core/src/v3/apiClient/stream.ts | 7 +- packages/core/src/v3/apiClient/types.ts | 4 +- .../core/src/v3/apiClientManager/index.ts | 2 +- packages/core/src/v3/apps/exec.test.ts | 26 --- packages/core/src/v3/apps/exec.ts | 47 +--- packages/core/src/v3/apps/http.ts | 4 +- packages/core/src/v3/apps/provider.ts | 8 +- .../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 | 4 +- packages/core/src/v3/heartbeats/manager.ts | 8 +- packages/core/src/v3/idempotencyKeys.ts | 2 +- packages/core/src/v3/inputStreams/index.ts | 4 +- packages/core/src/v3/inputStreams/manager.ts | 14 +- .../core/src/v3/inputStreams/noopManager.ts | 5 +- packages/core/src/v3/inputStreams/types.ts | 2 +- packages/core/src/v3/isomorphic/duration.ts | 6 +- packages/core/src/v3/lifecycleHooks/index.ts | 30 +-- .../core/src/v3/lifecycleHooks/manager.ts | 84 +++---- 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 | 6 +- packages/core/src/v3/logger/index.ts | 5 +- packages/core/src/v3/logger/taskLogger.ts | 13 +- 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 | 17 +- .../src/v3/realtimeStreams/noopManager.ts | 18 +- .../realtimeStreams/sessionStreamInstance.ts | 8 +- .../src/v3/realtimeStreams/streamInstance.ts | 12 +- .../src/v3/realtimeStreams/streamsWriterV1.ts | 10 +- .../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 | 32 +-- .../standardResourceCatalog.ts | 6 +- .../supervisor/consumerPool.test.ts | 5 +- .../supervisor/consumerPool.ts | 10 +- .../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 | 17 +- .../core/src/v3/runMetadata/noopManager.ts | 36 +-- .../core/src/v3/runMetadata/operations.ts | 2 +- packages/core/src/v3/runMetadata/types.ts | 6 +- .../core/src/v3/runTimelineMetrics/index.ts | 6 +- .../runTimelineMetricsManager.ts | 6 +- .../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 | 8 +- .../src/v3/runtime/sharedRuntimeManager.ts | 10 +- packages/core/src/v3/schemas/api.ts | 10 +- 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 | 9 +- packages/core/src/v3/serverOnly/httpServer.ts | 3 +- .../core/src/v3/serverOnly/resourceMonitor.ts | 4 +- .../src/v3/serverOnly/shutdownManager.test.ts | 2 +- 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 | 4 +- .../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 | 15 +- packages/core/src/v3/types/index.ts | 7 +- 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 | 4 +- packages/core/src/v3/utils/globals.ts | 34 +-- packages/core/src/v3/utils/ioSerialization.ts | 14 +- packages/core/src/v3/utils/retries.ts | 2 +- packages/core/src/v3/utils/styleAttributes.ts | 4 +- packages/core/src/v3/waitUntil/index.ts | 4 +- packages/core/src/v3/waitUntil/manager.ts | 2 +- packages/core/src/v3/workers/taskExecutor.ts | 74 +++--- .../core/src/v3/workers/warmStartClient.ts | 3 +- packages/core/src/v3/zodIpc.ts | 6 +- 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 | 7 +- packages/core/test/taskExecutor.test.ts | 103 +++++---- packages/python/src/extension.ts | 4 +- packages/python/src/index.ts | 5 +- .../react-hooks/src/hooks/useApiClient.ts | 3 +- .../src/hooks/useInputStreamSend.ts | 5 +- packages/react-hooks/src/hooks/useRealtime.ts | 10 +- packages/react-hooks/src/hooks/useRun.ts | 5 +- .../react-hooks/src/hooks/useTaskTrigger.ts | 19 +- .../react-hooks/src/hooks/useWaitToken.ts | 5 +- packages/react-hooks/src/utils/trigger-swr.ts | 2 +- packages/redis-worker/src/fair-queue/index.ts | 13 +- .../redis-worker/src/fair-queue/scheduler.ts | 2 +- .../src/fair-queue/schedulers/drr.ts | 6 +- .../src/fair-queue/schedulers/roundRobin.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.test.ts | 68 ------ packages/redis-worker/src/queue.ts | 71 +----- packages/redis-worker/src/worker.test.ts | 10 +- packages/redis-worker/src/worker.ts | 44 +--- packages/rsc/src/build.ts | 2 +- packages/schema-to-json/src/index.ts | 2 +- packages/trigger-sdk/src/v3/ai.ts | 39 ++-- packages/trigger-sdk/src/v3/auth.ts | 6 +- packages/trigger-sdk/src/v3/batch.ts | 11 +- packages/trigger-sdk/src/v3/cache.ts | 4 +- 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 | 8 +- packages/trigger-sdk/src/v3/deployments.ts | 6 +- packages/trigger-sdk/src/v3/envvars.ts | 2 - packages/trigger-sdk/src/v3/metadata.ts | 4 +- .../trigger-sdk/src/v3/promptManagement.ts | 14 +- packages/trigger-sdk/src/v3/query.ts | 7 +- packages/trigger-sdk/src/v3/queues.ts | 12 +- packages/trigger-sdk/src/v3/retry.ts | 14 +- packages/trigger-sdk/src/v3/runs.ts | 6 +- .../trigger-sdk/src/v3/schedules/index.ts | 9 +- packages/trigger-sdk/src/v3/sessions.ts | 12 +- packages/trigger-sdk/src/v3/shared.ts | 149 ++++++------ packages/trigger-sdk/src/v3/streams.test.ts | 7 +- packages/trigger-sdk/src/v3/streams.ts | 31 +-- .../src/v3/test/test-session-handle.ts | 9 +- .../src/v3/triggerClient.types.test.ts | 8 +- packages/trigger-sdk/src/v3/wait.ts | 26 ++- packages/trigger-sdk/src/v3/webhooks.ts | 2 +- .../trigger-sdk/test/mockChatAgent.test.ts | 4 +- .../trigger-sdk/test/promptCaching.test.ts | 2 +- .../trigger-sdk/test/recovery-boot.test.ts | 3 +- .../test/replay-session-out.test.ts | 2 +- pnpm-lock.yaml | 35 ++- scripts/analyze_marqs.mjs | 1 - scripts/enhance-release-pr.mjs | 2 +- scripts/recover-stuck-runs.ts | 3 +- scripts/updateVersion.ts | 2 +- 966 files changed, 4133 insertions(+), 4381 deletions(-) delete mode 100644 .changeset/redis-worker-oldest-message-age.md delete mode 100644 .changeset/tidy-exec-arg-logging.md delete mode 100644 .server-changes/conform-v1.md delete mode 100644 packages/core/src/v3/apps/exec.test.ts diff --git a/.changeset/redis-worker-oldest-message-age.md b/.changeset/redis-worker-oldest-message-age.md deleted file mode 100644 index f5f86f76e7f..00000000000 --- a/.changeset/redis-worker-oldest-message-age.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@trigger.dev/redis-worker": patch ---- - -Add a `redis_worker.queue.oldest_message_age` observable gauge (unit `ms`, labeled `worker_name`) reporting the age of the oldest overdue message in each queue. This is a generic queue-stall signal: it stays at 0 while a queue drains healthily and rises only when due work sits undrained (e.g. a blocked dequeue, a dead consumer, or backpressure), even when no items are being processed. Orphaned queue entries are resolved against the items hash so they don't report a phantom stall. Also exposes `SimpleQueue.oldestMessageAge()`. diff --git a/.changeset/tidy-exec-arg-logging.md b/.changeset/tidy-exec-arg-logging.md deleted file mode 100644 index 6f96d23ff13..00000000000 --- a/.changeset/tidy-exec-arg-logging.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@trigger.dev/core": patch ---- - -Redact credential-bearing flag values (e.g. `--password`, `--token`) from `Exec` command debug logs diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index 6fd2f73b4ab..2e6fc8ab38e 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -8,7 +8,7 @@ permissions: jobs: code-quality: - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - name: ⬇️ Checkout repo diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 0cac7c8595f..a150833d508 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -20,7 +20,7 @@ permissions: jobs: check-broken-links: - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 defaults: run: working-directory: ./docs diff --git a/.github/workflows/e2e-webapp-auth-full.yml b/.github/workflows/e2e-webapp-auth-full.yml index de9d66c07e9..f92d6a78865 100644 --- a/.github/workflows/e2e-webapp-auth-full.yml +++ b/.github/workflows/e2e-webapp-auth-full.yml @@ -37,7 +37,7 @@ on: jobs: e2eAuthFull: name: "🛡️ E2E Auth Tests (full)" - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-ubuntu-2404 timeout-minutes: 30 env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} diff --git a/.github/workflows/e2e-webapp.yml b/.github/workflows/e2e-webapp.yml index f306a86cd28..f5eafe5e380 100644 --- a/.github/workflows/e2e-webapp.yml +++ b/.github/workflows/e2e-webapp.yml @@ -14,7 +14,7 @@ on: jobs: e2eTests: name: "🧪 E2E Tests: Webapp" - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-ubuntu-2404 timeout-minutes: 20 env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index a70f0400e0a..95ee9368d9c 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest] + os: [blacksmith-4vcpu-ubuntu-2404, blacksmith-4vcpu-windows-2025] package-manager: ["npm", "pnpm"] steps: - name: ⬇️ Checkout repo diff --git a/.github/workflows/helm-prerelease.yml b/.github/workflows/helm-prerelease.yml index afdb26fb6a2..b806d9396e5 100644 --- a/.github/workflows/helm-prerelease.yml +++ b/.github/workflows/helm-prerelease.yml @@ -28,7 +28,7 @@ env: jobs: lint-and-test: - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: read steps: @@ -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: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 permissions: contents: read packages: write diff --git a/.github/workflows/publish-webapp.yml b/.github/workflows/publish-webapp.yml index 5a604e26082..b3d0ac4f0e9 100644 --- a/.github/workflows/publish-webapp.yml +++ b/.github/workflows/publish-webapp.yml @@ -38,7 +38,7 @@ on: jobs: publish: - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-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 85ca903a8d6..5fbe7cc2cec 100644 --- a/.github/workflows/publish-worker-v4.yml +++ b/.github/workflows/publish-worker-v4.yml @@ -37,7 +37,7 @@ jobs: strategy: matrix: package: [supervisor] - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-ubuntu-2404 env: DOCKER_BUILDKIT: "1" steps: diff --git a/.github/workflows/publish-worker.yml b/.github/workflows/publish-worker.yml index f443e5dab1e..bff01652d1f 100644 --- a/.github/workflows/publish-worker.yml +++ b/.github/workflows/publish-worker.yml @@ -33,7 +33,7 @@ jobs: strategy: matrix: package: [coordinator, docker-provider, kubernetes-provider] - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-ubuntu-2404 env: DOCKER_BUILDKIT: "1" DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} diff --git a/.github/workflows/sdk-compat.yml b/.github/workflows/sdk-compat.yml index 1510af23181..e8cd6659d66 100644 --- a/.github/workflows/sdk-compat.yml +++ b/.github/workflows/sdk-compat.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] + os: [blacksmith-4vcpu-ubuntu-2404] node: ["20.20", "22.12"] steps: @@ -54,7 +54,7 @@ jobs: bun-compat: name: "Bun Runtime" - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -96,7 +96,7 @@ jobs: deno-compat: name: "Deno Runtime" - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -142,7 +142,7 @@ jobs: cloudflare-compat: name: "Cloudflare Workers" - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.github/workflows/trivy-image-webapp.yml b/.github/workflows/trivy-image-webapp.yml index 7dae65ef2bf..8198919af95 100644 --- a/.github/workflows/trivy-image-webapp.yml +++ b/.github/workflows/trivy-image-webapp.yml @@ -33,7 +33,7 @@ concurrency: jobs: scan: name: Scan - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: read packages: read # pull the image from GHCR diff --git a/.github/workflows/typecheck.yml b/.github/workflows/typecheck.yml index 91ec46f3a9a..63a9144bac9 100644 --- a/.github/workflows/typecheck.yml +++ b/.github/workflows/typecheck.yml @@ -8,7 +8,7 @@ permissions: jobs: typecheck: - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-ubuntu-2404 steps: - name: ⬇️ Checkout repo diff --git a/.github/workflows/unit-tests-internal.yml b/.github/workflows/unit-tests-internal.yml index 5a0e5622159..b31cc08ba06 100644 --- a/.github/workflows/unit-tests-internal.yml +++ b/.github/workflows/unit-tests-internal.yml @@ -14,7 +14,7 @@ on: jobs: unitTests: name: "🧪 Unit Tests: Internal" - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-ubuntu-2404 strategy: # one flaky shard shouldn't cancel its siblings - lets us re-run only the failed shard fail-fast: false @@ -130,7 +130,7 @@ jobs: name: "📊 Merge Reports" if: ${{ !cancelled() }} needs: [unitTests] - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.github/workflows/unit-tests-packages.yml b/.github/workflows/unit-tests-packages.yml index 1102864c454..8ffb72af237 100644 --- a/.github/workflows/unit-tests-packages.yml +++ b/.github/workflows/unit-tests-packages.yml @@ -14,7 +14,7 @@ on: jobs: unitTests: name: "🧪 Unit Tests: Packages" - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 strategy: # one flaky shard shouldn't cancel its siblings - lets us re-run only the failed shard fail-fast: false @@ -130,7 +130,7 @@ jobs: name: "📊 Merge Reports" if: ${{ !cancelled() }} needs: [unitTests] - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.github/workflows/unit-tests-webapp.yml b/.github/workflows/unit-tests-webapp.yml index 8566014c49d..b0e9b0fb4dc 100644 --- a/.github/workflows/unit-tests-webapp.yml +++ b/.github/workflows/unit-tests-webapp.yml @@ -14,7 +14,7 @@ on: jobs: unitTests: name: "🧪 Unit Tests: Webapp" - runs-on: ubuntu-latest + runs-on: blacksmith-8vcpu-ubuntu-2404 strategy: # one flaky shard shouldn't cancel its siblings - lets us re-run only the failed shard fail-fast: false @@ -139,7 +139,7 @@ jobs: name: "📊 Merge Reports" if: ${{ !cancelled() }} needs: [unitTests] - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - name: ⬇️ Checkout repo uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.github/workflows/workflow-checks.yml b/.github/workflows/workflow-checks.yml index 797320a3138..ebd963497ce 100644 --- a/.github/workflows/workflow-checks.yml +++ b/.github/workflows/workflow-checks.yml @@ -24,7 +24,7 @@ concurrency: jobs: actionlint: name: Actionlint - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: contents: read steps: @@ -43,7 +43,7 @@ jobs: # variable to 'false' to skip this job where code scanning isn't available; # leave it unset (the default) to run the scan. if: ${{ vars.ENABLE_WORKFLOW_SECURITY_SCAN != 'false' }} - runs-on: ubuntu-latest + runs-on: blacksmith-2vcpu-ubuntu-2404 permissions: security-events: write # Upload SARIF to GitHub Security tab contents: read # Read workflow files for analysis diff --git a/.oxlintrc.json b/.oxlintrc.json index 6992bd7b8e5..f142ff1e7f9 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -11,13 +11,23 @@ "internal-packages/tsql/src/grammar/" ], "rules": { - "no-unused-vars": "off", + "no-unused-vars": [ + "error", + { + "args": "all", + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_", + "caughtErrors": "all", + "caughtErrorsIgnorePattern": "^_", + "destructuredArrayIgnorePattern": "^_" + } + ], "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/.server-changes/conform-v1.md b/.server-changes/conform-v1.md deleted file mode 100644 index 5e187829460..00000000000 --- a/.server-changes/conform-v1.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -area: webapp -type: improvement ---- - -Upgrade the dashboard form layer from `@conform-to` 0.9 to 1.x. conform 1.x supports both zod 3 and zod 4, which unblocks the upcoming zod 4 upgrade. 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..7ffc7dcafb0 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"; @@ -423,7 +423,7 @@ class TaskCoordinator { next(); }, - onConnection: async (socket, handler, sender) => { + onConnection: async (socket, _handler, _sender) => { const logger = new SimpleStructuredLogger("ns-prod-worker", undefined, { namespace: "prod-worker", socketId: socket.id, @@ -1456,7 +1456,7 @@ class TaskCoordinator { } }); }, - onDisconnect: async (socket, handler, sender, logger) => { + onDisconnect: async (socket, _handler, _sender, logger) => { try { this.#platformSocket?.send("LOG", { metadata: socket.data, @@ -1529,7 +1529,7 @@ class TaskCoordinator { } }); - httpServer.on("clientError", (err, socket) => { + httpServer.on("clientError", (_err, socket) => { socket.end("HTTP/1.1 400 Bad Request\r\n\r\n"); }); @@ -1760,7 +1760,7 @@ class TaskCoordinator { } }); - httpServer.on("clientError", (err, socket) => { + httpServer.on("clientError", (_err, socket) => { socket.end("HTTP/1.1 400 Bad Request\r\n\r\n"); }); 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..65b41a8520a 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 { 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 { setTimeout } from "node:timers/promises"; -import { PostStartCauses, PreStopCauses } from "@trigger.dev/core/v3"; +import type { PostStartCauses, PreStopCauses } from "@trigger.dev/core/v3"; const MACHINE_NAME = process.env.MACHINE_NAME || "local"; const COORDINATOR_PORT = process.env.COORDINATOR_PORT || 8020; @@ -192,7 +190,7 @@ class DockerTaskOperations implements TaskOperations { logger.log("noop: delete"); } - async get(opts: { runId: string }) { + async get(_opts: { runId: string }) { await this.init(); logger.log("noop: get"); 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/labelHelper.ts b/apps/kubernetes-provider/src/labelHelper.ts index 98cd3d68be4..487ab143a31 100644 --- a/apps/kubernetes-provider/src/labelHelper.ts +++ b/apps/kubernetes-provider/src/labelHelper.ts @@ -40,7 +40,7 @@ export class CustomLabelHelper { return key.toLowerCase().startsWith(prefix) && !this.isLabelSampleRateEnvVar(key); } - private getSampleRateEnvVarKey(type: OperationType, envKey: string) { + private getSampleRateEnvVarKey(_type: OperationType, envKey: string) { return `${envKey.toLowerCase()}${this.getLabelSampleRatePostfix()}`; } diff --git a/apps/kubernetes-provider/src/taskMonitor.ts b/apps/kubernetes-provider/src/taskMonitor.ts index 3fefc04a2ed..1b9a93b4624 100644 --- a/apps/kubernetes-provider/src/taskMonitor.ts +++ b/apps/kubernetes-provider/src/taskMonitor.ts @@ -1,6 +1,9 @@ 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 { + SimpleLogger, + 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"; diff --git a/apps/supervisor/src/clients/kubernetes.ts b/apps/supervisor/src/clients/kubernetes.ts index 129ff32b6ec..f4f4a2384ca 100644 --- a/apps/supervisor/src/clients/kubernetes.ts +++ b/apps/supervisor/src/clients/kubernetes.ts @@ -1,8 +1,6 @@ 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, ListPromise, KubernetesObject } from "@kubernetes/client-node"; import { assertExhaustive } from "@trigger.dev/core/utils"; import { SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger"; diff --git a/apps/supervisor/src/index.ts b/apps/supervisor/src/index.ts index 833448ad873..285cffe79d8 100644 --- a/apps/supervisor/src/index.ts +++ b/apps/supervisor/src/index.ts @@ -90,11 +90,11 @@ class ManagedSupervisor { // Strip secret-like env vars before debug-logging the rest. Add any new // secret env var here so it never lands in the DEBUG "Starting up" log. const { - TRIGGER_WORKER_TOKEN, - MANAGED_WORKER_SECRET, - COMPUTE_GATEWAY_AUTH_TOKEN, - DOCKER_REGISTRY_PASSWORD, - TRIGGER_DEQUEUE_BACKPRESSURE_REDIS_PASSWORD, + TRIGGER_WORKER_TOKEN: _TRIGGER_WORKER_TOKEN, + MANAGED_WORKER_SECRET: _MANAGED_WORKER_SECRET, + COMPUTE_GATEWAY_AUTH_TOKEN: _COMPUTE_GATEWAY_AUTH_TOKEN, + DOCKER_REGISTRY_PASSWORD: _DOCKER_REGISTRY_PASSWORD, + TRIGGER_DEQUEUE_BACKPRESSURE_REDIS_PASSWORD: _TRIGGER_DEQUEUE_BACKPRESSURE_REDIS_PASSWORD, ...envWithoutSecrets } = env; 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..af48ecda713 100644 --- a/apps/supervisor/src/services/failedPodHandler.ts +++ b/apps/supervisor/src/services/failedPodHandler.ts @@ -1,8 +1,9 @@ import { LogLevel, SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger"; -import { K8sApi } from "../clients/kubernetes.js"; +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 type { Informer, V1Pod } from "@kubernetes/client-node"; +import type { Registry } from "prom-client"; +import { Counter, Histogram } from "prom-client"; import { register } from "../metrics.js"; import { setTimeout } from "timers/promises"; 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..1a4980f79e8 100644 --- a/apps/supervisor/src/services/podCleaner.ts +++ b/apps/supervisor/src/services/podCleaner.ts @@ -1,8 +1,9 @@ import { SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger"; -import { K8sApi } from "../clients/kubernetes.js"; +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 type { Registry } from "prom-client"; +import { Counter, Gauge } 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..04f319e09a7 100644 --- a/apps/supervisor/src/workloadServer/index.ts +++ b/apps/supervisor/src/workloadServer/index.ts @@ -3,25 +3,25 @@ import { SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLog import EventEmitter from "node:events"; import { z } from "zod"; import { - type SupervisorHttpClient, WORKLOAD_HEADERS, + WorkloadDebugLogRequestBody, + WorkloadHeartbeatRequestBody, + WorkloadRunAttemptCompleteRequestBody, + WorkloadRunAttemptStartRequestBody, + type WorkloadRunSnapshotsSinceResponseBody, + type SupervisorHttpClient, type WorkloadClientSocketData, type WorkloadClientToServerEvents, type WorkloadContinueRunExecutionResponseBody, - WorkloadDebugLogRequestBody, type WorkloadDequeueFromVersionResponseBody, - WorkloadHeartbeatRequestBody, type WorkloadHeartbeatResponseBody, - WorkloadRunAttemptCompleteRequestBody, 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 { type IncomingMessage, type ServerResponse } from "node:http"; import { register } from "../metrics.js"; import { env } from "../env.js"; import { SnapshotCallbackPayloadSchema } from "@internal/compute"; @@ -31,7 +31,6 @@ import { } 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, diff --git a/apps/webapp/app/components/BlankStatePanels.tsx b/apps/webapp/app/components/BlankStatePanels.tsx index 7b5bdc63109..b8811b039bc 100644 --- a/apps/webapp/app/components/BlankStatePanels.tsx +++ b/apps/webapp/app/components/BlankStatePanels.tsx @@ -100,7 +100,11 @@ export function HasNoTasksDev() { ); } -export function HasNoTasksDeployed({ environment }: { environment: MinimumEnvironment }) { +export function HasNoTasksDeployed({ + environment: _environment, +}: { + environment: MinimumEnvironment; +}) { return ; } 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/Feedback.tsx b/apps/webapp/app/components/Feedback.tsx index 683f39d34ab..0848359e219 100644 --- a/apps/webapp/app/components/Feedback.tsx +++ b/apps/webapp/app/components/Feedback.tsx @@ -1,11 +1,5 @@ -import { - getFormProps, - getSelectProps, - getInputProps, - getTextareaProps, - useForm, -} from "@conform-to/react"; -import { parseWithZod } from "@conform-to/zod"; +import { conform, useForm } from "@conform-to/react"; +import { parse } from "@conform-to/zod"; import { InformationCircleIcon, ArrowUpCircleIcon } from "@heroicons/react/20/solid"; import { EnvelopeIcon, ShieldCheckIcon } from "@heroicons/react/24/solid"; import { Form, useActionData, useLocation, useNavigation, useSearchParams } from "@remix-run/react"; @@ -40,11 +34,11 @@ export function Feedback({ button, defaultValue = "bug", onOpenChange }: Feedbac const navigation = useNavigation(); const [type, setType] = useState(defaultValue); - const [form, fields] = useForm({ + const [form, { path, feedbackType, message }] = useForm({ id: "accept-invite", - lastResult: lastSubmission as any, + lastSubmission: lastSubmission as any, onValidate({ formData }) { - return parseWithZod(formData, { schema }); + return parse(formData, { schema }); }, shouldRevalidate: "onInput", }); @@ -53,11 +47,12 @@ export function Feedback({ button, defaultValue = "bug", onOpenChange }: Feedbac if ( navigation.formAction === "/resources/feedback" && navigation.state === "loading" && - Object.keys(form.allErrors).length === 0 + form.error === undefined && + form.errors.length === 0 ) { setOpen(false); } - }, [navigation.formAction, navigation.state, form.allErrors]); + }, [navigation, form]); // Handle URL param functionality useEffect(() => { @@ -95,17 +90,9 @@ export function Feedback({ button, defaultValue = "bug", onOpenChange }: Feedbac type === "concurrency" || type === "hipaa" ) &&
} -
+
- + {type === "feature" && ( )} - {fields.feedbackType.errors} + {feedbackType.error} -