René's URL Explorer Experiment


Title: feat(cli): deepnote sync — ZIP-per-notebook export + inverse-ZIP push (GRN-5421) by jamesbhobbs · Pull Request #451 · deepnote/deepnote · GitHub

Open Graph Title: feat(cli): deepnote sync — ZIP-per-notebook export + inverse-ZIP push (GRN-5421) by jamesbhobbs · Pull Request #451 · deepnote/deepnote

X Title: feat(cli): deepnote sync — ZIP-per-notebook export + inverse-ZIP push (GRN-5421) by jamesbhobbs · Pull Request #451 · deepnote/deepnote

Description: Reworks the deepnote sync CLI (#429, Wojtek's branch) for the export endpoint that shipped, and implements the push direction as the exact inverse of export. Stacked on #429, which is left untouched. This branch is Wojtek's two sync commits rebased onto main (his PR was CONFLICTING) plus two commits on top: the ZIP pull rework, then the inverse-ZIP push. Why #429 was built against the single-document export from the original enablement PR (deepnote-internal #20511). The endpoint that merged — deepnote-internal #20596 — instead returns a ZIP with one .deepnote document per notebook. Every layer assumed one file per project, so that had to be reworked. Two other drifts fixed here: folder.path is now { id, name } segments + isPathComplete (not string[]), and only the documents are deterministic (never the ZIP container), so the content hash is computed over the documents. Pull (commit 1) Layer Change @deepnote/cloud exportProject unzips the export into { filename, content }[] (adds fflate); folder schema/types fixed. sync-paths a directory per project (//, one .deepnote per notebook); .files/ inside it. sync-manifest { dir, notebooks[], contentHash, ... }, hash over the exploded documents. sync command pull writes one file per notebook, deletes files for notebooks removed in the cloud; rename moves the directory. Push (commit 2) — the exact inverse of export Rather than defer push behind an undecided contract, this defines the contract by writing the client for it. Push re-uploads the same ZIP of .deepnote documents the export produced — no re-merge, no re-serialization — to POST /v2/projects/{id}/import, with baseModifiedAt + baseContentHash for lost-update protection. Because the unit is identical in both directions, the baseContentHash question dissolves: both sides hash the exploded documents the same way (algorithm specified in the contract doc). @deepnote/cloud: importProject(files, opts) POSTs a ZIP (application/zip); new uploadProjectFile / deleteProjectFile (real, already-deployed POST/DELETE /v2/files). sync command: local-only edit → import → re-export → write back; 409 → override/skip; empty local project confirmed before delete-all; --all-files uploads changed local files on push (delete-then-upload, since POST /v2/files won't overwrite). POST /v2/projects/{id}/import is not deployed yet. A 404/501 degrades to push-deferred (edit kept, nothing lost), so the client ships safely ahead of the server. 📋 The contract for the server authors packages/cloud/docs/project-import-contract.md is the spec to implement against: ZIP-in reconciliation semantics, the exact canonical content-hash algorithm (so both sides match), params, responses, and errors. The client in this PR is the reference implementation. Testing Full pnpm test: 164 files, 2846 passed, 0 failures (nested worktree + .env parked per the local-env quirk). pnpm typecheck, biome, prettier, cspell all clean. New coverage: ZIP explode; dir-per-project planning; per-notebook pull + deleted-notebook cleanup; push (import ZIP body + base fingerprints, re-export write-back); 409 skip/override; 404 → graceful push-deferred; --all-files upload (delete-then-upload); uploadProjectFile/deleteProjectFile; canonical-hash order-independence. Not yet done: live verification against production (the export ZIP and the import endpoint may not be deployed to api.deepnote.com yet). 🤖 Generated with Claude Code Summary by CodeRabbit New Features Added deepnote sync [dir] to mirror cloud projects locally in both directions. Supports dry runs, conflict handling, pruning, JSON output, renames, and incremental working-directory file synchronization. Detects unchanged content, tracks synchronization state, and helps prevent unintended overwrites. Added cloud operations for listing, exporting, importing, downloading, uploading, and deleting project files. Added safe path handling and file-size safeguards for synchronized files. Documentation Added CLI, cloud API, and sync command reference documentation.

Open Graph Description: Reworks the deepnote sync CLI (#429, Wojtek's branch) for the export endpoint that shipped, and implements the push direction as the exact inverse of export. Stacked on #429, which is left unt...

X Description: Reworks the deepnote sync CLI (#429, Wojtek's branch) for the export endpoint that shipped, and implements the push direction as the exact inverse of export. Stacked on #429, which is left...

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

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:a621f6ff-2486-c074-a2c0-e2d5694c3225
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idB362:85DE2:7B5BA5:A9A9BF:6AEDCBE7
html-safe-noncedbdea4abcceb5cf46ef3e35d96494f2863e74afa67ddb48ea8ba3a97ba1b0ee7
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCMzYyOjg1REUyOjdCNUJBNTpBOUE5QkY6NkFFRENCRTciLCJ2aXNpdG9yX2lkIjoiNTMwMDY4Njk0MTU4ODQwOTMxOSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac587bc36e8252f8f661939efa15dbd44da05c62f3d7e398d358990e94d3aa6383
hovercard-subject-tagpull_request:4223303522
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/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
twitter:imagehttps://avatars.githubusercontent.com/u/15235276?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/15235276?s=400&v=4
og:image:altReworks the deepnote sync CLI (#429, Wojtek's branch) for the export endpoint that shipped, and implements the push direction as the exact inverse of export. Stacked on #429, which is left unt...
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/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdeepnote%2Fdeepnote%2Fpull%2F451%2Ffiles%2F6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
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%2F451%2Ffiles%2F6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
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/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
Reloadhttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
Reloadhttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
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
dinohamzichttps://github.com/dinohamzic
mainhttps://github.com/deepnote/deepnote/tree/main
hobbs/grn-5421-sync-zip-exporthttps://github.com/deepnote/deepnote/tree/hobbs/grn-5421-sync-zip-export
Conversation 41 https://github.com/deepnote/deepnote/pull/451
Commits 39 https://github.com/deepnote/deepnote/pull/451/commits
Checks 20 https://github.com/deepnote/deepnote/pull/451/checks
Files changed https://github.com/deepnote/deepnote/pull/451/files
Please reload this pagehttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
feat(cli): deepnote sync — ZIP-per-notebook export + inverse-ZIP push (GRN-5421) https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#top
Show all changes 39 commits https://github.com/deepnote/deepnote/pull/451/files
28dbe9b feat(cli): add deepnote sync to mirror workspace projects with the lo… voyti Jul 22, 2026 https://github.com/deepnote/deepnote/pull/451/commits/28dbe9bb62696d1313f73c6729597f4d9159f256
28ed833 feat(sync): send baseContentHash on push and guard empty-document del… voyti Jul 28, 2026 https://github.com/deepnote/deepnote/pull/451/commits/28ed833906ce525167d58b8c8a257c29b710cd4a
e1ac520 feat(cli): rework deepnote sync for the ZIP-per-notebook export jamesbhobbs Aug 6, 2026 https://github.com/deepnote/deepnote/pull/451/commits/e1ac5209a52fde3b703e0e5b2d2abbb2a4e39642
24e5a0f feat(cli): implement deepnote sync push as the exact inverse of export jamesbhobbs Aug 6, 2026 https://github.com/deepnote/deepnote/pull/451/commits/24e5a0f4a2a7fa05aa761465afdef70e62f9a7f6
ed9b8a7 fix(cli): truncate path segment before stripping trailing dot/space jamesbhobbs Aug 6, 2026 https://github.com/deepnote/deepnote/pull/451/commits/ed9b8a7df4520d879e3e7e427e574d7316c0379e
5ea8db9 fix(cli): abort sync on Ctrl+C; detect same-size file edits by hash jamesbhobbs Aug 6, 2026 https://github.com/deepnote/deepnote/pull/451/commits/5ea8db9df5450d7d732fcacd54d16918d5cd30f4
6d6f804 docs(cli): note both --all-files directions; add markdown fence langu… jamesbhobbs Aug 6, 2026 https://github.com/deepnote/deepnote/pull/451/commits/6d6f8040e8c33cacb394b10dc07e36572e9e178a
acac54d feat: support new import endpoint dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/acac54d9f2a10b22ddccd5b3aa7a838f1eea9c66
b2be886 test: cr feedback dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/b2be8865e012314f1114214048780085ad214245
81914f1 Merge branch 'main' into hobbs/grn-5421-sync-zip-export dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/81914f11d5063939632fd9c57c89ad84fcd035eb
397f49d fix(cli): validate sync manifest paths dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/397f49d5e62e87d441cf8a45226f2390eb5f28ee
0abb8bc fix(cli): keep sync project paths disjoint dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/0abb8bc33b6c11b0291ead76d5f17ca6df0cc06b
9f2127f fix(cli): preserve sync path collision suffixes dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/9f2127fae42b0f2019be71d20ff713d7787e81c5
e2807ad fix(cloud): require sync pagination dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/e2807ad07b83ad381f21ac6d1d162ec7f8d9e232
0763640 fix(cloud): require project file inventory dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/076364072372ef45423f26356b5fcc9a0339f0bb
6a50732 fix(cli): retry interrupted file replacements dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/6a507324125925619f8f2e2c1d7cebe2b3617331
2563077 fix(cli): verify uploaded file paths dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/256307731da9522d705334a71551fab4004947a7
db1c980 fix(cli): preserve case-only notebook renames dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/db1c980769c345399c721a72d81da21e596dc3b1
1a7431e fix(sync): bound working file transfers dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/1a7431e80c60b59b593f72ef4a8205e2b0fc71c8
1c4d26e fix(sync): distinguish suspended import errors dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/1c4d26e7cde6f8152a01c62a62a0a3050d01aaa4
1cdaf46 fix(cloud): reject malformed project exports dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/1cdaf468d8ba8b43821b27d27729799cea2e3008
33de7b5 fix(sync): namespace incomplete folder paths dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/33de7b5d7d78e2e6311053f45d61f8f781353636
192e13a fix(sync): keep dry runs read-only dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/192e13a61ddaf99e27e7eca24957715fcebd41ca
92ea19a docs(cli): remove stale sync fallback help dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/92ea19a6b73273360e16a9e4fbc28ad5daef9605
1046d4a chore: spell check dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/1046d4a07fe1d01872a550ed77cab23a10d735b1
e429219 fix(sync): reject non-canonical upload paths dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/e4292198959c2a01458dbfbb740d18f01e820435
7189064 fix(sync): reject unsafe filesystem paths dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/7189064bc6dfd2053ccdfbccc8a5c8fe2ef0221f
eee923f fix(sync): require file inventory timestamps dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/eee923f01c2afa0e79a257f8420d5fb352909c0b
0bd965a test(sync): assert symlink rejection does not delete dinohamzic Aug 10, 2026 https://github.com/deepnote/deepnote/pull/451/commits/0bd965a1740af4b8a240d013908c6a7a761b7d1a
6df113a fix(cli): preserve live project paths during prune dinohamzic Aug 11, 2026 https://github.com/deepnote/deepnote/pull/451/commits/6df113a473f0e94b7b109bc11a9abe6acd437e13
93f7280 fix(cloud): copy exact bytes for file uploads dinohamzic Aug 11, 2026 https://github.com/deepnote/deepnote/pull/451/commits/93f72803e694c12eb5f4625660f15d27d92830bc
cc8ebd1 fix(cli): reject occupied sync destinations dinohamzic Aug 11, 2026 https://github.com/deepnote/deepnote/pull/451/commits/cc8ebd10aa647af70719e1cda37da2741202c7d0
b6751d7 fix(cli): refuse ambiguous workspace pruning dinohamzic Aug 11, 2026 https://github.com/deepnote/deepnote/pull/451/commits/b6751d70c52d72eacef959b259ebe94938e23052
c610688 fix(cli): make project hashes locale-independent dinohamzic Aug 11, 2026 https://github.com/deepnote/deepnote/pull/451/commits/c610688883c7cead02db34faee27c147af29d1e5
7517563 docs(cli): clarify sync deletion behavior dinohamzic Aug 11, 2026 https://github.com/deepnote/deepnote/pull/451/commits/751756349fc885636b70308fd8710fa2cd5d7247
e95a37f chore: cspell dinohamzic Aug 11, 2026 https://github.com/deepnote/deepnote/pull/451/commits/e95a37f840d1f745792bc6614f3e6a3be9c62696
132c40f refactor(cli): use native canonical hash sorting dinohamzic Aug 11, 2026 https://github.com/deepnote/deepnote/pull/451/commits/132c40f2f5d07a25320c99c9ed11845c90f0f95b
f79af23 test(cli): cover empty-project notebook deletion guard dinohamzic Aug 11, 2026 https://github.com/deepnote/deepnote/pull/451/commits/f79af23b2bfdf1ba1b7cefdb9ad3f71f843de9a1
6e6af8e docs(cloud): pin suspended project import response dinohamzic Aug 11, 2026 https://github.com/deepnote/deepnote/pull/451/commits/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
Clear filters https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
Please reload this pagehttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
Please reload this pagehttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
cspell.json https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-77519f787fe7e051a14c588f101d61e4d8f0d3b01bf8e16cb65d3838243d4e68
README.md https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-15986190ef9581ab59bcd5483b2c09e7fd0bd439d6f6cddbc94b0b1de094ee51
package.json https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-6e2e2a1851648938b325ba84de634407a4e69a644ea61102df15ca4a8a7a9758
cli.ts https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-7a02f7d6513a60a87cae3086768db219f1908f2594dc77cd1a13a0107cbb24e3
sync.test.ts https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-2a59c8310bdb5c4d6494a25d2883680fe8bdfde40d5f89972489b163af967308
sync.ts https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-68b4ae21aa7b700f48f2376946eddfbe1c73e3412bd4bfa480be174ff4e54a12
run-in-cloud.test.ts https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-27f72706cc50abd34e5b77de60fe10fc0c6293ac435ed4d08398a176784bdc69
sync-manifest.test.ts https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-31498f45da7ee3cc196c46fc773ecc02ff18c6bc57721a3f3170176286defd57
sync-manifest.ts https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-f1ac82a2ba1fa4d258f635e1be37c58488606bcd2cff82256414aab26a7f08ac
sync-paths.test.ts https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-de351515f15ba46812e995bfad2e73c478c683a2a04f0a0d662cb831ba7a3004
sync-paths.ts https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-b0b3fb081f537b851871a84b2e27174e73e96be5b3e0bd8b8cadfc321e7e691e
README.md https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-78502d1b0667704dcac6598d4669f368b79dc591cc26b82e928063d2384d34cc
project-import-contract.md https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-d5669390123cf7d70b2a57fbfa433844bc60c29a960d411e7254d6ddb9992b14
package.json https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-c217fef7b20d050e01b0b6e487c8ffb6f771d6202839f76ec1608efa575feb3d
index.ts https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-dc95094deb531afd39a3b08907ebdb34301105d0bd95bf43f6a2a0ce5701a034
sync.test.ts https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-4883f1c51f1e6fca6c80fe65f4cb471fa29bb96243aa0886499a2d2fa5ee0753
sync.ts https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-404348e9a69abbc2108d745a5bb9c71b0f8af19e60fe7b3aebbfeb0aa380a186
pnpm-lock.yaml https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb
SKILL.md https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-fc910ff9af653863a4d56f42ab43df86a18730c7df959926af99800c102c21db
cli-sync.md https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-18e97201b1242f8be00836a2d975ead3ddeebc50611ec034853c6dde8205197a
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
cspell.jsonhttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-77519f787fe7e051a14c588f101d61e4d8f0d3b01bf8e16cb65d3838243d4e68
View file https://github.com/deepnote/deepnote/blob/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2/cspell.json
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/451/files/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-77519f787fe7e051a14c588f101d61e4d8f0d3b01bf8e16cb65d3838243d4e68
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-77519f787fe7e051a14c588f101d61e4d8f0d3b01bf8e16cb65d3838243d4e68
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-77519f787fe7e051a14c588f101d61e4d8f0d3b01bf8e16cb65d3838243d4e68
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-77519f787fe7e051a14c588f101d61e4d8f0d3b01bf8e16cb65d3838243d4e68
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-77519f787fe7e051a14c588f101d61e4d8f0d3b01bf8e16cb65d3838243d4e68
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/cli/README.mdhttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-15986190ef9581ab59bcd5483b2c09e7fd0bd439d6f6cddbc94b0b1de094ee51
View file https://github.com/deepnote/deepnote/blob/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2/packages/cli/README.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/451/files/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-15986190ef9581ab59bcd5483b2c09e7fd0bd439d6f6cddbc94b0b1de094ee51
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-15986190ef9581ab59bcd5483b2c09e7fd0bd439d6f6cddbc94b0b1de094ee51
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/cli/package.jsonhttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-6e2e2a1851648938b325ba84de634407a4e69a644ea61102df15ca4a8a7a9758
View file https://github.com/deepnote/deepnote/blob/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2/packages/cli/package.json
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/451/files/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-6e2e2a1851648938b325ba84de634407a4e69a644ea61102df15ca4a8a7a9758
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-6e2e2a1851648938b325ba84de634407a4e69a644ea61102df15ca4a8a7a9758
https://github.com/deepnote/deepnote/blob/main/.github/CODEOWNERS#L2
packages/cli/src/cli.tshttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-7a02f7d6513a60a87cae3086768db219f1908f2594dc77cd1a13a0107cbb24e3
View file https://github.com/deepnote/deepnote/blob/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2/packages/cli/src/cli.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/451/files/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-7a02f7d6513a60a87cae3086768db219f1908f2594dc77cd1a13a0107cbb24e3
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-7a02f7d6513a60a87cae3086768db219f1908f2594dc77cd1a13a0107cbb24e3
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-7a02f7d6513a60a87cae3086768db219f1908f2594dc77cd1a13a0107cbb24e3
Please reload this pagehttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
https://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2#diff-7a02f7d6513a60a87cae3086768db219f1908f2594dc77cd1a13a0107cbb24e3
Please reload this pagehttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
Please reload this pagehttps://github.com/deepnote/deepnote/pull/451/files/6e6af8e1b5ceda071214f858e59b7eb8ad2933e2
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.