release: v0.19.0#167
Merged
Merged
Conversation
* test: comprehensive E2E test suite for full CLI coverage
Add tests/test_e2e.py with 9 tests covering 23 progressive steps:
- Project CRUD (add/list/status/edit/remove)
- Storage CRUD (bucket/table create, upload CSV, download round-trip, unload, delete)
- Config operations (list/detail/search/update --set/--dry-run/--configuration/delete)
- Component discovery (list with --type filter, detail via AI Service)
- File lifecycle (upload/list/detail/download/tag/delete with dry-run)
- Encrypt values (KBC::ProjectSecure verification)
- Branch lifecycle (list/create/use/reset/delete)
- Sharing list + lineage show (read-only)
- Error handling (invalid token, nonexistent resources, correct exit codes)
- JSON consistency (all read commands return valid JSON, token never leaked)
Verbose output shows exact CLI commands and abbreviated JSON responses.
Resources use e2e-{timestamp} prefix with guaranteed cleanup on failure.
Also: add make test-e2e target, register @pytest.mark.e2e, fix help regex
to support digits in target names, exclude e2e from default make test.
* test: expand E2E coverage to all CLI commands (36 steps)
Expand TestFullE2E from 23 to 36 progressive steps:
- Add init command test (create .kbagent/ in sub-directory)
- Add storage upload-table --incremental (verify 8 rows after appending 3)
- Add storage load-file (upload CSV as file, load into table)
- Add config update --merge (deep-merge partial JSON, verify preservation)
- Add config new scaffold generation (keboola.ex-http)
- Add full workspace lifecycle (create/list/detail/password/load/query/delete)
- Add branch merge command (verify URL response, then delete)
- Add permissions list/show/check commands
- Add job list --component-id filter and job detail
Add TestE2ESyncWorkflow: sync init/pull/status/diff/push --dry-run in temp git repo
Add TestE2EToolCommands: tool list + tool call get_buckets (skip if no MCP)
Update CLAUDE.md: add convention #16 requiring E2E tests for new commands,
add test_e2e.py to project structure.
Total: 12 tests, ~2.5 min runtime against real API.
* docs: add E2E test scenarios reference (docs/e2e-scenarios.md)
Documents all 12 E2E tests (36 main steps) with exact commands,
assertions, and coverage. Includes table of commands NOT covered
with reasons (manage token, interactive prompts, side effects).
* test: add Snowflake transformation job run E2E (steps 28-32)
Full transformation lifecycle:
- Create output bucket + Snowflake SQL transformation config via API
- SQL: SELECT id, name, CAST(value AS INT), CAST(value AS INT)*2 AS doubled_value
- Run transformation with job run --wait --timeout 300
- Verify job detail: status=success, isFinished=true
- Download output table, verify doubled_value == value * 2 for all rows
- Clean up transformation config and output bucket via CLI
Brings main E2E flow from 36 to 41 steps. All 12 tests pass (~3.5 min).
* feat: add Kai (Keboola AI Assistant) CLI commands
Add kbagent kai {ping,ask,chat,history} — bridges Claude Code to Kai cloud:
- kai ping: health check with MCP connection status
- kai ask -m "question": one-shot question, collect full response
- kai chat -m "msg" [--chat-id ID]: send message in chat session
- kai history [--limit N]: list recent chat sessions
Architecture:
- commands/kai.py (CLI layer) + services/kai_service.py (business logic)
- Uses kai-client library (PyPI) for async HTTP/SSE/auth
- Auto-discovers kai-assistant URL from Storage API services list
- Feature detection: checks owner.features for "agent-chat" flag
- Permission system: kai.ping/ask=read, kai.chat=write, kai.history=read
Also: extend TokenVerifyResponse with features list, add KAI_* constants.
* test: add Kai E2E tests + update CLAUDE.md with kai commands
Add kai ping/ask/history to E2E test suite (step 38) with graceful
skip when agent-chat feature not enabled or auth fails.
Update CLAUDE.md All CLI Commands section with kai commands.
Update e2e-scenarios.md with Kai phase documentation.
* feat: mark kai as BETA, add context + SKILL reference
- Mark kai command group as (BETA) in --help output
- Add Kai section to kbagent context command output
- Add references/kai-workflow.md to plugin SKILL
* feat: add storage delete-column command Add `kbagent storage delete-column` to delete one or more columns from a storage table. Supports batch deletion (repeat --column), --dry-run preview, --yes to skip confirmation, and --branch for dev branches. Closes #159 * docs: add delete-column to plugin commands-reference.md * docs: expand CONTRIBUTING.md checklist with E2E tests, hints, and plugin references
File endpoints in client.py (get_file_info, delete_file, tag_file,
untag_file) ignored branch_id, causing NOT_FOUND errors when
downloading or unloading tables from dev branches. The export job
creates files in branch scope, but subsequent file queries used
the main scope URL.
Add branch_id parameter to all four methods with proper URL prefix
(/v2/storage/branch/{id}/files/...) and pass it through from
download_table and unload_table_to_file in the service layer.
Closes #161
fix: branch-scoped file operations (#161)
…ing (#160) - New `config rename` command: renames via API, optionally renames local sync directory and updates manifest (uses git mv when available) - `sync pull` auto-detects renamed configs and renames local directories to match the new remote name - `sync push` warns when local directory names don't match config names - Full permission model, --hint client/service, context, SKILL coverage - Service tests, CLI tests, sync pull rename test, E2E test
feat: config rename + sync pull auto-rename (#160)
- Add --hint client/service support to all kai commands - Add hint definitions for kai.ping/ask/chat/history - Add Kai section to commands-reference.md - Add unit tests: test_kai_service.py (15 tests), test_kai_cli.py (19 tests) - Update README.md: add Kai to feature table, command list, fix command count
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.
v0.19.0
New features
kai ping,kai ask,kai chat,kai history(BETA) (feat: Kai (Keboola AI Assistant) CLI support (BETA) #164)--dry-run(storage: add delete-column command #159)Bug fixes
get_file_info,delete,tag,untagnow correctly use branch prefix (download-table fails with NOT_FOUND on dev branch tables (get_file_info missing branch prefix) #161)Testing & quality
Contributors
Thanks to @DasaDama (#159), @Matejkys (#160), and @frantisekrehor (#161) for feature requests and bug reports!