diff --git a/package.json b/package.json index bcab1c5f24..d3f8bec40d 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "worktree:setup": "node scripts/worktree.mjs setup", "cloudflare:token": "node scripts/refresh-cloudflare-tunnel-token.mjs", "prepare": "simple-git-hooks", - "lint": "pnpm file-length:check && pnpm oxlint-rules:check && pnpm migration-metadata:check && pnpm test-architecture:check && pnpm dashboard-style:check && pnpm --filter @sentry/junior tool-annotations:check && pnpm --filter @sentry/junior tool-key-casing:check && pnpm --filter @sentry/junior tool-error-classification:check && pnpm --filter @sentry/junior lint && pnpm --filter @sentry/junior-memory lint && pnpm --filter @sentry/junior-github lint && pnpm --filter @sentry/junior-google lint && pnpm --filter @sentry/junior-linear lint && pnpm --filter @sentry/junior-sentry lint && pnpm --filter @sentry/junior-vercel lint && pnpm --filter @sentry/junior-dashboard lint && pnpm ast-grep:lint && pnpm package:lint", + "lint": "pnpm file-length:check && pnpm oxlint-rules:check && pnpm migration-metadata:check && pnpm test-architecture:check && pnpm dashboard-style:check && pnpm --filter @sentry/junior tool-annotations:check && pnpm --filter @sentry/junior tool-key-casing:check && pnpm --filter @sentry/junior tool-error-classification:check && pnpm --filter @sentry/junior lint && pnpm --filter @sentry/junior-plugin-api lint && pnpm --filter @sentry/junior-memory lint && pnpm --filter @sentry/junior-github lint && pnpm --filter @sentry/junior-google lint && pnpm --filter @sentry/junior-linear lint && pnpm --filter @sentry/junior-sentry lint && pnpm --filter @sentry/junior-vercel lint && pnpm --filter @sentry/junior-dashboard lint && pnpm ast-grep:lint && pnpm package:lint", "lint:fix": "pnpm --filter @sentry/junior lint:fix", "file-length:check": "node --test scripts/check-file-length.test.mjs && node scripts/check-file-length.mjs", "migration-metadata:check": "node --test scripts/check-drizzle-migrations.test.mjs && node scripts/check-drizzle-migrations.mjs", diff --git a/packages/junior-dashboard/.oxlintrc.json b/packages/junior-dashboard/.oxlintrc.json index ac16fdf230..234f9f91f4 100644 --- a/packages/junior-dashboard/.oxlintrc.json +++ b/packages/junior-dashboard/.oxlintrc.json @@ -7,6 +7,10 @@ "name": "anti-slop", "specifier": "../../tools/oxlint/anti-slop/index.ts" }, + { + "name": "junior", + "specifier": "../../tools/oxlint/junior/index.ts" + }, { "name": "display-text", "specifier": "./oxlint/display-text.ts" @@ -27,6 +31,7 @@ "tools/oxlint/anti-slop/**" ], "rules": { + "junior/zod-namespace-import": "error", "react/rules-of-hooks": "error", "react/exhaustive-deps": "error", "react/preserve-manual-memoization": "off", diff --git a/packages/junior-dashboard/src/api/schema.ts b/packages/junior-dashboard/src/api/schema.ts index 4ccf0e925a..80afe80e15 100644 --- a/packages/junior-dashboard/src/api/schema.ts +++ b/packages/junior-dashboard/src/api/schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; const dashboardSessionUserSchema = z .object({ diff --git a/packages/junior-dashboard/src/client/conversations/conversationMemory.ts b/packages/junior-dashboard/src/client/conversations/conversationMemory.ts index 6ed2b8eae2..969d826971 100644 --- a/packages/junior-dashboard/src/client/conversations/conversationMemory.ts +++ b/packages/junior-dashboard/src/client/conversations/conversationMemory.ts @@ -1,6 +1,6 @@ import { useQuery } from "@tanstack/react-query"; import { createContext, useContext } from "react"; -import { z } from "zod"; +import * as z from "zod"; import { fetchDashboardJson } from "../http"; import { conversationSideReadQueryKey } from "./queries"; diff --git a/packages/junior-dashboard/src/client/conversations/turnContext.ts b/packages/junior-dashboard/src/client/conversations/turnContext.ts index b5073a0425..f20ff121b4 100644 --- a/packages/junior-dashboard/src/client/conversations/turnContext.ts +++ b/packages/junior-dashboard/src/client/conversations/turnContext.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { TranscriptViewTurnContext } from "../types"; diff --git a/packages/junior-dashboard/src/client/pages/admin/ServiceAccountsSection.tsx b/packages/junior-dashboard/src/client/pages/admin/ServiceAccountsSection.tsx index f382cd1d2c..a5055ec4c8 100644 --- a/packages/junior-dashboard/src/client/pages/admin/ServiceAccountsSection.tsx +++ b/packages/junior-dashboard/src/client/pages/admin/ServiceAccountsSection.tsx @@ -5,7 +5,7 @@ import { type UseQueryResult, } from "@tanstack/react-query"; import { KeyRound } from "lucide-react"; -import type { z } from "zod"; +import type * as z from "zod"; import { disconnectServiceAccountResponseSchema, serviceAccountListSchema, diff --git a/packages/junior-dashboard/src/client/pages/memory/memoryDashboard.ts b/packages/junior-dashboard/src/client/pages/memory/memoryDashboard.ts index 820a28f3bd..41f6d69fec 100644 --- a/packages/junior-dashboard/src/client/pages/memory/memoryDashboard.ts +++ b/packages/junior-dashboard/src/client/pages/memory/memoryDashboard.ts @@ -1,5 +1,5 @@ import { useQuery } from "@tanstack/react-query"; -import { z } from "zod"; +import * as z from "zod"; import { fetchDashboardJson } from "../../http"; diff --git a/packages/junior-dashboard/src/client/pages/memory/memoryRecord.ts b/packages/junior-dashboard/src/client/pages/memory/memoryRecord.ts index ac9952cb00..238887d8bd 100644 --- a/packages/junior-dashboard/src/client/pages/memory/memoryRecord.ts +++ b/packages/junior-dashboard/src/client/pages/memory/memoryRecord.ts @@ -1,5 +1,5 @@ import { useQuery } from "@tanstack/react-query"; -import { z } from "zod"; +import * as z from "zod"; import { fetchDashboardJson } from "../../http"; import type { PluginUserPageRecord } from "../user/pluginUserPageData"; diff --git a/packages/junior-dashboard/src/client/pages/settings/ConnectionsPage.tsx b/packages/junior-dashboard/src/client/pages/settings/ConnectionsPage.tsx index dd6bf8cc69..dd54f761cf 100644 --- a/packages/junior-dashboard/src/client/pages/settings/ConnectionsPage.tsx +++ b/packages/junior-dashboard/src/client/pages/settings/ConnectionsPage.tsx @@ -1,6 +1,6 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { Plug } from "lucide-react"; -import type { z } from "zod"; +import type * as z from "zod"; import { connectionListSchema, disconnectConnectionResponseSchema, diff --git a/packages/junior-dashboard/src/client/review-desk/reviewItemFormat.ts b/packages/junior-dashboard/src/client/review-desk/reviewItemFormat.ts index 95682e8c68..34cf775406 100644 --- a/packages/junior-dashboard/src/client/review-desk/reviewItemFormat.ts +++ b/packages/junior-dashboard/src/client/review-desk/reviewItemFormat.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { ConversationReportEvent, ReviewItemPayload, diff --git a/packages/junior-dashboard/tsup.client.config.ts b/packages/junior-dashboard/tsup.client.config.ts index 49bc40909f..cc0c3b40bf 100644 --- a/packages/junior-dashboard/tsup.client.config.ts +++ b/packages/junior-dashboard/tsup.client.config.ts @@ -1,3 +1,4 @@ +import { fileURLToPath } from "node:url"; import { defineConfig } from "tsup"; export default defineConfig({ @@ -19,6 +20,13 @@ export default defineConfig({ esbuildOptions(options) { options.entryNames = "[name]-[hash]"; options.chunkNames = "chunks/[name]-[hash]"; + // pnpm injects a separate copy of the plugin API into @sentry/junior. + // Resolve every import to one copy, so the browser loads it once. + options.alias = { + "@sentry/junior-plugin-api": fileURLToPath( + import.meta.resolve("@sentry/junior-plugin-api"), + ), + }; }, minify: true, define: { diff --git a/packages/junior-evals/src/fixture/results.ts b/packages/junior-evals/src/fixture/results.ts index 2fd7105f2f..4243f05ac1 100644 --- a/packages/junior-evals/src/fixture/results.ts +++ b/packages/junior-evals/src/fixture/results.ts @@ -2,7 +2,7 @@ * Call results read through Junior's reporting API, the way the dashboard * reads a Conversation. Tests never read stored rows directly. */ -import type { z } from "zod"; +import type * as z from "zod"; import { conversationDetailReportSchema, conversationPendingMessagesReportSchema, diff --git a/packages/junior-github/src/db/schema.ts b/packages/junior-github/src/db/schema.ts index eeef7878a4..b8ed68c2e6 100644 --- a/packages/junior-github/src/db/schema.ts +++ b/packages/junior-github/src/db/schema.ts @@ -7,7 +7,7 @@ import { text, timestamp, } from "drizzle-orm/pg-core"; -import { z } from "zod"; +import * as z from "zod"; export const githubPullRequestStateSchema = z.enum([ "closed_unmerged", diff --git a/packages/junior-github/src/events/release.ts b/packages/junior-github/src/events/release.ts index 8d374031b0..323e163a57 100644 --- a/packages/junior-github/src/events/release.ts +++ b/packages/junior-github/src/events/release.ts @@ -2,7 +2,7 @@ import { eventMatchFieldsSchema, type SubscribableResource, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { gitHubRepoDataSchema, gitHubRepoMatchFields } from "./scope.js"; export const GITHUB_RELEASE_EVENTS = ["release.published"] as const; diff --git a/packages/junior-github/src/events/scope.ts b/packages/junior-github/src/events/scope.ts index 6949007879..98e6e7017d 100644 --- a/packages/junior-github/src/events/scope.ts +++ b/packages/junior-github/src/events/scope.ts @@ -2,7 +2,7 @@ import { eventMatchFieldsSchema, type EventMatchFields, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; // The plugin lowercases every identifier, so scope values in event data are // lowercase too. A saved identifier can then become exact filters. diff --git a/packages/junior-github/src/github-status.ts b/packages/junior-github/src/github-status.ts index ad707b30d0..b8be7c0cd9 100644 --- a/packages/junior-github/src/github-status.ts +++ b/packages/junior-github/src/github-status.ts @@ -1,5 +1,5 @@ import type { PluginCache } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; const GITHUB_STATUS_INCIDENTS_URL = "https://www.githubstatus.com/api/v2/incidents.json"; diff --git a/packages/junior-github/src/issue-outcomes/store.ts b/packages/junior-github/src/issue-outcomes/store.ts index 92bb24fdb7..bf876a55c5 100644 --- a/packages/junior-github/src/issue-outcomes/store.ts +++ b/packages/junior-github/src/issue-outcomes/store.ts @@ -1,5 +1,5 @@ import { and, eq, lte, sql } from "drizzle-orm"; -import { z } from "zod"; +import * as z from "zod"; import type { GitHubDb } from "../db/database.js"; import { githubIssueStateReasonSchema, diff --git a/packages/junior-github/src/object-facts.ts b/packages/junior-github/src/object-facts.ts index f94df52388..2e7447d216 100644 --- a/packages/junior-github/src/object-facts.ts +++ b/packages/junior-github/src/object-facts.ts @@ -1,5 +1,5 @@ import type { ObjectAnnotation } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; const person = z.object({ login: z.string() }); const responseSchema = z.object({ diff --git a/packages/junior-github/src/pull-request-outcomes/commit-composition.ts b/packages/junior-github/src/pull-request-outcomes/commit-composition.ts index 7991dbcfe1..e2cfc0c0db 100644 --- a/packages/junior-github/src/pull-request-outcomes/commit-composition.ts +++ b/packages/junior-github/src/pull-request-outcomes/commit-composition.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { GitHubPullRequestCommitComposition } from "../db/schema.js"; import { botLoginFromEmail, isBotLogin } from "../webhooks/ownership.js"; diff --git a/packages/junior-github/src/pull-request-outcomes/store.ts b/packages/junior-github/src/pull-request-outcomes/store.ts index 9b5eff4b81..e41036b8ff 100644 --- a/packages/junior-github/src/pull-request-outcomes/store.ts +++ b/packages/junior-github/src/pull-request-outcomes/store.ts @@ -1,5 +1,5 @@ import { and, eq, lte, ne, sql } from "drizzle-orm"; -import { z } from "zod"; +import * as z from "zod"; import type { GitHubDb } from "../db/database.js"; import { type GitHubPullRequestCommitComposition, diff --git a/packages/junior-github/src/tools/clone-repository.ts b/packages/junior-github/src/tools/clone-repository.ts index 192be46b5e..221a4cdc44 100644 --- a/packages/junior-github/src/tools/clone-repository.ts +++ b/packages/junior-github/src/tools/clone-repository.ts @@ -7,7 +7,7 @@ import { type PluginToolOutput, type PluginWorkspaceToolContext, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { isReservedSandboxDirectory } from "../sandbox-paths.js"; const inputSchema = z diff --git a/packages/junior-github/src/tools/comment-on-pull-request.ts b/packages/junior-github/src/tools/comment-on-pull-request.ts index 3d8d66bf6f..dbc901905d 100644 --- a/packages/junior-github/src/tools/comment-on-pull-request.ts +++ b/packages/junior-github/src/tools/comment-on-pull-request.ts @@ -5,7 +5,7 @@ import { PluginToolInputError, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { githubApi, githubErrorMessage, diff --git a/packages/junior-github/src/tools/create-issue.ts b/packages/junior-github/src/tools/create-issue.ts index 1fab978fde..3d3afa5113 100644 --- a/packages/junior-github/src/tools/create-issue.ts +++ b/packages/junior-github/src/tools/create-issue.ts @@ -15,7 +15,7 @@ import { } from "@sentry/junior-plugin-api"; import { Type, type Static } from "@sinclair/typebox"; import { Value } from "@sinclair/typebox/value"; -import { z } from "zod"; +import * as z from "zod"; import { appendGitHubFooter } from "./footer.js"; import { gitHubIssueSubscribable } from "../events/issue.js"; import { diff --git a/packages/junior-github/src/tools/create-pull-request.ts b/packages/junior-github/src/tools/create-pull-request.ts index d43b0e4698..9527a8e5b2 100644 --- a/packages/junior-github/src/tools/create-pull-request.ts +++ b/packages/junior-github/src/tools/create-pull-request.ts @@ -17,7 +17,7 @@ import { } from "@sentry/junior-plugin-api"; import { Type, type Static } from "@sinclair/typebox"; import { Value } from "@sinclair/typebox/value"; -import { z } from "zod"; +import * as z from "zod"; import { appendGitHubFooter } from "./footer.js"; import { gitHubPullRequestCreateWatch, diff --git a/packages/junior-github/src/tools/get-deployment.ts b/packages/junior-github/src/tools/get-deployment.ts index 5c26850577..50684e8e20 100644 --- a/packages/junior-github/src/tools/get-deployment.ts +++ b/packages/junior-github/src/tools/get-deployment.ts @@ -7,7 +7,7 @@ import { type PluginToolOutput, type SubscribableResource, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { gitHubDeploymentSourceSubscribable } from "../events/deployment.js"; import { githubApi, parseRepo, repoPath } from "../tool-support/github-api.js"; diff --git a/packages/junior-github/src/tools/get-pull-request.ts b/packages/junior-github/src/tools/get-pull-request.ts index 42a800d5d9..1f7c98b804 100644 --- a/packages/junior-github/src/tools/get-pull-request.ts +++ b/packages/junior-github/src/tools/get-pull-request.ts @@ -8,7 +8,7 @@ import { type PluginToolOutput, type SubscribableResource, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { subscribableResourceSchema } from "@sentry/junior-plugin-api"; import { gitHubPullRequestSubscribable } from "../events/pull-request.js"; import { githubApi, parseRepo, repoPath } from "../tool-support/github-api.js"; diff --git a/packages/junior-github/src/tools/get-release.ts b/packages/junior-github/src/tools/get-release.ts index fc8f4f2314..d6c9a73fe8 100644 --- a/packages/junior-github/src/tools/get-release.ts +++ b/packages/junior-github/src/tools/get-release.ts @@ -6,7 +6,7 @@ import { type PluginToolOutput, type SubscribableResource, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { gitHubReleaseSourceSubscribable } from "../events/release.js"; import { githubApi, parseRepo, repoPath } from "../tool-support/github-api.js"; diff --git a/packages/junior-github/src/tools/get-repository.ts b/packages/junior-github/src/tools/get-repository.ts index c766ae3711..bf51adf580 100644 --- a/packages/junior-github/src/tools/get-repository.ts +++ b/packages/junior-github/src/tools/get-repository.ts @@ -7,7 +7,7 @@ import { type PluginToolOutput, type SubscribableResource, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { gitHubRepositorySubscribable } from "../events/repository.js"; import { githubApi, parseRepo, repoPath } from "../tool-support/github-api.js"; diff --git a/packages/junior-github/src/tools/get-status.ts b/packages/junior-github/src/tools/get-status.ts index 2ccea3e4f8..70b88ae901 100644 --- a/packages/junior-github/src/tools/get-status.ts +++ b/packages/junior-github/src/tools/get-status.ts @@ -4,7 +4,7 @@ import { pluginToolOutputSchema, type PluginToolOutput, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { loadGitHubStatusIncidents } from "../github-status.js"; const RECENT_INCIDENT_MS = 24 * 60 * 60 * 1000; diff --git a/packages/junior-github/src/tools/resolve-pull-request-review-thread.ts b/packages/junior-github/src/tools/resolve-pull-request-review-thread.ts index 697895b467..b7959de988 100644 --- a/packages/junior-github/src/tools/resolve-pull-request-review-thread.ts +++ b/packages/junior-github/src/tools/resolve-pull-request-review-thread.ts @@ -5,7 +5,7 @@ import { pluginToolOutputSchema, type PluginToolOutput, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { botUserIdFromEmail } from "../webhooks/ownership.js"; import { githubApi, diff --git a/packages/junior-github/src/tools/stack-pull-request.ts b/packages/junior-github/src/tools/stack-pull-request.ts index a5ca43df9f..d43225a93e 100644 --- a/packages/junior-github/src/tools/stack-pull-request.ts +++ b/packages/junior-github/src/tools/stack-pull-request.ts @@ -8,7 +8,7 @@ * chain of base branches. */ import type { ToolRegistrationHookContext } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { githubApi, repoPath } from "../tool-support/github-api.js"; /** Longest chain of base branches to walk down to the trunk. */ diff --git a/packages/junior-github/src/tools/submit-pull-request-review.ts b/packages/junior-github/src/tools/submit-pull-request-review.ts index 6791ae0b34..fecf1f3753 100644 --- a/packages/junior-github/src/tools/submit-pull-request-review.ts +++ b/packages/junior-github/src/tools/submit-pull-request-review.ts @@ -5,7 +5,7 @@ import { PluginToolInputError, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { githubApi, githubErrorMessage, diff --git a/packages/junior-github/src/tools/update-issue.ts b/packages/junior-github/src/tools/update-issue.ts index 4b3220ba0a..6bec223147 100644 --- a/packages/junior-github/src/tools/update-issue.ts +++ b/packages/junior-github/src/tools/update-issue.ts @@ -14,7 +14,7 @@ import { type PluginToolOutput, type SubscribableResource, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { gitHubIssueSubscribable } from "../events/issue.js"; import { appendGitHubRequesterAttribution, diff --git a/packages/junior-github/src/tools/update-pull-request-feedback.ts b/packages/junior-github/src/tools/update-pull-request-feedback.ts index 0dbd0369a1..c31c6183dc 100644 --- a/packages/junior-github/src/tools/update-pull-request-feedback.ts +++ b/packages/junior-github/src/tools/update-pull-request-feedback.ts @@ -5,7 +5,7 @@ import { PluginToolInputError, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { botUserIdFromEmail } from "../webhooks/ownership.js"; import { githubApi, diff --git a/packages/junior-github/src/tools/update-pull-request.ts b/packages/junior-github/src/tools/update-pull-request.ts index 986c00a020..5e93a610be 100644 --- a/packages/junior-github/src/tools/update-pull-request.ts +++ b/packages/junior-github/src/tools/update-pull-request.ts @@ -13,7 +13,7 @@ import { type PluginToolOutput, type SubscribableResource, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { subscribableResourceSchema } from "@sentry/junior-plugin-api"; import { gitHubPullRequestSubscribable } from "../events/pull-request.js"; import { diff --git a/packages/junior-github/src/webhooks/check-suite.ts b/packages/junior-github/src/webhooks/check-suite.ts index 533561e594..7c3bf4ecc5 100644 --- a/packages/junior-github/src/webhooks/check-suite.ts +++ b/packages/junior-github/src/webhooks/check-suite.ts @@ -2,7 +2,7 @@ * GitHub check suite events. */ import type { EventInput } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { githubRequest, isRecord, diff --git a/packages/junior-github/src/webhooks/events.ts b/packages/junior-github/src/webhooks/events.ts index 98e8ae6a68..71b1863d31 100644 --- a/packages/junior-github/src/webhooks/events.ts +++ b/packages/junior-github/src/webhooks/events.ts @@ -1,5 +1,5 @@ import type { EventInput } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { gitHubDeploymentSourceResource } from "../events/deployment.js"; import { gitHubIssueResource } from "../events/issue.js"; import { gitHubPullRequestResource } from "../events/pull-request.js"; diff --git a/packages/junior-github/src/webhooks/handler.ts b/packages/junior-github/src/webhooks/handler.ts index bc6b352652..d1e03fe812 100644 --- a/packages/junior-github/src/webhooks/handler.ts +++ b/packages/junior-github/src/webhooks/handler.ts @@ -11,7 +11,7 @@ import type { EventInput, EventPublisher, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import type { GitHubDb } from "../db/database.js"; import type { GitHubPullRequestCommitComposition } from "../db/schema.js"; import { diff --git a/packages/junior-github/src/webhooks/installation-requests.ts b/packages/junior-github/src/webhooks/installation-requests.ts index 9334731ee7..78b5028ce8 100644 --- a/packages/junior-github/src/webhooks/installation-requests.ts +++ b/packages/junior-github/src/webhooks/installation-requests.ts @@ -5,7 +5,7 @@ * call GitHub directly. Other plugin code must use host egress. */ import type { PluginCache } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { githubRequest, issueInstallationToken, diff --git a/packages/junior-github/src/webhooks/issue-outcome.ts b/packages/junior-github/src/webhooks/issue-outcome.ts index 5b749c6475..d8b10d72e8 100644 --- a/packages/junior-github/src/webhooks/issue-outcome.ts +++ b/packages/junior-github/src/webhooks/issue-outcome.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { githubIssueStateReasonSchema } from "../db/schema.js"; import type { GitHubIssueConversationsInput, diff --git a/packages/junior-github/src/webhooks/merge-conflict.ts b/packages/junior-github/src/webhooks/merge-conflict.ts index 402ff7b8c9..1b8d405f9d 100644 --- a/packages/junior-github/src/webhooks/merge-conflict.ts +++ b/packages/junior-github/src/webhooks/merge-conflict.ts @@ -12,7 +12,7 @@ import type { EventPublisher, PluginLogger, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { gitHubPullRequestResource } from "../events/pull-request.js"; import { gitHubRepoDataSchema } from "../events/scope.js"; import { pullRequestTargets } from "./event-targets.js"; diff --git a/packages/junior-github/src/webhooks/pull-request-match-data.ts b/packages/junior-github/src/webhooks/pull-request-match-data.ts index 511eeeade4..6c47401371 100644 --- a/packages/junior-github/src/webhooks/pull-request-match-data.ts +++ b/packages/junior-github/src/webhooks/pull-request-match-data.ts @@ -3,7 +3,7 @@ import type { EventPublisher, PluginLogger, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import type { GitHubDb } from "../db/database.js"; import { gitHubRepoDataSchema } from "../events/scope.js"; import { listGitHubPullRequestOpeners } from "../pull-request-requesters/store.js"; diff --git a/packages/junior-github/src/webhooks/pull-request-outcome.ts b/packages/junior-github/src/webhooks/pull-request-outcome.ts index 2fe0cd8c3d..ae82854d19 100644 --- a/packages/junior-github/src/webhooks/pull-request-outcome.ts +++ b/packages/junior-github/src/webhooks/pull-request-outcome.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { GITHUB_SESSION_FOOTER_START, githubConversationIds, diff --git a/packages/junior-github/src/webhooks/pull-request-people.ts b/packages/junior-github/src/webhooks/pull-request-people.ts index edc7624b9a..a18ecbbba1 100644 --- a/packages/junior-github/src/webhooks/pull-request-people.ts +++ b/packages/junior-github/src/webhooks/pull-request-people.ts @@ -4,7 +4,7 @@ import type { EventPublisher, PluginLogger, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; /** Pull request outcomes that the people involved need to hear about. */ const PEOPLE_EVENTS = new Set([ diff --git a/packages/junior-github/src/webhooks/pull-request-ready.ts b/packages/junior-github/src/webhooks/pull-request-ready.ts index 38490b62ed..2de5a7df21 100644 --- a/packages/junior-github/src/webhooks/pull-request-ready.ts +++ b/packages/junior-github/src/webhooks/pull-request-ready.ts @@ -12,7 +12,7 @@ import type { PluginConversationReviewItems, PluginLogger, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import type { GitHubDb } from "../db/database.js"; import { claimGitHubPullRequestReadySync, diff --git a/packages/junior-google/src/oauth.ts b/packages/junior-google/src/oauth.ts index 79548047e5..59ddfcde89 100644 --- a/packages/junior-google/src/oauth.ts +++ b/packages/junior-google/src/oauth.ts @@ -6,7 +6,7 @@ * it. Slack never carries the sign-in link, the authorization code, or tokens. */ import { createHash, randomBytes } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; import { GOOGLE_API_SCOPES, GOOGLE_IDENTITY_SCOPES, diff --git a/packages/junior-google/src/tools/cancel-event.ts b/packages/junior-google/src/tools/cancel-event.ts index d8ae3f1ebf..d5d203543d 100644 --- a/packages/junior-google/src/tools/cancel-event.ts +++ b/packages/junior-google/src/tools/cancel-event.ts @@ -2,7 +2,7 @@ import { definePluginTool, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { googleApiError, googleApiRequest, diff --git a/packages/junior-google/src/tools/create-event.ts b/packages/junior-google/src/tools/create-event.ts index 9b8b006751..d1826b7b29 100644 --- a/packages/junior-google/src/tools/create-event.ts +++ b/packages/junior-google/src/tools/create-event.ts @@ -4,7 +4,7 @@ import { PluginToolInputError, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { emailListSchema, googleApiError, diff --git a/packages/junior-google/src/tools/files.ts b/packages/junior-google/src/tools/files.ts index 2a0dc9a9f2..b2691a9946 100644 --- a/packages/junior-google/src/tools/files.ts +++ b/packages/junior-google/src/tools/files.ts @@ -1,5 +1,5 @@ import { PluginToolInputError } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import type { GoogleOperation } from "../credentials"; import { googleApiError, diff --git a/packages/junior-google/src/tools/find-meeting-times.ts b/packages/junior-google/src/tools/find-meeting-times.ts index 9a5af7b71c..04e72e0ee7 100644 --- a/packages/junior-google/src/tools/find-meeting-times.ts +++ b/packages/junior-google/src/tools/find-meeting-times.ts @@ -3,7 +3,7 @@ import { PluginToolInputError, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { emailListSchema, formatInterval, diff --git a/packages/junior-google/src/tools/list-events.ts b/packages/junior-google/src/tools/list-events.ts index d187e90a46..a4b7baf7d1 100644 --- a/packages/junior-google/src/tools/list-events.ts +++ b/packages/junior-google/src/tools/list-events.ts @@ -3,7 +3,7 @@ import { PluginToolInputError, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { accountChooserLink, attendeeOutputSchema, diff --git a/packages/junior-google/src/tools/list-file-comments.ts b/packages/junior-google/src/tools/list-file-comments.ts index 4c9d0a789c..462e3352ed 100644 --- a/packages/junior-google/src/tools/list-file-comments.ts +++ b/packages/junior-google/src/tools/list-file-comments.ts @@ -2,7 +2,7 @@ import { definePluginTool, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { fileReferenceSchema, GOOGLE_FILE_TYPES, diff --git a/packages/junior-google/src/tools/read-doc.ts b/packages/junior-google/src/tools/read-doc.ts index b6b1e5c4f9..7c36866c84 100644 --- a/packages/junior-google/src/tools/read-doc.ts +++ b/packages/junior-google/src/tools/read-doc.ts @@ -2,7 +2,7 @@ import { definePluginTool, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { fileOutputFields, fileReferenceSchema, diff --git a/packages/junior-google/src/tools/read-meeting-transcript.ts b/packages/junior-google/src/tools/read-meeting-transcript.ts index 9d01cb51a7..7574f95b43 100644 --- a/packages/junior-google/src/tools/read-meeting-transcript.ts +++ b/packages/junior-google/src/tools/read-meeting-transcript.ts @@ -3,7 +3,7 @@ import { PluginToolInputError, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { FILE_ID_PATTERN, googleFileMimeType, diff --git a/packages/junior-google/src/tools/read-sheet.ts b/packages/junior-google/src/tools/read-sheet.ts index 229c89d6cf..e9b6ebbeca 100644 --- a/packages/junior-google/src/tools/read-sheet.ts +++ b/packages/junior-google/src/tools/read-sheet.ts @@ -2,7 +2,7 @@ import { definePluginTool, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { fileOutputFields, fileReferenceSchema, diff --git a/packages/junior-google/src/tools/read-slides.ts b/packages/junior-google/src/tools/read-slides.ts index fbd2e4c4c4..f517ea4bd2 100644 --- a/packages/junior-google/src/tools/read-slides.ts +++ b/packages/junior-google/src/tools/read-slides.ts @@ -3,7 +3,7 @@ import { definePluginTool, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { fileOutputFields, fileReferenceSchema, diff --git a/packages/junior-google/src/tools/search-files.ts b/packages/junior-google/src/tools/search-files.ts index 84864b57f6..daf8b7cb88 100644 --- a/packages/junior-google/src/tools/search-files.ts +++ b/packages/junior-google/src/tools/search-files.ts @@ -2,7 +2,7 @@ import { definePluginTool, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { fileOutputFields, GOOGLE_FILE_TYPES, diff --git a/packages/junior-google/src/tools/shared.ts b/packages/junior-google/src/tools/shared.ts index 842b1025b4..38a28edef6 100644 --- a/packages/junior-google/src/tools/shared.ts +++ b/packages/junior-google/src/tools/shared.ts @@ -5,7 +5,7 @@ import { type PluginSandbox, type User, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { emailDomain } from "../config"; import { GOOGLE_OPERATIONS, type GoogleOperation } from "../credentials"; diff --git a/packages/junior-google/src/tools/update-event.ts b/packages/junior-google/src/tools/update-event.ts index 614466dec9..f4cc2fd556 100644 --- a/packages/junior-google/src/tools/update-event.ts +++ b/packages/junior-google/src/tools/update-event.ts @@ -3,7 +3,7 @@ import { PluginToolInputError, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { emailListSchema, googleApiError, diff --git a/packages/junior-linear/src/plugin.ts b/packages/junior-linear/src/plugin.ts index 716d7f5165..a2f5702ed7 100644 --- a/packages/junior-linear/src/plugin.ts +++ b/packages/junior-linear/src/plugin.ts @@ -4,7 +4,7 @@ import { type PluginRegistration, type ObjectAnnotation, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { LINEAR_ISSUE_EVENTS, LINEAR_ISSUE_MATCH_FIELDS, diff --git a/packages/junior-linear/src/webhooks/events.ts b/packages/junior-linear/src/webhooks/events.ts index 1e035dd46b..34bd06ddc4 100644 --- a/packages/junior-linear/src/webhooks/events.ts +++ b/packages/junior-linear/src/webhooks/events.ts @@ -1,5 +1,5 @@ import type { EventInput } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { linearIssueResource, linearTeamResource } from "../events/issue.js"; const issueWebhookSchema = z diff --git a/packages/junior-memory/src/agent.ts b/packages/junior-memory/src/agent.ts index 68bcb0f0ce..27cb667c84 100644 --- a/packages/junior-memory/src/agent.ts +++ b/packages/junior-memory/src/agent.ts @@ -3,7 +3,7 @@ import { sourceSchema, type PluginModel, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { memorySupersessionDecisionSchema, memorySupersessionInputSchema, diff --git a/packages/junior-memory/src/api.ts b/packages/junior-memory/src/api.ts index 0d160634a3..a903a2a4e9 100644 --- a/packages/junior-memory/src/api.ts +++ b/packages/junior-memory/src/api.ts @@ -3,7 +3,7 @@ * * The signed-in User can read and forget public memory. */ -import { z } from "zod"; +import * as z from "zod"; import { pluginApiRouteRequestContextSchema, type PluginConversationEventReader, diff --git a/packages/junior-memory/src/embedding.ts b/packages/junior-memory/src/embedding.ts index fe86c5bde3..5e0e2f65e6 100644 --- a/packages/junior-memory/src/embedding.ts +++ b/packages/junior-memory/src/embedding.ts @@ -6,7 +6,7 @@ */ import { createHash } from "node:crypto"; import { and, eq, sql, type Column, type SQL } from "drizzle-orm"; -import { z } from "zod"; +import * as z from "zod"; import { juniorMemoryEmbeddings } from "./db/schema"; import { MEMORY_EMBEDDING_DIMENSIONS, diff --git a/packages/junior-memory/src/events.ts b/packages/junior-memory/src/events.ts index e6e6fa4092..94e41af5d5 100644 --- a/packages/junior-memory/src/events.ts +++ b/packages/junior-memory/src/events.ts @@ -1,5 +1,5 @@ import { defineConversationEvent } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { MEMORY_KINDS, MEMORY_SCOPES } from "./types"; import type { MemoryRecord } from "./store"; diff --git a/packages/junior-memory/src/operational-report.ts b/packages/junior-memory/src/operational-report.ts index 140c203d33..af4d6530f2 100644 --- a/packages/junior-memory/src/operational-report.ts +++ b/packages/junior-memory/src/operational-report.ts @@ -3,7 +3,7 @@ import type { PluginOperationalReportContent, } from "@sentry/junior-plugin-api"; import { and, gt, isNull, or, sql } from "drizzle-orm"; -import { z } from "zod"; +import * as z from "zod"; import { juniorMemoryEmbeddings, juniorMemoryMemories } from "./db/schema"; import type { MemoryDb } from "./store"; diff --git a/packages/junior-memory/src/process-session.ts b/packages/junior-memory/src/process-session.ts index 7e8e290dcf..f90dba7144 100644 --- a/packages/junior-memory/src/process-session.ts +++ b/packages/junior-memory/src/process-session.ts @@ -5,7 +5,7 @@ import { type PluginRunTranscriptEntry, type PluginTaskContext, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { createMemoryStore, type CreateMemoryInput, diff --git a/packages/junior-memory/src/recall.ts b/packages/junior-memory/src/recall.ts index 2e1e6585b3..bc7b985acc 100644 --- a/packages/junior-memory/src/recall.ts +++ b/packages/junior-memory/src/recall.ts @@ -9,7 +9,7 @@ import { type Source, type User, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { memoriesRecalledEvent } from "./events"; import { createMemoryStore, diff --git a/packages/junior-memory/src/store.ts b/packages/junior-memory/src/store.ts index 9d56081f45..35a32178d9 100644 --- a/packages/junior-memory/src/store.ts +++ b/packages/junior-memory/src/store.ts @@ -24,7 +24,7 @@ import { } from "drizzle-orm"; import type { PgDatabase } from "drizzle-orm/pg-core"; import type { PgQueryResultHKT } from "drizzle-orm/pg-core/session"; -import { z } from "zod"; +import * as z from "zod"; import { getSourceKey } from "@sentry/junior-plugin-api"; import * as memorySqlSchema from "./db/schema"; import { diff --git a/packages/junior-memory/src/tools.ts b/packages/junior-memory/src/tools.ts index 56d8c37317..5eb987583c 100644 --- a/packages/junior-memory/src/tools.ts +++ b/packages/junior-memory/src/tools.ts @@ -11,7 +11,7 @@ import { type User, pluginToolOutputSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { createMemoryStore, type CreateMemoryInput, diff --git a/packages/junior-memory/src/types.ts b/packages/junior-memory/src/types.ts index 20da2528c5..194c08e425 100644 --- a/packages/junior-memory/src/types.ts +++ b/packages/junior-memory/src/types.ts @@ -1,5 +1,5 @@ import { actorSchema, sourceSchema } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; export const MEMORY_KINDS = ["preference", "procedure", "knowledge"] as const; diff --git a/packages/junior-memory/src/viewer.ts b/packages/junior-memory/src/viewer.ts index 112296cc1d..8da17c65bf 100644 --- a/packages/junior-memory/src/viewer.ts +++ b/packages/junior-memory/src/viewer.ts @@ -17,7 +17,7 @@ import { or, sql, } from "drizzle-orm"; -import { z } from "zod"; +import * as z from "zod"; import { juniorMemoryEmbeddings, juniorMemoryMemories } from "./db/schema"; import { publicMemoryScope } from "./scope"; import { parseMemoryRow, type MemoryDb, type MemoryRecord } from "./store"; diff --git a/packages/junior-plugin-api/src/annotations.ts b/packages/junior-plugin-api/src/annotations.ts index af696a0d2f..486f878f24 100644 --- a/packages/junior-plugin-api/src/annotations.ts +++ b/packages/junior-plugin-api/src/annotations.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { PluginContext } from "./context"; import { objectAnnotationSchema } from "./object-annotations"; import { objectTypeSchema } from "./object-presentation"; diff --git a/packages/junior-plugin-api/src/code.ts b/packages/junior-plugin-api/src/code.ts index ff21824e75..e2ca2949a4 100644 --- a/packages/junior-plugin-api/src/code.ts +++ b/packages/junior-plugin-api/src/code.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; export const codeChangeStateSchema = z.enum(["closed", "merged", "open"]); export type CodeChangeState = z.output; diff --git a/packages/junior-plugin-api/src/context.ts b/packages/junior-plugin-api/src/context.ts index c0015e3f29..3ad8c6e61a 100644 --- a/packages/junior-plugin-api/src/context.ts +++ b/packages/junior-plugin-api/src/context.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { ZodTypeAny } from "zod"; import { destinationSchema, diff --git a/packages/junior-plugin-api/src/conversation-events.ts b/packages/junior-plugin-api/src/conversation-events.ts index 66f8da5c44..3e725454ba 100644 --- a/packages/junior-plugin-api/src/conversation-events.ts +++ b/packages/junior-plugin-api/src/conversation-events.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { User } from "./context"; const conversationEventNameSchema = z diff --git a/packages/junior-plugin-api/src/credentials.ts b/packages/junior-plugin-api/src/credentials.ts index 4274564957..2b663b97f4 100644 --- a/packages/junior-plugin-api/src/credentials.ts +++ b/packages/junior-plugin-api/src/credentials.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { PluginContext } from "./context"; import { nonBlankStringSchema, pluginCredentialSubjectSchema } from "./schemas"; diff --git a/packages/junior-plugin-api/src/dispatch.ts b/packages/junior-plugin-api/src/dispatch.ts index 8c2f79d4e6..29f7dda44b 100644 --- a/packages/junior-plugin-api/src/dispatch.ts +++ b/packages/junior-plugin-api/src/dispatch.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { destinationVisibilitySchema, dispatchOptionsSchema, diff --git a/packages/junior-plugin-api/src/events.ts b/packages/junior-plugin-api/src/events.ts index fd42bf050f..e63532d176 100644 --- a/packages/junior-plugin-api/src/events.ts +++ b/packages/junior-plugin-api/src/events.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { objectTypeSchema } from "./object-presentation"; export const EVENT_SUMMARY_MAX_LENGTH = 4_000; diff --git a/packages/junior-plugin-api/src/object-annotations.ts b/packages/junior-plugin-api/src/object-annotations.ts index ae26c56168..c8672394cd 100644 --- a/packages/junior-plugin-api/src/object-annotations.ts +++ b/packages/junior-plugin-api/src/object-annotations.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { objectFactsSchema } from "./object-facts"; import { objectTypeSchema } from "./object-presentation"; diff --git a/packages/junior-plugin-api/src/object-facts.ts b/packages/junior-plugin-api/src/object-facts.ts index 5ab550e4ac..815c9f3de1 100644 --- a/packages/junior-plugin-api/src/object-facts.ts +++ b/packages/junior-plugin-api/src/object-facts.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; const text = z.string().trim().min(1).max(160); const count = z.number().int().nonnegative(); diff --git a/packages/junior-plugin-api/src/object-presentation.ts b/packages/junior-plugin-api/src/object-presentation.ts index d0b87b0420..388b5184bf 100644 --- a/packages/junior-plugin-api/src/object-presentation.ts +++ b/packages/junior-plugin-api/src/object-presentation.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** Native object types. `task` is the stored name for a Ticket. */ export const objectTypeSchema = z.enum([ diff --git a/packages/junior-plugin-api/src/operations.ts b/packages/junior-plugin-api/src/operations.ts index eb97de398c..699ee5c977 100644 --- a/packages/junior-plugin-api/src/operations.ts +++ b/packages/junior-plugin-api/src/operations.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { Identity, PluginContext, PluginEmbedder, User } from "./context"; import type { Dispatch, DispatchOptions, DispatchResult } from "./dispatch"; import { nonBlankStringSchema } from "./schemas"; diff --git a/packages/junior-plugin-api/src/prompt.ts b/packages/junior-plugin-api/src/prompt.ts index c90eb1aa8c..fd6be89fa2 100644 --- a/packages/junior-plugin-api/src/prompt.ts +++ b/packages/junior-plugin-api/src/prompt.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { Destination, Platform, diff --git a/packages/junior-plugin-api/src/schemas.ts b/packages/junior-plugin-api/src/schemas.ts index 967898fa05..e530c64e18 100644 --- a/packages/junior-plugin-api/src/schemas.ts +++ b/packages/junior-plugin-api/src/schemas.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; const slackTeamIdSchema = z.string().regex(/^T[A-Z0-9]+$/); const slackConversationIdSchema = z.string().regex(/^(C|G|D)[A-Z0-9]+$/); diff --git a/packages/junior-plugin-api/src/tasks.ts b/packages/junior-plugin-api/src/tasks.ts index 8bc92399a5..f0e4b6d7f5 100644 --- a/packages/junior-plugin-api/src/tasks.ts +++ b/packages/junior-plugin-api/src/tasks.ts @@ -4,7 +4,7 @@ * Plugins register small task handlers. Junior core owns scheduling, delivery, * retries, and the bounded run projection. */ -import { z } from "zod"; +import * as z from "zod"; import type { PluginConversationEvents } from "./conversation-events"; import type { PluginContext, PluginEmbedder, PluginModel } from "./context"; import { destinationSchema, actorSchema, sourceSchema } from "./schemas"; diff --git a/packages/junior-plugin-api/src/tools.ts b/packages/junior-plugin-api/src/tools.ts index 3202dc12c1..903832ab44 100644 --- a/packages/junior-plugin-api/src/tools.ts +++ b/packages/junior-plugin-api/src/tools.ts @@ -14,7 +14,8 @@ import { objectAnnotationSchema } from "./object-annotations"; import type { SlackConversationLink } from "./operations"; import type { WatchResult, SubscribableResource } from "./events"; import type { PluginState } from "./state"; -import { z, type ZodTypeAny } from "zod"; +import * as z from "zod"; +import type { ZodTypeAny } from "zod"; export interface PluginEnv { get(key: string): string | undefined; diff --git a/packages/junior-plugin-api/src/user-pages.ts b/packages/junior-plugin-api/src/user-pages.ts index f04e2a8ca0..7d5e08fbfb 100644 --- a/packages/junior-plugin-api/src/user-pages.ts +++ b/packages/junior-plugin-api/src/user-pages.ts @@ -4,7 +4,7 @@ * Plugins own bounded data projection; Junior owns viewer authorization, * routing, response validation, and browser rendering. */ -import { z } from "zod"; +import * as z from "zod"; import type { PluginContext, User } from "./context"; import { nonBlankStringSchema } from "./schemas"; diff --git a/packages/junior-sentry/src/events/scope.ts b/packages/junior-sentry/src/events/scope.ts index ddec6a6d2c..1ffd1fb302 100644 --- a/packages/junior-sentry/src/events/scope.ts +++ b/packages/junior-sentry/src/events/scope.ts @@ -2,7 +2,7 @@ import { eventMatchFieldsSchema, type EventMatchFields, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; /** * A project slug in event data. It is lowercase, the same form as diff --git a/packages/junior-sentry/src/webhooks/events.ts b/packages/junior-sentry/src/webhooks/events.ts index 50a2a3cad7..85837d44c1 100644 --- a/packages/junior-sentry/src/webhooks/events.ts +++ b/packages/junior-sentry/src/webhooks/events.ts @@ -3,7 +3,7 @@ import { type EventData, type EventInput, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { SENTRY_ISSUE_LEVELS, SENTRY_ISSUE_PRIORITIES, diff --git a/packages/junior-testing/src/postgres/config.ts b/packages/junior-testing/src/postgres/config.ts index b7f5e02193..8587b91a27 100644 --- a/packages/junior-testing/src/postgres/config.ts +++ b/packages/junior-testing/src/postgres/config.ts @@ -1,5 +1,5 @@ import { randomUUID } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; export const postgresHarnessConfigSchema = z .object({ diff --git a/packages/junior-testing/src/structured-output.ts b/packages/junior-testing/src/structured-output.ts index ec21c7bbbd..1f5edeea57 100644 --- a/packages/junior-testing/src/structured-output.ts +++ b/packages/junior-testing/src/structured-output.ts @@ -1,4 +1,5 @@ -import { z, type ZodType } from "zod"; +import * as z from "zod"; +import type { ZodType } from "zod"; // OpenAI strict structured outputs accept only these string formats. const STRICT_STRING_FORMATS = new Set([ diff --git a/packages/junior-vercel/src/project.ts b/packages/junior-vercel/src/project.ts index 2216c75a05..af3a6fc328 100644 --- a/packages/junior-vercel/src/project.ts +++ b/packages/junior-vercel/src/project.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** Accept the opaque project identifier returned by Vercel. */ export const vercelProjectIdSchema = z.string().trim().min(1); diff --git a/packages/junior-vercel/src/tools/actions.ts b/packages/junior-vercel/src/tools/actions.ts index 7bd051c859..cd0b5ad5d0 100644 --- a/packages/junior-vercel/src/tools/actions.ts +++ b/packages/junior-vercel/src/tools/actions.ts @@ -5,7 +5,7 @@ import { type ToolRegistrationHookContext, type ObjectAnnotation, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; // Deployment and alias tools return selected fields because Vercel responses // can contain environment credentials. diff --git a/packages/junior-vercel/src/tools/deployment.ts b/packages/junior-vercel/src/tools/deployment.ts index 9ccef37779..f9b0359b9d 100644 --- a/packages/junior-vercel/src/tools/deployment.ts +++ b/packages/junior-vercel/src/tools/deployment.ts @@ -6,7 +6,7 @@ import { type PluginToolOutput, type ToolRegistrationHookContext, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { vercelProjectIdSchema } from "../project.js"; import { vercelDeploymentSubscribable } from "../events/deployment.js"; diff --git a/packages/junior-vercel/src/webhooks/events.ts b/packages/junior-vercel/src/webhooks/events.ts index 60784ab1aa..3fb69ba2ba 100644 --- a/packages/junior-vercel/src/webhooks/events.ts +++ b/packages/junior-vercel/src/webhooks/events.ts @@ -5,7 +5,7 @@ * and emits canonical events for project, target, and commit watches. */ import type { EventInput } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { vercelProjectIdSchema } from "../project.js"; import { VERCEL_DEPLOYMENT_EVENTS, diff --git a/packages/junior/.oxlintrc.json b/packages/junior/.oxlintrc.json index aec2a96056..8e76ddaecf 100644 --- a/packages/junior/.oxlintrc.json +++ b/packages/junior/.oxlintrc.json @@ -75,7 +75,8 @@ "anti-slop/no-unknown-parameters": "off", "anti-slop/no-unknown-returns": "off", "anti-slop/no-unsafe-dictionary-type": "off", - "anti-slop/require-safety-comment-for-type-assertion": "off" + "anti-slop/require-safety-comment-for-type-assertion": "off", + "junior/zod-namespace-import": "error" }, "overrides": [ { diff --git a/packages/junior/src/api/acp/auth.ts b/packages/junior/src/api/acp/auth.ts index b9305e34b3..e8eff2b68e 100644 --- a/packages/junior/src/api/acp/auth.ts +++ b/packages/junior/src/api/acp/auth.ts @@ -7,7 +7,7 @@ import { } from "node:crypto"; import * as acp from "@agentclientprotocol/sdk"; import { userSchema, type User } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { resolvePublicOrigin } from "@/api/public-origin"; import { fenceLock, MUTATION_LOCK_TTL_MS, withLock } from "@/chat/state/locks"; import type { AcpState } from "./state"; diff --git a/packages/junior/src/api/acp/route.ts b/packages/junior/src/api/acp/route.ts index 42b50b8c02..9a3002165c 100644 --- a/packages/junior/src/api/acp/route.ts +++ b/packages/junior/src/api/acp/route.ts @@ -8,7 +8,7 @@ import { createHash } from "node:crypto"; import type { User } from "@sentry/junior-plugin-api"; import * as acp from "@agentclientprotocol/sdk"; -import { z } from "zod"; +import * as z from "zod"; import type { AcpErrorContext, ReportAcpError } from "./errors"; import type { AcpConversations } from "./conversations"; import { diff --git a/packages/junior/src/api/acp/schema.ts b/packages/junior/src/api/acp/schema.ts index bded4c395f..c17509c8e2 100644 --- a/packages/junior/src/api/acp/schema.ts +++ b/packages/junior/src/api/acp/schema.ts @@ -1,6 +1,6 @@ /** Validate the ACP wire messages that Junior supports. */ import * as acp from "@agentclientprotocol/sdk"; -import { z } from "zod"; +import * as z from "zod"; const ACP_SESSION_ID_PATTERN = /^local:acp:[a-f0-9]{32}$/; const metaSchema = z.record(z.string(), z.unknown()).nullable(); diff --git a/packages/junior/src/api/acp/transport.ts b/packages/junior/src/api/acp/transport.ts index f8683d6f7f..5d70dbf225 100644 --- a/packages/junior/src/api/acp/transport.ts +++ b/packages/junior/src/api/acp/transport.ts @@ -7,7 +7,7 @@ import { createHash, randomUUID } from "node:crypto"; import * as acp from "@agentclientprotocol/sdk"; import { userSchema, type User } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import type { AcpErrorContext, ReportAcpError } from "./errors"; import type { AcpConversations } from "./conversations"; import { acpInboundMessageSchema } from "./schema"; diff --git a/packages/junior/src/api/activity.ts b/packages/junior/src/api/activity.ts index e843d53966..88e33e7cb0 100644 --- a/packages/junior/src/api/activity.ts +++ b/packages/junior/src/api/activity.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { WINDOW_SEVEN_DAY_HOURS, diff --git a/packages/junior/src/api/code/overview.ts b/packages/junior/src/api/code/overview.ts index dad7670775..ddaebce3c4 100644 --- a/packages/junior/src/api/code/overview.ts +++ b/packages/junior/src/api/code/overview.ts @@ -1,5 +1,5 @@ import { and, desc, eq, gte, or, sql, type SQL } from "drizzle-orm"; -import { z } from "zod"; +import * as z from "zod"; import type { CodeChangeState } from "@sentry/junior-plugin-api"; import { getDb } from "@/chat/db"; import { juniorCodeChanges, juniorCodeRepositories } from "@/db/schema"; diff --git a/packages/junior/src/api/conversations/cursor.ts b/packages/junior/src/api/conversations/cursor.ts index f18677c3d1..a790a0f8da 100644 --- a/packages/junior/src/api/conversations/cursor.ts +++ b/packages/junior/src/api/conversations/cursor.ts @@ -1,5 +1,5 @@ import { createHmac, timingSafeEqual } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; const CURSOR_CONTEXT = "junior-conversation-report-cursor"; diff --git a/packages/junior/src/api/conversations/events.ts b/packages/junior/src/api/conversations/events.ts index 57bad5fb3c..1b4d49aa36 100644 --- a/packages/junior/src/api/conversations/events.ts +++ b/packages/junior/src/api/conversations/events.ts @@ -8,7 +8,7 @@ import { SYSTEM_IDENTITY_ID } from "@/chat/identities/actor"; import { renderPluginConversationEvent } from "@/chat/plugins/conversation-events"; import { reviewItemChangeRecordSchema } from "@/chat/review-items/change-record"; import { buildSentryEventUrl } from "@/chat/sentry-links"; -import { z } from "zod"; +import * as z from "zod"; import { conversationEventModel, conversationEventModelCall, diff --git a/packages/junior/src/api/conversations/pending-messages.ts b/packages/junior/src/api/conversations/pending-messages.ts index fce26f01ff..8bcc81a032 100644 --- a/packages/junior/src/api/conversations/pending-messages.ts +++ b/packages/junior/src/api/conversations/pending-messages.ts @@ -1,6 +1,6 @@ import { readMessageAttachments } from "@/chat/attachments/input"; import type { User } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { getConversationStore, getDb, getSqlExecutor } from "@/chat/db"; import { loadConversationSlackTenantIds } from "@/chat/conversations/sql/event-actor"; import { parseContent } from "@/chat/slack/message/content"; diff --git a/packages/junior/src/api/http.ts b/packages/junior/src/api/http.ts index 1d063e9b60..d4e8d41c78 100644 --- a/packages/junior/src/api/http.ts +++ b/packages/junior/src/api/http.ts @@ -1,6 +1,6 @@ import { HTTPException } from "hono/http-exception"; import type { ContentfulStatusCode } from "hono/utils/http-status"; -import { z } from "zod"; +import * as z from "zod"; import { apiErrorSchema } from "./schema/common"; const NO_STORE_HEADERS = { "cache-control": "no-store" } as const; diff --git a/packages/junior/src/api/mcp/automation.ts b/packages/junior/src/api/mcp/automation.ts index 70cafba499..e1e35abd56 100644 --- a/packages/junior/src/api/mcp/automation.ts +++ b/packages/junior/src/api/mcp/automation.ts @@ -1,5 +1,5 @@ /** Own the MCP view of one Automation, shared by the automation tools. */ -import { z } from "zod"; +import * as z from "zod"; import type { AutomationSummary } from "@/api/schema/automation"; import { getDashboardTaskLink } from "@/chat/dashboard-link"; diff --git a/packages/junior/src/api/mcp/conversation.ts b/packages/junior/src/api/mcp/conversation.ts index d7c08a20cd..a6c6975da0 100644 --- a/packages/junior/src/api/mcp/conversation.ts +++ b/packages/junior/src/api/mcp/conversation.ts @@ -1,5 +1,5 @@ /** Own the MCP view of one Conversation, shared by the conversation tools. */ -import { z } from "zod"; +import * as z from "zod"; import { conversationReportStatusSchema, conversationSurfaceSchema, diff --git a/packages/junior/src/api/mcp/oauth/authorization.ts b/packages/junior/src/api/mcp/oauth/authorization.ts index b69aa56cb2..5e98086bdc 100644 --- a/packages/junior/src/api/mcp/oauth/authorization.ts +++ b/packages/junior/src/api/mcp/oauth/authorization.ts @@ -7,7 +7,7 @@ * error redirects. A valid request waits for consent on a dashboard page. */ import { randomBytes } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; import { redirectUriMatches, resolveMcpClient } from "./client-metadata"; import type { McpUrls } from "./metadata"; import { renderMcpPage } from "./page"; diff --git a/packages/junior/src/api/mcp/oauth/client-metadata.ts b/packages/junior/src/api/mcp/oauth/client-metadata.ts index cda00dc99a..94f4d33845 100644 --- a/packages/junior/src/api/mcp/oauth/client-metadata.ts +++ b/packages/junior/src/api/mcp/oauth/client-metadata.ts @@ -5,7 +5,7 @@ */ import https from "node:https"; import net from "node:net"; -import { z } from "zod"; +import * as z from "zod"; import { LOOPBACK_HOSTNAMES } from "@/api/public-origin"; import { isPublicAddress, publicAddressLookup } from "@/net/public-address"; import { mcpStateKey, readRecord, sha256Hex, type McpState } from "./state"; diff --git a/packages/junior/src/api/mcp/oauth/grants.ts b/packages/junior/src/api/mcp/oauth/grants.ts index 6ac06df512..58bfb73b22 100644 --- a/packages/junior/src/api/mcp/oauth/grants.ts +++ b/packages/junior/src/api/mcp/oauth/grants.ts @@ -5,7 +5,7 @@ * and refresh does not extend it. */ import { createHash, randomBytes, randomUUID } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; import { logWarn } from "@/chat/logging"; import { mcpScopeValueSchema, parseMcpScopes, type McpScope } from "./scopes"; import { mcpStateKey, readRecord, sha256Hex, type McpState } from "./state"; diff --git a/packages/junior/src/api/mcp/oauth/scopes.ts b/packages/junior/src/api/mcp/oauth/scopes.ts index 3ee68acbd9..43f58e5bea 100644 --- a/packages/junior/src/api/mcp/oauth/scopes.ts +++ b/packages/junior/src/api/mcp/oauth/scopes.ts @@ -7,7 +7,7 @@ * A grant stores its scopes as one space-separated string (RFC 6749 section * 3.3), so grants from before the scope split still parse. */ -import { z } from "zod"; +import * as z from "zod"; /** Every scope, in the order that the consent page shows it. */ export const MCP_SCOPES = [ diff --git a/packages/junior/src/api/mcp/oauth/state.ts b/packages/junior/src/api/mcp/oauth/state.ts index d6ff101e22..5b53124d30 100644 --- a/packages/junior/src/api/mcp/oauth/state.ts +++ b/packages/junior/src/api/mcp/oauth/state.ts @@ -1,6 +1,6 @@ import { createHash } from "node:crypto"; import type { StateAdapter } from "chat"; -import type { z } from "zod"; +import type * as z from "zod"; /** Shared state operations used by MCP OAuth records. */ export type McpState = Pick< diff --git a/packages/junior/src/api/mcp/review-item.ts b/packages/junior/src/api/mcp/review-item.ts index ab5cdec5e1..850acde533 100644 --- a/packages/junior/src/api/mcp/review-item.ts +++ b/packages/junior/src/api/mcp/review-item.ts @@ -4,7 +4,7 @@ * MCP Review items stay read-only. An answer or dismissal sends a message to * the linked Conversations, which can start a Turn. */ -import { z } from "zod"; +import * as z from "zod"; import { getDashboardReviewItemLink } from "@/chat/dashboard-link"; import { canActOnReviewItem } from "@/chat/review-items/access"; import type { ReviewItem } from "@/chat/review-items/store"; diff --git a/packages/junior/src/api/mcp/tools/archive-conversation.ts b/packages/junior/src/api/mcp/tools/archive-conversation.ts index 27c6618068..65d9ceb112 100644 --- a/packages/junior/src/api/mcp/tools/archive-conversation.ts +++ b/packages/junior/src/api/mcp/tools/archive-conversation.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { archiveConversation } from "@/api/conversations/archive"; import { mcpConversationIdSchema } from "../conversation"; import { diff --git a/packages/junior/src/api/mcp/tools/archive-done-conversations.ts b/packages/junior/src/api/mcp/tools/archive-done-conversations.ts index 837b496e8f..130fb82898 100644 --- a/packages/junior/src/api/mcp/tools/archive-done-conversations.ts +++ b/packages/junior/src/api/mcp/tools/archive-done-conversations.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { archiveViewerDoneConversations } from "@/api/conversations/auto-archive"; import { mcpToolResult, type McpToolContext } from "../tool-context"; diff --git a/packages/junior/src/api/mcp/tools/cancel-queued-messages.ts b/packages/junior/src/api/mcp/tools/cancel-queued-messages.ts index a102548c03..5bf81de34e 100644 --- a/packages/junior/src/api/mcp/tools/cancel-queued-messages.ts +++ b/packages/junior/src/api/mcp/tools/cancel-queued-messages.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { cancelConversationPendingMessagesForViewer } from "@/api/conversations/cancel-pending-messages"; import { mcpConversationIdSchema } from "../conversation"; import { diff --git a/packages/junior/src/api/mcp/tools/create-conversation.ts b/packages/junior/src/api/mcp/tools/create-conversation.ts index 6687585f04..7e01caaed7 100644 --- a/packages/junior/src/api/mcp/tools/create-conversation.ts +++ b/packages/junior/src/api/mcp/tools/create-conversation.ts @@ -1,7 +1,7 @@ import { randomUUID } from "node:crypto"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { encodeConversationCursor } from "@/api/conversations/cursor"; -import { z } from "zod"; +import * as z from "zod"; import { createConversationForViewer } from "@/api/conversations/create"; import { getDashboardConversationLink } from "@/chat/dashboard-link"; import { diff --git a/packages/junior/src/api/mcp/tools/get-automation.ts b/packages/junior/src/api/mcp/tools/get-automation.ts index ca4a1f4b3e..0474d4f84d 100644 --- a/packages/junior/src/api/mcp/tools/get-automation.ts +++ b/packages/junior/src/api/mcp/tools/get-automation.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { automationExecutionStatusSchema } from "@/api/schema/automation"; import { readViewerAutomationExecutions, diff --git a/packages/junior/src/api/mcp/tools/get-conversation.ts b/packages/junior/src/api/mcp/tools/get-conversation.ts index 3c7620a159..110c74644e 100644 --- a/packages/junior/src/api/mcp/tools/get-conversation.ts +++ b/packages/junior/src/api/mcp/tools/get-conversation.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { decodeConversationCursor, encodeConversationCursor, diff --git a/packages/junior/src/api/mcp/tools/get-review-item.ts b/packages/junior/src/api/mcp/tools/get-review-item.ts index c37fc4bed9..cae83edd3e 100644 --- a/packages/junior/src/api/mcp/tools/get-review-item.ts +++ b/packages/junior/src/api/mcp/tools/get-review-item.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { readReviewItemForUser, ReviewItemActionError, diff --git a/packages/junior/src/api/mcp/tools/list-conversation-messages.ts b/packages/junior/src/api/mcp/tools/list-conversation-messages.ts index 88eef7e275..d623daada2 100644 --- a/packages/junior/src/api/mcp/tools/list-conversation-messages.ts +++ b/packages/junior/src/api/mcp/tools/list-conversation-messages.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { decodeConversationCursor, encodeConversationCursor, diff --git a/packages/junior/src/api/mcp/tools/mark-conversation-read.ts b/packages/junior/src/api/mcp/tools/mark-conversation-read.ts index e365a14ef1..0bfe63ad43 100644 --- a/packages/junior/src/api/mcp/tools/mark-conversation-read.ts +++ b/packages/junior/src/api/mcp/tools/mark-conversation-read.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { markConversationRead } from "@/api/conversations/read-position"; import { mcpConversationIdSchema } from "../conversation"; import { diff --git a/packages/junior/src/api/mcp/tools/pin-conversation.ts b/packages/junior/src/api/mcp/tools/pin-conversation.ts index 6bf825c8cf..fbc560cf36 100644 --- a/packages/junior/src/api/mcp/tools/pin-conversation.ts +++ b/packages/junior/src/api/mcp/tools/pin-conversation.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { pinConversation } from "@/api/conversations/pin"; import { mcpConversationIdSchema } from "../conversation"; import { diff --git a/packages/junior/src/api/mcp/tools/search-automations.ts b/packages/junior/src/api/mcp/tools/search-automations.ts index a552714b68..288d1389ac 100644 --- a/packages/junior/src/api/mcp/tools/search-automations.ts +++ b/packages/junior/src/api/mcp/tools/search-automations.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { automationListQuerySchema } from "@/api/schema/automation"; import { readViewerAutomations } from "@/chat/automations/read"; import { mcpAutomation, mcpAutomationSchema } from "../automation"; diff --git a/packages/junior/src/api/mcp/tools/search-conversations.ts b/packages/junior/src/api/mcp/tools/search-conversations.ts index a10f90d847..870671320a 100644 --- a/packages/junior/src/api/mcp/tools/search-conversations.ts +++ b/packages/junior/src/api/mcp/tools/search-conversations.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { readConversationFeed } from "@/api/conversations/list"; import { conversationFeedQuerySchema } from "@/api/schema/conversation"; import { mcpConversation, mcpConversationSchema } from "../conversation"; diff --git a/packages/junior/src/api/mcp/tools/search-review-items.ts b/packages/junior/src/api/mcp/tools/search-review-items.ts index d9d87eeffe..11b3ad3422 100644 --- a/packages/junior/src/api/mcp/tools/search-review-items.ts +++ b/packages/junior/src/api/mcp/tools/search-review-items.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { getDb } from "@/chat/db"; import { reviewItemReaderForUser } from "@/chat/review-items/access"; import { searchReviewItems } from "@/chat/review-items/store"; diff --git a/packages/junior/src/api/mcp/tools/set-conversation-auto-archive.ts b/packages/junior/src/api/mcp/tools/set-conversation-auto-archive.ts index 3bc64d414a..c2fa9c7686 100644 --- a/packages/junior/src/api/mcp/tools/set-conversation-auto-archive.ts +++ b/packages/junior/src/api/mcp/tools/set-conversation-auto-archive.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { setConversationAutoArchive } from "@/api/conversations/auto-archive"; import { mcpConversationIdSchema } from "../conversation"; import { diff --git a/packages/junior/src/api/mcp/tools/stop-conversation.ts b/packages/junior/src/api/mcp/tools/stop-conversation.ts index 1a775b13b2..66481e7f41 100644 --- a/packages/junior/src/api/mcp/tools/stop-conversation.ts +++ b/packages/junior/src/api/mcp/tools/stop-conversation.ts @@ -1,5 +1,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; import { stopConversationTurnForViewer } from "@/api/conversations/stop"; import { mcpConversationIdSchema } from "../conversation"; import { diff --git a/packages/junior/src/api/review-items/routes.ts b/packages/junior/src/api/review-items/routes.ts index 2a20108aab..3f21c37849 100644 --- a/packages/junior/src/api/review-items/routes.ts +++ b/packages/junior/src/api/review-items/routes.ts @@ -1,6 +1,6 @@ import type { User } from "@sentry/junior-plugin-api"; import { Hono } from "hono"; -import { z } from "zod"; +import * as z from "zod"; import { jsonResponse } from "@/api/http"; import type { JuniorApiEnv } from "@/api/route"; import { apiErrorSchema } from "@/api/schema/common"; diff --git a/packages/junior/src/api/schema/automation.ts b/packages/junior/src/api/schema/automation.ts index ecec71474c..1639e0aa26 100644 --- a/packages/junior/src/api/schema/automation.ts +++ b/packages/junior/src/api/schema/automation.ts @@ -16,7 +16,7 @@ import { taskOutcomeSchema, type EventTriggerDescription, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { actorIdentitySchema } from "./conversation"; const automationDestinationSchema = z diff --git a/packages/junior/src/api/schema/child-agent-totals.ts b/packages/junior/src/api/schema/child-agent-totals.ts index 253e0421bd..1576fac039 100644 --- a/packages/junior/src/api/schema/child-agent-totals.ts +++ b/packages/junior/src/api/schema/child-agent-totals.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { usageSchema } from "@/usage-schema"; /** diff --git a/packages/junior/src/api/schema/child-agent.ts b/packages/junior/src/api/schema/child-agent.ts index a3e2fc9369..d591bc5f6f 100644 --- a/packages/junior/src/api/schema/child-agent.ts +++ b/packages/junior/src/api/schema/child-agent.ts @@ -1,5 +1,5 @@ -import { z } from "zod"; -import { AGENT_INVOCATION_STATUSES } from "@/db/schema/agent-invocations"; +import * as z from "zod"; +import { AGENT_INVOCATION_STATUSES } from "@/chat/agent-invocations/statuses"; import { conversationChildAgentTotalsSchema } from "./child-agent-totals"; import { conversationAuxiliaryCostsSchema, diff --git a/packages/junior/src/api/schema/code.ts b/packages/junior/src/api/schema/code.ts index b3c5b8ee58..94ff9ce317 100644 --- a/packages/junior/src/api/schema/code.ts +++ b/packages/junior/src/api/schema/code.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { codeChangeStateSchema } from "@sentry/junior-plugin-api"; export const codeChangeSummarySchema = z diff --git a/packages/junior/src/api/schema/common.ts b/packages/junior/src/api/schema/common.ts index 477fa576b9..094c8e7975 100644 --- a/packages/junior/src/api/schema/common.ts +++ b/packages/junior/src/api/schema/common.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** Stable error body returned by Junior-owned REST endpoints. */ export const apiErrorSchema = z.object({ error: z.string().min(1) }).strict(); diff --git a/packages/junior/src/api/schema/connection.ts b/packages/junior/src/api/schema/connection.ts index 441795bf02..501725c332 100644 --- a/packages/junior/src/api/schema/connection.ts +++ b/packages/junior/src/api/schema/connection.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; export const connectionSchema = z .object({ diff --git a/packages/junior/src/api/schema/conversation-archive.ts b/packages/junior/src/api/schema/conversation-archive.ts index 84366db92b..805a473596 100644 --- a/packages/junior/src/api/schema/conversation-archive.ts +++ b/packages/junior/src/api/schema/conversation-archive.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; export const archiveConversationBodySchema = z .object({ archived: z.boolean(), lastSeenAt: z.string().datetime() }) diff --git a/packages/junior/src/api/schema/conversation-catch-up.ts b/packages/junior/src/api/schema/conversation-catch-up.ts index f1398c4cfa..4e759f231d 100644 --- a/packages/junior/src/api/schema/conversation-catch-up.ts +++ b/packages/junior/src/api/schema/conversation-catch-up.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** * The unread rows to summarize: every event after `afterSeq`, through diff --git a/packages/junior/src/api/schema/conversation-pending-messages.ts b/packages/junior/src/api/schema/conversation-pending-messages.ts index 927543335d..2c9e826343 100644 --- a/packages/junior/src/api/schema/conversation-pending-messages.ts +++ b/packages/junior/src/api/schema/conversation-pending-messages.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { messageAttachmentSchema } from "@/chat/attachments/input"; import { reviewItemChangeRecordSchema } from "@/chat/review-items/change-record"; import { diff --git a/packages/junior/src/api/schema/conversation-pin.ts b/packages/junior/src/api/schema/conversation-pin.ts index 5607f84f4b..df0d25b693 100644 --- a/packages/junior/src/api/schema/conversation-pin.ts +++ b/packages/junior/src/api/schema/conversation-pin.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** Pin or unpin one Conversation for the signed-in viewer. */ export const pinConversationBodySchema = z diff --git a/packages/junior/src/api/schema/conversation-read-position.ts b/packages/junior/src/api/schema/conversation-read-position.ts index 92abf31292..595bf351cf 100644 --- a/packages/junior/src/api/schema/conversation-read-position.ts +++ b/packages/junior/src/api/schema/conversation-read-position.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** * How far the signed-in viewer has read a Conversation transcript. diff --git a/packages/junior/src/api/schema/conversation-stats.ts b/packages/junior/src/api/schema/conversation-stats.ts index 699ea28f29..41abd6b3f9 100644 --- a/packages/junior/src/api/schema/conversation-stats.ts +++ b/packages/junior/src/api/schema/conversation-stats.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; // Conversation stats report schemas. Conversation detail and event schemas // live in `conversation.ts`. diff --git a/packages/junior/src/api/schema/conversation-stop.ts b/packages/junior/src/api/schema/conversation-stop.ts index aa26b3c51e..d78c6bec4c 100644 --- a/packages/junior/src/api/schema/conversation-stop.ts +++ b/packages/junior/src/api/schema/conversation-stop.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** One queued web message from the viewer that a stop removed. */ const stoppedConversationMessageSchema = z diff --git a/packages/junior/src/api/schema/conversation.ts b/packages/junior/src/api/schema/conversation.ts index c850ccae6f..f27b33f453 100644 --- a/packages/junior/src/api/schema/conversation.ts +++ b/packages/junior/src/api/schema/conversation.ts @@ -6,7 +6,7 @@ import { } from "@/chat/attachments/input"; import { messageCardRefSchema } from "@/chat/conversations/cards"; import { reviewItemChangeRecordSchema } from "@/chat/review-items/change-record"; -import { z } from "zod"; +import * as z from "zod"; import { conversationReadPositionSchema } from "./conversation-read-position"; import { objectTypeSchema } from "@sentry/junior-plugin-api"; import { diff --git a/packages/junior/src/api/schema/location.ts b/packages/junior/src/api/schema/location.ts index 091d03a269..e9b3c89838 100644 --- a/packages/junior/src/api/schema/location.ts +++ b/packages/junior/src/api/schema/location.ts @@ -1,11 +1,11 @@ -import { z } from "zod"; +import * as z from "zod"; import { actorIdentitySchema, conversationSummaryReportSchema, } from "./conversation"; import { conversationStatsItemSchema } from "./conversation-stats"; import { dailyConversationActivitySchema } from "../activity"; -import { juniorDestinationKindSchema } from "@/db/schema/destinations"; +import { juniorDestinationKindSchema } from "@/db/schema/destination-kind"; export const locationParamsSchema = z .object({ locationId: z.string().min(1) }) diff --git a/packages/junior/src/api/schema/person.ts b/packages/junior/src/api/schema/person.ts index 8ece418c0b..ab22746ac6 100644 --- a/packages/junior/src/api/schema/person.ts +++ b/packages/junior/src/api/schema/person.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { actorIdentitySchema, conversationSummaryReportSchema, diff --git a/packages/junior/src/api/schema/personal-token.ts b/packages/junior/src/api/schema/personal-token.ts index 6d8ab28b37..8be37183c7 100644 --- a/packages/junior/src/api/schema/personal-token.ts +++ b/packages/junior/src/api/schema/personal-token.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; export const personalTokenMetadataSchema = z .object({ diff --git a/packages/junior/src/api/schema/review-item.ts b/packages/junior/src/api/schema/review-item.ts index 7d504de4a3..851b664356 100644 --- a/packages/junior/src/api/schema/review-item.ts +++ b/packages/junior/src/api/schema/review-item.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { userInputRequestSchema } from "@/chat/tools/runtime/user-input-request"; const answerSchema = z diff --git a/packages/junior/src/api/schema/service-account.ts b/packages/junior/src/api/schema/service-account.ts index ce8b4ab95d..714e109524 100644 --- a/packages/junior/src/api/schema/service-account.ts +++ b/packages/junior/src/api/schema/service-account.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; export const serviceAccountSchema = z .object({ diff --git a/packages/junior/src/api/schema/stats.ts b/packages/junior/src/api/schema/stats.ts index 381acc2831..9945f7f0bc 100644 --- a/packages/junior/src/api/schema/stats.ts +++ b/packages/junior/src/api/schema/stats.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; export const statSchema = z .object({ diff --git a/packages/junior/src/api/schema/user-customization.ts b/packages/junior/src/api/schema/user-customization.ts index 0741fffadf..75f8ed1573 100644 --- a/packages/junior/src/api/schema/user-customization.ts +++ b/packages/junior/src/api/schema/user-customization.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** Longest customization text one user can save. */ export const USER_CUSTOMIZATION_MAX_CHARS = 1_000; diff --git a/packages/junior/src/api/schema/watch.ts b/packages/junior/src/api/schema/watch.ts index 13a96806f8..2f4844383d 100644 --- a/packages/junior/src/api/schema/watch.ts +++ b/packages/junior/src/api/schema/watch.ts @@ -1,5 +1,5 @@ import { eventMatchSchema } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; /** * One active Watch that a Conversation owns: its own, or one that a child agent diff --git a/packages/junior/src/api/schema/workspace.ts b/packages/junior/src/api/schema/workspace.ts index 8948caadaf..cdd21ce694 100644 --- a/packages/junior/src/api/schema/workspace.ts +++ b/packages/junior/src/api/schema/workspace.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; const workspaceRepoInputSchema = z .object({ diff --git a/packages/junior/src/api/user-pages/routes.ts b/packages/junior/src/api/user-pages/routes.ts index db50821650..721392bec9 100644 --- a/packages/junior/src/api/user-pages/routes.ts +++ b/packages/junior/src/api/user-pages/routes.ts @@ -1,5 +1,5 @@ import { Hono } from "hono"; -import { z } from "zod"; +import * as z from "zod"; import { pluginUserPageContentSchema, pluginUserPageCursorSchema, diff --git a/packages/junior/src/api/validation.ts b/packages/junior/src/api/validation.ts index c54a125f3d..fdde57f20f 100644 --- a/packages/junior/src/api/validation.ts +++ b/packages/junior/src/api/validation.ts @@ -1,6 +1,6 @@ import { zValidator } from "@hono/zod-validator"; import type { ValidationTargets } from "hono"; -import type { z } from "zod"; +import type * as z from "zod"; import { throwApiError } from "./http"; /** Validate one request input and use Junior's stable JSON error contract. */ diff --git a/packages/junior/src/chat/actor.ts b/packages/junior/src/chat/actor.ts index 426d436d51..1a2ed74568 100644 --- a/packages/junior/src/chat/actor.ts +++ b/packages/junior/src/chat/actor.ts @@ -4,7 +4,7 @@ * Runtime actors are platform-scoped actors. Stored Slack actor parsing * remains explicit so durable conversation metadata is not repaired on read. */ -import { z } from "zod"; +import * as z from "zod"; import { actorSchema } from "@sentry/junior-plugin-api"; import { parseSlackTeamId } from "@/chat/slack/ids"; diff --git a/packages/junior/src/chat/agent-dispatch/store.ts b/packages/junior/src/chat/agent-dispatch/store.ts index 370aea70dc..41c8417994 100644 --- a/packages/junior/src/chat/agent-dispatch/store.ts +++ b/packages/junior/src/chat/agent-dispatch/store.ts @@ -8,7 +8,7 @@ import { sourceSchema, taskOutcomeSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { credentialSubjectSchema } from "@/chat/credentials/context"; import { getDb } from "@/chat/db"; import { getStateAdapter } from "@/chat/state/adapter"; diff --git a/packages/junior/src/chat/agent-dispatch/work.ts b/packages/junior/src/chat/agent-dispatch/work.ts index bc169fcbff..a65a3817b5 100644 --- a/packages/junior/src/chat/agent-dispatch/work.ts +++ b/packages/junior/src/chat/agent-dispatch/work.ts @@ -6,7 +6,7 @@ * leases, retries, continuation, delivery, and recovery. */ import type { StateAdapter } from "chat"; -import { z } from "zod"; +import * as z from "zod"; import type { ConversationStore } from "@/chat/conversations/store"; import { credentialContextForActor } from "@/chat/credentials/context"; import { getConversationStore, getSqlExecutor } from "@/chat/db"; diff --git a/packages/junior/src/chat/agent-invocations/agent-types.ts b/packages/junior/src/chat/agent-invocations/agent-types.ts index 9dc839e5b4..98feb4fb8c 100644 --- a/packages/junior/src/chat/agent-invocations/agent-types.ts +++ b/packages/junior/src/chat/agent-invocations/agent-types.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** * Child agent types. A type is plain data: when to pick it, whether the child diff --git a/packages/junior/src/chat/agent-invocations/blocked-report.ts b/packages/junior/src/chat/agent-invocations/blocked-report.ts index 1c19206223..b440d3b598 100644 --- a/packages/junior/src/chat/agent-invocations/blocked-report.ts +++ b/packages/junior/src/chat/agent-invocations/blocked-report.ts @@ -1,5 +1,5 @@ /** Blocked report of a child agent. */ -import { z } from "zod"; +import * as z from "zod"; import { isToolResultError, isToolResultMessage, diff --git a/packages/junior/src/chat/agent-invocations/statuses.ts b/packages/junior/src/chat/agent-invocations/statuses.ts new file mode 100644 index 0000000000..403e5ef15a --- /dev/null +++ b/packages/junior/src/chat/agent-invocations/statuses.ts @@ -0,0 +1,33 @@ +// Kept apart from the Drizzle table so browser code that imports these +// values does not bundle drizzle-orm and the table definitions. + +export const AGENT_INVOCATION_STATUSES = [ + "pending", + "running", + "paused", + "blocked", + "completed", + "failed", + "stopped", +] as const; + +export const AGENT_INVOCATION_MAILBOX_STATUSES = [ + "pending", + "appended", +] as const; + +/** + * Parent mailbox append state. Only terminal invocations have a value. + * `replaced` means the child still had open work, so a later agent invocation + * on the same child sends the result instead. `skipped` means a stop ended + * the work, so the result is never used. `steered` means the agent invocation + * that was running read the input as a steering message, so its result covers + * this one. + */ +export const AGENT_INVOCATION_PARENT_MAILBOX_STATUSES = [ + "pending", + "appended", + "replaced", + "skipped", + "steered", +] as const; diff --git a/packages/junior/src/chat/agent-invocations/types.ts b/packages/junior/src/chat/agent-invocations/types.ts index 1fecd66989..7a4eb73408 100644 --- a/packages/junior/src/chat/agent-invocations/types.ts +++ b/packages/junior/src/chat/agent-invocations/types.ts @@ -3,7 +3,7 @@ import { destinationSchema, sourceSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { credentialContextSchema } from "@/chat/credentials/context"; import { TURN_REASONING_LEVELS } from "@/chat/reasoning-level"; import { agentTypeSchema } from "./agent-types"; @@ -11,7 +11,7 @@ import { AGENT_INVOCATION_MAILBOX_STATUSES, AGENT_INVOCATION_PARENT_MAILBOX_STATUSES, AGENT_INVOCATION_STATUSES, -} from "@/db/schema/agent-invocations"; +} from "@/chat/agent-invocations/statuses"; const exactStringSchema = z .string() diff --git a/packages/junior/src/chat/agent-invocations/work.ts b/packages/junior/src/chat/agent-invocations/work.ts index 895b920b29..f7487dacb6 100644 --- a/packages/junior/src/chat/agent-invocations/work.ts +++ b/packages/junior/src/chat/agent-invocations/work.ts @@ -1,6 +1,6 @@ import { isDeepStrictEqual } from "node:util"; import type { StateAdapter } from "chat"; -import { z } from "zod"; +import * as z from "zod"; import { buildSteeringPiMessage, withoutSavedSteeringMessages, diff --git a/packages/junior/src/chat/attachments/input.ts b/packages/junior/src/chat/attachments/input.ts index 4020b2818e..0e17f0b880 100644 --- a/packages/junior/src/chat/attachments/input.ts +++ b/packages/junior/src/chat/attachments/input.ts @@ -1,5 +1,5 @@ import { INPUT_IMAGE_TYPES } from "./media"; -import { z } from "zod"; +import * as z from "zod"; /** Bound JSON image input below the hosting platform's request size limit. */ export const MAX_INPUT_IMAGE_BYTES = 3 * 1024 * 1024; diff --git a/packages/junior/src/chat/automation-result.ts b/packages/junior/src/chat/automation-result.ts index 4bcbd3506a..c6518e3542 100644 --- a/packages/junior/src/chat/automation-result.ts +++ b/packages/junior/src/chat/automation-result.ts @@ -5,7 +5,7 @@ * result. The run does not deliver its final assistant text. The work owner * reads the declared result and applies the stored outcomes. */ -import { z } from "zod"; +import * as z from "zod"; import type { PiMessage } from "@/chat/pi/messages"; import { isAssistantMessage, diff --git a/packages/junior/src/chat/automations/card.ts b/packages/junior/src/chat/automations/card.ts index 57c581e7ad..a479da8e35 100644 --- a/packages/junior/src/chat/automations/card.ts +++ b/packages/junior/src/chat/automations/card.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** Saved automation facts shown with a Message, not a live status view. */ export const automationCardSchema = z diff --git a/packages/junior/src/chat/automations/edit-schema.ts b/packages/junior/src/chat/automations/edit-schema.ts index 01cbfa53c3..6b42257c58 100644 --- a/packages/junior/src/chat/automations/edit-schema.ts +++ b/packages/junior/src/chat/automations/edit-schema.ts @@ -4,7 +4,7 @@ import { EVENT_AUTOMATION_IDENTIFIER_MAX_LENGTH, } from "@/chat/event-automations/types"; import { taskOutcomeSchema } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { taskOutcomeInputSchema } from "@/chat/task-outcomes-schema"; export const automationTitleSchema = z.string().trim().min(1).max(60); diff --git a/packages/junior/src/chat/automations/tool-access.ts b/packages/junior/src/chat/automations/tool-access.ts index aae39a336b..73a7ee113e 100644 --- a/packages/junior/src/chat/automations/tool-access.ts +++ b/packages/junior/src/chat/automations/tool-access.ts @@ -1,6 +1,6 @@ /** Automation access for the Automation tools. */ import type { Identity, User } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { automationListQuerySchema } from "@/api/schema/automation"; import { isUserActor, type UserActor } from "@/chat/actor"; import { getDb } from "@/chat/db"; diff --git a/packages/junior/src/chat/automations/tool-support.ts b/packages/junior/src/chat/automations/tool-support.ts index a6183cf2d1..c41d23dfe9 100644 --- a/packages/junior/src/chat/automations/tool-support.ts +++ b/packages/junior/src/chat/automations/tool-support.ts @@ -1,7 +1,7 @@ /** Shared input and result shapes of the Automation tools. */ import { ownedObjectAnnotationSchema } from "@sentry/junior-plugin-api"; import { createHash } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; import { compactEventAutomation, compactEventAutomationResultSchema, diff --git a/packages/junior/src/chat/automations/tools/create.ts b/packages/junior/src/chat/automations/tools/create.ts index 2eb7aa9612..37cd761b48 100644 --- a/packages/junior/src/chat/automations/tools/create.ts +++ b/packages/junior/src/chat/automations/tools/create.ts @@ -3,7 +3,7 @@ import { taskOutcomeInputSchema, type TaskOutcomeInput, } from "@/chat/task-outcomes-schema"; -import { z } from "zod"; +import * as z from "zod"; import { automationInstructionToolSchema } from "@/chat/automations/edit-schema"; import { requireInstructionReferences } from "@/chat/automations/instruction-references"; import { diff --git a/packages/junior/src/chat/automations/tools/delete.ts b/packages/junior/src/chat/automations/tools/delete.ts index dcc18a2f4b..a08d06f204 100644 --- a/packages/junior/src/chat/automations/tools/delete.ts +++ b/packages/junior/src/chat/automations/tools/delete.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { removedCardSchema } from "@/chat/conversations/cards"; import { deleteToolAutomation, diff --git a/packages/junior/src/chat/automations/tools/run-now.ts b/packages/junior/src/chat/automations/tools/run-now.ts index 02bfa65a0f..de9a882774 100644 --- a/packages/junior/src/chat/automations/tools/run-now.ts +++ b/packages/junior/src/chat/automations/tools/run-now.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { requireCredentialStart } from "@/chat/automations/edit-rules"; import { automationRevision } from "@/chat/automations/revision"; import { diff --git a/packages/junior/src/chat/automations/tools/update.ts b/packages/junior/src/chat/automations/tools/update.ts index 683dff8e20..0feef3b158 100644 --- a/packages/junior/src/chat/automations/tools/update.ts +++ b/packages/junior/src/chat/automations/tools/update.ts @@ -1,6 +1,6 @@ import { declaredEventKeys } from "@sentry/junior-plugin-api"; import { and, eq, inArray } from "drizzle-orm"; -import { z } from "zod"; +import * as z from "zod"; import { automationEditor, changeAutomationLifecycle, diff --git a/packages/junior/src/chat/briefs/events.ts b/packages/junior/src/chat/briefs/events.ts index 05079726fc..33fb4e1d8d 100644 --- a/packages/junior/src/chat/briefs/events.ts +++ b/packages/junior/src/chat/briefs/events.ts @@ -1,5 +1,5 @@ import { defineConversationEvent } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; /** Durable cost and size record for one stored Brief version. */ export const briefUpdatedEvent = defineConversationEvent({ diff --git a/packages/junior/src/chat/briefs/generate.ts b/packages/junior/src/chat/briefs/generate.ts index c626b4bcdd..e72c3a88ba 100644 --- a/packages/junior/src/chat/briefs/generate.ts +++ b/packages/junior/src/chat/briefs/generate.ts @@ -1,4 +1,5 @@ -import { z, type ZodTypeAny } from "zod"; +import * as z from "zod"; +import type { ZodTypeAny } from "zod"; import { briefOutcomeStatusSchema, conversationBriefSchema, diff --git a/packages/junior/src/chat/briefs/schema.ts b/packages/junior/src/chat/briefs/schema.ts index 26c2baa1bf..06620c9c76 100644 --- a/packages/junior/src/chat/briefs/schema.ts +++ b/packages/junior/src/chat/briefs/schema.ts @@ -3,7 +3,7 @@ * durable or CLI edge, so these schemas own the exported types. */ import { codeChangeStateSchema } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; const lineSchema = z.string().trim().min(1).max(400); const urlSchema = z.string().url().max(2_048); diff --git a/packages/junior/src/chat/briefs/snapshot.ts b/packages/junior/src/chat/briefs/snapshot.ts index 5ac0e9ac3c..57356cb37a 100644 --- a/packages/junior/src/chat/briefs/snapshot.ts +++ b/packages/junior/src/chat/briefs/snapshot.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { conversationDetailReportSchema, conversationEventPageSchema, diff --git a/packages/junior/src/chat/codemode/tool.ts b/packages/junior/src/chat/codemode/tool.ts index 5688706393..73b9a5a71f 100644 --- a/packages/junior/src/chat/codemode/tool.ts +++ b/packages/junior/src/chat/codemode/tool.ts @@ -12,7 +12,7 @@ import { renderToolSignature, type CodemodeJsonSchema, } from "@earendil-works/pi-codemode"; -import { z } from "zod"; +import * as z from "zod"; import { CODE_MODE_MAX_OUTPUT_CHARS, CODE_MODE_SCRIPT_TIMEOUT_MS, diff --git a/packages/junior/src/chat/configuration/types.ts b/packages/junior/src/chat/configuration/types.ts index 98b1a4fe85..3f3c804c7c 100644 --- a/packages/junior/src/chat/configuration/types.ts +++ b/packages/junior/src/chat/configuration/types.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** JSON value accepted by Location configuration. */ export const configValueSchema = z.json(); diff --git a/packages/junior/src/chat/conversations/cards.ts b/packages/junior/src/chat/conversations/cards.ts index 1f7e7ce036..1b023fcb4e 100644 --- a/packages/junior/src/chat/conversations/cards.ts +++ b/packages/junior/src/chat/conversations/cards.ts @@ -3,7 +3,7 @@ import { type ConversationAnnotation, type OwnedObjectAnnotation, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { automationCardSchema, automationCardText, diff --git a/packages/junior/src/chat/conversations/history-payload.ts b/packages/junior/src/chat/conversations/history-payload.ts index 2ca5711f51..6ef301df62 100644 --- a/packages/junior/src/chat/conversations/history-payload.ts +++ b/packages/junior/src/chat/conversations/history-payload.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { ConversationEventData } from "./history"; const messageFieldsSchema = z.record(z.string(), z.unknown()); diff --git a/packages/junior/src/chat/conversations/history.ts b/packages/junior/src/chat/conversations/history.ts index 849b96dacb..ea571013cb 100644 --- a/packages/junior/src/chat/conversations/history.ts +++ b/packages/junior/src/chat/conversations/history.ts @@ -7,7 +7,7 @@ * while malformed known events fail loudly. Provider-specific message fields * are validated by the Pi adapter when it restores model context. */ -import { z } from "zod"; +import * as z from "zod"; import type { ConversationCompaction } from "@/chat/state/conversation"; import { conversationMessageProvenanceSchema } from "./provenance"; import { decodeHistoryPayload, isEncodedHistoryType } from "./history-payload"; diff --git a/packages/junior/src/chat/conversations/location.ts b/packages/junior/src/chat/conversations/location.ts index d36ce3b7e2..53949cf0cc 100644 --- a/packages/junior/src/chat/conversations/location.ts +++ b/packages/junior/src/chat/conversations/location.ts @@ -1,5 +1,5 @@ import { locationSchema } from "@sentry/junior-plugin-api"; -import type { z } from "zod"; +import type * as z from "zod"; export { locationSchema }; diff --git a/packages/junior/src/chat/conversations/provenance.ts b/packages/junior/src/chat/conversations/provenance.ts index fffaec20be..211ca7deae 100644 --- a/packages/junior/src/chat/conversations/provenance.ts +++ b/packages/junior/src/chat/conversations/provenance.ts @@ -3,7 +3,7 @@ * Attribution never grants credential authority. */ import { actorSchema, type Actor } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; const conversationMessageAuthoritySchema = z.union([ z.literal("instruction"), diff --git a/packages/junior/src/chat/conversations/sql/store.ts b/packages/junior/src/chat/conversations/sql/store.ts index 94e6fc65ee..348fa3d416 100644 --- a/packages/junior/src/chat/conversations/sql/store.ts +++ b/packages/junior/src/chat/conversations/sql/store.ts @@ -30,10 +30,8 @@ import { juniorUsers, } from "@/db/schema"; import { conversationReadColumns } from "@/db/schema/conversations"; -import type { - JuniorDestinationKind, - JuniorDestinationVisibility, -} from "@/db/schema/destinations"; +import type { JuniorDestinationKind } from "@/db/schema/destination-kind"; +import type { JuniorDestinationVisibility } from "@/db/schema/destinations"; import { bindProviderConversation, getConversationIdByProviderConversation, diff --git a/packages/junior/src/chat/conversations/structured-events.ts b/packages/junior/src/chat/conversations/structured-events.ts index e1809874ff..e519c2a052 100644 --- a/packages/junior/src/chat/conversations/structured-events.ts +++ b/packages/junior/src/chat/conversations/structured-events.ts @@ -4,7 +4,7 @@ import { type ConversationEventPresentation, type PluginConversationEventDefinition, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; /** Reserved namespace for Junior-owned conversation metadata events. */ export const JUNIOR_NATIVE_EVENT_NAMESPACE = "junior" as const; diff --git a/packages/junior/src/chat/conversations/web-mailbox.ts b/packages/junior/src/chat/conversations/web-mailbox.ts index c9b318840a..94221427e6 100644 --- a/packages/junior/src/chat/conversations/web-mailbox.ts +++ b/packages/junior/src/chat/conversations/web-mailbox.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; // TODO(dcramer): Delete this legacy schema after every deployed mailbox record // stores complete web Source and Actor values. diff --git a/packages/junior/src/chat/credentials/context.ts b/packages/junior/src/chat/credentials/context.ts index ff77d4aac1..212458de41 100644 --- a/packages/junior/src/chat/credentials/context.ts +++ b/packages/junior/src/chat/credentials/context.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { isUserActor, parseActorUserId, type Actor } from "@/chat/actor"; import type { LogContext } from "@/chat/log-context"; diff --git a/packages/junior/src/chat/event-automations/edit.ts b/packages/junior/src/chat/event-automations/edit.ts index 6ce96c335b..d31c4b8135 100644 --- a/packages/junior/src/chat/event-automations/edit.ts +++ b/packages/junior/src/chat/event-automations/edit.ts @@ -13,7 +13,7 @@ import { } from "@/chat/slack/channel-message-events"; import { requireEventAutomationTrigger } from "./tool-support"; import type { EventAutomation } from "./types"; -import type { z } from "zod"; +import type * as z from "zod"; function changesEventAutomationTrigger( current: EventAutomation["trigger"], diff --git a/packages/junior/src/chat/event-automations/run-limit.ts b/packages/junior/src/chat/event-automations/run-limit.ts index 4550dd56fe..872465cd00 100644 --- a/packages/junior/src/chat/event-automations/run-limit.ts +++ b/packages/junior/src/chat/event-automations/run-limit.ts @@ -22,7 +22,7 @@ * still both append, and they count as one run. */ import type { StateAdapter } from "chat"; -import { z } from "zod"; +import * as z from "zod"; import { botConfig } from "@/chat/config"; import { getStateAdapter } from "@/chat/state/adapter"; diff --git a/packages/junior/src/chat/event-automations/tool-support.ts b/packages/junior/src/chat/event-automations/tool-support.ts index ca073b392b..9d7ba00636 100644 --- a/packages/junior/src/chat/event-automations/tool-support.ts +++ b/packages/junior/src/chat/event-automations/tool-support.ts @@ -7,7 +7,7 @@ import { type ObjectAnnotation, } from "@sentry/junior-plugin-api"; import { saveObjectAnnotations } from "@/chat/conversations/annotation-results"; -import { z } from "zod"; +import * as z from "zod"; import { fallbackShortTitle } from "@/chat/services/short-title"; import { getDashboardTaskLink } from "@/chat/dashboard-link"; import type { StoredEventAutomation } from "@/chat/event-automations/store"; diff --git a/packages/junior/src/chat/event-automations/types.ts b/packages/junior/src/chat/event-automations/types.ts index fa5e3841f7..2f0c533f0a 100644 --- a/packages/junior/src/chat/event-automations/types.ts +++ b/packages/junior/src/chat/event-automations/types.ts @@ -6,7 +6,7 @@ import { slackDestinationSchema, taskOutcomeSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; /** Keep indexed event-automation selectors within PostgreSQL B-tree entry limits. */ export const EVENT_AUTOMATION_IDENTIFIER_MAX_LENGTH = 300; diff --git a/packages/junior/src/chat/events/catalog.ts b/packages/junior/src/chat/events/catalog.ts index 687c967f9a..8634077851 100644 --- a/packages/junior/src/chat/events/catalog.ts +++ b/packages/junior/src/chat/events/catalog.ts @@ -14,7 +14,7 @@ import { type PluginEvents, type EventMatch, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; /** diff --git a/packages/junior/src/chat/events/notification.ts b/packages/junior/src/chat/events/notification.ts index d874f2892a..5b40db099a 100644 --- a/packages/junior/src/chat/events/notification.ts +++ b/packages/junior/src/chat/events/notification.ts @@ -1,5 +1,5 @@ import { objectTypeSchema, type ObjectType } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { botConfig } from "@/chat/config"; import { logInfo } from "@/chat/logging"; import { admitAutomatedTurn } from "@/chat/services/automated-turn-limit"; diff --git a/packages/junior/src/chat/events/store.ts b/packages/junior/src/chat/events/store.ts index fe40113366..4445b0488f 100644 --- a/packages/junior/src/chat/events/store.ts +++ b/packages/junior/src/chat/events/store.ts @@ -8,7 +8,7 @@ import { type EventData, type EventMatch, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { getStateAdapter } from "@/chat/state/adapter"; import { JUNIOR_THREAD_STATE_TTL_MS } from "@/chat/state/ttl"; import { updateTimerIndex } from "@/chat/events/timer-index"; diff --git a/packages/junior/src/chat/events/timer-index.ts b/packages/junior/src/chat/events/timer-index.ts index fbf7d37c56..6424d9de22 100644 --- a/packages/junior/src/chat/events/timer-index.ts +++ b/packages/junior/src/chat/events/timer-index.ts @@ -1,5 +1,5 @@ import type { StateAdapter } from "chat"; -import { z } from "zod"; +import * as z from "zod"; import { getChatConfig } from "@/chat/config"; import { getDefaultRedisStateAdapterFor } from "@/chat/state/adapter"; diff --git a/packages/junior/src/chat/guardian/history.ts b/packages/junior/src/chat/guardian/history.ts index 14bf525a12..1412ce1044 100644 --- a/packages/junior/src/chat/guardian/history.ts +++ b/packages/junior/src/chat/guardian/history.ts @@ -1,5 +1,5 @@ import type { PiMessage } from "@/chat/pi/messages"; -import { z } from "zod"; +import * as z from "zod"; import { CODEMODE_TOOL_NAME } from "@/chat/codemode/result"; import { RISK_LEVELS, diff --git a/packages/junior/src/chat/guardian/reviewer.ts b/packages/junior/src/chat/guardian/reviewer.ts index 84dd7c9bb6..467ab4e3c6 100644 --- a/packages/junior/src/chat/guardian/reviewer.ts +++ b/packages/junior/src/chat/guardian/reviewer.ts @@ -1,5 +1,5 @@ import { randomBytes } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; import { logWarn } from "@/chat/logging"; import type { completeObject } from "@/chat/pi/client"; import { diff --git a/packages/junior/src/chat/ingress/slack-channel-created.ts b/packages/junior/src/chat/ingress/slack-channel-created.ts index 7fda4a51c6..bd38218d93 100644 --- a/packages/junior/src/chat/ingress/slack-channel-created.ts +++ b/packages/junior/src/chat/ingress/slack-channel-created.ts @@ -1,6 +1,6 @@ import type { SlackAdapter } from "@chat-adapter/slack"; import type { StateAdapter } from "chat"; -import { z } from "zod"; +import * as z from "zod"; import { joinPublicChannel } from "@/chat/slack/channel"; import { runWithSlackInstallation, diff --git a/packages/junior/src/chat/ingress/slack-payload.ts b/packages/junior/src/chat/ingress/slack-payload.ts index 023d9c8d17..9ff310f84a 100644 --- a/packages/junior/src/chat/ingress/slack-payload.ts +++ b/packages/junior/src/chat/ingress/slack-payload.ts @@ -4,7 +4,7 @@ import type { AssistantThreadStartedEvent, GenericMessageEvent, } from "@slack/types"; -import { z } from "zod"; +import * as z from "zod"; import { slackMessageTsSchema } from "@/chat/slack/timestamp"; // Message dates must also fit JavaScript's Date range. diff --git a/packages/junior/src/chat/ingress/workspace-membership.ts b/packages/junior/src/chat/ingress/workspace-membership.ts index f37a790b8f..6b2b501619 100644 --- a/packages/junior/src/chat/ingress/workspace-membership.ts +++ b/packages/junior/src/chat/ingress/workspace-membership.ts @@ -1,6 +1,6 @@ import type { AppMentionEvent } from "@slack/types"; import type { StateAdapter } from "chat"; -import { z } from "zod"; +import * as z from "zod"; import { getWorkspaceTeamId } from "@/chat/slack/workspace-context"; import { parseSlackTeamId, parseSlackUserId } from "@/chat/slack/ids"; import { lookupSlackUserProfile } from "@/chat/slack/users"; diff --git a/packages/junior/src/chat/local/credential-sync.ts b/packages/junior/src/chat/local/credential-sync.ts index f503f557be..e322978bc6 100644 --- a/packages/junior/src/chat/local/credential-sync.ts +++ b/packages/junior/src/chat/local/credential-sync.ts @@ -3,7 +3,7 @@ import { pluginStoredTokensSchema, type PluginStoredTokens, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { createUserTokenStore } from "@/chat/capabilities/factory"; const LOCAL_CREDENTIAL_SYNC_CONTEXT = "junior.local-credential-sync.v1"; diff --git a/packages/junior/src/chat/local/oauth-relay.ts b/packages/junior/src/chat/local/oauth-relay.ts index 1d681dad2e..3ee5064aa4 100644 --- a/packages/junior/src/chat/local/oauth-relay.ts +++ b/packages/junior/src/chat/local/oauth-relay.ts @@ -1,6 +1,6 @@ import { randomBytes } from "node:crypto"; import { jwtVerify, SignJWT } from "jose"; -import { z } from "zod"; +import * as z from "zod"; const LOCAL_OAUTH_STATE_PREFIX = "jr-local"; const LOCAL_OAUTH_TOKEN_CONTEXT = "junior.local-oauth-relay.v1"; diff --git a/packages/junior/src/chat/pi/client.ts b/packages/junior/src/chat/pi/client.ts index ffa7310508..26aa85cbc9 100644 --- a/packages/junior/src/chat/pi/client.ts +++ b/packages/junior/src/chat/pi/client.ts @@ -41,7 +41,8 @@ registerApiProvider({ stream: streamAnthropic, streamSimple: streamSimpleAnthropic, }); -import type { ZodTypeAny, z } from "zod"; +import type * as z from "zod"; +import type { ZodTypeAny } from "zod"; import { extractGenAiUsageAttributes, normalizeGenAiFinishReason, diff --git a/packages/junior/src/chat/pi/messages.ts b/packages/junior/src/chat/pi/messages.ts index 88f0089aed..80498d35e5 100644 --- a/packages/junior/src/chat/pi/messages.ts +++ b/packages/junior/src/chat/pi/messages.ts @@ -1,5 +1,5 @@ import type { AgentMessage } from "@earendil-works/pi-agent-core"; -import { z } from "zod"; +import * as z from "zod"; /** Permissive schema for durable Pi SDK messages whose content shape may evolve. */ export const piMessageSchema = z diff --git a/packages/junior/src/chat/pi/sql-model-usage.ts b/packages/junior/src/chat/pi/sql-model-usage.ts index c2b396756c..11b66353e5 100644 --- a/packages/junior/src/chat/pi/sql-model-usage.ts +++ b/packages/junior/src/chat/pi/sql-model-usage.ts @@ -1,6 +1,6 @@ /** SQL reporting adapter for usage stored on assistant history events. */ import { and, eq, sql, type SQL } from "drizzle-orm"; -import { z } from "zod"; +import * as z from "zod"; import { notInheritedByForkChild } from "@/chat/agent-invocations/fork-history"; import { notCopiedByFork } from "@/chat/conversations/fork"; import { diff --git a/packages/junior/src/chat/plugins/agent-hooks.ts b/packages/junior/src/chat/plugins/agent-hooks.ts index 27de3fd6a6..54a1944a71 100644 --- a/packages/junior/src/chat/plugins/agent-hooks.ts +++ b/packages/junior/src/chat/plugins/agent-hooks.ts @@ -84,7 +84,7 @@ import type { SandboxWorkspace } from "@/chat/sandbox/workspace"; import { createSlackDirectCredentialSubject } from "@/chat/credentials/subject"; import { resolveChannelCapabilities } from "@/chat/slack/tool-support/channel-capabilities"; import type { Actor } from "@/chat/actor"; -import { z } from "zod"; +import * as z from "zod"; import { workspaceRepoCheckoutPath } from "@/chat/workspaces/checkout-path"; import { getWorkspace, diff --git a/packages/junior/src/chat/plugins/auth/oauth-request.ts b/packages/junior/src/chat/plugins/auth/oauth-request.ts index 95a2e29e45..04905c33fd 100644 --- a/packages/junior/src/chat/plugins/auth/oauth-request.ts +++ b/packages/junior/src/chat/plugins/auth/oauth-request.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { normalizeOAuthScope } from "@/chat/credentials/oauth-scope"; const DEFAULT_TOKEN_CONTENT_TYPE = "application/x-www-form-urlencoded"; diff --git a/packages/junior/src/chat/plugins/conversation-event-stats.ts b/packages/junior/src/chat/plugins/conversation-event-stats.ts index fceaafd1b7..6119d1980d 100644 --- a/packages/junior/src/chat/plugins/conversation-event-stats.ts +++ b/packages/junior/src/chat/plugins/conversation-event-stats.ts @@ -5,7 +5,7 @@ import { type PluginRegistration, } from "@sentry/junior-plugin-api"; import { and, eq, gte, lt, sql } from "drizzle-orm"; -import { z } from "zod"; +import * as z from "zod"; import { getDb } from "@/chat/db"; import { juniorConversationEvents } from "@/db/schema"; diff --git a/packages/junior/src/chat/plugins/manifest.ts b/packages/junior/src/chat/plugins/manifest.ts index 6c8a8d6d3b..373ac053af 100644 --- a/packages/junior/src/chat/plugins/manifest.ts +++ b/packages/junior/src/chat/plugins/manifest.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { parse as parseYaml } from "yaml"; import type { PluginEnvVarDeclaration, diff --git a/packages/junior/src/chat/plugins/task-queue.ts b/packages/junior/src/chat/plugins/task-queue.ts index c8d1b3d92a..23692faf59 100644 --- a/packages/junior/src/chat/plugins/task-queue.ts +++ b/packages/junior/src/chat/plugins/task-queue.ts @@ -5,7 +5,7 @@ * send path, and HTTP/local callback. Core keeps one topic and one runner. */ import { createHash } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; import { logWarn } from "@/chat/logging"; import { queueCallback } from "@/chat/queue/callback"; import { diff --git a/packages/junior/src/chat/queue/sign.ts b/packages/junior/src/chat/queue/sign.ts index bbabb3f0fa..4af6e4150c 100644 --- a/packages/junior/src/chat/queue/sign.ts +++ b/packages/junior/src/chat/queue/sign.ts @@ -1,6 +1,6 @@ /** Sign and check queue messages before public callbacks run them. */ import { createHmac, timingSafeEqual } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; export const QUEUE_SIGNATURE_MAX_AGE_MS = 60 * 60 * 1000; diff --git a/packages/junior/src/chat/reasoning-level.ts b/packages/junior/src/chat/reasoning-level.ts index f3ed2e5474..028529cae6 100644 --- a/packages/junior/src/chat/reasoning-level.ts +++ b/packages/junior/src/chat/reasoning-level.ts @@ -1,5 +1,5 @@ import type { ThinkingLevel } from "@earendil-works/pi-agent-core"; -import { z } from "zod"; +import * as z from "zod"; export const TURN_REASONING_LEVELS = [ "none", diff --git a/packages/junior/src/chat/review-items/change-record.ts b/packages/junior/src/chat/review-items/change-record.ts index 7a164bb813..3e8beb1843 100644 --- a/packages/junior/src/chat/review-items/change-record.ts +++ b/packages/junior/src/chat/review-items/change-record.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** * The person change to a Review item that one message records. Each inbound diff --git a/packages/junior/src/chat/sandbox/egress/schemas.ts b/packages/junior/src/chat/sandbox/egress/schemas.ts index aa395b9f1b..cccb9c5268 100644 --- a/packages/junior/src/chat/sandbox/egress/schemas.ts +++ b/packages/junior/src/chat/sandbox/egress/schemas.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { credentialContextSchema } from "@/chat/credentials/context"; import { pluginAuthorizationSchema, diff --git a/packages/junior/src/chat/sandbox/snapshot/job-queue.ts b/packages/junior/src/chat/sandbox/snapshot/job-queue.ts index 9d818ff472..0ecae87c78 100644 --- a/packages/junior/src/chat/sandbox/snapshot/job-queue.ts +++ b/packages/junior/src/chat/sandbox/snapshot/job-queue.ts @@ -1,6 +1,6 @@ /** Send Workspace snapshot build messages. */ import { createHash } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; import { QUEUE_SIGNATURE_MAX_AGE_MS, signQueueMessage, diff --git a/packages/junior/src/chat/sandbox/snapshot/resolve.ts b/packages/junior/src/chat/sandbox/snapshot/resolve.ts index aa3bbd5896..dfce80b87f 100644 --- a/packages/junior/src/chat/sandbox/snapshot/resolve.ts +++ b/packages/junior/src/chat/sandbox/snapshot/resolve.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { getSandboxResources } from "@/chat/sandbox/resources"; import * as install from "@/chat/sandbox/snapshot/install"; import * as profile from "@/chat/sandbox/snapshot/profile"; diff --git a/packages/junior/src/chat/scheduled-automations/edit.ts b/packages/junior/src/chat/scheduled-automations/edit.ts index c4280cc5c8..ba20c894ae 100644 --- a/packages/junior/src/chat/scheduled-automations/edit.ts +++ b/packages/junior/src/chat/scheduled-automations/edit.ts @@ -9,7 +9,7 @@ import { import { compileScheduleIntent, ScheduleIntentError } from "./schedule-intent"; import { defaultTimezone } from "@/chat/identities/timezone"; import type { ScheduledAutomation } from "./types"; -import type { z } from "zod"; +import type * as z from "zod"; /** Build an edit without restarting completed work or changing creator identity. */ export async function editScheduledAutomation( diff --git a/packages/junior/src/chat/scheduled-automations/schedule-intent.ts b/packages/junior/src/chat/scheduled-automations/schedule-intent.ts index a2b37fd323..9c613b6cd6 100644 --- a/packages/junior/src/chat/scheduled-automations/schedule-intent.ts +++ b/packages/junior/src/chat/scheduled-automations/schedule-intent.ts @@ -2,7 +2,7 @@ * Owns model-facing schedule intent and materializes it against the trusted * server clock into the canonical schedule persisted by core. */ -import { z } from "zod"; +import * as z from "zod"; import { getFirstRunAtMs, getZonedDateTimeParts, diff --git a/packages/junior/src/chat/scheduled-automations/tool-support.ts b/packages/junior/src/chat/scheduled-automations/tool-support.ts index 327625f916..3a00b06cdc 100644 --- a/packages/junior/src/chat/scheduled-automations/tool-support.ts +++ b/packages/junior/src/chat/scheduled-automations/tool-support.ts @@ -2,7 +2,7 @@ import type { ObjectAnnotation } from "@sentry/junior-plugin-api"; import { saveObjectAnnotations } from "@/chat/conversations/annotation-results"; import { fallbackShortTitle } from "@/chat/services/short-title"; import { getDashboardTaskLink } from "@/chat/dashboard-link"; -import { z } from "zod"; +import * as z from "zod"; import { destinationFilterValue, type AutomationDestination, diff --git a/packages/junior/src/chat/scheduled-automations/types.ts b/packages/junior/src/chat/scheduled-automations/types.ts index 24a10100a0..4c549793a9 100644 --- a/packages/junior/src/chat/scheduled-automations/types.ts +++ b/packages/junior/src/chat/scheduled-automations/types.ts @@ -3,7 +3,7 @@ import { actorUserIdSchema, slackDestinationSchema, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; const scheduledAutomationStatusSchema = z.enum([ "active", diff --git a/packages/junior/src/chat/services/automated-turn-limit.ts b/packages/junior/src/chat/services/automated-turn-limit.ts index f4a109eaa7..dbca0ab22e 100644 --- a/packages/junior/src/chat/services/automated-turn-limit.ts +++ b/packages/junior/src/chat/services/automated-turn-limit.ts @@ -6,7 +6,7 @@ */ import type { Source } from "@sentry/junior-plugin-api"; import type { Lock, StateAdapter } from "chat"; -import { z } from "zod"; +import * as z from "zod"; import { getStateAdapter } from "@/chat/state/adapter"; import { JUNIOR_THREAD_STATE_TTL_MS } from "@/chat/state/ttl"; diff --git a/packages/junior/src/chat/services/background-compaction-queue.ts b/packages/junior/src/chat/services/background-compaction-queue.ts index 5b75387328..99af8b5e32 100644 --- a/packages/junior/src/chat/services/background-compaction-queue.ts +++ b/packages/junior/src/chat/services/background-compaction-queue.ts @@ -6,7 +6,7 @@ * stays small. */ import { createHash } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; import { getQueueProvider } from "@/chat/queue/provider"; import { QUEUE_SIGNATURE_MAX_AGE_MS, diff --git a/packages/junior/src/chat/sign-in/allowlist.ts b/packages/junior/src/chat/sign-in/allowlist.ts index 4530845420..501efe5da5 100644 --- a/packages/junior/src/chat/sign-in/allowlist.ts +++ b/packages/junior/src/chat/sign-in/allowlist.ts @@ -4,7 +4,7 @@ * Workspace account whose `hd` claim is one of them. Slack and the dashboard * share one list. */ -import { z } from "zod"; +import * as z from "zod"; /** Read a list env var: a JSON string array or comma-separated values. */ export function readEnvList(name: string): string[] | undefined { diff --git a/packages/junior/src/chat/sign-in/auth.ts b/packages/junior/src/chat/sign-in/auth.ts index dd8a15cdd9..87ddadea3c 100644 --- a/packages/junior/src/chat/sign-in/auth.ts +++ b/packages/junior/src/chat/sign-in/auth.ts @@ -10,7 +10,7 @@ import { createAuthMiddleware } from "better-auth/api"; import { betterAuth } from "better-auth/minimal"; import type { GoogleProfile } from "better-auth/social-providers"; import { decodeJwt } from "jose"; -import { z } from "zod"; +import * as z from "zod"; import { getSqlExecutor } from "@/chat/db"; import { parseAvatarUrl } from "@/chat/identities/avatar"; import { diff --git a/packages/junior/src/chat/skills.ts b/packages/junior/src/chat/skills.ts index 054f56021f..7e348bb5ea 100644 --- a/packages/junior/src/chat/skills.ts +++ b/packages/junior/src/chat/skills.ts @@ -1,6 +1,6 @@ import fs from "node:fs/promises"; import path from "node:path"; -import { z } from "zod"; +import * as z from "zod"; import { parse as parseYaml } from "yaml"; import { skillRoots } from "@/chat/discovery"; import { logWarn } from "@/chat/logging"; diff --git a/packages/junior/src/chat/slack/action-token.ts b/packages/junior/src/chat/slack/action-token.ts index 889477fee9..be6ec37edb 100644 --- a/packages/junior/src/chat/slack/action-token.ts +++ b/packages/junior/src/chat/slack/action-token.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; const slackActionTokenSchema = z .string() diff --git a/packages/junior/src/chat/slack/annotation-details.ts b/packages/junior/src/chat/slack/annotation-details.ts index df80325deb..969fba5131 100644 --- a/packages/junior/src/chat/slack/annotation-details.ts +++ b/packages/junior/src/chat/slack/annotation-details.ts @@ -1,6 +1,6 @@ import type { SlackEvent } from "@slack/types"; import { annotationCard } from "@/chat/conversations/cards"; -import { z } from "zod"; +import * as z from "zod"; import { eq } from "drizzle-orm"; import { readConversationAccessFromSql } from "@/api/conversations/access"; import { getDb } from "@/chat/db"; diff --git a/packages/junior/src/chat/slack/automation-details.ts b/packages/junior/src/chat/slack/automation-details.ts index 9309bca798..ecfd64b572 100644 --- a/packages/junior/src/chat/slack/automation-details.ts +++ b/packages/junior/src/chat/slack/automation-details.ts @@ -1,5 +1,5 @@ import type { SlackEvent } from "@slack/types"; -import { z } from "zod"; +import * as z from "zod"; import type { AutomationSummary } from "@/api/schema/automation"; import { readViewerAutomationSummary } from "@/chat/automations/read"; import { diff --git a/packages/junior/src/chat/slack/channel.ts b/packages/junior/src/chat/slack/channel.ts index 56e03da326..21aaea02d7 100644 --- a/packages/junior/src/chat/slack/channel.ts +++ b/packages/junior/src/chat/slack/channel.ts @@ -2,7 +2,7 @@ import type { ConversationsHistoryResponse, ConversationsRepliesResponse, } from "@slack/web-api"; -import { z } from "zod"; +import * as z from "zod"; import { getSlackClient, withSlackRetries } from "@/chat/slack/client"; import type { SlackChannelId } from "@/chat/slack/ids"; import type { SlackMessageTs } from "@/chat/slack/timestamp"; diff --git a/packages/junior/src/chat/slack/context.ts b/packages/junior/src/chat/slack/context.ts index a638db4cbe..36d116e342 100644 --- a/packages/junior/src/chat/slack/context.ts +++ b/packages/junior/src/chat/slack/context.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { toOptionalString } from "@/chat/coerce"; import { parseSlackChannelId, diff --git a/packages/junior/src/chat/slack/id-param.ts b/packages/junior/src/chat/slack/id-param.ts index 72f14bbaa9..5d2b2e2767 100644 --- a/packages/junior/src/chat/slack/id-param.ts +++ b/packages/junior/src/chat/slack/id-param.ts @@ -4,7 +4,7 @@ import { type SlackChannelId, type SlackUserId, } from "@/chat/slack/ids"; -import { z } from "zod"; +import * as z from "zod"; type RequiredSlackChannelIdParamResult = | { ok: true; value: SlackChannelId } diff --git a/packages/junior/src/chat/slack/ids.ts b/packages/junior/src/chat/slack/ids.ts index 4796af67f1..6c7b78c84c 100644 --- a/packages/junior/src/chat/slack/ids.ts +++ b/packages/junior/src/chat/slack/ids.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { parseSlackMessageTs } from "@/chat/slack/timestamp"; // Slack-owned runtime boundaries parse raw strings into branded IDs here. diff --git a/packages/junior/src/chat/slack/review-item-card.ts b/packages/junior/src/chat/slack/review-item-card.ts index 078e93a665..6a3ff8444b 100644 --- a/packages/junior/src/chat/slack/review-item-card.ts +++ b/packages/junior/src/chat/slack/review-item-card.ts @@ -1,5 +1,5 @@ import type { Button, KnownBlock, ModalView } from "@slack/types"; -import { z } from "zod"; +import * as z from "zod"; import { getDashboardReviewItemLink } from "@/chat/dashboard-link"; import { REVIEW_ITEM_REPLIED_REASON, diff --git a/packages/junior/src/chat/slack/thread-stop.ts b/packages/junior/src/chat/slack/thread-stop.ts index 91c3c077f9..0e2f913b10 100644 --- a/packages/junior/src/chat/slack/thread-stop.ts +++ b/packages/junior/src/chat/slack/thread-stop.ts @@ -1,5 +1,5 @@ import type { StateAdapter, Thread } from "chat"; -import { z } from "zod"; +import * as z from "zod"; import { logException } from "@/chat/logging"; import { JUNIOR_THREAD_STATE_TTL_MS } from "@/chat/state/ttl"; import { MUTATION_LOCK_TTL_MS, withLock } from "@/chat/state/locks"; diff --git a/packages/junior/src/chat/slack/timestamp-param.ts b/packages/junior/src/chat/slack/timestamp-param.ts index dd112c728a..cd921a0b16 100644 --- a/packages/junior/src/chat/slack/timestamp-param.ts +++ b/packages/junior/src/chat/slack/timestamp-param.ts @@ -2,7 +2,7 @@ import { parseSlackMessageTs, type SlackMessageTs, } from "@/chat/slack/timestamp"; -import { z } from "zod"; +import * as z from "zod"; type SlackTimestampParamResult = | { ok: true; value: SlackMessageTs | undefined } diff --git a/packages/junior/src/chat/slack/timestamp.ts b/packages/junior/src/chat/slack/timestamp.ts index 957ec8f8b4..9aef3eafa4 100644 --- a/packages/junior/src/chat/slack/timestamp.ts +++ b/packages/junior/src/chat/slack/timestamp.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** Native Slack message timestamp, safe to pass as Slack Web API `message_ts`. */ export const slackMessageTsSchema = z diff --git a/packages/junior/src/chat/slack/tool-support/canvas/context.ts b/packages/junior/src/chat/slack/tool-support/canvas/context.ts index d6e1b44cfa..200f041a1d 100644 --- a/packages/junior/src/chat/slack/tool-support/canvas/context.ts +++ b/packages/junior/src/chat/slack/tool-support/canvas/context.ts @@ -1,5 +1,5 @@ import { extractCanvasId } from "@/chat/slack/tool-support/canvas/api"; -import { z } from "zod"; +import * as z from "zod"; /** Model-facing Slack canvas ID or docs URL parameter. */ export const slackCanvasRefParam = z diff --git a/packages/junior/src/chat/slack/tool-support/channel-target.ts b/packages/junior/src/chat/slack/tool-support/channel-target.ts index 60633fb027..3fdee1989c 100644 --- a/packages/junior/src/chat/slack/tool-support/channel-target.ts +++ b/packages/junior/src/chat/slack/tool-support/channel-target.ts @@ -5,7 +5,7 @@ import { type SlackChannelId, type SlackTeamId, } from "@/chat/slack/ids"; -import { z } from "zod"; +import * as z from "zod"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; export interface ResolvedSlackChannelTarget { diff --git a/packages/junior/src/chat/slack/tool-support/list/params.ts b/packages/junior/src/chat/slack/tool-support/list/params.ts index 2126f6af94..2b28950d85 100644 --- a/packages/junior/src/chat/slack/tool-support/list/params.ts +++ b/packages/junior/src/chat/slack/tool-support/list/params.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; /** Model-facing Slack list ID parameter. */ export const slackListIdParam = z.string().min(1).describe("Slack list ID."); diff --git a/packages/junior/src/chat/slack/tools/canvas/create.ts b/packages/junior/src/chat/slack/tools/canvas/create.ts index 7c0f07fac1..084150cbfe 100644 --- a/packages/junior/src/chat/slack/tools/canvas/create.ts +++ b/packages/junior/src/chat/slack/tools/canvas/create.ts @@ -2,7 +2,7 @@ import { logError } from "@/chat/logging"; import { isConversationScopedChannel } from "@/chat/slack/client"; import { createCanvas } from "@/chat/slack/tool-support/canvas/api"; import type { SlackToolContext } from "@/chat/slack/tool-support/context"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { createOperationKey } from "@/chat/tools/idempotency"; diff --git a/packages/junior/src/chat/slack/tools/canvas/edit.ts b/packages/junior/src/chat/slack/tools/canvas/edit.ts index 9093ec6913..7be89d48e9 100644 --- a/packages/junior/src/chat/slack/tools/canvas/edit.ts +++ b/packages/junior/src/chat/slack/tools/canvas/edit.ts @@ -7,7 +7,7 @@ import { slackCanvasRefParam, } from "@/chat/slack/tool-support/canvas/context"; import { normalizeCanvasMarkdown } from "@/chat/slack/tool-support/canvas/markdown"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { createOperationKey } from "@/chat/tools/idempotency"; diff --git a/packages/junior/src/chat/slack/tools/canvas/read.ts b/packages/junior/src/chat/slack/tools/canvas/read.ts index f29d173032..0ca38af175 100644 --- a/packages/junior/src/chat/slack/tools/canvas/read.ts +++ b/packages/junior/src/chat/slack/tools/canvas/read.ts @@ -3,7 +3,7 @@ import { resolveCanvasTarget, slackCanvasRefParam, } from "@/chat/slack/tool-support/canvas/context"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { normalizeToLf } from "@/chat/tools/sandbox/file-utils"; diff --git a/packages/junior/src/chat/slack/tools/canvas/write.ts b/packages/junior/src/chat/slack/tools/canvas/write.ts index 9da3eec308..1392f0db05 100644 --- a/packages/junior/src/chat/slack/tools/canvas/write.ts +++ b/packages/junior/src/chat/slack/tools/canvas/write.ts @@ -3,7 +3,7 @@ import { resolveCanvasTarget, slackCanvasRefParam, } from "@/chat/slack/tool-support/canvas/context"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { createOperationKey } from "@/chat/tools/idempotency"; diff --git a/packages/junior/src/chat/slack/tools/channel-join.ts b/packages/junior/src/chat/slack/tools/channel-join.ts index 8aba7f5749..8c4d7c84a2 100644 --- a/packages/junior/src/chat/slack/tools/channel-join.ts +++ b/packages/junior/src/chat/slack/tools/channel-join.ts @@ -6,7 +6,7 @@ import { slackChannelRefParam, } from "@/chat/slack/tool-support/channel-target"; import type { SlackToolContext } from "@/chat/slack/tool-support/context"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; diff --git a/packages/junior/src/chat/slack/tools/channel-list-messages.ts b/packages/junior/src/chat/slack/tools/channel-list-messages.ts index c3aa4d5d06..8f86b2a90b 100644 --- a/packages/junior/src/chat/slack/tools/channel-list-messages.ts +++ b/packages/junior/src/chat/slack/tools/channel-list-messages.ts @@ -15,7 +15,7 @@ import { resolveOptionalSlackChannelRef, slackChannelRefParam, } from "@/chat/slack/tool-support/channel-target"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; diff --git a/packages/junior/src/chat/slack/tools/conversation-message-search.ts b/packages/junior/src/chat/slack/tools/conversation-message-search.ts index 94276c4c96..ebd75246ea 100644 --- a/packages/junior/src/chat/slack/tools/conversation-message-search.ts +++ b/packages/junior/src/chat/slack/tools/conversation-message-search.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { ConversationMessageSearchFilters, ConversationMessageSearchScope, diff --git a/packages/junior/src/chat/slack/tools/list/add-items.ts b/packages/junior/src/chat/slack/tools/list/add-items.ts index 14216e08b4..e4bff31e04 100644 --- a/packages/junior/src/chat/slack/tools/list/add-items.ts +++ b/packages/junior/src/chat/slack/tools/list/add-items.ts @@ -4,7 +4,7 @@ import { parseRequiredSlackUserIdParam, slackUserIdParam, } from "@/chat/slack/id-param"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { createOperationKey } from "@/chat/tools/idempotency"; diff --git a/packages/junior/src/chat/slack/tools/list/create.ts b/packages/junior/src/chat/slack/tools/list/create.ts index 074aa47d98..581cc8f090 100644 --- a/packages/junior/src/chat/slack/tools/list/create.ts +++ b/packages/junior/src/chat/slack/tools/list/create.ts @@ -1,5 +1,5 @@ import { createTodoList } from "@/chat/slack/tool-support/list/api"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { createOperationKey } from "@/chat/tools/idempotency"; diff --git a/packages/junior/src/chat/slack/tools/list/get-items.ts b/packages/junior/src/chat/slack/tools/list/get-items.ts index 19d8f0bf27..f13ef2c811 100644 --- a/packages/junior/src/chat/slack/tools/list/get-items.ts +++ b/packages/junior/src/chat/slack/tools/list/get-items.ts @@ -1,6 +1,6 @@ import { listItems } from "@/chat/slack/tool-support/list/api"; import { slackListIdParam } from "@/chat/slack/tool-support/list/params"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; /** Create a tool that reads items from an explicit Slack list. */ diff --git a/packages/junior/src/chat/slack/tools/list/update-item.ts b/packages/junior/src/chat/slack/tools/list/update-item.ts index 88fed9bdb1..5a863ac462 100644 --- a/packages/junior/src/chat/slack/tools/list/update-item.ts +++ b/packages/junior/src/chat/slack/tools/list/update-item.ts @@ -3,7 +3,7 @@ import { slackListIdParam, slackListItemIdParam, } from "@/chat/slack/tool-support/list/params"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { createOperationKey } from "@/chat/tools/idempotency"; diff --git a/packages/junior/src/chat/slack/tools/message-add-reaction.ts b/packages/junior/src/chat/slack/tools/message-add-reaction.ts index 6c841c2ea7..92c9c209d2 100644 --- a/packages/junior/src/chat/slack/tools/message-add-reaction.ts +++ b/packages/junior/src/chat/slack/tools/message-add-reaction.ts @@ -1,7 +1,7 @@ import { NO_REPLY_MARKER } from "@/chat/no-reply"; import { normalizeSlackEmojiName } from "@/chat/slack/emoji"; import { addReactionToMessage } from "@/chat/slack/outbound"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; diff --git a/packages/junior/src/chat/slack/tools/public-search.ts b/packages/junior/src/chat/slack/tools/public-search.ts index 8c3e8ec371..71d7ea1855 100644 --- a/packages/junior/src/chat/slack/tools/public-search.ts +++ b/packages/junior/src/chat/slack/tools/public-search.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { SlackActionToken } from "@/chat/slack/action-token"; import { getSlackClient, diff --git a/packages/junior/src/chat/slack/tools/thread-read.ts b/packages/junior/src/chat/slack/tools/thread-read.ts index 3f02146119..7d932dd20a 100644 --- a/packages/junior/src/chat/slack/tools/thread-read.ts +++ b/packages/junior/src/chat/slack/tools/thread-read.ts @@ -8,7 +8,7 @@ import { resolveSlackChannelRef, slackChannelRefParam, } from "@/chat/slack/tool-support/channel-target"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { parseSlackMessageReference } from "@/chat/slack/tool-support/slack-message-url"; diff --git a/packages/junior/src/chat/slack/user.ts b/packages/junior/src/chat/slack/user.ts index f73e1f40cb..06ca09110b 100644 --- a/packages/junior/src/chat/slack/user.ts +++ b/packages/junior/src/chat/slack/user.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { getSlackBotToken } from "@/chat/config"; import { logWarn } from "@/chat/logging"; import { createSlackActor, type SlackActor } from "@/chat/actor"; diff --git a/packages/junior/src/chat/slack/users.ts b/packages/junior/src/chat/slack/users.ts index 8e5814bebe..ef134c954a 100644 --- a/packages/junior/src/chat/slack/users.ts +++ b/packages/junior/src/chat/slack/users.ts @@ -1,5 +1,5 @@ import type { UsersInfoResponse } from "@slack/web-api"; -import { z } from "zod"; +import * as z from "zod"; import { getSlackClient, SlackActionError, diff --git a/packages/junior/src/chat/slack/work-object.ts b/packages/junior/src/chat/slack/work-object.ts index 9991bc26e5..8e49f454af 100644 --- a/packages/junior/src/chat/slack/work-object.ts +++ b/packages/junior/src/chat/slack/work-object.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; // This is the outbound subset Junior uses, not the full Slack schema. The SDK // allows arbitrary entity/field types and does not tie fields to their entity. diff --git a/packages/junior/src/chat/task-execution/authorized-turn.ts b/packages/junior/src/chat/task-execution/authorized-turn.ts index 4dc17c9d33..0beaf085d0 100644 --- a/packages/junior/src/chat/task-execution/authorized-turn.ts +++ b/packages/junior/src/chat/task-execution/authorized-turn.ts @@ -2,7 +2,7 @@ * OAuth callbacks save readiness, not agent history. The conversation worker * consumes this event under its lease before it resumes the paused Turn. */ -import { z } from "zod"; +import * as z from "zod"; import type { Destination } from "@sentry/junior-plugin-api"; import { getConversationEventStore } from "@/chat/db"; import { getTurnRecord, type TurnRecord } from "./checkpoint"; diff --git a/packages/junior/src/chat/task-execution/queue.ts b/packages/junior/src/chat/task-execution/queue.ts index 052fad2c8b..e5afea6d1d 100644 --- a/packages/junior/src/chat/task-execution/queue.ts +++ b/packages/junior/src/chat/task-execution/queue.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; export const CONVERSATION_QUEUE_SCHEMA_VERSION = 2; diff --git a/packages/junior/src/chat/task-execution/slack-work.ts b/packages/junior/src/chat/task-execution/slack-work.ts index 586d1616f5..7149e4e4a3 100644 --- a/packages/junior/src/chat/task-execution/slack-work.ts +++ b/packages/junior/src/chat/task-execution/slack-work.ts @@ -7,7 +7,7 @@ import { type SerializedThread, type StateAdapter, } from "chat"; -import { z } from "zod"; +import * as z from "zod"; import { objectTypeSchema } from "@sentry/junior-plugin-api"; import { getActiveTraceContext, logException } from "@/chat/logging"; import type { diff --git a/packages/junior/src/chat/task-execution/state.ts b/packages/junior/src/chat/task-execution/state.ts index 15a8c68661..7cb3b8047d 100644 --- a/packages/junior/src/chat/task-execution/state.ts +++ b/packages/junior/src/chat/task-execution/state.ts @@ -10,7 +10,7 @@ import { randomUUID } from "node:crypto"; import type { Lock, StateAdapter } from "chat"; import { destinationSchema, type Destination } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { isRecord, toOptionalNumber, toOptionalString } from "@/chat/coerce"; import { getChatConfig } from "@/chat/config"; import { parseDestination, sameDestination } from "@/chat/destination"; diff --git a/packages/junior/src/chat/task-execution/turn-cursor.ts b/packages/junior/src/chat/task-execution/turn-cursor.ts index 7b1afc65e4..a14fe64417 100644 --- a/packages/junior/src/chat/task-execution/turn-cursor.ts +++ b/packages/junior/src/chat/task-execution/turn-cursor.ts @@ -13,7 +13,7 @@ import { type Destination, type Source, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { piMessageSchema, type PiMessage } from "@/chat/pi/messages"; import { toStoredSlackActor, type Actor } from "@/chat/actor"; import { diff --git a/packages/junior/src/chat/task-outcomes-schema.ts b/packages/junior/src/chat/task-outcomes-schema.ts index 5cfdd8529b..efca10ade8 100644 --- a/packages/junior/src/chat/task-outcomes-schema.ts +++ b/packages/junior/src/chat/task-outcomes-schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; const taskMessageDestinationInputSchema = z .enum(["current_conversation", "task_creator"]) diff --git a/packages/junior/src/chat/tool-support/structured-result.ts b/packages/junior/src/chat/tool-support/structured-result.ts index 4f64eb3cf7..b335cd958b 100644 --- a/packages/junior/src/chat/tool-support/structured-result.ts +++ b/packages/junior/src/chat/tool-support/structured-result.ts @@ -1,5 +1,5 @@ import type { ImageContent, TextContent } from "@earendil-works/pi-ai"; -import { z } from "zod"; +import * as z from "zod"; export const juniorToolContinuationSchema = z .object({ diff --git a/packages/junior/src/chat/tool-support/zod-tool.ts b/packages/junior/src/chat/tool-support/zod-tool.ts index 105f54aefc..6edd9ad52a 100644 --- a/packages/junior/src/chat/tool-support/zod-tool.ts +++ b/packages/junior/src/chat/tool-support/zod-tool.ts @@ -1,4 +1,5 @@ -import { z, type ZodTypeAny } from "zod"; +import * as z from "zod"; +import type { ZodTypeAny } from "zod"; import type { ImageContent, TextContent } from "@earendil-works/pi-ai"; import type { AnyToolDefinition, diff --git a/packages/junior/src/chat/tools/execute-tool.ts b/packages/junior/src/chat/tools/execute-tool.ts index c20274c202..ee5fa21952 100644 --- a/packages/junior/src/chat/tools/execute-tool.ts +++ b/packages/junior/src/chat/tools/execute-tool.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; diff --git a/packages/junior/src/chat/tools/list-watches.ts b/packages/junior/src/chat/tools/list-watches.ts index 8e7a7ad0a0..fe205f0c66 100644 --- a/packages/junior/src/chat/tools/list-watches.ts +++ b/packages/junior/src/chat/tools/list-watches.ts @@ -1,5 +1,5 @@ import { agentEventKeys } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { listOwnedWatches } from "@/chat/events/owned-watches"; import { RESOURCE_WATCH_TOOL_SOURCE } from "@/chat/events/tool-support"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; diff --git a/packages/junior/src/chat/tools/load-attachment.ts b/packages/junior/src/chat/tools/load-attachment.ts index f61f32e8f0..d04126b2fc 100644 --- a/packages/junior/src/chat/tools/load-attachment.ts +++ b/packages/junior/src/chat/tools/load-attachment.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import { z } from "zod"; +import * as z from "zod"; import type { JuniorSqlDatabase } from "@/db/db"; import { readLiveAttachment } from "@/chat/attachments/store"; import type { AttachmentStorage } from "@/chat/attachments/storage"; diff --git a/packages/junior/src/chat/tools/operator-sql.ts b/packages/junior/src/chat/tools/operator-sql.ts index 831c764ed3..58902432a4 100644 --- a/packages/junior/src/chat/tools/operator-sql.ts +++ b/packages/junior/src/chat/tools/operator-sql.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { getSqlExecutor } from "@/chat/db"; import { isExperimentalFeatureEnabled } from "@/chat/experimental"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; diff --git a/packages/junior/src/chat/tools/publish-image.ts b/packages/junior/src/chat/tools/publish-image.ts index 365bf45136..bd990b177d 100644 --- a/packages/junior/src/chat/tools/publish-image.ts +++ b/packages/junior/src/chat/tools/publish-image.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { AttachmentStorage } from "@/chat/attachments/storage"; import { publishImage } from "@/chat/artifacts/store"; import { resolveBaseUrl } from "@/chat/oauth-flow"; diff --git a/packages/junior/src/chat/tools/read-conversation-event.ts b/packages/junior/src/chat/tools/read-conversation-event.ts index 0cbdd94f66..11472bdb5a 100644 --- a/packages/junior/src/chat/tools/read-conversation-event.ts +++ b/packages/junior/src/chat/tools/read-conversation-event.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { assertCanReadConversationEvents, stripReplacementHistory, diff --git a/packages/junior/src/chat/tools/review-items.ts b/packages/junior/src/chat/tools/review-items.ts index 92d912b374..cd15882d98 100644 --- a/packages/junior/src/chat/tools/review-items.ts +++ b/packages/junior/src/chat/tools/review-items.ts @@ -1,5 +1,5 @@ import { randomUUID } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; import { getDb } from "@/chat/db"; import { NO_REPLY_MARKER } from "@/chat/no-reply"; import { diff --git a/packages/junior/src/chat/tools/runtime/finish-automation-run.ts b/packages/junior/src/chat/tools/runtime/finish-automation-run.ts index 8f8db362f6..98ae7799c4 100644 --- a/packages/junior/src/chat/tools/runtime/finish-automation-run.ts +++ b/packages/junior/src/chat/tools/runtime/finish-automation-run.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { automationResultSchema } from "@/chat/automation-result"; import { isNoReplyMarker } from "@/chat/no-reply"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; diff --git a/packages/junior/src/chat/tools/runtime/message-agent.ts b/packages/junior/src/chat/tools/runtime/message-agent.ts index 196c06e758..2a5d638630 100644 --- a/packages/junior/src/chat/tools/runtime/message-agent.ts +++ b/packages/junior/src/chat/tools/runtime/message-agent.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { AgentInvocationLimitError, AgentMessagePausedError, diff --git a/packages/junior/src/chat/tools/runtime/report-blocked.ts b/packages/junior/src/chat/tools/runtime/report-blocked.ts index 56b7ad56c1..c7428fb18c 100644 --- a/packages/junior/src/chat/tools/runtime/report-blocked.ts +++ b/packages/junior/src/chat/tools/runtime/report-blocked.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; diff --git a/packages/junior/src/chat/tools/runtime/report-progress.ts b/packages/junior/src/chat/tools/runtime/report-progress.ts index ed3706e2d0..37670f5bc7 100644 --- a/packages/junior/src/chat/tools/runtime/report-progress.ts +++ b/packages/junior/src/chat/tools/runtime/report-progress.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; diff --git a/packages/junior/src/chat/tools/runtime/search-agents.ts b/packages/junior/src/chat/tools/runtime/search-agents.ts index a86fe3bf83..c047423ff6 100644 --- a/packages/junior/src/chat/tools/runtime/search-agents.ts +++ b/packages/junior/src/chat/tools/runtime/search-agents.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { Actor } from "@/chat/actor"; import { listAgentRelatives, diff --git a/packages/junior/src/chat/tools/runtime/spawn-agent.ts b/packages/junior/src/chat/tools/runtime/spawn-agent.ts index a336a2b24e..d35c9a72a5 100644 --- a/packages/junior/src/chat/tools/runtime/spawn-agent.ts +++ b/packages/junior/src/chat/tools/runtime/spawn-agent.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { AgentInvocationLimitError, AgentNameInUseError, diff --git a/packages/junior/src/chat/tools/runtime/stop-agent.ts b/packages/junior/src/chat/tools/runtime/stop-agent.ts index 6da5fceae6..3c00015f1d 100644 --- a/packages/junior/src/chat/tools/runtime/stop-agent.ts +++ b/packages/junior/src/chat/tools/runtime/stop-agent.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { stopChildAgent } from "@/chat/agent-invocations/stop"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; diff --git a/packages/junior/src/chat/tools/runtime/update-plan.ts b/packages/junior/src/chat/tools/runtime/update-plan.ts index 0d66b72c3e..64885110e9 100644 --- a/packages/junior/src/chat/tools/runtime/update-plan.ts +++ b/packages/junior/src/chat/tools/runtime/update-plan.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { zodTool } from "@/chat/tool-support/zod-tool"; const planItemSchema = z diff --git a/packages/junior/src/chat/tools/runtime/user-input-request.ts b/packages/junior/src/chat/tools/runtime/user-input-request.ts index 2d9d9c84cc..def2ed7c6e 100644 --- a/packages/junior/src/chat/tools/runtime/user-input-request.ts +++ b/packages/junior/src/chat/tools/runtime/user-input-request.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; // Slack limits set these values, so one request renders the same on every // surface. Buttons and option text allow 75 characters. Radio buttons and diff --git a/packages/junior/src/chat/tools/sandbox/bash.ts b/packages/junior/src/chat/tools/sandbox/bash.ts index ca64d5a156..244da49e86 100644 --- a/packages/junior/src/chat/tools/sandbox/bash.ts +++ b/packages/junior/src/chat/tools/sandbox/bash.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; diff --git a/packages/junior/src/chat/tools/sandbox/edit-file.ts b/packages/junior/src/chat/tools/sandbox/edit-file.ts index 7ecd5efeac..77571a9a49 100644 --- a/packages/junior/src/chat/tools/sandbox/edit-file.ts +++ b/packages/junior/src/chat/tools/sandbox/edit-file.ts @@ -18,7 +18,7 @@ import { validateAndApplyTextEdits, type TextReplacement, } from "@/chat/tools/sandbox/text-edits"; -import { z } from "zod"; +import * as z from "zod"; import { zodTool } from "@/chat/tool-support/zod-tool"; type EditReplacement = TextReplacement; diff --git a/packages/junior/src/chat/tools/sandbox/file-uploads.ts b/packages/junior/src/chat/tools/sandbox/file-uploads.ts index a300f5a48f..426234116d 100644 --- a/packages/junior/src/chat/tools/sandbox/file-uploads.ts +++ b/packages/junior/src/chat/tools/sandbox/file-uploads.ts @@ -3,7 +3,7 @@ import { runNonInteractiveCommand } from "@/chat/sandbox/noninteractive-command" import { SANDBOX_WORKSPACE_ROOT } from "@/chat/sandbox/paths"; import type { SandboxWorkspace } from "@/chat/sandbox/workspace"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; -import { z } from "zod"; +import * as z from "zod"; /** Maximum single file size accepted by model-facing upload tools. */ export const MAX_SANDBOX_FILE_UPLOAD_BYTES = 10 * 1024 * 1024; diff --git a/packages/junior/src/chat/tools/sandbox/find-files.ts b/packages/junior/src/chat/tools/sandbox/find-files.ts index d879cc0571..5842d96338 100644 --- a/packages/junior/src/chat/tools/sandbox/find-files.ts +++ b/packages/junior/src/chat/tools/sandbox/find-files.ts @@ -16,7 +16,7 @@ import { type TextSearchResultDetails, type TextSearchToolResult, } from "@/chat/tools/sandbox/file-utils"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema, makeStructuredToolOutput, diff --git a/packages/junior/src/chat/tools/sandbox/grep.ts b/packages/junior/src/chat/tools/sandbox/grep.ts index 242ea52796..b891feef34 100644 --- a/packages/junior/src/chat/tools/sandbox/grep.ts +++ b/packages/junior/src/chat/tools/sandbox/grep.ts @@ -17,7 +17,7 @@ import { type TextSearchResultDetails, type TextSearchToolResult, } from "@/chat/tools/sandbox/file-utils"; -import { z } from "zod"; +import * as z from "zod"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; import { diff --git a/packages/junior/src/chat/tools/sandbox/list-dir.ts b/packages/junior/src/chat/tools/sandbox/list-dir.ts index 361a0a3492..a2a816a405 100644 --- a/packages/junior/src/chat/tools/sandbox/list-dir.ts +++ b/packages/junior/src/chat/tools/sandbox/list-dir.ts @@ -10,7 +10,7 @@ import { type TextSearchResultDetails, type TextSearchToolResult, } from "@/chat/tools/sandbox/file-utils"; -import { z } from "zod"; +import * as z from "zod"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; import { diff --git a/packages/junior/src/chat/tools/sandbox/read-file.ts b/packages/junior/src/chat/tools/sandbox/read-file.ts index 784fd04a8c..e25d139e1b 100644 --- a/packages/junior/src/chat/tools/sandbox/read-file.ts +++ b/packages/junior/src/chat/tools/sandbox/read-file.ts @@ -1,5 +1,5 @@ import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; -import { z } from "zod"; +import * as z from "zod"; import { zodTool } from "@/chat/tool-support/zod-tool"; export { missingFileResult, diff --git a/packages/junior/src/chat/tools/sandbox/view-image.ts b/packages/junior/src/chat/tools/sandbox/view-image.ts index 34efbfcba1..e691150963 100644 --- a/packages/junior/src/chat/tools/sandbox/view-image.ts +++ b/packages/junior/src/chat/tools/sandbox/view-image.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import type { SandboxWorkspace } from "@/chat/sandbox/workspace"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; diff --git a/packages/junior/src/chat/tools/sandbox/write-file.ts b/packages/junior/src/chat/tools/sandbox/write-file.ts index 702d507401..321555f205 100644 --- a/packages/junior/src/chat/tools/sandbox/write-file.ts +++ b/packages/junior/src/chat/tools/sandbox/write-file.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; diff --git a/packages/junior/src/chat/tools/search-conversation-briefs.ts b/packages/junior/src/chat/tools/search-conversation-briefs.ts index 1a239ffff3..8dec619ab5 100644 --- a/packages/junior/src/chat/tools/search-conversation-briefs.ts +++ b/packages/junior/src/chat/tools/search-conversation-briefs.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { briefLinkSchema, briefOutcomeStatusSchema, diff --git a/packages/junior/src/chat/tools/search-conversation-events.ts b/packages/junior/src/chat/tools/search-conversation-events.ts index 52154e4f30..b24358c812 100644 --- a/packages/junior/src/chat/tools/search-conversation-events.ts +++ b/packages/junior/src/chat/tools/search-conversation-events.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { KNOWN_CONVERSATION_EVENT_TYPES, type ConversationEvent, diff --git a/packages/junior/src/chat/tools/search-event-types.ts b/packages/junior/src/chat/tools/search-event-types.ts index c70b2c1225..defb28253a 100644 --- a/packages/junior/src/chat/tools/search-event-types.ts +++ b/packages/junior/src/chat/tools/search-event-types.ts @@ -4,7 +4,7 @@ import { eventMatchFieldSchema, type EventReach, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { eventNamespaceSchema, type EventCatalog } from "@/chat/events/catalog"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; diff --git a/packages/junior/src/chat/tools/search-tools.ts b/packages/junior/src/chat/tools/search-tools.ts index 22905fa465..f423e0b173 100644 --- a/packages/junior/src/chat/tools/search-tools.ts +++ b/packages/junior/src/chat/tools/search-tools.ts @@ -1,5 +1,5 @@ import type { AnyToolDefinition } from "@/chat/tools/definition"; -import { z } from "zod"; +import * as z from "zod"; import { effectiveToolExposure } from "@/chat/tool-exposure"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; diff --git a/packages/junior/src/chat/tools/send-files.ts b/packages/junior/src/chat/tools/send-files.ts index e1985feb61..de62ccd527 100644 --- a/packages/junior/src/chat/tools/send-files.ts +++ b/packages/junior/src/chat/tools/send-files.ts @@ -3,7 +3,7 @@ import { storeAttachments } from "@/chat/attachments/store"; import type { AttachmentStorage } from "@/chat/attachments/storage"; import { recordAttachmentsDelivered } from "@/chat/conversations/projection"; import type { JuniorSqlDatabase } from "@/db/db"; -import { z } from "zod"; +import * as z from "zod"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { createOperationKey } from "@/chat/tools/idempotency"; import { diff --git a/packages/junior/src/chat/tools/skill/call-mcp-tool.ts b/packages/junior/src/chat/tools/skill/call-mcp-tool.ts index 94105cce02..d47da78e98 100644 --- a/packages/junior/src/chat/tools/skill/call-mcp-tool.ts +++ b/packages/junior/src/chat/tools/skill/call-mcp-tool.ts @@ -3,7 +3,7 @@ import { setSpanAttributes } from "@/chat/logging"; import { McpToolError } from "@/chat/mcp/errors"; import type { ManagedMcpTool } from "@/chat/mcp/tool-manager"; import { parseMcpProviderFromToolName } from "@/chat/mcp/tool-name"; -import { z } from "zod"; +import * as z from "zod"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; import { zodTool } from "@/chat/tool-support/zod-tool"; diff --git a/packages/junior/src/chat/tools/skill/load-skill.ts b/packages/junior/src/chat/tools/skill/load-skill.ts index e5df94034e..dd025b0801 100644 --- a/packages/junior/src/chat/tools/skill/load-skill.ts +++ b/packages/junior/src/chat/tools/skill/load-skill.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; diff --git a/packages/junior/src/chat/tools/skill/search-mcp-tools.ts b/packages/junior/src/chat/tools/skill/search-mcp-tools.ts index 5f59e960b0..88d1f046e8 100644 --- a/packages/junior/src/chat/tools/skill/search-mcp-tools.ts +++ b/packages/junior/src/chat/tools/skill/search-mcp-tools.ts @@ -2,7 +2,7 @@ import type { ManagedMcpToolDescriptor, McpAuthorizationContext, } from "@/chat/mcp/tool-manager"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { toExposedToolSummary } from "@/chat/tool-support/skill/mcp-tool-summary"; import { zodTool } from "@/chat/tool-support/zod-tool"; diff --git a/packages/junior/src/chat/tools/stop-watches.ts b/packages/junior/src/chat/tools/stop-watches.ts index 934c346ffb..7b5046f0fb 100644 --- a/packages/junior/src/chat/tools/stop-watches.ts +++ b/packages/junior/src/chat/tools/stop-watches.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { findOwnedWatch, listOwnedWatches, diff --git a/packages/junior/src/chat/tools/system-time.ts b/packages/junior/src/chat/tools/system-time.ts index 5a5175a9b6..577110e54a 100644 --- a/packages/junior/src/chat/tools/system-time.ts +++ b/packages/junior/src/chat/tools/system-time.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { getZonedDateTimeParts, isValidTimeZone, diff --git a/packages/junior/src/chat/tools/unpublish-image.ts b/packages/junior/src/chat/tools/unpublish-image.ts index e12ef5f261..1f08c68d9f 100644 --- a/packages/junior/src/chat/tools/unpublish-image.ts +++ b/packages/junior/src/chat/tools/unpublish-image.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { unpublishArtifact } from "@/chat/artifacts/store"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; diff --git a/packages/junior/src/chat/tools/user-customization.ts b/packages/junior/src/chat/tools/user-customization.ts index 7c1dfda203..e73496d3ae 100644 --- a/packages/junior/src/chat/tools/user-customization.ts +++ b/packages/junior/src/chat/tools/user-customization.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { USER_CUSTOMIZATION_MAX_CHARS, userCustomizationTextSchema, diff --git a/packages/junior/src/chat/tools/user-lookup.ts b/packages/junior/src/chat/tools/user-lookup.ts index 9c3663643e..493199f67c 100644 --- a/packages/junior/src/chat/tools/user-lookup.ts +++ b/packages/junior/src/chat/tools/user-lookup.ts @@ -1,6 +1,6 @@ import { and, eq, or, sql } from "drizzle-orm"; import { alias } from "drizzle-orm/pg-core"; -import { z } from "zod"; +import * as z from "zod"; import { getSqlExecutor } from "@/chat/db"; import { normalizeIdentityEmail } from "@/chat/identities/identity"; import { SlackActionError } from "@/chat/slack/client"; diff --git a/packages/junior/src/chat/tools/watch-events.ts b/packages/junior/src/chat/tools/watch-events.ts index 9ebd65c209..fe70a3e8d6 100644 --- a/packages/junior/src/chat/tools/watch-events.ts +++ b/packages/junior/src/chat/tools/watch-events.ts @@ -1,5 +1,5 @@ import { agentEventKeys, declaredEventKeys } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { eventNamespaceSchema, eventWatchUnavailable, diff --git a/packages/junior/src/chat/tools/watch-timer.ts b/packages/junior/src/chat/tools/watch-timer.ts index 525c13bf10..d9321df107 100644 --- a/packages/junior/src/chat/tools/watch-timer.ts +++ b/packages/junior/src/chat/tools/watch-timer.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { createTimerWatch } from "@/chat/events/store"; import { RESOURCE_SUBSCRIPTION_MAX_TTL_MS } from "@/chat/events/tool-support"; import { zodTool } from "@/chat/tool-support/zod-tool"; diff --git a/packages/junior/src/chat/tools/web/fetch-tool.ts b/packages/junior/src/chat/tools/web/fetch-tool.ts index 277092566e..9259114ccf 100644 --- a/packages/junior/src/chat/tools/web/fetch-tool.ts +++ b/packages/junior/src/chat/tools/web/fetch-tool.ts @@ -1,5 +1,5 @@ import { createHash } from "node:crypto"; -import { z } from "zod"; +import * as z from "zod"; import { logWarn } from "@/chat/logging"; import { SANDBOX_JUNIOR_ROOT } from "@/chat/sandbox/paths"; import type { SandboxWorkspace } from "@/chat/sandbox/workspace"; diff --git a/packages/junior/src/chat/tools/web/image-generate.ts b/packages/junior/src/chat/tools/web/image-generate.ts index 009f25b344..9b64e5dec8 100644 --- a/packages/junior/src/chat/tools/web/image-generate.ts +++ b/packages/junior/src/chat/tools/web/image-generate.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import type { ImageGenerateToolDeps, ToolHooks } from "@/chat/tools/types"; diff --git a/packages/junior/src/chat/tools/web/search.ts b/packages/junior/src/chat/tools/web/search.ts index cf1221c7a4..71820fe7d4 100644 --- a/packages/junior/src/chat/tools/web/search.ts +++ b/packages/junior/src/chat/tools/web/search.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { generateText } from "ai"; diff --git a/packages/junior/src/chat/workspaces/tools.ts b/packages/junior/src/chat/workspaces/tools.ts index 2dd527797f..5d442ca8b8 100644 --- a/packages/junior/src/chat/workspaces/tools.ts +++ b/packages/junior/src/chat/workspaces/tools.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; import { watchResultSchema, type WatchResult } from "@sentry/junior-plugin-api"; import { getDb } from "@/chat/db"; import { logWarn } from "@/chat/logging"; diff --git a/packages/junior/src/db/schema/agent-invocations.ts b/packages/junior/src/db/schema/agent-invocations.ts index 0a7b443a0b..4f5019ac16 100644 --- a/packages/junior/src/db/schema/agent-invocations.ts +++ b/packages/junior/src/db/schema/agent-invocations.ts @@ -13,37 +13,11 @@ import type { TurnReasoningLevel } from "@/chat/reasoning-level"; import type { AgentType } from "@/chat/agent-invocations/agent-types"; import { juniorConversations } from "./conversations"; import { timestamptz } from "./timestamps"; - -export const AGENT_INVOCATION_STATUSES = [ - "pending", - "running", - "paused", - "blocked", - "completed", - "failed", - "stopped", -] as const; - -export const AGENT_INVOCATION_MAILBOX_STATUSES = [ - "pending", - "appended", -] as const; - -/** - * Parent mailbox append state. Only terminal invocations have a value. - * `replaced` means the child still had open work, so a later agent invocation - * on the same child sends the result instead. `skipped` means a stop ended - * the work, so the result is never used. `steered` means the agent invocation - * that was running read the input as a steering message, so its result covers - * this one. - */ -export const AGENT_INVOCATION_PARENT_MAILBOX_STATUSES = [ - "pending", - "appended", - "replaced", - "skipped", - "steered", -] as const; +import type { + AGENT_INVOCATION_MAILBOX_STATUSES, + AGENT_INVOCATION_PARENT_MAILBOX_STATUSES, + AGENT_INVOCATION_STATUSES, +} from "@/chat/agent-invocations/statuses"; export const juniorAgentBindings = pgTable( "junior_agent_bindings", diff --git a/packages/junior/src/db/schema/destination-kind.ts b/packages/junior/src/db/schema/destination-kind.ts new file mode 100644 index 0000000000..1a201c2868 --- /dev/null +++ b/packages/junior/src/db/schema/destination-kind.ts @@ -0,0 +1,14 @@ +import * as z from "zod"; + +// Kept apart from the Drizzle table so the browser bundle can use the schema +// without drizzle-orm. +export const juniorDestinationKindSchema = z.enum([ + "channel", + "dm", + "group", + "local_conversation", + "thread", + "web_session", +]); + +export type JuniorDestinationKind = z.infer; diff --git a/packages/junior/src/db/schema/destinations.ts b/packages/junior/src/db/schema/destinations.ts index 8a3869feb4..0e2088447d 100644 --- a/packages/junior/src/db/schema/destinations.ts +++ b/packages/junior/src/db/schema/destinations.ts @@ -1,18 +1,7 @@ import { index, jsonb, pgTable, text, uniqueIndex } from "drizzle-orm/pg-core"; -import { z } from "zod"; +import type { JuniorDestinationKind } from "./destination-kind"; import { timestamptz } from "./timestamps"; -export const juniorDestinationKindSchema = z.enum([ - "channel", - "dm", - "group", - "local_conversation", - "thread", - "web_session", -]); - -export type JuniorDestinationKind = z.infer; - export type JuniorDestinationVisibility = | "direct" | "private" diff --git a/packages/junior/src/reporting-schema.ts b/packages/junior/src/reporting-schema.ts index 8f76efb90d..021a73f820 100644 --- a/packages/junior/src/reporting-schema.ts +++ b/packages/junior/src/reporting-schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; export const healthReportSchema = z .object({ diff --git a/packages/junior/src/usage-schema.ts b/packages/junior/src/usage-schema.ts index dece732bef..92139cd77b 100644 --- a/packages/junior/src/usage-schema.ts +++ b/packages/junior/src/usage-schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import * as z from "zod"; export const usageCostSchema = z .object({ diff --git a/packages/junior/tests/component/linear-native-create.test.ts b/packages/junior/tests/component/linear-native-create.test.ts index 9cde891d56..55dba121fc 100644 --- a/packages/junior/tests/component/linear-native-create.test.ts +++ b/packages/junior/tests/component/linear-native-create.test.ts @@ -12,7 +12,7 @@ import { createPluginHookRunner, setPlugins } from "@/chat/plugins/agent-hooks"; import { listConversationAnnotations } from "@/chat/plugins/annotations"; import { parseInlinePluginManifest } from "@/chat/plugins/manifest"; import { mswServer } from "../msw/server"; -import { z } from "zod"; +import * as z from "zod"; describe("Linear MCP create annotations", () => { let manager: McpToolManager | undefined; diff --git a/packages/junior/tests/component/plugins/plugin-conversation-events.test.ts b/packages/junior/tests/component/plugins/plugin-conversation-events.test.ts index 96f42da821..937df0cbc9 100644 --- a/packages/junior/tests/component/plugins/plugin-conversation-events.test.ts +++ b/packages/junior/tests/component/plugins/plugin-conversation-events.test.ts @@ -6,7 +6,7 @@ import { type PluginConversationEventDefinition, } from "@sentry/junior-plugin-api"; import { eq } from "drizzle-orm"; -import { z } from "zod"; +import * as z from "zod"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { PiMessage } from "@/chat/pi/messages"; import { juniorConversations } from "@/db/schema"; diff --git a/packages/junior/tests/component/plugins/plugin-prompt-hooks.test.ts b/packages/junior/tests/component/plugins/plugin-prompt-hooks.test.ts index 566e0ce353..697d24b625 100644 --- a/packages/junior/tests/component/plugins/plugin-prompt-hooks.test.ts +++ b/packages/junior/tests/component/plugins/plugin-prompt-hooks.test.ts @@ -115,7 +115,7 @@ import { defineJuniorPlugin, definePromptContext, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { executeAgentRun } from "@/chat/agent"; import { setPlugins } from "@/chat/plugins/agent-hooks"; import { disconnectStateAdapter } from "@/chat/state/adapter"; diff --git a/packages/junior/tests/fixtures/mcp-test-server.ts b/packages/junior/tests/fixtures/mcp-test-server.ts index 6cbbad0cd4..b20d8ac587 100644 --- a/packages/junior/tests/fixtures/mcp-test-server.ts +++ b/packages/junior/tests/fixtures/mcp-test-server.ts @@ -1,7 +1,7 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { z } from "zod"; +import * as z from "zod"; export interface EchoMcpTestServer { client: Client; diff --git a/packages/junior/tests/integration/agent-invocation-work.test.ts b/packages/junior/tests/integration/agent-invocation-work.test.ts index ce067c5d2e..b4073b0fa2 100644 --- a/packages/junior/tests/integration/agent-invocation-work.test.ts +++ b/packages/junior/tests/integration/agent-invocation-work.test.ts @@ -1,5 +1,5 @@ import { afterEach, describe, expect, it, vi } from "vitest"; -import { z } from "zod"; +import * as z from "zod"; import { createApp, defineJuniorPlugins } from "@/app"; import type { PiMessage } from "@/chat/pi/messages"; import { diff --git a/packages/junior/tests/integration/annotation-cards.test.ts b/packages/junior/tests/integration/annotation-cards.test.ts index 38f602f2e0..b520c3212b 100644 --- a/packages/junior/tests/integration/annotation-cards.test.ts +++ b/packages/junior/tests/integration/annotation-cards.test.ts @@ -8,7 +8,7 @@ import { type ObjectAnnotation, } from "@sentry/junior-plugin-api"; import { afterEach, expect, it } from "vitest"; -import { z } from "zod"; +import * as z from "zod"; import { setPlugins } from "@/chat/plugins/agent-hooks"; import { createPluginAnnotations, diff --git a/packages/junior/tests/integration/api/code.test.ts b/packages/junior/tests/integration/api/code.test.ts index 2e805fd465..5489ca7164 100644 --- a/packages/junior/tests/integration/api/code.test.ts +++ b/packages/junior/tests/integration/api/code.test.ts @@ -1,6 +1,6 @@ import { describe, expect, test, vi } from "vitest"; import { eq } from "drizzle-orm"; -import { z } from "zod"; +import * as z from "zod"; import type { CodeChangeInput } from "@sentry/junior-plugin-api"; import { createJuniorApi } from "@/api"; import { diff --git a/packages/junior/tests/integration/codemode/bridge.test.ts b/packages/junior/tests/integration/codemode/bridge.test.ts index 7188a16f78..eb379bed30 100644 --- a/packages/junior/tests/integration/codemode/bridge.test.ts +++ b/packages/junior/tests/integration/codemode/bridge.test.ts @@ -4,7 +4,7 @@ import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/ import { createLocalSource } from "@sentry/junior-plugin-api"; import { Type } from "@sinclair/typebox"; import { http } from "msw"; -import { z } from "zod"; +import * as z from "zod"; import { createResumeState } from "@/chat/agent/resume"; import { CODE_MODE_SCRIPT_TIMEOUT_MS, diff --git a/packages/junior/tests/integration/docker-sandbox-provider.test.ts b/packages/junior/tests/integration/docker-sandbox-provider.test.ts index 8a8f9c365d..74097daf40 100644 --- a/packages/junior/tests/integration/docker-sandbox-provider.test.ts +++ b/packages/junior/tests/integration/docker-sandbox-provider.test.ts @@ -4,7 +4,7 @@ import tls from "node:tls"; import { defineJuniorPlugin } from "@sentry/junior-plugin-api"; import { http, HttpResponse } from "msw"; import { afterAll, beforeAll, describe, expect, it } from "vitest"; -import { z } from "zod"; +import * as z from "zod"; import { dockerJson } from "@/chat/sandbox/docker/api"; import { dockerSandboxProvider } from "@/chat/sandbox/docker/provider"; import { egressCaPem } from "@/chat/sandbox/docker/egress"; diff --git a/packages/junior/tests/integration/sandbox-egress-proxy.test.ts b/packages/junior/tests/integration/sandbox-egress-proxy.test.ts index 0f15fa9f4e..23acb518d1 100644 --- a/packages/junior/tests/integration/sandbox-egress-proxy.test.ts +++ b/packages/junior/tests/integration/sandbox-egress-proxy.test.ts @@ -10,7 +10,7 @@ import { } from "@sentry/junior-plugin-api"; import { http, HttpResponse } from "msw"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { z } from "zod"; +import * as z from "zod"; import { createPluginAppFixture, type PluginAppFixture, diff --git a/packages/junior/tests/integration/sandbox-egress-trace-headers.test.ts b/packages/junior/tests/integration/sandbox-egress-trace-headers.test.ts index c4f3d09198..b860ea513e 100644 --- a/packages/junior/tests/integration/sandbox-egress-trace-headers.test.ts +++ b/packages/junior/tests/integration/sandbox-egress-trace-headers.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { z } from "zod"; +import * as z from "zod"; import type { TracePropagationHeaders } from "@/chat/logging"; import { buildSandboxEgressNetworkPolicy } from "@/chat/sandbox/egress/policy"; import { getSandboxProvider } from "@/chat/sandbox/provider"; diff --git a/packages/junior/tests/integration/tool-support/pi-tool-adapter.test.ts b/packages/junior/tests/integration/tool-support/pi-tool-adapter.test.ts index d951d25333..f7c71aef43 100644 --- a/packages/junior/tests/integration/tool-support/pi-tool-adapter.test.ts +++ b/packages/junior/tests/integration/tool-support/pi-tool-adapter.test.ts @@ -6,7 +6,7 @@ import { zodTool, } from "@sentry/junior-plugin-api"; import { Type } from "@sinclair/typebox"; -import { z } from "zod"; +import * as z from "zod"; import { setPlugins } from "@/chat/plugins/agent-hooks"; import { SkillSandbox } from "@/chat/sandbox/skill-sandbox"; import { createTools } from "@/chat/tools"; diff --git a/packages/junior/tests/unit/api/conversation-events.test.ts b/packages/junior/tests/unit/api/conversation-events.test.ts index db4adf366c..c146c110e9 100644 --- a/packages/junior/tests/unit/api/conversation-events.test.ts +++ b/packages/junior/tests/unit/api/conversation-events.test.ts @@ -3,7 +3,7 @@ import { defineConversationEvent, defineJuniorPlugin, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { projectConversationReportEventPage } from "@/api/conversations/events"; import { conversationDetailReportSchema, diff --git a/packages/junior/tests/unit/briefs/generate.test.ts b/packages/junior/tests/unit/briefs/generate.test.ts index df4c2bda14..524105cc6a 100644 --- a/packages/junior/tests/unit/briefs/generate.test.ts +++ b/packages/junior/tests/unit/briefs/generate.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; import { strictProviderSchemaProblems } from "@sentry/junior-testing/structured-output"; -import { z } from "zod"; +import * as z from "zod"; import { generateBrief } from "@/chat/briefs/generate"; import type { BriefInput } from "@/chat/briefs/schema"; diff --git a/packages/junior/tests/unit/pi/client.test.ts b/packages/junior/tests/unit/pi/client.test.ts index 9fda88d727..e91dca4cd4 100644 --- a/packages/junior/tests/unit/pi/client.test.ts +++ b/packages/junior/tests/unit/pi/client.test.ts @@ -1,5 +1,5 @@ import { afterEach, describe, expect, it, vi } from "vitest"; -import { z } from "zod"; +import * as z from "zod"; const mocks = vi.hoisted(() => ({ calculateCost: vi.fn(() => ({ diff --git a/packages/junior/tests/unit/plugins/agent-hooks.test.ts b/packages/junior/tests/unit/plugins/agent-hooks.test.ts index 3466a66fa0..92c89c2a54 100644 --- a/packages/junior/tests/unit/plugins/agent-hooks.test.ts +++ b/packages/junior/tests/unit/plugins/agent-hooks.test.ts @@ -12,7 +12,7 @@ import { type ToolExposure, type ToolRegistrationHookContext, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; import { beforeEach, describe, expect, it, vi } from "vitest"; const { logWarnMock, resolveViewerUserMock } = vi.hoisted(() => ({ diff --git a/packages/junior/tests/unit/plugins/define-plugin-tool.test.ts b/packages/junior/tests/unit/plugins/define-plugin-tool.test.ts index 23b59c12e8..a57e091ada 100644 --- a/packages/junior/tests/unit/plugins/define-plugin-tool.test.ts +++ b/packages/junior/tests/unit/plugins/define-plugin-tool.test.ts @@ -7,7 +7,7 @@ import { toolApprovalModeSchema, zodTool, } from "@sentry/junior-plugin-api"; -import { z } from "zod"; +import * as z from "zod"; const countResultSchema = pluginToolOutputSchema.extend({ count: z.number(), diff --git a/packages/junior/tests/unit/queue/sign.test.ts b/packages/junior/tests/unit/queue/sign.test.ts index b409b953f9..4506ef3f36 100644 --- a/packages/junior/tests/unit/queue/sign.test.ts +++ b/packages/junior/tests/unit/queue/sign.test.ts @@ -1,5 +1,5 @@ import { afterEach, describe, expect, it } from "vitest"; -import { z } from "zod"; +import * as z from "zod"; import { signQueueMessage, verifyQueueMessage } from "@/chat/queue/sign"; const originalJuniorSecret = process.env.JUNIOR_SECRET; diff --git a/packages/junior/tests/unit/tool-support/zod-tool.test.ts b/packages/junior/tests/unit/tool-support/zod-tool.test.ts index 9b9215512f..fc41742316 100644 --- a/packages/junior/tests/unit/tool-support/zod-tool.test.ts +++ b/packages/junior/tests/unit/tool-support/zod-tool.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it, vi } from "vitest"; -import { z } from "zod"; +import * as z from "zod"; import { juniorToolOutputSchema } from "@/chat/tool-support/structured-result"; import { zodTool } from "@/chat/tool-support/zod-tool"; import { ToolInputError } from "@/chat/tools/execution/tool-input-error"; diff --git a/tools/oxlint/junior/index.ts b/tools/oxlint/junior/index.ts index 061f5d0422..ea84112a5e 100644 --- a/tools/oxlint/junior/index.ts +++ b/tools/oxlint/junior/index.ts @@ -2,6 +2,7 @@ import { definePlugin } from "@oxlint/plugins"; import { touchConversationDetailRule } from "./rules/touch-conversation-detail.ts"; import { useGitHubApiRule } from "./rules/use-github-api.ts"; +import { zodNamespaceImportRule } from "./rules/zod-namespace-import.ts"; /** Oxlint rules for Junior runtime invariants. */ const juniorPlugin = definePlugin({ @@ -9,6 +10,7 @@ const juniorPlugin = definePlugin({ rules: { "touch-conversation-detail": touchConversationDetailRule, "use-github-api": useGitHubApiRule, + "zod-namespace-import": zodNamespaceImportRule, }, }); diff --git a/tools/oxlint/junior/rules/zod-namespace-import.test.ts b/tools/oxlint/junior/rules/zod-namespace-import.test.ts new file mode 100644 index 0000000000..f5c429bf3a --- /dev/null +++ b/tools/oxlint/junior/rules/zod-namespace-import.test.ts @@ -0,0 +1,27 @@ +import { describe, it } from "node:test"; +import { RuleTester } from "oxlint/plugins-dev"; + +import { zodNamespaceImportRule } from "./zod-namespace-import.ts"; + +RuleTester.describe = describe; +RuleTester.it = it; + +const namespaceImport = [{ messageId: "namespaceImport" }]; + +new RuleTester({ + languageOptions: { parserOptions: { lang: "ts" } }, +}).run("zod-namespace-import", zodNamespaceImportRule, { + valid: [ + `import * as z from "zod";`, + `import type { ZodType } from "zod";`, + `import { ZodError } from "zod";`, + `import type { z } from "zod";`, + `import { type z } from "zod";`, + `import { z } from "./local-zod";`, + ], + invalid: [ + { code: `import { z } from "zod";`, errors: namespaceImport }, + { code: `import { z as zod } from "zod";`, errors: namespaceImport }, + { code: `import { ZodError, z } from "zod";`, errors: namespaceImport }, + ], +}); diff --git a/tools/oxlint/junior/rules/zod-namespace-import.ts b/tools/oxlint/junior/rules/zod-namespace-import.ts new file mode 100644 index 0000000000..48632919c8 --- /dev/null +++ b/tools/oxlint/junior/rules/zod-namespace-import.ts @@ -0,0 +1,38 @@ +import { defineRule } from "@oxlint/plugins"; + +/** + * Require `import * as z from "zod"`. esbuild cannot tree-shake the named `z` + * export, so one named import anywhere in the dashboard graph adds every zod + * locale (about 250 KB) to the browser bundle. + */ +export const zodNamespaceImportRule = defineRule({ + meta: { + type: "problem", + docs: { + description: + 'Require `import * as z from "zod"` instead of the named `z` export.', + }, + messages: { + namespaceImport: + 'Use `import * as z from "zod"`. esbuild cannot tree-shake the named `z` export, so it adds every zod locale (about 250 KB) to the dashboard browser bundle.', + }, + }, + create(context) { + return { + ImportDeclaration(node) { + // Type-only imports are erased, so they never reach the bundle. + if (node.source.value !== "zod" || node.importKind === "type") return; + for (const specifier of node.specifiers) { + if ( + specifier.type === "ImportSpecifier" && + specifier.importKind !== "type" && + specifier.imported.type === "Identifier" && + specifier.imported.name === "z" + ) { + context.report({ node: specifier, messageId: "namespaceImport" }); + } + } + }, + }; + }, +});