car-runtime 0.52.1 → 0.54.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/index.d.ts CHANGED
@@ -32,6 +32,61 @@
32
32
  * `ws://127.0.0.1:9100`).
33
33
  */
34
34
 
35
+ /** Agent-loop tool declaration. `timeoutMs` becomes the action budget. */
36
+ export interface AgentToolSchema {
37
+ name: string;
38
+ description: string;
39
+ parameters: Record<string, unknown>;
40
+ timeoutMs?: number;
41
+ }
42
+
43
+ export interface AgentToolContext {
44
+ signal: AbortSignal;
45
+ timeoutMs?: number;
46
+ }
47
+
48
+ export type AgentTool = (
49
+ params: Record<string, unknown>,
50
+ context: AgentToolContext,
51
+ ) => unknown | Promise<unknown>;
52
+
53
+ export type AgentOutcomeStatus =
54
+ | 'success' | 'partial_success' | 'done' | 'give_up' | 'timeout' | 'failure';
55
+
56
+ export interface AgentOutcome {
57
+ status: AgentOutcomeStatus;
58
+ summary: string;
59
+ evidence: Array<{ kind: string; description: string; data: unknown }>;
60
+ metrics: {
61
+ turns: number;
62
+ tool_calls: number;
63
+ actions_succeeded: number;
64
+ actions_failed: number;
65
+ };
66
+ tools_called: string[];
67
+ timestamp: string;
68
+ }
69
+
70
+ /** Declarative input consumed by `car-runtime/agent-loop`. */
71
+ export interface AgentLoopConfig {
72
+ agentId?: string;
73
+ agentName: string;
74
+ identity: string;
75
+ toolSchemas?: AgentToolSchema[];
76
+ tools?: Record<string, AgentTool>;
77
+ policies?: Array<[string, string, string?, string?, string?, string?]>;
78
+ defaultModel?: string | null;
79
+ maxTokens?: number;
80
+ maxTurns?: number;
81
+ targetOutcome?: string;
82
+ standingGoal?: string | null;
83
+ intervalSecs?: number;
84
+ }
85
+
86
+ export interface AgentLoopOptions {
87
+ maxTurns?: number;
88
+ }
89
+
35
90
  /** Persistent runtime instance with state, memory, tools, and policies. */
36
91
  /**
37
92
  * Optional settings for `coderStart`. Every field is independently omittable;
@@ -58,6 +113,30 @@ export interface CoderStartOptions {
58
113
  * hypothesis, the other buys a retry.
59
114
  */
60
115
  transientRetries?: number | undefined | null;
