diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 3fa0036c03f..45232483d1c 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -40,11 +40,11 @@ "@sim/terminal-protocol": "workspace:*", "@sim/utils": "workspace:*", "@xterm/headless": "6.0.0", - "electron-updater": "6.8.9", + "electron-updater": "6.8.12", "lru-cache": "11.5.3", "micromatch": "4.0.8", "safe-regex2": "5.1.2", - "tldts": "7.4.18", + "tldts": "7.4.19", "pdf-lib": "1.17.1", "@sim/auth-ui": "workspace:*" }, diff --git a/apps/docs/components/docs/mdx.tsx b/apps/docs/components/docs/mdx.tsx index ede1fe46fbf..d4c58298ff2 100644 --- a/apps/docs/components/docs/mdx.tsx +++ b/apps/docs/components/docs/mdx.tsx @@ -79,7 +79,7 @@ export function getMDXComponents(overrides: MDXComponents = {}): MDXComponents { diff --git a/apps/docs/components/docs/sample-panels.tsx b/apps/docs/components/docs/sample-panels.tsx index 9176973148a..62b6892a593 100644 --- a/apps/docs/components/docs/sample-panels.tsx +++ b/apps/docs/components/docs/sample-panels.tsx @@ -86,10 +86,13 @@ export function SamplePanels({ value={item.value} label={item.label} id={item.id ?? `${selectorId}-${item.value}`} + tabIndex={-1} {...(presentation === 'select' ? { role: 'region', 'aria-labelledby': selectorId } : {})} className='[&>div]:pt-0' > - {item.panel} + + {item.panel} + ))} diff --git a/apps/docs/components/ui/code-block.tsx b/apps/docs/components/ui/code-block.tsx index eebd7306e3e..d01b974e1a2 100644 --- a/apps/docs/components/ui/code-block.tsx +++ b/apps/docs/components/ui/code-block.tsx @@ -18,13 +18,15 @@ interface CodeBlockProps extends HTMLAttributes { interface CodeContentProps { children: ReactNode label?: string + tabIndex?: number } -export function CodeContent({ children, label = 'Code sample' }: CodeContentProps) { +export function CodeContent({ children, label = 'Code sample', tabIndex }: CodeContentProps) { return ( {children} diff --git a/apps/docs/components/ui/scroll-region.tsx b/apps/docs/components/ui/scroll-region.tsx index ec10d70c3f6..d6e2fccdbb1 100644 --- a/apps/docs/components/ui/scroll-region.tsx +++ b/apps/docs/components/ui/scroll-region.tsx @@ -8,24 +8,32 @@ interface ScrollRegionProps extends HTMLAttributes { label: string } -/** Keyboard scrolling is reachable only when this region has horizontal overflow. */ -export function ScrollRegion({ label, className, children, ...props }: ScrollRegionProps) { +/** Keeps scrolling keyboard-accessible before hydration, then skips nonoverflowing regions unless opted in. */ +export function ScrollRegion({ + label, + className, + children, + tabIndex, + ...props +}: ScrollRegionProps) { const region = useRef(null) useEffect(() => { const element = region.current if (!element) return function updateFocusability() { - if (element) element.tabIndex = element.scrollWidth > element.clientWidth + 1 ? 0 : -1 + if (element) + element.tabIndex = tabIndex ?? (element.scrollWidth > element.clientWidth + 1 ? 0 : -1) } const observer = new ResizeObserver(updateFocusability) observer.observe(element) if (element.firstElementChild) observer.observe(element.firstElementChild) return () => observer.disconnect() - }, []) + }, [tabIndex]) return (
+ ## Formatting text Select text to open the formatting toolbar for bold, italic, strikethrough, inline code, and links. You can also type Markdown, such as `**bold**` and `*italic*`. A link's hover card lets you open, copy, edit, or remove it. -Selected text in the Markdown editor with the text style, bold, italic, link, and more formatting controls - | Action | Shortcut or Markdown | | --- | --- | | Bold | **Cmd/Ctrl + B** | @@ -39,28 +38,10 @@ Type `/` at the start of a block or after whitespace to open the insertion menu. Insert a table from the slash menu. Select a cell to open the table toolbar, then add or remove rows and columns, or delete the table. The header row stays in place; you can edit its text. Column resizing and merged cells are not supported. -A Markdown owner table with controls for adding a row, managing columns, and deleting the table - ## Code blocks Fenced code blocks have syntax highlighting, a language picker, line wrapping, and a copy button. Hover over the block or focus a control to reveal its toolbar. -A highlighted JSON code block with language, line wrap, and copy controls - Choose `mermaid` to render a diagram. Select **Show source** when you need to edit its definition. ## Images diff --git a/apps/docs/lib/shiki-theme.ts b/apps/docs/lib/shiki-theme.ts index c35aafd46e9..a7cd7004a61 100644 --- a/apps/docs/lib/shiki-theme.ts +++ b/apps/docs/lib/shiki-theme.ts @@ -195,4 +195,5 @@ const simShikiDark = buildTheme('sim-dark', 'dark', DARK) export const simShikiOptions = { themes: { light: simShikiLight, dark: simShikiDark }, defaultColor: false, + tabindex: false, } as const diff --git a/apps/docs/openapi-v2-workflows.json b/apps/docs/openapi-v2-workflows.json index b9192e47728..f36b9bc5f69 100644 --- a/apps/docs/openapi-v2-workflows.json +++ b/apps/docs/openapi-v2-workflows.json @@ -5275,6 +5275,20 @@ "application/json": { "schema": { "$ref": "#/components/schemas/PreviewWorkspaceForkResponse" + }, + "examples": { + "example1": { + "summary": "Response example 1", + "value": { + "data": { + "previewFingerprint": "c7d158e8cbc5137a2d0a4fc37ddaeb51a3b9757485679a6ad82a7de3fdac4e3a", + "sourceWorkspaceId": "9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94", + "workflows": [], + "selectedResourceCount": 0, + "draftOnly": true + } + } + } } } } @@ -5466,6 +5480,25 @@ "application/json": { "schema": { "$ref": "#/components/schemas/PreviewWorkspacePushResponse" + }, + "examples": { + "example1": { + "summary": "Response example 1", + "value": { + "data": { + "previewFingerprint": "c7d158e8cbc5137a2d0a4fc37ddaeb51a3b9757485679a6ad82a7de3fdac4e3a", + "sourceWorkspaceId": "e4f8d2b6-9a1c-4e3d-8b7f-5c0a2d9e6f13", + "targetWorkspaceId": "9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94", + "ready": true, + "workflows": [], + "unresolvedBindings": [], + "configuration": [], + "excludedTargets": [], + "triggerSlots": [], + "triggerUrlChanges": [] + } + } + } } } } @@ -5658,6 +5691,25 @@ "application/json": { "schema": { "$ref": "#/components/schemas/PreviewWorkspacePullResponse" + }, + "examples": { + "example1": { + "summary": "Response example 1", + "value": { + "data": { + "previewFingerprint": "c7d158e8cbc5137a2d0a4fc37ddaeb51a3b9757485679a6ad82a7de3fdac4e3a", + "sourceWorkspaceId": "9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94", + "targetWorkspaceId": "e4f8d2b6-9a1c-4e3d-8b7f-5c0a2d9e6f13", + "ready": true, + "workflows": [], + "unresolvedBindings": [], + "configuration": [], + "excludedTargets": [], + "triggerSlots": [], + "triggerUrlChanges": [] + } + } + } } } } @@ -6716,6 +6768,22 @@ "application/json": { "schema": { "$ref": "#/components/schemas/PreviewWorkflowImportResponse" + }, + "examples": { + "example1": { + "summary": "Response example 1", + "value": { + "data": { + "previewFingerprint": "c7d158e8cbc5137a2d0a4fc37ddaeb51a3b9757485679a6ad82a7de3fdac4e3a", + "ready": true, + "bindings": [], + "unresolvedBindings": [], + "configuration": [], + "unresolvedConfiguration": [], + "discovery": [] + } + } + } } } } @@ -15566,7 +15634,18 @@ "required": ["data"], "additionalProperties": false, "title": "Preview workspace fork response", - "description": "Deployed source workflows, selected-copy count, and a preview fingerprint." + "description": "Deployed source workflows, selected-copy count, and a preview fingerprint.", + "examples": [ + { + "data": { + "previewFingerprint": "c7d158e8cbc5137a2d0a4fc37ddaeb51a3b9757485679a6ad82a7de3fdac4e3a", + "sourceWorkspaceId": "9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94", + "workflows": [], + "selectedResourceCount": 0, + "draftOnly": true + } + } + ] }, "PreviewWorkspaceForkBody": { "type": "object", @@ -16446,7 +16525,23 @@ "required": ["data"], "additionalProperties": false, "title": "Preview workspace push response", - "description": "Current-to-other workflow actions, required choices, and preview fingerprint." + "description": "Current-to-other workflow actions, required choices, and preview fingerprint.", + "examples": [ + { + "data": { + "previewFingerprint": "c7d158e8cbc5137a2d0a4fc37ddaeb51a3b9757485679a6ad82a7de3fdac4e3a", + "sourceWorkspaceId": "e4f8d2b6-9a1c-4e3d-8b7f-5c0a2d9e6f13", + "targetWorkspaceId": "9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94", + "ready": true, + "workflows": [], + "unresolvedBindings": [], + "configuration": [], + "excludedTargets": [], + "triggerSlots": [], + "triggerUrlChanges": [] + } + } + ] }, "PreviewWorkspacePushBody": { "type": "object", @@ -16972,7 +17067,23 @@ "required": ["data"], "additionalProperties": false, "title": "Preview workspace pull response", - "description": "Other-to-current workflow actions, required choices, and preview fingerprint." + "description": "Other-to-current workflow actions, required choices, and preview fingerprint.", + "examples": [ + { + "data": { + "previewFingerprint": "c7d158e8cbc5137a2d0a4fc37ddaeb51a3b9757485679a6ad82a7de3fdac4e3a", + "sourceWorkspaceId": "9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94", + "targetWorkspaceId": "e4f8d2b6-9a1c-4e3d-8b7f-5c0a2d9e6f13", + "ready": true, + "workflows": [], + "unresolvedBindings": [], + "configuration": [], + "excludedTargets": [], + "triggerSlots": [], + "triggerUrlChanges": [] + } + } + ] }, "PreviewWorkspacePullBody": { "type": "object", @@ -18487,7 +18598,20 @@ "required": ["data"], "additionalProperties": false, "title": "Preview workflow import response", - "description": "Import readiness, unresolved bindings, and destination discovery instructions." + "description": "Import readiness, unresolved bindings, and destination discovery instructions.", + "examples": [ + { + "data": { + "previewFingerprint": "c7d158e8cbc5137a2d0a4fc37ddaeb51a3b9757485679a6ad82a7de3fdac4e3a", + "ready": true, + "bindings": [], + "unresolvedBindings": [], + "configuration": [], + "unresolvedConfiguration": [], + "discovery": [] + } + } + ] }, "ImportWorkflowRequest": { "type": "object", diff --git a/apps/docs/package.json b/apps/docs/package.json index 634cfa02fb0..e1d7a1c29b2 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -33,8 +33,8 @@ "@sim/logger": "workspace:*", "@sim/utils": "workspace:*", "@sim/workflow-renderer": "workspace:*", - "@xyflow/react": "12.12.0", - "next": "16.4.1", + "@xyflow/react": "12.12.1", + "next": "16.4.5", "next-themes": "^0.4.6", "react": "19.2.4", "react-dom": "19.2.4", @@ -59,7 +59,7 @@ "server-only": "0.0.1", "postgres": "3.4.9", "remark-rehype": "11.1.2", - "hast-util-to-jsx-runtime": "2.3.6", + "hast-util-to-jsx-runtime": "2.3.7", "clsx": "2.1.1", "tailwind-merge": "3.7.0", "mdast-util-gfm": "3.1.0", @@ -80,7 +80,7 @@ "vitest": "^5.0.4", "@modelcontextprotocol/client": "2.3.1", "@types/mdast": "4.0.4", - "@types/mdx": "2.0.13", + "@types/mdx": "2.0.14", "htmlparser2": "10.1.0", "@types/hast": "3.0.5" } diff --git a/apps/docs/scripts/fixtures/content-baseline.json b/apps/docs/scripts/fixtures/content-baseline.json index c990fe65fa0..80b2cab120d 100644 --- a/apps/docs/scripts/fixtures/content-baseline.json +++ b/apps/docs/scripts/fixtures/content-baseline.json @@ -18851,42 +18851,15 @@ "media": [ { "type": "Image", - "src": "/static/docs-captures/files-formatting.webp", - "alt": "Selected text in the Markdown editor with the text style, bold, italic, link, and more formatting controls", + "src": "/static/docs-captures/files-markdown.webp", + "alt": "A release brief open in the Markdown editor beside Chat, with a launch checklist, owner table, and highlighted JSON code block", "width": { - "expression": "900" + "expression": "2400" }, "height": { - "expression": "340" - }, - "variant": "detail", - "background": "architecture" - }, - { - "type": "Image", - "src": "/static/docs-captures/files-table.webp", - "alt": "A Markdown owner table with controls for adding a row, managing columns, and deleting the table", - "width": { "expression": "1200" }, - "height": { - "expression": "460" - }, - "variant": "detail", - "background": "architecture" - }, - { - "type": "Image", - "src": "/static/docs-captures/files-code.webp", - "alt": "A highlighted JSON code block with language, line wrap, and copy controls", - "width": { - "expression": "1200" - }, - "height": { - "expression": "400" - }, - "variant": "detail", - "background": "architecture" + "variant": "overview" } ] }, diff --git a/apps/extension/package.json b/apps/extension/package.json index 2529b2b9e69..7e659d2afaa 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -26,8 +26,8 @@ "devDependencies": { "@playwright/test": "1.64.1", "@sim/tsconfig": "workspace:*", - "@types/bun": "1.4.3", - "@types/chrome": "0.3.6", + "@types/bun": "1.4.4", + "@types/chrome": "0.3.7", "@types/react": "^19", "@types/react-dom": "^19", "esbuild": "0.28.2", diff --git a/apps/sim/lib/api/contracts/v2/openapi/workspace-sync.ts b/apps/sim/lib/api/contracts/v2/openapi/workspace-sync.ts index 8e622737eba..c939a6f0eed 100644 --- a/apps/sim/lib/api/contracts/v2/openapi/workspace-sync.ts +++ b/apps/sim/lib/api/contracts/v2/openapi/workspace-sync.ts @@ -75,7 +75,18 @@ export const workspaceSyncOpenApiRoutes = [ v2PreviewWorkspaceForkContract.response.schema, 'PreviewWorkspaceForkResponse', 'Preview workspace fork response', - 'Deployed source workflows, selected-copy count, and a preview fingerprint.' + 'Deployed source workflows, selected-copy count, and a preview fingerprint.', + [ + { + data: { + previewFingerprint: PREVIEW_FINGERPRINT_EXAMPLE, + sourceWorkspaceId: '9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94', + workflows: [], + selectedResourceCount: 0, + draftOnly: true, + }, + }, + ] ), } ), @@ -175,7 +186,23 @@ export const workspaceSyncOpenApiRoutes = [ v2PreviewWorkspacePushContract.response.schema, 'PreviewWorkspacePushResponse', 'Preview workspace push response', - 'Current-to-other workflow actions, required choices, and preview fingerprint.' + 'Current-to-other workflow actions, required choices, and preview fingerprint.', + [ + { + data: { + previewFingerprint: PREVIEW_FINGERPRINT_EXAMPLE, + sourceWorkspaceId: 'e4f8d2b6-9a1c-4e3d-8b7f-5c0a2d9e6f13', + targetWorkspaceId: '9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94', + ready: true, + workflows: [], + unresolvedBindings: [], + configuration: [], + excludedTargets: [], + triggerSlots: [], + triggerUrlChanges: [], + }, + }, + ] ), } ), @@ -276,7 +303,23 @@ export const workspaceSyncOpenApiRoutes = [ v2PreviewWorkspacePullContract.response.schema, 'PreviewWorkspacePullResponse', 'Preview workspace pull response', - 'Other-to-current workflow actions, required choices, and preview fingerprint.' + 'Other-to-current workflow actions, required choices, and preview fingerprint.', + [ + { + data: { + previewFingerprint: PREVIEW_FINGERPRINT_EXAMPLE, + sourceWorkspaceId: '9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94', + targetWorkspaceId: 'e4f8d2b6-9a1c-4e3d-8b7f-5c0a2d9e6f13', + ready: true, + workflows: [], + unresolvedBindings: [], + configuration: [], + excludedTargets: [], + triggerSlots: [], + triggerUrlChanges: [], + }, + }, + ] ), } ), @@ -683,7 +726,20 @@ export const workspaceSyncOpenApiRoutes = [ v2PreviewWorkflowImportContract.response.schema, 'PreviewWorkflowImportResponse', 'Preview workflow import response', - 'Import readiness, unresolved bindings, and destination discovery instructions.' + 'Import readiness, unresolved bindings, and destination discovery instructions.', + [ + { + data: { + previewFingerprint: PREVIEW_FINGERPRINT_EXAMPLE, + ready: true, + bindings: [], + unresolvedBindings: [], + configuration: [], + unresolvedConfiguration: [], + discovery: [], + }, + }, + ] ), } ), diff --git a/apps/sim/lib/core/utils/multipart.test.ts b/apps/sim/lib/core/utils/multipart.test.ts index 27e8e5ec513..bc2147bd276 100644 --- a/apps/sim/lib/core/utils/multipart.test.ts +++ b/apps/sim/lib/core/utils/multipart.test.ts @@ -5,6 +5,7 @@ import { isMultipartError, type MultipartError, readMultipart } from '@/lib/core type Part = | { name: string; value: string } | { name: string; filename: string; value: string; contentType?: string } + | { name: string; value: string; contentType: string } const BOUNDARY = '----testboundary1234' @@ -14,6 +15,8 @@ function buildBody(parts: Part[], boundary = BOUNDARY): Buffer { let header = `--${boundary}\r\nContent-Disposition: form-data; name="${part.name}"` if ('filename' in part) { header += `; filename="${part.filename}"\r\nContent-Type: ${part.contentType ?? 'text/csv'}` + } else if ('contentType' in part) { + header += `\r\nContent-Type: ${part.contentType}` } header += '\r\n\r\n' segments.push(Buffer.from(header, 'utf8'), Buffer.from(part.value, 'utf8'), Buffer.from('\r\n')) @@ -121,6 +124,18 @@ describe('readMultipart', () => { ) }) + it('rejects NO_FILE when the file part carries no filename', async () => { + const request = makeRequest([ + { name: 'file', value: 'name\nAlice\n', contentType: 'application/octet-stream' }, + ]) + await readMultipart(request, { maxFileBytes: 1024 }).then( + () => { + throw new Error('expected rejection') + }, + (err) => expectCode(err, 'NO_FILE') + ) + }) + it('rejects NOT_MULTIPART for a non-multipart content type', async () => { const request = { headers: new Headers({ 'content-type': 'application/json' }), diff --git a/apps/sim/lib/core/utils/multipart.ts b/apps/sim/lib/core/utils/multipart.ts index f43a4e23fc8..313e182bdc4 100644 --- a/apps/sim/lib/core/utils/multipart.ts +++ b/apps/sim/lib/core/utils/multipart.ts @@ -178,6 +178,15 @@ export function readMultipart( return } + // busboy treats an `application/octet-stream` part without a filename as a file. + const { filename } = info + if (filename === undefined) { + stream.resume() + nodeStream.destroy() + settle(() => reject(new MultipartError('NO_FILE', 'File part has no filename'))) + return + } + const missing = requiredFieldsBeforeFile.filter((field) => !(field in fields)) if (missing.length > 0) { stream.resume() @@ -218,7 +227,7 @@ export function readMultipart( } resolve({ fields, - file: { fieldName: name, filename: info.filename, mimeType: info.mimeType, stream }, + file: { fieldName: name, filename, mimeType: info.mimeType, stream }, }) }) }) diff --git a/apps/sim/lib/core/utils/sse.ts b/apps/sim/lib/core/utils/sse.ts index b856926a43d..b68af4bf783 100644 --- a/apps/sim/lib/core/utils/sse.ts +++ b/apps/sim/lib/core/utils/sse.ts @@ -1,9 +1,10 @@ /** - * Standard headers for Server-Sent Events responses + * Standard headers for Server-Sent Events responses. `no-transform` keeps Next's response + * compression and intermediaries from buffering the stream to compress it. */ export const SSE_HEADERS = { 'Content-Type': 'text/event-stream', - 'Cache-Control': 'no-cache', + 'Cache-Control': 'no-cache, no-transform', Connection: 'keep-alive', 'X-Accel-Buffering': 'no', } as const diff --git a/apps/sim/lib/execution/remote-sandbox/e2b.ts b/apps/sim/lib/execution/remote-sandbox/e2b.ts index 6d0059ccd55..cc1be4ee75b 100644 --- a/apps/sim/lib/execution/remote-sandbox/e2b.ts +++ b/apps/sim/lib/execution/remote-sandbox/e2b.ts @@ -1156,6 +1156,9 @@ export const e2bProvider: SandboxProvider = { : undefined const createOptions = { apiKey, + // The SDK retries a create that hit a gateway error; the key lets E2B return the sandbox + // the first attempt already started instead of starting a second one. + idempotencyKey: generateId(), ...(effectiveLifetimeMs !== undefined ? { timeoutMs: effectiveLifetimeMs } : {}), ...(options?.sessionKey ? { diff --git a/apps/sim/lib/mothership/request/session/sse.ts b/apps/sim/lib/mothership/request/session/sse.ts index a1a92dfcf0e..9f68c2ff611 100644 --- a/apps/sim/lib/mothership/request/session/sse.ts +++ b/apps/sim/lib/mothership/request/session/sse.ts @@ -14,7 +14,4 @@ export function encodeSSEEnvelope(envelope: unknown): Uint8Array { return encoder.encode(`data: ${JSON.stringify(presented)}\n\n`) } -export const SSE_RESPONSE_HEADERS = { - ...SSE_HEADERS, - 'Content-Encoding': 'none', -} as const +export const SSE_RESPONSE_HEADERS = SSE_HEADERS diff --git a/apps/sim/package.json b/apps/sim/package.json index e60bf5a6c14..7db582db32b 100644 --- a/apps/sim/package.json +++ b/apps/sim/package.json @@ -105,7 +105,7 @@ "@calcom/embed-react": "1.5.3", "@cerebras/cerebras_cloud_sdk": "^1.91.0", "@daytona/sdk": "0.207.0", - "@e2b/code-interpreter": "2.7.1", + "@e2b/code-interpreter": "2.9.1", "@earendil-works/pi-ai": "1.0.0", "@earendil-works/pi-coding-agent": "1.0.0", "@floating-ui/dom": "1.7.6", @@ -113,8 +113,8 @@ "@google/genai": "2.28.0", "@hookform/resolvers": "5.9.1", "@linear/sdk": "97.1.0", - "@marsidev/react-turnstile": "1.6.2", - "@modelcontextprotocol/sdk": "1.32.1", + "@marsidev/react-turnstile": "1.6.3", + "@modelcontextprotocol/sdk": "1.32.2", "@monaco-editor/react": "4.7.0", "@napi-rs/canvas": "0.1.100", "@opentelemetry/api": "^1.9.0", @@ -191,7 +191,7 @@ "@xterm/addon-web-links": "0.12.0", "@xterm/addon-webgl": "0.19.0", "@xterm/xterm": "6.0.0", - "@xyflow/react": "12.12.0", + "@xyflow/react": "12.12.1", "ajv": "8.20.0", "archiver": "8.0.0", "better-auth": "1.6.27", @@ -242,9 +242,9 @@ "monaco-editor": "0.55.1", "mongodb": "6.21.0", "mssql": "12.7.4", - "mysql2": "3.24.5", + "mysql2": "3.24.6", "neo4j-driver": "6.0.1", - "next": "16.4.1", + "next": "16.4.5", "next-mdx-remote": "^6.0.0", "next-themes": "^0.4.6", "nodemailer": "10.1.7", @@ -280,7 +280,7 @@ "ssh2": "^1.17.0", "streamdown": "2.5.0", "stripe": "18.5.0", - "tldts": "7.4.18", + "tldts": "7.4.19", "twilio": "6.2.0", "typebox": "1.3.27", "undici": "7.30.1", @@ -296,7 +296,7 @@ "@sim/auth-ui": "workspace:*" }, "devDependencies": { - "@next/env": "16.4.1", + "@next/env": "16.4.5", "@opentelemetry/context-async-hooks": "2.10.0", "@playwright/test": "1.64.1", "@sim/testing": "workspace:*", @@ -306,8 +306,8 @@ "@testing-library/jest-dom": "^6.10.0", "@trigger.dev/build": "4.8.3", "@types/archiver": "8.0.0", - "@types/busboy": "1.5.4", - "@types/chrome": "0.3.6", + "@types/busboy": "1.5.5", + "@types/chrome": "0.3.7", "@types/hast": "3.0.5", "@types/heic-convert": "2.1.1", "@types/html-to-text": "9.0.4", diff --git a/apps/sim/scripts/test-project-file-history-e2e.ts b/apps/sim/scripts/test-project-file-history-e2e.ts index 15fbae6dfec..ecf372ac554 100644 --- a/apps/sim/scripts/test-project-file-history-e2e.ts +++ b/apps/sim/scripts/test-project-file-history-e2e.ts @@ -69,7 +69,9 @@ async function verifyStreamedDownload( signal: AbortSignal.timeout(90_000), }) assert.equal(response.status, 200) - assert.equal(Number(response.headers.get('content-length')), expectedBytes) + // Next 16.4.5+ strips Content-Length from every Route Handler response (GHSA-pc58-hwjq-p385). + const declaredLength = response.headers.get('content-length') + if (declaredLength !== null) assert.equal(Number(declaredLength), expectedBytes) assert.ok(response.body) const reader = response.body.getReader() const hash = createHash('sha256') diff --git a/bun.lock b/bun.lock index b2aa2acbb03..5fc97ab72f8 100644 --- a/bun.lock +++ b/bun.lock @@ -37,10 +37,10 @@ "zod": "4.3.6", }, "optionalDependencies": { - "@next/swc-darwin-arm64": "16.4.1", - "@next/swc-darwin-x64": "16.4.1", - "@next/swc-linux-arm64-gnu": "16.4.1", - "@next/swc-linux-x64-gnu": "16.4.1", + "@next/swc-darwin-arm64": "16.4.5", + "@next/swc-darwin-x64": "16.4.5", + "@next/swc-linux-arm64-gnu": "16.4.5", + "@next/swc-linux-x64-gnu": "16.4.5", }, }, "apps/desktop": { @@ -58,12 +58,12 @@ "@sim/terminal-protocol": "workspace:*", "@sim/utils": "workspace:*", "@xterm/headless": "6.0.0", - "electron-updater": "6.8.9", + "electron-updater": "6.8.12", "lru-cache": "11.5.3", "micromatch": "4.0.8", "pdf-lib": "1.17.1", "safe-regex2": "5.1.2", - "tldts": "7.4.18", + "tldts": "7.4.19", }, "devDependencies": { "@electron/fuses": "1.8.0", @@ -103,16 +103,16 @@ "@sim/utils": "workspace:*", "@sim/workflow-renderer": "workspace:*", "@tanstack/react-query": "^5.90.21", - "@xyflow/react": "12.12.0", + "@xyflow/react": "12.12.1", "clsx": "2.1.1", "framer-motion": "^12.5.0", "github-slugger": "2.0.0", - "hast-util-to-jsx-runtime": "2.3.6", + "hast-util-to-jsx-runtime": "2.3.7", "mdast-util-gfm": "3.1.0", "mdast-util-mdxjs-esm": "2.0.1", "mdast-util-to-markdown": "2.1.2", "mdast-util-to-string": "4.0.0", - "next": "16.4.1", + "next": "16.4.5", "next-themes": "^0.4.6", "postgres": "3.4.9", "react": "19.2.4", @@ -136,7 +136,7 @@ "@tailwindcss/postcss": "^4.3.3", "@types/hast": "3.0.5", "@types/mdast": "4.0.4", - "@types/mdx": "2.0.13", + "@types/mdx": "2.0.14", "@types/node": "24.19.2", "@types/react": "^19", "@types/react-dom": "^19", @@ -164,8 +164,8 @@ "devDependencies": { "@playwright/test": "1.64.1", "@sim/tsconfig": "workspace:*", - "@types/bun": "1.4.3", - "@types/chrome": "0.3.6", + "@types/bun": "1.4.4", + "@types/chrome": "0.3.7", "@types/react": "^19", "@types/react-dom": "^19", "esbuild": "0.28.2", @@ -259,7 +259,7 @@ "@calcom/embed-react": "1.5.3", "@cerebras/cerebras_cloud_sdk": "^1.91.0", "@daytona/sdk": "0.207.0", - "@e2b/code-interpreter": "2.7.1", + "@e2b/code-interpreter": "2.9.1", "@earendil-works/pi-ai": "1.0.0", "@earendil-works/pi-coding-agent": "1.0.0", "@floating-ui/dom": "1.7.6", @@ -267,8 +267,8 @@ "@google/genai": "2.28.0", "@hookform/resolvers": "5.9.1", "@linear/sdk": "97.1.0", - "@marsidev/react-turnstile": "1.6.2", - "@modelcontextprotocol/sdk": "1.32.1", + "@marsidev/react-turnstile": "1.6.3", + "@modelcontextprotocol/sdk": "1.32.2", "@monaco-editor/react": "4.7.0", "@napi-rs/canvas": "0.1.100", "@opentelemetry/api": "^1.9.0", @@ -346,7 +346,7 @@ "@xterm/addon-web-links": "0.12.0", "@xterm/addon-webgl": "0.19.0", "@xterm/xterm": "6.0.0", - "@xyflow/react": "12.12.0", + "@xyflow/react": "12.12.1", "ajv": "8.20.0", "archiver": "8.0.0", "better-auth": "1.6.27", @@ -397,9 +397,9 @@ "monaco-editor": "0.55.1", "mongodb": "6.21.0", "mssql": "12.7.4", - "mysql2": "3.24.5", + "mysql2": "3.24.6", "neo4j-driver": "6.0.1", - "next": "16.4.1", + "next": "16.4.5", "next-mdx-remote": "^6.0.0", "next-themes": "^0.4.6", "nodemailer": "10.1.7", @@ -435,7 +435,7 @@ "ssh2": "^1.17.0", "streamdown": "2.5.0", "stripe": "18.5.0", - "tldts": "7.4.18", + "tldts": "7.4.19", "twilio": "6.2.0", "typebox": "1.3.27", "undici": "7.30.1", @@ -450,7 +450,7 @@ "zustand": "^5.0.15", }, "devDependencies": { - "@next/env": "16.4.1", + "@next/env": "16.4.5", "@opentelemetry/context-async-hooks": "2.10.0", "@playwright/test": "1.64.1", "@sim/testing": "workspace:*", @@ -460,8 +460,8 @@ "@testing-library/jest-dom": "^6.10.0", "@trigger.dev/build": "4.8.3", "@types/archiver": "8.0.0", - "@types/busboy": "1.5.4", - "@types/chrome": "0.3.6", + "@types/busboy": "1.5.5", + "@types/chrome": "0.3.7", "@types/hast": "3.0.5", "@types/heic-convert": "2.1.1", "@types/html-to-text": "9.0.4", @@ -595,9 +595,9 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/bun": "1.4.3", + "@types/bun": "1.4.4", "@types/node": "24.19.2", - "drizzle-kit": "0.31.10", + "drizzle-kit": "0.31.11", "typescript": "^7.0.2", "vitest": "^5.0.4", }, @@ -660,7 +660,7 @@ "@types/react-dom": "^19", "class-variance-authority": "0.7.1", "framer-motion": "^12.5.0", - "next": "16.4.1", + "next": "16.4.5", "prismjs": "^1.30.0", "react": "19.2.4", "react-dom": "19.2.4", @@ -790,7 +790,7 @@ }, "devDependencies": { "@clack/prompts": "1.7.0", - "@next/env": "16.4.1", + "@next/env": "16.4.5", "@sim/deployment-config": "workspace:*", "@sim/security": "workspace:*", "@sim/tsconfig": "workspace:*", @@ -824,7 +824,7 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "next": "16.4.1", + "next": "16.4.5", "stripe": "18.5.0", "typescript": "^7.0.2", "vitest": "^5.0.4", @@ -874,7 +874,7 @@ "devDependencies": { "@sim/tsconfig": "workspace:*", "@types/node": "24.19.2", - "@xyflow/react": "12.12.0", + "@xyflow/react": "12.12.1", "typescript": "^7.0.2", "vitest": "^5.0.4", }, @@ -891,7 +891,7 @@ "@types/hast": "3.0.5", "@types/react": "^19", "@types/react-dom": "^19", - "@xyflow/react": "12.12.0", + "@xyflow/react": "12.12.1", "jsdom": "^26.0.0", "react": "19.2.4", "react-dom": "19.2.4", @@ -917,7 +917,7 @@ "version": "0.1.0", "devDependencies": { "@sim/tsconfig": "workspace:*", - "@xyflow/react": "12.12.0", + "@xyflow/react": "12.12.1", "typescript": "^7.0.2", }, "peerDependencies": { @@ -930,25 +930,25 @@ ], "patchedDependencies": { "echarts@6.1.0": "patches/echarts@6.1.0.patch", - "next@16.4.1": "patches/next@16.4.1.patch", "oracledb@7.0.1": "patches/oracledb@7.0.1.patch", "zod@4.3.6": "patches/zod@4.3.6.patch", "postgres@3.4.9": "patches/postgres@3.4.9.patch", "@better-auth/oauth-provider@1.6.27": "patches/@better-auth%2Foauth-provider@1.6.27.patch", - "drizzle-kit@0.31.10": "patches/drizzle-kit@0.31.10.patch", + "drizzle-kit@0.31.11": "patches/drizzle-kit@0.31.11.patch", + "next@16.4.5": "patches/next@16.4.5.patch", }, "overrides": { "@ai-sdk/provider-utils": "3.0.28", "@azure/identity": "4.14.1", "@grpc/grpc-js": "1.14.6", "@hono/node-server": "2.1.5", - "@next/env": "16.4.1", + "@next/env": "16.4.5", "@xmldom/xmldom": "0.8.15", "axios": "1.20.0", "body-parser": "2.4.0", "deepmerge-ts": "8.0.0", "dompurify": "3.4.17", - "e2b": "2.50.0", + "e2b": "2.62.1", "engine.io": "6.6.11", "fast-copy": "4.2.0", "fast-uri": "3.1.9", @@ -958,8 +958,8 @@ "ip-address": "10.7.4", "marked": "18.0.11", "mermaid": "11.16.1", - "next": "16.4.1", - "postcss": "8.5.30", + "next": "16.4.5", + "postcss": "8.5.32", "postgres": "3.4.9", "prosemirror-model": "1.25.12", "prosemirror-state": "1.4.4", @@ -1294,10 +1294,6 @@ "@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], - "@connectrpc/connect": ["@connectrpc/connect@2.2.0", "", { "peerDependencies": { "@bufbuild/protobuf": "^2.7.0" } }, "sha512-M63OQ1ZFcPUm85CuewJ9G9CMV8LjzGR9935xOnXNQGSazAbwMb3x2W7vXBYM1zqrP7XFD8uxp/dUAhirclgwnQ=="], - - "@connectrpc/connect-web": ["@connectrpc/connect-web@2.2.0", "", { "peerDependencies": { "@bufbuild/protobuf": "^2.7.0", "@connectrpc/connect": "2.2.0" } }, "sha512-uuBUcBTYfb/r1o98LzCCZk1H90yx0vmZ5m21dpw/q4EUwsKwkCDGI8H0aEdjcZld+Q2jJ5A5ADvPqfb6lzQ/sg=="], - "@csstools/color-helpers": ["@csstools/color-helpers@5.1.0", "", {}, "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA=="], "@csstools/css-calc": ["@csstools/css-calc@2.1.4", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ=="], @@ -1318,7 +1314,9 @@ "@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="], - "@e2b/code-interpreter": ["@e2b/code-interpreter@2.7.1", "", { "dependencies": { "e2b": "^2.39.0" } }, "sha512-1M4YhyWOWZzZyt1XessPbMwkVOsfpsWTiOgPKbA60CtDQasUQA8bRdN7HxsajYMrNxF5tk8J0fwrY7oa2oTK4g=="], + "@e2b/code-interpreter": ["@e2b/code-interpreter@2.9.1", "", { "dependencies": { "e2b": "^2.62.1" } }, "sha512-8/OpeMFf4irGssVN27KAczH0eE/RLzES1TgjKx0Fa1Jy8LVu/kO8ssE5Oby5vvYIxJF4rSvDAVBI+PD05siwzQ=="], + + "@e2b/dockerfile-utils": ["@e2b/dockerfile-utils@0.1.1", "", {}, "sha512-eDmlWRMrJNzSUbBOf6Y/qTChd1Ys/o3YY8PK6tRQmwkV2u7z3ZS2cak/YJB07odHMT/Z6HJKoUElR/b0N6bHUw=="], "@earendil-works/chord": ["@earendil-works/chord@1.0.0", "", { "dependencies": { "esbuild": "0.28.2" } }, "sha512-BIfWfrByM0pKq6tfKYXuwx0ed2CvaqIM3EDA7Dps+fP+d3CiPWdlHi1cDsJC05llqKJoRz5//G0hz0yQwwjISQ=="], @@ -1512,6 +1510,8 @@ "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], + "@isaacs/nonrecursive-glob-match": ["@isaacs/nonrecursive-glob-match@1.0.3", "", {}, "sha512-SI7kyKHq4XXDRozw+r9GlRZkia1ZkFrpLW98r2IC2Bpr8YkFGE3fvjzmxCG0x78A++69HmDNrDvSMYBZmHGpKA=="], + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], @@ -1550,7 +1550,7 @@ "@malept/flatpak-bundler": ["@malept/flatpak-bundler@0.4.0", "", { "dependencies": { "debug": "^4.1.1", "fs-extra": "^9.0.0", "lodash": "^4.17.15", "tmp-promise": "^3.0.2" } }, "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q=="], - "@marsidev/react-turnstile": ["@marsidev/react-turnstile@1.6.2", "", { "peerDependencies": { "react": "^17.0.2 || ^18.0.0 || ^19.0", "react-dom": "^17.0.2 || ^18.0.0 || ^19.0" } }, "sha512-0CL9hNI/t39C8JfBCHQWj+A7llq2xdf9cjg0bYVbiywQlVS0bi1LTTTnF3S59OaBYgc+tMrxMedSDICJfaAkdg=="], + "@marsidev/react-turnstile": ["@marsidev/react-turnstile@1.6.3", "", { "peerDependencies": { "react": "^17.0.2 || ^18.0.0 || ^19.0", "react-dom": "^17.0.2 || ^18.0.0 || ^19.0" } }, "sha512-JdMMArjEVDMs5jnGMBeXl3y6dkMuIXPG4Tu88Uo2Rkf8ujEw/iJ2Yp/3n4kDF3BjJ+bJB9WC19LPWc5a7/4srA=="], "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], @@ -1564,7 +1564,7 @@ "@modelcontextprotocol/core": ["@modelcontextprotocol/core@2.3.1", "", { "dependencies": { "zod": "^4.2.0" } }, "sha512-laVmIhPGpWi7rG9q+0UigblRN0Hws/Yjlb6qLFtVqryXVLkc4h+yN8z731POD2LnAGQlFe7/tXhUm7Bi0YB91g=="], - "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.32.1", "", { "dependencies": { "@hono/node-server": "^1.19.9 || ^2.0.5", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-2DdE+SJDtzLEEWzY1ZjY7Q+VcPhcV1KisD3zI4u0XZyktsjHum1mwbMI+JaulUBi2OZk+KJAi2uPXzxichPkdw=="], + "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.32.2", "", { "dependencies": { "@hono/node-server": "^1.19.9 || ^2.0.5", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-SWsVtH/0vULSQStoZ6xxH2K09Li8fXYTMC64ZeogCdpZ3XSi1eCPOByV1OpuJxuI3OcmHhosDWYyii07tpPsLw=="], "@modelcontextprotocol/server": ["@modelcontextprotocol/server@2.3.1", "", { "dependencies": { "@modelcontextprotocol/core": "2.3.1", "zod": "^4.2.0" } }, "sha512-e59MfWuSssj6DoQ96JCTqdW1AXT5/XtnTl0WWd6MU1Ka434fFUGGosCLJbGNySDhHGvxQWoRWK137FXYFkYNWw=="], @@ -1600,23 +1600,23 @@ "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.2.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" } }, "sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g=="], - "@next/env": ["@next/env@16.4.1", "", {}, "sha512-5sUUrrSvs/2/2LnLoesybMGx12EtPB46fdZ6RhAw0XDGSPxU2LFyQBB7yuEiOFFJPKmBY6+q2jTr1/AMbnp0/g=="], + "@next/env": ["@next/env@16.4.5", "", {}, "sha512-JwSPwpdkZL5VMl2jA/q+JI8MZdweAL3xmw5/tb9y/TLtmS0YXZnmYDzSihwk8xTj1OL+WM53gTqaj96yuLp6Xw=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.4.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-U+hQ5Gj3fpzf4fveTIF3dpUFYhaSW8vHhdAnbiIomzXzg7boreYFgBqprepXFtW4sw+aTttiNmg0gew/iFNhbg=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.4.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-W5TniBzWKASbNNwHZ/S/f1MxQUXU/LdjklVMWA0Ujbfl7SZnUzFls45hO0i/sF7Bx1jJBWp7WWmoQajXtX/O8A=="], - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.4.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-/hqC3V1XLUjhMASf/WridKdO9FXoEgN3HBWmtKbj00MPgnltutfraWJ3bYTpCRIgEIpbjJyOVLpYgAhh/BkdcQ=="], + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.4.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-uWq4qkHapBDS1oFltWS4YxTb9pLHAtLNcpbuK6SmRsebLYZqpBML/j/C0op+50JYGTpZgVL/DWNt/6oWlamrrw=="], - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.4.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-GHzncHbcaS9g95kcvTNtKQW3aCLoR+xc3Jm7qrkpk1R+D2BjMHIPyvQGRPKCdMX95BsH/421jBUK06q9tEwzjw=="], + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.4.5", "", { "os": "linux", "cpu": "arm64", "libc": "glibc" }, "sha512-FdRcyOx5u5P51mlAqLB9EXdd8jZO5fsdHtk4BAQSkqOywCsbTNN/rmw+jO7pnmjNdAtu2AG46NzbCL2FPDrrgw=="], - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.4.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-1SuJyDxW/PR9dHJat/ZRgcYLhuSZ+1psP4DlKb2tKIuXbjygqpLrJWRSq+onZQBv8LcmU67EIrmb6c3XTaJLjw=="], + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.4.5", "", { "os": "linux", "cpu": "arm64", "libc": "musl" }, "sha512-cyvmmgtRXR8aGVT86wi9Py53IlfyCx7P2fZxuAXAoTummDnhKtUyjrMeXfapqp4qgD+gT5RqyGD/VfA16jEK7Q=="], - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.4.1", "", { "os": "linux", "cpu": "x64" }, "sha512-Istng1hMGp9TGO4lUqeKLd70MPN/OOkucVTP2Nmj+gLkwBgmPqUw8CJYBCC7nbl/B/23bBCcjCI5Hsh6hazC1A=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.4.5", "", { "os": "linux", "cpu": "x64", "libc": "glibc" }, "sha512-hPc+Fl+N22DAvqZHq559NmamXboOX5Lu8I5Wl0DezfrhTk1Zz21NQeYoZDmNI/NjTcrdsVxM72Fzn2lI+Q+vAw=="], - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.4.1", "", { "os": "linux", "cpu": "x64" }, "sha512-aSC9wMNiZRRFVpPkPWBzRwLQxIGm/CiQcXyFF1XNcgodb+uMxdk7aSSGGpDXCbnvZdf4itjHxpOd5h7i7zaiYw=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.4.5", "", { "os": "linux", "cpu": "x64", "libc": "musl" }, "sha512-gbACYE8IP/jlprNTpiWXHb8N9CofOzpnEwH2SrIz1dUbiJf1FbDssDupCAPeP1Taxe8mgG20sGZamJI7KFOdZw=="], - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.4.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-t/myvwFDlypMUjRvbBf8qLPyuaB0iXYYdBtwMt6DM6f+60wtGr4bSYholdPqNeV5VUXZhrpMwfza829kmhS3iA=="], + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.4.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-+8gj++ZMo8H20Xh2ijjNqyFk5LPLw0AC4Fs4Tq/G94rjjQXhOjN4jgSWsWKPFsyY26hfIeemJIwKtMxOsp5GBA=="], - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.4.1", "", { "os": "win32", "cpu": "x64" }, "sha512-6ICqPo9awCkrtYNPhwkx1uU7rlFWrZRrIboDHS2LU+jv088UBYQtmJ25h6pCp27/+FZjF6BQ4Te4ErugyMeuBg=="], + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.4.5", "", { "os": "win32", "cpu": "x64" }, "sha512-qNZj66pYXnaWLiF9R9GUbfBdrCv7kC6TaZfIwB2KH5WPc/8pEM3nVOj8hpQhWJU8S94rlH5MPDcX15+RrgUhiw=="], "@noble/ciphers": ["@noble/ciphers@2.2.0", "", {}, "sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA=="], @@ -2278,9 +2278,9 @@ "@types/braces": ["@types/braces@3.0.5", "", {}, "sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w=="], - "@types/bun": ["@types/bun@1.4.3", "", { "dependencies": { "bun-types": "1.4.3" } }, "sha512-N67Pqy8JXbAY/j0tNraS3V5mubGvc6rrrNDmDCtZLlFzccbUJPDb0tvgUBC5q4m8ybkP93Jcn1QB+RYQ6PvBhw=="], + "@types/bun": ["@types/bun@1.4.4", "", { "dependencies": { "bun-types": "1.4.4" } }, "sha512-9wkRDXUXK124pEnAutE6n/l18j+i9GC5IAHK8TmX/2nlySETmky0OU6yL5U8pW1AoKh++AN9auDCr647BfurjQ=="], - "@types/busboy": ["@types/busboy@1.5.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-kG7WrUuAKK0NoyxfQHsVE6j1m01s6kMma64E+OZenQABMQyTJop1DumUWcLwAQ2JzpefU7PDYoRDKl8uZosFjw=="], + "@types/busboy": ["@types/busboy@1.5.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-IwqrfVFxWa23c4WeE7uZswssCqGfvnl5Q7b1pdshbT3HaQDa3UIbJx5BAxtcj9nZYX9tVDArM9TUv9SpvORbpQ=="], "@types/cacheable-request": ["@types/cacheable-request@6.0.3", "", { "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", "@types/node": "*", "@types/responselike": "^1.0.0" } }, "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw=="], @@ -2288,7 +2288,7 @@ "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], - "@types/chrome": ["@types/chrome@0.3.6", "", { "dependencies": { "@types/har-format": "*" } }, "sha512-NXCrCBefCHCKMVbkaxfBQqyP766Wg85S2FQhixCCxq7AtjJwoEaja2y5NSqCzpihIi9mPqhaF5RuybTnrdYD2Q=="], + "@types/chrome": ["@types/chrome@0.3.7", "", { "dependencies": { "@types/har-format": "*" } }, "sha512-jWZgbHqWbTL1a5+PoyN0OJutNyejWgyZ5MdcvKo6iJE1TNRtXR3FxsC4WzNl52yZWPidfWC8NV/VUNZf+OFKcA=="], "@types/cors": ["@types/cors@2.8.19", "", { "dependencies": { "@types/node": "*" } }, "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg=="], @@ -2390,7 +2390,7 @@ "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], - "@types/mdx": ["@types/mdx@2.0.13", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="], + "@types/mdx": ["@types/mdx@2.0.14", "", {}, "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg=="], "@types/micromatch": ["@types/micromatch@4.0.10", "", { "dependencies": { "@types/braces": "*" } }, "sha512-5jOhFDElqr4DKTrTEbnW8DZ4Hz5LRUEmyrGpCMrD/NphYv3nUnaF08xmSLx1rGGnyEs/kFnhiw6dCgcDqMr5PQ=="], @@ -2530,9 +2530,9 @@ "@xterm/xterm": ["@xterm/xterm@6.0.0", "", {}, "sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg=="], - "@xyflow/react": ["@xyflow/react@12.12.0", "", { "dependencies": { "@xyflow/system": "0.0.83", "classcat": "^5.0.3", "zustand": "^4.4.0" }, "peerDependencies": { "@types/react": ">=17", "@types/react-dom": ">=17", "react": ">=17", "react-dom": ">=17" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-74oXI0Rgm1Eu33cHQAd74J6oVgCH9mbFyTVQbsGgp2kmWwh0HdtBr2VP04z8mbPD+M/xO69nqG5dDEt7/EN2rQ=="], + "@xyflow/react": ["@xyflow/react@12.12.1", "", { "dependencies": { "@xyflow/system": "0.0.84", "classcat": "^5.0.3", "zustand": "^4.4.0" }, "peerDependencies": { "@types/react": ">=17", "@types/react-dom": ">=17", "react": ">=17", "react-dom": ">=17" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-g41OHmP+GL5wDBQKpgYt8AF6RlB4CrABtiStXhCMqdItK6gPdSpsuDk8V0YtdyvIvMPTjDJvkuLkz0JbSYu5Cw=="], - "@xyflow/system": ["@xyflow/system@0.0.83", "", { "dependencies": { "@types/d3-drag": "^3.0.7", "@types/d3-interpolate": "^3.0.4", "@types/d3-selection": "^3.0.10", "@types/d3-transition": "^3.0.8", "@types/d3-zoom": "^3.0.8", "d3-drag": "^3.0.0", "d3-interpolate": "^3.0.1", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0" } }, "sha512-a//eDjez3WZF47aaPTfVUDD0OINOq+WVwBZCRTqG+m0a5euX8EwlJ4jMY1Wxz0Ocj4xOeekJ70V22Pq0ll8RJw=="], + "@xyflow/system": ["@xyflow/system@0.0.84", "", { "dependencies": { "@types/d3-drag": "^3.0.7", "@types/d3-interpolate": "^3.0.4", "@types/d3-selection": "^3.0.10", "@types/d3-transition": "^3.0.8", "@types/d3-zoom": "^3.0.8", "d3-drag": "^3.0.0", "d3-interpolate": "^3.0.1", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0" } }, "sha512-96zfGFjH3oZ3T0MRdH4gJ0SlXuCIxbBuHVevZ4xry5UTxqjzjt010+LRdholgepq7jhrcaz1JNtzrETscwnkEA=="], "@zone-eu/mailsplit": ["@zone-eu/mailsplit@5.4.16", "", { "dependencies": { "libbase64": "1.3.0", "libmime": "5.4.3", "libqp": "2.1.1" } }, "sha512-zQ9iXvlT3Wi/hazeC1MdI4rQc1UJwJ6IQ6QzSZ5KDxLZZWQSazWLOzImLFluXadKShJ9WJvI1xH+AyVS8b9azg=="], @@ -2680,7 +2680,7 @@ "builder-util-runtime": ["builder-util-runtime@9.7.0", "", { "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" } }, "sha512-g/kR520giAFYkSXTzcmF3kqQq7wi8F6N6SzeDgZrqTBN+VHdmgWOyTdD1yD7AATDId/yXLvuP34CxW46/BwCdw=="], - "bun-types": ["bun-types@1.4.3", "", { "dependencies": { "@types/node": "*", "undici-types": "*" } }, "sha512-tinRJNGOmUN+tEAsn2y2e942n9JHRHR42iUYzDH75NmhJqVBokGSQkkfSFdNWwsANIdrK6ACH9t01M452YyTwg=="], + "bun-types": ["bun-types@1.4.4", "", { "dependencies": { "@types/node": "*", "undici-types": "*" } }, "sha512-yjrJh5oGX7mMPKGd19YXyIjmEuj4G4zNC30bs7PM9Az7NQ3ndF3j6hbeRdvJTRQEhJ/FYQwW0a2moweEi2hMxQ=="], "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], @@ -2990,8 +2990,6 @@ "dmg-builder": ["dmg-builder@26.15.3", "", { "dependencies": { "app-builder-lib": "26.15.3", "builder-util": "26.15.3", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0" } }, "sha512-O3zJUFUYHJKgzPqioHxfxzBzlSC1eXCSr79gMSBKBP5AgjjpmrydMsMLotEg9fAJF36vdUncb+4ndRNxoPdlSQ=="], - "dockerfile-ast": ["dockerfile-ast@0.7.1", "", { "dependencies": { "vscode-languageserver-textdocument": "^1.0.8", "vscode-languageserver-types": "^3.17.3" } }, "sha512-oX/A4I0EhSkGqrFv0YuvPkBUSYp1XiY8O8zAKc8Djglx8ocz+JfOr8gP0ryRMC2myqvDLagmnZaU9ot1vG2ijw=="], - "docs": ["docs@workspace:apps/docs"], "docx": ["docx@9.7.1", "", { "dependencies": { "@types/node": "^25.2.3", "hash.js": "^1.1.7", "jszip": "^3.10.1", "nanoid": "^5.1.3", "xml": "^1.0.1", "xml-js": "^1.6.8" } }, "sha512-ilXFf9Moz47ABjFpDiA5s1w9lpb4EFSp7+5iiJSbfyYDM+bpZdAgLlSr7fW4aXhVe/E+F6QCv0EvRVFEd5CsWg=="], @@ -3016,7 +3014,7 @@ "dotenv-expand": ["dotenv-expand@11.0.7", "", { "dependencies": { "dotenv": "^16.4.5" } }, "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA=="], - "drizzle-kit": ["drizzle-kit@0.31.10", "", { "dependencies": { "@drizzle-team/brocli": "^0.10.2", "@esbuild-kit/esm-loader": "^2.5.5", "esbuild": "^0.25.4", "tsx": "^4.21.0" }, "bin": { "drizzle-kit": "bin.cjs" } }, "sha512-7OZcmQUrdGI+DUNNsKBn1aW8qSoKuTH7d0mYgSP8bAzdFzKoovxEFnoGQp2dVs82EOJeYycqRtciopszwUf8bw=="], + "drizzle-kit": ["drizzle-kit@0.31.11", "", { "dependencies": { "@drizzle-team/brocli": "^0.10.2", "@esbuild-kit/esm-loader": "^2.5.5", "esbuild": "^0.25.4", "tsx": "^4.21.0" }, "bin": { "drizzle-kit": "bin.cjs" } }, "sha512-YCYqxTLIB2OCqf6w9/Vef13baBVbwQIPcbT4Y56AfO6B9ajZhDhD8Jkveg/hJvT/iuMloKD/IYYkyMMNhr7Kqg=="], "drizzle-orm": ["drizzle-orm@0.45.4", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@netlify/db": ">=0.4.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "prisma": "*", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@netlify/db", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "prisma", "sql.js", "sqlite3"] }, "sha512-NiM1YZpJ2UxyeE67DpDDZ+Tsw4YLX3trSlkNT7Tm9eKoUNb1LvaAaQzXgYQsWs+AQ9TUmmwMmBOCXuqqxUWKKQ=="], @@ -3028,7 +3026,7 @@ "duplexify": ["duplexify@4.1.3", "", { "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", "readable-stream": "^3.1.1", "stream-shift": "^1.0.2" } }, "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA=="], - "e2b": ["e2b@2.50.0", "", { "dependencies": { "@bufbuild/protobuf": "^2.14.1", "@connectrpc/connect": "^2.2.0", "@connectrpc/connect-web": "^2.2.0", "chalk": "^5.3.0", "compare-versions": "^6.1.0", "dockerfile-ast": "^0.7.1", "glob": "^13.0.6", "openapi-fetch": "^0.14.1", "platform": "^1.3.6", "tar": "^7.5.22", "undici": "^7.29.1" }, "optionalDependencies": { "undici8": "npm:undici@8.10.2" } }, "sha512-XADlFhXGMvvWGPnyBiah6EFwNFBg1XIvdLInKhjMq/tuhlpN46Btj9BpuxwjvGenVJNZgimzn6Xj0XwttrMKjQ=="], + "e2b": ["e2b@2.62.1", "", { "dependencies": { "@bufbuild/protobuf": "^2.16.0", "@connectrpc/connect": "^2.2.0", "@connectrpc/connect-web": "^2.2.0", "@e2b/dockerfile-utils": "^0.1.1", "chalk": "^5.6.2", "compare-versions": "^6.1.1", "glob": "^14.0.2", "openapi-fetch": "^0.17.0", "platform": "^1.3.6", "tar": "^7.5.22", "undici": "^8.12.3" } }, "sha512-8TxPojt1659LmX9SX8zSet6fdefWxeSZoh+obad8DuC5wdRQdMbzN6ahEKNGzjrCNJFR26YeRZWOboXsy9UDYA=="], "ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="], @@ -3048,7 +3046,7 @@ "electron-publish": ["electron-publish@26.15.3", "", { "dependencies": { "@types/fs-extra": "^9.0.11", "aws4": "^1.13.2", "builder-util": "26.15.3", "builder-util-runtime": "9.7.0", "chalk": "^4.1.2", "form-data": "^4.0.5", "fs-extra": "^10.1.0", "lazy-val": "^1.0.5", "mime": "^2.5.2" } }, "sha512-g/2bn8YTavY4cuS5F+jOS7zmZbXXBV8KZ8yHKfJjFPoKtzBqrpCdNPxBd3tqdBwP7BVd0lGzf7Bk2s0KesWZ4Q=="], - "electron-updater": ["electron-updater@6.8.9", "", { "dependencies": { "builder-util-runtime": "9.7.0", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", "lodash.escaperegexp": "^4.1.2", "lodash.isequal": "^4.5.0", "semver": "~7.7.3", "tiny-typed-emitter": "^2.1.0" } }, "sha512-ZhVxM9iGONUpZGI1FxdMRgJjUFXi7AYGVa5PwKlO1tV1/4zDxQmfKpXOHVztKrd6L9rLcFjERvi1Mf2vxyTkig=="], + "electron-updater": ["electron-updater@6.8.12", "", { "dependencies": { "builder-util-runtime": "9.7.1", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", "lodash.escaperegexp": "^4.1.2", "lodash.isequal": "^4.5.0", "semver": "~7.7.3", "tiny-typed-emitter": "^2.1.0" } }, "sha512-AK17iWH8zXu5Qqw2f2P0v+Fx4tAF9dWWOYAe2jgURpNz6i2LQc9ZX3hBq4K7iP9qjNnaDzRHKn8455+MEwlrbw=="], "electron-winstaller": ["electron-winstaller@5.4.0", "", { "dependencies": { "@electron/asar": "^3.2.1", "debug": "^4.1.1", "fs-extra": "^7.0.1", "lodash": "^4.17.21", "temp": "^0.9.0" }, "optionalDependencies": { "@electron/windows-sign": "^1.1.2" } }, "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg=="], @@ -3312,7 +3310,7 @@ "hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="], - "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.6", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="], + "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.7", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-object": "^2.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-F7DNV2NMcTxA4GqPVHnXzX+mpoPHAIY9rJAVH3CZ1FdBZOcBUEjUuvMkMpHVs/sicEtznh9tMGj5WUR9S4E2rg=="], "hast-util-to-parse5": ["hast-util-to-parse5@8.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA=="], @@ -3394,7 +3392,7 @@ "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], - "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], + "inline-style-parser": ["inline-style-parser@0.2.9", "", {}, "sha512-IttN8BqKLxzUrnTqHI+/hwAJQItBAUjdoHERCDv+oOuX48VP6bzW8+QjOXSfoevzq3YrYAwX1uLHp8TqO9yIeg=="], "input-otp": ["input-otp@1.5.0", "", { "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-3AcfdW1sNG0FmSA5hHMBXG7jNW5CdcdKs8ln8JOmn6S2SRkoXoJx+2UwC+ZvjflfnOdHJx0SfQ9/YjlxVYLtGQ=="], @@ -3814,7 +3812,7 @@ "mssql": ["mssql@12.7.4", "", { "dependencies": { "@tediousjs/connection-string": "^1.0.0", "commander": "^11.0.0", "debug": "^4.3.3", "tarn": "^3.0.2", "tedious": "^19.2.2 || ^20.0.0" }, "bin": { "mssql": "bin/mssql" } }, "sha512-rhN4TefcWOle1JsTep32bHGhHpcQPL9B08Q3P5HcTBRmZ+Irt/zI4y7TI2CXc2t3lP702fYoCASLPJiWh77KBA=="], - "mysql2": ["mysql2@3.24.5", "", { "dependencies": { "aws-ssl-profiles": "^1.1.2", "generate-function": "^2.3.1", "iconv-lite": "^0.7.3", "long": "^5.3.2", "lru.min": "^1.1.4", "named-placeholders": "^1.1.6", "sql-escaper": "^1.5.1" }, "peerDependencies": { "@types/node": ">= 8" } }, "sha512-X6Ujsr2QSkkLpkQGjxzpKRAPn9nu4axpR63ntBzquFVEvPOArgbUQ1sJjFKI7hnaYtiVZxa17Z7q18KSubW0IQ=="], + "mysql2": ["mysql2@3.24.6", "", { "dependencies": { "aws-ssl-profiles": "^1.1.2", "generate-function": "^2.3.1", "iconv-lite": "^0.7.3", "long": "^5.3.2", "lru.min": "^1.1.4", "named-placeholders": "^1.1.6", "sql-escaper": "^1.5.1" }, "peerDependencies": { "@types/node": ">= 8" } }, "sha512-enu73KhbAua2L3dIxjc6qg6ZJ7H3pt1BImZASWNWY5xSsmJ1ZuUPULTDGXgmJbI61vb+nJAG19IZclIq19UidQ=="], "named-placeholders": ["named-placeholders@1.1.6", "", { "dependencies": { "lru.min": "^1.1.0" } }, "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w=="], @@ -3834,7 +3832,7 @@ "neo4j-driver-core": ["neo4j-driver-core@6.0.1", "", {}, "sha512-5I2KxICAvcHxnWdJyDqwu8PBAQvWVTlQH2ve3VQmtVdJScPqWhpXN1PiX5IIl+cRF3pFpz9GQF53B5n6s0QQUQ=="], - "next": ["next@16.4.1", "", { "dependencies": { "@next/env": "16.4.1", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.4.1", "@next/swc-darwin-x64": "16.4.1", "@next/swc-linux-arm64-gnu": "16.4.1", "@next/swc-linux-arm64-musl": "16.4.1", "@next/swc-linux-x64-gnu": "16.4.1", "@next/swc-linux-x64-musl": "16.4.1", "@next/swc-win32-arm64-msvc": "16.4.1", "@next/swc-win32-x64-msvc": "16.4.1", "sharp": "^0.35.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-uc657V62E34fOI6W5NtG9IzwsPcms0Z60grz2MJGtglgD+pTFnNt4Yw2PzaU622tfX4vhrDgLZzicE2YlhI20Q=="], + "next": ["next@16.4.5", "", { "dependencies": { "@next/env": "16.4.5", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.4.5", "@next/swc-darwin-x64": "16.4.5", "@next/swc-linux-arm64-gnu": "16.4.5", "@next/swc-linux-arm64-musl": "16.4.5", "@next/swc-linux-x64-gnu": "16.4.5", "@next/swc-linux-x64-musl": "16.4.5", "@next/swc-win32-arm64-msvc": "16.4.5", "@next/swc-win32-x64-msvc": "16.4.5", "sharp": "^0.35.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-rmdfsWosjTUO+6R0S3KokoIk6Kj0sWDRTe86tZHdqaWH/oXq/udX3/4xb+YQi7aWbyEFoglDU54kaifLCdXbBw=="], "next-mdx-remote": ["next-mdx-remote@6.0.0", "", { "dependencies": { "@babel/code-frame": "^7.23.5", "@mdx-js/mdx": "^3.0.1", "@mdx-js/react": "^3.0.1", "unist-util-remove": "^4.0.0", "unist-util-visit": "^5.1.0", "vfile": "^6.0.1", "vfile-matter": "^5.0.0" }, "peerDependencies": { "react": ">=16" } }, "sha512-cJEpEZlgD6xGjB4jL8BnI8FaYdN9BzZM4NwadPe1YQr7pqoWjg9EBCMv3nXBkuHqMRfv2y33SzUsuyNh9LFAQQ=="], @@ -3910,9 +3908,9 @@ "openai": ["openai@7.32.0", "", { "peerDependencies": { "@aws-sdk/credential-provider-node": ">=3.972.0 <4", "@smithy/hash-node": ">=4.3.0 <5", "@smithy/signature-v4": ">=5.4.0 <6", "undici": ">=5 <9", "ws": "^8.21.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["@aws-sdk/credential-provider-node", "@smithy/hash-node", "@smithy/signature-v4", "undici", "ws", "zod"] }, "sha512-avqxu/jl1gsVBCBgFNPr9sTh+wZppQphuhhFy1zEvAJxEaJ4t0ery6hZdOT9kws/EcNTARoQcZs2IT3bliE1SA=="], - "openapi-fetch": ["openapi-fetch@0.14.1", "", { "dependencies": { "openapi-typescript-helpers": "^0.0.15" } }, "sha512-l7RarRHxlEZYjMLd/PR0slfMVse2/vvIAGm75/F7J6MlQ8/b9uUQmUF2kCPrQhJqMXSxmYWObVgeYXbFYzZR+A=="], + "openapi-fetch": ["openapi-fetch@0.17.0", "", { "dependencies": { "openapi-typescript-helpers": "^0.1.0" } }, "sha512-PsbZR1wAPcG91eEthKhN+Zn92FMHxv+/faECIwjXdxfTODGSGegYv0sc1Olz+HYPvKOuoXfp+0pA2XVt2cI0Ig=="], - "openapi-typescript-helpers": ["openapi-typescript-helpers@0.0.15", "", {}, "sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw=="], + "openapi-typescript-helpers": ["openapi-typescript-helpers@0.1.0", "", {}, "sha512-OKTGPthhivLw/fHz6c3OPtg72vi86qaMlqbJuVJ23qOvQ+53uw1n7HdmkJFibloF7QEjDrDkzJiOJuockM/ljw=="], "opentype.js": ["opentype.js@1.3.4", "", { "dependencies": { "string.prototype.codepointat": "^0.2.1", "tiny-inflate": "^1.0.3" }, "bin": { "ot": "bin/ot" } }, "sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw=="], @@ -4018,7 +4016,7 @@ "postal-mime": ["postal-mime@2.7.6", "", {}, "sha512-UUlyE2KlxmvwMGq060onF/VWU3zD6dVW31FwokQ5v26jWd35fbs2MoTFzh+jXnPwAyV2MULMKXcBInGOl5TO6Q=="], - "postcss": ["postcss@8.5.30", "", { "dependencies": { "nanoid": "^3.3.20", "picocolors": "^1.1.1", "source-map-js": "^1.2.2" } }, "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA=="], + "postcss": ["postcss@8.5.32", "", { "dependencies": { "nanoid": "^3.3.20", "picocolors": "^1.1.1", "source-map-js": "^1.2.2" } }, "sha512-LJlKCCAUFKOuZxipUdYw1NzIITEsPcgyOG9LkvRJvuKj/bRzbuRY0ARXvL0pWGpsZvn8jku+LMep2eU0seHp8g=="], "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], @@ -4436,7 +4434,7 @@ "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], - "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], + "style-to-object": ["style-to-object@2.0.2", "", { "dependencies": { "inline-style-parser": "0.2.9" } }, "sha512-QmbXPUylqU80HAgTOJeEOdbA40W9KtxmjMhQy+tq+b8F2aoh3aQLuy82hh2jm2qsC9hR9eI0+eQidTMydKcqRA=="], "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], @@ -4496,9 +4494,9 @@ "tinyrainbow": ["tinyrainbow@3.2.0", "", {}, "sha512-LgO3D9yZJjApUiuUfl9iFAwrtaX4+lok3wJIqttGoKCHlWUqHqbQpnxCf82L8FjgKsh4iGo78hqJwgL8F6To2A=="], - "tldts": ["tldts@7.4.18", "", { "dependencies": { "tldts-core": "^7.4.18" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-somxA8xKAUzlAxl0TX/jMSYIbRNFIVGnI96pVGJPeMc5BsHmfVXn6mOJT6U++ELnl04eGfzpfcEuZe8WiASkXg=="], + "tldts": ["tldts@7.4.19", "", { "dependencies": { "tldts-core": "^7.4.19" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-48dH6aSpQnpbzDUc4vIQZ1VjB8tkK+e8c1yx05/SZK+rkssgjEOlxDd/yU8/a4vGYQ9vRgJr9dwMq9TJ0b3X2Q=="], - "tldts-core": ["tldts-core@7.4.18", "", {}, "sha512-KI2PKvCmvQI/xD6ypPqkU0i7oxNXR/O58RLRaHR4svsgVUQ2JE/XC8BtMbG6PSehD27I8sZJRcC1ASnCy6lp3g=="], + "tldts-core": ["tldts-core@7.4.20", "", {}, "sha512-C630TWXZCZmLq0F2bW4QqwnaaxCQ/svpAqvJwnC4JvgEM5ohhBnGsEzTLSOXcN+xjz+kEaHS5uoWIw2klnqd0A=="], "tmp": ["tmp@0.2.7", "", {}, "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw=="], @@ -4568,8 +4566,6 @@ "undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], - "undici8": ["undici@8.10.2", "", {}, "sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ=="], - "unicode-trie": ["unicode-trie@2.0.0", "", { "dependencies": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" } }, "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ=="], "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], @@ -4626,10 +4622,6 @@ "vitest": ["vitest@5.0.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/mocker": "5.0.4", "chai": "^6.3.0", "es-module-lexer": "^2.3.2", "expect-type": "^1.4.0", "magic-string": "^1.4.3", "obug": "^3.0.0", "picomatch": "^4.0.7", "std-env": "^4.3.0", "tinybench": "^6.2.2", "tinyexec": "^1.3.1", "tinyglobby": "^0.2.17", "why-is-node-running": "3.2.1" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "5.0.4", "@vitest/browser-preview": "5.0.4", "@vitest/browser-webdriverio": "^5.0.0-beta.5 || >=5.0.0", "@vitest/coverage-istanbul": "5.0.4", "@vitest/coverage-v8": "5.0.4", "@vitest/ui": "5.0.4", "happy-dom": "*", "jsdom": "*", "vite": "^6.4.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "./vitest.mjs" } }, "sha512-z0WxZRV2Sg48wF0FSgMq3TFG8JS38/Qr96vZVZdX6+Em9raQTvnXQvdTFJe2m3rfyJnEHeHQ/snceIdi8D1pVg=="], - "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], - - "vscode-languageserver-types": ["vscode-languageserver-types@3.18.0", "", {}, "sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g=="], - "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], "w3c-xmlserializer": ["w3c-xmlserializer@5.0.0", "", { "dependencies": { "xml-name-validator": "^5.0.0" } }, "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA=="], @@ -5000,10 +4992,6 @@ "@jridgewell/trace-mapping/@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], - "@mdx-js/mdx/@types/mdx": ["@types/mdx@2.0.14", "", {}, "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg=="], - - "@mdx-js/react/@types/mdx": ["@types/mdx@2.0.14", "", {}, "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg=="], - "@octokit/plugin-paginate-rest/@octokit/types": ["@octokit/types@16.0.0", "", { "dependencies": { "@octokit/openapi-types": "^27.0.0" } }, "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg=="], "@octokit/plugin-rest-endpoint-methods/@octokit/types": ["@octokit/types@16.0.0", "", { "dependencies": { "@octokit/openapi-types": "^27.0.0" } }, "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg=="], @@ -5130,6 +5118,8 @@ "@types/archiver/@types/node": ["@types/node@25.9.3", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg=="], + "@types/busboy/@types/node": ["@types/node@25.9.3", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg=="], + "@types/cacheable-request/@types/node": ["@types/node@25.9.3", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg=="], "@types/cors/@types/node": ["@types/node@25.9.3", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg=="], @@ -5260,6 +5250,16 @@ "duplexify/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + "e2b/@bufbuild/protobuf": ["@bufbuild/protobuf@2.16.0", "", {}, "sha512-FWa0sPlqYGJgpTs6OxBRcL/AW4JT0OIO+W1ajerluoTVh8CV0B7XM1qsNCRgnkSCkRCgOICKHRQlY17jrsm0+Q=="], + + "e2b/@connectrpc/connect": ["@connectrpc/connect@2.2.0", "", { "peerDependencies": { "@bufbuild/protobuf": "^2.7.0" } }, "sha512-M63OQ1ZFcPUm85CuewJ9G9CMV8LjzGR9935xOnXNQGSazAbwMb3x2W7vXBYM1zqrP7XFD8uxp/dUAhirclgwnQ=="], + + "e2b/@connectrpc/connect-web": ["@connectrpc/connect-web@2.2.0", "", { "peerDependencies": { "@bufbuild/protobuf": "^2.7.0", "@connectrpc/connect": "2.2.0" } }, "sha512-uuBUcBTYfb/r1o98LzCCZk1H90yx0vmZ5m21dpw/q4EUwsKwkCDGI8H0aEdjcZld+Q2jJ5A5ADvPqfb6lzQ/sg=="], + + "e2b/glob": ["glob@14.0.3", "", { "dependencies": { "minimatch": "^11.0.2", "minipass": "^7.1.3", "path-scurry": "^3.0.0" } }, "sha512-A1vjIwC3qpdCso45Iw127gnp7sPhqgY8lUQhDrArIs+GbmfaaVPFuoyy7WyLT9EPZCRZ7j7aLdwUhQmHWesEow=="], + + "e2b/undici": ["undici@8.12.3", "", {}, "sha512-+fdndUTwBP86cVjihTp21hZHo7d6oj1c/47XPA3lL8mM0XHs+C4EkcjmgRsFnFk2f/UONGDy9ItBItmXsLOQHw=="], + "echarts/tslib": ["tslib@2.3.0", "", {}, "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="], "electron-builder/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], @@ -5274,6 +5274,8 @@ "electron-publish/mime": ["mime@2.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="], + "electron-updater/builder-util-runtime": ["builder-util-runtime@9.7.1", "", { "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" } }, "sha512-LLAn0Ddqz0YIyysCysBkg18qEdAzMASiADSZl5G8gpxsqu1RJrdFAqoAW9suwg0GHKMqrycISFSD/9RqSm5d6g=="], + "electron-updater/fs-extra": ["fs-extra@10.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="], "electron-updater/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], @@ -5352,7 +5354,7 @@ "node-fetch/whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], - "node-gyp/undici": ["undici@6.28.1", "", {}, "sha512-zWpdTVD54H48CIybL0rWQ3ukpb9d23wM7eH5RtfdmeP70cWHNjtfo7P4vZX+5CoDcO53J4Pu5uXp7lNfjc6DRA=="], + "node-gyp/undici": ["undici@6.29.1", "", {}, "sha512-EvRlUt/QqAEvXdQeRMYUfwOQsfzpDztykrG2owGEE/rBOBoYv9uF39ZzsNDh4lTFHhTr2XOZjKkYgueD12ZmGA=="], "nypm/tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], @@ -5424,6 +5426,8 @@ "strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + "style-to-js/style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], + "tedious/@types/node": ["@types/node@25.9.3", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg=="], "tedious/iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="], @@ -5744,6 +5748,10 @@ "duplexer2/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], + "e2b/glob/minimatch": ["minimatch@11.0.4", "", { "dependencies": { "@isaacs/nonrecursive-glob-match": "^1.0.3", "brace-expansion": "^5.0.12" } }, "sha512-/UJ1dEoVQTjPNDh6SGlUo+ueLMmoHTas4q+8yaAR/5t6nLAIiBDJtoYUh20IYleix7ehiQkgczb84PE3uzHkxg=="], + + "e2b/glob/path-scurry": ["path-scurry@3.0.0", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-1pTbQqH1wIwMi/eleQ5leFTTCkzFsPcgXNjwOA8YGGW/W4/kHT3dssE7Z6NH+zuqNLOzOB0uaD61yl7cAcVhgg=="], + "electron-builder/chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], "electron-builder/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], @@ -5802,6 +5810,8 @@ "rimraf/glob/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], + "style-to-js/style-to-object/inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], + "teeny-request/http-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], "teeny-request/https-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], diff --git a/bunfig.toml b/bunfig.toml index 3a21b48225b..10b11a944a0 100644 --- a/bunfig.toml +++ b/bunfig.toml @@ -4,17 +4,21 @@ exact = true # (blocks freshly published, potentially compromised releases). minimumReleaseAge = 604800 # Explicit framework pins must install before their release reaches the age threshold: a -# security release of Next.js is pinned exactly the day it ships. Trigger.dev 4.8.3 (published -# 2026-10-30, the first release with workload identity) is exempted until it clears the threshold -# on 2026-11-06; drop the four Trigger.dev entries then. They are bare names because Bun 1.4 ignores -# version-pinned exclusions; `exact = true` and the lockfile still hold the packages at 4.8.3. +# security release of Next.js is pinned exactly the day it ships, along with its platform compiler +# binaries (optional dependencies, which Bun drops silently rather than failing when gated). They are +# bare names because Bun 1.4 ignores version-pinned exclusions; `exact = true` and the lockfile still +# hold the pinned versions. minimumReleaseAgeExcludes = [ "next", "@next/env", - "@trigger.dev/sdk", - "@trigger.dev/core", - "@trigger.dev/build", - "trigger.dev", + "@next/swc-darwin-arm64", + "@next/swc-darwin-x64", + "@next/swc-linux-arm64-gnu", + "@next/swc-linux-arm64-musl", + "@next/swc-linux-x64-gnu", + "@next/swc-linux-x64-musl", + "@next/swc-win32-arm64-msvc", + "@next/swc-win32-x64-msvc", ] [run] diff --git a/package.json b/package.json index da86ca96166..1a04118d669 100644 --- a/package.json +++ b/package.json @@ -139,13 +139,13 @@ "overrides": { "react": "19.2.4", "react-dom": "19.2.4", - "next": "16.4.1", - "@next/env": "16.4.1", + "next": "16.4.5", + "@next/env": "16.4.5", "postgres": "3.4.9", "marked": "18.0.11", "mermaid": "11.16.1", "zod": "4.3.6", - "e2b": "2.50.0", + "e2b": "2.62.1", "@ai-sdk/provider-utils": "3.0.28", "@azure/identity": "4.14.1", "@grpc/grpc-js": "1.14.6", @@ -162,7 +162,7 @@ "hono": "4.13.13", "image-size": "2.0.4", "ip-address": "10.7.4", - "postcss": "8.5.30", + "postcss": "8.5.32", "prosemirror-model": "1.25.12", "prosemirror-state": "1.4.4", "prosemirror-transform": "1.12.0", @@ -177,10 +177,10 @@ "ws": "8.21.3" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "16.4.1", - "@next/swc-darwin-x64": "16.4.1", - "@next/swc-linux-arm64-gnu": "16.4.1", - "@next/swc-linux-x64-gnu": "16.4.1" + "@next/swc-darwin-arm64": "16.4.5", + "@next/swc-darwin-x64": "16.4.5", + "@next/swc-linux-arm64-gnu": "16.4.5", + "@next/swc-linux-x64-gnu": "16.4.5" }, "devDependencies": { "@babel/parser": "7.29.9", @@ -224,11 +224,11 @@ ], "patchedDependencies": { "@better-auth/oauth-provider@1.6.27": "patches/@better-auth%2Foauth-provider@1.6.27.patch", - "drizzle-kit@0.31.10": "patches/drizzle-kit@0.31.10.patch", + "drizzle-kit@0.31.11": "patches/drizzle-kit@0.31.11.patch", "postgres@3.4.9": "patches/postgres@3.4.9.patch", "oracledb@7.0.1": "patches/oracledb@7.0.1.patch", "echarts@6.1.0": "patches/echarts@6.1.0.patch", - "next@16.4.1": "patches/next@16.4.1.patch", + "next@16.4.5": "patches/next@16.4.5.patch", "zod@4.3.6": "patches/zod@4.3.6.patch" } } diff --git a/packages/db/package.json b/packages/db/package.json index 6e10e6893f0..6c5ad41d2ca 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -71,9 +71,9 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@types/bun": "1.4.3", + "@types/bun": "1.4.4", "@types/node": "24.19.2", - "drizzle-kit": "0.31.10", + "drizzle-kit": "0.31.11", "typescript": "^7.0.2", "vitest": "^5.0.4" } diff --git a/packages/emcn/package.json b/packages/emcn/package.json index 31d3c8db466..cc539e50202 100644 --- a/packages/emcn/package.json +++ b/packages/emcn/package.json @@ -88,7 +88,7 @@ "@types/react-dom": "^19", "class-variance-authority": "0.7.1", "framer-motion": "^12.5.0", - "next": "16.4.1", + "next": "16.4.5", "prismjs": "^1.30.0", "react": "19.2.4", "react-dom": "19.2.4", diff --git a/packages/runtime-secrets/src/trigger-env.test.ts b/packages/runtime-secrets/src/trigger-env.test.ts index 14432c12dfa..de54bd0fed0 100644 --- a/packages/runtime-secrets/src/trigger-env.test.ts +++ b/packages/runtime-secrets/src/trigger-env.test.ts @@ -1,5 +1,22 @@ import { describe, expect, it } from 'vitest' -import { parseTriggerEnvSyncTargets } from './trigger-env' +import { buildTriggerEnvVars, parseTriggerEnvSyncTargets } from './trigger-env' + +describe('buildTriggerEnvVars', () => { + it('leaves the worker-specific network endpoints to the Trigger.dev environment', () => { + const synced = buildTriggerEnvVars({ + REDIS_URL: 'rediss://vpc-redis:6379', + INTERNAL_API_BASE_URL: 'http://app.internal', + OUTBOUND_GATEWAYS: '{"gw":{"url":"https://vpc-lb:8443"}}', + OUTBOUND_GATEWAY_CREDENTIALS: '{"gw":{"token":"t"}}', + OUTBOUND_ROUTING_SOURCE: 'appconfig', + }).map((v) => v.name) + expect(synced).not.toContain('REDIS_URL') + expect(synced).not.toContain('INTERNAL_API_BASE_URL') + expect(synced).not.toContain('OUTBOUND_GATEWAYS') + expect(synced).toContain('OUTBOUND_GATEWAY_CREDENTIALS') + expect(synced).toContain('OUTBOUND_ROUTING_SOURCE') + }) +}) describe('parseTriggerEnvSyncTargets', () => { it('reads an exact comma list', () => { diff --git a/packages/runtime-secrets/src/trigger-env.ts b/packages/runtime-secrets/src/trigger-env.ts index c85d274b201..7188ca0f583 100644 --- a/packages/runtime-secrets/src/trigger-env.ts +++ b/packages/runtime-secrets/src/trigger-env.ts @@ -26,6 +26,9 @@ const TRIGGER_OWNED_KEYS: ReadonlySet = new Set([ 'REDIS_TLS_SERVERNAME', // A VPC-internal base URL is unreachable from Trigger.dev's cloud. 'INTERNAL_API_BASE_URL', + // The app dials an egress gateway through the VPC load balancer; workers dial it through their + // own endpoint, so each gateway's `url` differs. The credentials and routing source are shared. + 'OUTBOUND_GATEWAYS', // Schema-migration credential: runs never migrate, so they never hold it. 'MIGRATION_DATABASE_URL', // `syncEnvVars` refuses to sync it, so it can only ever be set by hand. diff --git a/packages/sim-setup/package.json b/packages/sim-setup/package.json index 61a4580e02c..6bc23d21751 100644 --- a/packages/sim-setup/package.json +++ b/packages/sim-setup/package.json @@ -49,7 +49,7 @@ }, "devDependencies": { "@clack/prompts": "1.7.0", - "@next/env": "16.4.1", + "@next/env": "16.4.5", "@sim/deployment-config": "workspace:*", "@sim/security": "workspace:*", "@sim/tsconfig": "workspace:*", diff --git a/packages/testing/package.json b/packages/testing/package.json index 1861cfe5aad..5390edb9150 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -72,7 +72,7 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "next": "16.4.1", + "next": "16.4.5", "stripe": "18.5.0", "typescript": "^7.0.2", "vitest": "^5.0.4" diff --git a/packages/workflow-persistence/package.json b/packages/workflow-persistence/package.json index ba4f12b927c..cf1273a5b51 100644 --- a/packages/workflow-persistence/package.json +++ b/packages/workflow-persistence/package.json @@ -50,7 +50,7 @@ "devDependencies": { "@sim/tsconfig": "workspace:*", "@types/node": "24.19.2", - "@xyflow/react": "12.12.0", + "@xyflow/react": "12.12.1", "typescript": "^7.0.2", "vitest": "^5.0.4" } diff --git a/packages/workflow-renderer/package.json b/packages/workflow-renderer/package.json index ec001f19113..b1b41174d8d 100644 --- a/packages/workflow-renderer/package.json +++ b/packages/workflow-renderer/package.json @@ -69,7 +69,7 @@ "@types/hast": "3.0.5", "@types/react": "^19", "@types/react-dom": "^19", - "@xyflow/react": "12.12.0", + "@xyflow/react": "12.12.1", "jsdom": "^26.0.0", "react": "19.2.4", "react-dom": "19.2.4", diff --git a/packages/workflow-types/package.json b/packages/workflow-types/package.json index 91101fcbfeb..9d3b048c134 100644 --- a/packages/workflow-types/package.json +++ b/packages/workflow-types/package.json @@ -31,7 +31,7 @@ }, "devDependencies": { "@sim/tsconfig": "workspace:*", - "@xyflow/react": "12.12.0", + "@xyflow/react": "12.12.1", "typescript": "^7.0.2" } } diff --git a/patches/README.md b/patches/README.md index b97ad405fda..9128660ece7 100644 --- a/patches/README.md +++ b/patches/README.md @@ -48,7 +48,7 @@ closure handling. Keep the reconnect regression tests when upgrading. # Drizzle development push policy -`drizzle-kit@0.31.10` prompts when it sees both additions and removals, even with +`drizzle-kit@0.31.11` prompts when it sees both additions and removals, even with `--force`. Its PostgreSQL push path also catches errors and exits successfully, which lets post-push work run against a schema that was not applied. @@ -57,8 +57,11 @@ resolvers and makes PostgreSQL push failures and cancellations return nonzero. `packages/db/scripts/push.ts` enables the policy only in its Drizzle subprocess using `SIM_DB_PUSH_RENAME_MODE=create`. `--interactive-renames` selects the native chooser and requires a terminal. Normal migration generation keeps its rename -prompts. Data-loss confirmations, table filters, introspection, and generated SQL -remain owned by Drizzle; `--force` still controls data-loss approval. +prompts. Data-loss confirmations, table filters, and generated SQL remain owned +by Drizzle; `--force` still controls data-loss approval. Introspection changes in +one place: PostgreSQL unique constraints read their columns from +`key_column_usage` in ordinal order, so a composite unique constraint is compared +by its own columns in declared order. The same policy answers Drizzle's prompt to truncate a populated table before adding a unique constraint with its non-destructive choice: the constraint is @@ -102,7 +105,7 @@ upstream release provides equivalent font handling and these tests pass. # Next.js application Vary preservation -`next@16.4.1` replaces application `Vary` values when the Node App Page handler +`next@16.4.5` replaces application `Vary` values when the Node App Page handler sets its router cache dimensions. The docs proxy's `Vary: Accept` therefore vanishes from the final HTML response, allowing downstream caches to confuse HTML with negotiated Markdown. diff --git a/patches/drizzle-kit@0.31.10.patch b/patches/drizzle-kit@0.31.11.patch similarity index 99% rename from patches/drizzle-kit@0.31.10.patch rename to patches/drizzle-kit@0.31.11.patch index 841c851274b..601652b0d89 100644 --- a/patches/drizzle-kit@0.31.10.patch +++ b/patches/drizzle-kit@0.31.11.patch @@ -63,7 +63,7 @@ diff --git a/bin.cjs b/bin.cjs - console.error(e4); + throw e4; } -@@ -92281,2 +92282,3 @@ +@@ -92291,2 +92292,3 @@ console.error(e4); + process.exit(1); } diff --git a/patches/next@16.4.1.patch b/patches/next@16.4.5.patch similarity index 100% rename from patches/next@16.4.1.patch rename to patches/next@16.4.5.patch diff --git a/turbo.json b/turbo.json index 1838c7cecd0..8cda5cad432 100644 --- a/turbo.json +++ b/turbo.json @@ -18,6 +18,10 @@ // invalidate the cache. "cacheMaxAge": "7d", "cacheMaxSize": "40GB", + // Bun applies `patches/*` to installed dependencies, but `bun.lock` records only each patch's + // path, so editing a patch leaves every task hash unchanged and replays a build of the + // unpatched dependency. Hash the patch contents into every task. + "globalDependencies": ["patches/**"], "tasks": { "ci:runtime": { "dependsOn": ["^ci:runtime"],