@kici-dev/compiler 0.5.0 → 0.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.
Files changed (70) hide show
  1. package/dist/cli.js +37 -7
  2. package/dist/commands/approve.d.ts +12 -0
  3. package/dist/commands/approve.js +5 -2
  4. package/dist/commands/compile.js +4 -2
  5. package/dist/commands/doctor.js +2 -2
  6. package/dist/commands/endpoints.js +4 -6
  7. package/dist/commands/held-run-client.d.ts +21 -1
  8. package/dist/commands/held-run-client.js +34 -15
  9. package/dist/commands/hook.js +22 -20
  10. package/dist/commands/index.d.ts +2 -0
  11. package/dist/commands/index.js +2 -1
  12. package/dist/commands/init.d.ts +9 -2
  13. package/dist/commands/init.js +43 -16
  14. package/dist/commands/login.js +1 -1
  15. package/dist/commands/orchestrators.js +3 -2
  16. package/dist/commands/reject.d.ts +12 -0
  17. package/dist/commands/reject.js +5 -2
  18. package/dist/commands/report/collect.d.ts +82 -0
  19. package/dist/commands/report/collect.js +234 -0
  20. package/dist/commands/report/identity.d.ts +48 -0
  21. package/dist/commands/report/identity.js +49 -0
  22. package/dist/commands/report/index.d.ts +63 -0
  23. package/dist/commands/report/index.js +119 -0
  24. package/dist/commands/report/upload.d.ts +38 -0
  25. package/dist/commands/report/upload.js +64 -0
  26. package/dist/commands/run-hold-watch.js +2 -2
  27. package/dist/commands/run.js +6 -3
  28. package/dist/commands/runs/show.js +80 -1
  29. package/dist/commands/types.js +51 -8
  30. package/dist/execution/sdk-alias.js +4 -2
  31. package/dist/fixtures/compiler.js +2 -1
  32. package/dist/format.js +3 -3
  33. package/dist/generators/secrets-dts.d.ts +8 -2
  34. package/dist/generators/secrets-dts.js +3 -2
  35. package/dist/hooks/installer.js +2 -1
  36. package/dist/llm-context/llms-architecture.txt +35 -13
  37. package/dist/llm-context/llms-cli.txt +142 -28
  38. package/dist/llm-context/llms-features-execution.txt +2017 -0
  39. package/dist/llm-context/llms-features.txt +298 -1483
  40. package/dist/llm-context/llms-full.txt +3008 -1698
  41. package/dist/llm-context/llms-getting-started.txt +145 -12
  42. package/dist/llm-context/llms-patterns.txt +176 -1
  43. package/dist/llm-context/llms-providers.txt +11 -27
  44. package/dist/llm-context/llms-sdk-runtime.txt +25 -4
  45. package/dist/llm-context/llms-sdk.txt +31 -1
  46. package/dist/llm-context/llms.txt +22 -14
  47. package/dist/local-plane/paths.d.ts +15 -0
  48. package/dist/local-plane/paths.js +22 -1
  49. package/dist/local-plane/plane-manager.js +2 -2
  50. package/dist/local-plane/port-holder.js +1 -1
  51. package/dist/local-plane/postgres.d.ts +3 -16
  52. package/dist/local-plane/postgres.js +10 -15
  53. package/dist/lockfile/generator.d.ts +12 -0
  54. package/dist/lockfile/generator.js +47 -14
  55. package/dist/postinstall.js +2 -1
  56. package/dist/remote/config.d.ts +2 -15
  57. package/dist/remote/config.js +2 -16
  58. package/dist/remote/dashboard-client.d.ts +39 -0
  59. package/dist/remote/dashboard-client.js +41 -0
  60. package/dist/remote/oauth.js +7 -5
  61. package/dist/remote/uploader.js +2 -2
  62. package/dist/templates/package-json.js +1 -1
  63. package/dist/test-runner/dry-run.js +4 -2
  64. package/dist/test-runner/git-detector.js +2 -1
  65. package/dist/test-runner/job-executor.js +2 -1
  66. package/dist/test-runner/payload-builder.js +11 -17
  67. package/dist/types.d.ts +33 -3
  68. package/dist/validation/validator.js +23 -6
  69. package/package.json +16 -11
  70. package/sbom.spdx.json +953 -901
@@ -340,8 +340,11 @@ kici logout
340
340
  This:
341
341
 
