@seclai/cli 1.5.0 → 1.6.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/CHANGELOG.md +15 -8
- package/README.md +12 -9
- package/dist/cli.js +235 -336
- package/package.json +3 -1
- package/dist/cli.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [1.5.0] - 2026-
|
|
3
|
+
## [1.5.0] - 2026-08-06
|
|
4
4
|
|
|
5
5
|
### Changed
|
|
6
6
|
|
|
7
7
|
- Require `--step-type` on `agents ai history`. The API marks the parameter required and the command had no way to supply it, so every call answered 422 — the command could not succeed before and the requirement breaks nothing. `--step-id`, `--limit` and `--offset` are now accepted as well
|
|
8
8
|
- Deprecate `agents runs delete`. It never deleted anything — the endpoint it calls is the cancel endpoint, and the API has no delete-a-run operation — so it now warns on stderr and cancels. stdout stays `{"ok": true}`; use `agents runs cancel`, which prints the cancelled run
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
9
|
+
- Reject a `--page`, `--limit` or `--offset` that is not a non-negative whole number at parse time, instead of sending `NaN` and reporting the server's 422. Hex and exponent literals are rejected too: `--limit 0x10` used to be read as 16
|
|
10
|
+
- Split the installed skill into a short index plus per-domain references, so an agent loads a command map rather than every command. `skills install` now writes 12 files instead of 4, and the set is discovered from disk rather than hard-coded
|
|
11
|
+
- Generate the shell completion scripts from the command tree rather than three hand-maintained copies, so every command is offered at every depth in bash, zsh and fish
|
|
12
|
+
- Reject an empty `--api-key`, `--profile`, `--account-id` or `--config-dir` when a command builds a client, rather than for every command — `completion`, `skills install`, `mcp show` and `configure` resolve no identity and are unaffected
|
|
12
13
|
- Require `@seclai/sdk` 1.5.0
|
|
13
14
|
|
|
14
15
|
### Added
|
|
15
16
|
|
|
16
|
-
- Add an `--api-version <date>` global option, sent as the `Seclai-Version` header, opting into dated API changes released on or before that date. Omitted by default, so upgrading the CLI alone never changes a command's output. `SECLAI_API_VERSION` sets it for a shell, and `--allow-unknown-api-version` permits a date this release was not built against
|
|
17
|
-
- Add `api-version get`, `api-version set <date>` and `api-version clear` to read the version a request resolves to and to pin or clear the account's version. `set` rejects
|
|
17
|
+
- Add an `--api-version <date>` global option, sent as the `Seclai-Version` header, opting into dated API changes released on or before that date. Omitted by default, so upgrading the CLI alone never changes a command's output. `SECLAI_API_VERSION` sets it for a shell, and `--allow-unknown-api-version` permits a date this release was not built against. An empty value is warned about and ignored rather than silently adopting `SECLAI_API_VERSION`
|
|
18
|
+
- Add `api-version get`, `api-version set <date>` and `api-version clear` to read the version a request resolves to and to pin or clear the account's version. `set` rejects a version this release was not built against — the pin applies to every client on the account and nothing re-checks it afterwards, so it is held to the same standard as the `--api-version` header, with `--allow-unknown-api-version` as the same escape hatch
|
|
18
19
|
- Add the `email` command group covering agent email: `domains` (list, add, remove, verify, set-primary, use-shared, test-email, dmarc), `blocked` (list, add, remove, auto-block-mode), `inbound` (status, rejections, cancel-queued, resume) and `optouts` (list, remove)
|
|
19
20
|
- Add `agents disable` and `agents enable` to pause and resume an agent across every trigger path, and `agents callers` to list the live agents that call it via a `call_agent` step
|
|
20
21
|
- Add `agents triggers email-config` to set the alias, sender allowlist and inbound-handling flags on an `EMAIL_RECEIVED` trigger
|
|
@@ -22,13 +23,19 @@
|
|
|
22
23
|
- Add `docs search` for keyword or semantic search over the Seclai documentation. `--mode` accepts `keyword` or `semantic` and rejects anything else at parse time
|
|
23
24
|
- Add `models tiers`, mapping each media-generation modality and tier to its model and cost
|
|
24
25
|
- Add `--supports-input-media` and `--supports-output-media` filters to `models list`
|
|
25
|
-
- Add `--paged` to `evals criteria list`, wrapping the results in `{data: [...]}`
|
|
26
|
+
- Add `--paged` to every list whose shape is version-gated — `evals criteria list`, `alerts configs list`, `models alerts list` and `agents runs eval-results` — wrapping the results in `{data: [...]}` so `.data` reads the same whatever `--api-version` is in effect. Without it, opting into `2026-07-27` renames `configs` and `alerts` to `data` and a script reading the old key gets `null` with exit 0
|
|
27
|
+
|
|
28
|
+
### Removed
|
|
29
|
+
|
|
30
|
+
- Remove `--severity` from `alerts list`. `GET /alerts` declares no such filter, so it never filtered — it returned unfiltered rows that looked filtered, and became a 422 once `--api-version` was `2026-07-27` or later. Filter client-side: `seclai alerts list | jq '[.data[] | select(.severity == "high")]'`
|
|
26
31
|
|
|
27
32
|
### Fixed
|
|
28
33
|
|
|
29
34
|
- Reject an empty `--api-key`, `--profile`, `--account-id` or `--config-dir` instead of acting as an identity the caller never named. A shell expanding an unset variable passes `""`, which the SDK's credential chain discards, so each silently resolved elsewhere: `--api-key` to `SECLAI_API_KEY` and then a cached SSO session, `--config-dir` to another account's cached tokens, `--account-id` to the default org, `--profile` to the built-in SSO defaults. The command then exited 0, having read or written somewhere other than where it was pointed. Guard the flag rather than the value — `seclai ${KEY:+--api-key "$KEY"} …`
|
|
30
35
|
- Ship current skill content from `skills install`. The files it writes are string constants compiled into the CLI, regenerated by a script that nothing ran, so since March it had been installing a skill that documented a since-removed flag and none of the commands added after 1.1.0
|
|
31
|
-
-
|
|
36
|
+
- Cancel a run. `agents runs cancel` posted to a path the API has never exposed, so it failed in every release since 1.0.4 — including for callers following this release's advice to use it instead of `agents runs delete`
|
|
37
|
+
- Return results from `agents runs eval-results`, which decoded a shape the endpoint does not send and so returned nothing
|
|
38
|
+
- Paginate `models alerts list`. It sent a page parameter the endpoint does not accept, so every page after the first repeated page 1
|
|
32
39
|
- Complete the `auth` and `configure` groups and their subcommands, and `models list` / `models get`, in bash, zsh and fish. All were reachable but absent from the generated completion scripts — including `configure sso`, the first command a new user runs
|
|
33
40
|
- Offer `--profile`, `--account-id` and `--config-dir` in the zsh and fish completions. They have been accepted as global options since 1.2.0 but were never suggested
|
|
34
41
|
|
package/README.md
CHANGED
|
@@ -42,7 +42,7 @@ npx add-mcp https://api.seclai.com/mcp --header "X-API-Key: $SECLAI_API_KEY" --n
|
|
|
42
42
|
|
|
43
43
|
## Documentation
|
|
44
44
|
|
|
45
|
-
Command reference (latest): https://seclai.github.io/seclai-cli/1.
|
|
45
|
+
Command reference (latest): https://seclai.github.io/seclai-cli/1.6.0/
|
|
46
46
|
|
|
47
47
|
## Authentication
|
|
48
48
|
|
|
@@ -153,9 +153,10 @@ seclai api-version clear # revert to the default
|
|
|
153
153
|
|
|
154
154
|
An `--api-version` this CLI was not built against is rejected, because a newer
|
|
155
155
|
version can reshape a response the CLI would then misread. Pass
|
|
156
|
-
`--allow-unknown-api-version` to send it anyway. `api-version set`
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
`--allow-unknown-api-version` to send it anyway. `api-version set` is held to
|
|
157
|
+
the same standard — it rejects a version this release was not built against,
|
|
158
|
+
with the same override — because the pin applies to every client on the account
|
|
159
|
+
and nothing re-checks it afterwards.
|
|
159
160
|
|
|
160
161
|
`--api-key`, `--profile`, `--account-id` and `--config-dir` reject an empty
|
|
161
162
|
value. A shell expanding an unset variable passes `""`, which the SDK discards,
|
|
@@ -229,7 +230,7 @@ seclai agents runs get <runId> [--include-step-outputs]
|
|
|
229
230
|
seclai agents runs cancel <runId>
|
|
230
231
|
seclai agents runs delete <runId> # deprecated alias for `runs cancel`
|
|
231
232
|
seclai agents runs search [--page N] [--limit N] [--json '...']
|
|
232
|
-
seclai agents runs eval-results <agentId> <runId> [--page N] [--limit N]
|
|
233
|
+
seclai agents runs eval-results <agentId> <runId> [--page N] [--limit N] [--paged]
|
|
233
234
|
# Download a file attachment emitted by a run step. attachmentId is the
|
|
234
235
|
# URL-safe-base64 storage_key from run output manifests / webhooks.
|
|
235
236
|
seclai agents runs download-attachment <runId> <attachmentId> [--download-name <name>] [--output <path>]
|
|
@@ -382,7 +383,9 @@ seclai evals criteria summary <criteriaId>
|
|
|
382
383
|
|
|
383
384
|
`--paged` wraps the results in `{"data": [...]}` instead of returning a bare
|
|
384
385
|
array, so `.data` is a stable path to read whatever `--api-version` is in
|
|
385
|
-
effect.
|
|
386
|
+
effect. The same flag is on `alerts configs list`, `models alerts list` and
|
|
387
|
+
`agents runs eval-results`, whose top-level keys (`configs`, `alerts`) also
|
|
388
|
+
become `data` from `2026-07-27`. Nothing is invented: the `pagination` block appears only once the API
|
|
386
389
|
sends one, from `--api-version 2026-07-27`. Migrate scripts to `.data` first,
|
|
387
390
|
then opt in to get `.pagination`.
|
|
388
391
|
|
|
@@ -458,9 +461,9 @@ seclai alerts subscribe <alertId>
|
|
|
458
461
|
seclai alerts unsubscribe <alertId>
|
|
459
462
|
```
|
|
460
463
|
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
+
There is no `--severity`: `GET /alerts` declares no such filter, so it never
|
|
465
|
+
filtered — it returned unfiltered rows that looked filtered. Filter client-side:
|
|
466
|
+
`seclai alerts list | jq '[.data[] | select(.severity == "high")]'`.
|
|
464
467
|
|
|
465
468
|
#### Alert Configurations
|
|
466
469
|
|