car-runtime 0.52.0 → 0.52.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 (3) hide show
  1. package/docs/CLI.md +172 -50
  2. package/index.d.ts +17 -0
  3. package/package.json +1 -1
package/docs/CLI.md CHANGED
@@ -2,17 +2,17 @@
2
2
 
3
3
  > **Generated file — do not hand-edit below the task map.** Produced by
4
4
  > `scripts/gen-cli-docs.sh` from `car --help` / `car help <command>` on car
5
- > 0.51.0 (2026-09-03). Every subcommand the installed binary reports is
5
+ > 0.52.1 (2026-09-04). Every subcommand the installed binary reports is
6
6
  > below; a new subcommand cannot ship without appearing here the next time
7
7
  > this script runs. To regenerate: `bash scripts/gen-cli-docs.sh`.
8
8
  >
9
- > 66 top-level commands, 98 nested subcommands
9
+ > 68 top-level commands, 101 nested subcommands
10
10
  > (one level deep) — counted from the live binary at generation time, not
11
11
  > typed by hand.
12
12
 
13
13
  ## Finding your way around
14
14
 
15
- `car` is one binary with 66 subcommands spanning several different jobs:
15
+ `car` is one binary with 68 subcommands spanning several different jobs:
16
16
  running the built-in agent, coding, local model management, OS integrations,
17
17
  and installing other people's agents on your machine. This map groups the
18
18
  commands people actually reach for; the full alphabetical reference with every
@@ -163,11 +163,13 @@ commands on a cadence via launchd / cron / schtasks).
163
163
  | Command | Description |
164
164
  |---|---|
