feat: pivot to Cursor for Data — dataset-understanding CLI + web verification#1
Merged
Merged
Conversation
CLI-first "Cursor for Data" engine alongside the web app: - querypad inspect: profile a folder, infer FK relationships with confidence - querypad ask: NL question -> relationship-aware SQL -> DuckDB -> insight - engine-agnostic discovery core shared by browser (Wasm) and CLI (@duckdb/node-api) - read-only gate + code-fence stripping on AI-generated SQL; env-var BYOK keys - web: data profiling, profile drawer, copy-agent-context, multi-provider BYOK Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reframe README, roadmap, contributor + agent guides, and changelog around dataset understanding (inspect + ask) instead of an AI SQL editor; publish ROADMAP.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- inspect rolls inferred relationships into named entities (User has_many Payment, ...) and writes .querypad/semantic-model.yaml; ask feeds those entities as domain context - querypad explain: justify each inferred relationship from its stored signals (value overlap, name match, type, cardinality) with caveats to verify Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Sidebar Relationships panel runs discovery in the browser (DuckDB-Wasm) and lets the user Accept/Reject/Edit inferred joins; verdicts + edits persist to IndexedDB - reuses the engine-agnostic src/lib/discovery core (relationshipKey, buildExplanation) — no logic duplicated between CLI and web - add a browser QueryRunner adapter; run npm run test:cli in CI Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- document the Relationships panel in CHANGELOG/README/ROADMAP - package.json description + keywords reframed to the pivot (GitHub About already updated) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pivot: "AI-powered SQL editor" → "Cursor for Data"
Turns QueryPad into a local-first AI workspace that understands datasets before generating SQL — discovers relationships, builds semantic models, answers questions, and lets users verify the inferred graph.
What's in this PR
CLI (
querypad, native@duckdb/node-api)inspect <folder>— profile files, infer foreign-key relationships with confidence, build a semantic model; writes.querypad/{schema.json, relationships.json, semantic-model.yaml, inspect-summary.md}ask "<q>" <folder>— NL → relationship-aware SQL → DuckDB → insight (read-only-gated, env-var BYOK)explain <folder>— justify each relationship from its signals, with caveatsWeb app
Engine-agnostic core (
src/lib/discovery) shared by CLI (Node) and web (Wasm) via aQueryRunnerabstraction — no logic duplicated.Verification
npm run test:cli27/27 (now enforced in CI)npm run check(lint / typecheck / build)npm teste2e 9/9Notes
package.jsonupdated.🤖 Generated with Claude Code