car-runtime 0.45.0 → 0.46.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.
- package/index.d.ts +94 -1
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -73,6 +73,14 @@ export class CarRuntime {
|
|
|
73
73
|
* 2026-05 audit boundary). Relative paths land under the base;
|
|
74
74
|
* absolute paths must already be under the base; `..` segments and
|
|
75
75
|
* symlinks pointing out of the sandbox are rejected.
|
|
76
|
+
*
|
|
77
|
+
* **`path` names a file, not a namespace.** This REPLACES the graph the
|
|
78
|
+
* connection is bound to — and by default that is the daemon's SHARED graph,
|
|
79
|
+
* common to every unbound session and to facts ingested over MCP. So on a
|
|
80
|
+
* multi-project host this both discards other projects' in-memory facts and
|
|
81
|
+
* leaves the loaded ones visible to them. Set `CAR_MEMORY_NAMESPACE` in the host process to bind a private graph
|
|
82
|
+
* (car-releases#79/#80); the shared daemon transport puts it on the
|
|
83
|
+
* `session.auth` handshake for you.
|
|
76
84
|
*/
|
|
77
85
|
loadMemory(path: string): Promise<number>;
|
|
78
86
|
|
|
@@ -94,6 +102,12 @@ export class CarRuntime {
|
|
|
94
102
|
* Returns the number of records written.
|
|
95
103
|
*
|
|
96
104
|
* Daemon-side write: same `~/.car/memory/` sandbox as `loadMemory`.
|
|
105
|
+
*
|
|
106
|
+
* **Writes the whole graph, not a subset.** `path` chooses the destination
|
|
107
|
+
* file; it does not select the contents. On an unbound session that graph is
|
|
108
|
+
* the daemon-wide shared one, so per-project files each end up holding every
|
|
109
|
+
* project's facts. Set `CAR_MEMORY_NAMESPACE` for a file that contains only one project's
|
|
110
|
+
* facts (car-releases#79/#80).
|
|
97
111
|
*/
|
|
98
112
|
persistMemory(path: string): Promise<number>;
|
|
99
113
|
|
|
@@ -609,6 +623,14 @@ export class CarRuntime {
|
|
|
609
623
|
* field optional except `prompt`). Exposes every field on the
|
|
610
624
|
* Rust struct including `intent`. Same pattern as
|
|
611
625
|
* {@link verifyProposal}. Closes #107.
|
|
626
|
+
*
|
|
627
|
+
* `client_ref` is an opaque correlation token echoed verbatim in the
|
|
628
|
+
* `inference.runner.invoke` payload and otherwise ignored by CAR. A
|
|
629
|
+
* delegated-inference host with several calls in flight uses it to map an
|
|
630
|
+
* invoke back to its own request state — `call_id` is minted by the daemon
|
|
631
|
+
* only after this call, so it cannot serve that purpose. Hosts previously
|
|
632
|
+
* had to smuggle an id through `prompt`, which worked only because
|
|
633
|
+
* delegated models ignore it (car-releases#78).
|
|
612
634
|
*/
|
|
613
635
|
inferTrackedWithRequest(requestJson: string): Promise<string>;
|
|
614
636
|
|
|
@@ -2141,6 +2163,50 @@ export function simulate(
|
|
|
2141
2163
|
initialStateJson?: string | null,
|
|
2142
2164
|
): string;
|
|
2143
2165
|
|
|
2166
|
+
/**
|
|
2167
|
+
* Sample N rollouts of a proposal with tools allowed to fail.
|
|
2168
|
+
*
|
|
2169
|
+
* `simulate` answers "what state does this plan leave behind, assuming every
|
|
2170
|
+
* dispatched tool succeeds?" This answers "how often does it actually work,
|
|
2171
|
+
* and when it doesn't, what breaks first?" Each `tool_call` succeeds with the
|
|
2172
|
+
* probability given in `toolSuccessRatesJson` (a JSON object mapping tool name
|
|
2173
|
+
* to a rate in `0.0..=1.0` — the shape produced by the planner's per-tool
|
|
2174
|
+
* trajectory feedback). Failures cascade through the dependency graph exactly
|
|
2175
|
+
* as they would at runtime: an action whose dependency never landed is
|
|
2176
|
+
* rejected before dispatch, not retried.
|
|
2177
|
+
*
|
|
2178
|
+
* `goalJson` is an optional `GoalCondition` evaluated against each trial's
|
|
2179
|
+
* final state. Conditions a simulation cannot decide — tool receipts, command
|
|
2180
|
+
* exits, model judges — fail closed and are named in
|
|
2181
|
+
* `goal_underivable_conditions`, so a `p_goal_reached` of 0 is never silently
|
|
2182
|
+
* mistaken for "this plan cannot work".
|
|
2183
|
+
*
|
|
2184
|
+
* `configJson` is an optional `{ trials?, seed?, defaultSuccessRate?,
|
|
2185
|
+
* retryAttempts? }` — note these are **snake_case** on the wire
|
|
2186
|
+
* (`default_success_rate`, `retry_attempts`), since the payload is serde JSON
|
|
2187
|
+
* rather than a napi-converted object. Defaults: 1000 trials, a fixed seed,
|
|
2188
|
+
* 0.5 for tools with no recorded history, no retries. The seed is fixed rather
|
|
2189
|
+
* than time-derived so runs are reproducible, and is echoed back in the result.
|
|
2190
|
+
*
|
|
2191
|
+
* Returns JSON:
|
|
2192
|
+
* `{ trials, seed, p_goal_reached, goal_underivable_conditions,
|
|
2193
|
+
* p_all_effects_landed, tool_calls: {mean, min, p50, p95, max},
|
|
2194
|
+
* actions_executed: {...}, state_distribution: [{key, p_present,
|
|
2195
|
+
* values: [{value, probability}]}], action_outcomes: [{action_id, p_rejected,
|
|
2196
|
+
* p_failed, p_effects_landed, mean_blast_radius}] }`.
|
|
2197
|
+
*
|
|
2198
|
+
* Independence caveat: draws are uncorrelated, so a plan that calls one flaky
|
|
2199
|
+
* tool repeatedly reads more optimistically here than it will behave when that
|
|
2200
|
+
* tool's backing service is down.
|
|
2201
|
+
*/
|
|
2202
|
+
export function simulateMonteCarlo(
|
|
2203
|
+
proposalJson: string,
|
|
2204
|
+
initialStateJson?: string | null,
|
|
2205
|
+
toolSuccessRatesJson?: string | null,
|
|
2206
|
+
goalJson?: string | null,
|
|
2207
|
+
configJson?: string | null,
|
|
2208
|
+
): string;
|
|
2209
|
+
|
|
2144
2210
|
export function optimize(proposalJson: string): string;
|
|
2145
2211
|
|
|
2146
2212
|
export function equivalent(proposal1Json: string, proposal2Json: string): boolean;
|
|
@@ -2319,7 +2385,16 @@ export function enforceInformationFlow(
|
|
|
2319
2385
|
* `{ level: "l0" | "l1" | "l2" | "l3" | "l4", serializable, anomalies: [{
|
|
2320
2386
|
* anomaly: "stale_generation" | "phantom_tool" | "causal_cascade" |
|
|
2321
2387
|
* "tool_effect_reorder", key, ops, explanation }] }` — `level` is set by the
|
|
2322
|
-
* most severe anomaly present (causal-cascade → l0 … none → l4
|
|
2388
|
+
* most severe *named* anomaly present (causal-cascade → l0 … none → l4).
|
|
2389
|
+
*
|
|
2390
|
+
* `serializable` is a separate, real conflict-serializability decision: the
|
|
2391
|
+
* schedule's serialization graph (write-write, write-read, anti-dependency, and
|
|
2392
|
+
* declared `depends_on` edges) is tested for a cycle. It is NOT `level === "l4"`.
|
|
2393
|
+
* The two deliberately disagree on write skew — concurrent ops reading
|
|
2394
|
+
* overlapping state and writing disjoint keys match no named anomaly, so such a
|
|
2395
|
+
* schedule reports `level: "l4"` with `serializable: false`. Read `level` for
|
|
2396
|
+
* which anomaly to remediate, `serializable` for whether an equivalent serial
|
|
2397
|
+
* order exists.
|
|
2323
2398
|
*/
|
|
2324
2399
|
export function analyzeConcurrency(opsJson: string): string;
|
|
2325
2400
|
|
|
@@ -3055,6 +3130,24 @@ export function rankProposals(
|
|
|
3055
3130
|
*/
|
|
3056
3131
|
export function runApplescript(argsJson: string): Promise<string>;
|
|
3057
3132
|
|
|
3133
|
+
/**
|
|
3134
|
+
* Run a Windows PowerShell script via `powershell.exe` — the Windows analog
|
|
3135
|
+
* of `runApplescript`. Drives the host desktop and its apps (toast, clipboard,
|
|
3136
|
+
* COM, UI Automation).
|
|
3137
|
+
*
|
|
3138
|
+
* `argsJson` shape:
|
|
3139
|
+
* ```jsonc
|
|
3140
|
+
* {
|
|
3141
|
+
* "script": "Get-Date",
|
|
3142
|
+
* "timeout_ms": 5000 // optional
|
|
3143
|
+
* }
|
|
3144
|
+
* ```
|
|
3145
|
+
*
|
|
3146
|
+
* Returns JSON `{stdout, stderr, exit_code}`. Rejects with a
|
|
3147
|
+
* PlatformUnsupported error on non-Windows hosts.
|
|
3148
|
+
*/
|
|
3149
|
+
export function runPowershell(argsJson: string): Promise<string>;
|
|
3150
|
+
|
|
3058
3151
|
/**
|
|
3059
3152
|
* Enumerate Shortcuts (user-authored *and* AppShortcuts donated by
|
|
3060
3153
|
* apps via the App Intents framework). Returns an array of
|