Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"plugins": [
{
"name": "kbagent",
"version": "0.92.0",
"version": "0.93.0",
"source": "./plugins/kbagent",
"description": "DEPRECATED — install from keboola/ai-kit: /plugin marketplace add keboola/ai-kit && /plugin install kbagent@keboola-claude-kit — AI-friendly interface to Keboola Connection projects — explore configs, jobs, lineage, sync configs as files, manage dev branches, and debug SQL in workspaces",
"category": "development"
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -982,10 +982,10 @@ kbagent kai ask --message "question" [--project NAME]
kbagent kai chat --message "msg" [--chat-id ID] [--project NAME]
kbagent kai chat-detail --chat-id ID [--project NAME]
kbagent kai history [--project NAME] [--limit N]
# Default-project resolution (since vNEXT, #684): the `kai` group, `docs query`, `component detail`,
# Default-project resolution (since 0.93.0, #684): the `kai` group, `docs query`, `component detail`,
# `component list --query`, `config examples`, and `config new` (scaffold mode) resolve an omitted
# --project through the shared cascade (--project > KBAGENT_PROJECT env > `project use` pin > sole
# project). Before vNEXT these paths used the FIRST REGISTERED project and ignored the pin.
# project). Before 0.93.0 these paths used the FIRST REGISTERED project and ignored the pin.
# Several projects with no pin now exit 5 (CONFIG_ERROR) instead of silently picking the first.
# Same fix over `kbagent serve`: /kai/*, POST /documentation/query, GET /components?query=...

Expand Down
2 changes: 1 addition & 1 deletion plugins/kbagent/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "kbagent",
"version": "0.92.0",
"version": "0.93.0",
"description": "AI-friendly interface to Keboola Connection projects — explore configs, jobs, lineage, sync configs as files, manage dev branches, and debug SQL in workspaces",
"author": {
"name": "Keboola",
Expand Down
4 changes: 2 additions & 2 deletions plugins/kbagent/agents/keboola-expert.md
Original file line number Diff line number Diff line change
Expand Up @@ -190,15 +190,15 @@ its absence is NOT a promise the entry is version-independent (see §1 Rule 6).
config in the project instead.

**A command without `--project` refused with CONFIG_ERROR (or picked a project)**
- On **vNEXT+** the `kai` group, `docs query`, `component detail`, `component
- On **0.93.0+** the `kai` group, `docs query`, `component detail`, `component
list --query`, `config examples`, and `config new` (scaffold mode) resolve an
omitted `--project` through the pin cascade: `--project` > `KBAGENT_PROJECT`
env > `project use` pin > sole project. Several projects and no pin -> exit 5
(`CONFIG_ERROR`). That exit is the fix working, not a bug -- pass `--project`
or run `project use`. On <= 0.90.1 the same commands silently used the FIRST
registered project and ignored the pin (issue #684). gotchas.md.

**Recurring `ext.keboola.cli.` events in a project's own event log (vNEXT+)**
**Recurring `ext.keboola.cli.` events in a project's own event log (0.93.0+)**
- kbagent posts one best-effort usage event per command to the acting project's
Storage events. An event audit then shows one `ext.keboola.cli.` (CLI/REPL) or
`ext.keboola.cli.serve` (serve) row per kbagent command. That is expected
Expand Down

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions plugins/kbagent/skills/kbagent/references/gotchas.md
Original file line number Diff line number Diff line change
Expand Up @@ -4703,8 +4703,8 @@ fallback (`config examples` already resolved it correctly).
`component detail`'s `project_alias` reports the alias actually used (never
`None`). With NO projects configured at all, the failure is an actionable
`CONFIG_ERROR: No projects configured. Use 'kbagent project add' ...`.
Since vNEXT the fallback is the `project use` pin, not the first project --
see the vNEXT gotcha on the `project use` pin (issue #684).
Since 0.93.0 the fallback is the `project use` pin, not the first project --
see the gotcha on the `project use` pin (issue #684).
- **<= 0.89.x**: pass `--project` explicitly to these two commands -- the help
text's "first available" promise does not work there.
- `component sync-action` is unaffected: its `--project` is genuinely required
Expand Down Expand Up @@ -4960,9 +4960,9 @@ volatile components without waiting for an upstream kbagent release.

## `kai` / `docs query` / `component` / `config new` now honor the `project use` pin

*(since vNEXT, closes #684)* These commands take an optional `--project`: the whole `kai` group,
*(since 0.93.0, closes #684)* These commands take an optional `--project`: the whole `kai` group,
`docs query`, `component detail`, `component list --query`, `config examples`,
and `config new` (scaffold mode). Before vNEXT, they resolved an omitted
and `config new` (scaffold mode). Before 0.93.0, they resolved an omitted
`--project` to the **first registered project**. They ignored the pin from
`kbagent project use`. With two or more projects registered, the command acted
on the wrong project and reported no warning.
Expand All @@ -4985,7 +4985,7 @@ single-project command:

## Usage telemetry: one `ext.keboola.cli.` event per command (opt-out with an env var)

*(since vNEXT)* Every CLI command, every REPL line, and every **mutating** `kbagent serve`
*(since 0.93.0)* Every CLI command, every REPL line, and every **mutating** `kbagent serve`
request posts one best-effort usage event to the **acting project's own** Storage events
(`POST /v2/storage/events`), the same mechanism the original Keboola Go CLI uses.
Connection stores it as `ext.keboola.cli.` (CLI/REPL) or `ext.keboola.cli.serve` (serve).
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "keboola-cli"
version = "0.92.0"
version = "0.93.0"
description = "AI-friendly CLI for managing Keboola projects"
readme = "README.md"
requires-python = ">=3.12"
Expand Down
20 changes: 20 additions & 0 deletions src/keboola_agent_cli/changelog.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,26 @@

# Ordered newest-first. Each value is a list of brief one-line descriptions.
CHANGELOG: dict[str, list[str]] = {
"0.93.0": [
"New (#731): kbagent now posts a best-effort usage event per command, so its usage is "
"visible in Keboola telemetry like the original Go CLI. Connection stores it as "
"`ext.keboola.cli.` (CLI and REPL) or `ext.keboola.cli.serve` (serve). It records the "
"command name, the outcome and the duration, never argument values, and never changes a "
"command's exit code. Turn it off with `KBAGENT_DISABLE_TELEMETRY=1` or `DO_NOT_TRACK=1`. "
"The local-only `context`, `changelog` and `version` commands never post, `serve` logs "
"only mutating requests, and a session (`auth login`) project is covered without ever "
"triggering a token refresh.",
"Fix (#700): the commands that resolve a default project now honor the `project use` pin "
"when `--project` is omitted, not the first registered project. This covers the `kai` "
"group, `docs query`, `component detail`, `component list --query`, `config examples` and "
"`config new` (scaffold). The cascade is `--project`, then `KBAGENT_PROJECT`, then the "
"`project use` pin, then the sole project. With several registered projects and no pin "
"these now exit 5 (`CONFIG_ERROR`) asking for `--project` instead of guessing. The same "
"fix applies over `kbagent serve`.",
"Note (#703, #724, #739): housekeeping with no user-facing change. Internal groundwork for "
"merge requests (the Layer 2 service, no commands yet), an agent-docs cleanup, and the "
"move to ruff 0.16 as the linter.",
],
"0.92.0": [
"New (#719): `kbagent flow triggers --project P --flow-id ID` answers what actually "
"starts a flow -- cron schedules AND table triggers in one call. A table trigger is a "
Expand Down
2 changes: 1 addition & 1 deletion src/keboola_agent_cli/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ def _resolve_app_name() -> str:
ENV_KBC_LOGIN_TOTP_SECRET: str = "KBC_LOGIN_TOTP_SECRET"
ENV_CONVERSATION_ID: str = "KBAGENT_CONVERSATION_ID"

# --- Command telemetry (since vNEXT) ---
# --- Command telemetry (since 0.93.0) ---
# Per-invocation usage event posted best-effort to the project's own Storage
# events (POST /v2/storage/events), the same mechanism the kbc CLI uses. It is
# NOT the audit trail: mutations are recorded server-side by Connection
Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.