165
165
  | [`car info`](#car-info) | Show runtime info |
166
+ | [`car capabilities`](#car-capabilities) | Print the deterministic CAR capability manifest |
166
167
  | [`car ui`](#car-ui) | Open the browser dashboard served by the daemon |
167
168
  | [`car verify`](#car-verify) | Statically verify a proposal |
168
169
  | [`car simulate`](#car-simulate) | Simulate a proposal's state effects without executing |
169
170
  | [`car optimize`](#car-optimize) | Optimize a proposal (remove phantom dependencies) |
170
171
  | [`car replay`](#car-replay) | Replay an event journal and show reconstructed state |
172
+ | [`car run-cancel`](#car-run-cancel) | Cancel one active CAR run and print its deterministic durable receipt |
171
173
  | [`car run-task`](#car-run-task) | Run a goal autonomously against stdio MCP tool servers, emitting a JSONL transcript. Headless entry point for external eval harnesses |
172
174
  | [`car code-task`](#car-code-task) | Run a coder session headlessly and IN THIS PROCESS: derive or accept an outcome contract, work in a git worktree until the runtime's own re-run of that contract is green, then deliver the result as a pull request |
173
175
  | [`car coder-ab`](#car-coder-ab) | A/B-test CAR's coder against an external agent (Codex / Claude Code) over a corpus, and grow that corpus from git history — the productionized dogfooding loop (docs/proposals/coder-ab-dogfood.md) |
@@ -246,6 +248,19 @@ Options:
246
248
  -h, --help Print help
247
249
  ```
248
250
 
251
+ ### car capabilities
252
+
253
+ ```text
254
+ Print the deterministic CAR capability manifest
255
+
256
+ Usage: car capabilities [OPTIONS]
257
+
258
+ Options:
259
+ --json Emit machine-readable JSON
260
+ --md Emit generated Markdown (the default)
261
+ -h, --help Print help
262
+ ```
263
+
249
264
  ### car ui
250
265
 
251
266
  ```text
@@ -317,6 +332,23 @@ Options:
317
332
  -h, --help Print help
318
333
  ```
319
334
 
335
+ ### car run-cancel
336
+
337
+ ```text
338
+ Cancel one active CAR run and print its deterministic durable receipt
339
+
340
+ Usage: car run-cancel [OPTIONS] --run-id <RUN_ID> --idempotency-key <IDEMPOTENCY_KEY> --reason
341
+ <REASON>
342
+
343
+ Options:
344
+ --run-id <RUN_ID>
345
+ --idempotency-key <IDEMPOTENCY_KEY>
346
+ --reason <REASON>
347
+ --url <URL> [default: ws://127.0.0.1:9100/]
348
+ --json
349
+ -h, --help Print help
350
+ ```
351
+
320
352
  ### car run-task
321
353
 
322
354
  ```text
@@ -509,7 +541,7 @@ Usage: car coder-ab extract [OPTIONS] --out <OUT>
509
541
  Options:
510
542
  --repo <REPO>
511
543
  Repo to mine (default: current dir)
512
-
544
+
513
545
  [default: .]
514
546
 
515
547
  --out <OUT>
@@ -520,7 +552,7 @@ Options:
520
552
  rather than `python3 -m pytest -q`: `python3` does not exist on a standard Windows
521
553
  python.org install, and `python` is often absent on macOS/Linux — pytest's console script
522
554
  is the portable spelling
523
-
555
+
524
556
  [default: "pytest -q"]
525
557
 
526
558
  --path <PATH>
@@ -528,12 +560,12 @@ Options:
528
560
 
529
561
  --max <MAX>
530
562
  Limit to this many recent commits scanned
531
-
563
+
532
564
  [default: 50]
533
565
 
534
566
  --max-files <MAX_FILES>
535
567
  Skip a commit whose changed-file count exceeds this (keep tasks small)
536
-
568
+
537
569
  [default: 6]
538
570
 
539
571
  --full-tree
@@ -543,7 +575,7 @@ Options:
543
575
 
544
576
  --subject-filter <SUBJECT_FILTER>
545
577
  Keep only commits whose subject contains this substring (e.g. `fix(`).
546
-
578
+
547
579
  On a Rust repo this is close to required: a `feat` commit's test imports a symbol the
548
580
  commit itself adds, so it cannot compile at the pre-fix parent. Such tasks are rejected
549
581
  anyway, but only after a full tree materialize + build, which costs 30-200s each.
@@ -583,8 +615,8 @@ from stdin (keeps it out of shell history)
583
615
  Usage: car keys set <NAME> [VALUE]
584
616
 
585
617
  Arguments:
586
- <NAME>
587
- [VALUE]
618
+ <NAME>
619
+ [VALUE]
588
620
 
589
621
  Options:
590
622
  -h, --help Print help
@@ -609,7 +641,7 @@ Remove a stored provider key from the keychain
609
641
  Usage: car keys remove <NAME>
610
642
 
611
643
  Arguments:
612
- <NAME>
644
+ <NAME>
613
645
 
614
646
  Options:
615
647
  -h, --help Print help
@@ -724,7 +756,7 @@ Evaluate one local model without downloading or loading it
724
756
  Usage: car models preflight [OPTIONS] <MODEL_ID>
725
757
 
726
758
  Arguments:
727
- <MODEL_ID>
759
+ <MODEL_ID>
728
760
 
729
761
  Options:
730
762
  --context-tokens <CONTEXT_TOKENS> [default: 0]
@@ -739,7 +771,7 @@ Adopt an already-usable local artifact into CAR ownership
739
771
  Usage: car models adopt <MODEL_ID>
740
772
 
741
773
  Arguments:
742
- <MODEL_ID>
774
+ <MODEL_ID>
743
775
 
744
776
  Options:
745
777
  -h, --help Print help
@@ -1410,7 +1442,7 @@ Options:
1410
1442
  Safety cap on agent turns. This is a backstop, not the expected stop: the loop ends on its
1411
1443
  own when the model finishes (stops calling tools). 12 was too low for whole-project builds
1412
1444
  — it cut real work off mid-task; raise it further for large jobs
1413
-
1445
+
1414
1446
  [default: 50]
1415
1447
 
1416
1448
  --until <SHELL>
@@ -1426,7 +1458,7 @@ Options:
1426
1458
  --goal-max-iterations <GOAL_MAX_ITERATIONS>
1427
1459
  In goal mode, the hard cap on re-drive iterations (the governor's turn budget). A hard
1428
1460
  bound, not a soft prose clause
1429
-
1461
+
1430
1462
  [default: 10]
1431
1463
 
1432
1464
  --serve
@@ -1442,6 +1474,45 @@ Options:
1442
1474
  stdout, JSONL progress events on stderr, and no human progress rendering. Needs a goal —
1443
1475
  there is no JSON shape for an interactive REPL. See docs/car-do-json.md
1444
1476
 
1477
+ --response-format <MODE>
1478
+ Constrain the final answer to JSON. Applies to the final answer only; tool turns are
1479
+ unconstrained (a JSON-constrained request suppresses tool use). The loop checks the final
1480
+ answer itself and, if it is not a JSON object, re-asks the model ONCE with no tools and
1481
+ JSON mode on before returning; an answer that already parses costs no extra call.
1482
+ Provider-dependent on that repair turn: OpenAI-protocol and OpenRouter (which forwards it
1483
+ to the upstream provider) enforce it; Anthropic-protocol models reject it. Mutually
1484
+ exclusive with --json-schema. (Unrelated to --json, which shapes car's own output.)
1485
+
1486
+ [possible values: json_object]
1487
+
1488
+ --json-schema <FILE>
1489
+ Constrain the final answer to JSON matching this JSON Schema file. The schema's `title`
1490
+ names it for providers that want one. Applies to the final answer only, with the same
1491
+ one-shot tool-less repair and provider caveats as --response-format; the loop validates
1492
+ the final answer against the schema itself (a valid-JSON answer of the wrong shape is
1493
+ repaired too). Mutually exclusive with --response-format
1494
+
1495
+ --strict-model
1496
+ Use exactly the --model (or CAR_DO_MODEL) named, or fail. Without it `car do` substitutes
1497
+ a usable tool-capable model when the named one is unavailable here (and says so); with it
1498
+ a substitution is a startup error, and the inference layer will not fall back to an
1499
+ on-device model on a remote failure either. Off by default: the substitution is the right
1500
+ call for an interactive run
1501
+
1502
+ --context-window <TOKENS>
1503
+ Bound the running conversation to this many tokens instead of the model's registry window
1504
+ (older middle turns are compacted out to fit, as they are against the real window). Use it
1505
+ to tighten: a value above the model's known window is clamped back down to it, because
1506
+ letting the history overflow the real window is exactly the provider-side truncation
1507
+ compaction exists to prevent
1508
+
1509
+ --max-delegations <N>
1510
+ Run-level cap on `delegate` sub-agent calls. A call past the cap (or past the
1511
+ 300-child-turn budget) returns an error result to the assistant instead of spawning, so a
1512
+ delegating run cannot amplify its model calls without bound
1513
+
1514
+ [default: 20]
1515
+
1445
1516
  -h, --help
1446
1517
  Print help (see a summary with '-h')
1447
1518
  ```
@@ -1664,7 +1735,7 @@ Options:
1664
1735
 
1665
1736
  --max-attempts <MAX_ATTEMPTS>
1666
1737
  Max generate→validate→repair attempts per round
1667
-
1738
+
1668
1739
  [default: 3]
1669
1740
 
1670
1741
  -h, --help
@@ -1765,11 +1836,11 @@ Store a secret. Value is read from --value or piped stdin
1765
1836
  Usage: car secrets put [OPTIONS] <KEY>
1766
1837
 
1767
1838
  Arguments:
1768
- <KEY>
1839
+ <KEY>
1769
1840
 
1770
1841
  Options:
1771
- --service <SERVICE>
1772
- --value <VALUE>
1842
+ --service <SERVICE>
1843
+ --value <VALUE>
1773
1844
  -h, --help Print help
1774
1845
  ```
1775
1846
 
@@ -1781,10 +1852,10 @@ Retrieve a secret — prints the value on stdout
1781
1852
  Usage: car secrets get [OPTIONS] <KEY>
1782
1853
 
1783
1854
  Arguments:
1784
- <KEY>
1855
+ <KEY>
1785
1856
 
1786
1857
  Options:
1787
- --service <SERVICE>
1858
+ --service <SERVICE>
1788
1859
  -h, --help Print help
1789
1860
  ```
1790
1861
 
@@ -1796,10 +1867,10 @@ Delete a secret (idempotent)
1796
1867
  Usage: car secrets delete [OPTIONS] <KEY>
1797
1868
 
1798
1869
  Arguments:
1799
- <KEY>
1870
+ <KEY>
1800
1871
 
1801
1872
  Options:
1802
- --service <SERVICE>
1873
+ --service <SERVICE>
1803
1874
  -h, --help Print help
1804
1875
  ```
1805
1876
 
@@ -1811,10 +1882,10 @@ Check whether a secret exists, without returning the value
1811
1882
  Usage: car secrets status [OPTIONS] <KEY>
1812
1883
 
1813
1884
  Arguments:
1814
- <KEY>
1885
+ <KEY>
1815
1886
 
1816
1887
  Options:
1817
- --service <SERVICE>
1888
+ --service <SERVICE>
1818
1889
  -h, --help Print help
1819
1890
  ```
1820
1891
 
@@ -2004,7 +2075,7 @@ Report current grant state for a domain
2004
2075
  Usage: car permissions status [OPTIONS] <DOMAIN>
2005
2076
 
2006
2077
  Arguments:
2007
- <DOMAIN>
2078
+ <DOMAIN>
2008
2079
 
2009
2080
  Options:
2010
2081
  --target <TARGET> macOS Automation only: bundle ID of the target app to control. Ignored for
@@ -2020,10 +2091,10 @@ Trigger a native prompt if the OS supports one
2020
2091
  Usage: car permissions request [OPTIONS] <DOMAIN>
2021
2092
 
2022
2093
  Arguments:
2023
- <DOMAIN>
2094
+ <DOMAIN>
2024
2095
 
2025
2096
  Options:
2026
- --target <TARGET>
2097
+ --target <TARGET>
2027
2098
  -h, --help Print help
2028
2099
  ```
2029
2100
 
@@ -2035,10 +2106,10 @@ Human-readable explanation and fix suggestion
2035
2106
  Usage: car permissions explain [OPTIONS] <DOMAIN>
2036
2107
 
2037
2108
  Arguments:
2038
- <DOMAIN>
2109
+ <DOMAIN>
2039
2110
 
2040
2111
  Options:
2041
- --target <TARGET>
2112
+ --target <TARGET>
2042
2113
  -h, --help Print help
2043
2114
  ```
2044
2115
 
@@ -2105,7 +2176,7 @@ Remove an enrolled voiceprint by label
2105
2176
  Usage: car voice remove --label <LABEL>
2106
2177
 
2107
2178
  Options:
2108
- --label <LABEL>
2179
+ --label <LABEL>
2109
2180
  -h, --help Print help
2110
2181
  ```
2111
2182
 
@@ -2131,10 +2202,14 @@ onboarding step)
2131
2202
  Usage: car approvals <COMMAND>
2132
2203
 
2133
2204
  Commands:
2134
- default Set the default approval preset for all agents (`cautious` asks before any
2205
+ default Set the default approval preset for all agents (`cautious` asks before any
2135
2206
  edit/full-access, `balanced` allows sandboxed edits, `trusting` allows everything without asking)
2136
- get Show the current default approval posture
2137
- help Print this message or the help of the given subcommand(s)
2207
+ get Show the current default approval posture
2208
+ set-tool Set an approval mode for one exact agent and exact tool. `always_allow` requires
2209
+ that agent to be attached with an eligible live callback
2210
+ evaluate-tool Show whether one exact agent/tool override is active and schema-bound
2211
+ reset-tool Remove one exact agent/tool approval override
2212
+ help Print this message or the help of the given subcommand(s)
2138
2213
 
2139
2214
  Options:
2140
2215
  -h, --help Print help
@@ -2166,6 +2241,53 @@ Options:
2166
2241
  -h, --help Print help
2167
2242
  ```
2168
2243
 
2244
+ #### car approvals set-tool
2245
+
2246
+ ```text
2247
+ Set an approval mode for one exact agent and exact tool. `always_allow` requires that agent to be
2248
+ attached with an eligible live callback
2249
+
2250
+ Usage: car approvals set-tool <AGENT> <TOOL> <MODE>
2251
+
2252
+ Arguments:
2253
+ <AGENT>
2254
+ <TOOL>
2255
+ <MODE> One of: always_allow | require_approval | deny
2256
+
2257
+ Options:
2258
+ -h, --help Print help
2259
+ ```
2260
+
2261
+ #### car approvals evaluate-tool
2262
+
2263
+ ```text
2264
+ Show whether one exact agent/tool override is active and schema-bound
2265
+
2266
+ Usage: car approvals evaluate-tool <AGENT> <TOOL>
2267
+
2268
+ Arguments:
2269
+ <AGENT>
2270
+ <TOOL>
2271
+
2272
+ Options:
2273
+ -h, --help Print help
2274
+ ```
2275
+
2276
+ #### car approvals reset-tool
2277
+
2278
+ ```text
2279
+ Remove one exact agent/tool approval override
2280
+
2281
+ Usage: car approvals reset-tool <AGENT> <TOOL>
2282
+
2283
+ Arguments:
2284
+ <AGENT>
2285
+ <TOOL>
2286
+
2287
+ Options:
2288
+ -h, --help Print help
2289
+ ```
2290
+
2169
2291
  ### car accounts
2170
2292
 
2171
2293
  ```text
@@ -2201,7 +2323,7 @@ Open the native account-management UI
2201
2323
  Usage: car accounts open [OPTIONS]
2202
2324
 
2203
2325
  Options:
2204
- --account-id <ACCOUNT_ID>
2326
+ --account-id <ACCOUNT_ID>
2205
2327
  -h, --help Print help
2206
2328
  ```
2207
2329
 
@@ -2281,11 +2403,11 @@ Free-text contact search
2281
2403
  Usage: car contacts find [OPTIONS] <QUERY>
2282
2404
 
2283
2405
  Arguments:
2284
- <QUERY>
2406
+ <QUERY>
2285
2407
 
2286
2408
  Options:
2287
2409
  --limit <LIMIT> [default: 50]
2288
- --containers <CONTAINERS>
2410
+ --containers <CONTAINERS>
2289
2411
  -h, --help Print help
2290
2412
  ```
2291
2413
 
@@ -2330,7 +2452,7 @@ Inbox summaries per account
2330
2452
  Usage: car mail inbox [OPTIONS]
2331
2453
 
2332
2454
  Options:
2333
- --accounts <ACCOUNTS>
2455
+ --accounts <ACCOUNTS>
2334
2456
  -h, --help Print help
2335
2457
  ```
2336
2458
 
@@ -2343,7 +2465,7 @@ bounded: depth 8, 64 requests)
2343
2465
  Usage: car mail mailboxes [OPTIONS]
2344
2466
 
2345
2467
  Options:
2346
- --accounts <ACCOUNTS>
2468
+ --accounts <ACCOUNTS>
2347
2469
  -h, --help Print help
2348
2470
  ```
2349
2471
 
@@ -2356,7 +2478,7 @@ account, then concatenated)
2356
2478
  Usage: car mail messages [OPTIONS]
2357
2479
 
2358
2480
  Options:
2359
- --accounts <ACCOUNTS>
2481
+ --accounts <ACCOUNTS>
2360
2482
  --mailbox <MAILBOX> Mailbox selector — a `full_name` from `car mail mailboxes`, or a bare
2361
2483
  leaf name like "Travel". Defaults to INBOX
2362
2484
  --limit <LIMIT> [default: 50]
@@ -2373,7 +2495,7 @@ Fetch one message body by the `id` from `car mail messages`
2373
2495
  Usage: car mail body <ID>
2374
2496
 
2375
2497
  Arguments:
2376
- <ID>
2498
+ <ID>
2377
2499
 
2378
2500
  Options:
2379
2501
  -h, --help Print help
@@ -2476,7 +2598,7 @@ Free-text note search
2476
2598
  Usage: car notes find [OPTIONS] <QUERY>
2477
2599
 
2478
2600
  Arguments:
2479
- <QUERY>
2601
+ <QUERY>
2480
2602
 
2481
2603
  Options:
2482
2604
  --limit <LIMIT> [default: 50]
@@ -2664,8 +2786,8 @@ Sleep windows in an ISO-8601 time range
2664
2786
  Usage: car health sleep --start <START> --end <END>
2665
2787
 
2666
2788
  Options:
2667
- --start <START>
2668
- --end <END>
2789
+ --start <START>
2790
+ --end <END>
2669
2791
  -h, --help Print help
2670
2792
  ```
2671
2793
 
@@ -2677,8 +2799,8 @@ Workouts in an ISO-8601 time range
2677
2799
  Usage: car health workouts --start <START> --end <END>
2678
2800
 
2679
2801
  Options:
2680
- --start <START>
2681
- --end <END>
2802
+ --start <START>
2803
+ --end <END>
2682
2804
  -h, --help Print help
2683
2805
  ```
2684
2806
 
@@ -2690,8 +2812,8 @@ Daily activity summaries across a date range (YYYY-MM-DD)
2690
2812
  Usage: car health activity --start <START> --end <END>
2691
2813
 
2692
2814
  Options:
2693
- --start <START>
2694
- --end <END>
2815
+ --start <START>
2816
+ --end <END>
2695
2817
  -h, --help Print help
2696
2818
  ```
2697
2819
 
@@ -2720,12 +2842,12 @@ Options:
2720
2842
  Registry source for `<namespace>/<name>` references: an `http(s)://…/index.json` URL or a
2721
2843
  LOCAL registry directory (or `file://` URL). Defaults to the public mirror. The private
2722
2844
  source needs a token — set `CAR_REGISTRY_TOKEN`
2723
-
2845
+
2724
2846
  [default: https://raw.githubusercontent.com/Parslee-ai/car-releases/main/index.json]
2725
2847
 
2726
2848
  --url <URL>
2727
2849
  WebSocket URL of the running car-server daemon
2728
-
2850
+
2729
2851
  [default: ws://127.0.0.1:9100/]
2730
2852
 
2731
2853
  --json
package/index.d.ts CHANGED
@@ -1498,6 +1498,23 @@ export class CarRuntime {
1498
1498
  * `cost_overage` alert. */
1499
1499
  metricsAlerts(thresholdsJson?: string): Promise<string>;
1500
1500
 
1501
+ /** Watch-only self-heal detector status as JSON: cadence, last tick, source
1502
+ * `route`, validated `source_checkout` or `refusal_reason`, detector IDs,
1503
+ * active/dismissed counts, and `filing_mode: "watch-only"`. */
1504
+ selfhealStatus(): Promise<string>;
1505
+
1506
+ /** List active (not dismissed) self-heal detections as JSON. Each includes
1507
+ * `route` and an optional `local_issue_path`. `queryJson` optionally carries
1508
+ * `kind`, `severity`, `since`, `offset`, and `limit` (bounded to 500). */
1509
+ selfhealDetections(queryJson?: string): Promise<string>;
1510
+
1511
+ /** Append a dismissal marker for a stable detection dedup key. This does not
1512
+ * delete history, file an issue, use network, or remediate anything. */
1513
+ selfhealDismiss(dedupKey: string): Promise<string>;
1514
+
1515
+ /** Run one non-overlapping watch-only detection tick immediately. */
1516
+ selfhealRun(): Promise<string>;
1517
+
1501
1518
  /** Execution log counts and approximate retained native bytes. Returns JSON. */
1502
1519
  eventLogStats(): Promise<string>;
1503
1520
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "car-runtime",
3
- "version": "0.52.0",
3
+ "version": "0.52.1",
4
4
  "description": "Common Agent Runtime — a deterministic execution layer for AI agents",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",