Skip to content

release: v0.19.0#167

Merged
padak merged 10 commits into
mainfrom
release/0.19.0
Apr 14, 2026
Merged

release: v0.19.0#167
padak merged 10 commits into
mainfrom
release/0.19.0

Conversation

@padak
Copy link
Copy Markdown
Member

@padak padak commented Apr 14, 2026

v0.19.0

New features

Bug fixes

Testing & quality

Contributors

Thanks to @DasaDama (#159), @Matejkys (#160), and @frantisekrehor (#161) for feature requests and bug reports!

padak added 10 commits April 14, 2026 10:54
* 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
@padak padak merged commit 647d50f into main Apr 14, 2026
1 check failed
@padak padak deleted the release/0.19.0 branch April 14, 2026 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant