kaloko 0.12.1 → 0.13.0
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.
- package/README.md +11 -5
- package/package.json +2 -2
- package/skills/kaloko/SKILL.md +10 -1
- package/skills/kaloko/reference/ci.md +8 -0
- package/skills/kaloko/reference/documentation.md +4 -2
- package/skills/kaloko/reference/mcp.md +13 -5
- package/skills/kaloko/reference/recording.md +4 -2
- package/src/cli.mjs +122 -63
- package/src/lib/build.mjs +1 -1
- package/src/lib/capture.mjs +12 -3
- package/src/lib/changelog-core.mjs +3 -1
- package/src/lib/cli-args.mjs +139 -0
- package/src/lib/design-cli.mjs +9 -9
- package/src/lib/design-export.mjs +1 -1
- package/src/lib/integrations-cli.mjs +5 -5
- package/src/lib/recording.mjs +10 -2
- package/src/lib/screens-cli.mjs +4 -2
- package/src/lib/service.mjs +37 -12
- package/src/lib/signoff.mjs +2 -2
- package/src/lib/spec-cli.mjs +3 -3
- package/src/lib/upload.mjs +1 -1
- package/src/lib/util.mjs +14 -1
- package/src/lib/video-cli.mjs +2 -2
- package/src/lib/video.mjs +2 -0
- package/viewer/index.html +79 -27
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Kaloko
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Your AI agents build; Kaloko walks every screen, puts it on one canvas and
|
|
4
|
+
records who approved what.
|
|
4
5
|
|
|
5
6
|
Your coding agent (Claude Code, Codex or any LLM with a shell) walks your
|
|
6
7
|
acceptance plan with the `kaloko` skill. Kaloko captures every screen and
|
|
@@ -169,6 +170,9 @@ messages. Click a row and the video jumps there. Web recordings need nothing
|
|
|
169
170
|
but Chrome (WebM with VP9); with ffmpeg installed you also get MP4 for Safari,
|
|
170
171
|
app recordings (Android `screenrecord`, iOS Simulator, macOS) and the
|
|
171
172
|
walkthrough export. `npx kaloko video tools` says what this machine has.
|
|
173
|
+
Videos play on: when one ends, the next step's video starts, and replay moves
|
|
174
|
+
to the next step by itself; a step that needs a decision waits for you, and a
|
|
175
|
+
step without video shows its screenshot for three seconds.
|
|
172
176
|
Recordings stay in the local preview on Free and Team; Business and Enterprise
|
|
173
177
|
share them with the run.
|
|
174
178
|
|
|
@@ -219,10 +223,12 @@ Every AI verdict comes with one sentence saying why. Criteria marked
|
|
|
219
223
|
`vision: true`, and answers the text evaluator is unsure about, get a second
|
|
220
224
|
look at the screenshot from a vision model (`ANTHROPIC_API_KEY`, or through
|
|
221
225
|
Kaloko); `kaloko build` lists what to act on with the score and the reason.
|
|
222
|
-
As an experiment
|
|
223
|
-
the kind of problem each screen and its recording
|
|
224
|
-
a raw translation key, an endless spinner);
|
|
225
|
-
into comments with one click, and findings
|
|
226
|
+
As an experiment an admin switches on under Settings → Security → Experiments,
|
|
227
|
+
Clef on Cloudflare also names the kind of problem each screen and its recording
|
|
228
|
+
show (overlap, cut-off text, a raw translation key, an endless spinner);
|
|
229
|
+
reviewers turn the right findings into comments with one click, and findings
|
|
230
|
+
never change a verdict. Triage counts against the hosted-evaluation allowance,
|
|
231
|
+
so it needs the Team plan or higher.
|
|
226
232
|
The `a11y` pack walks the page with Tab (order, visible focus, traps, skip
|
|
227
233
|
link) and reads names from the accessibility tree. Pixel diffs skip the
|
|
228
234
|
regions a step ignores; `kaloko walk --stability 3` and `kaloko stability`
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kaloko",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.13.0",
|
|
4
|
+
"description": "Your AI agents build; Kaloko walks every screen, puts it on one canvas and records who approved what.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"qa",
|
|
7
7
|
"acceptance-testing",
|
package/skills/kaloko/SKILL.md
CHANGED
|
@@ -20,7 +20,10 @@ description: >
|
|
|
20
20
|
trace read (actions, requests, console), and when a user-visible change
|
|
21
21
|
should land in the visual changelog (CHANGELOG.md with step references,
|
|
22
22
|
kaloko changelog draft, kaloko release) or a guide should show a step or
|
|
23
|
-
be written, translated or checked (kaloko docs check)
|
|
23
|
+
be written, translated or checked (kaloko docs check), when screenshots,
|
|
24
|
+
HTML or recordings must hide personal data (capture masks, pii: redact or
|
|
25
|
+
pseudonymize, kaloko share stopping on unmasked data), and when a run has
|
|
26
|
+
Clef triage findings (experimental) to read, mention or answer.
|
|
24
27
|
---
|
|
25
28
|
|
|
26
29
|
# Kaloko
|
|
@@ -128,6 +131,12 @@ only when a person says that value may be uploaded.
|
|
|
128
131
|
(`--heal`): [reference/execution.md](reference/execution.md)
|
|
129
132
|
- Evaluation, JEV thresholds, the vision evaluator and its reasons, reading
|
|
130
133
|
results: [reference/evaluation.md](reference/evaluation.md)
|
|
134
|
+
- Clef triage findings (experimental): what they are, how to report them apart
|
|
135
|
+
from the verdicts, `get_findings` and `answer_finding`:
|
|
136
|
+
[reference/evaluation.md#triage-findings-experimental](reference/evaluation.md#triage-findings-experimental)
|
|
137
|
+
- Hiding personal data in captures (`capture.mask`, `pii: redact`,
|
|
138
|
+
`pseudonymize`, `pii: required` on an environment, the check before sharing):
|
|
139
|
+
[reference/acceptance.md#capture-quality](reference/acceptance.md#capture-quality)
|
|
131
140
|
- Screenshots, walkthroughs, Playwright reports and traces that an agent or a
|
|
132
141
|
tool already produced, laid out as a run: [reference/import.md](reference/import.md)
|
|
133
142
|
- Video of a step or a whole flow, traces (actions, requests, console) and the
|
|
@@ -65,6 +65,14 @@ in the newest shared run of the scenario count too, so a fresh CI checkout
|
|
|
65
65
|
maps routes as well as a laptop with earlier runs. See
|
|
66
66
|
[execution.md](execution.md#only-what-changed).
|
|
67
67
|
|
|
68
|
+
## Exit codes
|
|
69
|
+
|
|
70
|
+
Every command exits with `0` when it is done, `1` when checks found problems
|
|
71
|
+
or the command failed, and `2` on a usage error such as an unknown command or
|
|
72
|
+
option or a missing argument. A CI step can tell a broken workflow line (2)
|
|
73
|
+
from a failing check (1). `kaloko help <command>` or `kaloko <command> --help`
|
|
74
|
+
shows the options of one command.
|
|
75
|
+
|
|
68
76
|
## Done means
|
|
69
77
|
|
|
70
78
|
The workflow file and the config change are committed after the person agreed,
|
|
@@ -47,8 +47,10 @@ scenarios.
|
|
|
47
47
|
Settings → Integrations → Webhooks (admin): an https URL and the events
|
|
48
48
|
`run.accepted` and/or `run.shared`. Each call is a JSON POST
|
|
49
49
|
`{ id, type, created_at, org, data: { run, steps, steps_url, changes_url } }`
|
|
50
|
-
with `
|
|
51
|
-
signed with the webhook's secret (copy it from Settings).
|
|
50
|
+
with `Kaloko-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of "<t>.<body>">`
|
|
51
|
+
signed with the webhook's secret (copy it from Settings). The old
|
|
52
|
+
`QAwalk-Signature` header is still sent with the same value, so existing
|
|
53
|
+
receivers keep working; read `Kaloko-Signature` in new code. Verify the
|
|
52
54
|
signature and the time (reject older than 5 minutes), answer 2xx within 5
|
|
53
55
|
seconds, and do the work asynchronously. Also over the API:
|
|
54
56
|
`GET|POST /api/v1/orgs/<org>/webhooks`, `DELETE …/webhooks/<id>`.
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
`https://kaloko.app/mcp` speaks MCP over Streamable HTTP (JSON-RPC 2.0,
|
|
4
4
|
POST only, one message per request). Authenticate with an organization API
|
|
5
|
-
token as `Authorization: Bearer qwk_
|
|
6
|
-
|
|
5
|
+
token as `Authorization: Bearer qwk_…`. The server is part of the Team plan
|
|
6
|
+
and up. A read-only token is enough to read; tools that write need a token
|
|
7
|
+
with that scope, as noted below. Nothing binary crosses MCP: summaries carry the URLs of
|
|
7
8
|
screenshots and files, which the same token can fetch over HTTPS.
|
|
8
9
|
|
|
9
10
|
## Configure
|
|
@@ -28,6 +29,7 @@ file.
|
|
|
28
29
|
| `list_notifications` | the token owner's inbox (`unread_only`, `limit`) |
|
|
29
30
|
| `list_projects` | projects of the organization with counts; the slug is the `project` filter of `list_runs` and the value for `project:` in a scenario |
|
|
30
31
|
| `get_criteria_verdicts` | reviewer verdicts on manual or overridden criteria of a run |
|
|
32
|
+
| `get_stack_items` | the pages of a stack step (`run_id`, `step`; filters `status`, `criterion`, text): path, URL, title, status and failing criteria with evidence, screenshot URLs |
|
|
31
33
|
| `get_step_recording` | a step's recording and trace (`run_id`, `step`, `locale`, `viewport`, `trace: true` for the full trace): video URLs, duration, its chapter of a flow recording, failed attempts, the trace summary (failed requests, console errors, slowest request); see [recording.md](recording.md). `get_run_summary` lists trace summaries per step too |
|
|
32
34
|
| `get_review_queue` | what a person still has to decide in a run (`run_id`, or `scenario` / nothing for the newest run): steps in review order with reasons, decisions, approvals carried over unchanged steps with their origin, counts and `review_url` to give the person |
|
|
33
35
|
| `decide_step` | records your (the agent's) decision on a step: `approve`, or `return` with a `note`; marked as an agent's and not counted as a person's. Never use it to approve for a person |
|
|
@@ -37,6 +39,8 @@ file.
|
|
|
37
39
|
| `get_changelog` | the visual changelog of a product (`product`, `version`, `resolve: true` for the pictures, `limit`): releases newest first with the entry as written and its groups; see [docs.md](docs.md) |
|
|
38
40
|
| `draft_changelog_entry` | what accepted runs since the last release (or `since`) show differently, as a Keep a Changelog draft with before/after step references (`product`, `since`) |
|
|
39
41
|
| `resolve_step_image` | one step reference (`ref` = `kaloko:<scenario>/<step>?…`, `product`, `version`, `locale`, `viewport`) as a signed image URL with its run, how the version was found and canvas links |
|
|
42
|
+
| `get_docs` | a product's published docs (`product`; without `path` the versions, languages and sidebar; with `path` one page with its Markdown, sections, stale sections and, with `resolve: true`, its pictures) |
|
|
43
|
+
| `docs_check` | what needs attention in the published docs of a version: broken step references, references without an accepted picture, stale sections, missing or outdated translations, release items without a picture |
|
|
40
44
|
| `list_step_changes` | documentation layer: steps whose capture or status changed since the previous accepted run or `since` (`scenario`, `since`, `accepted`); see [documentation.md](documentation.md) |
|
|
41
45
|
| `get_started` | where the organization stands (`empty`, `sample`, `active`), its sample run, the next steps and a prompt; call it in a new project, see [first-run.md](first-run.md) |
|
|
42
46
|
| `add_sample_run` | adds the sample run (or returns the one there is); needs an upload or full token and the Developer / Tester role |
|
|
@@ -51,6 +55,8 @@ file.
|
|
|
51
55
|
| `add_comment` | comment on a step (`run_id` + `step`), the whole run (`run_id`) or the whole flow (`scenario`); `parent_id` replies; optional `pin` `{ x, y, viewport }` or `shape` (box or arrow in fractions, with `viewport` and `size`) |
|
|
52
56
|
| `list_ignore_regions` | regions people drew to leave out of pixel diffs, per step, with the `ignore:` entry each becomes (`kaloko stability --pull` writes them) |
|
|
53
57
|
| `add_ignore_region` | suggest such a region (`run_id`, `step`, `viewport`, `rect` in CSS px); Developer / Tester, scope upload or full |
|
|
58
|
+
| `get_findings` | experimental Clef triage findings of a run (`run_id`): the kind of problem on each screen or in recording frames, with probability, severity and box, and the answers testers gave. Findings never change a verdict |
|
|
59
|
+
| `answer_finding` | answers a finding (`run_id`, `node`, `locale`, `viewport`, `finding`, `kind`, `answer`: right, wrong or comment with the `comment_id` from `add_comment`); scope comment |
|
|
54
60
|
| `get_signoff_record` | the signed acceptance record of an accepted run (Business): approvals with provenance, criteria, capture hashes, signature |
|
|
55
61
|
| `resolve_comment` | close a thread with a `note` that says what changed (it becomes the last reply) |
|
|
56
62
|
| `reopen_comment`, `edit_comment`, `delete_comment` | reopen; edit or delete your own comment |
|
|
@@ -58,14 +64,16 @@ file.
|
|
|
58
64
|
| `list_issues` | issues created from steps with key, URL and state (`run_id`, `scenario`, `state`) |
|
|
59
65
|
| `list_schedules`, `run_schedule` | hosted runs: schedules of read-only scenarios on Kaloko's browsers with the month's page budget; start one now (`id`) |
|
|
60
66
|
|
|
61
|
-
Writes need a token with
|
|
67
|
+
Writes here need a token with the `comment` scope (or full); `add_ignore_region`
|
|
68
|
+
and `run_schedule` need upload or full. Follow *Processing feedback* in
|
|
62
69
|
[collaboration.md](collaboration.md).
|
|
63
70
|
|
|
64
71
|
Typical loop for an agent that owns a task: `list_runs` with the scenario →
|
|
65
72
|
`get_feedback` for the latest run → fix what was returned → new run with the
|
|
66
73
|
CLI (`kaloko start … share`) → post the canvas URL in the issue. Capturing,
|
|
67
|
-
evaluating and uploading stay in the CLI; MCP reads,
|
|
68
|
-
|
|
74
|
+
evaluating and uploading stay in the CLI; MCP reads, comments, records
|
|
75
|
+
decisions and answers to findings, creates issues, and for design drafts also
|
|
76
|
+
publishes versions and sets references and step status (below).
|
|
69
77
|
|
|
70
78
|
Errors come back as tool results with `isError: true` (unknown run, expired
|
|
71
79
|
run, missing argument); an invalid token is HTTP 401.
|
|
@@ -72,8 +72,10 @@ missing with the install command for the OS.
|
|
|
72
72
|
The step detail gets Video next to Screenshot: the poster first, nothing loads
|
|
73
73
|
until played, markers for the start, the capture, actions and failed requests.
|
|
74
74
|
Technical shows the trace; a click on a row moves the video there. Cards play
|
|
75
|
-
the preview on hover.
|
|
76
|
-
|
|
75
|
+
the preview on hover. Videos play on: after one ends, the next step's video
|
|
76
|
+
starts by itself, and replay with video moves to the next step on its own; a
|
|
77
|
+
step that needs a decision waits, a step without video shows its screenshot for
|
|
78
|
+
three seconds. The walkthrough video is in the top bar.
|
|
77
79
|
|
|
78
80
|
## Plans and sharing
|
|
79
81
|
|