datacharter 0.3.3__tar.gz → 0.3.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {datacharter-0.3.3 → datacharter-0.3.4}/.github/workflows/test.yml +2 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/CHANGELOG.md +9 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/PKG-INFO +1 -1
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/__init__.py +1 -1
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/cli.py +3 -31
- datacharter-0.3.4/src/datacharter/demo.py +43 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/app.py +23 -2
- datacharter-0.3.4/src/datacharter/server/static/assets/index-B_FrSWR_.js +298 -0
- datacharter-0.3.3/src/datacharter/server/static/assets/index-CX4OWOHb.css → datacharter-0.3.4/src/datacharter/server/static/assets/index-DaS_YQZd.css +1 -1
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/index.html +2 -2
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/server/test_cold_start.py +17 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/package-lock.json +1202 -37
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/package.json +9 -2
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/App.tsx +42 -31
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/api.ts +2 -0
- datacharter-0.3.4/ui/src/components/EmptyState.test.tsx +31 -0
- datacharter-0.3.4/ui/src/components/EmptyState.tsx +53 -0
- datacharter-0.3.4/ui/src/onboarding.test.ts +20 -0
- datacharter-0.3.4/ui/src/onboarding.ts +21 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/styles.css +14 -0
- datacharter-0.3.4/ui/src/test/setup.ts +1 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/vite.config.ts +6 -1
- datacharter-0.3.3/src/datacharter/server/static/assets/index-CHFhM_Tn.js +0 -298
- {datacharter-0.3.3 → datacharter-0.3.4}/.github/workflows/banned-terms.yml +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/.github/workflows/release.yml +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/.gitignore +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/CODE_OF_CONDUCT.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/CONTRIBUTING.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/LICENSE +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/README.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/SECURITY.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/THIRD-PARTY-NOTICES.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/TRADEMARKS.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/brand/README.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/brand/demo.gif +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/brand/hero.png +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/brand/mark.svg +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/brand/screenshot-m4-agent.png +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/brand/screenshot-m5-complete.png +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/brand/screenshot-m5-core.png +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/brand/screenshot-m5-features.png +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/compose.yaml +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/_config.yml +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/about.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/agent.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/assets/add-source.gif +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/assets/drag-drop.gif +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/assets/hero.png +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/assets/screenshot.png +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/assets/snapshot.gif +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/charter-yaml.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/cli.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/faq.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/index.html +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/mcp.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/quickstart.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/security.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/sources.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/docs/workspace.md +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/pyproject.toml +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/scripts/build_ui.sh +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/agent/__init__.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/agent/cache.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/agent/llm.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/agent/loop.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/agent/tools.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/contracts/__init__.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/contracts/loader.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/contracts/metrics.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/contracts/pii.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/contracts/resolve.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/contracts/secrets.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/contracts/writer.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/engine/__init__.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/engine/aggregate.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/engine/guard.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/engine/provenance.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/engine/pushdown.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/engine/scrub.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/engine/session.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/engine/snowflake.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/engine/sources.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/engine/statekey.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/mcp/__init__.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/mcp/server.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/models.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/__init__.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/llm_admin.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/security.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/source_admin.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/abap-DLDM7-KI.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/apex-DNDY2TF8.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/azcli-Y6nb8tq_.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/bat-BwHxbl9M.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/bicep-CFznDFnq.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/cameligo-Bf6VGUru.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/clojure-Dnu-v4kV.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/codicon-Brq4_Ui5.ttf +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/coffee-Bd8akH9Z.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/cpp-BbWJElDN.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/csharp-Co3qMtFm.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/csp-D-4FJmMZ.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/css-DdJfP1eB.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/css.worker-CqwWTjeG.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/cssMode-BuAVOLr4.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/cypher-cTPe9QuQ.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/dart-BOtBlQCF.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/dockerfile-BG73LgW2.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/ecl-BEgZUVRK.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/editor.worker-DCKwvLbM.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/elixir-BkW5O-1t.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/flow9-BeJ5waoc.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/freemarker2-DM0thzwF.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/fsharp-PahG7c26.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/go-acbASCJo.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/graphql-BxJiqAUM.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/handlebars-BkMf3Qj4.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/hcl-DtV1sZF8.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/html-KeNy2AFd.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/html.worker-DhJ4VZMp.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/htmlMode-CN5rSB9p.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/ini-Kd9XrMLS.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/java-CXBNlu9o.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/javascript-CZu1iw4q.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/json.worker-BF9eV5mS.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/jsonMode-BtMXpE2Q.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/julia-cl7-CwDS.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/kotlin-s7OhZKlX.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/less-9HpZscsL.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/lexon-OrD6JF1K.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/liquid-mhqehfbE.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/lspLanguageFeatures-D1NXFkgg.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/lua-Cyyb5UIc.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/m3-B8OfTtLu.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/markdown-BFxVWTOG.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/mdx-69yOd9f1.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/mips-CiqrrVzr.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/monaco-CB2SckMT.css +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/monaco-DNze5gXB.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/msdax-DmeGPVcC.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/mysql-C_tMU-Nz.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/objective-c-BDtDVThU.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/pascal-vHIfCaH5.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/pascaligo-DtZ0uQbO.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/perl-Ub6l9XKa.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/pgsql-BlNEE0v7.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/php-BBUBE1dy.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/pla-DSh2-awV.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/postiats-CocnycG-.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/powerquery-tScXyioY.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/powershell-COWaemsV.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/protobuf-Brw8urJB.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/pug-8SOpv6rk.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/python-C5qpjWC4.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/qsharp-Bw9ernYp.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/r-j7ic8hl3.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/razor-fg0l3XC9.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/redis-Bu5POkcn.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/redshift-Bs9aos_-.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/restructuredtext-CqXO7rUv.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/ruby-zBfavPgS.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/rust-BzKRNQWT.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/sb-BBc9UKZt.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/scala-D9hQfWCl.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/scheme-BPhDTwHR.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/scss-CBJaRo0y.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/shell-DiJ1NA_G.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/solidity-Db0IVjzk.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/sophia-CnS9iZB_.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/sparql-CJmd_6j2.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/sql-ClhHkBeG.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/st-CHwy0fLd.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/swift-Bqt4WxQ4.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/systemverilog-Bs9z6M-B.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/tcl-Dm6ycUr_.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/ts.worker-DTZAwq0V.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/tsMode-CaXNdXrQ.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/twig-Csy3S7wG.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/typescript-CCbVPqil.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/typespec-Btyra-wh.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/vb-Db0cS2oM.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/wgsl-BTesnYfV.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/workers-CwEVRSMl.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/xml-CIpcyvha.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/src/datacharter/server/static/assets/yaml-CiikAWeE.js +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/agent/test_agent.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/agent/test_cache.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/agent/test_llm_wire.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/contracts/test_loader.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/contracts/test_metrics.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/contracts/test_pii.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/contracts/test_secrets_store.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/contracts/test_writer.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/engine/test_aggregate.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/engine/test_diff.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/engine/test_federation.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/engine/test_guard.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/engine/test_provenance.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/engine/test_pushdown.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/engine/test_scrub.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/engine/test_session.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/engine/test_source_lifecycle.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/engine/test_sources.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/integration/seed/mysql.sql +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/integration/seed/postgres.sql +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/integration/test_live_sources.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/mcp/test_mcp_server.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/server/test_api.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/server/test_llm_admin.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/server/test_offline.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/server/test_security.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/server/test_source_admin.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/server/test_sources_api.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/test_agent_vidaimock_e2e.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/test_cli_init.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/test_drift.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/test_explain.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/test_packaging_e2e.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/test_sample.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/test_scaffold.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/test_secrets_cli.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/tests/test_snapshot_recheck.py +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/index.html +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/components/ChartPanel.tsx +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/components/ChatPanel.tsx +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/components/HelpModal.tsx +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/components/LLMConfig.tsx +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/components/QueryFiles.tsx +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/components/ResultsGrid.tsx +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/components/SourceForm.tsx +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/components/SourceTree.tsx +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/components/SourcesView.tsx +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/components/Tutorial.tsx +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/lib/caption.ts +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/lib/chartSpec.ts +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/lib/columns.ts +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/lib/useResize.ts +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/main.tsx +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/monaco.ts +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/src/vite-env.d.ts +0 -0
- {datacharter-0.3.3 → datacharter-0.3.4}/ui/tsconfig.json +0 -0
|
@@ -5,6 +5,15 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.3.4] - 2026-07-24
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Empty workspaces get an "add your data" first-run launchpad (add a source / drop a
|
|
13
|
+
CSV / load the demo dataset) instead of the demo feature-tour, which now auto-shows
|
|
14
|
+
only when the workspace has sources. New `POST /api/demo` loads the demo `store` as a
|
|
15
|
+
normal, deletable source.
|
|
16
|
+
|
|
8
17
|
## [0.3.3] - 2026-07-24
|
|
9
18
|
|
|
10
19
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datacharter
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.4
|
|
4
4
|
Summary: Charter your data — contract-governed local data exploration, powered by DuckDB
|
|
5
5
|
Project-URL: Homepage, https://github.com/datacharter/datacharter
|
|
6
6
|
Project-URL: Repository, https://github.com/datacharter/datacharter
|
|
@@ -7,6 +7,7 @@ import sys
|
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
|
|
9
9
|
from datacharter import __version__
|
|
10
|
+
from datacharter.demo import write_demo_data
|
|
10
11
|
|
|
11
12
|
CHARTER_TEMPLATE = """\
|
|
12
13
|
# DataCharter workspace — https://github.com/datacharter/datacharter
|
|
@@ -72,7 +73,7 @@ def _cmd_init(args: argparse.Namespace) -> int:
|
|
|
72
73
|
(ws / "queries").mkdir(exist_ok=True)
|
|
73
74
|
_ensure_gitignore(ws)
|
|
74
75
|
if args.demo:
|
|
75
|
-
|
|
76
|
+
write_demo_data(ws)
|
|
76
77
|
print(f"Workspace initialized in {ws}.")
|
|
77
78
|
if args.demo:
|
|
78
79
|
print("Demo data in demo/ — try: datacharter serve")
|
|
@@ -87,35 +88,6 @@ def _ensure_gitignore(ws: Path) -> None:
|
|
|
87
88
|
gi.write_text(existing + joiner + GITIGNORE_BLOCK)
|
|
88
89
|
|
|
89
90
|
|
|
90
|
-
def _write_demo_data(ws: Path) -> None:
|
|
91
|
-
import sqlite3
|
|
92
|
-
|
|
93
|
-
demo = ws / "demo"
|
|
94
|
-
demo.mkdir(exist_ok=True)
|
|
95
|
-
con = sqlite3.connect(str(demo / "store.db"))
|
|
96
|
-
try:
|
|
97
|
-
con.execute("CREATE TABLE customers (id INTEGER, email TEXT, tier TEXT)")
|
|
98
|
-
con.executemany(
|
|
99
|
-
"INSERT INTO customers VALUES (?, ?, ?)",
|
|
100
|
-
[
|
|
101
|
-
(1, "ada@example.com", "pro"),
|
|
102
|
-
(2, "grace@example.com", "free"),
|
|
103
|
-
(3, "edsger@example.com", "pro"),
|
|
104
|
-
],
|
|
105
|
-
)
|
|
106
|
-
con.execute("CREATE TABLE orders (customer_id INTEGER, total REAL, placed_on TEXT)")
|
|
107
|
-
con.executemany(
|
|
108
|
-
"INSERT INTO orders VALUES (?, ?, ?)",
|
|
109
|
-
[
|
|
110
|
-
((i % 3) + 1, round((i * 37 % 200) + i * 0.5, 2), f"2026-01-{(i % 28) + 1:02d}")
|
|
111
|
-
for i in range(90)
|
|
112
|
-
],
|
|
113
|
-
)
|
|
114
|
-
con.commit()
|
|
115
|
-
finally:
|
|
116
|
-
con.close()
|
|
117
|
-
|
|
118
|
-
|
|
119
91
|
def _resolve_serve_workspace(directory: str) -> Path:
|
|
120
92
|
"""Workspace for serve; ephemeral demo when no charter.yaml (D3, no surprise writes)."""
|
|
121
93
|
ws = Path(directory).resolve()
|
|
@@ -125,7 +97,7 @@ def _resolve_serve_workspace(directory: str) -> Path:
|
|
|
125
97
|
|
|
126
98
|
demo_ws = Path(tempfile.mkdtemp(prefix="datacharter-demo-"))
|
|
127
99
|
(demo_ws / "charter.yaml").write_text(DEMO_CHARTER)
|
|
128
|
-
|
|
100
|
+
write_demo_data(demo_ws)
|
|
129
101
|
print(f"No charter.yaml in {ws} — serving an ephemeral demo workspace ({demo_ws}).")
|
|
130
102
|
print("Run `datacharter init` here to start a real workspace.")
|
|
131
103
|
return demo_ws
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""The demo dataset: a small sqlite `store` (customers + orders) for onboarding."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import sqlite3
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
# Descriptor for registering the demo as a real, deletable source (see POST /api/demo).
|
|
9
|
+
DEMO_SOURCE = {
|
|
10
|
+
"name": "store",
|
|
11
|
+
"type": "sqlite",
|
|
12
|
+
"path": "demo/store.db",
|
|
13
|
+
"tables": ["customers", "orders"],
|
|
14
|
+
"pii": {"customers": ["email"]},
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def write_demo_data(workspace: Path) -> None:
|
|
19
|
+
"""Write the demo `store.db` (customers + orders) under `<workspace>/demo/`."""
|
|
20
|
+
demo = workspace / "demo"
|
|
21
|
+
demo.mkdir(exist_ok=True)
|
|
22
|
+
con = sqlite3.connect(str(demo / "store.db"))
|
|
23
|
+
try:
|
|
24
|
+
con.execute("CREATE TABLE customers (id INTEGER, email TEXT, tier TEXT)")
|
|
25
|
+
con.executemany(
|
|
26
|
+
"INSERT INTO customers VALUES (?, ?, ?)",
|
|
27
|
+
[
|
|
28
|
+
(1, "ada@example.com", "pro"),
|
|
29
|
+
(2, "grace@example.com", "free"),
|
|
30
|
+
(3, "edsger@example.com", "pro"),
|
|
31
|
+
],
|
|
32
|
+
)
|
|
33
|
+
con.execute("CREATE TABLE orders (customer_id INTEGER, total REAL, placed_on TEXT)")
|
|
34
|
+
con.executemany(
|
|
35
|
+
"INSERT INTO orders VALUES (?, ?, ?)",
|
|
36
|
+
[
|
|
37
|
+
((i % 3) + 1, round((i * 37 % 200) + i * 0.5, 2), f"2026-01-{(i % 28) + 1:02d}")
|
|
38
|
+
for i in range(90)
|
|
39
|
+
],
|
|
40
|
+
)
|
|
41
|
+
con.commit()
|
|
42
|
+
finally:
|
|
43
|
+
con.close()
|
|
@@ -146,8 +146,7 @@ def create_app(
|
|
|
146
146
|
app.state.charter = load_charter(workspace)
|
|
147
147
|
app.state.toolbox = ToolBox(app.state.engine, app.state.charter.sources)
|
|
148
148
|
|
|
149
|
-
|
|
150
|
-
async def sources() -> dict:
|
|
149
|
+
def _sources_payload() -> dict:
|
|
151
150
|
# Credentials intentionally omitted — this payload reaches the browser.
|
|
152
151
|
return {
|
|
153
152
|
"warnings": app.state.charter.warnings,
|
|
@@ -165,12 +164,34 @@ def create_app(
|
|
|
165
164
|
],
|
|
166
165
|
}
|
|
167
166
|
|
|
167
|
+
@app.get("/api/sources")
|
|
168
|
+
async def sources() -> dict:
|
|
169
|
+
return _sources_payload()
|
|
170
|
+
|
|
168
171
|
@app.post("/api/sources")
|
|
169
172
|
async def add_source(form: source_admin.SourceForm) -> dict:
|
|
170
173
|
await asyncio.to_thread(source_admin.create_source, app.state.engine, workspace, form)
|
|
171
174
|
_refresh_charter()
|
|
172
175
|
return {"name": form.name}
|
|
173
176
|
|
|
177
|
+
@app.post("/api/demo")
|
|
178
|
+
async def load_demo() -> dict:
|
|
179
|
+
"""Populate the workspace with the demo `store` source (idempotent)."""
|
|
180
|
+
if not any(s.name == "store" for s in app.state.charter.sources):
|
|
181
|
+
from datacharter.demo import write_demo_data
|
|
182
|
+
|
|
183
|
+
write_demo_data(workspace)
|
|
184
|
+
form = source_admin.SourceForm(
|
|
185
|
+
name="store",
|
|
186
|
+
type="sqlite",
|
|
187
|
+
path="demo/store.db",
|
|
188
|
+
tables=["customers", "orders"],
|
|
189
|
+
pii={"customers": ["email"]},
|
|
190
|
+
)
|
|
191
|
+
await asyncio.to_thread(source_admin.create_source, app.state.engine, workspace, form)
|
|
192
|
+
_refresh_charter()
|
|
193
|
+
return _sources_payload()
|
|
194
|
+
|
|
174
195
|
@app.put("/api/sources/{name}")
|
|
175
196
|
async def edit_source(name: str, form: source_admin.SourceForm):
|
|
176
197
|
if name != form.name:
|