342
342
  1. Revokes the PAT on the server (preventing further use)
343
- 2. Clears auth fields from the local config file
344
- 3. Preserves non-auth settings (active org, default clusters, Platform endpoint)
343
+ 2. Detaches the local dev plane if it is attached, so a logged-out user is not left with a hybrid plane holding an orphaned orchestrator key
344
+ 3. Clears the auth fields from the local config file — the PAT, its id and expiry, your email, and the active organization
345
+ 4. Preserves the connection settings (per-org default clusters, Platform endpoint, orchestrator endpoint, OIDC issuer, routing key)
346
+
347
+ Server revocation is best-effort: if the network call fails, the local config is still cleared.
345
348
 
346
349
  ## Organization management
347
350
 
@@ -502,11 +505,13 @@ Every `/api/v1/*` mutation that touches tenant-plane data is recorded in the ups
502
505
 
503
506
  The CLI stores authentication data in `~/.kici/config` with `0600` permissions (owner read/write only). The config file contains:
504
507
 
505
- - PAT token
506
- - PAT expiry date
508
+ - PAT token, its server-side id, and its expiry date
509
+ - The email address from your OIDC token
507
510
  - Active organization ID
508
511
  - Per-org default orchestrator clusters
509
- - Platform endpoint URL
512
+ - Platform endpoint URL, orchestrator endpoint URL, and the OIDC issuer the PAT was minted against
513
+ - Routing key for webhook source identification
514
+ - API key, when you logged in with `--token`
510
515
 
511
516
  ## Troubleshooting
512
517
 
@@ -540,11 +545,11 @@ Two ways forward:
540
545
 
541
546
  A port below 1024 fails the same way, with a permissions message rather than an "in use" one: those ports need elevated privileges. Pick a port above 1024. A value that is not a port number at all — non-numeric, negative, or above 65535 — is rejected before the login starts, naming the value you set.
542
547
 
543
- ### Device flow timeout
548
+ ### Device code expired
544
549
 
545
550
  This is the device flow's own expiry, not the browser flow's callback timeout above.
546
551
 
547
- The device flow has a 5-minute timeout. If it expires:
552
+ The device code is issued by the identity provider, which also sets how long it lives. The CLI prints the lifetime with the code (`Code expires in N minutes`) and polls until you approve or the code expires. On expiry it stops with `Device code expired`. If that happens:
548
553
 
549
554
  - Run `kici login --device` again to get a new code
550
555
  - Ensure you're using the correct URL displayed by the CLI
@@ -605,7 +610,7 @@ The full command reference is split by area:
605
610
  - [Authoring & local dev](https://docs.kici.dev/user/cli/authoring-and-local/) — `compile`, `preview`, `local`, `fixture`, `types`, `workflows`, `hook`, `docs`
606
611
  - [Runs & approvals](https://docs.kici.dev/user/cli/runs-and-approvals/) — `run`, `runs`, `reject`, `approve`
607
612
  - [Account & org](https://docs.kici.dev/user/cli/account-and-org/) — `login`, `logout`, `init`, `org`, `pat`, `secrets`, `admin`, `orchestrators`, `endpoints`
608
- - [Notifications & diagnostics](https://docs.kici.dev/user/cli/notifications-and-diagnostics/) — `notifications`, `verify-attestation`, `diagnostics`, `doctor`
613
+ - [Notifications & diagnostics](https://docs.kici.dev/user/cli/notifications-and-diagnostics/) — `notifications`, `verify-attestation`, `diagnostics`, `doctor`, `report`
609
614
 
610
615
  Each area page carries a `## Guide` section (worked examples and command-by-command narrative) and a `## Reference` section (the always-current generated signature list for that area's commands).
611
616
 
@@ -1166,6 +1171,7 @@ Step entries carry their own capability flags, so the orchestrator can reason ab
1166
1171
 
1167
1172
  | Flag | Meaning |
1168
1173
  | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
1174
+ | `hasOutputs` | The step declares an output schema, so the run has typed outputs to record for it. Present on every step entry. |
1169
1175
  | `hasCheck` | The step declares an idempotent `check` facet, so a run can be dispatched in check mode. See [idempotent steps and check mode](https://docs.kici.dev/user/idempotent-steps/). |
1170
1176
  | `hasWhenInSync` | The step declares a `whenInSync` facet that produces its outputs when `check` reports no drift. |
1171
1177
  | `hasRules` | The step has conditional rules (evaluated agent-side). |
@@ -1787,7 +1793,7 @@ export const pushMain = fixture('push-main', {
1787
1793
 
1788
1794
  Source: https://docs.kici.dev/user/workflow-patterns/
1789
1795
 
1790
- Practical patterns for building real-world KiCI workflows in TypeScript. The patterns are organised across five pages -- start with [Basic CI](https://docs.kici.dev/user/patterns/basic/) if you're new, or jump to [Integrations](https://docs.kici.dev/user/patterns/integrations/) if you're wiring up a non-GitHub forge or a generic webhook.
1796
+ Practical patterns for building real-world KiCI workflows in TypeScript. The patterns are organised across seven pages -- start with [Basic CI](https://docs.kici.dev/user/patterns/basic/) if you're new, or jump to [Integrations](https://docs.kici.dev/user/patterns/integrations/) if you're wiring up a non-GitHub forge or a generic webhook.
1791
1797
 
1792
1798
  | Page | Covers |
1793
1799
  | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -1795,6 +1801,8 @@ Practical patterns for building real-world KiCI workflows in TypeScript. The pat
1795
1801
  | [Conditionals & matrix](https://docs.kici.dev/user/patterns/conditionals-matrix/) | Conditional execution with rules, matrix builds (static + dynamic), and dynamic job generation. |
1796
1802
  | [Integrations](https://docs.kici.dev/user/patterns/integrations/) | Workflow chaining, generic webhooks, Stripe handlers, self-hosted git forges (Forgejo / Gitea / Gogs), plain GitHub repo webhooks (no GitHub App). |
1797
1803
  | [Scheduling & events](https://docs.kici.dev/user/patterns/scheduling-and-events/) | Nightly cron, workflow-complete-triggered deploys, custom event chaining. |
1804
+ | [Git credentials](https://docs.kici.dev/user/patterns/git-credentials/) | Declaring named git credentials from the secrets backend, and pushing from a job (including to the job's own repository). |
1805
+ | [Host restart](https://docs.kici.dev/user/patterns/host-restart/) | `restartHost()` and `waitForHostAlive()` -- reboot the host a workflow runs on and resume in a second job pinned to the same host. |
1798
1806
  | [Pattern reference](https://docs.kici.dev/user/patterns/reference/) | Step context, the examples repository, and GitHub check run output -- cross-cutting reference shared by every pattern above. |
1799
1807
 
1800
1808
  ## See also
@@ -2153,7 +2161,6 @@ Synopsis: `kici init [options]`
2153
2161
  | `--private-registry <url>` | | Scaffold a workflow registries: entry pointing at <url> |
2154
2162
  | `--private-registry-scope <scope>` | | Optional npm package scope (e.g. @my-org) for the private registry |
2155
2163
  | `--private-registry-secret <ref>` | `production:NPM_TOKEN` | Qualified secret reference (env:NAME) the private registry token comes from |
2156
- | `--use-verdaccio-local` | `false` | |
2157
2164
 
2158
2165
  ### `kici login`
2159
2166
 
@@ -2428,7 +2435,7 @@ Generate a fixture template for an event type. Useful for creating custom test p
2428
2435
  kici fixture <event> [options]
2429
2436
  ```
2430
2437
 
2431
- **Valid events:** `pr:open`, `pr:sync`, `pr:close`, `pr:reopen`, `push`, `tag`, `comment`, `review`, `review_comment`, `release`, `dispatch`, `create`, `delete`, `status`, `workflow_run`, `fork`, `star`, `watch`, `kici_event`, `workflow_complete`, `job_complete`, `generic_webhook`, `schedule`, `lifecycle` (many support `:action` suffixes, e.g. `comment:edited`, `release:published`, `lifecycle:workflow_complete`). `webhook:<source>` is a shorthand alias for `generic_webhook:<source>`.
2438
+ **Valid events:** `pr:open`, `pr:sync`, `pr:close`, `pr:reopen`, `push`, `tag`, `comment`, `review`, `review_comment`, `release`, `dispatch`, `create`, `delete`, `status`, `workflow_run`, `fork`, `star`, `watch`, `kici_event`, `workflow_complete`, `workflows_failed_batch`, `job_complete`, `generic_webhook`, `schedule`, `lifecycle` (many support `:action` suffixes, e.g. `comment:edited`, `release:published`, `lifecycle:workflow_complete`). `webhook:<source>` is a shorthand alias for `generic_webhook:<source>`.
2432
2439
 
2433
2440
  **Examples:**
2434
2441
 
@@ -2458,7 +2465,7 @@ Generate TypeScript declaration files from orchestrator environment metadata. Th
2458
2465
  kici types [options]
2459
2466
  ```
2460
2467
 
2461
- **Prerequisites:** Must be authenticated via `kici login`.
2468
+ **Prerequisites:** Authenticate via `kici login` to fetch the real key set. Without it, `kici types` writes an empty stub (see "Offline behavior" below).
2462
2469
 
2463
2470
  **Output:** `.kici/types/secrets.d.ts`
2464
2471
 
@@ -2480,7 +2487,9 @@ kici types --kici-dir packages/app/.kici
2480
2487
 
2481
2488
  After generating types, `ctx.secrets.get('MY_KEY')` and `ctx.secrets.expose('DB_HOST')` gain autocomplete and type checking in your IDE.
2482
2489
 
2483
- **Git workflow:** Commit the generated `.kici/types/secrets.d.ts` so team members get type checking without needing orchestrator access. Run `kici types` to refresh when environments change.
2490
+ **Git workflow:** `.kici/types/secrets.d.ts` is a local development aid, not source its content is a snapshot of one org's secret keys fetched from the Platform. `kici init` gitignores `.kici/types/`, so the file stays out of version control. Each team member runs `kici types` (or an authenticated `kici compile`) to generate their own copy. Do not commit it: a stale committed copy would type-check against secret keys that no longer exist.
2491
+
2492
+ **Offline behavior:** When the Platform cannot be reached — not logged in, no active org, or offline — `kici types` never fails. If a `secrets.d.ts` already exists, `kici types` keeps it untouched, so a transient outage does not wipe your real key set. If the file is absent (a fresh clone or unauthenticated CI), `kici types` writes a valid empty stub. Type checking then degrades to "no known keys" (any key name is accepted) rather than breaking with "module has no exported member". Run `kici types` again once authenticated to refresh it.
2484
2493
 
2485
2494
  **Auto-regeneration:** `kici compile` automatically runs `kici types` after successful compilation when authenticated. See the [kici compile](https://docs.kici.dev/user/cli/authoring-and-local/#kici-compile) section for details.
2486
2495
 
@@ -2565,7 +2574,7 @@ kici docs llm sdk | claude -- "Read this and help me author a deploy workflow"
2565
2574
  kici docs llm --out kici-llms-index.txt
2566
2575
  ```
2567
2576
 
2568
- Bundles are regenerated from `docs/` every time `@kici-dev/compiler` is built, so they always match your installed CLI version. The index lists each task bundle — `getting-started`, `sdk`, `sdk-runtime`, `cli`, `patterns`, `features`, `providers`, `architecture` — with its size and a one-line purpose; pass the bundle id as the topic. Every cross-reference link inside a bundle is an absolute `docs.kici.dev` URL. The same files are published online following the [llms.txt convention](https://llmstxt.org/).
2577
+ Bundles are regenerated from `docs/` every time `@kici-dev/compiler` is built, so they always match your installed CLI version. The index lists each task bundle — `getting-started`, `sdk`, `sdk-runtime`, `cli`, `patterns`, `features`, `features-execution`, `providers`, `architecture` — with its size and a one-line purpose; pass the bundle id as the topic. Every cross-reference link inside a bundle is an absolute `docs.kici.dev` URL. The same files are published online following the [llms.txt convention](https://llmstxt.org/).
2569
2578
 
2570
2579
  ## Reference
2571
2580
 
@@ -2963,9 +2972,9 @@ kici diagnostics --json
2963
2972
  Walk your KiCI setup end to end and print the exact next command for each
2964
2973
  problem found. Where `kici diagnostics` shows the org's infrastructure, `kici
2965
2974
  doctor` checks **your own setup**: it runs six checks in onboarding order —
2966
- login (stored, unexpired credentials), active organization, a live token probe
2967
- against the platform, a connected orchestrator for the org, a present, fresh,
2968
- and committed lock file, and whether every workflow's `runsOn` labels are
2975
+ login (stored, unexpired credentials), active organization, a present, fresh,
2976
+ and committed lock file, a live token probe against the platform, a connected
2977
+ orchestrator for the org, and whether every workflow's `runsOn` labels are
2969
2978
  satisfiable by a connected agent or scaler. Each check reports pass/warn/fail
2970
2979
  with the fix command (e.g. `kici login`, `kici org use <name>`,
2971
2980
  `kici compile`), so the first failing row tells you exactly what to run next.
@@ -2987,6 +2996,60 @@ kici doctor --json
2987
2996
  The command exits `0` when every check passes, `1` when any check warns, and
2988
2997
  `2` when any check fails, so it also works as a CI preflight.
2989
2998
 
2999
+ ### kici report
3000
+
3001
+ Gather a diagnostic bundle to share when you report a problem. `kici doctor`
3002
+ tells you what is wrong; `kici report` packages the context somebody else needs
3003
+ to see it. The bundle holds your CLI, Node and orchestrator versions, your
3004
+ redacted configuration, and your project's workflow and lock-file state. With
3005
+ `--run` it also holds the failing run's detail and logs.
3006
+
3007
+ ```bash
3008
+ kici report [options]
3009
+ ```
3010
+
3011
+ The command writes a ZIP and prints its path and `sha256`. It does not send
3012
+ anything. Open the file and read it before you share it.
3013
+
3014
+ ```bash
3015
+ # Bundle your setup
3016
+ kici report
3017
+
3018
+ # Scope it to the run that failed, and say what went wrong
3019
+ kici report --run 8f3c1d2e --message "matrix job hangs on macOS"
3020
+
3021
+ # Choose the output path and attach your own metadata
3022
+ kici report -o /tmp/bug.zip --metadata ticket=1234 --metadata severity=high
3023
+ ```
3024
+
3025
+ **Redaction.** KiCI removes known secret shapes — API keys, tokens, `Authorization`
3026
+ headers, private keys, passwords in connection URLs — from configuration and
3027
+ from log text. This is best effort. A secret in a format KiCI does not
3028
+ recognize can survive, so review the bundle before you share it. `--no-redact`
3029
+ turns redaction off and prints a warning; use it only on a bundle you keep.
3030
+
3031
+ **Sending it privately.** Add `--upload` to send the bundle to KiCI over a
3032
+ one-time upload link. The bundle goes straight to KiCI storage, and the command
3033
+ prints a reference id to quote:
3034
+
3035
+ ```bash
3036
+ kici report --run 8f3c1d2e --upload --message "matrix job hangs on macOS"
3037
+ ```
3038
+
3039
+ Uploads are private, are kept for 90 days, and are yours to withdraw:
3040
+
3041
+ ```bash
3042
+ # See what you have sent
3043
+ kici report list
3044
+
3045
+ # Delete an uploaded bundle
3046
+ kici report withdraw <ref>
3047
+ ```
3048
+
3049
+ Anyone in your organization can upload a report. By default you see and
3050
+ withdraw your own; a member with the `support:admin` permission can manage
3051
+ every report in the organization.
3052
+
2990
3053
  ## Reference
2991
3054
 
2992
3055
  <!-- BEGIN GENERATED: kici-notifications-and-diagnostics (do not edit; run the doc generator) -->
@@ -3194,6 +3257,49 @@ Synopsis: `kici notifications subscriptions remove <id> [options]`
3194
3257
  | ------------ | ------- | ---------------------------------------------- |
3195
3258
  | `--org <id>` | | Target organization (overrides the active org) |
3196
3259
 
3260
+ ### `kici report`
3261
+
3262
+ Gather a redacted diagnostic bundle to share when reporting an issue
3263
+
3264
+ Synopsis: `kici report [options]`
3265
+
3266
+ **Options**
3267
+
3268
+ | Option | Default | Description |
3269
+ | ------------------------ | ------- | ------------------------------------------------------------ |
3270
+ | `--run <id>` | | Scope the bundle to a failing run |
3271
+ | `-o, --output <path>` | | Where to write the bundle ZIP |
3272
+ | `--metadata <key=value>` | | Attach metadata (repeatable) |
3273
+ | `--no-redact` | | Do NOT redact secrets (prints a loud warning) |
3274
+ | `--upload` | | Upload the bundle privately to KiCI and print a reference id |
3275
+ | `--message <text>` | | Describe the problem (sent with --upload) |
3276
+ | `--email <address>` | | Contact address for follow-up (sent with --upload) |
3277
+ | `--kici-dir <path>` | `.kici` | Path to the .kici directory |
3278
+
3279
+ ### `kici report list`
3280
+
3281
+ List the issue reports you have uploaded
3282
+
3283
+ Synopsis: `kici report list [options]`
3284
+
3285
+ **Options**
3286
+
3287
+ | Option | Default | Description |
3288
+ | -------- | ------- | --------------- |
3289
+ | `--json` | `false` | Output raw JSON |
3290
+
3291
+ ### `kici report withdraw`
3292
+
3293
+ Withdraw an uploaded report and delete its bundle
3294
+
3295
+ Synopsis: `kici report withdraw <ref>`
3296
+
3297
+ **Arguments**
3298
+
3299
+ | Argument | Required | Variadic | Description |
3300
+ | -------- | -------- | -------- | -------------------------------------- |
3301
+ | `ref` | yes | no | Reference id of the report to withdraw |
3302
+
3197
3303
  ### `kici verify-attestation`
3198
3304
 
3199
3305
  Verify a KiCI provenance attestation bundle offline
@@ -3509,7 +3615,11 @@ kici runs list --json | jq '.runs[].runId'
3509
3615
  #### kici runs show
3510
3616
 
3511
3617
  Show a run's summary header plus its jobs-and-steps tree (name, status,
3512
- duration, exit code). If the run id is not on the Platform but exists in your
3618
+ duration, exit code). A run that never started a step also prints why: the
3619
+ run-level failure, and per job the reason it did not run — a job a
3620
+ [context](https://docs.kici.dev/user/contexts/#protection-rules) rejected names the context and the
3621
+ rule. Any approval hold on the run is listed too, with its context, hold type,
3622
+ status and reason. If the run id is not on the Platform but exists in your
3513
3623
  local run history (from `kici run <event> --local`), the local record is shown instead.
3514
3624
 
3515
3625
  ```bash
@@ -3690,10 +3800,12 @@ Synopsis: `kici approve <run-id> [options]`
3690
3800
 
3691
3801
  **Options**
3692
3802
 
3693
- | Option | Default | Description |
3694
- | ---------------- | ------- | ------------------------------------------- |
3695
- | `--job <name>` | | Approve the hold for a specific job |
3696
- | `--step <index>` | | Approve a step-scoped hold (requires --job) |
3803
+ | Option | Default | Description |
3804
+ | -------------------- | ------- | -------------------------------------------------------------------------------------------- |
3805
+ | `--job <name>` | | Approve the hold for a specific job |
3806
+ | `--step <index>` | | Approve a step-scoped hold (requires --job) |
3807
+ | `--hold-type <type>` | | Approve the hold of this type (reviewer, timer, concurrency, security) — a job can carry two |
3808
+ | `--hold <id>` | | Approve one hold by its id, as listed when nothing else separates them |
3697
3809
 
3698
3810
  ### `kici reject`
3699
3811
 
@@ -3709,11 +3821,13 @@ Synopsis: `kici reject <run-id> [options]`
3709
3821
 
3710
3822
  **Options**
3711
3823
 
3712
- | Option | Default | Description |
3713
- | ----------------- | ------- | ------------------------------------------ |
3714
- | `--job <name>` | | Reject the hold for a specific job |
3715
- | `--step <index>` | | Reject a step-scoped hold (requires --job) |
3716
- | `--reason <text>` | | Reason for the rejection |
3824
+ | Option | Default | Description |
3825
+ | -------------------- | ------- | ------------------------------------------------------------------------------------------- |
3826
+ | `--job <name>` | | Reject the hold for a specific job |
3827
+ | `--step <index>` | | Reject a step-scoped hold (requires --job) |
3828
+ | `--hold-type <type>` | | Reject the hold of this type (reviewer, timer, concurrency, security) — a job can carry two |
3829
+ | `--hold <id>` | | Reject one hold by its id, as listed when nothing else separates them |
3830
+ | `--reason <text>` | | Reason for the rejection |
3717
3831
 
3718
3832
  ### `kici run`
3719
3833
 
@@ -3911,7 +4025,7 @@ Synopsis: `kici runs rerun <run-id> [options]`
3911
4025
 
3912
4026
  ### `kici runs show`
3913
4027
 
3914
- Show a run summary with its jobs and steps
4028
+ Show a run summary with its jobs and steps, why a job did not run, and any approval hold
3915
4029
 
3916
4030
  Synopsis: `kici runs show <run-id> [options]`
3917
4031