René's URL Explorer Experiment


Title: feat!: migrate @deepnote/* packages to the zod 4 API by tkislan · Pull Request #597 · deepnote/deepnote · GitHub

Open Graph Title: feat!: migrate @deepnote/* packages to the zod 4 API by tkislan · Pull Request #597 · deepnote/deepnote

X Title: feat!: migrate @deepnote/* packages to the zod 4 API by tkislan · Pull Request #597 · deepnote/deepnote

Description: Summary All eight zod-using packages (blocks, cli, cloud, cloud-sync, database-integrations, mcp, reactivity, runtime-core) move from "zod": "3.25.76" to "zod": "^4.6.7" and import the v4 API from 'zod'. zod 3.25.76 is covered by GHSA-mrhx-c7xc-m3w5, and no 3.x fix is coming. This PR has no version bumps or releases; those go in a separate release PR. Parse results kept as on zod 3.25.76 zod 4 change Fix Object-level .default({}) skips inner field defaults .prefault({}) on the 26 block metadata objects z.preprocess(() => '', z.literal('').optional()) leaves absent content absent emptyContent() uses z.literal('') z.string().datetime() requires seconds isoDatetime() adds a minute-precision z.iso.datetime alternative (block and file execution timestamps) Bare z.unknown() object key rejects an absent key apiIntegrationSchema.metadata is .optional() z.string().uuid() enforces RFC 9562 nibbles Streamlit app id/projectId use z.guid() Single-argument z.record(v) removed z.record(z.string(), v) (10 sites) Generated artifacts packages/cli/scripts/generate-*.ts now use z.toJSONSchema(…, { target: 'draft-07', io: 'input' }). zod-to-json-schema silently returns empty schemas for zod 4 input, and it is removed from the cli devDependencies. skills/deepnote/references/schema.ts: DeepnoteBlock is unchanged except that the six emptyContent() blocks declare content: ''. DeepnoteFile no longer inlines the block union: stripBlocksFromFile never ran before, because the name option wrapped the output in definitions. Environment, Execution and the other trailing types lose their { [k: string]: any } | arm. json-schemas/integrations-file-schema.json: now includes cloud-sql. Every object keeps additionalProperties: false, and discriminated unions emit oneOf; each union's branches are mutually exclusive. Release notes material Exported schemas are zod 4 schemas. Consumers need zod ^4 to compose them or call .extend. Type changes: content: '' is now required in the inferred types of image, separator, notebook-function, visualization, pivot-table and button blocks. At runtime, parsing already produced ''. Block metadata schemas are ZodPrefault: they have no .removeDefault(); use .unwrap() to get the inner object schema. pandas-dataframe integration metadata infers Record instead of {}. Accepted zod 4 behavior: z.number() rejects Infinity. .int() rejects unsafe integers. .url() returns the trimmed string. Issue codes and default messages follow zod 4: invalid_union_discriminator becomes invalid_union in deepnote lint, deepnote validate -o json and the MCP validate output. An invalid execution timestamp now reports code invalid_union and message Invalid input instead of invalid_string / Invalid datetime. invalid_type messages gain zod 4's Invalid input: prefix (Expected boolean, received string becomes Invalid input: expected boolean, received string), also inside the deepnote lint error for files that fail to parse. Block metadata parsed from in-memory objects keeps undeclared keys whose value is undefined. Parsing files and the serialized YAML are unchanged. For reviewers deepnote cat: the separator branch in getBlockContent never ran, because separator content always parses to ''. zod 4 types that content as exactly '', which turns the branch into a TS2367 error, so it is removed. The output is unchanged. #599 tracks showing --- as originally intended. Schema reference vs. examples: schema.ts now shows content: '' as required on the six blocks above, while skills/deepnote/references/blocks-display.md examples omit it. Both forms parse, and blocks-display.md now says so. SDK zod copy: ai, @ai-sdk/* and @modelcontextprotocol/sdk now resolve their zod peer to 4.6.7, where before they used the zod/v4 copy bundled in 3.25.76. 🤖 Generated with Claude Code https://claude.ai/code/session_013Y9ynDQmHsCRQVVRD8AgyJ Summary by CodeRabbit New Features Added support for Cloud SQL integrations with service account metadata. Streamlit app and project IDs now accept valid GUIDs that are not RFC 9562 UUIDs. Bug Fixes Deepnote files now accept minute-precision timestamps and normalize certain blocks’ missing or non-empty content to an empty string. Integration responses can omit metadata without failing validation. The CLI no longer displays a synthetic --- value for separator blocks. Documentation Updated schema references to reflect supported block content and structured environment and execution fields.

Open Graph Description: Summary All eight zod-using packages (blocks, cli, cloud, cloud-sync, database-integrations, mcp, reactivity, runtime-core) move from "zod": "3.25.76" to "zod": "...

X Description: Summary All eight zod-using packages (blocks, cli, cloud, cloud-sync, database-integrations, mcp, reactivity, runtime-core) move from "zod": "3.25.76" to &qu...

Opengraph URL: https://github.com/deepnote/deepnote/pull/597

X: @github

direct link

Domain: github.com

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/:user_id/:repository/pull/:id/files/:range(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:af374815-c8b8-1a4d-eec3-b0de1e0c0fcb
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idBCCA:2027A9:A553DB:DA6F3A:6AEDCF92
html-safe-nonce6e8e632b4082799450972a6acd7ac857bbe5bef06ed58459c53233b42b17b5e2
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQ0NBOjIwMjdBOTpBNTUzREI6REE2RjNBOjZBRURDRjkyIiwidmlzaXRvcl9pZCI6IjE2NTA0NzM1MTc1MTkzMjcxMjIiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmaccb6d910e728c57644978f0af7ca8fa63d602e4866729075decabf64fb8e410c5
hovercard-subject-tagpull_request:5046344614
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6
twitter:imagehttps://avatars.githubusercontent.com/u/5370798?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/5370798?s=400&v=4
og:image:altSummary All eight zod-using packages (blocks, cli, cloud, cloud-sync, database-integrations, mcp, reactivity, runtime-core) move from "zod": "3.25.76" to "zod": "...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Nonef60373873bb1ef795e8511ea1f2a76997e9c649d72b02942aedf2def3423a0ce
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/deepnote/deepnote git https://github.com/deepnote/deepnote.git
octolytics-dimension-user_id45339858
octolytics-dimension-user_logindeepnote
octolytics-dimension-repository_id1066509034
octolytics-dimension-repository_nwodeepnote/deepnote
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1066509034
octolytics-dimension-repository_network_root_nwodeepnote/deepnote
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release0f55cfa61438c7dc93d1024a1e5e5182b36830e2
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdeepnote%2Fdeepnote%2Fpull%2F597%2Ffiles%2F5494ffc06b0fd870036fe543c5647cf3c62491a6
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdeepnote%2Fdeepnote%2Fpull%2F597%2Ffiles%2F5494ffc06b0fd870036fe543c5647cf3c62491a6
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=deepnote%2Fdeepnote
Reloadhttps://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6
Reloadhttps://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6
Reloadhttps://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6
deepnotehttps://github.com/deepnote
deepnotehttps://github.com/deepnote/deepnote
Codehttps://github.com/deepnote/deepnote
Issues14 (14)https://github.com/deepnote/deepnote/issues
Pull requests24 (24)https://github.com/deepnote/deepnote/pulls
Discussionshttps://github.com/deepnote/deepnote/discussions
Actionshttps://github.com/deepnote/deepnote/actions
Security and qualityhttps://github.com/deepnote/deepnote/security
Insightshttps://github.com/deepnote/deepnote/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fdeepnote%2Fdeepnote%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fdeepnote%2Fdeepnote%2Fissues%2Fnew%2Fchoose
tkislanhttps://github.com/tkislan
mainhttps://github.com/deepnote/deepnote/tree/main
zod-4-api-migrationhttps://github.com/deepnote/deepnote/tree/zod-4-api-migration
Conversation 8 https://github.com/deepnote/deepnote/pull/597
Commits 5 https://github.com/deepnote/deepnote/pull/597/commits
Checks 21 https://github.com/deepnote/deepnote/pull/597/checks
Files changed https://github.com/deepnote/deepnote/pull/597/files
Please reload this pagehttps://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6
feat!: migrate @deepnote/* packages to the zod 4 API https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#top
Show all changes 5 commits https://github.com/deepnote/deepnote/pull/597/files
c8f8b07 feat!: migrate @deepnote/* packages to the zod 4 API tkislan Oct 27, 2026 https://github.com/deepnote/deepnote/pull/597/commits/c8f8b07ddfd85007d8408af08d8cb434da0c9f36
95639b1 fix(cli): type DeepnoteFile blocks as DeepnoteBlock[] in the skill re… tkislan Oct 28, 2026 https://github.com/deepnote/deepnote/pull/597/commits/95639b1dfc25528312a759f6bb81de3e24229306
8ca7ec0 Merge remote-tracking branch 'origin/main' into zod-4-api-migration tkislan Oct 28, 2026 https://github.com/deepnote/deepnote/pull/597/commits/8ca7ec010d9e09f383860a1992859553a979e229
04954cb test(blocks): slim down the zod 4 workaround regression tests tkislan Oct 28, 2026 https://github.com/deepnote/deepnote/pull/597/commits/04954cb259088d26342115dcab2df2d345151e2d
5494ffc docs(skills): note that YAML may omit content on empty-content blocks tkislan Oct 29, 2026 https://github.com/deepnote/deepnote/pull/597/commits/5494ffc06b0fd870036fe543c5647cf3c62491a6
Clear filters https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6
Please reload this pagehttps://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6
Please reload this pagehttps://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6
cspell.json https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-77519f787fe7e051a14c588f101d61e4d8f0d3b01bf8e16cb65d3838243d4e68
integrations-file-schema.json https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-98e0fb37beb42507d0fe1278cbfefb5b55762b04e6448676e8828d2ae3960fa2
package.json https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-c2bb4b0e39839a40c8cbea9d0168a7b644e742760ec8a73fe4cdef6ce144cc0f
deepnote-file-schema.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-9450f05a7aeab779aa50f1fddb6593422bec0c3f68454c42a1e0aaabf5a1ae5b
deserialize-deepnote-file.test.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-193a9417b56b5c52fd726904c9562f6d9a44195d73a0c05f65cabfd55255253b
package.json https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-6e2e2a1851648938b325ba84de634407a4e69a644ea61102df15ca4a8a7a9758
generate-json-schemas.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-6ead05d22992cf367025ca229a1a3f9137f0644e61dd54fe9823b9533cfd2332
generate-skill-schema.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-60622839834d905d16244cf1879c502a254c5fbe0dcd777af8fb9410a1f029c8
cat.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-dfd7b81641c0dd79252a270de77d66ad94b581ecc063cacbe771fdd481a4cee3
lint.test.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-05b5e60cdaae8ace59cc862db6fc6f8afc7dc6fa88e337d152eefa83bdf88f9d
package.json https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-a4cf3b1e7da22d35406724f011f8fb457c6b7f211580b887f535111caa3af9ce
package.json https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-c217fef7b20d050e01b0b6e487c8ffb6f771d6202839f76ec1608efa575feb3d
cloud-runs.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-f2cc1be0004e4425f33803f812f870c6fe1108cc62abbe92b0356c05d2c2c34a
streamlit-apps.test.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-641a521e3c2e5ecdcfb70970bc90b63822db7a0d443a3893d20c82bb14ff7657
streamlit-apps.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-85182e78a418199e04470f86931ce1138e7877f9b0fdde7f6ddeed6e961c3925
hash.test.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-1510d25da8b60a9ff928df6c7231abfa35af0b0e31fb0ca9c3af9173c4c2942f
package.json https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-5cc58a175c84e833d8afa3d3633450696e6d0716021b1ee0274abfb903564975
database-integration-env-vars.test.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-05310d14736c45cc502ca2de803351a6e88d58e9afa955d36031ce73d582c5be
fetch-integrations.test.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-b0eb310186af1079d4569b2e0ef626009d971f47976fb04c22d6ba3044a0391b
fetch-integrations.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-a2b6e8449167f9ceeefe56ee0c0cfd403fad1e7767e3fffa7e4e3e99165b966b
integrations-file-schema.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-96b8e7b4260f75093a3686f2e70e411cfd18734377310894b2401d9ca9d660b4
package.json https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-adc96623016293ce329af7c2c6419b527d44d978a2ba059b926a85678439a3db
package.json https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-6a5c65f0dc818871e762969a50b898d482775921ee9f36ef40dedc7b265113a3
types.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-d7862ed5bcc0408aba3084f9bc959c4833e0996a2c021674a53958e3b449c4c4
package.json https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-ccaf5472984ac18fc2fd4a75f0a60eae4322aea2c2de02514b939182cfe743a7
pnpm-lock.yaml https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb
blocks-display.md https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-ed7a987c39e098b1d3d706ca7a168eb3db1fd76ca8e00ef21816b3158ea7d2e7
schema.ts https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-14ff8b68d2af5e4689cb77e6242a1600a55e70f33ff0e848478073f497fa462b
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
cspell.jsonhttps://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-77519f787fe7e051a14c588f101d61e4d8f0d3b01bf8e16cb65d3838243d4e68
View file https://github.com/deepnote/deepnote/blob/5494ffc06b0fd870036fe543c5647cf3c62491a6/cspell.json
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/597/files/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-77519f787fe7e051a14c588f101d61e4d8f0d3b01bf8e16cb65d3838243d4e68
https://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6#diff-77519f787fe7e051a14c588f101d61e4d8f0d3b01bf8e16cb65d3838243d4e68
Please reload this pagehttps://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6
Please reload this pagehttps://github.com/deepnote/deepnote/pull/597/files/5494ffc06b0fd870036fe543c5647cf3c62491a6
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.