116
+ /**
117
+ * Expose the assistant's browser tools for this coder session. Off unless
118
+ * explicitly true; each browser call still crosses coder policy and is
119
+ * recorded in the session event stream.
120
+ */
121
+ browser?: boolean | undefined | null;
122
+ /**
123
+ * Farm a **foreman** session's subtasks across every reachable CAR instance
124
+ * that can serve this repository, instead of this machine alone. The
125
+ * merge-verify gate and delivery stay on the orchestrating host — a peer
126
+ * returns a patch and this host gates it — so a distributed run still
127
+ * produces a gated pull request.
128
+ *
129
+ * Only the foreman engine decomposes a goal into subtasks, so any other
130
+ * engine runs locally and says so. Off by default: it spends agent quota on
131
+ * other people's machines.
132
+ */
133
+ distributed?: boolean | undefined | null;
134
+ /**
135
+ * Restrict placement to these instances by name. Empty or omitted means
136
+ * every instance that reports it can serve the repository. Ignored unless
137
+ * `distributed` is set.
138
+ */
139
+ workers?: Array<string> | undefined | null;
61
140
  /**
62
141
  * A `coder.discuss` conversation this run was distilled from. Its agreed
63
142
  * constraints ride into contract derivation, so a rule stated once in the
@@ -68,9 +147,889 @@ export interface CoderStartOptions {
68
147
  discussionId?: string | undefined | null;
69
148
  }
70
149
 
150
+ export interface DaemonRpcError extends Error {
151
+ /** Numeric JSON-RPC error code returned by the daemon. */
152
+ code: number;
153
+ /** Daemon-provided diagnostic text. */
154
+ message: string;
155
+ /** Optional JSON-RPC error data returned by the daemon. */
156
+ data?: unknown;
157
+ }
158
+
71
159
  export class CarRuntime {
72
160
  constructor();
73
161
 
162
+ /**
163
+ * Invoke any daemon JSON-RPC method with a JSON-encoded params value.
164
+ * `daemonCall` is the call-by-name escape hatch; use the typed wrappers as the primary API.
165
+ * The result is returned as JSON. Daemon rejections are `DaemonRpcError`;
166
+ * transport failures reject without a synthetic numeric code.
167
+ */
168
+ daemonCall(method: string, paramsJson: string): Promise<string>;
169
+
170
+ /** Host-management-token twin of `daemonCall`; the method allowlist remains enforced. */
171
+ daemonCallHostManagement(method: string, paramsJson: string): Promise<string>;
172
+
173
+ /** Register a server-initiated JSON-RPC request handler. */
174
+ registerDaemonHandler(
175
+ method: string,
176
+ handler: (paramsJson: string) => Promise<string>,
177
+ ): void;
178
+
179
+ /** Register a server-initiated JSON-RPC notification handler. */
180
+ registerDaemonNotificationHandler(
181
+ method: string,
182
+ handler: (paramsJson: string) => void,
183
+ ): void;
184
+
185
+ // BEGIN GENERATED daemon wrappers: CarRuntime
186
+ /** Generated daemon wrapper for `CancelTask` (operator). */
187
+ cancelTask(paramsJson: string): Promise<string>;
188
+
189
+ /** Generated daemon wrapper for `CreateTaskPushNotificationConfig` (operator). */
190
+ createTaskPushNotificationConfig(paramsJson: string): Promise<string>;
191
+
192
+ /** Generated daemon wrapper for `DeleteTaskPushNotificationConfig` (operator). */
193
+ deleteTaskPushNotificationConfig(paramsJson: string): Promise<string>;
194
+
195
+ /** Generated daemon wrapper for `GetExtendedAgentCard` (operator). */
196
+ getExtendedAgentCard(paramsJson: string): Promise<string>;
197
+
198
+ /** Generated daemon wrapper for `GetTask` (operator). */
199
+ getTask(paramsJson: string): Promise<string>;
200
+
201
+ /** Generated daemon wrapper for `GetTaskPushNotificationConfig` (operator). */
202
+ getTaskPushNotificationConfig(paramsJson: string): Promise<string>;
203
+
204
+ /** Generated daemon wrapper for `ListTaskPushNotificationConfigs` (operator). */
205
+ listTaskPushNotificationConfigs(paramsJson: string): Promise<string>;
206
+
207
+ /** Generated daemon wrapper for `ListTasks` (operator). */
208
+ listTasks(paramsJson: string): Promise<string>;
209
+
210
+ /** Generated daemon wrapper for `SendMessage` (operator). */
211
+ sendMessage(paramsJson: string): Promise<string>;
212
+
213
+ /** Generated daemon wrapper for `SendStreamingMessage` (operator). */
214
+ sendStreamingMessage(paramsJson: string): Promise<string>;
215
+
216
+ /** Generated daemon wrapper for `SubscribeToTask` (operator). */
217
+ subscribeToTask(paramsJson: string): Promise<string>;
218
+
219
+ /** Generated daemon wrapper for `a2a.peers.add` (operator). */
220
+ a2aPeersAdd(paramsJson: string): Promise<string>;
221
+
222
+ /** Generated daemon wrapper for `a2a.peers.list` (operator). */
223
+ a2aPeersList(paramsJson: string): Promise<string>;
224
+
225
+ /** Generated daemon wrapper for `a2a.peers.remove` (operator). */
226
+ a2aPeersRemove(paramsJson: string): Promise<string>;
227
+
228
+ /** Generated daemon wrapper for `a2a.send` (operator). */
229
+ a2aSend(paramsJson: string): Promise<string>;
230
+
231
+ /** Generated daemon wrapper for `a2a.start` (operator). */
232
+ a2aStart(paramsJson: string): Promise<string>;
233
+
234
+ /** Generated daemon wrapper for `a2a.status` (operator). */
235
+ a2aStatus(paramsJson: string): Promise<string>;
236
+
237
+ /** Generated daemon wrapper for `a2a.stop` (operator). */
238
+ a2aStop(paramsJson: string): Promise<string>;
239
+
240
+ /** Generated daemon wrapper for `a2ui.action` (operator). */
241
+ a2uiAction(paramsJson: string): Promise<string>;
242
+
243
+ /** Generated daemon wrapper for `a2ui.apply` (operator). */
244
+ a2uiApply(paramsJson: string): Promise<string>;
245
+
246
+ /** Generated daemon wrapper for `a2ui.capabilities` (operator). */
247
+ a2uiCapabilities(paramsJson: string): Promise<string>;
248
+
249
+ /** Generated daemon wrapper for `a2ui.get` (operator). */
250
+ a2uiGet(paramsJson: string): Promise<string>;
251
+
252
+ /** Generated daemon wrapper for `a2ui.ingest` (operator). */
253
+ a2uiIngest(paramsJson: string): Promise<string>;
254
+
255
+ /** Generated daemon wrapper for `a2ui.reap` (operator). */
256
+ a2uiReap(paramsJson: string): Promise<string>;
257
+
258
+ /** Generated daemon wrapper for `a2ui.render_report` (operator). */
259
+ a2uiRenderReport(paramsJson: string): Promise<string>;
260
+
261
+ /** Generated daemon wrapper for `a2ui.surfaces` (operator). */
262
+ a2uiSurfaces(paramsJson: string): Promise<string>;
263
+
264
+ /** Generated daemon wrapper for `a2ui/replay` (operator). */
265
+ a2uiReplay(paramsJson: string): Promise<string>;
266
+
267
+ /** Generated daemon wrapper for `a2ui/subscribe` (operator). */
268
+ a2uiSubscribe(paramsJson: string): Promise<string>;
269
+
270
+ /** Generated daemon wrapper for `a2ui/unsubscribe` (operator). */
271
+ a2uiUnsubscribe(paramsJson: string): Promise<string>;
272
+
273
+ /** Generated daemon wrapper for `admission.status` (operator). */
274
+ admissionStatus(paramsJson: string): Promise<string>;
275
+
276
+ /** Generated daemon wrapper for `agent/getAuthenticatedExtendedCard` (operator). */
277
+ agentGetAuthenticatedExtendedCard(paramsJson: string): Promise<string>;
278
+
279
+ /** Generated daemon wrapper for `agent_permissions.evaluate` (operator). */
280
+ agentPermissionsEvaluate(paramsJson: string): Promise<string>;
281
+
282
+ /** Generated daemon wrapper for `agent_permissions.get` (operator). */
283
+ agentPermissionsGet(paramsJson: string): Promise<string>;
284
+
285
+ /** Generated daemon wrapper for `agents.chat` (agent). */
286
+ agentsChat(paramsJson: string): Promise<string>;
287
+
288
+ /** Generated daemon wrapper for `agents.chat.approve` (operator). */
289
+ agentsChatApprove(paramsJson: string): Promise<string>;
290
+
291
+ /** Generated daemon wrapper for `agents.chat.cancel` (operator). */
292
+ agentsChatCancel(paramsJson: string): Promise<string>;
293
+
294
+ /** Generated daemon wrapper for `agents.detect_external` (operator). */
295
+ agentsDetectExternal(paramsJson: string): Promise<string>;
296
+
297
+ /** Generated daemon wrapper for `agents.health` (operator). */
298
+ agentsHealth(paramsJson: string): Promise<string>;
299
+
300
+ /** Generated daemon wrapper for `agents.health_external` (operator). */
301
+ agentsHealthExternal(paramsJson: string): Promise<string>;
302
+
303
+ /** Generated daemon wrapper for `agents.invoke_external` (operator). */
304
+ agentsInvokeExternal(paramsJson: string): Promise<string>;
305
+
306
+ /** Generated daemon wrapper for `agents.list` (operator). */
307
+ agentsList(paramsJson: string): Promise<string>;
308
+
309
+ /** Generated daemon wrapper for `agents.list_external` (operator). */
310
+ agentsListExternal(paramsJson: string): Promise<string>;
311
+
312
+ /** Generated daemon wrapper for `agents.restart` (agent). */
313
+ agentsRestart(paramsJson: string): Promise<string>;
314
+
315
+ /** Generated daemon wrapper for `agents.start` (agent). */
316
+ agentsStart(paramsJson: string): Promise<string>;
317
+
318
+ /** Generated daemon wrapper for `agents.stop` (agent). */
319
+ agentsStop(paramsJson: string): Promise<string>;
320
+
321
+ /** Generated daemon wrapper for `agents.tail_log` (operator). */
322
+ agentsTailLog(paramsJson: string): Promise<string>;
323
+
324
+ /** Generated daemon wrapper for `agents.wait` (operator). */
325
+ agentsWait(paramsJson: string): Promise<string>;
326
+
327
+ /** Generated daemon wrapper for `assistants.invoke` (operator). */
328
+ assistantsInvoke(paramsJson: string): Promise<string>;
329
+
330
+ /** Generated daemon wrapper for `automation.run_applescript` (operator). */
331
+ automationRunApplescript(paramsJson: string): Promise<string>;
332
+
333
+ /** Generated daemon wrapper for `automation.run_powershell` (operator). */
334
+ automationRunPowershell(paramsJson: string): Promise<string>;
335
+
336
+ /** Generated daemon wrapper for `automation.shortcuts.list` (operator). */
337
+ automationShortcutsList(paramsJson: string): Promise<string>;
338
+
339
+ /** Generated daemon wrapper for `automation.shortcuts.run` (operator). */
340
+ automationShortcutsRun(paramsJson: string): Promise<string>;
341
+
342
+ /** Generated daemon wrapper for `browser.producer.register` (operator). */
343
+ browserProducerRegister(paramsJson: string): Promise<string>;
344
+
345
+ /** Generated daemon wrapper for `browser.view.back` (operator). */
346
+ browserViewBack(paramsJson: string): Promise<string>;
347
+
348
+ /** Generated daemon wrapper for `browser.view.click` (operator). */
349
+ browserViewClick(paramsJson: string): Promise<string>;
350
+
351
+ /** Generated daemon wrapper for `browser.view.forward` (operator). */
352
+ browserViewForward(paramsJson: string): Promise<string>;
353
+
354
+ /** Generated daemon wrapper for `browser.view.hand_back` (operator). */
355
+ browserViewHandBack(paramsJson: string): Promise<string>;
356
+
357
+ /** Generated daemon wrapper for `browser.view.keypress` (operator). */
358
+ browserViewKeypress(paramsJson: string): Promise<string>;
359
+
360
+ /** Generated daemon wrapper for `browser.view.navigate` (operator). */
361
+ browserViewNavigate(paramsJson: string): Promise<string>;
362
+
363
+ /** Generated daemon wrapper for `browser.view.paste` (operator). */
364
+ browserViewPaste(paramsJson: string): Promise<string>;
365
+
366
+ /** Generated daemon wrapper for `browser.view.reload` (operator). */
367
+ browserViewReload(paramsJson: string): Promise<string>;
368
+
369
+ /** Generated daemon wrapper for `browser.view.scroll` (operator). */
370
+ browserViewScroll(paramsJson: string): Promise<string>;
371
+
372
+ /** Generated daemon wrapper for `browser.view.subscribe` (operator). */
373
+ browserViewSubscribe(paramsJson: string): Promise<string>;
374
+
375
+ /** Generated daemon wrapper for `browser.view.tab_close` (operator). */
376
+ browserViewTabClose(paramsJson: string): Promise<string>;
377
+
378
+ /** Generated daemon wrapper for `browser.view.tab_open` (operator). */
379
+ browserViewTabOpen(paramsJson: string): Promise<string>;
380
+
381
+ /** Generated daemon wrapper for `browser.view.tab_switch` (operator). */
382
+ browserViewTabSwitch(paramsJson: string): Promise<string>;
383
+
384
+ /** Generated daemon wrapper for `browser.view.take_control` (operator). */
385
+ browserViewTakeControl(paramsJson: string): Promise<string>;
386
+
387
+ /** Generated daemon wrapper for `browser.view.type` (operator). */
388
+ browserViewType(paramsJson: string): Promise<string>;
389
+
390
+ /** Generated daemon wrapper for `browser.view.unsubscribe` (operator). */
391
+ browserViewUnsubscribe(paramsJson: string): Promise<string>;
392
+
393
+ /** Generated daemon wrapper for `builder.build` (operator). */
394
+ builderBuild(paramsJson: string): Promise<string>;
395
+
396
+ /** Generated daemon wrapper for `capabilities.list` (operator). */
397
+ capabilitiesList(paramsJson: string): Promise<string>;
398
+
399
+ /** Generated daemon wrapper for `coder.discuss.subscribe` (operator). */
400
+ coderDiscussSubscribe(paramsJson: string): Promise<string>;
401
+
402
+ /** Generated daemon wrapper for `coder.discuss.unsubscribe` (operator). */
403
+ coderDiscussUnsubscribe(paramsJson: string): Promise<string>;
404
+
405
+ /** Generated daemon wrapper for `coder.projects.create` (operator). */
406
+ coderProjectsCreate(paramsJson: string): Promise<string>;
407
+
408
+ /** Generated daemon wrapper for `coder.projects.get` (operator). */
409
+ coderProjectsGet(paramsJson: string): Promise<string>;
410
+
411
+ /** Generated daemon wrapper for `coder.projects.list` (operator). */
412
+ coderProjectsList(paramsJson: string): Promise<string>;
413
+
414
+ /** Generated daemon wrapper for `coder.subscribe` (operator). */
415
+ coderSubscribe(paramsJson: string): Promise<string>;
416
+
417
+ /** Generated daemon wrapper for `coder.unsubscribe` (operator). */
418
+ coderUnsubscribe(paramsJson: string): Promise<string>;
419
+
420
+ /** Generated daemon wrapper for `concierge.actions` (operator). */
421
+ conciergeActions(paramsJson: string): Promise<string>;
422
+
423
+ /** Generated daemon wrapper for `concierge.apply` (operator). */
424
+ conciergeApply(paramsJson: string): Promise<string>;
425
+
426
+ /** Generated daemon wrapper for `concierge.ask` (operator). */
427
+ conciergeAsk(paramsJson: string): Promise<string>;
428
+
429
+ /** Generated daemon wrapper for `concierge.clear_default` (operator). */
430
+ conciergeClearDefault(paramsJson: string): Promise<string>;
431
+
432
+ /** Generated daemon wrapper for `concierge.defaults` (operator). */
433
+ conciergeDefaults(paramsJson: string): Promise<string>;
434
+
435
+ /** Generated daemon wrapper for `concierge.dismiss` (operator). */
436
+ conciergeDismiss(paramsJson: string): Promise<string>;
437
+
438
+ /** Generated daemon wrapper for `concierge.refresh_catalog` (operator). */
439
+ conciergeRefreshCatalog(paramsJson: string): Promise<string>;
440
+
441
+ /** Generated daemon wrapper for `concierge.rollback` (operator). */
442
+ conciergeRollback(paramsJson: string): Promise<string>;
443
+
444
+ /** Generated daemon wrapper for `concierge.set_default` (operator). */
445
+ conciergeSetDefault(paramsJson: string): Promise<string>;
446
+
447
+ /** Generated daemon wrapper for `concierge.status` (operator). */
448
+ conciergeStatus(paramsJson: string): Promise<string>;
449
+
450
+ /** Generated daemon wrapper for `connectors.add` (operator). */
451
+ connectorsAdd(paramsJson: string): Promise<string>;
452
+
453
+ /** Generated daemon wrapper for `connectors.add_stdio` (operator). */
454
+ connectorsAddStdio(paramsJson: string): Promise<string>;
455
+
456
+ /** Generated daemon wrapper for `connectors.authenticate` (operator). */
457
+ connectorsAuthenticate(paramsJson: string): Promise<string>;
458
+
459
+ /** Generated daemon wrapper for `connectors.complete_authentication` (operator). */
460
+ connectorsCompleteAuthentication(paramsJson: string): Promise<string>;
461
+
462
+ /** Generated daemon wrapper for `connectors.disable_tools` (operator). */
463
+ connectorsDisableTools(paramsJson: string): Promise<string>;
464
+
465
+ /** Generated daemon wrapper for `connectors.enable_tools` (operator). */
466
+ connectorsEnableTools(paramsJson: string): Promise<string>;
467
+
468
+ /** Generated daemon wrapper for `connectors.list` (operator). */
469
+ connectorsList(paramsJson: string): Promise<string>;
470
+
471
+ /** Generated daemon wrapper for `connectors.refresh` (operator). */
472
+ connectorsRefresh(paramsJson: string): Promise<string>;
473
+
474
+ /** Generated daemon wrapper for `connectors.remove` (operator). */
475
+ connectorsRemove(paramsJson: string): Promise<string>;
476
+
477
+ /** Generated daemon wrapper for `connectors.tools` (operator). */
478
+ connectorsTools(paramsJson: string): Promise<string>;
479
+
480
+ /** Generated daemon wrapper for `declagents.get` (operator). */
481
+ declagentsGet(paramsJson: string): Promise<string>;
482
+
483
+ /** Generated daemon wrapper for `declagents.invoke` (operator). */
484
+ declagentsInvoke(paramsJson: string): Promise<string>;
485
+
486
+ /** Generated daemon wrapper for `declagents.list` (operator). */
487
+ declagentsList(paramsJson: string): Promise<string>;
488
+
489
+ /** Generated daemon wrapper for `declagents.route` (operator). */
490
+ declagentsRoute(paramsJson: string): Promise<string>;
491
+
492
+ /** Generated daemon wrapper for `declagents.route_split` (operator). */
493
+ declagentsRouteSplit(paramsJson: string): Promise<string>;
494
+
495
+ /** Generated daemon wrapper for `declagents.routing_stats` (operator). */
496
+ declagentsRoutingStats(paramsJson: string): Promise<string>;
497
+
498
+ /** Generated daemon wrapper for `events.chain.enable` (operator). */
499
+ eventsChainEnable(paramsJson: string): Promise<string>;
500
+
501
+ /** Generated daemon wrapper for `events.chain.verify` (operator). */
502
+ eventsChainVerify(paramsJson: string): Promise<string>;
503
+
504
+ /** Generated daemon wrapper for `events.clear` (operator). */
505
+ eventsClear(paramsJson: string): Promise<string>;
506
+
507
+ /** Generated daemon wrapper for `events.cost_by_agent` (operator). */
508
+ eventsCostByAgent(paramsJson: string): Promise<string>;
509
+
510
+ /** Generated daemon wrapper for `events.count` (operator). */
511
+ eventsCount(paramsJson: string): Promise<string>;
512
+
513
+ /** Generated daemon wrapper for `events.query` (operator). */
514
+ eventsQuery(paramsJson: string): Promise<string>;
515
+
516
+ /** Generated daemon wrapper for `events.retention` (operator). */
517
+ eventsRetention(paramsJson: string): Promise<string>;
518
+
519
+ /** Generated daemon wrapper for `events.stats` (operator). */
520
+ eventsStats(paramsJson: string): Promise<string>;
521
+
522
+ /** Generated daemon wrapper for `events.truncate` (operator). */
523
+ eventsTruncate(paramsJson: string): Promise<string>;
524
+
525
+ /** Generated daemon wrapper for `evolution.plan` (operator). */
526
+ evolutionPlan(paramsJson: string): Promise<string>;
527
+
528
+ /** Generated daemon wrapper for `evolution.run` (agent). */
529
+ evolutionRun(paramsJson: string): Promise<string>;
530
+
531
+ /** Generated daemon wrapper for `feedback.compose_preview` (operator). */
532
+ feedbackComposePreview(paramsJson: string): Promise<string>;
533
+
534
+ /** Generated daemon wrapper for `feedback.list` (operator). */
535
+ feedbackList(paramsJson: string): Promise<string>;
536
+
537
+ /** Generated daemon wrapper for `feedback.status` (operator). */
538
+ feedbackStatus(paramsJson: string): Promise<string>;
539
+
540
+ /** Generated daemon wrapper for `feedback.submit` (operator). */
541
+ feedbackSubmit(paramsJson: string): Promise<string>;
542
+
543
+ /** Generated daemon wrapper for `goal.clear` (operator). */
544
+ goalClear(paramsJson: string): Promise<string>;
545
+
546
+ /** Generated daemon wrapper for `goal.set` (operator). */
547
+ goalSet(paramsJson: string): Promise<string>;
548
+
549
+ /** Generated daemon wrapper for `goal.status` (operator). */
550
+ goalStatus(paramsJson: string): Promise<string>;
551
+
552
+ /** Generated daemon wrapper for `goal.suggest` (operator). */
553
+ goalSuggest(paramsJson: string): Promise<string>;
554
+
555
+ /** Generated daemon wrapper for `host.subscribe` (operator). */
556
+ hostSubscribe(paramsJson: string): Promise<string>;
557
+
558
+ /** Generated daemon wrapper for `image.generate` (operator). */
559
+ imageGenerate(paramsJson: string): Promise<string>;
560
+
561
+ /** Generated daemon wrapper for `infer.cancel` (operator). */
562
+ inferCancel(paramsJson: string): Promise<string>;
563
+
564
+ /** Generated daemon wrapper for `infer.deadline` (operator). */
565
+ inferDeadline(paramsJson: string): Promise<string>;
566
+
567
+ /** Generated daemon wrapper for `infer_stream` (agent). */
568
+ inferStream(paramsJson: string): Promise<string>;
569
+
570
+ /** Generated daemon wrapper for `inference.register_runner` (operator). */
571
+ inferenceRegisterRunner(paramsJson: string): Promise<string>;
572
+
573
+ /** Generated daemon wrapper for `inference.runner.complete` (operator). */
574
+ inferenceRunnerComplete(paramsJson: string): Promise<string>;
575
+
576
+ /** Generated daemon wrapper for `inference.runner.event` (operator). */
577
+ inferenceRunnerEvent(paramsJson: string): Promise<string>;
578
+
579
+ /** Generated daemon wrapper for `inference.runner.fail` (operator). */
580
+ inferenceRunnerFail(paramsJson: string): Promise<string>;
581
+
582
+ /** Generated daemon wrapper for `meeting.get` (operator). */
583
+ meetingGet(paramsJson: string): Promise<string>;
584
+
585
+ /** Generated daemon wrapper for `meeting.list` (operator). */
586
+ meetingList(paramsJson: string): Promise<string>;
587
+
588
+ /** Generated daemon wrapper for `meeting.start` (operator). */
589
+ meetingStart(paramsJson: string): Promise<string>;
590
+
591
+ /** Generated daemon wrapper for `meeting.stop` (operator). */
592
+ meetingStop(paramsJson: string): Promise<string>;
593
+
594
+ /** Generated daemon wrapper for `memory.add_fact` (agent). */
595
+ memoryAddFact(paramsJson: string): Promise<string>;
596
+
597
+ /** Generated daemon wrapper for `memory.build_context` (operator). */
598
+ memoryBuildContext(paramsJson: string): Promise<string>;
599
+
600
+ /** Generated daemon wrapper for `memory.build_context_fast` (operator). */
601
+ memoryBuildContextFast(paramsJson: string): Promise<string>;
602
+
603
+ /** Generated daemon wrapper for `memory.consolidate` (agent). */
604
+ memoryConsolidate(paramsJson: string): Promise<string>;
605
+
606
+ /** Generated daemon wrapper for `memory.fact_count` (operator). */
607
+ memoryFactCount(paramsJson: string): Promise<string>;
608
+
609
+ /** Generated daemon wrapper for `memory.load` (operator). */
610
+ memoryLoad(paramsJson: string): Promise<string>;
611
+
612
+ /** Generated daemon wrapper for `memory.persist` (operator). */
613
+ memoryPersist(paramsJson: string): Promise<string>;
614
+
615
+ /** Generated daemon wrapper for `memory.query` (operator). */
616
+ memoryQuery(paramsJson: string): Promise<string>;
617
+
618
+ /** Generated daemon wrapper for `memory.utility_get` (operator). */
619
+ memoryUtilityGet(paramsJson: string): Promise<string>;
620
+
621
+ /** Generated daemon wrapper for `memory.utility_set` (operator). */
622
+ memoryUtilitySet(paramsJson: string): Promise<string>;
623
+
624
+ /** Generated daemon wrapper for `message/send` (operator). */
625
+ messageSend(paramsJson: string): Promise<string>;
626
+
627
+ /** Generated daemon wrapper for `message/stream` (operator). */
628
+ messageStream(paramsJson: string): Promise<string>;
629
+
630
+ /** Generated daemon wrapper for `mobile.runtime` (operator). */
631
+ mobileRuntime(paramsJson: string): Promise<string>;
632
+
633
+ /** Generated daemon wrapper for `models.catalog_snapshot` (operator). */
634
+ modelsCatalogSnapshot(paramsJson: string): Promise<string>;
635
+
636
+ /** Generated daemon wrapper for `models.check_concierge` (operator). */
637
+ modelsCheckConcierge(paramsJson: string): Promise<string>;
638
+
639
+ /** Generated daemon wrapper for `models.check_upgrade_nudge` (operator). */
640
+ modelsCheckUpgradeNudge(paramsJson: string): Promise<string>;
641
+
642
+ /** Generated daemon wrapper for `models.detect_upgrades` (operator). */
643
+ modelsDetectUpgrades(paramsJson: string): Promise<string>;
644
+
645
+ /** Generated daemon wrapper for `models.dismiss_suggestion` (operator). */
646
+ modelsDismissSuggestion(paramsJson: string): Promise<string>;
647
+
648
+ /** Generated daemon wrapper for `models.dismiss_upgrade` (operator). */
649
+ modelsDismissUpgrade(paramsJson: string): Promise<string>;
650
+
651
+ /** Generated daemon wrapper for `models.list` (operator). */
652
+ modelsList(paramsJson: string): Promise<string>;
653
+
654
+ /** Generated daemon wrapper for `models.list_unified` (operator). */
655
+ modelsListUnified(paramsJson: string): Promise<string>;
656
+
657
+ /** Generated daemon wrapper for `models.preflight` (operator). */
658
+ modelsPreflight(paramsJson: string): Promise<string>;
659
+
660
+ /** Generated daemon wrapper for `models.recommend` (operator). */
661
+ modelsRecommend(paramsJson: string): Promise<string>;
662
+
663
+ /** Generated daemon wrapper for `models.register` (operator). */
664
+ modelsRegister(paramsJson: string): Promise<string>;
665
+
666
+ /** Generated daemon wrapper for `models.resource_policy.get` (operator). */
667
+ modelsResourcePolicyGet(paramsJson: string): Promise<string>;
668
+
669
+ /** Generated daemon wrapper for `models.route` (operator). */
670
+ modelsRoute(paramsJson: string): Promise<string>;
671
+
672
+ /** Generated daemon wrapper for `models.route_provenance` (operator). */
673
+ modelsRouteProvenance(paramsJson: string): Promise<string>;
674
+
675
+ /** Generated daemon wrapper for `models.search` (operator). */
676
+ modelsSearch(paramsJson: string): Promise<string>;
677
+
678
+ /** Generated daemon wrapper for `models.setup_plan` (operator). */
679
+ modelsSetupPlan(paramsJson: string): Promise<string>;
680
+
681
+ /** Generated daemon wrapper for `models.stats` (operator). */
682
+ modelsStats(paramsJson: string): Promise<string>;
683
+
684
+ /** Generated daemon wrapper for `models.unregister` (operator). */
685
+ modelsUnregister(paramsJson: string): Promise<string>;
686
+
687
+ /** Generated daemon wrapper for `models.update_prefs_get` (operator). */
688
+ modelsUpdatePrefsGet(paramsJson: string): Promise<string>;
689
+
690
+ /** Generated daemon wrapper for `models.update_prefs_set` (operator). */
691
+ modelsUpdatePrefsSet(paramsJson: string): Promise<string>;
692
+
693
+ /** Generated daemon wrapper for `models.upgrades` (operator). */
694
+ modelsUpgrades(paramsJson: string): Promise<string>;
695
+
696
+ /** Generated daemon wrapper for `multi.map_reduce` (operator). */
697
+ multiMapReduce(paramsJson: string): Promise<string>;
698
+
699
+ /** Generated daemon wrapper for `multi.pipeline` (operator). */
700
+ multiPipeline(paramsJson: string): Promise<string>;
701
+
702
+ /** Generated daemon wrapper for `multi.subtask` (operator). */
703
+ multiSubtask(paramsJson: string): Promise<string>;
704
+
705
+ /** Generated daemon wrapper for `multi.supervisor` (operator). */
706
+ multiSupervisor(paramsJson: string): Promise<string>;
707
+
708
+ /** Generated daemon wrapper for `multi.swarm` (operator). */
709
+ multiSwarm(paramsJson: string): Promise<string>;
710
+
711
+ /** Generated daemon wrapper for `multi.tournament` (operator). */
712
+ multiTournament(paramsJson: string): Promise<string>;
713
+
714
+ /** Generated daemon wrapper for `multi.vote` (operator). */
715
+ multiVote(paramsJson: string): Promise<string>;
716
+
717
+ /** Generated daemon wrapper for `nlp.extract_entities` (operator). */
718
+ nlpExtractEntities(paramsJson: string): Promise<string>;
719
+
720
+ /** Generated daemon wrapper for `nlp.identify_language` (operator). */
721
+ nlpIdentifyLanguage(paramsJson: string): Promise<string>;
722
+
723
+ /** Generated daemon wrapper for `nlp.tokenize` (operator). */
724
+ nlpTokenize(paramsJson: string): Promise<string>;
725
+
726
+ /** Generated daemon wrapper for `notifications.local` (operator). */
727
+ notificationsLocal(paramsJson: string): Promise<string>;
728
+
729
+ /** Generated daemon wrapper for `outcomes.resolve_pending` (operator). */
730
+ outcomesResolvePending(paramsJson: string): Promise<string>;
731
+
732
+ /** Generated daemon wrapper for `outcomes.scoreboard` (operator). */
733
+ outcomesScoreboard(paramsJson: string): Promise<string>;
734
+
735
+ /** Generated daemon wrapper for `parslee.auth` (operator). */
736
+ parsleeAuth(paramsJson: string): Promise<string>;
737
+
738
+ /** Generated daemon wrapper for `permission.classify` (operator). */
739
+ permissionClassify(paramsJson: string): Promise<string>;
740
+
741
+ /** Generated daemon wrapper for `permission.evaluate` (agent). */
742
+ permissionEvaluate(paramsJson: string): Promise<string>;
743
+
744
+ /** Generated daemon wrapper for `permission.pending` (agent). */
745
+ permissionPending(paramsJson: string): Promise<string>;
746
+
747
+ /** Generated daemon wrapper for `permissions.domains` (operator). */
748
+ permissionsDomains(paramsJson: string): Promise<string>;
749
+
750
+ /** Generated daemon wrapper for `permissions.explain` (operator). */
751
+ permissionsExplain(paramsJson: string): Promise<string>;
752
+
753
+ /** Generated daemon wrapper for `permissions.request` (operator). */
754
+ permissionsRequest(paramsJson: string): Promise<string>;
755
+
756
+ /** Generated daemon wrapper for `permissions.status` (operator). */
757
+ permissionsStatus(paramsJson: string): Promise<string>;
758
+
759
+ /** Generated daemon wrapper for `policy.list` (operator). */
760
+ policyList(paramsJson: string): Promise<string>;
761
+
762
+ /** Generated daemon wrapper for `policy.register` (operator). */
763
+ policyRegister(paramsJson: string): Promise<string>;
764
+
765
+ /** Generated daemon wrapper for `policy.unregister` (operator). */
766
+ policyUnregister(paramsJson: string): Promise<string>;
767
+
768
+ /** Generated daemon wrapper for `proposal.submit` (owner). */
769
+ proposalSubmit(paramsJson: string): Promise<string>;
770
+
771
+ /** Generated daemon wrapper for `registry.heartbeat` (operator). */
772
+ registryHeartbeat(paramsJson: string): Promise<string>;
773
+
774
+ /** Generated daemon wrapper for `registry.list` (operator). */
775
+ registryList(paramsJson: string): Promise<string>;
776
+
777
+ /** Generated daemon wrapper for `registry.reap` (operator). */
778
+ registryReap(paramsJson: string): Promise<string>;
779
+
780
+ /** Generated daemon wrapper for `registry.register` (operator). */
781
+ registryRegister(paramsJson: string): Promise<string>;
782
+
783
+ /** Generated daemon wrapper for `registry.unregister` (operator). */
784
+ registryUnregister(paramsJson: string): Promise<string>;
785
+
786
+ /** Generated daemon wrapper for `replan.set_config` (operator). */
787
+ replanSetConfig(paramsJson: string): Promise<string>;
788
+
789
+ /** Generated daemon wrapper for `runs.cancel` (owner). */
790
+ runsCancel(paramsJson: string): Promise<string>;
791
+
792
+ /** Generated daemon wrapper for `runs.get_trace` (owner). */
793
+ runsGetTrace(paramsJson: string): Promise<string>;
794
+
795
+ /** Generated daemon wrapper for `runs.list` (owner). */
796
+ runsList(paramsJson: string): Promise<string>;
797
+
798
+ /** Generated daemon wrapper for `runs.record_turns` (agent). */
799
+ runsRecordTurns(paramsJson: string): Promise<string>;
800
+
801
+ /** Generated daemon wrapper for `runs.resume` (agent). */
802
+ runsResume(paramsJson: string): Promise<string>;
803
+
804
+ /** Generated daemon wrapper for `runs.subscribe` (owner). */
805
+ runsSubscribe(paramsJson: string): Promise<string>;
806
+
807
+ /** Generated daemon wrapper for `runs.unsubscribe` (operator). */
808
+ runsUnsubscribe(paramsJson: string): Promise<string>;
809
+
810
+ /** Generated daemon wrapper for `scheduler.create` (operator). */
811
+ schedulerCreate(paramsJson: string): Promise<string>;
812
+
813
+ /** Generated daemon wrapper for `scheduler.os_install` (operator). */
814
+ schedulerOsInstall(paramsJson: string): Promise<string>;
815
+
816
+ /** Generated daemon wrapper for `scheduler.os_list` (operator). */
817
+ schedulerOsList(paramsJson: string): Promise<string>;
818
+
819
+ /** Generated daemon wrapper for `scheduler.os_reconcile` (operator). */
820
+ schedulerOsReconcile(paramsJson: string): Promise<string>;
821
+
822
+ /** Generated daemon wrapper for `scheduler.os_render` (operator). */
823
+ schedulerOsRender(paramsJson: string): Promise<string>;
824
+
825
+ /** Generated daemon wrapper for `scheduler.os_uninstall` (operator). */
826
+ schedulerOsUninstall(paramsJson: string): Promise<string>;
827
+
828
+ /** Generated daemon wrapper for `scheduler.run` (operator). */
829
+ schedulerRun(paramsJson: string): Promise<string>;
830
+
831
+ /** Generated daemon wrapper for `scheduler.run_loop` (operator). */
832
+ schedulerRunLoop(paramsJson: string): Promise<string>;
833
+
834
+ /** Generated daemon wrapper for `session.auth` (agent). */
835
+ sessionAuth(paramsJson: string): Promise<string>;
836
+
837
+ /** Generated daemon wrapper for `session.bindSandbox` (agent). */
838
+ sessionBindSandbox(paramsJson: string): Promise<string>;
839
+
840
+ /** Generated daemon wrapper for `session.bindSubstrate` (operator). */
841
+ sessionBindSubstrate(paramsJson: string): Promise<string>;
842
+
843
+ /** Generated daemon wrapper for `session.init` (operator). */
844
+ sessionInit(paramsJson: string): Promise<string>;
845
+
846
+ /** Generated daemon wrapper for `session.policy.close` (operator). */
847
+ sessionPolicyClose(paramsJson: string): Promise<string>;
848
+
849
+ /** Generated daemon wrapper for `session.policy.open` (operator). */
850
+ sessionPolicyOpen(paramsJson: string): Promise<string>;
851
+
852
+ /** Generated daemon wrapper for `skill.adopt_pack` (operator). */
853
+ skillAdoptPack(paramsJson: string): Promise<string>;
854
+
855
+ /** Generated daemon wrapper for `skill.enforce_deployment` (operator). */
856
+ skillEnforceDeployment(paramsJson: string): Promise<string>;
857
+
858
+ /** Generated daemon wrapper for `skill.export` (operator). */
859
+ skillExport(paramsJson: string): Promise<string>;
860
+
861
+ /** Generated daemon wrapper for `skill.find` (operator). */
862
+ skillFind(paramsJson: string): Promise<string>;
863
+
864
+ /** Generated daemon wrapper for `skill.gate_deployment` (operator). */
865
+ skillGateDeployment(paramsJson: string): Promise<string>;
866
+
867
+ /** Generated daemon wrapper for `skill.import` (operator). */
868
+ skillImport(paramsJson: string): Promise<string>;
869
+
870
+ /** Generated daemon wrapper for `skill.ingest` (operator). */
871
+ skillIngest(paramsJson: string): Promise<string>;
872
+
873
+ /** Generated daemon wrapper for `skill.ingest_governed` (operator). */
874
+ skillIngestGoverned(paramsJson: string): Promise<string>;
875
+
876
+ /** Generated daemon wrapper for `skill.repair` (operator). */
877
+ skillRepair(paramsJson: string): Promise<string>;
878
+
879
+ /** Generated daemon wrapper for `skill.report` (operator). */
880
+ skillReport(paramsJson: string): Promise<string>;
881
+
882
+ /** Generated daemon wrapper for `skills.distill` (operator). */
883
+ skillsDistill(paramsJson: string): Promise<string>;
884
+
885
+ /** Generated daemon wrapper for `skills.domains_needing_evolution` (operator). */
886
+ skillsDomainsNeedingEvolution(paramsJson: string): Promise<string>;
887
+
888
+ /** Generated daemon wrapper for `skills.evolve` (operator). */
889
+ skillsEvolve(paramsJson: string): Promise<string>;
890
+
891
+ /** Generated daemon wrapper for `skills.gate` (operator). */
892
+ skillsGate(paramsJson: string): Promise<string>;
893
+
894
+ /** Generated daemon wrapper for `skills.ingest_distilled` (operator). */
895
+ skillsIngestDistilled(paramsJson: string): Promise<string>;
896
+
897
+ /** Generated daemon wrapper for `skills.ingest_provisional` (operator). */
898
+ skillsIngestProvisional(paramsJson: string): Promise<string>;
899
+
900
+ /** Generated daemon wrapper for `skills.list` (operator). */
901
+ skillsList(paramsJson: string): Promise<string>;
902
+
903
+ /** Generated daemon wrapper for `speech.prepare` (operator). */
904
+ speechPrepare(paramsJson: string): Promise<string>;
905
+
906
+ /** Generated daemon wrapper for `sync.knowledge` (operator). */
907
+ syncKnowledge(paramsJson: string): Promise<string>;
908
+
909
+ /** Generated daemon wrapper for `tasks.list` (operator). */
910
+ tasksList(paramsJson: string): Promise<string>;
911
+
912
+ /** Generated daemon wrapper for `tasks/cancel` (operator). */
913
+ tasksCancel(paramsJson: string): Promise<string>;
914
+
915
+ /** Generated daemon wrapper for `tasks/get` (operator). */
916
+ tasksGet(paramsJson: string): Promise<string>;
917
+
918
+ /** Generated daemon wrapper for `tasks/list` (operator). */
919
+ tasksSlashList(paramsJson: string): Promise<string>;
920
+
921
+ /** Generated daemon wrapper for `tasks/pushNotificationConfig/delete` (operator). */
922
+ tasksPushNotificationConfigDelete(paramsJson: string): Promise<string>;
923
+
924
+ /** Generated daemon wrapper for `tasks/pushNotificationConfig/get` (operator). */
925
+ tasksPushNotificationConfigGet(paramsJson: string): Promise<string>;
926
+
927
+ /** Generated daemon wrapper for `tasks/pushNotificationConfig/list` (operator). */
928
+ tasksPushNotificationConfigList(paramsJson: string): Promise<string>;
929
+
930
+ /** Generated daemon wrapper for `tasks/pushNotificationConfig/set` (operator). */
931
+ tasksPushNotificationConfigSet(paramsJson: string): Promise<string>;
932
+
933
+ /** Generated daemon wrapper for `tasks/resubscribe` (operator). */
934
+ tasksResubscribe(paramsJson: string): Promise<string>;
935
+
936
+ /** Generated daemon wrapper for `tools.cancel` (operator). */
937
+ toolsCancel(paramsJson: string): Promise<string>;
938
+
939
+ /** Generated daemon wrapper for `tools.list` (operator). */
940
+ toolsList(paramsJson: string): Promise<string>;
941
+
942
+ /** Generated daemon wrapper for `tools.poll` (operator). */
943
+ toolsPoll(paramsJson: string): Promise<string>;
944
+
945
+ /** Generated daemon wrapper for `tools.register` (operator). */
946
+ toolsRegister(paramsJson: string): Promise<string>;
947
+
948
+ /** Generated daemon wrapper for `tools.stream.subscribe` (operator). */
949
+ toolsStreamSubscribe(paramsJson: string): Promise<string>;
950
+
951
+ /** Generated daemon wrapper for `tools.unregister` (operator). */
952
+ toolsUnregister(paramsJson: string): Promise<string>;
953
+
954
+ /** Generated daemon wrapper for `verify` (operator). */
955
+ verify(paramsJson: string): Promise<string>;
956
+
957
+ /** Generated daemon wrapper for `verify.monte_carlo` (operator). */
958
+ verifyMonteCarlo(paramsJson: string): Promise<string>;
959
+
960
+ /** Generated daemon wrapper for `video.generate` (operator). */
961
+ videoGenerate(paramsJson: string): Promise<string>;
962
+
963
+ /** Generated daemon wrapper for `vision.ocr` (operator). */
964
+ visionOcr(paramsJson: string): Promise<string>;
965
+
966
+ /** Generated daemon wrapper for `voice.cancel_turn` (operator). */
967
+ voiceCancelTurn(paramsJson: string): Promise<string>;
968
+
969
+ /** Generated daemon wrapper for `voice.dispatch_turn` (operator). */
970
+ voiceDispatchTurn(paramsJson: string): Promise<string>;
971
+
972
+ /** Generated daemon wrapper for `voice.enroll_speaker` (operator). */
973
+ voiceEnrollSpeaker(paramsJson: string): Promise<string>;
974
+
975
+ /** Generated daemon wrapper for `voice.list_enrollments` (operator). */
976
+ voiceListEnrollments(paramsJson: string): Promise<string>;
977
+
978
+ /** Generated daemon wrapper for `voice.prepare_diarizer` (operator). */
979
+ voicePrepareDiarizer(paramsJson: string): Promise<string>;
980
+
981
+ /** Generated daemon wrapper for `voice.prepare_parakeet` (operator). */
982
+ voicePrepareParakeet(paramsJson: string): Promise<string>;
983
+
984
+ /** Generated daemon wrapper for `voice.prewarm_turn` (operator). */
985
+ voicePrewarmTurn(paramsJson: string): Promise<string>;
986
+
987
+ /** Generated daemon wrapper for `voice.providers.list` (operator). */
988
+ voiceProvidersList(paramsJson: string): Promise<string>;
989
+
990
+ /** Generated daemon wrapper for `voice.remove_enrollment` (operator). */
991
+ voiceRemoveEnrollment(paramsJson: string): Promise<string>;
992
+
993
+ /** Generated daemon wrapper for `voice.sessions.list` (operator). */
994
+ voiceSessionsList(paramsJson: string): Promise<string>;
995
+
996
+ /** Generated daemon wrapper for `voice.transcribe_stream.push` (operator). */
997
+ voiceTranscribeStreamPush(paramsJson: string): Promise<string>;
998
+
999
+ /** Generated daemon wrapper for `voice.transcribe_stream.start` (operator). */
1000
+ voiceTranscribeStreamStart(paramsJson: string): Promise<string>;
1001
+
1002
+ /** Generated daemon wrapper for `voice.transcribe_stream.stop` (operator). */
1003
+ voiceTranscribeStreamStop(paramsJson: string): Promise<string>;
1004
+
1005
+ /** Generated daemon wrapper for `voice.tts_stream.cancel` (operator). */
1006
+ voiceTtsStreamCancel(paramsJson: string): Promise<string>;
1007
+
1008
+ /** Generated daemon wrapper for `voice.tts_stream.list` (operator). */
1009
+ voiceTtsStreamList(paramsJson: string): Promise<string>;
1010
+
1011
+ /** Generated daemon wrapper for `voice.tts_stream.start` (operator). */
1012
+ voiceTtsStreamStart(paramsJson: string): Promise<string>;
1013
+
1014
+ /** Generated daemon wrapper for `workflow.build_automation` (operator). */
1015
+ workflowBuildAutomation(paramsJson: string): Promise<string>;
1016
+
1017
+ /** Generated daemon wrapper for `workflow.chain` (operator). */
1018
+ workflowChain(paramsJson: string): Promise<string>;
1019
+
1020
+ /** Generated daemon wrapper for `workflow.list_paused` (operator). */
1021
+ workflowListPaused(paramsJson: string): Promise<string>;
1022
+
1023
+ /** Generated daemon wrapper for `workflow.resume` (operator). */
1024
+ workflowResume(paramsJson: string): Promise<string>;
1025
+
1026
+ /** Generated daemon wrapper for `workflow.run` (operator). */
1027
+ workflowRun(paramsJson: string): Promise<string>;
1028
+
1029
+ /** Generated daemon wrapper for `workflow.verify` (operator). */
1030
+ workflowVerify(paramsJson: string): Promise<string>;
1031
+ // END GENERATED daemon wrappers: CarRuntime
1032
+
74
1033
  // --- Memory persistence ---
75
1034
 
76
1035
  /**
@@ -142,7 +1101,54 @@ export class CarRuntime {
142
1101
  adapter?: string,
143
1102
  verifyCommand?: Array<string>,
144
1103
  unionVerifyCommand?: Array<string>,
145
- maxAttempts?: number
1104
+ maxAttempts?: number,
1105
+ distributed?: boolean,
1106
+ workers?: Array<string>
1107
+ ): Promise<string>;
1108
+
1109
+ // --- Fleet ---
1110
+
1111
+ /**
1112
+ * This instance's agents, capabilities, and models — one `InstanceInventory`
1113
+ * JSON object. The same report peers receive over A2A, plus this session's
1114
+ * own registered tools and learned skills.
1115
+ */
1116
+ fleetInventory(): Promise<string>;
1117
+
1118
+ /**
1119
+ * Every agent, capability, and model across this daemon and every reachable
1120
+ * CAR instance, folded so one row names every instance that offers it.
1121
+ * `includeRemote` defaults to true. `timeoutMs` bounds each peer
1122
+ * individually: a sleeping machine appears as an unreachable row carrying the
1123
+ * reason, never a missing one. Returns `FleetComposite` JSON.
1124
+ */
1125
+ fleetComposite(includeRemote?: boolean, timeoutMs?: number): Promise<string>;
1126
+
1127
+ /** Whether this instance takes farmed-out coding work. `{ config, profile }` JSON. */
1128
+ fleetWorkerGet(): Promise<string>;
1129
+
1130
+ /**
1131
+ * Enroll (or withdraw) this instance as a fleet worker. **Operator-only, and
1132
+ * a real grant**: enrolling lets a trusted peer run a coding CLI against the
1133
+ * checkouts named in `repos`. Only the fields supplied change.
1134
+ *
1135
+ * The limits belong to this machine, not the caller: `dispatchesPerHour`
1136
+ * budgets one peer's spend (concurrency is not a spend bound),
1137
+ * `maxSubtaskSecs` caps the timeout a sender asks for, and `allowedTools` is
1138
+ * intersected with whatever the dispatch requests. `fetchMissingBase` makes
1139
+ * this machine a **runner**: rather than decline a base commit it lacks, it
1140
+ * fetches from `fetchRemote` (its own, default `origin`).
1141
+ */
1142
+ fleetWorkerSet(
1143
+ acceptsWork?: boolean,
1144
+ repos?: Array<string>,
1145
+ maxParallel?: number,
1146
+ localParallel?: number,
1147
+ dispatchesPerHour?: number,
1148
+ maxSubtaskSecs?: number,
1149
+ allowedTools?: Array<string>,
1150
+ fetchMissingBase?: boolean,
1151
+ fetchRemote?: string
146
1152
  ): Promise<string>;
147
1153
 
148
1154
  // --- Tools & policies ---
@@ -152,7 +1158,8 @@ export class CarRuntime {
152
1158
 
153
1159
  /**
154
1160
  * The tools currently registered on this runtime, as a JSON array of full
155
- * `ToolSchema` objects sorted by name.
1161
+ * `ToolSchema` objects sorted by name. Every schema includes its runtime-
1162
+ * assigned `source` (`builtin|user_defined|subprocess|mcp`).
156
1163
  *
157
1164
  * Counterpart to `registerTool` / `registerToolSchema`, which had none: a
158
1165
  * caller could add tools but never ask what was actually in effect, so a
@@ -296,7 +1303,8 @@ export class CarRuntime {
296
1303
  // --- Memory / Facts (graph-backed) ---
297
1304
 
298
1305
  /**
299
- * Add a fact. `kind` is typically "pattern" or "constraint".
1306
+ * Add a fact. `kind` is typically "pattern" or "constraint". Optional
1307
+ * `factId`, ordered `tags`, and `source` are preserved by the daemon.
300
1308
  *
301
1309
  * In Daemon mode, rejects with the daemon-unreachable error
302
1310
  * instead of silently returning 0 (#146).
@@ -306,9 +1314,16 @@ export class CarRuntime {
306
1314
  body: string,
307
1315
  kind: string,
308
1316
  confidence?: number | null,
1317
+ factId?: string | null,
1318
+ tags?: string[] | null,
1319
+ source?: string | null,
309
1320
  ): Promise<number>;
310
1321
 
311
- /** Query facts via graph spreading activation. Returns a JSON array. */
1322
+ /**
1323
+ * Query facts via graph spreading activation. Returns a JSON array whose
1324
+ * rows include `fact_id` (null for graph nodes without one), `subject`,
1325
+ * `body`, `kind`, `confidence`, `tags`, and `source`.
1326
+ */
312
1327
  queryFacts(query: string, k?: number | null): string;
313
1328
 
314
1329
  /**
@@ -462,7 +1477,37 @@ export class CarRuntime {
462
1477
  syncStatus(requestJson: string): Promise<string>;
463
1478
  /** `sync.append` — record an op on any surface: `{ surface, payload, scope? }` (B6). */
464
1479
  syncAppend(requestJson: string): Promise<string>;
465
- /** `agents.peers` — the agents this runtime can message, from the daemon's live connection table. */
1480
+ /** `host.agents` — current host agent registry snapshot. */
1481
+ hostAgents(): Promise<string>;
1482
+ /** `host.events` — recent host events, newest last; omit `limit` for the daemon default. */
1483
+ hostEvents(limit?: number): Promise<string>;
1484
+ /** `host.approvals` — pending host approvals. */
1485
+ hostApprovals(): Promise<string>;
1486
+ /** `host.register_agent` — register an agent on this connection. */
1487
+ hostRegisterAgent(requestJson: string): Promise<string>;
1488
+ /** `host.unregister_agent` — unregister an agent owned by this connection. */
1489
+ hostUnregisterAgent(requestJson: string): Promise<string>;
1490
+ /** `host.set_status` — publish status for an agent owned by this connection. */
1491
+ hostSetStatus(requestJson: string): Promise<string>;
1492
+ /** `host.register_device` — register a device on this connection. */
1493
+ hostRegisterDevice(requestJson: string): Promise<string>;
1494
+ /** `host.update_device` — update a device owned by this connection. */
1495
+ hostUpdateDevice(requestJson: string): Promise<string>;
1496
+ /** `host.devices` — current host device registry snapshot. */
1497
+ hostDevices(): Promise<string>;
1498
+ /** `host.notify` — emit a user-facing host notification. */
1499
+ hostNotify(requestJson: string): Promise<string>;
1500
+ /** `host.request_approval` — request approval for a gated action. */
1501
+ hostRequestApproval(requestJson: string): Promise<string>;
1502
+ /** `host.resolve_approval` — resolve one pending host approval. */
1503
+ hostResolveApproval(requestJson: string): Promise<string>;
1504
+ // `host.subscribe` event delivery is deferred to the callback-aware
1505
+ // daemon-session API; subscribing without a consumer would drop the stream.
1506
+ /**
1507
+ * `agents.peers` — visible peers as JSON. Each row distinguishes the
1508
+ * kind-level `can_receive` capability from the current `reachable` delivery
1509
+ * preflight; the send remains authoritative.
1510
+ */
466
1511
  agentsPeers(requestJson: string): Promise<string>;
467
1512
  /** `agents.message` — send text to one peer: `{ to, body, summary? }`. The sender is derived server-side. */
468
1513
  agentsMessage(requestJson: string): Promise<string>;
@@ -788,6 +1833,10 @@ export class CarRuntime {
788
1833
  * with reasoning suppressed to produce a direct answer, or
789
1834
  * `"thinking_truncated"` when even that retry was empty (car-releases#60).
790
1835
  *
1836
+ * `local_last_resort` is present and true ONLY when CAR appended an
1837
+ * installed on-device model behind a remote-only chain and that model
1838
+ * actually served the turn. An explicitly selected local model is not marked.
1839
+ *
791
1840
  * `auth_fallback_from` is present ONLY when a candidate earlier in the
792
1841
  * fallback chain was skipped because its credential was **rejected**
793
1842
  * (not merely absent) and a later model then answered. It names that
@@ -795,6 +1844,21 @@ export class CarRuntime {
795
1844
  * of silently serving a different model (Parslee-ai/car#888). Absent on
796
1845
  * the common path.
797
1846
  *
1847
+ * `fallback_from` is an ARRAY of every candidate the chain moved past,
1848
+ * in the order it tried them: `[{ candidate, reason }, ...]`, where
1849
+ * `reason` is one of `"credential_rejected"`, `"credential_absent"`,
1850
+ * `"rate_limited"`, `"quota_exhausted"`, `"timed_out"` or `"failed"`.
1851
+ * Absent when the first candidate served. Before this, a run whose
1852
+ * backbone changed because of a rate limit or a timeout recorded no
1853
+ * cause anywhere, so a surprising result got attributed to the code
1854
+ * rather than to the model swap (Parslee-ai/car#1351).
1855
+ *
1856
+ * `reason` is classified from the runtime's typed error, not from error
1857
+ * prose. `"credential_rejected"` is deliberately BROADER than
1858
+ * `auth_fallback_from`: it covers a provider refusing an API key, whose
1859
+ * remedy is to fix the key, not to sign in. Do not derive one field
1860
+ * from the other.
1861
+ *
798
1862
  * **Note:** intent is not exposed on the tracked path until the
799
1863
  * positional argument list is converted to an options object —
800
1864
  * this method already takes 9 positional parameters and adding
@@ -995,7 +2059,8 @@ export class CarRuntime {
995
2059
  * context_length, available, is_local, operator_managed_external_runtime,
996
2060
  * weights_ready, downloads_weights,
997
2061
  * max_output_tokens, public_benchmarks, cost, car_enabled, can_remove,
998
- * in_use, management_evidence }`. `available` means CAR
2062
+ * in_use, management_evidence, fit, estimated_peak_mb,
2063
+ * platform_compatible, deprecated, family, version }`. `available` means CAR
999
2064
  * can use the model
1000
2065
  * here — for a local MLX entry with a declared `hf_repo` it is `true`
1001
2066
  * before a byte is fetched, because it lazy-downloads on first use —
@@ -1031,9 +2096,20 @@ export class CarRuntime {
1031
2096
  * cost. The managed `parslee/…` alias rows carry the same prices as the
1032
2097
  * upstream row they front, and this response carries no upstream
1033
2098
  * identifier for them. That holds for this catalog view; `models.search`
1034
- * additionally exposes a `family` field which does name the upstream
1035
- * model family. Older daemons omit
2099
+ * entries carry these same fields, fit annotation included, and
2100
+ * additionally name `family` / `version` for every row (the upstream
2101
+ * model family for a managed alias). Older daemons omit
1036
2102
  * `cost` entirely; it deserializes to all-`null` rather than failing.
2103
+ * `fit` (`"fits" | "too_big" | "unknown"`), `estimated_peak_mb` and
2104
+ * `platform_compatible` say whether the row fits the machine the daemon
2105
+ * runs on, by the same rule `models.recommend` uses against the active
2106
+ * resource policy; remote rows always read `fits` / `null` / `true`
2107
+ * because their memory is the server's. `unknown` never means too big
2108
+ * and is what an older daemon's rows read as. `deprecated` mirrors the
2109
+ * catalog flag; `family` and `version` are published for local rows only
2110
+ * (`null` for remote rows, which is how this view keeps carrying no
2111
+ * upstream identifier for managed aliases). The list is never filtered
2112
+ * by the daemon — hide on `fit` in the client, as `car models list` does.
1037
2113
  */
1038
2114
  listModelsUnified(): string;
1039
2115
 
@@ -1173,7 +2249,9 @@ export class CarRuntime {
1173
2249
  * `"auto" | "native" | "external[:agent_id]"` (default auto). Returns
1174
2250
  * `{session_id, state, engine, worktree, contract, model}` JSON, where
1175
2251
  * `model` is the effective native-loop pin (per-session `model`, else
1176
- * `~/.car/coder.toml`, else `null` = adaptive routing).
2252
+ * `~/.car/coder.toml`, else `null` = adaptive routing). Set
2253
+ * `options.browser` to opt into the assistant's browser tool surface for this
2254
+ * session; it remains absent by default and policy-gated when enabled.
1177
2255
  */
1178
2256
  coderStart(
1179
2257
  repo: string,
@@ -1204,7 +2282,8 @@ export class CarRuntime {
1204
2282
 
1205
2283
  /**
1206
2284
  * Approve (publish the `car/coder/<id>` branch in the repo) or deny
1207
- * (abandon) a session awaiting merge approval.
2285
+ * (abandon) a session awaiting merge approval. Agent-project approvals
2286
+ * return additive `agent_id` and daemon-derived `registry_path` fields.
1208
2287
  */
1209
2288
  coderApproveMerge(sessionId: string, approve: boolean): Promise<string>;
1210
2289
 
@@ -1231,8 +2310,8 @@ export class CarRuntime {
1231
2310
  * error}` plus `needs_you` (`"contract" | "question" | "approval" | "auth" |
1232
2311
  * null`), `needs_you_label` (the daemon-owned wording, so every client says
1233
2312
  * the same thing), `question_prompt`, `auth_message`, `auth_wait_secs`,
1234
- * `failure_kind` (`"budget_exhausted" | "auth_required" | "infrastructure" |
1235
- * "error"` when failed), `worktree` (only when it still exists on disk),
2313
+ * `failure_kind` (`"budget_exhausted" | "auth_required" | "configuration" |
2314
+ * "infrastructure" | "error"` when failed), `worktree` (only when it still exists on disk),
1236
2315
  * `project`, `result_branch`, `model`, `discussion_id`, and `next_seq` (live
1237
2316
  * only — the `coder.subscribe` cursor).
1238
2317
  *
@@ -1322,7 +2401,7 @@ export class CarRuntime {
1322
2401
 
1323
2402
  /** List registered in-daemon declarative agents. */
1324
2403
  declagentList(): Promise<string>;
1325
- /** One declarative agent's spec by id. */
2404
+ /** One declarative agent's spec by id, plus daemon-derived `registry_path`. */
1326
2405
  declagentGet(id: string): Promise<string>;
1327
2406
  /** Unregister a declarative agent. */
1328
2407
  declagentRemove(id: string): Promise<string>;
@@ -1423,6 +2502,8 @@ export class CarRuntime {
1423
2502
  * (`{ model_id, reliability, score, selected, in_band }`) so callers can see
1424
2503
  * why a model won and what the alternatives cost in reliability terms. Empty
1425
2504
  * on explicit-model and cold-start paths where no ranking occurred.
2505
+ * `intentJson.strict_exclusions` makes an exhausted `exclude_models` list
2506
+ * return no route instead of selecting an excluded last resort.
1426
2507
  */
1427
2508
  routeModel(prompt: string, intentJson?: string | null): Promise<string>;
1428
2509
 
@@ -1462,7 +2543,10 @@ export class CarRuntime {
1462
2543
 
1463
2544
  /** Structured audit query over the event log (G2). `queryJson` is an
1464
2545
  * EventQuery object (kinds/actionId/proposalId/since/until/dataMatches/limit);
1465
- * returns `{count, events}` as a JSON string, most-recent-first. */
2546
+ * returns `{count, events}` as a JSON string, most-recent-first.
2547
+ * `ActionFailed.data` includes `params_digest`, `expected_effects`, and
2548
+ * `error_class` (`timeout|rejected_by_policy|tool_error|validation|unknown`),
2549
+ * never raw parameters. `ActionSucceeded.data` includes the first two. */
1466
2550
  eventQuery(queryJson: string): Promise<string>;
1467
2551
 
1468
2552
  /** Get/set the event-log retention policy (G2). Pass a
@@ -1498,21 +2582,39 @@ export class CarRuntime {
1498
2582
  * `cost_overage` alert. */
1499
2583
  metricsAlerts(thresholdsJson?: string): Promise<string>;
1500
2584
 
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"`. */
2585
+ /** Self-healing repair loop status: enabled/why-not, cadence, targets,
2586
+ * rejected targets, review panel, engine. */
2587
+ healStatus(): Promise<string>;
2588
+ /** Run one self-healing repair sweep now. May open a pull request; never merges. */
2589
+ healRun(): Promise<string>;
2590
+ /** Self-heal status as JSON: cadence, `auto_fix_enabled`, `max_concurrent`,
2591
+ * `max_per_day`, `max_rounds_per_key`, optional `auto_fix_refusal_reason`,
2592
+ * last tick, source route/refusal,
2593
+ * detector counts, and `filing_mode` (`watch-only` or `pr-only`). */
2594
+
1504
2595
  selfhealStatus(): Promise<string>;
1505
2596
 
1506
2597
  /** 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). */
2598
+ * `route` and an optional `local_issue_path`. Recurring tool failures add
2599
+ * `eligible`, a secret-safe `reconstructed_call` (`tool` plus exact `params`),
2600
+ * optional owner-private `reconstructed_call_path`, `auto_fix_attempts`,
2601
+ * `auto_fix_exhausted`, `auto_fix_in_progress`, and
2602
+ * `last_auto_fix_attempt` (including `exit_code` and `failure_class`). Remote
2603
+ * deduplication adds `auto_fix_awaiting_review`, `auto_fix_parked`,
2604
+ * `remote_pr_number`, and `remote_pr_url`.
2605
+ * `queryJson` carries optional `kind`, `severity`,
2606
+ * `since`, `offset`, and `limit` (max 500). */
1509
2607
  selfhealDetections(queryJson?: string): Promise<string>;
1510
2608
 
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. */
2609
+ /** Append a dismissal marker for a stable detection dedup key without
2610
+ * deleting history. */
1513
2611
  selfhealDismiss(dedupKey: string): Promise<string>;
1514
2612
 
1515
- /** Run one non-overlapping watch-only detection tick immediately. */
2613
+ /** Start one bounded template-owned coder round for an eligible recurring
2614
+ * tool failure. Returns the durable attempt result as JSON. */
2615
+ selfhealFix(dedupKey: string): Promise<string>;
2616
+
2617
+ /** Run one non-overlapping detection tick and default-on auto-fix hook. */
1516
2618
  selfhealRun(): Promise<string>;
1517
2619
 
1518
2620
  /** Execution log counts and approximate retained native bytes. Returns JSON. */
@@ -1611,9 +2713,10 @@ export class CarRuntime {
1611
2713
  * automatically.
1612
2714
  *
1613
2715
  * Tools registered via the schemaless `registerTool(name)` bypass type
1614
- * validation; this is the opt-in upgrade path.
2716
+ * validation; this is the opt-in upgrade path. The daemon assigns
2717
+ * `source = "user_defined"`; callers cannot claim another origin.
1615
2718
  *
1616
- * `schemaJson` matches:
2719
+ * `schemaJson` carries the caller-settable fields:
1617
2720
  * ```json
1618
2721
  * {
1619
2722
  * "name": "read_file",
@@ -1818,6 +2921,14 @@ export class CarRuntime {
1818
2921
  /** Returns JSON array of recent Messages.app chats. */
1819
2922
  messagesChats(limit?: number | null): string;
1820
2923
 
2924
+ /**
2925
+ * Read Messages.app rows newest first. `queryJson` is
2926
+ * `{chat_ids?: string[], since?: string, limit?: number,
2927
+ * include_body?: boolean}`. Returns `{available, backend, reason?, messages}`;
2928
+ * an unreadable database is unavailable, not an empty conversation.
2929
+ */
2930
+ messagesRead(queryJson: string): string;
2931
+
1821
2932
  /**
1822
2933
  * Send a message through Messages.app. `sendRequestJson` is
1823
2934
  * `{recipient, body, service_id?}`.
@@ -1865,6 +2976,153 @@ export class CarRuntime {
1865
2976
  healthActivity(startYmd: string, endYmd: string): string;
1866
2977
  }
1867
2978
 
2979
+ // BEGIN GENERATED daemon wrappers: HostClient
2980
+ /** Host-authority daemon client; host-only methods never appear in CarRuntime's generated region. */
2981
+ export class HostClient {
2982
+ constructor(runtime: CarRuntime);
2983
+ daemonCallHostManagement(method: string, paramsJson: string): Promise<string>;
2984
+
2985
+ /** Generated host wrapper for `agent_permissions.evaluate_tool`. */
2986
+ agentPermissionsEvaluateTool(paramsJson: string): Promise<string>;
2987
+
2988
+ /** Generated host wrapper for `agent_permissions.reset`. */
2989
+ agentPermissionsReset(paramsJson: string): Promise<string>;
2990
+
2991
+ /** Generated host wrapper for `agent_permissions.reset_tool`. */
2992
+ agentPermissionsResetTool(paramsJson: string): Promise<string>;
2993
+
2994
+ /** Generated host wrapper for `agent_permissions.set`. */
2995
+ agentPermissionsSet(paramsJson: string): Promise<string>;
2996
+
2997
+ /** Generated host wrapper for `agent_permissions.set_default`. */
2998
+ agentPermissionsSetDefault(paramsJson: string): Promise<string>;
2999
+
3000
+ /** Generated host wrapper for `agent_permissions.set_tool`. */
3001
+ agentPermissionsSetTool(paramsJson: string): Promise<string>;
3002
+
3003
+ /** Generated host wrapper for `agents.install`. */
3004
+ agentsInstall(paramsJson: string): Promise<string>;
3005
+
3006
+ /** Generated host wrapper for `agents.remove`. */
3007
+ agentsRemove(paramsJson: string): Promise<string>;
3008
+
3009
+ /** Generated host wrapper for `agents.upsert`. */
3010
+ agentsUpsert(paramsJson: string): Promise<string>;
3011
+
3012
+ /** Generated host wrapper for `assistant.identity.set`. */
3013
+ assistantIdentitySet(paramsJson: string): Promise<string>;
3014
+
3015
+ /** Generated host wrapper for `auth.accounts`. */
3016
+ authAccounts(paramsJson: string): Promise<string>;
3017
+
3018
+ /** Generated host wrapper for `auth.authority_hint`. */
3019
+ authAuthorityHint(paramsJson: string): Promise<string>;
3020
+
3021
+ /** Generated host wrapper for `auth.complete`. */
3022
+ authComplete(paramsJson: string): Promise<string>;
3023
+
3024
+ /** Generated host wrapper for `auth.completion_status`. */
3025
+ authCompletionStatus(paramsJson: string): Promise<string>;
3026
+
3027
+ /** Generated host wrapper for `auth.logout`. */
3028
+ authLogout(paramsJson: string): Promise<string>;
3029
+
3030
+ /** Generated host wrapper for `auth.remove_account`. */
3031
+ authRemoveAccount(paramsJson: string): Promise<string>;
3032
+
3033
+ /** Generated host wrapper for `auth.snapshot`. */
3034
+ authSnapshot(paramsJson: string): Promise<string>;
3035
+
3036
+ /** Generated host wrapper for `auth.start`. */
3037
+ authStart(paramsJson: string): Promise<string>;
3038
+
3039
+ /** Generated host wrapper for `auth.status`. */
3040
+ authStatus(paramsJson: string): Promise<string>;
3041
+
3042
+ /** Generated host wrapper for `auth.switch_account`. */
3043
+ authSwitchAccount(paramsJson: string): Promise<string>;
3044
+
3045
+ /** Generated host wrapper for `auth.switch_org`. */
3046
+ authSwitchOrg(paramsJson: string): Promise<string>;
3047
+
3048
+ /** Generated host wrapper for `declagents.remove`. */
3049
+ declagentsRemove(paramsJson: string): Promise<string>;
3050
+
3051
+ /** Generated host wrapper for `declagents.set_enabled`. */
3052
+ declagentsSetEnabled(paramsJson: string): Promise<string>;
3053
+
3054
+ /** Generated host wrapper for `diagnostics.secret_store_activity`. */
3055
+ diagnosticsSecretStoreActivity(paramsJson: string): Promise<string>;
3056
+
3057
+ /** Generated host wrapper for `messaging.config.get`. */
3058
+ messagingConfigGet(paramsJson: string): Promise<string>;
3059
+
3060
+ /** Generated host wrapper for `messaging.config.set`. */
3061
+ messagingConfigSet(paramsJson: string): Promise<string>;
3062
+
3063
+ /** Generated host wrapper for `messaging.pairing.start`. */
3064
+ messagingPairingStart(paramsJson: string): Promise<string>;
3065
+
3066
+ /** Generated host wrapper for `messaging.pairing.status`. */
3067
+ messagingPairingStatus(paramsJson: string): Promise<string>;
3068
+
3069
+ /** Generated host wrapper for `messaging.status`. */
3070
+ messagingStatus(paramsJson: string): Promise<string>;
3071
+
3072
+ /** Generated host wrapper for `messaging.test_send`. */
3073
+ messagingTestSend(paramsJson: string): Promise<string>;
3074
+
3075
+ /** Generated host wrapper for `models.adopt`. */
3076
+ modelsAdopt(paramsJson: string): Promise<string>;
3077
+
3078
+ /** Generated host wrapper for `models.install`. */
3079
+ modelsInstall(paramsJson: string): Promise<string>;
3080
+
3081
+ /** Generated host wrapper for `models.pull`. */
3082
+ modelsPull(paramsJson: string): Promise<string>;
3083
+
3084
+ /** Generated host wrapper for `models.remove`. */
3085
+ modelsRemove(paramsJson: string): Promise<string>;
3086
+
3087
+ /** Generated host wrapper for `models.resource_policy.set`. */
3088
+ modelsResourcePolicySet(paramsJson: string): Promise<string>;
3089
+
3090
+ /** Generated host wrapper for `models.storage_roots`. */
3091
+ modelsStorageRoots(paramsJson: string): Promise<string>;
3092
+
3093
+ /** Generated host wrapper for `openrouter.auth_cancel`. */
3094
+ openrouterAuthCancel(paramsJson: string): Promise<string>;
3095
+
3096
+ /** Generated host wrapper for `openrouter.auth_start`. */
3097
+ openrouterAuthStart(paramsJson: string): Promise<string>;
3098
+
3099
+ /** Generated host wrapper for `openrouter.disconnect`. */
3100
+ openrouterDisconnect(paramsJson: string): Promise<string>;
3101
+
3102
+ /** Generated host wrapper for `openrouter.status`. */
3103
+ openrouterStatus(paramsJson: string): Promise<string>;
3104
+
3105
+ /** Generated host wrapper for `permission.approve`. */
3106
+ permissionApprove(paramsJson: string): Promise<string>;
3107
+
3108
+ /** Generated host wrapper for `permission.reject`. */
3109
+ permissionReject(paramsJson: string): Promise<string>;
3110
+
3111
+ /** Generated host wrapper for `permission.set_tier`. */
3112
+ permissionSetTier(paramsJson: string): Promise<string>;
3113
+
3114
+ /** Generated host wrapper for `session.clear_halt`. */
3115
+ sessionClearHalt(paramsJson: string): Promise<string>;
3116
+
3117
+ /** Generated host wrapper for `tasks.schedule`. */
3118
+ tasksSchedule(paramsJson: string): Promise<string>;
3119
+
3120
+ /** Generated host wrapper for `tasks.unschedule`. */
3121
+ tasksUnschedule(paramsJson: string): Promise<string>;
3122
+
3123
+ }
3124
+ // END GENERATED daemon wrappers: HostClient
3125
+
1868
3126
  // ---------------------------------------------------------------------------
1869
3127
  // Standalone functions
1870
3128
  // ---------------------------------------------------------------------------
@@ -1890,7 +3148,9 @@ export class CarRuntime {
1890
3148
  * `tools.cancel` notification repeats so the host can abort the right
1891
3149
  * in-flight call. `timeout_ms` is the action's declared budget in
1892
3150
  * milliseconds when the action declared one (`null` otherwise); the
1893
- * host's tool runner may use it to bound its own work.
3151
+ * host's tool runner may use it to bound its own work. Throwing an ordinary
3152
+ * value is an ordinary proposal-scoped failure; throw `TerminalToolError` to
3153
+ * request fail-stop session handling.
1894
3154
  *
1895
3155
  * `sessionId`, when provided, scopes per-action policy validation to
1896
3156
  * the named session opened via `CarRuntime.openSession()`. Global
@@ -1905,6 +3165,11 @@ export class CarRuntime {
1905
3165
  * tenant-scoped view so distinct tenants can't observe each other's
1906
3166
  * keys (Parslee-ai/car#187 phase 3). Single-tenant in-process callers
1907
3167
  * pass `null` / omit and see no behaviour change.
3168
+ *
3169
+ * The returned JSON string is a serialized `ProposalResult`. An
3170
+ * `ActionResult` includes `rolled_back: true` when it succeeded before an
3171
+ * abort restored proposal state; false is omitted. Use this field, not the
3172
+ * human-readable warning in `error`, to detect rollback.
1908
3173
  */
1909
3174
  export function executeProposal(
1910
3175
  rt: CarRuntime,
@@ -2145,8 +3410,11 @@ export function unregisterChatHandler(): void;
2145
3410
  * `action_id`, which is client-authored and not unique across concurrent or
2146
3411
  * retried attempts.
2147
3412
  * as a JSON string and MUST return a Promise resolving to the tool's
2148
- * JSON-encoded result. Throwing rejects the daemon-side action
2149
- * with a -32000 JSON-RPC error.
3413
+ * JSON-encoded result. Throwing an ordinary value rejects only the current
3414
+ * proposal. Throw `TerminalToolError` when retry cannot recover: CAR aborts
3415
+ * and rolls back the proposal, marks its failed action `terminal: true`, and
3416
+ * rejects later proposals on this daemon session until a host clears the halt
3417
+ * or the client reconnects.
2150
3418
  *
2151
3419
  * `request_id` is the daemon's callback-routing id, repeated by the
2152
3420
  * `tools.cancel` notification so the host can abort the right
@@ -2172,6 +3440,11 @@ export function registerToolHandler(
2172
3440
  handlerFn: (callJson: string) => Promise<string>,
2173
3441
  ): void;
2174
3442
 
3443
+ /** Distinguished fail-stop error for tool callbacks. */
3444
+ export class TerminalToolError extends Error {
3445
+ constructor(message: string);
3446
+ }
3447
+
2175
3448
  /**
2176
3449
  * Clear the registered `tools.execute` handler. `submitProposal`
2177
3450
  * calls after this will fail if the proposal carries any
@@ -2596,10 +3869,21 @@ export function reapStaleAgents(
2596
3869
  * register an `agent.chat` handler to serve conversational turns, and/or
2597
3870
  * a `registerToolHandler` for explicit tool `data` parts.
2598
3871
  *
3872
+ * `allow_non_loopback_bind` (boolean, default `false`) is required to bind
3873
+ * anything but loopback. This listener serves NO authentication — there
3874
+ * is no auth parameter, and its router is `NoAuth` — and without
3875
+ * `share_session_runtime` its runtime registers the agent-basics
3876
+ * filesystem tools, so a reachable bind publishes `write_file` /
3877
+ * `edit_file` to anyone who can route to the port. A wildcard bind
3878
+ * (`0.0.0.0:...`) is refused too. To be reachable by other CAR daemons
3879
+ * you want the peer-authenticated, messaging-only listener `car-server`
3880
+ * already runs by default, not this.
3881
+ *
2599
3882
  * Returns `'{"bound":"127.0.0.1:8731"}'` on success. Errors if a
2600
- * server is already running, the bind fails, `share_session_runtime`
2601
- * is set but no session runtime is available (e.g. invoked from a
2602
- * non-WS path), or `paramsJson` is malformed.
3883
+ * server is already running, the bind fails, the bind is non-loopback
3884
+ * without `allow_non_loopback_bind`, `share_session_runtime` is set but no
3885
+ * session runtime is available (e.g. invoked from a non-WS path), or
3886
+ * `paramsJson` is malformed.
2603
3887
  */
2604
3888
  export function startA2AServer(rt: CarRuntime, paramsJson: string): Promise<string>;
2605
3889
 
@@ -3685,7 +4969,11 @@ export function analyzeSchedule(graphJson: string): string;
3685
4969
  /**
3686
4970
  * Install a durable OS-level schedule (launchd on macOS, crontab on Linux) so
3687
4971
  * the task fires even when the CAR daemon is down. Idempotent. Returns the
3688
- * installed-schedule JSON.
4972
+ * installed-schedule JSON: `{ label, backend, detail, conflict_preserved? }`.
4973
+ * On macOS, `conflict_preserved` (present only when it happened) is the
4974
+ * sibling path where the prior plist's bytes were preserved after a
4975
+ * concurrent writer changed them through a pre-opened file descriptor during
4976
+ * replacement — they are never deleted or overwritten.
3689
4977
  */
3690
4978
  export function installOsSchedule(taskJson: string, program: string, argsJson: string): string;
3691
4979
 
@@ -3862,8 +5150,9 @@ export function a2ADispatch(rt: CarRuntime, method: string, paramsJson: string):
3862
5150
  // --- Lifecycle-managed agents (car_registry::supervisor) ---
3863
5151
 
3864
5152
  /**
3865
- * List every managed agent in `~/.car/agents.json` along with its
3866
- * runtime status. Returns JSON `[ManagedAgent]`.
5153
+ * List every supervised agent along with its runtime status and the
5154
+ * daemon-compatible `manifest_path`, `log_path`, and `stderr_log_path`
5155
+ * location metadata. Returns JSON `[ManagedAgent]`.
3867
5156
  *
3868
5157
  * Wire shape matches the daemon's `agents.list` JSON-RPC method
3869
5158
  * exactly so a host can swap between in-process and WS transports
@@ -3903,7 +5192,9 @@ export function agentsHealth(): Promise<string>;
3903
5192
  * "restart": "on_failure", // never | on_failure | always
3904
5193
  * "max_restarts": 10,
3905
5194
  * "backoff_secs": 5,
3906
- * "auto_start": true // included by start_all on boot
5195
+ * "auto_start": true, // included by start_all on boot
5196
+ * "method_allowlist": ["mail.accounts", "mail.messages"]
5197
+ * // optional; absent = unrestricted
3907
5198
  * }
3908
5199
  * ```
3909
5200
  *
@@ -4012,7 +5303,7 @@ export function agentsTailLog(id: string, n?: number | null, stream?: string | n
4012
5303
  // alongside `agents.invoke_external`. Wire shape:
4013
5304
  //
4014
5305
  // {
4015
- // "id": "claude-code" | "codex" | "gemini",
5306
+ // "id": "claude-code" | "codex" | "gemini" | "mini-swe-agent",
4016
5307
  // "displayName": "Claude Code" | ...,
4017
5308
  // "binaryPath": "/usr/local/bin/claude",
4018
5309
  // "version": "1.0.51" | null,
@@ -4083,7 +5374,7 @@ export function agentsDetectExternal(
4083
5374
  * `ExternalAgentHealth` (when `id` supplied), where:
4084
5375
  *
4085
5376
  * {
4086
- * "id": "claude-code" | "codex" | "gemini",
5377
+ * "id": "claude-code" | "codex" | "gemini" | "mini-swe-agent",
4087
5378
  * "status": "ready" | "not_configured" | "expired" |
4088
5379
  * "network_error" | "not_executable" | "unknown",
4089
5380
  * "details": <tool-specific JSON object>,
@@ -4103,8 +5394,13 @@ export function agentsHealthExternal(
4103
5394
 
4104
5395
  /**
4105
5396
  * Per-task invocation of an external CLI agent (Phase 2 stage 3).
4106
- * `id` selects the adapter (`"claude-code"` today; `codex` and
4107
- * `gemini` ship in follow-up PRs). `task` is the prompt. `optionsJson`
5397
+ * `id` selects the adapter (`"claude-code"`, `"codex"`,
5398
+ * `"gemini"`, `"mini-swe-agent"`). `"mini-swe-agent"` is a measurement
5399
+ * baseline for `car coder-ab`, not a production engine: it must be named
5400
+ * explicitly (unnamed coder engine resolution never selects it), it has no
5401
+ * default backbone of its own so an invocation with no `model` is refused,
5402
+ * and its model ids are litellm ids needing the provider prefix
5403
+ * (`openai/gpt-5.5`). `task` is the prompt. `optionsJson`
4108
5404
  * is a JSON-encoded `InvokeOptions` — pass `"{}"` or `null` to accept
4109
5405
  * defaults.
4110
5406
  *