Conversation
- Epic 1: Project foundation — pyproject.toml, src/ layout, exceptions, models, config, oda init, test fixtures, CI - Epic 2: Database connectivity — DialectAdapter ABC + SQLite/PG/MySQL adapters, ConnectionManager, oda connections/connect - Epic 3: Schema exploration & docs — SchemaInspector, DocGenerator, oda schemas/tables/describe/sample/profile/docs - Epic 4: Safe query execution — SafetyChecker, QueryEngine (LIMIT injection/timeout), DiagnosticEngine, oda query - Epic 5: Query history & memory — HistoryTracker (JSONL), MemoryManager (YAML frontmatter), oda history, oda memory - Epic 6: Golden SQL evals — EvalRunner, oda eval run/results/add, refined OpenCode rules template 224 unit tests passing; ruff check + format clean
- Ignore _bmad/ (tool infrastructure, not project code) - Ignore .opencode/agents/ and .opencode/commands/ (generated from _bmad) - Ignore _bmad-output/bmb-creations/ and implementation-artifacts/ (generated) - Keep _bmad-output/planning-artifacts/ (architecture.md + epics.md are project source of truth) - Remove previously-tracked BMAD files from git index
- Reduce module docstrings to single-line summaries; remove Usage: blocks - Collapse multi-line Args/Returns docstrings to inline one-liners - Remove inline comments that restate code; keep comments explaining why - Remove section divider comments (# ── Commands ──) - Add mypy and type stubs (types-pyyaml, types-pymysql) to dev deps and CI - Bump rich to 14.3.3; add mypy step to GitHub Actions workflow - Add new test files and expand coverage for query, safety, schema, docs, eval_runner, memory, cli_init, cli_memory, cli_docs, cli_eval, cli_query, cli_schema - Update uv.lock for new dev dependencies
- Add keyring>=25.0 to runtime dependencies - ConnectionManager stores passwords in OS keychain (macOS Keychain, GNOME Keyring, Windows Credential Manager) instead of plaintext YAML - save_connection: strips password from connections.yaml, sets _keyring flag, falls back to plaintext with warning if keychain unavailable - get_connection: fetches password from keychain when _keyring flag set - remove_connection: also deletes the keychain entry on removal - Add mock_keyring autouse fixture in conftest.py to redirect keyring calls to an in-memory dict for all unit tests
…ostics - Timeout detection: replace string-matching with pgcode/errno checks (psycopg3 pgcode 57014, pymysql errno 3024/1969) to avoid false positives - Separate set_statement_timeout try-block from query execution try-block so config failures are not misclassified as query errors - Reset statement timeout to 0 in finally block so pooled connections don't inherit the limit on subsequent queries - Log warning when interrupt() fails to stop the SQLite thread - Improve keyring failure log message; delete old entry before re-saving - Add _MAX_DIAG_SAMPLE_VALUES constant to replace magic 5 in diagnostics SQL - Document MySQL MAX_EXECUTION_TIME SELECT-only limitation - Add 12 new tests covering the above (322 total, all passing)
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.
No description provided.