callkaro-cli-unofficial 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +67 -3
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -2,11 +2,12 @@
2
2
 
3
3
  An unofficial fork of the [CallKaro CLI](https://www.npmjs.com/package/@callkaro-official/cli). It installs as `cku`, so it sits alongside the official `ck` without either one overwriting the other.
4
4
 
5
- Manage voice agents, calls, phone numbers, batch campaigns, simulations and analytics from the terminal.
5
+ Manage voice agents, calls, phone numbers, batch campaigns, simulations and analytics from the terminal — plus the dashboard side, which the official CLI doesn't reach at all.
6
6
 
7
7
  ```
8
8
  cku agents list
9
9
  cku calls make --agent <id> --to <number> --test
10
+ cku kpi tasks --severity "Very High" --column action_items
10
11
  cku accounts use tejas@acme.com
11
12
  ```
12
13
 
@@ -14,12 +15,12 @@ cku accounts use tejas@acme.com
14
15
 
15
16
  ## Why this exists
16
17
 
17
- Three reasons, all of them things the official CLI can't do.
18
-
19
18
  **It doesn't fight the official CLI for a name.** Both packages write to the same global `node_modules/.bin`. If both were called `ck`, whichever npm install ran last would silently take over. You'd type `ck`, get official behaviour, and get no signal anything had changed. `cku` cannot collide.
20
19
 
21
20
  **It holds several accounts at once.** The official CLI keeps one session. This one keeps a file per account, and can pin an account to a folder, so two agents working in two directories can't switch each other out from under themselves.
22
21
 
22
+ **It reaches the dashboard API.** The official CLI only talks to `/cli/*`. That leaves the KPI board, the call analyzers, and the server's own model catalogue unreachable from a terminal — [`cku kpi`](#only-in-cku) is the whole of that surface.
23
+
23
24
  **It fixes three upstream bugs.** Details and evidence in [`docs/BUG-REPORT.md`](docs/BUG-REPORT.md).
24
25
 
25
26
  ---
@@ -120,6 +121,69 @@ My own first port of this fix had a worse version of the same bug: I merged agai
120
121
 
121
122
  ---
122
123
 
124
+ ## Only in `cku`
125
+
126
+ Commands and capabilities the official CLI does not have at all. Not bug fixes — surface area.
127
+
128
+ ### The KPI manager and the pending-task board
129
+
130
+ The official `ck` has **no KPI commands whatsoever**. This is the only way to reach the board from a terminal.
131
+
132
+ ```bash
133
+ cku kpi tasks --severity "Very High" --column action_items --since 7d
134
+ cku kpi show "<taskId>" # cause, recommended fix, metric impact
135
+ cku kpi create --cause "…" --fix "…" --severity High
136
+ cku kpi move "<taskId>" in_progress
137
+ cku kpi comment "<taskId>" "Fixed in v3"
138
+ cku kpi assign "<taskId>" --to "Name" # or --to ai_fde
139
+ cku kpi target --agent <id> --value 25
140
+ cku kpi rca --agent <id> --since 2026-09-01 --until 2026-09-30
141
+ ```
142
+
143
+ There is **no delete** for a card — the board retires one by moving it to `rejected`, which is reversible. Only `description` is editable after creation; `cause`, fix and severity are fixed at create, so correcting one means creating a replacement.
144
+
145
+ `GET /pending-tasks` returns every column including `done` and `rejected`, so a closed card is not a gone card. The list prints a **COLUMN** column for exactly that reason, and `--column` filters on it.
146
+
147
+ ### The dashboard credential
148
+
149
+ ```bash
150
+ cku dashboard login # separate from `cku login`, and expires after 24h
151
+ cku dashboard whoami
152
+ cku dashboard probe # which dashboard routes this token reaches
153
+ ```
154
+
155
+ The dashboard API needs a *different* token from `/cli/*` — they're not interchangeable, and each rejects the other with an opaque 401. This also unlocks `cku analyzers` and `cku models`. Passwords are never written to disk.
156
+
157
+ ### Knowing which models are actually valid
158
+
159
+ ```bash
160
+ cku models # per slot, and which field each governs
161
+ cku models --slot agent
162
+ ```
163
+
164
+ Models are scoped per slot and **the slots disagree**: `agent` has 44, `post-call` has 9 and excludes `gpt-4o` and `o4-mini`. So the same value is valid in `model` and refused in `postcallmodel`. Works with or without a dashboard session, and says which source it read.
165
+
166
+ ### A catalogue that can't silently rot
167
+
168
+ The provider tables, and now the model lists, are regenerated from the server rather than hand-copied:
169
+
170
+ ```bash
171
+ npm run catalog:sync # refresh from the bundle + the live server
172
+ npm run catalog:check # fail if catalog.json disagrees with the snapshot
173
+ ```
174
+
175
+ `catalog:check` runs offline against a committed snapshot, so it works in CI with no credentials. On 1 October 2026 it caught shipped tables that listed withdrawn models *and* missed live ones in both directions. A wrong voice model otherwise persists silently and only surfaces as a broken call.
176
+
177
+ ### Smaller things
178
+
179
+ - `cku calls logs` — grep/awk/sed over the raw call log, in-process, no subprocess and no shell
180
+ - `cku accounts status` — reports which account is in effect **and where that choice came from**
181
+ - Per-project binding, so parallel agents can't redirect each other
182
+ - `secrets set` without the value on the command line
183
+ - `--json` that stays unpaged for scripting, with human tables paged
184
+
185
+ ---
186
+
123
187
  ## Staying current
124
188
 
125
189
  A daily workflow checks npm for a newer `@callkaro-official/cli` and, when it finds one, regenerates the provider catalogue and opens a PR onto the `official` branch. It never merges anything itself.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "callkaro-cli-unofficial",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Unofficial fork of the CallKaro CLI \u2014 manage your voice AI agents from the terminal",
6
6
  "bin": {